From 6bfda106da2b58d3f1db771a116862eb392ac750 Mon Sep 17 00:00:00 2001 From: zhl Date: Wed, 9 Jun 2021 20:11:41 +0800 Subject: [PATCH] update dist --- .env.production | 4 +-- ...7489d0.css => chunk-51e7f57a.7d84a576.css} | 2 +- dist/index.html | 2 +- dist/js/{app.3e2473e2.js => app.deacb710.js} | 4 +-- ...pp.3e2473e2.js.map => app.deacb710.js.map} | 2 +- dist/js/chunk-2ffaffe4.888ba0b8.js | 2 -- dist/js/chunk-2ffaffe4.888ba0b8.js.map | 1 - ...d353a8ad.js => chunk-37ee6f14.07ce1530.js} | 4 +-- ....js.map => chunk-37ee6f14.07ce1530.js.map} | 2 +- dist/js/chunk-51e7f57a.fb2e4768.js | 2 ++ dist/js/chunk-51e7f57a.fb2e4768.js.map | 1 + ...ifest.e3a85a7f948bf766f1a197f08b1f74c4.js} | 30 +++++++++---------- dist/service-worker.js | 2 +- 13 files changed, 29 insertions(+), 29 deletions(-) rename dist/css/{chunk-2ffaffe4.d97489d0.css => chunk-51e7f57a.7d84a576.css} (83%) rename dist/js/{app.3e2473e2.js => app.deacb710.js} (61%) rename dist/js/{app.3e2473e2.js.map => app.deacb710.js.map} (99%) delete mode 100644 dist/js/chunk-2ffaffe4.888ba0b8.js delete mode 100644 dist/js/chunk-2ffaffe4.888ba0b8.js.map rename dist/js/{chunk-37ee6f14.d353a8ad.js => chunk-37ee6f14.07ce1530.js} (99%) rename dist/js/{chunk-37ee6f14.d353a8ad.js.map => chunk-37ee6f14.07ce1530.js.map} (85%) create mode 100644 dist/js/chunk-51e7f57a.fb2e4768.js create mode 100644 dist/js/chunk-51e7f57a.fb2e4768.js.map rename dist/{precache-manifest.1cb87b8b794781fdc8ff4587b832f6ec.js => precache-manifest.e3a85a7f948bf766f1a197f08b1f74c4.js} (95%) diff --git a/.env.production b/.env.production index 07c72ef..61a7f6d 100644 --- a/.env.production +++ b/.env.production @@ -1,2 +1,2 @@ -VUE_APP_BASE_API = 'http://192.168.100.22:2900' -#VUE_APP_BASE_API = 'https://puzzle-admin.kingsome.cn' +#VUE_APP_BASE_API = 'http://192.168.100.22:2900' +VUE_APP_BASE_API = 'https://puzzle-admin.kingsome.cn' diff --git a/dist/css/chunk-2ffaffe4.d97489d0.css b/dist/css/chunk-51e7f57a.7d84a576.css similarity index 83% rename from dist/css/chunk-2ffaffe4.d97489d0.css rename to dist/css/chunk-51e7f57a.7d84a576.css index e576cc2..ff5b328 100644 --- a/dist/css/chunk-2ffaffe4.d97489d0.css +++ b/dist/css/chunk-51e7f57a.7d84a576.css @@ -1 +1 @@ -[data-v-62f54f8e]:export{menuBg:#304156;menuText:#bfcbd9;menuActiveText:#409eff}.upload-container[data-v-62f54f8e]{width:100%;position:relative}.upload-container[data-v-62f54f8e]:after{content:"";display:table;clear:both}.upload-container .image-uploader[data-v-62f54f8e]{width:35%;float:left}.upload-container .image-preview[data-v-62f54f8e]{width:200px;position:relative;border:1px dashed #d9d9d9;float:left;margin-left:50px}.upload-container .image-preview .image-preview-wrapper[data-v-62f54f8e]{position:relative;width:100%}.upload-container .image-preview .image-preview-wrapper img[data-v-62f54f8e]{width:100%}.upload-container .image-preview .image-preview-action[data-v-62f54f8e]{position:absolute;width:100%;left:0;top:0;cursor:default;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);transition:opacity .3s;cursor:pointer;text-align:center;line-height:200px}.upload-container .image-preview .image-preview-action .el-icon-delete[data-v-62f54f8e]{font-size:36px}.upload-container .image-preview:hover .image-preview-action[data-v-62f54f8e]{opacity:1}.upload-container .image-app-preview[data-v-62f54f8e]{width:320px;height:180px;position:relative;border:1px dashed #d9d9d9;float:left;margin-left:50px}.upload-container .image-app-preview .app-fake-conver[data-v-62f54f8e]{height:44px;position:absolute;width:100%;text-align:center;line-height:64px;color:#fff}[data-v-616030e4]:export{menuBg:#304156;menuText:#bfcbd9;menuActiveText:#409eff}.bottom[data-v-616030e4]{margin-top:13px;line-height:12px;display:flex;justify-content:space-between;align-items:center}.bottom span[data-v-616030e4]{font-size:13px;color:#999}.button[data-v-616030e4]{padding:0;min-height:auto;float:right}.image[data-v-616030e4]{width:100%;display:block}.one-block[data-v-616030e4]{border:1px solid #ebebeb;border-radius:3px;transition:.2s;padding:24px;margin-bottom:24px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)} \ No newline at end of file +[data-v-62f54f8e]:export{menuBg:#304156;menuText:#bfcbd9;menuActiveText:#409eff}.upload-container[data-v-62f54f8e]{width:100%;position:relative}.upload-container[data-v-62f54f8e]:after{content:"";display:table;clear:both}.upload-container .image-uploader[data-v-62f54f8e]{width:35%;float:left}.upload-container .image-preview[data-v-62f54f8e]{width:200px;position:relative;border:1px dashed #d9d9d9;float:left;margin-left:50px}.upload-container .image-preview .image-preview-wrapper[data-v-62f54f8e]{position:relative;width:100%}.upload-container .image-preview .image-preview-wrapper img[data-v-62f54f8e]{width:100%}.upload-container .image-preview .image-preview-action[data-v-62f54f8e]{position:absolute;width:100%;left:0;top:0;cursor:default;color:#fff;opacity:0;font-size:20px;background-color:rgba(0,0,0,.5);transition:opacity .3s;cursor:pointer;text-align:center;line-height:200px}.upload-container .image-preview .image-preview-action .el-icon-delete[data-v-62f54f8e]{font-size:36px}.upload-container .image-preview:hover .image-preview-action[data-v-62f54f8e]{opacity:1}.upload-container .image-app-preview[data-v-62f54f8e]{width:320px;height:180px;position:relative;border:1px dashed #d9d9d9;float:left;margin-left:50px}.upload-container .image-app-preview .app-fake-conver[data-v-62f54f8e]{height:44px;position:absolute;width:100%;text-align:center;line-height:64px;color:#fff}[data-v-f1c664f6]:export{menuBg:#304156;menuText:#bfcbd9;menuActiveText:#409eff}.bottom[data-v-f1c664f6]{margin-top:13px;line-height:12px;display:flex;justify-content:space-between;align-items:center}.bottom span[data-v-f1c664f6]{font-size:13px;color:#999}.button[data-v-f1c664f6]{padding:0;min-height:auto;float:right}.image[data-v-f1c664f6]{width:100%;display:block}.one-block[data-v-f1c664f6]{border:1px solid #ebebeb;border-radius:3px;transition:.2s;padding:24px;margin-bottom:24px;box-shadow:0 2px 12px 0 rgba(0,0,0,.1)} \ No newline at end of file diff --git a/dist/index.html b/dist/index.html index db22d4f..64ef402 100644 --- a/dist/index.html +++ b/dist/index.html @@ -1 +1 @@ -Game Admin
\ No newline at end of file +Game Admin
\ No newline at end of file diff --git a/dist/js/app.3e2473e2.js b/dist/js/app.deacb710.js similarity index 61% rename from dist/js/app.3e2473e2.js rename to dist/js/app.deacb710.js index 5347bdc..c4aa624 100644 --- a/dist/js/app.3e2473e2.js +++ b/dist/js/app.deacb710.js @@ -1,2 +1,2 @@ -(function(e){function t(t){for(var i,n,c=t[0],s=t[1],l=t[2],u=0,d=[];u0){var t,a=n["a"].permissions,r=!1,o=Object(i["a"])(e);try{for(o.s();!(t=o.n()).done;){var c=t.value;if("*"===c){r=!0;break}var s=c.split(":");if("*"===s[0]){var l,u=Object(i["a"])(a);try{for(u.s();!(l=u.n()).done;){var d=l.value;if("*"===d[1]||d[1]===s[1]){r=!0;break}}}catch(v){u.e(v)}finally{u.f()}}else if("*"===s[1]){var h,p=Object(i["a"])(a);try{for(p.s();!(h=p.n()).done;){var m=h.value;if("*"===m[0]||m[0]===s[0]){r=!0;break}}}catch(v){p.e(v)}finally{p.f()}}else{var f,b=Object(i["a"])(a);try{for(b.s();!(f=b.n()).done;){var g=f.value;if("*"===g[0]&&"*"===g[1]||"*"===g[0]&&g[1]===s[1]||g[0]===s[0]&&"*"===g[1]||g[0]===s[0]&&g[1]===s[1]){r=!0;break}}}catch(v){b.e(v)}finally{b.f()}}if(r)break}}catch(v){o.e(v)}finally{o.f()}return r}return console.error("need roles! Like v-permission=\"['admin','editor']\""),!1}},"232e":function(e,t,a){},"23f6":function(e,t,a){"use strict";a("2988")},"24ab":function(e,t,a){e.exports={menuBg:"#304156",menuText:"#bfcbd9",menuActiveText:"#409eff",theme:"#1890ff"}},"24be":function(e,t,a){},2988:function(e,t,a){},"2ca8":function(e,t,a){"use strict";a("c494")},"2dc5":function(e,t,a){"use strict";a("effd")},4155:function(e,t,a){"use strict";a("f6a5")},"435a":function(e,t,a){"use strict";a("e4f3")},"4b2f":function(e,t,a){},"4d44":function(e,t,a){},"4f20":function(e,t,a){e.exports={menuBg:"#304156",menuText:"#bfcbd9",menuActiveText:"#409eff"}},5361:function(e,t,a){"use strict";var i=a("448a")["default"];a("1d1c"),a("0d03"),a("c975"),a("a434"),a("4160"),a("159b"),a("fb6a"),a("99af"),a("d3b7"),a("6062b"),a("3ca3"),a("ddb0"),a("4de4"),a("4ec9"),Object.defineProperties(Date.prototype,{addDays:{value:function(e){return new Date(this.getTime()+3600*e*24*1e3)},writable:!0}}),Object.defineProperties(Array.prototype,{cloneTo:{value:function(e){e.length=this.length;var t=this.length;e.length=t;for(var a=0;a=this.length)return!1;for(var t=this.length-1,a=e;a0&&void 0!==arguments[0]?arguments[0]:1,i=this.slice(0),n=this.length,r=n-a;if(r<0)return i;while(n-- >r)t=Math.floor((n+1)*Math.random()),e=i[t],i[t]=i[n],i[n]=e;return i.slice(r)},writable:!0},randomOne:{value:function(){var e=this.randomGet(1);return e.length>0?e[0]:null},writable:!0},randomRemove:{value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=[];while(e-- >0&&this.length>0){var a=Math.random()*this.length|0;t.push.apply(t,i(this.splice(a,1)))}return t},writable:!0},moveElement:{value:function(e){return Math.abs(e)>this.length&&(e%=this.length),this.slice(-e).concat(this.slice(0,-e))},writable:!0},union:{value:function(e){var t=this.concat(e);return i(new Set(t))},writable:!0},intersect:{value:function(e){var t=new Set(e),a=new Set(this.filter((function(e){return t.has(e)})));return i(a)},writable:!0},difference:{value:function(e){var t=new Set(e),a=new Set(this.filter((function(e){return!t.has(e)})));return i(a)},writable:!0}}),Object.defineProperties(Map.prototype,{inc:{value:function(e,t){return"number"===typeof t?this.set(e,(this.get(e)||0)+t):this.set(e,t),this.get(e)}}})},"53dd":function(e,t,a){},5581:function(e,t,a){"use strict";a.d(t,"b",(function(){return o})),a.d(t,"g",(function(){return c})),a.d(t,"a",(function(){return l})),a.d(t,"f",(function(){return u})),a.d(t,"c",(function(){return h})),a.d(t,"h",(function(){return p})),a.d(t,"d",(function(){return f})),a.d(t,"i",(function(){return b})),a.d(t,"e",(function(){return g}));var i=a("a78e"),n=a.n(i),r="sidebar_status",o=function(){return n.a.get(r)},c=function(e){return n.a.set(r,e)},s="language",l=function(){return n.a.get(s)},u=function(e){return n.a.set(s,e)},d="size",h=function(){return n.a.get(d)},p=function(e){return n.a.set(d,e)},m="vue_typescript_admin_access_token",f=function(){return n.a.get(m)},b=function(e){return n.a.set(m,e)},g=function(){return n.a.remove(m)}},"58dd":function(e,t,a){"use strict";a("92fc")},"5f49":function(e,t,a){},6199:function(e,t,a){e.exports={menuBg:"#304156",menuText:"#bfcbd9",menuActiveText:"#409eff"}},"6ebf":function(e,t,a){"use strict";a.d(t,"b",(function(){return x}));var i=a("5530"),n=(a("b64b"),a("c975"),a("2b0e")),r=a("a925"),o=a("5581"),c=a("b2d6"),s=a.n(c),l=a("f0d9"),u=a.n(l),d=a("3ed6"),h=a.n(d),p=a("c3ff"),m=a.n(p),f=a("fcff"),b=a.n(f),g={route:{dashboard:"Dashboard",system:"System",adminuser:"Admin",documentation:"Documentation",guide:"Guide",permission:"Permission",pagePermission:"Page Permission",rolePermission:"Role Permission",directivePermission:"Directive Permission",icons:"Icons",components:"Components",tinymce:"Tinymce",markdown:"Markdown",jsonEditor:"JSON Editor",splitPane:"SplitPane",avatarUpload:"Avatar Upload",dropzone:"Dropzone",sticky:"Sticky",countTo:"Count To",componentMixin:"Mixin",backToTop:"Back To Top",draggableDialog:"Draggable Dialog",draggableKanban:"Draggable Kanban",draggableList:"Draggable List",draggableSelect:"Draggable Select",charts:"Charts",barChart:"Bar Chart",lineChart:"Line Chart",mixedChart:"Mixed Chart",example:"Example",nested:"Nested Routes",menu1:"Menu 1","menu1-1":"Menu 1-1","menu1-2":"Menu 1-2","menu1-2-1":"Menu 1-2-1","menu1-2-2":"Menu 1-2-2","menu1-3":"Menu 1-3",menu2:"Menu 2",table:"Table",dynamicTable:"Dynamic Table",draggableTable:"Draggable Table",inlineEditTable:"Inline Edit Table",complexTable:"Complex Table",tab:"Tab",form:"Form",createArticle:"Create Article",editArticle:"Edit Article",articleList:"Article List",errorPages:"Error Pages",page401:"401",page404:"404",errorLog:"Error Log",excel:"Excel",exportExcel:"Export Excel",selectExcel:"Export Selected",mergeHeader:"Merge Header",uploadExcel:"Upload Excel",zip:"Zip",pdf:"PDF",exportZip:"Export Zip",theme:"Theme",clipboard:"Clipboard",i18n:"I18n",externalLink:"External Link",profile:"Profile",article:"Article",marketing:"Marketing",marketing_coupon:"Coupon",marketing_coupon_info:"Coupon Info",marketing_promo:"Promo Code",marketing_points:"Points Setting",question:"Question Set",question_list:"Question List",question_prepare:"Question Edit",question_setting:"Question Setting",createQuestion:"Create Question",shop:"Shop Setting",shop_list:"Shop List",shop_admin:"Shop Admins",create_shop:"Create Shop",shop_edit:"Shop Editor",game_setting:"Game Setting",game:"Game",game_list:"Game List",game_edit:"Game Info",activity_list:"Activity List",create_activity:"New Activity",edit_activity:"Edit Activity",exam_list:"Exam List",create_exam:"New Exam",edit_exam:"Edit Exam",password:"Password",edit_theme:"Edit Theme",shop_member:"Member Manage",shop_statistics:"Statistics",game_statistics:"Game Statistics",shop_puzzles:"Custom Puzzles",shop_lottery:"Lottery Setting",shop_share:"Share Setting",shop_mail:"Mails",create_mail:"New Mail",edit_mail:"Edit Mail"},navbar:{logOut:"Log Out",dashboard:"Dashboard",github:"Github",theme:"Theme",size:"Global Size",profile:"Profile",password:"Password"},login:{title:"Login Form",logIn:"Login",username:"Username",password:"Password",any:"any",thirdparty:"Or connect with",thirdpartyTips:"Can not be simulated on local, so please combine you own business simulation! ! !"},documentation:{documentation:"Documentation",github:"Github Repository"},permission:{createRole:"New Role",editPermission:"Edit",roles:"Your roles",switchRoles:"Switch roles",tips:"In some cases, using v-permission will have no effect. For example: Element-UI el-tab or el-table-column and other scenes that dynamically render dom. You can only do this with v-if.",delete:"Delete",confirm:"Confirm",cancel:"Cancel"},guide:{description:"The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ",button:"Show Guide"},components:{documentation:"Documentation",tinymceTips:"Rich text is a core feature of the management backend, but at the same time it is a place with lots of pits. In the process of selecting rich texts, I also took a lot of detours. The common rich texts on the market have been basically used, and I finally chose Tinymce. See the more detailed rich text comparison and introduction.",stickyTips:"when the page is scrolled to the preset position will be sticky on the top.",backToTopTips1:"When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner",backToTopTips2:"You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally",imageUploadTips:"Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version.",changeLanguageTips:"Switch Language Success"},table:{dynamicTips1:"Fixed header, sorted by header order",dynamicTips2:"Not fixed header, sorted by click order",dragTips1:"The default order",dragTips2:"The after dragging order",title:"Title",importance:"Importance",type:"Type",remark:"Remark",search:"Search",add:"Add",export:"Export",reviewer:"Reviewer",id:"ID",date:"Date",author:"Author",readings:"Readings",status:"Status",actions:"Actions",edit:"Edit",publish:"Publish",draft:"Draft",delete:"Delete",cancel:"Cancel",confirm:"Confirm"},example:{warning:"Creating and editing pages cannot be cached by keep-alive because keep-alive's 'include' currently does not support caching based on routes, so now it's cached based on component name. If you want to achieve a similar caching effect, you can use a browser caching scheme such as localStorage. Or don't use keep-alive's 'include' to cache all pages directly. See details"},errorLog:{tips:"Please click the bug icon in the upper right corner",description:"Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.",documentation:"Document introduction"},excel:{export:"Export",selectedExport:"Export Selected Items",placeholder:"Please enter the file name (default excel-list)"},zip:{export:"Export",placeholder:"Please enter the file name (default file)"},pdf:{tips:"Here we use window.print() to implement the feature of downloading PDF."},theme:{change:"Change Theme",documentation:"Theme documentation",tips:"Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details."},tagsView:{refresh:"Refresh",close:"Close",closeOthers:"Close Others",closeAll:"Close All"},settings:{title:"Page style setting",theme:"Theme Color",showTagsView:"Open Tags-View",showSidebarLogo:"Sidebar Logo",fixedHeader:"Fixed Header",sidebarTextTheme:"Sidebar Text Theme"},admin:{addAdmin:"New Admin",editAdmin:"Edit Admin"},article:{add:"New Article"},marketing:{},main:{shop:"shop"}},v={route:{dashboard:"首页",documentation:"文档",system:"系统",adminuser:"管理员",guide:"引导页",permission:"权限管理",rolePermission:"角色权限",pagePermission:"页面权限",directivePermission:"指令权限",icons:"图标",components:"组件",tinymce:"富文本编辑器",markdown:"Markdown",jsonEditor:"JSON 编辑器",splitPane:"Splitpane",avatarUpload:"头像上传",dropzone:"Dropzone",sticky:"Sticky",countTo:"Count To",componentMixin:"小组件",backToTop:"返回顶部",draggableDialog:"可拖拽对话框",draggableKanban:"可拖拽看板",draggableList:"可拖拽列表",draggableSelect:"可拖拽选择",charts:"图表",barChart:"柱状图表",lineChart:"折线图",mixedChart:"混合图表",example:"综合实例",nested:"路由嵌套",menu1:"菜单 1","menu1-1":"菜单 1-1","menu1-2":"菜单 1-2","menu1-2-1":"菜单 1-2-1","menu1-2-2":"菜单 1-2-2","menu1-3":"菜单 1-3",menu2:"菜单 2",table:"表格",dynamicTable:"动态表格",draggableTable:"可拖拽表格",inlineEditTable:"表格内编辑",complexTable:"综合表格",tab:"分栏",form:"表单",createArticle:"创建文章",editArticle:"编辑文章",articleList:"文章列表",errorPages:"错误页面",page401:"401",page404:"404",errorLog:"错误日志",excel:"Excel",exportExcel:"导出 Excel",selectExcel:"导出 已选择项",mergeHeader:"导出 多级表头",uploadExcel:"上传 Excel",zip:"Zip",pdf:"PDF",exportZip:"导出 Zip",theme:"换肤",clipboard:"粘贴板",i18n:"国际化",externalLink:"外链",profile:"个人中心",article:"资讯管理",marketing:"营销管理",marketing_coupon:"优惠券设置",marketing_coupon_info:"编辑优惠券",marketing_promo:"优惠码设置",marketing_points:"积分设置",question:"题库管理",question_list:"题目列表",question_prepare:"题目编辑",question_setting:"题库设置",createQuestion:"创建题目",shop:"店铺设置",shop_list:"店铺列表",shop_admin:"店铺管理员",create_shop:"创建店铺",shop_edit:"编辑店铺",game_setting:"游戏设置",game:"游戏信息",game_list:"游戏列表",game_edit:"编辑游戏",activity_list:"活动列表",create_activity:"新建活动",edit_activity:"编辑活动",exam_list:"挑战列表",create_exam:"新建挑战",edit_exam:"编辑挑战",password:"修改密码",edit_theme:"订制游戏主题",shop_member:"成员管理",shop_statistics:"统计",game_statistics:"游戏数据",shop_puzzles:"自定义题库",shop_lottery:"抽奖转盘",shop_share:"分享设置",shop_mail:"邮件",create_mail:"新邮件",edit_mail:"编辑邮件"},navbar:{logOut:"退出登录",dashboard:"首页",github:"项目地址",theme:"换肤",size:"布局大小",profile:"个人信息",password:"修改密码"},login:{title:"系统登录",logIn:"登录",username:"账号",password:"密码",any:"随便填",thirdparty:"第三方登录",thirdpartyTips:"本地不能模拟,请结合自己业务进行模拟!!!"},documentation:{documentation:"文档",github:"Github 地址"},permission:{createRole:"新增角色",editPermission:"编辑权限",roles:"你的权限",switchRoles:"切换权限",tips:"在某些情况下,不适合使用 v-permission。例如:Element-UI 的 el-tab 或 el-table-column 以及其它动态渲染 dom 的场景。你只能通过手动设置 v-if 来实现。",delete:"删除",confirm:"确定",cancel:"取消"},guide:{description:"引导页对于一些第一次进入项目的人很有用,你可以简单介绍下项目的功能。本 Demo 是基于",button:"打开引导"},components:{documentation:"文档",tinymceTips:"富文本是管理后台一个核心的功能,但同时又是一个有很多坑的地方。在选择富文本的过程中我也走了不少的弯路,市面上常见的富文本都基本用过了,最终权衡了一下选择了Tinymce。更详细的富文本比较和介绍见",stickyTips:"当页面滚动到预设的位置会吸附在顶部",backToTopTips1:"页面滚动到指定位置会在右下角出现返回顶部按钮",backToTopTips2:"可自定义按钮的样式、show/hide、出现的高度、返回的位置 如需文字提示,可在外部使用Element的el-tooltip元素",imageUploadTips:"由于我在使用时它只有vue@1版本,而且和mockjs不兼容,所以自己改造了一下,如果大家要使用的话,优先还是使用官方版本。",changeLanguageTips:"切换语言成功"},table:{dynamicTips1:"固定表头, 按照表头顺序排序",dynamicTips2:"不固定表头, 按照点击顺序排序",dragTips1:"默认顺序",dragTips2:"拖拽后顺序",title:"标题",importance:"重要性",type:"类型",remark:"点评",search:"搜索",add:"添加",export:"导出",reviewer:"审核人",id:"序号",date:"时间",author:"作者",readings:"阅读数",status:"状态",actions:"操作",edit:"编辑",publish:"发布",draft:"草稿",delete:"删除",cancel:"取 消",confirm:"确 定"},example:{warning:"创建和编辑页面是不能被 keep-alive 缓存的,因为keep-alive 的 include 目前不支持根据路由来缓存,所以目前都是基于 component name 来进行缓存的。如果你想类似的实现缓存效果,可以使用 localStorage 等浏览器缓存方案。或者不要使用 keep-alive 的 include,直接缓存所有页面。详情见"},errorLog:{tips:"请点击右上角bug小图标",description:"现在的管理后台基本都是spa的形式了,它增强了用户体验,但同时也会增加页面出问题的可能性,可能一个小小的疏忽就导致整个页面的死锁。好在 Vue 官网提供了一个方法来捕获处理异常,你可以在其中进行错误处理或者异常上报。",documentation:"文档介绍"},excel:{export:"导出",selectedExport:"导出已选择项",placeholder:"请输入文件名(默认excel-list)"},zip:{export:"导出",placeholder:"请输入文件名(默认file)"},pdf:{tips:"这里使用 window.print() 来实现下载pdf的功能"},theme:{change:"换肤",documentation:"换肤文档",tips:"Tips: 它区别于 navbar 上的 theme-pick, 是两种不同的换肤方法,各自有不同的应用场景,具体请参考文档。"},tagsView:{refresh:"刷新",close:"关闭",closeOthers:"关闭其它",closeAll:"关闭所有"},settings:{title:"系统布局配置",theme:"主题色",showTagsView:"显示 Tags-View",showSidebarLogo:"显示侧边栏 Logo",fixedHeader:"固定 Header",sidebarTextTheme:"侧边栏文字主题色"},admin:{addAdmin:"新增",editAdmin:"编辑"},article:{add:"添加"},main:{shop:"店铺"}},y={route:{dashboard:"Panel de control",documentation:"Documentación",guide:"Guía",permission:"Permisos",rolePermission:"Permisos de rol",pagePermission:"Permisos de la página",directivePermission:"Permisos de la directiva",icons:"Iconos",components:"Componentes",tinymce:"Tinymce",markdown:"Markdown",jsonEditor:"Editor JSON",splitPane:"Panel dividido",avatarUpload:"Subir avatar",dropzone:"Subir ficheros",sticky:"Sticky",countTo:"Count To",componentMixin:"Mixin",backToTop:"Ir arriba",draggableDialog:"Draggable Dialog",draggableKanban:"Draggable Kanban",draggableList:"Draggable List",draggableSelect:"Draggable Select",charts:"Gráficos",barChart:"Bar Chart",lineChart:"Gráfico de líneas",mixedChart:"Mixed Chart",example:"Ejemplo",nested:"Rutas anidadass",menu1:"Menu 1","menu1-1":"Menu 1-1","menu1-2":"Menu 1-2","menu1-2-1":"Menu 1-2-1","menu1-2-2":"Menu 1-2-2","menu1-3":"Menu 1-3",menu2:"Menu 2",table:"Tabla",dynamicTable:"Tabla dinámica",draggableTable:"Arrastrar tabla",inlineEditTable:"Editor",complexTable:"Complex Table",tab:"Pestaña",form:"Formulario",createArticle:"Crear artículo",editArticle:"Editar artículo",articleList:"Listado de artículos",errorPages:"Páginas de error",page401:"401",page404:"404",errorLog:"Registro de errores",excel:"Excel",exportExcel:"Exportar a Excel",selectExcel:"Export seleccionado",mergeHeader:"Merge Header",uploadExcel:"Subir Excel",zip:"Zip",pdf:"PDF",exportZip:"Exportar a Zip",theme:"Tema",clipboard:"Clipboard",i18n:"I18n",externalLink:"Enlace externo",profile:"Profile"},navbar:{logOut:"Salir",dashboard:"Panel de control",github:"Github",theme:"Tema",size:"Tamaño global",profile:"Profile"},login:{title:"Formulario de acceso",logIn:"Acceso",username:"Usuario",password:"Contraseña",any:"nada",thirdparty:"Conectar con",thirdpartyTips:"No se puede simular en local, así que combine su propia simulación de negocios. ! !"},documentation:{documentation:"Documentación",github:"Repositorio Github"},permission:{createRole:"Nuevo rol",editPermission:"Permiso de edición",roles:"Tus permisos",switchRoles:"Cambiar permisos",tips:"In some cases it is not suitable to use v-permission, such as element Tab component or el-table-column and other asynchronous rendering dom cases which can only be achieved by manually setting the v-if.",delete:"Borrar",confirm:"Confirmar",cancel:"Cancelar"},guide:{description:"The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ",button:"Ver guía"},components:{documentation:"Documentación",tinymceTips:"Rich text editor is a core part of management system, but at the same time is a place with lots of problems. In the process of selecting rich texts, I also walked a lot of detours. The common rich text editors in the market are basically used, and the finally chose Tinymce. See documentation for more detailed rich text editor comparisons and introductions.",stickyTips:"when the page is scrolled to the preset position will be sticky on the top.",backToTopTips1:"When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner",backToTopTips2:"You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally",imageUploadTips:"Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version.",changeLanguageTips:"Cambiar de idioma correctamente"},table:{dynamicTips1:"Fixed header, sorted by header order",dynamicTips2:"Not fixed header, sorted by click order",dragTips1:"Orden por defecto",dragTips2:"The after dragging order",title:"Título",importance:"Importancia",type:"Tipo",remark:"Remark",search:"Buscar",add:"Añadir",export:"Exportar",reviewer:"Reviewer",id:"ID",date:"Fecha",author:"Autor",readings:"Lector",status:"Estado",actions:"Acciones",edit:"Editar",publish:"Publicar",draft:"Draft",delete:"Eliminar",cancel:"Cancelar",confirm:"Confirmar"},example:{warning:"Creating and editing pages cannot be cached by keep-alive because keep-alive include does not currently support caching based on routes, so it is currently cached based on component name. If you want to achieve a similar caching effect, you can use a browser caching scheme such as localStorage. Or do not use keep-alive include to cache all pages directly. See details"},errorLog:{tips:"Please click the bug icon in the upper right corner",description:"Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.",documentation:"Documento de introducción"},excel:{export:"Exportar",selectedExport:"Exportar seleccionados",placeholder:"Por favor escribe un nombre de fichero"},zip:{export:"Exportar",placeholder:"Por favor escribe un nombre de fichero"},pdf:{tips:"Here we use window.print() to implement the feature of downloading PDF."},theme:{change:"Cambiar tema",documentation:"Documentación del tema",tips:"Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details."},tagsView:{refresh:"Actualizar",close:"Cerrar",closeOthers:"Cerrar otros",closeAll:"Cerrar todos"},settings:{title:"Page style setting",theme:"Theme Color",showTagsView:"Show Tags-View",showSidebarLogo:"Show Sidebar Logo",fixedHeader:"Fixed Header",sidebarTextTheme:"Sidebar Text Theme"}},w={route:{dashboard:"トップ",system:"システム",documentation:"ドキュメント",guide:"ガイド",permission:"権限",rolePermission:"権限ロール",pagePermission:"ページ権限",directivePermission:"ディレクティブ権限",icons:"アイコン",components:"コンポーネント",tinymce:"TinyMCE",markdown:"Markdown",jsonEditor:"JSON Editor",splitPane:"パネル",avatarUpload:"アバターアップロード",dropzone:"Dropzone",sticky:"Sticky",countTo:"Count To",componentMixin:"コンポーネントMixin",backToTop:"Back To Top",draggableDialog:"Draggable Dialog",draggableKanban:"Draggable 看板",draggableList:"Draggable List",draggableSelect:"Draggable Select",charts:"チャート",barChart:"Barチャート",lineChart:"Lineチャート",mixedChart:"Mixedチャート",example:"Example",nested:"Nested Routes",menu1:"メニュー1","menu1-1":"メニュー 1-1","menu1-2":"メニュー 1-2","menu1-2-1":"メニュー 1-2-1","menu1-2-2":"メニュー 1-2-2","menu1-3":"メニュー 1-3",menu2:"メニュー 2",table:"Table",dynamicTable:"可変 Table",draggableTable:"Draggable Table",inlineEditTable:"Inline Edit Table",complexTable:"Complex Table",tab:"Tab",form:"フォーム",createArticle:"投稿作成",editArticle:"投稿編集",articleList:"投稿リスト",errorPages:"エラーページ",page401:"401",page404:"404",errorLog:"エラーログ",excel:"Excel",exportExcel:"一括エクスポート",selectExcel:"複数選択エクスポート",mergeHeader:"ヘッダーマージ",uploadExcel:"アップロード",zip:"Zip",pdf:"PDF",exportZip:"Export Zip",theme:"テーマ変更",clipboard:"Clipboard",i18n:"多言語",externalLink:"外部リンク",profile:"プロフィール"},navbar:{dashboard:"トップ",github:"GitHub",logOut:"ログアウト",profile:"プロフィール",theme:"テーマ変更",size:"画面サイズ"},login:{title:"ユーザログイン",logIn:"ログイン",username:"ユーザ名",password:"パスワード",any:"any",thirdparty:"外部IDでログイン",thirdpartyTips:"ローカル環境ではログインできません。実装が必要です。"},documentation:{documentation:"ドキュメント",github:"Github Link"},permission:{createRole:"ロール追加",editPermission:"ロール変更",roles:"ロール",switchRoles:"ロール切替",tips:"v-permissionは使えない時があります。例えば: Element-UI の el-tab、 el-table-column 及び他の dom。v-ifを使う必要があります。",delete:"削除",confirm:"確認",cancel:"キャンセル"},guide:{description:"ガイドは各機能の説明です。",button:"ガイドを見る"},components:{documentation:"ドキュメント",tinymceTips:"tinymceは管理画面に重要な機能ですが、その同時に落とし穴がありあす。tinymceを使う道のりが大変でした。Tinymceを使う時に各自のプロジェクト状況で判断が必要です。ドキュメントはこちら",stickyTips:"ページの指定位置へスクロールした場合、表示されます。",backToTopTips1:"トップへスクロールが表示されます。",backToTopTips2:"ボタンのスタイルはカスタマイズできます。例えば、show/hide、height、position。 またはElementのel-tooltipを使って、ツールチップを実装できます。",imageUploadTips:"mockjsは使えないため、カスタマイズしています。公式の最新バージョンを使ってください。",changeLanguageTips:"言語切り替えの成功"},table:{dynamicTips1:"先頭は固定、最後に追加",dynamicTips2:"戦後に追加せず、指定列に追加",dragTips1:"デフォルト順番",dragTips2:"Drag後の順番",title:"タイトル",importance:"重要",type:"タイプ",remark:"評価",search:"検索",add:"追加",export:"エクスポート",reviewer:"レビュアー",id:"番号",date:"日時",author:"作成者",readings:"閲覧数",status:"ステータス",actions:"操作",edit:"編集",publish:"公開",draft:"下書き",delete:"キャンセル",cancel:"キャンセル",confirm:"確認"},example:{warning:"新規作成と編集画面は keep-alive を使えないです。keep-alive の include はrouteのキャッシュは使えないです。そのため、component name を使ってキャッシュさせるようにします。このようなキャッシュ機能を作りたい場合,localStorageを使う手があります。もしくは keep-alive の includeを使って、全ページキャッシュする方法はあります。"},errorLog:{tips:"右上のbugアイコンをクリックしてください。",description:"管理画面はspaを使う場合が多い、ユーザ体現向上はできますが、想定外エラーが発生する場合があります。Vueはそのエラーハンドリング機能を提供し、エラーレポートができます。",documentation:"ドキュメント"},excel:{export:"エクスポート",selectedExport:"エクスポート対象を選択してください。",placeholder:"ファイル名を入力してください。"},zip:{export:"エクスポート",placeholder:"ファイル名を入力してください。"},pdf:{tips:"window.print() を使ってPDFダウンロードしています。"},theme:{change:"テーマ切替",documentation:"ドキュメント",tips:"Tips: テーマの切り替え方法はnavbarのtheme-pickと異なります、使い方はドキュメントを確認してください。"},tagsView:{refresh:"更新",close:"閉じる",closeOthers:"その他閉じる",closeAll:"すべて閉じる"},settings:{title:"システムテーマ",theme:"テーマ色",showTagsView:"Tags-View 開く",showSidebarLogo:"Show Sidebar Logo",fixedHeader:"Fixed Header",sidebarTextTheme:"Sidebar Text Theme"}},k={route:{dashboard:"대시보드",system:"체계",documentation:"문서",guide:"가이드",permission:"권한",rolePermission:"역할 권한",pagePermission:"페이지 권한",directivePermission:"지시 권한",icons:"아이콘",components:"구성 요소",tinymce:"TinyMCE",markdown:"Markdown",jsonEditor:"JSON Editor",splitPane:"패널",avatarUpload:"아바타업로드",dropzone:"Dropzone",sticky:"Sticky",countTo:"Count To",componentMixin:"구성 요소 Mixin",backToTop:"Back To Top",draggableDialog:"드래그 상자",draggableKanban:"드래그 간판",draggableList:"드래그 리스트",draggableSelect:"드래그 선택",charts:"차트",barChart:"막대그래프",lineChart:"꺽은선그래프",mixedChart:"종합차트",example:"예시",nested:"Nested Routes",menu1:"메뉴1","menu1-1":"메뉴 1-1","menu1-2":"메뉴 1-2","menu1-2-1":"메뉴 1-2-1","menu1-2-2":"메뉴 1-2-2","menu1-3":"메뉴 1-3",menu2:"메뉴 2",table:"표",dynamicTable:"Dynamic 표",draggableTable:"Draggable 표",inlineEditTable:"Inline Edit 표",complexTable:"Complex 표",tab:"Tab",form:"형태",createArticle:"게시물 작성",editArticle:"게시물 편집",articleList:"게시물 리스트",errorPages:"에러 페이지",page401:"401",page404:"404",errorLog:"에러 로그",excel:"엑셀",exportExcel:"엑셀 내보내기",selectExcel:"엑셀 선택",mergeHeader:"헤더 병합",uploadExcel:"엑셀 올리기",zip:"Zip",pdf:"PDF",exportZip:"Export Zip",theme:"테마",clipboard:"Clipboard",i18n:"언어",externalLink:"외부 링크",profile:"프로필"},navbar:{dashboard:"대시보드",github:"깃허브",logOut:"로그아웃",profile:"프로필",theme:"테마",size:"크기"},login:{title:"타이틀",logIn:"로그인",username:"이름",password:"비밀번호",any:"any",thirdparty:"외부 ID로 로그인",thirdpartyTips:"로컬 환경에서 로그인 할 수 없습니다."},documentation:{documentation:"문서",github:"깃허브 링크"},permission:{createRole:"역할 추가",editPermission:"권한 수정",roles:"역할",switchRoles:"역할 바꾸기",tips:"v-permission 사용할 때가 있습니다. 예 : Element-UI의 el-tab, el-table-column 및 다른 dom. v-if를 사용해야합니다.",delete:"삭제",confirm:"확인",cancel:"취소"},guide:{description:"각 기능에 대한 설명입니다.",button:"버튼"},components:{documentation:"문서",tinymceTips:"서식있는 텍스트는 관리 백엔드의 핵심 기능이지만 동시에 문제가 많은 곳입니다. 리치 텍스트를 선택하는 과정에서도 많은 우회가 필요했습니다. 시중에 나와있는 일반적인 서식있는 텍스트는 기본적으로 사용되었으며 마침내 Tinymce를 선택했습니다. 보다 자세한 리치 텍스트 비교 및 소개를 참조하십시오.",stickyTips:"페이지의 지정된 위치에 스크롤하면 나타납니다.",backToTopTips1:"페이지가 지정된 위치로 스크롤되면 맨 아래 오른쪽 모서리에 맨 위로 이동 단추가 나타납니다.",backToTopTips2:"버튼 스타일, 표시 / 숨기기, 모양 높이, 반환 높이를 사용자 정의 할 수 있습니다. 텍스트 프롬프트가 필요한 경우 element-ui el-tooltip 요소를 외부에서 사용할 수 있습니다",imageUploadTips:"vue @ 1 버전 만 사용하고 있었고 현재 mockjs와 호환되지 않기 때문에 직접 수정했으며 사용하려는 경우 공식 버전을 사용하는 것이 좋습니다.",changeLanguageTips:"언어 전환 성공"},table:{dynamicTips1:"정렬된 헤더",dynamicTips2:"정렬되지 않은 헤더",dragTips1:"기본 순서",dragTips2:"드래그한 순서",title:"타이틀",importance:"중요성",type:"Type",remark:"Remark",search:"검색",add:"추가",export:"내보내기",reviewer:"Reviewer",id:"ID",date:"날짜",author:"글쓴이",readings:"Readings",status:"상태",actions:"Actions",edit:"수정",publish:"게시",draft:"Draft",delete:"삭제",cancel:"취소",confirm:"확인"},example:{warning:"keep-alive의 'include '는 (는) 현재 경로 기반 캐싱을 지원하지 않으므로 구성 요소 이름을 기반으로 캐시되기 때문에 keep-alive로 페이지를 만들고 편집 할 수 없습니다. 비슷한 캐싱 효과를 얻으려면 localStorage와 같은 브라우저 캐싱 구성표를 사용할 수 있습니다. 또는 keep-alive ' include '를 사용하여 모든 페이지를 직접 캐시하지 마십시오. 자세히보다"},errorLog:{tips:"오른쪽 상단에있는 버그 아이콘을 클릭하십시오",description:"이제 관리 시스템은 기본적으로 스파의 형태이며 사용자 경험을 향상 시키지만 페이지 문제의 가능성을 증가시킵니다. 작은 태만으로 인해 전체 페이지 교착 상태가 발생할 수 있습니다. 다행히 Vue는 오류를 처리하거나 예외를보고 할 수있는 예외 처리를 포착하는 방법을 제공합니다.",documentation:"문서 소개"},excel:{export:"내보내기",selectedExport:"선택 항목 내보내기",placeholder:"파일 이름을 입력하세요.(기본 엑셀 목록)"},zip:{export:"내보내기",placeholder:"파일 이름을 입력하세요.(기본 파일)"},pdf:{tips:"여기서는 window.print ()를 사용하여 PDF 다운로드 기능을 구현합니다."},theme:{change:"테마 바꾸기",documentation:"테마 문서",tips:"Tips: 탐색 모음의 테마 선택과는 다른 응용 프로그램 시나리오가있는 두 가지 다른 스키닝 방법입니다. 자세한 내용은 설명서를 참조하십시오."},tagsView:{refresh:"새로고침",close:"닫기",closeOthers:"기타 닫기",closeAll:"모두 닫기"},settings:{title:"페이지 스타일 설정",theme:"테마 색상",showTagsView:"Tags-View 열기",showSidebarLogo:"사이드 메뉴 로고",fixedHeader:"헤더 고정",sidebarTextTheme:"사이드 메뉴 글꼴 테마"}},T={route:{dashboard:"Dashboard",documentation:"Documentazione",guide:"Guida",permission:"Permessi",pagePermission:"Pagina permessi",rolePermission:"Permessi ruolo",directivePermission:"Direttive Permessi",icons:"Icone",components:"Componenti",tinymce:"Tinymce",markdown:"Markdown",jsonEditor:"Editor JSON",splitPane:"SplitPane",avatarUpload:"Carica Avatar",dropzone:"Dropzone",sticky:"Sticky",countTo:"Conta Fino",componentMixin:"Mixin",backToTop:"Torna su",draggableDialog:"Dialogo Trascinabile",draggableKanban:"Kanban Trascinabile",draggableList:"Lista Trascinabile",draggableSelect:"Select Trascinabile",charts:"Grafici",barChart:"Grafico a Barre",lineChart:"Grafico a Linee",mixedChart:"Grafico Misto",example:"Esempio",nested:"Menu Nidificato",menu1:"Menu 1","menu1-1":"Menu 1-1","menu1-2":"Menu 1-2","menu1-2-1":"Menu 1-2-1","menu1-2-2":"Menu 1-2-2","menu1-3":"Menu 1-3",menu2:"Menu 2",table:"Tabella",dynamicTable:"Tabella Dinamica",draggableTable:"Tabella Trascinabile",inlineEditTable:"Tabella Modifica in Linea",complexTable:"Tabella Complessa",tab:"Tab",form:"Form",createArticle:"Crea Articolo",editArticle:"Modifica Articolo",articleList:"Lista Articoli",errorPages:"Pagine di Errore",page401:"401",page404:"404",errorLog:"Registro Errori",excel:"Excel",exportExcel:"Esporta Excel",selectExcel:"Esporta Selezionato",mergeHeader:"Unisci Intestazione",uploadExcel:"Carica Excel",zip:"Zip",pdf:"PDF",exportZip:"Esporta Zip",theme:"Tema",clipboard:"Appunti",i18n:"I18n",externalLink:"Link Esterno",profile:"Profilo"},navbar:{logOut:"Esci",dashboard:"Dashboard",github:"Github",theme:"Tema",size:"Grandezza Globale",profile:"Profilo"},login:{title:"Accesso",logIn:"Accedi",username:"Utente",password:"Password",any:"qualunque",thirdparty:"Connetti con",thirdpartyTips:"Non può essere simulato in locale, quindi combina la tua simulazione di business, per favore!!!"},documentation:{documentation:"Documentazione",github:"Github Repository"},permission:{createRole:"Nuovo Ruolo",editPermission:"Modifica",roles:"I tuoi ruoli",switchRoles:"Cambia ruoli",tips:"In alcuni casi usare v-permission non ha effetto. Per esempio: Element-UI el-tab o el-table-column e altri componenti che renderizzano il dom dinamicamente. Puoi farlo solo con v-if.",delete:"Elimina",confirm:"Conferma",cancel:"Annulla"},guide:{description:"La pagina Guida è utile per alcune persone che entrano nel progetto per la prima volta. Puoi introdurre brevemente le funzionalità del progetto. Il demo è basato su ",button:"Mostra guida"},components:{documentation:"Documentazione",stickyTips:"when the page is scrolled to the preset position will be sticky on the top.",tinymceTips:"Il testo ricco è una funzionalità fondamentale della gestione backend, ma allo stesso tempo è un posto molto scosceso. Nel processo di selezionare un Rich Text editor o fatto molte ricerche. I Rich Text editor comuni sul mercato sono molto usati, per questo alla fine ho scelto Tinymce. Vedi la più dettagliata comparazione e introduzione al Rich text editor.",backToTopTips1:'Quando la pagina viene spostata alla posizione specificata, il bottone "Torna Su" compare nell\'angolo in basso a destra',backToTopTips2:"Puoi personalizzare lo stile dei bottoni, mostra / nascondi, altezza di apparizione, altezza del ritorno a capo. Se hai bisogno di un prompt di testo, puoi utilizzare gli elementi element-ui el-tooltip esternamente",imageUploadTips:"Da quando usavo la verione 1 di Vue che non è compatibile con mockjs, la ho modificata io stesst, e se la userai, è meglio utilizzare versioni ufficiali.",changeLanguageTips:"Cambio lingua riuscito"},table:{dynamicTips1:"Intestazione Fissa, ordinato dall'ordine delle intestazioni",dynamicTips2:"Intestazione non fissa, ordinato dall'ordine dei click",dragTips1:"Ordine di default",dragTips2:"Ordine post trascinamento",title:"Titolo",importance:"Importanza",type:"Tipo",remark:"Osservazione",search:"Ricerca",add:"Aggiungi",export:"Esporta",reviewer:"Recensore",id:"ID",date:"Data",author:"Autore",readings:"Lettori",status:"Status",actions:"Azioni",edit:"Modifica",publish:"Pubblica",draft:"Bozza",delete:"Elimina",cancel:"Annulla",confirm:"Conferma"},example:{warning:"Creare e modificare pagine non può essere tenuto in cache da keep-alive, perchè l'include di keep-alive attualmente non supporta la cache basata sugli indirizzi, per questo ora viene utilizzata la cache basandosi sul nome del componente. Se vuoi utilizzare uno schema di caching basato sul browser come localStorage. O non usare l'include di keep-alive per mettere le pagine in cache direttamente. Vedi dettagli"},errorLog:{tips:"Per favore clicca l'icona dell'insetto nell'angolo in alto a sinistra",description:"Ora il sistema di gestione è fondamentalmente il form della spa, aumenta l'esperienza utente, ma incrementa anche le possibilità di problemi nelle pagine, una piccola negligenza può portare al blocco della pagina. Fortunatamente Vue offre un modo di catturare le eccezioni, dove puoi manipolare gli errori o riportare un'eccezione.",documentation:"Introduzione documentazione"},excel:{export:"Esporta",selectedExport:"Esporta Elementi Selezionati",placeholder:"Per favore inserisci il nome del file(default: excel-list)"},zip:{export:"Esporta",placeholder:"Per favore inserisci il nome del file(default: file)"},pdf:{tips:"Qui usiamo window.print() per implementare la funzionalità del download PDF."},theme:{change:"Cambia Tema",documentation:"Documentazione Tema",tips:"Consiglio: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details."},tagsView:{refresh:"Ricarica",close:"Chiudi",closeOthers:"Chiudi Altri",closeAll:"Chiudi Tutto"},settings:{title:"Impostazione Stile Pagina",theme:"Colore Tema",showTagsView:"Apri Vista Tag",showSidebarLogo:"Logo Barra Laterale",fixedHeader:"Intestazione Fissa",sidebarTextTheme:"Tema Testo Barra Laterale"},toasts:{switchLanguage:"Cambio lingua effettuato"}};n["default"].use(r["a"]);var O={en:Object(i["a"])(Object(i["a"])({},g),s.a),zh:Object(i["a"])(Object(i["a"])({},v),u.a),es:Object(i["a"])(Object(i["a"])({},y),h.a),ja:Object(i["a"])(Object(i["a"])({},w),m.a),ko:Object(i["a"])(Object(i["a"])({},k),b.a),it:Object(i["a"])({},T)},x=function(){var e=Object(o["a"])();if(e)return document.documentElement.lang=e,e;for(var t=navigator.language.toLowerCase(),a=Object.keys(O),i=0,n=a;i-1)return document.documentElement.lang=r,r}return"en"},E=new r["a"]({locale:x(),messages:O});t["a"]=E},"6fa2":function(e,t,a){"use strict";a("6199")},"704b":function(e,t,a){},7176:function(e,t,a){"use strict";a("0b76")},7383:function(e,t,a){"use strict";a.d(t,"a",(function(){return m}));var i=a("d4ec"),n=a("bee2"),r=a("262e"),o=a("2caf"),c=a("9ab4"),s=a("6fc5"),l=a("0613"),u=a("24ab"),d=a.n(u),h=a("8b99"),p=function(e){Object(r["a"])(a,e);var t=Object(o["a"])(a);function a(){var e;return Object(i["a"])(this,a),e=t.apply(this,arguments),e.theme=d.a.theme,e.fixedHeader=h["a"].fixedHeader,e.showSettings=h["a"].showSettings,e.showTagsView=h["a"].showTagsView,e.showSidebarLogo=h["a"].showSidebarLogo,e.sidebarTextTheme=h["a"].sidebarTextTheme,e}return Object(n["a"])(a,[{key:"ChangeSetting",value:function(e){this.CHANGE_SETTING(e)}},{key:"CHANGE_SETTING",value:function(e){var t=e.key,a=e.value;Object.prototype.hasOwnProperty.call(this,t)&&(this[t]=a)}}]),a}(s["d"]);Object(c["a"])([s["a"]],p.prototype,"ChangeSetting",null),Object(c["a"])([s["c"]],p.prototype,"CHANGE_SETTING",null),p=Object(c["a"])([Object(s["b"])({dynamic:!0,store:l["a"],name:"settings"})],p);var m=Object(s["e"])(p)},"8ad0":function(e,t,a){"use strict";a.d(t,"a",(function(){return v}));var i=a("d4ec"),n=a("bee2"),r=a("262e"),o=a("2caf"),c=a("5530"),s=(a("45fc"),a("caad"),a("2532"),a("4160"),a("159b"),a("99af"),a("9ab4")),l=a("6fc5"),u=a("afbc"),d=a("0613"),h=a("1e24"),p=function(e,t){var a;return!(null===(a=t.meta)||void 0===a||!a.roles)&&e.some((function(e){return t.meta.roles.includes(e)}))},m=function(e){var t,a;return!(null===(t=e.meta)||void 0===t||!t.permissions)&&Object(h["a"])(null===(a=e.meta)||void 0===a?void 0:a.permissions)},f=function(e){var t,a;return!(null!==(t=e.meta)&&void 0!==t&&t.roles)&&!(null!==(a=e.meta)&&void 0!==a&&a.permissions)},b=function e(t,a){var i=[];return t.forEach((function(t){var n=Object(c["a"])({},t);(p(a,n)||m(n)||f(n))&&(n.children&&(n.children=e(n.children,a)),i.push(n))})),i},g=function(e){Object(r["a"])(a,e);var t=Object(o["a"])(a);function a(){var e;return Object(i["a"])(this,a),e=t.apply(this,arguments),e.routes=[],e.dynamicRoutes=[],e}return Object(n["a"])(a,[{key:"SET_ROUTES",value:function(e){this.routes=u["b"].concat(e),this.dynamicRoutes=e}},{key:"GenerateRoutes",value:function(e){var t;t=e.includes("admin")?u["a"]:b(u["a"],e),this.SET_ROUTES(t)}}]),a}(l["d"]);Object(s["a"])([l["c"]],g.prototype,"SET_ROUTES",null),Object(s["a"])([l["a"]],g.prototype,"GenerateRoutes",null),g=Object(s["a"])([Object(l["b"])({dynamic:!0,store:d["a"],name:"permission"})],g);var v=Object(l["e"])(g)},"8b99":function(e,t,a){"use strict";var i={title:"管理后台",showSettings:!0,showTagsView:!0,fixedHeader:!1,showSidebarLogo:!1,errorLog:["production"],sidebarTextTheme:!0,devServerPort:9527,mockServerPort:9528};t["a"]=i},"8db4":function(e,t,a){e.exports={menuBg:"#304156",menuText:"#bfcbd9",menuActiveText:"#409eff"}},"92fc":function(e,t,a){e.exports={menuBg:"#304156",menuText:"#bfcbd9",menuActiveText:"#409eff"}},"981a":function(e,t,a){"use strict";a.d(t,"d",(function(){return n})),a.d(t,"f",(function(){return r})),a.d(t,"h",(function(){return o})),a.d(t,"i",(function(){return c})),a.d(t,"j",(function(){return s})),a.d(t,"e",(function(){return l})),a.d(t,"b",(function(){return u})),a.d(t,"g",(function(){return d})),a.d(t,"c",(function(){return h})),a.d(t,"a",(function(){return p}));var i=a("b32d"),n={id:"",username:"",showname:"",comment:"",locked:!1,roles:[],level:1,sex:"0",password:"",avatar:"",department:""},r=function(e){return Object(i["a"])({url:"/api/admin/info",method:"post",data:e})},o=function(e){return Object(i["a"])({url:"/api/admin/login",method:"post",data:e})},c=function(){return Object(i["a"])({url:"/api/admin/logout",method:"post"})},s=function(e){return Object(i["a"])({url:"/api/admin/save",method:"post",data:e})},l=function(e){return Object(i["a"])({url:"/api/admin/".concat(e,"/delete"),method:"post"})},u=function(e,t){return Object(i["a"])({url:"/api/admin/".concat(e,"/locker"),method:"post",data:{lock:t}})},d=function(e){return Object(i["a"])({url:"/api/admins",method:"get",params:e})},h=function(e){return Object(i["a"])({url:"/api/admin/passwd",method:"post",data:e})},p=function(e){return Object(i["a"])({url:"/api/admin/update_info",method:"post",data:e})}},9858:function(e,t,a){"use strict";a("c804")},"9dba":function(e,t,a){"use strict";a.d(t,"a",(function(){return v}));var i=a("b85c"),n=a("1da1"),r=a("d4ec"),o=a("bee2"),c=a("262e"),s=a("2caf"),l=(a("96cf"),a("b0c0"),a("498a"),a("ac1f"),a("1276"),a("9ab4")),u=a("6fc5"),d=a("981a"),h=a("5581"),p=a("0613"),m=a("afbc"),f=a("8ad0"),b=a("e741"),g=function(e){Object(c["a"])(a,e);var t=Object(s["a"])(a);function a(){var e;return Object(r["a"])(this,a),e=t.apply(this,arguments),e.token=Object(h["d"])()||"",e.name="",e.avatar="",e.introduction="",e.roles=[],e.permissions=[],e.email="",e.department="",e.deptname="",e.level=999,e.sex="0",e}return Object(o["a"])(a,[{key:"Login",value:function(){var e=Object(n["a"])(regeneratorRuntime.mark((function e(t){var a,i,n,r;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return a=t.username,i=t.password,a=a.trim(),e.next=4,Object(d["h"])({username:a,password:i});case 4:n=e.sent,r=n.data,Object(h["i"])(r.token),this.SET_TOKEN(r.token);case 8:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"ResetToken",value:function(){Object(h["e"])(),this.SET_TOKEN(""),this.SET_ROLES([]),this.SET_PERMISSIONS([])}},{key:"GetUserInfo",value:function(){var e=Object(n["a"])(regeneratorRuntime.mark((function e(){var t,a,i,n,r,o,c,s,l,u,h;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(""!==this.token){e.next=2;break}throw Error("GetUserInfo: token is undefined!");case 2:return e.next=4,Object(d["f"])({});case 4:if(t=e.sent,a=t.data,a){e.next=8;break}throw Error("Verification failed, please Login again.");case 8:if(i=a.roles,n=a.showname,r=a.avatar,o=a.introduction,c=a.permissions,s=a.department,l=a.level,u=a.deptname,h=a.sex,i&&!(i.length<=0)){e.next=11;break}throw Error("GetUserInfo: roles must be a non-null array!");case 11:this.SET_ROLES(i),this.SET_NAME(n),this.SET_AVATAR(r),this.SET_INTRODUCTION(o),this.SET_PERMISSIONS(c),this.SET_DEPARTMENT(s),this.SET_LEVEL(l),this.SET_DEPTNAME(u),this.SET_SEX(h);case 20:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"UpdateInfo",value:function(){var e=Object(n["a"])(regeneratorRuntime.mark((function e(t){var a,i,n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:a=t.showname,i=t.sex,n=t.avatar,this.SET_NAME(a),this.SET_SEX(i),this.SET_AVATAR(n);case 4:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"ChangeRoles",value:function(){var e=Object(n["a"])(regeneratorRuntime.mark((function e(t){var a;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return a=t+"-token",this.SET_TOKEN(a),Object(h["i"])(a),e.next=5,this.GetUserInfo();case 5:Object(m["d"])(),f["a"].GenerateRoutes(this.roles),m["c"].addRoutes(f["a"].dynamicRoutes),b["a"].delAllViews();case 9:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"LogOut",value:function(){var e=Object(n["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(""!==this.token){e.next=2;break}throw Error("LogOut: token is undefined!");case 2:return e.next=4,Object(d["i"])();case 4:Object(h["e"])(),this.SET_TOKEN(""),this.SET_ROLES([]),this.SET_PERMISSIONS([]),this.SET_DEPARTMENT("");case 9:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"SET_TOKEN",value:function(e){this.token=e}},{key:"SET_NAME",value:function(e){this.name=e}},{key:"SET_AVATAR",value:function(e){this.avatar=e}},{key:"SET_INTRODUCTION",value:function(e){this.introduction=e}},{key:"SET_ROLES",value:function(e){this.roles=e}},{key:"SET_DEPARTMENT",value:function(e){this.department=e}},{key:"SET_DEPTNAME",value:function(e){this.deptname=e}},{key:"SET_SEX",value:function(e){this.sex=e}},{key:"SET_LEVEL",value:function(e){this.level=e}},{key:"SET_PERMISSIONS",value:function(e){var t,a=[],n=Object(i["a"])(e);try{for(n.s();!(t=n.n()).done;){var r=t.value;"*"===r?a.push(["*","*"]):a.push(r.split(":"))}}catch(o){n.e(o)}finally{n.f()}this.permissions=a}}]),a}(u["d"]);Object(l["a"])([u["a"]],g.prototype,"Login",null),Object(l["a"])([u["a"]],g.prototype,"ResetToken",null),Object(l["a"])([u["a"]],g.prototype,"GetUserInfo",null),Object(l["a"])([u["a"]],g.prototype,"UpdateInfo",null),Object(l["a"])([u["a"]],g.prototype,"ChangeRoles",null),Object(l["a"])([u["a"]],g.prototype,"LogOut",null),Object(l["a"])([u["c"]],g.prototype,"SET_TOKEN",null),Object(l["a"])([u["c"]],g.prototype,"SET_NAME",null),Object(l["a"])([u["c"]],g.prototype,"SET_AVATAR",null),Object(l["a"])([u["c"]],g.prototype,"SET_INTRODUCTION",null),Object(l["a"])([u["c"]],g.prototype,"SET_ROLES",null),Object(l["a"])([u["c"]],g.prototype,"SET_DEPARTMENT",null),Object(l["a"])([u["c"]],g.prototype,"SET_DEPTNAME",null),Object(l["a"])([u["c"]],g.prototype,"SET_SEX",null),Object(l["a"])([u["c"]],g.prototype,"SET_LEVEL",null),Object(l["a"])([u["c"]],g.prototype,"SET_PERMISSIONS",null),g=Object(l["a"])([Object(u["b"])({dynamic:!0,store:p["a"],name:"user"})],g);var v=Object(u["e"])(g)},a1de:function(e,t,a){e.exports={menuBg:"#304156",menuText:"#bfcbd9",menuActiveText:"#409eff"}},ac1a:function(e,t,a){"use strict";a.d(t,"b",(function(){return i})),a.d(t,"a",(function(){return m}));var i,n=a("d4ec"),r=a("bee2"),o=a("262e"),c=a("2caf"),s=a("9ab4"),l=a("6fc5"),u=a("5581"),d=a("6ebf"),h=a("0613");(function(e){e[e["Mobile"]=0]="Mobile",e[e["Desktop"]=1]="Desktop"})(i||(i={}));var p=function(e){Object(o["a"])(a,e);var t=Object(c["a"])(a);function a(){var e;return Object(n["a"])(this,a),e=t.apply(this,arguments),e.sidebar={opened:"closed"!==Object(u["b"])(),withoutAnimation:!1},e.device=i.Desktop,e.language=Object(d["b"])(),e.size=Object(u["c"])()||"medium",e}return Object(r["a"])(a,[{key:"TOGGLE_SIDEBAR",value:function(e){this.sidebar.opened=!this.sidebar.opened,this.sidebar.withoutAnimation=e,this.sidebar.opened?Object(u["g"])("opened"):Object(u["g"])("closed")}},{key:"CLOSE_SIDEBAR",value:function(e){this.sidebar.opened=!1,this.sidebar.withoutAnimation=e,Object(u["g"])("closed")}},{key:"TOGGLE_DEVICE",value:function(e){this.device=e}},{key:"SET_LANGUAGE",value:function(e){this.language=e,Object(u["f"])(this.language)}},{key:"SET_SIZE",value:function(e){this.size=e,Object(u["h"])(this.size)}},{key:"ToggleSideBar",value:function(e){this.TOGGLE_SIDEBAR(e)}},{key:"CloseSideBar",value:function(e){this.CLOSE_SIDEBAR(e)}},{key:"ToggleDevice",value:function(e){this.TOGGLE_DEVICE(e)}},{key:"SetLanguage",value:function(e){this.SET_LANGUAGE(e)}},{key:"SetSize",value:function(e){this.SET_SIZE(e)}}]),a}(l["d"]);Object(s["a"])([l["c"]],p.prototype,"TOGGLE_SIDEBAR",null),Object(s["a"])([l["c"]],p.prototype,"CLOSE_SIDEBAR",null),Object(s["a"])([l["c"]],p.prototype,"TOGGLE_DEVICE",null),Object(s["a"])([l["c"]],p.prototype,"SET_LANGUAGE",null),Object(s["a"])([l["c"]],p.prototype,"SET_SIZE",null),Object(s["a"])([l["a"]],p.prototype,"ToggleSideBar",null),Object(s["a"])([l["a"]],p.prototype,"CloseSideBar",null),Object(s["a"])([l["a"]],p.prototype,"ToggleDevice",null),Object(s["a"])([l["a"]],p.prototype,"SetLanguage",null),Object(s["a"])([l["a"]],p.prototype,"SetSize",null),p=Object(s["a"])([Object(l["b"])({dynamic:!0,store:h["a"],name:"app"})],p);var m=Object(l["e"])(p)},ad9d:function(e,t,a){"use strict";a("e15f")},adc6:function(e,t,a){"use strict";a("232e")},afbc:function(e,t,a){"use strict";a.d(t,"b",(function(){return Ta})),a.d(t,"a",(function(){return Oa})),a.d(t,"d",(function(){return Sa}));a("d3b7"),a("3ca3"),a("ddb0");var i=a("2b0e"),n=a("8c4f"),r=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"app-wrapper",class:e.classObj},[e.classObj.mobile&&e.sidebar.opened?a("div",{staticClass:"drawer-bg",on:{click:e.handleClickOutside}}):e._e(),a("sidebar",{staticClass:"sidebar-container"}),a("div",{staticClass:"main-container",class:{hasTagsView:e.showTagsView}},[a("div",{class:{"fixed-header":e.fixedHeader}},[a("navbar"),e.showTagsView?a("tags-view"):e._e()],1),a("app-main"),e.showSettings?a("right-panel",[a("settings")],1):e._e()],1)],1)},o=[],c=a("d4ec"),s=a("bee2"),l=a("262e"),u=a("2caf"),d=a("9ab4"),h=a("1b40"),p=a("2fe1"),m=a("ac1a"),f=a("7383"),b=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("section",{staticClass:"app-main"},[a("transition",{attrs:{name:"fade-transform",mode:"out-in"}},[a("keep-alive",{attrs:{include:e.cachedViews}},[a("router-view",{key:e.key})],1)],1)],1)},g=[],v=a("e741"),y=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){return Object(c["a"])(this,a),t.apply(this,arguments)}return Object(s["a"])(a,[{key:"cachedViews",get:function(){return v["a"].cachedViews}},{key:"key",get:function(){return this.$route.path}}]),a}(h["c"]);y=Object(d["a"])([Object(h["a"])({name:"AppMain"})],y);var w=y,k=w,T=(a("7176"),a("0c7c")),O=Object(T["a"])(k,b,g,!1,null,"d4c70f86",null),x=O.exports,E=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"navbar"},[a("hamburger",{staticClass:"hamburger-container",attrs:{id:"hamburger-container","is-active":e.sidebar.opened},on:{"toggle-click":e.toggleSideBar}}),a("breadcrumb",{staticClass:"breadcrumb-container",attrs:{id:"breadcrumb-container"}}),a("div",{staticClass:"right-menu"},["mobile"!==e.device?[a("header-search",{staticClass:"right-menu-item"}),a("error-log",{staticClass:"errLog-container right-menu-item hover-effect"}),a("screenfull",{staticClass:"right-menu-item hover-effect"}),a("el-tooltip",{attrs:{content:e.$t("navbar.size"),effect:"dark",placement:"bottom"}},[a("size-select",{staticClass:"right-menu-item hover-effect"})],1),a("lang-select",{staticClass:"right-menu-item hover-effect"})]:e._e(),a("el-dropdown",{staticClass:"avatar-container right-menu-item hover-effect",attrs:{trigger:"click"}},[a("div",{staticClass:"avatar-wrapper"},[a("img",{staticClass:"user-avatar",attrs:{src:e.avatar+"?imageView2/1/w/80/h/80"}}),a("i",{staticClass:"el-icon-caret-bottom"})]),a("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[a("router-link",{attrs:{to:"/"}},[a("el-dropdown-item",[e._v(" "+e._s(e.$t("navbar.dashboard"))+" ")])],1),a("router-link",{attrs:{to:"/profile/"}},[a("el-dropdown-item",[e._v(" "+e._s(e.$t("navbar.profile"))+" ")])],1),a("router-link",{attrs:{to:"/password"}},[a("el-dropdown-item",[e._v(" "+e._s(e.$t("navbar.password"))+" ")])],1),a("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(t){return e.logout(t)}}},[a("span",{staticStyle:{display:"block"}},[e._v(" "+e._s(e.$t("navbar.logOut"))+" ")])])],1)],1)],2)],1)},S=[],_=a("1da1"),j=(a("96cf"),a("0d03"),a("25f0"),a("9dba")),z=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-breadcrumb",{staticClass:"app-breadcrumb",attrs:{separator:"/"}},[a("transition-group",{attrs:{name:"breadcrumb"}},e._l(e.breadcrumbs,(function(t,i){return a("el-breadcrumb-item",{key:t.path},["noredirect"===t.redirect||i===e.breadcrumbs.length-1?a("span",{staticClass:"no-redirect"},[e._v(e._s(e.$t("route."+t.meta.title)))]):a("a",{on:{click:function(a){return a.preventDefault(),e.handleLink(t)}}},[e._v(e._s(e.$t("route."+t.meta.title)))])])})),1)],1)},C=[],V=(a("2ca0"),a("4de4"),a("99af"),a("b0c0"),a("498a"),a("84d6")),L=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){var e;return Object(c["a"])(this,a),e=t.apply(this,arguments),e.breadcrumbs=[],e}return Object(s["a"])(a,[{key:"onRouteChange",value:function(e){e.path.startsWith("/redirect/")||this.getBreadcrumb()}},{key:"created",value:function(){this.getBreadcrumb()}},{key:"getBreadcrumb",value:function(){var e=this.$route.matched.filter((function(e){return e.meta&&e.meta.title})),t=e[0];this.isDashboard(t)||(e=[{path:"/dashboard",meta:{title:"dashboard"}}].concat(e)),this.breadcrumbs=e.filter((function(e){return e.meta&&e.meta.title&&!1!==e.meta.breadcrumb}))}},{key:"isDashboard",value:function(e){var t=e&&e.name;return!!t&&t.trim().toLocaleLowerCase()==="Dashboard".toLocaleLowerCase()}},{key:"pathCompile",value:function(e){var t=this.$route.params,a=Object(V["a"])(e);return a(t)}},{key:"handleLink",value:function(e){var t=e.redirect,a=e.path;t?this.$router.push(t)["catch"]((function(e){console.warn(e)})):this.$router.push(this.pathCompile(a))["catch"]((function(e){console.warn(e)}))}}]),a}(h["c"]);Object(d["a"])([Object(h["d"])("$route")],L.prototype,"onRouteChange",null),L=Object(d["a"])([Object(h["a"])({name:"Breadcrumb"})],L);var M=L,H=M,A=(a("4155"),Object(T["a"])(H,z,C,!1,null,"48aca8f5",null)),P=A.exports,D=function(){var e=this,t=e.$createElement,a=e._self._c||t;return e.errorLogs.length>0?a("div",[a("el-badge",{staticStyle:{"line-height":"25px","margin-top":"-5px"},attrs:{"is-dot":!0},nativeOn:{click:function(t){e.dialogTableVisible=!0}}},[a("el-button",{staticStyle:{padding:"8px 10px"},attrs:{size:"small",type:"danger"}},[a("svg-icon",{attrs:{name:"bug"}})],1)],1),a("el-dialog",{attrs:{visible:e.dialogTableVisible,width:"80%","append-to-body":""},on:{"update:visible":function(t){e.dialogTableVisible=t}}},[a("div",{attrs:{slot:"title"},slot:"title"},[a("span",{staticStyle:{"padding-right":"10px"}},[e._v("Error Log")]),a("el-button",{attrs:{size:"mini",type:"primary",icon:"el-icon-delete"},on:{click:e.clearAll}},[e._v(" Clear All ")])],1),a("el-table",{attrs:{data:e.errorLogs,border:""}},[a("el-table-column",{attrs:{label:"Message"},scopedSlots:e._u([{key:"default",fn:function(t){var i=t.row;return[a("div",[a("span",{staticClass:"message-title"},[e._v("Msg:")]),a("el-tag",{attrs:{type:"danger"}},[e._v(" "+e._s(i.err.message)+" ")])],1),a("br"),a("div",[a("span",{staticClass:"message-title",staticStyle:{"padding-right":"10px"}},[e._v("Info: ")]),a("el-tag",{attrs:{type:"warning"}},[e._v(" "+e._s(i.vm.$vnode.tag)+" error in "+e._s(i.info)+" ")])],1),a("br"),a("div",[a("span",{staticClass:"message-title",staticStyle:{"padding-right":"16px"}},[e._v("Url: ")]),a("el-tag",{attrs:{type:"success"}},[e._v(" "+e._s(i.url)+" ")])],1)]}}],null,!1,3134886942)}),a("el-table-column",{attrs:{label:"Stack"},scopedSlots:e._u([{key:"default",fn:function(t){var a=t.row;return[e._v(" "+e._s(a.err.stack)+" ")]}}],null,!1,284746202)})],1)],1)],1):e._e()},I=[],R=(a("a434"),a("6fc5")),B=a("0613"),$=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){var e;return Object(c["a"])(this,a),e=t.apply(this,arguments),e.logs=[],e}return Object(s["a"])(a,[{key:"ADD_ERROR_LOG",value:function(e){this.logs.push(e)}},{key:"CLEAR_ERROR_LOG",value:function(){this.logs.splice(0)}},{key:"AddErrorLog",value:function(e){this.ADD_ERROR_LOG(e)}},{key:"ClearErrorLog",value:function(){this.CLEAR_ERROR_LOG()}}]),a}(R["d"]);Object(d["a"])([R["c"]],$.prototype,"ADD_ERROR_LOG",null),Object(d["a"])([R["c"]],$.prototype,"CLEAR_ERROR_LOG",null),Object(d["a"])([R["a"]],$.prototype,"AddErrorLog",null),Object(d["a"])([R["a"]],$.prototype,"ClearErrorLog",null),$=Object(d["a"])([Object(R["b"])({dynamic:!0,store:B["a"],name:"errorLog"})],$);var N=Object(R["e"])($),q=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){var e;return Object(c["a"])(this,a),e=t.apply(this,arguments),e.dialogTableVisible=!1,e}return Object(s["a"])(a,[{key:"errorLogs",get:function(){return N.logs}},{key:"clearAll",value:function(){this.dialogTableVisible=!1,N.ClearErrorLog()}}]),a}(h["c"]);q=Object(d["a"])([Object(h["a"])({name:"ErrorLog"})],q);var G=q,F=G,W=(a("435a"),Object(T["a"])(F,D,I,!1,null,"72a28363",null)),U=W.exports,Z=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{class:[{"is-active":e.isActive}],on:{click:e.toggleClick}},[a("svg-icon",{attrs:{name:"hamburger",width:"20",height:"20"}})],1)},Q=[],K=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){return Object(c["a"])(this,a),t.apply(this,arguments)}return Object(s["a"])(a,[{key:"toggleClick",value:function(){this.$emit("toggle-click")}}]),a}(h["c"]);Object(d["a"])([Object(h["b"])({default:!1})],K.prototype,"isActive",void 0),K=Object(d["a"])([Object(h["a"])({name:"Hamburger"})],K);var Y=K,J=Y,X=(a("adc6"),Object(T["a"])(J,Z,Q,!1,null,"715ce9d0",null)),ee=X.exports,te=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"header-search",class:{show:e.show},attrs:{id:"header-search"}},[a("svg-icon",{staticClass:"search-icon",attrs:{name:"search"},on:{click:function(t){return t.stopPropagation(),e.click(t)}}}),a("el-select",{ref:"headerSearchSelect",staticClass:"header-search-select",attrs:{"remote-method":e.querySearch,filterable:"","default-first-option":"",remote:"",placeholder:"Search"},on:{change:e.change},model:{value:e.search,callback:function(t){e.search=t},expression:"search"}},e._l(e.options,(function(e){return a("el-option",{key:e.path,attrs:{value:e,label:e.meta.title.join(" > ")}})})),1)],1)},ae=[],ie=a("2909"),ne=a("b85c"),re=(a("ac1f"),a("841c"),a("d81d"),a("df7c")),oe=a.n(re),ce=a("6062"),se=a("8ad0"),le=a("6ebf"),ue=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){var e;return Object(c["a"])(this,a),e=t.apply(this,arguments),e.search="",e.show=!1,e.options=[],e.searchPool=[],e}return Object(s["a"])(a,[{key:"routes",get:function(){return se["a"].routes}},{key:"lang",get:function(){return m["a"].language}},{key:"onLangChange",value:function(){this.searchPool=this.generateRoutes(this.routes)}},{key:"onRoutesChange",value:function(){this.searchPool=this.generateRoutes(this.routes)}},{key:"onSearchPoolChange",value:function(e){this.initFuse(e)}},{key:"onShowChange",value:function(e){e?document.body.addEventListener("click",this.close):document.body.removeEventListener("click",this.close)}},{key:"mounted",value:function(){this.searchPool=this.generateRoutes(this.routes)}},{key:"click",value:function(){this.show=!this.show,this.show&&this.$refs.headerSearchSelect&&this.$refs.headerSearchSelect.focus()}},{key:"close",value:function(){this.$refs.headerSearchSelect&&this.$refs.headerSearchSelect.blur(),this.options=[],this.show=!1}},{key:"change",value:function(e){var t=this;this.$router.push(e.path)["catch"]((function(e){console.warn(e)})),this.search="",this.options=[],this.$nextTick((function(){t.show=!1}))}},{key:"initFuse",value:function(e){this.fuse=new ce["a"](e,{shouldSort:!0,threshold:.4,location:0,distance:100,minMatchCharLength:1,keys:[{name:"title",weight:.7},{name:"path",weight:.3}]})}},{key:"generateRoutes",value:function(e){var t,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"/",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],n=[],r=Object(ne["a"])(e);try{for(r.s();!(t=r.n()).done;){var o=t.value;if(!o.meta||!o.meta.hidden){var c={path:oe.a.resolve(a,o.path),meta:{title:Object(ie["a"])(i)}};if(o.meta&&o.meta.title){var s=le["a"].t("route.".concat(o.meta.title)).toString();c.meta.title=[].concat(Object(ie["a"])(c.meta.title),[s]),"noRedirect"!==o.redirect&&n.push(c)}if(o.children){var l=this.generateRoutes(o.children,c.path,c.meta.title);l.length>=1&&(n=[].concat(Object(ie["a"])(n),Object(ie["a"])(l)))}}}}catch(u){r.e(u)}finally{r.f()}return n}},{key:"querySearch",value:function(e){""!==e?this.fuse&&(this.options=this.fuse.search(e).map((function(e){return e.item}))):this.options=[]}}]),a}(h["c"]);Object(d["a"])([Object(h["d"])("lang")],ue.prototype,"onLangChange",null),Object(d["a"])([Object(h["d"])("routes")],ue.prototype,"onRoutesChange",null),Object(d["a"])([Object(h["d"])("searchPool")],ue.prototype,"onSearchPoolChange",null),Object(d["a"])([Object(h["d"])("show")],ue.prototype,"onShowChange",null),ue=Object(d["a"])([Object(h["a"])({name:"HeaderSearch"})],ue);var de=ue,he=de,pe=(a("d2c9"),Object(T["a"])(he,te,ae,!1,null,"ed2ef868",null)),me=pe.exports,fe=a("1131"),be=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{attrs:{id:"screenfull"}},[a("svg-icon",{attrs:{name:e.isFullscreen?"exit-fullscreen":"fullscreen"},on:{click:e.click}})],1)},ge=[],ve=a("93bf"),ye=a.n(ve),we=ye.a,ke=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){var e;return Object(c["a"])(this,a),e=t.apply(this,arguments),e.isFullscreen=!1,e}return Object(s["a"])(a,[{key:"mounted",value:function(){we.isEnabled&&we.on("change",this.change)}},{key:"beforeDestory",value:function(){we.isEnabled&&we.off("change",this.change)}},{key:"change",value:function(){we.isEnabled&&(this.isFullscreen=we.isFullscreen)}},{key:"click",value:function(){if(!we.isEnabled)return this.$message({message:"you browser can not work",type:"warning"}),!1;we.toggle()}}]),a}(h["c"]);ke=Object(d["a"])([Object(h["a"])({name:"Screenfull"})],ke);var Te=ke,Oe=Te,xe=Object(T["a"])(Oe,be,ge,!1,null,null,null),Ee=xe.exports,Se=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-dropdown",{attrs:{id:"size-select",trigger:"click"},on:{command:e.handleSetSize}},[a("div",[a("svg-icon",{staticClass:"size-icon",attrs:{name:"size"}})],1),a("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},e._l(e.sizeOptions,(function(t){return a("el-dropdown-item",{key:t.value,attrs:{disabled:e.size===t.value,command:t.value}},[e._v(" "+e._s(t.label)+" ")])})),1)],1)},_e=[],je=(a("5319"),function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){var e;return Object(c["a"])(this,a),e=t.apply(this,arguments),e.sizeOptions=[{label:"Default",value:"default"},{label:"Medium",value:"medium"},{label:"Small",value:"small"},{label:"Mini",value:"mini"}],e}return Object(s["a"])(a,[{key:"size",get:function(){return m["a"].size}},{key:"handleSetSize",value:function(e){this.$ELEMENT.size=e,m["a"].SetSize(e),this.refreshView(),this.$message({message:"Switch Size Success",type:"success"})}},{key:"refreshView",value:function(){var e=this;v["a"].delAllCachedViews();var t=this.$route.fullPath;this.$nextTick((function(){e.$router.replace({path:"/redirect"+t})["catch"]((function(e){console.warn(e)}))}))}}]),a}(h["c"]));je=Object(d["a"])([Object(h["a"])({name:"SizeSelect"})],je);var ze=je,Ce=ze,Ve=Object(T["a"])(Ce,Se,_e,!1,null,null,null),Le=Ve.exports,Me=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){return Object(c["a"])(this,a),t.apply(this,arguments)}return Object(s["a"])(a,[{key:"sidebar",get:function(){return m["a"].sidebar}},{key:"device",get:function(){return m["a"].device.toString()}},{key:"avatar",get:function(){return j["a"].avatar}},{key:"toggleSideBar",value:function(){m["a"].ToggleSideBar(!1)}},{key:"logout",value:function(){var e=Object(_["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,j["a"].LogOut();case 2:this.$router.push("/login?redirect=".concat(this.$route.fullPath))["catch"]((function(e){console.warn(e)}));case 3:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()}]),a}(h["c"]);Me=Object(d["a"])([Object(h["a"])({name:"Navbar",components:{Breadcrumb:P,ErrorLog:U,Hamburger:ee,HeaderSearch:me,LangSelect:fe["a"],Screenfull:Ee,SizeSelect:Le}})],Me);var He=Me,Ae=He,Pe=(a("ad9d"),Object(T["a"])(Ae,E,S,!1,null,"1a173b7f",null)),De=Pe.exports,Ie=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"drawer-container"},[a("div",[a("h3",{staticClass:"drawer-title"},[e._v(" "+e._s(e.$t("settings.title"))+" ")]),a("div",{staticClass:"drawer-item"},[a("span",[e._v(e._s(e.$t("settings.theme")))]),a("theme-picker",{staticStyle:{float:"right",height:"26px",margin:"-3px 8px 0 0"},on:{change:e.themeChange}})],1),a("div",{staticClass:"drawer-item"},[a("span",[e._v(e._s(e.$t("settings.showTagsView")))]),a("el-switch",{staticClass:"drawer-switch",model:{value:e.showTagsView,callback:function(t){e.showTagsView=t},expression:"showTagsView"}})],1),a("div",{staticClass:"drawer-item"},[a("span",[e._v(e._s(e.$t("settings.showSidebarLogo")))]),a("el-switch",{staticClass:"drawer-switch",model:{value:e.showSidebarLogo,callback:function(t){e.showSidebarLogo=t},expression:"showSidebarLogo"}})],1),a("div",{staticClass:"drawer-item"},[a("span",[e._v(e._s(e.$t("settings.fixedHeader")))]),a("el-switch",{staticClass:"drawer-switch",model:{value:e.fixedHeader,callback:function(t){e.fixedHeader=t},expression:"fixedHeader"}})],1),a("div",{staticClass:"drawer-item"},[a("span",[e._v(e._s(e.$t("settings.sidebarTextTheme")))]),a("el-switch",{staticClass:"drawer-switch",model:{value:e.sidebarTextTheme,callback:function(t){e.sidebarTextTheme=t},expression:"sidebarTextTheme"}})],1)])])},Re=[],Be=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-color-picker",{staticClass:"theme-picker",attrs:{predefine:["#409EFF","#1890ff","#304156","#212121","#11a983","#13c2c2","#6959CD","#f5222d"],"popper-class":"theme-picker-dropdown"},model:{value:e.theme,callback:function(t){e.theme=t},expression:"theme"}})},$e=[],Ne=(a("fb6a"),a("4d63"),a("4160"),a("159b"),a("e25e"),a("a15b"),a("a9e3"),a("b680"),a("f6f8").version),qe="#409EFF",Ge=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){var e;return Object(c["a"])(this,a),e=t.apply(this,arguments),e.chalk="",e.theme="",e}return Object(s["a"])(a,[{key:"defaultTheme",get:function(){return f["a"].theme}},{key:"onDefaultThemeChange",value:function(e){this.theme=e}},{key:"onThemeChange",value:function(){var e=Object(_["a"])(regeneratorRuntime.mark((function e(t){var a,i,n,r,o,c,s,l,u=this;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(t){e.next=2;break}return e.abrupt("return");case 2:if(a=this.chalk?this.theme:qe,i=this.getThemeCluster(t.replace("#","")),n=this.getThemeCluster(a.replace("#","")),r=this.$message({message:" Compiling the theme",customClass:"theme-message",type:"success",duration:0,iconClass:"el-icon-loading"}),this.chalk){e.next=10;break}return o="https://unpkg.com/element-ui@".concat(Ne,"/lib/theme-chalk/index.css"),e.next=10,this.getCSSString(o,"chalk");case 10:c=function(e,t){return function(){var a=u.getThemeCluster(qe.replace("#","")),n=u.updateStyle(u[e],a,i),r=document.getElementById(t);r||(r=document.createElement("style"),r.setAttribute("id",t),document.head.appendChild(r)),r.innerText=n}},s=c("chalk","chalk-style"),s(),l=[].slice.call(document.querySelectorAll("style")),l=l.filter((function(e){var t=e.innerText;return new RegExp(a,"i").test(t)&&!/Chalk Variables/.test(t)})),l.forEach((function(e){var t=e.innerText;"string"===typeof t&&(e.innerText=u.updateStyle(t,n,i))})),this.$emit("change",t),r.close();case 18:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"updateStyle",value:function(e,t,a){var i=e;return t.forEach((function(e,t){i=i.replace(new RegExp(e,"ig"),a[t])})),i}},{key:"getCSSString",value:function(e,t){var a=this;return new Promise((function(i){var n=new XMLHttpRequest;n.onreadystatechange=function(){4===n.readyState&&200===n.status&&(a[t]=n.responseText.replace(/@font-face{[^}]+}/,""),i())},n.open("GET",e),n.send()}))}},{key:"getThemeCluster",value:function(e){for(var t=function(e,t){var a=parseInt(e.slice(0,2),16),i=parseInt(e.slice(2,4),16),n=parseInt(e.slice(4,6),16);return 0===t?[a,i,n].join(","):(a+=Math.round(t*(255-a)),i+=Math.round(t*(255-i)),n+=Math.round(t*(255-n)),"#".concat(a.toString(16)).concat(i.toString(16)).concat(n.toString(16)))},a=function(e,t){var a=parseInt(e.slice(0,2),16),i=parseInt(e.slice(2,4),16),n=parseInt(e.slice(4,6),16);return a=Math.round((1-t)*a),i=Math.round((1-t)*i),n=Math.round((1-t)*n),"#".concat(a.toString(16)).concat(i.toString(16)).concat(n.toString(16))},i=[e],n=0;n<=9;n++)i.push(t(e,Number((n/10).toFixed(2))));return i.push(a(e,.1)),i}}]),a}(h["c"]);Object(d["a"])([Object(h["d"])("defaultTheme",{immediate:!0})],Ge.prototype,"onDefaultThemeChange",null),Object(d["a"])([Object(h["d"])("theme")],Ge.prototype,"onThemeChange",null),Ge=Object(d["a"])([Object(h["a"])({name:"ThemePicker"})],Ge);var Fe=Ge,We=Fe,Ue=(a("6fa2"),Object(T["a"])(We,Be,$e,!1,null,null,null)),Ze=Ue.exports,Qe=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){return Object(c["a"])(this,a),t.apply(this,arguments)}return Object(s["a"])(a,[{key:"fixedHeader",get:function(){return f["a"].fixedHeader},set:function(e){f["a"].ChangeSetting({key:"fixedHeader",value:e})}},{key:"showTagsView",get:function(){return f["a"].showTagsView},set:function(e){f["a"].ChangeSetting({key:"showTagsView",value:e})}},{key:"showSidebarLogo",get:function(){return f["a"].showSidebarLogo},set:function(e){f["a"].ChangeSetting({key:"showSidebarLogo",value:e})}},{key:"sidebarTextTheme",get:function(){return f["a"].sidebarTextTheme},set:function(e){f["a"].ChangeSetting({key:"sidebarTextTheme",value:e})}},{key:"themeChange",value:function(e){f["a"].ChangeSetting({key:"theme",value:e})}}]),a}(h["c"]);Qe=Object(d["a"])([Object(h["a"])({name:"Settings",components:{ThemePicker:Ze}})],Qe);var Ke=Qe,Ye=Ke,Je=(a("017a"),Object(T["a"])(Ye,Ie,Re,!1,null,"f76a8f60",null)),Xe=Je.exports,et=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{class:{"has-logo":e.showLogo}},[e.showLogo?a("sidebar-logo",{attrs:{collapse:e.isCollapse}}):e._e(),a("el-scrollbar",{attrs:{"wrap-class":"scrollbar-wrapper"}},[a("el-menu",{attrs:{"default-active":e.activeMenu,collapse:e.isCollapse,"background-color":e.variables.menuBg,"text-color":e.variables.menuText,"active-text-color":e.menuActiveTextColor,"unique-opened":!1,"collapse-transition":!1,mode:"vertical"}},e._l(e.routes,(function(t){return a("sidebar-item",{key:t.path,attrs:{item:t,"base-path":t.path,"is-collapse":e.isCollapse}})})),1)],1)],1)},tt=[],at=function(){var e=this,t=e.$createElement,a=e._self._c||t;return e.item.meta&&e.item.meta.hidden?e._e():a("div",{class:[e.isCollapse?"simple-mode":"full-mode",{"first-level":e.isFirstLevel}]},[e.alwaysShowRootMenu||!e.theOnlyOneChild||e.theOnlyOneChild.children?a("el-submenu",{attrs:{index:e.resolvePath(e.item.path),"popper-append-to-body":""}},[a("template",{slot:"title"},[e.item.meta&&e.item.meta.icon?a("svg-icon",{attrs:{name:e.item.meta.icon}}):e._e(),e.item.meta&&e.item.meta.elicon?a("i",{class:e.item.meta.elicon}):e._e(),e.item.meta&&e.item.meta.title?a("span",{attrs:{slot:"title"},slot:"title"},[e._v(e._s(e.$t("route."+e.item.meta.title)))]):e._e()],1),e.item.children?e._l(e.item.children,(function(t){return a("sidebar-item",{key:t.path,staticClass:"nest-menu",attrs:{item:t,"is-collapse":e.isCollapse,"is-first-level":!1,"base-path":e.resolvePath(t.path)}})})):e._e()],2):[e.theOnlyOneChild.meta?a("sidebar-item-link",{attrs:{to:e.resolvePath(e.theOnlyOneChild.path)}},[a("el-menu-item",{class:{"submenu-title-noDropdown":e.isFirstLevel},attrs:{index:e.resolvePath(e.theOnlyOneChild.path)}},[e.theOnlyOneChild.meta.icon?a("svg-icon",{attrs:{name:e.theOnlyOneChild.meta.icon}}):e._e(),e.item.meta&&e.item.meta.elicon?a("i",{class:e.item.meta.elicon}):e._e(),e.theOnlyOneChild.meta.title?a("span",{attrs:{slot:"title"},slot:"title"},[e._v(e._s(e.$t("route."+e.theOnlyOneChild.meta.title)))]):e._e()],1)],1):e._e()]],2)},it=[],nt=a("5530"),rt=(a("c975"),a("277d"),function(e){return/^(https?:|mailto:|tel:)/.test(e)}),ot=function(){var e=this,t=e.$createElement,a=e._self._c||t;return e.isExternal(e.to)?a("a",{attrs:{href:e.to,target:"_blank",rel:"noopener"}},[e._t("default")],2):a("router-link",{attrs:{to:e.to}},[e._t("default")],2)},ct=[],st=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){var e;return Object(c["a"])(this,a),e=t.apply(this,arguments),e.isExternal=rt,e}return a}(h["c"]);Object(d["a"])([Object(h["b"])({required:!0})],st.prototype,"to",void 0),st=Object(d["a"])([Object(h["a"])({name:"SidebarItemLink"})],st);var lt=st,ut=lt,dt=Object(T["a"])(ut,ot,ct,!1,null,null,null),ht=dt.exports,pt=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){return Object(c["a"])(this,a),t.apply(this,arguments)}return Object(s["a"])(a,[{key:"alwaysShowRootMenu",get:function(){return!(!this.item.meta||!this.item.meta.alwaysShow)}},{key:"showingChildNumber",get:function(){if(this.item.children){var e=this.item.children.filter((function(e){return!e.meta||!e.meta.hidden}));return e.length}return 0}},{key:"theOnlyOneChild",get:function(){if(this.showingChildNumber>1)return null;if(this.item.children){var e,t=Object(ne["a"])(this.item.children);try{for(t.s();!(e=t.n()).done;){var a=e.value;if(!a.meta||!a.meta.hidden)return a}}catch(i){t.e(i)}finally{t.f()}}return Object(nt["a"])(Object(nt["a"])({},this.item),{},{path:""})}},{key:"resolvePath",value:function(e){return rt(e)?e:rt(this.basePath)?this.basePath:oe.a.resolve(this.basePath,e)}}]),a}(h["c"]);Object(d["a"])([Object(h["b"])({required:!0})],pt.prototype,"item",void 0),Object(d["a"])([Object(h["b"])({default:!1})],pt.prototype,"isCollapse",void 0),Object(d["a"])([Object(h["b"])({default:!0})],pt.prototype,"isFirstLevel",void 0),Object(d["a"])([Object(h["b"])({default:""})],pt.prototype,"basePath",void 0),pt=Object(d["a"])([Object(h["a"])({name:"SidebarItem",components:{SidebarItemLink:ht}})],pt);var mt=pt,ft=mt,bt=(a("d729"),a("2ca8"),Object(T["a"])(ft,at,it,!1,null,"35bc604c",null)),gt=bt.exports,vt=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"sidebar-logo-container",class:{collapse:e.collapse}},[a("transition",{attrs:{name:"sidebarLogoFade"}},[e.collapse?a("router-link",{key:"collapse",staticClass:"sidebar-logo-link",attrs:{to:"/"}},[a("img",{staticClass:"sidebar-logo",attrs:{src:"favicon.ico"}})]):a("router-link",{key:"expand",staticClass:"sidebar-logo-link",attrs:{to:"/"}},[a("img",{staticClass:"sidebar-logo",attrs:{src:"favicon.ico"}}),a("h1",{staticClass:"sidebar-title"},[e._v(" "+e._s(e.title)+" ")])])],1)],1)},yt=[],wt=a("8b99"),kt=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){var e;return Object(c["a"])(this,a),e=t.apply(this,arguments),e.title=wt["a"].title,e}return a}(h["c"]);Object(d["a"])([Object(h["b"])({required:!0})],kt.prototype,"collapse",void 0),kt=Object(d["a"])([Object(h["a"])({name:"SidebarLogo"})],kt);var Tt=kt,Ot=Tt,xt=(a("02d6"),Object(T["a"])(Ot,vt,yt,!1,null,"7847d0d3",null)),Et=xt.exports,St=a("a1de"),_t=a.n(St),jt=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){return Object(c["a"])(this,a),t.apply(this,arguments)}return Object(s["a"])(a,[{key:"sidebar",get:function(){return m["a"].sidebar}},{key:"routes",get:function(){return se["a"].routes}},{key:"showLogo",get:function(){return f["a"].showSidebarLogo}},{key:"menuActiveTextColor",get:function(){return f["a"].sidebarTextTheme?f["a"].theme:_t.a.menuActiveText}},{key:"variables",get:function(){return _t.a}},{key:"activeMenu",get:function(){var e=this.$route,t=e.meta,a=e.path;return t.activeMenu?t.activeMenu:a}},{key:"isCollapse",get:function(){return!this.sidebar.opened}}]),a}(h["c"]);jt=Object(d["a"])([Object(h["a"])({name:"SideBar",components:{SidebarItem:gt,SidebarLogo:Et}})],jt);var zt=jt,Ct=zt,Vt=(a("023d"),a("b567"),Object(T["a"])(Ct,et,tt,!1,null,"061fdbbc",null)),Lt=Vt.exports,Mt=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"tags-view-container",attrs:{id:"tags-view-container"}},[a("scroll-pane",{ref:"scrollPane",staticClass:"tags-view-wrapper",on:{scroll:e.handleScroll}},e._l(e.visitedViews,(function(t){return a("router-link",{key:t.path,ref:"tag",refInFor:!0,staticClass:"tags-view-item",class:e.isActive(t)?"active":"",attrs:{to:{path:t.path,query:t.query,fullPath:t.fullPath},tag:"span"},nativeOn:{mouseup:function(a){if("button"in a&&1!==a.button)return null;!e.isAffix(t)&&e.closeSelectedTag(t)},contextmenu:function(a){return a.preventDefault(),e.openMenu(t,a)}}},[e._v(" "+e._s(e.$t("route."+t.meta.title))+" "),e.isAffix(t)?e._e():a("span",{staticClass:"el-icon-close",on:{click:function(a){return a.preventDefault(),a.stopPropagation(),e.closeSelectedTag(t)}}})])})),1),a("ul",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"contextmenu",style:{left:e.left+"px",top:e.top+"px"}},[a("li",{on:{click:function(t){return e.refreshSelectedTag(e.selectedTag)}}},[e._v(" "+e._s(e.$t("tagsView.refresh"))+" ")]),e.isAffix(e.selectedTag)?e._e():a("li",{on:{click:function(t){return e.closeSelectedTag(e.selectedTag)}}},[e._v(" "+e._s(e.$t("tagsView.close"))+" ")]),a("li",{on:{click:e.closeOthersTags}},[e._v(" "+e._s(e.$t("tagsView.closeOthers"))+" ")]),a("li",{on:{click:function(t){return e.closeAllTags(e.selectedTag)}}},[e._v(" "+e._s(e.$t("tagsView.closeAll"))+" ")])])],1)},Ht=[],At=(a("45fc"),function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-scrollbar",{ref:"scrollContainer",staticClass:"scroll-container",attrs:{vertical:!1},nativeOn:{wheel:function(t){return t.preventDefault(),e.handleScroll(t)}}},[e._t("default")],2)}),Pt=[],Dt=(a("c740"),4),It=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){return Object(c["a"])(this,a),t.apply(this,arguments)}return Object(s["a"])(a,[{key:"scrollWrapper",get:function(){return this.$refs.scrollContainer.$refs.wrap}},{key:"mounted",value:function(){this.scrollWrapper.addEventListener("scroll",this.emitScroll,!0)}},{key:"beforeDestroy",value:function(){this.scrollWrapper.removeEventListener("scroll",this.emitScroll)}},{key:"handleScroll",value:function(e){var t=e.wheelDelta||40*-e.deltaY,a=this.scrollWrapper;a.scrollLeft=a.scrollLeft+t/4}},{key:"emitScroll",value:function(){this.$emit("scroll")}},{key:"moveToTarget",value:function(e){var t=this.$refs.scrollContainer.$el,a=t.offsetWidth,i=this.scrollWrapper,n=this.$parent.$refs.tag,r=null,o=null;if(n.length>0&&(r=n[0],o=n[n.length-1]),r===e)i.scrollLeft=0;else if(o===e)i.scrollLeft=i.scrollWidth-a;else{var c=n.findIndex((function(t){return t===e})),s=n[c-1],l=n[c+1],u=l.$el.offsetLeft+l.$el.offsetWidth+Dt,d=s.$el.offsetLeft-Dt;u>i.scrollLeft+a?i.scrollLeft=u-a:d1&&void 0!==arguments[1]?arguments[1]:"/",i=[];return e.forEach((function(e){if(e.meta&&e.meta.affix){var n=oe.a.resolve(a,e.path);i.push({fullPath:n,path:n,name:e.name,meta:Object(nt["a"])({},e.meta)})}if(e.children){var r=t.filterAffixTags(e.children,e.path);r.length>=1&&(i=[].concat(Object(ie["a"])(i),Object(ie["a"])(r)))}})),i}},{key:"initTags",value:function(){this.affixTags=this.filterAffixTags(this.routes);var e,t=Object(ne["a"])(this.affixTags);try{for(t.s();!(e=t.n()).done;){var a=e.value;a.name&&v["a"].addVisitedView(a)}}catch(i){t.e(i)}finally{t.f()}}},{key:"addTags",value:function(){var e=this.$route.name;return e&&v["a"].addView(this.$route),!1}},{key:"moveToCurrentTag",value:function(){var e=this,t=this.$refs.tag;this.$nextTick((function(){var a,i=Object(ne["a"])(t);try{for(i.s();!(a=i.n()).done;){var n=a.value;if(n.to.path===e.$route.path){e.$refs.scrollPane.moveToTarget(n),n.to.fullPath!==e.$route.fullPath&&v["a"].updateVisitedView(e.$route);break}}}catch(r){i.e(r)}finally{i.f()}}))}},{key:"refreshSelectedTag",value:function(e){var t=this;v["a"].delCachedView(e);var a=e.fullPath;this.$nextTick((function(){t.$router.replace({path:"/redirect"+a})["catch"]((function(e){console.warn(e)}))}))}},{key:"closeSelectedTag",value:function(e){v["a"].delView(e),this.isActive(e)&&this.toLastView(v["a"].visitedViews,e)}},{key:"closeOthersTags",value:function(){this.selectedTag.fullPath!==this.$route.path&&void 0!==this.selectedTag.fullPath&&this.$router.push(this.selectedTag.fullPath)["catch"]((function(e){console.warn(e)})),v["a"].delOthersViews(this.selectedTag),this.moveToCurrentTag()}},{key:"closeAllTags",value:function(e){var t=this;v["a"].delAllViews(),this.affixTags.some((function(e){return e.path===t.$route.path}))||this.toLastView(v["a"].visitedViews,e)}},{key:"toLastView",value:function(e,t){var a=e.slice(-1)[0];void 0!==a&&void 0!==a.fullPath?this.$router.push(a.fullPath)["catch"]((function(e){console.warn(e)})):"Dashboard"===t.name?this.$router.replace({path:"/redirect"+t.fullPath})["catch"]((function(e){console.warn(e)})):this.$router.push("/")["catch"]((function(e){console.warn(e)}))}},{key:"openMenu",value:function(e,t){var a=105,i=this.$el.getBoundingClientRect().left,n=this.$el.offsetWidth,r=n-a,o=t.clientX-i+15;this.left=o>r?r:o,this.top=t.clientY,this.visible=!0,this.selectedTag=e}},{key:"closeMenu",value:function(){this.visible=!1}},{key:"handleScroll",value:function(){this.closeMenu()}}]),a}(h["c"]);Object(d["a"])([Object(h["d"])("$route")],qt.prototype,"onRouteChange",null),Object(d["a"])([Object(h["d"])("visible")],qt.prototype,"onVisibleChange",null),qt=Object(d["a"])([Object(h["a"])({name:"TagsView",components:{ScrollPane:Nt}})],qt);var Gt=qt,Ft=Gt,Wt=(a("9858"),a("ebd8"),Object(T["a"])(Ft,Mt,Ht,!1,null,"31c3d88a",null)),Ut=Wt.exports,Zt=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{ref:"rightPanel",staticClass:"rightPanel-container",class:{show:e.show}},[a("div",{staticClass:"rightPanel-background"}),a("div",{staticClass:"rightPanel"},[a("div",{staticClass:"handle-button",style:{top:e.buttonTop+"px","background-color":e.theme},on:{click:function(t){e.show=!e.show}}},[a("i",{class:e.show?"el-icon-close":"el-icon-setting"})]),a("div",{staticClass:"rightPanel-items"},[e._t("default")],2)])])},Qt=[],Kt=a("d257"),Yt=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){var e;return Object(c["a"])(this,a),e=t.apply(this,arguments),e.show=!1,e}return Object(s["a"])(a,[{key:"theme",get:function(){return f["a"].theme}},{key:"onShowChange",value:function(e){e&&!this.clickNotClose&&this.addEventClick(),e?Object(Kt["a"])(document.body,"showRightPanel"):Object(Kt["e"])(document.body,"showRightPanel")}},{key:"mounted",value:function(){this.insertToBody()}},{key:"beforeDestroy",value:function(){var e=this.$refs.rightPanel;e.remove()}},{key:"addEventClick",value:function(){window.addEventListener("click",this.closeSidebar)}},{key:"closeSidebar",value:function(e){var t=e.target.closest(".rightPanel");t||(this.show=!1,window.removeEventListener("click",this.closeSidebar))}},{key:"insertToBody",value:function(){var e=this.$refs.rightPanel,t=document.querySelector("body");t&&t.insertBefore(e,t.firstChild)}}]),a}(h["c"]);Object(d["a"])([Object(h["b"])({default:!1})],Yt.prototype,"clickNotClose",void 0),Object(d["a"])([Object(h["b"])({default:250})],Yt.prototype,"buttonTop",void 0),Object(d["a"])([Object(h["d"])("show")],Yt.prototype,"onShowChange",null),Yt=Object(d["a"])([Object(h["a"])({name:"RightPanel"})],Yt);var Jt=Yt,Xt=Jt,ea=(a("bd5e"),a("2dc5"),Object(T["a"])(Xt,Zt,Qt,!1,null,"3c531330",null)),ta=ea.exports,aa=992,ia=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){return Object(c["a"])(this,a),t.apply(this,arguments)}return Object(s["a"])(a,[{key:"device",get:function(){return m["a"].device}},{key:"sidebar",get:function(){return m["a"].sidebar}},{key:"onRouteChange",value:function(){this.device===m["b"].Mobile&&this.sidebar.opened&&m["a"].CloseSideBar(!1)}},{key:"beforeMount",value:function(){window.addEventListener("resize",this.resizeHandler)}},{key:"mounted",value:function(){var e=this.isMobile();e&&(m["a"].ToggleDevice(m["b"].Mobile),m["a"].CloseSideBar(!0))}},{key:"beforeDestroy",value:function(){window.removeEventListener("resize",this.resizeHandler)}},{key:"isMobile",value:function(){var e=document.body.getBoundingClientRect();return e.width-1'}}),l.a.register({admin:{width:64,height:64,viewBox:"0 0 1024 1024",data:''}}),l.a.register({"back-top":{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({bug:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({chart:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({clipboard:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({component:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({coupon:{width:64,height:64,viewBox:"0 0 1024 1024",data:''}}),l.a.register({dashboard:{width:128,height:100,viewBox:"0 0 128 100",data:''}}),l.a.register({documentation:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({drag:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({edit:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({education:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({email:{width:128,height:96,viewBox:"0 0 128 96",data:''}}),l.a.register({example:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({excel:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({"exit-fullscreen":{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({"eye-off":{width:128,height:64,viewBox:"0 0 128 64",data:''}}),l.a.register({"eye-on":{width:128,height:128,viewBox:"0 0 1024 1024",data:''}}),l.a.register({form:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({fullscreen:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({game:{width:64,height:64,viewBox:"0 0 1024 1024",data:''}}),l.a.register({"guide-2":{width:1e3,height:1e3,viewBox:"0 0 1000 1000",data:''}}),l.a.register({guide:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({hamburger:{width:64,height:64,viewBox:"0 0 1024 1024",data:''}}),l.a.register({icon:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({international:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({language:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({like:{width:24,height:24,viewBox:"0 0 24 24",data:''}}),l.a.register({link:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({list:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({lock:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({message:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({money:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({nested:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({password:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({pdf:{width:128,height:128,viewBox:"0 0 1024 1024",data:''}}),l.a.register({people:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({peoples:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({permission:{width:64,height:64,viewBox:"0 0 1024 1024",data:''}}),l.a.register({points:{width:64,height:64,viewBox:"0 0 1024 1024",data:''}}),l.a.register({promo:{width:82.625,height:64,viewBox:"0 0 1322 1024",data:''}}),l.a.register({qq:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({question_list:{width:64,height:64,viewBox:"0 0 1024 1024",data:''}}),l.a.register({role:{width:64,height:64,viewBox:"0 0 1024 1024",data:''}}),l.a.register({search:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({sell:{width:64,height:64,viewBox:"0 0 1024 1024",data:''}}),l.a.register({shop_list:{width:64,height:64,viewBox:"0 0 1024 1024",data:''}}),l.a.register({shop:{width:64,height:64,viewBox:"0 0 1024 1024",data:''}}),l.a.register({shopping:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({size:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({skill:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({star:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({statistics:{width:120,height:120,viewBox:"0 0 1024 1024",data:''}}),l.a.register({tab:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({table:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({theme:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({theme2:{width:120,height:120,viewBox:"0 0 1024 1024",data:''}}),l.a.register({"tree-table":{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({tree:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({user:{width:130,height:130,viewBox:"0 0 130 130",data:''}}),l.a.register({wechat:{width:128,height:110,viewBox:"0 0 128 110",data:''}}),l.a.register({zip:{width:128,height:128,viewBox:"0 0 128 128",data:''}});var S=a("5530"),_=a("1da1"),j=(a("96cf"),a("99af"),a("c975"),a("323e")),z=a.n(j),C=(a("a5d8"),a("9dba")),V=a("8ad0"),L=a("8b99");z.a.configure({showSpinner:!1});var M=["/login","/auth-redirect"],H=function(e){var t=E["a"].te("route.".concat(e));if(t){var a=E["a"].t("route.".concat(e));return"".concat(a," - ").concat(L["a"].title)}return"".concat(L["a"].title)};x["c"].beforeEach(function(){var e=Object(_["a"])(regeneratorRuntime.mark((function e(t,a,i){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(z.a.start(),!C["a"].token){e.next=28;break}if("/login"!==t.path){e.next=7;break}i({path:"/"}),z.a.done(),e.next=26;break;case 7:if(0!==C["a"].roles.length){e.next=25;break}return e.prev=8,e.next=11,C["a"].GetUserInfo();case 11:n=C["a"].roles,V["a"].GenerateRoutes(n),x["c"].addRoutes(V["a"].dynamicRoutes),i(Object(S["a"])(Object(S["a"])({},t),{},{replace:!0})),e.next=23;break;case 17:e.prev=17,e.t0=e["catch"](8),C["a"].ResetToken(),o["Message"].error(e.t0||"Has Error"),i("/login?redirect=".concat(t.path)),z.a.done();case 23:e.next=26;break;case 25:i();case 26:e.next=29;break;case 28:-1!==M.indexOf(t.path)?i():(i("/login?redirect=".concat(t.path)),z.a.done());case 29:case"end":return e.stop()}}),e,null,[[8,17]])})));return function(t,a,i){return e.apply(this,arguments)}}()),x["c"].afterEach((function(e){z.a.done(),document.title=H(e.meta.title)}));var A,P,D,I=a("ac1a"),R=a("1e24"),B={inserted:function(e,t){var a=t.value;Object(R["a"])(a)||(e.style.display="none")}},$=(a("caad"),a("2532"),a("ac1f"),a("5319"),{bind:function(e,t,a){var i=e.querySelector(".el-dialog"),n=e.querySelector(".el-dialog__header");i.style.cssText+=";top:0px;",n.style.cssText+=";cursor:move;",n.onmousedown=function(e){var t,r,o=e.clientX-n.offsetLeft,c=e.clientY-n.offsetTop,s=i.offsetWidth,l=i.offsetHeight,u=document.body.clientWidth,d=document.body.clientHeight,h=i.offsetLeft,p=u-i.offsetLeft-s,m=i.offsetTop,f=d-i.offsetTop-l,b=getComputedStyle(i).left,g=getComputedStyle(i).top;b&&g&&(b.includes("%")?(t=+document.body.clientWidth*(+b.replace(/%/g,"")/100),r=+document.body.clientHeight*(+g.replace(/%/g,"")/100)):(t=+b.replace(/px/g,""),r=+g.replace(/px/g,"")),document.onmousemove=function(e){var n=e.clientX-o,s=e.clientY-c;-n>h?n=-h:n>p&&(n=p),-s>m?s=-m:s>f&&(s=f),i.style.cssText+=";left:".concat(n+t,"px;top:").concat(s+r,"px;"),a.componentInstance?a.componentInstance.$emit("on-dialog-drag"):a.elm&&a.elm.dispatchEvent(new CustomEvent("on-dialog-drag"))},document.onmouseup=function(){document.onmousemove=null,document.onmouseup=null})}}}),N=(a("4d44"),{bind:function(e,t){e.addEventListener("click",(function(a){var i=Object.assign({},t.value),n=Object.assign({ele:e,type:"hit",color:"rgba(0, 0, 0, 0.15)"},i),r=n.ele;if(r){r.style.position="relative",r.style.overflow="hidden";var o=r.getBoundingClientRect(),c=r.querySelector(".waves-ripple");switch(c?c.className="waves-ripple":(c=document.createElement("span"),c.className="waves-ripple",c.style.height=c.style.width=Math.max(o.width,o.height)+"px",r.appendChild(c)),n.type){case"center":c.style.top=o.height/2-c.offsetHeight/2+"px",c.style.left=o.width/2-c.offsetWidth/2+"px";break;default:c.style.top=(a.pageY-o.top-c.offsetHeight/2-document.documentElement.scrollTop||document.body.scrollTop)+"px",c.style.left=(a.pageX-o.left-c.offsetWidth/2-document.documentElement.scrollLeft||document.body.scrollLeft)+"px"}return c.style.backgroundColor=n.color,c.className="waves-ripple z-active",!1}}),!1)}}),q=a("b311"),G=a.n(q);if(!G.a)throw new Error("you should npm install `clipboard` --save at first ");var F={bind:function(e,t){"success"===t.arg?A=t.value:"error"===t.arg?P=t.value:(D=new G.a(e,{text:function(){return t.value},action:function(){return"cut"===t.arg?"cut":"copy"}}),D.on("success",(function(e){var t=A;t&&t(e)})),D.on("error",(function(e){var t=P;t&&t(e)})))},update:function(e,t){"success"===t.arg?A=t.value:"error"===t.arg?P=t.value:D=new G.a(e,{text:function(){return t.value},action:function(){return"cut"===t.arg?"cut":"copy"}})},unbind:function(e,t){"success"===t.arg?A=null:"error"===t.arg?P=null:(D&&D.destroy(),D=null)}},W=(a("45fc"),{inserted:function(e,t){var a=t.value,i=C["a"].roles;if(!(a&&a instanceof Array&&a.length>0))throw new Error("need roles! Like v-role=\"['admin','editor']\"");var n=a,r=i.some((function(e){return n.includes(e)}));r||(e.style.display="none")}}),U=(a("fb6a"),a("d257")),Z=function(e){var t={published:"success",draft:"info",deleted:"danger"};return t[e]},Q=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},K={get:function(e){var t=localStorage.getItem(e);return t?JSON.parse(t):null},set:function(e,t){localStorage.setItem(e,JSON.stringify(t))}},Y={install:function(e){e.prototype.$local=K}};a("5361"),r["default"].use(c.a,{size:I["a"].size,i18n:function(e,t){return E["a"].t(e,t)}}),r["default"].use(l.a,{tagName:"svg-icon",defaultWidth:"1em",defaultHeight:"1em"}),r["default"].use(Y),Object.keys(i).forEach((function(e){r["default"].directive(e,i[e])})),Object.keys(n).forEach((function(e){r["default"].filter(e,n[e])})),r["default"].config.productionTip=!1,new r["default"]({router:x["c"],store:O["a"],i18n:E["a"],render:function(e){return e(T)}}).$mount("#app")},d257:function(e,t,a){"use strict";a.d(t,"d",(function(){return n})),a.d(t,"f",(function(){return r})),a.d(t,"g",(function(){return o})),a.d(t,"c",(function(){return c})),a.d(t,"a",(function(){return l})),a.d(t,"e",(function(){return u})),a.d(t,"h",(function(){return d})),a.d(t,"b",(function(){return h}));var i=a("53ca"),n=(a("e25e"),a("0d03"),a("d3b7"),a("25f0"),a("ac1f"),a("5319"),a("4d90"),a("1276"),a("d81d"),a("466d"),a("4d63"),a("c975"),a("4795"),function(e,t){if(void 0===e||!e)return null;var a,n=t||"{y}-{m}-{d} {h}:{i}:{s}";"object"===Object(i["a"])(e)?a=e:("string"===typeof e&&/^[0-9]+$/.test(e)&&(e=parseInt(e)),"number"===typeof e&&10===e.toString().length&&(e*=1e3),a=new Date(e));var r={y:a.getFullYear(),m:a.getMonth()+1,d:a.getDate(),h:a.getHours(),i:a.getMinutes(),s:a.getSeconds(),a:a.getDay()};return n.replace(/{([ymdhisa])+}/g,(function(e,t){var a=r[t];return"a"===t?["日","一","二","三","四","五","六"][a]:a.toString().padStart(2,"0")}))}),r=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];t="undefined"===typeof t||t;var a=e%60,i=(e%3600-a)/60,n=Math.floor(e/3600);return t?(n>9?""+n:"0"+n)+":"+(i>9?i:"0"+i)+":"+(a>9?a:"0"+a):(n>9?""+n:"0"+n)+":"+(i>9?i:"0"+i)},o=function(e){var t=e.split(":"),a=t.length>0?+t[0]:0,i=t.length>1?+t[1]:0,n=t.length>2?+t[2]:0;return 3600*a+60*i+n},c=function(e,t){return t.map((function(t){return e.map((function(e){return"timestamp"===e?n(t[e]):t[e]}))}))},s=function(e,t){return!!e.className.match(new RegExp("(\\s|^)"+t+"(\\s|$)"))},l=function(e,t){s(e,t)||(e.className+=" "+t)},u=function(e,t){if(s(e,t)){var a=new RegExp("(\\s|^)"+t+"(\\s|$)");e.className=e.className.replace(a," ")}},d=function(e,t){if(e&&t){var a=e.className,i=a.indexOf(t);-1===i?a+=""+t:a=a.substr(0,i)+a.substr(i+t.length),e.className=a}},h=function(e){return new Promise((function(t,a){setTimeout((function(){t&&t("")}),1e3*e)}))}},d2a7:function(e,t,a){},d2c9:function(e,t,a){"use strict";a("704b")},d729:function(e,t,a){"use strict";a("4f20")},e15f:function(e,t,a){},e4f3:function(e,t,a){},e741:function(e,t,a){"use strict";a.d(t,"a",(function(){return p}));var i=a("3835"),n=a("b85c"),r=a("d4ec"),o=a("bee2"),c=a("262e"),s=a("2caf"),l=(a("45fc"),a("b0c0"),a("caad"),a("2532"),a("d3b7"),a("ddb0"),a("a434"),a("c975"),a("4de4"),a("fb6a"),a("9ab4")),u=a("6fc5"),d=a("0613"),h=function(e){Object(c["a"])(a,e);var t=Object(s["a"])(a);function a(){var e;return Object(r["a"])(this,a),e=t.apply(this,arguments),e.visitedViews=[],e.cachedViews=[],e}return Object(o["a"])(a,[{key:"ADD_VISITED_VIEW",value:function(e){this.visitedViews.some((function(t){return t.path===e.path}))||this.visitedViews.push(Object.assign({},e,{title:e.meta.title||"no-name"}))}},{key:"ADD_CACHED_VIEW",value:function(e){null!==e.name&&(this.cachedViews.includes(e.name)||e.meta.noCache||this.cachedViews.push(e.name))}},{key:"DEL_VISITED_VIEW",value:function(e){var t,a=Object(n["a"])(this.visitedViews.entries());try{for(a.s();!(t=a.n()).done;){var r=Object(i["a"])(t.value,2),o=r[0],c=r[1];if(c.path===e.path){this.visitedViews.splice(o,1);break}}}catch(s){a.e(s)}finally{a.f()}}},{key:"DEL_CACHED_VIEW",value:function(e){if(null!==e.name){var t=this.cachedViews.indexOf(e.name);t>-1&&this.cachedViews.splice(t,1)}}},{key:"DEL_OTHERS_VISITED_VIEWS",value:function(e){this.visitedViews=this.visitedViews.filter((function(t){return t.meta.affix||t.path===e.path}))}},{key:"DEL_OTHERS_CACHED_VIEWS",value:function(e){if(null!==e.name){var t=this.cachedViews.indexOf(e.name);this.cachedViews=t>-1?this.cachedViews.slice(t,t+1):[]}}},{key:"DEL_ALL_VISITED_VIEWS",value:function(){var e=this.visitedViews.filter((function(e){return e.meta.affix}));this.visitedViews=e}},{key:"DEL_ALL_CACHED_VIEWS",value:function(){this.cachedViews=[]}},{key:"UPDATE_VISITED_VIEW",value:function(e){var t,a=Object(n["a"])(this.visitedViews);try{for(a.s();!(t=a.n()).done;){var i=t.value;if(i.path===e.path){i=Object.assign(i,e);break}}}catch(r){a.e(r)}finally{a.f()}}},{key:"addView",value:function(e){this.ADD_VISITED_VIEW(e),this.ADD_CACHED_VIEW(e)}},{key:"addVisitedView",value:function(e){this.ADD_VISITED_VIEW(e)}},{key:"delView",value:function(e){this.DEL_VISITED_VIEW(e),this.DEL_CACHED_VIEW(e)}},{key:"delCachedView",value:function(e){this.DEL_CACHED_VIEW(e)}},{key:"delOthersViews",value:function(e){this.DEL_OTHERS_VISITED_VIEWS(e),this.DEL_OTHERS_CACHED_VIEWS(e)}},{key:"delAllViews",value:function(){this.DEL_ALL_VISITED_VIEWS(),this.DEL_ALL_CACHED_VIEWS()}},{key:"delAllCachedViews",value:function(){this.DEL_ALL_CACHED_VIEWS()}},{key:"updateVisitedView",value:function(e){this.UPDATE_VISITED_VIEW(e)}}]),a}(u["d"]);Object(l["a"])([u["c"]],h.prototype,"ADD_VISITED_VIEW",null),Object(l["a"])([u["c"]],h.prototype,"ADD_CACHED_VIEW",null),Object(l["a"])([u["c"]],h.prototype,"DEL_VISITED_VIEW",null),Object(l["a"])([u["c"]],h.prototype,"DEL_CACHED_VIEW",null),Object(l["a"])([u["c"]],h.prototype,"DEL_OTHERS_VISITED_VIEWS",null),Object(l["a"])([u["c"]],h.prototype,"DEL_OTHERS_CACHED_VIEWS",null),Object(l["a"])([u["c"]],h.prototype,"DEL_ALL_VISITED_VIEWS",null),Object(l["a"])([u["c"]],h.prototype,"DEL_ALL_CACHED_VIEWS",null),Object(l["a"])([u["c"]],h.prototype,"UPDATE_VISITED_VIEW",null),Object(l["a"])([u["a"]],h.prototype,"addView",null),Object(l["a"])([u["a"]],h.prototype,"addVisitedView",null),Object(l["a"])([u["a"]],h.prototype,"delView",null),Object(l["a"])([u["a"]],h.prototype,"delCachedView",null),Object(l["a"])([u["a"]],h.prototype,"delOthersViews",null),Object(l["a"])([u["a"]],h.prototype,"delAllViews",null),Object(l["a"])([u["a"]],h.prototype,"delAllCachedViews",null),Object(l["a"])([u["a"]],h.prototype,"updateVisitedView",null),h=Object(l["a"])([Object(u["b"])({dynamic:!0,store:d["a"],name:"tagsView"})],h);var p=Object(u["e"])(h)},ebd8:function(e,t,a){"use strict";a("4b2f")},effd:function(e,t,a){},f6a5:function(e,t,a){}}); -//# sourceMappingURL=app.3e2473e2.js.map \ No newline at end of file +(function(e){function t(t){for(var i,n,c=t[0],s=t[1],l=t[2],u=0,d=[];u0){var t,a=n["a"].permissions,r=!1,o=Object(i["a"])(e);try{for(o.s();!(t=o.n()).done;){var c=t.value;if("*"===c){r=!0;break}var s=c.split(":");if("*"===s[0]){var l,u=Object(i["a"])(a);try{for(u.s();!(l=u.n()).done;){var d=l.value;if("*"===d[1]||d[1]===s[1]){r=!0;break}}}catch(v){u.e(v)}finally{u.f()}}else if("*"===s[1]){var h,p=Object(i["a"])(a);try{for(p.s();!(h=p.n()).done;){var m=h.value;if("*"===m[0]||m[0]===s[0]){r=!0;break}}}catch(v){p.e(v)}finally{p.f()}}else{var f,b=Object(i["a"])(a);try{for(b.s();!(f=b.n()).done;){var g=f.value;if("*"===g[0]&&"*"===g[1]||"*"===g[0]&&g[1]===s[1]||g[0]===s[0]&&"*"===g[1]||g[0]===s[0]&&g[1]===s[1]){r=!0;break}}}catch(v){b.e(v)}finally{b.f()}}if(r)break}}catch(v){o.e(v)}finally{o.f()}return r}return console.error("need roles! Like v-permission=\"['admin','editor']\""),!1}},"232e":function(e,t,a){},"23f6":function(e,t,a){"use strict";a("2988")},"24ab":function(e,t,a){e.exports={menuBg:"#304156",menuText:"#bfcbd9",menuActiveText:"#409eff",theme:"#1890ff"}},"24be":function(e,t,a){},2988:function(e,t,a){},"2ca8":function(e,t,a){"use strict";a("c494")},"2dc5":function(e,t,a){"use strict";a("effd")},4155:function(e,t,a){"use strict";a("f6a5")},"435a":function(e,t,a){"use strict";a("e4f3")},"4b2f":function(e,t,a){},"4d44":function(e,t,a){},"4f20":function(e,t,a){e.exports={menuBg:"#304156",menuText:"#bfcbd9",menuActiveText:"#409eff"}},5361:function(e,t,a){"use strict";var i=a("448a")["default"];a("1d1c"),a("0d03"),a("c975"),a("a434"),a("4160"),a("159b"),a("fb6a"),a("99af"),a("d3b7"),a("6062b"),a("3ca3"),a("ddb0"),a("4de4"),a("4ec9"),Object.defineProperties(Date.prototype,{addDays:{value:function(e){return new Date(this.getTime()+3600*e*24*1e3)},writable:!0}}),Object.defineProperties(Array.prototype,{cloneTo:{value:function(e){e.length=this.length;var t=this.length;e.length=t;for(var a=0;a=this.length)return!1;for(var t=this.length-1,a=e;a0&&void 0!==arguments[0]?arguments[0]:1,i=this.slice(0),n=this.length,r=n-a;if(r<0)return i;while(n-- >r)t=Math.floor((n+1)*Math.random()),e=i[t],i[t]=i[n],i[n]=e;return i.slice(r)},writable:!0},randomOne:{value:function(){var e=this.randomGet(1);return e.length>0?e[0]:null},writable:!0},randomRemove:{value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:1,t=[];while(e-- >0&&this.length>0){var a=Math.random()*this.length|0;t.push.apply(t,i(this.splice(a,1)))}return t},writable:!0},moveElement:{value:function(e){return Math.abs(e)>this.length&&(e%=this.length),this.slice(-e).concat(this.slice(0,-e))},writable:!0},union:{value:function(e){var t=this.concat(e);return i(new Set(t))},writable:!0},intersect:{value:function(e){var t=new Set(e),a=new Set(this.filter((function(e){return t.has(e)})));return i(a)},writable:!0},difference:{value:function(e){var t=new Set(e),a=new Set(this.filter((function(e){return!t.has(e)})));return i(a)},writable:!0}}),Object.defineProperties(Map.prototype,{inc:{value:function(e,t){return"number"===typeof t?this.set(e,(this.get(e)||0)+t):this.set(e,t),this.get(e)}}})},"53dd":function(e,t,a){},5581:function(e,t,a){"use strict";a.d(t,"b",(function(){return o})),a.d(t,"g",(function(){return c})),a.d(t,"a",(function(){return l})),a.d(t,"f",(function(){return u})),a.d(t,"c",(function(){return h})),a.d(t,"h",(function(){return p})),a.d(t,"d",(function(){return f})),a.d(t,"i",(function(){return b})),a.d(t,"e",(function(){return g}));var i=a("a78e"),n=a.n(i),r="sidebar_status",o=function(){return n.a.get(r)},c=function(e){return n.a.set(r,e)},s="language",l=function(){return n.a.get(s)},u=function(e){return n.a.set(s,e)},d="size",h=function(){return n.a.get(d)},p=function(e){return n.a.set(d,e)},m="vue_typescript_admin_access_token",f=function(){return n.a.get(m)},b=function(e){return n.a.set(m,e)},g=function(){return n.a.remove(m)}},"58dd":function(e,t,a){"use strict";a("92fc")},"5f49":function(e,t,a){},6199:function(e,t,a){e.exports={menuBg:"#304156",menuText:"#bfcbd9",menuActiveText:"#409eff"}},"6ebf":function(e,t,a){"use strict";a.d(t,"b",(function(){return x}));var i=a("5530"),n=(a("b64b"),a("c975"),a("2b0e")),r=a("a925"),o=a("5581"),c=a("b2d6"),s=a.n(c),l=a("f0d9"),u=a.n(l),d=a("3ed6"),h=a.n(d),p=a("c3ff"),m=a.n(p),f=a("fcff"),b=a.n(f),g={route:{dashboard:"Dashboard",system:"System",adminuser:"Admin",documentation:"Documentation",guide:"Guide",permission:"Permission",pagePermission:"Page Permission",rolePermission:"Role Permission",directivePermission:"Directive Permission",icons:"Icons",components:"Components",tinymce:"Tinymce",markdown:"Markdown",jsonEditor:"JSON Editor",splitPane:"SplitPane",avatarUpload:"Avatar Upload",dropzone:"Dropzone",sticky:"Sticky",countTo:"Count To",componentMixin:"Mixin",backToTop:"Back To Top",draggableDialog:"Draggable Dialog",draggableKanban:"Draggable Kanban",draggableList:"Draggable List",draggableSelect:"Draggable Select",charts:"Charts",barChart:"Bar Chart",lineChart:"Line Chart",mixedChart:"Mixed Chart",example:"Example",nested:"Nested Routes",menu1:"Menu 1","menu1-1":"Menu 1-1","menu1-2":"Menu 1-2","menu1-2-1":"Menu 1-2-1","menu1-2-2":"Menu 1-2-2","menu1-3":"Menu 1-3",menu2:"Menu 2",table:"Table",dynamicTable:"Dynamic Table",draggableTable:"Draggable Table",inlineEditTable:"Inline Edit Table",complexTable:"Complex Table",tab:"Tab",form:"Form",createArticle:"Create Article",editArticle:"Edit Article",articleList:"Article List",errorPages:"Error Pages",page401:"401",page404:"404",errorLog:"Error Log",excel:"Excel",exportExcel:"Export Excel",selectExcel:"Export Selected",mergeHeader:"Merge Header",uploadExcel:"Upload Excel",zip:"Zip",pdf:"PDF",exportZip:"Export Zip",theme:"Theme",clipboard:"Clipboard",i18n:"I18n",externalLink:"External Link",profile:"Profile",article:"Article",marketing:"Marketing",marketing_coupon:"Coupon",marketing_coupon_info:"Coupon Info",marketing_promo:"Promo Code",marketing_points:"Points Setting",question:"Question Set",question_list:"Question List",question_prepare:"Question Edit",question_setting:"Question Setting",createQuestion:"Create Question",shop:"Shop Setting",shop_list:"Shop List",shop_admin:"Shop Admins",create_shop:"Create Shop",shop_edit:"Shop Editor",game_setting:"Game Setting",game:"Game",game_list:"Game List",game_edit:"Game Info",activity_list:"Activity List",create_activity:"New Activity",edit_activity:"Edit Activity",exam_list:"Exam List",create_exam:"New Exam",edit_exam:"Edit Exam",password:"Password",edit_theme:"Edit Theme",shop_member:"Member Manage",shop_statistics:"Statistics",game_statistics:"Game Statistics",shop_puzzles:"Custom Puzzles",shop_lottery:"Lottery Setting",shop_share:"Share Setting",shop_mail:"Mails",create_mail:"New Mail",edit_mail:"Edit Mail"},navbar:{logOut:"Log Out",dashboard:"Dashboard",github:"Github",theme:"Theme",size:"Global Size",profile:"Profile",password:"Password"},login:{title:"Login Form",logIn:"Login",username:"Username",password:"Password",any:"any",thirdparty:"Or connect with",thirdpartyTips:"Can not be simulated on local, so please combine you own business simulation! ! !"},documentation:{documentation:"Documentation",github:"Github Repository"},permission:{createRole:"New Role",editPermission:"Edit",roles:"Your roles",switchRoles:"Switch roles",tips:"In some cases, using v-permission will have no effect. For example: Element-UI el-tab or el-table-column and other scenes that dynamically render dom. You can only do this with v-if.",delete:"Delete",confirm:"Confirm",cancel:"Cancel"},guide:{description:"The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ",button:"Show Guide"},components:{documentation:"Documentation",tinymceTips:"Rich text is a core feature of the management backend, but at the same time it is a place with lots of pits. In the process of selecting rich texts, I also took a lot of detours. The common rich texts on the market have been basically used, and I finally chose Tinymce. See the more detailed rich text comparison and introduction.",stickyTips:"when the page is scrolled to the preset position will be sticky on the top.",backToTopTips1:"When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner",backToTopTips2:"You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally",imageUploadTips:"Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version.",changeLanguageTips:"Switch Language Success"},table:{dynamicTips1:"Fixed header, sorted by header order",dynamicTips2:"Not fixed header, sorted by click order",dragTips1:"The default order",dragTips2:"The after dragging order",title:"Title",importance:"Importance",type:"Type",remark:"Remark",search:"Search",add:"Add",export:"Export",reviewer:"Reviewer",id:"ID",date:"Date",author:"Author",readings:"Readings",status:"Status",actions:"Actions",edit:"Edit",publish:"Publish",draft:"Draft",delete:"Delete",cancel:"Cancel",confirm:"Confirm"},example:{warning:"Creating and editing pages cannot be cached by keep-alive because keep-alive's 'include' currently does not support caching based on routes, so now it's cached based on component name. If you want to achieve a similar caching effect, you can use a browser caching scheme such as localStorage. Or don't use keep-alive's 'include' to cache all pages directly. See details"},errorLog:{tips:"Please click the bug icon in the upper right corner",description:"Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.",documentation:"Document introduction"},excel:{export:"Export",selectedExport:"Export Selected Items",placeholder:"Please enter the file name (default excel-list)"},zip:{export:"Export",placeholder:"Please enter the file name (default file)"},pdf:{tips:"Here we use window.print() to implement the feature of downloading PDF."},theme:{change:"Change Theme",documentation:"Theme documentation",tips:"Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details."},tagsView:{refresh:"Refresh",close:"Close",closeOthers:"Close Others",closeAll:"Close All"},settings:{title:"Page style setting",theme:"Theme Color",showTagsView:"Open Tags-View",showSidebarLogo:"Sidebar Logo",fixedHeader:"Fixed Header",sidebarTextTheme:"Sidebar Text Theme"},admin:{addAdmin:"New Admin",editAdmin:"Edit Admin"},article:{add:"New Article"},marketing:{},main:{shop:"shop"}},v={route:{dashboard:"首页",documentation:"文档",system:"系统",adminuser:"管理员",guide:"引导页",permission:"权限管理",rolePermission:"角色权限",pagePermission:"页面权限",directivePermission:"指令权限",icons:"图标",components:"组件",tinymce:"富文本编辑器",markdown:"Markdown",jsonEditor:"JSON 编辑器",splitPane:"Splitpane",avatarUpload:"头像上传",dropzone:"Dropzone",sticky:"Sticky",countTo:"Count To",componentMixin:"小组件",backToTop:"返回顶部",draggableDialog:"可拖拽对话框",draggableKanban:"可拖拽看板",draggableList:"可拖拽列表",draggableSelect:"可拖拽选择",charts:"图表",barChart:"柱状图表",lineChart:"折线图",mixedChart:"混合图表",example:"综合实例",nested:"路由嵌套",menu1:"菜单 1","menu1-1":"菜单 1-1","menu1-2":"菜单 1-2","menu1-2-1":"菜单 1-2-1","menu1-2-2":"菜单 1-2-2","menu1-3":"菜单 1-3",menu2:"菜单 2",table:"表格",dynamicTable:"动态表格",draggableTable:"可拖拽表格",inlineEditTable:"表格内编辑",complexTable:"综合表格",tab:"分栏",form:"表单",createArticle:"创建文章",editArticle:"编辑文章",articleList:"文章列表",errorPages:"错误页面",page401:"401",page404:"404",errorLog:"错误日志",excel:"Excel",exportExcel:"导出 Excel",selectExcel:"导出 已选择项",mergeHeader:"导出 多级表头",uploadExcel:"上传 Excel",zip:"Zip",pdf:"PDF",exportZip:"导出 Zip",theme:"换肤",clipboard:"粘贴板",i18n:"国际化",externalLink:"外链",profile:"个人中心",article:"资讯管理",marketing:"营销管理",marketing_coupon:"优惠券设置",marketing_coupon_info:"编辑优惠券",marketing_promo:"优惠码设置",marketing_points:"积分设置",question:"题库管理",question_list:"题目列表",question_prepare:"题目编辑",question_setting:"题库设置",createQuestion:"创建题目",shop:"店铺设置",shop_list:"店铺列表",shop_admin:"店铺管理员",create_shop:"创建店铺",shop_edit:"编辑店铺",game_setting:"游戏设置",game:"游戏信息",game_list:"游戏列表",game_edit:"编辑游戏",activity_list:"活动列表",create_activity:"新建活动",edit_activity:"编辑活动",exam_list:"挑战列表",create_exam:"新建挑战",edit_exam:"编辑挑战",password:"修改密码",edit_theme:"订制游戏主题",shop_member:"成员管理",shop_statistics:"统计",game_statistics:"游戏数据",shop_puzzles:"自定义题库",shop_lottery:"抽奖转盘",shop_share:"分享设置",shop_mail:"邮件",create_mail:"新邮件",edit_mail:"编辑邮件"},navbar:{logOut:"退出登录",dashboard:"首页",github:"项目地址",theme:"换肤",size:"布局大小",profile:"个人信息",password:"修改密码"},login:{title:"系统登录",logIn:"登录",username:"账号",password:"密码",any:"随便填",thirdparty:"第三方登录",thirdpartyTips:"本地不能模拟,请结合自己业务进行模拟!!!"},documentation:{documentation:"文档",github:"Github 地址"},permission:{createRole:"新增角色",editPermission:"编辑权限",roles:"你的权限",switchRoles:"切换权限",tips:"在某些情况下,不适合使用 v-permission。例如:Element-UI 的 el-tab 或 el-table-column 以及其它动态渲染 dom 的场景。你只能通过手动设置 v-if 来实现。",delete:"删除",confirm:"确定",cancel:"取消"},guide:{description:"引导页对于一些第一次进入项目的人很有用,你可以简单介绍下项目的功能。本 Demo 是基于",button:"打开引导"},components:{documentation:"文档",tinymceTips:"富文本是管理后台一个核心的功能,但同时又是一个有很多坑的地方。在选择富文本的过程中我也走了不少的弯路,市面上常见的富文本都基本用过了,最终权衡了一下选择了Tinymce。更详细的富文本比较和介绍见",stickyTips:"当页面滚动到预设的位置会吸附在顶部",backToTopTips1:"页面滚动到指定位置会在右下角出现返回顶部按钮",backToTopTips2:"可自定义按钮的样式、show/hide、出现的高度、返回的位置 如需文字提示,可在外部使用Element的el-tooltip元素",imageUploadTips:"由于我在使用时它只有vue@1版本,而且和mockjs不兼容,所以自己改造了一下,如果大家要使用的话,优先还是使用官方版本。",changeLanguageTips:"切换语言成功"},table:{dynamicTips1:"固定表头, 按照表头顺序排序",dynamicTips2:"不固定表头, 按照点击顺序排序",dragTips1:"默认顺序",dragTips2:"拖拽后顺序",title:"标题",importance:"重要性",type:"类型",remark:"点评",search:"搜索",add:"添加",export:"导出",reviewer:"审核人",id:"序号",date:"时间",author:"作者",readings:"阅读数",status:"状态",actions:"操作",edit:"编辑",publish:"发布",draft:"草稿",delete:"删除",cancel:"取 消",confirm:"确 定"},example:{warning:"创建和编辑页面是不能被 keep-alive 缓存的,因为keep-alive 的 include 目前不支持根据路由来缓存,所以目前都是基于 component name 来进行缓存的。如果你想类似的实现缓存效果,可以使用 localStorage 等浏览器缓存方案。或者不要使用 keep-alive 的 include,直接缓存所有页面。详情见"},errorLog:{tips:"请点击右上角bug小图标",description:"现在的管理后台基本都是spa的形式了,它增强了用户体验,但同时也会增加页面出问题的可能性,可能一个小小的疏忽就导致整个页面的死锁。好在 Vue 官网提供了一个方法来捕获处理异常,你可以在其中进行错误处理或者异常上报。",documentation:"文档介绍"},excel:{export:"导出",selectedExport:"导出已选择项",placeholder:"请输入文件名(默认excel-list)"},zip:{export:"导出",placeholder:"请输入文件名(默认file)"},pdf:{tips:"这里使用 window.print() 来实现下载pdf的功能"},theme:{change:"换肤",documentation:"换肤文档",tips:"Tips: 它区别于 navbar 上的 theme-pick, 是两种不同的换肤方法,各自有不同的应用场景,具体请参考文档。"},tagsView:{refresh:"刷新",close:"关闭",closeOthers:"关闭其它",closeAll:"关闭所有"},settings:{title:"系统布局配置",theme:"主题色",showTagsView:"显示 Tags-View",showSidebarLogo:"显示侧边栏 Logo",fixedHeader:"固定 Header",sidebarTextTheme:"侧边栏文字主题色"},admin:{addAdmin:"新增",editAdmin:"编辑"},article:{add:"添加"},main:{shop:"店铺"}},y={route:{dashboard:"Panel de control",documentation:"Documentación",guide:"Guía",permission:"Permisos",rolePermission:"Permisos de rol",pagePermission:"Permisos de la página",directivePermission:"Permisos de la directiva",icons:"Iconos",components:"Componentes",tinymce:"Tinymce",markdown:"Markdown",jsonEditor:"Editor JSON",splitPane:"Panel dividido",avatarUpload:"Subir avatar",dropzone:"Subir ficheros",sticky:"Sticky",countTo:"Count To",componentMixin:"Mixin",backToTop:"Ir arriba",draggableDialog:"Draggable Dialog",draggableKanban:"Draggable Kanban",draggableList:"Draggable List",draggableSelect:"Draggable Select",charts:"Gráficos",barChart:"Bar Chart",lineChart:"Gráfico de líneas",mixedChart:"Mixed Chart",example:"Ejemplo",nested:"Rutas anidadass",menu1:"Menu 1","menu1-1":"Menu 1-1","menu1-2":"Menu 1-2","menu1-2-1":"Menu 1-2-1","menu1-2-2":"Menu 1-2-2","menu1-3":"Menu 1-3",menu2:"Menu 2",table:"Tabla",dynamicTable:"Tabla dinámica",draggableTable:"Arrastrar tabla",inlineEditTable:"Editor",complexTable:"Complex Table",tab:"Pestaña",form:"Formulario",createArticle:"Crear artículo",editArticle:"Editar artículo",articleList:"Listado de artículos",errorPages:"Páginas de error",page401:"401",page404:"404",errorLog:"Registro de errores",excel:"Excel",exportExcel:"Exportar a Excel",selectExcel:"Export seleccionado",mergeHeader:"Merge Header",uploadExcel:"Subir Excel",zip:"Zip",pdf:"PDF",exportZip:"Exportar a Zip",theme:"Tema",clipboard:"Clipboard",i18n:"I18n",externalLink:"Enlace externo",profile:"Profile"},navbar:{logOut:"Salir",dashboard:"Panel de control",github:"Github",theme:"Tema",size:"Tamaño global",profile:"Profile"},login:{title:"Formulario de acceso",logIn:"Acceso",username:"Usuario",password:"Contraseña",any:"nada",thirdparty:"Conectar con",thirdpartyTips:"No se puede simular en local, así que combine su propia simulación de negocios. ! !"},documentation:{documentation:"Documentación",github:"Repositorio Github"},permission:{createRole:"Nuevo rol",editPermission:"Permiso de edición",roles:"Tus permisos",switchRoles:"Cambiar permisos",tips:"In some cases it is not suitable to use v-permission, such as element Tab component or el-table-column and other asynchronous rendering dom cases which can only be achieved by manually setting the v-if.",delete:"Borrar",confirm:"Confirmar",cancel:"Cancelar"},guide:{description:"The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ",button:"Ver guía"},components:{documentation:"Documentación",tinymceTips:"Rich text editor is a core part of management system, but at the same time is a place with lots of problems. In the process of selecting rich texts, I also walked a lot of detours. The common rich text editors in the market are basically used, and the finally chose Tinymce. See documentation for more detailed rich text editor comparisons and introductions.",stickyTips:"when the page is scrolled to the preset position will be sticky on the top.",backToTopTips1:"When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner",backToTopTips2:"You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally",imageUploadTips:"Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version.",changeLanguageTips:"Cambiar de idioma correctamente"},table:{dynamicTips1:"Fixed header, sorted by header order",dynamicTips2:"Not fixed header, sorted by click order",dragTips1:"Orden por defecto",dragTips2:"The after dragging order",title:"Título",importance:"Importancia",type:"Tipo",remark:"Remark",search:"Buscar",add:"Añadir",export:"Exportar",reviewer:"Reviewer",id:"ID",date:"Fecha",author:"Autor",readings:"Lector",status:"Estado",actions:"Acciones",edit:"Editar",publish:"Publicar",draft:"Draft",delete:"Eliminar",cancel:"Cancelar",confirm:"Confirmar"},example:{warning:"Creating and editing pages cannot be cached by keep-alive because keep-alive include does not currently support caching based on routes, so it is currently cached based on component name. If you want to achieve a similar caching effect, you can use a browser caching scheme such as localStorage. Or do not use keep-alive include to cache all pages directly. See details"},errorLog:{tips:"Please click the bug icon in the upper right corner",description:"Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.",documentation:"Documento de introducción"},excel:{export:"Exportar",selectedExport:"Exportar seleccionados",placeholder:"Por favor escribe un nombre de fichero"},zip:{export:"Exportar",placeholder:"Por favor escribe un nombre de fichero"},pdf:{tips:"Here we use window.print() to implement the feature of downloading PDF."},theme:{change:"Cambiar tema",documentation:"Documentación del tema",tips:"Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details."},tagsView:{refresh:"Actualizar",close:"Cerrar",closeOthers:"Cerrar otros",closeAll:"Cerrar todos"},settings:{title:"Page style setting",theme:"Theme Color",showTagsView:"Show Tags-View",showSidebarLogo:"Show Sidebar Logo",fixedHeader:"Fixed Header",sidebarTextTheme:"Sidebar Text Theme"}},w={route:{dashboard:"トップ",system:"システム",documentation:"ドキュメント",guide:"ガイド",permission:"権限",rolePermission:"権限ロール",pagePermission:"ページ権限",directivePermission:"ディレクティブ権限",icons:"アイコン",components:"コンポーネント",tinymce:"TinyMCE",markdown:"Markdown",jsonEditor:"JSON Editor",splitPane:"パネル",avatarUpload:"アバターアップロード",dropzone:"Dropzone",sticky:"Sticky",countTo:"Count To",componentMixin:"コンポーネントMixin",backToTop:"Back To Top",draggableDialog:"Draggable Dialog",draggableKanban:"Draggable 看板",draggableList:"Draggable List",draggableSelect:"Draggable Select",charts:"チャート",barChart:"Barチャート",lineChart:"Lineチャート",mixedChart:"Mixedチャート",example:"Example",nested:"Nested Routes",menu1:"メニュー1","menu1-1":"メニュー 1-1","menu1-2":"メニュー 1-2","menu1-2-1":"メニュー 1-2-1","menu1-2-2":"メニュー 1-2-2","menu1-3":"メニュー 1-3",menu2:"メニュー 2",table:"Table",dynamicTable:"可変 Table",draggableTable:"Draggable Table",inlineEditTable:"Inline Edit Table",complexTable:"Complex Table",tab:"Tab",form:"フォーム",createArticle:"投稿作成",editArticle:"投稿編集",articleList:"投稿リスト",errorPages:"エラーページ",page401:"401",page404:"404",errorLog:"エラーログ",excel:"Excel",exportExcel:"一括エクスポート",selectExcel:"複数選択エクスポート",mergeHeader:"ヘッダーマージ",uploadExcel:"アップロード",zip:"Zip",pdf:"PDF",exportZip:"Export Zip",theme:"テーマ変更",clipboard:"Clipboard",i18n:"多言語",externalLink:"外部リンク",profile:"プロフィール"},navbar:{dashboard:"トップ",github:"GitHub",logOut:"ログアウト",profile:"プロフィール",theme:"テーマ変更",size:"画面サイズ"},login:{title:"ユーザログイン",logIn:"ログイン",username:"ユーザ名",password:"パスワード",any:"any",thirdparty:"外部IDでログイン",thirdpartyTips:"ローカル環境ではログインできません。実装が必要です。"},documentation:{documentation:"ドキュメント",github:"Github Link"},permission:{createRole:"ロール追加",editPermission:"ロール変更",roles:"ロール",switchRoles:"ロール切替",tips:"v-permissionは使えない時があります。例えば: Element-UI の el-tab、 el-table-column 及び他の dom。v-ifを使う必要があります。",delete:"削除",confirm:"確認",cancel:"キャンセル"},guide:{description:"ガイドは各機能の説明です。",button:"ガイドを見る"},components:{documentation:"ドキュメント",tinymceTips:"tinymceは管理画面に重要な機能ですが、その同時に落とし穴がありあす。tinymceを使う道のりが大変でした。Tinymceを使う時に各自のプロジェクト状況で判断が必要です。ドキュメントはこちら",stickyTips:"ページの指定位置へスクロールした場合、表示されます。",backToTopTips1:"トップへスクロールが表示されます。",backToTopTips2:"ボタンのスタイルはカスタマイズできます。例えば、show/hide、height、position。 またはElementのel-tooltipを使って、ツールチップを実装できます。",imageUploadTips:"mockjsは使えないため、カスタマイズしています。公式の最新バージョンを使ってください。",changeLanguageTips:"言語切り替えの成功"},table:{dynamicTips1:"先頭は固定、最後に追加",dynamicTips2:"戦後に追加せず、指定列に追加",dragTips1:"デフォルト順番",dragTips2:"Drag後の順番",title:"タイトル",importance:"重要",type:"タイプ",remark:"評価",search:"検索",add:"追加",export:"エクスポート",reviewer:"レビュアー",id:"番号",date:"日時",author:"作成者",readings:"閲覧数",status:"ステータス",actions:"操作",edit:"編集",publish:"公開",draft:"下書き",delete:"キャンセル",cancel:"キャンセル",confirm:"確認"},example:{warning:"新規作成と編集画面は keep-alive を使えないです。keep-alive の include はrouteのキャッシュは使えないです。そのため、component name を使ってキャッシュさせるようにします。このようなキャッシュ機能を作りたい場合,localStorageを使う手があります。もしくは keep-alive の includeを使って、全ページキャッシュする方法はあります。"},errorLog:{tips:"右上のbugアイコンをクリックしてください。",description:"管理画面はspaを使う場合が多い、ユーザ体現向上はできますが、想定外エラーが発生する場合があります。Vueはそのエラーハンドリング機能を提供し、エラーレポートができます。",documentation:"ドキュメント"},excel:{export:"エクスポート",selectedExport:"エクスポート対象を選択してください。",placeholder:"ファイル名を入力してください。"},zip:{export:"エクスポート",placeholder:"ファイル名を入力してください。"},pdf:{tips:"window.print() を使ってPDFダウンロードしています。"},theme:{change:"テーマ切替",documentation:"ドキュメント",tips:"Tips: テーマの切り替え方法はnavbarのtheme-pickと異なります、使い方はドキュメントを確認してください。"},tagsView:{refresh:"更新",close:"閉じる",closeOthers:"その他閉じる",closeAll:"すべて閉じる"},settings:{title:"システムテーマ",theme:"テーマ色",showTagsView:"Tags-View 開く",showSidebarLogo:"Show Sidebar Logo",fixedHeader:"Fixed Header",sidebarTextTheme:"Sidebar Text Theme"}},k={route:{dashboard:"대시보드",system:"체계",documentation:"문서",guide:"가이드",permission:"권한",rolePermission:"역할 권한",pagePermission:"페이지 권한",directivePermission:"지시 권한",icons:"아이콘",components:"구성 요소",tinymce:"TinyMCE",markdown:"Markdown",jsonEditor:"JSON Editor",splitPane:"패널",avatarUpload:"아바타업로드",dropzone:"Dropzone",sticky:"Sticky",countTo:"Count To",componentMixin:"구성 요소 Mixin",backToTop:"Back To Top",draggableDialog:"드래그 상자",draggableKanban:"드래그 간판",draggableList:"드래그 리스트",draggableSelect:"드래그 선택",charts:"차트",barChart:"막대그래프",lineChart:"꺽은선그래프",mixedChart:"종합차트",example:"예시",nested:"Nested Routes",menu1:"메뉴1","menu1-1":"메뉴 1-1","menu1-2":"메뉴 1-2","menu1-2-1":"메뉴 1-2-1","menu1-2-2":"메뉴 1-2-2","menu1-3":"메뉴 1-3",menu2:"메뉴 2",table:"표",dynamicTable:"Dynamic 표",draggableTable:"Draggable 표",inlineEditTable:"Inline Edit 표",complexTable:"Complex 표",tab:"Tab",form:"형태",createArticle:"게시물 작성",editArticle:"게시물 편집",articleList:"게시물 리스트",errorPages:"에러 페이지",page401:"401",page404:"404",errorLog:"에러 로그",excel:"엑셀",exportExcel:"엑셀 내보내기",selectExcel:"엑셀 선택",mergeHeader:"헤더 병합",uploadExcel:"엑셀 올리기",zip:"Zip",pdf:"PDF",exportZip:"Export Zip",theme:"테마",clipboard:"Clipboard",i18n:"언어",externalLink:"외부 링크",profile:"프로필"},navbar:{dashboard:"대시보드",github:"깃허브",logOut:"로그아웃",profile:"프로필",theme:"테마",size:"크기"},login:{title:"타이틀",logIn:"로그인",username:"이름",password:"비밀번호",any:"any",thirdparty:"외부 ID로 로그인",thirdpartyTips:"로컬 환경에서 로그인 할 수 없습니다."},documentation:{documentation:"문서",github:"깃허브 링크"},permission:{createRole:"역할 추가",editPermission:"권한 수정",roles:"역할",switchRoles:"역할 바꾸기",tips:"v-permission 사용할 때가 있습니다. 예 : Element-UI의 el-tab, el-table-column 및 다른 dom. v-if를 사용해야합니다.",delete:"삭제",confirm:"확인",cancel:"취소"},guide:{description:"각 기능에 대한 설명입니다.",button:"버튼"},components:{documentation:"문서",tinymceTips:"서식있는 텍스트는 관리 백엔드의 핵심 기능이지만 동시에 문제가 많은 곳입니다. 리치 텍스트를 선택하는 과정에서도 많은 우회가 필요했습니다. 시중에 나와있는 일반적인 서식있는 텍스트는 기본적으로 사용되었으며 마침내 Tinymce를 선택했습니다. 보다 자세한 리치 텍스트 비교 및 소개를 참조하십시오.",stickyTips:"페이지의 지정된 위치에 스크롤하면 나타납니다.",backToTopTips1:"페이지가 지정된 위치로 스크롤되면 맨 아래 오른쪽 모서리에 맨 위로 이동 단추가 나타납니다.",backToTopTips2:"버튼 스타일, 표시 / 숨기기, 모양 높이, 반환 높이를 사용자 정의 할 수 있습니다. 텍스트 프롬프트가 필요한 경우 element-ui el-tooltip 요소를 외부에서 사용할 수 있습니다",imageUploadTips:"vue @ 1 버전 만 사용하고 있었고 현재 mockjs와 호환되지 않기 때문에 직접 수정했으며 사용하려는 경우 공식 버전을 사용하는 것이 좋습니다.",changeLanguageTips:"언어 전환 성공"},table:{dynamicTips1:"정렬된 헤더",dynamicTips2:"정렬되지 않은 헤더",dragTips1:"기본 순서",dragTips2:"드래그한 순서",title:"타이틀",importance:"중요성",type:"Type",remark:"Remark",search:"검색",add:"추가",export:"내보내기",reviewer:"Reviewer",id:"ID",date:"날짜",author:"글쓴이",readings:"Readings",status:"상태",actions:"Actions",edit:"수정",publish:"게시",draft:"Draft",delete:"삭제",cancel:"취소",confirm:"확인"},example:{warning:"keep-alive의 'include '는 (는) 현재 경로 기반 캐싱을 지원하지 않으므로 구성 요소 이름을 기반으로 캐시되기 때문에 keep-alive로 페이지를 만들고 편집 할 수 없습니다. 비슷한 캐싱 효과를 얻으려면 localStorage와 같은 브라우저 캐싱 구성표를 사용할 수 있습니다. 또는 keep-alive ' include '를 사용하여 모든 페이지를 직접 캐시하지 마십시오. 자세히보다"},errorLog:{tips:"오른쪽 상단에있는 버그 아이콘을 클릭하십시오",description:"이제 관리 시스템은 기본적으로 스파의 형태이며 사용자 경험을 향상 시키지만 페이지 문제의 가능성을 증가시킵니다. 작은 태만으로 인해 전체 페이지 교착 상태가 발생할 수 있습니다. 다행히 Vue는 오류를 처리하거나 예외를보고 할 수있는 예외 처리를 포착하는 방법을 제공합니다.",documentation:"문서 소개"},excel:{export:"내보내기",selectedExport:"선택 항목 내보내기",placeholder:"파일 이름을 입력하세요.(기본 엑셀 목록)"},zip:{export:"내보내기",placeholder:"파일 이름을 입력하세요.(기본 파일)"},pdf:{tips:"여기서는 window.print ()를 사용하여 PDF 다운로드 기능을 구현합니다."},theme:{change:"테마 바꾸기",documentation:"테마 문서",tips:"Tips: 탐색 모음의 테마 선택과는 다른 응용 프로그램 시나리오가있는 두 가지 다른 스키닝 방법입니다. 자세한 내용은 설명서를 참조하십시오."},tagsView:{refresh:"새로고침",close:"닫기",closeOthers:"기타 닫기",closeAll:"모두 닫기"},settings:{title:"페이지 스타일 설정",theme:"테마 색상",showTagsView:"Tags-View 열기",showSidebarLogo:"사이드 메뉴 로고",fixedHeader:"헤더 고정",sidebarTextTheme:"사이드 메뉴 글꼴 테마"}},T={route:{dashboard:"Dashboard",documentation:"Documentazione",guide:"Guida",permission:"Permessi",pagePermission:"Pagina permessi",rolePermission:"Permessi ruolo",directivePermission:"Direttive Permessi",icons:"Icone",components:"Componenti",tinymce:"Tinymce",markdown:"Markdown",jsonEditor:"Editor JSON",splitPane:"SplitPane",avatarUpload:"Carica Avatar",dropzone:"Dropzone",sticky:"Sticky",countTo:"Conta Fino",componentMixin:"Mixin",backToTop:"Torna su",draggableDialog:"Dialogo Trascinabile",draggableKanban:"Kanban Trascinabile",draggableList:"Lista Trascinabile",draggableSelect:"Select Trascinabile",charts:"Grafici",barChart:"Grafico a Barre",lineChart:"Grafico a Linee",mixedChart:"Grafico Misto",example:"Esempio",nested:"Menu Nidificato",menu1:"Menu 1","menu1-1":"Menu 1-1","menu1-2":"Menu 1-2","menu1-2-1":"Menu 1-2-1","menu1-2-2":"Menu 1-2-2","menu1-3":"Menu 1-3",menu2:"Menu 2",table:"Tabella",dynamicTable:"Tabella Dinamica",draggableTable:"Tabella Trascinabile",inlineEditTable:"Tabella Modifica in Linea",complexTable:"Tabella Complessa",tab:"Tab",form:"Form",createArticle:"Crea Articolo",editArticle:"Modifica Articolo",articleList:"Lista Articoli",errorPages:"Pagine di Errore",page401:"401",page404:"404",errorLog:"Registro Errori",excel:"Excel",exportExcel:"Esporta Excel",selectExcel:"Esporta Selezionato",mergeHeader:"Unisci Intestazione",uploadExcel:"Carica Excel",zip:"Zip",pdf:"PDF",exportZip:"Esporta Zip",theme:"Tema",clipboard:"Appunti",i18n:"I18n",externalLink:"Link Esterno",profile:"Profilo"},navbar:{logOut:"Esci",dashboard:"Dashboard",github:"Github",theme:"Tema",size:"Grandezza Globale",profile:"Profilo"},login:{title:"Accesso",logIn:"Accedi",username:"Utente",password:"Password",any:"qualunque",thirdparty:"Connetti con",thirdpartyTips:"Non può essere simulato in locale, quindi combina la tua simulazione di business, per favore!!!"},documentation:{documentation:"Documentazione",github:"Github Repository"},permission:{createRole:"Nuovo Ruolo",editPermission:"Modifica",roles:"I tuoi ruoli",switchRoles:"Cambia ruoli",tips:"In alcuni casi usare v-permission non ha effetto. Per esempio: Element-UI el-tab o el-table-column e altri componenti che renderizzano il dom dinamicamente. Puoi farlo solo con v-if.",delete:"Elimina",confirm:"Conferma",cancel:"Annulla"},guide:{description:"La pagina Guida è utile per alcune persone che entrano nel progetto per la prima volta. Puoi introdurre brevemente le funzionalità del progetto. Il demo è basato su ",button:"Mostra guida"},components:{documentation:"Documentazione",stickyTips:"when the page is scrolled to the preset position will be sticky on the top.",tinymceTips:"Il testo ricco è una funzionalità fondamentale della gestione backend, ma allo stesso tempo è un posto molto scosceso. Nel processo di selezionare un Rich Text editor o fatto molte ricerche. I Rich Text editor comuni sul mercato sono molto usati, per questo alla fine ho scelto Tinymce. Vedi la più dettagliata comparazione e introduzione al Rich text editor.",backToTopTips1:'Quando la pagina viene spostata alla posizione specificata, il bottone "Torna Su" compare nell\'angolo in basso a destra',backToTopTips2:"Puoi personalizzare lo stile dei bottoni, mostra / nascondi, altezza di apparizione, altezza del ritorno a capo. Se hai bisogno di un prompt di testo, puoi utilizzare gli elementi element-ui el-tooltip esternamente",imageUploadTips:"Da quando usavo la verione 1 di Vue che non è compatibile con mockjs, la ho modificata io stesst, e se la userai, è meglio utilizzare versioni ufficiali.",changeLanguageTips:"Cambio lingua riuscito"},table:{dynamicTips1:"Intestazione Fissa, ordinato dall'ordine delle intestazioni",dynamicTips2:"Intestazione non fissa, ordinato dall'ordine dei click",dragTips1:"Ordine di default",dragTips2:"Ordine post trascinamento",title:"Titolo",importance:"Importanza",type:"Tipo",remark:"Osservazione",search:"Ricerca",add:"Aggiungi",export:"Esporta",reviewer:"Recensore",id:"ID",date:"Data",author:"Autore",readings:"Lettori",status:"Status",actions:"Azioni",edit:"Modifica",publish:"Pubblica",draft:"Bozza",delete:"Elimina",cancel:"Annulla",confirm:"Conferma"},example:{warning:"Creare e modificare pagine non può essere tenuto in cache da keep-alive, perchè l'include di keep-alive attualmente non supporta la cache basata sugli indirizzi, per questo ora viene utilizzata la cache basandosi sul nome del componente. Se vuoi utilizzare uno schema di caching basato sul browser come localStorage. O non usare l'include di keep-alive per mettere le pagine in cache direttamente. Vedi dettagli"},errorLog:{tips:"Per favore clicca l'icona dell'insetto nell'angolo in alto a sinistra",description:"Ora il sistema di gestione è fondamentalmente il form della spa, aumenta l'esperienza utente, ma incrementa anche le possibilità di problemi nelle pagine, una piccola negligenza può portare al blocco della pagina. Fortunatamente Vue offre un modo di catturare le eccezioni, dove puoi manipolare gli errori o riportare un'eccezione.",documentation:"Introduzione documentazione"},excel:{export:"Esporta",selectedExport:"Esporta Elementi Selezionati",placeholder:"Per favore inserisci il nome del file(default: excel-list)"},zip:{export:"Esporta",placeholder:"Per favore inserisci il nome del file(default: file)"},pdf:{tips:"Qui usiamo window.print() per implementare la funzionalità del download PDF."},theme:{change:"Cambia Tema",documentation:"Documentazione Tema",tips:"Consiglio: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details."},tagsView:{refresh:"Ricarica",close:"Chiudi",closeOthers:"Chiudi Altri",closeAll:"Chiudi Tutto"},settings:{title:"Impostazione Stile Pagina",theme:"Colore Tema",showTagsView:"Apri Vista Tag",showSidebarLogo:"Logo Barra Laterale",fixedHeader:"Intestazione Fissa",sidebarTextTheme:"Tema Testo Barra Laterale"},toasts:{switchLanguage:"Cambio lingua effettuato"}};n["default"].use(r["a"]);var O={en:Object(i["a"])(Object(i["a"])({},g),s.a),zh:Object(i["a"])(Object(i["a"])({},v),u.a),es:Object(i["a"])(Object(i["a"])({},y),h.a),ja:Object(i["a"])(Object(i["a"])({},w),m.a),ko:Object(i["a"])(Object(i["a"])({},k),b.a),it:Object(i["a"])({},T)},x=function(){var e=Object(o["a"])();if(e)return document.documentElement.lang=e,e;for(var t=navigator.language.toLowerCase(),a=Object.keys(O),i=0,n=a;i-1)return document.documentElement.lang=r,r}return"en"},E=new r["a"]({locale:x(),messages:O});t["a"]=E},"6fa2":function(e,t,a){"use strict";a("6199")},"704b":function(e,t,a){},7176:function(e,t,a){"use strict";a("0b76")},7383:function(e,t,a){"use strict";a.d(t,"a",(function(){return m}));var i=a("d4ec"),n=a("bee2"),r=a("262e"),o=a("2caf"),c=a("9ab4"),s=a("6fc5"),l=a("0613"),u=a("24ab"),d=a.n(u),h=a("8b99"),p=function(e){Object(r["a"])(a,e);var t=Object(o["a"])(a);function a(){var e;return Object(i["a"])(this,a),e=t.apply(this,arguments),e.theme=d.a.theme,e.fixedHeader=h["a"].fixedHeader,e.showSettings=h["a"].showSettings,e.showTagsView=h["a"].showTagsView,e.showSidebarLogo=h["a"].showSidebarLogo,e.sidebarTextTheme=h["a"].sidebarTextTheme,e}return Object(n["a"])(a,[{key:"ChangeSetting",value:function(e){this.CHANGE_SETTING(e)}},{key:"CHANGE_SETTING",value:function(e){var t=e.key,a=e.value;Object.prototype.hasOwnProperty.call(this,t)&&(this[t]=a)}}]),a}(s["d"]);Object(c["a"])([s["a"]],p.prototype,"ChangeSetting",null),Object(c["a"])([s["c"]],p.prototype,"CHANGE_SETTING",null),p=Object(c["a"])([Object(s["b"])({dynamic:!0,store:l["a"],name:"settings"})],p);var m=Object(s["e"])(p)},"8ad0":function(e,t,a){"use strict";a.d(t,"a",(function(){return v}));var i=a("d4ec"),n=a("bee2"),r=a("262e"),o=a("2caf"),c=a("5530"),s=(a("45fc"),a("caad"),a("2532"),a("4160"),a("159b"),a("99af"),a("9ab4")),l=a("6fc5"),u=a("afbc"),d=a("0613"),h=a("1e24"),p=function(e,t){var a;return!(null===(a=t.meta)||void 0===a||!a.roles)&&e.some((function(e){return t.meta.roles.includes(e)}))},m=function(e){var t,a;return!(null===(t=e.meta)||void 0===t||!t.permissions)&&Object(h["a"])(null===(a=e.meta)||void 0===a?void 0:a.permissions)},f=function(e){var t,a;return!(null!==(t=e.meta)&&void 0!==t&&t.roles)&&!(null!==(a=e.meta)&&void 0!==a&&a.permissions)},b=function e(t,a){var i=[];return t.forEach((function(t){var n=Object(c["a"])({},t);(p(a,n)||m(n)||f(n))&&(n.children&&(n.children=e(n.children,a)),i.push(n))})),i},g=function(e){Object(r["a"])(a,e);var t=Object(o["a"])(a);function a(){var e;return Object(i["a"])(this,a),e=t.apply(this,arguments),e.routes=[],e.dynamicRoutes=[],e}return Object(n["a"])(a,[{key:"SET_ROUTES",value:function(e){this.routes=u["b"].concat(e),this.dynamicRoutes=e}},{key:"GenerateRoutes",value:function(e){var t;t=e.includes("admin")?u["a"]:b(u["a"],e),this.SET_ROUTES(t)}}]),a}(l["d"]);Object(s["a"])([l["c"]],g.prototype,"SET_ROUTES",null),Object(s["a"])([l["a"]],g.prototype,"GenerateRoutes",null),g=Object(s["a"])([Object(l["b"])({dynamic:!0,store:d["a"],name:"permission"})],g);var v=Object(l["e"])(g)},"8b99":function(e,t,a){"use strict";var i={title:"管理后台",showSettings:!0,showTagsView:!0,fixedHeader:!1,showSidebarLogo:!1,errorLog:["production"],sidebarTextTheme:!0,devServerPort:9527,mockServerPort:9528};t["a"]=i},"8db4":function(e,t,a){e.exports={menuBg:"#304156",menuText:"#bfcbd9",menuActiveText:"#409eff"}},"92fc":function(e,t,a){e.exports={menuBg:"#304156",menuText:"#bfcbd9",menuActiveText:"#409eff"}},"981a":function(e,t,a){"use strict";a.d(t,"d",(function(){return n})),a.d(t,"f",(function(){return r})),a.d(t,"h",(function(){return o})),a.d(t,"i",(function(){return c})),a.d(t,"j",(function(){return s})),a.d(t,"e",(function(){return l})),a.d(t,"b",(function(){return u})),a.d(t,"g",(function(){return d})),a.d(t,"c",(function(){return h})),a.d(t,"a",(function(){return p}));var i=a("b32d"),n={id:"",username:"",showname:"",comment:"",locked:!1,roles:[],level:1,sex:"0",password:"",avatar:"",department:""},r=function(e){return Object(i["a"])({url:"/api/admin/info",method:"post",data:e})},o=function(e){return Object(i["a"])({url:"/api/admin/login",method:"post",data:e})},c=function(){return Object(i["a"])({url:"/api/admin/logout",method:"post"})},s=function(e){return Object(i["a"])({url:"/api/admin/save",method:"post",data:e})},l=function(e){return Object(i["a"])({url:"/api/admin/".concat(e,"/delete"),method:"post"})},u=function(e,t){return Object(i["a"])({url:"/api/admin/".concat(e,"/locker"),method:"post",data:{lock:t}})},d=function(e){return Object(i["a"])({url:"/api/admins",method:"get",params:e})},h=function(e){return Object(i["a"])({url:"/api/admin/passwd",method:"post",data:e})},p=function(e){return Object(i["a"])({url:"/api/admin/update_info",method:"post",data:e})}},9858:function(e,t,a){"use strict";a("c804")},"9dba":function(e,t,a){"use strict";a.d(t,"a",(function(){return v}));var i=a("b85c"),n=a("1da1"),r=a("d4ec"),o=a("bee2"),c=a("262e"),s=a("2caf"),l=(a("96cf"),a("b0c0"),a("498a"),a("ac1f"),a("1276"),a("9ab4")),u=a("6fc5"),d=a("981a"),h=a("5581"),p=a("0613"),m=a("afbc"),f=a("8ad0"),b=a("e741"),g=function(e){Object(c["a"])(a,e);var t=Object(s["a"])(a);function a(){var e;return Object(r["a"])(this,a),e=t.apply(this,arguments),e.token=Object(h["d"])()||"",e.name="",e.avatar="",e.introduction="",e.roles=[],e.permissions=[],e.email="",e.department="",e.deptname="",e.level=999,e.sex="0",e}return Object(o["a"])(a,[{key:"Login",value:function(){var e=Object(n["a"])(regeneratorRuntime.mark((function e(t){var a,i,n,r;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return a=t.username,i=t.password,a=a.trim(),e.next=4,Object(d["h"])({username:a,password:i});case 4:n=e.sent,r=n.data,Object(h["i"])(r.token),this.SET_TOKEN(r.token);case 8:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"ResetToken",value:function(){Object(h["e"])(),this.SET_TOKEN(""),this.SET_ROLES([]),this.SET_PERMISSIONS([])}},{key:"GetUserInfo",value:function(){var e=Object(n["a"])(regeneratorRuntime.mark((function e(){var t,a,i,n,r,o,c,s,l,u,h;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(""!==this.token){e.next=2;break}throw Error("GetUserInfo: token is undefined!");case 2:return e.next=4,Object(d["f"])({});case 4:if(t=e.sent,a=t.data,a){e.next=8;break}throw Error("Verification failed, please Login again.");case 8:if(i=a.roles,n=a.showname,r=a.avatar,o=a.introduction,c=a.permissions,s=a.department,l=a.level,u=a.deptname,h=a.sex,i&&!(i.length<=0)){e.next=11;break}throw Error("GetUserInfo: roles must be a non-null array!");case 11:this.SET_ROLES(i),this.SET_NAME(n),this.SET_AVATAR(r),this.SET_INTRODUCTION(o),this.SET_PERMISSIONS(c),this.SET_DEPARTMENT(s),this.SET_LEVEL(l),this.SET_DEPTNAME(u),this.SET_SEX(h);case 20:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"UpdateInfo",value:function(){var e=Object(n["a"])(regeneratorRuntime.mark((function e(t){var a,i,n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:a=t.showname,i=t.sex,n=t.avatar,this.SET_NAME(a),this.SET_SEX(i),this.SET_AVATAR(n);case 4:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"ChangeRoles",value:function(){var e=Object(n["a"])(regeneratorRuntime.mark((function e(t){var a;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return a=t+"-token",this.SET_TOKEN(a),Object(h["i"])(a),e.next=5,this.GetUserInfo();case 5:Object(m["d"])(),f["a"].GenerateRoutes(this.roles),m["c"].addRoutes(f["a"].dynamicRoutes),b["a"].delAllViews();case 9:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"LogOut",value:function(){var e=Object(n["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(""!==this.token){e.next=2;break}throw Error("LogOut: token is undefined!");case 2:return e.next=4,Object(d["i"])();case 4:Object(h["e"])(),this.SET_TOKEN(""),this.SET_ROLES([]),this.SET_PERMISSIONS([]),this.SET_DEPARTMENT("");case 9:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"SET_TOKEN",value:function(e){this.token=e}},{key:"SET_NAME",value:function(e){this.name=e}},{key:"SET_AVATAR",value:function(e){this.avatar=e}},{key:"SET_INTRODUCTION",value:function(e){this.introduction=e}},{key:"SET_ROLES",value:function(e){this.roles=e}},{key:"SET_DEPARTMENT",value:function(e){this.department=e}},{key:"SET_DEPTNAME",value:function(e){this.deptname=e}},{key:"SET_SEX",value:function(e){this.sex=e}},{key:"SET_LEVEL",value:function(e){this.level=e}},{key:"SET_PERMISSIONS",value:function(e){var t,a=[],n=Object(i["a"])(e);try{for(n.s();!(t=n.n()).done;){var r=t.value;"*"===r?a.push(["*","*"]):a.push(r.split(":"))}}catch(o){n.e(o)}finally{n.f()}this.permissions=a}}]),a}(u["d"]);Object(l["a"])([u["a"]],g.prototype,"Login",null),Object(l["a"])([u["a"]],g.prototype,"ResetToken",null),Object(l["a"])([u["a"]],g.prototype,"GetUserInfo",null),Object(l["a"])([u["a"]],g.prototype,"UpdateInfo",null),Object(l["a"])([u["a"]],g.prototype,"ChangeRoles",null),Object(l["a"])([u["a"]],g.prototype,"LogOut",null),Object(l["a"])([u["c"]],g.prototype,"SET_TOKEN",null),Object(l["a"])([u["c"]],g.prototype,"SET_NAME",null),Object(l["a"])([u["c"]],g.prototype,"SET_AVATAR",null),Object(l["a"])([u["c"]],g.prototype,"SET_INTRODUCTION",null),Object(l["a"])([u["c"]],g.prototype,"SET_ROLES",null),Object(l["a"])([u["c"]],g.prototype,"SET_DEPARTMENT",null),Object(l["a"])([u["c"]],g.prototype,"SET_DEPTNAME",null),Object(l["a"])([u["c"]],g.prototype,"SET_SEX",null),Object(l["a"])([u["c"]],g.prototype,"SET_LEVEL",null),Object(l["a"])([u["c"]],g.prototype,"SET_PERMISSIONS",null),g=Object(l["a"])([Object(u["b"])({dynamic:!0,store:p["a"],name:"user"})],g);var v=Object(u["e"])(g)},a1de:function(e,t,a){e.exports={menuBg:"#304156",menuText:"#bfcbd9",menuActiveText:"#409eff"}},ac1a:function(e,t,a){"use strict";a.d(t,"b",(function(){return i})),a.d(t,"a",(function(){return m}));var i,n=a("d4ec"),r=a("bee2"),o=a("262e"),c=a("2caf"),s=a("9ab4"),l=a("6fc5"),u=a("5581"),d=a("6ebf"),h=a("0613");(function(e){e[e["Mobile"]=0]="Mobile",e[e["Desktop"]=1]="Desktop"})(i||(i={}));var p=function(e){Object(o["a"])(a,e);var t=Object(c["a"])(a);function a(){var e;return Object(n["a"])(this,a),e=t.apply(this,arguments),e.sidebar={opened:"closed"!==Object(u["b"])(),withoutAnimation:!1},e.device=i.Desktop,e.language=Object(d["b"])(),e.size=Object(u["c"])()||"medium",e}return Object(r["a"])(a,[{key:"TOGGLE_SIDEBAR",value:function(e){this.sidebar.opened=!this.sidebar.opened,this.sidebar.withoutAnimation=e,this.sidebar.opened?Object(u["g"])("opened"):Object(u["g"])("closed")}},{key:"CLOSE_SIDEBAR",value:function(e){this.sidebar.opened=!1,this.sidebar.withoutAnimation=e,Object(u["g"])("closed")}},{key:"TOGGLE_DEVICE",value:function(e){this.device=e}},{key:"SET_LANGUAGE",value:function(e){this.language=e,Object(u["f"])(this.language)}},{key:"SET_SIZE",value:function(e){this.size=e,Object(u["h"])(this.size)}},{key:"ToggleSideBar",value:function(e){this.TOGGLE_SIDEBAR(e)}},{key:"CloseSideBar",value:function(e){this.CLOSE_SIDEBAR(e)}},{key:"ToggleDevice",value:function(e){this.TOGGLE_DEVICE(e)}},{key:"SetLanguage",value:function(e){this.SET_LANGUAGE(e)}},{key:"SetSize",value:function(e){this.SET_SIZE(e)}}]),a}(l["d"]);Object(s["a"])([l["c"]],p.prototype,"TOGGLE_SIDEBAR",null),Object(s["a"])([l["c"]],p.prototype,"CLOSE_SIDEBAR",null),Object(s["a"])([l["c"]],p.prototype,"TOGGLE_DEVICE",null),Object(s["a"])([l["c"]],p.prototype,"SET_LANGUAGE",null),Object(s["a"])([l["c"]],p.prototype,"SET_SIZE",null),Object(s["a"])([l["a"]],p.prototype,"ToggleSideBar",null),Object(s["a"])([l["a"]],p.prototype,"CloseSideBar",null),Object(s["a"])([l["a"]],p.prototype,"ToggleDevice",null),Object(s["a"])([l["a"]],p.prototype,"SetLanguage",null),Object(s["a"])([l["a"]],p.prototype,"SetSize",null),p=Object(s["a"])([Object(l["b"])({dynamic:!0,store:h["a"],name:"app"})],p);var m=Object(l["e"])(p)},ad9d:function(e,t,a){"use strict";a("e15f")},adc6:function(e,t,a){"use strict";a("232e")},afbc:function(e,t,a){"use strict";a.d(t,"b",(function(){return Ta})),a.d(t,"a",(function(){return Oa})),a.d(t,"d",(function(){return Sa}));a("d3b7"),a("3ca3"),a("ddb0");var i=a("2b0e"),n=a("8c4f"),r=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"app-wrapper",class:e.classObj},[e.classObj.mobile&&e.sidebar.opened?a("div",{staticClass:"drawer-bg",on:{click:e.handleClickOutside}}):e._e(),a("sidebar",{staticClass:"sidebar-container"}),a("div",{staticClass:"main-container",class:{hasTagsView:e.showTagsView}},[a("div",{class:{"fixed-header":e.fixedHeader}},[a("navbar"),e.showTagsView?a("tags-view"):e._e()],1),a("app-main"),e.showSettings?a("right-panel",[a("settings")],1):e._e()],1)],1)},o=[],c=a("d4ec"),s=a("bee2"),l=a("262e"),u=a("2caf"),d=a("9ab4"),h=a("1b40"),p=a("2fe1"),m=a("ac1a"),f=a("7383"),b=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("section",{staticClass:"app-main"},[a("transition",{attrs:{name:"fade-transform",mode:"out-in"}},[a("keep-alive",{attrs:{include:e.cachedViews}},[a("router-view",{key:e.key})],1)],1)],1)},g=[],v=a("e741"),y=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){return Object(c["a"])(this,a),t.apply(this,arguments)}return Object(s["a"])(a,[{key:"cachedViews",get:function(){return v["a"].cachedViews}},{key:"key",get:function(){return this.$route.path}}]),a}(h["c"]);y=Object(d["a"])([Object(h["a"])({name:"AppMain"})],y);var w=y,k=w,T=(a("7176"),a("0c7c")),O=Object(T["a"])(k,b,g,!1,null,"d4c70f86",null),x=O.exports,E=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"navbar"},[a("hamburger",{staticClass:"hamburger-container",attrs:{id:"hamburger-container","is-active":e.sidebar.opened},on:{"toggle-click":e.toggleSideBar}}),a("breadcrumb",{staticClass:"breadcrumb-container",attrs:{id:"breadcrumb-container"}}),a("div",{staticClass:"right-menu"},["mobile"!==e.device?[a("header-search",{staticClass:"right-menu-item"}),a("error-log",{staticClass:"errLog-container right-menu-item hover-effect"}),a("screenfull",{staticClass:"right-menu-item hover-effect"}),a("el-tooltip",{attrs:{content:e.$t("navbar.size"),effect:"dark",placement:"bottom"}},[a("size-select",{staticClass:"right-menu-item hover-effect"})],1),a("lang-select",{staticClass:"right-menu-item hover-effect"})]:e._e(),a("el-dropdown",{staticClass:"avatar-container right-menu-item hover-effect",attrs:{trigger:"click"}},[a("div",{staticClass:"avatar-wrapper"},[a("img",{staticClass:"user-avatar",attrs:{src:e.avatar+"?imageView2/1/w/80/h/80"}}),a("i",{staticClass:"el-icon-caret-bottom"})]),a("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},[a("router-link",{attrs:{to:"/"}},[a("el-dropdown-item",[e._v(" "+e._s(e.$t("navbar.dashboard"))+" ")])],1),a("router-link",{attrs:{to:"/profile/"}},[a("el-dropdown-item",[e._v(" "+e._s(e.$t("navbar.profile"))+" ")])],1),a("router-link",{attrs:{to:"/password"}},[a("el-dropdown-item",[e._v(" "+e._s(e.$t("navbar.password"))+" ")])],1),a("el-dropdown-item",{attrs:{divided:""},nativeOn:{click:function(t){return e.logout(t)}}},[a("span",{staticStyle:{display:"block"}},[e._v(" "+e._s(e.$t("navbar.logOut"))+" ")])])],1)],1)],2)],1)},S=[],_=a("1da1"),z=(a("96cf"),a("0d03"),a("25f0"),a("9dba")),j=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-breadcrumb",{staticClass:"app-breadcrumb",attrs:{separator:"/"}},[a("transition-group",{attrs:{name:"breadcrumb"}},e._l(e.breadcrumbs,(function(t,i){return a("el-breadcrumb-item",{key:t.path},["noredirect"===t.redirect||i===e.breadcrumbs.length-1?a("span",{staticClass:"no-redirect"},[e._v(e._s(e.$t("route."+t.meta.title)))]):a("a",{on:{click:function(a){return a.preventDefault(),e.handleLink(t)}}},[e._v(e._s(e.$t("route."+t.meta.title)))])])})),1)],1)},C=[],V=(a("2ca0"),a("4de4"),a("99af"),a("b0c0"),a("498a"),a("84d6")),L=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){var e;return Object(c["a"])(this,a),e=t.apply(this,arguments),e.breadcrumbs=[],e}return Object(s["a"])(a,[{key:"onRouteChange",value:function(e){e.path.startsWith("/redirect/")||this.getBreadcrumb()}},{key:"created",value:function(){this.getBreadcrumb()}},{key:"getBreadcrumb",value:function(){var e=this.$route.matched.filter((function(e){return e.meta&&e.meta.title})),t=e[0];this.isDashboard(t)||(e=[{path:"/dashboard",meta:{title:"dashboard"}}].concat(e)),this.breadcrumbs=e.filter((function(e){return e.meta&&e.meta.title&&!1!==e.meta.breadcrumb}))}},{key:"isDashboard",value:function(e){var t=e&&e.name;return!!t&&t.trim().toLocaleLowerCase()==="Dashboard".toLocaleLowerCase()}},{key:"pathCompile",value:function(e){var t=this.$route.params,a=Object(V["a"])(e);return a(t)}},{key:"handleLink",value:function(e){var t=e.redirect,a=e.path;t?this.$router.push(t)["catch"]((function(e){console.warn(e)})):this.$router.push(this.pathCompile(a))["catch"]((function(e){console.warn(e)}))}}]),a}(h["c"]);Object(d["a"])([Object(h["d"])("$route")],L.prototype,"onRouteChange",null),L=Object(d["a"])([Object(h["a"])({name:"Breadcrumb"})],L);var M=L,H=M,A=(a("4155"),Object(T["a"])(H,j,C,!1,null,"48aca8f5",null)),P=A.exports,D=function(){var e=this,t=e.$createElement,a=e._self._c||t;return e.errorLogs.length>0?a("div",[a("el-badge",{staticStyle:{"line-height":"25px","margin-top":"-5px"},attrs:{"is-dot":!0},nativeOn:{click:function(t){e.dialogTableVisible=!0}}},[a("el-button",{staticStyle:{padding:"8px 10px"},attrs:{size:"small",type:"danger"}},[a("svg-icon",{attrs:{name:"bug"}})],1)],1),a("el-dialog",{attrs:{visible:e.dialogTableVisible,width:"80%","append-to-body":""},on:{"update:visible":function(t){e.dialogTableVisible=t}}},[a("div",{attrs:{slot:"title"},slot:"title"},[a("span",{staticStyle:{"padding-right":"10px"}},[e._v("Error Log")]),a("el-button",{attrs:{size:"mini",type:"primary",icon:"el-icon-delete"},on:{click:e.clearAll}},[e._v(" Clear All ")])],1),a("el-table",{attrs:{data:e.errorLogs,border:""}},[a("el-table-column",{attrs:{label:"Message"},scopedSlots:e._u([{key:"default",fn:function(t){var i=t.row;return[a("div",[a("span",{staticClass:"message-title"},[e._v("Msg:")]),a("el-tag",{attrs:{type:"danger"}},[e._v(" "+e._s(i.err.message)+" ")])],1),a("br"),a("div",[a("span",{staticClass:"message-title",staticStyle:{"padding-right":"10px"}},[e._v("Info: ")]),a("el-tag",{attrs:{type:"warning"}},[e._v(" "+e._s(i.vm.$vnode.tag)+" error in "+e._s(i.info)+" ")])],1),a("br"),a("div",[a("span",{staticClass:"message-title",staticStyle:{"padding-right":"16px"}},[e._v("Url: ")]),a("el-tag",{attrs:{type:"success"}},[e._v(" "+e._s(i.url)+" ")])],1)]}}],null,!1,3134886942)}),a("el-table-column",{attrs:{label:"Stack"},scopedSlots:e._u([{key:"default",fn:function(t){var a=t.row;return[e._v(" "+e._s(a.err.stack)+" ")]}}],null,!1,284746202)})],1)],1)],1):e._e()},I=[],R=(a("a434"),a("6fc5")),B=a("0613"),$=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){var e;return Object(c["a"])(this,a),e=t.apply(this,arguments),e.logs=[],e}return Object(s["a"])(a,[{key:"ADD_ERROR_LOG",value:function(e){this.logs.push(e)}},{key:"CLEAR_ERROR_LOG",value:function(){this.logs.splice(0)}},{key:"AddErrorLog",value:function(e){this.ADD_ERROR_LOG(e)}},{key:"ClearErrorLog",value:function(){this.CLEAR_ERROR_LOG()}}]),a}(R["d"]);Object(d["a"])([R["c"]],$.prototype,"ADD_ERROR_LOG",null),Object(d["a"])([R["c"]],$.prototype,"CLEAR_ERROR_LOG",null),Object(d["a"])([R["a"]],$.prototype,"AddErrorLog",null),Object(d["a"])([R["a"]],$.prototype,"ClearErrorLog",null),$=Object(d["a"])([Object(R["b"])({dynamic:!0,store:B["a"],name:"errorLog"})],$);var N=Object(R["e"])($),q=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){var e;return Object(c["a"])(this,a),e=t.apply(this,arguments),e.dialogTableVisible=!1,e}return Object(s["a"])(a,[{key:"errorLogs",get:function(){return N.logs}},{key:"clearAll",value:function(){this.dialogTableVisible=!1,N.ClearErrorLog()}}]),a}(h["c"]);q=Object(d["a"])([Object(h["a"])({name:"ErrorLog"})],q);var G=q,F=G,W=(a("435a"),Object(T["a"])(F,D,I,!1,null,"72a28363",null)),U=W.exports,Z=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{class:[{"is-active":e.isActive}],on:{click:e.toggleClick}},[a("svg-icon",{attrs:{name:"hamburger",width:"20",height:"20"}})],1)},Q=[],K=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){return Object(c["a"])(this,a),t.apply(this,arguments)}return Object(s["a"])(a,[{key:"toggleClick",value:function(){this.$emit("toggle-click")}}]),a}(h["c"]);Object(d["a"])([Object(h["b"])({default:!1})],K.prototype,"isActive",void 0),K=Object(d["a"])([Object(h["a"])({name:"Hamburger"})],K);var Y=K,J=Y,X=(a("adc6"),Object(T["a"])(J,Z,Q,!1,null,"715ce9d0",null)),ee=X.exports,te=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"header-search",class:{show:e.show},attrs:{id:"header-search"}},[a("svg-icon",{staticClass:"search-icon",attrs:{name:"search"},on:{click:function(t){return t.stopPropagation(),e.click(t)}}}),a("el-select",{ref:"headerSearchSelect",staticClass:"header-search-select",attrs:{"remote-method":e.querySearch,filterable:"","default-first-option":"",remote:"",placeholder:"Search"},on:{change:e.change},model:{value:e.search,callback:function(t){e.search=t},expression:"search"}},e._l(e.options,(function(e){return a("el-option",{key:e.path,attrs:{value:e,label:e.meta.title.join(" > ")}})})),1)],1)},ae=[],ie=a("2909"),ne=a("b85c"),re=(a("ac1f"),a("841c"),a("d81d"),a("df7c")),oe=a.n(re),ce=a("6062"),se=a("8ad0"),le=a("6ebf"),ue=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){var e;return Object(c["a"])(this,a),e=t.apply(this,arguments),e.search="",e.show=!1,e.options=[],e.searchPool=[],e}return Object(s["a"])(a,[{key:"routes",get:function(){return se["a"].routes}},{key:"lang",get:function(){return m["a"].language}},{key:"onLangChange",value:function(){this.searchPool=this.generateRoutes(this.routes)}},{key:"onRoutesChange",value:function(){this.searchPool=this.generateRoutes(this.routes)}},{key:"onSearchPoolChange",value:function(e){this.initFuse(e)}},{key:"onShowChange",value:function(e){e?document.body.addEventListener("click",this.close):document.body.removeEventListener("click",this.close)}},{key:"mounted",value:function(){this.searchPool=this.generateRoutes(this.routes)}},{key:"click",value:function(){this.show=!this.show,this.show&&this.$refs.headerSearchSelect&&this.$refs.headerSearchSelect.focus()}},{key:"close",value:function(){this.$refs.headerSearchSelect&&this.$refs.headerSearchSelect.blur(),this.options=[],this.show=!1}},{key:"change",value:function(e){var t=this;this.$router.push(e.path)["catch"]((function(e){console.warn(e)})),this.search="",this.options=[],this.$nextTick((function(){t.show=!1}))}},{key:"initFuse",value:function(e){this.fuse=new ce["a"](e,{shouldSort:!0,threshold:.4,location:0,distance:100,minMatchCharLength:1,keys:[{name:"title",weight:.7},{name:"path",weight:.3}]})}},{key:"generateRoutes",value:function(e){var t,a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"/",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],n=[],r=Object(ne["a"])(e);try{for(r.s();!(t=r.n()).done;){var o=t.value;if(!o.meta||!o.meta.hidden){var c={path:oe.a.resolve(a,o.path),meta:{title:Object(ie["a"])(i)}};if(o.meta&&o.meta.title){var s=le["a"].t("route.".concat(o.meta.title)).toString();c.meta.title=[].concat(Object(ie["a"])(c.meta.title),[s]),"noRedirect"!==o.redirect&&n.push(c)}if(o.children){var l=this.generateRoutes(o.children,c.path,c.meta.title);l.length>=1&&(n=[].concat(Object(ie["a"])(n),Object(ie["a"])(l)))}}}}catch(u){r.e(u)}finally{r.f()}return n}},{key:"querySearch",value:function(e){""!==e?this.fuse&&(this.options=this.fuse.search(e).map((function(e){return e.item}))):this.options=[]}}]),a}(h["c"]);Object(d["a"])([Object(h["d"])("lang")],ue.prototype,"onLangChange",null),Object(d["a"])([Object(h["d"])("routes")],ue.prototype,"onRoutesChange",null),Object(d["a"])([Object(h["d"])("searchPool")],ue.prototype,"onSearchPoolChange",null),Object(d["a"])([Object(h["d"])("show")],ue.prototype,"onShowChange",null),ue=Object(d["a"])([Object(h["a"])({name:"HeaderSearch"})],ue);var de=ue,he=de,pe=(a("d2c9"),Object(T["a"])(he,te,ae,!1,null,"ed2ef868",null)),me=pe.exports,fe=a("1131"),be=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{attrs:{id:"screenfull"}},[a("svg-icon",{attrs:{name:e.isFullscreen?"exit-fullscreen":"fullscreen"},on:{click:e.click}})],1)},ge=[],ve=a("93bf"),ye=a.n(ve),we=ye.a,ke=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){var e;return Object(c["a"])(this,a),e=t.apply(this,arguments),e.isFullscreen=!1,e}return Object(s["a"])(a,[{key:"mounted",value:function(){we.isEnabled&&we.on("change",this.change)}},{key:"beforeDestory",value:function(){we.isEnabled&&we.off("change",this.change)}},{key:"change",value:function(){we.isEnabled&&(this.isFullscreen=we.isFullscreen)}},{key:"click",value:function(){if(!we.isEnabled)return this.$message({message:"you browser can not work",type:"warning"}),!1;we.toggle()}}]),a}(h["c"]);ke=Object(d["a"])([Object(h["a"])({name:"Screenfull"})],ke);var Te=ke,Oe=Te,xe=Object(T["a"])(Oe,be,ge,!1,null,null,null),Ee=xe.exports,Se=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-dropdown",{attrs:{id:"size-select",trigger:"click"},on:{command:e.handleSetSize}},[a("div",[a("svg-icon",{staticClass:"size-icon",attrs:{name:"size"}})],1),a("el-dropdown-menu",{attrs:{slot:"dropdown"},slot:"dropdown"},e._l(e.sizeOptions,(function(t){return a("el-dropdown-item",{key:t.value,attrs:{disabled:e.size===t.value,command:t.value}},[e._v(" "+e._s(t.label)+" ")])})),1)],1)},_e=[],ze=(a("5319"),function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){var e;return Object(c["a"])(this,a),e=t.apply(this,arguments),e.sizeOptions=[{label:"Default",value:"default"},{label:"Medium",value:"medium"},{label:"Small",value:"small"},{label:"Mini",value:"mini"}],e}return Object(s["a"])(a,[{key:"size",get:function(){return m["a"].size}},{key:"handleSetSize",value:function(e){this.$ELEMENT.size=e,m["a"].SetSize(e),this.refreshView(),this.$message({message:"Switch Size Success",type:"success"})}},{key:"refreshView",value:function(){var e=this;v["a"].delAllCachedViews();var t=this.$route.fullPath;this.$nextTick((function(){e.$router.replace({path:"/redirect"+t})["catch"]((function(e){console.warn(e)}))}))}}]),a}(h["c"]));ze=Object(d["a"])([Object(h["a"])({name:"SizeSelect"})],ze);var je=ze,Ce=je,Ve=Object(T["a"])(Ce,Se,_e,!1,null,null,null),Le=Ve.exports,Me=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){return Object(c["a"])(this,a),t.apply(this,arguments)}return Object(s["a"])(a,[{key:"sidebar",get:function(){return m["a"].sidebar}},{key:"device",get:function(){return m["a"].device.toString()}},{key:"avatar",get:function(){return z["a"].avatar}},{key:"toggleSideBar",value:function(){m["a"].ToggleSideBar(!1)}},{key:"logout",value:function(){var e=Object(_["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,z["a"].LogOut();case 2:this.$router.push("/login?redirect=".concat(this.$route.fullPath))["catch"]((function(e){console.warn(e)}));case 3:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()}]),a}(h["c"]);Me=Object(d["a"])([Object(h["a"])({name:"Navbar",components:{Breadcrumb:P,ErrorLog:U,Hamburger:ee,HeaderSearch:me,LangSelect:fe["a"],Screenfull:Ee,SizeSelect:Le}})],Me);var He=Me,Ae=He,Pe=(a("ad9d"),Object(T["a"])(Ae,E,S,!1,null,"1a173b7f",null)),De=Pe.exports,Ie=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"drawer-container"},[a("div",[a("h3",{staticClass:"drawer-title"},[e._v(" "+e._s(e.$t("settings.title"))+" ")]),a("div",{staticClass:"drawer-item"},[a("span",[e._v(e._s(e.$t("settings.theme")))]),a("theme-picker",{staticStyle:{float:"right",height:"26px",margin:"-3px 8px 0 0"},on:{change:e.themeChange}})],1),a("div",{staticClass:"drawer-item"},[a("span",[e._v(e._s(e.$t("settings.showTagsView")))]),a("el-switch",{staticClass:"drawer-switch",model:{value:e.showTagsView,callback:function(t){e.showTagsView=t},expression:"showTagsView"}})],1),a("div",{staticClass:"drawer-item"},[a("span",[e._v(e._s(e.$t("settings.showSidebarLogo")))]),a("el-switch",{staticClass:"drawer-switch",model:{value:e.showSidebarLogo,callback:function(t){e.showSidebarLogo=t},expression:"showSidebarLogo"}})],1),a("div",{staticClass:"drawer-item"},[a("span",[e._v(e._s(e.$t("settings.fixedHeader")))]),a("el-switch",{staticClass:"drawer-switch",model:{value:e.fixedHeader,callback:function(t){e.fixedHeader=t},expression:"fixedHeader"}})],1),a("div",{staticClass:"drawer-item"},[a("span",[e._v(e._s(e.$t("settings.sidebarTextTheme")))]),a("el-switch",{staticClass:"drawer-switch",model:{value:e.sidebarTextTheme,callback:function(t){e.sidebarTextTheme=t},expression:"sidebarTextTheme"}})],1)])])},Re=[],Be=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-color-picker",{staticClass:"theme-picker",attrs:{predefine:["#409EFF","#1890ff","#304156","#212121","#11a983","#13c2c2","#6959CD","#f5222d"],"popper-class":"theme-picker-dropdown"},model:{value:e.theme,callback:function(t){e.theme=t},expression:"theme"}})},$e=[],Ne=(a("fb6a"),a("4d63"),a("4160"),a("159b"),a("e25e"),a("a15b"),a("a9e3"),a("b680"),a("f6f8").version),qe="#409EFF",Ge=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){var e;return Object(c["a"])(this,a),e=t.apply(this,arguments),e.chalk="",e.theme="",e}return Object(s["a"])(a,[{key:"defaultTheme",get:function(){return f["a"].theme}},{key:"onDefaultThemeChange",value:function(e){this.theme=e}},{key:"onThemeChange",value:function(){var e=Object(_["a"])(regeneratorRuntime.mark((function e(t){var a,i,n,r,o,c,s,l,u=this;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(t){e.next=2;break}return e.abrupt("return");case 2:if(a=this.chalk?this.theme:qe,i=this.getThemeCluster(t.replace("#","")),n=this.getThemeCluster(a.replace("#","")),r=this.$message({message:" Compiling the theme",customClass:"theme-message",type:"success",duration:0,iconClass:"el-icon-loading"}),this.chalk){e.next=10;break}return o="https://unpkg.com/element-ui@".concat(Ne,"/lib/theme-chalk/index.css"),e.next=10,this.getCSSString(o,"chalk");case 10:c=function(e,t){return function(){var a=u.getThemeCluster(qe.replace("#","")),n=u.updateStyle(u[e],a,i),r=document.getElementById(t);r||(r=document.createElement("style"),r.setAttribute("id",t),document.head.appendChild(r)),r.innerText=n}},s=c("chalk","chalk-style"),s(),l=[].slice.call(document.querySelectorAll("style")),l=l.filter((function(e){var t=e.innerText;return new RegExp(a,"i").test(t)&&!/Chalk Variables/.test(t)})),l.forEach((function(e){var t=e.innerText;"string"===typeof t&&(e.innerText=u.updateStyle(t,n,i))})),this.$emit("change",t),r.close();case 18:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"updateStyle",value:function(e,t,a){var i=e;return t.forEach((function(e,t){i=i.replace(new RegExp(e,"ig"),a[t])})),i}},{key:"getCSSString",value:function(e,t){var a=this;return new Promise((function(i){var n=new XMLHttpRequest;n.onreadystatechange=function(){4===n.readyState&&200===n.status&&(a[t]=n.responseText.replace(/@font-face{[^}]+}/,""),i())},n.open("GET",e),n.send()}))}},{key:"getThemeCluster",value:function(e){for(var t=function(e,t){var a=parseInt(e.slice(0,2),16),i=parseInt(e.slice(2,4),16),n=parseInt(e.slice(4,6),16);return 0===t?[a,i,n].join(","):(a+=Math.round(t*(255-a)),i+=Math.round(t*(255-i)),n+=Math.round(t*(255-n)),"#".concat(a.toString(16)).concat(i.toString(16)).concat(n.toString(16)))},a=function(e,t){var a=parseInt(e.slice(0,2),16),i=parseInt(e.slice(2,4),16),n=parseInt(e.slice(4,6),16);return a=Math.round((1-t)*a),i=Math.round((1-t)*i),n=Math.round((1-t)*n),"#".concat(a.toString(16)).concat(i.toString(16)).concat(n.toString(16))},i=[e],n=0;n<=9;n++)i.push(t(e,Number((n/10).toFixed(2))));return i.push(a(e,.1)),i}}]),a}(h["c"]);Object(d["a"])([Object(h["d"])("defaultTheme",{immediate:!0})],Ge.prototype,"onDefaultThemeChange",null),Object(d["a"])([Object(h["d"])("theme")],Ge.prototype,"onThemeChange",null),Ge=Object(d["a"])([Object(h["a"])({name:"ThemePicker"})],Ge);var Fe=Ge,We=Fe,Ue=(a("6fa2"),Object(T["a"])(We,Be,$e,!1,null,null,null)),Ze=Ue.exports,Qe=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){return Object(c["a"])(this,a),t.apply(this,arguments)}return Object(s["a"])(a,[{key:"fixedHeader",get:function(){return f["a"].fixedHeader},set:function(e){f["a"].ChangeSetting({key:"fixedHeader",value:e})}},{key:"showTagsView",get:function(){return f["a"].showTagsView},set:function(e){f["a"].ChangeSetting({key:"showTagsView",value:e})}},{key:"showSidebarLogo",get:function(){return f["a"].showSidebarLogo},set:function(e){f["a"].ChangeSetting({key:"showSidebarLogo",value:e})}},{key:"sidebarTextTheme",get:function(){return f["a"].sidebarTextTheme},set:function(e){f["a"].ChangeSetting({key:"sidebarTextTheme",value:e})}},{key:"themeChange",value:function(e){f["a"].ChangeSetting({key:"theme",value:e})}}]),a}(h["c"]);Qe=Object(d["a"])([Object(h["a"])({name:"Settings",components:{ThemePicker:Ze}})],Qe);var Ke=Qe,Ye=Ke,Je=(a("017a"),Object(T["a"])(Ye,Ie,Re,!1,null,"f76a8f60",null)),Xe=Je.exports,et=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{class:{"has-logo":e.showLogo}},[e.showLogo?a("sidebar-logo",{attrs:{collapse:e.isCollapse}}):e._e(),a("el-scrollbar",{attrs:{"wrap-class":"scrollbar-wrapper"}},[a("el-menu",{attrs:{"default-active":e.activeMenu,collapse:e.isCollapse,"background-color":e.variables.menuBg,"text-color":e.variables.menuText,"active-text-color":e.menuActiveTextColor,"unique-opened":!1,"collapse-transition":!1,mode:"vertical"}},e._l(e.routes,(function(t){return a("sidebar-item",{key:t.path,attrs:{item:t,"base-path":t.path,"is-collapse":e.isCollapse}})})),1)],1)],1)},tt=[],at=function(){var e=this,t=e.$createElement,a=e._self._c||t;return e.item.meta&&e.item.meta.hidden?e._e():a("div",{class:[e.isCollapse?"simple-mode":"full-mode",{"first-level":e.isFirstLevel}]},[e.alwaysShowRootMenu||!e.theOnlyOneChild||e.theOnlyOneChild.children?a("el-submenu",{attrs:{index:e.resolvePath(e.item.path),"popper-append-to-body":""}},[a("template",{slot:"title"},[e.item.meta&&e.item.meta.icon?a("svg-icon",{attrs:{name:e.item.meta.icon}}):e._e(),e.item.meta&&e.item.meta.elicon?a("i",{class:e.item.meta.elicon}):e._e(),e.item.meta&&e.item.meta.title?a("span",{attrs:{slot:"title"},slot:"title"},[e._v(e._s(e.$t("route."+e.item.meta.title)))]):e._e()],1),e.item.children?e._l(e.item.children,(function(t){return a("sidebar-item",{key:t.path,staticClass:"nest-menu",attrs:{item:t,"is-collapse":e.isCollapse,"is-first-level":!1,"base-path":e.resolvePath(t.path)}})})):e._e()],2):[e.theOnlyOneChild.meta?a("sidebar-item-link",{attrs:{to:e.resolvePath(e.theOnlyOneChild.path)}},[a("el-menu-item",{class:{"submenu-title-noDropdown":e.isFirstLevel},attrs:{index:e.resolvePath(e.theOnlyOneChild.path)}},[e.theOnlyOneChild.meta.icon?a("svg-icon",{attrs:{name:e.theOnlyOneChild.meta.icon}}):e._e(),e.item.meta&&e.item.meta.elicon?a("i",{class:e.item.meta.elicon}):e._e(),e.theOnlyOneChild.meta.title?a("span",{attrs:{slot:"title"},slot:"title"},[e._v(e._s(e.$t("route."+e.theOnlyOneChild.meta.title)))]):e._e()],1)],1):e._e()]],2)},it=[],nt=a("5530"),rt=(a("c975"),a("277d"),function(e){return/^(https?:|mailto:|tel:)/.test(e)}),ot=function(){var e=this,t=e.$createElement,a=e._self._c||t;return e.isExternal(e.to)?a("a",{attrs:{href:e.to,target:"_blank",rel:"noopener"}},[e._t("default")],2):a("router-link",{attrs:{to:e.to}},[e._t("default")],2)},ct=[],st=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){var e;return Object(c["a"])(this,a),e=t.apply(this,arguments),e.isExternal=rt,e}return a}(h["c"]);Object(d["a"])([Object(h["b"])({required:!0})],st.prototype,"to",void 0),st=Object(d["a"])([Object(h["a"])({name:"SidebarItemLink"})],st);var lt=st,ut=lt,dt=Object(T["a"])(ut,ot,ct,!1,null,null,null),ht=dt.exports,pt=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){return Object(c["a"])(this,a),t.apply(this,arguments)}return Object(s["a"])(a,[{key:"alwaysShowRootMenu",get:function(){return!(!this.item.meta||!this.item.meta.alwaysShow)}},{key:"showingChildNumber",get:function(){if(this.item.children){var e=this.item.children.filter((function(e){return!e.meta||!e.meta.hidden}));return e.length}return 0}},{key:"theOnlyOneChild",get:function(){if(this.showingChildNumber>1)return null;if(this.item.children){var e,t=Object(ne["a"])(this.item.children);try{for(t.s();!(e=t.n()).done;){var a=e.value;if(!a.meta||!a.meta.hidden)return a}}catch(i){t.e(i)}finally{t.f()}}return Object(nt["a"])(Object(nt["a"])({},this.item),{},{path:""})}},{key:"resolvePath",value:function(e){return rt(e)?e:rt(this.basePath)?this.basePath:oe.a.resolve(this.basePath,e)}}]),a}(h["c"]);Object(d["a"])([Object(h["b"])({required:!0})],pt.prototype,"item",void 0),Object(d["a"])([Object(h["b"])({default:!1})],pt.prototype,"isCollapse",void 0),Object(d["a"])([Object(h["b"])({default:!0})],pt.prototype,"isFirstLevel",void 0),Object(d["a"])([Object(h["b"])({default:""})],pt.prototype,"basePath",void 0),pt=Object(d["a"])([Object(h["a"])({name:"SidebarItem",components:{SidebarItemLink:ht}})],pt);var mt=pt,ft=mt,bt=(a("d729"),a("2ca8"),Object(T["a"])(ft,at,it,!1,null,"35bc604c",null)),gt=bt.exports,vt=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"sidebar-logo-container",class:{collapse:e.collapse}},[a("transition",{attrs:{name:"sidebarLogoFade"}},[e.collapse?a("router-link",{key:"collapse",staticClass:"sidebar-logo-link",attrs:{to:"/"}},[a("img",{staticClass:"sidebar-logo",attrs:{src:"favicon.ico"}})]):a("router-link",{key:"expand",staticClass:"sidebar-logo-link",attrs:{to:"/"}},[a("img",{staticClass:"sidebar-logo",attrs:{src:"favicon.ico"}}),a("h1",{staticClass:"sidebar-title"},[e._v(" "+e._s(e.title)+" ")])])],1)],1)},yt=[],wt=a("8b99"),kt=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){var e;return Object(c["a"])(this,a),e=t.apply(this,arguments),e.title=wt["a"].title,e}return a}(h["c"]);Object(d["a"])([Object(h["b"])({required:!0})],kt.prototype,"collapse",void 0),kt=Object(d["a"])([Object(h["a"])({name:"SidebarLogo"})],kt);var Tt=kt,Ot=Tt,xt=(a("02d6"),Object(T["a"])(Ot,vt,yt,!1,null,"7847d0d3",null)),Et=xt.exports,St=a("a1de"),_t=a.n(St),zt=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){return Object(c["a"])(this,a),t.apply(this,arguments)}return Object(s["a"])(a,[{key:"sidebar",get:function(){return m["a"].sidebar}},{key:"routes",get:function(){return se["a"].routes}},{key:"showLogo",get:function(){return f["a"].showSidebarLogo}},{key:"menuActiveTextColor",get:function(){return f["a"].sidebarTextTheme?f["a"].theme:_t.a.menuActiveText}},{key:"variables",get:function(){return _t.a}},{key:"activeMenu",get:function(){var e=this.$route,t=e.meta,a=e.path;return t.activeMenu?t.activeMenu:a}},{key:"isCollapse",get:function(){return!this.sidebar.opened}}]),a}(h["c"]);zt=Object(d["a"])([Object(h["a"])({name:"SideBar",components:{SidebarItem:gt,SidebarLogo:Et}})],zt);var jt=zt,Ct=jt,Vt=(a("023d"),a("b567"),Object(T["a"])(Ct,et,tt,!1,null,"061fdbbc",null)),Lt=Vt.exports,Mt=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"tags-view-container",attrs:{id:"tags-view-container"}},[a("scroll-pane",{ref:"scrollPane",staticClass:"tags-view-wrapper",on:{scroll:e.handleScroll}},e._l(e.visitedViews,(function(t){return a("router-link",{key:t.path,ref:"tag",refInFor:!0,staticClass:"tags-view-item",class:e.isActive(t)?"active":"",attrs:{to:{path:t.path,query:t.query,fullPath:t.fullPath},tag:"span"},nativeOn:{mouseup:function(a){if("button"in a&&1!==a.button)return null;!e.isAffix(t)&&e.closeSelectedTag(t)},contextmenu:function(a){return a.preventDefault(),e.openMenu(t,a)}}},[e._v(" "+e._s(e.$t("route."+t.meta.title))+" "),e.isAffix(t)?e._e():a("span",{staticClass:"el-icon-close",on:{click:function(a){return a.preventDefault(),a.stopPropagation(),e.closeSelectedTag(t)}}})])})),1),a("ul",{directives:[{name:"show",rawName:"v-show",value:e.visible,expression:"visible"}],staticClass:"contextmenu",style:{left:e.left+"px",top:e.top+"px"}},[a("li",{on:{click:function(t){return e.refreshSelectedTag(e.selectedTag)}}},[e._v(" "+e._s(e.$t("tagsView.refresh"))+" ")]),e.isAffix(e.selectedTag)?e._e():a("li",{on:{click:function(t){return e.closeSelectedTag(e.selectedTag)}}},[e._v(" "+e._s(e.$t("tagsView.close"))+" ")]),a("li",{on:{click:e.closeOthersTags}},[e._v(" "+e._s(e.$t("tagsView.closeOthers"))+" ")]),a("li",{on:{click:function(t){return e.closeAllTags(e.selectedTag)}}},[e._v(" "+e._s(e.$t("tagsView.closeAll"))+" ")])])],1)},Ht=[],At=(a("45fc"),function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("el-scrollbar",{ref:"scrollContainer",staticClass:"scroll-container",attrs:{vertical:!1},nativeOn:{wheel:function(t){return t.preventDefault(),e.handleScroll(t)}}},[e._t("default")],2)}),Pt=[],Dt=(a("c740"),4),It=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){return Object(c["a"])(this,a),t.apply(this,arguments)}return Object(s["a"])(a,[{key:"scrollWrapper",get:function(){return this.$refs.scrollContainer.$refs.wrap}},{key:"mounted",value:function(){this.scrollWrapper.addEventListener("scroll",this.emitScroll,!0)}},{key:"beforeDestroy",value:function(){this.scrollWrapper.removeEventListener("scroll",this.emitScroll)}},{key:"handleScroll",value:function(e){var t=e.wheelDelta||40*-e.deltaY,a=this.scrollWrapper;a.scrollLeft=a.scrollLeft+t/4}},{key:"emitScroll",value:function(){this.$emit("scroll")}},{key:"moveToTarget",value:function(e){var t=this.$refs.scrollContainer.$el,a=t.offsetWidth,i=this.scrollWrapper,n=this.$parent.$refs.tag,r=null,o=null;if(n.length>0&&(r=n[0],o=n[n.length-1]),r===e)i.scrollLeft=0;else if(o===e)i.scrollLeft=i.scrollWidth-a;else{var c=n.findIndex((function(t){return t===e})),s=n[c-1],l=n[c+1],u=l.$el.offsetLeft+l.$el.offsetWidth+Dt,d=s.$el.offsetLeft-Dt;u>i.scrollLeft+a?i.scrollLeft=u-a:d1&&void 0!==arguments[1]?arguments[1]:"/",i=[];return e.forEach((function(e){if(e.meta&&e.meta.affix){var n=oe.a.resolve(a,e.path);i.push({fullPath:n,path:n,name:e.name,meta:Object(nt["a"])({},e.meta)})}if(e.children){var r=t.filterAffixTags(e.children,e.path);r.length>=1&&(i=[].concat(Object(ie["a"])(i),Object(ie["a"])(r)))}})),i}},{key:"initTags",value:function(){this.affixTags=this.filterAffixTags(this.routes);var e,t=Object(ne["a"])(this.affixTags);try{for(t.s();!(e=t.n()).done;){var a=e.value;a.name&&v["a"].addVisitedView(a)}}catch(i){t.e(i)}finally{t.f()}}},{key:"addTags",value:function(){var e=this.$route.name;return e&&v["a"].addView(this.$route),!1}},{key:"moveToCurrentTag",value:function(){var e=this,t=this.$refs.tag;this.$nextTick((function(){var a,i=Object(ne["a"])(t);try{for(i.s();!(a=i.n()).done;){var n=a.value;if(n.to.path===e.$route.path){e.$refs.scrollPane.moveToTarget(n),n.to.fullPath!==e.$route.fullPath&&v["a"].updateVisitedView(e.$route);break}}}catch(r){i.e(r)}finally{i.f()}}))}},{key:"refreshSelectedTag",value:function(e){var t=this;v["a"].delCachedView(e);var a=e.fullPath;this.$nextTick((function(){t.$router.replace({path:"/redirect"+a})["catch"]((function(e){console.warn(e)}))}))}},{key:"closeSelectedTag",value:function(e){v["a"].delView(e),this.isActive(e)&&this.toLastView(v["a"].visitedViews,e)}},{key:"closeOthersTags",value:function(){this.selectedTag.fullPath!==this.$route.path&&void 0!==this.selectedTag.fullPath&&this.$router.push(this.selectedTag.fullPath)["catch"]((function(e){console.warn(e)})),v["a"].delOthersViews(this.selectedTag),this.moveToCurrentTag()}},{key:"closeAllTags",value:function(e){var t=this;v["a"].delAllViews(),this.affixTags.some((function(e){return e.path===t.$route.path}))||this.toLastView(v["a"].visitedViews,e)}},{key:"toLastView",value:function(e,t){var a=e.slice(-1)[0];void 0!==a&&void 0!==a.fullPath?this.$router.push(a.fullPath)["catch"]((function(e){console.warn(e)})):"Dashboard"===t.name?this.$router.replace({path:"/redirect"+t.fullPath})["catch"]((function(e){console.warn(e)})):this.$router.push("/")["catch"]((function(e){console.warn(e)}))}},{key:"openMenu",value:function(e,t){var a=105,i=this.$el.getBoundingClientRect().left,n=this.$el.offsetWidth,r=n-a,o=t.clientX-i+15;this.left=o>r?r:o,this.top=t.clientY,this.visible=!0,this.selectedTag=e}},{key:"closeMenu",value:function(){this.visible=!1}},{key:"handleScroll",value:function(){this.closeMenu()}}]),a}(h["c"]);Object(d["a"])([Object(h["d"])("$route")],qt.prototype,"onRouteChange",null),Object(d["a"])([Object(h["d"])("visible")],qt.prototype,"onVisibleChange",null),qt=Object(d["a"])([Object(h["a"])({name:"TagsView",components:{ScrollPane:Nt}})],qt);var Gt=qt,Ft=Gt,Wt=(a("9858"),a("ebd8"),Object(T["a"])(Ft,Mt,Ht,!1,null,"31c3d88a",null)),Ut=Wt.exports,Zt=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{ref:"rightPanel",staticClass:"rightPanel-container",class:{show:e.show}},[a("div",{staticClass:"rightPanel-background"}),a("div",{staticClass:"rightPanel"},[a("div",{staticClass:"handle-button",style:{top:e.buttonTop+"px","background-color":e.theme},on:{click:function(t){e.show=!e.show}}},[a("i",{class:e.show?"el-icon-close":"el-icon-setting"})]),a("div",{staticClass:"rightPanel-items"},[e._t("default")],2)])])},Qt=[],Kt=a("d257"),Yt=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){var e;return Object(c["a"])(this,a),e=t.apply(this,arguments),e.show=!1,e}return Object(s["a"])(a,[{key:"theme",get:function(){return f["a"].theme}},{key:"onShowChange",value:function(e){e&&!this.clickNotClose&&this.addEventClick(),e?Object(Kt["a"])(document.body,"showRightPanel"):Object(Kt["e"])(document.body,"showRightPanel")}},{key:"mounted",value:function(){this.insertToBody()}},{key:"beforeDestroy",value:function(){var e=this.$refs.rightPanel;e.remove()}},{key:"addEventClick",value:function(){window.addEventListener("click",this.closeSidebar)}},{key:"closeSidebar",value:function(e){var t=e.target.closest(".rightPanel");t||(this.show=!1,window.removeEventListener("click",this.closeSidebar))}},{key:"insertToBody",value:function(){var e=this.$refs.rightPanel,t=document.querySelector("body");t&&t.insertBefore(e,t.firstChild)}}]),a}(h["c"]);Object(d["a"])([Object(h["b"])({default:!1})],Yt.prototype,"clickNotClose",void 0),Object(d["a"])([Object(h["b"])({default:250})],Yt.prototype,"buttonTop",void 0),Object(d["a"])([Object(h["d"])("show")],Yt.prototype,"onShowChange",null),Yt=Object(d["a"])([Object(h["a"])({name:"RightPanel"})],Yt);var Jt=Yt,Xt=Jt,ea=(a("bd5e"),a("2dc5"),Object(T["a"])(Xt,Zt,Qt,!1,null,"3c531330",null)),ta=ea.exports,aa=992,ia=function(e){Object(l["a"])(a,e);var t=Object(u["a"])(a);function a(){return Object(c["a"])(this,a),t.apply(this,arguments)}return Object(s["a"])(a,[{key:"device",get:function(){return m["a"].device}},{key:"sidebar",get:function(){return m["a"].sidebar}},{key:"onRouteChange",value:function(){this.device===m["b"].Mobile&&this.sidebar.opened&&m["a"].CloseSideBar(!1)}},{key:"beforeMount",value:function(){window.addEventListener("resize",this.resizeHandler)}},{key:"mounted",value:function(){var e=this.isMobile();e&&(m["a"].ToggleDevice(m["b"].Mobile),m["a"].CloseSideBar(!0))}},{key:"beforeDestroy",value:function(){window.removeEventListener("resize",this.resizeHandler)}},{key:"isMobile",value:function(){var e=document.body.getBoundingClientRect();return e.width-1'}}),l.a.register({admin:{width:64,height:64,viewBox:"0 0 1024 1024",data:''}}),l.a.register({"back-top":{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({bug:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({chart:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({clipboard:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({component:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({coupon:{width:64,height:64,viewBox:"0 0 1024 1024",data:''}}),l.a.register({dashboard:{width:128,height:100,viewBox:"0 0 128 100",data:''}}),l.a.register({documentation:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({drag:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({edit:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({education:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({email:{width:128,height:96,viewBox:"0 0 128 96",data:''}}),l.a.register({example:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({excel:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({"exit-fullscreen":{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({"eye-off":{width:128,height:64,viewBox:"0 0 128 64",data:''}}),l.a.register({"eye-on":{width:128,height:128,viewBox:"0 0 1024 1024",data:''}}),l.a.register({form:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({fullscreen:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({game:{width:64,height:64,viewBox:"0 0 1024 1024",data:''}}),l.a.register({"guide-2":{width:1e3,height:1e3,viewBox:"0 0 1000 1000",data:''}}),l.a.register({guide:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({hamburger:{width:64,height:64,viewBox:"0 0 1024 1024",data:''}}),l.a.register({icon:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({international:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({language:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({like:{width:24,height:24,viewBox:"0 0 24 24",data:''}}),l.a.register({link:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({list:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({lock:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({message:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({money:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({nested:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({password:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({pdf:{width:128,height:128,viewBox:"0 0 1024 1024",data:''}}),l.a.register({people:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({peoples:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({permission:{width:64,height:64,viewBox:"0 0 1024 1024",data:''}}),l.a.register({points:{width:64,height:64,viewBox:"0 0 1024 1024",data:''}}),l.a.register({promo:{width:82.625,height:64,viewBox:"0 0 1322 1024",data:''}}),l.a.register({qq:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({question_list:{width:64,height:64,viewBox:"0 0 1024 1024",data:''}}),l.a.register({role:{width:64,height:64,viewBox:"0 0 1024 1024",data:''}}),l.a.register({search:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({sell:{width:64,height:64,viewBox:"0 0 1024 1024",data:''}}),l.a.register({shop_list:{width:64,height:64,viewBox:"0 0 1024 1024",data:''}}),l.a.register({shop:{width:64,height:64,viewBox:"0 0 1024 1024",data:''}}),l.a.register({shopping:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({size:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({skill:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({star:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({statistics:{width:120,height:120,viewBox:"0 0 1024 1024",data:''}}),l.a.register({tab:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({table:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({theme:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({theme2:{width:120,height:120,viewBox:"0 0 1024 1024",data:''}}),l.a.register({"tree-table":{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({tree:{width:128,height:128,viewBox:"0 0 128 128",data:''}}),l.a.register({user:{width:130,height:130,viewBox:"0 0 130 130",data:''}}),l.a.register({wechat:{width:128,height:110,viewBox:"0 0 128 110",data:''}}),l.a.register({zip:{width:128,height:128,viewBox:"0 0 128 128",data:''}});var S=a("5530"),_=a("1da1"),z=(a("96cf"),a("99af"),a("c975"),a("323e")),j=a.n(z),C=(a("a5d8"),a("9dba")),V=a("8ad0"),L=a("8b99");j.a.configure({showSpinner:!1});var M=["/login","/auth-redirect"],H=function(e){var t=E["a"].te("route.".concat(e));if(t){var a=E["a"].t("route.".concat(e));return"".concat(a," - ").concat(L["a"].title)}return"".concat(L["a"].title)};x["c"].beforeEach(function(){var e=Object(_["a"])(regeneratorRuntime.mark((function e(t,a,i){var n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if(j.a.start(),!C["a"].token){e.next=28;break}if("/login"!==t.path){e.next=7;break}i({path:"/"}),j.a.done(),e.next=26;break;case 7:if(0!==C["a"].roles.length){e.next=25;break}return e.prev=8,e.next=11,C["a"].GetUserInfo();case 11:n=C["a"].roles,V["a"].GenerateRoutes(n),x["c"].addRoutes(V["a"].dynamicRoutes),i(Object(S["a"])(Object(S["a"])({},t),{},{replace:!0})),e.next=23;break;case 17:e.prev=17,e.t0=e["catch"](8),C["a"].ResetToken(),o["Message"].error(e.t0||"Has Error"),i("/login?redirect=".concat(t.path)),j.a.done();case 23:e.next=26;break;case 25:i();case 26:e.next=29;break;case 28:-1!==M.indexOf(t.path)?i():(i("/login?redirect=".concat(t.path)),j.a.done());case 29:case"end":return e.stop()}}),e,null,[[8,17]])})));return function(t,a,i){return e.apply(this,arguments)}}()),x["c"].afterEach((function(e){j.a.done(),document.title=H(e.meta.title)}));var A,P,D,I=a("ac1a"),R=a("1e24"),B={inserted:function(e,t){var a=t.value;Object(R["a"])(a)||(e.style.display="none")}},$=(a("caad"),a("2532"),a("ac1f"),a("5319"),{bind:function(e,t,a){var i=e.querySelector(".el-dialog"),n=e.querySelector(".el-dialog__header");i.style.cssText+=";top:0px;",n.style.cssText+=";cursor:move;",n.onmousedown=function(e){var t,r,o=e.clientX-n.offsetLeft,c=e.clientY-n.offsetTop,s=i.offsetWidth,l=i.offsetHeight,u=document.body.clientWidth,d=document.body.clientHeight,h=i.offsetLeft,p=u-i.offsetLeft-s,m=i.offsetTop,f=d-i.offsetTop-l,b=getComputedStyle(i).left,g=getComputedStyle(i).top;b&&g&&(b.includes("%")?(t=+document.body.clientWidth*(+b.replace(/%/g,"")/100),r=+document.body.clientHeight*(+g.replace(/%/g,"")/100)):(t=+b.replace(/px/g,""),r=+g.replace(/px/g,"")),document.onmousemove=function(e){var n=e.clientX-o,s=e.clientY-c;-n>h?n=-h:n>p&&(n=p),-s>m?s=-m:s>f&&(s=f),i.style.cssText+=";left:".concat(n+t,"px;top:").concat(s+r,"px;"),a.componentInstance?a.componentInstance.$emit("on-dialog-drag"):a.elm&&a.elm.dispatchEvent(new CustomEvent("on-dialog-drag"))},document.onmouseup=function(){document.onmousemove=null,document.onmouseup=null})}}}),N=(a("4d44"),{bind:function(e,t){e.addEventListener("click",(function(a){var i=Object.assign({},t.value),n=Object.assign({ele:e,type:"hit",color:"rgba(0, 0, 0, 0.15)"},i),r=n.ele;if(r){r.style.position="relative",r.style.overflow="hidden";var o=r.getBoundingClientRect(),c=r.querySelector(".waves-ripple");switch(c?c.className="waves-ripple":(c=document.createElement("span"),c.className="waves-ripple",c.style.height=c.style.width=Math.max(o.width,o.height)+"px",r.appendChild(c)),n.type){case"center":c.style.top=o.height/2-c.offsetHeight/2+"px",c.style.left=o.width/2-c.offsetWidth/2+"px";break;default:c.style.top=(a.pageY-o.top-c.offsetHeight/2-document.documentElement.scrollTop||document.body.scrollTop)+"px",c.style.left=(a.pageX-o.left-c.offsetWidth/2-document.documentElement.scrollLeft||document.body.scrollLeft)+"px"}return c.style.backgroundColor=n.color,c.className="waves-ripple z-active",!1}}),!1)}}),q=a("b311"),G=a.n(q);if(!G.a)throw new Error("you should npm install `clipboard` --save at first ");var F={bind:function(e,t){"success"===t.arg?A=t.value:"error"===t.arg?P=t.value:(D=new G.a(e,{text:function(){return t.value},action:function(){return"cut"===t.arg?"cut":"copy"}}),D.on("success",(function(e){var t=A;t&&t(e)})),D.on("error",(function(e){var t=P;t&&t(e)})))},update:function(e,t){"success"===t.arg?A=t.value:"error"===t.arg?P=t.value:D=new G.a(e,{text:function(){return t.value},action:function(){return"cut"===t.arg?"cut":"copy"}})},unbind:function(e,t){"success"===t.arg?A=null:"error"===t.arg?P=null:(D&&D.destroy(),D=null)}},W=(a("45fc"),{inserted:function(e,t){var a=t.value,i=C["a"].roles;if(!(a&&a instanceof Array&&a.length>0))throw new Error("need roles! Like v-role=\"['admin','editor']\"");var n=a,r=i.some((function(e){return n.includes(e)}));r||(e.style.display="none")}}),U=(a("fb6a"),a("d257")),Z=function(e){var t={published:"success",draft:"info",deleted:"danger"};return t[e]},Q=function(e){return e.charAt(0).toUpperCase()+e.slice(1)},K={get:function(e){var t=localStorage.getItem(e);return t?JSON.parse(t):null},set:function(e,t){localStorage.setItem(e,JSON.stringify(t))}},Y={install:function(e){e.prototype.$local=K}};a("5361"),r["default"].use(c.a,{size:I["a"].size,i18n:function(e,t){return E["a"].t(e,t)}}),r["default"].use(l.a,{tagName:"svg-icon",defaultWidth:"1em",defaultHeight:"1em"}),r["default"].use(Y),Object.keys(i).forEach((function(e){r["default"].directive(e,i[e])})),Object.keys(n).forEach((function(e){r["default"].filter(e,n[e])})),r["default"].config.productionTip=!1,new r["default"]({router:x["c"],store:O["a"],i18n:E["a"],render:function(e){return e(T)}}).$mount("#app")},d257:function(e,t,a){"use strict";a.d(t,"d",(function(){return n})),a.d(t,"f",(function(){return r})),a.d(t,"g",(function(){return o})),a.d(t,"c",(function(){return c})),a.d(t,"a",(function(){return l})),a.d(t,"e",(function(){return u})),a.d(t,"h",(function(){return d})),a.d(t,"b",(function(){return h}));var i=a("53ca"),n=(a("e25e"),a("0d03"),a("d3b7"),a("25f0"),a("ac1f"),a("5319"),a("4d90"),a("1276"),a("d81d"),a("466d"),a("4d63"),a("c975"),a("4795"),function(e,t){if(void 0===e||!e)return null;var a,n=t||"{y}-{m}-{d} {h}:{i}:{s}";"object"===Object(i["a"])(e)?a=e:("string"===typeof e&&/^[0-9]+$/.test(e)&&(e=parseInt(e)),"number"===typeof e&&10===e.toString().length&&(e*=1e3),a=new Date(e));var r={y:a.getFullYear(),m:a.getMonth()+1,d:a.getDate(),h:a.getHours(),i:a.getMinutes(),s:a.getSeconds(),a:a.getDay()};return n.replace(/{([ymdhisa])+}/g,(function(e,t){var a=r[t];return"a"===t?["日","一","二","三","四","五","六"][a]:a.toString().padStart(2,"0")}))}),r=function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];t="undefined"===typeof t||t;var a=e%60,i=(e%3600-a)/60,n=Math.floor(e/3600);return t?(n>9?""+n:"0"+n)+":"+(i>9?i:"0"+i)+":"+(a>9?a:"0"+a):(n>9?""+n:"0"+n)+":"+(i>9?i:"0"+i)},o=function(e){var t=e.split(":"),a=t.length>0?+t[0]:0,i=t.length>1?+t[1]:0,n=t.length>2?+t[2]:0;return 3600*a+60*i+n},c=function(e,t){return t.map((function(t){return e.map((function(e){return"timestamp"===e?n(t[e]):t[e]}))}))},s=function(e,t){return!!e.className.match(new RegExp("(\\s|^)"+t+"(\\s|$)"))},l=function(e,t){s(e,t)||(e.className+=" "+t)},u=function(e,t){if(s(e,t)){var a=new RegExp("(\\s|^)"+t+"(\\s|$)");e.className=e.className.replace(a," ")}},d=function(e,t){if(e&&t){var a=e.className,i=a.indexOf(t);-1===i?a+=""+t:a=a.substr(0,i)+a.substr(i+t.length),e.className=a}},h=function(e){return new Promise((function(t,a){setTimeout((function(){t&&t("")}),1e3*e)}))}},d2a7:function(e,t,a){},d2c9:function(e,t,a){"use strict";a("704b")},d729:function(e,t,a){"use strict";a("4f20")},e15f:function(e,t,a){},e4f3:function(e,t,a){},e741:function(e,t,a){"use strict";a.d(t,"a",(function(){return p}));var i=a("3835"),n=a("b85c"),r=a("d4ec"),o=a("bee2"),c=a("262e"),s=a("2caf"),l=(a("45fc"),a("b0c0"),a("caad"),a("2532"),a("d3b7"),a("ddb0"),a("a434"),a("c975"),a("4de4"),a("fb6a"),a("9ab4")),u=a("6fc5"),d=a("0613"),h=function(e){Object(c["a"])(a,e);var t=Object(s["a"])(a);function a(){var e;return Object(r["a"])(this,a),e=t.apply(this,arguments),e.visitedViews=[],e.cachedViews=[],e}return Object(o["a"])(a,[{key:"ADD_VISITED_VIEW",value:function(e){this.visitedViews.some((function(t){return t.path===e.path}))||this.visitedViews.push(Object.assign({},e,{title:e.meta.title||"no-name"}))}},{key:"ADD_CACHED_VIEW",value:function(e){null!==e.name&&(this.cachedViews.includes(e.name)||e.meta.noCache||this.cachedViews.push(e.name))}},{key:"DEL_VISITED_VIEW",value:function(e){var t,a=Object(n["a"])(this.visitedViews.entries());try{for(a.s();!(t=a.n()).done;){var r=Object(i["a"])(t.value,2),o=r[0],c=r[1];if(c.path===e.path){this.visitedViews.splice(o,1);break}}}catch(s){a.e(s)}finally{a.f()}}},{key:"DEL_CACHED_VIEW",value:function(e){if(null!==e.name){var t=this.cachedViews.indexOf(e.name);t>-1&&this.cachedViews.splice(t,1)}}},{key:"DEL_OTHERS_VISITED_VIEWS",value:function(e){this.visitedViews=this.visitedViews.filter((function(t){return t.meta.affix||t.path===e.path}))}},{key:"DEL_OTHERS_CACHED_VIEWS",value:function(e){if(null!==e.name){var t=this.cachedViews.indexOf(e.name);this.cachedViews=t>-1?this.cachedViews.slice(t,t+1):[]}}},{key:"DEL_ALL_VISITED_VIEWS",value:function(){var e=this.visitedViews.filter((function(e){return e.meta.affix}));this.visitedViews=e}},{key:"DEL_ALL_CACHED_VIEWS",value:function(){this.cachedViews=[]}},{key:"UPDATE_VISITED_VIEW",value:function(e){var t,a=Object(n["a"])(this.visitedViews);try{for(a.s();!(t=a.n()).done;){var i=t.value;if(i.path===e.path){i=Object.assign(i,e);break}}}catch(r){a.e(r)}finally{a.f()}}},{key:"addView",value:function(e){this.ADD_VISITED_VIEW(e),this.ADD_CACHED_VIEW(e)}},{key:"addVisitedView",value:function(e){this.ADD_VISITED_VIEW(e)}},{key:"delView",value:function(e){this.DEL_VISITED_VIEW(e),this.DEL_CACHED_VIEW(e)}},{key:"delCachedView",value:function(e){this.DEL_CACHED_VIEW(e)}},{key:"delOthersViews",value:function(e){this.DEL_OTHERS_VISITED_VIEWS(e),this.DEL_OTHERS_CACHED_VIEWS(e)}},{key:"delAllViews",value:function(){this.DEL_ALL_VISITED_VIEWS(),this.DEL_ALL_CACHED_VIEWS()}},{key:"delAllCachedViews",value:function(){this.DEL_ALL_CACHED_VIEWS()}},{key:"updateVisitedView",value:function(e){this.UPDATE_VISITED_VIEW(e)}}]),a}(u["d"]);Object(l["a"])([u["c"]],h.prototype,"ADD_VISITED_VIEW",null),Object(l["a"])([u["c"]],h.prototype,"ADD_CACHED_VIEW",null),Object(l["a"])([u["c"]],h.prototype,"DEL_VISITED_VIEW",null),Object(l["a"])([u["c"]],h.prototype,"DEL_CACHED_VIEW",null),Object(l["a"])([u["c"]],h.prototype,"DEL_OTHERS_VISITED_VIEWS",null),Object(l["a"])([u["c"]],h.prototype,"DEL_OTHERS_CACHED_VIEWS",null),Object(l["a"])([u["c"]],h.prototype,"DEL_ALL_VISITED_VIEWS",null),Object(l["a"])([u["c"]],h.prototype,"DEL_ALL_CACHED_VIEWS",null),Object(l["a"])([u["c"]],h.prototype,"UPDATE_VISITED_VIEW",null),Object(l["a"])([u["a"]],h.prototype,"addView",null),Object(l["a"])([u["a"]],h.prototype,"addVisitedView",null),Object(l["a"])([u["a"]],h.prototype,"delView",null),Object(l["a"])([u["a"]],h.prototype,"delCachedView",null),Object(l["a"])([u["a"]],h.prototype,"delOthersViews",null),Object(l["a"])([u["a"]],h.prototype,"delAllViews",null),Object(l["a"])([u["a"]],h.prototype,"delAllCachedViews",null),Object(l["a"])([u["a"]],h.prototype,"updateVisitedView",null),h=Object(l["a"])([Object(u["b"])({dynamic:!0,store:d["a"],name:"tagsView"})],h);var p=Object(u["e"])(h)},ebd8:function(e,t,a){"use strict";a("4b2f")},effd:function(e,t,a){},f6a5:function(e,t,a){}}); +//# sourceMappingURL=app.deacb710.js.map \ No newline at end of file diff --git a/dist/js/app.3e2473e2.js.map b/dist/js/app.deacb710.js.map similarity index 99% rename from dist/js/app.3e2473e2.js.map rename to dist/js/app.deacb710.js.map index 61fd17b..15b7c00 100644 --- a/dist/js/app.3e2473e2.js.map +++ b/dist/js/app.deacb710.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/components/Settings/index.vue?e22b","webpack:///./src/layout/components/Sidebar/index.vue?d9f3","webpack:///./src/layout/components/Sidebar/SidebarLogo.vue?0e33","webpack:///./src/layout/components/Sidebar/index.vue?427e","webpack:///./src/store/index.ts","webpack:///./src/components/LangSelect/index.vue?e2e1","webpack:///./src/components/LangSelect/index.vue?e88c","webpack:///./src/components/LangSelect/index.vue?17c2","webpack:///./src/components/LangSelect/index.vue","webpack:///./src/utils/permission.ts","webpack:///./src/layout/components/TagsView/ScrollPane.vue?d787","webpack:///./src/styles/element-variables.scss?0651","webpack:///./src/layout/components/Sidebar/SidebarItem.vue?e8a9","webpack:///./src/components/RightPanel/index.vue?6ec3","webpack:///./src/components/Breadcrumb/index.vue?1fda","webpack:///./src/components/ErrorLog/index.vue?cde2","webpack:///./src/layout/components/Sidebar/SidebarItem.vue?2ce7","webpack:///./src/utils/Extend.ts","webpack:///./src/utils/cookies.ts","webpack:///./src/layout/components/TagsView/ScrollPane.vue?6587","webpack:///./src/components/ThemePicker/index.vue?361b","webpack:///./src/lang/en.ts","webpack:///./src/lang/zh.ts","webpack:///./src/lang/es.ts","webpack:///./src/lang/ja.ts","webpack:///./src/lang/ko.ts","webpack:///./src/lang/it.ts","webpack:///./src/lang/index.ts","webpack:///./src/components/ThemePicker/index.vue?7fab","webpack:///./src/layout/components/AppMain.vue?1989","webpack:///./src/store/modules/settings.ts","webpack:///./src/store/modules/permission.ts","webpack:///./src/settings.ts","webpack:///./src/components/RightPanel/index.vue?9a67","webpack:///./src/layout/components/TagsView/ScrollPane.vue?f788","webpack:///./src/api/admins.ts","webpack:///./src/layout/components/TagsView/index.vue?de25","webpack:///./src/store/modules/user.ts","webpack:///./src/styles/_variables.scss","webpack:///./src/store/modules/app.ts","webpack:///./src/layout/components/Navbar/index.vue?838b","webpack:///./src/components/Hamburger/index.vue?750d","webpack:///./src/layout/index.vue?00e0","webpack:///./src/layout/components/AppMain.vue?0ed3","webpack:///./src/layout/components/AppMain.vue?40de","webpack:///./src/layout/components/AppMain.vue?ba62","webpack:///./src/layout/components/AppMain.vue","webpack:///./src/layout/components/Navbar/index.vue?ef02","webpack:///./src/components/Breadcrumb/index.vue?c03e","webpack:///./src/components/Breadcrumb/index.vue?12bf","webpack:///./src/components/Breadcrumb/index.vue?db4b","webpack:///./src/components/Breadcrumb/index.vue","webpack:///./src/components/ErrorLog/index.vue?df19","webpack:///./src/store/modules/error-log.ts","webpack:///./src/components/ErrorLog/index.vue?b810","webpack:///./src/components/ErrorLog/index.vue?5c58","webpack:///./src/components/ErrorLog/index.vue","webpack:///./src/components/Hamburger/index.vue?e927","webpack:///./src/components/Hamburger/index.vue?8de9","webpack:///./src/components/Hamburger/index.vue?6557","webpack:///./src/components/Hamburger/index.vue","webpack:///./src/components/HeaderSearch/index.vue?966b","webpack:///./src/components/HeaderSearch/index.vue?31aa","webpack:///./src/components/HeaderSearch/index.vue?6f38","webpack:///./src/components/HeaderSearch/index.vue","webpack:///./src/components/Screenfull/index.vue?9501","webpack:///./src/components/Screenfull/index.vue?ca69","webpack:///./src/components/Screenfull/index.vue?cba9","webpack:///./src/components/Screenfull/index.vue","webpack:///./src/components/SizeSelect/index.vue?66a9","webpack:///./src/components/SizeSelect/index.vue?1aed","webpack:///./src/components/SizeSelect/index.vue?03ec","webpack:///./src/components/SizeSelect/index.vue","webpack:///./src/layout/components/Navbar/index.vue?9a5d","webpack:///./src/layout/components/Navbar/index.vue?9362","webpack:///./src/layout/components/Navbar/index.vue","webpack:///./src/layout/components/Settings/index.vue?7736","webpack:///./src/components/ThemePicker/index.vue?aef2","webpack:///./src/components/ThemePicker/index.vue?a6ad","webpack:///./src/components/ThemePicker/index.vue?5987","webpack:///./src/components/ThemePicker/index.vue","webpack:///./src/layout/components/Settings/index.vue?bbb9","webpack:///./src/layout/components/Settings/index.vue?66a9","webpack:///./src/layout/components/Settings/index.vue","webpack:///./src/layout/components/Sidebar/index.vue?30e4","webpack:///./src/layout/components/Sidebar/SidebarItem.vue?8def","webpack:///./src/utils/validate.ts","webpack:///./src/layout/components/Sidebar/SidebarItemLink.vue?97af","webpack:///./src/layout/components/Sidebar/SidebarItemLink.vue?9406","webpack:///./src/layout/components/Sidebar/SidebarItemLink.vue?0e65","webpack:///./src/layout/components/Sidebar/SidebarItemLink.vue","webpack:///./src/layout/components/Sidebar/SidebarItem.vue?2bba","webpack:///./src/layout/components/Sidebar/SidebarItem.vue?e261","webpack:///./src/layout/components/Sidebar/SidebarItem.vue","webpack:///./src/layout/components/Sidebar/SidebarLogo.vue?d6f5","webpack:///./src/layout/components/Sidebar/SidebarLogo.vue?3328","webpack:///./src/layout/components/Sidebar/SidebarLogo.vue?f717","webpack:///./src/layout/components/Sidebar/SidebarLogo.vue","webpack:///./src/layout/components/Sidebar/index.vue?3a34","webpack:///./src/layout/components/Sidebar/index.vue?a172","webpack:///./src/layout/components/Sidebar/index.vue","webpack:///./src/layout/components/TagsView/index.vue?360b","webpack:///./src/layout/components/TagsView/ScrollPane.vue?ff83","webpack:///./src/layout/components/TagsView/ScrollPane.vue?9f04","webpack:///./src/layout/components/TagsView/ScrollPane.vue?2c29","webpack:///./src/layout/components/TagsView/ScrollPane.vue","webpack:///./src/layout/components/TagsView/index.vue?db3e","webpack:///./src/layout/components/TagsView/index.vue?d9d5","webpack:///./src/layout/components/TagsView/index.vue","webpack:///./src/components/RightPanel/index.vue?d3c1","webpack:///./src/components/RightPanel/index.vue?9d03","webpack:///./src/components/RightPanel/index.vue?b2ad","webpack:///./src/components/RightPanel/index.vue","webpack:///./src/layout/mixin/resize.ts","webpack:///./src/layout/index.vue?8696","webpack:///./src/layout/index.vue?5d14","webpack:///./src/layout/index.vue","webpack:///./src/router/modules/system.ts","webpack:///./src/router/modules/marketing.ts","webpack:///./src/router/modules/question.ts","webpack:///./src/router/modules/shop.ts","webpack:///./src/router/modules/game.ts","webpack:///./src/router/modules/statics.ts","webpack:///./src/router/index.ts","webpack:///./src/styles/index.scss?5214","webpack:///./src/utils/request.ts","webpack:///./src/layout/components/Sidebar/index.vue?569c","webpack:///./src/components/RightPanel/index.vue?3ce2","webpack:///./src/layout/components/TagsView/index.vue?1d70","webpack:///./src/layout/index.vue?a98b","webpack:///./src/App.vue?8bc3","webpack:///./src/App.vue?376d","webpack:///./src/App.vue?8d29","webpack:///./src/App.vue","webpack:///./src/icons/components/404.ts","webpack:///./src/icons/components/admin.ts","webpack:///./src/icons/components/back-top.ts","webpack:///./src/icons/components/bug.ts","webpack:///./src/icons/components/chart.ts","webpack:///./src/icons/components/clipboard.ts","webpack:///./src/icons/components/component.ts","webpack:///./src/icons/components/coupon.ts","webpack:///./src/icons/components/dashboard.ts","webpack:///./src/icons/components/documentation.ts","webpack:///./src/icons/components/drag.ts","webpack:///./src/icons/components/edit.ts","webpack:///./src/icons/components/education.ts","webpack:///./src/icons/components/email.ts","webpack:///./src/icons/components/example.ts","webpack:///./src/icons/components/excel.ts","webpack:///./src/icons/components/exit-fullscreen.ts","webpack:///./src/icons/components/eye-off.ts","webpack:///./src/icons/components/eye-on.ts","webpack:///./src/icons/components/form.ts","webpack:///./src/icons/components/fullscreen.ts","webpack:///./src/icons/components/game.ts","webpack:///./src/icons/components/guide-2.ts","webpack:///./src/icons/components/guide.ts","webpack:///./src/icons/components/hamburger.ts","webpack:///./src/icons/components/icon.ts","webpack:///./src/icons/components/international.ts","webpack:///./src/icons/components/language.ts","webpack:///./src/icons/components/like.ts","webpack:///./src/icons/components/link.ts","webpack:///./src/icons/components/list.ts","webpack:///./src/icons/components/lock.ts","webpack:///./src/icons/components/message.ts","webpack:///./src/icons/components/money.ts","webpack:///./src/icons/components/nested.ts","webpack:///./src/icons/components/password.ts","webpack:///./src/icons/components/pdf.ts","webpack:///./src/icons/components/people.ts","webpack:///./src/icons/components/peoples.ts","webpack:///./src/icons/components/permission.ts","webpack:///./src/icons/components/points.ts","webpack:///./src/icons/components/promo.ts","webpack:///./src/icons/components/qq.ts","webpack:///./src/icons/components/question_list.ts","webpack:///./src/icons/components/role.ts","webpack:///./src/icons/components/search.ts","webpack:///./src/icons/components/sell.ts","webpack:///./src/icons/components/shop_list.ts","webpack:///./src/icons/components/shop.ts","webpack:///./src/icons/components/shopping.ts","webpack:///./src/icons/components/size.ts","webpack:///./src/icons/components/skill.ts","webpack:///./src/icons/components/star.ts","webpack:///./src/icons/components/statistics.ts","webpack:///./src/icons/components/tab.ts","webpack:///./src/icons/components/table.ts","webpack:///./src/icons/components/theme.ts","webpack:///./src/icons/components/theme2.ts","webpack:///./src/icons/components/tree-table.ts","webpack:///./src/icons/components/tree.ts","webpack:///./src/icons/components/user.ts","webpack:///./src/icons/components/wechat.ts","webpack:///./src/icons/components/zip.ts","webpack:///./src/permission.ts","webpack:///./src/directives/clipboard/index.ts","webpack:///./src/directives/permission/index.ts","webpack:///./src/directives/el-draggable-dialog/index.ts","webpack:///./src/directives/waves/index.ts","webpack:///./src/directives/role/index.ts","webpack:///./src/filters/index.ts","webpack:///./src/utils/storage.ts","webpack:///./src/main.ts","webpack:///./src/utils/index.ts","webpack:///./src/components/HeaderSearch/index.vue?c1ac","webpack:///./src/layout/components/Sidebar/SidebarItem.vue?b1f4","webpack:///./src/store/modules/tags-view.ts","webpack:///./src/layout/components/TagsView/index.vue?3503"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","use","Store","render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","on","handleSetLanguage","slot","language","_v","staticRenderFns","lang","$i18n","locale","SetLanguage","documentElement","title","$route","meta","$t","settings","$message","toString","component","checkPermission","Array","permissions","hasPermission","sub","subArr","split","defineProperties","Date","addDays","days","getTime","writable","cloneTo","b","len","appendTo","pushOnce","idx","indexOf","zremove","spliceOne","index","randomSort","x","Math","random","randomInsert","arr","forEach","randomGet","temp","count","shuffled","min","floor","randomOne","results","randomRemove","moveElement","abs","concat","union","a","Set","intersect","set0","set1","filter","has","difference","Map","inc","set","sidebarStatusKey","getSidebarStatus","setSidebarStatus","sidebarStatus","languageKey","getLanguage","setLanguage","sizeKey","getSize","setSize","size","tokenKey","getToken","setToken","token","removeToken","remove","route","dashboard","system","adminuser","documentation","guide","permission","pagePermission","rolePermission","directivePermission","icons","components","tinymce","markdown","jsonEditor","splitPane","avatarUpload","dropzone","sticky","countTo","componentMixin","backToTop","draggableDialog","draggableKanban","draggableList","draggableSelect","charts","barChart","lineChart","mixedChart","example","nested","menu1","menu2","table","dynamicTable","draggableTable","inlineEditTable","complexTable","tab","form","createArticle","editArticle","articleList","errorPages","page401","page404","errorLog","excel","exportExcel","selectExcel","mergeHeader","uploadExcel","zip","pdf","exportZip","theme","clipboard","i18n","externalLink","profile","article","marketing","marketing_coupon","marketing_coupon_info","marketing_promo","marketing_points","question","question_list","question_prepare","question_setting","createQuestion","shop","shop_list","shop_admin","create_shop","shop_edit","game_setting","game","game_list","game_edit","activity_list","create_activity","edit_activity","exam_list","create_exam","edit_exam","password","edit_theme","shop_member","shop_statistics","game_statistics","shop_puzzles","shop_lottery","shop_share","shop_mail","create_mail","edit_mail","navbar","logOut","github","login","logIn","username","any","thirdparty","thirdpartyTips","createRole","editPermission","roles","switchRoles","tips","delete","confirm","cancel","description","button","tinymceTips","stickyTips","backToTopTips1","backToTopTips2","imageUploadTips","changeLanguageTips","dynamicTips1","dynamicTips2","dragTips1","dragTips2","importance","remark","search","add","export","reviewer","id","date","author","readings","status","actions","edit","publish","draft","warning","selectedExport","placeholder","change","tagsView","refresh","close","closeOthers","closeAll","showTagsView","showSidebarLogo","fixedHeader","sidebarTextTheme","admin","addAdmin","editAdmin","main","toasts","switchLanguage","messages","en","zh","es","ja","ko","it","cookieLanguage","navigator","toLowerCase","locales","keys","Settings","showSettings","payload","CHANGE_SETTING","dynamic","store","SettingsModule","hasRole","some","role","includes","defaultPublic","filterAsyncRoutes","routes","res","children","Permission","dynamicRoutes","accessedRoutes","SET_ROUTES","PermissionModule","devServerPort","mockServerPort","defaultAdmin","showname","comment","locked","level","sex","avatar","department","getAdminInfo","url","method","logout","saveAdmin","deleteAdmin","uid","changeLocker","lock","getUsers","params","changePass","changeInfo","User","introduction","email","deptname","userInfo","trim","SET_TOKEN","SET_ROLES","SET_PERMISSIONS","SET_NAME","SET_AVATAR","SET_INTRODUCTION","SET_DEPARTMENT","SET_LEVEL","SET_DEPTNAME","SET_SEX","GetUserInfo","GenerateRoutes","addRoutes","delAllViews","UserModule","DeviceType","App","sidebar","opened","withoutAnimation","device","Desktop","TOGGLE_SIDEBAR","CLOSE_SIDEBAR","TOGGLE_DEVICE","SET_LANGUAGE","SET_SIZE","AppModule","class","classObj","mobile","handleClickOutside","_e","hasTagsView","cachedViews","path","toggleSideBar","_s","nativeOn","$event","staticStyle","_l","item","redirect","breadcrumbs","preventDefault","handleLink","startsWith","getBreadcrumb","matched","first","isDashboard","breadcrumb","toLocaleLowerCase","toPath","$router","warn","pathCompile","errorLogs","dialogTableVisible","clearAll","scopedSlots","_u","fn","ref","row","vm","$vnode","info","stack","logs","log","ADD_ERROR_LOG","CLEAR_ERROR_LOG","ErrorLogModule","ClearErrorLog","isActive","toggleClick","$emit","default","show","stopPropagation","click","querySearch","model","callback","$$v","expression","join","options","searchPool","generateRoutes","initFuse","body","addEventListener","removeEventListener","$refs","headerSearchSelect","focus","blur","$nextTick","list","fuse","shouldSort","threshold","location","distance","minMatchCharLength","weight","basePath","prefixTitle","router","hidden","i18ntitle","tempRoutes","query","map","isFullscreen","sf","isEnabled","off","toggle","handleSetSize","label","sizeOptions","$ELEMENT","SetSize","refreshView","delAllCachedViews","fullPath","replace","ToggleSideBar","LogOut","Breadcrumb","ErrorLog","Hamburger","HeaderSearch","LangSelect","Screenfull","SizeSelect","themeChange","version","ORIGINAL_THEME","chalk","oldValue","themeCluster","getThemeCluster","originalCluster","customClass","duration","iconClass","getCSSString","getHandler","variable","newStyle","updateStyle","styleTag","getElementById","innerText","chalkHandler","styles","querySelectorAll","style","text","RegExp","test","oldCluster","newCluster","color","xhr","XMLHttpRequest","onreadystatechange","readyState","responseText","open","send","tintColor","tint","red","parseInt","green","blue","round","shadeColor","shade","clusters","Number","toFixed","immediate","ChangeSetting","ThemePicker","showLogo","isCollapse","activeMenu","variables","menuBg","menuText","menuActiveTextColor","isFirstLevel","alwaysShowRootMenu","theOnlyOneChild","resolvePath","icon","elicon","child","isExternal","to","_t","required","alwaysShow","showingChildren","showingChildNumber","routePath","SidebarItemLink","collapse","menuActiveText","SidebarItem","SidebarLogo","handleScroll","refInFor","isAffix","closeSelectedTag","openMenu","directives","rawName","left","top","refreshSelectedTag","selectedTag","closeOthersTags","closeAllTags","tagSpacing","scrollContainer","wrap","scrollWrapper","emitScroll","eventDelta","wheelDelta","deltaY","scrollLeft","currentTag","container","$el","containerWidth","offsetWidth","tagList","$parent","firstTag","lastTag","scrollWidth","currentIndex","findIndex","prevTag","nextTag","afterNextTagOffsetLeft","offsetLeft","beforePrevTagOffsetLeft","visible","affixTags","visitedViews","addTags","moveToCurrentTag","closeMenu","initTags","affix","tags","tagPath","childTags","filterAffixTags","addVisitedView","addView","scrollPane","moveToTarget","updateVisitedView","view","delCachedView","delView","toLastView","delOthersViews","latestView","menuMinWidth","getBoundingClientRect","maxLeft","clientX","clientY","ScrollPane","buttonTop","clickNotClose","addEventClick","insertToBody","elx","rightPanel","closeSidebar","ev","parent","closest","querySelector","insertBefore","firstChild","WIDTH","Mobile","CloseSideBar","resizeHandler","isMobile","ToggleDevice","rect","width","hideSidebar","openSidebar","AppMain","Navbar","RightPanel","Sidebar","TagsView","systemRoutes","marketingRoutes","questionRoutes","shopRoutes","gameRoutes","staticsRoutes","statics","constantRoutes","noCache","asyncRoutes","scrollBehavior","from","savedPosition","y","base","resetRouter","newRouter","matcher","service","baseURL","interceptors","config","headers","authorization","response","msg","confirmButtonText","cancelButtonText","ResetToken","reload","register","height","viewBox","configure","showSpinner","whiteList","hasKey","te","pageName","beforeEach","_","next","start","done","afterEach","successCallback","errorCallback","clipboardInstance","inserted","el","binding","display","elDraggableDialog","vnode","dragDom","dialogHeaderEl","cssText","onmousedown","styleLeft","styleTop","disX","disY","offsetTop","dragDomWidth","dragDomHeight","offsetHeight","screenWidth","clientWidth","screenHeight","clientHeight","minDragDomLeft","maxDragDomLeft","minDragDomTop","maxDragDomTop","styleLeftStr","getComputedStyle","styleTopStr","onmousemove","componentInstance","elm","dispatchEvent","CustomEvent","onmouseup","customOpts","assign","opts","ele","position","overflow","ripple","className","max","pageY","scrollTop","pageX","backgroundColor","arg","action","update","unbind","destroy","permissionRoles","articleStatusFilter","statusMap","published","deleted","uppercaseFirstChar","str","charAt","toUpperCase","local","val","localStorage","getItem","JSON","parse","setItem","stringify","install","vue","$local","tagName","defaultWidth","defaultHeight","directive","productionTip","h","$mount","parseTime","time","cFormat","format","formatObj","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getDay","padStart","sec2TimeStr","sec","showSeconds","timeStr2Sec","vals","formatJson","filterKeys","jsonData","hasClass","match","addClass","removeClass","reg","toggleClass","classString","nameIndex","substr","delay","v","entries","ADD_VISITED_VIEW","ADD_CACHED_VIEW","DEL_VISITED_VIEW","DEL_CACHED_VIEW","DEL_OTHERS_VISITED_VIEWS","DEL_OTHERS_CACHED_VIEWS","DEL_ALL_VISITED_VIEWS","DEL_ALL_CACHED_VIEWS","UPDATE_VISITED_VIEW","TagsViewModule"],"mappings":"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","file":"js/app.3e2473e2.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({\"401\":\"401\",\"404\":\"404\",\"auth-redirect\":\"auth-redirect\",\"dashboard\":\"dashboard\",\"i18n-demo\":\"i18n-demo\",\"login\":\"login\",\"profile\":\"profile\",\"redirect\":\"redirect\",\"theme\":\"theme\"}[chunkId]||chunkId) + \".\" + {\"401\":\"eba710f6\",\"404\":\"ec607ed7\",\"auth-redirect\":\"d5b70f0f\",\"chunk-01c0add2\":\"ac6a9550\",\"chunk-035792c2\":\"132b6673\",\"chunk-0a4f4aa8\":\"0657ee74\",\"chunk-1426d9f9\":\"47ccd334\",\"chunk-144e8b05\":\"b23d68e9\",\"chunk-1d3d01ed\":\"3449325a\",\"chunk-1e67ed7b\":\"03531ba7\",\"chunk-01717ca4\":\"6d263562\",\"chunk-4cad52d2\":\"f00ae02b\",\"chunk-5337e365\":\"7465da3c\",\"chunk-551b767f\":\"d2f1aa09\",\"chunk-5823cdba\":\"1a7dbab6\",\"chunk-d5fbf3a2\":\"3ed58255\",\"chunk-2146eed7\":\"cd0217af\",\"chunk-1df6ae0e\":\"1f613ee7\",\"chunk-ed14ae0c\":\"f8c42b71\",\"chunk-37ee6f14\":\"d353a8ad\",\"chunk-fd5993aa\":\"00560b94\",\"chunk-7a6b6eaa\":\"3d23582a\",\"chunk-21495f61\":\"9fe9e46e\",\"chunk-330c0877\":\"ddb589a5\",\"chunk-676093fc\":\"e71a7688\",\"chunk-d4ad27d8\":\"160a0aa0\",\"chunk-408127e4\":\"fbdf8a49\",\"chunk-41e8e32c\":\"f321db3b\",\"chunk-4bf5c744\":\"2cc73a2e\",\"chunk-50b4ae97\":\"feccad1c\",\"chunk-2ffaffe4\":\"888ba0b8\",\"chunk-383c1b34\":\"b7c4bfe7\",\"chunk-7ee58394\":\"3ffb9157\",\"chunk-51479e12\":\"e1d371de\",\"dashboard\":\"8e2de14d\",\"i18n-demo\":\"2c66042b\",\"login\":\"e8b5fb9b\",\"profile\":\"9b5181c9\",\"redirect\":\"7905c4af\",\"theme\":\"c983984b\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"401\":1,\"404\":1,\"chunk-01c0add2\":1,\"chunk-035792c2\":1,\"chunk-0a4f4aa8\":1,\"chunk-1426d9f9\":1,\"chunk-144e8b05\":1,\"chunk-1d3d01ed\":1,\"chunk-01717ca4\":1,\"chunk-4cad52d2\":1,\"chunk-5337e365\":1,\"chunk-551b767f\":1,\"chunk-5823cdba\":1,\"chunk-2146eed7\":1,\"chunk-ed14ae0c\":1,\"chunk-37ee6f14\":1,\"chunk-fd5993aa\":1,\"chunk-7a6b6eaa\":1,\"chunk-21495f61\":1,\"chunk-676093fc\":1,\"chunk-d4ad27d8\":1,\"chunk-408127e4\":1,\"chunk-41e8e32c\":1,\"chunk-4bf5c744\":1,\"chunk-2ffaffe4\":1,\"chunk-383c1b34\":1,\"chunk-7ee58394\":1,\"chunk-51479e12\":1,\"dashboard\":1,\"i18n-demo\":1,\"login\":1,\"profile\":1,\"theme\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({\"401\":\"401\",\"404\":\"404\",\"auth-redirect\":\"auth-redirect\",\"dashboard\":\"dashboard\",\"i18n-demo\":\"i18n-demo\",\"login\":\"login\",\"profile\":\"profile\",\"redirect\":\"redirect\",\"theme\":\"theme\"}[chunkId]||chunkId) + \".\" + {\"401\":\"11c016b8\",\"404\":\"96fe1c26\",\"auth-redirect\":\"31d6cfe0\",\"chunk-01c0add2\":\"200293c4\",\"chunk-035792c2\":\"5c7c2651\",\"chunk-0a4f4aa8\":\"3fc2e519\",\"chunk-1426d9f9\":\"c73fa990\",\"chunk-144e8b05\":\"200293c4\",\"chunk-1d3d01ed\":\"200293c4\",\"chunk-1e67ed7b\":\"31d6cfe0\",\"chunk-01717ca4\":\"0461aed2\",\"chunk-4cad52d2\":\"38768785\",\"chunk-5337e365\":\"9011efc0\",\"chunk-551b767f\":\"00048683\",\"chunk-5823cdba\":\"be777eac\",\"chunk-d5fbf3a2\":\"31d6cfe0\",\"chunk-2146eed7\":\"9ee6418b\",\"chunk-1df6ae0e\":\"31d6cfe0\",\"chunk-ed14ae0c\":\"c6830a95\",\"chunk-37ee6f14\":\"61483c54\",\"chunk-fd5993aa\":\"0461aed2\",\"chunk-7a6b6eaa\":\"221d4c57\",\"chunk-21495f61\":\"146db6b7\",\"chunk-330c0877\":\"31d6cfe0\",\"chunk-676093fc\":\"ed4053e6\",\"chunk-d4ad27d8\":\"af60e613\",\"chunk-408127e4\":\"5b669c31\",\"chunk-41e8e32c\":\"ab6179cd\",\"chunk-4bf5c744\":\"d25b5fbc\",\"chunk-50b4ae97\":\"31d6cfe0\",\"chunk-2ffaffe4\":\"d97489d0\",\"chunk-383c1b34\":\"f5dbd370\",\"chunk-7ee58394\":\"200293c4\",\"chunk-51479e12\":\"309dc905\",\"dashboard\":\"85f3a32a\",\"i18n-demo\":\"037e2f6c\",\"login\":\"91406035\",\"profile\":\"38768785\",\"redirect\":\"31d6cfe0\",\"theme\":\"4119be69\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=f76a8f60&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarLogo.vue?vue&type=style&index=0&id=7847d0d3&lang=scss&scoped=true&\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuBg\":\"#304156\",\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409eff\"};","import Vue from 'vue'\nimport Vuex from 'vuex'\nimport { IAppState } from './modules/app'\nimport { IUserState } from './modules/user'\n\nVue.use(Vuex)\n\nexport interface IRootState {\n app: IAppState\n user: IUserState\n}\n\n// Declare empty store first, dynamically register all modules later.\nexport default new Vuex.Store({})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dropdown',{staticClass:\"international\",attrs:{\"trigger\":\"click\"},on:{\"command\":_vm.handleSetLanguage}},[_c('div',[_c('svg-icon',{staticClass:\"international-icon\",attrs:{\"name\":\"language\"}})],1),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',{attrs:{\"disabled\":_vm.language==='zh',\"command\":\"zh\"}},[_vm._v(\" 中文 \")]),_c('el-dropdown-item',{attrs:{\"disabled\":_vm.language==='en',\"command\":\"en\"}},[_vm._v(\" English \")]),_c('el-dropdown-item',{attrs:{\"disabled\":_vm.language==='es',\"command\":\"es\"}},[_vm._v(\" Español \")]),_c('el-dropdown-item',{attrs:{\"disabled\":_vm.language==='ja',\"command\":\"ja\"}},[_vm._v(\" 日本語 \")]),_c('el-dropdown-item',{attrs:{\"disabled\":_vm.language==='ko',\"command\":\"ko\"}},[_vm._v(\" 한국어 \")]),_c('el-dropdown-item',{attrs:{\"disabled\":_vm.language==='it',\"command\":\"it\"}},[_vm._v(\" Italiano \")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator'\nimport { AppModule } from '@/store/modules/app'\nimport settings from '../../settings'\n@Component({\n name: 'Login'\n})\nexport default class extends Vue {\n get language() {\n return AppModule.language\n }\n\n private handleSetLanguage(lang: string) {\n this.$i18n.locale = lang\n AppModule.SetLanguage(lang)\n document.documentElement.lang = lang\n const title = this.$route.meta.title ? `${this.$t(`route.${this.$route.meta.title}`)} - ${settings.title}` : `${settings.title}`\n document.title = title\n this.$message({\n message: this.$t('components.changeLanguageTips').toString(),\n type: 'success'\n })\n }\n}\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=7302ef94&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { UserModule } from '@/store/modules/user'\n\nexport const checkRole = (value: string[]): boolean => {\n if (value && value instanceof Array && value.length > 0) {\n const roles = UserModule.roles\n const permissionRoles = value\n const hasPermission = roles.some(role => {\n return permissionRoles.includes(role)\n })\n return hasPermission\n } else {\n console.error('need roles! Like v-permission=\"[\\'admin\\',\\'editor\\']\"')\n return false\n }\n}\n\nexport const checkPermission = (value: string[]): boolean => {\n if (value && value instanceof Array && value.length > 0) {\n const permissions = UserModule.permissions\n let hasPermission = false\n for (const sub of value) {\n if (sub === '*') {\n hasPermission = true\n break\n }\n const subArr = sub.split(':')\n if (subArr[0] === '*') {\n for (const p of permissions) {\n if (p[1] === '*' || p[1] === subArr[1]) {\n hasPermission = true\n break\n }\n }\n } else if (subArr[1] === '*') {\n for (const p of permissions) {\n if (p[0] === '*' || p[0] === subArr[0]) {\n hasPermission = true\n break\n }\n }\n } else {\n for (const p of permissions) {\n if ((p[0] === '*' && p[1] === '*') ||\n (p[0] === '*' && p[1] === subArr[1]) ||\n (p[0] === subArr[0] && p[1] === '*') ||\n (p[0] === subArr[0] && p[1] === subArr[1])) {\n hasPermission = true\n break\n }\n }\n }\n if (hasPermission) {\n break\n }\n }\n return hasPermission\n } else {\n console.error('need roles! Like v-permission=\"[\\'admin\\',\\'editor\\']\"')\n return false\n }\n}\n","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ScrollPane.vue?vue&type=style&index=1&id=4712a34c&lang=scss&scoped=true&\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuBg\":\"#304156\",\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409eff\",\"theme\":\"#1890ff\"};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItem.vue?vue&type=style&index=1&id=35bc604c&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=1&id=3c531330&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=48aca8f5&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=72a28363&lang=scss&scoped=true&\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuBg\":\"#304156\",\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409eff\"};","interface Date {\n /**\n * 增加n天\n * @param {number} days\n * @return {Date}\n */\n addDays(days: number): Date\n}\n// eslint-disable-next-line no-extend-native\nObject.defineProperties(Date.prototype, {\n addDays: {\n value: function(days: number) {\n return new Date(this.getTime() + days * 3600 * 24 * 1000)\n },\n writable: true\n }\n})\ninterface Array {\n /**\n * 如果数组中没有要放入的对象,则将对象放入数组\n *\n * @param {T} t 要放入的对象\n * @returns {number} 放入的对象,在数组中的索引\n *\n * @member Array\n */\n pushOnce(t: T): number\n\n /**\n *\n * 删除某个数据\n * @param {T} t\n * @returns {boolean} true 有这个数据并且删除成功\n * false 没有这个数据\n */\n zremove(t: T): boolean\n\n /**\n * 将数组克隆到to\n * to的数组长度会和当前数组一致\n *\n * @template T\n * @param {Array} to\n */\n cloneTo(to: Array): void\n\n /**\n * 将数组附加到to中\n *\n * @template T\n * @param {Array} to\n *\n * @member ArrayConstructor\n */\n appendTo(to: Array): void\n\n /**\n * 移除数组index位置的元素, 比slice效率高\n * @param index\n */\n spliceOne(index: number): boolean\n\n /**\n * 随机排序\n */\n randomSort(): void\n\n /**\n * 检查数组中是否含有另外一个object\n * @param obj 与数组同类型的obj | 同类型的数组 | 指定child字段的值 | 指定child字段的数组\n * @param child 比较字段\n */\n contains(obj: T | T[] | {} | {}[], child?: string): boolean\n\n /**\n * 将数组随机插入当前数组中\n * @param arr\n */\n randomInsert(arr: Array): void\n\n /**\n * 随机获取n个元素\n * @param count\n */\n randomGet(count?: number): T[]\n\n /**\n * 随机获取1个元素\n */\n randomOne(): T\n\n /**\n * 随机移除n个元素\n * @param count\n */\n randomRemove(count?: number): T[]\n\n /**\n * 数组移动n位\n * @param n n > 0 右移, n<0 左移\n */\n moveElement(n: number): T[]\n\n /**\n * 两个数组并集\n * @param arr\n */\n union(arr: T[]): T[]\n\n /**\n * 两个数组交集\n * @param arr\n */\n intersect(arr: T[]): T[]\n\n /**\n * 相对于arr的差集\n * @param arr\n */\n difference(arr: T[]): T[]\n\n}\n\n// eslint-disable-next-line no-extend-native\nObject.defineProperties(Array.prototype, {\n cloneTo: {\n value: function (this: T[], b: any[]) {\n b.length = this.length\n const len = this.length\n b.length = len\n for (let i = 0; i < len; i++) {\n b[i] = this[i]\n }\n },\n writable: true\n },\n appendTo: {\n value: function (this: T[], b: any[]) {\n const len = this.length\n for (let i = 0; i < len; i++) {\n b.push(this[i])\n }\n },\n writable: true\n },\n pushOnce: {\n value: function (this: T[], t: T) {\n let idx = this.indexOf(t)\n if (!~idx) {\n idx = this.length\n this.push(t)\n }\n return idx\n },\n writable: true\n },\n zremove: {\n value: function (this: T[], t: T) {\n const idx = this.indexOf(t)\n if (~idx) {\n this.splice(idx, 1)\n return true\n }\n return false\n },\n writable: true\n },\n spliceOne: {\n value: function(index: number): boolean {\n if (index === -1 || index >= this.length) {\n return false\n }\n const len = this.length - 1\n for (let i = index; i < len; i++) {\n this[i] = this[i + 1]\n }\n this.length = len\n return true\n },\n writable: true\n },\n\n randomSort: {\n value: function () {\n for (let j, x, i = this.length; i; j = (Math.random() * i) | 0, x = this[--i], this[i] = this[j], this[j] = x) {}\n },\n writable: true\n },\n randomInsert: {\n value: function (arr: Array) {\n const length = this.length\n arr.forEach(value => {\n this.splice(Math.random() * length, 0, value)\n })\n },\n writable: true\n },\n randomGet: {\n value: function (count = 1): T[] {\n const shuffled: T[] = this.slice(0)\n let i = this.length\n const min = i - count\n let temp\n let index\n if (min < 0) {\n return shuffled\n }\n while (i-- > min) {\n index = Math.floor((i + 1) * Math.random())\n temp = shuffled[index]\n shuffled[index] = shuffled[i]\n shuffled[i] = temp\n }\n return shuffled.slice(min)\n },\n writable: true\n },\n randomOne: {\n value: function (): T|null {\n const results = this.randomGet(1)\n if (results.length > 0) {\n return results[0]\n } else {\n return null\n }\n },\n writable: true\n },\n randomRemove: {\n value: function (count = 1): T[] {\n const result = []\n while (count-- > 0 && this.length > 0) {\n const index = (Math.random() * this.length) | 0\n result.push(...this.splice(index, 1))\n }\n return result\n },\n writable: true\n },\n\n moveElement: {\n value: function (n: number): T[] {\n if (Math.abs(n) > this.length) n = n % this.length\n return this.slice(-n).concat(this.slice(0, -n))\n },\n writable: true\n },\n\n union: {\n value: function (this: T[], b: any[]): T[] {\n const a = this.concat(b)\n return [...new Set(a)]\n },\n writable: true\n },\n\n intersect: {\n value: function (this: T[], b: any[]): T[] {\n const set0 = new Set(b)\n const set1 = new Set(this.filter(x => set0.has(x)))\n return [...set1]\n },\n writable: true\n },\n\n difference: {\n value: function (this: T[], b: any[]): T[] {\n const set0 = new Set(b)\n const set1 = new Set(this.filter(x => !set0.has(x)))\n return [...set1]\n },\n writable: true\n }\n})\n\ninterface Map {\n /**\n * 只针对V为number的Map, 有值的话, 加上V, 没值则直接set\n * V为其他类型时, 直接set\n * @param key\n * @param value\n */\n inc(key: K, value: V): number\n}\n\n// eslint-disable-next-line no-extend-native\nObject.defineProperties(Map.prototype, {\n inc: {\n value: function (key: K, value: V) {\n if (typeof value === 'number') {\n this.set(key, (this.get(key) || 0) + value)\n } else {\n this.set(key, value)\n }\n return this.get(key)\n }\n }\n})\n","import Cookies from 'js-cookie'\n\n// App\nconst sidebarStatusKey = 'sidebar_status'\nexport const getSidebarStatus = () => Cookies.get(sidebarStatusKey)\nexport const setSidebarStatus = (sidebarStatus: string) => Cookies.set(sidebarStatusKey, sidebarStatus)\n\nconst languageKey = 'language'\nexport const getLanguage = () => Cookies.get(languageKey)\nexport const setLanguage = (language: string) => Cookies.set(languageKey, language)\n\nconst sizeKey = 'size'\nexport const getSize = () => Cookies.get(sizeKey)\nexport const setSize = (size: string) => Cookies.set(sizeKey, size)\n\n// User\nconst tokenKey = 'vue_typescript_admin_access_token'\nexport const getToken = () => Cookies.get(tokenKey)\nexport const setToken = (token: string) => Cookies.set(tokenKey, token)\nexport const removeToken = () => Cookies.remove(tokenKey)\n","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ScrollPane.vue?vue&type=style&index=0&lang=scss&\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuBg\":\"#304156\",\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409eff\"};","export default {\n route: {\n dashboard: 'Dashboard',\n system: 'System',\n adminuser: 'Admin',\n documentation: 'Documentation',\n guide: 'Guide',\n permission: 'Permission',\n pagePermission: 'Page Permission',\n rolePermission: 'Role Permission',\n directivePermission: 'Directive Permission',\n icons: 'Icons',\n components: 'Components',\n tinymce: 'Tinymce',\n markdown: 'Markdown',\n jsonEditor: 'JSON Editor',\n splitPane: 'SplitPane',\n avatarUpload: 'Avatar Upload',\n dropzone: 'Dropzone',\n sticky: 'Sticky',\n countTo: 'Count To',\n componentMixin: 'Mixin',\n backToTop: 'Back To Top',\n draggableDialog: 'Draggable Dialog',\n draggableKanban: 'Draggable Kanban',\n draggableList: 'Draggable List',\n draggableSelect: 'Draggable Select',\n charts: 'Charts',\n barChart: 'Bar Chart',\n lineChart: 'Line Chart',\n mixedChart: 'Mixed Chart',\n example: 'Example',\n nested: 'Nested Routes',\n menu1: 'Menu 1',\n 'menu1-1': 'Menu 1-1',\n 'menu1-2': 'Menu 1-2',\n 'menu1-2-1': 'Menu 1-2-1',\n 'menu1-2-2': 'Menu 1-2-2',\n 'menu1-3': 'Menu 1-3',\n menu2: 'Menu 2',\n table: 'Table',\n dynamicTable: 'Dynamic Table',\n draggableTable: 'Draggable Table',\n inlineEditTable: 'Inline Edit Table',\n complexTable: 'Complex Table',\n tab: 'Tab',\n form: 'Form',\n createArticle: 'Create Article',\n editArticle: 'Edit Article',\n articleList: 'Article List',\n errorPages: 'Error Pages',\n page401: '401',\n page404: '404',\n errorLog: 'Error Log',\n excel: 'Excel',\n exportExcel: 'Export Excel',\n selectExcel: 'Export Selected',\n mergeHeader: 'Merge Header',\n uploadExcel: 'Upload Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Export Zip',\n theme: 'Theme',\n clipboard: 'Clipboard',\n i18n: 'I18n',\n externalLink: 'External Link',\n profile: 'Profile',\n article: 'Article',\n marketing: 'Marketing',\n marketing_coupon: 'Coupon',\n marketing_coupon_info: 'Coupon Info',\n marketing_promo: 'Promo Code',\n marketing_points: 'Points Setting',\n question: 'Question Set',\n question_list: 'Question List',\n question_prepare: 'Question Edit',\n question_setting: 'Question Setting',\n createQuestion: 'Create Question',\n shop: 'Shop Setting',\n shop_list: 'Shop List',\n shop_admin: 'Shop Admins',\n create_shop: 'Create Shop',\n shop_edit: 'Shop Editor',\n game_setting: 'Game Setting',\n game: 'Game',\n game_list: 'Game List',\n game_edit: 'Game Info',\n activity_list: 'Activity List',\n create_activity: 'New Activity',\n edit_activity: 'Edit Activity',\n exam_list: 'Exam List',\n create_exam: 'New Exam',\n edit_exam: 'Edit Exam',\n password: 'Password',\n edit_theme: 'Edit Theme',\n shop_member: 'Member Manage',\n shop_statistics: 'Statistics',\n game_statistics: 'Game Statistics',\n shop_puzzles: 'Custom Puzzles',\n shop_lottery: 'Lottery Setting',\n shop_share: 'Share Setting',\n shop_mail: 'Mails',\n create_mail: 'New Mail',\n edit_mail: 'Edit Mail'\n },\n navbar: {\n logOut: 'Log Out',\n dashboard: 'Dashboard',\n github: 'Github',\n theme: 'Theme',\n size: 'Global Size',\n profile: 'Profile',\n password: 'Password'\n },\n login: {\n title: 'Login Form',\n logIn: 'Login',\n username: 'Username',\n password: 'Password',\n any: 'any',\n thirdparty: 'Or connect with',\n thirdpartyTips: 'Can not be simulated on local, so please combine you own business simulation! ! !'\n },\n documentation: {\n documentation: 'Documentation',\n github: 'Github Repository'\n },\n permission: {\n createRole: 'New Role',\n editPermission: 'Edit',\n roles: 'Your roles',\n switchRoles: 'Switch roles',\n tips: 'In some cases, using v-permission will have no effect. For example: Element-UI el-tab or el-table-column and other scenes that dynamically render dom. You can only do this with v-if.',\n delete: 'Delete',\n confirm: 'Confirm',\n cancel: 'Cancel'\n },\n guide: {\n description: 'The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ',\n button: 'Show Guide'\n },\n components: {\n documentation: 'Documentation',\n tinymceTips: 'Rich text is a core feature of the management backend, but at the same time it is a place with lots of pits. In the process of selecting rich texts, I also took a lot of detours. The common rich texts on the market have been basically used, and I finally chose Tinymce. See the more detailed rich text comparison and introduction.',\n stickyTips: 'when the page is scrolled to the preset position will be sticky on the top.',\n backToTopTips1: 'When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner',\n backToTopTips2: 'You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally',\n imageUploadTips: 'Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version.',\n changeLanguageTips: 'Switch Language Success'\n },\n table: {\n dynamicTips1: 'Fixed header, sorted by header order',\n dynamicTips2: 'Not fixed header, sorted by click order',\n dragTips1: 'The default order',\n dragTips2: 'The after dragging order',\n title: 'Title',\n importance: 'Importance',\n type: 'Type',\n remark: 'Remark',\n search: 'Search',\n add: 'Add',\n export: 'Export',\n reviewer: 'Reviewer',\n id: 'ID',\n date: 'Date',\n author: 'Author',\n readings: 'Readings',\n status: 'Status',\n actions: 'Actions',\n edit: 'Edit',\n publish: 'Publish',\n draft: 'Draft',\n delete: 'Delete',\n cancel: 'Cancel',\n confirm: 'Confirm'\n },\n example: {\n warning: 'Creating and editing pages cannot be cached by keep-alive because keep-alive\\'s \\'include\\' currently does not support caching based on routes, so now it\\'s cached based on component name. If you want to achieve a similar caching effect, you can use a browser caching scheme such as localStorage. Or don\\'t use keep-alive\\'s \\'include\\' to cache all pages directly. See details'\n },\n errorLog: {\n tips: 'Please click the bug icon in the upper right corner',\n description: 'Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.',\n documentation: 'Document introduction'\n },\n excel: {\n export: 'Export',\n selectedExport: 'Export Selected Items',\n placeholder: 'Please enter the file name (default excel-list)'\n },\n zip: {\n export: 'Export',\n placeholder: 'Please enter the file name (default file)'\n },\n pdf: {\n tips: 'Here we use window.print() to implement the feature of downloading PDF.'\n },\n theme: {\n change: 'Change Theme',\n documentation: 'Theme documentation',\n tips: 'Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details.'\n },\n tagsView: {\n refresh: 'Refresh',\n close: 'Close',\n closeOthers: 'Close Others',\n closeAll: 'Close All'\n },\n settings: {\n title: 'Page style setting',\n theme: 'Theme Color',\n showTagsView: 'Open Tags-View',\n showSidebarLogo: 'Sidebar Logo',\n fixedHeader: 'Fixed Header',\n sidebarTextTheme: 'Sidebar Text Theme'\n },\n admin: {\n addAdmin: 'New Admin',\n editAdmin: 'Edit Admin'\n },\n article: {\n add: 'New Article'\n },\n marketing: {\n\n },\n main: {\n shop: 'shop'\n }\n}\n","export default {\n route: {\n dashboard: '首页',\n documentation: '文档',\n system: '系统',\n adminuser: '管理员',\n guide: '引导页',\n permission: '权限管理',\n rolePermission: '角色权限',\n pagePermission: '页面权限',\n directivePermission: '指令权限',\n icons: '图标',\n components: '组件',\n tinymce: '富文本编辑器',\n markdown: 'Markdown',\n jsonEditor: 'JSON 编辑器',\n splitPane: 'Splitpane',\n avatarUpload: '头像上传',\n dropzone: 'Dropzone',\n sticky: 'Sticky',\n countTo: 'Count To',\n componentMixin: '小组件',\n backToTop: '返回顶部',\n draggableDialog: '可拖拽对话框',\n draggableKanban: '可拖拽看板',\n draggableList: '可拖拽列表',\n draggableSelect: '可拖拽选择',\n charts: '图表',\n barChart: '柱状图表',\n lineChart: '折线图',\n mixedChart: '混合图表',\n example: '综合实例',\n nested: '路由嵌套',\n menu1: '菜单 1',\n 'menu1-1': '菜单 1-1',\n 'menu1-2': '菜单 1-2',\n 'menu1-2-1': '菜单 1-2-1',\n 'menu1-2-2': '菜单 1-2-2',\n 'menu1-3': '菜单 1-3',\n menu2: '菜单 2',\n table: '表格',\n dynamicTable: '动态表格',\n draggableTable: '可拖拽表格',\n inlineEditTable: '表格内编辑',\n complexTable: '综合表格',\n tab: '分栏',\n form: '表单',\n createArticle: '创建文章',\n editArticle: '编辑文章',\n articleList: '文章列表',\n errorPages: '错误页面',\n page401: '401',\n page404: '404',\n errorLog: '错误日志',\n excel: 'Excel',\n exportExcel: '导出 Excel',\n selectExcel: '导出 已选择项',\n mergeHeader: '导出 多级表头',\n uploadExcel: '上传 Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: '导出 Zip',\n theme: '换肤',\n clipboard: '粘贴板',\n i18n: '国际化',\n externalLink: '外链',\n profile: '个人中心',\n article: '资讯管理',\n marketing: '营销管理',\n marketing_coupon: '优惠券设置',\n marketing_coupon_info: '编辑优惠券',\n marketing_promo: '优惠码设置',\n marketing_points: '积分设置',\n question: '题库管理',\n question_list: '题目列表',\n question_prepare: '题目编辑',\n question_setting: '题库设置',\n createQuestion: '创建题目',\n shop: '店铺设置',\n shop_list: '店铺列表',\n shop_admin: '店铺管理员',\n create_shop: '创建店铺',\n shop_edit: '编辑店铺',\n game_setting: '游戏设置',\n game: '游戏信息',\n game_list: '游戏列表',\n game_edit: '编辑游戏',\n activity_list: '活动列表',\n create_activity: '新建活动',\n edit_activity: '编辑活动',\n exam_list: '挑战列表',\n create_exam: '新建挑战',\n edit_exam: '编辑挑战',\n password: '修改密码',\n edit_theme: '订制游戏主题',\n shop_member: '成员管理',\n shop_statistics: '统计',\n game_statistics: '游戏数据',\n shop_puzzles: '自定义题库',\n shop_lottery: '抽奖转盘',\n shop_share: '分享设置',\n shop_mail: '邮件',\n create_mail: '新邮件',\n edit_mail: '编辑邮件'\n },\n navbar: {\n logOut: '退出登录',\n dashboard: '首页',\n github: '项目地址',\n theme: '换肤',\n size: '布局大小',\n profile: '个人信息',\n password: '修改密码'\n },\n login: {\n title: '系统登录',\n logIn: '登录',\n username: '账号',\n password: '密码',\n any: '随便填',\n thirdparty: '第三方登录',\n thirdpartyTips: '本地不能模拟,请结合自己业务进行模拟!!!'\n },\n documentation: {\n documentation: '文档',\n github: 'Github 地址'\n },\n permission: {\n createRole: '新增角色',\n editPermission: '编辑权限',\n roles: '你的权限',\n switchRoles: '切换权限',\n tips: '在某些情况下,不适合使用 v-permission。例如:Element-UI 的 el-tab 或 el-table-column 以及其它动态渲染 dom 的场景。你只能通过手动设置 v-if 来实现。',\n delete: '删除',\n confirm: '确定',\n cancel: '取消'\n },\n guide: {\n description: '引导页对于一些第一次进入项目的人很有用,你可以简单介绍下项目的功能。本 Demo 是基于',\n button: '打开引导'\n },\n components: {\n documentation: '文档',\n tinymceTips: '富文本是管理后台一个核心的功能,但同时又是一个有很多坑的地方。在选择富文本的过程中我也走了不少的弯路,市面上常见的富文本都基本用过了,最终权衡了一下选择了Tinymce。更详细的富文本比较和介绍见',\n stickyTips: '当页面滚动到预设的位置会吸附在顶部',\n backToTopTips1: '页面滚动到指定位置会在右下角出现返回顶部按钮',\n backToTopTips2: '可自定义按钮的样式、show/hide、出现的高度、返回的位置 如需文字提示,可在外部使用Element的el-tooltip元素',\n imageUploadTips: '由于我在使用时它只有vue@1版本,而且和mockjs不兼容,所以自己改造了一下,如果大家要使用的话,优先还是使用官方版本。',\n changeLanguageTips: '切换语言成功'\n },\n table: {\n dynamicTips1: '固定表头, 按照表头顺序排序',\n dynamicTips2: '不固定表头, 按照点击顺序排序',\n dragTips1: '默认顺序',\n dragTips2: '拖拽后顺序',\n title: '标题',\n importance: '重要性',\n type: '类型',\n remark: '点评',\n search: '搜索',\n add: '添加',\n export: '导出',\n reviewer: '审核人',\n id: '序号',\n date: '时间',\n author: '作者',\n readings: '阅读数',\n status: '状态',\n actions: '操作',\n edit: '编辑',\n publish: '发布',\n draft: '草稿',\n delete: '删除',\n cancel: '取 消',\n confirm: '确 定'\n },\n example: {\n warning: '创建和编辑页面是不能被 keep-alive 缓存的,因为keep-alive 的 include 目前不支持根据路由来缓存,所以目前都是基于 component name 来进行缓存的。如果你想类似的实现缓存效果,可以使用 localStorage 等浏览器缓存方案。或者不要使用 keep-alive 的 include,直接缓存所有页面。详情见'\n },\n errorLog: {\n tips: '请点击右上角bug小图标',\n description: '现在的管理后台基本都是spa的形式了,它增强了用户体验,但同时也会增加页面出问题的可能性,可能一个小小的疏忽就导致整个页面的死锁。好在 Vue 官网提供了一个方法来捕获处理异常,你可以在其中进行错误处理或者异常上报。',\n documentation: '文档介绍'\n },\n excel: {\n export: '导出',\n selectedExport: '导出已选择项',\n placeholder: '请输入文件名(默认excel-list)'\n },\n zip: {\n export: '导出',\n placeholder: '请输入文件名(默认file)'\n },\n pdf: {\n tips: '这里使用 window.print() 来实现下载pdf的功能'\n },\n theme: {\n change: '换肤',\n documentation: '换肤文档',\n tips: 'Tips: 它区别于 navbar 上的 theme-pick, 是两种不同的换肤方法,各自有不同的应用场景,具体请参考文档。'\n },\n tagsView: {\n refresh: '刷新',\n close: '关闭',\n closeOthers: '关闭其它',\n closeAll: '关闭所有'\n },\n settings: {\n title: '系统布局配置',\n theme: '主题色',\n showTagsView: '显示 Tags-View',\n showSidebarLogo: '显示侧边栏 Logo',\n fixedHeader: '固定 Header',\n sidebarTextTheme: '侧边栏文字主题色'\n },\n admin: {\n addAdmin: '新增',\n editAdmin: '编辑'\n },\n article: {\n add: '添加'\n },\n main: {\n shop: '店铺'\n }\n}\n","export default {\n route: {\n dashboard: 'Panel de control',\n documentation: 'Documentación',\n guide: 'Guía',\n permission: 'Permisos',\n rolePermission: 'Permisos de rol',\n pagePermission: 'Permisos de la página',\n directivePermission: 'Permisos de la directiva',\n icons: 'Iconos',\n components: 'Componentes',\n tinymce: 'Tinymce',\n markdown: 'Markdown',\n jsonEditor: 'Editor JSON',\n splitPane: 'Panel dividido',\n avatarUpload: 'Subir avatar',\n dropzone: 'Subir ficheros',\n sticky: 'Sticky',\n countTo: 'Count To',\n componentMixin: 'Mixin',\n backToTop: 'Ir arriba',\n draggableDialog: 'Draggable Dialog',\n draggableKanban: 'Draggable Kanban',\n draggableList: 'Draggable List',\n draggableSelect: 'Draggable Select',\n charts: 'Gráficos',\n barChart: 'Bar Chart',\n lineChart: 'Gráfico de líneas',\n mixedChart: 'Mixed Chart',\n example: 'Ejemplo',\n nested: 'Rutas anidadass',\n menu1: 'Menu 1',\n 'menu1-1': 'Menu 1-1',\n 'menu1-2': 'Menu 1-2',\n 'menu1-2-1': 'Menu 1-2-1',\n 'menu1-2-2': 'Menu 1-2-2',\n 'menu1-3': 'Menu 1-3',\n menu2: 'Menu 2',\n table: 'Tabla',\n dynamicTable: 'Tabla dinámica',\n draggableTable: 'Arrastrar tabla',\n inlineEditTable: 'Editor',\n complexTable: 'Complex Table',\n tab: 'Pestaña',\n form: 'Formulario',\n createArticle: 'Crear artículo',\n editArticle: 'Editar artículo',\n articleList: 'Listado de artículos',\n errorPages: 'Páginas de error',\n page401: '401',\n page404: '404',\n errorLog: 'Registro de errores',\n excel: 'Excel',\n exportExcel: 'Exportar a Excel',\n selectExcel: 'Export seleccionado',\n mergeHeader: 'Merge Header',\n uploadExcel: 'Subir Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Exportar a Zip',\n theme: 'Tema',\n clipboard: 'Clipboard',\n i18n: 'I18n',\n externalLink: 'Enlace externo',\n profile: 'Profile'\n },\n navbar: {\n logOut: 'Salir',\n dashboard: 'Panel de control',\n github: 'Github',\n theme: 'Tema',\n size: 'Tamaño global',\n profile: 'Profile'\n },\n login: {\n title: 'Formulario de acceso',\n logIn: 'Acceso',\n username: 'Usuario',\n password: 'Contraseña',\n any: 'nada',\n thirdparty: 'Conectar con',\n thirdpartyTips: 'No se puede simular en local, así que combine su propia simulación de negocios. ! !'\n },\n documentation: {\n documentation: 'Documentación',\n github: 'Repositorio Github'\n },\n permission: {\n createRole: 'Nuevo rol',\n editPermission: 'Permiso de edición',\n roles: 'Tus permisos',\n switchRoles: 'Cambiar permisos',\n tips: 'In some cases it is not suitable to use v-permission, such as element Tab component or el-table-column and other asynchronous rendering dom cases which can only be achieved by manually setting the v-if.',\n delete: 'Borrar',\n confirm: 'Confirmar',\n cancel: 'Cancelar'\n },\n guide: {\n description: 'The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ',\n button: 'Ver guía'\n },\n components: {\n documentation: 'Documentación',\n tinymceTips: 'Rich text editor is a core part of management system, but at the same time is a place with lots of problems. In the process of selecting rich texts, I also walked a lot of detours. The common rich text editors in the market are basically used, and the finally chose Tinymce. See documentation for more detailed rich text editor comparisons and introductions.',\n stickyTips: 'when the page is scrolled to the preset position will be sticky on the top.',\n backToTopTips1: 'When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner',\n backToTopTips2: 'You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally',\n imageUploadTips: 'Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version.',\n changeLanguageTips: 'Cambiar de idioma correctamente'\n },\n table: {\n dynamicTips1: 'Fixed header, sorted by header order',\n dynamicTips2: 'Not fixed header, sorted by click order',\n dragTips1: 'Orden por defecto',\n dragTips2: 'The after dragging order',\n title: 'Título',\n importance: 'Importancia',\n type: 'Tipo',\n remark: 'Remark',\n search: 'Buscar',\n add: 'Añadir',\n export: 'Exportar',\n reviewer: 'Reviewer',\n id: 'ID',\n date: 'Fecha',\n author: 'Autor',\n readings: 'Lector',\n status: 'Estado',\n actions: 'Acciones',\n edit: 'Editar',\n publish: 'Publicar',\n draft: 'Draft',\n delete: 'Eliminar',\n cancel: 'Cancelar',\n confirm: 'Confirmar'\n },\n example: {\n warning: 'Creating and editing pages cannot be cached by keep-alive because keep-alive include does not currently support caching based on routes, so it is currently cached based on component name. If you want to achieve a similar caching effect, you can use a browser caching scheme such as localStorage. Or do not use keep-alive include to cache all pages directly. See details'\n },\n errorLog: {\n tips: 'Please click the bug icon in the upper right corner',\n description: 'Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.',\n documentation: 'Documento de introducción'\n },\n excel: {\n export: 'Exportar',\n selectedExport: 'Exportar seleccionados',\n placeholder: 'Por favor escribe un nombre de fichero'\n },\n zip: {\n export: 'Exportar',\n placeholder: 'Por favor escribe un nombre de fichero'\n },\n pdf: {\n tips: 'Here we use window.print() to implement the feature of downloading PDF.'\n },\n theme: {\n change: 'Cambiar tema',\n documentation: 'Documentación del tema',\n tips: 'Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details.'\n },\n tagsView: {\n refresh: 'Actualizar',\n close: 'Cerrar',\n closeOthers: 'Cerrar otros',\n closeAll: 'Cerrar todos'\n },\n settings: {\n title: 'Page style setting',\n theme: 'Theme Color',\n showTagsView: 'Show Tags-View',\n showSidebarLogo: 'Show Sidebar Logo',\n fixedHeader: 'Fixed Header',\n sidebarTextTheme: 'Sidebar Text Theme'\n }\n}\n","export default {\n route: {\n dashboard: 'トップ',\n system: 'システム',\n documentation: 'ドキュメント',\n guide: 'ガイド',\n permission: '権限',\n rolePermission: '権限ロール',\n pagePermission: 'ページ権限',\n directivePermission: 'ディレクティブ権限',\n icons: 'アイコン',\n components: 'コンポーネント',\n tinymce: 'TinyMCE',\n markdown: 'Markdown',\n jsonEditor: 'JSON Editor',\n splitPane: 'パネル',\n avatarUpload: 'アバターアップロード',\n dropzone: 'Dropzone',\n sticky: 'Sticky',\n countTo: 'Count To',\n componentMixin: 'コンポーネントMixin',\n backToTop: 'Back To Top',\n draggableDialog: 'Draggable Dialog',\n draggableKanban: 'Draggable 看板',\n draggableList: 'Draggable List',\n draggableSelect: 'Draggable Select',\n charts: 'チャート',\n barChart: 'Barチャート',\n lineChart: 'Lineチャート',\n mixedChart: 'Mixedチャート',\n example: 'Example',\n nested: 'Nested Routes',\n menu1: 'メニュー1',\n 'menu1-1': 'メニュー 1-1',\n 'menu1-2': 'メニュー 1-2',\n 'menu1-2-1': 'メニュー 1-2-1',\n 'menu1-2-2': 'メニュー 1-2-2',\n 'menu1-3': 'メニュー 1-3',\n menu2: 'メニュー 2',\n table: 'Table',\n dynamicTable: '可変 Table',\n draggableTable: 'Draggable Table',\n inlineEditTable: 'Inline Edit Table',\n complexTable: 'Complex Table',\n tab: 'Tab',\n form: 'フォーム',\n createArticle: '投稿作成',\n editArticle: '投稿編集',\n articleList: '投稿リスト',\n errorPages: 'エラーページ',\n page401: '401',\n page404: '404',\n errorLog: 'エラーログ',\n excel: 'Excel',\n exportExcel: '一括エクスポート',\n selectExcel: '複数選択エクスポート',\n mergeHeader: 'ヘッダーマージ',\n uploadExcel: 'アップロード',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Export Zip',\n theme: 'テーマ変更',\n clipboard: 'Clipboard',\n i18n: '多言語',\n externalLink: '外部リンク',\n profile: 'プロフィール'\n },\n navbar: {\n dashboard: 'トップ',\n github: 'GitHub',\n logOut: 'ログアウト',\n profile: 'プロフィール',\n theme: 'テーマ変更',\n size: '画面サイズ'\n },\n login: {\n title: 'ユーザログイン',\n logIn: 'ログイン',\n username: 'ユーザ名',\n password: 'パスワード',\n any: 'any',\n thirdparty: '外部IDでログイン',\n thirdpartyTips: 'ローカル環境ではログインできません。実装が必要です。'\n },\n documentation: {\n documentation: 'ドキュメント',\n github: 'Github Link'\n },\n permission: {\n createRole: 'ロール追加',\n editPermission: 'ロール変更',\n roles: 'ロール',\n switchRoles: 'ロール切替',\n tips: 'v-permissionは使えない時があります。例えば: Element-UI の el-tab、 el-table-column 及び他の dom。v-ifを使う必要があります。',\n delete: '削除',\n confirm: '確認',\n cancel: 'キャンセル'\n },\n guide: {\n description: 'ガイドは各機能の説明です。',\n button: 'ガイドを見る'\n },\n components: {\n documentation: 'ドキュメント',\n tinymceTips: 'tinymceは管理画面に重要な機能ですが、その同時に落とし穴がありあす。tinymceを使う道のりが大変でした。Tinymceを使う時に各自のプロジェクト状況で判断が必要です。ドキュメントはこちら',\n stickyTips: 'ページの指定位置へスクロールした場合、表示されます。',\n backToTopTips1: 'トップへスクロールが表示されます。',\n backToTopTips2: 'ボタンのスタイルはカスタマイズできます。例えば、show/hide、height、position。 またはElementのel-tooltipを使って、ツールチップを実装できます。',\n imageUploadTips: 'mockjsは使えないため、カスタマイズしています。公式の最新バージョンを使ってください。',\n changeLanguageTips: '言語切り替えの成功'\n },\n table: {\n dynamicTips1: '先頭は固定、最後に追加',\n dynamicTips2: '戦後に追加せず、指定列に追加',\n dragTips1: 'デフォルト順番',\n dragTips2: 'Drag後の順番',\n title: 'タイトル',\n importance: '重要',\n type: 'タイプ',\n remark: '評価',\n search: '検索',\n add: '追加',\n export: 'エクスポート',\n reviewer: 'レビュアー',\n id: '番号',\n date: '日時',\n author: '作成者',\n readings: '閲覧数',\n status: 'ステータス',\n actions: '操作',\n edit: '編集',\n publish: '公開',\n draft: '下書き',\n delete: 'キャンセル',\n cancel: 'キャンセル',\n confirm: '確認'\n },\n example: {\n warning: '新規作成と編集画面は keep-alive を使えないです。keep-alive の include はrouteのキャッシュは使えないです。そのため、component name を使ってキャッシュさせるようにします。このようなキャッシュ機能を作りたい場合,localStorageを使う手があります。もしくは keep-alive の includeを使って、全ページキャッシュする方法はあります。'\n },\n errorLog: {\n tips: '右上のbugアイコンをクリックしてください。',\n description: '管理画面はspaを使う場合が多い、ユーザ体現向上はできますが、想定外エラーが発生する場合があります。Vueはそのエラーハンドリング機能を提供し、エラーレポートができます。',\n documentation: 'ドキュメント'\n },\n excel: {\n export: 'エクスポート',\n selectedExport: 'エクスポート対象を選択してください。',\n placeholder: 'ファイル名を入力してください。'\n },\n zip: {\n export: 'エクスポート',\n placeholder: 'ファイル名を入力してください。'\n },\n pdf: {\n tips: 'window.print() を使ってPDFダウンロードしています。'\n },\n theme: {\n change: 'テーマ切替',\n documentation: 'ドキュメント',\n tips: 'Tips: テーマの切り替え方法はnavbarのtheme-pickと異なります、使い方はドキュメントを確認してください。'\n },\n tagsView: {\n refresh: '更新',\n close: '閉じる',\n closeOthers: 'その他閉じる',\n closeAll: 'すべて閉じる'\n },\n settings: {\n title: 'システムテーマ',\n theme: 'テーマ色',\n showTagsView: 'Tags-View 開く',\n showSidebarLogo: 'Show Sidebar Logo',\n fixedHeader: 'Fixed Header',\n sidebarTextTheme: 'Sidebar Text Theme'\n }\n}\n","export default {\n route: {\n dashboard: '대시보드',\n system: '체계',\n documentation: '문서',\n guide: '가이드',\n permission: '권한',\n rolePermission: '역할 권한',\n pagePermission: '페이지 권한',\n directivePermission: '지시 권한',\n icons: '아이콘',\n components: '구성 요소',\n tinymce: 'TinyMCE',\n markdown: 'Markdown',\n jsonEditor: 'JSON Editor',\n splitPane: '패널',\n avatarUpload: '아바타업로드',\n dropzone: 'Dropzone',\n sticky: 'Sticky',\n countTo: 'Count To',\n componentMixin: '구성 요소 Mixin',\n backToTop: 'Back To Top',\n draggableDialog: '드래그 상자',\n draggableKanban: '드래그 간판',\n draggableList: '드래그 리스트',\n draggableSelect: '드래그 선택',\n charts: '차트',\n barChart: '막대그래프',\n lineChart: '꺽은선그래프',\n mixedChart: '종합차트',\n example: '예시',\n nested: 'Nested Routes',\n menu1: '메뉴1',\n 'menu1-1': '메뉴 1-1',\n 'menu1-2': '메뉴 1-2',\n 'menu1-2-1': '메뉴 1-2-1',\n 'menu1-2-2': '메뉴 1-2-2',\n 'menu1-3': '메뉴 1-3',\n menu2: '메뉴 2',\n table: '표',\n dynamicTable: 'Dynamic 표',\n draggableTable: 'Draggable 표',\n inlineEditTable: 'Inline Edit 표',\n complexTable: 'Complex 표',\n tab: 'Tab',\n form: '형태',\n createArticle: '게시물 작성',\n editArticle: '게시물 편집',\n articleList: '게시물 리스트',\n errorPages: '에러 페이지',\n page401: '401',\n page404: '404',\n errorLog: '에러 로그',\n excel: '엑셀',\n exportExcel: '엑셀 내보내기',\n selectExcel: '엑셀 선택',\n mergeHeader: '헤더 병합',\n uploadExcel: '엑셀 올리기',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Export Zip',\n theme: '테마',\n clipboard: 'Clipboard',\n i18n: '언어',\n externalLink: '외부 링크',\n profile: '프로필'\n },\n navbar: {\n dashboard: '대시보드',\n github: '깃허브',\n logOut: '로그아웃',\n profile: '프로필',\n theme: '테마',\n size: '크기'\n },\n login: {\n title: '타이틀',\n logIn: '로그인',\n username: '이름',\n password: '비밀번호',\n any: 'any',\n thirdparty: '외부 ID로 로그인',\n thirdpartyTips: '로컬 환경에서 로그인 할 수 없습니다.'\n },\n documentation: {\n documentation: '문서',\n github: '깃허브 링크'\n },\n permission: {\n createRole: '역할 추가',\n editPermission: '권한 수정',\n roles: '역할',\n switchRoles: '역할 바꾸기',\n tips: 'v-permission 사용할 때가 있습니다. 예 : Element-UI의 el-tab, el-table-column 및 다른 dom. v-if를 사용해야합니다.',\n delete: '삭제',\n confirm: '확인',\n cancel: '취소'\n },\n guide: {\n description: '각 기능에 대한 설명입니다.',\n button: '버튼'\n },\n components: {\n documentation: '문서',\n tinymceTips: '서식있는 텍스트는 관리 백엔드의 핵심 기능이지만 동시에 문제가 많은 곳입니다. 리치 텍스트를 선택하는 과정에서도 많은 우회가 필요했습니다. 시중에 나와있는 일반적인 서식있는 텍스트는 기본적으로 사용되었으며 마침내 Tinymce를 선택했습니다. 보다 자세한 리치 텍스트 비교 및 소개를 참조하십시오.',\n stickyTips: '페이지의 지정된 위치에 스크롤하면 나타납니다.',\n backToTopTips1: '페이지가 지정된 위치로 스크롤되면 맨 아래 오른쪽 모서리에 맨 위로 이동 단추가 나타납니다.',\n backToTopTips2: '버튼 스타일, 표시 / 숨기기, 모양 높이, 반환 높이를 사용자 정의 할 수 있습니다. 텍스트 프롬프트가 필요한 경우 element-ui el-tooltip 요소를 외부에서 사용할 수 있습니다',\n imageUploadTips: 'vue @ 1 버전 만 사용하고 있었고 현재 mockjs와 호환되지 않기 때문에 직접 수정했으며 사용하려는 경우 공식 버전을 사용하는 것이 좋습니다.',\n changeLanguageTips: '언어 전환 성공'\n },\n table: {\n dynamicTips1: '정렬된 헤더',\n dynamicTips2: '정렬되지 않은 헤더',\n dragTips1: '기본 순서',\n dragTips2: '드래그한 순서',\n title: '타이틀',\n importance: '중요성',\n type: 'Type',\n remark: 'Remark',\n search: '검색',\n add: '추가',\n export: '내보내기',\n reviewer: 'Reviewer',\n id: 'ID',\n date: '날짜',\n author: '글쓴이',\n readings: 'Readings',\n status: '상태',\n actions: 'Actions',\n edit: '수정',\n publish: '게시',\n draft: 'Draft',\n delete: '삭제',\n cancel: '취소',\n confirm: '확인'\n },\n example: {\n warning: 'keep-alive의 \\'include \\'는 (는) 현재 경로 기반 캐싱을 지원하지 않으므로 구성 요소 이름을 기반으로 캐시되기 때문에 keep-alive로 페이지를 만들고 편집 할 수 없습니다. 비슷한 캐싱 효과를 얻으려면 localStorage와 같은 브라우저 캐싱 구성표를 사용할 수 있습니다. 또는 keep-alive \\' include \\'를 사용하여 모든 페이지를 직접 캐시하지 마십시오. 자세히보다'\n },\n errorLog: {\n tips: '오른쪽 상단에있는 버그 아이콘을 클릭하십시오',\n description: '이제 관리 시스템은 기본적으로 스파의 형태이며 사용자 경험을 향상 시키지만 페이지 문제의 가능성을 증가시킵니다. 작은 태만으로 인해 전체 페이지 교착 상태가 발생할 수 있습니다. 다행히 Vue는 오류를 처리하거나 예외를보고 할 수있는 예외 처리를 포착하는 방법을 제공합니다.',\n documentation: '문서 소개'\n },\n excel: {\n export: '내보내기',\n selectedExport: '선택 항목 내보내기',\n placeholder: '파일 이름을 입력하세요.(기본 엑셀 목록)'\n },\n zip: {\n export: '내보내기',\n placeholder: '파일 이름을 입력하세요.(기본 파일)'\n },\n pdf: {\n tips: '여기서는 window.print ()를 사용하여 PDF 다운로드 기능을 구현합니다.'\n },\n theme: {\n change: '테마 바꾸기',\n documentation: '테마 문서',\n tips: 'Tips: 탐색 모음의 테마 선택과는 다른 응용 프로그램 시나리오가있는 두 가지 다른 스키닝 방법입니다. 자세한 내용은 설명서를 참조하십시오.'\n },\n tagsView: {\n refresh: '새로고침',\n close: '닫기',\n closeOthers: '기타 닫기',\n closeAll: '모두 닫기'\n },\n settings: {\n title: '페이지 스타일 설정',\n theme: '테마 색상',\n showTagsView: 'Tags-View 열기',\n showSidebarLogo: '사이드 메뉴 로고',\n fixedHeader: '헤더 고정',\n sidebarTextTheme: '사이드 메뉴 글꼴 테마'\n }\n}\n","export default {\n route: {\n dashboard: 'Dashboard',\n documentation: 'Documentazione',\n guide: 'Guida',\n permission: 'Permessi',\n pagePermission: 'Pagina permessi',\n rolePermission: 'Permessi ruolo',\n directivePermission: 'Direttive Permessi',\n icons: 'Icone',\n components: 'Componenti',\n tinymce: 'Tinymce',\n markdown: 'Markdown',\n jsonEditor: 'Editor JSON',\n splitPane: 'SplitPane',\n avatarUpload: 'Carica Avatar',\n dropzone: 'Dropzone',\n sticky: 'Sticky',\n countTo: 'Conta Fino',\n componentMixin: 'Mixin',\n backToTop: 'Torna su',\n draggableDialog: 'Dialogo Trascinabile',\n draggableKanban: 'Kanban Trascinabile',\n draggableList: 'Lista Trascinabile',\n draggableSelect: 'Select Trascinabile',\n charts: 'Grafici',\n barChart: 'Grafico a Barre',\n lineChart: 'Grafico a Linee',\n mixedChart: 'Grafico Misto',\n example: 'Esempio',\n nested: 'Menu Nidificato',\n menu1: 'Menu 1',\n 'menu1-1': 'Menu 1-1',\n 'menu1-2': 'Menu 1-2',\n 'menu1-2-1': 'Menu 1-2-1',\n 'menu1-2-2': 'Menu 1-2-2',\n 'menu1-3': 'Menu 1-3',\n menu2: 'Menu 2',\n table: 'Tabella',\n dynamicTable: 'Tabella Dinamica',\n draggableTable: 'Tabella Trascinabile',\n inlineEditTable: 'Tabella Modifica in Linea',\n complexTable: 'Tabella Complessa',\n tab: 'Tab',\n form: 'Form',\n createArticle: 'Crea Articolo',\n editArticle: 'Modifica Articolo',\n articleList: 'Lista Articoli',\n errorPages: 'Pagine di Errore',\n page401: '401',\n page404: '404',\n errorLog: 'Registro Errori',\n excel: 'Excel',\n exportExcel: 'Esporta Excel',\n selectExcel: 'Esporta Selezionato',\n mergeHeader: 'Unisci Intestazione',\n uploadExcel: 'Carica Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Esporta Zip',\n theme: 'Tema',\n clipboard: 'Appunti',\n i18n: 'I18n',\n externalLink: 'Link Esterno',\n profile: 'Profilo'\n },\n navbar: {\n logOut: 'Esci',\n dashboard: 'Dashboard',\n github: 'Github',\n theme: 'Tema',\n size: 'Grandezza Globale',\n profile: 'Profilo'\n },\n login: {\n title: 'Accesso',\n logIn: 'Accedi',\n username: 'Utente',\n password: 'Password',\n any: 'qualunque',\n thirdparty: 'Connetti con',\n thirdpartyTips: 'Non può essere simulato in locale, quindi combina la tua simulazione di business, per favore!!!'\n },\n documentation: {\n documentation: 'Documentazione',\n github: 'Github Repository'\n },\n permission: {\n createRole: 'Nuovo Ruolo',\n editPermission: 'Modifica',\n roles: 'I tuoi ruoli',\n switchRoles: 'Cambia ruoli',\n tips: 'In alcuni casi usare v-permission non ha effetto. Per esempio: Element-UI el-tab o el-table-column e altri componenti che renderizzano il dom dinamicamente. Puoi farlo solo con v-if.',\n delete: 'Elimina',\n confirm: 'Conferma',\n cancel: 'Annulla'\n },\n guide: {\n description: 'La pagina Guida è utile per alcune persone che entrano nel progetto per la prima volta. Puoi introdurre brevemente le funzionalità del progetto. Il demo è basato su ',\n button: 'Mostra guida'\n },\n components: {\n documentation: 'Documentazione',\n stickyTips: 'when the page is scrolled to the preset position will be sticky on the top.',\n tinymceTips: 'Il testo ricco è una funzionalità fondamentale della gestione backend, ma allo stesso tempo è un posto molto scosceso. Nel processo di selezionare un Rich Text editor o fatto molte ricerche. I Rich Text editor comuni sul mercato sono molto usati, per questo alla fine ho scelto Tinymce. Vedi la più dettagliata comparazione e introduzione al Rich text editor.',\n backToTopTips1: 'Quando la pagina viene spostata alla posizione specificata, il bottone \"Torna Su\" compare nell\\'angolo in basso a destra',\n backToTopTips2: 'Puoi personalizzare lo stile dei bottoni, mostra / nascondi, altezza di apparizione, altezza del ritorno a capo. Se hai bisogno di un prompt di testo, puoi utilizzare gli elementi element-ui el-tooltip esternamente',\n imageUploadTips: 'Da quando usavo la verione 1 di Vue che non è compatibile con mockjs, la ho modificata io stesst, e se la userai, è meglio utilizzare versioni ufficiali.',\n changeLanguageTips: 'Cambio lingua riuscito'\n },\n table: {\n dynamicTips1: 'Intestazione Fissa, ordinato dall\\'ordine delle intestazioni',\n dynamicTips2: 'Intestazione non fissa, ordinato dall\\'ordine dei click',\n dragTips1: 'Ordine di default',\n dragTips2: 'Ordine post trascinamento',\n title: 'Titolo',\n importance: 'Importanza',\n type: 'Tipo',\n remark: 'Osservazione',\n search: 'Ricerca',\n add: 'Aggiungi',\n export: 'Esporta',\n reviewer: 'Recensore',\n id: 'ID',\n date: 'Data',\n author: 'Autore',\n readings: 'Lettori',\n status: 'Status',\n actions: 'Azioni',\n edit: 'Modifica',\n publish: 'Pubblica',\n draft: 'Bozza',\n delete: 'Elimina',\n cancel: 'Annulla',\n confirm: 'Conferma'\n },\n example: {\n warning: 'Creare e modificare pagine non può essere tenuto in cache da keep-alive, perchè l\\'include di keep-alive attualmente non supporta la cache basata sugli indirizzi, per questo ora viene utilizzata la cache basandosi sul nome del componente. Se vuoi utilizzare uno schema di caching basato sul browser come localStorage. O non usare l\\'include di keep-alive per mettere le pagine in cache direttamente. Vedi dettagli'\n },\n errorLog: {\n tips: 'Per favore clicca l\\'icona dell\\'insetto nell\\'angolo in alto a sinistra',\n description: 'Ora il sistema di gestione è fondamentalmente il form della spa, aumenta l\\'esperienza utente, ma incrementa anche le possibilità di problemi nelle pagine, una piccola negligenza può portare al blocco della pagina. Fortunatamente Vue offre un modo di catturare le eccezioni, dove puoi manipolare gli errori o riportare un\\'eccezione.',\n documentation: 'Introduzione documentazione'\n },\n excel: {\n export: 'Esporta',\n selectedExport: 'Esporta Elementi Selezionati',\n placeholder: 'Per favore inserisci il nome del file(default: excel-list)'\n },\n zip: {\n export: 'Esporta',\n placeholder: 'Per favore inserisci il nome del file(default: file)'\n },\n pdf: {\n tips: 'Qui usiamo window.print() per implementare la funzionalità del download PDF.'\n },\n theme: {\n change: 'Cambia Tema',\n documentation: 'Documentazione Tema',\n tips: 'Consiglio: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details.'\n },\n tagsView: {\n refresh: 'Ricarica',\n close: 'Chiudi',\n closeOthers: 'Chiudi Altri',\n closeAll: 'Chiudi Tutto'\n },\n settings: {\n title: 'Impostazione Stile Pagina',\n theme: 'Colore Tema',\n showTagsView: 'Apri Vista Tag',\n showSidebarLogo: 'Logo Barra Laterale',\n fixedHeader: 'Intestazione Fissa',\n sidebarTextTheme: 'Tema Testo Barra Laterale'\n },\n toasts: {\n switchLanguage: 'Cambio lingua effettuato'\n }\n}\n","import Vue from 'vue'\nimport VueI18n from 'vue-i18n'\n\nimport { getLanguage } from '@/utils/cookies'\n\n// element-ui built-in lang\nimport elementEnLocale from 'element-ui/lib/locale/lang/en'\nimport elementZhLocale from 'element-ui/lib/locale/lang/zh-CN'\nimport elementEsLocale from 'element-ui/lib/locale/lang/es'\nimport elementJaLocale from 'element-ui/lib/locale/lang/ja'\nimport elementKoLocale from 'element-ui/lib/locale/lang/ko'\n\n// User defined lang\nimport enLocale from './en'\nimport zhLocale from './zh'\nimport esLocale from './es'\nimport jaLocale from './ja'\nimport koLocale from './ko'\nimport itLocale from './it'\n\nVue.use(VueI18n)\n\nconst messages = {\n en: {\n ...enLocale,\n ...elementEnLocale\n },\n zh: {\n ...zhLocale,\n ...elementZhLocale\n },\n es: {\n ...esLocale,\n ...elementEsLocale\n },\n ja: {\n ...jaLocale,\n ...elementJaLocale\n },\n ko: {\n ...koLocale,\n ...elementKoLocale\n },\n it: {\n ...itLocale\n }\n}\n\nexport const getLocale = () => {\n const cookieLanguage = getLanguage()\n if (cookieLanguage) {\n document.documentElement.lang = cookieLanguage\n return cookieLanguage\n }\n\n const language = navigator.language.toLowerCase()\n const locales = Object.keys(messages)\n for (const locale of locales) {\n if (language.indexOf(locale) > -1) {\n document.documentElement.lang = locale\n return locale\n }\n }\n\n // Default language is english\n return 'en'\n}\n\nconst i18n = new VueI18n({\n locale: getLocale(),\n messages\n})\n\nexport default i18n\n","export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=style&index=0&id=d4c70f86&lang=scss&scoped=true&\"","import {\n Action,\n getModule,\n Module,\n Mutation,\n VuexModule\n} from 'vuex-module-decorators'\nimport store from '@/store'\nimport elementVariables from '@/styles/element-variables.scss'\nimport defaultSettings from '@/settings'\n\nexport interface ISettingsState {\n theme: string\n fixedHeader: boolean\n showSettings: boolean\n showTagsView: boolean\n showSidebarLogo: boolean\n sidebarTextTheme: boolean\n}\n\n@Module({ dynamic: true, store, name: 'settings' })\nclass Settings extends VuexModule implements ISettingsState {\n public theme = elementVariables.theme\n public fixedHeader = defaultSettings.fixedHeader\n public showSettings = defaultSettings.showSettings\n public showTagsView = defaultSettings.showTagsView\n public showSidebarLogo = defaultSettings.showSidebarLogo\n public sidebarTextTheme = defaultSettings.sidebarTextTheme\n\n @Action\n public ChangeSetting(payload: { key: string, value: any }) {\n this.CHANGE_SETTING(payload)\n }\n\n @Mutation\n private CHANGE_SETTING(payload: { key: string, value: any }) {\n const { key, value } = payload\n if (Object.prototype.hasOwnProperty.call(this, key)) {\n (this as any)[key] = value\n }\n }\n}\n\nexport const SettingsModule = getModule(Settings)\n","import { VuexModule, Module, Mutation, Action, getModule } from 'vuex-module-decorators'\nimport { RouteConfig } from 'vue-router'\nimport { asyncRoutes, constantRoutes } from '@/router'\nimport store from '@/store'\nimport { checkPermission } from '@/utils/permission'\n\nconst hasRole = (roles: string[], route: RouteConfig) => {\n if (route.meta?.roles) {\n return roles.some(role => route.meta.roles.includes(role))\n } else {\n return false\n }\n}\nconst hasPermission = (route: RouteConfig) => {\n if (route.meta?.permissions) {\n return checkPermission(route.meta?.permissions)\n } else {\n return false\n }\n}\nconst defaultPublic = (route: RouteConfig) => {\n return !route.meta?.roles && !route.meta?.permissions\n}\n\nexport const filterAsyncRoutes = (routes: RouteConfig[], roles: string[]) => {\n const res: RouteConfig[] = []\n routes.forEach(route => {\n const r = { ...route }\n if ((hasRole(roles, r) || hasPermission(r)) || defaultPublic(r)) {\n if (r.children) {\n r.children = filterAsyncRoutes(r.children, roles)\n }\n res.push(r)\n }\n })\n return res\n}\n\nexport interface IPermissionState {\n routes: RouteConfig[]\n dynamicRoutes: RouteConfig[]\n}\n\n@Module({ dynamic: true, store, name: 'permission' })\nclass Permission extends VuexModule implements IPermissionState {\n public routes: RouteConfig[] = []\n public dynamicRoutes: RouteConfig[] = []\n\n @Mutation\n private SET_ROUTES(routes: RouteConfig[]) {\n this.routes = constantRoutes.concat(routes)\n this.dynamicRoutes = routes\n }\n\n @Action\n public GenerateRoutes(roles: string[]) {\n let accessedRoutes\n if (roles.includes('admin')) {\n accessedRoutes = asyncRoutes\n } else {\n accessedRoutes = filterAsyncRoutes(asyncRoutes, roles)\n }\n this.SET_ROUTES(accessedRoutes)\n }\n}\n\nexport const PermissionModule = getModule(Permission)\n","interface ISettings {\n title: string // Overrides the default title\n showSettings: boolean // Controls settings panel display\n showTagsView: boolean // Controls tagsview display\n showSidebarLogo: boolean // Controls siderbar logo display\n fixedHeader: boolean // If true, will fix the header component\n errorLog: string[] // The env to enable the errorlog component, default 'production' only\n sidebarTextTheme: boolean // If true, will change active text color for sidebar based on theme\n devServerPort: number // Port number for webpack-dev-server\n mockServerPort: number // Port number for mock server\n}\n\n// You can customize below settings :)\nconst settings: ISettings = {\n title: '管理后台',\n showSettings: true,\n showTagsView: true,\n fixedHeader: false,\n showSidebarLogo: false,\n errorLog: ['production'],\n sidebarTextTheme: true,\n devServerPort: 9527,\n mockServerPort: 9528\n}\n\nexport default settings\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuBg\":\"#304156\",\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409eff\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuBg\":\"#304156\",\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409eff\"};","import request from '@/utils/request'\nimport { UserModule } from '@/store/modules/user'\nexport interface IAdmin {\n id: string\n username: string\n showname: string\n comment: string\n locked: boolean\n roles: string[]\n sex: string\n avatar: string\n password: string\n department: string\n level: number\n}\n\nexport const defaultAdmin: IAdmin = {\n id: '',\n username: '',\n showname: '',\n comment: '',\n locked: false,\n roles: [],\n level: 1,\n sex: '0',\n password: '',\n avatar: '',\n department: ''\n}\nexport const getAdminInfo = (data: any) =>\n request({\n url: '/api/admin/info',\n method: 'post',\n data\n })\n\nexport const login = (data: any) =>\n request({\n url: '/api/admin/login',\n method: 'post',\n data\n })\n\nexport const logout = () =>\n request({\n url: '/api/admin/logout',\n method: 'post'\n })\n\nexport const saveAdmin = (data: any) =>\n request({\n url: '/api/admin/save',\n method: 'post',\n data\n })\n\nexport const deleteAdmin = (uid: string) => {\n return request({\n url: `/api/admin/${uid}/delete`,\n method: 'post'\n })\n}\n\nexport const changeLocker = (uid: string, status: boolean) => {\n return request({\n url: `/api/admin/${uid}/locker`,\n method: 'post',\n data: { lock: status }\n })\n}\n\nexport const getUsers = (params: any) =>\n request({\n url: '/api/admins',\n method: 'get',\n params\n })\n\nexport const changePass = (params: any) =>\n request({\n url: '/api/admin/passwd',\n method: 'post',\n data: params\n })\n\nexport const changeInfo = (params: any) =>\n request({\n url: '/api/admin/update_info',\n method: 'post',\n data: params\n })\n","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&\"","import {\n Action,\n getModule,\n Module,\n Mutation,\n VuexModule\n} from 'vuex-module-decorators'\nimport { getAdminInfo, login, logout } from '@/api/admins'\nimport { getToken, removeToken, setToken } from '@/utils/cookies'\nimport store from '@/store'\nimport router, { resetRouter } from '@/router'\nimport { PermissionModule } from '@/store/modules/permission'\nimport { TagsViewModule } from '@/store/modules/tags-view'\n\nexport interface IUserState {\n token: string\n name: string\n avatar: string\n introduction: string\n roles: string[]\n email: string\n permissions: string[][]\n department?: string\n deptname?: string\n level: number\n sex?: string\n}\n\n@Module({ dynamic: true, store, name: 'user' })\nclass User extends VuexModule implements IUserState {\n public token = getToken() || ''\n public name = ''\n public avatar = ''\n public introduction = ''\n public roles: string[] = []\n public permissions: string[][] = []\n public email = ''\n public department = ''\n public deptname = ''\n public level = 999\n public sex = '0'\n\n @Action\n public async Login(userInfo: { username: string, password: string }) {\n let { username, password } = userInfo\n username = username.trim()\n const { data } = await login({ username, password })\n setToken(data.token)\n this.SET_TOKEN(data.token)\n }\n\n @Action\n public ResetToken() {\n removeToken()\n this.SET_TOKEN('')\n this.SET_ROLES([])\n this.SET_PERMISSIONS([])\n }\n\n @Action\n public async GetUserInfo() {\n if (this.token === '') {\n throw Error('GetUserInfo: token is undefined!')\n }\n const { data } = await getAdminInfo({ /* Your params here */ })\n if (!data) {\n throw Error('Verification failed, please Login again.')\n }\n const { roles, showname, avatar, introduction, permissions, department, level, deptname, sex } = data\n // roles must be a non-empty array\n if (!roles || roles.length <= 0) {\n throw Error('GetUserInfo: roles must be a non-null array!')\n }\n this.SET_ROLES(roles)\n this.SET_NAME(showname)\n this.SET_AVATAR(avatar)\n this.SET_INTRODUCTION(introduction)\n this.SET_PERMISSIONS(permissions)\n this.SET_DEPARTMENT(department)\n this.SET_LEVEL(level)\n this.SET_DEPTNAME(deptname)\n this.SET_SEX(sex)\n }\n\n @Action\n public async UpdateInfo(data: any) {\n const { showname, sex, avatar } = data\n this.SET_NAME(showname)\n this.SET_SEX(sex)\n this.SET_AVATAR(avatar)\n }\n\n @Action\n public async ChangeRoles(role: string) {\n // Dynamically modify permissions\n const token = role + '-token'\n this.SET_TOKEN(token)\n setToken(token)\n await this.GetUserInfo()\n resetRouter()\n // Generate dynamic accessible routes based on roles\n PermissionModule.GenerateRoutes(this.roles)\n // Add generated routes\n router.addRoutes(PermissionModule.dynamicRoutes)\n // Reset visited views and cached views\n TagsViewModule.delAllViews()\n }\n\n @Action\n public async LogOut() {\n if (this.token === '') {\n throw Error('LogOut: token is undefined!')\n }\n await logout()\n removeToken()\n this.SET_TOKEN('')\n this.SET_ROLES([])\n this.SET_PERMISSIONS([])\n this.SET_DEPARTMENT('')\n }\n\n @Mutation\n private SET_TOKEN(token: string) {\n this.token = token\n }\n\n @Mutation\n private SET_NAME(name: string) {\n this.name = name\n }\n\n @Mutation\n private SET_AVATAR(avatar: string) {\n this.avatar = avatar\n }\n\n @Mutation\n private SET_INTRODUCTION(introduction: string) {\n this.introduction = introduction\n }\n\n @Mutation\n private SET_ROLES(roles: string[]) {\n this.roles = roles\n }\n\n @Mutation\n private SET_DEPARTMENT(department: string) {\n this.department = department\n }\n\n @Mutation\n private SET_DEPTNAME(deptname: string) {\n this.deptname = deptname\n }\n\n @Mutation\n private SET_SEX(sex: string) {\n this.sex = sex\n }\n\n @Mutation\n private SET_LEVEL(level: number) {\n this.level = level\n }\n\n @Mutation\n private SET_PERMISSIONS(permissions: string[]) {\n const results: string[][] = []\n for (const permission of permissions) {\n if (permission === '*') {\n results.push(['*', '*'])\n } else {\n results.push(permission.split(':'))\n }\n }\n this.permissions = results\n }\n}\n\nexport const UserModule = getModule(User)\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuBg\":\"#304156\",\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409eff\"};","import { VuexModule, Module, Mutation, Action, getModule } from 'vuex-module-decorators'\nimport { getSidebarStatus, getSize, setSidebarStatus, setLanguage, setSize } from '@/utils/cookies'\nimport { getLocale } from '@/lang'\nimport store from '@/store'\n\nexport enum DeviceType {\n Mobile,\n Desktop,\n}\n\nexport interface IAppState {\n device: DeviceType\n sidebar: {\n opened: boolean\n withoutAnimation: boolean\n }\n language: string\n size: string\n}\n\n@Module({ dynamic: true, store, name: 'app' })\nclass App extends VuexModule implements IAppState {\n public sidebar = {\n opened: getSidebarStatus() !== 'closed',\n withoutAnimation: false\n }\n\n public device = DeviceType.Desktop\n public language = getLocale()\n public size = getSize() || 'medium'\n\n @Mutation\n private TOGGLE_SIDEBAR(withoutAnimation: boolean) {\n this.sidebar.opened = !this.sidebar.opened\n this.sidebar.withoutAnimation = withoutAnimation\n if (this.sidebar.opened) {\n setSidebarStatus('opened')\n } else {\n setSidebarStatus('closed')\n }\n }\n\n @Mutation\n private CLOSE_SIDEBAR(withoutAnimation: boolean) {\n this.sidebar.opened = false\n this.sidebar.withoutAnimation = withoutAnimation\n setSidebarStatus('closed')\n }\n\n @Mutation\n private TOGGLE_DEVICE(device: DeviceType) {\n this.device = device\n }\n\n @Mutation\n private SET_LANGUAGE(language: string) {\n this.language = language\n setLanguage(this.language)\n }\n\n @Mutation\n private SET_SIZE(size: string) {\n this.size = size\n setSize(this.size)\n }\n\n @Action\n public ToggleSideBar(withoutAnimation: boolean) {\n this.TOGGLE_SIDEBAR(withoutAnimation)\n }\n\n @Action\n public CloseSideBar(withoutAnimation: boolean) {\n this.CLOSE_SIDEBAR(withoutAnimation)\n }\n\n @Action\n public ToggleDevice(device: DeviceType) {\n this.TOGGLE_DEVICE(device)\n }\n\n @Action\n public SetLanguage(language: string) {\n this.SET_LANGUAGE(language)\n }\n\n @Action\n public SetSize(size: string) {\n this.SET_SIZE(size)\n }\n}\n\nexport const AppModule = getModule(App)\n","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=1a173b7f&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=715ce9d0&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"app-wrapper\",class:_vm.classObj},[(_vm.classObj.mobile && _vm.sidebar.opened)?_c('div',{staticClass:\"drawer-bg\",on:{\"click\":_vm.handleClickOutside}}):_vm._e(),_c('sidebar',{staticClass:\"sidebar-container\"}),_c('div',{staticClass:\"main-container\",class:{hasTagsView: _vm.showTagsView}},[_c('div',{class:{'fixed-header': _vm.fixedHeader}},[_c('navbar'),(_vm.showTagsView)?_c('tags-view'):_vm._e()],1),_c('app-main'),(_vm.showSettings)?_c('right-panel',[_c('settings')],1):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"app-main\"},[_c('transition',{attrs:{\"name\":\"fade-transform\",\"mode\":\"out-in\"}},[_c('keep-alive',{attrs:{\"include\":_vm.cachedViews}},[_c('router-view',{key:_vm.key})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator'\nimport { TagsViewModule } from '@/store/modules/tags-view'\n\n@Component({\n name: 'AppMain'\n})\nexport default class extends Vue {\n get cachedViews() {\n return TagsViewModule.cachedViews\n }\n\n get key() {\n return this.$route.path\n }\n}\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AppMain.vue?vue&type=template&id=d4c70f86&scoped=true&\"\nimport script from \"./AppMain.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppMain.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AppMain.vue?vue&type=style&index=0&id=d4c70f86&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d4c70f86\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"navbar\"},[_c('hamburger',{staticClass:\"hamburger-container\",attrs:{\"id\":\"hamburger-container\",\"is-active\":_vm.sidebar.opened},on:{\"toggle-click\":_vm.toggleSideBar}}),_c('breadcrumb',{staticClass:\"breadcrumb-container\",attrs:{\"id\":\"breadcrumb-container\"}}),_c('div',{staticClass:\"right-menu\"},[(_vm.device!=='mobile')?[_c('header-search',{staticClass:\"right-menu-item\"}),_c('error-log',{staticClass:\"errLog-container right-menu-item hover-effect\"}),_c('screenfull',{staticClass:\"right-menu-item hover-effect\"}),_c('el-tooltip',{attrs:{\"content\":_vm.$t('navbar.size'),\"effect\":\"dark\",\"placement\":\"bottom\"}},[_c('size-select',{staticClass:\"right-menu-item hover-effect\"})],1),_c('lang-select',{staticClass:\"right-menu-item hover-effect\"})]:_vm._e(),_c('el-dropdown',{staticClass:\"avatar-container right-menu-item hover-effect\",attrs:{\"trigger\":\"click\"}},[_c('div',{staticClass:\"avatar-wrapper\"},[_c('img',{staticClass:\"user-avatar\",attrs:{\"src\":_vm.avatar+'?imageView2/1/w/80/h/80'}}),_c('i',{staticClass:\"el-icon-caret-bottom\"})]),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('router-link',{attrs:{\"to\":\"/\"}},[_c('el-dropdown-item',[_vm._v(\" \"+_vm._s(_vm.$t('navbar.dashboard'))+\" \")])],1),_c('router-link',{attrs:{\"to\":\"/profile/\"}},[_c('el-dropdown-item',[_vm._v(\" \"+_vm._s(_vm.$t('navbar.profile'))+\" \")])],1),_c('router-link',{attrs:{\"to\":\"/password\"}},[_c('el-dropdown-item',[_vm._v(\" \"+_vm._s(_vm.$t('navbar.password'))+\" \")])],1),_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.logout($event)}}},[_c('span',{staticStyle:{\"display\":\"block\"}},[_vm._v(\" \"+_vm._s(_vm.$t('navbar.logOut'))+\" \")])])],1)],1)],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-breadcrumb',{staticClass:\"app-breadcrumb\",attrs:{\"separator\":\"/\"}},[_c('transition-group',{attrs:{\"name\":\"breadcrumb\"}},_vm._l((_vm.breadcrumbs),function(item,index){return _c('el-breadcrumb-item',{key:item.path},[(item.redirect === 'noredirect' || index === _vm.breadcrumbs.length-1)?_c('span',{staticClass:\"no-redirect\"},[_vm._v(_vm._s(_vm.$t('route.' + item.meta.title)))]):_c('a',{on:{\"click\":function($event){$event.preventDefault();return _vm.handleLink(item)}}},[_vm._v(_vm._s(_vm.$t('route.' + item.meta.title)))])])}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { compile } from 'path-to-regexp'\nimport { Component, Vue, Watch } from 'vue-property-decorator'\nimport { RouteRecord, Route } from 'vue-router'\n\n@Component({\n name: 'Breadcrumb'\n})\nexport default class extends Vue {\n private breadcrumbs: RouteRecord[] = []\n\n @Watch('$route')\n private onRouteChange(route: Route) {\n // if you go to the redirect page, do not update the breadcrumbs\n if (route.path.startsWith('/redirect/')) {\n return\n }\n this.getBreadcrumb()\n }\n\n created() {\n this.getBreadcrumb()\n }\n\n private getBreadcrumb() {\n let matched = this.$route.matched.filter((item) => item.meta && item.meta.title)\n const first = matched[0]\n if (!this.isDashboard(first)) {\n matched = [{ path: '/dashboard', meta: { title: 'dashboard' } } as RouteRecord].concat(matched)\n }\n this.breadcrumbs = matched.filter((item) => {\n return item.meta && item.meta.title && item.meta.breadcrumb !== false\n })\n }\n\n private isDashboard(route: RouteRecord) {\n const name = route && route.name\n if (!name) {\n return false\n }\n return name.trim().toLocaleLowerCase() === 'Dashboard'.toLocaleLowerCase()\n }\n\n private pathCompile(path: string) {\n // To solve this problem https://github.com/PanJiaChen/vue-element-admin/issues/561\n const { params } = this.$route\n const toPath = compile(path)\n return toPath(params)\n }\n\n private handleLink(item: any) {\n const { redirect, path } = item\n if (redirect) {\n this.$router.push(redirect).catch(err => {\n console.warn(err)\n })\n return\n }\n this.$router.push(this.pathCompile(path)).catch(err => {\n console.warn(err)\n })\n }\n}\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=48aca8f5&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=48aca8f5&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"48aca8f5\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.errorLogs.length>0)?_c('div',[_c('el-badge',{staticStyle:{\"line-height\":\"25px\",\"margin-top\":\"-5px\"},attrs:{\"is-dot\":true},nativeOn:{\"click\":function($event){_vm.dialogTableVisible=true}}},[_c('el-button',{staticStyle:{\"padding\":\"8px 10px\"},attrs:{\"size\":\"small\",\"type\":\"danger\"}},[_c('svg-icon',{attrs:{\"name\":\"bug\"}})],1)],1),_c('el-dialog',{attrs:{\"visible\":_vm.dialogTableVisible,\"width\":\"80%\",\"append-to-body\":\"\"},on:{\"update:visible\":function($event){_vm.dialogTableVisible=$event}}},[_c('div',{attrs:{\"slot\":\"title\"},slot:\"title\"},[_c('span',{staticStyle:{\"padding-right\":\"10px\"}},[_vm._v(\"Error Log\")]),_c('el-button',{attrs:{\"size\":\"mini\",\"type\":\"primary\",\"icon\":\"el-icon-delete\"},on:{\"click\":_vm.clearAll}},[_vm._v(\" Clear All \")])],1),_c('el-table',{attrs:{\"data\":_vm.errorLogs,\"border\":\"\"}},[_c('el-table-column',{attrs:{\"label\":\"Message\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar row = ref.row;\nreturn [_c('div',[_c('span',{staticClass:\"message-title\"},[_vm._v(\"Msg:\")]),_c('el-tag',{attrs:{\"type\":\"danger\"}},[_vm._v(\" \"+_vm._s(row.err.message)+\" \")])],1),_c('br'),_c('div',[_c('span',{staticClass:\"message-title\",staticStyle:{\"padding-right\":\"10px\"}},[_vm._v(\"Info: \")]),_c('el-tag',{attrs:{\"type\":\"warning\"}},[_vm._v(\" \"+_vm._s(row.vm.$vnode.tag)+\" error in \"+_vm._s(row.info)+\" \")])],1),_c('br'),_c('div',[_c('span',{staticClass:\"message-title\",staticStyle:{\"padding-right\":\"16px\"}},[_vm._v(\"Url: \")]),_c('el-tag',{attrs:{\"type\":\"success\"}},[_vm._v(\" \"+_vm._s(row.url)+\" \")])],1)]}}],null,false,3134886942)}),_c('el-table-column',{attrs:{\"label\":\"Stack\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar row = ref.row;\nreturn [_vm._v(\" \"+_vm._s(row.err.stack)+\" \")]}}],null,false,284746202)})],1)],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { VuexModule, Module, Mutation, Action, getModule } from 'vuex-module-decorators'\nimport store from '@/store'\n\ninterface IErrorLog {\n err: Error\n vm: any\n info: string\n url: string\n}\n\nexport interface IErrorLogState {\n logs: IErrorLog[]\n}\n\n@Module({ dynamic: true, store, name: 'errorLog' })\nclass ErrorLog extends VuexModule implements IErrorLogState {\n public logs: IErrorLog[] = []\n\n @Mutation\n private ADD_ERROR_LOG(log: IErrorLog) {\n this.logs.push(log)\n }\n\n @Mutation\n private CLEAR_ERROR_LOG() {\n this.logs.splice(0)\n }\n\n @Action\n public AddErrorLog(log: IErrorLog) {\n this.ADD_ERROR_LOG(log)\n }\n\n @Action\n public ClearErrorLog() {\n this.CLEAR_ERROR_LOG()\n }\n}\n\nexport const ErrorLogModule = getModule(ErrorLog)\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator'\nimport { ErrorLogModule } from '@/store/modules/error-log'\n\n@Component({\n name: 'ErrorLog'\n})\nexport default class extends Vue {\n private dialogTableVisible = false\n\n get errorLogs() {\n return ErrorLogModule.logs\n }\n\n private clearAll() {\n this.dialogTableVisible = false\n ErrorLogModule.ClearErrorLog()\n }\n}\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=72a28363&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=72a28363&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"72a28363\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[{'is-active': _vm.isActive}],on:{\"click\":_vm.toggleClick}},[_c('svg-icon',{attrs:{\"name\":\"hamburger\",\"width\":\"20\",\"height\":\"20\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue } from 'vue-property-decorator'\n\n@Component({\n name: 'Hamburger'\n})\nexport default class extends Vue {\n @Prop({ default: false }) private isActive!: boolean\n\n private toggleClick() {\n this.$emit('toggle-click')\n }\n}\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=715ce9d0&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=715ce9d0&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"715ce9d0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"header-search\",class:{'show': _vm.show},attrs:{\"id\":\"header-search\"}},[_c('svg-icon',{staticClass:\"search-icon\",attrs:{\"name\":\"search\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.click($event)}}}),_c('el-select',{ref:\"headerSearchSelect\",staticClass:\"header-search-select\",attrs:{\"remote-method\":_vm.querySearch,\"filterable\":\"\",\"default-first-option\":\"\",\"remote\":\"\",\"placeholder\":\"Search\"},on:{\"change\":_vm.change},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}},_vm._l((_vm.options),function(item){return _c('el-option',{key:item.path,attrs:{\"value\":item,\"label\":item.meta.title.join(' > ')}})}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport path from 'path'\nimport Fuse from 'fuse.js' // A lightweight fuzzy-search module\nimport { Component, Vue, Watch } from 'vue-property-decorator'\nimport { RouteConfig } from 'vue-router'\nimport { AppModule } from '@/store/modules/app'\nimport { PermissionModule } from '@/store/modules/permission'\nimport i18n from '@/lang' // Internationalization\n\n@Component({\n name: 'HeaderSearch'\n})\nexport default class extends Vue {\n private search = ''\n private show = false\n private options: RouteConfig[] = []\n private searchPool: RouteConfig[] = []\n private fuse?: Fuse\n\n get routes() {\n return PermissionModule.routes\n }\n\n get lang() {\n return AppModule.language\n }\n\n @Watch('lang')\n private onLangChange() {\n this.searchPool = this.generateRoutes(this.routes)\n }\n\n @Watch('routes')\n private onRoutesChange() {\n this.searchPool = this.generateRoutes(this.routes)\n }\n\n @Watch('searchPool')\n private onSearchPoolChange(value: RouteConfig[]) {\n this.initFuse(value)\n }\n\n @Watch('show')\n private onShowChange(value: boolean) {\n if (value) {\n document.body.addEventListener('click', this.close)\n } else {\n document.body.removeEventListener('click', this.close)\n }\n }\n\n mounted() {\n this.searchPool = this.generateRoutes(this.routes)\n }\n\n private click() {\n this.show = !this.show\n if (this.show) {\n this.$refs.headerSearchSelect && (this.$refs.headerSearchSelect as HTMLElement).focus()\n }\n }\n\n private close() {\n this.$refs.headerSearchSelect && (this.$refs.headerSearchSelect as HTMLElement).blur()\n this.options = []\n this.show = false\n }\n\n private change(route: RouteConfig) {\n this.$router.push(route.path).catch(err => {\n console.warn(err)\n })\n this.search = ''\n this.options = []\n this.$nextTick(() => {\n this.show = false\n })\n }\n\n private initFuse(list: RouteConfig[]) {\n this.fuse = new Fuse(list, {\n shouldSort: true,\n threshold: 0.4,\n location: 0,\n distance: 100,\n minMatchCharLength: 1,\n keys: [{\n name: 'title',\n weight: 0.7\n }, {\n name: 'path',\n weight: 0.3\n }]\n })\n }\n\n // Filter out the routes that can be displayed in the sidebar\n // And generate the internationalized title\n private generateRoutes(routes: RouteConfig[], basePath = '/', prefixTitle: string[] = []) {\n let res: RouteConfig[] = []\n\n for (const router of routes) {\n // skip hidden router\n if (router.meta && router.meta.hidden) {\n continue\n }\n\n const data: RouteConfig = {\n path: path.resolve(basePath, router.path),\n meta: {\n title: [...prefixTitle]\n }\n }\n\n if (router.meta && router.meta.title) {\n // generate internationalized title\n const i18ntitle = i18n.t(`route.${router.meta.title}`).toString()\n data.meta.title = [...data.meta.title, i18ntitle]\n if (router.redirect !== 'noRedirect') {\n // only push the routes with title\n // special case: need to exclude parent router without redirect\n res.push(data)\n }\n }\n\n // recursive child routes\n if (router.children) {\n const tempRoutes = this.generateRoutes(router.children, data.path, data.meta.title)\n if (tempRoutes.length >= 1) {\n res = [...res, ...tempRoutes]\n }\n }\n }\n return res\n }\n\n private querySearch(query: string) {\n if (query !== '') {\n if (this.fuse) {\n this.options = this.fuse.search(query).map((result) => result.item)\n }\n } else {\n this.options = []\n }\n }\n}\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=ed2ef868&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=ed2ef868&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ed2ef868\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"screenfull\"}},[_c('svg-icon',{attrs:{\"name\":_vm.isFullscreen? 'exit-fullscreen': 'fullscreen'},on:{\"click\":_vm.click}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\nimport screenfull from 'screenfull'\nimport { Component, Vue } from 'vue-property-decorator'\n\nconst sf = screenfull\n\n@Component({\n name: 'Screenfull'\n})\nexport default class extends Vue {\n private isFullscreen = false\n\n mounted() {\n if (sf.isEnabled) {\n sf.on('change', this.change)\n }\n }\n\n beforeDestory() {\n if (sf.isEnabled) {\n sf.off('change', this.change)\n }\n }\n\n private change() {\n if (sf.isEnabled) {\n this.isFullscreen = sf.isFullscreen\n }\n }\n\n private click() {\n if (!sf.isEnabled) {\n this.$message({\n message: 'you browser can not work',\n type: 'warning'\n })\n return false\n }\n sf.toggle()\n }\n}\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=2bed2e26&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dropdown',{attrs:{\"id\":\"size-select\",\"trigger\":\"click\"},on:{\"command\":_vm.handleSetSize}},[_c('div',[_c('svg-icon',{staticClass:\"size-icon\",attrs:{\"name\":\"size\"}})],1),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},_vm._l((_vm.sizeOptions),function(item){return _c('el-dropdown-item',{key:item.value,attrs:{\"disabled\":_vm.size===item.value,\"command\":item.value}},[_vm._v(\" \"+_vm._s(item.label)+\" \")])}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator'\nimport { AppModule } from '@/store/modules/app'\nimport { TagsViewModule } from '@/store/modules/tags-view'\n\n@Component({\n name: 'SizeSelect'\n})\nexport default class extends Vue {\n private sizeOptions = [\n { label: 'Default', value: 'default' },\n { label: 'Medium', value: 'medium' },\n { label: 'Small', value: 'small' },\n { label: 'Mini', value: 'mini' }\n ]\n\n get size() {\n return AppModule.size\n }\n\n private handleSetSize(size: string) {\n (this as any).$ELEMENT.size = size\n AppModule.SetSize(size)\n this.refreshView()\n this.$message({\n message: 'Switch Size Success',\n type: 'success'\n })\n }\n\n private refreshView() {\n // In order to make the cached page re-rendered\n TagsViewModule.delAllCachedViews()\n const { fullPath } = this.$route\n this.$nextTick(() => {\n this.$router.replace({\n path: '/redirect' + fullPath\n }).catch(err => {\n console.warn(err)\n })\n })\n }\n}\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=7035045c&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator'\nimport { AppModule } from '@/store/modules/app'\nimport { UserModule } from '@/store/modules/user'\nimport Breadcrumb from '@/components/Breadcrumb/index.vue'\nimport ErrorLog from '@/components/ErrorLog/index.vue'\nimport Hamburger from '@/components/Hamburger/index.vue'\nimport HeaderSearch from '@/components/HeaderSearch/index.vue'\nimport LangSelect from '@/components/LangSelect/index.vue'\nimport Screenfull from '@/components/Screenfull/index.vue'\nimport SizeSelect from '@/components/SizeSelect/index.vue'\n\n@Component({\n name: 'Navbar',\n components: {\n Breadcrumb,\n ErrorLog,\n Hamburger,\n HeaderSearch,\n LangSelect,\n Screenfull,\n SizeSelect\n }\n})\nexport default class extends Vue {\n get sidebar() {\n return AppModule.sidebar\n }\n\n get device() {\n return AppModule.device.toString()\n }\n\n get avatar() {\n return UserModule.avatar\n }\n\n private toggleSideBar() {\n AppModule.ToggleSideBar(false)\n }\n\n private async logout() {\n await UserModule.LogOut()\n this.$router.push(`/login?redirect=${this.$route.fullPath}`).catch(err => {\n console.warn(err)\n })\n }\n}\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=1a173b7f&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=1a173b7f&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1a173b7f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"drawer-container\"},[_c('div',[_c('h3',{staticClass:\"drawer-title\"},[_vm._v(\" \"+_vm._s(_vm.$t('settings.title'))+\" \")]),_c('div',{staticClass:\"drawer-item\"},[_c('span',[_vm._v(_vm._s(_vm.$t('settings.theme')))]),_c('theme-picker',{staticStyle:{\"float\":\"right\",\"height\":\"26px\",\"margin\":\"-3px 8px 0 0\"},on:{\"change\":_vm.themeChange}})],1),_c('div',{staticClass:\"drawer-item\"},[_c('span',[_vm._v(_vm._s(_vm.$t('settings.showTagsView')))]),_c('el-switch',{staticClass:\"drawer-switch\",model:{value:(_vm.showTagsView),callback:function ($$v) {_vm.showTagsView=$$v},expression:\"showTagsView\"}})],1),_c('div',{staticClass:\"drawer-item\"},[_c('span',[_vm._v(_vm._s(_vm.$t('settings.showSidebarLogo')))]),_c('el-switch',{staticClass:\"drawer-switch\",model:{value:(_vm.showSidebarLogo),callback:function ($$v) {_vm.showSidebarLogo=$$v},expression:\"showSidebarLogo\"}})],1),_c('div',{staticClass:\"drawer-item\"},[_c('span',[_vm._v(_vm._s(_vm.$t('settings.fixedHeader')))]),_c('el-switch',{staticClass:\"drawer-switch\",model:{value:(_vm.fixedHeader),callback:function ($$v) {_vm.fixedHeader=$$v},expression:\"fixedHeader\"}})],1),_c('div',{staticClass:\"drawer-item\"},[_c('span',[_vm._v(_vm._s(_vm.$t('settings.sidebarTextTheme')))]),_c('el-switch',{staticClass:\"drawer-switch\",model:{value:(_vm.sidebarTextTheme),callback:function ($$v) {_vm.sidebarTextTheme=$$v},expression:\"sidebarTextTheme\"}})],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-color-picker',{staticClass:\"theme-picker\",attrs:{\"predefine\":['#409EFF', '#1890ff', '#304156','#212121','#11a983', '#13c2c2', '#6959CD', '#f5222d'],\"popper-class\":\"theme-picker-dropdown\"},model:{value:(_vm.theme),callback:function ($$v) {_vm.theme=$$v},expression:\"theme\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Watch } from 'vue-property-decorator'\nimport { SettingsModule } from '@/store/modules/settings'\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst version = require('element-ui/package.json').version // element-ui version from node_modules\nconst ORIGINAL_THEME = '#409EFF' // default color\n\n@Component({\n name: 'ThemePicker'\n})\nexport default class extends Vue {\n private chalk = '' // The content of theme-chalk css\n private theme = ''\n\n get defaultTheme() {\n return SettingsModule.theme\n }\n\n @Watch('defaultTheme', { immediate: true })\n private onDefaultThemeChange(value: string) {\n this.theme = value\n }\n\n @Watch('theme')\n private async onThemeChange(value: string) {\n if (!value) return\n const oldValue = this.chalk ? this.theme : ORIGINAL_THEME\n const themeCluster = this.getThemeCluster(value.replace('#', ''))\n const originalCluster = this.getThemeCluster(oldValue.replace('#', ''))\n const message = this.$message({\n message: ' Compiling the theme',\n customClass: 'theme-message',\n type: 'success',\n duration: 0,\n iconClass: 'el-icon-loading'\n })\n\n if (!this.chalk) {\n const url = `https://unpkg.com/element-ui@${version}/lib/theme-chalk/index.css`\n await this.getCSSString(url, 'chalk')\n }\n\n const getHandler = (variable: string, id: string) => {\n return () => {\n const originalCluster = this.getThemeCluster(ORIGINAL_THEME.replace('#', ''))\n const newStyle = this.updateStyle((this as any)[variable], originalCluster, themeCluster)\n\n let styleTag = document.getElementById(id)\n if (!styleTag) {\n styleTag = document.createElement('style')\n styleTag.setAttribute('id', id)\n document.head.appendChild(styleTag)\n }\n styleTag.innerText = newStyle\n }\n }\n const chalkHandler = getHandler('chalk', 'chalk-style')\n chalkHandler()\n\n let styles: HTMLElement[] = [].slice.call(document.querySelectorAll('style'))\n styles = styles\n .filter(style => {\n const text = style.innerText\n return new RegExp(oldValue, 'i').test(text) && !/Chalk Variables/.test(text)\n })\n styles.forEach(style => {\n const { innerText } = style\n if (typeof innerText !== 'string') return\n style.innerText = this.updateStyle(innerText, originalCluster, themeCluster)\n })\n\n this.$emit('change', value)\n message.close()\n }\n\n private updateStyle(style: string, oldCluster: string[], newCluster: string[]) {\n let newStyle = style\n oldCluster.forEach((color, index) => {\n newStyle = newStyle.replace(new RegExp(color, 'ig'), newCluster[index])\n })\n return newStyle\n }\n\n private getCSSString(url: string, variable: string) {\n return new Promise(resolve => {\n const xhr = new XMLHttpRequest()\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4 && xhr.status === 200) {\n (this as any)[variable] = xhr.responseText.replace(/@font-face{[^}]+}/, '')\n resolve()\n }\n }\n xhr.open('GET', url)\n xhr.send()\n })\n }\n\n private getThemeCluster(theme: string) {\n const tintColor = (color: string, tint: number) => {\n let red = parseInt(color.slice(0, 2), 16)\n let green = parseInt(color.slice(2, 4), 16)\n let blue = parseInt(color.slice(4, 6), 16)\n if (tint === 0) { // when primary color is in its rgb space\n return [red, green, blue].join(',')\n } else {\n red += Math.round(tint * (255 - red))\n green += Math.round(tint * (255 - green))\n blue += Math.round(tint * (255 - blue))\n return `#${red.toString(16)}${green.toString(16)}${blue.toString(16)}`\n }\n }\n\n const shadeColor = (color: string, shade: number) => {\n let red = parseInt(color.slice(0, 2), 16)\n let green = parseInt(color.slice(2, 4), 16)\n let blue = parseInt(color.slice(4, 6), 16)\n red = Math.round((1 - shade) * red)\n green = Math.round((1 - shade) * green)\n blue = Math.round((1 - shade) * blue)\n return `#${red.toString(16)}${green.toString(16)}${blue.toString(16)}`\n }\n\n const clusters = [theme]\n for (let i = 0; i <= 9; i++) {\n clusters.push(tintColor(theme, Number((i / 10).toFixed(2))))\n }\n clusters.push(shadeColor(theme, 0.1))\n return clusters\n }\n}\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=70f006ec&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator'\nimport { SettingsModule } from '@/store/modules/settings'\nimport ThemePicker from '@/components/ThemePicker/index.vue'\n\n@Component({\n name: 'Settings',\n components: {\n ThemePicker\n }\n})\nexport default class extends Vue {\n get fixedHeader() {\n return SettingsModule.fixedHeader\n }\n\n set fixedHeader(value) {\n SettingsModule.ChangeSetting({ key: 'fixedHeader', value })\n }\n\n get showTagsView() {\n return SettingsModule.showTagsView\n }\n\n set showTagsView(value) {\n SettingsModule.ChangeSetting({ key: 'showTagsView', value })\n }\n\n get showSidebarLogo() {\n return SettingsModule.showSidebarLogo\n }\n\n set showSidebarLogo(value) {\n SettingsModule.ChangeSetting({ key: 'showSidebarLogo', value })\n }\n\n get sidebarTextTheme() {\n return SettingsModule.sidebarTextTheme\n }\n\n set sidebarTextTheme(value) {\n SettingsModule.ChangeSetting({ key: 'sidebarTextTheme', value })\n }\n\n private themeChange(value: string) {\n SettingsModule.ChangeSetting({ key: 'theme', value })\n }\n}\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=f76a8f60&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=f76a8f60&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f76a8f60\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{'has-logo': _vm.showLogo}},[(_vm.showLogo)?_c('sidebar-logo',{attrs:{\"collapse\":_vm.isCollapse}}):_vm._e(),_c('el-scrollbar',{attrs:{\"wrap-class\":\"scrollbar-wrapper\"}},[_c('el-menu',{attrs:{\"default-active\":_vm.activeMenu,\"collapse\":_vm.isCollapse,\"background-color\":_vm.variables.menuBg,\"text-color\":_vm.variables.menuText,\"active-text-color\":_vm.menuActiveTextColor,\"unique-opened\":false,\"collapse-transition\":false,\"mode\":\"vertical\"}},_vm._l((_vm.routes),function(route){return _c('sidebar-item',{key:route.path,attrs:{\"item\":route,\"base-path\":route.path,\"is-collapse\":_vm.isCollapse}})}),1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.item.meta || !_vm.item.meta.hidden)?_c('div',{class:[_vm.isCollapse ? 'simple-mode' : 'full-mode', {'first-level': _vm.isFirstLevel}]},[(!_vm.alwaysShowRootMenu && _vm.theOnlyOneChild && !_vm.theOnlyOneChild.children)?[(_vm.theOnlyOneChild.meta)?_c('sidebar-item-link',{attrs:{\"to\":_vm.resolvePath(_vm.theOnlyOneChild.path)}},[_c('el-menu-item',{class:{'submenu-title-noDropdown': _vm.isFirstLevel},attrs:{\"index\":_vm.resolvePath(_vm.theOnlyOneChild.path)}},[(_vm.theOnlyOneChild.meta.icon)?_c('svg-icon',{attrs:{\"name\":_vm.theOnlyOneChild.meta.icon}}):_vm._e(),(_vm.item.meta && _vm.item.meta.elicon)?_c('i',{class:_vm.item.meta.elicon}):_vm._e(),(_vm.theOnlyOneChild.meta.title)?_c('span',{attrs:{\"slot\":\"title\"},slot:\"title\"},[_vm._v(_vm._s(_vm.$t('route.' + _vm.theOnlyOneChild.meta.title)))]):_vm._e()],1)],1):_vm._e()]:_c('el-submenu',{attrs:{\"index\":_vm.resolvePath(_vm.item.path),\"popper-append-to-body\":\"\"}},[_c('template',{slot:\"title\"},[(_vm.item.meta && _vm.item.meta.icon)?_c('svg-icon',{attrs:{\"name\":_vm.item.meta.icon}}):_vm._e(),(_vm.item.meta && _vm.item.meta.elicon)?_c('i',{class:_vm.item.meta.elicon}):_vm._e(),(_vm.item.meta && _vm.item.meta.title)?_c('span',{attrs:{\"slot\":\"title\"},slot:\"title\"},[_vm._v(_vm._s(_vm.$t('route.' + _vm.item.meta.title)))]):_vm._e()],1),(_vm.item.children)?_vm._l((_vm.item.children),function(child){return _c('sidebar-item',{key:child.path,staticClass:\"nest-menu\",attrs:{\"item\":child,\"is-collapse\":_vm.isCollapse,\"is-first-level\":false,\"base-path\":_vm.resolvePath(child.path)}})}):_vm._e()],2)],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const isValidUsername = (str: string) => ['admin', 'editor'].indexOf(str.trim()) >= 0\n\nexport const isExternal = (path: string) => /^(https?:|mailto:|tel:)/.test(path)\n\nexport const isArray = (arg: any) => {\n if (typeof Array.isArray === 'undefined') {\n return Object.prototype.toString.call(arg) === '[object Array]'\n }\n return Array.isArray(arg)\n}\n\nexport const isValidURL = (url: string) => {\n const reg = /^(https?|ftp):\\/\\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+\\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\\/($|[a-zA-Z0-9.,?'\\\\+&%$#=~_-]+))*$/\n return reg.test(url)\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isExternal(_vm.to))?_c('a',{attrs:{\"href\":_vm.to,\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._t(\"default\")],2):_c('router-link',{attrs:{\"to\":_vm.to}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue } from 'vue-property-decorator'\nimport { isExternal } from '@/utils/validate'\n\n@Component({\n name: 'SidebarItemLink'\n})\nexport default class extends Vue {\n @Prop({ required: true }) private to!: string\n\n private isExternal = isExternal\n}\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItemLink.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItemLink.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SidebarItemLink.vue?vue&type=template&id=0d65696a&\"\nimport script from \"./SidebarItemLink.vue?vue&type=script&lang=ts&\"\nexport * from \"./SidebarItemLink.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport path from 'path'\nimport { Component, Prop, Vue } from 'vue-property-decorator'\nimport { RouteConfig } from 'vue-router'\nimport { isExternal } from '@/utils/validate'\nimport SidebarItemLink from './SidebarItemLink.vue'\n\n@Component({\n // Set 'name' here to prevent uglifyjs from causing recursive component not work\n // See https://medium.com/haiiro-io/element-component-name-with-vue-class-component-f3b435656561 for detail\n name: 'SidebarItem',\n components: {\n SidebarItemLink\n }\n})\nexport default class extends Vue {\n @Prop({ required: true }) private item!: RouteConfig\n @Prop({ default: false }) private isCollapse!: boolean\n @Prop({ default: true }) private isFirstLevel!: boolean\n @Prop({ default: '' }) private basePath!: string\n\n get alwaysShowRootMenu() {\n if (this.item.meta && this.item.meta.alwaysShow) {\n return true\n }\n return false\n }\n\n get showingChildNumber() {\n if (this.item.children) {\n const showingChildren = this.item.children.filter((item) => {\n if (item.meta && item.meta.hidden) {\n return false\n } else {\n return true\n }\n })\n return showingChildren.length\n }\n return 0\n }\n\n get theOnlyOneChild() {\n if (this.showingChildNumber > 1) {\n return null\n }\n if (this.item.children) {\n for (const child of this.item.children) {\n if (!child.meta || !child.meta.hidden) {\n return child\n }\n }\n }\n // If there is no children, return itself with path removed,\n // because this.basePath already conatins item's path information\n return { ...this.item, path: '' }\n }\n\n private resolvePath(routePath: string) {\n if (isExternal(routePath)) {\n return routePath\n }\n if (isExternal(this.basePath)) {\n return this.basePath\n }\n return path.resolve(this.basePath, routePath)\n }\n}\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SidebarItem.vue?vue&type=template&id=35bc604c&scoped=true&\"\nimport script from \"./SidebarItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./SidebarItem.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SidebarItem.vue?vue&type=style&index=0&lang=scss&\"\nimport style1 from \"./SidebarItem.vue?vue&type=style&index=1&id=35bc604c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"35bc604c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"sidebar-logo-container\",class:{'collapse': _vm.collapse}},[_c('transition',{attrs:{\"name\":\"sidebarLogoFade\"}},[(_vm.collapse)?_c('router-link',{key:\"collapse\",staticClass:\"sidebar-logo-link\",attrs:{\"to\":\"/\"}},[_c('img',{staticClass:\"sidebar-logo\",attrs:{\"src\":\"favicon.ico\"}})]):_c('router-link',{key:\"expand\",staticClass:\"sidebar-logo-link\",attrs:{\"to\":\"/\"}},[_c('img',{staticClass:\"sidebar-logo\",attrs:{\"src\":\"favicon.ico\"}}),_c('h1',{staticClass:\"sidebar-title\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")])])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue } from 'vue-property-decorator'\nimport settings from '@/settings'\n\n@Component({\n name: 'SidebarLogo'\n})\nexport default class extends Vue {\n @Prop({ required: true }) private collapse!: boolean\n\n private title = settings.title\n}\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarLogo.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarLogo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SidebarLogo.vue?vue&type=template&id=7847d0d3&scoped=true&\"\nimport script from \"./SidebarLogo.vue?vue&type=script&lang=ts&\"\nexport * from \"./SidebarLogo.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SidebarLogo.vue?vue&type=style&index=0&id=7847d0d3&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7847d0d3\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator'\nimport { AppModule } from '@/store/modules/app'\nimport { PermissionModule } from '@/store/modules/permission'\nimport { SettingsModule } from '@/store/modules/settings'\nimport SidebarItem from './SidebarItem.vue'\nimport SidebarLogo from './SidebarLogo.vue'\nimport variables from '@/styles/_variables.scss'\n\n@Component({\n name: 'SideBar',\n components: {\n SidebarItem,\n SidebarLogo\n }\n})\nexport default class extends Vue {\n get sidebar() {\n return AppModule.sidebar\n }\n\n get routes() {\n return PermissionModule.routes\n }\n\n get showLogo() {\n return SettingsModule.showSidebarLogo\n }\n\n get menuActiveTextColor() {\n if (SettingsModule.sidebarTextTheme) {\n return SettingsModule.theme\n } else {\n return variables.menuActiveText\n }\n }\n\n get variables() {\n return variables\n }\n\n get activeMenu() {\n const route = this.$route\n const { meta, path } = route\n // if set path, the sidebar will highlight the path you set\n if (meta.activeMenu) {\n return meta.activeMenu\n }\n return path\n }\n\n get isCollapse() {\n return !this.sidebar.opened\n }\n}\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=061fdbbc&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&lang=scss&\"\nimport style1 from \"./index.vue?vue&type=style&index=1&id=061fdbbc&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"061fdbbc\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"tags-view-container\",attrs:{\"id\":\"tags-view-container\"}},[_c('scroll-pane',{ref:\"scrollPane\",staticClass:\"tags-view-wrapper\",on:{\"scroll\":_vm.handleScroll}},_vm._l((_vm.visitedViews),function(tag){return _c('router-link',{key:tag.path,ref:\"tag\",refInFor:true,staticClass:\"tags-view-item\",class:_vm.isActive(tag) ? 'active' : '',attrs:{\"to\":{path: tag.path, query: tag.query, fullPath: tag.fullPath},\"tag\":\"span\"},nativeOn:{\"mouseup\":function($event){if('button' in $event && $event.button !== 1){ return null; }!_vm.isAffix(tag)?_vm.closeSelectedTag(tag):''},\"contextmenu\":function($event){$event.preventDefault();return _vm.openMenu(tag, $event)}}},[_vm._v(\" \"+_vm._s(_vm.$t('route.' + tag.meta.title))+\" \"),(!_vm.isAffix(tag))?_c('span',{staticClass:\"el-icon-close\",on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.closeSelectedTag(tag)}}}):_vm._e()])}),1),_c('ul',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visible),expression:\"visible\"}],staticClass:\"contextmenu\",style:({left: _vm.left+'px', top: _vm.top+'px'})},[_c('li',{on:{\"click\":function($event){return _vm.refreshSelectedTag(_vm.selectedTag)}}},[_vm._v(\" \"+_vm._s(_vm.$t('tagsView.refresh'))+\" \")]),(!_vm.isAffix(_vm.selectedTag))?_c('li',{on:{\"click\":function($event){return _vm.closeSelectedTag(_vm.selectedTag)}}},[_vm._v(\" \"+_vm._s(_vm.$t('tagsView.close'))+\" \")]):_vm._e(),_c('li',{on:{\"click\":_vm.closeOthersTags}},[_vm._v(\" \"+_vm._s(_vm.$t('tagsView.closeOthers'))+\" \")]),_c('li',{on:{\"click\":function($event){return _vm.closeAllTags(_vm.selectedTag)}}},[_vm._v(\" \"+_vm._s(_vm.$t('tagsView.closeAll'))+\" \")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-scrollbar',{ref:\"scrollContainer\",staticClass:\"scroll-container\",attrs:{\"vertical\":false},nativeOn:{\"wheel\":function($event){$event.preventDefault();return _vm.handleScroll($event)}}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator'\n\nconst tagSpacing = 4\n\n@Component({\n name: 'ScrollPane'\n})\nexport default class extends Vue {\n get scrollWrapper() {\n return (this.$refs.scrollContainer as Vue).$refs.wrap as HTMLElement\n }\n\n mounted() {\n this.scrollWrapper.addEventListener('scroll', this.emitScroll, true)\n }\n\n beforeDestroy() {\n this.scrollWrapper.removeEventListener('scroll', this.emitScroll)\n }\n\n private handleScroll(e: WheelEvent) {\n const eventDelta = (e as any).wheelDelta || -e.deltaY * 40\n const scrollWrapper = this.scrollWrapper\n scrollWrapper.scrollLeft = scrollWrapper.scrollLeft + eventDelta / 4\n }\n\n private emitScroll() {\n this.$emit('scroll')\n }\n\n public moveToTarget(currentTag: HTMLElement) {\n const container = (this.$refs.scrollContainer as Vue).$el as HTMLElement\n const containerWidth = container.offsetWidth\n const scrollWrapper = this.scrollWrapper\n const tagList = this.$parent.$refs.tag as any[]\n\n let firstTag = null\n let lastTag = null\n\n // find first tag and last tag\n if (tagList.length > 0) {\n firstTag = tagList[0]\n lastTag = tagList[tagList.length - 1]\n }\n\n if (firstTag === currentTag) {\n scrollWrapper.scrollLeft = 0\n } else if (lastTag === currentTag) {\n scrollWrapper.scrollLeft = scrollWrapper.scrollWidth - containerWidth\n } else {\n // find preTag and nextTag\n const currentIndex = tagList.findIndex(item => item === currentTag)\n const prevTag = tagList[currentIndex - 1]\n const nextTag = tagList[currentIndex + 1]\n // the tag's offsetLeft after of nextTag\n const afterNextTagOffsetLeft = nextTag.$el.offsetLeft + nextTag.$el.offsetWidth + tagSpacing\n // the tag's offsetLeft before of prevTag\n const beforePrevTagOffsetLeft = prevTag.$el.offsetLeft - tagSpacing\n\n if (afterNextTagOffsetLeft > scrollWrapper.scrollLeft + containerWidth) {\n scrollWrapper.scrollLeft = afterNextTagOffsetLeft - containerWidth\n } else if (beforePrevTagOffsetLeft < scrollWrapper.scrollLeft) {\n scrollWrapper.scrollLeft = beforePrevTagOffsetLeft\n }\n }\n }\n}\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ScrollPane.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ScrollPane.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ScrollPane.vue?vue&type=template&id=4712a34c&scoped=true&\"\nimport script from \"./ScrollPane.vue?vue&type=script&lang=ts&\"\nexport * from \"./ScrollPane.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ScrollPane.vue?vue&type=style&index=0&lang=scss&\"\nimport style1 from \"./ScrollPane.vue?vue&type=style&index=1&id=4712a34c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4712a34c\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport path from 'path'\nimport { Component, Vue, Watch } from 'vue-property-decorator'\nimport { RouteConfig } from 'vue-router'\nimport { PermissionModule } from '@/store/modules/permission'\nimport { TagsViewModule, ITagView } from '@/store/modules/tags-view'\nimport ScrollPane from './ScrollPane.vue'\n\n@Component({\n name: 'TagsView',\n components: {\n ScrollPane\n }\n})\nexport default class extends Vue {\n private visible = false\n private top = 0\n private left = 0\n private selectedTag: ITagView = {}\n private affixTags: ITagView[] = []\n\n get visitedViews() {\n return TagsViewModule.visitedViews\n }\n\n get routes() {\n return PermissionModule.routes\n }\n\n @Watch('$route')\n private onRouteChange() {\n this.addTags()\n this.moveToCurrentTag()\n }\n\n @Watch('visible')\n private onVisibleChange(value: boolean) {\n if (value) {\n document.body.addEventListener('click', this.closeMenu)\n } else {\n document.body.removeEventListener('click', this.closeMenu)\n }\n }\n\n mounted() {\n this.initTags()\n this.addTags()\n }\n\n private isActive(route: ITagView) {\n return route.path === this.$route.path\n }\n\n private isAffix(tag: ITagView) {\n return tag.meta && tag.meta.affix\n }\n\n private filterAffixTags(routes: RouteConfig[], basePath = '/') {\n let tags: ITagView[] = []\n routes.forEach(route => {\n if (route.meta && route.meta.affix) {\n const tagPath = path.resolve(basePath, route.path)\n tags.push({\n fullPath: tagPath,\n path: tagPath,\n name: route.name,\n meta: { ...route.meta }\n })\n }\n if (route.children) {\n const childTags = this.filterAffixTags(route.children, route.path)\n if (childTags.length >= 1) {\n tags = [...tags, ...childTags]\n }\n }\n })\n return tags\n }\n\n private initTags() {\n this.affixTags = this.filterAffixTags(this.routes)\n for (const tag of this.affixTags) {\n // Must have tag name\n if (tag.name) {\n TagsViewModule.addVisitedView(tag)\n }\n }\n }\n\n private addTags() {\n const { name } = this.$route\n if (name) {\n TagsViewModule.addView(this.$route)\n }\n return false\n }\n\n private moveToCurrentTag() {\n const tags = this.$refs.tag as any[] // TODO: better typescript support for router-link\n this.$nextTick(() => {\n for (const tag of tags) {\n if ((tag.to as ITagView).path === this.$route.path) {\n (this.$refs.scrollPane as ScrollPane).moveToTarget(tag as any)\n // When query is different then update\n if ((tag.to as ITagView).fullPath !== this.$route.fullPath) {\n TagsViewModule.updateVisitedView(this.$route)\n }\n break\n }\n }\n })\n }\n\n private refreshSelectedTag(view: ITagView) {\n TagsViewModule.delCachedView(view)\n const { fullPath } = view\n this.$nextTick(() => {\n this.$router.replace({\n path: '/redirect' + fullPath\n }).catch(err => {\n console.warn(err)\n })\n })\n }\n\n private closeSelectedTag(view: ITagView) {\n TagsViewModule.delView(view)\n if (this.isActive(view)) {\n this.toLastView(TagsViewModule.visitedViews, view)\n }\n }\n\n private closeOthersTags() {\n if (this.selectedTag.fullPath !== this.$route.path && this.selectedTag.fullPath !== undefined) {\n this.$router.push(this.selectedTag.fullPath).catch(err => {\n console.warn(err)\n })\n }\n TagsViewModule.delOthersViews(this.selectedTag)\n this.moveToCurrentTag()\n }\n\n private closeAllTags(view: ITagView) {\n TagsViewModule.delAllViews()\n if (this.affixTags.some(tag => tag.path === this.$route.path)) {\n return\n }\n this.toLastView(TagsViewModule.visitedViews, view)\n }\n\n private toLastView(visitedViews: ITagView[], view: ITagView) {\n const latestView = visitedViews.slice(-1)[0]\n if (latestView !== undefined && latestView.fullPath !== undefined) {\n this.$router.push(latestView.fullPath).catch(err => {\n console.warn(err)\n })\n } else {\n // Default redirect to the home page if there is no tags-view, adjust it if you want\n if (view.name === 'Dashboard') {\n // to reload home page\n this.$router.replace({ path: '/redirect' + view.fullPath }).catch(err => {\n console.warn(err)\n })\n } else {\n this.$router.push('/').catch(err => {\n console.warn(err)\n })\n }\n }\n }\n\n private openMenu(tag: ITagView, e: MouseEvent) {\n const menuMinWidth = 105\n const offsetLeft = this.$el.getBoundingClientRect().left // container margin left\n const offsetWidth = (this.$el as HTMLElement).offsetWidth // container width\n const maxLeft = offsetWidth - menuMinWidth // left boundary\n const left = e.clientX - offsetLeft + 15 // 15: margin right\n if (left > maxLeft) {\n this.left = maxLeft\n } else {\n this.left = left\n }\n this.top = e.clientY\n this.visible = true\n this.selectedTag = tag\n }\n\n private closeMenu() {\n this.visible = false\n }\n\n private handleScroll() {\n this.closeMenu()\n }\n}\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=31c3d88a&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&lang=scss&\"\nimport style1 from \"./index.vue?vue&type=style&index=1&id=31c3d88a&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"31c3d88a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"rightPanel\",staticClass:\"rightPanel-container\",class:{show: _vm.show}},[_c('div',{staticClass:\"rightPanel-background\"}),_c('div',{staticClass:\"rightPanel\"},[_c('div',{staticClass:\"handle-button\",style:({'top': _vm.buttonTop+'px','background-color': _vm.theme}),on:{\"click\":function($event){_vm.show=!_vm.show}}},[_c('i',{class:_vm.show?'el-icon-close':'el-icon-setting'})]),_c('div',{staticClass:\"rightPanel-items\"},[_vm._t(\"default\")],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator'\nimport { addClass, removeClass } from '@/utils'\nimport { SettingsModule } from '@/store/modules/settings'\n\n@Component({\n name: 'RightPanel'\n})\nexport default class extends Vue {\n @Prop({ default: false }) private clickNotClose!: boolean\n @Prop({ default: 250 }) private buttonTop!: number\n\n private show = false\n\n get theme() {\n return SettingsModule.theme\n }\n\n @Watch('show')\n private onShowChange(value: boolean) {\n if (value && !this.clickNotClose) {\n this.addEventClick()\n }\n if (value) {\n addClass(document.body, 'showRightPanel')\n } else {\n removeClass(document.body, 'showRightPanel')\n }\n }\n\n mounted() {\n this.insertToBody()\n }\n\n beforeDestroy() {\n const elx = this.$refs.rightPanel as Element\n elx.remove()\n }\n\n private addEventClick() {\n window.addEventListener('click', this.closeSidebar)\n }\n\n private closeSidebar(ev: MouseEvent) {\n const parent = (ev.target as HTMLElement).closest('.rightPanel')\n if (!parent) {\n this.show = false\n window.removeEventListener('click', this.closeSidebar)\n }\n }\n\n private insertToBody() {\n const elx = this.$refs.rightPanel as Element\n const body = document.querySelector('body')\n if (body) {\n body.insertBefore(elx, body.firstChild)\n }\n }\n}\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=3c531330&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&lang=scss&\"\nimport style1 from \"./index.vue?vue&type=style&index=1&id=3c531330&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3c531330\",\n null\n \n)\n\nexport default component.exports","import { Component, Vue, Watch } from 'vue-property-decorator'\nimport { AppModule, DeviceType } from '@/store/modules/app'\n\nconst WIDTH = 992 // refer to Bootstrap's responsive design\n\n@Component({\n name: 'ResizeMixin'\n})\nexport default class extends Vue {\n get device() {\n return AppModule.device\n }\n\n get sidebar() {\n return AppModule.sidebar\n }\n\n @Watch('$route')\n private onRouteChange() {\n if (this.device === DeviceType.Mobile && this.sidebar.opened) {\n AppModule.CloseSideBar(false)\n }\n }\n\n beforeMount() {\n window.addEventListener('resize', this.resizeHandler)\n }\n\n mounted() {\n const isMobile = this.isMobile()\n if (isMobile) {\n AppModule.ToggleDevice(DeviceType.Mobile)\n AppModule.CloseSideBar(true)\n }\n }\n\n beforeDestroy() {\n window.removeEventListener('resize', this.resizeHandler)\n }\n\n private isMobile() {\n const rect = document.body.getBoundingClientRect()\n return rect.width - 1 < WIDTH\n }\n\n private resizeHandler() {\n if (!document.hidden) {\n const isMobile = this.isMobile()\n AppModule.ToggleDevice(isMobile ? DeviceType.Mobile : DeviceType.Desktop)\n if (isMobile) {\n AppModule.CloseSideBar(true)\n }\n }\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component } from 'vue-property-decorator'\nimport { mixins } from 'vue-class-component'\nimport { AppModule, DeviceType } from '@/store/modules/app'\nimport { SettingsModule } from '@/store/modules/settings'\nimport { AppMain, Navbar, Settings, Sidebar, TagsView } from './components'\nimport RightPanel from '@/components/RightPanel/index.vue'\nimport ResizeMixin from './mixin/resize'\n\n@Component({\n name: 'Layout',\n components: {\n AppMain,\n Navbar,\n RightPanel,\n Settings,\n Sidebar,\n TagsView\n }\n})\nexport default class extends mixins(ResizeMixin) {\n get classObj() {\n return {\n hideSidebar: !this.sidebar.opened,\n openSidebar: this.sidebar.opened,\n withoutAnimation: this.sidebar.withoutAnimation,\n mobile: this.device === DeviceType.Mobile\n }\n }\n\n get showSettings() {\n return SettingsModule.showSettings\n }\n\n get showTagsView() {\n return SettingsModule.showTagsView\n }\n\n get fixedHeader() {\n return SettingsModule.fixedHeader\n }\n\n private handleClickOutside() {\n AppModule.CloseSideBar(false)\n }\n}\n","import mod from \"-!../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=49d3a434&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=49d3a434&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"49d3a434\",\n null\n \n)\n\nexport default component.exports","import { RouteConfig } from 'vue-router'\nimport Layout from '@/layout/index.vue'\n\nconst systemRoutes: RouteConfig = {\n path: '/system',\n component: Layout,\n redirect: '/system/list',\n meta: {\n title: 'system',\n icon: 'component',\n permissions: ['shopman:*', 'permission:*', 'admin:*', 'role:*'],\n alwaysShow: true\n },\n children: [\n {\n path: 'permission',\n component: () => import('@/views/system/permission.vue'),\n name: 'Permission',\n meta: {\n title: 'permission',\n permissions: ['permission:read'],\n icon: 'permission'\n }\n },\n {\n path: 'role',\n component: () => import('@/views/system/role.vue'),\n name: 'RolePermission',\n meta: {\n title: 'rolePermission',\n permissions: ['role:read'],\n icon: 'role'\n }\n },\n {\n path: 'admin',\n component: () => import('@/views/system/admin.vue'),\n name: 'AdminPermission',\n meta: {\n title: 'adminuser',\n permissions: ['admin:read'],\n icon: 'admin'\n }\n },\n {\n path: 'list',\n component: () => import('@/views/shop/list.vue'),\n name: 'ShopList',\n meta: {\n title: 'shop_list',\n permissions: ['shopman:read'],\n icon: 'shop_list'\n }\n },\n {\n path: 'create',\n component: () => import('@/views/shop/edit.vue'),\n name: 'CreateShop',\n meta: {\n title: 'create_shop',\n icon: 'edit',\n hidden: true,\n permissions: ['shopman:edit']\n }\n },\n {\n path: 'edit/:id',\n component: () => import('@/views/shop/edit.vue'),\n name: 'ShopEditor',\n meta: {\n title: 'shop_edit',\n permissions: ['shopman:edit'],\n elicon: 'el-icon-arrow-right',\n hidden: true\n }\n },\n {\n path: 'i18n',\n component: () => import(/* webpackChunkName: \"i18n-demo\" */ '@/views/i18n-demo/index.vue'),\n name: 'I18n',\n meta: {\n title: 'i18n',\n icon: 'language',\n permissions: ['show:language']\n }\n },\n {\n path: 'theme',\n component: () => import(/* webpackChunkName: \"theme\" */ '@/views/theme/index.vue'),\n name: 'Theme',\n meta: {\n title: 'theme',\n icon: 'theme',\n permissions: ['show:theme']\n }\n }\n ]\n}\n\nexport default systemRoutes\n","import { RouteConfig } from 'vue-router'\nimport Layout from '@/layout/index.vue'\n\nconst marketingRoutes: RouteConfig = {\n path: '/marketing',\n component: Layout,\n meta: {\n title: 'marketing',\n icon: 'sell',\n alwaysShow: true,\n permissions: ['coupon:*']\n },\n children: [\n {\n path: 'coupon',\n component: () => import('@/views/marketing/coupon.vue'),\n name: 'CouponSetting',\n meta: {\n title: 'marketing_coupon',\n permissions: ['coupon:read'],\n icon: 'coupon'\n }\n },\n {\n path: 'edit_coupon',\n component: () => import('@/views/marketing/coupon_edit.vue'),\n name: 'CouponDetail',\n meta: {\n title: 'marketing_coupon_info',\n permissions: ['coupon:edit'],\n icon: 'coupon',\n hidden: true\n }\n },\n {\n path: 'edit_coupon/:id',\n component: () => import('@/views/marketing/coupon_edit.vue'),\n name: 'CouponDetail',\n meta: {\n title: 'marketing_coupon_info',\n permissions: ['coupon:edit'],\n icon: 'coupon',\n hidden: true\n }\n }\n // {\n // path: 'promo',\n // component: () => import('@/views/marketing/promo.vue'),\n // name: 'PromoSetting',\n // meta: {\n // title: 'marketing_promo',\n // permissions: ['promo:read'],\n // icon: 'promo'\n // }\n // },\n // {\n // path: 'points',\n // component: () => import('@/views/marketing/points.vue'),\n // name: 'PointsSetting',\n // meta: {\n // title: 'marketing_points',\n // permissions: ['points:read'],\n // icon: 'points'\n // }\n // }\n ]\n}\n\nexport default marketingRoutes\n","import { RouteConfig } from 'vue-router'\nimport Layout from '@/layout/index.vue'\n\nconst questionRoutes: RouteConfig = {\n path: '/question',\n component: Layout,\n meta: {\n title: 'question',\n icon: 'question_list',\n permissions: ['question:*', 'shop:tiku_setting'],\n alwaysShow: true\n },\n children: [\n {\n path: 'create',\n component: () => import('@/views/question/editor.vue'),\n name: 'CreateQuestion',\n meta: {\n title: 'createQuestion',\n permissions: ['question:edit'],\n icon: 'edit',\n hidden: true\n }\n },\n {\n path: 'edit/:id',\n component: () => import('@/views/question/editor.vue'),\n name: 'QuestionEditor',\n meta: {\n title: 'question_prepare',\n permissions: ['question:edit'],\n elicon: 'el-icon-arrow-right',\n hidden: true\n }\n },\n {\n path: 'list',\n component: () => import('@/views/question/list.vue'),\n name: 'QuestionList',\n meta: {\n title: 'question_list',\n permissions: ['question:read'],\n icon: 'list'\n }\n },\n {\n path: 'setting',\n component: () => import('@/views/question/setting.vue'),\n name: 'QuestionSetting',\n meta: {\n title: 'question_setting',\n permissions: ['shop:tiku_setting'],\n icon: 'excel'\n }\n },\n\n {\n path: 'shoppuzzles',\n component: () => import('@/views/question/shop_puzzles.vue'),\n name: 'ShopPuzzles',\n meta: {\n title: 'shop_puzzles',\n permissions: ['shoppuzzle:read'],\n icon: 'form'\n }\n },\n {\n path: 'newshoppuzzle/:shop',\n component: () => import('@/views/question/shop_puzzle_editor.vue'),\n name: 'CreatePuzzle',\n meta: {\n title: 'createQuestion',\n permissions: ['shoppuzzle:edit'],\n icon: 'edit',\n hidden: true\n }\n },\n {\n path: 'shoppuzzle/:shop/:id',\n component: () => import('@/views/question/shop_puzzle_editor.vue'),\n name: 'PuzzleEditor',\n meta: {\n title: 'question_prepare',\n permissions: ['shoppuzzle:edit'],\n elicon: 'el-icon-arrow-right',\n hidden: true\n }\n }\n ]\n}\n\nexport default questionRoutes\n","import { RouteConfig } from 'vue-router'\nimport Layout from '@/layout/index.vue'\n\nconst shopRoutes: RouteConfig = {\n path: '/shop',\n component: Layout,\n meta: {\n title: 'shop',\n icon: 'shop',\n alwaysShow: true,\n permissions: ['shopadmin:*', 'shop:game_setting', 'activity:*']\n },\n children: [\n {\n path: 'shopadmin',\n component: () => import('@/views/shop/shop_admin.vue'),\n name: 'ShopAdmin',\n meta: {\n title: 'shop_admin',\n permissions: ['shopadmin:read'],\n icon: 'admin'\n }\n },\n {\n path: 'shopmember',\n component: () => import('@/views/error-page/401.vue'),\n name: 'ShopMember',\n meta: {\n title: 'shop_member',\n permissions: ['shopadmin:read'],\n icon: 'peoples'\n }\n },\n {\n path: 'setting',\n component: () => import('@/views/game/game_setting.vue'),\n name: 'ShopSetting',\n meta: {\n title: 'game_setting',\n permissions: ['shop:game_setting'],\n icon: 'game'\n }\n },\n {\n path: 'activity_list',\n component: () => import('@/views/activity/list.vue'),\n name: 'ActivityList',\n meta: {\n title: 'activity_list',\n permissions: ['activity:read'],\n icon: 'list'\n }\n },\n {\n path: 'activity_new',\n component: () => import('@/views/activity/edit.vue'),\n name: 'CreateActivity',\n meta: {\n title: 'create_activity',\n icon: 'edit',\n permissions: ['activity:edit'],\n hidden: true\n }\n },\n {\n path: 'activity_edit/:id',\n component: () => import('@/views/activity/edit.vue'),\n name: 'ActivityEditor',\n meta: {\n title: 'edit_activity',\n permissions: ['activity:read'],\n elicon: 'el-icon-arrow-right',\n hidden: true\n }\n },\n {\n path: 'exam_list',\n component: () => import('@/views/exam/list.vue'),\n name: 'ExamList',\n meta: {\n title: 'exam_list',\n permissions: ['shopexam:read'],\n icon: 'tree'\n }\n },\n {\n path: 'exam_new',\n component: () => import('@/views/exam/edit.vue'),\n name: 'CreateExam',\n meta: {\n title: 'create_exam',\n icon: 'edit',\n permissions: ['shopexam:edit'],\n hidden: true\n }\n },\n {\n path: 'exam_edit/:id',\n component: () => import('@/views/exam/edit.vue'),\n name: 'ExamEditor',\n meta: {\n title: 'edit_exam',\n permissions: ['shopexam:read'],\n elicon: 'el-icon-arrow-right',\n hidden: true\n }\n },\n {\n path: 'theme_edit/:shop/:game/:version',\n component: () => import('@/views/game/game_theme.vue'),\n name: 'ThereEditor',\n meta: {\n title: 'edit_theme',\n permissions: ['shop:game_setting'],\n icon: 'theme2',\n hidden: true\n }\n },\n {\n path: 'lottery_setting',\n component: () => import('@/views/shop/shop_lottery.vue'),\n name: 'ShopLottery',\n meta: {\n title: 'shop_lottery',\n permissions: ['shop:edit'],\n icon: 'game'\n }\n },\n {\n path: 'share_setting',\n component: () => import('@/views/shop/shop_share.vue'),\n name: 'ShopShare',\n meta: {\n title: 'shop_share',\n permissions: ['shop:edit'],\n icon: 'game'\n }\n },\n {\n path: 'mail_list',\n component: () => import('@/views/mail/list.vue'),\n name: 'MailList',\n meta: {\n title: 'shop_mail',\n permissions: ['shopmail:read'],\n icon: 'list'\n }\n },\n {\n path: 'mail_new',\n component: () => import('@/views/mail/edit.vue'),\n name: 'CreateMail',\n meta: {\n title: 'create_mail',\n icon: 'edit',\n permissions: ['shopmail:edit'],\n hidden: true\n }\n },\n {\n path: 'mail_edit/:id',\n component: () => import('@/views/mail/edit.vue'),\n name: 'MailEditor',\n meta: {\n title: 'edit_mail',\n permissions: ['shopmail:read'],\n elicon: 'el-icon-arrow-right',\n hidden: true\n }\n }\n ]\n}\n\nexport default shopRoutes\n","import { RouteConfig } from 'vue-router'\nimport Layout from '@/layout/index.vue'\n\nconst gameRoutes: RouteConfig = {\n path: '/game',\n component: Layout,\n meta: {\n title: 'game',\n icon: 'game',\n alwaysShow: true,\n permissions: ['sysgame:*']\n },\n children: [\n {\n path: 'games',\n component: () => import('@/views/game/game_list.vue'),\n name: 'GameList',\n meta: {\n title: 'game_list',\n permissions: ['sysgame:read'],\n icon: 'game'\n }\n },\n {\n path: 'edit_game',\n component: () => import('@/views/game/game_edit.vue'),\n name: 'GameDetail',\n meta: {\n title: 'game_edit',\n permissions: ['sysgame:edit'],\n icon: 'game',\n hidden: true\n }\n },\n {\n path: 'edit_game/:id',\n component: () => import('@/views/game/game_edit.vue'),\n name: 'edit_game',\n meta: {\n title: 'game_edit',\n permissions: ['sysgame:edit'],\n icon: 'game',\n hidden: true\n }\n }\n ]\n}\n\nexport default gameRoutes\n","import { RouteConfig } from 'vue-router'\nimport Layout from '@/layout/index.vue'\n\nconst staticsRoutes: RouteConfig = {\n path: '/statistics',\n component: Layout,\n meta: {\n title: 'shop_statistics',\n icon: 'statistics',\n alwaysShow: true,\n permissions: ['statistics:*']\n },\n children: [\n {\n path: 'gamestatistics',\n component: () => import('@/views/error-page/401.vue'),\n name: 'GameStatistics',\n meta: {\n title: 'game_statistics',\n permissions: ['statistics:read'],\n icon: 'game'\n }\n }\n ]\n}\nexport default staticsRoutes\n","import Vue from 'vue'\nimport VueRouter, { RouteConfig } from 'vue-router'\n\n/* Layout */\nimport Layout from '@/layout/index.vue'\n\n/* Router modules */\nimport systemRoutes from '@/router/modules/system'\nimport marketingRoutes from '@/router/modules/marketing'\nimport questionRoutes from '@/router/modules/question'\nimport shopRoutes from '@/router/modules/shop'\nimport gameRoutes from '@/router/modules/game'\nimport staticsRotuers from '@/router/modules/statics'\n\nVue.use(VueRouter)\n\n/*\n Note: sub-menu only appear when children.length>=1\n Detail see: https://panjiachen.github.io/vue-element-admin-site/guide/essentials/router-and-nav.html\n*/\n\n/*\n name:'router-name' the name field is required when using , it should also match its component's name property\n detail see : https://vuejs.org/v2/guide/components-dynamic-async.html#keep-alive-with-Dynamic-Components\n redirect: if set to 'noredirect', no redirect action will be trigger when clicking the breadcrumb\n meta: {\n roles: ['admin', 'editor'] will control the page roles (allow setting multiple roles)\n permissions: ['app:read'] will control the page permissions (allow setting multiple permissions)\n title: 'title' the name showed in subMenu and breadcrumb (recommend set)\n icon: 'svg-name' the icon showed in the sidebar\n hidden: true if true, this route will not show in the sidebar (default is false)\n alwaysShow: true if true, will always show the root menu (default is false)\n if false, hide the root menu when has less or equal than one children route\n breadcrumb: false if false, the item will be hidden in breadcrumb (default is true)\n noCache: true if true, the page will not be cached (default is false)\n affix: true if true, the tag will affix in the tags-view\n activeMenu: '/example/list' if set path, the sidebar will highlight the path you set\n }\n*/\n\n/**\n ConstantRoutes\n a base page that does not have permission requirements\n all roles can be accessed\n*/\nexport const constantRoutes: RouteConfig[] = [\n {\n path: '/redirect',\n component: Layout,\n meta: { hidden: true },\n children: [\n {\n path: '/redirect/:path(.*)',\n component: () => import(/* webpackChunkName: \"redirect\" */ '@/views/redirect/index.vue')\n }\n ]\n },\n {\n path: '/login',\n component: () => import(/* webpackChunkName: \"login\" */ '@/views/login/index.vue'),\n meta: { hidden: true }\n },\n {\n path: '/auth-redirect',\n component: () => import(/* webpackChunkName: \"auth-redirect\" */ '@/views/login/auth-redirect.vue'),\n meta: { hidden: true }\n },\n {\n path: '/404',\n component: () => import(/* webpackChunkName: \"404\" */ '@/views/error-page/404.vue'),\n meta: { hidden: true }\n },\n {\n path: '/401',\n component: () => import(/* webpackChunkName: \"401\" */ '@/views/error-page/401.vue'),\n meta: { hidden: true }\n },\n {\n path: '/',\n component: Layout,\n redirect: '/dashboard',\n children: [\n {\n path: 'dashboard',\n component: () => import(/* webpackChunkName: \"dashboard\" */ '@/views/dashboard/index.vue'),\n name: 'Dashboard',\n meta: {\n title: 'dashboard',\n icon: 'dashboard',\n affix: true\n }\n }\n ]\n },\n {\n path: '/profile',\n component: Layout,\n redirect: '/profile/index',\n meta: { hidden: true },\n children: [\n {\n path: 'index',\n component: () => import(/* webpackChunkName: \"profile\" */ '@/views/profile/info.vue'),\n name: 'Profile',\n meta: {\n title: 'profile',\n icon: 'user',\n noCache: true\n }\n },\n {\n path: 'password',\n component: () => import(/* webpackChunkName: \"profile\" */ '@/views/profile/password.vue'),\n name: 'Password',\n meta: {\n title: 'password',\n icon: 'user',\n noCache: true\n }\n }\n ]\n },\n {\n path: '/password',\n component: Layout,\n redirect: '/profile/password',\n meta: { hidden: true },\n children: [\n ]\n }\n]\n\n/**\n * asyncRoutes\n * the routes that need to be dynamically loaded based on user roles\n*/\nexport const asyncRoutes: RouteConfig[] = [\n systemRoutes,\n gameRoutes,\n shopRoutes,\n // articleRouters,\n marketingRoutes,\n questionRoutes,\n staticsRotuers,\n // {\n // path: '/error-log',\n // component: Layout,\n // redirect: 'noredirect',\n // children: [\n // {\n // path: 'log',\n // component: () => import(/* webpackChunkName: \"error-log\" */ '@/views/error-log/index.vue'),\n // name: 'ErrorLog',\n // meta: {\n // title: 'errorLog',\n // icon: 'bug'\n // }\n // }\n // ]\n // },\n {\n path: '*',\n redirect: '/404',\n meta: { hidden: true }\n }\n]\n\nconst createRouter = () => new VueRouter({\n // mode: 'history', // Disabled due to Github Pages doesn't support this, enable this if you need.\n scrollBehavior: (to, from, savedPosition) => {\n if (savedPosition) {\n return savedPosition\n } else {\n return { x: 0, y: 0 }\n }\n },\n base: process.env.BASE_URL,\n routes: constantRoutes\n})\n\nconst router = createRouter()\n\n// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465\nexport function resetRouter() {\n const newRouter = createRouter();\n (router as any).matcher = (newRouter as any).matcher // reset router\n}\n\nexport default router\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuBg\":\"#304156\",\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409eff\"};","import axios from 'axios'\nimport { Message, MessageBox } from 'element-ui'\nimport { UserModule } from '@/store/modules/user'\n\nconst service = axios.create({\n baseURL: process.env.VUE_APP_BASE_API,\n timeout: 5000\n})\n\n// Request interceptors\nservice.interceptors.request.use(\n (config) => {\n // Add X-Access-Token header to every request, you can add other custom headers here\n if (UserModule.token) {\n config.headers.authorization = 'Bearer ' + UserModule.token\n }\n config.headers['Content-Type'] = 'application/json'\n return config\n },\n (error) => {\n Promise.reject(error)\n }\n)\n\n// Response interceptors\nservice.interceptors.response.use(\n (response) => {\n // Some example codes here:\n // code == 0: success\n // code == 50001: invalid access token\n // code == 50002: already login in other place\n // code == 50003: access token expired\n // code == 50004: invalid user (user not exist)\n // code == 10: username or password is incorrect\n // You can change this part for your own usage.\n const res = response.data\n if (res.code) {\n Message({\n message: res.msg || 'Error',\n type: 'error',\n duration: 5 * 1000\n })\n if (res.code === 50008 || res.code === 50012 || res.code === 50014) {\n MessageBox.confirm(\n 'You have been logged out, try to login again.',\n 'Log out',\n {\n confirmButtonText: 'Relogin',\n cancelButtonText: 'Cancel',\n type: 'warning'\n }\n ).then(() => {\n UserModule.ResetToken()\n location.reload() // To prevent bugs from vue-router\n })\n }\n return Promise.reject(new Error(res.msg || 'Error'))\n } else {\n return response.data\n }\n },\n (error) => {\n Message({\n message: error.message,\n type: 'error',\n duration: 5 * 1000\n })\n return Promise.reject(error)\n }\n)\n\nexport default service\n","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=1&id=061fdbbc&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuBg\":\"#304156\",\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409eff\"};","export * from \"-!../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=49d3a434&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator'\n\n@Component({\n name: 'App'\n})\nexport default class extends Vue {}\n","import mod from \"-!../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--13-3!../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--13-3!../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=cd49a4b4&\"\nimport script from \"./App.vue?vue&type=script&lang=ts&\"\nexport * from \"./App.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n '404': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'admin': {\n width: 64,\n height: 64,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'back-top': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'bug': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'chart': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'clipboard': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'component': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'coupon': {\n width: 64,\n height: 64,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'dashboard': {\n width: 128,\n height: 100,\n viewBox: '0 0 128 100',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'documentation': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'drag': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'edit': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'education': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'email': {\n width: 128,\n height: 96,\n viewBox: '0 0 128 96',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'example': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'excel': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'exit-fullscreen': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'eye-off': {\n width: 128,\n height: 64,\n viewBox: '0 0 128 64',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'eye-on': {\n width: 128,\n height: 128,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'form': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'fullscreen': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'game': {\n width: 64,\n height: 64,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'guide-2': {\n width: 1000,\n height: 1000,\n viewBox: '0 0 1000 1000',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'guide': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'hamburger': {\n width: 64,\n height: 64,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'icon': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'international': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'language': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'like': {\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'link': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'list': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'lock': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'message': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'money': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'nested': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'password': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'pdf': {\n width: 128,\n height: 128,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'people': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'peoples': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'permission': {\n width: 64,\n height: 64,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'points': {\n width: 64,\n height: 64,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'promo': {\n width: 82.625,\n height: 64,\n viewBox: '0 0 1322 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'qq': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'question_list': {\n width: 64,\n height: 64,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'role': {\n width: 64,\n height: 64,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'search': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'sell': {\n width: 64,\n height: 64,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'shop_list': {\n width: 64,\n height: 64,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'shop': {\n width: 64,\n height: 64,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'shopping': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'size': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'skill': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'star': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'statistics': {\n width: 120,\n height: 120,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'tab': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'table': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'theme': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'theme2': {\n width: 120,\n height: 120,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'tree-table': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'tree': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'user': {\n width: 130,\n height: 130,\n viewBox: '0 0 130 130',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'wechat': {\n width: 128,\n height: 110,\n viewBox: '0 0 128 110',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'zip': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","import router from './router'\nimport NProgress from 'nprogress'\nimport 'nprogress/nprogress.css'\nimport { Message } from 'element-ui'\nimport { Route } from 'vue-router'\nimport { UserModule } from '@/store/modules/user'\nimport { PermissionModule } from '@/store/modules/permission'\nimport i18n from '@/lang' // Internationalization\nimport settings from './settings'\n\nNProgress.configure({ showSpinner: false })\n\nconst whiteList = ['/login', '/auth-redirect']\n\nconst getPageTitle = (key: string) => {\n const hasKey = i18n.te(`route.${key}`)\n if (hasKey) {\n const pageName = i18n.t(`route.${key}`)\n return `${pageName} - ${settings.title}`\n }\n return `${settings.title}`\n}\n\nrouter.beforeEach(async(to: Route, _: Route, next: any) => {\n // Start progress bar\n NProgress.start()\n\n // Determine whether the user has logged in\n if (UserModule.token) {\n if (to.path === '/login') {\n // If is logged in, redirect to the home page\n next({ path: '/' })\n NProgress.done()\n } else {\n // Check whether the user has obtained his permission roles\n if (UserModule.roles.length === 0) {\n try {\n // Note: roles must be a object array! such as: ['admin'] or ['developer', 'editor']\n await UserModule.GetUserInfo()\n const roles = UserModule.roles\n // Generate accessible routes map based on role\n PermissionModule.GenerateRoutes(roles)\n // Dynamically add accessible routes\n router.addRoutes(PermissionModule.dynamicRoutes)\n // Hack: ensure addRoutes is complete\n // Set the replace: true, so the navigation will not leave a history record\n next({ ...to, replace: true })\n } catch (err) {\n // Remove token and redirect to login page\n UserModule.ResetToken()\n Message.error(err || 'Has Error')\n next(`/login?redirect=${to.path}`)\n NProgress.done()\n }\n } else {\n next()\n }\n }\n } else {\n // Has no token\n if (whiteList.indexOf(to.path) !== -1) {\n // In the free login whitelist, go directly\n next()\n } else {\n // Other pages that do not have permission to access are redirected to the login page.\n next(`/login?redirect=${to.path}`)\n NProgress.done()\n }\n }\n})\n\nrouter.afterEach((to: Route) => {\n // Finish progress bar\n // hack: https://github.com/PanJiaChen/vue-element-admin/pull/2939\n NProgress.done()\n\n // set page title\n document.title = getPageTitle(to.meta.title)\n})\n","// Inspired by https://github.com/Inndy/vue-clipboard2\nimport Clipboard from 'clipboard'\nimport { DirectiveOptions } from 'vue'\n\nif (!Clipboard) {\n throw new Error('you should npm install `clipboard` --save at first ')\n}\n\nlet successCallback: Function | null\nlet errorCallback: Function | null\nlet clipboardInstance: Clipboard | null\n\nexport const clipboard: DirectiveOptions = {\n bind(el, binding) {\n if (binding.arg === 'success') {\n successCallback = binding.value\n } else if (binding.arg === 'error') {\n errorCallback = binding.value\n } else {\n clipboardInstance = new Clipboard(el, {\n text() { return binding.value },\n action() { return binding.arg === 'cut' ? 'cut' : 'copy' }\n })\n clipboardInstance.on('success', e => {\n const callback = successCallback\n callback && callback(e)\n })\n clipboardInstance.on('error', e => {\n const callback = errorCallback\n callback && callback(e)\n })\n }\n },\n\n update(el, binding) {\n if (binding.arg === 'success') {\n successCallback = binding.value\n } else if (binding.arg === 'error') {\n errorCallback = binding.value\n } else {\n clipboardInstance = new Clipboard(el, {\n text() { return binding.value },\n action() { return binding.arg === 'cut' ? 'cut' : 'copy' }\n })\n }\n },\n\n unbind(_, binding) {\n if (binding.arg === 'success') {\n successCallback = null\n } else if (binding.arg === 'error') {\n errorCallback = null\n } else {\n if (clipboardInstance) {\n clipboardInstance.destroy()\n }\n clipboardInstance = null\n }\n }\n}\n","import { DirectiveOptions } from 'vue'\nimport { checkPermission } from '@/utils/permission'\n\nexport const permission: DirectiveOptions = {\n inserted(el, binding) {\n const { value } = binding\n if (!checkPermission(value)) {\n el.style.display = 'none'\n }\n }\n\n}\n","import { DirectiveOptions } from 'vue'\n\nexport const elDraggableDialog: DirectiveOptions = {\n bind(el, _, vnode) {\n const dragDom = el.querySelector('.el-dialog') as HTMLElement\n const dialogHeaderEl = el.querySelector('.el-dialog__header') as HTMLElement\n dragDom.style.cssText += ';top:0px;'\n dialogHeaderEl.style.cssText += ';cursor:move;'\n\n dialogHeaderEl.onmousedown = (e) => {\n const disX = e.clientX - dialogHeaderEl.offsetLeft\n const disY = e.clientY - dialogHeaderEl.offsetTop\n\n const dragDomWidth = dragDom.offsetWidth\n const dragDomHeight = dragDom.offsetHeight\n\n const screenWidth = document.body.clientWidth\n const screenHeight = document.body.clientHeight\n\n const minDragDomLeft = dragDom.offsetLeft\n const maxDragDomLeft = screenWidth - dragDom.offsetLeft - dragDomWidth\n\n const minDragDomTop = dragDom.offsetTop\n const maxDragDomTop = screenHeight - dragDom.offsetTop - dragDomHeight\n\n const styleLeftStr = getComputedStyle(dragDom).left\n const styleTopStr = getComputedStyle(dragDom).top\n if (!styleLeftStr || !styleTopStr) return\n let styleLeft: number\n let styleTop: number\n\n // Format may be \"##%\" or \"##px\"\n if (styleLeftStr.includes('%')) {\n styleLeft = +document.body.clientWidth * (+styleLeftStr.replace(/%/g, '') / 100)\n styleTop = +document.body.clientHeight * (+styleTopStr.replace(/%/g, '') / 100)\n } else {\n styleLeft = +styleLeftStr.replace(/px/g, '')\n styleTop = +styleTopStr.replace(/px/g, '')\n }\n\n document.onmousemove = (e) => {\n let left = e.clientX - disX\n let top = e.clientY - disY\n\n // Handle edge cases\n if (-(left) > minDragDomLeft) {\n left = -minDragDomLeft\n } else if (left > maxDragDomLeft) {\n left = maxDragDomLeft\n }\n if (-(top) > minDragDomTop) {\n top = -minDragDomTop\n } else if (top > maxDragDomTop) {\n top = maxDragDomTop\n }\n\n // Move current element\n dragDom.style.cssText += `;left:${left + styleLeft}px;top:${top + styleTop}px;`\n\n // Emit on-dialog-drag event\n // See https://stackoverflow.com/questions/49264426/vuejs-custom-directive-emit-event\n if (vnode.componentInstance) {\n vnode.componentInstance.$emit('on-dialog-drag')\n } else if (vnode.elm) {\n vnode.elm.dispatchEvent(new CustomEvent('on-dialog-drag'))\n }\n }\n\n document.onmouseup = () => {\n document.onmousemove = null\n document.onmouseup = null\n }\n }\n }\n}\n","import './waves.css'\nimport { DirectiveOptions } from 'vue'\n\nexport const waves: DirectiveOptions = {\n bind(el, binding) {\n el.addEventListener('click', e => {\n const customOpts = Object.assign({}, binding.value)\n const opts = Object.assign({\n ele: el, // 波纹作用元素\n type: 'hit', // hit 点击位置扩散 center中心点扩展\n color: 'rgba(0, 0, 0, 0.15)' // 波纹颜色\n }, customOpts)\n const target: HTMLElement = opts.ele\n if (target) {\n target.style.position = 'relative'\n target.style.overflow = 'hidden'\n const rect = target.getBoundingClientRect()\n let ripple = target.querySelector('.waves-ripple') as HTMLElement\n if (!ripple) {\n ripple = document.createElement('span')\n ripple.className = 'waves-ripple'\n ripple.style.height = ripple.style.width = Math.max(rect.width, rect.height) + 'px'\n target.appendChild(ripple)\n } else {\n ripple.className = 'waves-ripple'\n }\n switch (opts.type) {\n case 'center':\n ripple.style.top = rect.height / 2 - ripple.offsetHeight / 2 + 'px'\n ripple.style.left = rect.width / 2 - ripple.offsetWidth / 2 + 'px'\n break\n default:\n ripple.style.top =\n (e.pageY - rect.top - ripple.offsetHeight / 2 - document.documentElement.scrollTop ||\n document.body.scrollTop) + 'px'\n ripple.style.left =\n (e.pageX - rect.left - ripple.offsetWidth / 2 - document.documentElement.scrollLeft ||\n document.body.scrollLeft) + 'px'\n }\n ripple.style.backgroundColor = opts.color\n ripple.className = 'waves-ripple z-active'\n return false\n }\n }, false)\n }\n}\n","import { DirectiveOptions } from 'vue'\nimport { UserModule } from '@/store/modules/user'\n\nexport const role: DirectiveOptions = {\n inserted(el, binding) {\n const { value } = binding\n const roles = UserModule.roles\n if (value && value instanceof Array && value.length > 0) {\n const permissionRoles = value\n const hasRole = roles.some(role => {\n return permissionRoles.includes(role)\n })\n if (!hasRole) {\n el.style.display = 'none'\n }\n } else {\n throw new Error('need roles! Like v-role=\"[\\'admin\\',\\'editor\\']\"')\n }\n }\n}\n","// Set utils function parseTime to filter\nexport { parseTime } from '@/utils'\n\n// Filter for article status\nexport const articleStatusFilter = (status: string) => {\n const statusMap: { [key: string]: string } = {\n published: 'success',\n draft: 'info',\n deleted: 'danger'\n }\n return statusMap[status]\n}\n\n// Filter to uppercase the first character\nexport const uppercaseFirstChar = (str: string) => {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n","import Vue from 'vue'\n\nconst local = {\n get: function(key: string) {\n const val = localStorage.getItem(key)\n if (val) {\n return JSON.parse(val)\n } else {\n return null\n }\n },\n set: function(key: string, val: any) {\n localStorage.setItem(key, JSON.stringify(val))\n }\n}\nexport default {\n install: function(vue: typeof Vue) {\n vue.prototype.$local = local\n }\n}\n","import Vue, { DirectiveOptions } from 'vue'\n\nimport 'normalize.css'\nimport ElementUI from 'element-ui'\nimport SvgIcon from 'vue-svgicon'\n\nimport '@/styles/element-variables.scss'\nimport '@/styles/index.scss'\n\nimport App from '@/App.vue'\nimport store from '@/store'\nimport router from '@/router'\nimport i18n from '@/lang'\nimport '@/icons/components'\nimport '@/permission'\nimport { AppModule } from '@/store/modules/app'\nimport * as directives from '@/directives'\nimport * as filters from '@/filters'\nimport local from '@/utils/storage'\n\nrequire('@/utils/Extend')\n\nVue.use(ElementUI, {\n size: AppModule.size,\n i18n: (key: string, value: string) => i18n.t(key, value)\n})\nVue.use(SvgIcon, {\n tagName: 'svg-icon',\n defaultWidth: '1em',\n defaultHeight: '1em'\n})\nVue.use(local)\n\nObject.keys(directives).forEach(key => {\n Vue.directive(key, (directives as { [key: string ]: DirectiveOptions })[key])\n})\n// Register global filter functions\nObject.keys(filters).forEach(key => {\n Vue.filter(key, (filters as { [key: string ]: Function })[key])\n})\n// Register global directives\nVue.config.productionTip = false\n\nnew Vue({\n router,\n store,\n i18n,\n render: (h) => h(App)\n}).$mount('#app')\n","// Parse the time to string\nexport const parseTime = (\n time?: object | string | number | null,\n cFormat?: string\n): string | null => {\n if (time === undefined || !time) {\n return null\n }\n const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'\n let date: Date\n if (typeof time === 'object') {\n date = time as Date\n } else {\n if (typeof time === 'string') {\n if (/^[0-9]+$/.test(time)) {\n // support \"1548221490638\"\n time = parseInt(time)\n } else {\n // support safari\n // https://stackoverflow.com/questions/4310953/invalid-date-in-safari\n // time = time.replace(new RegExp(/-/gm), '/')\n }\n }\n if (typeof time === 'number' && time.toString().length === 10) {\n time = time * 1000\n }\n date = new Date(time)\n }\n const formatObj: { [key: string]: number } = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n }\n return format.replace(/{([ymdhisa])+}/g, (result, key) => {\n const value = formatObj[key]\n // Note: getDay() returns 0 on Sunday\n if (key === 'a') {\n return ['日', '一', '二', '三', '四', '五', '六'][value]\n }\n return value.toString().padStart(2, '0')\n })\n}\n/**\n * 将秒数格式化成 小时:分钟:秒\n * @param {number} sec\n * @param showSeconds 是否显示秒\n */\nexport const sec2TimeStr = (sec: number, showSeconds = true) => {\n showSeconds = typeof showSeconds !== 'undefined' ? showSeconds : true\n const t = sec % 60\n const i = (sec % 3600 - t) / 60\n const n = Math.floor(sec / 3600)\n if (showSeconds) {\n return (n > 9 ? '' + n : '0' + n) + ':' + (i > 9 ? i : '0' + i) + ':' + (t > 9 ? t : '0' + t)\n } else {\n return (n > 9 ? '' + n : '0' + n) + ':' + (i > 9 ? i : '0' + i)\n }\n}\n/**\n * 将 小时:分钟:秒 格式的字符串转换为秒数\n * @param {string} str\n */\nexport const timeStr2Sec = (str: string) => {\n const vals = str.split(':')\n const h = vals.length > 0 ? +vals[0] : 0\n const m = vals.length > 1 ? +vals[1] : 0\n const s = vals.length > 2 ? +vals[2] : 0\n return h * 3600 + m * 60 + s\n}\n\n// Format and filter json data using filterKeys array\nexport const formatJson = (filterKeys: any, jsonData: any) =>\n jsonData.map((data: any) => filterKeys.map((key: string) => {\n if (key === 'timestamp') {\n return parseTime(data[key])\n } else {\n return data[key]\n }\n }))\n\n// Check if an element has a class\nexport const hasClass = (ele: HTMLElement, className: string) => {\n return !!ele.className.match(new RegExp('(\\\\s|^)' + className + '(\\\\s|$)'))\n}\n\n// Add class to element\nexport const addClass = (ele: HTMLElement, className: string) => {\n if (!hasClass(ele, className)) ele.className += ' ' + className\n}\n\n// Remove class from element\nexport const removeClass = (ele: HTMLElement, className: string) => {\n if (hasClass(ele, className)) {\n const reg = new RegExp('(\\\\s|^)' + className + '(\\\\s|$)')\n ele.className = ele.className.replace(reg, ' ')\n }\n}\n\n// Toggle class for the selected element\nexport const toggleClass = (ele: HTMLElement, className: string) => {\n if (!ele || !className) {\n return\n }\n let classString = ele.className\n const nameIndex = classString.indexOf(className)\n if (nameIndex === -1) {\n classString += '' + className\n } else {\n classString =\n classString.substr(0, nameIndex) +\n classString.substr(nameIndex + className.length)\n }\n ele.className = classString\n}\n\nexport const delay = (sec: number) => {\n return new Promise((resolve, reject) => {\n setTimeout(function() {\n resolve && resolve('')\n }, sec * 1000)\n })\n}\n","export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=ed2ef868&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItem.vue?vue&type=style&index=0&lang=scss&\"","import { VuexModule, Module, Mutation, Action, getModule } from 'vuex-module-decorators'\nimport { Route } from 'vue-router'\nimport store from '@/store'\n\nexport interface ITagView extends Partial {\n title?: string\n}\n\nexport interface ITagsViewState {\n visitedViews: ITagView[]\n cachedViews: (string | undefined)[]\n}\n\n@Module({ dynamic: true, store, name: 'tagsView' })\nclass TagsView extends VuexModule implements ITagsViewState {\n public visitedViews: ITagView[] = []\n public cachedViews: (string | undefined)[] = []\n\n @Mutation\n private ADD_VISITED_VIEW(view: ITagView) {\n if (this.visitedViews.some(v => v.path === view.path)) return\n this.visitedViews.push(\n Object.assign({}, view, {\n title: view.meta.title || 'no-name'\n })\n )\n }\n\n @Mutation\n private ADD_CACHED_VIEW(view: ITagView) {\n if (view.name === null) return\n if (this.cachedViews.includes(view.name)) return\n if (!view.meta.noCache) {\n this.cachedViews.push(view.name)\n }\n }\n\n @Mutation\n private DEL_VISITED_VIEW(view: ITagView) {\n for (const [i, v] of this.visitedViews.entries()) {\n if (v.path === view.path) {\n this.visitedViews.splice(i, 1)\n break\n }\n }\n }\n\n @Mutation\n private DEL_CACHED_VIEW(view: ITagView) {\n if (view.name === null) return\n const index = this.cachedViews.indexOf(view.name)\n index > -1 && this.cachedViews.splice(index, 1)\n }\n\n @Mutation\n private DEL_OTHERS_VISITED_VIEWS(view: ITagView) {\n this.visitedViews = this.visitedViews.filter(v => {\n return v.meta.affix || v.path === view.path\n })\n }\n\n @Mutation\n private DEL_OTHERS_CACHED_VIEWS(view: ITagView) {\n if (view.name === null) return\n const index = this.cachedViews.indexOf(view.name)\n if (index > -1) {\n this.cachedViews = this.cachedViews.slice(index, index + 1)\n } else {\n // if index = -1, there is no cached tags\n this.cachedViews = []\n }\n }\n\n @Mutation\n private DEL_ALL_VISITED_VIEWS() {\n // keep affix tags\n const affixTags = this.visitedViews.filter(tag => tag.meta.affix)\n this.visitedViews = affixTags\n }\n\n @Mutation\n private DEL_ALL_CACHED_VIEWS() {\n this.cachedViews = []\n }\n\n @Mutation\n private UPDATE_VISITED_VIEW(view: ITagView) {\n for (let v of this.visitedViews) {\n if (v.path === view.path) {\n v = Object.assign(v, view)\n break\n }\n }\n }\n\n @Action\n public addView(view: ITagView) {\n this.ADD_VISITED_VIEW(view)\n this.ADD_CACHED_VIEW(view)\n }\n\n @Action\n public addVisitedView(view: ITagView) {\n this.ADD_VISITED_VIEW(view)\n }\n\n @Action\n public delView(view: ITagView) {\n this.DEL_VISITED_VIEW(view)\n this.DEL_CACHED_VIEW(view)\n }\n\n @Action\n public delCachedView(view: ITagView) {\n this.DEL_CACHED_VIEW(view)\n }\n\n @Action\n public delOthersViews(view: ITagView) {\n this.DEL_OTHERS_VISITED_VIEWS(view)\n this.DEL_OTHERS_CACHED_VIEWS(view)\n }\n\n @Action\n public delAllViews() {\n this.DEL_ALL_VISITED_VIEWS()\n this.DEL_ALL_CACHED_VIEWS()\n }\n\n @Action\n public delAllCachedViews() {\n this.DEL_ALL_CACHED_VIEWS()\n }\n\n @Action\n public updateVisitedView(view: ITagView) {\n this.UPDATE_VISITED_VIEW(view)\n }\n}\n\nexport const TagsViewModule = getModule(TagsView)\n","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=1&id=31c3d88a&lang=scss&scoped=true&\""],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/layout/components/Settings/index.vue?e22b","webpack:///./src/layout/components/Sidebar/index.vue?d9f3","webpack:///./src/layout/components/Sidebar/SidebarLogo.vue?0e33","webpack:///./src/layout/components/Sidebar/index.vue?427e","webpack:///./src/store/index.ts","webpack:///./src/components/LangSelect/index.vue?e2e1","webpack:///./src/components/LangSelect/index.vue?e88c","webpack:///./src/components/LangSelect/index.vue?17c2","webpack:///./src/components/LangSelect/index.vue","webpack:///./src/utils/permission.ts","webpack:///./src/layout/components/TagsView/ScrollPane.vue?d787","webpack:///./src/styles/element-variables.scss?0651","webpack:///./src/layout/components/Sidebar/SidebarItem.vue?e8a9","webpack:///./src/components/RightPanel/index.vue?6ec3","webpack:///./src/components/Breadcrumb/index.vue?1fda","webpack:///./src/components/ErrorLog/index.vue?cde2","webpack:///./src/layout/components/Sidebar/SidebarItem.vue?2ce7","webpack:///./src/utils/Extend.ts","webpack:///./src/utils/cookies.ts","webpack:///./src/layout/components/TagsView/ScrollPane.vue?6587","webpack:///./src/components/ThemePicker/index.vue?361b","webpack:///./src/lang/en.ts","webpack:///./src/lang/zh.ts","webpack:///./src/lang/es.ts","webpack:///./src/lang/ja.ts","webpack:///./src/lang/ko.ts","webpack:///./src/lang/it.ts","webpack:///./src/lang/index.ts","webpack:///./src/components/ThemePicker/index.vue?7fab","webpack:///./src/layout/components/AppMain.vue?1989","webpack:///./src/store/modules/settings.ts","webpack:///./src/store/modules/permission.ts","webpack:///./src/settings.ts","webpack:///./src/components/RightPanel/index.vue?9a67","webpack:///./src/layout/components/TagsView/ScrollPane.vue?f788","webpack:///./src/api/admins.ts","webpack:///./src/layout/components/TagsView/index.vue?de25","webpack:///./src/store/modules/user.ts","webpack:///./src/styles/_variables.scss","webpack:///./src/store/modules/app.ts","webpack:///./src/layout/components/Navbar/index.vue?838b","webpack:///./src/components/Hamburger/index.vue?750d","webpack:///./src/layout/index.vue?00e0","webpack:///./src/layout/components/AppMain.vue?0ed3","webpack:///./src/layout/components/AppMain.vue?40de","webpack:///./src/layout/components/AppMain.vue?ba62","webpack:///./src/layout/components/AppMain.vue","webpack:///./src/layout/components/Navbar/index.vue?ef02","webpack:///./src/components/Breadcrumb/index.vue?c03e","webpack:///./src/components/Breadcrumb/index.vue?12bf","webpack:///./src/components/Breadcrumb/index.vue?db4b","webpack:///./src/components/Breadcrumb/index.vue","webpack:///./src/components/ErrorLog/index.vue?df19","webpack:///./src/store/modules/error-log.ts","webpack:///./src/components/ErrorLog/index.vue?b810","webpack:///./src/components/ErrorLog/index.vue?5c58","webpack:///./src/components/ErrorLog/index.vue","webpack:///./src/components/Hamburger/index.vue?e927","webpack:///./src/components/Hamburger/index.vue?8de9","webpack:///./src/components/Hamburger/index.vue?6557","webpack:///./src/components/Hamburger/index.vue","webpack:///./src/components/HeaderSearch/index.vue?966b","webpack:///./src/components/HeaderSearch/index.vue?31aa","webpack:///./src/components/HeaderSearch/index.vue?6f38","webpack:///./src/components/HeaderSearch/index.vue","webpack:///./src/components/Screenfull/index.vue?9501","webpack:///./src/components/Screenfull/index.vue?ca69","webpack:///./src/components/Screenfull/index.vue?cba9","webpack:///./src/components/Screenfull/index.vue","webpack:///./src/components/SizeSelect/index.vue?66a9","webpack:///./src/components/SizeSelect/index.vue?1aed","webpack:///./src/components/SizeSelect/index.vue?03ec","webpack:///./src/components/SizeSelect/index.vue","webpack:///./src/layout/components/Navbar/index.vue?9a5d","webpack:///./src/layout/components/Navbar/index.vue?9362","webpack:///./src/layout/components/Navbar/index.vue","webpack:///./src/layout/components/Settings/index.vue?7736","webpack:///./src/components/ThemePicker/index.vue?aef2","webpack:///./src/components/ThemePicker/index.vue?a6ad","webpack:///./src/components/ThemePicker/index.vue?5987","webpack:///./src/components/ThemePicker/index.vue","webpack:///./src/layout/components/Settings/index.vue?bbb9","webpack:///./src/layout/components/Settings/index.vue?66a9","webpack:///./src/layout/components/Settings/index.vue","webpack:///./src/layout/components/Sidebar/index.vue?30e4","webpack:///./src/layout/components/Sidebar/SidebarItem.vue?8def","webpack:///./src/utils/validate.ts","webpack:///./src/layout/components/Sidebar/SidebarItemLink.vue?97af","webpack:///./src/layout/components/Sidebar/SidebarItemLink.vue?9406","webpack:///./src/layout/components/Sidebar/SidebarItemLink.vue?0e65","webpack:///./src/layout/components/Sidebar/SidebarItemLink.vue","webpack:///./src/layout/components/Sidebar/SidebarItem.vue?2bba","webpack:///./src/layout/components/Sidebar/SidebarItem.vue?e261","webpack:///./src/layout/components/Sidebar/SidebarItem.vue","webpack:///./src/layout/components/Sidebar/SidebarLogo.vue?d6f5","webpack:///./src/layout/components/Sidebar/SidebarLogo.vue?3328","webpack:///./src/layout/components/Sidebar/SidebarLogo.vue?f717","webpack:///./src/layout/components/Sidebar/SidebarLogo.vue","webpack:///./src/layout/components/Sidebar/index.vue?3a34","webpack:///./src/layout/components/Sidebar/index.vue?a172","webpack:///./src/layout/components/Sidebar/index.vue","webpack:///./src/layout/components/TagsView/index.vue?360b","webpack:///./src/layout/components/TagsView/ScrollPane.vue?ff83","webpack:///./src/layout/components/TagsView/ScrollPane.vue?9f04","webpack:///./src/layout/components/TagsView/ScrollPane.vue?2c29","webpack:///./src/layout/components/TagsView/ScrollPane.vue","webpack:///./src/layout/components/TagsView/index.vue?db3e","webpack:///./src/layout/components/TagsView/index.vue?d9d5","webpack:///./src/layout/components/TagsView/index.vue","webpack:///./src/components/RightPanel/index.vue?d3c1","webpack:///./src/components/RightPanel/index.vue?9d03","webpack:///./src/components/RightPanel/index.vue?b2ad","webpack:///./src/components/RightPanel/index.vue","webpack:///./src/layout/mixin/resize.ts","webpack:///./src/layout/index.vue?8696","webpack:///./src/layout/index.vue?5d14","webpack:///./src/layout/index.vue","webpack:///./src/router/modules/system.ts","webpack:///./src/router/modules/marketing.ts","webpack:///./src/router/modules/question.ts","webpack:///./src/router/modules/shop.ts","webpack:///./src/router/modules/game.ts","webpack:///./src/router/modules/statics.ts","webpack:///./src/router/index.ts","webpack:///./src/styles/index.scss?5214","webpack:///./src/utils/request.ts","webpack:///./src/layout/components/Sidebar/index.vue?569c","webpack:///./src/components/RightPanel/index.vue?3ce2","webpack:///./src/layout/components/TagsView/index.vue?1d70","webpack:///./src/layout/index.vue?a98b","webpack:///./src/App.vue?8bc3","webpack:///./src/App.vue?376d","webpack:///./src/App.vue?8d29","webpack:///./src/App.vue","webpack:///./src/icons/components/404.ts","webpack:///./src/icons/components/admin.ts","webpack:///./src/icons/components/back-top.ts","webpack:///./src/icons/components/bug.ts","webpack:///./src/icons/components/chart.ts","webpack:///./src/icons/components/clipboard.ts","webpack:///./src/icons/components/component.ts","webpack:///./src/icons/components/coupon.ts","webpack:///./src/icons/components/dashboard.ts","webpack:///./src/icons/components/documentation.ts","webpack:///./src/icons/components/drag.ts","webpack:///./src/icons/components/edit.ts","webpack:///./src/icons/components/education.ts","webpack:///./src/icons/components/email.ts","webpack:///./src/icons/components/example.ts","webpack:///./src/icons/components/excel.ts","webpack:///./src/icons/components/exit-fullscreen.ts","webpack:///./src/icons/components/eye-off.ts","webpack:///./src/icons/components/eye-on.ts","webpack:///./src/icons/components/form.ts","webpack:///./src/icons/components/fullscreen.ts","webpack:///./src/icons/components/game.ts","webpack:///./src/icons/components/guide-2.ts","webpack:///./src/icons/components/guide.ts","webpack:///./src/icons/components/hamburger.ts","webpack:///./src/icons/components/icon.ts","webpack:///./src/icons/components/international.ts","webpack:///./src/icons/components/language.ts","webpack:///./src/icons/components/like.ts","webpack:///./src/icons/components/link.ts","webpack:///./src/icons/components/list.ts","webpack:///./src/icons/components/lock.ts","webpack:///./src/icons/components/message.ts","webpack:///./src/icons/components/money.ts","webpack:///./src/icons/components/nested.ts","webpack:///./src/icons/components/password.ts","webpack:///./src/icons/components/pdf.ts","webpack:///./src/icons/components/people.ts","webpack:///./src/icons/components/peoples.ts","webpack:///./src/icons/components/permission.ts","webpack:///./src/icons/components/points.ts","webpack:///./src/icons/components/promo.ts","webpack:///./src/icons/components/qq.ts","webpack:///./src/icons/components/question_list.ts","webpack:///./src/icons/components/role.ts","webpack:///./src/icons/components/search.ts","webpack:///./src/icons/components/sell.ts","webpack:///./src/icons/components/shop_list.ts","webpack:///./src/icons/components/shop.ts","webpack:///./src/icons/components/shopping.ts","webpack:///./src/icons/components/size.ts","webpack:///./src/icons/components/skill.ts","webpack:///./src/icons/components/star.ts","webpack:///./src/icons/components/statistics.ts","webpack:///./src/icons/components/tab.ts","webpack:///./src/icons/components/table.ts","webpack:///./src/icons/components/theme.ts","webpack:///./src/icons/components/theme2.ts","webpack:///./src/icons/components/tree-table.ts","webpack:///./src/icons/components/tree.ts","webpack:///./src/icons/components/user.ts","webpack:///./src/icons/components/wechat.ts","webpack:///./src/icons/components/zip.ts","webpack:///./src/permission.ts","webpack:///./src/directives/clipboard/index.ts","webpack:///./src/directives/permission/index.ts","webpack:///./src/directives/el-draggable-dialog/index.ts","webpack:///./src/directives/waves/index.ts","webpack:///./src/directives/role/index.ts","webpack:///./src/filters/index.ts","webpack:///./src/utils/storage.ts","webpack:///./src/main.ts","webpack:///./src/utils/index.ts","webpack:///./src/components/HeaderSearch/index.vue?c1ac","webpack:///./src/layout/components/Sidebar/SidebarItem.vue?b1f4","webpack:///./src/store/modules/tags-view.ts","webpack:///./src/layout/components/TagsView/index.vue?3503"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","use","Store","render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","on","handleSetLanguage","slot","language","_v","staticRenderFns","lang","$i18n","locale","SetLanguage","documentElement","title","$route","meta","$t","settings","$message","toString","component","checkPermission","Array","permissions","hasPermission","sub","subArr","split","defineProperties","Date","addDays","days","getTime","writable","cloneTo","b","len","appendTo","pushOnce","idx","indexOf","zremove","spliceOne","index","randomSort","x","Math","random","randomInsert","arr","forEach","randomGet","temp","count","shuffled","min","floor","randomOne","results","randomRemove","moveElement","abs","concat","union","a","Set","intersect","set0","set1","filter","has","difference","Map","inc","set","sidebarStatusKey","getSidebarStatus","setSidebarStatus","sidebarStatus","languageKey","getLanguage","setLanguage","sizeKey","getSize","setSize","size","tokenKey","getToken","setToken","token","removeToken","remove","route","dashboard","system","adminuser","documentation","guide","permission","pagePermission","rolePermission","directivePermission","icons","components","tinymce","markdown","jsonEditor","splitPane","avatarUpload","dropzone","sticky","countTo","componentMixin","backToTop","draggableDialog","draggableKanban","draggableList","draggableSelect","charts","barChart","lineChart","mixedChart","example","nested","menu1","menu2","table","dynamicTable","draggableTable","inlineEditTable","complexTable","tab","form","createArticle","editArticle","articleList","errorPages","page401","page404","errorLog","excel","exportExcel","selectExcel","mergeHeader","uploadExcel","zip","pdf","exportZip","theme","clipboard","i18n","externalLink","profile","article","marketing","marketing_coupon","marketing_coupon_info","marketing_promo","marketing_points","question","question_list","question_prepare","question_setting","createQuestion","shop","shop_list","shop_admin","create_shop","shop_edit","game_setting","game","game_list","game_edit","activity_list","create_activity","edit_activity","exam_list","create_exam","edit_exam","password","edit_theme","shop_member","shop_statistics","game_statistics","shop_puzzles","shop_lottery","shop_share","shop_mail","create_mail","edit_mail","navbar","logOut","github","login","logIn","username","any","thirdparty","thirdpartyTips","createRole","editPermission","roles","switchRoles","tips","delete","confirm","cancel","description","button","tinymceTips","stickyTips","backToTopTips1","backToTopTips2","imageUploadTips","changeLanguageTips","dynamicTips1","dynamicTips2","dragTips1","dragTips2","importance","remark","search","add","export","reviewer","id","date","author","readings","status","actions","edit","publish","draft","warning","selectedExport","placeholder","change","tagsView","refresh","close","closeOthers","closeAll","showTagsView","showSidebarLogo","fixedHeader","sidebarTextTheme","admin","addAdmin","editAdmin","main","toasts","switchLanguage","messages","en","zh","es","ja","ko","it","cookieLanguage","navigator","toLowerCase","locales","keys","Settings","showSettings","payload","CHANGE_SETTING","dynamic","store","SettingsModule","hasRole","some","role","includes","defaultPublic","filterAsyncRoutes","routes","res","children","Permission","dynamicRoutes","accessedRoutes","SET_ROUTES","PermissionModule","devServerPort","mockServerPort","defaultAdmin","showname","comment","locked","level","sex","avatar","department","getAdminInfo","url","method","logout","saveAdmin","deleteAdmin","uid","changeLocker","lock","getUsers","params","changePass","changeInfo","User","introduction","email","deptname","userInfo","trim","SET_TOKEN","SET_ROLES","SET_PERMISSIONS","SET_NAME","SET_AVATAR","SET_INTRODUCTION","SET_DEPARTMENT","SET_LEVEL","SET_DEPTNAME","SET_SEX","GetUserInfo","GenerateRoutes","addRoutes","delAllViews","UserModule","DeviceType","App","sidebar","opened","withoutAnimation","device","Desktop","TOGGLE_SIDEBAR","CLOSE_SIDEBAR","TOGGLE_DEVICE","SET_LANGUAGE","SET_SIZE","AppModule","class","classObj","mobile","handleClickOutside","_e","hasTagsView","cachedViews","path","toggleSideBar","_s","nativeOn","$event","staticStyle","_l","item","redirect","breadcrumbs","preventDefault","handleLink","startsWith","getBreadcrumb","matched","first","isDashboard","breadcrumb","toLocaleLowerCase","toPath","$router","warn","pathCompile","errorLogs","dialogTableVisible","clearAll","scopedSlots","_u","fn","ref","row","vm","$vnode","info","stack","logs","log","ADD_ERROR_LOG","CLEAR_ERROR_LOG","ErrorLogModule","ClearErrorLog","isActive","toggleClick","$emit","default","show","stopPropagation","click","querySearch","model","callback","$$v","expression","join","options","searchPool","generateRoutes","initFuse","body","addEventListener","removeEventListener","$refs","headerSearchSelect","focus","blur","$nextTick","list","fuse","shouldSort","threshold","location","distance","minMatchCharLength","weight","basePath","prefixTitle","router","hidden","i18ntitle","tempRoutes","query","map","isFullscreen","sf","isEnabled","off","toggle","handleSetSize","label","sizeOptions","$ELEMENT","SetSize","refreshView","delAllCachedViews","fullPath","replace","ToggleSideBar","LogOut","Breadcrumb","ErrorLog","Hamburger","HeaderSearch","LangSelect","Screenfull","SizeSelect","themeChange","version","ORIGINAL_THEME","chalk","oldValue","themeCluster","getThemeCluster","originalCluster","customClass","duration","iconClass","getCSSString","getHandler","variable","newStyle","updateStyle","styleTag","getElementById","innerText","chalkHandler","styles","querySelectorAll","style","text","RegExp","test","oldCluster","newCluster","color","xhr","XMLHttpRequest","onreadystatechange","readyState","responseText","open","send","tintColor","tint","red","parseInt","green","blue","round","shadeColor","shade","clusters","Number","toFixed","immediate","ChangeSetting","ThemePicker","showLogo","isCollapse","activeMenu","variables","menuBg","menuText","menuActiveTextColor","isFirstLevel","alwaysShowRootMenu","theOnlyOneChild","resolvePath","icon","elicon","child","isExternal","to","_t","required","alwaysShow","showingChildren","showingChildNumber","routePath","SidebarItemLink","collapse","menuActiveText","SidebarItem","SidebarLogo","handleScroll","refInFor","isAffix","closeSelectedTag","openMenu","directives","rawName","left","top","refreshSelectedTag","selectedTag","closeOthersTags","closeAllTags","tagSpacing","scrollContainer","wrap","scrollWrapper","emitScroll","eventDelta","wheelDelta","deltaY","scrollLeft","currentTag","container","$el","containerWidth","offsetWidth","tagList","$parent","firstTag","lastTag","scrollWidth","currentIndex","findIndex","prevTag","nextTag","afterNextTagOffsetLeft","offsetLeft","beforePrevTagOffsetLeft","visible","affixTags","visitedViews","addTags","moveToCurrentTag","closeMenu","initTags","affix","tags","tagPath","childTags","filterAffixTags","addVisitedView","addView","scrollPane","moveToTarget","updateVisitedView","view","delCachedView","delView","toLastView","delOthersViews","latestView","menuMinWidth","getBoundingClientRect","maxLeft","clientX","clientY","ScrollPane","buttonTop","clickNotClose","addEventClick","insertToBody","elx","rightPanel","closeSidebar","ev","parent","closest","querySelector","insertBefore","firstChild","WIDTH","Mobile","CloseSideBar","resizeHandler","isMobile","ToggleDevice","rect","width","hideSidebar","openSidebar","AppMain","Navbar","RightPanel","Sidebar","TagsView","systemRoutes","marketingRoutes","questionRoutes","shopRoutes","gameRoutes","staticsRoutes","statics","constantRoutes","noCache","asyncRoutes","scrollBehavior","from","savedPosition","y","base","resetRouter","newRouter","matcher","service","baseURL","interceptors","config","headers","authorization","response","msg","confirmButtonText","cancelButtonText","ResetToken","reload","register","height","viewBox","configure","showSpinner","whiteList","hasKey","te","pageName","beforeEach","_","next","start","done","afterEach","successCallback","errorCallback","clipboardInstance","inserted","el","binding","display","elDraggableDialog","vnode","dragDom","dialogHeaderEl","cssText","onmousedown","styleLeft","styleTop","disX","disY","offsetTop","dragDomWidth","dragDomHeight","offsetHeight","screenWidth","clientWidth","screenHeight","clientHeight","minDragDomLeft","maxDragDomLeft","minDragDomTop","maxDragDomTop","styleLeftStr","getComputedStyle","styleTopStr","onmousemove","componentInstance","elm","dispatchEvent","CustomEvent","onmouseup","customOpts","assign","opts","ele","position","overflow","ripple","className","max","pageY","scrollTop","pageX","backgroundColor","arg","action","update","unbind","destroy","permissionRoles","articleStatusFilter","statusMap","published","deleted","uppercaseFirstChar","str","charAt","toUpperCase","local","val","localStorage","getItem","JSON","parse","setItem","stringify","install","vue","$local","tagName","defaultWidth","defaultHeight","directive","productionTip","h","$mount","parseTime","time","cFormat","format","formatObj","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getDay","padStart","sec2TimeStr","sec","showSeconds","timeStr2Sec","vals","formatJson","filterKeys","jsonData","hasClass","match","addClass","removeClass","reg","toggleClass","classString","nameIndex","substr","delay","v","entries","ADD_VISITED_VIEW","ADD_CACHED_VIEW","DEL_VISITED_VIEW","DEL_CACHED_VIEW","DEL_OTHERS_VISITED_VIEWS","DEL_OTHERS_CACHED_VIEWS","DEL_ALL_VISITED_VIEWS","DEL_ALL_CACHED_VIEWS","UPDATE_VISITED_VIEW","TagsViewModule"],"mappings":"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","file":"js/app.deacb710.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({\"401\":\"401\",\"404\":\"404\",\"auth-redirect\":\"auth-redirect\",\"dashboard\":\"dashboard\",\"i18n-demo\":\"i18n-demo\",\"login\":\"login\",\"profile\":\"profile\",\"redirect\":\"redirect\",\"theme\":\"theme\"}[chunkId]||chunkId) + \".\" + {\"401\":\"eba710f6\",\"404\":\"ec607ed7\",\"auth-redirect\":\"d5b70f0f\",\"chunk-01c0add2\":\"ac6a9550\",\"chunk-035792c2\":\"132b6673\",\"chunk-0a4f4aa8\":\"0657ee74\",\"chunk-1426d9f9\":\"47ccd334\",\"chunk-144e8b05\":\"b23d68e9\",\"chunk-1d3d01ed\":\"3449325a\",\"chunk-1e67ed7b\":\"03531ba7\",\"chunk-01717ca4\":\"6d263562\",\"chunk-4cad52d2\":\"f00ae02b\",\"chunk-5337e365\":\"7465da3c\",\"chunk-551b767f\":\"d2f1aa09\",\"chunk-5823cdba\":\"1a7dbab6\",\"chunk-d5fbf3a2\":\"3ed58255\",\"chunk-2146eed7\":\"cd0217af\",\"chunk-1df6ae0e\":\"1f613ee7\",\"chunk-ed14ae0c\":\"f8c42b71\",\"chunk-37ee6f14\":\"07ce1530\",\"chunk-fd5993aa\":\"00560b94\",\"chunk-7a6b6eaa\":\"3d23582a\",\"chunk-21495f61\":\"9fe9e46e\",\"chunk-330c0877\":\"ddb589a5\",\"chunk-676093fc\":\"e71a7688\",\"chunk-d4ad27d8\":\"160a0aa0\",\"chunk-408127e4\":\"fbdf8a49\",\"chunk-41e8e32c\":\"f321db3b\",\"chunk-4bf5c744\":\"2cc73a2e\",\"chunk-50b4ae97\":\"feccad1c\",\"chunk-383c1b34\":\"b7c4bfe7\",\"chunk-51e7f57a\":\"fb2e4768\",\"chunk-7ee58394\":\"3ffb9157\",\"chunk-51479e12\":\"e1d371de\",\"dashboard\":\"8e2de14d\",\"i18n-demo\":\"2c66042b\",\"login\":\"e8b5fb9b\",\"profile\":\"9b5181c9\",\"redirect\":\"7905c4af\",\"theme\":\"c983984b\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"401\":1,\"404\":1,\"chunk-01c0add2\":1,\"chunk-035792c2\":1,\"chunk-0a4f4aa8\":1,\"chunk-1426d9f9\":1,\"chunk-144e8b05\":1,\"chunk-1d3d01ed\":1,\"chunk-01717ca4\":1,\"chunk-4cad52d2\":1,\"chunk-5337e365\":1,\"chunk-551b767f\":1,\"chunk-5823cdba\":1,\"chunk-2146eed7\":1,\"chunk-ed14ae0c\":1,\"chunk-37ee6f14\":1,\"chunk-fd5993aa\":1,\"chunk-7a6b6eaa\":1,\"chunk-21495f61\":1,\"chunk-676093fc\":1,\"chunk-d4ad27d8\":1,\"chunk-408127e4\":1,\"chunk-41e8e32c\":1,\"chunk-4bf5c744\":1,\"chunk-383c1b34\":1,\"chunk-51e7f57a\":1,\"chunk-7ee58394\":1,\"chunk-51479e12\":1,\"dashboard\":1,\"i18n-demo\":1,\"login\":1,\"profile\":1,\"theme\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({\"401\":\"401\",\"404\":\"404\",\"auth-redirect\":\"auth-redirect\",\"dashboard\":\"dashboard\",\"i18n-demo\":\"i18n-demo\",\"login\":\"login\",\"profile\":\"profile\",\"redirect\":\"redirect\",\"theme\":\"theme\"}[chunkId]||chunkId) + \".\" + {\"401\":\"11c016b8\",\"404\":\"96fe1c26\",\"auth-redirect\":\"31d6cfe0\",\"chunk-01c0add2\":\"200293c4\",\"chunk-035792c2\":\"5c7c2651\",\"chunk-0a4f4aa8\":\"3fc2e519\",\"chunk-1426d9f9\":\"c73fa990\",\"chunk-144e8b05\":\"200293c4\",\"chunk-1d3d01ed\":\"200293c4\",\"chunk-1e67ed7b\":\"31d6cfe0\",\"chunk-01717ca4\":\"0461aed2\",\"chunk-4cad52d2\":\"38768785\",\"chunk-5337e365\":\"9011efc0\",\"chunk-551b767f\":\"00048683\",\"chunk-5823cdba\":\"be777eac\",\"chunk-d5fbf3a2\":\"31d6cfe0\",\"chunk-2146eed7\":\"9ee6418b\",\"chunk-1df6ae0e\":\"31d6cfe0\",\"chunk-ed14ae0c\":\"c6830a95\",\"chunk-37ee6f14\":\"61483c54\",\"chunk-fd5993aa\":\"0461aed2\",\"chunk-7a6b6eaa\":\"221d4c57\",\"chunk-21495f61\":\"146db6b7\",\"chunk-330c0877\":\"31d6cfe0\",\"chunk-676093fc\":\"ed4053e6\",\"chunk-d4ad27d8\":\"af60e613\",\"chunk-408127e4\":\"5b669c31\",\"chunk-41e8e32c\":\"ab6179cd\",\"chunk-4bf5c744\":\"d25b5fbc\",\"chunk-50b4ae97\":\"31d6cfe0\",\"chunk-383c1b34\":\"f5dbd370\",\"chunk-51e7f57a\":\"7d84a576\",\"chunk-7ee58394\":\"200293c4\",\"chunk-51479e12\":\"309dc905\",\"dashboard\":\"85f3a32a\",\"i18n-demo\":\"037e2f6c\",\"login\":\"91406035\",\"profile\":\"38768785\",\"redirect\":\"31d6cfe0\",\"theme\":\"4119be69\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=f76a8f60&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarLogo.vue?vue&type=style&index=0&id=7847d0d3&lang=scss&scoped=true&\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuBg\":\"#304156\",\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409eff\"};","import Vue from 'vue'\nimport Vuex from 'vuex'\nimport { IAppState } from './modules/app'\nimport { IUserState } from './modules/user'\n\nVue.use(Vuex)\n\nexport interface IRootState {\n app: IAppState\n user: IUserState\n}\n\n// Declare empty store first, dynamically register all modules later.\nexport default new Vuex.Store({})\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dropdown',{staticClass:\"international\",attrs:{\"trigger\":\"click\"},on:{\"command\":_vm.handleSetLanguage}},[_c('div',[_c('svg-icon',{staticClass:\"international-icon\",attrs:{\"name\":\"language\"}})],1),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('el-dropdown-item',{attrs:{\"disabled\":_vm.language==='zh',\"command\":\"zh\"}},[_vm._v(\" 中文 \")]),_c('el-dropdown-item',{attrs:{\"disabled\":_vm.language==='en',\"command\":\"en\"}},[_vm._v(\" English \")]),_c('el-dropdown-item',{attrs:{\"disabled\":_vm.language==='es',\"command\":\"es\"}},[_vm._v(\" Español \")]),_c('el-dropdown-item',{attrs:{\"disabled\":_vm.language==='ja',\"command\":\"ja\"}},[_vm._v(\" 日本語 \")]),_c('el-dropdown-item',{attrs:{\"disabled\":_vm.language==='ko',\"command\":\"ko\"}},[_vm._v(\" 한국어 \")]),_c('el-dropdown-item',{attrs:{\"disabled\":_vm.language==='it',\"command\":\"it\"}},[_vm._v(\" Italiano \")])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator'\nimport { AppModule } from '@/store/modules/app'\nimport settings from '../../settings'\n@Component({\n name: 'Login'\n})\nexport default class extends Vue {\n get language() {\n return AppModule.language\n }\n\n private handleSetLanguage(lang: string) {\n this.$i18n.locale = lang\n AppModule.SetLanguage(lang)\n document.documentElement.lang = lang\n const title = this.$route.meta.title ? `${this.$t(`route.${this.$route.meta.title}`)} - ${settings.title}` : `${settings.title}`\n document.title = title\n this.$message({\n message: this.$t('components.changeLanguageTips').toString(),\n type: 'success'\n })\n }\n}\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=7302ef94&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { UserModule } from '@/store/modules/user'\n\nexport const checkRole = (value: string[]): boolean => {\n if (value && value instanceof Array && value.length > 0) {\n const roles = UserModule.roles\n const permissionRoles = value\n const hasPermission = roles.some(role => {\n return permissionRoles.includes(role)\n })\n return hasPermission\n } else {\n console.error('need roles! Like v-permission=\"[\\'admin\\',\\'editor\\']\"')\n return false\n }\n}\n\nexport const checkPermission = (value: string[]): boolean => {\n if (value && value instanceof Array && value.length > 0) {\n const permissions = UserModule.permissions\n let hasPermission = false\n for (const sub of value) {\n if (sub === '*') {\n hasPermission = true\n break\n }\n const subArr = sub.split(':')\n if (subArr[0] === '*') {\n for (const p of permissions) {\n if (p[1] === '*' || p[1] === subArr[1]) {\n hasPermission = true\n break\n }\n }\n } else if (subArr[1] === '*') {\n for (const p of permissions) {\n if (p[0] === '*' || p[0] === subArr[0]) {\n hasPermission = true\n break\n }\n }\n } else {\n for (const p of permissions) {\n if ((p[0] === '*' && p[1] === '*') ||\n (p[0] === '*' && p[1] === subArr[1]) ||\n (p[0] === subArr[0] && p[1] === '*') ||\n (p[0] === subArr[0] && p[1] === subArr[1])) {\n hasPermission = true\n break\n }\n }\n }\n if (hasPermission) {\n break\n }\n }\n return hasPermission\n } else {\n console.error('need roles! Like v-permission=\"[\\'admin\\',\\'editor\\']\"')\n return false\n }\n}\n","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ScrollPane.vue?vue&type=style&index=1&id=4712a34c&lang=scss&scoped=true&\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuBg\":\"#304156\",\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409eff\",\"theme\":\"#1890ff\"};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItem.vue?vue&type=style&index=1&id=35bc604c&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=1&id=3c531330&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=48aca8f5&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=72a28363&lang=scss&scoped=true&\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuBg\":\"#304156\",\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409eff\"};","interface Date {\n /**\n * 增加n天\n * @param {number} days\n * @return {Date}\n */\n addDays(days: number): Date\n}\n// eslint-disable-next-line no-extend-native\nObject.defineProperties(Date.prototype, {\n addDays: {\n value: function(days: number) {\n return new Date(this.getTime() + days * 3600 * 24 * 1000)\n },\n writable: true\n }\n})\ninterface Array {\n /**\n * 如果数组中没有要放入的对象,则将对象放入数组\n *\n * @param {T} t 要放入的对象\n * @returns {number} 放入的对象,在数组中的索引\n *\n * @member Array\n */\n pushOnce(t: T): number\n\n /**\n *\n * 删除某个数据\n * @param {T} t\n * @returns {boolean} true 有这个数据并且删除成功\n * false 没有这个数据\n */\n zremove(t: T): boolean\n\n /**\n * 将数组克隆到to\n * to的数组长度会和当前数组一致\n *\n * @template T\n * @param {Array} to\n */\n cloneTo(to: Array): void\n\n /**\n * 将数组附加到to中\n *\n * @template T\n * @param {Array} to\n *\n * @member ArrayConstructor\n */\n appendTo(to: Array): void\n\n /**\n * 移除数组index位置的元素, 比slice效率高\n * @param index\n */\n spliceOne(index: number): boolean\n\n /**\n * 随机排序\n */\n randomSort(): void\n\n /**\n * 检查数组中是否含有另外一个object\n * @param obj 与数组同类型的obj | 同类型的数组 | 指定child字段的值 | 指定child字段的数组\n * @param child 比较字段\n */\n contains(obj: T | T[] | {} | {}[], child?: string): boolean\n\n /**\n * 将数组随机插入当前数组中\n * @param arr\n */\n randomInsert(arr: Array): void\n\n /**\n * 随机获取n个元素\n * @param count\n */\n randomGet(count?: number): T[]\n\n /**\n * 随机获取1个元素\n */\n randomOne(): T\n\n /**\n * 随机移除n个元素\n * @param count\n */\n randomRemove(count?: number): T[]\n\n /**\n * 数组移动n位\n * @param n n > 0 右移, n<0 左移\n */\n moveElement(n: number): T[]\n\n /**\n * 两个数组并集\n * @param arr\n */\n union(arr: T[]): T[]\n\n /**\n * 两个数组交集\n * @param arr\n */\n intersect(arr: T[]): T[]\n\n /**\n * 相对于arr的差集\n * @param arr\n */\n difference(arr: T[]): T[]\n\n}\n\n// eslint-disable-next-line no-extend-native\nObject.defineProperties(Array.prototype, {\n cloneTo: {\n value: function (this: T[], b: any[]) {\n b.length = this.length\n const len = this.length\n b.length = len\n for (let i = 0; i < len; i++) {\n b[i] = this[i]\n }\n },\n writable: true\n },\n appendTo: {\n value: function (this: T[], b: any[]) {\n const len = this.length\n for (let i = 0; i < len; i++) {\n b.push(this[i])\n }\n },\n writable: true\n },\n pushOnce: {\n value: function (this: T[], t: T) {\n let idx = this.indexOf(t)\n if (!~idx) {\n idx = this.length\n this.push(t)\n }\n return idx\n },\n writable: true\n },\n zremove: {\n value: function (this: T[], t: T) {\n const idx = this.indexOf(t)\n if (~idx) {\n this.splice(idx, 1)\n return true\n }\n return false\n },\n writable: true\n },\n spliceOne: {\n value: function(index: number): boolean {\n if (index === -1 || index >= this.length) {\n return false\n }\n const len = this.length - 1\n for (let i = index; i < len; i++) {\n this[i] = this[i + 1]\n }\n this.length = len\n return true\n },\n writable: true\n },\n\n randomSort: {\n value: function () {\n for (let j, x, i = this.length; i; j = (Math.random() * i) | 0, x = this[--i], this[i] = this[j], this[j] = x) {}\n },\n writable: true\n },\n randomInsert: {\n value: function (arr: Array) {\n const length = this.length\n arr.forEach(value => {\n this.splice(Math.random() * length, 0, value)\n })\n },\n writable: true\n },\n randomGet: {\n value: function (count = 1): T[] {\n const shuffled: T[] = this.slice(0)\n let i = this.length\n const min = i - count\n let temp\n let index\n if (min < 0) {\n return shuffled\n }\n while (i-- > min) {\n index = Math.floor((i + 1) * Math.random())\n temp = shuffled[index]\n shuffled[index] = shuffled[i]\n shuffled[i] = temp\n }\n return shuffled.slice(min)\n },\n writable: true\n },\n randomOne: {\n value: function (): T|null {\n const results = this.randomGet(1)\n if (results.length > 0) {\n return results[0]\n } else {\n return null\n }\n },\n writable: true\n },\n randomRemove: {\n value: function (count = 1): T[] {\n const result = []\n while (count-- > 0 && this.length > 0) {\n const index = (Math.random() * this.length) | 0\n result.push(...this.splice(index, 1))\n }\n return result\n },\n writable: true\n },\n\n moveElement: {\n value: function (n: number): T[] {\n if (Math.abs(n) > this.length) n = n % this.length\n return this.slice(-n).concat(this.slice(0, -n))\n },\n writable: true\n },\n\n union: {\n value: function (this: T[], b: any[]): T[] {\n const a = this.concat(b)\n return [...new Set(a)]\n },\n writable: true\n },\n\n intersect: {\n value: function (this: T[], b: any[]): T[] {\n const set0 = new Set(b)\n const set1 = new Set(this.filter(x => set0.has(x)))\n return [...set1]\n },\n writable: true\n },\n\n difference: {\n value: function (this: T[], b: any[]): T[] {\n const set0 = new Set(b)\n const set1 = new Set(this.filter(x => !set0.has(x)))\n return [...set1]\n },\n writable: true\n }\n})\n\ninterface Map {\n /**\n * 只针对V为number的Map, 有值的话, 加上V, 没值则直接set\n * V为其他类型时, 直接set\n * @param key\n * @param value\n */\n inc(key: K, value: V): number\n}\n\n// eslint-disable-next-line no-extend-native\nObject.defineProperties(Map.prototype, {\n inc: {\n value: function (key: K, value: V) {\n if (typeof value === 'number') {\n this.set(key, (this.get(key) || 0) + value)\n } else {\n this.set(key, value)\n }\n return this.get(key)\n }\n }\n})\n","import Cookies from 'js-cookie'\n\n// App\nconst sidebarStatusKey = 'sidebar_status'\nexport const getSidebarStatus = () => Cookies.get(sidebarStatusKey)\nexport const setSidebarStatus = (sidebarStatus: string) => Cookies.set(sidebarStatusKey, sidebarStatus)\n\nconst languageKey = 'language'\nexport const getLanguage = () => Cookies.get(languageKey)\nexport const setLanguage = (language: string) => Cookies.set(languageKey, language)\n\nconst sizeKey = 'size'\nexport const getSize = () => Cookies.get(sizeKey)\nexport const setSize = (size: string) => Cookies.set(sizeKey, size)\n\n// User\nconst tokenKey = 'vue_typescript_admin_access_token'\nexport const getToken = () => Cookies.get(tokenKey)\nexport const setToken = (token: string) => Cookies.set(tokenKey, token)\nexport const removeToken = () => Cookies.remove(tokenKey)\n","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ScrollPane.vue?vue&type=style&index=0&lang=scss&\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuBg\":\"#304156\",\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409eff\"};","export default {\n route: {\n dashboard: 'Dashboard',\n system: 'System',\n adminuser: 'Admin',\n documentation: 'Documentation',\n guide: 'Guide',\n permission: 'Permission',\n pagePermission: 'Page Permission',\n rolePermission: 'Role Permission',\n directivePermission: 'Directive Permission',\n icons: 'Icons',\n components: 'Components',\n tinymce: 'Tinymce',\n markdown: 'Markdown',\n jsonEditor: 'JSON Editor',\n splitPane: 'SplitPane',\n avatarUpload: 'Avatar Upload',\n dropzone: 'Dropzone',\n sticky: 'Sticky',\n countTo: 'Count To',\n componentMixin: 'Mixin',\n backToTop: 'Back To Top',\n draggableDialog: 'Draggable Dialog',\n draggableKanban: 'Draggable Kanban',\n draggableList: 'Draggable List',\n draggableSelect: 'Draggable Select',\n charts: 'Charts',\n barChart: 'Bar Chart',\n lineChart: 'Line Chart',\n mixedChart: 'Mixed Chart',\n example: 'Example',\n nested: 'Nested Routes',\n menu1: 'Menu 1',\n 'menu1-1': 'Menu 1-1',\n 'menu1-2': 'Menu 1-2',\n 'menu1-2-1': 'Menu 1-2-1',\n 'menu1-2-2': 'Menu 1-2-2',\n 'menu1-3': 'Menu 1-3',\n menu2: 'Menu 2',\n table: 'Table',\n dynamicTable: 'Dynamic Table',\n draggableTable: 'Draggable Table',\n inlineEditTable: 'Inline Edit Table',\n complexTable: 'Complex Table',\n tab: 'Tab',\n form: 'Form',\n createArticle: 'Create Article',\n editArticle: 'Edit Article',\n articleList: 'Article List',\n errorPages: 'Error Pages',\n page401: '401',\n page404: '404',\n errorLog: 'Error Log',\n excel: 'Excel',\n exportExcel: 'Export Excel',\n selectExcel: 'Export Selected',\n mergeHeader: 'Merge Header',\n uploadExcel: 'Upload Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Export Zip',\n theme: 'Theme',\n clipboard: 'Clipboard',\n i18n: 'I18n',\n externalLink: 'External Link',\n profile: 'Profile',\n article: 'Article',\n marketing: 'Marketing',\n marketing_coupon: 'Coupon',\n marketing_coupon_info: 'Coupon Info',\n marketing_promo: 'Promo Code',\n marketing_points: 'Points Setting',\n question: 'Question Set',\n question_list: 'Question List',\n question_prepare: 'Question Edit',\n question_setting: 'Question Setting',\n createQuestion: 'Create Question',\n shop: 'Shop Setting',\n shop_list: 'Shop List',\n shop_admin: 'Shop Admins',\n create_shop: 'Create Shop',\n shop_edit: 'Shop Editor',\n game_setting: 'Game Setting',\n game: 'Game',\n game_list: 'Game List',\n game_edit: 'Game Info',\n activity_list: 'Activity List',\n create_activity: 'New Activity',\n edit_activity: 'Edit Activity',\n exam_list: 'Exam List',\n create_exam: 'New Exam',\n edit_exam: 'Edit Exam',\n password: 'Password',\n edit_theme: 'Edit Theme',\n shop_member: 'Member Manage',\n shop_statistics: 'Statistics',\n game_statistics: 'Game Statistics',\n shop_puzzles: 'Custom Puzzles',\n shop_lottery: 'Lottery Setting',\n shop_share: 'Share Setting',\n shop_mail: 'Mails',\n create_mail: 'New Mail',\n edit_mail: 'Edit Mail'\n },\n navbar: {\n logOut: 'Log Out',\n dashboard: 'Dashboard',\n github: 'Github',\n theme: 'Theme',\n size: 'Global Size',\n profile: 'Profile',\n password: 'Password'\n },\n login: {\n title: 'Login Form',\n logIn: 'Login',\n username: 'Username',\n password: 'Password',\n any: 'any',\n thirdparty: 'Or connect with',\n thirdpartyTips: 'Can not be simulated on local, so please combine you own business simulation! ! !'\n },\n documentation: {\n documentation: 'Documentation',\n github: 'Github Repository'\n },\n permission: {\n createRole: 'New Role',\n editPermission: 'Edit',\n roles: 'Your roles',\n switchRoles: 'Switch roles',\n tips: 'In some cases, using v-permission will have no effect. For example: Element-UI el-tab or el-table-column and other scenes that dynamically render dom. You can only do this with v-if.',\n delete: 'Delete',\n confirm: 'Confirm',\n cancel: 'Cancel'\n },\n guide: {\n description: 'The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ',\n button: 'Show Guide'\n },\n components: {\n documentation: 'Documentation',\n tinymceTips: 'Rich text is a core feature of the management backend, but at the same time it is a place with lots of pits. In the process of selecting rich texts, I also took a lot of detours. The common rich texts on the market have been basically used, and I finally chose Tinymce. See the more detailed rich text comparison and introduction.',\n stickyTips: 'when the page is scrolled to the preset position will be sticky on the top.',\n backToTopTips1: 'When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner',\n backToTopTips2: 'You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally',\n imageUploadTips: 'Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version.',\n changeLanguageTips: 'Switch Language Success'\n },\n table: {\n dynamicTips1: 'Fixed header, sorted by header order',\n dynamicTips2: 'Not fixed header, sorted by click order',\n dragTips1: 'The default order',\n dragTips2: 'The after dragging order',\n title: 'Title',\n importance: 'Importance',\n type: 'Type',\n remark: 'Remark',\n search: 'Search',\n add: 'Add',\n export: 'Export',\n reviewer: 'Reviewer',\n id: 'ID',\n date: 'Date',\n author: 'Author',\n readings: 'Readings',\n status: 'Status',\n actions: 'Actions',\n edit: 'Edit',\n publish: 'Publish',\n draft: 'Draft',\n delete: 'Delete',\n cancel: 'Cancel',\n confirm: 'Confirm'\n },\n example: {\n warning: 'Creating and editing pages cannot be cached by keep-alive because keep-alive\\'s \\'include\\' currently does not support caching based on routes, so now it\\'s cached based on component name. If you want to achieve a similar caching effect, you can use a browser caching scheme such as localStorage. Or don\\'t use keep-alive\\'s \\'include\\' to cache all pages directly. See details'\n },\n errorLog: {\n tips: 'Please click the bug icon in the upper right corner',\n description: 'Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.',\n documentation: 'Document introduction'\n },\n excel: {\n export: 'Export',\n selectedExport: 'Export Selected Items',\n placeholder: 'Please enter the file name (default excel-list)'\n },\n zip: {\n export: 'Export',\n placeholder: 'Please enter the file name (default file)'\n },\n pdf: {\n tips: 'Here we use window.print() to implement the feature of downloading PDF.'\n },\n theme: {\n change: 'Change Theme',\n documentation: 'Theme documentation',\n tips: 'Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details.'\n },\n tagsView: {\n refresh: 'Refresh',\n close: 'Close',\n closeOthers: 'Close Others',\n closeAll: 'Close All'\n },\n settings: {\n title: 'Page style setting',\n theme: 'Theme Color',\n showTagsView: 'Open Tags-View',\n showSidebarLogo: 'Sidebar Logo',\n fixedHeader: 'Fixed Header',\n sidebarTextTheme: 'Sidebar Text Theme'\n },\n admin: {\n addAdmin: 'New Admin',\n editAdmin: 'Edit Admin'\n },\n article: {\n add: 'New Article'\n },\n marketing: {\n\n },\n main: {\n shop: 'shop'\n }\n}\n","export default {\n route: {\n dashboard: '首页',\n documentation: '文档',\n system: '系统',\n adminuser: '管理员',\n guide: '引导页',\n permission: '权限管理',\n rolePermission: '角色权限',\n pagePermission: '页面权限',\n directivePermission: '指令权限',\n icons: '图标',\n components: '组件',\n tinymce: '富文本编辑器',\n markdown: 'Markdown',\n jsonEditor: 'JSON 编辑器',\n splitPane: 'Splitpane',\n avatarUpload: '头像上传',\n dropzone: 'Dropzone',\n sticky: 'Sticky',\n countTo: 'Count To',\n componentMixin: '小组件',\n backToTop: '返回顶部',\n draggableDialog: '可拖拽对话框',\n draggableKanban: '可拖拽看板',\n draggableList: '可拖拽列表',\n draggableSelect: '可拖拽选择',\n charts: '图表',\n barChart: '柱状图表',\n lineChart: '折线图',\n mixedChart: '混合图表',\n example: '综合实例',\n nested: '路由嵌套',\n menu1: '菜单 1',\n 'menu1-1': '菜单 1-1',\n 'menu1-2': '菜单 1-2',\n 'menu1-2-1': '菜单 1-2-1',\n 'menu1-2-2': '菜单 1-2-2',\n 'menu1-3': '菜单 1-3',\n menu2: '菜单 2',\n table: '表格',\n dynamicTable: '动态表格',\n draggableTable: '可拖拽表格',\n inlineEditTable: '表格内编辑',\n complexTable: '综合表格',\n tab: '分栏',\n form: '表单',\n createArticle: '创建文章',\n editArticle: '编辑文章',\n articleList: '文章列表',\n errorPages: '错误页面',\n page401: '401',\n page404: '404',\n errorLog: '错误日志',\n excel: 'Excel',\n exportExcel: '导出 Excel',\n selectExcel: '导出 已选择项',\n mergeHeader: '导出 多级表头',\n uploadExcel: '上传 Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: '导出 Zip',\n theme: '换肤',\n clipboard: '粘贴板',\n i18n: '国际化',\n externalLink: '外链',\n profile: '个人中心',\n article: '资讯管理',\n marketing: '营销管理',\n marketing_coupon: '优惠券设置',\n marketing_coupon_info: '编辑优惠券',\n marketing_promo: '优惠码设置',\n marketing_points: '积分设置',\n question: '题库管理',\n question_list: '题目列表',\n question_prepare: '题目编辑',\n question_setting: '题库设置',\n createQuestion: '创建题目',\n shop: '店铺设置',\n shop_list: '店铺列表',\n shop_admin: '店铺管理员',\n create_shop: '创建店铺',\n shop_edit: '编辑店铺',\n game_setting: '游戏设置',\n game: '游戏信息',\n game_list: '游戏列表',\n game_edit: '编辑游戏',\n activity_list: '活动列表',\n create_activity: '新建活动',\n edit_activity: '编辑活动',\n exam_list: '挑战列表',\n create_exam: '新建挑战',\n edit_exam: '编辑挑战',\n password: '修改密码',\n edit_theme: '订制游戏主题',\n shop_member: '成员管理',\n shop_statistics: '统计',\n game_statistics: '游戏数据',\n shop_puzzles: '自定义题库',\n shop_lottery: '抽奖转盘',\n shop_share: '分享设置',\n shop_mail: '邮件',\n create_mail: '新邮件',\n edit_mail: '编辑邮件'\n },\n navbar: {\n logOut: '退出登录',\n dashboard: '首页',\n github: '项目地址',\n theme: '换肤',\n size: '布局大小',\n profile: '个人信息',\n password: '修改密码'\n },\n login: {\n title: '系统登录',\n logIn: '登录',\n username: '账号',\n password: '密码',\n any: '随便填',\n thirdparty: '第三方登录',\n thirdpartyTips: '本地不能模拟,请结合自己业务进行模拟!!!'\n },\n documentation: {\n documentation: '文档',\n github: 'Github 地址'\n },\n permission: {\n createRole: '新增角色',\n editPermission: '编辑权限',\n roles: '你的权限',\n switchRoles: '切换权限',\n tips: '在某些情况下,不适合使用 v-permission。例如:Element-UI 的 el-tab 或 el-table-column 以及其它动态渲染 dom 的场景。你只能通过手动设置 v-if 来实现。',\n delete: '删除',\n confirm: '确定',\n cancel: '取消'\n },\n guide: {\n description: '引导页对于一些第一次进入项目的人很有用,你可以简单介绍下项目的功能。本 Demo 是基于',\n button: '打开引导'\n },\n components: {\n documentation: '文档',\n tinymceTips: '富文本是管理后台一个核心的功能,但同时又是一个有很多坑的地方。在选择富文本的过程中我也走了不少的弯路,市面上常见的富文本都基本用过了,最终权衡了一下选择了Tinymce。更详细的富文本比较和介绍见',\n stickyTips: '当页面滚动到预设的位置会吸附在顶部',\n backToTopTips1: '页面滚动到指定位置会在右下角出现返回顶部按钮',\n backToTopTips2: '可自定义按钮的样式、show/hide、出现的高度、返回的位置 如需文字提示,可在外部使用Element的el-tooltip元素',\n imageUploadTips: '由于我在使用时它只有vue@1版本,而且和mockjs不兼容,所以自己改造了一下,如果大家要使用的话,优先还是使用官方版本。',\n changeLanguageTips: '切换语言成功'\n },\n table: {\n dynamicTips1: '固定表头, 按照表头顺序排序',\n dynamicTips2: '不固定表头, 按照点击顺序排序',\n dragTips1: '默认顺序',\n dragTips2: '拖拽后顺序',\n title: '标题',\n importance: '重要性',\n type: '类型',\n remark: '点评',\n search: '搜索',\n add: '添加',\n export: '导出',\n reviewer: '审核人',\n id: '序号',\n date: '时间',\n author: '作者',\n readings: '阅读数',\n status: '状态',\n actions: '操作',\n edit: '编辑',\n publish: '发布',\n draft: '草稿',\n delete: '删除',\n cancel: '取 消',\n confirm: '确 定'\n },\n example: {\n warning: '创建和编辑页面是不能被 keep-alive 缓存的,因为keep-alive 的 include 目前不支持根据路由来缓存,所以目前都是基于 component name 来进行缓存的。如果你想类似的实现缓存效果,可以使用 localStorage 等浏览器缓存方案。或者不要使用 keep-alive 的 include,直接缓存所有页面。详情见'\n },\n errorLog: {\n tips: '请点击右上角bug小图标',\n description: '现在的管理后台基本都是spa的形式了,它增强了用户体验,但同时也会增加页面出问题的可能性,可能一个小小的疏忽就导致整个页面的死锁。好在 Vue 官网提供了一个方法来捕获处理异常,你可以在其中进行错误处理或者异常上报。',\n documentation: '文档介绍'\n },\n excel: {\n export: '导出',\n selectedExport: '导出已选择项',\n placeholder: '请输入文件名(默认excel-list)'\n },\n zip: {\n export: '导出',\n placeholder: '请输入文件名(默认file)'\n },\n pdf: {\n tips: '这里使用 window.print() 来实现下载pdf的功能'\n },\n theme: {\n change: '换肤',\n documentation: '换肤文档',\n tips: 'Tips: 它区别于 navbar 上的 theme-pick, 是两种不同的换肤方法,各自有不同的应用场景,具体请参考文档。'\n },\n tagsView: {\n refresh: '刷新',\n close: '关闭',\n closeOthers: '关闭其它',\n closeAll: '关闭所有'\n },\n settings: {\n title: '系统布局配置',\n theme: '主题色',\n showTagsView: '显示 Tags-View',\n showSidebarLogo: '显示侧边栏 Logo',\n fixedHeader: '固定 Header',\n sidebarTextTheme: '侧边栏文字主题色'\n },\n admin: {\n addAdmin: '新增',\n editAdmin: '编辑'\n },\n article: {\n add: '添加'\n },\n main: {\n shop: '店铺'\n }\n}\n","export default {\n route: {\n dashboard: 'Panel de control',\n documentation: 'Documentación',\n guide: 'Guía',\n permission: 'Permisos',\n rolePermission: 'Permisos de rol',\n pagePermission: 'Permisos de la página',\n directivePermission: 'Permisos de la directiva',\n icons: 'Iconos',\n components: 'Componentes',\n tinymce: 'Tinymce',\n markdown: 'Markdown',\n jsonEditor: 'Editor JSON',\n splitPane: 'Panel dividido',\n avatarUpload: 'Subir avatar',\n dropzone: 'Subir ficheros',\n sticky: 'Sticky',\n countTo: 'Count To',\n componentMixin: 'Mixin',\n backToTop: 'Ir arriba',\n draggableDialog: 'Draggable Dialog',\n draggableKanban: 'Draggable Kanban',\n draggableList: 'Draggable List',\n draggableSelect: 'Draggable Select',\n charts: 'Gráficos',\n barChart: 'Bar Chart',\n lineChart: 'Gráfico de líneas',\n mixedChart: 'Mixed Chart',\n example: 'Ejemplo',\n nested: 'Rutas anidadass',\n menu1: 'Menu 1',\n 'menu1-1': 'Menu 1-1',\n 'menu1-2': 'Menu 1-2',\n 'menu1-2-1': 'Menu 1-2-1',\n 'menu1-2-2': 'Menu 1-2-2',\n 'menu1-3': 'Menu 1-3',\n menu2: 'Menu 2',\n table: 'Tabla',\n dynamicTable: 'Tabla dinámica',\n draggableTable: 'Arrastrar tabla',\n inlineEditTable: 'Editor',\n complexTable: 'Complex Table',\n tab: 'Pestaña',\n form: 'Formulario',\n createArticle: 'Crear artículo',\n editArticle: 'Editar artículo',\n articleList: 'Listado de artículos',\n errorPages: 'Páginas de error',\n page401: '401',\n page404: '404',\n errorLog: 'Registro de errores',\n excel: 'Excel',\n exportExcel: 'Exportar a Excel',\n selectExcel: 'Export seleccionado',\n mergeHeader: 'Merge Header',\n uploadExcel: 'Subir Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Exportar a Zip',\n theme: 'Tema',\n clipboard: 'Clipboard',\n i18n: 'I18n',\n externalLink: 'Enlace externo',\n profile: 'Profile'\n },\n navbar: {\n logOut: 'Salir',\n dashboard: 'Panel de control',\n github: 'Github',\n theme: 'Tema',\n size: 'Tamaño global',\n profile: 'Profile'\n },\n login: {\n title: 'Formulario de acceso',\n logIn: 'Acceso',\n username: 'Usuario',\n password: 'Contraseña',\n any: 'nada',\n thirdparty: 'Conectar con',\n thirdpartyTips: 'No se puede simular en local, así que combine su propia simulación de negocios. ! !'\n },\n documentation: {\n documentation: 'Documentación',\n github: 'Repositorio Github'\n },\n permission: {\n createRole: 'Nuevo rol',\n editPermission: 'Permiso de edición',\n roles: 'Tus permisos',\n switchRoles: 'Cambiar permisos',\n tips: 'In some cases it is not suitable to use v-permission, such as element Tab component or el-table-column and other asynchronous rendering dom cases which can only be achieved by manually setting the v-if.',\n delete: 'Borrar',\n confirm: 'Confirmar',\n cancel: 'Cancelar'\n },\n guide: {\n description: 'The guide page is useful for some people who entered the project for the first time. You can briefly introduce the features of the project. Demo is based on ',\n button: 'Ver guía'\n },\n components: {\n documentation: 'Documentación',\n tinymceTips: 'Rich text editor is a core part of management system, but at the same time is a place with lots of problems. In the process of selecting rich texts, I also walked a lot of detours. The common rich text editors in the market are basically used, and the finally chose Tinymce. See documentation for more detailed rich text editor comparisons and introductions.',\n stickyTips: 'when the page is scrolled to the preset position will be sticky on the top.',\n backToTopTips1: 'When the page is scrolled to the specified position, the Back to Top button appears in the lower right corner',\n backToTopTips2: 'You can customize the style of the button, show / hide, height of appearance, height of the return. If you need a text prompt, you can use element-ui el-tooltip elements externally',\n imageUploadTips: 'Since I was using only the vue@1 version, and it is not compatible with mockjs at the moment, I modified it myself, and if you are going to use it, it is better to use official version.',\n changeLanguageTips: 'Cambiar de idioma correctamente'\n },\n table: {\n dynamicTips1: 'Fixed header, sorted by header order',\n dynamicTips2: 'Not fixed header, sorted by click order',\n dragTips1: 'Orden por defecto',\n dragTips2: 'The after dragging order',\n title: 'Título',\n importance: 'Importancia',\n type: 'Tipo',\n remark: 'Remark',\n search: 'Buscar',\n add: 'Añadir',\n export: 'Exportar',\n reviewer: 'Reviewer',\n id: 'ID',\n date: 'Fecha',\n author: 'Autor',\n readings: 'Lector',\n status: 'Estado',\n actions: 'Acciones',\n edit: 'Editar',\n publish: 'Publicar',\n draft: 'Draft',\n delete: 'Eliminar',\n cancel: 'Cancelar',\n confirm: 'Confirmar'\n },\n example: {\n warning: 'Creating and editing pages cannot be cached by keep-alive because keep-alive include does not currently support caching based on routes, so it is currently cached based on component name. If you want to achieve a similar caching effect, you can use a browser caching scheme such as localStorage. Or do not use keep-alive include to cache all pages directly. See details'\n },\n errorLog: {\n tips: 'Please click the bug icon in the upper right corner',\n description: 'Now the management system are basically the form of the spa, it enhances the user experience, but it also increases the possibility of page problems, a small negligence may lead to the entire page deadlock. Fortunately Vue provides a way to catch handling exceptions, where you can handle errors or report exceptions.',\n documentation: 'Documento de introducción'\n },\n excel: {\n export: 'Exportar',\n selectedExport: 'Exportar seleccionados',\n placeholder: 'Por favor escribe un nombre de fichero'\n },\n zip: {\n export: 'Exportar',\n placeholder: 'Por favor escribe un nombre de fichero'\n },\n pdf: {\n tips: 'Here we use window.print() to implement the feature of downloading PDF.'\n },\n theme: {\n change: 'Cambiar tema',\n documentation: 'Documentación del tema',\n tips: 'Tips: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details.'\n },\n tagsView: {\n refresh: 'Actualizar',\n close: 'Cerrar',\n closeOthers: 'Cerrar otros',\n closeAll: 'Cerrar todos'\n },\n settings: {\n title: 'Page style setting',\n theme: 'Theme Color',\n showTagsView: 'Show Tags-View',\n showSidebarLogo: 'Show Sidebar Logo',\n fixedHeader: 'Fixed Header',\n sidebarTextTheme: 'Sidebar Text Theme'\n }\n}\n","export default {\n route: {\n dashboard: 'トップ',\n system: 'システム',\n documentation: 'ドキュメント',\n guide: 'ガイド',\n permission: '権限',\n rolePermission: '権限ロール',\n pagePermission: 'ページ権限',\n directivePermission: 'ディレクティブ権限',\n icons: 'アイコン',\n components: 'コンポーネント',\n tinymce: 'TinyMCE',\n markdown: 'Markdown',\n jsonEditor: 'JSON Editor',\n splitPane: 'パネル',\n avatarUpload: 'アバターアップロード',\n dropzone: 'Dropzone',\n sticky: 'Sticky',\n countTo: 'Count To',\n componentMixin: 'コンポーネントMixin',\n backToTop: 'Back To Top',\n draggableDialog: 'Draggable Dialog',\n draggableKanban: 'Draggable 看板',\n draggableList: 'Draggable List',\n draggableSelect: 'Draggable Select',\n charts: 'チャート',\n barChart: 'Barチャート',\n lineChart: 'Lineチャート',\n mixedChart: 'Mixedチャート',\n example: 'Example',\n nested: 'Nested Routes',\n menu1: 'メニュー1',\n 'menu1-1': 'メニュー 1-1',\n 'menu1-2': 'メニュー 1-2',\n 'menu1-2-1': 'メニュー 1-2-1',\n 'menu1-2-2': 'メニュー 1-2-2',\n 'menu1-3': 'メニュー 1-3',\n menu2: 'メニュー 2',\n table: 'Table',\n dynamicTable: '可変 Table',\n draggableTable: 'Draggable Table',\n inlineEditTable: 'Inline Edit Table',\n complexTable: 'Complex Table',\n tab: 'Tab',\n form: 'フォーム',\n createArticle: '投稿作成',\n editArticle: '投稿編集',\n articleList: '投稿リスト',\n errorPages: 'エラーページ',\n page401: '401',\n page404: '404',\n errorLog: 'エラーログ',\n excel: 'Excel',\n exportExcel: '一括エクスポート',\n selectExcel: '複数選択エクスポート',\n mergeHeader: 'ヘッダーマージ',\n uploadExcel: 'アップロード',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Export Zip',\n theme: 'テーマ変更',\n clipboard: 'Clipboard',\n i18n: '多言語',\n externalLink: '外部リンク',\n profile: 'プロフィール'\n },\n navbar: {\n dashboard: 'トップ',\n github: 'GitHub',\n logOut: 'ログアウト',\n profile: 'プロフィール',\n theme: 'テーマ変更',\n size: '画面サイズ'\n },\n login: {\n title: 'ユーザログイン',\n logIn: 'ログイン',\n username: 'ユーザ名',\n password: 'パスワード',\n any: 'any',\n thirdparty: '外部IDでログイン',\n thirdpartyTips: 'ローカル環境ではログインできません。実装が必要です。'\n },\n documentation: {\n documentation: 'ドキュメント',\n github: 'Github Link'\n },\n permission: {\n createRole: 'ロール追加',\n editPermission: 'ロール変更',\n roles: 'ロール',\n switchRoles: 'ロール切替',\n tips: 'v-permissionは使えない時があります。例えば: Element-UI の el-tab、 el-table-column 及び他の dom。v-ifを使う必要があります。',\n delete: '削除',\n confirm: '確認',\n cancel: 'キャンセル'\n },\n guide: {\n description: 'ガイドは各機能の説明です。',\n button: 'ガイドを見る'\n },\n components: {\n documentation: 'ドキュメント',\n tinymceTips: 'tinymceは管理画面に重要な機能ですが、その同時に落とし穴がありあす。tinymceを使う道のりが大変でした。Tinymceを使う時に各自のプロジェクト状況で判断が必要です。ドキュメントはこちら',\n stickyTips: 'ページの指定位置へスクロールした場合、表示されます。',\n backToTopTips1: 'トップへスクロールが表示されます。',\n backToTopTips2: 'ボタンのスタイルはカスタマイズできます。例えば、show/hide、height、position。 またはElementのel-tooltipを使って、ツールチップを実装できます。',\n imageUploadTips: 'mockjsは使えないため、カスタマイズしています。公式の最新バージョンを使ってください。',\n changeLanguageTips: '言語切り替えの成功'\n },\n table: {\n dynamicTips1: '先頭は固定、最後に追加',\n dynamicTips2: '戦後に追加せず、指定列に追加',\n dragTips1: 'デフォルト順番',\n dragTips2: 'Drag後の順番',\n title: 'タイトル',\n importance: '重要',\n type: 'タイプ',\n remark: '評価',\n search: '検索',\n add: '追加',\n export: 'エクスポート',\n reviewer: 'レビュアー',\n id: '番号',\n date: '日時',\n author: '作成者',\n readings: '閲覧数',\n status: 'ステータス',\n actions: '操作',\n edit: '編集',\n publish: '公開',\n draft: '下書き',\n delete: 'キャンセル',\n cancel: 'キャンセル',\n confirm: '確認'\n },\n example: {\n warning: '新規作成と編集画面は keep-alive を使えないです。keep-alive の include はrouteのキャッシュは使えないです。そのため、component name を使ってキャッシュさせるようにします。このようなキャッシュ機能を作りたい場合,localStorageを使う手があります。もしくは keep-alive の includeを使って、全ページキャッシュする方法はあります。'\n },\n errorLog: {\n tips: '右上のbugアイコンをクリックしてください。',\n description: '管理画面はspaを使う場合が多い、ユーザ体現向上はできますが、想定外エラーが発生する場合があります。Vueはそのエラーハンドリング機能を提供し、エラーレポートができます。',\n documentation: 'ドキュメント'\n },\n excel: {\n export: 'エクスポート',\n selectedExport: 'エクスポート対象を選択してください。',\n placeholder: 'ファイル名を入力してください。'\n },\n zip: {\n export: 'エクスポート',\n placeholder: 'ファイル名を入力してください。'\n },\n pdf: {\n tips: 'window.print() を使ってPDFダウンロードしています。'\n },\n theme: {\n change: 'テーマ切替',\n documentation: 'ドキュメント',\n tips: 'Tips: テーマの切り替え方法はnavbarのtheme-pickと異なります、使い方はドキュメントを確認してください。'\n },\n tagsView: {\n refresh: '更新',\n close: '閉じる',\n closeOthers: 'その他閉じる',\n closeAll: 'すべて閉じる'\n },\n settings: {\n title: 'システムテーマ',\n theme: 'テーマ色',\n showTagsView: 'Tags-View 開く',\n showSidebarLogo: 'Show Sidebar Logo',\n fixedHeader: 'Fixed Header',\n sidebarTextTheme: 'Sidebar Text Theme'\n }\n}\n","export default {\n route: {\n dashboard: '대시보드',\n system: '체계',\n documentation: '문서',\n guide: '가이드',\n permission: '권한',\n rolePermission: '역할 권한',\n pagePermission: '페이지 권한',\n directivePermission: '지시 권한',\n icons: '아이콘',\n components: '구성 요소',\n tinymce: 'TinyMCE',\n markdown: 'Markdown',\n jsonEditor: 'JSON Editor',\n splitPane: '패널',\n avatarUpload: '아바타업로드',\n dropzone: 'Dropzone',\n sticky: 'Sticky',\n countTo: 'Count To',\n componentMixin: '구성 요소 Mixin',\n backToTop: 'Back To Top',\n draggableDialog: '드래그 상자',\n draggableKanban: '드래그 간판',\n draggableList: '드래그 리스트',\n draggableSelect: '드래그 선택',\n charts: '차트',\n barChart: '막대그래프',\n lineChart: '꺽은선그래프',\n mixedChart: '종합차트',\n example: '예시',\n nested: 'Nested Routes',\n menu1: '메뉴1',\n 'menu1-1': '메뉴 1-1',\n 'menu1-2': '메뉴 1-2',\n 'menu1-2-1': '메뉴 1-2-1',\n 'menu1-2-2': '메뉴 1-2-2',\n 'menu1-3': '메뉴 1-3',\n menu2: '메뉴 2',\n table: '표',\n dynamicTable: 'Dynamic 표',\n draggableTable: 'Draggable 표',\n inlineEditTable: 'Inline Edit 표',\n complexTable: 'Complex 표',\n tab: 'Tab',\n form: '형태',\n createArticle: '게시물 작성',\n editArticle: '게시물 편집',\n articleList: '게시물 리스트',\n errorPages: '에러 페이지',\n page401: '401',\n page404: '404',\n errorLog: '에러 로그',\n excel: '엑셀',\n exportExcel: '엑셀 내보내기',\n selectExcel: '엑셀 선택',\n mergeHeader: '헤더 병합',\n uploadExcel: '엑셀 올리기',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Export Zip',\n theme: '테마',\n clipboard: 'Clipboard',\n i18n: '언어',\n externalLink: '외부 링크',\n profile: '프로필'\n },\n navbar: {\n dashboard: '대시보드',\n github: '깃허브',\n logOut: '로그아웃',\n profile: '프로필',\n theme: '테마',\n size: '크기'\n },\n login: {\n title: '타이틀',\n logIn: '로그인',\n username: '이름',\n password: '비밀번호',\n any: 'any',\n thirdparty: '외부 ID로 로그인',\n thirdpartyTips: '로컬 환경에서 로그인 할 수 없습니다.'\n },\n documentation: {\n documentation: '문서',\n github: '깃허브 링크'\n },\n permission: {\n createRole: '역할 추가',\n editPermission: '권한 수정',\n roles: '역할',\n switchRoles: '역할 바꾸기',\n tips: 'v-permission 사용할 때가 있습니다. 예 : Element-UI의 el-tab, el-table-column 및 다른 dom. v-if를 사용해야합니다.',\n delete: '삭제',\n confirm: '확인',\n cancel: '취소'\n },\n guide: {\n description: '각 기능에 대한 설명입니다.',\n button: '버튼'\n },\n components: {\n documentation: '문서',\n tinymceTips: '서식있는 텍스트는 관리 백엔드의 핵심 기능이지만 동시에 문제가 많은 곳입니다. 리치 텍스트를 선택하는 과정에서도 많은 우회가 필요했습니다. 시중에 나와있는 일반적인 서식있는 텍스트는 기본적으로 사용되었으며 마침내 Tinymce를 선택했습니다. 보다 자세한 리치 텍스트 비교 및 소개를 참조하십시오.',\n stickyTips: '페이지의 지정된 위치에 스크롤하면 나타납니다.',\n backToTopTips1: '페이지가 지정된 위치로 스크롤되면 맨 아래 오른쪽 모서리에 맨 위로 이동 단추가 나타납니다.',\n backToTopTips2: '버튼 스타일, 표시 / 숨기기, 모양 높이, 반환 높이를 사용자 정의 할 수 있습니다. 텍스트 프롬프트가 필요한 경우 element-ui el-tooltip 요소를 외부에서 사용할 수 있습니다',\n imageUploadTips: 'vue @ 1 버전 만 사용하고 있었고 현재 mockjs와 호환되지 않기 때문에 직접 수정했으며 사용하려는 경우 공식 버전을 사용하는 것이 좋습니다.',\n changeLanguageTips: '언어 전환 성공'\n },\n table: {\n dynamicTips1: '정렬된 헤더',\n dynamicTips2: '정렬되지 않은 헤더',\n dragTips1: '기본 순서',\n dragTips2: '드래그한 순서',\n title: '타이틀',\n importance: '중요성',\n type: 'Type',\n remark: 'Remark',\n search: '검색',\n add: '추가',\n export: '내보내기',\n reviewer: 'Reviewer',\n id: 'ID',\n date: '날짜',\n author: '글쓴이',\n readings: 'Readings',\n status: '상태',\n actions: 'Actions',\n edit: '수정',\n publish: '게시',\n draft: 'Draft',\n delete: '삭제',\n cancel: '취소',\n confirm: '확인'\n },\n example: {\n warning: 'keep-alive의 \\'include \\'는 (는) 현재 경로 기반 캐싱을 지원하지 않으므로 구성 요소 이름을 기반으로 캐시되기 때문에 keep-alive로 페이지를 만들고 편집 할 수 없습니다. 비슷한 캐싱 효과를 얻으려면 localStorage와 같은 브라우저 캐싱 구성표를 사용할 수 있습니다. 또는 keep-alive \\' include \\'를 사용하여 모든 페이지를 직접 캐시하지 마십시오. 자세히보다'\n },\n errorLog: {\n tips: '오른쪽 상단에있는 버그 아이콘을 클릭하십시오',\n description: '이제 관리 시스템은 기본적으로 스파의 형태이며 사용자 경험을 향상 시키지만 페이지 문제의 가능성을 증가시킵니다. 작은 태만으로 인해 전체 페이지 교착 상태가 발생할 수 있습니다. 다행히 Vue는 오류를 처리하거나 예외를보고 할 수있는 예외 처리를 포착하는 방법을 제공합니다.',\n documentation: '문서 소개'\n },\n excel: {\n export: '내보내기',\n selectedExport: '선택 항목 내보내기',\n placeholder: '파일 이름을 입력하세요.(기본 엑셀 목록)'\n },\n zip: {\n export: '내보내기',\n placeholder: '파일 이름을 입력하세요.(기본 파일)'\n },\n pdf: {\n tips: '여기서는 window.print ()를 사용하여 PDF 다운로드 기능을 구현합니다.'\n },\n theme: {\n change: '테마 바꾸기',\n documentation: '테마 문서',\n tips: 'Tips: 탐색 모음의 테마 선택과는 다른 응용 프로그램 시나리오가있는 두 가지 다른 스키닝 방법입니다. 자세한 내용은 설명서를 참조하십시오.'\n },\n tagsView: {\n refresh: '새로고침',\n close: '닫기',\n closeOthers: '기타 닫기',\n closeAll: '모두 닫기'\n },\n settings: {\n title: '페이지 스타일 설정',\n theme: '테마 색상',\n showTagsView: 'Tags-View 열기',\n showSidebarLogo: '사이드 메뉴 로고',\n fixedHeader: '헤더 고정',\n sidebarTextTheme: '사이드 메뉴 글꼴 테마'\n }\n}\n","export default {\n route: {\n dashboard: 'Dashboard',\n documentation: 'Documentazione',\n guide: 'Guida',\n permission: 'Permessi',\n pagePermission: 'Pagina permessi',\n rolePermission: 'Permessi ruolo',\n directivePermission: 'Direttive Permessi',\n icons: 'Icone',\n components: 'Componenti',\n tinymce: 'Tinymce',\n markdown: 'Markdown',\n jsonEditor: 'Editor JSON',\n splitPane: 'SplitPane',\n avatarUpload: 'Carica Avatar',\n dropzone: 'Dropzone',\n sticky: 'Sticky',\n countTo: 'Conta Fino',\n componentMixin: 'Mixin',\n backToTop: 'Torna su',\n draggableDialog: 'Dialogo Trascinabile',\n draggableKanban: 'Kanban Trascinabile',\n draggableList: 'Lista Trascinabile',\n draggableSelect: 'Select Trascinabile',\n charts: 'Grafici',\n barChart: 'Grafico a Barre',\n lineChart: 'Grafico a Linee',\n mixedChart: 'Grafico Misto',\n example: 'Esempio',\n nested: 'Menu Nidificato',\n menu1: 'Menu 1',\n 'menu1-1': 'Menu 1-1',\n 'menu1-2': 'Menu 1-2',\n 'menu1-2-1': 'Menu 1-2-1',\n 'menu1-2-2': 'Menu 1-2-2',\n 'menu1-3': 'Menu 1-3',\n menu2: 'Menu 2',\n table: 'Tabella',\n dynamicTable: 'Tabella Dinamica',\n draggableTable: 'Tabella Trascinabile',\n inlineEditTable: 'Tabella Modifica in Linea',\n complexTable: 'Tabella Complessa',\n tab: 'Tab',\n form: 'Form',\n createArticle: 'Crea Articolo',\n editArticle: 'Modifica Articolo',\n articleList: 'Lista Articoli',\n errorPages: 'Pagine di Errore',\n page401: '401',\n page404: '404',\n errorLog: 'Registro Errori',\n excel: 'Excel',\n exportExcel: 'Esporta Excel',\n selectExcel: 'Esporta Selezionato',\n mergeHeader: 'Unisci Intestazione',\n uploadExcel: 'Carica Excel',\n zip: 'Zip',\n pdf: 'PDF',\n exportZip: 'Esporta Zip',\n theme: 'Tema',\n clipboard: 'Appunti',\n i18n: 'I18n',\n externalLink: 'Link Esterno',\n profile: 'Profilo'\n },\n navbar: {\n logOut: 'Esci',\n dashboard: 'Dashboard',\n github: 'Github',\n theme: 'Tema',\n size: 'Grandezza Globale',\n profile: 'Profilo'\n },\n login: {\n title: 'Accesso',\n logIn: 'Accedi',\n username: 'Utente',\n password: 'Password',\n any: 'qualunque',\n thirdparty: 'Connetti con',\n thirdpartyTips: 'Non può essere simulato in locale, quindi combina la tua simulazione di business, per favore!!!'\n },\n documentation: {\n documentation: 'Documentazione',\n github: 'Github Repository'\n },\n permission: {\n createRole: 'Nuovo Ruolo',\n editPermission: 'Modifica',\n roles: 'I tuoi ruoli',\n switchRoles: 'Cambia ruoli',\n tips: 'In alcuni casi usare v-permission non ha effetto. Per esempio: Element-UI el-tab o el-table-column e altri componenti che renderizzano il dom dinamicamente. Puoi farlo solo con v-if.',\n delete: 'Elimina',\n confirm: 'Conferma',\n cancel: 'Annulla'\n },\n guide: {\n description: 'La pagina Guida è utile per alcune persone che entrano nel progetto per la prima volta. Puoi introdurre brevemente le funzionalità del progetto. Il demo è basato su ',\n button: 'Mostra guida'\n },\n components: {\n documentation: 'Documentazione',\n stickyTips: 'when the page is scrolled to the preset position will be sticky on the top.',\n tinymceTips: 'Il testo ricco è una funzionalità fondamentale della gestione backend, ma allo stesso tempo è un posto molto scosceso. Nel processo di selezionare un Rich Text editor o fatto molte ricerche. I Rich Text editor comuni sul mercato sono molto usati, per questo alla fine ho scelto Tinymce. Vedi la più dettagliata comparazione e introduzione al Rich text editor.',\n backToTopTips1: 'Quando la pagina viene spostata alla posizione specificata, il bottone \"Torna Su\" compare nell\\'angolo in basso a destra',\n backToTopTips2: 'Puoi personalizzare lo stile dei bottoni, mostra / nascondi, altezza di apparizione, altezza del ritorno a capo. Se hai bisogno di un prompt di testo, puoi utilizzare gli elementi element-ui el-tooltip esternamente',\n imageUploadTips: 'Da quando usavo la verione 1 di Vue che non è compatibile con mockjs, la ho modificata io stesst, e se la userai, è meglio utilizzare versioni ufficiali.',\n changeLanguageTips: 'Cambio lingua riuscito'\n },\n table: {\n dynamicTips1: 'Intestazione Fissa, ordinato dall\\'ordine delle intestazioni',\n dynamicTips2: 'Intestazione non fissa, ordinato dall\\'ordine dei click',\n dragTips1: 'Ordine di default',\n dragTips2: 'Ordine post trascinamento',\n title: 'Titolo',\n importance: 'Importanza',\n type: 'Tipo',\n remark: 'Osservazione',\n search: 'Ricerca',\n add: 'Aggiungi',\n export: 'Esporta',\n reviewer: 'Recensore',\n id: 'ID',\n date: 'Data',\n author: 'Autore',\n readings: 'Lettori',\n status: 'Status',\n actions: 'Azioni',\n edit: 'Modifica',\n publish: 'Pubblica',\n draft: 'Bozza',\n delete: 'Elimina',\n cancel: 'Annulla',\n confirm: 'Conferma'\n },\n example: {\n warning: 'Creare e modificare pagine non può essere tenuto in cache da keep-alive, perchè l\\'include di keep-alive attualmente non supporta la cache basata sugli indirizzi, per questo ora viene utilizzata la cache basandosi sul nome del componente. Se vuoi utilizzare uno schema di caching basato sul browser come localStorage. O non usare l\\'include di keep-alive per mettere le pagine in cache direttamente. Vedi dettagli'\n },\n errorLog: {\n tips: 'Per favore clicca l\\'icona dell\\'insetto nell\\'angolo in alto a sinistra',\n description: 'Ora il sistema di gestione è fondamentalmente il form della spa, aumenta l\\'esperienza utente, ma incrementa anche le possibilità di problemi nelle pagine, una piccola negligenza può portare al blocco della pagina. Fortunatamente Vue offre un modo di catturare le eccezioni, dove puoi manipolare gli errori o riportare un\\'eccezione.',\n documentation: 'Introduzione documentazione'\n },\n excel: {\n export: 'Esporta',\n selectedExport: 'Esporta Elementi Selezionati',\n placeholder: 'Per favore inserisci il nome del file(default: excel-list)'\n },\n zip: {\n export: 'Esporta',\n placeholder: 'Per favore inserisci il nome del file(default: file)'\n },\n pdf: {\n tips: 'Qui usiamo window.print() per implementare la funzionalità del download PDF.'\n },\n theme: {\n change: 'Cambia Tema',\n documentation: 'Documentazione Tema',\n tips: 'Consiglio: It is different from the theme-pick on the navbar is two different skinning methods, each with different application scenarios. Refer to the documentation for details.'\n },\n tagsView: {\n refresh: 'Ricarica',\n close: 'Chiudi',\n closeOthers: 'Chiudi Altri',\n closeAll: 'Chiudi Tutto'\n },\n settings: {\n title: 'Impostazione Stile Pagina',\n theme: 'Colore Tema',\n showTagsView: 'Apri Vista Tag',\n showSidebarLogo: 'Logo Barra Laterale',\n fixedHeader: 'Intestazione Fissa',\n sidebarTextTheme: 'Tema Testo Barra Laterale'\n },\n toasts: {\n switchLanguage: 'Cambio lingua effettuato'\n }\n}\n","import Vue from 'vue'\nimport VueI18n from 'vue-i18n'\n\nimport { getLanguage } from '@/utils/cookies'\n\n// element-ui built-in lang\nimport elementEnLocale from 'element-ui/lib/locale/lang/en'\nimport elementZhLocale from 'element-ui/lib/locale/lang/zh-CN'\nimport elementEsLocale from 'element-ui/lib/locale/lang/es'\nimport elementJaLocale from 'element-ui/lib/locale/lang/ja'\nimport elementKoLocale from 'element-ui/lib/locale/lang/ko'\n\n// User defined lang\nimport enLocale from './en'\nimport zhLocale from './zh'\nimport esLocale from './es'\nimport jaLocale from './ja'\nimport koLocale from './ko'\nimport itLocale from './it'\n\nVue.use(VueI18n)\n\nconst messages = {\n en: {\n ...enLocale,\n ...elementEnLocale\n },\n zh: {\n ...zhLocale,\n ...elementZhLocale\n },\n es: {\n ...esLocale,\n ...elementEsLocale\n },\n ja: {\n ...jaLocale,\n ...elementJaLocale\n },\n ko: {\n ...koLocale,\n ...elementKoLocale\n },\n it: {\n ...itLocale\n }\n}\n\nexport const getLocale = () => {\n const cookieLanguage = getLanguage()\n if (cookieLanguage) {\n document.documentElement.lang = cookieLanguage\n return cookieLanguage\n }\n\n const language = navigator.language.toLowerCase()\n const locales = Object.keys(messages)\n for (const locale of locales) {\n if (language.indexOf(locale) > -1) {\n document.documentElement.lang = locale\n return locale\n }\n }\n\n // Default language is english\n return 'en'\n}\n\nconst i18n = new VueI18n({\n locale: getLocale(),\n messages\n})\n\nexport default i18n\n","export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&\"","export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=style&index=0&id=d4c70f86&lang=scss&scoped=true&\"","import {\n Action,\n getModule,\n Module,\n Mutation,\n VuexModule\n} from 'vuex-module-decorators'\nimport store from '@/store'\nimport elementVariables from '@/styles/element-variables.scss'\nimport defaultSettings from '@/settings'\n\nexport interface ISettingsState {\n theme: string\n fixedHeader: boolean\n showSettings: boolean\n showTagsView: boolean\n showSidebarLogo: boolean\n sidebarTextTheme: boolean\n}\n\n@Module({ dynamic: true, store, name: 'settings' })\nclass Settings extends VuexModule implements ISettingsState {\n public theme = elementVariables.theme\n public fixedHeader = defaultSettings.fixedHeader\n public showSettings = defaultSettings.showSettings\n public showTagsView = defaultSettings.showTagsView\n public showSidebarLogo = defaultSettings.showSidebarLogo\n public sidebarTextTheme = defaultSettings.sidebarTextTheme\n\n @Action\n public ChangeSetting(payload: { key: string, value: any }) {\n this.CHANGE_SETTING(payload)\n }\n\n @Mutation\n private CHANGE_SETTING(payload: { key: string, value: any }) {\n const { key, value } = payload\n if (Object.prototype.hasOwnProperty.call(this, key)) {\n (this as any)[key] = value\n }\n }\n}\n\nexport const SettingsModule = getModule(Settings)\n","import { VuexModule, Module, Mutation, Action, getModule } from 'vuex-module-decorators'\nimport { RouteConfig } from 'vue-router'\nimport { asyncRoutes, constantRoutes } from '@/router'\nimport store from '@/store'\nimport { checkPermission } from '@/utils/permission'\n\nconst hasRole = (roles: string[], route: RouteConfig) => {\n if (route.meta?.roles) {\n return roles.some(role => route.meta.roles.includes(role))\n } else {\n return false\n }\n}\nconst hasPermission = (route: RouteConfig) => {\n if (route.meta?.permissions) {\n return checkPermission(route.meta?.permissions)\n } else {\n return false\n }\n}\nconst defaultPublic = (route: RouteConfig) => {\n return !route.meta?.roles && !route.meta?.permissions\n}\n\nexport const filterAsyncRoutes = (routes: RouteConfig[], roles: string[]) => {\n const res: RouteConfig[] = []\n routes.forEach(route => {\n const r = { ...route }\n if ((hasRole(roles, r) || hasPermission(r)) || defaultPublic(r)) {\n if (r.children) {\n r.children = filterAsyncRoutes(r.children, roles)\n }\n res.push(r)\n }\n })\n return res\n}\n\nexport interface IPermissionState {\n routes: RouteConfig[]\n dynamicRoutes: RouteConfig[]\n}\n\n@Module({ dynamic: true, store, name: 'permission' })\nclass Permission extends VuexModule implements IPermissionState {\n public routes: RouteConfig[] = []\n public dynamicRoutes: RouteConfig[] = []\n\n @Mutation\n private SET_ROUTES(routes: RouteConfig[]) {\n this.routes = constantRoutes.concat(routes)\n this.dynamicRoutes = routes\n }\n\n @Action\n public GenerateRoutes(roles: string[]) {\n let accessedRoutes\n if (roles.includes('admin')) {\n accessedRoutes = asyncRoutes\n } else {\n accessedRoutes = filterAsyncRoutes(asyncRoutes, roles)\n }\n this.SET_ROUTES(accessedRoutes)\n }\n}\n\nexport const PermissionModule = getModule(Permission)\n","interface ISettings {\n title: string // Overrides the default title\n showSettings: boolean // Controls settings panel display\n showTagsView: boolean // Controls tagsview display\n showSidebarLogo: boolean // Controls siderbar logo display\n fixedHeader: boolean // If true, will fix the header component\n errorLog: string[] // The env to enable the errorlog component, default 'production' only\n sidebarTextTheme: boolean // If true, will change active text color for sidebar based on theme\n devServerPort: number // Port number for webpack-dev-server\n mockServerPort: number // Port number for mock server\n}\n\n// You can customize below settings :)\nconst settings: ISettings = {\n title: '管理后台',\n showSettings: true,\n showTagsView: true,\n fixedHeader: false,\n showSidebarLogo: false,\n errorLog: ['production'],\n sidebarTextTheme: true,\n devServerPort: 9527,\n mockServerPort: 9528\n}\n\nexport default settings\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuBg\":\"#304156\",\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409eff\"};","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuBg\":\"#304156\",\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409eff\"};","import request from '@/utils/request'\nimport { UserModule } from '@/store/modules/user'\nexport interface IAdmin {\n id: string\n username: string\n showname: string\n comment: string\n locked: boolean\n roles: string[]\n sex: string\n avatar: string\n password: string\n department: string\n level: number\n}\n\nexport const defaultAdmin: IAdmin = {\n id: '',\n username: '',\n showname: '',\n comment: '',\n locked: false,\n roles: [],\n level: 1,\n sex: '0',\n password: '',\n avatar: '',\n department: ''\n}\nexport const getAdminInfo = (data: any) =>\n request({\n url: '/api/admin/info',\n method: 'post',\n data\n })\n\nexport const login = (data: any) =>\n request({\n url: '/api/admin/login',\n method: 'post',\n data\n })\n\nexport const logout = () =>\n request({\n url: '/api/admin/logout',\n method: 'post'\n })\n\nexport const saveAdmin = (data: any) =>\n request({\n url: '/api/admin/save',\n method: 'post',\n data\n })\n\nexport const deleteAdmin = (uid: string) => {\n return request({\n url: `/api/admin/${uid}/delete`,\n method: 'post'\n })\n}\n\nexport const changeLocker = (uid: string, status: boolean) => {\n return request({\n url: `/api/admin/${uid}/locker`,\n method: 'post',\n data: { lock: status }\n })\n}\n\nexport const getUsers = (params: any) =>\n request({\n url: '/api/admins',\n method: 'get',\n params\n })\n\nexport const changePass = (params: any) =>\n request({\n url: '/api/admin/passwd',\n method: 'post',\n data: params\n })\n\nexport const changeInfo = (params: any) =>\n request({\n url: '/api/admin/update_info',\n method: 'post',\n data: params\n })\n","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&\"","import {\n Action,\n getModule,\n Module,\n Mutation,\n VuexModule\n} from 'vuex-module-decorators'\nimport { getAdminInfo, login, logout } from '@/api/admins'\nimport { getToken, removeToken, setToken } from '@/utils/cookies'\nimport store from '@/store'\nimport router, { resetRouter } from '@/router'\nimport { PermissionModule } from '@/store/modules/permission'\nimport { TagsViewModule } from '@/store/modules/tags-view'\n\nexport interface IUserState {\n token: string\n name: string\n avatar: string\n introduction: string\n roles: string[]\n email: string\n permissions: string[][]\n department?: string\n deptname?: string\n level: number\n sex?: string\n}\n\n@Module({ dynamic: true, store, name: 'user' })\nclass User extends VuexModule implements IUserState {\n public token = getToken() || ''\n public name = ''\n public avatar = ''\n public introduction = ''\n public roles: string[] = []\n public permissions: string[][] = []\n public email = ''\n public department = ''\n public deptname = ''\n public level = 999\n public sex = '0'\n\n @Action\n public async Login(userInfo: { username: string, password: string }) {\n let { username, password } = userInfo\n username = username.trim()\n const { data } = await login({ username, password })\n setToken(data.token)\n this.SET_TOKEN(data.token)\n }\n\n @Action\n public ResetToken() {\n removeToken()\n this.SET_TOKEN('')\n this.SET_ROLES([])\n this.SET_PERMISSIONS([])\n }\n\n @Action\n public async GetUserInfo() {\n if (this.token === '') {\n throw Error('GetUserInfo: token is undefined!')\n }\n const { data } = await getAdminInfo({ /* Your params here */ })\n if (!data) {\n throw Error('Verification failed, please Login again.')\n }\n const { roles, showname, avatar, introduction, permissions, department, level, deptname, sex } = data\n // roles must be a non-empty array\n if (!roles || roles.length <= 0) {\n throw Error('GetUserInfo: roles must be a non-null array!')\n }\n this.SET_ROLES(roles)\n this.SET_NAME(showname)\n this.SET_AVATAR(avatar)\n this.SET_INTRODUCTION(introduction)\n this.SET_PERMISSIONS(permissions)\n this.SET_DEPARTMENT(department)\n this.SET_LEVEL(level)\n this.SET_DEPTNAME(deptname)\n this.SET_SEX(sex)\n }\n\n @Action\n public async UpdateInfo(data: any) {\n const { showname, sex, avatar } = data\n this.SET_NAME(showname)\n this.SET_SEX(sex)\n this.SET_AVATAR(avatar)\n }\n\n @Action\n public async ChangeRoles(role: string) {\n // Dynamically modify permissions\n const token = role + '-token'\n this.SET_TOKEN(token)\n setToken(token)\n await this.GetUserInfo()\n resetRouter()\n // Generate dynamic accessible routes based on roles\n PermissionModule.GenerateRoutes(this.roles)\n // Add generated routes\n router.addRoutes(PermissionModule.dynamicRoutes)\n // Reset visited views and cached views\n TagsViewModule.delAllViews()\n }\n\n @Action\n public async LogOut() {\n if (this.token === '') {\n throw Error('LogOut: token is undefined!')\n }\n await logout()\n removeToken()\n this.SET_TOKEN('')\n this.SET_ROLES([])\n this.SET_PERMISSIONS([])\n this.SET_DEPARTMENT('')\n }\n\n @Mutation\n private SET_TOKEN(token: string) {\n this.token = token\n }\n\n @Mutation\n private SET_NAME(name: string) {\n this.name = name\n }\n\n @Mutation\n private SET_AVATAR(avatar: string) {\n this.avatar = avatar\n }\n\n @Mutation\n private SET_INTRODUCTION(introduction: string) {\n this.introduction = introduction\n }\n\n @Mutation\n private SET_ROLES(roles: string[]) {\n this.roles = roles\n }\n\n @Mutation\n private SET_DEPARTMENT(department: string) {\n this.department = department\n }\n\n @Mutation\n private SET_DEPTNAME(deptname: string) {\n this.deptname = deptname\n }\n\n @Mutation\n private SET_SEX(sex: string) {\n this.sex = sex\n }\n\n @Mutation\n private SET_LEVEL(level: number) {\n this.level = level\n }\n\n @Mutation\n private SET_PERMISSIONS(permissions: string[]) {\n const results: string[][] = []\n for (const permission of permissions) {\n if (permission === '*') {\n results.push(['*', '*'])\n } else {\n results.push(permission.split(':'))\n }\n }\n this.permissions = results\n }\n}\n\nexport const UserModule = getModule(User)\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuBg\":\"#304156\",\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409eff\"};","import { VuexModule, Module, Mutation, Action, getModule } from 'vuex-module-decorators'\nimport { getSidebarStatus, getSize, setSidebarStatus, setLanguage, setSize } from '@/utils/cookies'\nimport { getLocale } from '@/lang'\nimport store from '@/store'\n\nexport enum DeviceType {\n Mobile,\n Desktop,\n}\n\nexport interface IAppState {\n device: DeviceType\n sidebar: {\n opened: boolean\n withoutAnimation: boolean\n }\n language: string\n size: string\n}\n\n@Module({ dynamic: true, store, name: 'app' })\nclass App extends VuexModule implements IAppState {\n public sidebar = {\n opened: getSidebarStatus() !== 'closed',\n withoutAnimation: false\n }\n\n public device = DeviceType.Desktop\n public language = getLocale()\n public size = getSize() || 'medium'\n\n @Mutation\n private TOGGLE_SIDEBAR(withoutAnimation: boolean) {\n this.sidebar.opened = !this.sidebar.opened\n this.sidebar.withoutAnimation = withoutAnimation\n if (this.sidebar.opened) {\n setSidebarStatus('opened')\n } else {\n setSidebarStatus('closed')\n }\n }\n\n @Mutation\n private CLOSE_SIDEBAR(withoutAnimation: boolean) {\n this.sidebar.opened = false\n this.sidebar.withoutAnimation = withoutAnimation\n setSidebarStatus('closed')\n }\n\n @Mutation\n private TOGGLE_DEVICE(device: DeviceType) {\n this.device = device\n }\n\n @Mutation\n private SET_LANGUAGE(language: string) {\n this.language = language\n setLanguage(this.language)\n }\n\n @Mutation\n private SET_SIZE(size: string) {\n this.size = size\n setSize(this.size)\n }\n\n @Action\n public ToggleSideBar(withoutAnimation: boolean) {\n this.TOGGLE_SIDEBAR(withoutAnimation)\n }\n\n @Action\n public CloseSideBar(withoutAnimation: boolean) {\n this.CLOSE_SIDEBAR(withoutAnimation)\n }\n\n @Action\n public ToggleDevice(device: DeviceType) {\n this.TOGGLE_DEVICE(device)\n }\n\n @Action\n public SetLanguage(language: string) {\n this.SET_LANGUAGE(language)\n }\n\n @Action\n public SetSize(size: string) {\n this.SET_SIZE(size)\n }\n}\n\nexport const AppModule = getModule(App)\n","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=1a173b7f&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=715ce9d0&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"app-wrapper\",class:_vm.classObj},[(_vm.classObj.mobile && _vm.sidebar.opened)?_c('div',{staticClass:\"drawer-bg\",on:{\"click\":_vm.handleClickOutside}}):_vm._e(),_c('sidebar',{staticClass:\"sidebar-container\"}),_c('div',{staticClass:\"main-container\",class:{hasTagsView: _vm.showTagsView}},[_c('div',{class:{'fixed-header': _vm.fixedHeader}},[_c('navbar'),(_vm.showTagsView)?_c('tags-view'):_vm._e()],1),_c('app-main'),(_vm.showSettings)?_c('right-panel',[_c('settings')],1):_vm._e()],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('section',{staticClass:\"app-main\"},[_c('transition',{attrs:{\"name\":\"fade-transform\",\"mode\":\"out-in\"}},[_c('keep-alive',{attrs:{\"include\":_vm.cachedViews}},[_c('router-view',{key:_vm.key})],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator'\nimport { TagsViewModule } from '@/store/modules/tags-view'\n\n@Component({\n name: 'AppMain'\n})\nexport default class extends Vue {\n get cachedViews() {\n return TagsViewModule.cachedViews\n }\n\n get key() {\n return this.$route.path\n }\n}\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./AppMain.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./AppMain.vue?vue&type=template&id=d4c70f86&scoped=true&\"\nimport script from \"./AppMain.vue?vue&type=script&lang=ts&\"\nexport * from \"./AppMain.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./AppMain.vue?vue&type=style&index=0&id=d4c70f86&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d4c70f86\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"navbar\"},[_c('hamburger',{staticClass:\"hamburger-container\",attrs:{\"id\":\"hamburger-container\",\"is-active\":_vm.sidebar.opened},on:{\"toggle-click\":_vm.toggleSideBar}}),_c('breadcrumb',{staticClass:\"breadcrumb-container\",attrs:{\"id\":\"breadcrumb-container\"}}),_c('div',{staticClass:\"right-menu\"},[(_vm.device!=='mobile')?[_c('header-search',{staticClass:\"right-menu-item\"}),_c('error-log',{staticClass:\"errLog-container right-menu-item hover-effect\"}),_c('screenfull',{staticClass:\"right-menu-item hover-effect\"}),_c('el-tooltip',{attrs:{\"content\":_vm.$t('navbar.size'),\"effect\":\"dark\",\"placement\":\"bottom\"}},[_c('size-select',{staticClass:\"right-menu-item hover-effect\"})],1),_c('lang-select',{staticClass:\"right-menu-item hover-effect\"})]:_vm._e(),_c('el-dropdown',{staticClass:\"avatar-container right-menu-item hover-effect\",attrs:{\"trigger\":\"click\"}},[_c('div',{staticClass:\"avatar-wrapper\"},[_c('img',{staticClass:\"user-avatar\",attrs:{\"src\":_vm.avatar+'?imageView2/1/w/80/h/80'}}),_c('i',{staticClass:\"el-icon-caret-bottom\"})]),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},[_c('router-link',{attrs:{\"to\":\"/\"}},[_c('el-dropdown-item',[_vm._v(\" \"+_vm._s(_vm.$t('navbar.dashboard'))+\" \")])],1),_c('router-link',{attrs:{\"to\":\"/profile/\"}},[_c('el-dropdown-item',[_vm._v(\" \"+_vm._s(_vm.$t('navbar.profile'))+\" \")])],1),_c('router-link',{attrs:{\"to\":\"/password\"}},[_c('el-dropdown-item',[_vm._v(\" \"+_vm._s(_vm.$t('navbar.password'))+\" \")])],1),_c('el-dropdown-item',{attrs:{\"divided\":\"\"},nativeOn:{\"click\":function($event){return _vm.logout($event)}}},[_c('span',{staticStyle:{\"display\":\"block\"}},[_vm._v(\" \"+_vm._s(_vm.$t('navbar.logOut'))+\" \")])])],1)],1)],2)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-breadcrumb',{staticClass:\"app-breadcrumb\",attrs:{\"separator\":\"/\"}},[_c('transition-group',{attrs:{\"name\":\"breadcrumb\"}},_vm._l((_vm.breadcrumbs),function(item,index){return _c('el-breadcrumb-item',{key:item.path},[(item.redirect === 'noredirect' || index === _vm.breadcrumbs.length-1)?_c('span',{staticClass:\"no-redirect\"},[_vm._v(_vm._s(_vm.$t('route.' + item.meta.title)))]):_c('a',{on:{\"click\":function($event){$event.preventDefault();return _vm.handleLink(item)}}},[_vm._v(_vm._s(_vm.$t('route.' + item.meta.title)))])])}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { compile } from 'path-to-regexp'\nimport { Component, Vue, Watch } from 'vue-property-decorator'\nimport { RouteRecord, Route } from 'vue-router'\n\n@Component({\n name: 'Breadcrumb'\n})\nexport default class extends Vue {\n private breadcrumbs: RouteRecord[] = []\n\n @Watch('$route')\n private onRouteChange(route: Route) {\n // if you go to the redirect page, do not update the breadcrumbs\n if (route.path.startsWith('/redirect/')) {\n return\n }\n this.getBreadcrumb()\n }\n\n created() {\n this.getBreadcrumb()\n }\n\n private getBreadcrumb() {\n let matched = this.$route.matched.filter((item) => item.meta && item.meta.title)\n const first = matched[0]\n if (!this.isDashboard(first)) {\n matched = [{ path: '/dashboard', meta: { title: 'dashboard' } } as RouteRecord].concat(matched)\n }\n this.breadcrumbs = matched.filter((item) => {\n return item.meta && item.meta.title && item.meta.breadcrumb !== false\n })\n }\n\n private isDashboard(route: RouteRecord) {\n const name = route && route.name\n if (!name) {\n return false\n }\n return name.trim().toLocaleLowerCase() === 'Dashboard'.toLocaleLowerCase()\n }\n\n private pathCompile(path: string) {\n // To solve this problem https://github.com/PanJiaChen/vue-element-admin/issues/561\n const { params } = this.$route\n const toPath = compile(path)\n return toPath(params)\n }\n\n private handleLink(item: any) {\n const { redirect, path } = item\n if (redirect) {\n this.$router.push(redirect).catch(err => {\n console.warn(err)\n })\n return\n }\n this.$router.push(this.pathCompile(path)).catch(err => {\n console.warn(err)\n })\n }\n}\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=48aca8f5&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=48aca8f5&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"48aca8f5\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.errorLogs.length>0)?_c('div',[_c('el-badge',{staticStyle:{\"line-height\":\"25px\",\"margin-top\":\"-5px\"},attrs:{\"is-dot\":true},nativeOn:{\"click\":function($event){_vm.dialogTableVisible=true}}},[_c('el-button',{staticStyle:{\"padding\":\"8px 10px\"},attrs:{\"size\":\"small\",\"type\":\"danger\"}},[_c('svg-icon',{attrs:{\"name\":\"bug\"}})],1)],1),_c('el-dialog',{attrs:{\"visible\":_vm.dialogTableVisible,\"width\":\"80%\",\"append-to-body\":\"\"},on:{\"update:visible\":function($event){_vm.dialogTableVisible=$event}}},[_c('div',{attrs:{\"slot\":\"title\"},slot:\"title\"},[_c('span',{staticStyle:{\"padding-right\":\"10px\"}},[_vm._v(\"Error Log\")]),_c('el-button',{attrs:{\"size\":\"mini\",\"type\":\"primary\",\"icon\":\"el-icon-delete\"},on:{\"click\":_vm.clearAll}},[_vm._v(\" Clear All \")])],1),_c('el-table',{attrs:{\"data\":_vm.errorLogs,\"border\":\"\"}},[_c('el-table-column',{attrs:{\"label\":\"Message\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar row = ref.row;\nreturn [_c('div',[_c('span',{staticClass:\"message-title\"},[_vm._v(\"Msg:\")]),_c('el-tag',{attrs:{\"type\":\"danger\"}},[_vm._v(\" \"+_vm._s(row.err.message)+\" \")])],1),_c('br'),_c('div',[_c('span',{staticClass:\"message-title\",staticStyle:{\"padding-right\":\"10px\"}},[_vm._v(\"Info: \")]),_c('el-tag',{attrs:{\"type\":\"warning\"}},[_vm._v(\" \"+_vm._s(row.vm.$vnode.tag)+\" error in \"+_vm._s(row.info)+\" \")])],1),_c('br'),_c('div',[_c('span',{staticClass:\"message-title\",staticStyle:{\"padding-right\":\"16px\"}},[_vm._v(\"Url: \")]),_c('el-tag',{attrs:{\"type\":\"success\"}},[_vm._v(\" \"+_vm._s(row.url)+\" \")])],1)]}}],null,false,3134886942)}),_c('el-table-column',{attrs:{\"label\":\"Stack\"},scopedSlots:_vm._u([{key:\"default\",fn:function(ref){\nvar row = ref.row;\nreturn [_vm._v(\" \"+_vm._s(row.err.stack)+\" \")]}}],null,false,284746202)})],1)],1)],1):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { VuexModule, Module, Mutation, Action, getModule } from 'vuex-module-decorators'\nimport store from '@/store'\n\ninterface IErrorLog {\n err: Error\n vm: any\n info: string\n url: string\n}\n\nexport interface IErrorLogState {\n logs: IErrorLog[]\n}\n\n@Module({ dynamic: true, store, name: 'errorLog' })\nclass ErrorLog extends VuexModule implements IErrorLogState {\n public logs: IErrorLog[] = []\n\n @Mutation\n private ADD_ERROR_LOG(log: IErrorLog) {\n this.logs.push(log)\n }\n\n @Mutation\n private CLEAR_ERROR_LOG() {\n this.logs.splice(0)\n }\n\n @Action\n public AddErrorLog(log: IErrorLog) {\n this.ADD_ERROR_LOG(log)\n }\n\n @Action\n public ClearErrorLog() {\n this.CLEAR_ERROR_LOG()\n }\n}\n\nexport const ErrorLogModule = getModule(ErrorLog)\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator'\nimport { ErrorLogModule } from '@/store/modules/error-log'\n\n@Component({\n name: 'ErrorLog'\n})\nexport default class extends Vue {\n private dialogTableVisible = false\n\n get errorLogs() {\n return ErrorLogModule.logs\n }\n\n private clearAll() {\n this.dialogTableVisible = false\n ErrorLogModule.ClearErrorLog()\n }\n}\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=72a28363&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=72a28363&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"72a28363\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:[{'is-active': _vm.isActive}],on:{\"click\":_vm.toggleClick}},[_c('svg-icon',{attrs:{\"name\":\"hamburger\",\"width\":\"20\",\"height\":\"20\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue } from 'vue-property-decorator'\n\n@Component({\n name: 'Hamburger'\n})\nexport default class extends Vue {\n @Prop({ default: false }) private isActive!: boolean\n\n private toggleClick() {\n this.$emit('toggle-click')\n }\n}\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=715ce9d0&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=715ce9d0&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"715ce9d0\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"header-search\",class:{'show': _vm.show},attrs:{\"id\":\"header-search\"}},[_c('svg-icon',{staticClass:\"search-icon\",attrs:{\"name\":\"search\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.click($event)}}}),_c('el-select',{ref:\"headerSearchSelect\",staticClass:\"header-search-select\",attrs:{\"remote-method\":_vm.querySearch,\"filterable\":\"\",\"default-first-option\":\"\",\"remote\":\"\",\"placeholder\":\"Search\"},on:{\"change\":_vm.change},model:{value:(_vm.search),callback:function ($$v) {_vm.search=$$v},expression:\"search\"}},_vm._l((_vm.options),function(item){return _c('el-option',{key:item.path,attrs:{\"value\":item,\"label\":item.meta.title.join(' > ')}})}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport path from 'path'\nimport Fuse from 'fuse.js' // A lightweight fuzzy-search module\nimport { Component, Vue, Watch } from 'vue-property-decorator'\nimport { RouteConfig } from 'vue-router'\nimport { AppModule } from '@/store/modules/app'\nimport { PermissionModule } from '@/store/modules/permission'\nimport i18n from '@/lang' // Internationalization\n\n@Component({\n name: 'HeaderSearch'\n})\nexport default class extends Vue {\n private search = ''\n private show = false\n private options: RouteConfig[] = []\n private searchPool: RouteConfig[] = []\n private fuse?: Fuse\n\n get routes() {\n return PermissionModule.routes\n }\n\n get lang() {\n return AppModule.language\n }\n\n @Watch('lang')\n private onLangChange() {\n this.searchPool = this.generateRoutes(this.routes)\n }\n\n @Watch('routes')\n private onRoutesChange() {\n this.searchPool = this.generateRoutes(this.routes)\n }\n\n @Watch('searchPool')\n private onSearchPoolChange(value: RouteConfig[]) {\n this.initFuse(value)\n }\n\n @Watch('show')\n private onShowChange(value: boolean) {\n if (value) {\n document.body.addEventListener('click', this.close)\n } else {\n document.body.removeEventListener('click', this.close)\n }\n }\n\n mounted() {\n this.searchPool = this.generateRoutes(this.routes)\n }\n\n private click() {\n this.show = !this.show\n if (this.show) {\n this.$refs.headerSearchSelect && (this.$refs.headerSearchSelect as HTMLElement).focus()\n }\n }\n\n private close() {\n this.$refs.headerSearchSelect && (this.$refs.headerSearchSelect as HTMLElement).blur()\n this.options = []\n this.show = false\n }\n\n private change(route: RouteConfig) {\n this.$router.push(route.path).catch(err => {\n console.warn(err)\n })\n this.search = ''\n this.options = []\n this.$nextTick(() => {\n this.show = false\n })\n }\n\n private initFuse(list: RouteConfig[]) {\n this.fuse = new Fuse(list, {\n shouldSort: true,\n threshold: 0.4,\n location: 0,\n distance: 100,\n minMatchCharLength: 1,\n keys: [{\n name: 'title',\n weight: 0.7\n }, {\n name: 'path',\n weight: 0.3\n }]\n })\n }\n\n // Filter out the routes that can be displayed in the sidebar\n // And generate the internationalized title\n private generateRoutes(routes: RouteConfig[], basePath = '/', prefixTitle: string[] = []) {\n let res: RouteConfig[] = []\n\n for (const router of routes) {\n // skip hidden router\n if (router.meta && router.meta.hidden) {\n continue\n }\n\n const data: RouteConfig = {\n path: path.resolve(basePath, router.path),\n meta: {\n title: [...prefixTitle]\n }\n }\n\n if (router.meta && router.meta.title) {\n // generate internationalized title\n const i18ntitle = i18n.t(`route.${router.meta.title}`).toString()\n data.meta.title = [...data.meta.title, i18ntitle]\n if (router.redirect !== 'noRedirect') {\n // only push the routes with title\n // special case: need to exclude parent router without redirect\n res.push(data)\n }\n }\n\n // recursive child routes\n if (router.children) {\n const tempRoutes = this.generateRoutes(router.children, data.path, data.meta.title)\n if (tempRoutes.length >= 1) {\n res = [...res, ...tempRoutes]\n }\n }\n }\n return res\n }\n\n private querySearch(query: string) {\n if (query !== '') {\n if (this.fuse) {\n this.options = this.fuse.search(query).map((result) => result.item)\n }\n } else {\n this.options = []\n }\n }\n}\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=ed2ef868&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=ed2ef868&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ed2ef868\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"screenfull\"}},[_c('svg-icon',{attrs:{\"name\":_vm.isFullscreen? 'exit-fullscreen': 'fullscreen'},on:{\"click\":_vm.click}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\nimport screenfull from 'screenfull'\nimport { Component, Vue } from 'vue-property-decorator'\n\nconst sf = screenfull\n\n@Component({\n name: 'Screenfull'\n})\nexport default class extends Vue {\n private isFullscreen = false\n\n mounted() {\n if (sf.isEnabled) {\n sf.on('change', this.change)\n }\n }\n\n beforeDestory() {\n if (sf.isEnabled) {\n sf.off('change', this.change)\n }\n }\n\n private change() {\n if (sf.isEnabled) {\n this.isFullscreen = sf.isFullscreen\n }\n }\n\n private click() {\n if (!sf.isEnabled) {\n this.$message({\n message: 'you browser can not work',\n type: 'warning'\n })\n return false\n }\n sf.toggle()\n }\n}\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=2bed2e26&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-dropdown',{attrs:{\"id\":\"size-select\",\"trigger\":\"click\"},on:{\"command\":_vm.handleSetSize}},[_c('div',[_c('svg-icon',{staticClass:\"size-icon\",attrs:{\"name\":\"size\"}})],1),_c('el-dropdown-menu',{attrs:{\"slot\":\"dropdown\"},slot:\"dropdown\"},_vm._l((_vm.sizeOptions),function(item){return _c('el-dropdown-item',{key:item.value,attrs:{\"disabled\":_vm.size===item.value,\"command\":item.value}},[_vm._v(\" \"+_vm._s(item.label)+\" \")])}),1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator'\nimport { AppModule } from '@/store/modules/app'\nimport { TagsViewModule } from '@/store/modules/tags-view'\n\n@Component({\n name: 'SizeSelect'\n})\nexport default class extends Vue {\n private sizeOptions = [\n { label: 'Default', value: 'default' },\n { label: 'Medium', value: 'medium' },\n { label: 'Small', value: 'small' },\n { label: 'Mini', value: 'mini' }\n ]\n\n get size() {\n return AppModule.size\n }\n\n private handleSetSize(size: string) {\n (this as any).$ELEMENT.size = size\n AppModule.SetSize(size)\n this.refreshView()\n this.$message({\n message: 'Switch Size Success',\n type: 'success'\n })\n }\n\n private refreshView() {\n // In order to make the cached page re-rendered\n TagsViewModule.delAllCachedViews()\n const { fullPath } = this.$route\n this.$nextTick(() => {\n this.$router.replace({\n path: '/redirect' + fullPath\n }).catch(err => {\n console.warn(err)\n })\n })\n }\n}\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=7035045c&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator'\nimport { AppModule } from '@/store/modules/app'\nimport { UserModule } from '@/store/modules/user'\nimport Breadcrumb from '@/components/Breadcrumb/index.vue'\nimport ErrorLog from '@/components/ErrorLog/index.vue'\nimport Hamburger from '@/components/Hamburger/index.vue'\nimport HeaderSearch from '@/components/HeaderSearch/index.vue'\nimport LangSelect from '@/components/LangSelect/index.vue'\nimport Screenfull from '@/components/Screenfull/index.vue'\nimport SizeSelect from '@/components/SizeSelect/index.vue'\n\n@Component({\n name: 'Navbar',\n components: {\n Breadcrumb,\n ErrorLog,\n Hamburger,\n HeaderSearch,\n LangSelect,\n Screenfull,\n SizeSelect\n }\n})\nexport default class extends Vue {\n get sidebar() {\n return AppModule.sidebar\n }\n\n get device() {\n return AppModule.device.toString()\n }\n\n get avatar() {\n return UserModule.avatar\n }\n\n private toggleSideBar() {\n AppModule.ToggleSideBar(false)\n }\n\n private async logout() {\n await UserModule.LogOut()\n this.$router.push(`/login?redirect=${this.$route.fullPath}`).catch(err => {\n console.warn(err)\n })\n }\n}\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=1a173b7f&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=1a173b7f&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1a173b7f\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"drawer-container\"},[_c('div',[_c('h3',{staticClass:\"drawer-title\"},[_vm._v(\" \"+_vm._s(_vm.$t('settings.title'))+\" \")]),_c('div',{staticClass:\"drawer-item\"},[_c('span',[_vm._v(_vm._s(_vm.$t('settings.theme')))]),_c('theme-picker',{staticStyle:{\"float\":\"right\",\"height\":\"26px\",\"margin\":\"-3px 8px 0 0\"},on:{\"change\":_vm.themeChange}})],1),_c('div',{staticClass:\"drawer-item\"},[_c('span',[_vm._v(_vm._s(_vm.$t('settings.showTagsView')))]),_c('el-switch',{staticClass:\"drawer-switch\",model:{value:(_vm.showTagsView),callback:function ($$v) {_vm.showTagsView=$$v},expression:\"showTagsView\"}})],1),_c('div',{staticClass:\"drawer-item\"},[_c('span',[_vm._v(_vm._s(_vm.$t('settings.showSidebarLogo')))]),_c('el-switch',{staticClass:\"drawer-switch\",model:{value:(_vm.showSidebarLogo),callback:function ($$v) {_vm.showSidebarLogo=$$v},expression:\"showSidebarLogo\"}})],1),_c('div',{staticClass:\"drawer-item\"},[_c('span',[_vm._v(_vm._s(_vm.$t('settings.fixedHeader')))]),_c('el-switch',{staticClass:\"drawer-switch\",model:{value:(_vm.fixedHeader),callback:function ($$v) {_vm.fixedHeader=$$v},expression:\"fixedHeader\"}})],1),_c('div',{staticClass:\"drawer-item\"},[_c('span',[_vm._v(_vm._s(_vm.$t('settings.sidebarTextTheme')))]),_c('el-switch',{staticClass:\"drawer-switch\",model:{value:(_vm.sidebarTextTheme),callback:function ($$v) {_vm.sidebarTextTheme=$$v},expression:\"sidebarTextTheme\"}})],1)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-color-picker',{staticClass:\"theme-picker\",attrs:{\"predefine\":['#409EFF', '#1890ff', '#304156','#212121','#11a983', '#13c2c2', '#6959CD', '#f5222d'],\"popper-class\":\"theme-picker-dropdown\"},model:{value:(_vm.theme),callback:function ($$v) {_vm.theme=$$v},expression:\"theme\"}})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Watch } from 'vue-property-decorator'\nimport { SettingsModule } from '@/store/modules/settings'\n\n// eslint-disable-next-line @typescript-eslint/no-var-requires\nconst version = require('element-ui/package.json').version // element-ui version from node_modules\nconst ORIGINAL_THEME = '#409EFF' // default color\n\n@Component({\n name: 'ThemePicker'\n})\nexport default class extends Vue {\n private chalk = '' // The content of theme-chalk css\n private theme = ''\n\n get defaultTheme() {\n return SettingsModule.theme\n }\n\n @Watch('defaultTheme', { immediate: true })\n private onDefaultThemeChange(value: string) {\n this.theme = value\n }\n\n @Watch('theme')\n private async onThemeChange(value: string) {\n if (!value) return\n const oldValue = this.chalk ? this.theme : ORIGINAL_THEME\n const themeCluster = this.getThemeCluster(value.replace('#', ''))\n const originalCluster = this.getThemeCluster(oldValue.replace('#', ''))\n const message = this.$message({\n message: ' Compiling the theme',\n customClass: 'theme-message',\n type: 'success',\n duration: 0,\n iconClass: 'el-icon-loading'\n })\n\n if (!this.chalk) {\n const url = `https://unpkg.com/element-ui@${version}/lib/theme-chalk/index.css`\n await this.getCSSString(url, 'chalk')\n }\n\n const getHandler = (variable: string, id: string) => {\n return () => {\n const originalCluster = this.getThemeCluster(ORIGINAL_THEME.replace('#', ''))\n const newStyle = this.updateStyle((this as any)[variable], originalCluster, themeCluster)\n\n let styleTag = document.getElementById(id)\n if (!styleTag) {\n styleTag = document.createElement('style')\n styleTag.setAttribute('id', id)\n document.head.appendChild(styleTag)\n }\n styleTag.innerText = newStyle\n }\n }\n const chalkHandler = getHandler('chalk', 'chalk-style')\n chalkHandler()\n\n let styles: HTMLElement[] = [].slice.call(document.querySelectorAll('style'))\n styles = styles\n .filter(style => {\n const text = style.innerText\n return new RegExp(oldValue, 'i').test(text) && !/Chalk Variables/.test(text)\n })\n styles.forEach(style => {\n const { innerText } = style\n if (typeof innerText !== 'string') return\n style.innerText = this.updateStyle(innerText, originalCluster, themeCluster)\n })\n\n this.$emit('change', value)\n message.close()\n }\n\n private updateStyle(style: string, oldCluster: string[], newCluster: string[]) {\n let newStyle = style\n oldCluster.forEach((color, index) => {\n newStyle = newStyle.replace(new RegExp(color, 'ig'), newCluster[index])\n })\n return newStyle\n }\n\n private getCSSString(url: string, variable: string) {\n return new Promise(resolve => {\n const xhr = new XMLHttpRequest()\n xhr.onreadystatechange = () => {\n if (xhr.readyState === 4 && xhr.status === 200) {\n (this as any)[variable] = xhr.responseText.replace(/@font-face{[^}]+}/, '')\n resolve()\n }\n }\n xhr.open('GET', url)\n xhr.send()\n })\n }\n\n private getThemeCluster(theme: string) {\n const tintColor = (color: string, tint: number) => {\n let red = parseInt(color.slice(0, 2), 16)\n let green = parseInt(color.slice(2, 4), 16)\n let blue = parseInt(color.slice(4, 6), 16)\n if (tint === 0) { // when primary color is in its rgb space\n return [red, green, blue].join(',')\n } else {\n red += Math.round(tint * (255 - red))\n green += Math.round(tint * (255 - green))\n blue += Math.round(tint * (255 - blue))\n return `#${red.toString(16)}${green.toString(16)}${blue.toString(16)}`\n }\n }\n\n const shadeColor = (color: string, shade: number) => {\n let red = parseInt(color.slice(0, 2), 16)\n let green = parseInt(color.slice(2, 4), 16)\n let blue = parseInt(color.slice(4, 6), 16)\n red = Math.round((1 - shade) * red)\n green = Math.round((1 - shade) * green)\n blue = Math.round((1 - shade) * blue)\n return `#${red.toString(16)}${green.toString(16)}${blue.toString(16)}`\n }\n\n const clusters = [theme]\n for (let i = 0; i <= 9; i++) {\n clusters.push(tintColor(theme, Number((i / 10).toFixed(2))))\n }\n clusters.push(shadeColor(theme, 0.1))\n return clusters\n }\n}\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=70f006ec&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator'\nimport { SettingsModule } from '@/store/modules/settings'\nimport ThemePicker from '@/components/ThemePicker/index.vue'\n\n@Component({\n name: 'Settings',\n components: {\n ThemePicker\n }\n})\nexport default class extends Vue {\n get fixedHeader() {\n return SettingsModule.fixedHeader\n }\n\n set fixedHeader(value) {\n SettingsModule.ChangeSetting({ key: 'fixedHeader', value })\n }\n\n get showTagsView() {\n return SettingsModule.showTagsView\n }\n\n set showTagsView(value) {\n SettingsModule.ChangeSetting({ key: 'showTagsView', value })\n }\n\n get showSidebarLogo() {\n return SettingsModule.showSidebarLogo\n }\n\n set showSidebarLogo(value) {\n SettingsModule.ChangeSetting({ key: 'showSidebarLogo', value })\n }\n\n get sidebarTextTheme() {\n return SettingsModule.sidebarTextTheme\n }\n\n set sidebarTextTheme(value) {\n SettingsModule.ChangeSetting({ key: 'sidebarTextTheme', value })\n }\n\n private themeChange(value: string) {\n SettingsModule.ChangeSetting({ key: 'theme', value })\n }\n}\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=f76a8f60&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=f76a8f60&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f76a8f60\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{class:{'has-logo': _vm.showLogo}},[(_vm.showLogo)?_c('sidebar-logo',{attrs:{\"collapse\":_vm.isCollapse}}):_vm._e(),_c('el-scrollbar',{attrs:{\"wrap-class\":\"scrollbar-wrapper\"}},[_c('el-menu',{attrs:{\"default-active\":_vm.activeMenu,\"collapse\":_vm.isCollapse,\"background-color\":_vm.variables.menuBg,\"text-color\":_vm.variables.menuText,\"active-text-color\":_vm.menuActiveTextColor,\"unique-opened\":false,\"collapse-transition\":false,\"mode\":\"vertical\"}},_vm._l((_vm.routes),function(route){return _c('sidebar-item',{key:route.path,attrs:{\"item\":route,\"base-path\":route.path,\"is-collapse\":_vm.isCollapse}})}),1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (!_vm.item.meta || !_vm.item.meta.hidden)?_c('div',{class:[_vm.isCollapse ? 'simple-mode' : 'full-mode', {'first-level': _vm.isFirstLevel}]},[(!_vm.alwaysShowRootMenu && _vm.theOnlyOneChild && !_vm.theOnlyOneChild.children)?[(_vm.theOnlyOneChild.meta)?_c('sidebar-item-link',{attrs:{\"to\":_vm.resolvePath(_vm.theOnlyOneChild.path)}},[_c('el-menu-item',{class:{'submenu-title-noDropdown': _vm.isFirstLevel},attrs:{\"index\":_vm.resolvePath(_vm.theOnlyOneChild.path)}},[(_vm.theOnlyOneChild.meta.icon)?_c('svg-icon',{attrs:{\"name\":_vm.theOnlyOneChild.meta.icon}}):_vm._e(),(_vm.item.meta && _vm.item.meta.elicon)?_c('i',{class:_vm.item.meta.elicon}):_vm._e(),(_vm.theOnlyOneChild.meta.title)?_c('span',{attrs:{\"slot\":\"title\"},slot:\"title\"},[_vm._v(_vm._s(_vm.$t('route.' + _vm.theOnlyOneChild.meta.title)))]):_vm._e()],1)],1):_vm._e()]:_c('el-submenu',{attrs:{\"index\":_vm.resolvePath(_vm.item.path),\"popper-append-to-body\":\"\"}},[_c('template',{slot:\"title\"},[(_vm.item.meta && _vm.item.meta.icon)?_c('svg-icon',{attrs:{\"name\":_vm.item.meta.icon}}):_vm._e(),(_vm.item.meta && _vm.item.meta.elicon)?_c('i',{class:_vm.item.meta.elicon}):_vm._e(),(_vm.item.meta && _vm.item.meta.title)?_c('span',{attrs:{\"slot\":\"title\"},slot:\"title\"},[_vm._v(_vm._s(_vm.$t('route.' + _vm.item.meta.title)))]):_vm._e()],1),(_vm.item.children)?_vm._l((_vm.item.children),function(child){return _c('sidebar-item',{key:child.path,staticClass:\"nest-menu\",attrs:{\"item\":child,\"is-collapse\":_vm.isCollapse,\"is-first-level\":false,\"base-path\":_vm.resolvePath(child.path)}})}):_vm._e()],2)],2):_vm._e()}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const isValidUsername = (str: string) => ['admin', 'editor'].indexOf(str.trim()) >= 0\n\nexport const isExternal = (path: string) => /^(https?:|mailto:|tel:)/.test(path)\n\nexport const isArray = (arg: any) => {\n if (typeof Array.isArray === 'undefined') {\n return Object.prototype.toString.call(arg) === '[object Array]'\n }\n return Array.isArray(arg)\n}\n\nexport const isValidURL = (url: string) => {\n const reg = /^(https?|ftp):\\/\\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+\\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\\/($|[a-zA-Z0-9.,?'\\\\+&%$#=~_-]+))*$/\n return reg.test(url)\n}\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return (_vm.isExternal(_vm.to))?_c('a',{attrs:{\"href\":_vm.to,\"target\":\"_blank\",\"rel\":\"noopener\"}},[_vm._t(\"default\")],2):_c('router-link',{attrs:{\"to\":_vm.to}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue } from 'vue-property-decorator'\nimport { isExternal } from '@/utils/validate'\n\n@Component({\n name: 'SidebarItemLink'\n})\nexport default class extends Vue {\n @Prop({ required: true }) private to!: string\n\n private isExternal = isExternal\n}\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItemLink.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItemLink.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SidebarItemLink.vue?vue&type=template&id=0d65696a&\"\nimport script from \"./SidebarItemLink.vue?vue&type=script&lang=ts&\"\nexport * from \"./SidebarItemLink.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport path from 'path'\nimport { Component, Prop, Vue } from 'vue-property-decorator'\nimport { RouteConfig } from 'vue-router'\nimport { isExternal } from '@/utils/validate'\nimport SidebarItemLink from './SidebarItemLink.vue'\n\n@Component({\n // Set 'name' here to prevent uglifyjs from causing recursive component not work\n // See https://medium.com/haiiro-io/element-component-name-with-vue-class-component-f3b435656561 for detail\n name: 'SidebarItem',\n components: {\n SidebarItemLink\n }\n})\nexport default class extends Vue {\n @Prop({ required: true }) private item!: RouteConfig\n @Prop({ default: false }) private isCollapse!: boolean\n @Prop({ default: true }) private isFirstLevel!: boolean\n @Prop({ default: '' }) private basePath!: string\n\n get alwaysShowRootMenu() {\n if (this.item.meta && this.item.meta.alwaysShow) {\n return true\n }\n return false\n }\n\n get showingChildNumber() {\n if (this.item.children) {\n const showingChildren = this.item.children.filter((item) => {\n if (item.meta && item.meta.hidden) {\n return false\n } else {\n return true\n }\n })\n return showingChildren.length\n }\n return 0\n }\n\n get theOnlyOneChild() {\n if (this.showingChildNumber > 1) {\n return null\n }\n if (this.item.children) {\n for (const child of this.item.children) {\n if (!child.meta || !child.meta.hidden) {\n return child\n }\n }\n }\n // If there is no children, return itself with path removed,\n // because this.basePath already conatins item's path information\n return { ...this.item, path: '' }\n }\n\n private resolvePath(routePath: string) {\n if (isExternal(routePath)) {\n return routePath\n }\n if (isExternal(this.basePath)) {\n return this.basePath\n }\n return path.resolve(this.basePath, routePath)\n }\n}\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItem.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItem.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SidebarItem.vue?vue&type=template&id=35bc604c&scoped=true&\"\nimport script from \"./SidebarItem.vue?vue&type=script&lang=ts&\"\nexport * from \"./SidebarItem.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SidebarItem.vue?vue&type=style&index=0&lang=scss&\"\nimport style1 from \"./SidebarItem.vue?vue&type=style&index=1&id=35bc604c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"35bc604c\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"sidebar-logo-container\",class:{'collapse': _vm.collapse}},[_c('transition',{attrs:{\"name\":\"sidebarLogoFade\"}},[(_vm.collapse)?_c('router-link',{key:\"collapse\",staticClass:\"sidebar-logo-link\",attrs:{\"to\":\"/\"}},[_c('img',{staticClass:\"sidebar-logo\",attrs:{\"src\":\"favicon.ico\"}})]):_c('router-link',{key:\"expand\",staticClass:\"sidebar-logo-link\",attrs:{\"to\":\"/\"}},[_c('img',{staticClass:\"sidebar-logo\",attrs:{\"src\":\"favicon.ico\"}}),_c('h1',{staticClass:\"sidebar-title\"},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")])])],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue } from 'vue-property-decorator'\nimport settings from '@/settings'\n\n@Component({\n name: 'SidebarLogo'\n})\nexport default class extends Vue {\n @Prop({ required: true }) private collapse!: boolean\n\n private title = settings.title\n}\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarLogo.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarLogo.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./SidebarLogo.vue?vue&type=template&id=7847d0d3&scoped=true&\"\nimport script from \"./SidebarLogo.vue?vue&type=script&lang=ts&\"\nexport * from \"./SidebarLogo.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./SidebarLogo.vue?vue&type=style&index=0&id=7847d0d3&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7847d0d3\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator'\nimport { AppModule } from '@/store/modules/app'\nimport { PermissionModule } from '@/store/modules/permission'\nimport { SettingsModule } from '@/store/modules/settings'\nimport SidebarItem from './SidebarItem.vue'\nimport SidebarLogo from './SidebarLogo.vue'\nimport variables from '@/styles/_variables.scss'\n\n@Component({\n name: 'SideBar',\n components: {\n SidebarItem,\n SidebarLogo\n }\n})\nexport default class extends Vue {\n get sidebar() {\n return AppModule.sidebar\n }\n\n get routes() {\n return PermissionModule.routes\n }\n\n get showLogo() {\n return SettingsModule.showSidebarLogo\n }\n\n get menuActiveTextColor() {\n if (SettingsModule.sidebarTextTheme) {\n return SettingsModule.theme\n } else {\n return variables.menuActiveText\n }\n }\n\n get variables() {\n return variables\n }\n\n get activeMenu() {\n const route = this.$route\n const { meta, path } = route\n // if set path, the sidebar will highlight the path you set\n if (meta.activeMenu) {\n return meta.activeMenu\n }\n return path\n }\n\n get isCollapse() {\n return !this.sidebar.opened\n }\n}\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=061fdbbc&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&lang=scss&\"\nimport style1 from \"./index.vue?vue&type=style&index=1&id=061fdbbc&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"061fdbbc\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"tags-view-container\",attrs:{\"id\":\"tags-view-container\"}},[_c('scroll-pane',{ref:\"scrollPane\",staticClass:\"tags-view-wrapper\",on:{\"scroll\":_vm.handleScroll}},_vm._l((_vm.visitedViews),function(tag){return _c('router-link',{key:tag.path,ref:\"tag\",refInFor:true,staticClass:\"tags-view-item\",class:_vm.isActive(tag) ? 'active' : '',attrs:{\"to\":{path: tag.path, query: tag.query, fullPath: tag.fullPath},\"tag\":\"span\"},nativeOn:{\"mouseup\":function($event){if('button' in $event && $event.button !== 1){ return null; }!_vm.isAffix(tag)?_vm.closeSelectedTag(tag):''},\"contextmenu\":function($event){$event.preventDefault();return _vm.openMenu(tag, $event)}}},[_vm._v(\" \"+_vm._s(_vm.$t('route.' + tag.meta.title))+\" \"),(!_vm.isAffix(tag))?_c('span',{staticClass:\"el-icon-close\",on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.closeSelectedTag(tag)}}}):_vm._e()])}),1),_c('ul',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.visible),expression:\"visible\"}],staticClass:\"contextmenu\",style:({left: _vm.left+'px', top: _vm.top+'px'})},[_c('li',{on:{\"click\":function($event){return _vm.refreshSelectedTag(_vm.selectedTag)}}},[_vm._v(\" \"+_vm._s(_vm.$t('tagsView.refresh'))+\" \")]),(!_vm.isAffix(_vm.selectedTag))?_c('li',{on:{\"click\":function($event){return _vm.closeSelectedTag(_vm.selectedTag)}}},[_vm._v(\" \"+_vm._s(_vm.$t('tagsView.close'))+\" \")]):_vm._e(),_c('li',{on:{\"click\":_vm.closeOthersTags}},[_vm._v(\" \"+_vm._s(_vm.$t('tagsView.closeOthers'))+\" \")]),_c('li',{on:{\"click\":function($event){return _vm.closeAllTags(_vm.selectedTag)}}},[_vm._v(\" \"+_vm._s(_vm.$t('tagsView.closeAll'))+\" \")])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('el-scrollbar',{ref:\"scrollContainer\",staticClass:\"scroll-container\",attrs:{\"vertical\":false},nativeOn:{\"wheel\":function($event){$event.preventDefault();return _vm.handleScroll($event)}}},[_vm._t(\"default\")],2)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator'\n\nconst tagSpacing = 4\n\n@Component({\n name: 'ScrollPane'\n})\nexport default class extends Vue {\n get scrollWrapper() {\n return (this.$refs.scrollContainer as Vue).$refs.wrap as HTMLElement\n }\n\n mounted() {\n this.scrollWrapper.addEventListener('scroll', this.emitScroll, true)\n }\n\n beforeDestroy() {\n this.scrollWrapper.removeEventListener('scroll', this.emitScroll)\n }\n\n private handleScroll(e: WheelEvent) {\n const eventDelta = (e as any).wheelDelta || -e.deltaY * 40\n const scrollWrapper = this.scrollWrapper\n scrollWrapper.scrollLeft = scrollWrapper.scrollLeft + eventDelta / 4\n }\n\n private emitScroll() {\n this.$emit('scroll')\n }\n\n public moveToTarget(currentTag: HTMLElement) {\n const container = (this.$refs.scrollContainer as Vue).$el as HTMLElement\n const containerWidth = container.offsetWidth\n const scrollWrapper = this.scrollWrapper\n const tagList = this.$parent.$refs.tag as any[]\n\n let firstTag = null\n let lastTag = null\n\n // find first tag and last tag\n if (tagList.length > 0) {\n firstTag = tagList[0]\n lastTag = tagList[tagList.length - 1]\n }\n\n if (firstTag === currentTag) {\n scrollWrapper.scrollLeft = 0\n } else if (lastTag === currentTag) {\n scrollWrapper.scrollLeft = scrollWrapper.scrollWidth - containerWidth\n } else {\n // find preTag and nextTag\n const currentIndex = tagList.findIndex(item => item === currentTag)\n const prevTag = tagList[currentIndex - 1]\n const nextTag = tagList[currentIndex + 1]\n // the tag's offsetLeft after of nextTag\n const afterNextTagOffsetLeft = nextTag.$el.offsetLeft + nextTag.$el.offsetWidth + tagSpacing\n // the tag's offsetLeft before of prevTag\n const beforePrevTagOffsetLeft = prevTag.$el.offsetLeft - tagSpacing\n\n if (afterNextTagOffsetLeft > scrollWrapper.scrollLeft + containerWidth) {\n scrollWrapper.scrollLeft = afterNextTagOffsetLeft - containerWidth\n } else if (beforePrevTagOffsetLeft < scrollWrapper.scrollLeft) {\n scrollWrapper.scrollLeft = beforePrevTagOffsetLeft\n }\n }\n }\n}\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ScrollPane.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./ScrollPane.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./ScrollPane.vue?vue&type=template&id=4712a34c&scoped=true&\"\nimport script from \"./ScrollPane.vue?vue&type=script&lang=ts&\"\nexport * from \"./ScrollPane.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./ScrollPane.vue?vue&type=style&index=0&lang=scss&\"\nimport style1 from \"./ScrollPane.vue?vue&type=style&index=1&id=4712a34c&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4712a34c\",\n null\n \n)\n\nexport default component.exports","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport path from 'path'\nimport { Component, Vue, Watch } from 'vue-property-decorator'\nimport { RouteConfig } from 'vue-router'\nimport { PermissionModule } from '@/store/modules/permission'\nimport { TagsViewModule, ITagView } from '@/store/modules/tags-view'\nimport ScrollPane from './ScrollPane.vue'\n\n@Component({\n name: 'TagsView',\n components: {\n ScrollPane\n }\n})\nexport default class extends Vue {\n private visible = false\n private top = 0\n private left = 0\n private selectedTag: ITagView = {}\n private affixTags: ITagView[] = []\n\n get visitedViews() {\n return TagsViewModule.visitedViews\n }\n\n get routes() {\n return PermissionModule.routes\n }\n\n @Watch('$route')\n private onRouteChange() {\n this.addTags()\n this.moveToCurrentTag()\n }\n\n @Watch('visible')\n private onVisibleChange(value: boolean) {\n if (value) {\n document.body.addEventListener('click', this.closeMenu)\n } else {\n document.body.removeEventListener('click', this.closeMenu)\n }\n }\n\n mounted() {\n this.initTags()\n this.addTags()\n }\n\n private isActive(route: ITagView) {\n return route.path === this.$route.path\n }\n\n private isAffix(tag: ITagView) {\n return tag.meta && tag.meta.affix\n }\n\n private filterAffixTags(routes: RouteConfig[], basePath = '/') {\n let tags: ITagView[] = []\n routes.forEach(route => {\n if (route.meta && route.meta.affix) {\n const tagPath = path.resolve(basePath, route.path)\n tags.push({\n fullPath: tagPath,\n path: tagPath,\n name: route.name,\n meta: { ...route.meta }\n })\n }\n if (route.children) {\n const childTags = this.filterAffixTags(route.children, route.path)\n if (childTags.length >= 1) {\n tags = [...tags, ...childTags]\n }\n }\n })\n return tags\n }\n\n private initTags() {\n this.affixTags = this.filterAffixTags(this.routes)\n for (const tag of this.affixTags) {\n // Must have tag name\n if (tag.name) {\n TagsViewModule.addVisitedView(tag)\n }\n }\n }\n\n private addTags() {\n const { name } = this.$route\n if (name) {\n TagsViewModule.addView(this.$route)\n }\n return false\n }\n\n private moveToCurrentTag() {\n const tags = this.$refs.tag as any[] // TODO: better typescript support for router-link\n this.$nextTick(() => {\n for (const tag of tags) {\n if ((tag.to as ITagView).path === this.$route.path) {\n (this.$refs.scrollPane as ScrollPane).moveToTarget(tag as any)\n // When query is different then update\n if ((tag.to as ITagView).fullPath !== this.$route.fullPath) {\n TagsViewModule.updateVisitedView(this.$route)\n }\n break\n }\n }\n })\n }\n\n private refreshSelectedTag(view: ITagView) {\n TagsViewModule.delCachedView(view)\n const { fullPath } = view\n this.$nextTick(() => {\n this.$router.replace({\n path: '/redirect' + fullPath\n }).catch(err => {\n console.warn(err)\n })\n })\n }\n\n private closeSelectedTag(view: ITagView) {\n TagsViewModule.delView(view)\n if (this.isActive(view)) {\n this.toLastView(TagsViewModule.visitedViews, view)\n }\n }\n\n private closeOthersTags() {\n if (this.selectedTag.fullPath !== this.$route.path && this.selectedTag.fullPath !== undefined) {\n this.$router.push(this.selectedTag.fullPath).catch(err => {\n console.warn(err)\n })\n }\n TagsViewModule.delOthersViews(this.selectedTag)\n this.moveToCurrentTag()\n }\n\n private closeAllTags(view: ITagView) {\n TagsViewModule.delAllViews()\n if (this.affixTags.some(tag => tag.path === this.$route.path)) {\n return\n }\n this.toLastView(TagsViewModule.visitedViews, view)\n }\n\n private toLastView(visitedViews: ITagView[], view: ITagView) {\n const latestView = visitedViews.slice(-1)[0]\n if (latestView !== undefined && latestView.fullPath !== undefined) {\n this.$router.push(latestView.fullPath).catch(err => {\n console.warn(err)\n })\n } else {\n // Default redirect to the home page if there is no tags-view, adjust it if you want\n if (view.name === 'Dashboard') {\n // to reload home page\n this.$router.replace({ path: '/redirect' + view.fullPath }).catch(err => {\n console.warn(err)\n })\n } else {\n this.$router.push('/').catch(err => {\n console.warn(err)\n })\n }\n }\n }\n\n private openMenu(tag: ITagView, e: MouseEvent) {\n const menuMinWidth = 105\n const offsetLeft = this.$el.getBoundingClientRect().left // container margin left\n const offsetWidth = (this.$el as HTMLElement).offsetWidth // container width\n const maxLeft = offsetWidth - menuMinWidth // left boundary\n const left = e.clientX - offsetLeft + 15 // 15: margin right\n if (left > maxLeft) {\n this.left = maxLeft\n } else {\n this.left = left\n }\n this.top = e.clientY\n this.visible = true\n this.selectedTag = tag\n }\n\n private closeMenu() {\n this.visible = false\n }\n\n private handleScroll() {\n this.closeMenu()\n }\n}\n","import mod from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??ref--13-3!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=31c3d88a&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&lang=scss&\"\nimport style1 from \"./index.vue?vue&type=style&index=1&id=31c3d88a&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"31c3d88a\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{ref:\"rightPanel\",staticClass:\"rightPanel-container\",class:{show: _vm.show}},[_c('div',{staticClass:\"rightPanel-background\"}),_c('div',{staticClass:\"rightPanel\"},[_c('div',{staticClass:\"handle-button\",style:({'top': _vm.buttonTop+'px','background-color': _vm.theme}),on:{\"click\":function($event){_vm.show=!_vm.show}}},[_c('i',{class:_vm.show?'el-icon-close':'el-icon-setting'})]),_c('div',{staticClass:\"rightPanel-items\"},[_vm._t(\"default\")],2)])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator'\nimport { addClass, removeClass } from '@/utils'\nimport { SettingsModule } from '@/store/modules/settings'\n\n@Component({\n name: 'RightPanel'\n})\nexport default class extends Vue {\n @Prop({ default: false }) private clickNotClose!: boolean\n @Prop({ default: 250 }) private buttonTop!: number\n\n private show = false\n\n get theme() {\n return SettingsModule.theme\n }\n\n @Watch('show')\n private onShowChange(value: boolean) {\n if (value && !this.clickNotClose) {\n this.addEventClick()\n }\n if (value) {\n addClass(document.body, 'showRightPanel')\n } else {\n removeClass(document.body, 'showRightPanel')\n }\n }\n\n mounted() {\n this.insertToBody()\n }\n\n beforeDestroy() {\n const elx = this.$refs.rightPanel as Element\n elx.remove()\n }\n\n private addEventClick() {\n window.addEventListener('click', this.closeSidebar)\n }\n\n private closeSidebar(ev: MouseEvent) {\n const parent = (ev.target as HTMLElement).closest('.rightPanel')\n if (!parent) {\n this.show = false\n window.removeEventListener('click', this.closeSidebar)\n }\n }\n\n private insertToBody() {\n const elx = this.$refs.rightPanel as Element\n const body = document.querySelector('body')\n if (body) {\n body.insertBefore(elx, body.firstChild)\n }\n }\n}\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=3c531330&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&lang=scss&\"\nimport style1 from \"./index.vue?vue&type=style&index=1&id=3c531330&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3c531330\",\n null\n \n)\n\nexport default component.exports","import { Component, Vue, Watch } from 'vue-property-decorator'\nimport { AppModule, DeviceType } from '@/store/modules/app'\n\nconst WIDTH = 992 // refer to Bootstrap's responsive design\n\n@Component({\n name: 'ResizeMixin'\n})\nexport default class extends Vue {\n get device() {\n return AppModule.device\n }\n\n get sidebar() {\n return AppModule.sidebar\n }\n\n @Watch('$route')\n private onRouteChange() {\n if (this.device === DeviceType.Mobile && this.sidebar.opened) {\n AppModule.CloseSideBar(false)\n }\n }\n\n beforeMount() {\n window.addEventListener('resize', this.resizeHandler)\n }\n\n mounted() {\n const isMobile = this.isMobile()\n if (isMobile) {\n AppModule.ToggleDevice(DeviceType.Mobile)\n AppModule.CloseSideBar(true)\n }\n }\n\n beforeDestroy() {\n window.removeEventListener('resize', this.resizeHandler)\n }\n\n private isMobile() {\n const rect = document.body.getBoundingClientRect()\n return rect.width - 1 < WIDTH\n }\n\n private resizeHandler() {\n if (!document.hidden) {\n const isMobile = this.isMobile()\n AppModule.ToggleDevice(isMobile ? DeviceType.Mobile : DeviceType.Desktop)\n if (isMobile) {\n AppModule.CloseSideBar(true)\n }\n }\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component } from 'vue-property-decorator'\nimport { mixins } from 'vue-class-component'\nimport { AppModule, DeviceType } from '@/store/modules/app'\nimport { SettingsModule } from '@/store/modules/settings'\nimport { AppMain, Navbar, Settings, Sidebar, TagsView } from './components'\nimport RightPanel from '@/components/RightPanel/index.vue'\nimport ResizeMixin from './mixin/resize'\n\n@Component({\n name: 'Layout',\n components: {\n AppMain,\n Navbar,\n RightPanel,\n Settings,\n Sidebar,\n TagsView\n }\n})\nexport default class extends mixins(ResizeMixin) {\n get classObj() {\n return {\n hideSidebar: !this.sidebar.opened,\n openSidebar: this.sidebar.opened,\n withoutAnimation: this.sidebar.withoutAnimation,\n mobile: this.device === DeviceType.Mobile\n }\n }\n\n get showSettings() {\n return SettingsModule.showSettings\n }\n\n get showTagsView() {\n return SettingsModule.showTagsView\n }\n\n get fixedHeader() {\n return SettingsModule.fixedHeader\n }\n\n private handleClickOutside() {\n AppModule.CloseSideBar(false)\n }\n}\n","import mod from \"-!../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/ts-loader/index.js??ref--13-3!../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=49d3a434&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=49d3a434&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"49d3a434\",\n null\n \n)\n\nexport default component.exports","import { RouteConfig } from 'vue-router'\nimport Layout from '@/layout/index.vue'\n\nconst systemRoutes: RouteConfig = {\n path: '/system',\n component: Layout,\n redirect: '/system/list',\n meta: {\n title: 'system',\n icon: 'component',\n permissions: ['shopman:*', 'permission:*', 'admin:*', 'role:*'],\n alwaysShow: true\n },\n children: [\n {\n path: 'permission',\n component: () => import('@/views/system/permission.vue'),\n name: 'Permission',\n meta: {\n title: 'permission',\n permissions: ['permission:read'],\n icon: 'permission'\n }\n },\n {\n path: 'role',\n component: () => import('@/views/system/role.vue'),\n name: 'RolePermission',\n meta: {\n title: 'rolePermission',\n permissions: ['role:read'],\n icon: 'role'\n }\n },\n {\n path: 'admin',\n component: () => import('@/views/system/admin.vue'),\n name: 'AdminPermission',\n meta: {\n title: 'adminuser',\n permissions: ['admin:read'],\n icon: 'admin'\n }\n },\n {\n path: 'list',\n component: () => import('@/views/shop/list.vue'),\n name: 'ShopList',\n meta: {\n title: 'shop_list',\n permissions: ['shopman:read'],\n icon: 'shop_list'\n }\n },\n {\n path: 'create',\n component: () => import('@/views/shop/edit.vue'),\n name: 'CreateShop',\n meta: {\n title: 'create_shop',\n icon: 'edit',\n hidden: true,\n permissions: ['shopman:edit']\n }\n },\n {\n path: 'edit/:id',\n component: () => import('@/views/shop/edit.vue'),\n name: 'ShopEditor',\n meta: {\n title: 'shop_edit',\n permissions: ['shopman:edit'],\n elicon: 'el-icon-arrow-right',\n hidden: true\n }\n },\n {\n path: 'i18n',\n component: () => import(/* webpackChunkName: \"i18n-demo\" */ '@/views/i18n-demo/index.vue'),\n name: 'I18n',\n meta: {\n title: 'i18n',\n icon: 'language',\n permissions: ['show:language']\n }\n },\n {\n path: 'theme',\n component: () => import(/* webpackChunkName: \"theme\" */ '@/views/theme/index.vue'),\n name: 'Theme',\n meta: {\n title: 'theme',\n icon: 'theme',\n permissions: ['show:theme']\n }\n }\n ]\n}\n\nexport default systemRoutes\n","import { RouteConfig } from 'vue-router'\nimport Layout from '@/layout/index.vue'\n\nconst marketingRoutes: RouteConfig = {\n path: '/marketing',\n component: Layout,\n meta: {\n title: 'marketing',\n icon: 'sell',\n alwaysShow: true,\n permissions: ['coupon:*']\n },\n children: [\n {\n path: 'coupon',\n component: () => import('@/views/marketing/coupon.vue'),\n name: 'CouponSetting',\n meta: {\n title: 'marketing_coupon',\n permissions: ['coupon:read'],\n icon: 'coupon'\n }\n },\n {\n path: 'edit_coupon',\n component: () => import('@/views/marketing/coupon_edit.vue'),\n name: 'CouponDetail',\n meta: {\n title: 'marketing_coupon_info',\n permissions: ['coupon:edit'],\n icon: 'coupon',\n hidden: true\n }\n },\n {\n path: 'edit_coupon/:id',\n component: () => import('@/views/marketing/coupon_edit.vue'),\n name: 'CouponDetail',\n meta: {\n title: 'marketing_coupon_info',\n permissions: ['coupon:edit'],\n icon: 'coupon',\n hidden: true\n }\n }\n // {\n // path: 'promo',\n // component: () => import('@/views/marketing/promo.vue'),\n // name: 'PromoSetting',\n // meta: {\n // title: 'marketing_promo',\n // permissions: ['promo:read'],\n // icon: 'promo'\n // }\n // },\n // {\n // path: 'points',\n // component: () => import('@/views/marketing/points.vue'),\n // name: 'PointsSetting',\n // meta: {\n // title: 'marketing_points',\n // permissions: ['points:read'],\n // icon: 'points'\n // }\n // }\n ]\n}\n\nexport default marketingRoutes\n","import { RouteConfig } from 'vue-router'\nimport Layout from '@/layout/index.vue'\n\nconst questionRoutes: RouteConfig = {\n path: '/question',\n component: Layout,\n meta: {\n title: 'question',\n icon: 'question_list',\n permissions: ['question:*', 'shop:tiku_setting'],\n alwaysShow: true\n },\n children: [\n {\n path: 'create',\n component: () => import('@/views/question/editor.vue'),\n name: 'CreateQuestion',\n meta: {\n title: 'createQuestion',\n permissions: ['question:edit'],\n icon: 'edit',\n hidden: true\n }\n },\n {\n path: 'edit/:id',\n component: () => import('@/views/question/editor.vue'),\n name: 'QuestionEditor',\n meta: {\n title: 'question_prepare',\n permissions: ['question:edit'],\n elicon: 'el-icon-arrow-right',\n hidden: true\n }\n },\n {\n path: 'list',\n component: () => import('@/views/question/list.vue'),\n name: 'QuestionList',\n meta: {\n title: 'question_list',\n permissions: ['question:read'],\n icon: 'list'\n }\n },\n {\n path: 'setting',\n component: () => import('@/views/question/setting.vue'),\n name: 'QuestionSetting',\n meta: {\n title: 'question_setting',\n permissions: ['shop:tiku_setting'],\n icon: 'excel'\n }\n },\n\n {\n path: 'shoppuzzles',\n component: () => import('@/views/question/shop_puzzles.vue'),\n name: 'ShopPuzzles',\n meta: {\n title: 'shop_puzzles',\n permissions: ['shoppuzzle:read'],\n icon: 'form'\n }\n },\n {\n path: 'newshoppuzzle/:shop',\n component: () => import('@/views/question/shop_puzzle_editor.vue'),\n name: 'CreatePuzzle',\n meta: {\n title: 'createQuestion',\n permissions: ['shoppuzzle:edit'],\n icon: 'edit',\n hidden: true\n }\n },\n {\n path: 'shoppuzzle/:shop/:id',\n component: () => import('@/views/question/shop_puzzle_editor.vue'),\n name: 'PuzzleEditor',\n meta: {\n title: 'question_prepare',\n permissions: ['shoppuzzle:edit'],\n elicon: 'el-icon-arrow-right',\n hidden: true\n }\n }\n ]\n}\n\nexport default questionRoutes\n","import { RouteConfig } from 'vue-router'\nimport Layout from '@/layout/index.vue'\n\nconst shopRoutes: RouteConfig = {\n path: '/shop',\n component: Layout,\n meta: {\n title: 'shop',\n icon: 'shop',\n alwaysShow: true,\n permissions: ['shopadmin:*', 'shop:game_setting', 'activity:*']\n },\n children: [\n {\n path: 'shopadmin',\n component: () => import('@/views/shop/shop_admin.vue'),\n name: 'ShopAdmin',\n meta: {\n title: 'shop_admin',\n permissions: ['shopadmin:read'],\n icon: 'admin'\n }\n },\n {\n path: 'shopmember',\n component: () => import('@/views/error-page/401.vue'),\n name: 'ShopMember',\n meta: {\n title: 'shop_member',\n permissions: ['shopadmin:read'],\n icon: 'peoples'\n }\n },\n {\n path: 'setting',\n component: () => import('@/views/game/game_setting.vue'),\n name: 'ShopSetting',\n meta: {\n title: 'game_setting',\n permissions: ['shop:game_setting'],\n icon: 'game'\n }\n },\n {\n path: 'activity_list',\n component: () => import('@/views/activity/list.vue'),\n name: 'ActivityList',\n meta: {\n title: 'activity_list',\n permissions: ['activity:read'],\n icon: 'list'\n }\n },\n {\n path: 'activity_new',\n component: () => import('@/views/activity/edit.vue'),\n name: 'CreateActivity',\n meta: {\n title: 'create_activity',\n icon: 'edit',\n permissions: ['activity:edit'],\n hidden: true\n }\n },\n {\n path: 'activity_edit/:id',\n component: () => import('@/views/activity/edit.vue'),\n name: 'ActivityEditor',\n meta: {\n title: 'edit_activity',\n permissions: ['activity:read'],\n elicon: 'el-icon-arrow-right',\n hidden: true\n }\n },\n {\n path: 'exam_list',\n component: () => import('@/views/exam/list.vue'),\n name: 'ExamList',\n meta: {\n title: 'exam_list',\n permissions: ['shopexam:read'],\n icon: 'tree'\n }\n },\n {\n path: 'exam_new',\n component: () => import('@/views/exam/edit.vue'),\n name: 'CreateExam',\n meta: {\n title: 'create_exam',\n icon: 'edit',\n permissions: ['shopexam:edit'],\n hidden: true\n }\n },\n {\n path: 'exam_edit/:id',\n component: () => import('@/views/exam/edit.vue'),\n name: 'ExamEditor',\n meta: {\n title: 'edit_exam',\n permissions: ['shopexam:read'],\n elicon: 'el-icon-arrow-right',\n hidden: true\n }\n },\n {\n path: 'theme_edit/:shop/:game/:version',\n component: () => import('@/views/game/game_theme.vue'),\n name: 'ThereEditor',\n meta: {\n title: 'edit_theme',\n permissions: ['shop:game_setting'],\n icon: 'theme2',\n hidden: true\n }\n },\n {\n path: 'lottery_setting',\n component: () => import('@/views/shop/shop_lottery.vue'),\n name: 'ShopLottery',\n meta: {\n title: 'shop_lottery',\n permissions: ['shop:edit'],\n icon: 'game'\n }\n },\n {\n path: 'share_setting',\n component: () => import('@/views/shop/shop_share.vue'),\n name: 'ShopShare',\n meta: {\n title: 'shop_share',\n permissions: ['shop:edit'],\n icon: 'game'\n }\n },\n {\n path: 'mail_list',\n component: () => import('@/views/mail/list.vue'),\n name: 'MailList',\n meta: {\n title: 'shop_mail',\n permissions: ['shopmail:read'],\n icon: 'list'\n }\n },\n {\n path: 'mail_new',\n component: () => import('@/views/mail/edit.vue'),\n name: 'CreateMail',\n meta: {\n title: 'create_mail',\n icon: 'edit',\n permissions: ['shopmail:edit'],\n hidden: true\n }\n },\n {\n path: 'mail_edit/:id',\n component: () => import('@/views/mail/edit.vue'),\n name: 'MailEditor',\n meta: {\n title: 'edit_mail',\n permissions: ['shopmail:read'],\n elicon: 'el-icon-arrow-right',\n hidden: true\n }\n }\n ]\n}\n\nexport default shopRoutes\n","import { RouteConfig } from 'vue-router'\nimport Layout from '@/layout/index.vue'\n\nconst gameRoutes: RouteConfig = {\n path: '/game',\n component: Layout,\n meta: {\n title: 'game',\n icon: 'game',\n alwaysShow: true,\n permissions: ['sysgame:*']\n },\n children: [\n {\n path: 'games',\n component: () => import('@/views/game/game_list.vue'),\n name: 'GameList',\n meta: {\n title: 'game_list',\n permissions: ['sysgame:read'],\n icon: 'game'\n }\n },\n {\n path: 'edit_game',\n component: () => import('@/views/game/game_edit.vue'),\n name: 'GameDetail',\n meta: {\n title: 'game_edit',\n permissions: ['sysgame:edit'],\n icon: 'game',\n hidden: true\n }\n },\n {\n path: 'edit_game/:id',\n component: () => import('@/views/game/game_edit.vue'),\n name: 'edit_game',\n meta: {\n title: 'game_edit',\n permissions: ['sysgame:edit'],\n icon: 'game',\n hidden: true\n }\n }\n ]\n}\n\nexport default gameRoutes\n","import { RouteConfig } from 'vue-router'\nimport Layout from '@/layout/index.vue'\n\nconst staticsRoutes: RouteConfig = {\n path: '/statistics',\n component: Layout,\n meta: {\n title: 'shop_statistics',\n icon: 'statistics',\n alwaysShow: true,\n permissions: ['statistics:*']\n },\n children: [\n {\n path: 'gamestatistics',\n component: () => import('@/views/error-page/401.vue'),\n name: 'GameStatistics',\n meta: {\n title: 'game_statistics',\n permissions: ['statistics:read'],\n icon: 'game'\n }\n }\n ]\n}\nexport default staticsRoutes\n","import Vue from 'vue'\nimport VueRouter, { RouteConfig } from 'vue-router'\n\n/* Layout */\nimport Layout from '@/layout/index.vue'\n\n/* Router modules */\nimport systemRoutes from '@/router/modules/system'\nimport marketingRoutes from '@/router/modules/marketing'\nimport questionRoutes from '@/router/modules/question'\nimport shopRoutes from '@/router/modules/shop'\nimport gameRoutes from '@/router/modules/game'\nimport staticsRotuers from '@/router/modules/statics'\n\nVue.use(VueRouter)\n\n/*\n Note: sub-menu only appear when children.length>=1\n Detail see: https://panjiachen.github.io/vue-element-admin-site/guide/essentials/router-and-nav.html\n*/\n\n/*\n name:'router-name' the name field is required when using , it should also match its component's name property\n detail see : https://vuejs.org/v2/guide/components-dynamic-async.html#keep-alive-with-Dynamic-Components\n redirect: if set to 'noredirect', no redirect action will be trigger when clicking the breadcrumb\n meta: {\n roles: ['admin', 'editor'] will control the page roles (allow setting multiple roles)\n permissions: ['app:read'] will control the page permissions (allow setting multiple permissions)\n title: 'title' the name showed in subMenu and breadcrumb (recommend set)\n icon: 'svg-name' the icon showed in the sidebar\n hidden: true if true, this route will not show in the sidebar (default is false)\n alwaysShow: true if true, will always show the root menu (default is false)\n if false, hide the root menu when has less or equal than one children route\n breadcrumb: false if false, the item will be hidden in breadcrumb (default is true)\n noCache: true if true, the page will not be cached (default is false)\n affix: true if true, the tag will affix in the tags-view\n activeMenu: '/example/list' if set path, the sidebar will highlight the path you set\n }\n*/\n\n/**\n ConstantRoutes\n a base page that does not have permission requirements\n all roles can be accessed\n*/\nexport const constantRoutes: RouteConfig[] = [\n {\n path: '/redirect',\n component: Layout,\n meta: { hidden: true },\n children: [\n {\n path: '/redirect/:path(.*)',\n component: () => import(/* webpackChunkName: \"redirect\" */ '@/views/redirect/index.vue')\n }\n ]\n },\n {\n path: '/login',\n component: () => import(/* webpackChunkName: \"login\" */ '@/views/login/index.vue'),\n meta: { hidden: true }\n },\n {\n path: '/auth-redirect',\n component: () => import(/* webpackChunkName: \"auth-redirect\" */ '@/views/login/auth-redirect.vue'),\n meta: { hidden: true }\n },\n {\n path: '/404',\n component: () => import(/* webpackChunkName: \"404\" */ '@/views/error-page/404.vue'),\n meta: { hidden: true }\n },\n {\n path: '/401',\n component: () => import(/* webpackChunkName: \"401\" */ '@/views/error-page/401.vue'),\n meta: { hidden: true }\n },\n {\n path: '/',\n component: Layout,\n redirect: '/dashboard',\n children: [\n {\n path: 'dashboard',\n component: () => import(/* webpackChunkName: \"dashboard\" */ '@/views/dashboard/index.vue'),\n name: 'Dashboard',\n meta: {\n title: 'dashboard',\n icon: 'dashboard',\n affix: true\n }\n }\n ]\n },\n {\n path: '/profile',\n component: Layout,\n redirect: '/profile/index',\n meta: { hidden: true },\n children: [\n {\n path: 'index',\n component: () => import(/* webpackChunkName: \"profile\" */ '@/views/profile/info.vue'),\n name: 'Profile',\n meta: {\n title: 'profile',\n icon: 'user',\n noCache: true\n }\n },\n {\n path: 'password',\n component: () => import(/* webpackChunkName: \"profile\" */ '@/views/profile/password.vue'),\n name: 'Password',\n meta: {\n title: 'password',\n icon: 'user',\n noCache: true\n }\n }\n ]\n },\n {\n path: '/password',\n component: Layout,\n redirect: '/profile/password',\n meta: { hidden: true },\n children: [\n ]\n }\n]\n\n/**\n * asyncRoutes\n * the routes that need to be dynamically loaded based on user roles\n*/\nexport const asyncRoutes: RouteConfig[] = [\n systemRoutes,\n gameRoutes,\n shopRoutes,\n // articleRouters,\n marketingRoutes,\n questionRoutes,\n staticsRotuers,\n // {\n // path: '/error-log',\n // component: Layout,\n // redirect: 'noredirect',\n // children: [\n // {\n // path: 'log',\n // component: () => import(/* webpackChunkName: \"error-log\" */ '@/views/error-log/index.vue'),\n // name: 'ErrorLog',\n // meta: {\n // title: 'errorLog',\n // icon: 'bug'\n // }\n // }\n // ]\n // },\n {\n path: '*',\n redirect: '/404',\n meta: { hidden: true }\n }\n]\n\nconst createRouter = () => new VueRouter({\n // mode: 'history', // Disabled due to Github Pages doesn't support this, enable this if you need.\n scrollBehavior: (to, from, savedPosition) => {\n if (savedPosition) {\n return savedPosition\n } else {\n return { x: 0, y: 0 }\n }\n },\n base: process.env.BASE_URL,\n routes: constantRoutes\n})\n\nconst router = createRouter()\n\n// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465\nexport function resetRouter() {\n const newRouter = createRouter();\n (router as any).matcher = (newRouter as any).matcher // reset router\n}\n\nexport default router\n","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuBg\":\"#304156\",\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409eff\"};","import axios from 'axios'\nimport { Message, MessageBox } from 'element-ui'\nimport { UserModule } from '@/store/modules/user'\n\nconst service = axios.create({\n baseURL: process.env.VUE_APP_BASE_API,\n timeout: 5000\n})\n\n// Request interceptors\nservice.interceptors.request.use(\n (config) => {\n // Add X-Access-Token header to every request, you can add other custom headers here\n if (UserModule.token) {\n config.headers.authorization = 'Bearer ' + UserModule.token\n }\n config.headers['Content-Type'] = 'application/json'\n return config\n },\n (error) => {\n Promise.reject(error)\n }\n)\n\n// Response interceptors\nservice.interceptors.response.use(\n (response) => {\n // Some example codes here:\n // code == 0: success\n // code == 50001: invalid access token\n // code == 50002: already login in other place\n // code == 50003: access token expired\n // code == 50004: invalid user (user not exist)\n // code == 10: username or password is incorrect\n // You can change this part for your own usage.\n const res = response.data\n if (res.code) {\n Message({\n message: res.msg || 'Error',\n type: 'error',\n duration: 5 * 1000\n })\n if (res.code === 50008 || res.code === 50012 || res.code === 50014) {\n MessageBox.confirm(\n 'You have been logged out, try to login again.',\n 'Log out',\n {\n confirmButtonText: 'Relogin',\n cancelButtonText: 'Cancel',\n type: 'warning'\n }\n ).then(() => {\n UserModule.ResetToken()\n location.reload() // To prevent bugs from vue-router\n })\n }\n return Promise.reject(new Error(res.msg || 'Error'))\n } else {\n return response.data\n }\n },\n (error) => {\n Message({\n message: error.message,\n type: 'error',\n duration: 5 * 1000\n })\n return Promise.reject(error)\n }\n)\n\nexport default service\n","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=1&id=061fdbbc&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=scss&\"","// extracted by mini-css-extract-plugin\nmodule.exports = {\"menuBg\":\"#304156\",\"menuText\":\"#bfcbd9\",\"menuActiveText\":\"#409eff\"};","export * from \"-!../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=49d3a434&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{attrs:{\"id\":\"app\"}},[_c('router-view')],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator'\n\n@Component({\n name: 'App'\n})\nexport default class extends Vue {}\n","import mod from \"-!../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--13-3!../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/ts-loader/index.js??ref--13-3!../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=cd49a4b4&\"\nimport script from \"./App.vue?vue&type=script&lang=ts&\"\nexport * from \"./App.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n '404': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'admin': {\n width: 64,\n height: 64,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'back-top': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'bug': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'chart': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'clipboard': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'component': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'coupon': {\n width: 64,\n height: 64,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'dashboard': {\n width: 128,\n height: 100,\n viewBox: '0 0 128 100',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'documentation': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'drag': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'edit': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'education': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'email': {\n width: 128,\n height: 96,\n viewBox: '0 0 128 96',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'example': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'excel': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'exit-fullscreen': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'eye-off': {\n width: 128,\n height: 64,\n viewBox: '0 0 128 64',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'eye-on': {\n width: 128,\n height: 128,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'form': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'fullscreen': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'game': {\n width: 64,\n height: 64,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'guide-2': {\n width: 1000,\n height: 1000,\n viewBox: '0 0 1000 1000',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'guide': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'hamburger': {\n width: 64,\n height: 64,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'icon': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'international': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'language': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'like': {\n width: 24,\n height: 24,\n viewBox: '0 0 24 24',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'link': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'list': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'lock': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'message': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'money': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'nested': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'password': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'pdf': {\n width: 128,\n height: 128,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'people': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'peoples': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'permission': {\n width: 64,\n height: 64,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'points': {\n width: 64,\n height: 64,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'promo': {\n width: 82.625,\n height: 64,\n viewBox: '0 0 1322 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'qq': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'question_list': {\n width: 64,\n height: 64,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'role': {\n width: 64,\n height: 64,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'search': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'sell': {\n width: 64,\n height: 64,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'shop_list': {\n width: 64,\n height: 64,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'shop': {\n width: 64,\n height: 64,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'shopping': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'size': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'skill': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'star': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'statistics': {\n width: 120,\n height: 120,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'tab': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'table': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'theme': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'theme2': {\n width: 120,\n height: 120,\n viewBox: '0 0 1024 1024',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'tree-table': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'tree': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'user': {\n width: 130,\n height: 130,\n viewBox: '0 0 130 130',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'wechat': {\n width: 128,\n height: 110,\n viewBox: '0 0 128 110',\n data: ''\n }\n})\n","/* eslint-disable */\n/* tslint:disable */\n// @ts-ignore\nimport icon from 'vue-svgicon'\nicon.register({\n 'zip': {\n width: 128,\n height: 128,\n viewBox: '0 0 128 128',\n data: ''\n }\n})\n","import router from './router'\nimport NProgress from 'nprogress'\nimport 'nprogress/nprogress.css'\nimport { Message } from 'element-ui'\nimport { Route } from 'vue-router'\nimport { UserModule } from '@/store/modules/user'\nimport { PermissionModule } from '@/store/modules/permission'\nimport i18n from '@/lang' // Internationalization\nimport settings from './settings'\n\nNProgress.configure({ showSpinner: false })\n\nconst whiteList = ['/login', '/auth-redirect']\n\nconst getPageTitle = (key: string) => {\n const hasKey = i18n.te(`route.${key}`)\n if (hasKey) {\n const pageName = i18n.t(`route.${key}`)\n return `${pageName} - ${settings.title}`\n }\n return `${settings.title}`\n}\n\nrouter.beforeEach(async(to: Route, _: Route, next: any) => {\n // Start progress bar\n NProgress.start()\n\n // Determine whether the user has logged in\n if (UserModule.token) {\n if (to.path === '/login') {\n // If is logged in, redirect to the home page\n next({ path: '/' })\n NProgress.done()\n } else {\n // Check whether the user has obtained his permission roles\n if (UserModule.roles.length === 0) {\n try {\n // Note: roles must be a object array! such as: ['admin'] or ['developer', 'editor']\n await UserModule.GetUserInfo()\n const roles = UserModule.roles\n // Generate accessible routes map based on role\n PermissionModule.GenerateRoutes(roles)\n // Dynamically add accessible routes\n router.addRoutes(PermissionModule.dynamicRoutes)\n // Hack: ensure addRoutes is complete\n // Set the replace: true, so the navigation will not leave a history record\n next({ ...to, replace: true })\n } catch (err) {\n // Remove token and redirect to login page\n UserModule.ResetToken()\n Message.error(err || 'Has Error')\n next(`/login?redirect=${to.path}`)\n NProgress.done()\n }\n } else {\n next()\n }\n }\n } else {\n // Has no token\n if (whiteList.indexOf(to.path) !== -1) {\n // In the free login whitelist, go directly\n next()\n } else {\n // Other pages that do not have permission to access are redirected to the login page.\n next(`/login?redirect=${to.path}`)\n NProgress.done()\n }\n }\n})\n\nrouter.afterEach((to: Route) => {\n // Finish progress bar\n // hack: https://github.com/PanJiaChen/vue-element-admin/pull/2939\n NProgress.done()\n\n // set page title\n document.title = getPageTitle(to.meta.title)\n})\n","// Inspired by https://github.com/Inndy/vue-clipboard2\nimport Clipboard from 'clipboard'\nimport { DirectiveOptions } from 'vue'\n\nif (!Clipboard) {\n throw new Error('you should npm install `clipboard` --save at first ')\n}\n\nlet successCallback: Function | null\nlet errorCallback: Function | null\nlet clipboardInstance: Clipboard | null\n\nexport const clipboard: DirectiveOptions = {\n bind(el, binding) {\n if (binding.arg === 'success') {\n successCallback = binding.value\n } else if (binding.arg === 'error') {\n errorCallback = binding.value\n } else {\n clipboardInstance = new Clipboard(el, {\n text() { return binding.value },\n action() { return binding.arg === 'cut' ? 'cut' : 'copy' }\n })\n clipboardInstance.on('success', e => {\n const callback = successCallback\n callback && callback(e)\n })\n clipboardInstance.on('error', e => {\n const callback = errorCallback\n callback && callback(e)\n })\n }\n },\n\n update(el, binding) {\n if (binding.arg === 'success') {\n successCallback = binding.value\n } else if (binding.arg === 'error') {\n errorCallback = binding.value\n } else {\n clipboardInstance = new Clipboard(el, {\n text() { return binding.value },\n action() { return binding.arg === 'cut' ? 'cut' : 'copy' }\n })\n }\n },\n\n unbind(_, binding) {\n if (binding.arg === 'success') {\n successCallback = null\n } else if (binding.arg === 'error') {\n errorCallback = null\n } else {\n if (clipboardInstance) {\n clipboardInstance.destroy()\n }\n clipboardInstance = null\n }\n }\n}\n","import { DirectiveOptions } from 'vue'\nimport { checkPermission } from '@/utils/permission'\n\nexport const permission: DirectiveOptions = {\n inserted(el, binding) {\n const { value } = binding\n if (!checkPermission(value)) {\n el.style.display = 'none'\n }\n }\n\n}\n","import { DirectiveOptions } from 'vue'\n\nexport const elDraggableDialog: DirectiveOptions = {\n bind(el, _, vnode) {\n const dragDom = el.querySelector('.el-dialog') as HTMLElement\n const dialogHeaderEl = el.querySelector('.el-dialog__header') as HTMLElement\n dragDom.style.cssText += ';top:0px;'\n dialogHeaderEl.style.cssText += ';cursor:move;'\n\n dialogHeaderEl.onmousedown = (e) => {\n const disX = e.clientX - dialogHeaderEl.offsetLeft\n const disY = e.clientY - dialogHeaderEl.offsetTop\n\n const dragDomWidth = dragDom.offsetWidth\n const dragDomHeight = dragDom.offsetHeight\n\n const screenWidth = document.body.clientWidth\n const screenHeight = document.body.clientHeight\n\n const minDragDomLeft = dragDom.offsetLeft\n const maxDragDomLeft = screenWidth - dragDom.offsetLeft - dragDomWidth\n\n const minDragDomTop = dragDom.offsetTop\n const maxDragDomTop = screenHeight - dragDom.offsetTop - dragDomHeight\n\n const styleLeftStr = getComputedStyle(dragDom).left\n const styleTopStr = getComputedStyle(dragDom).top\n if (!styleLeftStr || !styleTopStr) return\n let styleLeft: number\n let styleTop: number\n\n // Format may be \"##%\" or \"##px\"\n if (styleLeftStr.includes('%')) {\n styleLeft = +document.body.clientWidth * (+styleLeftStr.replace(/%/g, '') / 100)\n styleTop = +document.body.clientHeight * (+styleTopStr.replace(/%/g, '') / 100)\n } else {\n styleLeft = +styleLeftStr.replace(/px/g, '')\n styleTop = +styleTopStr.replace(/px/g, '')\n }\n\n document.onmousemove = (e) => {\n let left = e.clientX - disX\n let top = e.clientY - disY\n\n // Handle edge cases\n if (-(left) > minDragDomLeft) {\n left = -minDragDomLeft\n } else if (left > maxDragDomLeft) {\n left = maxDragDomLeft\n }\n if (-(top) > minDragDomTop) {\n top = -minDragDomTop\n } else if (top > maxDragDomTop) {\n top = maxDragDomTop\n }\n\n // Move current element\n dragDom.style.cssText += `;left:${left + styleLeft}px;top:${top + styleTop}px;`\n\n // Emit on-dialog-drag event\n // See https://stackoverflow.com/questions/49264426/vuejs-custom-directive-emit-event\n if (vnode.componentInstance) {\n vnode.componentInstance.$emit('on-dialog-drag')\n } else if (vnode.elm) {\n vnode.elm.dispatchEvent(new CustomEvent('on-dialog-drag'))\n }\n }\n\n document.onmouseup = () => {\n document.onmousemove = null\n document.onmouseup = null\n }\n }\n }\n}\n","import './waves.css'\nimport { DirectiveOptions } from 'vue'\n\nexport const waves: DirectiveOptions = {\n bind(el, binding) {\n el.addEventListener('click', e => {\n const customOpts = Object.assign({}, binding.value)\n const opts = Object.assign({\n ele: el, // 波纹作用元素\n type: 'hit', // hit 点击位置扩散 center中心点扩展\n color: 'rgba(0, 0, 0, 0.15)' // 波纹颜色\n }, customOpts)\n const target: HTMLElement = opts.ele\n if (target) {\n target.style.position = 'relative'\n target.style.overflow = 'hidden'\n const rect = target.getBoundingClientRect()\n let ripple = target.querySelector('.waves-ripple') as HTMLElement\n if (!ripple) {\n ripple = document.createElement('span')\n ripple.className = 'waves-ripple'\n ripple.style.height = ripple.style.width = Math.max(rect.width, rect.height) + 'px'\n target.appendChild(ripple)\n } else {\n ripple.className = 'waves-ripple'\n }\n switch (opts.type) {\n case 'center':\n ripple.style.top = rect.height / 2 - ripple.offsetHeight / 2 + 'px'\n ripple.style.left = rect.width / 2 - ripple.offsetWidth / 2 + 'px'\n break\n default:\n ripple.style.top =\n (e.pageY - rect.top - ripple.offsetHeight / 2 - document.documentElement.scrollTop ||\n document.body.scrollTop) + 'px'\n ripple.style.left =\n (e.pageX - rect.left - ripple.offsetWidth / 2 - document.documentElement.scrollLeft ||\n document.body.scrollLeft) + 'px'\n }\n ripple.style.backgroundColor = opts.color\n ripple.className = 'waves-ripple z-active'\n return false\n }\n }, false)\n }\n}\n","import { DirectiveOptions } from 'vue'\nimport { UserModule } from '@/store/modules/user'\n\nexport const role: DirectiveOptions = {\n inserted(el, binding) {\n const { value } = binding\n const roles = UserModule.roles\n if (value && value instanceof Array && value.length > 0) {\n const permissionRoles = value\n const hasRole = roles.some(role => {\n return permissionRoles.includes(role)\n })\n if (!hasRole) {\n el.style.display = 'none'\n }\n } else {\n throw new Error('need roles! Like v-role=\"[\\'admin\\',\\'editor\\']\"')\n }\n }\n}\n","// Set utils function parseTime to filter\nexport { parseTime } from '@/utils'\n\n// Filter for article status\nexport const articleStatusFilter = (status: string) => {\n const statusMap: { [key: string]: string } = {\n published: 'success',\n draft: 'info',\n deleted: 'danger'\n }\n return statusMap[status]\n}\n\n// Filter to uppercase the first character\nexport const uppercaseFirstChar = (str: string) => {\n return str.charAt(0).toUpperCase() + str.slice(1)\n}\n","import Vue from 'vue'\n\nconst local = {\n get: function(key: string) {\n const val = localStorage.getItem(key)\n if (val) {\n return JSON.parse(val)\n } else {\n return null\n }\n },\n set: function(key: string, val: any) {\n localStorage.setItem(key, JSON.stringify(val))\n }\n}\nexport default {\n install: function(vue: typeof Vue) {\n vue.prototype.$local = local\n }\n}\n","import Vue, { DirectiveOptions } from 'vue'\n\nimport 'normalize.css'\nimport ElementUI from 'element-ui'\nimport SvgIcon from 'vue-svgicon'\n\nimport '@/styles/element-variables.scss'\nimport '@/styles/index.scss'\n\nimport App from '@/App.vue'\nimport store from '@/store'\nimport router from '@/router'\nimport i18n from '@/lang'\nimport '@/icons/components'\nimport '@/permission'\nimport { AppModule } from '@/store/modules/app'\nimport * as directives from '@/directives'\nimport * as filters from '@/filters'\nimport local from '@/utils/storage'\n\nrequire('@/utils/Extend')\n\nVue.use(ElementUI, {\n size: AppModule.size,\n i18n: (key: string, value: string) => i18n.t(key, value)\n})\nVue.use(SvgIcon, {\n tagName: 'svg-icon',\n defaultWidth: '1em',\n defaultHeight: '1em'\n})\nVue.use(local)\n\nObject.keys(directives).forEach(key => {\n Vue.directive(key, (directives as { [key: string ]: DirectiveOptions })[key])\n})\n// Register global filter functions\nObject.keys(filters).forEach(key => {\n Vue.filter(key, (filters as { [key: string ]: Function })[key])\n})\n// Register global directives\nVue.config.productionTip = false\n\nnew Vue({\n router,\n store,\n i18n,\n render: (h) => h(App)\n}).$mount('#app')\n","// Parse the time to string\nexport const parseTime = (\n time?: object | string | number | null,\n cFormat?: string\n): string | null => {\n if (time === undefined || !time) {\n return null\n }\n const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'\n let date: Date\n if (typeof time === 'object') {\n date = time as Date\n } else {\n if (typeof time === 'string') {\n if (/^[0-9]+$/.test(time)) {\n // support \"1548221490638\"\n time = parseInt(time)\n } else {\n // support safari\n // https://stackoverflow.com/questions/4310953/invalid-date-in-safari\n // time = time.replace(new RegExp(/-/gm), '/')\n }\n }\n if (typeof time === 'number' && time.toString().length === 10) {\n time = time * 1000\n }\n date = new Date(time)\n }\n const formatObj: { [key: string]: number } = {\n y: date.getFullYear(),\n m: date.getMonth() + 1,\n d: date.getDate(),\n h: date.getHours(),\n i: date.getMinutes(),\n s: date.getSeconds(),\n a: date.getDay()\n }\n return format.replace(/{([ymdhisa])+}/g, (result, key) => {\n const value = formatObj[key]\n // Note: getDay() returns 0 on Sunday\n if (key === 'a') {\n return ['日', '一', '二', '三', '四', '五', '六'][value]\n }\n return value.toString().padStart(2, '0')\n })\n}\n/**\n * 将秒数格式化成 小时:分钟:秒\n * @param {number} sec\n * @param showSeconds 是否显示秒\n */\nexport const sec2TimeStr = (sec: number, showSeconds = true) => {\n showSeconds = typeof showSeconds !== 'undefined' ? showSeconds : true\n const t = sec % 60\n const i = (sec % 3600 - t) / 60\n const n = Math.floor(sec / 3600)\n if (showSeconds) {\n return (n > 9 ? '' + n : '0' + n) + ':' + (i > 9 ? i : '0' + i) + ':' + (t > 9 ? t : '0' + t)\n } else {\n return (n > 9 ? '' + n : '0' + n) + ':' + (i > 9 ? i : '0' + i)\n }\n}\n/**\n * 将 小时:分钟:秒 格式的字符串转换为秒数\n * @param {string} str\n */\nexport const timeStr2Sec = (str: string) => {\n const vals = str.split(':')\n const h = vals.length > 0 ? +vals[0] : 0\n const m = vals.length > 1 ? +vals[1] : 0\n const s = vals.length > 2 ? +vals[2] : 0\n return h * 3600 + m * 60 + s\n}\n\n// Format and filter json data using filterKeys array\nexport const formatJson = (filterKeys: any, jsonData: any) =>\n jsonData.map((data: any) => filterKeys.map((key: string) => {\n if (key === 'timestamp') {\n return parseTime(data[key])\n } else {\n return data[key]\n }\n }))\n\n// Check if an element has a class\nexport const hasClass = (ele: HTMLElement, className: string) => {\n return !!ele.className.match(new RegExp('(\\\\s|^)' + className + '(\\\\s|$)'))\n}\n\n// Add class to element\nexport const addClass = (ele: HTMLElement, className: string) => {\n if (!hasClass(ele, className)) ele.className += ' ' + className\n}\n\n// Remove class from element\nexport const removeClass = (ele: HTMLElement, className: string) => {\n if (hasClass(ele, className)) {\n const reg = new RegExp('(\\\\s|^)' + className + '(\\\\s|$)')\n ele.className = ele.className.replace(reg, ' ')\n }\n}\n\n// Toggle class for the selected element\nexport const toggleClass = (ele: HTMLElement, className: string) => {\n if (!ele || !className) {\n return\n }\n let classString = ele.className\n const nameIndex = classString.indexOf(className)\n if (nameIndex === -1) {\n classString += '' + className\n } else {\n classString =\n classString.substr(0, nameIndex) +\n classString.substr(nameIndex + className.length)\n }\n ele.className = classString\n}\n\nexport const delay = (sec: number) => {\n return new Promise((resolve, reject) => {\n setTimeout(function() {\n resolve && resolve('')\n }, sec * 1000)\n })\n}\n","export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=ed2ef868&lang=scss&scoped=true&\"","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SidebarItem.vue?vue&type=style&index=0&lang=scss&\"","import { VuexModule, Module, Mutation, Action, getModule } from 'vuex-module-decorators'\nimport { Route } from 'vue-router'\nimport store from '@/store'\n\nexport interface ITagView extends Partial {\n title?: string\n}\n\nexport interface ITagsViewState {\n visitedViews: ITagView[]\n cachedViews: (string | undefined)[]\n}\n\n@Module({ dynamic: true, store, name: 'tagsView' })\nclass TagsView extends VuexModule implements ITagsViewState {\n public visitedViews: ITagView[] = []\n public cachedViews: (string | undefined)[] = []\n\n @Mutation\n private ADD_VISITED_VIEW(view: ITagView) {\n if (this.visitedViews.some(v => v.path === view.path)) return\n this.visitedViews.push(\n Object.assign({}, view, {\n title: view.meta.title || 'no-name'\n })\n )\n }\n\n @Mutation\n private ADD_CACHED_VIEW(view: ITagView) {\n if (view.name === null) return\n if (this.cachedViews.includes(view.name)) return\n if (!view.meta.noCache) {\n this.cachedViews.push(view.name)\n }\n }\n\n @Mutation\n private DEL_VISITED_VIEW(view: ITagView) {\n for (const [i, v] of this.visitedViews.entries()) {\n if (v.path === view.path) {\n this.visitedViews.splice(i, 1)\n break\n }\n }\n }\n\n @Mutation\n private DEL_CACHED_VIEW(view: ITagView) {\n if (view.name === null) return\n const index = this.cachedViews.indexOf(view.name)\n index > -1 && this.cachedViews.splice(index, 1)\n }\n\n @Mutation\n private DEL_OTHERS_VISITED_VIEWS(view: ITagView) {\n this.visitedViews = this.visitedViews.filter(v => {\n return v.meta.affix || v.path === view.path\n })\n }\n\n @Mutation\n private DEL_OTHERS_CACHED_VIEWS(view: ITagView) {\n if (view.name === null) return\n const index = this.cachedViews.indexOf(view.name)\n if (index > -1) {\n this.cachedViews = this.cachedViews.slice(index, index + 1)\n } else {\n // if index = -1, there is no cached tags\n this.cachedViews = []\n }\n }\n\n @Mutation\n private DEL_ALL_VISITED_VIEWS() {\n // keep affix tags\n const affixTags = this.visitedViews.filter(tag => tag.meta.affix)\n this.visitedViews = affixTags\n }\n\n @Mutation\n private DEL_ALL_CACHED_VIEWS() {\n this.cachedViews = []\n }\n\n @Mutation\n private UPDATE_VISITED_VIEW(view: ITagView) {\n for (let v of this.visitedViews) {\n if (v.path === view.path) {\n v = Object.assign(v, view)\n break\n }\n }\n }\n\n @Action\n public addView(view: ITagView) {\n this.ADD_VISITED_VIEW(view)\n this.ADD_CACHED_VIEW(view)\n }\n\n @Action\n public addVisitedView(view: ITagView) {\n this.ADD_VISITED_VIEW(view)\n }\n\n @Action\n public delView(view: ITagView) {\n this.DEL_VISITED_VIEW(view)\n this.DEL_CACHED_VIEW(view)\n }\n\n @Action\n public delCachedView(view: ITagView) {\n this.DEL_CACHED_VIEW(view)\n }\n\n @Action\n public delOthersViews(view: ITagView) {\n this.DEL_OTHERS_VISITED_VIEWS(view)\n this.DEL_OTHERS_CACHED_VIEWS(view)\n }\n\n @Action\n public delAllViews() {\n this.DEL_ALL_VISITED_VIEWS()\n this.DEL_ALL_CACHED_VIEWS()\n }\n\n @Action\n public delAllCachedViews() {\n this.DEL_ALL_CACHED_VIEWS()\n }\n\n @Action\n public updateVisitedView(view: ITagView) {\n this.UPDATE_VISITED_VIEW(view)\n }\n}\n\nexport const TagsViewModule = getModule(TagsView)\n","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=1&id=31c3d88a&lang=scss&scoped=true&\""],"sourceRoot":""} \ No newline at end of file diff --git a/dist/js/chunk-2ffaffe4.888ba0b8.js b/dist/js/chunk-2ffaffe4.888ba0b8.js deleted file mode 100644 index a50b3a5..0000000 --- a/dist/js/chunk-2ffaffe4.888ba0b8.js +++ /dev/null @@ -1,2 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2ffaffe4"],{"6b45":function(e,t,a){"use strict";var r=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"upload-container"},[a("el-upload",{staticClass:"image-uploader",attrs:{data:e.dataObj,name:"image-file",accept:"image/jpeg,image/gif,image/png",multiple:!1,"show-file-list":!1,"on-success":e.handleImageSuccess,drag:"",action:e.uploadUrl}},[a("i",{staticClass:"el-icon-upload"}),a("div",{staticClass:"el-upload__text"},[e._v(" 将文件拖到此处,或"),a("em",[e._v("点击上传")])])]),a("div",{staticClass:"image-preview"},[a("div",{directives:[{name:"show",rawName:"v-show",value:e.imageUrl.length>1,expression:"imageUrl.length>1"}],staticClass:"image-preview-wrapper"},[a("img",{attrs:{src:e.imageUrl}}),a("div",{staticClass:"image-preview-action"},[a("i",{staticClass:"el-icon-delete",on:{click:e.rmImage}})])])])],1)},n=[],i=a("d4ec"),s=a("bee2"),o=a("262e"),c=a("2caf"),l=a("9ab4"),u=a("1b40"),m=function(e){Object(o["a"])(a,e);var t=Object(c["a"])(a);function a(){var e;return Object(i["a"])(this,a),e=t.apply(this,arguments),e.uploadUrl="https://opm.kingsome.cn/api/upload",e.tempUrl="",e.dataObj={sub_path:"game",type:"image"},e}return Object(s["a"])(a,[{key:"imageUrl",get:function(){return this.value}},{key:"emitInput",value:function(e){this.$emit("input",e)}},{key:"rmImage",value:function(){this.emitInput("")}},{key:"handleImageSuccess",value:function(e){console.log(e),this.emitInput(e.url_cdn)}}]),a}(u["c"]);Object(l["a"])([Object(u["b"])({default:""})],m.prototype,"value",void 0),m=Object(l["a"])([Object(u["a"])({name:"UploadImage"})],m);var p=m,g=p,d=(a("961d"),a("0c7c")),v=Object(d["a"])(g,r,n,!1,null,"62f54f8e",null);t["a"]=v.exports},"736c":function(e,t,a){"use strict";a.r(t);var r=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"app-container"},[a("el-form",{ref:"postForm",staticClass:"form-container",attrs:{model:e.postForm,rules:e.rules,"label-width":"222px"}},[a("el-form-item",{attrs:{prop:"game_main_pic",label:"主页正中间图片"}},[a("upload-image",{model:{value:e.postForm.game_main_pic,callback:function(t){e.$set(e.postForm,"game_main_pic",t)},expression:"postForm.game_main_pic"}})],1),a("el-form-item",{attrs:{prop:"bg_item_icon",label:"背景图案"}},[a("upload-image",{model:{value:e.postForm.bg_item_icon,callback:function(t){e.$set(e.postForm,"bg_item_icon",t)},expression:"postForm.bg_item_icon"}})],1),a("el-form-item",{attrs:{label:"主页上单人赛按钮文字:",prop:"game_single_btn"}},[a("el-input",{attrs:{placeholder:"主页上单人赛按钮文字",name:"game_single_btn",required:""},model:{value:e.postForm.game_single_btn,callback:function(t){e.$set(e.postForm,"game_single_btn",t)},expression:"postForm.game_single_btn"}})],1),a("el-form-item",{attrs:{label:"主页上多人赛按钮名字:",prop:"game_multi_btn"}},[a("el-input",{attrs:{placeholder:"主页上多人赛按钮名字",name:"game_multi_btn",required:""},model:{value:e.postForm.game_multi_btn,callback:function(t){e.$set(e.postForm,"game_multi_btn",t)},expression:"postForm.game_multi_btn"}})],1),a("el-form-item",[a("el-button",{directives:[{name:"permission",rawName:"v-permission",value:["shop:game_setting"],expression:"['shop:game_setting']"}],attrs:{type:"primary"},on:{click:e.saveVal}},[e._v(" 保存 ")]),a("el-button",{on:{click:e.onCancel}},[e._v(" 取消 ")])],1)],1)],1)},n=[],i=a("1da1"),s=a("d4ec"),o=a("bee2"),c=a("262e"),l=a("2caf"),u=(a("96cf"),a("9ab4")),m=a("1b40"),p=a("b804"),g=a("08a9"),d=a("6b45"),v=a("db85"),b=a("9dba"),f=function(e){Object(c["a"])(a,e);var t=Object(l["a"])(a);function a(){var e;return Object(s["a"])(this,a),e=t.apply(this,arguments),e.validateRequire=function(t,a,r){""===a?("imageURL"===t.field?e.$message({message:"Upload cover image is required",type:"error"}):e.$message({message:t.field+" 是必填的",type:"error"}),r(new Error(t.field+" 是必填的"))):r()},e.shop="",e.postForm={},e.rules={name:[{validator:e.validateRequire}]},e}return Object(o["a"])(a,[{key:"userLevel",get:function(){return b["a"].level}},{key:"noShop",get:function(){return!this.shop}},{key:"created",value:function(){var e=Object(i["a"])(regeneratorRuntime.mark((function e(){var t,a,r;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return this.postForm.shop=null===(t=this.$route.params)||void 0===t?void 0:t.shop,this.postForm.game=null===(a=this.$route.params)||void 0===a?void 0:a.game,this.postForm.version=null===(r=this.$route.params)||void 0===r?void 0:r.version,console.log(this.shop),e.next=6,this.getRemoteData();case 6:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"getRemoteData",value:function(){var e=Object(i["a"])(regeneratorRuntime.mark((function e(){var t,a;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(v["c"])(this.postForm);case 2:t=e.sent,a=t.data,this.postForm=Object.assign(this.postForm,a),this.$forceUpdate(),console.log(this.postForm);case 7:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"onCancel",value:function(){var e=Object(i["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$confirm("确认不保存当前信息?","Warning",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"});case 3:this.$store.dispatch("delView",this.$route),this.$router.go(-1),e.next=9;break;case 7:e.prev=7,e.t0=e["catch"](0);case 9:case"end":return e.stop()}}),e,this,[[0,7]])})));function t(){return e.apply(this,arguments)}return t}()},{key:"saveVal",value:function(){var e=Object(i["a"])(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$refs.postForm.validate();case 3:return e.next=5,Object(v["l"])(this.postForm);case 5:t=e.sent,t.data,this.$notify({title:"Success",message:"操作成功",type:"success",duration:2e3}),e.next=12;break;case 10:e.prev=10,e.t0=e["catch"](0);case 12:case"end":return e.stop()}}),e,this,[[0,10]])})));function t(){return e.apply(this,arguments)}return t}()}]),a}(m["c"]);f=Object(u["a"])([Object(m["a"])({name:"GameTheme",components:{Sticky:p["a"],ElImageViewer:g["a"],UploadImage:d["a"]},filters:{parseGameType:function(e){return 1===e?"微信小游戏":"网页版"}}})],f);var h=f,_=h,w=(a("a9ba"),a("0c7c")),k=Object(w["a"])(_,r,n,!1,null,"616030e4",null);t["default"]=k.exports},7615:function(e,t,a){},"961d":function(e,t,a){"use strict";a("b43b")},a9ba:function(e,t,a){"use strict";a("7615")},b43b:function(e,t,a){}}]); -//# sourceMappingURL=chunk-2ffaffe4.888ba0b8.js.map \ No newline at end of file diff --git a/dist/js/chunk-2ffaffe4.888ba0b8.js.map b/dist/js/chunk-2ffaffe4.888ba0b8.js.map deleted file mode 100644 index 398d2a0..0000000 --- a/dist/js/chunk-2ffaffe4.888ba0b8.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack:///./src/components/UploadImage/index.vue?eb0c","webpack:///./src/components/UploadImage/index.vue?edcc","webpack:///./src/components/UploadImage/index.vue?5e4b","webpack:///./src/components/UploadImage/index.vue","webpack:///./src/views/game/game_theme.vue?e0bd","webpack:///./src/views/game/game_theme.vue?eae5","webpack:///./src/views/game/game_theme.vue?ccc2","webpack:///./src/views/game/game_theme.vue","webpack:///./src/components/UploadImage/index.vue?8343","webpack:///./src/views/game/game_theme.vue?11da"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","dataObj","handleImageSuccess","uploadUrl","_v","directives","name","rawName","value","imageUrl","length","expression","on","rmImage","staticRenderFns","tempUrl","sub_path","type","$emit","emitInput","res","console","log","url_cdn","default","component","ref","postForm","rules","model","callback","$$v","$set","saveVal","onCancel","validateRequire","rule","field","$message","message","Error","shop","validator","level","$route","params","game","version","getRemoteData","data","Object","assign","$forceUpdate","$confirm","confirmButtonText","cancelButtonText","$store","dispatch","$router","go","$refs","validate","$notify","title","duration","components","Sticky","ElImageViewer","UploadImage","filters","parseGameType"],"mappings":"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","file":"js/chunk-2ffaffe4.888ba0b8.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"upload-container\"},[_c('el-upload',{staticClass:\"image-uploader\",attrs:{\"data\":_vm.dataObj,\"name\":\"image-file\",\"accept\":\"image/jpeg,image/gif,image/png\",\"multiple\":false,\"show-file-list\":false,\"on-success\":_vm.handleImageSuccess,\"drag\":\"\",\"action\":_vm.uploadUrl}},[_c('i',{staticClass:\"el-icon-upload\"}),_c('div',{staticClass:\"el-upload__text\"},[_vm._v(\" 将文件拖到此处,或\"),_c('em',[_vm._v(\"点击上传\")])])]),_c('div',{staticClass:\"image-preview\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.imageUrl.length>1),expression:\"imageUrl.length>1\"}],staticClass:\"image-preview-wrapper\"},[_c('img',{attrs:{\"src\":_vm.imageUrl}}),_c('div',{staticClass:\"image-preview-action\"},[_c('i',{staticClass:\"el-icon-delete\",on:{\"click\":_vm.rmImage}})])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue } from 'vue-property-decorator'\n\n@Component({\n name: 'UploadImage'\n})\nexport default class extends Vue {\n @Prop({ default: '' }) private value!: string\n\n private uploadUrl = 'https://opm.kingsome.cn/api/upload'\n // private uploadUrl = 'http://127.0.0.1:4000/api/upload'\n\n private tempUrl = ''\n private dataObj = { sub_path: 'game', type: 'image' }\n\n get imageUrl() {\n return this.value\n }\n\n private emitInput(value: string) {\n this.$emit('input', value)\n }\n\n private rmImage() {\n this.emitInput('')\n }\n\n private handleImageSuccess(res: any) {\n console.log(res)\n this.emitInput(res.url_cdn)\n }\n}\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=62f54f8e&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=62f54f8e&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"62f54f8e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"app-container\"},[_c('el-form',{ref:\"postForm\",staticClass:\"form-container\",attrs:{\"model\":_vm.postForm,\"rules\":_vm.rules,\"label-width\":\"222px\"}},[_c('el-form-item',{attrs:{\"prop\":\"game_main_pic\",\"label\":\"主页正中间图片\"}},[_c('upload-image',{model:{value:(_vm.postForm.game_main_pic),callback:function ($$v) {_vm.$set(_vm.postForm, \"game_main_pic\", $$v)},expression:\"postForm.game_main_pic\"}})],1),_c('el-form-item',{attrs:{\"prop\":\"bg_item_icon\",\"label\":\"背景图案\"}},[_c('upload-image',{model:{value:(_vm.postForm.bg_item_icon),callback:function ($$v) {_vm.$set(_vm.postForm, \"bg_item_icon\", $$v)},expression:\"postForm.bg_item_icon\"}})],1),_c('el-form-item',{attrs:{\"label\":\"主页上单人赛按钮文字:\",\"prop\":\"game_single_btn\"}},[_c('el-input',{attrs:{\"placeholder\":\"主页上单人赛按钮文字\",\"name\":\"game_single_btn\",\"required\":\"\"},model:{value:(_vm.postForm.game_single_btn),callback:function ($$v) {_vm.$set(_vm.postForm, \"game_single_btn\", $$v)},expression:\"postForm.game_single_btn\"}})],1),_c('el-form-item',{attrs:{\"label\":\"主页上多人赛按钮名字:\",\"prop\":\"game_multi_btn\"}},[_c('el-input',{attrs:{\"placeholder\":\"主页上多人赛按钮名字\",\"name\":\"game_multi_btn\",\"required\":\"\"},model:{value:(_vm.postForm.game_multi_btn),callback:function ($$v) {_vm.$set(_vm.postForm, \"game_multi_btn\", $$v)},expression:\"postForm.game_multi_btn\"}})],1),_c('el-form-item',[_c('el-button',{directives:[{name:\"permission\",rawName:\"v-permission\",value:(['shop:game_setting']),expression:\"['shop:game_setting']\"}],attrs:{\"type\":\"primary\"},on:{\"click\":_vm.saveVal}},[_vm._v(\" 保存 \")]),_c('el-button',{on:{\"click\":_vm.onCancel}},[_vm._v(\" 取消 \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator'\nimport Sticky from '@/components/Sticky/index.vue'\nimport ElImageViewer from 'element-ui/packages/image/src/image-viewer.vue'\nimport UploadImage from '@/components/UploadImage/index.vue'\n\nimport { getGameTheme, saveGameTheme } from '@/api/shop'\nimport { UserModule } from '@/store/modules/user'\n\n@Component({\n name: 'GameTheme',\n components: {\n Sticky,\n ElImageViewer,\n UploadImage\n },\n filters: {\n parseGameType: (type: number) => {\n return type === 1 ? '微信小游戏' : '网页版'\n }\n }\n})\nexport default class extends Vue {\n private validateRequire = (rule: any, value: string, callback: Function) => {\n if (value === '') {\n if (rule.field === 'imageURL') {\n this.$message({\n message: 'Upload cover image is required',\n type: 'error'\n })\n } else {\n this.$message({\n message: rule.field + ' 是必填的',\n type: 'error'\n })\n }\n callback(new Error(rule.field + ' 是必填的'))\n } else {\n callback()\n }\n }\n\n private shop = ''\n private postForm: any = {}\n\n get userLevel() {\n return UserModule.level\n }\n\n get noShop() {\n return !this.shop\n }\n\n private rules = {\n name: [{ validator: this.validateRequire }]\n }\n\n $refs!: {\n postForm: HTMLFormElement\n }\n\n async created() {\n this.postForm.shop = this.$route.params?.shop\n this.postForm.game = this.$route.params?.game\n this.postForm.version = this.$route.params?.version\n console.log(this.shop)\n await this.getRemoteData()\n }\n\n async getRemoteData() {\n const { data } = await getGameTheme(this.postForm)\n this.postForm = Object.assign(this.postForm, data)\n this.$forceUpdate()\n console.log(this.postForm)\n }\n\n private async onCancel() {\n try {\n await this.$confirm('确认不保存当前信息?', 'Warning', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n })\n this.$store.dispatch('delView', this.$route)\n this.$router.go(-1)\n } catch (err) {\n\n }\n }\n\n private async saveVal() {\n try {\n await this.$refs.postForm.validate()\n const { data } = await saveGameTheme(this.postForm)\n this.$notify({\n title: 'Success',\n message: '操作成功',\n type: 'success',\n duration: 2000\n })\n } catch (err) {\n\n }\n }\n}\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./game_theme.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./game_theme.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./game_theme.vue?vue&type=template&id=616030e4&scoped=true&\"\nimport script from \"./game_theme.vue?vue&type=script&lang=ts&\"\nexport * from \"./game_theme.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./game_theme.vue?vue&type=style&index=0&id=616030e4&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"616030e4\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=62f54f8e&lang=scss&scoped=true&\"","export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./game_theme.vue?vue&type=style&index=0&id=616030e4&lang=scss&scoped=true&\""],"sourceRoot":""} \ No newline at end of file diff --git a/dist/js/chunk-37ee6f14.d353a8ad.js b/dist/js/chunk-37ee6f14.07ce1530.js similarity index 99% rename from dist/js/chunk-37ee6f14.d353a8ad.js rename to dist/js/chunk-37ee6f14.07ce1530.js index 6b5170d..d13d4f4 100644 --- a/dist/js/chunk-37ee6f14.d353a8ad.js +++ b/dist/js/chunk-37ee6f14.07ce1530.js @@ -1,2 +1,2 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-37ee6f14"],{"31a8":function(e,t,a){"use strict";var r=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"upload-corp-container"},[a("div",{staticClass:"source"},[a("div",[a("div",{staticClass:"avatar-uploader"},[a("div",{staticClass:"el-upload el-upload--text",attrs:{tabindex:"0"}},[e.hasImg?e._e():a("i",{staticClass:"el-icon-plus avatar-uploader-icon",on:{click:e.handleClick}}),e.hasImg?a("img",{staticClass:"upload-preview-img",attrs:{alt:"",src:e.initialImgUrl},on:{click:e.showInitImg}}):e._e(),a("input",{ref:"fileinput",staticClass:"el-upload__input",attrs:{type:"file",name:"file",accept:"image/*"},on:{change:e.handleChange}}),e.hasImg?a("div",{staticClass:"action-bar"},[a("el-button",{attrs:{type:"success",size:"small",icon:"el-icon-edit"},on:{click:e.handleClick}},[e._v(" 替换 ")]),a("el-button",{attrs:{type:"danger",size:"small",icon:"el-icon-delete"},on:{click:e.removeImg}},[e._v(" 移除 ")])],1):e._e()])])])]),a("div",{directives:[{name:"show",rawName:"v-show",value:e.show,expression:"show"}],staticClass:"vue-image-crop-upload"},[a("div",{staticClass:"vicp-wrap"},[a("div",{staticClass:"vicp-close",on:{click:e.off}},[a("i",{staticClass:"vicp-icon4"})]),2===e.step?a("div",{staticClass:"vicp-step2"},[a("div",{staticClass:"vicp-crop"},[a("div",{directives:[{name:"show",rawName:"v-show",value:!0,expression:"true"}],staticClass:"vicp-crop-left"},[a("div",{staticClass:"vicp-img-container",on:{wheel:function(t){return t.preventDefault(),e.handleMouseWheel(t)}}},[a("img",{ref:"img",staticClass:"vicp-img",style:e.sourceImgStyle,attrs:{src:e.sourceImgUrl,draggable:"false",alt:""},on:{drag:e.preventDefault,dragstart:e.preventDefault,dragend:e.preventDefault,dragleave:e.preventDefault,dragover:e.preventDefault,dragenter:e.preventDefault,drop:e.preventDefault,touchstart:e.imgStartMove,touchmove:e.imgMove,touchend:e.createImg,touchcancel:e.createImg,mousedown:e.imgStartMove,mousemove:e.imgMove,mouseup:e.createImg,mouseout:e.createImg}}),a("div",{staticClass:"vicp-img-shade vicp-img-shade-1",style:e.sourceImgShadeStyle}),a("div",{staticClass:"vicp-img-shade vicp-img-shade-2",style:e.sourceImgShadeStyle})]),a("div",{staticClass:"vicp-range"},[a("input",{directives:[{name:"model",rawName:"v-model",value:e.scale.range,expression:"scale.range"}],attrs:{type:"range",step:"1",min:"0",max:"100"},domProps:{value:e.scale.range},on:{mousemove:e.zoomChange,__r:function(t){return e.$set(e.scale,"range",t.target.value)}}}),a("i",{staticClass:"vicp-icon5",on:{mousedown:e.startZoomSub,mouseout:e.endZoomSub,mouseup:e.endZoomSub}}),a("i",{staticClass:"vicp-icon6",on:{mousedown:e.startZoomAdd,mouseout:e.endZoomAdd,mouseup:e.endZoomAdd}})]),e.noRotate?e._e():a("div",{staticClass:"vicp-rotate"},[a("i",{on:{click:e.rotateImg}},[e._v("↻")])])]),a("div",{directives:[{name:"show",rawName:"v-show",value:!0,expression:"true"}],staticClass:"vicp-crop-right"},[a("div",{staticClass:"vicp-preview"},[e.noSquare?e._e():a("div",{staticClass:"vicp-preview-item"},[a("img",{style:e.previewStyle,attrs:{src:e.createImgUrl}}),a("span",[e._v("预览")])]),e.noCircle?e._e():a("div",{staticClass:"vicp-preview-item vicp-preview-item-circle"},[a("img",{style:e.previewStyle,attrs:{src:e.createImgUrl}}),a("span",[e._v("预览")])])])])]),a("div",{staticClass:"vicp-operate"},[a("el-button",{attrs:{type:"warning",size:"small",icon:"el-icon-edit"},on:{click:e.off}},[e._v(" 取消 ")]),a("el-button",{attrs:{type:"primary",size:"small",icon:"el-icon-success"},on:{click:e.prepareUpload}},[e._v(" 保存 ")])],1)]):e._e(),3===e.step?a("div",{staticClass:"vicp-step3"},[a("div",{staticClass:"vicp-upload"},[a("span",{directives:[{name:"show",rawName:"v-show",value:1===e.loading,expression:"loading === 1"}],staticClass:"vicp-loading"},[e._v("正在上传……")]),a("div",{staticClass:"vicp-progress-wrap"},[a("span",{directives:[{name:"show",rawName:"v-show",value:1===e.loading,expression:"loading === 1"}],staticClass:"vicp-progress",style:e.progressStyle})]),a("div",{directives:[{name:"show",rawName:"v-show",value:2===e.loading,expression:"loading === 2"}],staticClass:"vicp-success"},[a("i",{staticClass:"vicp-icon3"}),e._v(" 上传成功 ")])]),a("div",{staticClass:"vicp-operate"},[a("a",{on:{click:function(t){return e.setStep(2)},mousedown:e.ripple}},[e._v("返回")]),a("a",{on:{click:e.off,mousedown:e.ripple}},[e._v("关闭")])])]):e._e(),a("canvas",{directives:[{name:"show",rawName:"v-show",value:!1,expression:"false"}],ref:"canvas",attrs:{width:e.width,height:e.height}})])])])},i=[],s=a("1da1"),o=a("53ca"),n=a("d4ec"),c=a("bee2"),l=a("262e"),u=a("2caf"),p=(a("96cf"),a("c975"),a("4795"),a("b0c0"),a("4160"),a("159b"),a("b64b"),a("d3b7"),a("9ab4")),h=a("1b40"),d=(a("4ec9"),a("3ca3"),a("ddb0"),new Map([["jpg","image/jpeg"],["png","image/png"],["gif","image/gif"],["svg","image/svg+xml"],["psd","image/photoshop"]]));a("ac1f"),a("1276"),a("ace4"),a("5cc6"),a("9a8c"),a("a975"),a("735e"),a("c1ac"),a("d139"),a("3a7b"),a("d5d6"),a("82f8"),a("e91f"),a("60bd"),a("5f96"),a("3280"),a("3fcc"),a("ca91"),a("25a1"),a("cd26"),a("3c5d"),a("2954"),a("649e"),a("219c"),a("170b"),a("b39a"),a("72f7");function m(e,t){e=e.split(",")[1],e=window.atob(e);for(var a=new Uint8Array(e.length),r=0;rs&&(u=i.width/e,l=i.width/a,n=(i.height-l)/2),{scale:u,x:o,y:n,width:c,height:l}}},{key:"sourceImgShadeStyle",get:function(){var e=this.sourceImgMasking,t=this.sourceImgContainer,a=t,r=e,i=r.width===a.width?r.width:(a.width-r.width)/2,s=r.height===a.height?r.height:(a.height-r.height)/2;return{width:i+"px",height:s+"px"}}},{key:"previewStyle",get:function(){var e=this.ratio,t=this.previewContainer,a=t,r=a.width,i=a.height,s=r/i;return es&&(i=a.width/e),{width:r+"px",height:i+"px"}}},{key:"beforeUnmount",value:function(){document.removeEventListener("keyup",this.handleEscClose)}},{key:"mounted",value:function(){this.sourceImgUrl&&this.startCrop()}},{key:"showInitImg",value:function(){this.initialImgUrl&&(this.sourceImgUrl=this.initialImgUrl,this.startCrop())}},{key:"handleEscClose",value:function(e){!this.show||"Escape"!==e.key&&27!==e.keyCode||this.off()}},{key:"ripple",value:function(e){g(e)}},{key:"stepChange",value:function(){this.show=1!==this.step}},{key:"checkShowError",value:function(){this.hasError&&this.errorMsg&&(this.$message.error(this.errorMsg),this.hasError=!1,this.errorMsg="")}},{key:"off",value:function(){var e=this;setTimeout((function(){e.show=!1,3===e.step&&2===e.loading&&e.setStep(1)}),200)}},{key:"setStep",value:function(e){var t=this;setTimeout((function(){t.step=e}),200)}},{key:"preventDefault",value:function(e){return e.preventDefault(),!1}},{key:"handleClick",value:function(e){1!==this.loading&&e.target!==this.$refs.fileinput&&(e.preventDefault(),this.$refs.fileinput.click())}},{key:"handleChange",value:function(e){if(e.preventDefault(),1!==this.loading){var t=e.target.files||e.dataTransfer.files;this.reset(),this.checkFile(t[0])?this.setSourceImg(t[0]):this.off()}}},{key:"checkFile",value:function(e){var t=this.maxSize;return-1===e.type.indexOf("image")?(this.hasError=!0,this.errorMsg="仅限图片格式",!1):!(e.size/1024>t)||(this.hasError=!0,this.errorMsg="单文件大小不能超过 "+t+"kb",!1)}},{key:"reset",value:function(){this.loading=0,this.hasError=!1,this.errorMsg="",this.progress=0}},{key:"setSourceImg",value:function(e){this.$emit("src-file-set",e.name,e.type,e.size);var t=new FileReader,a=this;t.onload=function(e){a.sourceImgUrl=t.result+"",a.startCrop()},t.readAsDataURL(e)}},{key:"startCrop",value:function(){var e=this.width,t=this.height,a=this.ratio,r=this.scale,i=this.sourceImgUrl,s=this.sourceImgMasking,o=s,n=new Image;n.src=i,n.setAttribute("crossOrigin","Anonymous");var c=this;n.onload=function(){var i=n.naturalWidth,s=n.naturalHeight,l=i/s,u=o.width,p=o.height,h=0,d=0;if(il&&(p=u/l,d=(o.height-p)/2),a0&&(g=0),f>0&&(f=0),g0&&this.zoomImg(t.range>=100?100:++t.range),e.wheelDelta<0&&this.zoomImg(t.range<=0?0:--t.range)):e.detail&&(e.detail>0&&this.zoomImg(t.range>=100?100:++t.range),e.detail<0&&this.zoomImg(t.range<=0?0:--t.range))}},{key:"startZoomAdd",value:function(e){var t=this.scale,a=this;function r(){if(t.zoomAddOn){var e=t.range>=100?100:++t.range;a.zoomImg(e),setTimeout((function(){r()}),60)}}t.zoomAddOn=!0,r()}},{key:"endZoomAdd",value:function(e){this.scale.zoomAddOn=!1}},{key:"startZoomSub",value:function(e){var t=this.scale,a=this;function r(){if(t.zoomSubOn){var e=t.range<=0?0:--t.range;a.zoomImg(e),setTimeout((function(){r()}),60)}}t.zoomSubOn=!0,r()}},{key:"endZoomSub",value:function(e){var t=this.scale;t.zoomSubOn=!1}},{key:"zoomChange",value:function(e){this.zoomImg(e.target.value)}},{key:"zoomImg",value:function(e){var t=this.sourceImgMasking,a=this.scale,r=a.maxWidth,i=a.maxHeight,s=a.minWidth,o=a.minHeight,n=a.width,c=a.height,l=a.x,u=a.y,p=t,h=p.width,d=p.height,m=s+(r-s)*e/100,g=o+(i-o)*e/100,f=h/2-m/n*(h/2-l),v=d/2-g/c*(d/2-u);f>0&&(f=0),v>0&&(v=0),f1&&(this.postForm.beginDay=this.dataRange[0].getTime(),this.postForm.endDay=this.dataRange[1].getTime()),this.postForm.qtypes=this.$refs.typeTree.getCheckedKeys(),this.loading=!0,e.next=15,Object(w["g"])(this.postForm);case 15:l=e.sent,u=l.data,this.postForm=u,this.loading=!1,this.$notify({title:"Success",message:"The post save successfully",type:"success",duration:2e3}),I["i"].$emit(I["a"],{}),e.next=27;break;case 23:return e.prev=23,e.t0=e["catch"](0),console.error("Submit Error!"),e.abrupt("return",!1);case 27:case"end":return e.stop()}}),e,this,[[0,23]])})));function t(){return e.apply(this,arguments)}return t}()},{key:"onCancel",value:function(){var e=Object(o["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$confirm("确认不保存当前活动信息?","Warning",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"});case 3:this.$store.dispatch("delView",this.$route),this.$router.go(-1),e.next=9;break;case 7:e.prev=7,e.t0=e["catch"](0);case 9:case"end":return e.stop()}}),e,this,[[0,7]])})));function t(){return e.apply(this,arguments)}return t}()},{key:"getRemoteDeptList",value:function(){var e=Object(o["a"])(regeneratorRuntime.mark((function e(){var t,a;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(y["k"])({});case 2:if(t=e.sent,a=t.data,a.records){e.next=6;break}return e.abrupt("return");case 6:this.allDepts=a.records;case 7:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"fetchMyShop",value:function(){var e=Object(o["a"])(regeneratorRuntime.mark((function e(){var t,a;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(y["d"])();case 2:t=e.sent,a=t.data,this.typeSelected=a.qtypes,console.log(this.typeSelected),this.$refs.typeTree.setCheckedKeys(this.typeSelected);case 7:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"dataChange",value:function(e){console.log(this.selectDate)}},{key:"initTimes",value:function(){for(var e=0;e<24;e++)for(var t=0;t<4;t++){var a=3600*e+15*t*60,r=Object(k["f"])(a,!1);this.times.push(r)}this.monthDays.push({id:0,label:"全选"});for(var i=1;i<32;i++)this.monthDays.push({id:i,label:i+""})}},{key:"timeChange",value:function(e){if(e.length>0){var t=this.selectTime[this.selectTime.length-1];/^\d{1,2}:\d{1,2}$/.test(t)||this.selectTime.pop(),t=Object(k["f"])(Object(k["g"])(t),!1),this.selectTime.splice(this.selectTime.length-1,1,t),console.log(this.selectTime)}}},{key:"monthDaysChange",value:function(e){if(e.indexOf(0)>=0){this.postForm.monthDays.length=0;for(var t=1;t<32;t++)this.postForm.monthDays.push(t)}}},{key:"onShopChange",value:function(){var e;if(this.postForm.shop&&this.getCouponList(this.postForm.shop),(null===(e=this.postForm.qtypes)||void 0===e?void 0:e.length)>0)this.typeSelected=this.postForm.qtypes;else if(this.postForm.shop){var t,a,r=Object(s["a"])(this.allDepts);try{for(r.s();!(a=r.n()).done;){var i=a.value;if(i._id===this.postForm.shop){t=i;break}}}catch(o){r.e(o)}finally{r.f()}this.typeSelected=t?t.qtypes:[]}this.$refs.typeTree.setCheckedKeys(this.typeSelected)}},{key:"getRemoteCategory",value:function(){var e=Object(o["a"])(regeneratorRuntime.mark((function e(){var t,a,r,i,o,n,c,l,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(x["d"])();case 2:t=e.sent,a=t.data,r=Object(s["a"])(a);try{for(r.s();!(i=r.n()).done;){o=i.value,n=[],c=Object(s["a"])(o.children);try{for(c.s();!(l=c.n()).done;)u=l.value,n.push({id:u._id,label:u.name})}catch(p){c.e(p)}finally{c.f()}this.typeOptions.push({id:o._id,label:o.name,children:n})}}catch(p){r.e(p)}finally{r.f()}case 6:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"getCouponList",value:function(){var e=Object(o["a"])(regeneratorRuntime.mark((function e(t){var a,r;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(j["d"])({shop:t});case 2:a=e.sent,r=a.data,this.coupons=r.records;case 5:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"formatCoupon",value:function(e,t,a,r){var i,o="未知(".concat(a,")"),n=this.postForm.rewardInfo[r],c=Object(s["a"])(this.coupons);try{for(c.s();!(i=c.n()).done;){var l=i.value;if(l._id===a){o=l.name;break}}}catch(u){c.e(u)}finally{c.f()}return"".concat(o," x ").concat(n.count)}},{key:"formatRank",value:function(e,t,a,r){var i=this.postForm.rewardInfo[r],s="第 ".concat(i.rank," 名");return i.rankEnd&&(s="第 ".concat(i.rank," 至 ").concat(i.rankEnd," 名")),s}},{key:"deleteRank",value:function(){var e=Object(o["a"])(regeneratorRuntime.mark((function e(t){var a;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return a=t.$index,e.prev=1,e.next=4,this.$confirm("Confirm to remove the record?","Warning",{confirmButtonText:"Confirm",cancelButtonText:"Cancel",type:"warning"});case 4:this.postForm.rewardInfo.splice(a,1),this.$message({type:"success",message:"删除成功, 请点击保存"}),e.next=10;break;case 8:e.prev=8,e.t0=e["catch"](1);case 10:case"end":return e.stop()}}),e,this,[[1,8]])})));function t(t){return e.apply(this,arguments)}return t}()},{key:"handleCreateReward",value:function(){this.record=Object.assign({},w["b"]),this.record.id=this.postForm.rewardInfo.length,this.dialogType="new",this.dialogVisible=!0}},{key:"handleEdit",value:function(e){this.dialogType="edit",this.dialogVisible=!0,this.record=Object(O["cloneDeep"])(e.row)}},{key:"closeModal",value:function(){this.dialogVisible=!1,this.$refs.modalForm.clearValidate()}},{key:"saveReward",value:function(){var e=this,t="edit"===this.dialogType;this.$refs.modalForm.validate(function(){var a=Object(o["a"])(regeneratorRuntime.mark((function a(r){var i;return regeneratorRuntime.wrap((function(a){while(1)switch(a.prev=a.next){case 0:if(r){a.next=3;break}return e.$message.error("请按要求填写表单"),a.abrupt("return",!1);case 3:if(!t){a.next=14;break}i=0;case 5:if(!(is&&(u=i.width/e,l=i.width/a,n=(i.height-l)/2),{scale:u,x:o,y:n,width:c,height:l}}},{key:"sourceImgShadeStyle",get:function(){var e=this.sourceImgMasking,t=this.sourceImgContainer,a=t,r=e,i=r.width===a.width?r.width:(a.width-r.width)/2,s=r.height===a.height?r.height:(a.height-r.height)/2;return{width:i+"px",height:s+"px"}}},{key:"previewStyle",get:function(){var e=this.ratio,t=this.previewContainer,a=t,r=a.width,i=a.height,s=r/i;return es&&(i=a.width/e),{width:r+"px",height:i+"px"}}},{key:"beforeUnmount",value:function(){document.removeEventListener("keyup",this.handleEscClose)}},{key:"mounted",value:function(){this.sourceImgUrl&&this.startCrop()}},{key:"showInitImg",value:function(){this.initialImgUrl&&(this.sourceImgUrl=this.initialImgUrl,this.startCrop())}},{key:"handleEscClose",value:function(e){!this.show||"Escape"!==e.key&&27!==e.keyCode||this.off()}},{key:"ripple",value:function(e){g(e)}},{key:"stepChange",value:function(){this.show=1!==this.step}},{key:"checkShowError",value:function(){this.hasError&&this.errorMsg&&(this.$message.error(this.errorMsg),this.hasError=!1,this.errorMsg="")}},{key:"off",value:function(){var e=this;setTimeout((function(){e.show=!1,3===e.step&&2===e.loading&&e.setStep(1)}),200)}},{key:"setStep",value:function(e){var t=this;setTimeout((function(){t.step=e}),200)}},{key:"preventDefault",value:function(e){return e.preventDefault(),!1}},{key:"handleClick",value:function(e){1!==this.loading&&e.target!==this.$refs.fileinput&&(e.preventDefault(),this.$refs.fileinput.click())}},{key:"handleChange",value:function(e){if(e.preventDefault(),1!==this.loading){var t=e.target.files||e.dataTransfer.files;this.reset(),this.checkFile(t[0])?this.setSourceImg(t[0]):this.off()}}},{key:"checkFile",value:function(e){var t=this.maxSize;return-1===e.type.indexOf("image")?(this.hasError=!0,this.errorMsg="仅限图片格式",!1):!(e.size/1024>t)||(this.hasError=!0,this.errorMsg="单文件大小不能超过 "+t+"kb",!1)}},{key:"reset",value:function(){this.loading=0,this.hasError=!1,this.errorMsg="",this.progress=0}},{key:"setSourceImg",value:function(e){this.$emit("src-file-set",e.name,e.type,e.size);var t=new FileReader,a=this;t.onload=function(e){a.sourceImgUrl=t.result+"",a.startCrop()},t.readAsDataURL(e)}},{key:"startCrop",value:function(){var e=this.width,t=this.height,a=this.ratio,r=this.scale,i=this.sourceImgUrl,s=this.sourceImgMasking,o=s,n=new Image;n.src=i,n.setAttribute("crossOrigin","Anonymous");var c=this;n.onload=function(){var i=n.naturalWidth,s=n.naturalHeight,l=i/s,u=o.width,p=o.height,h=0,d=0;if(il&&(p=u/l,d=(o.height-p)/2),a0&&(g=0),f>0&&(f=0),g0&&this.zoomImg(t.range>=100?100:++t.range),e.wheelDelta<0&&this.zoomImg(t.range<=0?0:--t.range)):e.detail&&(e.detail>0&&this.zoomImg(t.range>=100?100:++t.range),e.detail<0&&this.zoomImg(t.range<=0?0:--t.range))}},{key:"startZoomAdd",value:function(e){var t=this.scale,a=this;function r(){if(t.zoomAddOn){var e=t.range>=100?100:++t.range;a.zoomImg(e),setTimeout((function(){r()}),60)}}t.zoomAddOn=!0,r()}},{key:"endZoomAdd",value:function(e){this.scale.zoomAddOn=!1}},{key:"startZoomSub",value:function(e){var t=this.scale,a=this;function r(){if(t.zoomSubOn){var e=t.range<=0?0:--t.range;a.zoomImg(e),setTimeout((function(){r()}),60)}}t.zoomSubOn=!0,r()}},{key:"endZoomSub",value:function(e){var t=this.scale;t.zoomSubOn=!1}},{key:"zoomChange",value:function(e){this.zoomImg(e.target.value)}},{key:"zoomImg",value:function(e){var t=this.sourceImgMasking,a=this.scale,r=a.maxWidth,i=a.maxHeight,s=a.minWidth,o=a.minHeight,n=a.width,c=a.height,l=a.x,u=a.y,p=t,h=p.width,d=p.height,m=s+(r-s)*e/100,g=o+(i-o)*e/100,f=h/2-m/n*(h/2-l),v=d/2-g/c*(d/2-u);f>0&&(f=0),v>0&&(v=0),f1&&(this.postForm.beginDay=this.dataRange[0].getTime(),this.postForm.endDay=this.dataRange[1].getTime()),this.postForm.qtypes=this.$refs.typeTree.getCheckedKeys(),this.loading=!0,e.next=15,Object(w["g"])(this.postForm);case 15:l=e.sent,u=l.data,this.postForm=u,this.loading=!1,this.$notify({title:"Success",message:"The post save successfully",type:"success",duration:2e3}),I["i"].$emit(I["a"],{}),e.next=27;break;case 23:return e.prev=23,e.t0=e["catch"](0),console.error("Submit Error!"),e.abrupt("return",!1);case 27:case"end":return e.stop()}}),e,this,[[0,23]])})));function t(){return e.apply(this,arguments)}return t}()},{key:"onCancel",value:function(){var e=Object(o["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$confirm("确认不保存当前活动信息?","Warning",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"});case 3:this.$store.dispatch("delView",this.$route),this.$router.go(-1),e.next=9;break;case 7:e.prev=7,e.t0=e["catch"](0);case 9:case"end":return e.stop()}}),e,this,[[0,7]])})));function t(){return e.apply(this,arguments)}return t}()},{key:"getRemoteDeptList",value:function(){var e=Object(o["a"])(regeneratorRuntime.mark((function e(){var t,a;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(y["k"])({});case 2:if(t=e.sent,a=t.data,a.records){e.next=6;break}return e.abrupt("return");case 6:this.allDepts=a.records;case 7:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"fetchMyShop",value:function(){var e=Object(o["a"])(regeneratorRuntime.mark((function e(){var t,a;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(y["d"])();case 2:t=e.sent,a=t.data,this.typeSelected=a.qtypes,console.log(this.typeSelected),this.$refs.typeTree.setCheckedKeys(this.typeSelected);case 7:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"dataChange",value:function(e){console.log(this.selectDate)}},{key:"initTimes",value:function(){for(var e=0;e<24;e++)for(var t=0;t<4;t++){var a=3600*e+15*t*60,r=Object(k["f"])(a,!1);this.times.push(r)}this.monthDays.push({id:0,label:"全选"});for(var i=1;i<32;i++)this.monthDays.push({id:i,label:i+""})}},{key:"timeChange",value:function(e){if(e.length>0){var t=this.selectTime[this.selectTime.length-1];/^\d{1,2}:\d{1,2}$/.test(t)||this.selectTime.pop(),t=Object(k["f"])(Object(k["g"])(t),!1),this.selectTime.splice(this.selectTime.length-1,1,t),console.log(this.selectTime)}}},{key:"monthDaysChange",value:function(e){if(e.indexOf(0)>=0){this.postForm.monthDays.length=0;for(var t=1;t<32;t++)this.postForm.monthDays.push(t)}}},{key:"onShopChange",value:function(){var e;if(this.postForm.shop&&this.getCouponList(this.postForm.shop),(null===(e=this.postForm.qtypes)||void 0===e?void 0:e.length)>0)this.typeSelected=this.postForm.qtypes;else if(this.postForm.shop){var t,a,r=Object(s["a"])(this.allDepts);try{for(r.s();!(a=r.n()).done;){var i=a.value;if(i._id===this.postForm.shop){t=i;break}}}catch(o){r.e(o)}finally{r.f()}this.typeSelected=t?t.qtypes:[]}this.$refs.typeTree.setCheckedKeys(this.typeSelected)}},{key:"getRemoteCategory",value:function(){var e=Object(o["a"])(regeneratorRuntime.mark((function e(){var t,a,r,i,o,n,c,l,u;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(x["d"])();case 2:t=e.sent,a=t.data,r=Object(s["a"])(a);try{for(r.s();!(i=r.n()).done;){o=i.value,n=[],c=Object(s["a"])(o.children);try{for(c.s();!(l=c.n()).done;)u=l.value,n.push({id:u._id,label:u.name})}catch(p){c.e(p)}finally{c.f()}this.typeOptions.push({id:o._id,label:o.name,children:n})}}catch(p){r.e(p)}finally{r.f()}case 6:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"getCouponList",value:function(){var e=Object(o["a"])(regeneratorRuntime.mark((function e(t){var a,r;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(j["d"])({shop:t});case 2:a=e.sent,r=a.data,this.coupons=r.records;case 5:case"end":return e.stop()}}),e,this)})));function t(t){return e.apply(this,arguments)}return t}()},{key:"formatCoupon",value:function(e,t,a,r){var i,o="未知(".concat(a,")"),n=this.postForm.rewardInfo[r],c=Object(s["a"])(this.coupons);try{for(c.s();!(i=c.n()).done;){var l=i.value;if(l._id===a){o=l.name;break}}}catch(u){c.e(u)}finally{c.f()}return"".concat(o," x ").concat(n.count)}},{key:"formatRank",value:function(e,t,a,r){var i=this.postForm.rewardInfo[r],s="第 ".concat(i.rank," 名");return i.rankEnd&&(s="第 ".concat(i.rank," 至 ").concat(i.rankEnd," 名")),s}},{key:"deleteRank",value:function(){var e=Object(o["a"])(regeneratorRuntime.mark((function e(t){var a;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return a=t.$index,e.prev=1,e.next=4,this.$confirm("Confirm to remove the record?","Warning",{confirmButtonText:"Confirm",cancelButtonText:"Cancel",type:"warning"});case 4:this.postForm.rewardInfo.splice(a,1),this.$message({type:"success",message:"删除成功, 请点击保存"}),e.next=10;break;case 8:e.prev=8,e.t0=e["catch"](1);case 10:case"end":return e.stop()}}),e,this,[[1,8]])})));function t(t){return e.apply(this,arguments)}return t}()},{key:"handleCreateReward",value:function(){this.record=Object.assign({},w["b"]),this.record.id=this.postForm.rewardInfo.length,this.dialogType="new",this.dialogVisible=!0}},{key:"handleEdit",value:function(e){this.dialogType="edit",this.dialogVisible=!0,this.record=Object(O["cloneDeep"])(e.row)}},{key:"closeModal",value:function(){this.dialogVisible=!1,this.$refs.modalForm.clearValidate()}},{key:"saveReward",value:function(){var e=this,t="edit"===this.dialogType;this.$refs.modalForm.validate(function(){var a=Object(o["a"])(regeneratorRuntime.mark((function a(r){var i;return regeneratorRuntime.wrap((function(a){while(1)switch(a.prev=a.next){case 0:if(r){a.next=3;break}return e.$message.error("请按要求填写表单"),a.abrupt("return",!1);case 3:if(!t){a.next=14;break}i=0;case 5:if(!(i = new Map([\n ['jpg', 'image/jpeg'],\n ['png', 'image/png'],\n ['gif', 'image/gif'],\n ['svg', 'image/svg+xml'],\n ['psd', 'image/photoshop']\n])\n","/**\n * database64文件格式转换为2进制\n *\n * @param {[String]} data dataURL 的格式为 “data:image/png;base64,****”,逗号之前都是一些说明性的文字,我们只需要逗号之后的就行了\n * @param {[String]} mime [description]\n * @return {[blob]} [description]\n */\nexport function data2blob(data: any, mime: any) {\n data = data.split(',')[1]\n data = window.atob(data)\n const ia = new Uint8Array(data.length)\n for (let i = 0; i < data.length; i++) {\n ia[i] = data.charCodeAt(i)\n }\n // canvas.toDataURL 返回的默认格式就是 image/png\n return new Blob([ia], {\n type: mime\n })\n}\n","/**\n * 点击波纹效果\n *\n * @param {[event]} e [description]\n * @param {[Object]} argOpts [description]\n * @return {[bollean]} [description]\n */\nexport function effectRipple(e: any, argOpts?: any) {\n const opts = Object.assign({\n ele: e.target, // 波纹作用元素\n // eslint-disable-next-line no-irregular-whitespace\n type: 'hit', // hit点击位置扩散 center中心点扩展\n bgc: 'rgba(0, 0, 0, 0.15)' // 波纹颜色\n }, argOpts)\n const target = opts.ele\n if (target) {\n const rect = target.getBoundingClientRect()\n let ripple = target.querySelector('.e-ripple')\n if (!ripple) {\n ripple = document.createElement('span')\n ripple.className = 'e-ripple'\n ripple.style.height = ripple.style.width = Math.max(rect.width, rect.height) + 'px'\n target.appendChild(ripple)\n } else {\n ripple.className = 'e-ripple'\n }\n switch (opts.type) {\n case 'center':\n ripple.style.top = (rect.height / 2 - ripple.offsetHeight / 2) + 'px'\n ripple.style.left = (rect.width / 2 - ripple.offsetWidth / 2) + 'px'\n break\n default:\n ripple.style.top = (e.pageY - rect.top - ripple.offsetHeight / 2 - document.body.scrollTop) + 'px'\n ripple.style.left = (e.pageX - rect.left - ripple.offsetWidth / 2 - document.body.scrollLeft) + 'px'\n }\n ripple.style.backgroundColor = opts.bgc\n ripple.className = 'e-ripple z-active'\n return false\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator'\nimport { mimes } from './utils/mimes'\nimport { data2blob } from './utils/data2blob'\nimport { effectRipple } from '@/components/UploadCorpImage/utils/effectRipple'\n\n@Component({\n name: 'UploadCorpImage',\n model: {\n prop: 'initialImgUrl',\n event: 'update'\n }\n})\nexport default class extends Vue {\n // 域,上传文件name,触发事件会带上(如果一个页面多个图片上传控件,可以做区分\n @Prop({ default: 'avatar' }) private field!: string\n // 原名key,类似于id,触发事件会带上(如果一个页面多个图片上传控件,可以做区分\n @Prop({ default: '0' }) private ki!: string\n // 上传地址\n @Prop({ default: 'https://opm.kingsome.cn/api/upload' }) private url!: string\n // 其他要上传文件附带的数据,对象格式\n @Prop({ default: () => { return { sub_path: 'game', type: 'image' } } }) private params!: Object\n // Add custom headers\n @Prop({ default: null }) private headers!: Object\n // 剪裁图片的宽\n @Prop({ default: 200 }) private width!: number\n // 剪裁图片的高\n @Prop({ default: 200 }) private height!: number\n // 不显示旋转功能\n @Prop({ default: true }) private noRotate!: boolean\n // 不预览圆形图片\n @Prop({ default: true }) private noCircle!: boolean\n // 不预览方形图片\n @Prop({ default: false }) private noSquare!: boolean\n // 单文件大小限制\n @Prop({ default: 10240 }) private maxSize!: number\n // 图片上传格式\n @Prop({ default: 'png' }) private imgFormat!: string\n // 图片背景 jpg情况下生效\n @Prop({ default: '#fff' }) private imgBgc!: string\n // 是否支持跨域\n @Prop({ default: false }) private withCredentials!: boolean\n @Prop({ default: 'POST' }) private method!: string\n @Prop({ default: '' }) private initialImgUrl!: string\n\n private allowImgFormat: string[] = [\n 'gif',\n 'jpg',\n 'png'\n ]\n\n // 图片的mime\n private mime = 'image/png'\n private show = false\n // 浏览器是否支持该控件\n private isSupported = true\n // 浏览器是否支持触屏事件\n // eslint-disable-next-line no-prototype-builtins\n private isSupportTouch = document.hasOwnProperty('ontouchstart')\n // 步骤 1选择文件 2剪裁 3上传\n private step = 1\n\n // 上传状态及进度\n private loading = 0 // 0未开始 1正在 2成功 3错误\n private progress = 0\n\n // 是否有错误及错误信息\n private hasError = false\n private errorMsg = ''\n\n // 需求图宽高比\n private ratio = 1\n\n // 原图地址、生成图片地址\n private sourceImg: HTMLImageElement | null = null\n private sourceImgUrl: string | null = this.initialImgUrl\n private createImgUrl: string | null = this.initialImgUrl\n\n // 原图片拖动事件初始值\n private sourceImgMouseDown = {\n on: false,\n mX: 0, // 鼠标按下的坐标\n mY: 0,\n x: 0, // scale原图坐标\n y: 0\n }\n\n // 生成图片预览的容器大小\n private previewContainer = {\n width: 100,\n height: 100\n }\n\n // 原图容器宽高\n private sourceImgContainer = { // sic\n width: 240,\n height: 184 // 如果生成图比例与此一致会出现bug,先改成特殊的格式吧,哈哈哈\n }\n\n // 原图展示属性\n private scale = {\n zoomAddOn: false, // 按钮缩放事件开启\n zoomSubOn: false, // 按钮缩放事件开启\n range: 1, // 最大100\n\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n maxWidth: 0,\n maxHeight: 0,\n minWidth: 0, // 最宽\n minHeight: 0,\n naturalWidth: 0, // 原宽\n naturalHeight: 0\n }\n\n $refs!: {\n fileinput: HTMLInputElement\n canvas: HTMLCanvasElement\n }\n\n created() {\n const {\n imgFormat,\n allowImgFormat\n } = this\n let isSupported = true\n const tempImgFormat = allowImgFormat.indexOf(imgFormat) === -1 ? 'jpg' : imgFormat\n const mime: string = mimes.get(tempImgFormat)!\n if (typeof FormData !== 'function') {\n isSupported = false\n }\n this.ratio = this.width / this.height\n this.mime = mime\n this.isSupported = isSupported\n // 绑定按键esc隐藏此插件事件\n document.addEventListener('keyup', this.handleEscClose)\n }\n\n get hasImg() {\n return !!this.initialImgUrl\n }\n\n // 进度条样式\n get progressStyle() {\n return {\n width: this.progress + '%'\n }\n }\n\n // 原图样式\n get sourceImgStyle() {\n const top = this.scale.y + this.sourceImgMasking.y + 'px'\n const left = this.scale.x + this.sourceImgMasking.x + 'px'\n return {\n top,\n left,\n width: this.scale.width + 'px',\n height: this.scale.height + 'px'// 兼容 Opera\n }\n }\n\n // 原图蒙版属性\n get sourceImgMasking() {\n const {\n width,\n height,\n ratio,\n sourceImgContainer\n } = this\n const sic = sourceImgContainer\n const sicRatio = sic.width / sic.height // 原图容器宽高比\n let x = 0\n let y = 0\n let w = sic.width\n let h = sic.height\n let scale = 1\n if (ratio < sicRatio) {\n scale = sic.height / height\n w = sic.height * ratio\n x = (sic.width - w) / 2\n }\n if (ratio > sicRatio) {\n scale = sic.width / width\n h = sic.width / ratio\n y = (sic.height - h) / 2\n }\n return {\n scale, // 蒙版相对需求宽高的缩放\n x,\n y,\n width: w,\n height: h\n }\n }\n\n // 原图遮罩样式\n get sourceImgShadeStyle() {\n const {\n sourceImgMasking,\n sourceImgContainer\n } = this\n const sic = sourceImgContainer\n const sim = sourceImgMasking\n const w = sim.width === sic.width ? sim.width : (sic.width - sim.width) / 2\n const h = sim.height === sic.height ? sim.height : (sic.height - sim.height) / 2\n return {\n width: w + 'px',\n height: h + 'px'\n }\n }\n\n get previewStyle() {\n const {\n ratio,\n previewContainer\n } = this\n const pc = previewContainer\n let w = pc.width\n let h = pc.height\n const pcRatio = w / h\n if (ratio < pcRatio) {\n w = pc.height * ratio\n }\n if (ratio > pcRatio) {\n h = pc.width / ratio\n }\n return {\n width: w + 'px',\n height: h + 'px'\n }\n }\n\n beforeUnmount() {\n document.removeEventListener('keyup', this.handleEscClose)\n }\n\n mounted() {\n if (this.sourceImgUrl) {\n this.startCrop()\n }\n }\n\n private showInitImg() {\n if (this.initialImgUrl) {\n this.sourceImgUrl = this.initialImgUrl\n this.startCrop()\n }\n }\n\n handleEscClose(e: any) {\n if (this.show && (e.key === 'Escape' || e.keyCode === 27)) {\n this.off()\n }\n }\n\n // 点击波纹效果\n ripple(e: any) {\n effectRipple(e)\n }\n\n @Watch('step')\n private stepChange() {\n this.show = this.step !== 1\n }\n\n @Watch('hasError')\n private checkShowError() {\n if (this.hasError && this.errorMsg) {\n this.$message.error(this.errorMsg)\n this.hasError = false\n this.errorMsg = ''\n // this.off()\n }\n }\n\n // 关闭控件\n off() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this\n setTimeout(() => {\n self.show = false\n if (self.step === 3 && self.loading === 2) {\n self.setStep(1)\n }\n }, 200)\n }\n\n // 设置步骤\n setStep(no: number) {\n // 延时是为了显示动画效果呢,哈哈哈\n setTimeout(() => {\n this.step = no\n }, 200)\n }\n\n /* 图片选择区域函数绑定\n --------------------------------------------------------------- */\n preventDefault(e: any) {\n e.preventDefault()\n return false\n }\n\n handleClick(e: any) {\n if (this.loading !== 1) {\n if (e.target !== this.$refs.fileinput) {\n e.preventDefault()\n this.$refs.fileinput.click()\n }\n }\n }\n\n handleChange(e: any) {\n e.preventDefault()\n if (this.loading !== 1) {\n const files = e.target.files || e.dataTransfer.files\n this.reset()\n if (this.checkFile(files[0])) {\n this.setSourceImg(files[0])\n } else {\n this.off()\n }\n }\n }\n\n /* --------------------------------------------------------------- */\n\n // 检测选择的文件是否合适\n checkFile(file: any) {\n const {\n maxSize\n } = this\n // 仅限图片\n if (file.type.indexOf('image') === -1) {\n this.hasError = true\n this.errorMsg = '仅限图片格式'\n return false\n }\n\n // 超出大小\n if (file.size / 1024 > maxSize) {\n this.hasError = true\n this.errorMsg = '单文件大小不能超过 ' + maxSize + 'kb'\n return false\n }\n return true\n }\n\n // 重置控件\n reset() {\n this.loading = 0\n this.hasError = false\n this.errorMsg = ''\n this.progress = 0\n }\n\n // 设置图片源\n setSourceImg(file: any) {\n this.$emit('src-file-set', file.name, file.type, file.size)\n const fr = new FileReader()\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this\n fr.onload = function(e: any) {\n self.sourceImgUrl = fr.result + ''\n self.startCrop()\n }\n fr.readAsDataURL(file)\n }\n\n // 剪裁前准备工作\n startCrop() {\n const {\n width,\n height,\n ratio,\n scale,\n sourceImgUrl,\n sourceImgMasking\n } = this\n const sim = sourceImgMasking\n const img = new Image()\n img.src = sourceImgUrl!\n img.setAttribute('crossOrigin', 'Anonymous')\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this\n img.onload = function() {\n const nWidth = img.naturalWidth\n const nHeight = img.naturalHeight\n const nRatio = nWidth / nHeight\n let w = sim.width\n let h = sim.height\n let x = 0\n let y = 0\n // 图片像素不达标\n if (nWidth < width || nHeight < height) {\n self.hasError = true\n self.errorMsg = '图片最低像素为(宽*高):' + width + '*' + height\n return false\n }\n self.show = true\n if (ratio > nRatio) {\n h = w / nRatio\n y = (sim.height - h) / 2\n }\n if (ratio < nRatio) {\n w = h * nRatio\n x = (sim.width - w) / 2\n }\n scale.range = 0\n scale.x = x\n scale.y = y\n scale.width = w\n scale.height = h\n scale.minWidth = w\n scale.minHeight = h\n scale.maxWidth = nWidth * sim.scale\n scale.maxHeight = nHeight * sim.scale\n scale.naturalWidth = nWidth\n scale.naturalHeight = nHeight\n self.sourceImg = img\n self.createImg()\n self.setStep(2)\n }\n }\n\n // 鼠标按下图片准备移动\n imgStartMove(e: any) {\n e.preventDefault()\n // 支持触摸事件,则鼠标事件无效\n if (this.isSupportTouch && !e.targetTouches) {\n return false\n }\n const et = e.targetTouches ? e.targetTouches[0] : e\n const {\n sourceImgMouseDown,\n scale\n } = this\n const simd = sourceImgMouseDown\n simd.mX = et.screenX\n simd.mY = et.screenY\n simd.x = scale.x\n simd.y = scale.y\n simd.on = true\n }\n\n // 鼠标按下状态下移动,图片移动\n imgMove(e: any) {\n e.preventDefault()\n // 支持触摸事件,则鼠标事件无效\n if (this.isSupportTouch && !e.targetTouches) {\n return false\n }\n const et = e.targetTouches ? e.targetTouches[0] : e\n const {\n sourceImgMouseDown: {\n on,\n mX,\n mY,\n x,\n y\n },\n scale,\n sourceImgMasking\n } = this\n const sim = sourceImgMasking\n const nX = et.screenX\n const nY = et.screenY\n const dX = nX - mX\n const dY = nY - mY\n let rX = x + dX\n let rY = y + dY\n if (!on) return\n if (rX > 0) {\n rX = 0\n }\n if (rY > 0) {\n rY = 0\n }\n if (rX < sim.width - scale.width) {\n rX = sim.width - scale.width\n }\n if (rY < sim.height - scale.height) {\n rY = sim.height - scale.height\n }\n scale.x = rX\n scale.y = rY\n }\n\n // 顺时针旋转图片\n rotateImg(e: any) {\n const {\n sourceImg,\n scale: {\n naturalWidth,\n naturalHeight\n }\n } = this\n const width = naturalHeight\n const height = naturalWidth\n const canvas = this.$refs.canvas\n const ctx: CanvasRenderingContext2D = canvas.getContext('2d')!\n canvas.width = width\n canvas.height = height\n ctx.clearRect(0, 0, width, height)\n\n ctx.fillStyle = 'rgba(0,0,0,0)'\n ctx.fillRect(0, 0, width, height)\n\n ctx.translate(width, 0)\n ctx.rotate(Math.PI * 90 / 180)\n\n ctx.drawImage(sourceImg!, 0, 0, naturalWidth, naturalHeight)\n const imgUrl = canvas.toDataURL(mimes.get('png'))\n\n this.sourceImgUrl = imgUrl\n this.startCrop()\n }\n\n handleMouseWheel(e: any) {\n e = e || window.event\n const { scale } = this\n if (e.wheelDelta) { // 判断浏览器IE,谷歌滑轮事件\n if (e.wheelDelta > 0) { // 当滑轮向上滚动时\n this.zoomImg(scale.range >= 100 ? 100 : ++scale.range)\n }\n if (e.wheelDelta < 0) {\n this.zoomImg(scale.range <= 0 ? 0 : --scale.range)\n }\n } else if (e.detail) { // Firefox滑轮事件\n if (e.detail > 0) { // 当滑轮向上滚动时\n this.zoomImg(scale.range >= 100 ? 100 : ++scale.range)\n }\n if (e.detail < 0) {\n this.zoomImg(scale.range <= 0 ? 0 : --scale.range)\n }\n }\n }\n\n // 按钮按下开始放大\n startZoomAdd(e: any) {\n const {\n scale\n } = this\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this\n scale.zoomAddOn = true\n\n function zoom() {\n if (scale.zoomAddOn) {\n const range = scale.range >= 100 ? 100 : ++scale.range\n self.zoomImg(range)\n setTimeout(function() {\n zoom()\n }, 60)\n }\n }\n\n zoom()\n }\n\n // 按钮松开或移开取消放大\n endZoomAdd(e: any) {\n this.scale.zoomAddOn = false\n }\n\n // 按钮按下开始缩小\n startZoomSub(e: any) {\n const {\n scale\n } = this\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this\n scale.zoomSubOn = true\n\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n function zoom() {\n if (scale.zoomSubOn) {\n const range = scale.range <= 0 ? 0 : --scale.range\n self.zoomImg(range)\n setTimeout(function() {\n zoom()\n }, 60)\n }\n }\n\n zoom()\n }\n\n // 按钮松开或移开取消缩小\n endZoomSub(e: any) {\n const {\n scale\n } = this\n scale.zoomSubOn = false\n }\n\n zoomChange(e: any) {\n this.zoomImg(e.target.value)\n }\n\n // 缩放原图\n zoomImg(newRange: any) {\n const {\n sourceImgMasking,\n scale\n } = this\n const {\n maxWidth,\n maxHeight,\n minWidth,\n minHeight,\n width,\n height,\n x,\n y\n } = scale\n const sim = sourceImgMasking\n // 蒙版宽高\n const sWidth = sim.width\n const sHeight = sim.height\n // 新宽高\n const nWidth = minWidth + (maxWidth - minWidth) * newRange / 100\n const nHeight = minHeight + (maxHeight - minHeight) * newRange / 100\n // 新坐标(根据蒙版中心点缩放)\n let nX = sWidth / 2 - (nWidth / width) * (sWidth / 2 - x)\n let nY = sHeight / 2 - (nHeight / height) * (sHeight / 2 - y)\n\n // 判断新坐标是否超过蒙版限制\n if (nX > 0) {\n nX = 0\n }\n if (nY > 0) {\n nY = 0\n }\n if (nX < sWidth - nWidth) {\n nX = sWidth - nWidth\n }\n if (nY < sHeight - nHeight) {\n nY = sHeight - nHeight\n }\n\n // 赋值处理\n scale.x = nX\n scale.y = nY\n scale.width = nWidth\n scale.height = nHeight\n scale.range = newRange\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this\n setTimeout(function() {\n if (scale.range === newRange) {\n self.createImg()\n }\n }, 300)\n }\n\n // 生成需求图片\n createImg(e?: any) {\n const {\n imgFormat,\n imgBgc,\n mime,\n sourceImg,\n scale: {\n x,\n y,\n width,\n height\n },\n sourceImgMasking: {\n scale\n }\n } = this\n const canvas = this.$refs.canvas\n const ctx: CanvasRenderingContext2D = canvas.getContext('2d')!\n if (e) {\n // 取消鼠标按下移动状态\n this.sourceImgMouseDown.on = false\n }\n canvas.width = this.width\n canvas.height = this.height\n ctx.clearRect(0, 0, this.width, this.height)\n\n if (imgFormat === 'png') {\n ctx.fillStyle = 'rgba(0,0,0,0)'\n } else {\n // 如果jpg 为透明区域设置背景,默认白色\n ctx.fillStyle = imgBgc\n }\n ctx.fillRect(0, 0, this.width, this.height)\n\n ctx.drawImage(sourceImg!, x / scale, y / scale, width / scale, height / scale)\n this.createImgUrl = canvas.toDataURL(mime)\n }\n\n prepareUpload() {\n const {\n url,\n createImgUrl,\n field,\n ki\n } = this\n this.$emit('crop-success', createImgUrl, field, ki)\n if (url) {\n this.upload()\n } else {\n this.off()\n }\n }\n\n private requestUpload() {\n const {\n imgFormat,\n mime,\n url,\n params,\n headers,\n field,\n createImgUrl,\n withCredentials,\n method\n } = this\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this\n const fmData = new FormData()\n\n // 添加其他参数\n if (typeof params === 'object' && params) {\n Object.keys(params).forEach((k) => {\n fmData.append(k, (params as any)[k] + '')\n })\n }\n\n // 将field的添加放到表单域的最后,以支持阿里云OSS的表单上传\n fmData.append(field, data2blob(createImgUrl, mime), field + '.' + imgFormat)\n\n // 上传文件\n this.reset()\n this.loading = 1\n this.setStep(3)\n return new Promise(function(resolve, reject) {\n const client = new XMLHttpRequest()\n client.open(method, url, true)\n client.withCredentials = withCredentials\n client.onreadystatechange = function() {\n if (this.readyState !== 4) {\n return\n }\n if (this.status === 200 || this.status === 201 || this.status === 202) {\n resolve(JSON.parse(this.responseText))\n } else {\n reject && reject(this.status)\n }\n }\n client.upload.addEventListener('progress', function(event: any) {\n if (event.lengthComputable) {\n self.progress = 100 * Math.round(event.loaded) / event.total\n }\n }, false) // 监听进度\n // 设置header\n if (typeof headers === 'object' && headers) {\n Object.keys(headers).forEach((k: string) => {\n client.setRequestHeader(k, (headers as any)[k] + '')\n })\n }\n client.send(fmData)\n })\n }\n\n private async removeImg() {\n try {\n await this.$confirm('确认移除该图片?', 'Warning', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n })\n this.$emit('crop-upload-success', '', this.field, this.ki)\n } catch (err) {\n\n }\n }\n\n // 上传图片\n private async upload() {\n try {\n const resData: any = await this.requestUpload()\n if (this.show) {\n if (!resData.errorCode) {\n this.loading = 2\n this.$emit('crop-upload-success', resData.url_cdn, this.field, this.ki)\n } else {\n this.loading = 3\n this.hasError = true\n this.errorMsg = resData.errmsg\n this.$emit('crop-upload-fail', this.field, this.ki)\n }\n }\n } catch (err) {\n if (this.show) {\n this.loading = 3\n this.hasError = true\n this.errorMsg = '图片上传失败'\n this.$emit('crop-upload-fail', this.field, this.ki)\n }\n }\n }\n}\n\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=728710a0&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import request from '@/utils/request'\n\nexport interface ICouponData {\n _id?: string\n name: string\n createdAt?: Date\n shop: string\n content: string\n comment?: string\n total: number\n count: number\n validBegin?: number\n validEnd?: number\n limitOne: number\n}\n\nexport const defaultCouponData: ICouponData = {\n shop: '',\n name: '',\n content: '',\n total: 0,\n count: 0,\n limitOne: 1\n}\n\nexport const getCoupons = (params: any) =>\n request({\n url: '/api/coupons',\n method: 'post',\n params\n })\n\nexport const getCoupon = (id: string, params: any) =>\n request({\n url: `/api/coupon/${id}`,\n method: 'get',\n params\n })\n\nexport const saveCoupon = (data: any) =>\n request({\n url: '/api/coupon/save',\n method: 'post',\n data\n })\n\nexport const deleteCoupon = (id: string) =>\n request({\n url: `/api/coupon/${id}/delete`,\n method: 'post'\n })\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"app-container\"},[_c('el-form',{ref:\"postForm\",staticClass:\"form-container\",attrs:{\"model\":_vm.postForm,\"rules\":_vm.rules,\"label-width\":\"121px\"}},[_c('el-tabs',{model:{value:(_vm.activeName),callback:function ($$v) {_vm.activeName=$$v},expression:\"activeName\"}},[_c('el-tab-pane',{attrs:{\"label\":\"基本信息\",\"name\":\"first\"}},[(_vm.userLevel === 1)?_c('el-form-item',{attrs:{\"label\":_vm.$t('main.shop'),\"prop\":\"key\"}},[_c('el-select',{staticClass:\"w100\",attrs:{\"placeholder\":'选择'+_vm.$t('main.shop'),\"name\":\"shop\",\"required\":\"\"},model:{value:(_vm.postForm.shop),callback:function ($$v) {_vm.$set(_vm.postForm, \"shop\", $$v)},expression:\"postForm.shop\"}},_vm._l((_vm.allDepts),function(item){return _c('el-option',{key:item._id,attrs:{\"label\":item.name,\"value\":item._id}})}),1)],1):_vm._e(),_c('el-form-item',{staticStyle:{\"margin-bottom\":\"40px\"},attrs:{\"label\":\"活动名称:\",\"prop\":\"name\"}},[_c('el-input',{attrs:{\"placeholder\":\"输入活动名称\",\"name\":\"name\",\"required\":\"\"},model:{value:(_vm.postForm.name),callback:function ($$v) {_vm.$set(_vm.postForm, \"name\", $$v)},expression:\"postForm.name\"}})],1),_c('el-form-item',{attrs:{\"label\":\"激活:\",\"prop\":\"active\"}},[_c('el-switch',{attrs:{\"name\":\"active\",\"active-color\":\"#13ce66\",\"inactive-color\":\"#ff4949\",\"required\":\"\"},model:{value:(_vm.postForm.active),callback:function ($$v) {_vm.$set(_vm.postForm, \"active\", $$v)},expression:\"postForm.active\"}})],1),_c('el-form-item',{staticStyle:{\"margin-bottom\":\"30px\"},attrs:{\"prop\":\"desc\",\"label\":\"活动简介:\"}},[_c('el-input',{attrs:{\"type\":\"textarea\"},model:{value:(_vm.postForm.desc),callback:function ($$v) {_vm.$set(_vm.postForm, \"desc\", $$v)},expression:\"postForm.desc\"}})],1),_c('el-form-item',{attrs:{\"prop\":\"icon\",\"label\":\"活动icon\"}},[_c('upload-corp-image',{attrs:{\"field\":\"image-file\",\"width\":400,\"height\":120,\"img-format\":\"png\"},on:{\"crop-upload-success\":_vm.iconUploadSuccess},model:{value:(_vm.postForm.icon),callback:function ($$v) {_vm.$set(_vm.postForm, \"icon\", $$v)},expression:\"postForm.icon\"}})],1),_c('el-form-item',{attrs:{\"prop\":\"banner\",\"label\":\"活动配图\"}},[_c('upload-corp-image',{attrs:{\"field\":\"image-file\",\"width\":400,\"height\":260,\"img-format\":\"png\"},on:{\"crop-upload-success\":_vm.bannerUploadSuccess},model:{value:(_vm.postForm.banner),callback:function ($$v) {_vm.$set(_vm.postForm, \"banner\", $$v)},expression:\"postForm.banner\"}})],1),_c('el-form-item',{attrs:{\"label\":\"重复类型\",\"prop\":\"repeatType\"}},[_c('el-select',{staticClass:\"w100\",attrs:{\"placeholder\":\"选择\",\"name\":\"repeatType\",\"required\":\"\"},model:{value:(_vm.postForm.repeatType),callback:function ($$v) {_vm.$set(_vm.postForm, \"repeatType\", $$v)},expression:\"postForm.repeatType\"}},_vm._l((_vm.repeatTypes),function(item){return _c('el-option',{key:item.id,attrs:{\"label\":item.label,\"value\":item.id}})}),1)],1),(_vm.postForm.repeatType !== 9)?_c('el-form-item',{attrs:{\"label\":\"活动时间\",\"prop\":\"beginTime\"}},[_c('el-select',{staticStyle:{\"width\":\"60%\"},attrs:{\"placeholder\":\"选择或输入时间, 格式 09:15\",\"name\":\"beginTime\",\"required\":\"\",\"multiple\":\"\",\"clearable\":\"\",\"filterable\":\"\",\"allow-create\":\"\",\"default-first-option\":\"\"},on:{\"change\":_vm.timeChange},model:{value:(_vm.selectTime),callback:function ($$v) {_vm.selectTime=$$v},expression:\"selectTime\"}},_vm._l((_vm.times),function(item){return _c('el-option',{key:item,attrs:{\"label\":item,\"value\":item}})}),1)],1):_vm._e(),(_vm.postForm.repeatType === 2)?_c('el-form-item',{attrs:{\"label\":\"周几\",\"prop\":\"weekDays\"}},[_c('el-select',{staticStyle:{\"width\":\"60%\"},attrs:{\"placeholder\":\"选择周几\",\"name\":\"weekDays\",\"required\":\"\",\"multiple\":\"\",\"clearable\":\"\",\"default-first-option\":\"\"},model:{value:(_vm.postForm.weekDays),callback:function ($$v) {_vm.$set(_vm.postForm, \"weekDays\", $$v)},expression:\"postForm.weekDays\"}},_vm._l((_vm.weekDays),function(item){return _c('el-option',{key:item.id,attrs:{\"label\":item.label,\"value\":item.id}})}),1)],1):_vm._e(),(_vm.postForm.repeatType === 3)?_c('el-form-item',{attrs:{\"label\":\"选择天\",\"prop\":\"monthDays\"}},[_c('el-select',{staticStyle:{\"width\":\"60%\"},attrs:{\"placeholder\":\"选择每月中需要运行的日子\",\"name\":\"monthDays\",\"required\":\"\",\"multiple\":\"\",\"clearable\":\"\",\"default-first-option\":\"\"},on:{\"change\":_vm.monthDaysChange},model:{value:(_vm.postForm.monthDays),callback:function ($$v) {_vm.$set(_vm.postForm, \"monthDays\", $$v)},expression:\"postForm.monthDays\"}},_vm._l((_vm.monthDays),function(item){return _c('el-option',{key:item.id,attrs:{\"label\":item.label,\"value\":item.id}})}),1)],1):_vm._e(),(_vm.postForm.repeatType === 0)?_c('el-form-item',{attrs:{\"label\":\"指定日期\",\"prop\":\"selectDate\"}},[_c('el-date-picker',{staticStyle:{\"width\":\"60%\"},attrs:{\"type\":\"dates\",\"align\":\"right\",\"placeholder\":\"选择一个或多个日期\"},on:{\"change\":_vm.dataChange},model:{value:(_vm.selectDate),callback:function ($$v) {_vm.selectDate=$$v},expression:\"selectDate\"}})],1):_vm._e(),(_vm.postForm.repeatType !== 0 && _vm.postForm.repeatType !== 9)?_c('el-form-item',{attrs:{\"label\":\"开始/结束日期\",\"prop\":\"dataRange\"}},[_c('el-date-picker',{staticStyle:{\"width\":\"40%\"},attrs:{\"type\":\"daterange\",\"align\":\"right\",\"unlink-panels\":\"\",\"range-separator\":\"至\",\"start-placeholder\":\"开始日期\",\"end-placeholder\":\"结束日期\"},model:{value:(_vm.dataRange),callback:function ($$v) {_vm.dataRange=$$v},expression:\"dataRange\"}})],1):_vm._e(),(_vm.postForm.repeatType !== 9)?_c('el-form-item',{attrs:{\"label\":\"准备时间(分):\",\"prop\":\"prepareTime\"}},[_c('el-input',{attrs:{\"placeholder\":\"提前多少时间可进游戏房间(分钟)\",\"name\":\"prepareTime\",\"required\":\"\"},model:{value:(_vm.postForm.prepareTime),callback:function ($$v) {_vm.$set(_vm.postForm, \"prepareTime\", $$v)},expression:\"postForm.prepareTime\"}})],1):_vm._e()],1),_c('el-tab-pane',{attrs:{\"label\":\"题库设置\",\"name\":\"second\"}},[_c('el-form-item',{attrs:{\"label\":\"题目数量:\",\"prop\":\"qcount\"}},[_c('el-input',{attrs:{\"placeholder\":\"本次活动题目数量\",\"name\":\"qcount\",\"type\":\"number\",\"required\":\"\"},model:{value:(_vm.postForm.qcount),callback:function ($$v) {_vm.$set(_vm.postForm, \"qcount\", $$v)},expression:\"postForm.qcount\"}})],1),_c('el-form-item',{attrs:{\"label\":\"题库分类\"}},[_c('el-tree',{ref:\"typeTree\",attrs:{\"data\":_vm.typeOptions,\"show-checkbox\":\"\",\"accordion\":\"\",\"node-key\":\"id\",\"highlight-current\":\"\",\"default-checked-keys\":_vm.typeSelected,\"props\":_vm.defaultProps}})],1)],1),_c('el-tab-pane',{attrs:{\"label\":\"奖励设置\",\"name\":\"third\"}},[_c('el-button',{attrs:{\"type\":\"primary\",\"icon\":\"el-icon-edit\"},on:{\"click\":_vm.handleCreateReward}},[_vm._v(\" 添加 \")]),_c('el-table',{attrs:{\"data\":_vm.postForm.rewardInfo,\"border\":\"\",\"fit\":\"\",\"highlight-current-row\":\"\"}},[_c('el-table-column',{attrs:{\"label\":\"排名\",\"prop\":\"rank\",\"formatter\":_vm.formatRank}}),_c('el-table-column',{attrs:{\"label\":\"奖励\",\"prop\":\"coupon\",\"formatter\":_vm.formatCoupon}}),_c('el-table-column',{attrs:{\"align\":\"center\",\"width\":\"180\",\"label\":\"操作\",\"fixed\":\"right\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{attrs:{\"type\":\"primary\",\"size\":\"small\",\"icon\":\"el-icon-edit\"},on:{\"click\":function($event){return _vm.handleEdit(scope)}}},[_vm._v(\" 编辑 \")]),_c('el-button',{staticStyle:{\"margin-left\":\"10px\"},attrs:{\"type\":\"danger\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.deleteRank(scope)}}},[_vm._v(\" \"+_vm._s(_vm.$t('permission.delete'))+\" \")])]}}])})],1)],1)],1),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.submitForm}},[_vm._v(\" 保存 \")]),_c('el-button',{on:{\"click\":_vm.onCancel}},[_vm._v(\" 取消 \")])],1)],1),_c('el-dialog',{attrs:{\"visible\":_vm.dialogVisible,\"title\":\"编辑奖励\"},on:{\"update:visible\":function($event){_vm.dialogVisible=$event}}},[_c('el-form',{ref:\"modalForm\",attrs:{\"model\":_vm.record,\"rules\":_vm.modalRules,\"label-width\":\"80px\",\"label-position\":\"left\"}},[_c('el-form-item',{attrs:{\"label\":\"排名\",\"prop\":\"rank\"}},[_vm._v(\" 第 \"),_c('el-input',{staticStyle:{\"width\":\"30%\"},attrs:{\"placeholder\":\"排名\",\"type\":\"number\"},model:{value:(_vm.record.rank),callback:function ($$v) {_vm.$set(_vm.record, \"rank\", $$v)},expression:\"record.rank\"}}),_vm._v(\" 名至 \"),_c('el-input',{staticStyle:{\"width\":\"30%\"},attrs:{\"placeholder\":\"可不填\",\"type\":\"number\"},model:{value:(_vm.record.rankEnd),callback:function ($$v) {_vm.$set(_vm.record, \"rankEnd\", $$v)},expression:\"record.rankEnd\"}}),_vm._v(\" 名 \")],1),_c('el-form-item',{attrs:{\"label\":\"奖励\",\"prop\":\"coupon\"}},[_c('el-select',{staticClass:\"w100\",attrs:{\"placeholder\":\"选择奖励\",\"name\":\"coupon\",\"required\":\"\"},model:{value:(_vm.record.coupon),callback:function ($$v) {_vm.$set(_vm.record, \"coupon\", $$v)},expression:\"record.coupon\"}},_vm._l((_vm.coupons),function(item){return _c('el-option',{key:item._id,attrs:{\"label\":item.name,\"value\":item._id}})}),1)],1),_c('el-form-item',{attrs:{\"label\":\"数量\",\"prop\":\"count\"}},[_c('el-input',{attrs:{\"placeholder\":\"数量\",\"type\":\"number\"},model:{value:(_vm.record.count),callback:function ($$v) {_vm.$set(_vm.record, \"count\", $$v)},expression:\"record.count\"}})],1),_c('el-form-item',[_c('el-button',{directives:[{name:\"permission\",rawName:\"v-permission\",value:(['activity:edit']),expression:\"['activity:edit']\"}],attrs:{\"type\":\"primary\"},on:{\"click\":_vm.saveReward}},[_vm._v(\" 保存 \")]),_c('el-button',{on:{\"click\":_vm.closeModal}},[_vm._v(\" 取消 \")])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Watch } from 'vue-property-decorator'\nimport { AppModule } from '@/store/modules/app'\nimport { ITagView, TagsViewModule } from '@/store/modules/tags-view'\nimport MaterialInput from '@/components/MaterialInput/index.vue'\nimport Sticky from '@/components/Sticky/index.vue'\nimport UploadImage from '@/components/UploadImage/index.vue'\nimport RegionPicker from '@/components/RegionPicker/index.vue'\nimport { getMyShop, getShops } from '@/api/shop'\nimport { defaultActivityData, defaultRewardData, getActivity, IRewardData, saveActivity } from '@/api/activity'\nimport { sec2TimeStr, timeStr2Sec } from '@/utils'\nimport { getAllCategory } from '@/api/question'\nimport { cloneDeep } from 'lodash'\nimport { getCoupons, ICouponData } from '@/api/coupon'\nimport { IShopData } from '@/api/types'\nimport { ElTree } from 'element-ui/types/tree'\nimport { UserModule } from '@/store/modules/user'\nimport UploadCorpImage from '@/components/UploadCorpImage/index.vue'\nimport { EVENT_ACTIVITY_UPDATE, EVENT_COUPON_UPDATE, EVENT_SHOP_UPDATE, EventBus } from '@/utils/event-bus'\n\n@Component({\n name: 'ActivityEditor',\n components: {\n MaterialInput,\n Sticky,\n UploadImage,\n RegionPicker,\n UploadCorpImage\n }\n})\nexport default class extends Vue {\n private validateRequire = (rule: any, value: string, callback: Function) => {\n if (value === '') {\n if (rule.field === 'imageURL') {\n this.$message({\n message: 'Upload cover image is required',\n type: 'error'\n })\n } else {\n this.$message({\n message: rule.field + ' 是必填的',\n type: 'error'\n })\n }\n callback(new Error(rule.field + ' 是必填的'))\n } else {\n callback()\n }\n }\n\n private activeName = 'first'\n private monthDays: {id: number, label: string}[] = []\n private repeatTypes = [\n { id: 0, label: '指定日期' },\n { id: 1, label: '每日' },\n { id: 2, label: '每周' },\n { id: 3, label: '每月' },\n { id: 9, label: '随时(一般测试用)' }\n ]\n\n private weekDays = [\n { id: 0, label: '周日' },\n { id: 1, label: '周一' },\n { id: 2, label: '周二' },\n { id: 3, label: '周三' },\n { id: 4, label: '周四' },\n { id: 5, label: '周五' },\n { id: 6, label: '周六' }\n ]\n\n private dataRange: Date[] = []\n private selectDate: Date[] = []\n private times: string[] = []\n private selectTime: string[] = []\n\n private postForm = Object.assign({}, defaultActivityData)\n private loading = false\n private allDepts: IShopData[] = []\n private typeOptions: {id: string, label: string, children?: any[]}[] = []\n private typeSelected: string[] = []\n private defaultProps = {\n children: 'children',\n label: 'label'\n }\n\n private rules = {\n name: [{ validator: this.validateRequire }]\n }\n\n private tempTagView?: ITagView\n\n private dialogType = 'new'\n private record: IRewardData = {type: 0}\n private dialogVisible = false\n private modalRules = {\n rank: [{ required: true, message: '请输入排名', trigger: 'blur' }\n ]\n }\n\n private coupons: ICouponData[] = []\n\n $refs!: {\n modalForm: HTMLFormElement\n postForm: HTMLFormElement\n typeTree: ElTree\n }\n\n get userLevel() {\n return UserModule.level\n }\n\n get lang() {\n return AppModule.language\n }\n\n async created() {\n this.initTimes()\n const id = this.$route.params?.id\n await this.getRemoteCategory()\n if (id) {\n await this.fetchData(id)\n }\n if (UserModule.level === 1) {\n await this.getRemoteDeptList()\n EventBus.$on(EVENT_SHOP_UPDATE, () => {\n this.getRemoteDeptList()\n })\n } else {\n this.postForm.shop = UserModule.department\n await this.fetchMyShop()\n }\n\n this.tempTagView = Object.assign({}, this.$route)\n EventBus.$on(EVENT_COUPON_UPDATE, () => {\n if (this.postForm.shop) {\n this.getCouponList(this.postForm.shop)\n }\n })\n }\n\n beforeDestory() {\n EventBus.$off(EVENT_COUPON_UPDATE)\n if (UserModule.level === 1) {\n EventBus.$off(EVENT_SHOP_UPDATE)\n }\n }\n\n private async fetchData(id: string) {\n try {\n const { data } = await getActivity(id, { /* Your params here */ })\n console.log(data)\n this.postForm = data\n this.selectTime = []\n if (data.beginTime) {\n for (const str of data.beginTime) {\n this.selectTime.push(sec2TimeStr(str, false))\n }\n }\n this.selectDate = []\n if (data.beginDays) {\n for (const sub of data.beginDays) {\n this.selectDate.push(new Date(sub))\n }\n }\n if (data.beginDay && data.endDay) {\n this.dataRange.push(new Date(data.beginDay))\n this.dataRange.push(new Date(data.endDay))\n }\n\n // Just for test\n const title = this.lang === 'zh' ? '编辑活动' : 'Edit Activity'\n // Set tagsview title\n this.setTagsViewTitle(title)\n // Set page title\n this.setPageTitle(title)\n } catch (err) {\n console.error(err)\n }\n }\n\n private setTagsViewTitle(title: string) {\n const tagView = this.tempTagView\n if (tagView) {\n tagView.title = `${title}-${this.postForm._id}`\n TagsViewModule.updateVisitedView(tagView)\n }\n }\n\n private setPageTitle(title: string) {\n document.title = `${title} - ${this.postForm._id}`\n }\n\n private async submitForm() {\n try {\n await this.$refs.postForm.validate()\n const times = []\n for (const str of this.selectTime) {\n times.push(timeStr2Sec(str))\n }\n this.postForm.beginTime = times\n this.postForm.beginDays.length = 0\n for (const d of this.selectDate) {\n this.postForm.beginDays.push(d.getTime())\n }\n if (this.dataRange.length > 1) {\n this.postForm.beginDay = this.dataRange[0].getTime()\n this.postForm.endDay = this.dataRange[1].getTime()\n }\n this.postForm.qtypes = this.$refs.typeTree.getCheckedKeys()\n this.loading = true\n const { data } = await saveActivity(this.postForm)\n this.postForm = data\n this.loading = false\n this.$notify({\n title: 'Success',\n message: 'The post save successfully',\n type: 'success',\n duration: 2000\n })\n EventBus.$emit(EVENT_ACTIVITY_UPDATE, {})\n } catch (err) {\n console.error('Submit Error!')\n return false\n }\n }\n\n private async onCancel() {\n try {\n await this.$confirm('确认不保存当前活动信息?', 'Warning', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n })\n this.$store.dispatch('delView', this.$route)\n this.$router.go(-1)\n } catch (e) {\n\n }\n }\n\n private async getRemoteDeptList() {\n const { data } = await getShops({})\n if (!data.records) return\n this.allDepts = data.records\n }\n\n private async fetchMyShop() {\n const { data } = await getMyShop()\n this.typeSelected = data.qtypes\n console.log(this.typeSelected)\n this.$refs.typeTree.setCheckedKeys(this.typeSelected)\n }\n\n private dataChange(_: any) {\n console.log(this.selectDate)\n }\n\n private initTimes() {\n for (let i = 0; i < 24; i++) {\n for (let j = 0; j < 4; j++) {\n const secs = i * 3600 + j * 15 * 60\n const label = sec2TimeStr(secs, false)\n this.times.push(label)\n }\n }\n this.monthDays.push({ id: 0, label: '全选' })\n for (let i = 1; i < 32; i++) {\n this.monthDays.push({ id: i, label: i + '' })\n }\n }\n\n private timeChange(vals: string[]) {\n if (vals.length > 0) {\n let lastVal = this.selectTime[this.selectTime.length - 1]\n if (!/^\\d{1,2}:\\d{1,2}$/.test(lastVal)) {\n this.selectTime.pop()\n }\n lastVal = sec2TimeStr(timeStr2Sec(lastVal), false)\n this.selectTime.splice(this.selectTime.length - 1, 1, lastVal)\n console.log(this.selectTime)\n }\n }\n\n private monthDaysChange(days: number[]) {\n if (days.indexOf(0) >= 0) {\n this.postForm.monthDays.length = 0\n for (let i = 1; i < 32; i++) {\n this.postForm.monthDays.push(i)\n }\n }\n }\n\n @Watch('postForm.shop')\n private onShopChange() {\n if (this.postForm.shop) {\n this.getCouponList(this.postForm.shop)\n }\n\n if (this.postForm.qtypes?.length > 0) {\n this.typeSelected = this.postForm.qtypes\n } else if (this.postForm.shop) {\n let currentShop\n for (const p of this.allDepts) {\n if (p._id === this.postForm.shop) {\n currentShop = p\n break\n }\n }\n if (currentShop) {\n this.typeSelected = currentShop.qtypes\n } else {\n this.typeSelected = []\n }\n }\n this.$refs.typeTree.setCheckedKeys(this.typeSelected)\n }\n\n // begin of set puzzle types\n private async getRemoteCategory() {\n const { data } = await getAllCategory()\n for (const cat of data) {\n const subArr = []\n for (const s of cat.children) {\n subArr.push({\n id: s._id,\n label: s.name\n })\n }\n this.typeOptions.push({\n id: cat._id,\n label: cat.name,\n children: subArr\n })\n }\n }\n\n // begin of award list\n private async getCouponList(shop: string) {\n const { data } = await getCoupons({ shop })\n this.coupons = data.records\n }\n\n private formatCoupon(row: number, column: number, cellValue: string, index: number) {\n let result = `未知(${cellValue})`\n const data = this.postForm.rewardInfo[index]\n for (const dep of this.coupons) {\n if (dep._id === cellValue) {\n result = dep.name\n break\n }\n }\n return `${result} x ${data.count}`\n }\n\n private formatRank(row: number, column: number, cellValue: string, index: number) {\n const data = this.postForm.rewardInfo[index]\n let result = `第 ${data.rank} 名`\n if (data.rankEnd) {\n result = `第 ${data.rank} 至 ${data.rankEnd} 名`\n }\n return result\n }\n\n private async deleteRank(scope: any) {\n const { $index } = scope\n try {\n await this.$confirm('Confirm to remove the record?', 'Warning', {\n confirmButtonText: 'Confirm',\n cancelButtonText: 'Cancel',\n type: 'warning'\n })\n this.postForm.rewardInfo.splice($index, 1)\n this.$message({\n type: 'success',\n message: '删除成功, 请点击保存'\n })\n } catch (err) {\n\n }\n }\n\n private handleCreateReward() {\n this.record = Object.assign({}, defaultRewardData)\n this.record.id = this.postForm.rewardInfo.length\n this.dialogType = 'new'\n this.dialogVisible = true\n }\n\n private handleEdit(scope: any) {\n this.dialogType = 'edit'\n this.dialogVisible = true\n this.record = cloneDeep(scope.row)\n }\n\n private closeModal() {\n this.dialogVisible = false\n this.$refs.modalForm.clearValidate()\n }\n\n private saveReward() {\n const isEdit = this.dialogType === 'edit';\n (this.$refs.modalForm as HTMLFormElement).validate(async(valid: boolean) => {\n if (!valid) {\n this.$message.error('请按要求填写表单')\n return false\n }\n if (isEdit) {\n for (let index = 0; index < this.postForm.rewardInfo.length; index++) {\n if (this.postForm.rewardInfo[index].id === this.record.id) {\n this.postForm.rewardInfo.splice(index, 1, Object.assign({}, this.record))\n break\n }\n }\n } else {\n this.postForm.rewardInfo.push(this.record)\n }\n this.dialogVisible = false\n this.$notify({\n title: 'Success',\n dangerouslyUseHTMLString: true,\n message: `\n 奖励成功保存, 请点击保存\n `,\n type: 'success'\n })\n })\n }\n\n private iconUploadSuccess(imgUrl: string) {\n console.log('upload icon success: ' + imgUrl)\n this.postForm.icon = imgUrl\n this.$forceUpdate()\n }\n\n private bannerUploadSuccess(imgUrl: string) {\n console.log('upload banner success: ' + imgUrl)\n this.postForm.banner = imgUrl\n this.$forceUpdate()\n }\n}\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./edit.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./edit.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./edit.vue?vue&type=template&id=8c75bde2&scoped=true&\"\nimport script from \"./edit.vue?vue&type=script&lang=ts&\"\nexport * from \"./edit.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"8c75bde2\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=css&\"","\nimport request from '@/utils/request'\n\nexport interface IRewardData {\n _id?: string\n id?: number\n rank?: number\n rankEnd?: number\n coupon?: string\n count?: number\n type?: number\n rewardType?: number\n}\n\nexport interface IActivityData {\n _id?: string\n shop: string\n name: string\n desc?: string\n icon?: string\n banner?: string\n qtypes: string[]\n qcount: number\n repeatType: number\n monthDays: number[]\n weekDays: number[]\n beginTime: number[]\n prepareTime: number\n active: boolean\n beginDays: number[]\n beginDay?: number\n endDay?: number\n rewardInfo: IRewardData[]\n}\n\nexport const defaultRewardData: IRewardData = {\n count: 1,\n type: 0,\n rewardType: 0\n}\n\nexport const defaultActivityData: IActivityData = {\n beginDays: [],\n active: false,\n beginTime: [],\n monthDays: [],\n weekDays: [],\n name: '',\n prepareTime: 0,\n qcount: 0,\n qtypes: [],\n repeatType: 0,\n shop: '',\n rewardInfo: []\n\n}\n\nexport const getActivitys = (params: any) =>\n request({\n url: '/api/activitys',\n method: 'post',\n params\n })\n\nexport const getActivity = (id: string, params: any) =>\n request({\n url: `/api/activity/${id}`,\n method: 'get',\n params\n })\n\nexport const saveActivity = (data: any) =>\n request({\n url: '/api/activity/save',\n method: 'post',\n data\n })\n\nexport const deleteActivity = (id: string) =>\n request({\n url: `/api/activity/${id}/delete`,\n method: 'post'\n })\n\nexport const publishActivity = (data: any) =>\n request({\n url: '/api/activity/publish',\n method: 'post',\n data\n })\n"],"sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack:///./src/components/UploadCorpImage/index.vue?d544","webpack:///./src/components/UploadCorpImage/utils/mimes.ts","webpack:///./src/components/UploadCorpImage/utils/data2blob.ts","webpack:///./src/components/UploadCorpImage/utils/effectRipple.ts","webpack:///./src/components/UploadCorpImage/index.vue?1447","webpack:///./src/components/UploadCorpImage/index.vue?21f1","webpack:///./src/components/UploadCorpImage/index.vue","webpack:///./src/api/coupon.ts","webpack:///./src/views/activity/edit.vue?6d2e","webpack:///./src/views/activity/edit.vue?472c","webpack:///./src/views/activity/edit.vue?19a2","webpack:///./src/views/activity/edit.vue","webpack:///./src/components/UploadCorpImage/index.vue?576a","webpack:///./src/api/activity.ts"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","hasImg","_e","on","handleClick","initialImgUrl","showInitImg","ref","handleChange","_v","removeImg","directives","name","rawName","value","expression","off","step","$event","preventDefault","handleMouseWheel","style","sourceImgUrl","imgStartMove","imgMove","createImg","scale","domProps","zoomChange","$set","target","startZoomSub","endZoomSub","startZoomAdd","endZoomAdd","noRotate","rotateImg","noSquare","createImgUrl","noCircle","prepareUpload","loading","setStep","ripple","width","height","staticRenderFns","mimes","Map","data2blob","data","mime","split","window","atob","ia","Uint8Array","length","i","charCodeAt","Blob","type","effectRipple","e","argOpts","opts","Object","assign","ele","bgc","rect","getBoundingClientRect","querySelector","className","document","createElement","Math","max","appendChild","top","offsetHeight","left","offsetWidth","pageY","body","scrollTop","pageX","scrollLeft","backgroundColor","allowImgFormat","show","isSupported","isSupportTouch","hasOwnProperty","progress","hasError","errorMsg","ratio","sourceImg","sourceImgMouseDown","mX","mY","x","y","previewContainer","sourceImgContainer","zoomAddOn","zoomSubOn","range","maxWidth","maxHeight","minWidth","minHeight","naturalWidth","naturalHeight","imgFormat","tempImgFormat","indexOf","get","FormData","addEventListener","handleEscClose","sourceImgMasking","sic","sicRatio","w","h","sim","pc","pcRatio","removeEventListener","startCrop","key","keyCode","$message","error","self","setTimeout","no","$refs","fileinput","click","files","dataTransfer","reset","checkFile","setSourceImg","file","maxSize","size","$emit","fr","FileReader","onload","result","readAsDataURL","img","Image","src","setAttribute","nWidth","nHeight","nRatio","targetTouches","et","simd","screenX","screenY","nX","nY","dX","dY","rX","rY","canvas","ctx","getContext","clearRect","fillStyle","fillRect","translate","rotate","PI","drawImage","imgUrl","toDataURL","event","wheelDelta","zoomImg","detail","zoom","newRange","sWidth","sHeight","imgBgc","url","field","ki","upload","params","headers","withCredentials","method","fmData","keys","forEach","k","append","Promise","resolve","reject","client","XMLHttpRequest","open","onreadystatechange","readyState","status","JSON","parse","responseText","lengthComputable","round","loaded","total","setRequestHeader","send","$confirm","confirmButtonText","cancelButtonText","requestUpload","resData","errorCode","errmsg","url_cdn","default","sub_path","model","prop","component","defaultCouponData","shop","content","count","limitOne","getCoupons","getCoupon","id","saveCoupon","deleteCoupon","postForm","rules","callback","$$v","activeName","userLevel","$t","_l","item","_id","staticStyle","iconUploadSuccess","bannerUploadSuccess","label","repeatType","timeChange","selectTime","monthDaysChange","dataChange","selectDate","dataRange","typeOptions","typeSelected","defaultProps","handleCreateReward","rewardInfo","formatRank","formatCoupon","scopedSlots","_u","fn","scope","handleEdit","deleteRank","_s","submitForm","onCancel","dialogVisible","record","modalRules","saveReward","closeModal","validateRequire","rule","message","Error","monthDays","repeatTypes","weekDays","times","allDepts","children","validator","dialogType","rank","required","trigger","coupons","level","language","initTimes","$route","getRemoteCategory","fetchData","getRemoteDeptList","$on","department","fetchMyShop","tempTagView","getCouponList","$off","console","log","beginTime","str","push","beginDays","sub","Date","beginDay","endDay","title","lang","setTagsViewTitle","setPageTitle","tagView","updateVisitedView","validate","d","getTime","qtypes","typeTree","getCheckedKeys","$notify","duration","$store","dispatch","$router","go","records","setCheckedKeys","_","j","secs","vals","lastVal","test","pop","splice","days","currentShop","p","cat","subArr","s","row","column","cellValue","index","dep","rankEnd","$index","modalForm","clearValidate","isEdit","valid","dangerouslyUseHTMLString","icon","$forceUpdate","banner","components","MaterialInput","Sticky","UploadImage","RegionPicker","UploadCorpImage","defaultRewardData","rewardType","defaultActivityData","active","prepareTime","qcount","getActivitys","getActivity","saveActivity","deleteActivity","publishActivity"],"mappings":"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","file":"js/chunk-37ee6f14.07ce1530.js","sourcesContent":["var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"upload-corp-container\"},[_c('div',{staticClass:\"source\"},[_c('div',[_c('div',{staticClass:\"avatar-uploader\"},[_c('div',{staticClass:\"el-upload el-upload--text\",attrs:{\"tabindex\":\"0\"}},[(!_vm.hasImg)?_c('i',{staticClass:\"el-icon-plus avatar-uploader-icon\",on:{\"click\":_vm.handleClick}}):_vm._e(),(_vm.hasImg)?_c('img',{staticClass:\"upload-preview-img\",attrs:{\"alt\":\"\",\"src\":_vm.initialImgUrl},on:{\"click\":_vm.showInitImg}}):_vm._e(),_c('input',{ref:\"fileinput\",staticClass:\"el-upload__input\",attrs:{\"type\":\"file\",\"name\":\"file\",\"accept\":\"image/*\"},on:{\"change\":_vm.handleChange}}),(_vm.hasImg)?_c('div',{staticClass:\"action-bar\"},[_c('el-button',{attrs:{\"type\":\"success\",\"size\":\"small\",\"icon\":\"el-icon-edit\"},on:{\"click\":_vm.handleClick}},[_vm._v(\" 替换 \")]),_c('el-button',{attrs:{\"type\":\"danger\",\"size\":\"small\",\"icon\":\"el-icon-delete\"},on:{\"click\":_vm.removeImg}},[_vm._v(\" 移除 \")])],1):_vm._e()])])])]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.show),expression:\"show\"}],staticClass:\"vue-image-crop-upload\"},[_c('div',{staticClass:\"vicp-wrap\"},[_c('div',{staticClass:\"vicp-close\",on:{\"click\":_vm.off}},[_c('i',{staticClass:\"vicp-icon4\"})]),(_vm.step === 2)?_c('div',{staticClass:\"vicp-step2\"},[_c('div',{staticClass:\"vicp-crop\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(true),expression:\"true\"}],staticClass:\"vicp-crop-left\"},[_c('div',{staticClass:\"vicp-img-container\",on:{\"wheel\":function($event){$event.preventDefault();return _vm.handleMouseWheel($event)}}},[_c('img',{ref:\"img\",staticClass:\"vicp-img\",style:(_vm.sourceImgStyle),attrs:{\"src\":_vm.sourceImgUrl,\"draggable\":\"false\",\"alt\":\"\"},on:{\"drag\":_vm.preventDefault,\"dragstart\":_vm.preventDefault,\"dragend\":_vm.preventDefault,\"dragleave\":_vm.preventDefault,\"dragover\":_vm.preventDefault,\"dragenter\":_vm.preventDefault,\"drop\":_vm.preventDefault,\"touchstart\":_vm.imgStartMove,\"touchmove\":_vm.imgMove,\"touchend\":_vm.createImg,\"touchcancel\":_vm.createImg,\"mousedown\":_vm.imgStartMove,\"mousemove\":_vm.imgMove,\"mouseup\":_vm.createImg,\"mouseout\":_vm.createImg}}),_c('div',{staticClass:\"vicp-img-shade vicp-img-shade-1\",style:(_vm.sourceImgShadeStyle)}),_c('div',{staticClass:\"vicp-img-shade vicp-img-shade-2\",style:(_vm.sourceImgShadeStyle)})]),_c('div',{staticClass:\"vicp-range\"},[_c('input',{directives:[{name:\"model\",rawName:\"v-model\",value:(_vm.scale.range),expression:\"scale.range\"}],attrs:{\"type\":\"range\",\"step\":\"1\",\"min\":\"0\",\"max\":\"100\"},domProps:{\"value\":(_vm.scale.range)},on:{\"mousemove\":_vm.zoomChange,\"__r\":function($event){return _vm.$set(_vm.scale, \"range\", $event.target.value)}}}),_c('i',{staticClass:\"vicp-icon5\",on:{\"mousedown\":_vm.startZoomSub,\"mouseout\":_vm.endZoomSub,\"mouseup\":_vm.endZoomSub}}),_c('i',{staticClass:\"vicp-icon6\",on:{\"mousedown\":_vm.startZoomAdd,\"mouseout\":_vm.endZoomAdd,\"mouseup\":_vm.endZoomAdd}})]),(!_vm.noRotate)?_c('div',{staticClass:\"vicp-rotate\"},[_c('i',{on:{\"click\":_vm.rotateImg}},[_vm._v(\"↻\")])]):_vm._e()]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(true),expression:\"true\"}],staticClass:\"vicp-crop-right\"},[_c('div',{staticClass:\"vicp-preview\"},[(!_vm.noSquare)?_c('div',{staticClass:\"vicp-preview-item\"},[_c('img',{style:(_vm.previewStyle),attrs:{\"src\":_vm.createImgUrl}}),_c('span',[_vm._v(\"预览\")])]):_vm._e(),(!_vm.noCircle)?_c('div',{staticClass:\"vicp-preview-item vicp-preview-item-circle\"},[_c('img',{style:(_vm.previewStyle),attrs:{\"src\":_vm.createImgUrl}}),_c('span',[_vm._v(\"预览\")])]):_vm._e()])])]),_c('div',{staticClass:\"vicp-operate\"},[_c('el-button',{attrs:{\"type\":\"warning\",\"size\":\"small\",\"icon\":\"el-icon-edit\"},on:{\"click\":_vm.off}},[_vm._v(\" 取消 \")]),_c('el-button',{attrs:{\"type\":\"primary\",\"size\":\"small\",\"icon\":\"el-icon-success\"},on:{\"click\":_vm.prepareUpload}},[_vm._v(\" 保存 \")])],1)]):_vm._e(),(_vm.step === 3)?_c('div',{staticClass:\"vicp-step3\"},[_c('div',{staticClass:\"vicp-upload\"},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loading === 1),expression:\"loading === 1\"}],staticClass:\"vicp-loading\"},[_vm._v(\"正在上传……\")]),_c('div',{staticClass:\"vicp-progress-wrap\"},[_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loading === 1),expression:\"loading === 1\"}],staticClass:\"vicp-progress\",style:(_vm.progressStyle)})]),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.loading === 2),expression:\"loading === 2\"}],staticClass:\"vicp-success\"},[_c('i',{staticClass:\"vicp-icon3\"}),_vm._v(\" 上传成功 \")])]),_c('div',{staticClass:\"vicp-operate\"},[_c('a',{on:{\"click\":function($event){return _vm.setStep(2)},\"mousedown\":_vm.ripple}},[_vm._v(\"返回\")]),_c('a',{on:{\"click\":_vm.off,\"mousedown\":_vm.ripple}},[_vm._v(\"关闭\")])])]):_vm._e(),_c('canvas',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}],ref:\"canvas\",attrs:{\"width\":_vm.width,\"height\":_vm.height}})])])])}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","export const mimes: Map = new Map([\n ['jpg', 'image/jpeg'],\n ['png', 'image/png'],\n ['gif', 'image/gif'],\n ['svg', 'image/svg+xml'],\n ['psd', 'image/photoshop']\n])\n","/**\n * database64文件格式转换为2进制\n *\n * @param {[String]} data dataURL 的格式为 “data:image/png;base64,****”,逗号之前都是一些说明性的文字,我们只需要逗号之后的就行了\n * @param {[String]} mime [description]\n * @return {[blob]} [description]\n */\nexport function data2blob(data: any, mime: any) {\n data = data.split(',')[1]\n data = window.atob(data)\n const ia = new Uint8Array(data.length)\n for (let i = 0; i < data.length; i++) {\n ia[i] = data.charCodeAt(i)\n }\n // canvas.toDataURL 返回的默认格式就是 image/png\n return new Blob([ia], {\n type: mime\n })\n}\n","/**\n * 点击波纹效果\n *\n * @param {[event]} e [description]\n * @param {[Object]} argOpts [description]\n * @return {[bollean]} [description]\n */\nexport function effectRipple(e: any, argOpts?: any) {\n const opts = Object.assign({\n ele: e.target, // 波纹作用元素\n // eslint-disable-next-line no-irregular-whitespace\n type: 'hit', // hit点击位置扩散 center中心点扩展\n bgc: 'rgba(0, 0, 0, 0.15)' // 波纹颜色\n }, argOpts)\n const target = opts.ele\n if (target) {\n const rect = target.getBoundingClientRect()\n let ripple = target.querySelector('.e-ripple')\n if (!ripple) {\n ripple = document.createElement('span')\n ripple.className = 'e-ripple'\n ripple.style.height = ripple.style.width = Math.max(rect.width, rect.height) + 'px'\n target.appendChild(ripple)\n } else {\n ripple.className = 'e-ripple'\n }\n switch (opts.type) {\n case 'center':\n ripple.style.top = (rect.height / 2 - ripple.offsetHeight / 2) + 'px'\n ripple.style.left = (rect.width / 2 - ripple.offsetWidth / 2) + 'px'\n break\n default:\n ripple.style.top = (e.pageY - rect.top - ripple.offsetHeight / 2 - document.body.scrollTop) + 'px'\n ripple.style.left = (e.pageX - rect.left - ripple.offsetWidth / 2 - document.body.scrollLeft) + 'px'\n }\n ripple.style.backgroundColor = opts.bgc\n ripple.className = 'e-ripple z-active'\n return false\n }\n}\n","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue, Watch } from 'vue-property-decorator'\nimport { mimes } from './utils/mimes'\nimport { data2blob } from './utils/data2blob'\nimport { effectRipple } from '@/components/UploadCorpImage/utils/effectRipple'\n\n@Component({\n name: 'UploadCorpImage',\n model: {\n prop: 'initialImgUrl',\n event: 'update'\n }\n})\nexport default class extends Vue {\n // 域,上传文件name,触发事件会带上(如果一个页面多个图片上传控件,可以做区分\n @Prop({ default: 'avatar' }) private field!: string\n // 原名key,类似于id,触发事件会带上(如果一个页面多个图片上传控件,可以做区分\n @Prop({ default: '0' }) private ki!: string\n // 上传地址\n @Prop({ default: 'https://opm.kingsome.cn/api/upload' }) private url!: string\n // 其他要上传文件附带的数据,对象格式\n @Prop({ default: () => { return { sub_path: 'game', type: 'image' } } }) private params!: Object\n // Add custom headers\n @Prop({ default: null }) private headers!: Object\n // 剪裁图片的宽\n @Prop({ default: 200 }) private width!: number\n // 剪裁图片的高\n @Prop({ default: 200 }) private height!: number\n // 不显示旋转功能\n @Prop({ default: true }) private noRotate!: boolean\n // 不预览圆形图片\n @Prop({ default: true }) private noCircle!: boolean\n // 不预览方形图片\n @Prop({ default: false }) private noSquare!: boolean\n // 单文件大小限制\n @Prop({ default: 10240 }) private maxSize!: number\n // 图片上传格式\n @Prop({ default: 'png' }) private imgFormat!: string\n // 图片背景 jpg情况下生效\n @Prop({ default: '#fff' }) private imgBgc!: string\n // 是否支持跨域\n @Prop({ default: false }) private withCredentials!: boolean\n @Prop({ default: 'POST' }) private method!: string\n @Prop({ default: '' }) private initialImgUrl!: string\n\n private allowImgFormat: string[] = [\n 'gif',\n 'jpg',\n 'png'\n ]\n\n // 图片的mime\n private mime = 'image/png'\n private show = false\n // 浏览器是否支持该控件\n private isSupported = true\n // 浏览器是否支持触屏事件\n // eslint-disable-next-line no-prototype-builtins\n private isSupportTouch = document.hasOwnProperty('ontouchstart')\n // 步骤 1选择文件 2剪裁 3上传\n private step = 1\n\n // 上传状态及进度\n private loading = 0 // 0未开始 1正在 2成功 3错误\n private progress = 0\n\n // 是否有错误及错误信息\n private hasError = false\n private errorMsg = ''\n\n // 需求图宽高比\n private ratio = 1\n\n // 原图地址、生成图片地址\n private sourceImg: HTMLImageElement | null = null\n private sourceImgUrl: string | null = this.initialImgUrl\n private createImgUrl: string | null = this.initialImgUrl\n\n // 原图片拖动事件初始值\n private sourceImgMouseDown = {\n on: false,\n mX: 0, // 鼠标按下的坐标\n mY: 0,\n x: 0, // scale原图坐标\n y: 0\n }\n\n // 生成图片预览的容器大小\n private previewContainer = {\n width: 100,\n height: 100\n }\n\n // 原图容器宽高\n private sourceImgContainer = { // sic\n width: 240,\n height: 184 // 如果生成图比例与此一致会出现bug,先改成特殊的格式吧,哈哈哈\n }\n\n // 原图展示属性\n private scale = {\n zoomAddOn: false, // 按钮缩放事件开启\n zoomSubOn: false, // 按钮缩放事件开启\n range: 1, // 最大100\n\n x: 0,\n y: 0,\n width: 0,\n height: 0,\n maxWidth: 0,\n maxHeight: 0,\n minWidth: 0, // 最宽\n minHeight: 0,\n naturalWidth: 0, // 原宽\n naturalHeight: 0\n }\n\n $refs!: {\n fileinput: HTMLInputElement\n canvas: HTMLCanvasElement\n }\n\n created() {\n const {\n imgFormat,\n allowImgFormat\n } = this\n let isSupported = true\n const tempImgFormat = allowImgFormat.indexOf(imgFormat) === -1 ? 'jpg' : imgFormat\n const mime: string = mimes.get(tempImgFormat)!\n if (typeof FormData !== 'function') {\n isSupported = false\n }\n this.ratio = this.width / this.height\n this.mime = mime\n this.isSupported = isSupported\n // 绑定按键esc隐藏此插件事件\n document.addEventListener('keyup', this.handleEscClose)\n }\n\n get hasImg() {\n return !!this.initialImgUrl\n }\n\n // 进度条样式\n get progressStyle() {\n return {\n width: this.progress + '%'\n }\n }\n\n // 原图样式\n get sourceImgStyle() {\n const top = this.scale.y + this.sourceImgMasking.y + 'px'\n const left = this.scale.x + this.sourceImgMasking.x + 'px'\n return {\n top,\n left,\n width: this.scale.width + 'px',\n height: this.scale.height + 'px'// 兼容 Opera\n }\n }\n\n // 原图蒙版属性\n get sourceImgMasking() {\n const {\n width,\n height,\n ratio,\n sourceImgContainer\n } = this\n const sic = sourceImgContainer\n const sicRatio = sic.width / sic.height // 原图容器宽高比\n let x = 0\n let y = 0\n let w = sic.width\n let h = sic.height\n let scale = 1\n if (ratio < sicRatio) {\n scale = sic.height / height\n w = sic.height * ratio\n x = (sic.width - w) / 2\n }\n if (ratio > sicRatio) {\n scale = sic.width / width\n h = sic.width / ratio\n y = (sic.height - h) / 2\n }\n return {\n scale, // 蒙版相对需求宽高的缩放\n x,\n y,\n width: w,\n height: h\n }\n }\n\n // 原图遮罩样式\n get sourceImgShadeStyle() {\n const {\n sourceImgMasking,\n sourceImgContainer\n } = this\n const sic = sourceImgContainer\n const sim = sourceImgMasking\n const w = sim.width === sic.width ? sim.width : (sic.width - sim.width) / 2\n const h = sim.height === sic.height ? sim.height : (sic.height - sim.height) / 2\n return {\n width: w + 'px',\n height: h + 'px'\n }\n }\n\n get previewStyle() {\n const {\n ratio,\n previewContainer\n } = this\n const pc = previewContainer\n let w = pc.width\n let h = pc.height\n const pcRatio = w / h\n if (ratio < pcRatio) {\n w = pc.height * ratio\n }\n if (ratio > pcRatio) {\n h = pc.width / ratio\n }\n return {\n width: w + 'px',\n height: h + 'px'\n }\n }\n\n beforeUnmount() {\n document.removeEventListener('keyup', this.handleEscClose)\n }\n\n mounted() {\n if (this.sourceImgUrl) {\n this.startCrop()\n }\n }\n\n private showInitImg() {\n if (this.initialImgUrl) {\n this.sourceImgUrl = this.initialImgUrl\n this.startCrop()\n }\n }\n\n handleEscClose(e: any) {\n if (this.show && (e.key === 'Escape' || e.keyCode === 27)) {\n this.off()\n }\n }\n\n // 点击波纹效果\n ripple(e: any) {\n effectRipple(e)\n }\n\n @Watch('step')\n private stepChange() {\n this.show = this.step !== 1\n }\n\n @Watch('hasError')\n private checkShowError() {\n if (this.hasError && this.errorMsg) {\n this.$message.error(this.errorMsg)\n this.hasError = false\n this.errorMsg = ''\n // this.off()\n }\n }\n\n // 关闭控件\n off() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this\n setTimeout(() => {\n self.show = false\n if (self.step === 3 && self.loading === 2) {\n self.setStep(1)\n }\n }, 200)\n }\n\n // 设置步骤\n setStep(no: number) {\n // 延时是为了显示动画效果呢,哈哈哈\n setTimeout(() => {\n this.step = no\n }, 200)\n }\n\n /* 图片选择区域函数绑定\n --------------------------------------------------------------- */\n preventDefault(e: any) {\n e.preventDefault()\n return false\n }\n\n handleClick(e: any) {\n if (this.loading !== 1) {\n if (e.target !== this.$refs.fileinput) {\n e.preventDefault()\n this.$refs.fileinput.click()\n }\n }\n }\n\n handleChange(e: any) {\n e.preventDefault()\n if (this.loading !== 1) {\n const files = e.target.files || e.dataTransfer.files\n this.reset()\n if (this.checkFile(files[0])) {\n this.setSourceImg(files[0])\n } else {\n this.off()\n }\n }\n }\n\n /* --------------------------------------------------------------- */\n\n // 检测选择的文件是否合适\n checkFile(file: any) {\n const {\n maxSize\n } = this\n // 仅限图片\n if (file.type.indexOf('image') === -1) {\n this.hasError = true\n this.errorMsg = '仅限图片格式'\n return false\n }\n\n // 超出大小\n if (file.size / 1024 > maxSize) {\n this.hasError = true\n this.errorMsg = '单文件大小不能超过 ' + maxSize + 'kb'\n return false\n }\n return true\n }\n\n // 重置控件\n reset() {\n this.loading = 0\n this.hasError = false\n this.errorMsg = ''\n this.progress = 0\n }\n\n // 设置图片源\n setSourceImg(file: any) {\n this.$emit('src-file-set', file.name, file.type, file.size)\n const fr = new FileReader()\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this\n fr.onload = function(e: any) {\n self.sourceImgUrl = fr.result + ''\n self.startCrop()\n }\n fr.readAsDataURL(file)\n }\n\n // 剪裁前准备工作\n startCrop() {\n const {\n width,\n height,\n ratio,\n scale,\n sourceImgUrl,\n sourceImgMasking\n } = this\n const sim = sourceImgMasking\n const img = new Image()\n img.src = sourceImgUrl!\n img.setAttribute('crossOrigin', 'Anonymous')\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this\n img.onload = function() {\n const nWidth = img.naturalWidth\n const nHeight = img.naturalHeight\n const nRatio = nWidth / nHeight\n let w = sim.width\n let h = sim.height\n let x = 0\n let y = 0\n // 图片像素不达标\n if (nWidth < width || nHeight < height) {\n self.hasError = true\n self.errorMsg = '图片最低像素为(宽*高):' + width + '*' + height\n return false\n }\n self.show = true\n if (ratio > nRatio) {\n h = w / nRatio\n y = (sim.height - h) / 2\n }\n if (ratio < nRatio) {\n w = h * nRatio\n x = (sim.width - w) / 2\n }\n scale.range = 0\n scale.x = x\n scale.y = y\n scale.width = w\n scale.height = h\n scale.minWidth = w\n scale.minHeight = h\n scale.maxWidth = nWidth * sim.scale\n scale.maxHeight = nHeight * sim.scale\n scale.naturalWidth = nWidth\n scale.naturalHeight = nHeight\n self.sourceImg = img\n self.createImg()\n self.setStep(2)\n }\n }\n\n // 鼠标按下图片准备移动\n imgStartMove(e: any) {\n e.preventDefault()\n // 支持触摸事件,则鼠标事件无效\n if (this.isSupportTouch && !e.targetTouches) {\n return false\n }\n const et = e.targetTouches ? e.targetTouches[0] : e\n const {\n sourceImgMouseDown,\n scale\n } = this\n const simd = sourceImgMouseDown\n simd.mX = et.screenX\n simd.mY = et.screenY\n simd.x = scale.x\n simd.y = scale.y\n simd.on = true\n }\n\n // 鼠标按下状态下移动,图片移动\n imgMove(e: any) {\n e.preventDefault()\n // 支持触摸事件,则鼠标事件无效\n if (this.isSupportTouch && !e.targetTouches) {\n return false\n }\n const et = e.targetTouches ? e.targetTouches[0] : e\n const {\n sourceImgMouseDown: {\n on,\n mX,\n mY,\n x,\n y\n },\n scale,\n sourceImgMasking\n } = this\n const sim = sourceImgMasking\n const nX = et.screenX\n const nY = et.screenY\n const dX = nX - mX\n const dY = nY - mY\n let rX = x + dX\n let rY = y + dY\n if (!on) return\n if (rX > 0) {\n rX = 0\n }\n if (rY > 0) {\n rY = 0\n }\n if (rX < sim.width - scale.width) {\n rX = sim.width - scale.width\n }\n if (rY < sim.height - scale.height) {\n rY = sim.height - scale.height\n }\n scale.x = rX\n scale.y = rY\n }\n\n // 顺时针旋转图片\n rotateImg(e: any) {\n const {\n sourceImg,\n scale: {\n naturalWidth,\n naturalHeight\n }\n } = this\n const width = naturalHeight\n const height = naturalWidth\n const canvas = this.$refs.canvas\n const ctx: CanvasRenderingContext2D = canvas.getContext('2d')!\n canvas.width = width\n canvas.height = height\n ctx.clearRect(0, 0, width, height)\n\n ctx.fillStyle = 'rgba(0,0,0,0)'\n ctx.fillRect(0, 0, width, height)\n\n ctx.translate(width, 0)\n ctx.rotate(Math.PI * 90 / 180)\n\n ctx.drawImage(sourceImg!, 0, 0, naturalWidth, naturalHeight)\n const imgUrl = canvas.toDataURL(mimes.get('png'))\n\n this.sourceImgUrl = imgUrl\n this.startCrop()\n }\n\n handleMouseWheel(e: any) {\n e = e || window.event\n const { scale } = this\n if (e.wheelDelta) { // 判断浏览器IE,谷歌滑轮事件\n if (e.wheelDelta > 0) { // 当滑轮向上滚动时\n this.zoomImg(scale.range >= 100 ? 100 : ++scale.range)\n }\n if (e.wheelDelta < 0) {\n this.zoomImg(scale.range <= 0 ? 0 : --scale.range)\n }\n } else if (e.detail) { // Firefox滑轮事件\n if (e.detail > 0) { // 当滑轮向上滚动时\n this.zoomImg(scale.range >= 100 ? 100 : ++scale.range)\n }\n if (e.detail < 0) {\n this.zoomImg(scale.range <= 0 ? 0 : --scale.range)\n }\n }\n }\n\n // 按钮按下开始放大\n startZoomAdd(e: any) {\n const {\n scale\n } = this\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this\n scale.zoomAddOn = true\n\n function zoom() {\n if (scale.zoomAddOn) {\n const range = scale.range >= 100 ? 100 : ++scale.range\n self.zoomImg(range)\n setTimeout(function() {\n zoom()\n }, 60)\n }\n }\n\n zoom()\n }\n\n // 按钮松开或移开取消放大\n endZoomAdd(e: any) {\n this.scale.zoomAddOn = false\n }\n\n // 按钮按下开始缩小\n startZoomSub(e: any) {\n const {\n scale\n } = this\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this\n scale.zoomSubOn = true\n\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n function zoom() {\n if (scale.zoomSubOn) {\n const range = scale.range <= 0 ? 0 : --scale.range\n self.zoomImg(range)\n setTimeout(function() {\n zoom()\n }, 60)\n }\n }\n\n zoom()\n }\n\n // 按钮松开或移开取消缩小\n endZoomSub(e: any) {\n const {\n scale\n } = this\n scale.zoomSubOn = false\n }\n\n zoomChange(e: any) {\n this.zoomImg(e.target.value)\n }\n\n // 缩放原图\n zoomImg(newRange: any) {\n const {\n sourceImgMasking,\n scale\n } = this\n const {\n maxWidth,\n maxHeight,\n minWidth,\n minHeight,\n width,\n height,\n x,\n y\n } = scale\n const sim = sourceImgMasking\n // 蒙版宽高\n const sWidth = sim.width\n const sHeight = sim.height\n // 新宽高\n const nWidth = minWidth + (maxWidth - minWidth) * newRange / 100\n const nHeight = minHeight + (maxHeight - minHeight) * newRange / 100\n // 新坐标(根据蒙版中心点缩放)\n let nX = sWidth / 2 - (nWidth / width) * (sWidth / 2 - x)\n let nY = sHeight / 2 - (nHeight / height) * (sHeight / 2 - y)\n\n // 判断新坐标是否超过蒙版限制\n if (nX > 0) {\n nX = 0\n }\n if (nY > 0) {\n nY = 0\n }\n if (nX < sWidth - nWidth) {\n nX = sWidth - nWidth\n }\n if (nY < sHeight - nHeight) {\n nY = sHeight - nHeight\n }\n\n // 赋值处理\n scale.x = nX\n scale.y = nY\n scale.width = nWidth\n scale.height = nHeight\n scale.range = newRange\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this\n setTimeout(function() {\n if (scale.range === newRange) {\n self.createImg()\n }\n }, 300)\n }\n\n // 生成需求图片\n createImg(e?: any) {\n const {\n imgFormat,\n imgBgc,\n mime,\n sourceImg,\n scale: {\n x,\n y,\n width,\n height\n },\n sourceImgMasking: {\n scale\n }\n } = this\n const canvas = this.$refs.canvas\n const ctx: CanvasRenderingContext2D = canvas.getContext('2d')!\n if (e) {\n // 取消鼠标按下移动状态\n this.sourceImgMouseDown.on = false\n }\n canvas.width = this.width\n canvas.height = this.height\n ctx.clearRect(0, 0, this.width, this.height)\n\n if (imgFormat === 'png') {\n ctx.fillStyle = 'rgba(0,0,0,0)'\n } else {\n // 如果jpg 为透明区域设置背景,默认白色\n ctx.fillStyle = imgBgc\n }\n ctx.fillRect(0, 0, this.width, this.height)\n\n ctx.drawImage(sourceImg!, x / scale, y / scale, width / scale, height / scale)\n this.createImgUrl = canvas.toDataURL(mime)\n }\n\n prepareUpload() {\n const {\n url,\n createImgUrl,\n field,\n ki\n } = this\n this.$emit('crop-success', createImgUrl, field, ki)\n if (url) {\n this.upload()\n } else {\n this.off()\n }\n }\n\n private requestUpload() {\n const {\n imgFormat,\n mime,\n url,\n params,\n headers,\n field,\n createImgUrl,\n withCredentials,\n method\n } = this\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n const self = this\n const fmData = new FormData()\n\n // 添加其他参数\n if (typeof params === 'object' && params) {\n Object.keys(params).forEach((k) => {\n fmData.append(k, (params as any)[k] + '')\n })\n }\n\n // 将field的添加放到表单域的最后,以支持阿里云OSS的表单上传\n fmData.append(field, data2blob(createImgUrl, mime), field + '.' + imgFormat)\n\n // 上传文件\n this.reset()\n this.loading = 1\n this.setStep(3)\n return new Promise(function(resolve, reject) {\n const client = new XMLHttpRequest()\n client.open(method, url, true)\n client.withCredentials = withCredentials\n client.onreadystatechange = function() {\n if (this.readyState !== 4) {\n return\n }\n if (this.status === 200 || this.status === 201 || this.status === 202) {\n resolve(JSON.parse(this.responseText))\n } else {\n reject && reject(this.status)\n }\n }\n client.upload.addEventListener('progress', function(event: any) {\n if (event.lengthComputable) {\n self.progress = 100 * Math.round(event.loaded) / event.total\n }\n }, false) // 监听进度\n // 设置header\n if (typeof headers === 'object' && headers) {\n Object.keys(headers).forEach((k: string) => {\n client.setRequestHeader(k, (headers as any)[k] + '')\n })\n }\n client.send(fmData)\n })\n }\n\n private async removeImg() {\n try {\n await this.$confirm('确认移除该图片?', 'Warning', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n })\n this.$emit('crop-upload-success', '', this.field, this.ki)\n } catch (err) {\n\n }\n }\n\n // 上传图片\n private async upload() {\n try {\n const resData: any = await this.requestUpload()\n if (this.show) {\n if (!resData.errorCode) {\n this.loading = 2\n this.$emit('crop-upload-success', resData.url_cdn, this.field, this.ki)\n } else {\n this.loading = 3\n this.hasError = true\n this.errorMsg = resData.errmsg\n this.$emit('crop-upload-fail', this.field, this.ki)\n }\n }\n } catch (err) {\n if (this.show) {\n this.loading = 3\n this.hasError = true\n this.errorMsg = '图片上传失败'\n this.$emit('crop-upload-fail', this.field, this.ki)\n }\n }\n }\n}\n\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=728710a0&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import request from '@/utils/request'\n\nexport interface ICouponData {\n _id?: string\n name: string\n createdAt?: Date\n shop: string\n content: string\n comment?: string\n total: number\n count: number\n validBegin?: number\n validEnd?: number\n limitOne: number\n}\n\nexport const defaultCouponData: ICouponData = {\n shop: '',\n name: '',\n content: '',\n total: 0,\n count: 0,\n limitOne: 1\n}\n\nexport const getCoupons = (params: any) =>\n request({\n url: '/api/coupons',\n method: 'post',\n params\n })\n\nexport const getCoupon = (id: string, params: any) =>\n request({\n url: `/api/coupon/${id}`,\n method: 'get',\n params\n })\n\nexport const saveCoupon = (data: any) =>\n request({\n url: '/api/coupon/save',\n method: 'post',\n data\n })\n\nexport const deleteCoupon = (id: string) =>\n request({\n url: `/api/coupon/${id}/delete`,\n method: 'post'\n })\n","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"app-container\"},[_c('el-form',{ref:\"postForm\",staticClass:\"form-container\",attrs:{\"model\":_vm.postForm,\"rules\":_vm.rules,\"label-width\":\"121px\"}},[_c('el-tabs',{model:{value:(_vm.activeName),callback:function ($$v) {_vm.activeName=$$v},expression:\"activeName\"}},[_c('el-tab-pane',{attrs:{\"label\":\"基本信息\",\"name\":\"first\"}},[(_vm.userLevel === 1)?_c('el-form-item',{attrs:{\"label\":_vm.$t('main.shop'),\"prop\":\"key\"}},[_c('el-select',{staticClass:\"w100\",attrs:{\"placeholder\":'选择'+_vm.$t('main.shop'),\"name\":\"shop\",\"required\":\"\"},model:{value:(_vm.postForm.shop),callback:function ($$v) {_vm.$set(_vm.postForm, \"shop\", $$v)},expression:\"postForm.shop\"}},_vm._l((_vm.allDepts),function(item){return _c('el-option',{key:item._id,attrs:{\"label\":item.name,\"value\":item._id}})}),1)],1):_vm._e(),_c('el-form-item',{staticStyle:{\"margin-bottom\":\"40px\"},attrs:{\"label\":\"活动名称:\",\"prop\":\"name\"}},[_c('el-input',{attrs:{\"placeholder\":\"输入活动名称\",\"name\":\"name\",\"required\":\"\"},model:{value:(_vm.postForm.name),callback:function ($$v) {_vm.$set(_vm.postForm, \"name\", $$v)},expression:\"postForm.name\"}})],1),_c('el-form-item',{attrs:{\"label\":\"激活:\",\"prop\":\"active\"}},[_c('el-switch',{attrs:{\"name\":\"active\",\"active-color\":\"#13ce66\",\"inactive-color\":\"#ff4949\",\"required\":\"\"},model:{value:(_vm.postForm.active),callback:function ($$v) {_vm.$set(_vm.postForm, \"active\", $$v)},expression:\"postForm.active\"}})],1),_c('el-form-item',{staticStyle:{\"margin-bottom\":\"30px\"},attrs:{\"prop\":\"desc\",\"label\":\"活动简介:\"}},[_c('el-input',{attrs:{\"type\":\"textarea\"},model:{value:(_vm.postForm.desc),callback:function ($$v) {_vm.$set(_vm.postForm, \"desc\", $$v)},expression:\"postForm.desc\"}})],1),_c('el-form-item',{attrs:{\"prop\":\"icon\",\"label\":\"活动icon\"}},[_c('upload-corp-image',{attrs:{\"field\":\"image-file\",\"width\":400,\"height\":120,\"img-format\":\"png\"},on:{\"crop-upload-success\":_vm.iconUploadSuccess},model:{value:(_vm.postForm.icon),callback:function ($$v) {_vm.$set(_vm.postForm, \"icon\", $$v)},expression:\"postForm.icon\"}})],1),_c('el-form-item',{attrs:{\"prop\":\"banner\",\"label\":\"活动配图\"}},[_c('upload-corp-image',{attrs:{\"field\":\"image-file\",\"width\":400,\"height\":260,\"img-format\":\"png\"},on:{\"crop-upload-success\":_vm.bannerUploadSuccess},model:{value:(_vm.postForm.banner),callback:function ($$v) {_vm.$set(_vm.postForm, \"banner\", $$v)},expression:\"postForm.banner\"}})],1),_c('el-form-item',{attrs:{\"label\":\"重复类型\",\"prop\":\"repeatType\"}},[_c('el-select',{staticClass:\"w100\",attrs:{\"placeholder\":\"选择\",\"name\":\"repeatType\",\"required\":\"\"},model:{value:(_vm.postForm.repeatType),callback:function ($$v) {_vm.$set(_vm.postForm, \"repeatType\", $$v)},expression:\"postForm.repeatType\"}},_vm._l((_vm.repeatTypes),function(item){return _c('el-option',{key:item.id,attrs:{\"label\":item.label,\"value\":item.id}})}),1)],1),(_vm.postForm.repeatType !== 9)?_c('el-form-item',{attrs:{\"label\":\"活动时间\",\"prop\":\"beginTime\"}},[_c('el-select',{staticStyle:{\"width\":\"60%\"},attrs:{\"placeholder\":\"选择或输入时间, 格式 09:15\",\"name\":\"beginTime\",\"required\":\"\",\"multiple\":\"\",\"clearable\":\"\",\"filterable\":\"\",\"allow-create\":\"\",\"default-first-option\":\"\"},on:{\"change\":_vm.timeChange},model:{value:(_vm.selectTime),callback:function ($$v) {_vm.selectTime=$$v},expression:\"selectTime\"}},_vm._l((_vm.times),function(item){return _c('el-option',{key:item,attrs:{\"label\":item,\"value\":item}})}),1)],1):_vm._e(),(_vm.postForm.repeatType === 2)?_c('el-form-item',{attrs:{\"label\":\"周几\",\"prop\":\"weekDays\"}},[_c('el-select',{staticStyle:{\"width\":\"60%\"},attrs:{\"placeholder\":\"选择周几\",\"name\":\"weekDays\",\"required\":\"\",\"multiple\":\"\",\"clearable\":\"\",\"default-first-option\":\"\"},model:{value:(_vm.postForm.weekDays),callback:function ($$v) {_vm.$set(_vm.postForm, \"weekDays\", $$v)},expression:\"postForm.weekDays\"}},_vm._l((_vm.weekDays),function(item){return _c('el-option',{key:item.id,attrs:{\"label\":item.label,\"value\":item.id}})}),1)],1):_vm._e(),(_vm.postForm.repeatType === 3)?_c('el-form-item',{attrs:{\"label\":\"选择天\",\"prop\":\"monthDays\"}},[_c('el-select',{staticStyle:{\"width\":\"60%\"},attrs:{\"placeholder\":\"选择每月中需要运行的日子\",\"name\":\"monthDays\",\"required\":\"\",\"multiple\":\"\",\"clearable\":\"\",\"default-first-option\":\"\"},on:{\"change\":_vm.monthDaysChange},model:{value:(_vm.postForm.monthDays),callback:function ($$v) {_vm.$set(_vm.postForm, \"monthDays\", $$v)},expression:\"postForm.monthDays\"}},_vm._l((_vm.monthDays),function(item){return _c('el-option',{key:item.id,attrs:{\"label\":item.label,\"value\":item.id}})}),1)],1):_vm._e(),(_vm.postForm.repeatType === 0)?_c('el-form-item',{attrs:{\"label\":\"指定日期\",\"prop\":\"selectDate\"}},[_c('el-date-picker',{staticStyle:{\"width\":\"60%\"},attrs:{\"type\":\"dates\",\"align\":\"right\",\"placeholder\":\"选择一个或多个日期\"},on:{\"change\":_vm.dataChange},model:{value:(_vm.selectDate),callback:function ($$v) {_vm.selectDate=$$v},expression:\"selectDate\"}})],1):_vm._e(),(_vm.postForm.repeatType !== 0 && _vm.postForm.repeatType !== 9)?_c('el-form-item',{attrs:{\"label\":\"开始/结束日期\",\"prop\":\"dataRange\"}},[_c('el-date-picker',{staticStyle:{\"width\":\"40%\"},attrs:{\"type\":\"daterange\",\"align\":\"right\",\"unlink-panels\":\"\",\"range-separator\":\"至\",\"start-placeholder\":\"开始日期\",\"end-placeholder\":\"结束日期\"},model:{value:(_vm.dataRange),callback:function ($$v) {_vm.dataRange=$$v},expression:\"dataRange\"}})],1):_vm._e(),(_vm.postForm.repeatType !== 9)?_c('el-form-item',{attrs:{\"label\":\"准备时间(分):\",\"prop\":\"prepareTime\"}},[_c('el-input',{attrs:{\"placeholder\":\"提前多少时间可进游戏房间(分钟)\",\"name\":\"prepareTime\",\"required\":\"\"},model:{value:(_vm.postForm.prepareTime),callback:function ($$v) {_vm.$set(_vm.postForm, \"prepareTime\", $$v)},expression:\"postForm.prepareTime\"}})],1):_vm._e()],1),_c('el-tab-pane',{attrs:{\"label\":\"题库设置\",\"name\":\"second\"}},[_c('el-form-item',{attrs:{\"label\":\"题目数量:\",\"prop\":\"qcount\"}},[_c('el-input',{attrs:{\"placeholder\":\"本次活动题目数量\",\"name\":\"qcount\",\"type\":\"number\",\"required\":\"\"},model:{value:(_vm.postForm.qcount),callback:function ($$v) {_vm.$set(_vm.postForm, \"qcount\", $$v)},expression:\"postForm.qcount\"}})],1),_c('el-form-item',{attrs:{\"label\":\"题库分类\"}},[_c('el-tree',{ref:\"typeTree\",attrs:{\"data\":_vm.typeOptions,\"show-checkbox\":\"\",\"accordion\":\"\",\"node-key\":\"id\",\"highlight-current\":\"\",\"default-checked-keys\":_vm.typeSelected,\"props\":_vm.defaultProps}})],1)],1),_c('el-tab-pane',{attrs:{\"label\":\"奖励设置\",\"name\":\"third\"}},[_c('el-button',{attrs:{\"type\":\"primary\",\"icon\":\"el-icon-edit\"},on:{\"click\":_vm.handleCreateReward}},[_vm._v(\" 添加 \")]),_c('el-table',{attrs:{\"data\":_vm.postForm.rewardInfo,\"border\":\"\",\"fit\":\"\",\"highlight-current-row\":\"\"}},[_c('el-table-column',{attrs:{\"label\":\"排名\",\"prop\":\"rank\",\"formatter\":_vm.formatRank}}),_c('el-table-column',{attrs:{\"label\":\"奖励\",\"prop\":\"coupon\",\"formatter\":_vm.formatCoupon}}),_c('el-table-column',{attrs:{\"align\":\"center\",\"width\":\"180\",\"label\":\"操作\",\"fixed\":\"right\"},scopedSlots:_vm._u([{key:\"default\",fn:function(scope){return [_c('el-button',{attrs:{\"type\":\"primary\",\"size\":\"small\",\"icon\":\"el-icon-edit\"},on:{\"click\":function($event){return _vm.handleEdit(scope)}}},[_vm._v(\" 编辑 \")]),_c('el-button',{staticStyle:{\"margin-left\":\"10px\"},attrs:{\"type\":\"danger\",\"size\":\"small\"},on:{\"click\":function($event){return _vm.deleteRank(scope)}}},[_vm._v(\" \"+_vm._s(_vm.$t('permission.delete'))+\" \")])]}}])})],1)],1)],1),_c('el-form-item',[_c('el-button',{attrs:{\"type\":\"primary\"},on:{\"click\":_vm.submitForm}},[_vm._v(\" 保存 \")]),_c('el-button',{on:{\"click\":_vm.onCancel}},[_vm._v(\" 取消 \")])],1)],1),_c('el-dialog',{attrs:{\"visible\":_vm.dialogVisible,\"title\":\"编辑奖励\"},on:{\"update:visible\":function($event){_vm.dialogVisible=$event}}},[_c('el-form',{ref:\"modalForm\",attrs:{\"model\":_vm.record,\"rules\":_vm.modalRules,\"label-width\":\"80px\",\"label-position\":\"left\"}},[_c('el-form-item',{attrs:{\"label\":\"排名\",\"prop\":\"rank\"}},[_vm._v(\" 第 \"),_c('el-input',{staticStyle:{\"width\":\"30%\"},attrs:{\"placeholder\":\"排名\",\"type\":\"number\"},model:{value:(_vm.record.rank),callback:function ($$v) {_vm.$set(_vm.record, \"rank\", $$v)},expression:\"record.rank\"}}),_vm._v(\" 名至 \"),_c('el-input',{staticStyle:{\"width\":\"30%\"},attrs:{\"placeholder\":\"可不填\",\"type\":\"number\"},model:{value:(_vm.record.rankEnd),callback:function ($$v) {_vm.$set(_vm.record, \"rankEnd\", $$v)},expression:\"record.rankEnd\"}}),_vm._v(\" 名 \")],1),_c('el-form-item',{attrs:{\"label\":\"奖励\",\"prop\":\"coupon\"}},[_c('el-select',{staticClass:\"w100\",attrs:{\"placeholder\":\"选择奖励\",\"name\":\"coupon\",\"required\":\"\"},model:{value:(_vm.record.coupon),callback:function ($$v) {_vm.$set(_vm.record, \"coupon\", $$v)},expression:\"record.coupon\"}},_vm._l((_vm.coupons),function(item){return _c('el-option',{key:item._id,attrs:{\"label\":item.name,\"value\":item._id}})}),1)],1),_c('el-form-item',{attrs:{\"label\":\"数量\",\"prop\":\"count\"}},[_c('el-input',{attrs:{\"placeholder\":\"数量\",\"type\":\"number\"},model:{value:(_vm.record.count),callback:function ($$v) {_vm.$set(_vm.record, \"count\", $$v)},expression:\"record.count\"}})],1),_c('el-form-item',[_c('el-button',{directives:[{name:\"permission\",rawName:\"v-permission\",value:(['activity:edit']),expression:\"['activity:edit']\"}],attrs:{\"type\":\"primary\"},on:{\"click\":_vm.saveReward}},[_vm._v(\" 保存 \")]),_c('el-button',{on:{\"click\":_vm.closeModal}},[_vm._v(\" 取消 \")])],1)],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue, Watch } from 'vue-property-decorator'\nimport { AppModule } from '@/store/modules/app'\nimport { ITagView, TagsViewModule } from '@/store/modules/tags-view'\nimport MaterialInput from '@/components/MaterialInput/index.vue'\nimport Sticky from '@/components/Sticky/index.vue'\nimport UploadImage from '@/components/UploadImage/index.vue'\nimport RegionPicker from '@/components/RegionPicker/index.vue'\nimport { getMyShop, getShops } from '@/api/shop'\nimport { defaultActivityData, defaultRewardData, getActivity, IRewardData, saveActivity } from '@/api/activity'\nimport { sec2TimeStr, timeStr2Sec } from '@/utils'\nimport { getAllCategory } from '@/api/question'\nimport { cloneDeep } from 'lodash'\nimport { getCoupons, ICouponData } from '@/api/coupon'\nimport { IShopData } from '@/api/types'\nimport { ElTree } from 'element-ui/types/tree'\nimport { UserModule } from '@/store/modules/user'\nimport UploadCorpImage from '@/components/UploadCorpImage/index.vue'\nimport { EVENT_ACTIVITY_UPDATE, EVENT_COUPON_UPDATE, EVENT_SHOP_UPDATE, EventBus } from '@/utils/event-bus'\n\n@Component({\n name: 'ActivityEditor',\n components: {\n MaterialInput,\n Sticky,\n UploadImage,\n RegionPicker,\n UploadCorpImage\n }\n})\nexport default class extends Vue {\n private validateRequire = (rule: any, value: string, callback: Function) => {\n if (value === '') {\n if (rule.field === 'imageURL') {\n this.$message({\n message: 'Upload cover image is required',\n type: 'error'\n })\n } else {\n this.$message({\n message: rule.field + ' 是必填的',\n type: 'error'\n })\n }\n callback(new Error(rule.field + ' 是必填的'))\n } else {\n callback()\n }\n }\n\n private activeName = 'first'\n private monthDays: {id: number, label: string}[] = []\n private repeatTypes = [\n { id: 0, label: '指定日期' },\n { id: 1, label: '每日' },\n { id: 2, label: '每周' },\n { id: 3, label: '每月' },\n { id: 9, label: '随时(一般测试用)' }\n ]\n\n private weekDays = [\n { id: 0, label: '周日' },\n { id: 1, label: '周一' },\n { id: 2, label: '周二' },\n { id: 3, label: '周三' },\n { id: 4, label: '周四' },\n { id: 5, label: '周五' },\n { id: 6, label: '周六' }\n ]\n\n private dataRange: Date[] = []\n private selectDate: Date[] = []\n private times: string[] = []\n private selectTime: string[] = []\n\n private postForm = Object.assign({}, defaultActivityData)\n private loading = false\n private allDepts: IShopData[] = []\n private typeOptions: {id: string, label: string, children?: any[]}[] = []\n private typeSelected: string[] = []\n private defaultProps = {\n children: 'children',\n label: 'label'\n }\n\n private rules = {\n name: [{ validator: this.validateRequire }]\n }\n\n private tempTagView?: ITagView\n\n private dialogType = 'new'\n private record: IRewardData = { type: 0 }\n private dialogVisible = false\n private modalRules = {\n rank: [{ required: true, message: '请输入排名', trigger: 'blur' }\n ]\n }\n\n private coupons: ICouponData[] = []\n\n $refs!: {\n modalForm: HTMLFormElement\n postForm: HTMLFormElement\n typeTree: ElTree\n }\n\n get userLevel() {\n return UserModule.level\n }\n\n get lang() {\n return AppModule.language\n }\n\n async created() {\n this.initTimes()\n const id = this.$route.params?.id\n await this.getRemoteCategory()\n if (id) {\n await this.fetchData(id)\n }\n if (UserModule.level === 1) {\n await this.getRemoteDeptList()\n EventBus.$on(EVENT_SHOP_UPDATE, () => {\n this.getRemoteDeptList()\n })\n } else {\n this.postForm.shop = UserModule.department\n await this.fetchMyShop()\n }\n\n this.tempTagView = Object.assign({}, this.$route)\n EventBus.$on(EVENT_COUPON_UPDATE, () => {\n if (this.postForm.shop) {\n this.getCouponList(this.postForm.shop)\n }\n })\n }\n\n beforeDestory() {\n EventBus.$off(EVENT_COUPON_UPDATE)\n if (UserModule.level === 1) {\n EventBus.$off(EVENT_SHOP_UPDATE)\n }\n }\n\n private async fetchData(id: string) {\n try {\n const { data } = await getActivity(id, { /* Your params here */ })\n console.log(data)\n this.postForm = data\n this.selectTime = []\n if (data.beginTime) {\n for (const str of data.beginTime) {\n this.selectTime.push(sec2TimeStr(str, false))\n }\n }\n this.selectDate = []\n if (data.beginDays) {\n for (const sub of data.beginDays) {\n this.selectDate.push(new Date(sub))\n }\n }\n if (data.beginDay && data.endDay) {\n this.dataRange.push(new Date(data.beginDay))\n this.dataRange.push(new Date(data.endDay))\n }\n\n // Just for test\n const title = this.lang === 'zh' ? '编辑活动' : 'Edit Activity'\n // Set tagsview title\n this.setTagsViewTitle(title)\n // Set page title\n this.setPageTitle(title)\n } catch (err) {\n console.error(err)\n }\n }\n\n private setTagsViewTitle(title: string) {\n const tagView = this.tempTagView\n if (tagView) {\n tagView.title = `${title}-${this.postForm._id}`\n TagsViewModule.updateVisitedView(tagView)\n }\n }\n\n private setPageTitle(title: string) {\n document.title = `${title} - ${this.postForm._id}`\n }\n\n private async submitForm() {\n try {\n await this.$refs.postForm.validate()\n const times = []\n for (const str of this.selectTime) {\n times.push(timeStr2Sec(str))\n }\n this.postForm.beginTime = times\n this.postForm.beginDays.length = 0\n for (const d of this.selectDate) {\n this.postForm.beginDays.push(d.getTime())\n }\n if (this.dataRange.length > 1) {\n this.postForm.beginDay = this.dataRange[0].getTime()\n this.postForm.endDay = this.dataRange[1].getTime()\n }\n this.postForm.qtypes = this.$refs.typeTree.getCheckedKeys()\n this.loading = true\n const { data } = await saveActivity(this.postForm)\n this.postForm = data\n this.loading = false\n this.$notify({\n title: 'Success',\n message: 'The post save successfully',\n type: 'success',\n duration: 2000\n })\n EventBus.$emit(EVENT_ACTIVITY_UPDATE, {})\n } catch (err) {\n console.error('Submit Error!')\n return false\n }\n }\n\n private async onCancel() {\n try {\n await this.$confirm('确认不保存当前活动信息?', 'Warning', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n })\n this.$store.dispatch('delView', this.$route)\n this.$router.go(-1)\n } catch (e) {\n\n }\n }\n\n private async getRemoteDeptList() {\n const { data } = await getShops({})\n if (!data.records) return\n this.allDepts = data.records\n }\n\n private async fetchMyShop() {\n const { data } = await getMyShop()\n this.typeSelected = data.qtypes\n console.log(this.typeSelected)\n this.$refs.typeTree.setCheckedKeys(this.typeSelected)\n }\n\n private dataChange(_: any) {\n console.log(this.selectDate)\n }\n\n private initTimes() {\n for (let i = 0; i < 24; i++) {\n for (let j = 0; j < 4; j++) {\n const secs = i * 3600 + j * 15 * 60\n const label = sec2TimeStr(secs, false)\n this.times.push(label)\n }\n }\n this.monthDays.push({ id: 0, label: '全选' })\n for (let i = 1; i < 32; i++) {\n this.monthDays.push({ id: i, label: i + '' })\n }\n }\n\n private timeChange(vals: string[]) {\n if (vals.length > 0) {\n let lastVal = this.selectTime[this.selectTime.length - 1]\n if (!/^\\d{1,2}:\\d{1,2}$/.test(lastVal)) {\n this.selectTime.pop()\n }\n lastVal = sec2TimeStr(timeStr2Sec(lastVal), false)\n this.selectTime.splice(this.selectTime.length - 1, 1, lastVal)\n console.log(this.selectTime)\n }\n }\n\n private monthDaysChange(days: number[]) {\n if (days.indexOf(0) >= 0) {\n this.postForm.monthDays.length = 0\n for (let i = 1; i < 32; i++) {\n this.postForm.monthDays.push(i)\n }\n }\n }\n\n @Watch('postForm.shop')\n private onShopChange() {\n if (this.postForm.shop) {\n this.getCouponList(this.postForm.shop)\n }\n\n if (this.postForm.qtypes?.length > 0) {\n this.typeSelected = this.postForm.qtypes\n } else if (this.postForm.shop) {\n let currentShop\n for (const p of this.allDepts) {\n if (p._id === this.postForm.shop) {\n currentShop = p\n break\n }\n }\n if (currentShop) {\n this.typeSelected = currentShop.qtypes\n } else {\n this.typeSelected = []\n }\n }\n this.$refs.typeTree.setCheckedKeys(this.typeSelected)\n }\n\n // begin of set puzzle types\n private async getRemoteCategory() {\n const { data } = await getAllCategory()\n for (const cat of data) {\n const subArr = []\n for (const s of cat.children) {\n subArr.push({\n id: s._id,\n label: s.name\n })\n }\n this.typeOptions.push({\n id: cat._id,\n label: cat.name,\n children: subArr\n })\n }\n }\n\n // begin of award list\n private async getCouponList(shop: string) {\n const { data } = await getCoupons({ shop })\n this.coupons = data.records\n }\n\n private formatCoupon(row: number, column: number, cellValue: string, index: number) {\n let result = `未知(${cellValue})`\n const data = this.postForm.rewardInfo[index]\n for (const dep of this.coupons) {\n if (dep._id === cellValue) {\n result = dep.name\n break\n }\n }\n return `${result} x ${data.count}`\n }\n\n private formatRank(row: number, column: number, cellValue: string, index: number) {\n const data = this.postForm.rewardInfo[index]\n let result = `第 ${data.rank} 名`\n if (data.rankEnd) {\n result = `第 ${data.rank} 至 ${data.rankEnd} 名`\n }\n return result\n }\n\n private async deleteRank(scope: any) {\n const { $index } = scope\n try {\n await this.$confirm('Confirm to remove the record?', 'Warning', {\n confirmButtonText: 'Confirm',\n cancelButtonText: 'Cancel',\n type: 'warning'\n })\n this.postForm.rewardInfo.splice($index, 1)\n this.$message({\n type: 'success',\n message: '删除成功, 请点击保存'\n })\n } catch (err) {\n\n }\n }\n\n private handleCreateReward() {\n this.record = Object.assign({}, defaultRewardData)\n this.record.id = this.postForm.rewardInfo.length\n this.dialogType = 'new'\n this.dialogVisible = true\n }\n\n private handleEdit(scope: any) {\n this.dialogType = 'edit'\n this.dialogVisible = true\n this.record = cloneDeep(scope.row)\n }\n\n private closeModal() {\n this.dialogVisible = false\n this.$refs.modalForm.clearValidate()\n }\n\n private saveReward() {\n const isEdit = this.dialogType === 'edit';\n (this.$refs.modalForm as HTMLFormElement).validate(async(valid: boolean) => {\n if (!valid) {\n this.$message.error('请按要求填写表单')\n return false\n }\n if (isEdit) {\n for (let index = 0; index < this.postForm.rewardInfo.length; index++) {\n if (this.postForm.rewardInfo[index].id === this.record.id) {\n this.postForm.rewardInfo.splice(index, 1, Object.assign({}, this.record))\n break\n }\n }\n } else {\n this.postForm.rewardInfo.push(this.record)\n }\n this.dialogVisible = false\n this.$notify({\n title: 'Success',\n dangerouslyUseHTMLString: true,\n message: `\n 奖励成功保存, 请点击保存\n `,\n type: 'success'\n })\n })\n }\n\n private iconUploadSuccess(imgUrl: string) {\n console.log('upload icon success: ' + imgUrl)\n this.postForm.icon = imgUrl\n this.$forceUpdate()\n }\n\n private bannerUploadSuccess(imgUrl: string) {\n console.log('upload banner success: ' + imgUrl)\n this.postForm.banner = imgUrl\n this.$forceUpdate()\n }\n}\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./edit.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./edit.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./edit.vue?vue&type=template&id=9340e522&scoped=true&\"\nimport script from \"./edit.vue?vue&type=script&lang=ts&\"\nexport * from \"./edit.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"9340e522\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--6-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--6-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--6-oneOf-1-2!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&lang=css&\"","\nimport request from '@/utils/request'\n\nexport interface IRewardData {\n _id?: string\n id?: number\n rank?: number\n rankEnd?: number\n coupon?: string\n count?: number\n type?: number\n rewardType?: number\n}\n\nexport interface IActivityData {\n _id?: string\n shop: string\n name: string\n desc?: string\n icon?: string\n banner?: string\n qtypes: string[]\n qcount: number\n repeatType: number\n monthDays: number[]\n weekDays: number[]\n beginTime: number[]\n prepareTime: number\n active: boolean\n beginDays: number[]\n beginDay?: number\n endDay?: number\n rewardInfo: IRewardData[]\n}\n\nexport const defaultRewardData: IRewardData = {\n count: 1,\n type: 0,\n rewardType: 0\n}\n\nexport const defaultActivityData: IActivityData = {\n beginDays: [],\n active: false,\n beginTime: [],\n monthDays: [],\n weekDays: [],\n name: '',\n prepareTime: 0,\n qcount: 0,\n qtypes: [],\n repeatType: 0,\n shop: '',\n rewardInfo: []\n\n}\n\nexport const getActivitys = (params: any) =>\n request({\n url: '/api/activitys',\n method: 'post',\n params\n })\n\nexport const getActivity = (id: string, params: any) =>\n request({\n url: `/api/activity/${id}`,\n method: 'get',\n params\n })\n\nexport const saveActivity = (data: any) =>\n request({\n url: '/api/activity/save',\n method: 'post',\n data\n })\n\nexport const deleteActivity = (id: string) =>\n request({\n url: `/api/activity/${id}/delete`,\n method: 'post'\n })\n\nexport const publishActivity = (data: any) =>\n request({\n url: '/api/activity/publish',\n method: 'post',\n data\n })\n"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/js/chunk-51e7f57a.fb2e4768.js b/dist/js/chunk-51e7f57a.fb2e4768.js new file mode 100644 index 0000000..3bbc6ef --- /dev/null +++ b/dist/js/chunk-51e7f57a.fb2e4768.js @@ -0,0 +1,2 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-51e7f57a"],{"41fc":function(e,t,a){},"68e8":function(e,t,a){"use strict";a("41fc")},"6b45":function(e,t,a){"use strict";var r=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"upload-container"},[a("el-upload",{staticClass:"image-uploader",attrs:{data:e.dataObj,name:"image-file",accept:"image/jpeg,image/gif,image/png",multiple:!1,"show-file-list":!1,"on-success":e.handleImageSuccess,drag:"",action:e.uploadUrl}},[a("i",{staticClass:"el-icon-upload"}),a("div",{staticClass:"el-upload__text"},[e._v(" 将文件拖到此处,或"),a("em",[e._v("点击上传")])])]),a("div",{staticClass:"image-preview"},[a("div",{directives:[{name:"show",rawName:"v-show",value:e.imageUrl.length>1,expression:"imageUrl.length>1"}],staticClass:"image-preview-wrapper"},[a("img",{attrs:{src:e.imageUrl}}),a("div",{staticClass:"image-preview-action"},[a("i",{staticClass:"el-icon-delete",on:{click:e.rmImage}})])])])],1)},n=[],i=a("d4ec"),c=a("bee2"),s=a("262e"),o=a("2caf"),l=a("9ab4"),u=a("1b40"),p=function(e){Object(s["a"])(a,e);var t=Object(o["a"])(a);function a(){var e;return Object(i["a"])(this,a),e=t.apply(this,arguments),e.uploadUrl="https://opm.kingsome.cn/api/upload",e.tempUrl="",e.dataObj={sub_path:"game",type:"image"},e}return Object(c["a"])(a,[{key:"imageUrl",get:function(){return this.value}},{key:"emitInput",value:function(e){this.$emit("input",e)}},{key:"rmImage",value:function(){this.emitInput("")}},{key:"handleImageSuccess",value:function(e){console.log(e),this.emitInput(e.url_cdn)}}]),a}(u["c"]);Object(l["a"])([Object(u["b"])({default:""})],p.prototype,"value",void 0),p=Object(l["a"])([Object(u["a"])({name:"UploadImage"})],p);var m=p,d=m,g=(a("961d"),a("0c7c")),f=Object(g["a"])(d,r,n,!1,null,"62f54f8e",null);t["a"]=f.exports},"736c":function(e,t,a){"use strict";a.r(t);var r=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"app-container"},[a("el-form",{ref:"postForm",staticClass:"form-container",attrs:{model:e.record,rules:e.rules,"label-width":"222px"}},[a("el-form-item",{attrs:{prop:"game_main_pic",label:"主页正中间图片"}},[a("upload-image",{model:{value:e.record.game_main_pic,callback:function(t){e.$set(e.record,"game_main_pic",t)},expression:"record.game_main_pic"}})],1),a("el-form-item",{attrs:{prop:"bg_item_icon",label:"背景图案"}},[a("upload-image",{model:{value:e.record.bg_item_icon,callback:function(t){e.$set(e.record,"bg_item_icon",t)},expression:"record.bg_item_icon"}})],1),a("el-form-item",{attrs:{label:"主页上单人赛按钮文字:",prop:"game_single_btn"}},[a("el-input",{attrs:{placeholder:"主页上单人赛按钮文字",required:""},on:{input:e.inputBegin},model:{value:e.record.game_single_btn,callback:function(t){e.$set(e.record,"game_single_btn",t)},expression:"record.game_single_btn"}})],1),a("el-form-item",{attrs:{label:"主页上多人赛按钮名字:",prop:"game_multi_btn"}},[a("el-input",{attrs:{placeholder:"主页上多人赛按钮名字",required:""},on:{input:e.inputBegin},model:{value:e.record.game_multi_btn,callback:function(t){e.$set(e.record,"game_multi_btn",t)},expression:"record.game_multi_btn"}})],1),a("el-form-item",[a("el-button",{directives:[{name:"permission",rawName:"v-permission",value:["shop:game_setting"],expression:"['shop:game_setting']"}],attrs:{type:"primary"},on:{click:e.saveVal}},[e._v(" 保存 ")]),a("el-button",{on:{click:e.onCancel}},[e._v(" 取消 ")])],1)],1)],1)},n=[],i=a("1da1"),c=a("d4ec"),s=a("bee2"),o=a("262e"),l=a("2caf"),u=(a("96cf"),a("9ab4")),p=a("1b40"),m=a("b804"),d=a("08a9"),g=a("6b45"),f=a("db85"),v=a("9dba"),h=function(e){Object(o["a"])(a,e);var t=Object(l["a"])(a);function a(){var e;return Object(c["a"])(this,a),e=t.apply(this,arguments),e.validateRequire=function(t,a,r){""===a?("imageURL"===t.field?e.$message({message:"Upload cover image is required",type:"error"}):e.$message({message:t.field+" 是必填的",type:"error"}),r(new Error(t.field+" 是必填的"))):r()},e.shop="",e.record={},e.rules={name:[{validator:e.validateRequire}]},e}return Object(s["a"])(a,[{key:"userLevel",get:function(){return v["a"].level}},{key:"noShop",get:function(){return!this.shop}},{key:"created",value:function(){var e=Object(i["a"])(regeneratorRuntime.mark((function e(){var t,a,r;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return this.record.shop=null===(t=this.$route.params)||void 0===t?void 0:t.shop,this.record.game=null===(a=this.$route.params)||void 0===a?void 0:a.game,this.record.version=null===(r=this.$route.params)||void 0===r?void 0:r.version,console.log(this.shop),e.next=6,this.getRemoteData();case 6:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"getRemoteData",value:function(){var e=Object(i["a"])(regeneratorRuntime.mark((function e(){var t,a;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,Object(f["c"])(this.record);case 2:t=e.sent,a=t.data,this.record=Object.assign(this.record,a),this.$forceUpdate(),console.log(this.record);case 7:case"end":return e.stop()}}),e,this)})));function t(){return e.apply(this,arguments)}return t}()},{key:"onCancel",value:function(){var e=Object(i["a"])(regeneratorRuntime.mark((function e(){return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$confirm("确认不保存当前信息?","Warning",{confirmButtonText:"确定",cancelButtonText:"取消",type:"warning"});case 3:this.$store.dispatch("delView",this.$route),this.$router.go(-1),e.next=9;break;case 7:e.prev=7,e.t0=e["catch"](0);case 9:case"end":return e.stop()}}),e,this,[[0,7]])})));function t(){return e.apply(this,arguments)}return t}()},{key:"saveVal",value:function(){var e=Object(i["a"])(regeneratorRuntime.mark((function e(){var t;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,this.$refs.postForm.validate();case 3:return e.next=5,Object(f["l"])(this.record);case 5:t=e.sent,t.data,this.$notify({title:"Success",message:"操作成功",type:"success",duration:2e3}),e.next=12;break;case 10:e.prev=10,e.t0=e["catch"](0);case 12:case"end":return e.stop()}}),e,this,[[0,10]])})));function t(){return e.apply(this,arguments)}return t}()},{key:"inputBegin",value:function(){this.$forceUpdate()}}]),a}(p["c"]);h=Object(u["a"])([Object(p["a"])({name:"GameTheme",components:{Sticky:m["a"],ElImageViewer:d["a"],UploadImage:g["a"]},filters:{parseGameType:function(e){return 1===e?"微信小游戏":"网页版"}}})],h);var b=h,_=b,w=(a("68e8"),a("0c7c")),k=Object(w["a"])(_,r,n,!1,null,"f1c664f6",null);t["default"]=k.exports},"961d":function(e,t,a){"use strict";a("b43b")},b43b:function(e,t,a){}}]); +//# sourceMappingURL=chunk-51e7f57a.fb2e4768.js.map \ No newline at end of file diff --git a/dist/js/chunk-51e7f57a.fb2e4768.js.map b/dist/js/chunk-51e7f57a.fb2e4768.js.map new file mode 100644 index 0000000..485b49c --- /dev/null +++ b/dist/js/chunk-51e7f57a.fb2e4768.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack:///./src/views/game/game_theme.vue?fb77","webpack:///./src/components/UploadImage/index.vue?eb0c","webpack:///./src/components/UploadImage/index.vue?edcc","webpack:///./src/components/UploadImage/index.vue?5e4b","webpack:///./src/components/UploadImage/index.vue","webpack:///./src/views/game/game_theme.vue?a350","webpack:///./src/views/game/game_theme.vue?eae5","webpack:///./src/views/game/game_theme.vue?ccc2","webpack:///./src/views/game/game_theme.vue","webpack:///./src/components/UploadImage/index.vue?8343"],"names":["render","_vm","this","_h","$createElement","_c","_self","staticClass","attrs","dataObj","handleImageSuccess","uploadUrl","_v","directives","name","rawName","value","imageUrl","length","expression","on","rmImage","staticRenderFns","tempUrl","sub_path","type","$emit","emitInput","res","console","log","url_cdn","default","component","ref","record","rules","model","callback","$$v","$set","inputBegin","saveVal","onCancel","validateRequire","rule","field","$message","message","Error","shop","validator","level","$route","params","game","version","getRemoteData","data","Object","assign","$forceUpdate","$confirm","confirmButtonText","cancelButtonText","$store","dispatch","$router","go","$refs","postForm","validate","$notify","title","duration","components","Sticky","ElImageViewer","UploadImage","filters","parseGameType"],"mappings":"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","file":"js/chunk-51e7f57a.fb2e4768.js","sourcesContent":["export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./game_theme.vue?vue&type=style&index=0&id=f1c664f6&lang=scss&scoped=true&\"","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"upload-container\"},[_c('el-upload',{staticClass:\"image-uploader\",attrs:{\"data\":_vm.dataObj,\"name\":\"image-file\",\"accept\":\"image/jpeg,image/gif,image/png\",\"multiple\":false,\"show-file-list\":false,\"on-success\":_vm.handleImageSuccess,\"drag\":\"\",\"action\":_vm.uploadUrl}},[_c('i',{staticClass:\"el-icon-upload\"}),_c('div',{staticClass:\"el-upload__text\"},[_vm._v(\" 将文件拖到此处,或\"),_c('em',[_vm._v(\"点击上传\")])])]),_c('div',{staticClass:\"image-preview\"},[_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.imageUrl.length>1),expression:\"imageUrl.length>1\"}],staticClass:\"image-preview-wrapper\"},[_c('img',{attrs:{\"src\":_vm.imageUrl}}),_c('div',{staticClass:\"image-preview-action\"},[_c('i',{staticClass:\"el-icon-delete\",on:{\"click\":_vm.rmImage}})])])])],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Prop, Vue } from 'vue-property-decorator'\n\n@Component({\n name: 'UploadImage'\n})\nexport default class extends Vue {\n @Prop({ default: '' }) private value!: string\n\n private uploadUrl = 'https://opm.kingsome.cn/api/upload'\n // private uploadUrl = 'http://127.0.0.1:4000/api/upload'\n\n private tempUrl = ''\n private dataObj = { sub_path: 'game', type: 'image' }\n\n get imageUrl() {\n return this.value\n }\n\n private emitInput(value: string) {\n this.$emit('input', value)\n }\n\n private rmImage() {\n this.emitInput('')\n }\n\n private handleImageSuccess(res: any) {\n console.log(res)\n this.emitInput(res.url_cdn)\n }\n}\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=62f54f8e&scoped=true&\"\nimport script from \"./index.vue?vue&type=script&lang=ts&\"\nexport * from \"./index.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./index.vue?vue&type=style&index=0&id=62f54f8e&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"62f54f8e\",\n null\n \n)\n\nexport default component.exports","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:\"app-container\"},[_c('el-form',{ref:\"postForm\",staticClass:\"form-container\",attrs:{\"model\":_vm.record,\"rules\":_vm.rules,\"label-width\":\"222px\"}},[_c('el-form-item',{attrs:{\"prop\":\"game_main_pic\",\"label\":\"主页正中间图片\"}},[_c('upload-image',{model:{value:(_vm.record.game_main_pic),callback:function ($$v) {_vm.$set(_vm.record, \"game_main_pic\", $$v)},expression:\"record.game_main_pic\"}})],1),_c('el-form-item',{attrs:{\"prop\":\"bg_item_icon\",\"label\":\"背景图案\"}},[_c('upload-image',{model:{value:(_vm.record.bg_item_icon),callback:function ($$v) {_vm.$set(_vm.record, \"bg_item_icon\", $$v)},expression:\"record.bg_item_icon\"}})],1),_c('el-form-item',{attrs:{\"label\":\"主页上单人赛按钮文字:\",\"prop\":\"game_single_btn\"}},[_c('el-input',{attrs:{\"placeholder\":\"主页上单人赛按钮文字\",\"required\":\"\"},on:{\"input\":_vm.inputBegin},model:{value:(_vm.record.game_single_btn),callback:function ($$v) {_vm.$set(_vm.record, \"game_single_btn\", $$v)},expression:\"record.game_single_btn\"}})],1),_c('el-form-item',{attrs:{\"label\":\"主页上多人赛按钮名字:\",\"prop\":\"game_multi_btn\"}},[_c('el-input',{attrs:{\"placeholder\":\"主页上多人赛按钮名字\",\"required\":\"\"},on:{\"input\":_vm.inputBegin},model:{value:(_vm.record.game_multi_btn),callback:function ($$v) {_vm.$set(_vm.record, \"game_multi_btn\", $$v)},expression:\"record.game_multi_btn\"}})],1),_c('el-form-item',[_c('el-button',{directives:[{name:\"permission\",rawName:\"v-permission\",value:(['shop:game_setting']),expression:\"['shop:game_setting']\"}],attrs:{\"type\":\"primary\"},on:{\"click\":_vm.saveVal}},[_vm._v(\" 保存 \")]),_c('el-button',{on:{\"click\":_vm.onCancel}},[_vm._v(\" 取消 \")])],1)],1)],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nimport { Component, Vue } from 'vue-property-decorator'\nimport Sticky from '@/components/Sticky/index.vue'\nimport ElImageViewer from 'element-ui/packages/image/src/image-viewer.vue'\nimport UploadImage from '@/components/UploadImage/index.vue'\n\nimport { getGameTheme, saveGameTheme } from '@/api/shop'\nimport { UserModule } from '@/store/modules/user'\n\n@Component({\n name: 'GameTheme',\n components: {\n Sticky,\n ElImageViewer,\n UploadImage\n },\n filters: {\n parseGameType: (type: number) => {\n return type === 1 ? '微信小游戏' : '网页版'\n }\n }\n})\nexport default class extends Vue {\n private validateRequire = (rule: any, value: string, callback: Function) => {\n if (value === '') {\n if (rule.field === 'imageURL') {\n this.$message({\n message: 'Upload cover image is required',\n type: 'error'\n })\n } else {\n this.$message({\n message: rule.field + ' 是必填的',\n type: 'error'\n })\n }\n callback(new Error(rule.field + ' 是必填的'))\n } else {\n callback()\n }\n }\n\n private shop = ''\n private record: any = {}\n\n get userLevel() {\n return UserModule.level\n }\n\n get noShop() {\n return !this.shop\n }\n\n private rules = {\n name: [{ validator: this.validateRequire }]\n }\n\n $refs!: {\n postForm: HTMLFormElement\n }\n\n async created() {\n this.record.shop = this.$route.params?.shop\n this.record.game = this.$route.params?.game\n this.record.version = this.$route.params?.version\n console.log(this.shop)\n await this.getRemoteData()\n }\n\n async getRemoteData() {\n const { data } = await getGameTheme(this.record)\n this.record = Object.assign(this.record, data)\n this.$forceUpdate()\n console.log(this.record)\n }\n\n private async onCancel() {\n try {\n await this.$confirm('确认不保存当前信息?', 'Warning', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning'\n })\n this.$store.dispatch('delView', this.$route)\n this.$router.go(-1)\n } catch (err) {\n\n }\n }\n\n private async saveVal() {\n try {\n await this.$refs.postForm.validate()\n const { data } = await saveGameTheme(this.record)\n this.$notify({\n title: 'Success',\n message: '操作成功',\n type: 'success',\n duration: 2000\n })\n } catch (err) {\n\n }\n }\n\n private inputBegin() {\n this.$forceUpdate()\n }\n}\n","import mod from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./game_theme.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--13-0!../../../node_modules/@vue/cli-plugin-typescript/node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??ref--13-3!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./game_theme.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./game_theme.vue?vue&type=template&id=f1c664f6&scoped=true&\"\nimport script from \"./game_theme.vue?vue&type=script&lang=ts&\"\nexport * from \"./game_theme.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./game_theme.vue?vue&type=style&index=0&id=f1c664f6&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f1c664f6\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../../../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../../../node_modules/style-resources-loader/lib/index.js??ref--8-oneOf-1-4!../../../node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=style&index=0&id=62f54f8e&lang=scss&scoped=true&\""],"sourceRoot":""} \ No newline at end of file diff --git a/dist/precache-manifest.1cb87b8b794781fdc8ff4587b832f6ec.js b/dist/precache-manifest.e3a85a7f948bf766f1a197f08b1f74c4.js similarity index 95% rename from dist/precache-manifest.1cb87b8b794781fdc8ff4587b832f6ec.js rename to dist/precache-manifest.e3a85a7f948bf766f1a197f08b1f74c4.js index 609d4f3..90f6508 100644 --- a/dist/precache-manifest.1cb87b8b794781fdc8ff4587b832f6ec.js +++ b/dist/precache-manifest.e3a85a7f948bf766f1a197f08b1f74c4.js @@ -8,7 +8,7 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/css/404.96fe1c26.css" }, { - "revision": "96a4534a30cdc54471cd", + "revision": "8e44f3c4f1183e5af48a", "url": "/css/app.82284a16.css" }, { @@ -48,11 +48,7 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/css/chunk-21495f61.146db6b7.css" }, { - "revision": "b01f6cbd4b649f385bae", - "url": "/css/chunk-2ffaffe4.d97489d0.css" - }, - { - "revision": "7df76c52dc2ea140bc29", + "revision": "bdc8d418651caddb7870", "url": "/css/chunk-37ee6f14.61483c54.css" }, { @@ -79,6 +75,10 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "revision": "ce0c285f03efd1d06f9b", "url": "/css/chunk-51479e12.309dc905.css" }, + { + "revision": "50880a02be7caeb8e353", + "url": "/css/chunk-51e7f57a.7d84a576.css" + }, { "revision": "23983a384e94435dd265", "url": "/css/chunk-5337e365.9011efc0.css" @@ -168,7 +168,7 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/img/404.a57b6f31.png" }, { - "revision": "49733212a63645b4cce4479dd1382248", + "revision": "ba364e39e1782fb9a741427284f746e8", "url": "/index.html" }, { @@ -180,8 +180,8 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "url": "/js/404.ec607ed7.js" }, { - "revision": "96a4534a30cdc54471cd", - "url": "/js/app.3e2473e2.js" + "revision": "8e44f3c4f1183e5af48a", + "url": "/js/app.deacb710.js" }, { "revision": "4308fe0503e593d27da4", @@ -231,17 +231,13 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "revision": "92a2657a29da835e4503", "url": "/js/chunk-21495f61.9fe9e46e.js" }, - { - "revision": "b01f6cbd4b649f385bae", - "url": "/js/chunk-2ffaffe4.888ba0b8.js" - }, { "revision": "e467655a9d362bd58dbe", "url": "/js/chunk-330c0877.ddb589a5.js" }, { - "revision": "7df76c52dc2ea140bc29", - "url": "/js/chunk-37ee6f14.d353a8ad.js" + "revision": "bdc8d418651caddb7870", + "url": "/js/chunk-37ee6f14.07ce1530.js" }, { "revision": "55e2dd40e00ea2ea67d6", @@ -271,6 +267,10 @@ self.__precacheManifest = (self.__precacheManifest || []).concat([ "revision": "ce0c285f03efd1d06f9b", "url": "/js/chunk-51479e12.e1d371de.js" }, + { + "revision": "50880a02be7caeb8e353", + "url": "/js/chunk-51e7f57a.fb2e4768.js" + }, { "revision": "23983a384e94435dd265", "url": "/js/chunk-5337e365.7465da3c.js" diff --git a/dist/service-worker.js b/dist/service-worker.js index cf1032a..690edca 100644 --- a/dist/service-worker.js +++ b/dist/service-worker.js @@ -14,7 +14,7 @@ importScripts("https://storage.googleapis.com/workbox-cdn/releases/4.3.1/workbox-sw.js"); importScripts( - "/precache-manifest.1cb87b8b794781fdc8ff4587b832f6ec.js" + "/precache-manifest.e3a85a7f948bf766f1a197f08b1f74c4.js" ); workbox.core.setCacheNameDetails({prefix: "pyxis-fe"});