diff --git a/index.html b/index.html
index 91c5b6c9..0d635110 100644
--- a/index.html
+++ b/index.html
@@ -1 +1 @@
-
LOCKING | 云建筑
\ No newline at end of file
+LOCKING | 云建筑
\ No newline at end of file
diff --git a/static/js/app.ffc6a69c.js b/static/js/app.a9925658.js
similarity index 99%
rename from static/js/app.ffc6a69c.js
rename to static/js/app.a9925658.js
index 237798f6..086fd1aa 100644
--- a/static/js/app.ffc6a69c.js
+++ b/static/js/app.a9925658.js
@@ -1,2 +1,2 @@
-(function(e){function n(n){for(var c,a,u=n[0],i=n[1],s=n[2],d=0,f=[];d4&&void 0!==arguments[4]?arguments[4]:[];return{platformType:e,orgId:n,orgLogo:c,orgName:t,accessList:a}}var r={CompanyConsole:"company_console",ProjectManager:"project_manager"};function o(e,n){return-1!==e.indexOf(n)}},"3de1":function(e,n,t){"use strict";t.d(n,"b",(function(){return r})),t.d(n,"c",(function(){return o})),t.d(n,"e",(function(){return u})),t.d(n,"d",(function(){return i})),t.d(n,"a",(function(){return s}));t("99af"),t("13d5"),t("fb6a"),t("4fad"),t("d3b7");var c=t("3835"),a=t("2b0e");function r(e){return Object.entries(e).reduce((function(e,n){var t=Object(c["a"])(n,2),a=t[0],r=t[1];return e["".concat(a[0].toLocaleLowerCase()).concat(a.slice(1))]=r,e}),{})}function o(e){return Object.entries(e).reduce((function(e,n){var t=Object(c["a"])(n,2),a=t[0],r=t[1];return e["".concat(a[0].toLocaleUpperCase()).concat(a.slice(1))]=r,e}),{})}var u=function(e){return new Promise((function(n){return setTimeout(n,e)}))},i={success:function(e){a["default"].prototype.$notify({title:"",message:e,type:"success",offset:100,duration:2500})},error:function(e){a["default"].prototype.$notify({message:e,type:"error",offset:100,duration:2500})},info:function(e){a["default"].prototype.$notify({title:"",message:e,type:"info",offset:100,duration:2500})},warning:function(e){a["default"].prototype.$notify({title:"",message:e,type:"warning",offset:100,duration:2500})}};function s(e,n){var t=document.createElement("a");t.setAttribute("href",e),t.setAttribute("download",n),t.style.display="none",document.body.appendChild(t),t.click(),document.body.removeChild(t)}},"41cb":function(e,n,t){"use strict";t("b0c0"),t("d3b7");var c=t("2b0e"),a=t("8c4f"),r={login:"LOCKING | 登录",project:"LOCKING | 项目编辑",platform:"LOCKING | 平台选择",template:"LOCKING | 模板控制台",projnotice:"LOCKING | 更新提醒",notFound:"404 | 未找到该页面",workspace:"LOCKING | 项目详情",search:"LOCKING | 搜索",recycle:"LOCKING | 回收站",cloud:"LOCKING | 云盘",cloudrecycle:"LOCKING | 云回收站",cloudsource:"LOCKING | 云资源管理器",company:"LOCKING | 企业后台",message2:"LOCKING | 企业后台",company_message:"LOCKING | 平台消息",company_user:"LOCKING | 通讯录",company_project:"LOCKING | 项目管理",company_template:"LOCKING | 模板与应用",company_setting:"LOCKING | 通用设置",company_template_detail:"LOCKING | 模板查看",company_app:"LOCKING | 应用",company_template_market:"LOCKING | 应用市场",system:"LOCKING | 总后台",system_template:"LOCKING | 流程模板",system_template_mind:"LOCKING | 思维导图",system_template_matrix:"LOCKING | 矩阵模板",system_runmanage:"LOCKING | 运行管理",system_appcenter:"LOCKING | 应用管理",system_setting:"LOCKING | 总体权限",system_appinfo:"LOCKING | 应用介绍",system_template_file:"流程模板 | 样板文件"};c["default"].use(a["a"]);var o=new a["a"]({mode:"hash",routes:[{path:"/",name:"login",component:function(){return Promise.all([t.e("chunk-5acb4ad4"),t.e("chunk-6610d797")]).then(t.bind(null,"9ed6"))}},{path:"/demo",name:"demo",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-f6418e24"),t.e("chunk-4d5f7ff6"),t.e("chunk-1383cec2")]).then(t.bind(null,"46a4"))}},{path:"/platform",name:"platform",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-f6418e24"),t.e("chunk-4d5f7ff6"),t.e("chunk-546c3053")]).then(t.bind(null,"0a7f"))}},{path:"/index",name:"index",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-f6418e24"),t.e("chunk-4d5f7ff6"),t.e("chunk-19012998")]).then(t.bind(null,"011a"))}},{path:"/projnotice",name:"projnotice",component:function(){return Promise.all([t.e("chunk-5acb4ad4"),t.e("chunk-a57ac5ae")]).then(t.bind(null,"00ec"))}},{path:"/email",name:"email",component:function(){return t.e("chunk-fa61d866").then(t.bind(null,"19a0"))}},{path:"/workspace",name:"workspace",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-f6418e24"),t.e("chunk-4d5f7ff6"),t.e("chunk-5acb4ad4"),t.e("chunk-2cccb4ca")]).then(t.bind(null,"11f4"))}},{path:"/project",name:"project",component:function(){return t.e("chunk-0d3a42ee").then(t.bind(null,"47c5"))}},{path:"/recycle",name:"recycle",component:function(){return t.e("chunk-2d22fcc4").then(t.bind(null,"ea0b"))}},{path:"/search",name:"search",component:function(){return t.e("chunk-2d226007").then(t.bind(null,"e798"))}},{path:"/cloud",name:"cloud",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-5acb4ad4"),t.e("chunk-0f09bee9")]).then(t.bind(null,"4488"))}},{path:"/cloudrecycle",name:"cloudrecycle",component:function(){return t.e("chunk-2d224b2b").then(t.bind(null,"e0f0"))}},{path:"/cloudsource",name:"cloudsource",component:function(){return t.e("chunk-2d0c061a").then(t.bind(null,"4217"))}},{path:"/company",name:"company",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-f6418e24"),t.e("chunk-4d5f7ff6"),t.e("chunk-9b3a1c08")]).then(t.bind(null,"db21"))},redirect:{name:"company_home"},children:[{path:"home",name:"company_home",component:function(){return t.e("chunk-3fe09320").then(t.bind(null,"345a"))}},{path:"message",name:"company_message",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-2d0cf6a4")]).then(t.bind(null,"642b"))}},{path:"user",name:"company_user",component:function(){return Promise.all([t.e("chunk-f6418e24"),t.e("chunk-0f555441")]).then(t.bind(null,"29c0"))}},{path:"project",name:"company_project",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-578abaf6")]).then(t.bind(null,"e984"))}},{path:"template",name:"company_template",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-2d0dddf0")]).then(t.bind(null,"82dd"))}},{path:"template/detail",name:"company_template_detail",component:function(){return t.e("chunk-b5d13ce8").then(t.bind(null,"ce1d"))}},{path:"template/market",name:"company_template_market",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-2d207f39")]).then(t.bind(null,"a35f"))}},{path:"setting",name:"company_setting",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-1fe39068")]).then(t.bind(null,"cda4"))}},{path:"app",name:"company_app",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-2d0b3688")]).then(t.bind(null,"27f3"))}}]},{path:"/template",name:"template",component:function(e){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-f6418e24"),t.e("chunk-4d5f7ff6"),t.e("chunk-ef8ce8b2")]).then(function(){var n=[t("65b7")];e.apply(null,n)}.bind(this)).catch(t.oe)}},{path:"/template/create",name:"template_create",component:function(e){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-f6418e24"),t.e("chunk-4d5f7ff6"),t.e("chunk-74b26ff1")]).then(function(){var n=[t("d235")];e.apply(null,n)}.bind(this)).catch(t.oe)}},{path:"/system",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-f6418e24"),t.e("chunk-4d5f7ff6"),t.e("chunk-7a01996c")]).then(t.bind(null,"f364"))},redirect:{name:"system_customer"},children:[{path:"customer",name:"system_customer",component:function(){return t.e("chunk-eb6bd3dc").then(t.bind(null,"f851"))}},{path:"template",name:"system_template",component:function(){return t.e("chunk-37f74005").then(t.bind(null,"81b5"))}},{path:"runmanage",name:"system_runmanage",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-7e46c9de")]).then(t.bind(null,"d798"))}},{path:"template/matrix",name:"system_template_matrix",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-f6418e24"),t.e("chunk-4d5f7ff6"),t.e("chunk-d9ac4dc2")]).then(t.bind(null,"2275"))}},{path:"template/mind",name:"system_template_mind",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-f6418e24"),t.e("chunk-4d5f7ff6"),t.e("chunk-00b265e8")]).then(t.bind(null,"bccc"))}},{path:"template/tempfile",name:"system_template_file",component:function(){return t.e("chunk-3fe478f8").then(t.bind(null,"f1f7"))}},{path:"appcenter",name:"system_appcenter",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-2d0e148e")]).then(t.bind(null,"7a7e"))}},{path:"appinfo",name:"system_appinfo",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-2d21b850")]).then(t.bind(null,"bfb8"))}},{path:"setting",name:"system_setting",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-1fe40532")]).then(t.bind(null,"ddca"))}},{path:"*",redirect:{name:"system_customer"}}]},{path:"*",name:"notfound",component:function(){return t.e("chunk-05a1125b").then(t.bind(null,"9403"))}}]});o.beforeEach((function(e,n,t){"/"===e.path||sessionStorage.getItem("userId")?t():t({path:"/"})})),o.afterEach((function(e){window.document.title=r[e.name]||"LOCKING | 云建筑"}));n["a"]=o},"53be":function(e,n,t){},"56d7":function(e,n,t){"use strict";t.r(n);t("4de4"),t("e260"),t("e6cf"),t("cca6"),t("a79d");var c=t("2b0e"),a=function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{attrs:{id:"app"}},[t("router-view",{ref:"mainpage",staticClass:"mt-48",attrs:{id:"bigbody"}})],1)},r=[],o=(t("b0c0"),{components:{},name:"App",data:function(){return{header_show:!0,companyName:"",mypath:"/",showIndexOption:!1,showHelpPage:!1,searchName:"",isShowOutWorkSpace:!1,outWorkSpace:!1}},created:function(){null!=document.getElementById("Loading")&&null!=document.getElementById("Loading").nodeName&&""!=document.getElementById("Loading").nodeName&&document.body.removeChild(document.getElementById("Loading")),"login"!=this.$route.name&&"notfound"!=this.$route.name&&"platform"!==this.$route.name||(this.header_show=!1)},mounted:function(){window.addEventListener("scroll",this.handleScroll,!0)},methods:{handleScroll:function(){},showOption:function(){this.showIndexOption=!0},showHelp:function(){this.showHelpPage=!0},closeShowOption:function(){this.showIndexOption=!1,this.showHelpPage=!1},closeWorkSet:function(){"workspace"==this.$route.name&&this.$refs["mainpage"].closeAppManagePain()},getSearchName:function(e){this.searchName=e},getIsShowOutWorkSpace:function(e){this.outWorkSpace=!1,this.isShowOutWorkSpace=e},getOutWorkSpace:function(e){this.outWorkSpace=e}},beforeDestroy:function(){window.removeEventListener("scroll",this.handleScroll)},watch:{$route:function(e){this.mypath=e.path}}}),u=o,i=(t("5c0b"),t("2877")),s=Object(i["a"])(u,a,r,!1,null,null,null),d=s.exports,f=t("41cb"),l=t("5c96"),h=t.n(l),p=(t("0fae"),t("96cf"),t("1da1")),m=t("b775"),b=t("0f13"),k=t("3de1"),y=function(){return{isLogin:!1,accountId:void 0,accountName:void 0,userName:void 0,platformList:[],currentPlatform:{},currentCompanyId:void 0,avator:void 0,userInfo:{}}},g=function(){var e=y();try{var n=JSON.parse(sessionStorage.getItem("user")),t=sessionStorage.getItem("companyId"),c=JSON.parse(sessionStorage.getItem("platform")||"{}");n&&n.accountId&&(e.isLogin=!0,Object.assign(e,n),e.currentCompanyId=t,e.currentPlatform=c)}catch(a){console.log("加载session数据失败"),e=y()}return e},v={state:g(),setCurrentPlatform:function(e){this.state.currentPlatform=e,this.state.currentCompanyId=e.orgId,sessionStorage.companyId=e.orgId,sessionStorage.platform=JSON.stringify(e)},login:function(e,n){var t=this;return Object(p["a"])(regeneratorRuntime.mark((function c(){var a,r,o,u,i,s,d,f,l,h,p,y,g,v,O,C,_,N,I;return regeneratorRuntime.wrap((function(c){while(1)switch(c.prev=c.next){case 0:return c.next=2,Object(m["b"])("authentication/login",{UserName:e,PassWord:n});case 2:if(a=c.sent,r=0===a.Code,r){c.next=6;break}return c.abrupt("return",a);case 6:if(t.state.isLogin=!0,o=Object(k["b"])(a.Data||{}),delete o.userExt,u=o.companyId,i=o.cnName,s=o.id,d=o.permission,f=o.backgroundPermission,l=[],h={accountId:s,accountName:e,userName:i,platformList:l,userInfo:o},p=3===f,y=2===f,!p){c.next=18;break}l.push(Object(b["d"])(b["b"].MANAGE_CENTER,u,"LOCKING 总后台",void 0,[])),c.next=29;break;case 18:return c.next=20,Object(m["b"])("company/queryFrontDeskCompanyById",{id:u});case 20:if(g=c.sent,0===g.Code){c.next=23;break}return c.abrupt("return",g);case 23:v=g.Data,O=void 0===v?{}:v,C=O.company,_=C.LogoUrl,N=C.CompanyName,I=[],y&&I.push(b["a"].CompanyConsole),1===d&&I.push(b["a"].ProjectManager),l.push(Object(b["d"])(b["b"].COMPANY,u,N,_,I));case 29:return t.state.isLogin=!0,Object.assign(t.state,h),sessionStorage.userId=s,sessionStorage.accountId=s,sessionStorage.user=JSON.stringify(h),c.abrupt("return",{Code:a.Code,Data:h});case 35:case"end":return c.stop()}}),c)})))()},logout:function(){this.state=y(),Object(m["b"])("authentication/loginOut"),sessionStorage.clear()}},O=t("2f62"),C=t("a78e"),_=t.n(C),N=t("5ab9"),I=function(e){return Object(N["a"])(e)||"/static/img/avator_default.svg"},w=function(e,n){var t="avator"===n?"/static/img/avator_default.svg":"";return Object(N["a"])(e)||t},L=t("caf9"),P=t("32ed"),j=t.n(P),S=function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("img",{directives:[{name:"lazy",rawName:"v-lazy",value:e.src,expression:"src"}]})},E=[],x={props:{src:String}},G=x,K=Object(i["a"])(G,S,E,!1,null,null,null),T=K.exports;t("856b"),t("d903"),t("c610"),t("935a"),t("53be");c["default"].use(h.a),c["default"].use(L["a"]),c["default"].use(O["a"]),c["default"].prototype.$cookie=_.a,c["default"].component("ImgLazy",T),c["default"].prototype.$axios=m["a"],c["default"].prototype.$fetch=m["a"],c["default"].prototype.$fetchApi=m["b"],c["default"].filter("resolveImg",w),c["default"].filter("resolveAvator",I),c["default"].use(j.a),c["default"].config.productionTip=!1,new c["default"]({router:f["a"],store:v,render:function(e){return e(d)}}).$mount("#app")},"5ab9":function(e,n,t){"use strict";t.d(n,"c",(function(){return i})),t.d(n,"b",(function(){return s})),t.d(n,"a",(function(){return f}));t("99af"),t("c975"),t("ac1f"),t("1276"),t("96cf");var c=t("1da1"),a=t("9b15"),r=t("2ef0"),o=new a({region:"oss-cn-hangzhou",accessKeyId:"LTAI4G2BEDNpfdLmquYYMaMV",accessKeySecret:"tPhAL3qAgF9Tq67h73snAmwu8iPZ5t",bucket:"yiyun-client-files",secure:!0}),u=function(e){return"".concat((new Date).getTime(),"/").concat(e)},i=function(e){return"oss://".concat(e)};function s(e,n){return d.apply(this,arguments)}function d(){return d=Object(c["a"])(regeneratorRuntime.mark((function e(n,t){var c,a,r,i=arguments;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return c=i.length>2&&void 0!==i[2]?i[2]:{},e.prev=1,a=u(n),e.next=5,o.multipartUpload(a,t,c);case 5:return r=e.sent,e.abrupt("return",r);case 9:return e.prev=9,e.t0=e["catch"](1),console.error("file upload failed:",e.t0),e.abrupt("return",null);case 13:case"end":return e.stop()}}),e,null,[[1,9]])}))),d.apply(this,arguments)}var f=Object(r["memoize"])((function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1?arguments[1]:void 0;if(0!==e.indexOf("oss://"))return e;var t=e.substr(6),c=n||t.split("/").pop();try{var a=3600,r=o.signatureUrl(t,{expires:a,response:{"content-disposition":'attachment; filename="'.concat(c,'"')}});return setTimeout((function(){f.cache.delete(e)}),1e3*a),r}catch(u){return null}}))},"5c0b":function(e,n,t){"use strict";var c=t("9c0c"),a=t.n(c);a.a},"856b":function(e,n,t){},"935a":function(e,n,t){},"9c0c":function(e,n,t){},b775:function(e,n,t){"use strict";t.d(n,"b",(function(){return s})),t.d(n,"c",(function(){return f}));t("99af"),t("c975"),t("fb6a"),t("d3b7"),t("ac1f"),t("1276"),t("96cf");var c=t("3835"),a=t("1da1"),r=t("bc3a"),o=t.n(r),u=t("41cb"),i=t("3de1");function s(e,n,t){return d.apply(this,arguments)}function d(){return d=Object(a["a"])(regeneratorRuntime.mark((function e(n,t,a){var r,u,i,s,d;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return r=l(n),u=Object(c["a"])(r,2),i=u[0],s=u[1],e.prev=1,e.next=4,"GET"===i?o.a.get(s,{params:t},a):o.a.post(s,t,a);case 4:return d=e.sent,e.abrupt("return",d.data);case 8:if(e.prev=8,e.t0=e["catch"](1),!e.t0.response||!e.t0.response.status){e.next=16;break}e.t1=e.t0.response.status,e.next=404===e.t1?14:15;break;case 14:return e.abrupt("return",{Code:404,Msg:"找不到指定的服务。"});case 15:return e.abrupt("return",{Code:503,Msg:"服务异常,请稍后再试。"});case 16:return console.error(e.t0),e.abrupt("return",{Code:503,Msg:"服务异常,请稍后再试。"});case 18:case"end":return e.stop()}}),e,null,[[1,8]])}))),d.apply(this,arguments)}function f(e){return 0!==e.Code&&i["d"].error(e.Msg),e}function l(e){var n=e.split("/"),t=Object(c["a"])(n,1),a=t[0],r=-1!==["template","project","folder","file"].indexOf(a)?"pms":"cms",o="api/".concat(r,"/").concat("authentication"===a?"":"v1/").concat(e),u="GET";switch(e){case"authentication/login":case"company/addCompany":case"company/queryGeneralOverview":case"company/queryProviceTree":case"company/updateCompanyById":case"dept/addDept":case"dept/updateDept":case"user/addUser":case"user/resetPassWord":case"user/updateUser":case"template/createTemplate":case"template/fileExchange":case"template/updateTemplate":case"template/uploadingXmind":case"template/addTemplateNodeModelFile":case"template/createNestedRelevance":case"template/deleteNestedRelevance":case"folder/createSubfolder":case"project/createProject":case"project/editProject":case"project/assignedWork":case"file/addArchMilesStone":case"file/addFile":case"file/updateFile":case"file/fileCoordinationChange":u="POST";break;default:u="GET";break}return[u,o]}o.a.defaults.withCredentials=!0,o.a.interceptors.request.use((function(e){return 0===e.url.indexOf("api/")&&(e.url="".concat("/api/").concat(e.url.slice(4))),e}),(function(e){return Promise.reject(e)})),o.a.interceptors.response.use((function(e){return e}),(function(e){if(e.response)switch(e.response.status){case 401:"/"!=u["a"].currentRoute.fullPath&&(i["d"].error("登录超时,请重新登录"),sessionStorage.clear(),u["a"].push({path:"/"}));break}return Promise.reject(e)})),n["a"]=o.a},c610:function(e,n,t){},d903:function(e,n,t){}});
-//# sourceMappingURL=app.ffc6a69c.js.map
\ No newline at end of file
+(function(e){function n(n){for(var c,a,u=n[0],i=n[1],s=n[2],d=0,f=[];d4&&void 0!==arguments[4]?arguments[4]:[];return{platformType:e,orgId:n,orgLogo:c,orgName:t,accessList:a}}var r={CompanyConsole:"company_console",ProjectManager:"project_manager"};function o(e,n){return-1!==e.indexOf(n)}},"3de1":function(e,n,t){"use strict";t.d(n,"b",(function(){return r})),t.d(n,"c",(function(){return o})),t.d(n,"e",(function(){return u})),t.d(n,"d",(function(){return i})),t.d(n,"a",(function(){return s}));t("99af"),t("13d5"),t("fb6a"),t("4fad"),t("d3b7");var c=t("3835"),a=t("2b0e");function r(e){return Object.entries(e).reduce((function(e,n){var t=Object(c["a"])(n,2),a=t[0],r=t[1];return e["".concat(a[0].toLocaleLowerCase()).concat(a.slice(1))]=r,e}),{})}function o(e){return Object.entries(e).reduce((function(e,n){var t=Object(c["a"])(n,2),a=t[0],r=t[1];return e["".concat(a[0].toLocaleUpperCase()).concat(a.slice(1))]=r,e}),{})}var u=function(e){return new Promise((function(n){return setTimeout(n,e)}))},i={success:function(e){a["default"].prototype.$notify({title:"",message:e,type:"success",offset:100,duration:2500})},error:function(e){a["default"].prototype.$notify({message:e,type:"error",offset:100,duration:2500})},info:function(e){a["default"].prototype.$notify({title:"",message:e,type:"info",offset:100,duration:2500})},warning:function(e){a["default"].prototype.$notify({title:"",message:e,type:"warning",offset:100,duration:2500})}};function s(e,n){var t=document.createElement("a");t.setAttribute("href",e),t.setAttribute("download",n),t.style.display="none",document.body.appendChild(t),t.click(),document.body.removeChild(t)}},"41cb":function(e,n,t){"use strict";t("b0c0"),t("d3b7");var c=t("2b0e"),a=t("8c4f"),r={login:"LOCKING | 登录",project:"LOCKING | 项目编辑",platform:"LOCKING | 平台选择",template:"LOCKING | 模板控制台",projnotice:"LOCKING | 更新提醒",notFound:"404 | 未找到该页面",workspace:"LOCKING | 项目详情",search:"LOCKING | 搜索",recycle:"LOCKING | 回收站",cloud:"LOCKING | 云盘",cloudrecycle:"LOCKING | 云回收站",cloudsource:"LOCKING | 云资源管理器",company:"LOCKING | 企业后台",message2:"LOCKING | 企业后台",company_message:"LOCKING | 平台消息",company_user:"LOCKING | 通讯录",company_project:"LOCKING | 项目管理",company_template:"LOCKING | 模板与应用",company_setting:"LOCKING | 通用设置",company_template_detail:"LOCKING | 模板查看",company_app:"LOCKING | 应用",company_template_market:"LOCKING | 应用市场",system:"LOCKING | 总后台",system_template:"LOCKING | 流程模板",system_template_mind:"LOCKING | 思维导图",system_template_matrix:"LOCKING | 矩阵模板",system_runmanage:"LOCKING | 运行管理",system_appcenter:"LOCKING | 应用管理",system_setting:"LOCKING | 总体权限",system_appinfo:"LOCKING | 应用介绍",system_template_file:"流程模板 | 样板文件"};c["default"].use(a["a"]);var o=new a["a"]({mode:"hash",routes:[{path:"/",name:"login",component:function(){return Promise.all([t.e("chunk-5acb4ad4"),t.e("chunk-6610d797")]).then(t.bind(null,"9ed6"))}},{path:"/demo",name:"demo",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-f6418e24"),t.e("chunk-4d5f7ff6"),t.e("chunk-1383cec2")]).then(t.bind(null,"46a4"))}},{path:"/platform",name:"platform",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-f6418e24"),t.e("chunk-4d5f7ff6"),t.e("chunk-546c3053")]).then(t.bind(null,"0a7f"))}},{path:"/index",name:"index",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-f6418e24"),t.e("chunk-4d5f7ff6"),t.e("chunk-19012998")]).then(t.bind(null,"011a"))}},{path:"/projnotice",name:"projnotice",component:function(){return Promise.all([t.e("chunk-5acb4ad4"),t.e("chunk-a57ac5ae")]).then(t.bind(null,"00ec"))}},{path:"/email",name:"email",component:function(){return t.e("chunk-fa61d866").then(t.bind(null,"19a0"))}},{path:"/workspace",name:"workspace",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-f6418e24"),t.e("chunk-4d5f7ff6"),t.e("chunk-5acb4ad4"),t.e("chunk-2cccb4ca")]).then(t.bind(null,"11f4"))}},{path:"/project",name:"project",component:function(){return t.e("chunk-0d3a42ee").then(t.bind(null,"47c5"))}},{path:"/recycle",name:"recycle",component:function(){return t.e("chunk-2d22fcc4").then(t.bind(null,"ea0b"))}},{path:"/search",name:"search",component:function(){return t.e("chunk-2d226007").then(t.bind(null,"e798"))}},{path:"/cloud",name:"cloud",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-5acb4ad4"),t.e("chunk-0f09bee9")]).then(t.bind(null,"4488"))}},{path:"/cloudrecycle",name:"cloudrecycle",component:function(){return t.e("chunk-2d224b2b").then(t.bind(null,"e0f0"))}},{path:"/cloudsource",name:"cloudsource",component:function(){return t.e("chunk-2d0c061a").then(t.bind(null,"4217"))}},{path:"/company",name:"company",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-f6418e24"),t.e("chunk-4d5f7ff6"),t.e("chunk-9b3a1c08")]).then(t.bind(null,"db21"))},redirect:{name:"company_home"},children:[{path:"home",name:"company_home",component:function(){return t.e("chunk-3fe09320").then(t.bind(null,"345a"))}},{path:"message",name:"company_message",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-2d0cf6a4")]).then(t.bind(null,"642b"))}},{path:"user",name:"company_user",component:function(){return Promise.all([t.e("chunk-f6418e24"),t.e("chunk-0f555441")]).then(t.bind(null,"29c0"))}},{path:"project",name:"company_project",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-578abaf6")]).then(t.bind(null,"e984"))}},{path:"template",name:"company_template",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-2d0dddf0")]).then(t.bind(null,"82dd"))}},{path:"template/detail",name:"company_template_detail",component:function(){return t.e("chunk-b5d13ce8").then(t.bind(null,"ce1d"))}},{path:"template/market",name:"company_template_market",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-2d207f39")]).then(t.bind(null,"a35f"))}},{path:"setting",name:"company_setting",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-1fe39068")]).then(t.bind(null,"cda4"))}},{path:"app",name:"company_app",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-2d0b3688")]).then(t.bind(null,"27f3"))}}]},{path:"/template",name:"template",component:function(e){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-f6418e24"),t.e("chunk-4d5f7ff6"),t.e("chunk-ef8ce8b2")]).then(function(){var n=[t("65b7")];e.apply(null,n)}.bind(this)).catch(t.oe)}},{path:"/template/create",name:"template_create",component:function(e){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-f6418e24"),t.e("chunk-4d5f7ff6"),t.e("chunk-74b26ff1")]).then(function(){var n=[t("d235")];e.apply(null,n)}.bind(this)).catch(t.oe)}},{path:"/system",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-f6418e24"),t.e("chunk-4d5f7ff6"),t.e("chunk-7a01996c")]).then(t.bind(null,"f364"))},redirect:{name:"system_customer"},children:[{path:"customer",name:"system_customer",component:function(){return t.e("chunk-eb6bd3dc").then(t.bind(null,"f851"))}},{path:"template",name:"system_template",component:function(){return t.e("chunk-37f74005").then(t.bind(null,"81b5"))}},{path:"runmanage",name:"system_runmanage",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-7e46c9de")]).then(t.bind(null,"d798"))}},{path:"template/matrix",name:"system_template_matrix",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-f6418e24"),t.e("chunk-4d5f7ff6"),t.e("chunk-d9ac4dc2")]).then(t.bind(null,"2275"))}},{path:"template/mind",name:"system_template_mind",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-f6418e24"),t.e("chunk-4d5f7ff6"),t.e("chunk-00b265e8")]).then(t.bind(null,"bccc"))}},{path:"template/tempfile",name:"system_template_file",component:function(){return t.e("chunk-3fe478f8").then(t.bind(null,"f1f7"))}},{path:"appcenter",name:"system_appcenter",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-2d0e148e")]).then(t.bind(null,"7a7e"))}},{path:"appinfo",name:"system_appinfo",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-2d21b850")]).then(t.bind(null,"bfb8"))}},{path:"setting",name:"system_setting",component:function(){return Promise.all([t.e("chunk-bd5a3f5c"),t.e("chunk-1fe40532")]).then(t.bind(null,"ddca"))}},{path:"*",redirect:{name:"system_customer"}}]},{path:"*",name:"notfound",component:function(){return t.e("chunk-05a1125b").then(t.bind(null,"9403"))}}]});o.beforeEach((function(e,n,t){"/"===e.path||sessionStorage.getItem("userId")?t():t({path:"/"})})),o.afterEach((function(e){window.document.title=r[e.name]||"LOCKING | 云建筑"}));n["a"]=o},"53be":function(e,n,t){},"56d7":function(e,n,t){"use strict";t.r(n);t("4de4"),t("e260"),t("e6cf"),t("cca6"),t("a79d");var c=t("2b0e"),a=function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("div",{attrs:{id:"app"}},[t("router-view",{ref:"mainpage",staticClass:"mt-48",attrs:{id:"bigbody"}})],1)},r=[],o=(t("b0c0"),{components:{},name:"App",data:function(){return{header_show:!0,companyName:"",mypath:"/",showIndexOption:!1,showHelpPage:!1,searchName:"",isShowOutWorkSpace:!1,outWorkSpace:!1}},created:function(){null!=document.getElementById("Loading")&&null!=document.getElementById("Loading").nodeName&&""!=document.getElementById("Loading").nodeName&&document.body.removeChild(document.getElementById("Loading")),"login"!=this.$route.name&&"notfound"!=this.$route.name&&"platform"!==this.$route.name||(this.header_show=!1)},mounted:function(){window.addEventListener("scroll",this.handleScroll,!0)},methods:{handleScroll:function(){},showOption:function(){this.showIndexOption=!0},showHelp:function(){this.showHelpPage=!0},closeShowOption:function(){this.showIndexOption=!1,this.showHelpPage=!1},closeWorkSet:function(){"workspace"==this.$route.name&&this.$refs["mainpage"].closeAppManagePain()},getSearchName:function(e){this.searchName=e},getIsShowOutWorkSpace:function(e){this.outWorkSpace=!1,this.isShowOutWorkSpace=e},getOutWorkSpace:function(e){this.outWorkSpace=e}},beforeDestroy:function(){window.removeEventListener("scroll",this.handleScroll)},watch:{$route:function(e){this.mypath=e.path}}}),u=o,i=(t("5c0b"),t("2877")),s=Object(i["a"])(u,a,r,!1,null,null,null),d=s.exports,f=t("41cb"),l=t("5c96"),h=t.n(l),p=(t("0fae"),t("96cf"),t("1da1")),m=t("b775"),b=t("0f13"),k=t("3de1"),y=function(){return{isLogin:!1,accountId:void 0,accountName:void 0,userName:void 0,platformList:[],currentPlatform:{},currentCompanyId:void 0,avator:void 0,userInfo:{}}},g=function(){var e=y();try{var n=JSON.parse(sessionStorage.getItem("user")),t=sessionStorage.getItem("companyId"),c=JSON.parse(sessionStorage.getItem("platform")||"{}");n&&n.accountId&&(e.isLogin=!0,Object.assign(e,n),e.currentCompanyId=t,e.currentPlatform=c)}catch(a){console.log("加载session数据失败"),e=y()}return e},v={state:g(),setCurrentPlatform:function(e){this.state.currentPlatform=e,this.state.currentCompanyId=e.orgId,sessionStorage.companyId=e.orgId,sessionStorage.platform=JSON.stringify(e)},login:function(e,n){var t=this;return Object(p["a"])(regeneratorRuntime.mark((function c(){var a,r,o,u,i,s,d,f,l,h,p,y,g,v,O,C,_,N,I;return regeneratorRuntime.wrap((function(c){while(1)switch(c.prev=c.next){case 0:return c.next=2,Object(m["b"])("authentication/login",{UserName:e,PassWord:n});case 2:if(a=c.sent,r=0===a.Code,r){c.next=6;break}return c.abrupt("return",a);case 6:if(t.state.isLogin=!0,o=Object(k["b"])(a.Data||{}),delete o.userExt,u=o.companyId,i=o.cnName,s=o.id,d=o.permission,f=o.backgroundPermission,l=[],h={accountId:s,accountName:e,userName:i,platformList:l,userInfo:o},p=3===f,y=2===f,!p){c.next=18;break}l.push(Object(b["d"])(b["b"].MANAGE_CENTER,u,"LOCKING 总后台",void 0,[])),c.next=29;break;case 18:return c.next=20,Object(m["b"])("company/queryFrontDeskCompanyById",{id:u});case 20:if(g=c.sent,0===g.Code){c.next=23;break}return c.abrupt("return",g);case 23:v=g.Data,O=void 0===v?{}:v,C=O.company,_=C.LogoUrl,N=C.CompanyName,I=[],y&&I.push(b["a"].CompanyConsole),1===d&&I.push(b["a"].ProjectManager),l.push(Object(b["d"])(b["b"].COMPANY,u,N,_,I));case 29:return t.state.isLogin=!0,Object.assign(t.state,h),sessionStorage.userId=s,sessionStorage.accountId=s,sessionStorage.user=JSON.stringify(h),c.abrupt("return",{Code:a.Code,Data:h});case 35:case"end":return c.stop()}}),c)})))()},logout:function(){this.state=y(),Object(m["b"])("authentication/loginOut"),sessionStorage.clear()}},O=t("2f62"),C=t("a78e"),_=t.n(C),N=t("5ab9"),I=function(e){return Object(N["a"])(e)||"/static/img/avator_default.svg"},w=function(e,n){var t="avator"===n?"/static/img/avator_default.svg":"";return Object(N["a"])(e)||t},L=t("caf9"),P=t("32ed"),j=t.n(P),S=function(){var e=this,n=e.$createElement,t=e._self._c||n;return t("img",{directives:[{name:"lazy",rawName:"v-lazy",value:e.src,expression:"src"}]})},E=[],x={props:{src:String}},G=x,K=Object(i["a"])(G,S,E,!1,null,null,null),T=K.exports;t("856b"),t("d903"),t("c610"),t("935a"),t("53be");c["default"].use(h.a),c["default"].use(L["a"]),c["default"].use(O["a"]),c["default"].prototype.$cookie=_.a,c["default"].component("ImgLazy",T),c["default"].prototype.$axios=m["a"],c["default"].prototype.$fetch=m["a"],c["default"].prototype.$fetchApi=m["b"],c["default"].filter("resolveImg",w),c["default"].filter("resolveAvator",I),c["default"].use(j.a),c["default"].config.productionTip=!1,new c["default"]({router:f["a"],store:v,render:function(e){return e(d)}}).$mount("#app")},"5ab9":function(e,n,t){"use strict";t.d(n,"c",(function(){return i})),t.d(n,"b",(function(){return s})),t.d(n,"a",(function(){return f}));t("99af"),t("c975"),t("ac1f"),t("1276"),t("96cf");var c=t("1da1"),a=t("9b15"),r=t("2ef0"),o=new a({region:"oss-cn-hangzhou",accessKeyId:"LTAI4G2BEDNpfdLmquYYMaMV",accessKeySecret:"tPhAL3qAgF9Tq67h73snAmwu8iPZ5t",bucket:"yiyun-client-files",secure:!0}),u=function(e){return"".concat((new Date).getTime(),"/").concat(e)},i=function(e){return"oss://".concat(e)};function s(e,n){return d.apply(this,arguments)}function d(){return d=Object(c["a"])(regeneratorRuntime.mark((function e(n,t){var c,a,r,i=arguments;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return c=i.length>2&&void 0!==i[2]?i[2]:{},e.prev=1,a=u(n),e.next=5,o.multipartUpload(a,t,c);case 5:return r=e.sent,e.abrupt("return",r);case 9:return e.prev=9,e.t0=e["catch"](1),console.error("file upload failed:",e.t0),e.abrupt("return",null);case 13:case"end":return e.stop()}}),e,null,[[1,9]])}))),d.apply(this,arguments)}var f=Object(r["memoize"])((function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",n=arguments.length>1?arguments[1]:void 0;if(0!==e.indexOf("oss://"))return e;var t=e.substr(6),c=n||t.split("/").pop();try{var a=3600,r=o.signatureUrl(t,{expires:a,response:{"content-disposition":'attachment; filename="'.concat(c,'"')}});return setTimeout((function(){f.cache.delete(e)}),1e3*a),r}catch(u){return null}}))},"5c0b":function(e,n,t){"use strict";var c=t("9c0c"),a=t.n(c);a.a},"856b":function(e,n,t){},"935a":function(e,n,t){},"9c0c":function(e,n,t){},b775:function(e,n,t){"use strict";t.d(n,"b",(function(){return s})),t.d(n,"c",(function(){return f}));t("99af"),t("c975"),t("fb6a"),t("d3b7"),t("ac1f"),t("1276"),t("96cf");var c=t("3835"),a=t("1da1"),r=t("bc3a"),o=t.n(r),u=t("41cb"),i=t("3de1");function s(e,n,t){return d.apply(this,arguments)}function d(){return d=Object(a["a"])(regeneratorRuntime.mark((function e(n,t,a){var r,u,i,s,d;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return r=l(n),u=Object(c["a"])(r,2),i=u[0],s=u[1],e.prev=1,e.next=4,"GET"===i?o.a.get(s,{params:t},a):o.a.post(s,t,a);case 4:return d=e.sent,e.abrupt("return",d.data);case 8:if(e.prev=8,e.t0=e["catch"](1),!e.t0.response||!e.t0.response.status){e.next=16;break}e.t1=e.t0.response.status,e.next=404===e.t1?14:15;break;case 14:return e.abrupt("return",{Code:404,Msg:"找不到指定的服务。"});case 15:return e.abrupt("return",{Code:503,Msg:"服务异常,请稍后再试。"});case 16:return console.error(e.t0),e.abrupt("return",{Code:503,Msg:"服务异常,请稍后再试。"});case 18:case"end":return e.stop()}}),e,null,[[1,8]])}))),d.apply(this,arguments)}function f(e){return 0!==e.Code&&i["d"].error(e.Msg),e}function l(e){var n=e.split("/"),t=Object(c["a"])(n,1),a=t[0],r=-1!==["template","project","folder","file"].indexOf(a)?"pms":"cms",o="api/".concat(r,"/").concat("authentication"===a?"":"v1/").concat(e),u="GET";switch(e){case"authentication/login":case"company/addCompany":case"company/queryGeneralOverview":case"company/queryProviceTree":case"company/updateCompanyById":case"dept/addDept":case"dept/updateDept":case"user/addUser":case"user/resetPassWord":case"user/updateUser":case"template/createTemplate":case"template/fileExchange":case"template/updateTemplate":case"template/uploadingXmind":case"template/addTemplateNodeModelFile":case"template/createNestedRelevance":case"template/deleteNestedRelevance":case"folder/createSubfolder":case"project/createProject":case"project/editProject":case"project/assignedWork":case"file/addArchMilesStone":case"file/addFile":case"file/updateFile":case"file/fileCoordinationChange":u="POST";break;default:u="GET";break}return[u,o]}o.a.defaults.withCredentials=!0,o.a.interceptors.request.use((function(e){return 0===e.url.indexOf("api/")&&(e.url="".concat("/api/").concat(e.url.slice(4))),e}),(function(e){return Promise.reject(e)})),o.a.interceptors.response.use((function(e){return e}),(function(e){if(e.response)switch(e.response.status){case 401:"/"!=u["a"].currentRoute.fullPath&&(i["d"].error("登录超时,请重新登录"),sessionStorage.clear(),u["a"].push({path:"/"}));break}return Promise.reject(e)})),n["a"]=o.a},c610:function(e,n,t){},d903:function(e,n,t){}});
+//# sourceMappingURL=app.a9925658.js.map
\ No newline at end of file
diff --git a/static/js/app.ffc6a69c.js.map b/static/js/app.a9925658.js.map
similarity index 99%
rename from static/js/app.ffc6a69c.js.map
rename to static/js/app.a9925658.js.map
index 7cfc3fe9..b224d44b 100644
--- a/static/js/app.ffc6a69c.js.map
+++ b/static/js/app.a9925658.js.map
@@ -1 +1 @@
-{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/utils/access.js","webpack:///./src/utils/tool.js","webpack:///./src/utils/constants.js","webpack:///./src/router.js","webpack:///./src/App.vue?2c43","webpack:///src/App.vue","webpack:///./src/App.vue?1160","webpack:///./src/App.vue","webpack:///./src/store/index.js","webpack:///./src/filters/resolveImg.js","webpack:///./src/components/img-lazy/index.vue?2d83","webpack:///src/components/img-lazy/index.vue","webpack:///./src/components/img-lazy/index.vue?eb4e","webpack:///./src/components/img-lazy/index.vue","webpack:///./src/main.js","webpack:///./src/services/oss.js","webpack:///./src/App.vue?c650","webpack:///./src/utils/request.js"],"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","PLATFORM_TYPE","MANAGE_CENTER","COMPANY","TEMPLATE_CONSOLE","platform","platformType","orgId","orgName","orgLogo","accessList","AccessCode","CompanyConsole","ProjectManager","haveAccess","targetAccess","indexOf","firstCharToLowerCase","obj","entries","reduce","toLocaleLowerCase","firstCharToUpperCase","toLocaleUpperCase","sleep","notify","success","Vue","$notify","title","offset","duration","info","warning","downloadFile","url","filename","ele","style","display","body","click","login","project","template","projnotice","notFound","workspace","search","recycle","cloud","cloudrecycle","cloudsource","company","message2","company_message","company_user","company_project","company_template","company_setting","company_template_detail","company_app","company_template_market","system","system_template","system_template_mind","system_template_matrix","system_runmanage","system_appcenter","system_setting","system_appinfo","system_template_file","use","Router","router","routes","path","component","redirect","children","require","beforeEach","to","from","next","sessionStorage","getItem","afterEach","constants","_vm","this","_h","$createElement","_c","_self","attrs","ref","staticClass","staticRenderFns","components","header_show","companyName","mypath","showIndexOption","showHelpPage","searchName","isShowOutWorkSpace","outWorkSpace","created","getElementById","$route","mounted","addEventListener","handleScroll","methods","showOption","showHelp","closeShowOption","closeWorkSet","$refs","closeAppManagePain","getSearchName","getIsShowOutWorkSpace","getOutWorkSpace","beforeDestroy","removeEventListener","watch","initialState","isLogin","accountId","accountName","userName","platformList","currentPlatform","currentCompanyId","avator","userInfo","getBootstrapState","state","sessionState","JSON","parse","assign","log","setCurrentPlatform","platformInfo","companyId","stringify","UserName","PassWord","fetchApi","loginRes","loginSucc","Code","userData","Data","userExt","cnName","id","permission","backgroundPermission","loginData","isSuperAdmin","isCompanyAdmin","companyInfoRes","LogoUrl","CompanyName","userId","user","logout","clear","resolveAvator","imgSrc","getFileUrl","imgType","defaultImg","directives","rawName","expression","props","String","ElementUI","VueLazyload","vuex","$cookie","Cookies","LazyImg","$axios","axios","$fetch","$fetchApi","filter","resolveImg","VueContextMenu","config","productionTip","store","render","h","App","$mount","client","OSS","region","accessKeyId","accessKeySecret","bucket","secure","generateStoreKey","Date","getTime","wrapOssProtocol","multipartUpload","fileName","file","opt","storeAs","memoize","serverOSSPath","saveAs","objectKey","substr","split","pop","expires","signatureUrl","response","cache","delete","ex","params","mapApiPathToFullPath","method","fullpath","post","res","status","Msg","wrapErrorHint","service","prefix","defaults","withCredentials","interceptors","process","currentRoute","fullPath"],"mappings":"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","file":"static/js/app.ffc6a69c.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 + \"static/js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-05a1125b\":\"a34f0633\",\"chunk-0d3a42ee\":\"098e804a\",\"chunk-2d0c061a\":\"2c6e8065\",\"chunk-2d224b2b\":\"8842828c\",\"chunk-2d226007\":\"29ecc6ce\",\"chunk-2d22fcc4\":\"113fbc5c\",\"chunk-37f74005\":\"03d95a40\",\"chunk-3fe09320\":\"5ea35b63\",\"chunk-3fe478f8\":\"60651768\",\"chunk-5acb4ad4\":\"60851b7c\",\"chunk-6610d797\":\"deecf94b\",\"chunk-a57ac5ae\":\"19da4da9\",\"chunk-b5d13ce8\":\"a3e51295\",\"chunk-bd5a3f5c\":\"cb7b2fdb\",\"chunk-1fe39068\":\"63eaefda\",\"chunk-1fe40532\":\"6cbc1a00\",\"chunk-2d0b3688\":\"729a090a\",\"chunk-2d0cf6a4\":\"538c6d8a\",\"chunk-2d0dddf0\":\"b9cccf9e\",\"chunk-2d0e148e\":\"88da7c85\",\"chunk-2d207f39\":\"26047389\",\"chunk-2d21b850\":\"f65bb9d5\",\"chunk-578abaf6\":\"93934e4d\",\"chunk-0f09bee9\":\"eb997bce\",\"chunk-7e46c9de\":\"48406ad0\",\"chunk-f6418e24\":\"d849787c\",\"chunk-4d5f7ff6\":\"7fd28b5c\",\"chunk-00b265e8\":\"350cdf0a\",\"chunk-1383cec2\":\"6b521480\",\"chunk-19012998\":\"d475bfcb\",\"chunk-546c3053\":\"d6c350c2\",\"chunk-2cccb4ca\":\"c82cb9dc\",\"chunk-74b26ff1\":\"42d9dadf\",\"chunk-7a01996c\":\"37955480\",\"chunk-9b3a1c08\":\"d0aa75fe\",\"chunk-d9ac4dc2\":\"7a6e7249\",\"chunk-ef8ce8b2\":\"3b9a8245\",\"chunk-eb6bd3dc\":\"29644dc7\",\"chunk-0f555441\":\"f308913b\",\"chunk-fa61d866\":\"75b2c2a4\"}[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 = {\"chunk-05a1125b\":1,\"chunk-0d3a42ee\":1,\"chunk-37f74005\":1,\"chunk-6610d797\":1,\"chunk-bd5a3f5c\":1,\"chunk-0f09bee9\":1,\"chunk-4d5f7ff6\":1,\"chunk-00b265e8\":1,\"chunk-1383cec2\":1,\"chunk-19012998\":1,\"chunk-546c3053\":1,\"chunk-2cccb4ca\":1,\"chunk-74b26ff1\":1,\"chunk-7a01996c\":1,\"chunk-9b3a1c08\":1,\"chunk-d9ac4dc2\":1,\"chunk-ef8ce8b2\":1,\"chunk-0f555441\":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 = \"static/css/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-05a1125b\":\"0cea0e94\",\"chunk-0d3a42ee\":\"74b1f484\",\"chunk-2d0c061a\":\"31d6cfe0\",\"chunk-2d224b2b\":\"31d6cfe0\",\"chunk-2d226007\":\"31d6cfe0\",\"chunk-2d22fcc4\":\"31d6cfe0\",\"chunk-37f74005\":\"5e4df2ed\",\"chunk-3fe09320\":\"31d6cfe0\",\"chunk-3fe478f8\":\"31d6cfe0\",\"chunk-5acb4ad4\":\"31d6cfe0\",\"chunk-6610d797\":\"0c46bf74\",\"chunk-a57ac5ae\":\"31d6cfe0\",\"chunk-b5d13ce8\":\"31d6cfe0\",\"chunk-bd5a3f5c\":\"946d3591\",\"chunk-1fe39068\":\"31d6cfe0\",\"chunk-1fe40532\":\"31d6cfe0\",\"chunk-2d0b3688\":\"31d6cfe0\",\"chunk-2d0cf6a4\":\"31d6cfe0\",\"chunk-2d0dddf0\":\"31d6cfe0\",\"chunk-2d0e148e\":\"31d6cfe0\",\"chunk-2d207f39\":\"31d6cfe0\",\"chunk-2d21b850\":\"31d6cfe0\",\"chunk-578abaf6\":\"31d6cfe0\",\"chunk-0f09bee9\":\"64c8ed61\",\"chunk-7e46c9de\":\"31d6cfe0\",\"chunk-f6418e24\":\"31d6cfe0\",\"chunk-4d5f7ff6\":\"0d15b2c7\",\"chunk-00b265e8\":\"619c55f8\",\"chunk-1383cec2\":\"d962c76a\",\"chunk-19012998\":\"69b3324f\",\"chunk-546c3053\":\"a6fb6318\",\"chunk-2cccb4ca\":\"cd416ba0\",\"chunk-74b26ff1\":\"351d7309\",\"chunk-7a01996c\":\"0f47911d\",\"chunk-9b3a1c08\":\"ef2e74f1\",\"chunk-d9ac4dc2\":\"dc82c034\",\"chunk-ef8ce8b2\":\"65074e9d\",\"chunk-eb6bd3dc\":\"31d6cfe0\",\"chunk-0f555441\":\"2e1e3092\",\"chunk-fa61d866\":\"31d6cfe0\"}[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","\r\n\r\nexport const PLATFORM_TYPE = {\r\n MANAGE_CENTER: 'MANAGE_CENTER', // 服务商平台\r\n COMPANY: 'COMPANY', // 企业\r\n TEMPLATE_CONSOLE: 'TEMPLATE_CONSOLE', // 模板控制台\r\n}\r\n\r\n/**\r\n * \r\n * @param {PLATFORM_TYPE} platformType \r\n * @param {*} orgId 企业id\r\n * @param {*} orgName 企业名称\r\n * @param {*} orgLogo 企业logo\r\n * @param {*} accessList 权限列表\r\n */\r\nexport function platform(platformType, orgId, orgName, orgLogo, accessList = []/* , hasCompanyManageAccess = false */ ) {\r\n return {\r\n platformType,\r\n orgId,\r\n orgLogo,\r\n orgName,\r\n accessList,\r\n }\r\n}\r\n\r\n\r\nexport const AccessCode = {\r\n CompanyConsole: 'company_console',\r\n ProjectManager: 'project_manager',\r\n}\r\n\r\nexport function haveAccess(accessList, targetAccess) {\r\n return accessList.indexOf(targetAccess) !== -1;\r\n}","import Vue from 'vue';\r\n\r\nexport function firstCharToLowerCase(obj) {\r\n return Object.entries(obj).reduce((o, [key, value]) => {\r\n o[`${key[0].toLocaleLowerCase()}${key.slice(1)}`] = value;\r\n return o;\r\n },{});\r\n}\r\n\r\nexport function firstCharToUpperCase(obj) {\r\n return Object.entries(obj).reduce((o, [key, value]) => {\r\n o[`${key[0].toLocaleUpperCase()}${key.slice(1)}`] = value;\r\n return o;\r\n },{});\r\n}\r\n\r\nexport const sleep = t => new Promise(r => setTimeout(r, t));\r\n\r\nexport const notify = {\r\n success: (message) => {\r\n Vue.prototype.$notify({\r\n title:'',\r\n message,\r\n type: 'success',\r\n offset: 100,\r\n duration: 2500,\r\n });\r\n },\r\n error: (message) => {\r\n Vue.prototype.$notify({\r\n message,\r\n type: 'error',\r\n offset: 100,\r\n duration: 2500,\r\n });\r\n },\r\n info: (message) => {\r\n Vue.prototype.$notify({\r\n title:'',\r\n message,\r\n type: 'info',\r\n offset: 100,\r\n duration: 2500,\r\n });\r\n },\r\n warning: (message) => {\r\n Vue.prototype.$notify({\r\n title:'',\r\n message,\r\n type: 'warning',\r\n offset: 100,\r\n duration: 2500,\r\n });\r\n }\r\n}\r\n\r\nexport function downloadFile(url, filename){\r\n const ele = document.createElement('a');\r\n ele.setAttribute('href', url);\r\n ele.setAttribute('download', filename);\r\n\r\n ele.style.display = 'none';\r\n document.body.appendChild(ele);\r\n\r\n ele.click();\r\n\r\n document.body.removeChild(ele);\r\n}","export default {\r\n login: 'LOCKING | 登录',\r\n // index: 'LOCKING | 云建筑',\r\n project: 'LOCKING | 项目编辑',\r\n platform: 'LOCKING | 平台选择',\r\n template: 'LOCKING | 模板控制台',\r\n projnotice: 'LOCKING | 更新提醒',\r\n notFound: '404 | 未找到该页面',\r\n workspace: 'LOCKING | 项目详情',\r\n search: 'LOCKING | 搜索',\r\n recycle: 'LOCKING | 回收站',\r\n cloud: 'LOCKING | 云盘',\r\n cloudrecycle: 'LOCKING | 云回收站',\r\n cloudsource: 'LOCKING | 云资源管理器',\r\n company: 'LOCKING | 企业后台',\r\n message2: 'LOCKING | 企业后台',\r\n company_message: 'LOCKING | 平台消息',\r\n company_user: 'LOCKING | 通讯录',\r\n company_project: 'LOCKING | 项目管理',\r\n company_template: 'LOCKING | 模板与应用',\r\n company_setting: 'LOCKING | 通用设置',\r\n company_template_detail: 'LOCKING | 模板查看',\r\n company_app: 'LOCKING | 应用',\r\n company_template_market: 'LOCKING | 应用市场',\r\n system: 'LOCKING | 总后台',\r\n system_template: 'LOCKING | 流程模板',\r\n system_template_mind: 'LOCKING | 思维导图',\r\n system_template_matrix: 'LOCKING | 矩阵模板',\r\n system_runmanage: 'LOCKING | 运行管理',\r\n system_appcenter: 'LOCKING | 应用管理',\r\n system_setting: 'LOCKING | 总体权限',\r\n system_appinfo: 'LOCKING | 应用介绍',\r\n system_template_file: '流程模板 | 样板文件'\r\n}","import Vue from 'vue'\r\nimport Router from 'vue-router'\r\nimport constants from '@/utils/constants'\r\n\r\nVue.use(Router)\r\n\r\nconst router = new Router({\r\n\t// mode: 'history',\r\n\tmode: 'hash',\r\n\troutes: [{\r\n\t\tpath: '/',\r\n\t\tname: 'login',\r\n\t\tcomponent: () => import('@/views/login'),\r\n\t},\r\n\t{\r\n\t\tpath: '/demo',\r\n\t\tname: 'demo',\r\n\t\tcomponent: () => import('@/views/demo'),\r\n\t},\r\n\t{\r\n\t\tpath: '/platform',\r\n\t\tname: 'platform',\r\n\t\tcomponent: () => import('@/views/platform_center'),\r\n\t},\r\n\t{\r\n\t\tpath: '/index',\r\n\t\tname: 'index',\r\n\t\tcomponent: () => import('@/views/main_web/index'),\r\n\t},\r\n\t{\r\n\t\tpath: '/projnotice',\r\n\t\tname: 'projnotice',\r\n\t\tcomponent: () => import('@/views/main_web/projnotice'),\r\n\t},\r\n\t{\r\n\t\tpath: '/email',\r\n\t\tname: 'email',\r\n\t\tcomponent: () => import('@/views/components_web/head/email'),\r\n\t},\r\n\t{\r\n\t\tpath: '/workspace',\r\n\t\tname: 'workspace',\r\n\t\tcomponent: () => import('@/views/main_web/workspace'),\r\n\t},\r\n\t{\r\n\t\tpath: '/project',\r\n\t\tname: 'project',\r\n\t\tcomponent: () => import('@/views/main_web/project'),\r\n\t},\r\n\t{\r\n\t\tpath: '/recycle',\r\n\t\tname: 'recycle',\r\n\t\tcomponent: () => import('@/views/main_web/recycle'),\r\n\t},\r\n\t{\r\n\t\tpath: '/search',\r\n\t\tname: 'search',\r\n\t\tcomponent: () => import('@/views/main_web/search'),\r\n\t},\r\n\t{\r\n\t\tpath: '/cloud',\r\n\t\tname: 'cloud',\r\n\t\tcomponent: () => import('@/views/main_web/cloud'),\r\n\t},\r\n\t{\r\n\t\tpath: '/cloudrecycle',\r\n\t\tname: 'cloudrecycle',\r\n\t\tcomponent: () => import('@/views/main_web/cloudrecycle'),\r\n\t},\r\n\t{\r\n\t\tpath: '/cloudsource',\r\n\t\tname: 'cloudsource',\r\n\t\tcomponent: () => import('@/views/main_web/cloudsource'),\r\n\t},\r\n\t// 探索者后台\r\n\t{\r\n\t\tpath: '/company',\r\n\t\tname: 'company',\r\n\t\tcomponent: () => import('@/views/manage_company'),\r\n\t\tredirect: { name: 'company_home' },\r\n\t\tchildren: [\r\n\t\t\t{\r\n\t\t\t\tpath: 'home',\r\n\t\t\t\tname: 'company_home',\r\n\t\t\t\tcomponent: () => import('@/views/manage_company/message'),\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'message',\r\n\t\t\t\tname: 'company_message',\r\n\t\t\t\tcomponent: () => import('@/views/manage_company/message_detail'),\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'user',\r\n\t\t\t\tname: 'company_user',\r\n\t\t\t\tcomponent: () => import('@/views/manage_company/user'),\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'project',\r\n\t\t\t\tname: 'company_project',\r\n\t\t\t\tcomponent: () => import('@/views/manage_company/project'),\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'template',\r\n\t\t\t\tname: 'company_template',\r\n\t\t\t\tcomponent: () => import('@/views/manage_company/template'),\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'template/detail',\r\n\t\t\t\tname: 'company_template_detail',\r\n\t\t\t\tcomponent: () => import('@/views/manage_company/template_detail'),\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'template/market',\r\n\t\t\t\tname: 'company_template_market',\r\n\t\t\t\tcomponent: () => import('@/views/manage_company/template_market'),\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'setting',\r\n\t\t\t\tname: 'company_setting',\r\n\t\t\t\tcomponent: () => import('@/views/manage_company/setting'),\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'app',\r\n\t\t\t\tname: 'company_app',\r\n\t\t\t\tcomponent: () => import('@/views/manage_company/app'),\r\n\t\t\t},\r\n\t\t]\r\n\t},\r\n\t// {\r\n\t// \tpath: '/company',\r\n\t// \tname: 'company',\r\n\t// \tcomponent: () => import('@/views/manage_company/message'),\r\n\t// },\r\n\t// {\r\n\t// \tpath: '/company/message',\r\n\t// \tname: 'company_message',\r\n\t// \tcomponent: () => import('@/views/manage_company/message_detail'),\r\n\t// },\r\n\t// {\r\n\t// \tpath: '/company/user',\r\n\t// \tname: 'company_user',\r\n\t// \tcomponent: () => import('@/views/manage_company/user'),\r\n\t// },\r\n\t// {\r\n\t// \tpath: '/company/project',\r\n\t// \tname: 'company_project',\r\n\t// \tcomponent: () => import('@/views/manage_company/project'),\r\n\t// },\r\n\t// {\r\n\t// \tpath: '/company/template',\r\n\t// \tname: 'company_template',\r\n\t// \tcomponent: () => import('@/views/manage_company/template'),\r\n\t// },\r\n\t// {\r\n\t// \tpath: '/company/template/detail',\r\n\t// \tname: 'company_template_detail',\r\n\t// \tcomponent: () => import('@/views/manage_company/template_detail'),\r\n\t// },\r\n\t// {\r\n\t// \tpath: '/company/template/market',\r\n\t// \tname: 'company_template_market',\r\n\t// \tcomponent: () => import('@/views/manage_company/template_market'),\r\n\t// },\r\n\t// {\r\n\t// \tpath: '/company/setting',\r\n\t// \tname: 'company_setting',\r\n\t// \tcomponent: () => import('@/views/manage_company/setting'),\r\n\t// },\r\n\t// {\r\n\t// \tpath: '/company/app',\r\n\t// \tname: 'company_app',\r\n\t// \tcomponent: () => import('@/views/manage_company/app'),\r\n\t// },\r\n\t/* 模板平台 */\r\n\t{\r\n\t\tpath: '/template',\r\n\t\tname: 'template',\r\n\t\tcomponent: resolve => require(['@/views/manage_template/index'], resolve)\r\n\t},\r\n\t{\r\n\t\tpath: '/template/create',\r\n\t\tname: 'template_create',\r\n\t\tcomponent: resolve => require(['@/views/manage_template/create_template'], resolve)\r\n\t},\r\n\t// 探索者总后台\r\n\t{\r\n\t\tpath: '/system',\r\n\t\t// name: 'system',\r\n\t\tcomponent: () => import('@/views/manage_system'),\r\n\t\tredirect: { name: 'system_customer' },\r\n\t\tchildren: [{\r\n\t\t\tpath: 'customer',\r\n\t\t\tname: 'system_customer',\r\n\t\t\tcomponent: () => import('@/views/manage_system/customer'),\r\n\t\t},{\r\n\t\t\tpath: 'template',\r\n\t\t\tname: 'system_template',\r\n\t\t\tcomponent: () => import('@/views/manage_system/template'),\r\n\t\t}, \r\n\t\t{\r\n\t\t\tpath: 'runmanage',\r\n\t\t\tname: 'system_runmanage',\r\n\t\t\tcomponent: () => import('@/views/manage_system/runmanage'),\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: 'template/matrix',\r\n\t\t\tname: 'system_template_matrix',\r\n\t\t\tcomponent: () => import('@/views/manage_system/template/matrix'),\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: 'template/mind',\r\n\t\t\tname: 'system_template_mind',\r\n\t\t\tcomponent: () => import('@/views/manage_system/template/mind'),\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: 'template/tempfile',\r\n\t\t\tname: 'system_template_file',\r\n\t\t\tcomponent: () => import('@/views/manage_system/template_file'),\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: 'appcenter',\r\n\t\t\tname: 'system_appcenter',\r\n\t\t\tcomponent: () => import('@/views/manage_system/appcenter'),\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: 'appinfo',\r\n\t\t\tname: 'system_appinfo',\r\n\t\t\tcomponent: () => import('@/views/manage_system/appinfo'),\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: 'setting',\r\n\t\t\tname: 'system_setting',\r\n\t\t\tcomponent: () => import('@/views/manage_system/setting'),\r\n\t\t},{\r\n\t\t\tpath: '*',\r\n\t\t\tredirect: { name: 'system_customer' },\r\n\t\t}]\r\n\t},\r\n\t// {\r\n\t// \tpath: '/system/template',\r\n\t// \tname: 'system_template',\r\n\t// \tcomponent: () => import('@/views/manage_system/template'),\r\n\t// },\r\n\t\r\n\t// 页面未找到时提示(这个页面要放在最后)\r\n\t{\r\n\t\tpath: '*',\r\n\t\tname: 'notfound',\r\n\t\tcomponent: () => import('@/views/components_web/notFound/notFound'),\r\n\t}\r\n\t]\r\n})\r\n// 添加路由验证\r\nrouter.beforeEach((to, from, next) => {\r\n\tif (to.path === '/') {\r\n\t\tnext()\r\n\t} else {\r\n\t\tif (!sessionStorage.getItem('userId')) {\r\n\t\t\tnext({\r\n\t\t\t\tpath: '/'\r\n\t\t\t})\r\n\t\t} else {\r\n\t\t\tnext()\r\n\t\t}\r\n\t}\r\n})\r\n// 导航后置守卫,可以在确定导航到目标页面时再更改title\r\nrouter.afterEach((to) => {\r\n\twindow.document.title = constants[to.name] || 'LOCKING | 云建筑'\r\n})\r\nexport default router\r\n","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',{ref:\"mainpage\",staticClass:\"mt-48\",attrs:{\"id\":\"bigbody\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=460664e1&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../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","\r\nimport { fetchApi } from '@/utils/request';\r\nimport { platform, PLATFORM_TYPE, AccessCode } from '@/utils/access';\r\nimport { firstCharToLowerCase } from '@/utils/tool';\r\n\r\nconst initialState = () => ({\r\n isLogin: false,\r\n accountId: undefined,\r\n accountName: undefined,\r\n userName: undefined,\r\n platformList: [],\r\n currentPlatform: {},\r\n currentCompanyId: undefined,\r\n avator: undefined,\r\n userInfo: {},\r\n});\r\n\r\nconst getBootstrapState = () => {\r\n let state = initialState();\r\n try {\r\n const sessionState = JSON.parse(sessionStorage.getItem('user'));\r\n const currentCompanyId = sessionStorage.getItem('companyId');\r\n const currentPlatform = JSON.parse(sessionStorage.getItem('platform') || '{}');\r\n if (sessionState && sessionState.accountId) {\r\n state.isLogin = true;\r\n Object.assign(state, sessionState);\r\n state.currentCompanyId = currentCompanyId;\r\n state.currentPlatform = currentPlatform;\r\n }\r\n } catch (e) {\r\n console.log('加载session数据失败');\r\n state = initialState();\r\n }\r\n return state;\r\n}\r\n\r\n\r\nexport default {\r\n state: getBootstrapState(),\r\n setCurrentPlatform(platformInfo) {\r\n this.state.currentPlatform = platformInfo;\r\n this.state.currentCompanyId = platformInfo.orgId;\r\n sessionStorage.companyId = platformInfo.orgId;\r\n sessionStorage.platform = JSON.stringify(platformInfo);\r\n },\r\n async login(UserName, PassWord) {\r\n const loginRes = await fetchApi('authentication/login', { UserName, PassWord });\r\n\r\n const loginSucc = loginRes.Code === 0;\r\n if (!loginSucc) {\r\n return loginRes;\r\n }\r\n\r\n this.state.isLogin = true;\r\n const userData = firstCharToLowerCase(loginRes.Data || {});\r\n // 如果以后用到这里面的数据,拍平放到同层级,不再放到userExt字段下\r\n delete userData.userExt;\r\n const { companyId, cnName, id: accountId, permission, backgroundPermission } = userData;\r\n const platformList = [];\r\n const loginData = {\r\n accountId,\r\n accountName: UserName,\r\n userName: cnName,\r\n platformList,\r\n userInfo: userData,\r\n };\r\n\r\n /**\r\n * 身份类型:\r\n * 1. 超管: 仅可看到总后台(暂时将模板控制台与其绑定)\r\n * 2. 模板提供商(serviceProvider) : 角色类型暂无\r\n * 3. 企业\r\n */\r\n\r\n const isSuperAdmin = backgroundPermission === 3;\r\n const isCompanyAdmin = backgroundPermission === 2;\r\n\r\n // \r\n if (isSuperAdmin) { // todo 服务商查询企业列表并生成platformList\r\n // todo 暂时将模板控制台加入到超管账号中\r\n platformList.push(\r\n platform(PLATFORM_TYPE.MANAGE_CENTER, companyId, 'LOCKING 总后台', undefined, []),\r\n // platform(PLATFORM_TYPE.TEMPLATE_CONSOLE, CompanyId, undefined, false, '模版控制台'),\r\n );\r\n } else { // 企业生成自己的企业平台权限\r\n const companyInfoRes = await fetchApi('company/queryFrontDeskCompanyById', { id: companyId });\r\n if (companyInfoRes.Code !== 0) {\r\n return companyInfoRes;\r\n }\r\n const { Data = {} } = companyInfoRes;\r\n const { company: { LogoUrl, CompanyName } } = Data;\r\n const accessList = [];\r\n if (isCompanyAdmin) { accessList.push(AccessCode.CompanyConsole); }\r\n if (permission === 1) { accessList.push(AccessCode.ProjectManager); }\r\n platformList.push(platform(PLATFORM_TYPE.COMPANY, companyId, CompanyName, LogoUrl, accessList));\r\n }\r\n\r\n // 存储\r\n this.state.isLogin = true;\r\n Object.assign(this.state, loginData);\r\n sessionStorage.userId = accountId;\r\n sessionStorage.accountId = accountId;\r\n sessionStorage.user = JSON.stringify(loginData);\r\n return {\r\n Code: loginRes.Code,\r\n Data: loginData,\r\n }\r\n },\r\n logout() {\r\n this.state = initialState();\r\n fetchApi('authentication/loginOut');\r\n sessionStorage.clear();\r\n }\r\n}","import { getFileUrl } from '@/services/oss';\r\n\r\nexport const resolveAvator = imgSrc => getFileUrl(imgSrc) || '/static/img/avator_default.svg';\r\n\r\nexport default (imgSrc, imgType) => {\r\n const defaultImg = imgType === 'avator' ? '/static/img/avator_default.svg' : ''\r\n return getFileUrl(imgSrc) || defaultImg;\r\n};","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('img',{directives:[{name:\"lazy\",rawName:\"v-lazy\",value:(_vm.src),expression:\"src\"}]})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n
\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=7284fb36&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../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 Vue from 'vue'\r\nimport App from './App.vue'\r\nimport router from './router';\r\n\r\n// 引入Element\r\nimport ElementUI from 'element-ui'\r\nimport 'element-ui/lib/theme-chalk/index.css';\r\n\r\n// 创建一个简单的全局store\r\nimport store from './store';\r\nimport vuex from 'vuex';\r\nimport Cookies from 'js-cookie'\r\nimport resolveImg ,{ resolveAvator } from '@/filters/resolveImg';\r\nimport VueLazyload from 'vue-lazyload'\r\nimport VueContextMenu from '@xunlei/vue-context-menu'\r\nimport LazyImg from '@/components/img-lazy';\r\n\r\n// 加载其他css\r\nimport \"@/../public/static/css/element_chanage.css\"\r\nimport \"@/../public/static/css/iconfont.css\"\r\nimport \"@/../public/static/css/iconfont2.css\"\r\nimport \"@/../public/static/css/iconfont3.css\"\r\nimport \"@/../public/static/css/main.css\"\r\n\r\n// 引入lazyload\r\n// import 'babel-polyfill'\r\nimport axios, { fetchApi } from './utils/request';\r\n\r\nVue.use(ElementUI);\r\nVue.use(VueLazyload);\r\nVue.use(vuex);\r\nVue.prototype.$cookie = Cookies;\r\nVue.component('ImgLazy', LazyImg);\r\n\r\n// todo DEPRECATED\r\nVue.prototype.$axios = axios;\r\n// todo DEPRECATED\r\nVue.prototype.$fetch = axios;\r\nVue.prototype.$fetchApi = fetchApi;\r\nVue.filter('resolveImg', resolveImg);\r\nVue.filter('resolveAvator', resolveAvator);\r\n\r\n//右键菜单\r\nVue.use(VueContextMenu)\r\nVue.config.productionTip = false\r\n\r\nnew Vue({\r\n router,\r\n store,\r\n render: h => h(App),\r\n}).$mount('#app')\r\n\r\n\r\n\r\n\r\n\r\n","import * as OSS from 'ali-oss';\r\nimport { memoize } from 'lodash';\r\n// import { getData } from './request';\r\n\r\nconst client = new OSS({\r\n region: 'oss-cn-hangzhou',\r\n accessKeyId: 'LTAI4G2BEDNpfdLmquYYMaMV',\r\n accessKeySecret: 'tPhAL3qAgF9Tq67h73snAmwu8iPZ5t',\r\n bucket: 'yiyun-client-files',\r\n secure: true,\r\n});\r\n\r\n/**\r\n * 存储逻辑\r\n * + oss上的存储文件路径为 时间戳 / 文件名\r\n * + 文件路径信息保存到服务器端时,添加拟协议头 oss://\r\n * + 示例:\r\n * 文件名为oss.js\r\n * 则在oss上保存的路径为 1601016877378/oss.js\r\n * 在服务器上存储的记录为: oss://1601016877378/oss.js\r\n */\r\n\r\nconst generateStoreKey = name => `${new Date().getTime()}/${name}`;\r\n\r\nexport const wrapOssProtocol = path => `oss://${path}`;\r\n\r\nexport async function multipartUpload(fileName, file, opt = {}) {\r\n try {\r\n const storeAs = generateStoreKey(fileName);\r\n const result = await client.multipartUpload(storeAs, file, opt);\r\n return result;\r\n } catch (ex) {\r\n console.error('file upload failed:', ex);\r\n return null;\r\n }\r\n}\r\n/**\r\n * \r\n * @param {*} objectKey 文件在服务器上的path值,格式为: oss://${timestamp}/filename \r\n * @param {*} saveAs \r\n */\r\nexport const getFileUrl = memoize(function getFileUrlInner(serverOSSPath = '', saveAs) {\r\n if (serverOSSPath.indexOf('oss://') !== 0) {\r\n return serverOSSPath;\r\n }\r\n const objectKey = serverOSSPath.substr(6);\r\n const filename = saveAs || objectKey.split('/').pop();\r\n try {\r\n const expires = 3600;\r\n const result = client.signatureUrl(objectKey, {\r\n expires,\r\n response: {\r\n 'content-disposition': `attachment; filename=\"${filename}\"`,\r\n },\r\n });\r\n setTimeout(() => {\r\n getFileUrl.cache.delete(serverOSSPath);\r\n }, expires * 1000)\r\n return result;\r\n } catch (ex) {\r\n return null;\r\n }\r\n})\r\n// export async function saveStr(saveAs, str) {\r\n// return await getData('oss', 'saveStr', { saveAs, context: str });\r\n// }\r\n// export async function getContext(objectKey) {\r\n// const data = await getData('oss', 'getContext', { objectKey });\r\n// if (!data.type && data.code && data.code !== 'error') return null;\r\n// return data.data;\r\n// }\r\n","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../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/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../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/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"","import axios from 'axios';\r\nimport Vue from 'vue';\r\nimport router from '../router';\r\nimport { notify } from '@/utils/tool';\r\n\r\naxios.defaults.withCredentials = true\r\n\r\n/**\r\n * 请求拦截器:添加token\r\n */\r\naxios.interceptors.request.use(function (config) {\r\n // 在发送请求之前做些什么\r\n if (config.url.indexOf('api/') === 0) {\r\n config.url = `${process.env.API_HOST}${config.url.slice(4)}`;\r\n }\r\n //若token存在,则在每次请求头中加入token\r\n // if (sessionStorage.token) {\r\n // // config.headers.common['x-access-token'] = sessionStorage.token;\r\n // config.headers.common['Authorization'] = 'Bearer ' + sessionStorage.token;\r\n // }\r\n return config;\r\n}, function (error) {\r\n // 对请求错误做些什么\r\n return Promise.reject(error);\r\n});\r\n//拦截器,访问网络异常时的提示\r\naxios.interceptors.response.use(\r\n response => {\r\n return response;\r\n },\r\n error => {\r\n if (error.response) {\r\n switch (error.response.status) {\r\n case 401:\r\n if (router.currentRoute.fullPath != '/') {\r\n notify.error('登录超时,请重新登录');\r\n sessionStorage.clear();\r\n router.push({ path: \"/\" });\r\n }\r\n break;\r\n }\r\n }\r\n return Promise.reject(error); // 返回接口返回的错误信息\r\n }\r\n);\r\n\r\n\r\n\r\nexport async function fetchApi(path, params, config) {\r\n const [method, fullpath] = mapApiPathToFullPath(path);\r\n try {\r\n const res = await (method === 'GET'\r\n ? axios.get(fullpath, { params }, config)\r\n : axios.post(fullpath, params, config)\r\n );\r\n return res.data;\r\n } catch (e) {\r\n if (e.response && e.response.status) {\r\n switch (e.response.status) {\r\n case 404:\r\n return {\r\n Code: 404,\r\n Msg: '找不到指定的服务。',\r\n };\r\n default:\r\n return {\r\n Code: 503,\r\n Msg: '服务异常,请稍后再试。',\r\n };\r\n }\r\n }\r\n console.error(e);\r\n return {\r\n Code: 503,\r\n Msg: '服务异常,请稍后再试。',\r\n };\r\n }\r\n}\r\n\r\nexport function wrapErrorHint(response) {\r\n if (response.Code !== 0) {\r\n notify.error(response.Msg);\r\n }\r\n return response;\r\n}\r\n\r\nexport default axios;\r\n\r\nfunction mapApiPathToFullPath(path) {\r\n const [service] = path.split('/');\r\n const prefix = ['template', 'project', 'folder', 'file'].indexOf(service) !== -1 ? 'pms' : 'cms';\r\n const fullpath = `api/${prefix}/${service === 'authentication' ? '' : 'v1/'}${path}`;\r\n let method = 'GET';\r\n\r\n switch (path) {\r\n case 'authentication/login':\r\n case 'company/addCompany':\r\n case 'company/queryGeneralOverview':\r\n case 'company/queryProviceTree':\r\n case 'company/updateCompanyById':\r\n case 'dept/addDept':\r\n case 'dept/updateDept':\r\n case 'user/addUser':\r\n case 'user/resetPassWord':\r\n case 'user/updateUser':\r\n case 'template/createTemplate':\r\n case 'template/fileExchange':\r\n case 'template/updateTemplate':\r\n case 'template/uploadingXmind':\r\n case 'template/addTemplateNodeModelFile':\r\n case 'template/createNestedRelevance':\r\n case 'template/deleteNestedRelevance':\r\n case \"folder/createSubfolder\":\r\n case \"project/createProject\":\r\n case \"project/editProject\":\r\n case \"project/assignedWork\":\r\n case \"file/addArchMilesStone\":\r\n case \"file/addFile\":\r\n case \"file/updateFile\":\r\n case \"file/fileCoordinationChange\":\r\n // case 'template/deleteTemplateNodeModelFile':\r\n method = 'POST';\r\n break;\r\n // case 'authentication/loginOut':\r\n // case 'company/deleteCompanyById':\r\n // case 'company/disablEenableCompanyByCompanyId':\r\n // case 'company/queryCompanyById':\r\n // case 'company/queryCompanyByProviceIdAndIndustryId':\r\n // case 'dept/deleteDeptByDeptId':\r\n // case 'dept/queryDeptByDeptId':\r\n // case 'dept/queryDeptsByDeptId':\r\n // case 'user/deleteUser':\r\n // case 'user/queryUserByUserId':\r\n // case 'user/queryUsersByDeptId':\r\n default:\r\n method = 'GET';\r\n break;\r\n }\r\n return [method, fullpath];\r\n}\r\n"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/utils/access.js","webpack:///./src/utils/tool.js","webpack:///./src/utils/constants.js","webpack:///./src/router.js","webpack:///./src/App.vue?2c43","webpack:///src/App.vue","webpack:///./src/App.vue?1160","webpack:///./src/App.vue","webpack:///./src/store/index.js","webpack:///./src/filters/resolveImg.js","webpack:///./src/components/img-lazy/index.vue?2d83","webpack:///src/components/img-lazy/index.vue","webpack:///./src/components/img-lazy/index.vue?eb4e","webpack:///./src/components/img-lazy/index.vue","webpack:///./src/main.js","webpack:///./src/services/oss.js","webpack:///./src/App.vue?c650","webpack:///./src/utils/request.js"],"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","PLATFORM_TYPE","MANAGE_CENTER","COMPANY","TEMPLATE_CONSOLE","platform","platformType","orgId","orgName","orgLogo","accessList","AccessCode","CompanyConsole","ProjectManager","haveAccess","targetAccess","indexOf","firstCharToLowerCase","obj","entries","reduce","toLocaleLowerCase","firstCharToUpperCase","toLocaleUpperCase","sleep","notify","success","Vue","$notify","title","offset","duration","info","warning","downloadFile","url","filename","ele","style","display","body","click","login","project","template","projnotice","notFound","workspace","search","recycle","cloud","cloudrecycle","cloudsource","company","message2","company_message","company_user","company_project","company_template","company_setting","company_template_detail","company_app","company_template_market","system","system_template","system_template_mind","system_template_matrix","system_runmanage","system_appcenter","system_setting","system_appinfo","system_template_file","use","Router","router","routes","path","component","redirect","children","require","beforeEach","to","from","next","sessionStorage","getItem","afterEach","constants","_vm","this","_h","$createElement","_c","_self","attrs","ref","staticClass","staticRenderFns","components","header_show","companyName","mypath","showIndexOption","showHelpPage","searchName","isShowOutWorkSpace","outWorkSpace","created","getElementById","$route","mounted","addEventListener","handleScroll","methods","showOption","showHelp","closeShowOption","closeWorkSet","$refs","closeAppManagePain","getSearchName","getIsShowOutWorkSpace","getOutWorkSpace","beforeDestroy","removeEventListener","watch","initialState","isLogin","accountId","accountName","userName","platformList","currentPlatform","currentCompanyId","avator","userInfo","getBootstrapState","state","sessionState","JSON","parse","assign","log","setCurrentPlatform","platformInfo","companyId","stringify","UserName","PassWord","fetchApi","loginRes","loginSucc","Code","userData","Data","userExt","cnName","id","permission","backgroundPermission","loginData","isSuperAdmin","isCompanyAdmin","companyInfoRes","LogoUrl","CompanyName","userId","user","logout","clear","resolveAvator","imgSrc","getFileUrl","imgType","defaultImg","directives","rawName","expression","props","String","ElementUI","VueLazyload","vuex","$cookie","Cookies","LazyImg","$axios","axios","$fetch","$fetchApi","filter","resolveImg","VueContextMenu","config","productionTip","store","render","h","App","$mount","client","OSS","region","accessKeyId","accessKeySecret","bucket","secure","generateStoreKey","Date","getTime","wrapOssProtocol","multipartUpload","fileName","file","opt","storeAs","memoize","serverOSSPath","saveAs","objectKey","substr","split","pop","expires","signatureUrl","response","cache","delete","ex","params","mapApiPathToFullPath","method","fullpath","post","res","status","Msg","wrapErrorHint","service","prefix","defaults","withCredentials","interceptors","process","currentRoute","fullPath"],"mappings":"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","file":"static/js/app.a9925658.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 + \"static/js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-05a1125b\":\"a34f0633\",\"chunk-0d3a42ee\":\"098e804a\",\"chunk-2d0c061a\":\"2c6e8065\",\"chunk-2d224b2b\":\"8842828c\",\"chunk-2d226007\":\"29ecc6ce\",\"chunk-2d22fcc4\":\"113fbc5c\",\"chunk-37f74005\":\"03d95a40\",\"chunk-3fe09320\":\"5ea35b63\",\"chunk-3fe478f8\":\"60651768\",\"chunk-5acb4ad4\":\"b7c50bb4\",\"chunk-6610d797\":\"deecf94b\",\"chunk-a57ac5ae\":\"19da4da9\",\"chunk-b5d13ce8\":\"a3e51295\",\"chunk-bd5a3f5c\":\"cb7b2fdb\",\"chunk-1fe39068\":\"63eaefda\",\"chunk-1fe40532\":\"6cbc1a00\",\"chunk-2d0b3688\":\"729a090a\",\"chunk-2d0cf6a4\":\"538c6d8a\",\"chunk-2d0dddf0\":\"b9cccf9e\",\"chunk-2d0e148e\":\"88da7c85\",\"chunk-2d207f39\":\"26047389\",\"chunk-2d21b850\":\"f65bb9d5\",\"chunk-578abaf6\":\"93934e4d\",\"chunk-0f09bee9\":\"eb997bce\",\"chunk-7e46c9de\":\"48406ad0\",\"chunk-f6418e24\":\"d849787c\",\"chunk-4d5f7ff6\":\"7fd28b5c\",\"chunk-00b265e8\":\"350cdf0a\",\"chunk-1383cec2\":\"6b521480\",\"chunk-19012998\":\"d475bfcb\",\"chunk-546c3053\":\"d6c350c2\",\"chunk-2cccb4ca\":\"c82cb9dc\",\"chunk-74b26ff1\":\"42d9dadf\",\"chunk-7a01996c\":\"37955480\",\"chunk-9b3a1c08\":\"d0aa75fe\",\"chunk-d9ac4dc2\":\"7a6e7249\",\"chunk-ef8ce8b2\":\"3b9a8245\",\"chunk-eb6bd3dc\":\"29644dc7\",\"chunk-0f555441\":\"f308913b\",\"chunk-fa61d866\":\"75b2c2a4\"}[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 = {\"chunk-05a1125b\":1,\"chunk-0d3a42ee\":1,\"chunk-37f74005\":1,\"chunk-6610d797\":1,\"chunk-bd5a3f5c\":1,\"chunk-0f09bee9\":1,\"chunk-4d5f7ff6\":1,\"chunk-00b265e8\":1,\"chunk-1383cec2\":1,\"chunk-19012998\":1,\"chunk-546c3053\":1,\"chunk-2cccb4ca\":1,\"chunk-74b26ff1\":1,\"chunk-7a01996c\":1,\"chunk-9b3a1c08\":1,\"chunk-d9ac4dc2\":1,\"chunk-ef8ce8b2\":1,\"chunk-0f555441\":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 = \"static/css/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-05a1125b\":\"0cea0e94\",\"chunk-0d3a42ee\":\"74b1f484\",\"chunk-2d0c061a\":\"31d6cfe0\",\"chunk-2d224b2b\":\"31d6cfe0\",\"chunk-2d226007\":\"31d6cfe0\",\"chunk-2d22fcc4\":\"31d6cfe0\",\"chunk-37f74005\":\"5e4df2ed\",\"chunk-3fe09320\":\"31d6cfe0\",\"chunk-3fe478f8\":\"31d6cfe0\",\"chunk-5acb4ad4\":\"31d6cfe0\",\"chunk-6610d797\":\"0c46bf74\",\"chunk-a57ac5ae\":\"31d6cfe0\",\"chunk-b5d13ce8\":\"31d6cfe0\",\"chunk-bd5a3f5c\":\"946d3591\",\"chunk-1fe39068\":\"31d6cfe0\",\"chunk-1fe40532\":\"31d6cfe0\",\"chunk-2d0b3688\":\"31d6cfe0\",\"chunk-2d0cf6a4\":\"31d6cfe0\",\"chunk-2d0dddf0\":\"31d6cfe0\",\"chunk-2d0e148e\":\"31d6cfe0\",\"chunk-2d207f39\":\"31d6cfe0\",\"chunk-2d21b850\":\"31d6cfe0\",\"chunk-578abaf6\":\"31d6cfe0\",\"chunk-0f09bee9\":\"64c8ed61\",\"chunk-7e46c9de\":\"31d6cfe0\",\"chunk-f6418e24\":\"31d6cfe0\",\"chunk-4d5f7ff6\":\"0d15b2c7\",\"chunk-00b265e8\":\"619c55f8\",\"chunk-1383cec2\":\"d962c76a\",\"chunk-19012998\":\"69b3324f\",\"chunk-546c3053\":\"a6fb6318\",\"chunk-2cccb4ca\":\"cd416ba0\",\"chunk-74b26ff1\":\"351d7309\",\"chunk-7a01996c\":\"0f47911d\",\"chunk-9b3a1c08\":\"ef2e74f1\",\"chunk-d9ac4dc2\":\"dc82c034\",\"chunk-ef8ce8b2\":\"65074e9d\",\"chunk-eb6bd3dc\":\"31d6cfe0\",\"chunk-0f555441\":\"2e1e3092\",\"chunk-fa61d866\":\"31d6cfe0\"}[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","\r\n\r\nexport const PLATFORM_TYPE = {\r\n MANAGE_CENTER: 'MANAGE_CENTER', // 服务商平台\r\n COMPANY: 'COMPANY', // 企业\r\n TEMPLATE_CONSOLE: 'TEMPLATE_CONSOLE', // 模板控制台\r\n}\r\n\r\n/**\r\n * \r\n * @param {PLATFORM_TYPE} platformType \r\n * @param {*} orgId 企业id\r\n * @param {*} orgName 企业名称\r\n * @param {*} orgLogo 企业logo\r\n * @param {*} accessList 权限列表\r\n */\r\nexport function platform(platformType, orgId, orgName, orgLogo, accessList = []/* , hasCompanyManageAccess = false */ ) {\r\n return {\r\n platformType,\r\n orgId,\r\n orgLogo,\r\n orgName,\r\n accessList,\r\n }\r\n}\r\n\r\n\r\nexport const AccessCode = {\r\n CompanyConsole: 'company_console',\r\n ProjectManager: 'project_manager',\r\n}\r\n\r\nexport function haveAccess(accessList, targetAccess) {\r\n return accessList.indexOf(targetAccess) !== -1;\r\n}","import Vue from 'vue';\r\n\r\nexport function firstCharToLowerCase(obj) {\r\n return Object.entries(obj).reduce((o, [key, value]) => {\r\n o[`${key[0].toLocaleLowerCase()}${key.slice(1)}`] = value;\r\n return o;\r\n },{});\r\n}\r\n\r\nexport function firstCharToUpperCase(obj) {\r\n return Object.entries(obj).reduce((o, [key, value]) => {\r\n o[`${key[0].toLocaleUpperCase()}${key.slice(1)}`] = value;\r\n return o;\r\n },{});\r\n}\r\n\r\nexport const sleep = t => new Promise(r => setTimeout(r, t));\r\n\r\nexport const notify = {\r\n success: (message) => {\r\n Vue.prototype.$notify({\r\n title:'',\r\n message,\r\n type: 'success',\r\n offset: 100,\r\n duration: 2500,\r\n });\r\n },\r\n error: (message) => {\r\n Vue.prototype.$notify({\r\n message,\r\n type: 'error',\r\n offset: 100,\r\n duration: 2500,\r\n });\r\n },\r\n info: (message) => {\r\n Vue.prototype.$notify({\r\n title:'',\r\n message,\r\n type: 'info',\r\n offset: 100,\r\n duration: 2500,\r\n });\r\n },\r\n warning: (message) => {\r\n Vue.prototype.$notify({\r\n title:'',\r\n message,\r\n type: 'warning',\r\n offset: 100,\r\n duration: 2500,\r\n });\r\n }\r\n}\r\n\r\nexport function downloadFile(url, filename){\r\n const ele = document.createElement('a');\r\n ele.setAttribute('href', url);\r\n ele.setAttribute('download', filename);\r\n\r\n ele.style.display = 'none';\r\n document.body.appendChild(ele);\r\n\r\n ele.click();\r\n\r\n document.body.removeChild(ele);\r\n}","export default {\r\n login: 'LOCKING | 登录',\r\n // index: 'LOCKING | 云建筑',\r\n project: 'LOCKING | 项目编辑',\r\n platform: 'LOCKING | 平台选择',\r\n template: 'LOCKING | 模板控制台',\r\n projnotice: 'LOCKING | 更新提醒',\r\n notFound: '404 | 未找到该页面',\r\n workspace: 'LOCKING | 项目详情',\r\n search: 'LOCKING | 搜索',\r\n recycle: 'LOCKING | 回收站',\r\n cloud: 'LOCKING | 云盘',\r\n cloudrecycle: 'LOCKING | 云回收站',\r\n cloudsource: 'LOCKING | 云资源管理器',\r\n company: 'LOCKING | 企业后台',\r\n message2: 'LOCKING | 企业后台',\r\n company_message: 'LOCKING | 平台消息',\r\n company_user: 'LOCKING | 通讯录',\r\n company_project: 'LOCKING | 项目管理',\r\n company_template: 'LOCKING | 模板与应用',\r\n company_setting: 'LOCKING | 通用设置',\r\n company_template_detail: 'LOCKING | 模板查看',\r\n company_app: 'LOCKING | 应用',\r\n company_template_market: 'LOCKING | 应用市场',\r\n system: 'LOCKING | 总后台',\r\n system_template: 'LOCKING | 流程模板',\r\n system_template_mind: 'LOCKING | 思维导图',\r\n system_template_matrix: 'LOCKING | 矩阵模板',\r\n system_runmanage: 'LOCKING | 运行管理',\r\n system_appcenter: 'LOCKING | 应用管理',\r\n system_setting: 'LOCKING | 总体权限',\r\n system_appinfo: 'LOCKING | 应用介绍',\r\n system_template_file: '流程模板 | 样板文件'\r\n}","import Vue from 'vue'\r\nimport Router from 'vue-router'\r\nimport constants from '@/utils/constants'\r\n\r\nVue.use(Router)\r\n\r\nconst router = new Router({\r\n\t// mode: 'history',\r\n\tmode: 'hash',\r\n\troutes: [{\r\n\t\tpath: '/',\r\n\t\tname: 'login',\r\n\t\tcomponent: () => import('@/views/login'),\r\n\t},\r\n\t{\r\n\t\tpath: '/demo',\r\n\t\tname: 'demo',\r\n\t\tcomponent: () => import('@/views/demo'),\r\n\t},\r\n\t{\r\n\t\tpath: '/platform',\r\n\t\tname: 'platform',\r\n\t\tcomponent: () => import('@/views/platform_center'),\r\n\t},\r\n\t{\r\n\t\tpath: '/index',\r\n\t\tname: 'index',\r\n\t\tcomponent: () => import('@/views/main_web/index'),\r\n\t},\r\n\t{\r\n\t\tpath: '/projnotice',\r\n\t\tname: 'projnotice',\r\n\t\tcomponent: () => import('@/views/main_web/projnotice'),\r\n\t},\r\n\t{\r\n\t\tpath: '/email',\r\n\t\tname: 'email',\r\n\t\tcomponent: () => import('@/views/components_web/head/email'),\r\n\t},\r\n\t{\r\n\t\tpath: '/workspace',\r\n\t\tname: 'workspace',\r\n\t\tcomponent: () => import('@/views/main_web/workspace'),\r\n\t},\r\n\t{\r\n\t\tpath: '/project',\r\n\t\tname: 'project',\r\n\t\tcomponent: () => import('@/views/main_web/project'),\r\n\t},\r\n\t{\r\n\t\tpath: '/recycle',\r\n\t\tname: 'recycle',\r\n\t\tcomponent: () => import('@/views/main_web/recycle'),\r\n\t},\r\n\t{\r\n\t\tpath: '/search',\r\n\t\tname: 'search',\r\n\t\tcomponent: () => import('@/views/main_web/search'),\r\n\t},\r\n\t{\r\n\t\tpath: '/cloud',\r\n\t\tname: 'cloud',\r\n\t\tcomponent: () => import('@/views/main_web/cloud'),\r\n\t},\r\n\t{\r\n\t\tpath: '/cloudrecycle',\r\n\t\tname: 'cloudrecycle',\r\n\t\tcomponent: () => import('@/views/main_web/cloudrecycle'),\r\n\t},\r\n\t{\r\n\t\tpath: '/cloudsource',\r\n\t\tname: 'cloudsource',\r\n\t\tcomponent: () => import('@/views/main_web/cloudsource'),\r\n\t},\r\n\t// 探索者后台\r\n\t{\r\n\t\tpath: '/company',\r\n\t\tname: 'company',\r\n\t\tcomponent: () => import('@/views/manage_company'),\r\n\t\tredirect: { name: 'company_home' },\r\n\t\tchildren: [\r\n\t\t\t{\r\n\t\t\t\tpath: 'home',\r\n\t\t\t\tname: 'company_home',\r\n\t\t\t\tcomponent: () => import('@/views/manage_company/message'),\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'message',\r\n\t\t\t\tname: 'company_message',\r\n\t\t\t\tcomponent: () => import('@/views/manage_company/message_detail'),\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'user',\r\n\t\t\t\tname: 'company_user',\r\n\t\t\t\tcomponent: () => import('@/views/manage_company/user'),\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'project',\r\n\t\t\t\tname: 'company_project',\r\n\t\t\t\tcomponent: () => import('@/views/manage_company/project'),\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'template',\r\n\t\t\t\tname: 'company_template',\r\n\t\t\t\tcomponent: () => import('@/views/manage_company/template'),\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'template/detail',\r\n\t\t\t\tname: 'company_template_detail',\r\n\t\t\t\tcomponent: () => import('@/views/manage_company/template_detail'),\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'template/market',\r\n\t\t\t\tname: 'company_template_market',\r\n\t\t\t\tcomponent: () => import('@/views/manage_company/template_market'),\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'setting',\r\n\t\t\t\tname: 'company_setting',\r\n\t\t\t\tcomponent: () => import('@/views/manage_company/setting'),\r\n\t\t\t},\r\n\t\t\t{\r\n\t\t\t\tpath: 'app',\r\n\t\t\t\tname: 'company_app',\r\n\t\t\t\tcomponent: () => import('@/views/manage_company/app'),\r\n\t\t\t},\r\n\t\t]\r\n\t},\r\n\t// {\r\n\t// \tpath: '/company',\r\n\t// \tname: 'company',\r\n\t// \tcomponent: () => import('@/views/manage_company/message'),\r\n\t// },\r\n\t// {\r\n\t// \tpath: '/company/message',\r\n\t// \tname: 'company_message',\r\n\t// \tcomponent: () => import('@/views/manage_company/message_detail'),\r\n\t// },\r\n\t// {\r\n\t// \tpath: '/company/user',\r\n\t// \tname: 'company_user',\r\n\t// \tcomponent: () => import('@/views/manage_company/user'),\r\n\t// },\r\n\t// {\r\n\t// \tpath: '/company/project',\r\n\t// \tname: 'company_project',\r\n\t// \tcomponent: () => import('@/views/manage_company/project'),\r\n\t// },\r\n\t// {\r\n\t// \tpath: '/company/template',\r\n\t// \tname: 'company_template',\r\n\t// \tcomponent: () => import('@/views/manage_company/template'),\r\n\t// },\r\n\t// {\r\n\t// \tpath: '/company/template/detail',\r\n\t// \tname: 'company_template_detail',\r\n\t// \tcomponent: () => import('@/views/manage_company/template_detail'),\r\n\t// },\r\n\t// {\r\n\t// \tpath: '/company/template/market',\r\n\t// \tname: 'company_template_market',\r\n\t// \tcomponent: () => import('@/views/manage_company/template_market'),\r\n\t// },\r\n\t// {\r\n\t// \tpath: '/company/setting',\r\n\t// \tname: 'company_setting',\r\n\t// \tcomponent: () => import('@/views/manage_company/setting'),\r\n\t// },\r\n\t// {\r\n\t// \tpath: '/company/app',\r\n\t// \tname: 'company_app',\r\n\t// \tcomponent: () => import('@/views/manage_company/app'),\r\n\t// },\r\n\t/* 模板平台 */\r\n\t{\r\n\t\tpath: '/template',\r\n\t\tname: 'template',\r\n\t\tcomponent: resolve => require(['@/views/manage_template/index'], resolve)\r\n\t},\r\n\t{\r\n\t\tpath: '/template/create',\r\n\t\tname: 'template_create',\r\n\t\tcomponent: resolve => require(['@/views/manage_template/create_template'], resolve)\r\n\t},\r\n\t// 探索者总后台\r\n\t{\r\n\t\tpath: '/system',\r\n\t\t// name: 'system',\r\n\t\tcomponent: () => import('@/views/manage_system'),\r\n\t\tredirect: { name: 'system_customer' },\r\n\t\tchildren: [{\r\n\t\t\tpath: 'customer',\r\n\t\t\tname: 'system_customer',\r\n\t\t\tcomponent: () => import('@/views/manage_system/customer'),\r\n\t\t},{\r\n\t\t\tpath: 'template',\r\n\t\t\tname: 'system_template',\r\n\t\t\tcomponent: () => import('@/views/manage_system/template'),\r\n\t\t}, \r\n\t\t{\r\n\t\t\tpath: 'runmanage',\r\n\t\t\tname: 'system_runmanage',\r\n\t\t\tcomponent: () => import('@/views/manage_system/runmanage'),\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: 'template/matrix',\r\n\t\t\tname: 'system_template_matrix',\r\n\t\t\tcomponent: () => import('@/views/manage_system/template/matrix'),\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: 'template/mind',\r\n\t\t\tname: 'system_template_mind',\r\n\t\t\tcomponent: () => import('@/views/manage_system/template/mind'),\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: 'template/tempfile',\r\n\t\t\tname: 'system_template_file',\r\n\t\t\tcomponent: () => import('@/views/manage_system/template_file'),\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: 'appcenter',\r\n\t\t\tname: 'system_appcenter',\r\n\t\t\tcomponent: () => import('@/views/manage_system/appcenter'),\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: 'appinfo',\r\n\t\t\tname: 'system_appinfo',\r\n\t\t\tcomponent: () => import('@/views/manage_system/appinfo'),\r\n\t\t},\r\n\t\t{\r\n\t\t\tpath: 'setting',\r\n\t\t\tname: 'system_setting',\r\n\t\t\tcomponent: () => import('@/views/manage_system/setting'),\r\n\t\t},{\r\n\t\t\tpath: '*',\r\n\t\t\tredirect: { name: 'system_customer' },\r\n\t\t}]\r\n\t},\r\n\t// {\r\n\t// \tpath: '/system/template',\r\n\t// \tname: 'system_template',\r\n\t// \tcomponent: () => import('@/views/manage_system/template'),\r\n\t// },\r\n\t\r\n\t// 页面未找到时提示(这个页面要放在最后)\r\n\t{\r\n\t\tpath: '*',\r\n\t\tname: 'notfound',\r\n\t\tcomponent: () => import('@/views/components_web/notFound/notFound'),\r\n\t}\r\n\t]\r\n})\r\n// 添加路由验证\r\nrouter.beforeEach((to, from, next) => {\r\n\tif (to.path === '/') {\r\n\t\tnext()\r\n\t} else {\r\n\t\tif (!sessionStorage.getItem('userId')) {\r\n\t\t\tnext({\r\n\t\t\t\tpath: '/'\r\n\t\t\t})\r\n\t\t} else {\r\n\t\t\tnext()\r\n\t\t}\r\n\t}\r\n})\r\n// 导航后置守卫,可以在确定导航到目标页面时再更改title\r\nrouter.afterEach((to) => {\r\n\twindow.document.title = constants[to.name] || 'LOCKING | 云建筑'\r\n})\r\nexport default router\r\n","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',{ref:\"mainpage\",staticClass:\"mt-48\",attrs:{\"id\":\"bigbody\"}})],1)}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n\r\n \r\n \r\n \r\n \r\n
\r\n\r\n\r\n\r\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--12-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=460664e1&\"\nimport script from \"./App.vue?vue&type=script&lang=js&\"\nexport * from \"./App.vue?vue&type=script&lang=js&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../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","\r\nimport { fetchApi } from '@/utils/request';\r\nimport { platform, PLATFORM_TYPE, AccessCode } from '@/utils/access';\r\nimport { firstCharToLowerCase } from '@/utils/tool';\r\n\r\nconst initialState = () => ({\r\n isLogin: false,\r\n accountId: undefined,\r\n accountName: undefined,\r\n userName: undefined,\r\n platformList: [],\r\n currentPlatform: {},\r\n currentCompanyId: undefined,\r\n avator: undefined,\r\n userInfo: {},\r\n});\r\n\r\nconst getBootstrapState = () => {\r\n let state = initialState();\r\n try {\r\n const sessionState = JSON.parse(sessionStorage.getItem('user'));\r\n const currentCompanyId = sessionStorage.getItem('companyId');\r\n const currentPlatform = JSON.parse(sessionStorage.getItem('platform') || '{}');\r\n if (sessionState && sessionState.accountId) {\r\n state.isLogin = true;\r\n Object.assign(state, sessionState);\r\n state.currentCompanyId = currentCompanyId;\r\n state.currentPlatform = currentPlatform;\r\n }\r\n } catch (e) {\r\n console.log('加载session数据失败');\r\n state = initialState();\r\n }\r\n return state;\r\n}\r\n\r\n\r\nexport default {\r\n state: getBootstrapState(),\r\n setCurrentPlatform(platformInfo) {\r\n this.state.currentPlatform = platformInfo;\r\n this.state.currentCompanyId = platformInfo.orgId;\r\n sessionStorage.companyId = platformInfo.orgId;\r\n sessionStorage.platform = JSON.stringify(platformInfo);\r\n },\r\n async login(UserName, PassWord) {\r\n const loginRes = await fetchApi('authentication/login', { UserName, PassWord });\r\n\r\n const loginSucc = loginRes.Code === 0;\r\n if (!loginSucc) {\r\n return loginRes;\r\n }\r\n\r\n this.state.isLogin = true;\r\n const userData = firstCharToLowerCase(loginRes.Data || {});\r\n // 如果以后用到这里面的数据,拍平放到同层级,不再放到userExt字段下\r\n delete userData.userExt;\r\n const { companyId, cnName, id: accountId, permission, backgroundPermission } = userData;\r\n const platformList = [];\r\n const loginData = {\r\n accountId,\r\n accountName: UserName,\r\n userName: cnName,\r\n platformList,\r\n userInfo: userData,\r\n };\r\n\r\n /**\r\n * 身份类型:\r\n * 1. 超管: 仅可看到总后台(暂时将模板控制台与其绑定)\r\n * 2. 模板提供商(serviceProvider) : 角色类型暂无\r\n * 3. 企业\r\n */\r\n\r\n const isSuperAdmin = backgroundPermission === 3;\r\n const isCompanyAdmin = backgroundPermission === 2;\r\n\r\n // \r\n if (isSuperAdmin) { // todo 服务商查询企业列表并生成platformList\r\n // todo 暂时将模板控制台加入到超管账号中\r\n platformList.push(\r\n platform(PLATFORM_TYPE.MANAGE_CENTER, companyId, 'LOCKING 总后台', undefined, []),\r\n // platform(PLATFORM_TYPE.TEMPLATE_CONSOLE, CompanyId, undefined, false, '模版控制台'),\r\n );\r\n } else { // 企业生成自己的企业平台权限\r\n const companyInfoRes = await fetchApi('company/queryFrontDeskCompanyById', { id: companyId });\r\n if (companyInfoRes.Code !== 0) {\r\n return companyInfoRes;\r\n }\r\n const { Data = {} } = companyInfoRes;\r\n const { company: { LogoUrl, CompanyName } } = Data;\r\n const accessList = [];\r\n if (isCompanyAdmin) { accessList.push(AccessCode.CompanyConsole); }\r\n if (permission === 1) { accessList.push(AccessCode.ProjectManager); }\r\n platformList.push(platform(PLATFORM_TYPE.COMPANY, companyId, CompanyName, LogoUrl, accessList));\r\n }\r\n\r\n // 存储\r\n this.state.isLogin = true;\r\n Object.assign(this.state, loginData);\r\n sessionStorage.userId = accountId;\r\n sessionStorage.accountId = accountId;\r\n sessionStorage.user = JSON.stringify(loginData);\r\n return {\r\n Code: loginRes.Code,\r\n Data: loginData,\r\n }\r\n },\r\n logout() {\r\n this.state = initialState();\r\n fetchApi('authentication/loginOut');\r\n sessionStorage.clear();\r\n }\r\n}","import { getFileUrl } from '@/services/oss';\r\n\r\nexport const resolveAvator = imgSrc => getFileUrl(imgSrc) || '/static/img/avator_default.svg';\r\n\r\nexport default (imgSrc, imgType) => {\r\n const defaultImg = imgType === 'avator' ? '/static/img/avator_default.svg' : ''\r\n return getFileUrl(imgSrc) || defaultImg;\r\n};","var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('img',{directives:[{name:\"lazy\",rawName:\"v-lazy\",value:(_vm.src),expression:\"src\"}]})}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\r\n
\r\n\r\n","import mod from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"; export default mod; export * from \"-!../../../node_modules/cache-loader/dist/cjs.js??ref--12-0!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/cache-loader/dist/cjs.js??ref--0-0!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./index.vue?vue&type=script&lang=js&\"","import { render, staticRenderFns } from \"./index.vue?vue&type=template&id=7284fb36&\"\nimport script from \"./index.vue?vue&type=script&lang=js&\"\nexport * from \"./index.vue?vue&type=script&lang=js&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../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 Vue from 'vue'\r\nimport App from './App.vue'\r\nimport router from './router';\r\n\r\n// 引入Element\r\nimport ElementUI from 'element-ui'\r\nimport 'element-ui/lib/theme-chalk/index.css';\r\n\r\n// 创建一个简单的全局store\r\nimport store from './store';\r\nimport vuex from 'vuex';\r\nimport Cookies from 'js-cookie'\r\nimport resolveImg ,{ resolveAvator } from '@/filters/resolveImg';\r\nimport VueLazyload from 'vue-lazyload'\r\nimport VueContextMenu from '@xunlei/vue-context-menu'\r\nimport LazyImg from '@/components/img-lazy';\r\n\r\n// 加载其他css\r\nimport \"@/../public/static/css/element_chanage.css\"\r\nimport \"@/../public/static/css/iconfont.css\"\r\nimport \"@/../public/static/css/iconfont2.css\"\r\nimport \"@/../public/static/css/iconfont3.css\"\r\nimport \"@/../public/static/css/main.css\"\r\n\r\n// 引入lazyload\r\n// import 'babel-polyfill'\r\nimport axios, { fetchApi } from './utils/request';\r\n\r\nVue.use(ElementUI);\r\nVue.use(VueLazyload);\r\nVue.use(vuex);\r\nVue.prototype.$cookie = Cookies;\r\nVue.component('ImgLazy', LazyImg);\r\n\r\n// todo DEPRECATED\r\nVue.prototype.$axios = axios;\r\n// todo DEPRECATED\r\nVue.prototype.$fetch = axios;\r\nVue.prototype.$fetchApi = fetchApi;\r\nVue.filter('resolveImg', resolveImg);\r\nVue.filter('resolveAvator', resolveAvator);\r\n\r\n//右键菜单\r\nVue.use(VueContextMenu)\r\nVue.config.productionTip = false\r\n\r\nnew Vue({\r\n router,\r\n store,\r\n render: h => h(App),\r\n}).$mount('#app')\r\n\r\n\r\n\r\n\r\n\r\n","import * as OSS from 'ali-oss';\r\nimport { memoize } from 'lodash';\r\n// import { getData } from './request';\r\n\r\nconst client = new OSS({\r\n region: 'oss-cn-hangzhou',\r\n accessKeyId: 'LTAI4G2BEDNpfdLmquYYMaMV',\r\n accessKeySecret: 'tPhAL3qAgF9Tq67h73snAmwu8iPZ5t',\r\n bucket: 'yiyun-client-files',\r\n secure: true,\r\n});\r\n\r\n/**\r\n * 存储逻辑\r\n * + oss上的存储文件路径为 时间戳 / 文件名\r\n * + 文件路径信息保存到服务器端时,添加拟协议头 oss://\r\n * + 示例:\r\n * 文件名为oss.js\r\n * 则在oss上保存的路径为 1601016877378/oss.js\r\n * 在服务器上存储的记录为: oss://1601016877378/oss.js\r\n */\r\n\r\nconst generateStoreKey = name => `${new Date().getTime()}/${name}`;\r\n\r\nexport const wrapOssProtocol = path => `oss://${path}`;\r\n\r\nexport async function multipartUpload(fileName, file, opt = {}) {\r\n try {\r\n const storeAs = generateStoreKey(fileName);\r\n const result = await client.multipartUpload(storeAs, file, opt);\r\n return result;\r\n } catch (ex) {\r\n console.error('file upload failed:', ex);\r\n return null;\r\n }\r\n}\r\n/**\r\n * \r\n * @param {*} objectKey 文件在服务器上的path值,格式为: oss://${timestamp}/filename \r\n * @param {*} saveAs \r\n */\r\nexport const getFileUrl = memoize(function getFileUrlInner(serverOSSPath = '', saveAs) {\r\n if (serverOSSPath.indexOf('oss://') !== 0) {\r\n return serverOSSPath;\r\n }\r\n const objectKey = serverOSSPath.substr(6);\r\n const filename = saveAs || objectKey.split('/').pop();\r\n try {\r\n const expires = 3600;\r\n const result = client.signatureUrl(objectKey, {\r\n expires,\r\n response: {\r\n 'content-disposition': `attachment; filename=\"${filename}\"`,\r\n },\r\n });\r\n setTimeout(() => {\r\n getFileUrl.cache.delete(serverOSSPath);\r\n }, expires * 1000)\r\n return result;\r\n } catch (ex) {\r\n return null;\r\n }\r\n})\r\n// export async function saveStr(saveAs, str) {\r\n// return await getData('oss', 'saveStr', { saveAs, context: str });\r\n// }\r\n// export async function getContext(objectKey) {\r\n// const data = await getData('oss', 'getContext', { objectKey });\r\n// if (!data.type && data.code && data.code !== 'error') return null;\r\n// return data.data;\r\n// }\r\n","import mod from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../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/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"; export default mod; export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../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/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&lang=scss&\"","import axios from 'axios';\r\nimport Vue from 'vue';\r\nimport router from '../router';\r\nimport { notify } from '@/utils/tool';\r\n\r\naxios.defaults.withCredentials = true\r\n\r\n/**\r\n * 请求拦截器:添加token\r\n */\r\naxios.interceptors.request.use(function (config) {\r\n // 在发送请求之前做些什么\r\n if (config.url.indexOf('api/') === 0) {\r\n config.url = `${process.env.API_HOST}${config.url.slice(4)}`;\r\n }\r\n //若token存在,则在每次请求头中加入token\r\n // if (sessionStorage.token) {\r\n // // config.headers.common['x-access-token'] = sessionStorage.token;\r\n // config.headers.common['Authorization'] = 'Bearer ' + sessionStorage.token;\r\n // }\r\n return config;\r\n}, function (error) {\r\n // 对请求错误做些什么\r\n return Promise.reject(error);\r\n});\r\n//拦截器,访问网络异常时的提示\r\naxios.interceptors.response.use(\r\n response => {\r\n return response;\r\n },\r\n error => {\r\n if (error.response) {\r\n switch (error.response.status) {\r\n case 401:\r\n if (router.currentRoute.fullPath != '/') {\r\n notify.error('登录超时,请重新登录');\r\n sessionStorage.clear();\r\n router.push({ path: \"/\" });\r\n }\r\n break;\r\n }\r\n }\r\n return Promise.reject(error); // 返回接口返回的错误信息\r\n }\r\n);\r\n\r\n\r\n\r\nexport async function fetchApi(path, params, config) {\r\n const [method, fullpath] = mapApiPathToFullPath(path);\r\n try {\r\n const res = await (method === 'GET'\r\n ? axios.get(fullpath, { params }, config)\r\n : axios.post(fullpath, params, config)\r\n );\r\n return res.data;\r\n } catch (e) {\r\n if (e.response && e.response.status) {\r\n switch (e.response.status) {\r\n case 404:\r\n return {\r\n Code: 404,\r\n Msg: '找不到指定的服务。',\r\n };\r\n default:\r\n return {\r\n Code: 503,\r\n Msg: '服务异常,请稍后再试。',\r\n };\r\n }\r\n }\r\n console.error(e);\r\n return {\r\n Code: 503,\r\n Msg: '服务异常,请稍后再试。',\r\n };\r\n }\r\n}\r\n\r\nexport function wrapErrorHint(response) {\r\n if (response.Code !== 0) {\r\n notify.error(response.Msg);\r\n }\r\n return response;\r\n}\r\n\r\nexport default axios;\r\n\r\nfunction mapApiPathToFullPath(path) {\r\n const [service] = path.split('/');\r\n const prefix = ['template', 'project', 'folder', 'file'].indexOf(service) !== -1 ? 'pms' : 'cms';\r\n const fullpath = `api/${prefix}/${service === 'authentication' ? '' : 'v1/'}${path}`;\r\n let method = 'GET';\r\n\r\n switch (path) {\r\n case 'authentication/login':\r\n case 'company/addCompany':\r\n case 'company/queryGeneralOverview':\r\n case 'company/queryProviceTree':\r\n case 'company/updateCompanyById':\r\n case 'dept/addDept':\r\n case 'dept/updateDept':\r\n case 'user/addUser':\r\n case 'user/resetPassWord':\r\n case 'user/updateUser':\r\n case 'template/createTemplate':\r\n case 'template/fileExchange':\r\n case 'template/updateTemplate':\r\n case 'template/uploadingXmind':\r\n case 'template/addTemplateNodeModelFile':\r\n case 'template/createNestedRelevance':\r\n case 'template/deleteNestedRelevance':\r\n case \"folder/createSubfolder\":\r\n case \"project/createProject\":\r\n case \"project/editProject\":\r\n case \"project/assignedWork\":\r\n case \"file/addArchMilesStone\":\r\n case \"file/addFile\":\r\n case \"file/updateFile\":\r\n case \"file/fileCoordinationChange\":\r\n // case 'template/deleteTemplateNodeModelFile':\r\n method = 'POST';\r\n break;\r\n // case 'authentication/loginOut':\r\n // case 'company/deleteCompanyById':\r\n // case 'company/disablEenableCompanyByCompanyId':\r\n // case 'company/queryCompanyById':\r\n // case 'company/queryCompanyByProviceIdAndIndustryId':\r\n // case 'dept/deleteDeptByDeptId':\r\n // case 'dept/queryDeptByDeptId':\r\n // case 'dept/queryDeptsByDeptId':\r\n // case 'user/deleteUser':\r\n // case 'user/queryUserByUserId':\r\n // case 'user/queryUsersByDeptId':\r\n default:\r\n method = 'GET';\r\n break;\r\n }\r\n return [method, fullpath];\r\n}\r\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/static/js/chunk-5acb4ad4.60851b7c.js b/static/js/chunk-5acb4ad4.60851b7c.js
deleted file mode 100644
index dcddeadf..00000000
--- a/static/js/chunk-5acb4ad4.60851b7c.js
+++ /dev/null
@@ -1,2 +0,0 @@
-(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-5acb4ad4"],{"07ac":function(e,n,r){var t=r("23e7"),a=r("6f53").values;t({target:"Object",stat:!0},{values:function(e){return a(e)}})},"1d40":function(e,n,r){"use strict";(function(e){r("99af"),r("4de4"),r("7db0"),r("c975"),r("a15b"),r("d81d"),r("fb6a"),r("b0c0"),r("d3b7"),r("07ac"),r("ac1f"),r("5319");var t=r("5530"),a=(r("96cf"),r("1da1")),o=r("b775"),c=r("3de1"),i=r("2ef0"),u=!!e.electron,s=5,l=5,d=[],f=[],p=[],v=[],h=function(){d=[],f=[],p=[],v=[]},b=function(){},g=function(e){var n=new WebSocket("ws://127.0.0.1:7777/".concat(e));return n.on=n.addEventListener,n},m=function(e,n){return new Promise((function(r,t){e.on("open",(function(){e.send(n)})),e.on("message",(function(n){r(n),e.close()})),e.on("error",(function(e){return t(e)}))}))},x=function(e){return u?e:b},j={isClient:u,init:x((function(){console.log("客户端 electron API 检测:",e.electron)})),login:function(){},logout:function(){},entryProject:x((function(e,n,r,t){var a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:i["identity"];m(g("init"),[n,e].join("|")).then((function(e){return t(e.data)}));var o=g("subscriptionFileChange");return o.on("open",(function(){o.send(e)})),o.on("message",r),o.on("error",a),o})),leaveProject:x((function(e){e.close(),h()})),downloadFile:x((function(e,n,r,t,a){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:i["identity"],u=function i(){var u=g("download");u.on("open",(function(){u.send([e,n,r,t].join("|"))})),u.on("message",(function(e){return"-1"===e.data?(c["d"].error("文件下载失败,请检查网络。"),void o(e)):"-2"===e.data?(c["d"].error("请先关闭本地文件后再下载"),void o(e)):void a(e,u)})),u.on("error",(function(e){o(e)})),u.on("close",(function(){if(p=p.filter((function(e){return e!==i})),v.length){var e=v.shift();p.push(e),e()}}))};p.length>=l?v.push(u):(p.push(u),u())})),analyzeSystemPath:x(function(){var e=Object(a["a"])(regeneratorRuntime.mark((function e(n){var r,t,a;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,m(g("getFolderFileInfo"),n);case 2:return r=e.sent,e.prev=3,t=JSON.parse(r.data),a=Object.values(t).map((function(e){var n=e.name,r=e.extension,t=e.relativePath,a=e.absolutePath,o=0===r.indexOf(".")?r.slice(1):r,c=n.slice(0,-r.length);return{fileName:c,extension:o,relativePath:t.replace(/(\\)+/g,"/"),fullPath:a}})),e.abrupt("return",a);case 9:return e.prev=9,e.t0=e["catch"](3),e.abrupt("return",[]);case 12:case"end":return e.stop()}}),e,null,[[3,9]])})));return function(n){return e.apply(this,arguments)}}()),chooseFiles:x(Object(a["a"])(regeneratorRuntime.mark((function n(){var r,t,a,o;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return r=e.electron.ipcRenderer,n.next=3,r.invoke("project-choose-files");case 3:if(t=n.sent,a=t.canceled,o=t.filePaths,!a){n.next=7;break}return n.abrupt("return",null);case 7:return n.abrupt("return",o);case 8:case"end":return n.stop()}}),n)})))),chooseFolders:x(Object(a["a"])(regeneratorRuntime.mark((function n(){var r,t,a,o;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return r=e.electron.ipcRenderer,n.next=3,r.invoke("project-choose-folders");case 3:if(t=n.sent,a=t.canceled,o=t.filePaths,!a){n.next=7;break}return n.abrupt("return",null);case 7:return n.abrupt("return",o);case 8:case"end":return n.stop()}}),n)})))),uploadFile:x(function(){var e=Object(a["a"])(regeneratorRuntime.mark((function e(n){var r,u,l,p,v,h,b,m,x,j,w,k,I,O,P,S,y,F,R,E,N;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:r=n.projectId,u=n.projectName,l=n.folderId,p=n.folderName,v=n.folderLevelId,h=n.distFileRelativePath,b=void 0===h?"":h,m=n.fileName,x=n.fileExtension,j=n.sourceFilePath,w=n.fileList,k=n.onSuccess,I=n.onProgress,O=void 0===I?i["identity"]:I,P=n.onError,S=void 0===P?i["identity"]:P,y=x?"".concat(m,".").concat(x):m,F="".concat(p).concat(b?"/".concat(b):""),R=w.find((function(e){return b===e.relativePath&&"".concat(e.archName).concat(e.extension?".".concat(e.extension):"")===y})),E=R?Object(c["c"])(Object(t["a"])(Object(t["a"])({},R),{},{ModifyUserId:sessionStorage.userId})):{ArchName:m,CreateUserId:sessionStorage.userId,Extension:x,FolderId:l,FolderLevelId:v,Id:"upload:".concat("".concat(Math.random()).slice(2,8)),ProjId:r,RelativePath:b,Status:2,Version:1},O({process:0},E),N=function e(){var n=function(){if(d=d.filter((function(n){return n!==e})),f.length){var n=f.shift();d.push(n),n()}S.apply(void 0,arguments)},r=function(){if(d=d.filter((function(n){return n!==e})),f.length){var n=f.shift();d.push(n),n()}k.apply(void 0,arguments)},t=g("upload");t.on("open",(function(){var e=[j,y,u,F.replace(/\//g,"\\")].join("|");t.send(e),O({process:0},E)})),t.on("message",function(){var e=Object(a["a"])(regeneratorRuntime.mark((function e(a){var i,u,s,l,d;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if("-1"!==a.data){e.next=4;break}return c["d"].error("文件上传失败"),n(a,E),e.abrupt("return");case 4:if("-2"!==a.data){e.next=8;break}return c["d"].error("请先关闭本地文件后再上传"),n(a,E),e.abrupt("return");case 8:if(e.prev=8,i=JSON.parse(a.data),u=i.size,s=i.process,l=i.hash,O(i,E),100===s&&l){e.next=14;break}return e.abrupt("return");case 14:return t.close(),E.FileSize=+u,E.IpfsCid=l,R||delete E.Id,e.next=20,Object(o["b"])("file/".concat(R?"updateFile":"addFile"),E);case 20:if(d=e.sent,Object(o["c"])(d),0===d.Code){e.next=25;break}return n(d,E),e.abrupt("return");case 25:c["d"].success("文件已上传。"),r(E),e.next=33;break;case 29:e.prev=29,e.t0=e["catch"](8),console.error("socket-upload-file parse data have error:",e.t0),n(e.t0,E);case 33:case"end":return e.stop()}}),e,null,[[8,29]])})));return function(n){return e.apply(this,arguments)}}()),t.on("error",(function(e){S(e,E)}))},d.length>=s?f.push(N):(d.push(N),N());case 8:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}()),updateFile:x((function(e,n,r,u,s){var l=arguments.length>5&&void 0!==arguments[5]?arguments[5]:i["identity"],d=arguments.length>6&&void 0!==arguments[6]?arguments[6]:i["identity"],f=g("upload"),p=e.archName,v=e.extension,h=(e.id,"".concat(p).concat(v?".".concat(v):"")),b="".concat(n,"\\").concat(u,"\\").concat(h);f.on("open",(function(){var e=[b,h,r,u].join("|");f.send(e)})),f.on("message",function(){var n=Object(a["a"])(regeneratorRuntime.mark((function n(r){var a,i,u,p,v,h;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:if("-1"!==r.data){n.next=4;break}return c["d"].error("文件上传失败"),d(r),n.abrupt("return");case 4:if("-2"!==r.data){n.next=8;break}return c["d"].error("请先关闭本地文件后再上传"),d(r),n.abrupt("return");case 8:if(n.prev=8,a=JSON.parse(r.data),i=a.size,u=a.process,p=a.hash,l(a),100===u&&p){n.next=14;break}return n.abrupt("return");case 14:return f.close(),v=Object(c["c"])(Object(t["a"])(Object(t["a"])({},e),{},{ipfsCid:p,size:+i,ModifyUserId:sessionStorage.userId})),n.next=18,Object(o["b"])("file/updateFile",v);case 18:return h=n.sent,Object(o["c"])(h),s(v),n.abrupt("return");case 24:n.prev=24,n.t0=n["catch"](8),console.error("socket-update-file parse data have error:",r);case 27:case"end":return n.stop()}}),n,null,[[8,24]])})));return function(e){return n.apply(this,arguments)}}()),f.on("error",(function(n){d(n,e)}))})),openFile:x((function(n){var r=e.electron.shell;r.openPath(n)})),openFolder:x((function(n){var r=e.electron.shell;r.showItemInFolder(n)}))};n["a"]=j}).call(this,r("c8ba"))},5319:function(e,n,r){"use strict";var t=r("d784"),a=r("825a"),o=r("7b0b"),c=r("50c4"),i=r("a691"),u=r("1d80"),s=r("8aa5"),l=r("14c3"),d=Math.max,f=Math.min,p=Math.floor,v=/\$([$&'`]|\d\d?|<[^>]*>)/g,h=/\$([$&'`]|\d\d?)/g,b=function(e){return void 0===e?e:String(e)};t("replace",2,(function(e,n,r,t){var g=t.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,m=t.REPLACE_KEEPS_$0,x=g?"$":"$0";return[function(r,t){var a=u(this),o=void 0==r?void 0:r[e];return void 0!==o?o.call(r,a,t):n.call(String(a),r,t)},function(e,t){if(!g&&m||"string"===typeof t&&-1===t.indexOf(x)){var o=r(n,e,this,t);if(o.done)return o.value}var u=a(e),p=String(this),v="function"===typeof t;v||(t=String(t));var h=u.global;if(h){var w=u.unicode;u.lastIndex=0}var k=[];while(1){var I=l(u,p);if(null===I)break;if(k.push(I),!h)break;var O=String(I[0]);""===O&&(u.lastIndex=s(p,c(u.lastIndex),w))}for(var P="",S=0,y=0;y=S&&(P+=p.slice(S,R)+$,S=R+F.length)}return P+p.slice(S)}];function j(e,r,t,a,c,i){var u=t+e.length,s=a.length,l=h;return void 0!==c&&(c=o(c),l=v),n.call(i,l,(function(n,o){var i;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return r.slice(0,t);case"'":return r.slice(u);case"<":i=c[o.slice(1,-1)];break;default:var l=+o;if(0===l)return n;if(l>s){var d=p(l/10);return 0===d?n:d<=s?void 0===a[d-1]?o.charAt(1):a[d-1]+o.charAt(1):n}i=a[l-1]}return void 0===i?"":i}))}}))},a15b:function(e,n,r){"use strict";var t=r("23e7"),a=r("44ad"),o=r("fc6a"),c=r("a640"),i=[].join,u=a!=Object,s=c("join",",");t({target:"Array",proto:!0,forced:u||!s},{join:function(e){return i.call(o(this),void 0===e?",":e)}})}}]);
-//# sourceMappingURL=chunk-5acb4ad4.60851b7c.js.map
\ No newline at end of file
diff --git a/static/js/chunk-5acb4ad4.60851b7c.js.map b/static/js/chunk-5acb4ad4.60851b7c.js.map
deleted file mode 100644
index 54c64b16..00000000
--- a/static/js/chunk-5acb4ad4.60851b7c.js.map
+++ /dev/null
@@ -1 +0,0 @@
-{"version":3,"sources":["webpack:///./node_modules/core-js/modules/es.object.values.js","webpack:///./src/services/system.js","webpack:///./node_modules/core-js/modules/es.string.replace.js","webpack:///./node_modules/core-js/modules/es.array.join.js"],"names":["$","$values","values","target","stat","O","isClient","global","electron","MAX_UPLOAD_ENQUEUE","MAX_DOWNLOAD_ENQUEUE","uploadingQueue","uploadQueue","downloadingQueue","downloadQueue","clearTaskQueue","noop","io","path","sk","WebSocket","on","addEventListener","requestBySocket","socketIns","message","Promise","resolve","reject","send","e","close","safeCall","f","system","init","console","log","login","logout","entryProject","projName","userId","fileChangeHandler","initHandler","errorHandler","identity","join","then","response","data","watchSocket","leaveProject","downloadFile","fileIpfsId","projectName","fileName","dirName","onProcessHandler","onErrorHandler","downloadTask","socket","notify","error","filter","iTask","length","nextTask","shift","push","analyzeSystemPath","systemFullpath","obj","JSON","parse","uploadTasks","Object","map","extensionedFileName","name","dotExtension","extension","relativePath","absolutePath","indexOf","slice","replace","fullPath","chooseFiles","ipcRenderer","invoke","res","canceled","filePaths","chooseFolders","uploadFile","params","projectId","folderId","folderName","folderLevelId","distFileRelativePath","fileExtension","sourceFilePath","fileList","onSuccessHandler","onSuccess","onProgress","onProgressHandler","onError","distFilePath","maybeFile","find","iFile","archName","firstCharToUpperCase","ModifyUserId","sessionStorage","ArchName","CreateUserId","Extension","FolderId","FolderLevelId","Id","Math","random","ProjId","RelativePath","Status","Version","process","uploadTask","resolveError","resolveSuccess","progressData","size","hash","FileSize","IpfsCid","fetchApi","wrapErrorHint","Code","success","updateFile","file","localFilePathPrefix","id","filePath","copyFile","ipfsCid","openFile","shell","openPath","openFolder","showItemInFolder","fixRegExpWellKnownSymbolLogic","anObject","toObject","toLength","toInteger","requireObjectCoercible","advanceStringIndex","regExpExec","max","min","floor","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","maybeToString","it","undefined","String","REPLACE","nativeReplace","maybeCallNative","reason","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","REPLACE_KEEPS_$0","UNSAFE_SUBSTITUTE","searchValue","replaceValue","this","replacer","call","regexp","done","value","rx","S","functionalReplace","fullUnicode","unicode","lastIndex","results","result","matchStr","accumulatedResult","nextSourcePosition","i","matched","position","index","captures","j","namedCaptures","groups","replacerArgs","concat","replacement","apply","getSubstitution","str","tailPos","m","symbols","match","ch","capture","charAt","n","IndexedObject","toIndexedObject","arrayMethodIsStrict","nativeJoin","ES3_STRINGS","STRICT_METHOD","proto","forced","separator"],"mappings":"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","file":"static/js/chunk-5acb4ad4.60851b7c.js","sourcesContent":["var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.github.io/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","/**\r\n * 模拟客户端back server\r\n * 目前还不知道back的API及具体实现,暂时先抑制代码报错\r\n */\r\nimport { fetchApi, wrapErrorHint } from '@/utils/request';\r\nimport { notify, firstCharToUpperCase } from '@/utils/tool';\r\nimport { identity } from 'lodash';\r\nimport Vue from 'vue';\r\n\r\nexport const isClient = !!global.electron; // process.env.IS_CLIENT;\r\n\r\nconst MAX_UPLOAD_ENQUEUE = 5;\r\nconst MAX_DOWNLOAD_ENQUEUE = 5;\r\nlet uploadingQueue = [];\r\nlet uploadQueue = [];\r\nlet downloadingQueue = [];\r\nlet downloadQueue = [];\r\n\r\nconst clearTaskQueue = () => {\r\n uploadingQueue = [];\r\n uploadQueue = [];\r\n downloadingQueue = [];\r\n downloadQueue = [];\r\n}\r\n\r\nlet socket;\r\nconst noop = () => {};\r\n\r\nconst io = (path) => {\r\n const sk = new WebSocket(`ws://127.0.0.1:7777/${path}`);\r\n sk.on = sk.addEventListener;\r\n return sk;\r\n}\r\n\r\nconst requestBySocket = (socketIns, message) => new Promise((resolve, reject) => {\r\n socketIns.on('open', () => { socketIns.send(message); });\r\n socketIns.on('message', e => {resolve(e);socketIns.close();});\r\n socketIns.on('error', e => reject(e));\r\n});\r\n\r\n\r\nconst safeCall = f => isClient ? f : noop;\r\nconst safeSocket = f => (...args) => socket && f(...args);\r\n\r\nconst system = {\r\n isClient,\r\n init: safeCall(() => {\r\n console.log('客户端 electron API 检测:', global.electron);\r\n }),\r\n \r\n // initialSocket: () => {\r\n // socket = io('ws://10.240.5.17:8000');\r\n // // socket = io('ws://127.0.0.1:3000');\r\n // debugger;\r\n // socket.on('connect', () => { console.log('本地socket服务连接成功') });\r\n // },\r\n /**\r\n * todo\r\n * 通知登录 \r\n */\r\n login: () => {\r\n\r\n },\r\n /**\r\n * todo\r\n * 通知登出\r\n */\r\n logout: () => {\r\n\r\n },\r\n /**\r\n * 通知系统进入当前的工作空间\r\n */\r\n entryProject: safeCall((projName, userId, fileChangeHandler, initHandler, errorHandler = identity) => {\r\n requestBySocket(io('init'), [userId, projName].join('|'))\r\n .then(response => initHandler(response.data));\r\n const watchSocket = io('subscriptionFileChange');\r\n watchSocket.on('open', () => {\r\n watchSocket.send(projName);\r\n });\r\n watchSocket.on('message', fileChangeHandler);\r\n watchSocket.on('error', errorHandler);\r\n return watchSocket;\r\n }),\r\n /**\r\n * todo\r\n * 离开工作空间时注销socket\r\n */\r\n leaveProject: safeCall((watchSocket) => {\r\n watchSocket.close();\r\n clearTaskQueue();\r\n }),\r\n /**\r\n * 下载文件到工作空间\r\n */\r\n downloadFile: safeCall((fileIpfsId, projectName, fileName, dirName, onProcessHandler, onErrorHandler = identity) => {\r\n\r\n const downloadTask = () => {\r\n const socket = io('download');\r\n socket.on('open', () => {\r\n socket.send([fileIpfsId, projectName, fileName, dirName].join('|'));\r\n });\r\n socket.on('message', (e) => {\r\n if(e.data === '-1') {\r\n notify.error('文件下载失败,请检查网络。');\r\n onErrorHandler(e);\r\n return;\r\n }\r\n if(e.data === '-2') {\r\n notify.error('请先关闭本地文件后再下载');\r\n onErrorHandler(e);\r\n return;\r\n }\r\n onProcessHandler(e, socket);\r\n });\r\n socket.on('error', e => {\r\n onErrorHandler(e);\r\n });\r\n\r\n socket.on('close', () => {\r\n downloadingQueue = downloadingQueue.filter(iTask => iTask !== downloadTask);\r\n if(downloadQueue.length) {\r\n const nextTask = downloadQueue.shift();\r\n downloadingQueue.push(nextTask);\r\n nextTask();\r\n }\r\n })\r\n }\r\n\r\n if(downloadingQueue.length >= MAX_DOWNLOAD_ENQUEUE) {\r\n downloadQueue.push(downloadTask);\r\n } else {\r\n downloadingQueue.push(downloadTask);\r\n downloadTask();\r\n }\r\n \r\n }),\r\n // 解析文件/文件夹路径信息\r\n // {\r\n // name: '11-28会议纪要.docx',\r\n // extension:\".docx\",\r\n // relativePath:\"协同项目\\\\分析\\\\11-28会议纪要.docx\",\r\n // absolutePath:\"C:\\\\Users\\\\yuan_rh\\\\easycloud\\\\332174685636661248\\\\协同项目\\\\分析\\\\11-28会议纪要.docx\"\r\n // }\r\n analyzeSystemPath: safeCall(async (systemFullpath) => {\r\n const response = await requestBySocket(io('getFolderFileInfo'), systemFullpath);\r\n try {\r\n const obj = JSON.parse(response.data);\r\n const uploadTasks = Object.values(obj).map((data) => {\r\n const { name: extensionedFileName, extension: dotExtension, relativePath, absolutePath } = data;\r\n const extension = dotExtension.indexOf('.') === 0 ? dotExtension.slice(1) : dotExtension;\r\n const fileName = extensionedFileName.slice(0, -dotExtension.length);\r\n return {\r\n fileName,\r\n extension,\r\n relativePath: relativePath.replace(/(\\\\)+/g, '/'),\r\n fullPath: absolutePath,\r\n };\r\n });\r\n return uploadTasks;\r\n } catch(e) {\r\n return [];\r\n }\r\n }),\r\n // 选择文件\r\n chooseFiles: safeCall(async () => {\r\n const { ipcRenderer } = global.electron;\r\n const res = await ipcRenderer.invoke('project-choose-files');\r\n const { canceled, filePaths } = res;\r\n if(canceled) return null;\r\n return filePaths;\r\n }),\r\n // 选择文件\r\n chooseFolders: safeCall(async () => {\r\n const { ipcRenderer } = global.electron;\r\n const res = await ipcRenderer.invoke('project-choose-folders');\r\n const { canceled, filePaths } = res;\r\n if(canceled) return null;\r\n return filePaths;\r\n }),\r\n /**\r\n * 上传文件到工作空间\r\n * 程序步骤:\r\n * + 用户选择本地文件/文件夹\r\n * + 文件上传至本地ipfs节点\r\n * + 将文件的ipfsCid连同文件信息发送到远端服务器\r\n * @param {params.projectId} 项目Id\r\n * @param {params.projectName} 项目名称\r\n * @param {params.folderId} 节点文件夹Id\r\n * @param {params.folderName} 节点文件夹Id\r\n * @param {params.folderLevelId} 节点文件夹levelId\r\n * @param {params.distFileRelativePath} 节点文件夹下的相对路径, 直接在节点文件夹下则为空, 用正斜杠\r\n * @param {params.sourceFilePath} 上传文件的完整路径\r\n * @param {params.fileName} 上传文件名\r\n * @param {params.fileExtension} 上传文件名\r\n * @param {params.fileList} 用于对比文件名是否重复的文件队列\r\n * @param {params.onSuccessHandler} 完成上传时的回调\r\n * @param {params.onProgressHandler} 上传进度反馈的回调\r\n * @param {params.onErrorHandler} 上传失败的回调\r\n */\r\n uploadFile: safeCall(async (params) => {\r\n const {\r\n projectId, projectName,\r\n folderId, folderName, folderLevelId, distFileRelativePath = '',\r\n fileName, fileExtension, sourceFilePath,\r\n fileList, onSuccess: onSuccessHandler, onProgress: onProgressHandler = identity, onError: onErrorHandler = identity\r\n } = params;\r\n const extensionedFileName = fileExtension ? `${fileName}.${fileExtension}`: fileName;\r\n const distFilePath = `${folderName}${distFileRelativePath ? `/${distFileRelativePath}`: ''}`;\r\n const maybeFile = fileList.find(iFile => distFileRelativePath === iFile.relativePath && `${iFile.archName}${iFile.extension ? `.${iFile.extension}` : ''}` === extensionedFileName);\r\n // 检测当前工作目录中是否存在同名文件\r\n // 考虑到需要批量的环境使用,把这块的逻辑移到页面去实现\r\n // if(maybeFile) {\r\n // let confirmRes = false;\r\n // try {\r\n // await Vue.prototype.$confirm('监测到文件夹存在同名文件,是否继续上传并覆盖同名文件?');\r\n // confirmRes = true;\r\n // } catch(e) { console.log('user canceled'); }\r\n // if(!confirmRes) return;\r\n // }\r\n \r\n const uploadFile = maybeFile\r\n ? firstCharToUpperCase({ ...maybeFile, ModifyUserId: sessionStorage.userId })\r\n : {\r\n // 文件名称 不带扩展名\r\n ArchName: fileName,\r\n // CommonStatus: 0,\r\n // CreateTime: \"string\",\r\n // 文件上传者Id\r\n CreateUserId: sessionStorage.userId,\r\n // Deleted: 0,\r\n Extension: fileExtension,\r\n // 文件大小 单位?\r\n // FileSize: +size,\r\n // 所处文件夹id\r\n FolderId: folderId,\r\n // 所处文件夹层级,拼接符:_\r\n FolderLevelId: folderLevelId,\r\n Id: `upload:${`${Math.random()}`.slice(2, 8)}`,\r\n // IpfsCid: hash,\r\n // IsShowRecycle: 0,\r\n // Milestone: 0,\r\n // ModifyTime: \"string\",\r\n // ModifyUserId: 0,\r\n // 项目id\r\n ProjId: projectId,\r\n RelativePath: distFileRelativePath,\r\n // ShowUrl: \"string\",\r\n Status: 2,\r\n Version: 1,\r\n // WorkStatus: 0\r\n };\r\n \r\n // 预写一条上传信息给页面\r\n onProgressHandler({ process: 0 }, uploadFile);\r\n \r\n const uploadTask = () => {\r\n const resolveError = (...args) => {\r\n uploadingQueue = uploadingQueue.filter(iTask => iTask !== uploadTask);\r\n if(uploadQueue.length) {\r\n const nextTask = uploadQueue.shift();\r\n uploadingQueue.push(nextTask);\r\n nextTask();\r\n }\r\n onErrorHandler(...args);\r\n }\r\n const resolveSuccess = (...args) => {\r\n uploadingQueue = uploadingQueue.filter(iTask => iTask !== uploadTask);\r\n if(uploadQueue.length) {\r\n const nextTask = uploadQueue.shift();\r\n uploadingQueue.push(nextTask);\r\n nextTask();\r\n }\r\n onSuccessHandler(...args);\r\n }\r\n const socket = io('upload');\r\n socket.on('open', () => {\r\n const data = [sourceFilePath, extensionedFileName, projectName, distFilePath.replace(/\\//g, '\\\\')].join('|');\r\n socket.send(data);\r\n onProgressHandler({ process: 0 }, uploadFile);\r\n });\r\n\r\n socket.on('message', async (e) => {\r\n // console.log('receive download file message:', e);\r\n if(e.data === '-1') {\r\n notify.error('文件上传失败');\r\n resolveError(e, uploadFile);\r\n return;\r\n }\r\n if(e.data === '-2') {\r\n notify.error('请先关闭本地文件后再上传');\r\n resolveError(e, uploadFile);\r\n return;\r\n }\r\n try {\r\n const progressData = JSON.parse(e.data);\r\n const { size, process, hash } = progressData;\r\n onProgressHandler(progressData, uploadFile);\r\n if(process !== 100 || !hash) return;\r\n socket.close();\r\n // {\"size\":\"88.69\",\"currentSize\":\"88.69\",\"unit\":\"KiB\",\"process\":100,\"hash\":\"\"}\r\n // {\"size\":\"\",\"currentSize\":\"\",\"unit\":\"\",\"process\":100,\"hash\":\"QmPJ9i4z5UdoQpLH1DrkhZiTZra2rGicXiPabiLw4LvTmX\"}\r\n uploadFile.FileSize = +size;\r\n uploadFile.IpfsCid = hash;\r\n if(!maybeFile) {\r\n delete uploadFile.Id;\r\n }\r\n const res = await fetchApi(`file/${maybeFile ? 'updateFile' : 'addFile'}`, uploadFile);\r\n wrapErrorHint(res);\r\n if(res.Code !== 0) {\r\n resolveError(res, uploadFile);\r\n return;\r\n }\r\n //notify.success(maybeFile ? '上传成功, 已覆盖同名文件' : '上传成功');\r\n notify.success('文件已上传。')\r\n resolveSuccess(uploadFile);\r\n } catch (e) {\r\n console.error('socket-upload-file parse data have error:', e);\r\n resolveError(e, uploadFile);\r\n }\r\n });\r\n socket.on('error', e => {\r\n onErrorHandler(e, uploadFile);\r\n });\r\n }\r\n\r\n // 处理任务单元\r\n if(uploadingQueue.length >= MAX_UPLOAD_ENQUEUE) {\r\n uploadQueue.push(uploadTask);\r\n } else {\r\n uploadingQueue.push(uploadTask);\r\n uploadTask();\r\n }\r\n }),\r\n /**\r\n * 上传文件到工作空间\r\n * 程序步骤:\r\n * + 用户选择本地文件/文件夹\r\n * + 文件上传至本地ipfs节点\r\n * + 将文件的ipfsCid连同文件信息发送到远端服务器\r\n */\r\n // uploadFileOld: safeCall(async (projectId, projectName, folderId, folderName, levelId, fileList, onSuccessHandler, onProgressHandler = identity, onErrorHandler = identity) => {\r\n // const { ipcRenderer } = global.electron;\r\n // const res = await ipcRenderer.invoke('project-upload-file');\r\n // console.log('ipcRenderer project-selected-upload-file: ', res);\r\n // const { canceled, filePaths } = res;\r\n // if(canceled) return;\r\n // const filePath = filePaths[0];\r\n // const extensionedFileName = filePath.split(/\\/|\\\\/g).pop();\r\n\r\n // const tempFilePaths = extensionedFileName.split('.');\r\n // const extension = tempFilePaths.length > 1 ? tempFilePaths.pop() : '';\r\n // const fileName = tempFilePaths.join('.');\r\n\r\n // const maybeFile = fileList.find(iFile => `${iFile.archName}${iFile.extension ? `.${iFile.extension}` : ''}` === extensionedFileName);\r\n // // 检测当前工作目录中是否存在同名文件\r\n // if(maybeFile) {\r\n // let confirmRes = false;\r\n // try {\r\n // await Vue.prototype.$confirm('监测到文件夹存在同名文件,是否继续上传并覆盖同名文件?');\r\n // confirmRes = true;\r\n // } catch(e) { console.log('user canceled'); }\r\n // if(!confirmRes) return;\r\n // }\r\n \r\n // const uploadFile = maybeFile\r\n // ? firstCharToUpperCase({ ...maybeFile, ModifyUserId: sessionStorage.userId })\r\n // : {\r\n // // 文件名称 不带扩展名\r\n // ArchName: fileName,\r\n // // CommonStatus: 0,\r\n // // CreateTime: \"string\",\r\n // // 文件上传者Id\r\n // CreateUserId: sessionStorage.userId,\r\n // // Deleted: 0,\r\n // Extension: extension,\r\n // // 文件大小 单位?\r\n // // FileSize: +size,\r\n // // 所处文件夹id\r\n // FolderId: folderId,\r\n // // 所处文件夹层级,拼接符:_\r\n // FolderLevelId: levelId,\r\n // Id: `upload:${`${Math.random()}`.slice(2, 8)}`,\r\n // // IpfsCid: hash,\r\n // // IsShowRecycle: 0,\r\n // // Milestone: 0,\r\n // // ModifyTime: \"string\",\r\n // // ModifyUserId: 0,\r\n // // 项目id\r\n // ProjId: projectId,\r\n // // ShowUrl: \"string\",\r\n // Status: 2,\r\n // Version: 1,\r\n // // WorkStatus: 0\r\n // };\r\n\r\n // const socket = io('upload');\r\n // socket.on('open', () => {\r\n // const data = [filePath, extensionedFileName, projectName, folderName].join('|');\r\n // socket.send(data);\r\n // onProgressHandler({ process: 0 }, uploadFile);\r\n // });\r\n\r\n // socket.on('message', async (e) => {\r\n // console.log('receive download file message:', e);\r\n // if(e.data === '-1') {\r\n // notify.error('文件上传失败,请检查网络。');\r\n // onErrorHandler(e, uploadFile);\r\n // return;\r\n // }\r\n // if(e.data === '-2') {\r\n // notify.error('请先关闭本地文件后再上传');\r\n // onErrorHandler(e, uploadFile);\r\n // return;\r\n // }\r\n // try {\r\n // const progressData = JSON.parse(e.data);\r\n // const { size, process, hash } = progressData;\r\n // onProgressHandler(progressData, uploadFile);\r\n // if(process !== 100 || !hash) return;\r\n // socket.close();\r\n // // {\"size\":\"88.69\",\"currentSize\":\"88.69\",\"unit\":\"KiB\",\"process\":100,\"hash\":\"\"}\r\n // // {\"size\":\"\",\"currentSize\":\"\",\"unit\":\"\",\"process\":100,\"hash\":\"QmPJ9i4z5UdoQpLH1DrkhZiTZra2rGicXiPabiLw4LvTmX\"}\r\n // // const maybeFile = fileList.find(iFile => `${iFile.archName}${iFile.extension ? `.${iFile.extension}` : ''}` === extensionedFileName);\r\n // uploadFile.FileSize = +size;\r\n // uploadFile.IpfsCid = hash;\r\n // if(!maybeFile) {\r\n // delete uploadFile.Id;\r\n // }\r\n // const res = await fetchApi(`file/${maybeFile ? 'updateFile' : 'addFile'}`, uploadFile);\r\n // wrapErrorHint(res);\r\n // if(res.Code !== 0) return;\r\n // //notify.success(maybeFile ? '上传成功, 已覆盖同名文件' : '上传成功');\r\n // notify.success('文件已上传。')\r\n // onSuccessHandler(uploadFile);\r\n // } catch (e) {\r\n // console.error('socket-upload-file parse data have error:', e);\r\n // onErrorHandler(e, uploadFile);\r\n // }\r\n // });\r\n // socket.on('error', e => {\r\n // onErrorHandler(e, uploadFile);\r\n // });\r\n // }),\r\n /**\r\n * 更新本地文件\r\n */\r\n updateFile: safeCall((file, localFilePathPrefix, projectName, relativePath, onSuccessHandler, onProgressHandler = identity, onErrorHandler = identity) => {\r\n const socket = io('upload');\r\n const { archName, extension, id: fileId } = file;\r\n const extensionedFileName = `${archName}${extension ? `.${extension}` : ''}`;\r\n const filePath = `${localFilePathPrefix}\\\\${relativePath}\\\\${extensionedFileName}`;\r\n socket.on('open', () => {\r\n const data = [filePath, extensionedFileName, projectName, relativePath].join('|');\r\n socket.send(data);\r\n });\r\n socket.on('message', async (e) => {\r\n if(e.data === '-1') {\r\n notify.error('文件上传失败');\r\n onErrorHandler(e);\r\n return;\r\n }\r\n if(e.data === '-2') {\r\n notify.error('请先关闭本地文件后再上传');\r\n onErrorHandler(e);\r\n return;\r\n }\r\n try {\r\n const progressData = JSON.parse(e.data);\r\n const { size, process, hash } = progressData;\r\n onProgressHandler(progressData);\r\n if(process !== 100 || !hash) return;\r\n socket.close();\r\n const copyFile = firstCharToUpperCase({ ...file, ipfsCid: hash, size: +size, ModifyUserId: sessionStorage.userId });\r\n\r\n const res = await fetchApi('file/updateFile', copyFile);\r\n wrapErrorHint(res);\r\n // if(res.Code === 0) { notify.success(`${archName} 更新成功`); }\r\n onSuccessHandler(copyFile);\r\n return;\r\n } catch(err) {\r\n console.error('socket-update-file parse data have error:', e);\r\n // todo 上传失败\r\n }\r\n });\r\n socket.on('error', e => {\r\n onErrorHandler(e, file);\r\n });\r\n }),\r\n /**\r\n * 系统打开文件\r\n */\r\n openFile: safeCall((filePath) => {\r\n const { shell } = global.electron;\r\n shell.openPath(filePath);\r\n }),\r\n /**\r\n * 系统打开文件目录\r\n */\r\n openFolder: safeCall((filePath) => {\r\n const { shell } = global.electron;\r\n shell.showItemInFolder(filePath);\r\n }),\r\n}\r\n\r\nexport default system;\r\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n if (\n (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n ) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return nativeReplace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n"],"sourceRoot":""}
\ No newline at end of file
diff --git a/static/js/chunk-5acb4ad4.b7c50bb4.js b/static/js/chunk-5acb4ad4.b7c50bb4.js
new file mode 100644
index 00000000..b14c0cc0
--- /dev/null
+++ b/static/js/chunk-5acb4ad4.b7c50bb4.js
@@ -0,0 +1,2 @@
+(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-5acb4ad4"],{"07ac":function(e,n,r){var t=r("23e7"),a=r("6f53").values;t({target:"Object",stat:!0},{values:function(e){return a(e)}})},"1d40":function(e,n,r){"use strict";(function(e){r("99af"),r("4de4"),r("7db0"),r("c975"),r("a15b"),r("d81d"),r("fb6a"),r("b0c0"),r("d3b7"),r("07ac"),r("ac1f"),r("5319");var t=r("5530"),a=(r("96cf"),r("1da1")),o=r("b775"),c=r("3de1"),i=r("2ef0"),u=!!e.electron,s=5,l=5,d=[],f=[],p=[],v=[],h=function(){d=[],f=[],p=[],v=[]},b=function(){},g=function(e){var n=new WebSocket("ws://127.0.0.1:7777/".concat(e));return n.on=n.addEventListener,n},m=function(e,n){return new Promise((function(r,t){e.on("open",(function(){e.send(n)})),e.on("message",(function(n){r(n),e.close()})),e.on("error",(function(e){return t(e)}))}))},x=function(e){return u?e:b},j={isClient:u,init:x((function(){console.log("客户端 electron API 检测:",e.electron)})),login:function(){},logout:function(){},entryProject:x((function(e,n,r,t){var a=arguments.length>4&&void 0!==arguments[4]?arguments[4]:i["identity"];m(g("init"),[n,e].join("|")).then((function(e){return t(e.data)}));var o=g("subscriptionFileChange");return o.on("open",(function(){o.send(e)})),o.on("message",r),o.on("error",a),o})),leaveProject:x((function(e){e.close(),h()})),downloadFile:x((function(e,n,r,t,a){var o=arguments.length>5&&void 0!==arguments[5]?arguments[5]:i["identity"],u=function i(){var u=g("download");u.on("open",(function(){u.send([e,n,r,t].join("|"))})),u.on("message",(function(e){return"-1"===e.data?(c["d"].error("文件下载失败,请检查网络。"),void o(e)):"-2"===e.data?(c["d"].error("请先关闭本地文件后再下载"),void o(e)):void a(e,u)})),u.on("error",(function(e){o(e)})),u.on("close",(function(){if(p=p.filter((function(e){return e!==i})),v.length){var e=v.shift();p.push(e),e()}}))};p.length>=l?v.push(u):(p.push(u),u())})),analyzeSystemPath:x(function(){var e=Object(a["a"])(regeneratorRuntime.mark((function e(n){var r,t,a;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.next=2,m(g("getFolderFileInfo"),n);case 2:return r=e.sent,e.prev=3,t=JSON.parse(r.data),a=Object.values(t).map((function(e){var n=e.name,r=e.extension,t=e.relativePath,a=e.absolutePath,o=0===r.indexOf(".")?r.slice(1):r,c=n.slice(0,-r.length);return{fileName:c,extension:o,relativePath:t.replace(/(\\)+/g,"/"),fullPath:a}})),e.abrupt("return",a);case 9:return e.prev=9,e.t0=e["catch"](3),e.abrupt("return",[]);case 12:case"end":return e.stop()}}),e,null,[[3,9]])})));return function(n){return e.apply(this,arguments)}}()),chooseFiles:x(Object(a["a"])(regeneratorRuntime.mark((function n(){var r,t,a,o;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return r=e.electron.ipcRenderer,n.next=3,r.invoke("project-choose-files");case 3:if(t=n.sent,a=t.canceled,o=t.filePaths,!a){n.next=7;break}return n.abrupt("return",null);case 7:return n.abrupt("return",o);case 8:case"end":return n.stop()}}),n)})))),chooseFolders:x(Object(a["a"])(regeneratorRuntime.mark((function n(){var r,t,a,o;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return r=e.electron.ipcRenderer,n.next=3,r.invoke("project-choose-folders");case 3:if(t=n.sent,a=t.canceled,o=t.filePaths,!a){n.next=7;break}return n.abrupt("return",null);case 7:return n.abrupt("return",o);case 8:case"end":return n.stop()}}),n)})))),uploadFile:x(function(){var e=Object(a["a"])(regeneratorRuntime.mark((function e(n){var r,u,l,p,v,h,b,m,x,j,w,k,O,I,P,S,y,F,R,E,N;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:r=n.projectId,u=n.projectName,l=n.folderId,p=n.folderName,v=n.folderLevelId,h=n.distFileRelativePath,b=void 0===h?"":h,m=n.fileName,x=n.fileExtension,j=n.sourceFilePath,w=n.fileList,k=n.onSuccess,O=n.onProgress,I=void 0===O?i["identity"]:O,P=n.onError,S=void 0===P?i["identity"]:P,y=x?"".concat(m,".").concat(x):m,F="".concat(p).concat(b?"/".concat(b):""),R=w.find((function(e){return b===e.relativePath&&"".concat(e.archName).concat(e.extension?".".concat(e.extension):"")===y})),E=R?Object(c["c"])(Object(t["a"])(Object(t["a"])({},R),{},{ModifyUserId:sessionStorage.userId})):{ArchName:m,CreateUserId:sessionStorage.userId,Extension:x,FolderId:l,FolderLevelId:v,Id:"upload:".concat("".concat(Math.random()).slice(2,8)),ProjId:r,RelativePath:b,Status:2,Version:1},I({process:0},E),N=function e(){var n=function(){if(d=d.filter((function(n){return n!==e})),f.length){var n=f.shift();d.push(n),n()}S.apply(void 0,arguments)},r=function(){if(d=d.filter((function(n){return n!==e})),f.length){var n=f.shift();d.push(n),n()}k.apply(void 0,arguments)},i=g("upload");i.on("open",(function(){var e=[j,y,u,F.replace(/\//g,"\\")].join("|");i.send(e),I({process:0},E)})),i.on("message",function(){var e=Object(a["a"])(regeneratorRuntime.mark((function e(a){var u,s,l,d,f,p;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:if("-1"!==a.data){e.next=4;break}return c["d"].error("文件上传失败"),n(a,E),e.abrupt("return");case 4:if("-2"!==a.data){e.next=8;break}return c["d"].error("请先关闭本地文件后再上传"),n(a,E),e.abrupt("return");case 8:if(e.prev=8,u=JSON.parse(a.data),s=u.size,l=u.process,d=u.hash,I(u,E),100===l&&d){e.next=14;break}return e.abrupt("return");case 14:return i.close(),E.FileSize=+s,E.IpfsCid=d,f=Object(t["a"])({},E),R||delete f.Id,e.next=21,Object(o["b"])("file/".concat(R?"updateFile":"addFile"),f);case 21:if(p=e.sent,Object(o["c"])(p),0===p.Code){e.next=26;break}return n(p,E),e.abrupt("return");case 26:c["d"].success("文件已上传。"),r(E),e.next=34;break;case 30:e.prev=30,e.t0=e["catch"](8),console.error("socket-upload-file parse data have error:",e.t0),n(e.t0,E);case 34:case"end":return e.stop()}}),e,null,[[8,30]])})));return function(n){return e.apply(this,arguments)}}()),i.on("error",(function(e){n(e,E)}))},d.length>=s?f.push(N):(d.push(N),N());case 8:case"end":return e.stop()}}),e)})));return function(n){return e.apply(this,arguments)}}()),updateFile:x((function(e,n,r,u,s){var l=arguments.length>5&&void 0!==arguments[5]?arguments[5]:i["identity"],d=arguments.length>6&&void 0!==arguments[6]?arguments[6]:i["identity"],f=g("upload"),p=e.archName,v=e.extension,h=(e.id,"".concat(p).concat(v?".".concat(v):"")),b="".concat(n,"\\").concat(u,"\\").concat(h);f.on("open",(function(){var e=[b,h,r,u].join("|");f.send(e)})),f.on("message",function(){var n=Object(a["a"])(regeneratorRuntime.mark((function n(r){var a,i,u,p,v,h;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:if("-1"!==r.data){n.next=4;break}return c["d"].error("文件上传失败"),d(r),n.abrupt("return");case 4:if("-2"!==r.data){n.next=8;break}return c["d"].error("请先关闭本地文件后再上传"),d(r),n.abrupt("return");case 8:if(n.prev=8,a=JSON.parse(r.data),i=a.size,u=a.process,p=a.hash,l(a),100===u&&p){n.next=14;break}return n.abrupt("return");case 14:return f.close(),v=Object(c["c"])(Object(t["a"])(Object(t["a"])({},e),{},{ipfsCid:p,size:+i,ModifyUserId:sessionStorage.userId})),n.next=18,Object(o["b"])("file/updateFile",v);case 18:return h=n.sent,Object(o["c"])(h),s(v),n.abrupt("return");case 24:n.prev=24,n.t0=n["catch"](8),console.error("socket-update-file parse data have error:",r);case 27:case"end":return n.stop()}}),n,null,[[8,24]])})));return function(e){return n.apply(this,arguments)}}()),f.on("error",(function(n){d(n,e)}))})),openFile:x((function(n){var r=e.electron.shell;r.openPath(n)})),openFolder:x((function(n){var r=e.electron.shell;r.showItemInFolder(n)}))};n["a"]=j}).call(this,r("c8ba"))},5319:function(e,n,r){"use strict";var t=r("d784"),a=r("825a"),o=r("7b0b"),c=r("50c4"),i=r("a691"),u=r("1d80"),s=r("8aa5"),l=r("14c3"),d=Math.max,f=Math.min,p=Math.floor,v=/\$([$&'`]|\d\d?|<[^>]*>)/g,h=/\$([$&'`]|\d\d?)/g,b=function(e){return void 0===e?e:String(e)};t("replace",2,(function(e,n,r,t){var g=t.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE,m=t.REPLACE_KEEPS_$0,x=g?"$":"$0";return[function(r,t){var a=u(this),o=void 0==r?void 0:r[e];return void 0!==o?o.call(r,a,t):n.call(String(a),r,t)},function(e,t){if(!g&&m||"string"===typeof t&&-1===t.indexOf(x)){var o=r(n,e,this,t);if(o.done)return o.value}var u=a(e),p=String(this),v="function"===typeof t;v||(t=String(t));var h=u.global;if(h){var w=u.unicode;u.lastIndex=0}var k=[];while(1){var O=l(u,p);if(null===O)break;if(k.push(O),!h)break;var I=String(O[0]);""===I&&(u.lastIndex=s(p,c(u.lastIndex),w))}for(var P="",S=0,y=0;y=S&&(P+=p.slice(S,R)+$,S=R+F.length)}return P+p.slice(S)}];function j(e,r,t,a,c,i){var u=t+e.length,s=a.length,l=h;return void 0!==c&&(c=o(c),l=v),n.call(i,l,(function(n,o){var i;switch(o.charAt(0)){case"$":return"$";case"&":return e;case"`":return r.slice(0,t);case"'":return r.slice(u);case"<":i=c[o.slice(1,-1)];break;default:var l=+o;if(0===l)return n;if(l>s){var d=p(l/10);return 0===d?n:d<=s?void 0===a[d-1]?o.charAt(1):a[d-1]+o.charAt(1):n}i=a[l-1]}return void 0===i?"":i}))}}))},a15b:function(e,n,r){"use strict";var t=r("23e7"),a=r("44ad"),o=r("fc6a"),c=r("a640"),i=[].join,u=a!=Object,s=c("join",",");t({target:"Array",proto:!0,forced:u||!s},{join:function(e){return i.call(o(this),void 0===e?",":e)}})}}]);
+//# sourceMappingURL=chunk-5acb4ad4.b7c50bb4.js.map
\ No newline at end of file
diff --git a/static/js/chunk-5acb4ad4.b7c50bb4.js.map b/static/js/chunk-5acb4ad4.b7c50bb4.js.map
new file mode 100644
index 00000000..ad8c0795
--- /dev/null
+++ b/static/js/chunk-5acb4ad4.b7c50bb4.js.map
@@ -0,0 +1 @@
+{"version":3,"sources":["webpack:///./node_modules/core-js/modules/es.object.values.js","webpack:///./src/services/system.js","webpack:///./node_modules/core-js/modules/es.string.replace.js","webpack:///./node_modules/core-js/modules/es.array.join.js"],"names":["$","$values","values","target","stat","O","isClient","global","electron","MAX_UPLOAD_ENQUEUE","MAX_DOWNLOAD_ENQUEUE","uploadingQueue","uploadQueue","downloadingQueue","downloadQueue","clearTaskQueue","noop","io","path","sk","WebSocket","on","addEventListener","requestBySocket","socketIns","message","Promise","resolve","reject","send","e","close","safeCall","f","system","init","console","log","login","logout","entryProject","projName","userId","fileChangeHandler","initHandler","errorHandler","identity","join","then","response","data","watchSocket","leaveProject","downloadFile","fileIpfsId","projectName","fileName","dirName","onProcessHandler","onErrorHandler","downloadTask","socket","notify","error","filter","iTask","length","nextTask","shift","push","analyzeSystemPath","systemFullpath","obj","JSON","parse","uploadTasks","Object","map","extensionedFileName","name","dotExtension","extension","relativePath","absolutePath","indexOf","slice","replace","fullPath","chooseFiles","ipcRenderer","invoke","res","canceled","filePaths","chooseFolders","uploadFile","params","projectId","folderId","folderName","folderLevelId","distFileRelativePath","fileExtension","sourceFilePath","fileList","onSuccessHandler","onSuccess","onProgress","onProgressHandler","onError","distFilePath","maybeFile","find","iFile","archName","firstCharToUpperCase","ModifyUserId","sessionStorage","ArchName","CreateUserId","Extension","FolderId","FolderLevelId","Id","Math","random","ProjId","RelativePath","Status","Version","process","uploadTask","resolveError","resolveSuccess","progressData","size","hash","FileSize","IpfsCid","copyUploadFile","fetchApi","wrapErrorHint","Code","success","updateFile","file","localFilePathPrefix","id","filePath","copyFile","ipfsCid","openFile","shell","openPath","openFolder","showItemInFolder","fixRegExpWellKnownSymbolLogic","anObject","toObject","toLength","toInteger","requireObjectCoercible","advanceStringIndex","regExpExec","max","min","floor","SUBSTITUTION_SYMBOLS","SUBSTITUTION_SYMBOLS_NO_NAMED","maybeToString","it","undefined","String","REPLACE","nativeReplace","maybeCallNative","reason","REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE","REPLACE_KEEPS_$0","UNSAFE_SUBSTITUTE","searchValue","replaceValue","this","replacer","call","regexp","done","value","rx","S","functionalReplace","fullUnicode","unicode","lastIndex","results","result","matchStr","accumulatedResult","nextSourcePosition","i","matched","position","index","captures","j","namedCaptures","groups","replacerArgs","concat","replacement","apply","getSubstitution","str","tailPos","m","symbols","match","ch","capture","charAt","n","IndexedObject","toIndexedObject","arrayMethodIsStrict","nativeJoin","ES3_STRINGS","STRICT_METHOD","proto","forced","separator"],"mappings":"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","file":"static/js/chunk-5acb4ad4.b7c50bb4.js","sourcesContent":["var $ = require('../internals/export');\nvar $values = require('../internals/object-to-array').values;\n\n// `Object.values` method\n// https://tc39.github.io/ecma262/#sec-object.values\n$({ target: 'Object', stat: true }, {\n values: function values(O) {\n return $values(O);\n }\n});\n","/**\r\n * 模拟客户端back server\r\n * 目前还不知道back的API及具体实现,暂时先抑制代码报错\r\n */\r\nimport { fetchApi, wrapErrorHint } from '@/utils/request';\r\nimport { notify, firstCharToUpperCase } from '@/utils/tool';\r\nimport { identity } from 'lodash';\r\nimport Vue from 'vue';\r\n\r\nexport const isClient = !!global.electron; // process.env.IS_CLIENT;\r\n\r\nconst MAX_UPLOAD_ENQUEUE = 5;\r\nconst MAX_DOWNLOAD_ENQUEUE = 5;\r\nlet uploadingQueue = [];\r\nlet uploadQueue = [];\r\nlet downloadingQueue = [];\r\nlet downloadQueue = [];\r\n\r\nconst clearTaskQueue = () => {\r\n uploadingQueue = [];\r\n uploadQueue = [];\r\n downloadingQueue = [];\r\n downloadQueue = [];\r\n}\r\n\r\nlet socket;\r\nconst noop = () => {};\r\n\r\nconst io = (path) => {\r\n const sk = new WebSocket(`ws://127.0.0.1:7777/${path}`);\r\n sk.on = sk.addEventListener;\r\n return sk;\r\n}\r\n\r\nconst requestBySocket = (socketIns, message) => new Promise((resolve, reject) => {\r\n socketIns.on('open', () => { socketIns.send(message); });\r\n socketIns.on('message', e => {resolve(e);socketIns.close();});\r\n socketIns.on('error', e => reject(e));\r\n});\r\n\r\n\r\nconst safeCall = f => isClient ? f : noop;\r\nconst safeSocket = f => (...args) => socket && f(...args);\r\n\r\nconst system = {\r\n isClient,\r\n init: safeCall(() => {\r\n console.log('客户端 electron API 检测:', global.electron);\r\n }),\r\n \r\n // initialSocket: () => {\r\n // socket = io('ws://10.240.5.17:8000');\r\n // // socket = io('ws://127.0.0.1:3000');\r\n // debugger;\r\n // socket.on('connect', () => { console.log('本地socket服务连接成功') });\r\n // },\r\n /**\r\n * todo\r\n * 通知登录 \r\n */\r\n login: () => {\r\n\r\n },\r\n /**\r\n * todo\r\n * 通知登出\r\n */\r\n logout: () => {\r\n\r\n },\r\n /**\r\n * 通知系统进入当前的工作空间\r\n */\r\n entryProject: safeCall((projName, userId, fileChangeHandler, initHandler, errorHandler = identity) => {\r\n requestBySocket(io('init'), [userId, projName].join('|'))\r\n .then(response => initHandler(response.data));\r\n const watchSocket = io('subscriptionFileChange');\r\n watchSocket.on('open', () => {\r\n watchSocket.send(projName);\r\n });\r\n watchSocket.on('message', fileChangeHandler);\r\n watchSocket.on('error', errorHandler);\r\n return watchSocket;\r\n }),\r\n /**\r\n * todo\r\n * 离开工作空间时注销socket\r\n */\r\n leaveProject: safeCall((watchSocket) => {\r\n watchSocket.close();\r\n clearTaskQueue();\r\n }),\r\n /**\r\n * 下载文件到工作空间\r\n */\r\n downloadFile: safeCall((fileIpfsId, projectName, fileName, dirName, onProcessHandler, onErrorHandler = identity) => {\r\n\r\n const downloadTask = () => {\r\n const socket = io('download');\r\n socket.on('open', () => {\r\n socket.send([fileIpfsId, projectName, fileName, dirName].join('|'));\r\n });\r\n socket.on('message', (e) => {\r\n if(e.data === '-1') {\r\n notify.error('文件下载失败,请检查网络。');\r\n onErrorHandler(e);\r\n return;\r\n }\r\n if(e.data === '-2') {\r\n notify.error('请先关闭本地文件后再下载');\r\n onErrorHandler(e);\r\n return;\r\n }\r\n onProcessHandler(e, socket);\r\n });\r\n socket.on('error', e => {\r\n onErrorHandler(e);\r\n });\r\n\r\n socket.on('close', () => {\r\n downloadingQueue = downloadingQueue.filter(iTask => iTask !== downloadTask);\r\n if(downloadQueue.length) {\r\n const nextTask = downloadQueue.shift();\r\n downloadingQueue.push(nextTask);\r\n nextTask();\r\n }\r\n })\r\n }\r\n\r\n if(downloadingQueue.length >= MAX_DOWNLOAD_ENQUEUE) {\r\n downloadQueue.push(downloadTask);\r\n } else {\r\n downloadingQueue.push(downloadTask);\r\n downloadTask();\r\n }\r\n \r\n }),\r\n // 解析文件/文件夹路径信息\r\n // {\r\n // name: '11-28会议纪要.docx',\r\n // extension:\".docx\",\r\n // relativePath:\"协同项目\\\\分析\\\\11-28会议纪要.docx\",\r\n // absolutePath:\"C:\\\\Users\\\\yuan_rh\\\\easycloud\\\\332174685636661248\\\\协同项目\\\\分析\\\\11-28会议纪要.docx\"\r\n // }\r\n analyzeSystemPath: safeCall(async (systemFullpath) => {\r\n const response = await requestBySocket(io('getFolderFileInfo'), systemFullpath);\r\n try {\r\n const obj = JSON.parse(response.data);\r\n const uploadTasks = Object.values(obj).map((data) => {\r\n const { name: extensionedFileName, extension: dotExtension, relativePath, absolutePath } = data;\r\n const extension = dotExtension.indexOf('.') === 0 ? dotExtension.slice(1) : dotExtension;\r\n const fileName = extensionedFileName.slice(0, -dotExtension.length);\r\n return {\r\n fileName,\r\n extension,\r\n relativePath: relativePath.replace(/(\\\\)+/g, '/'),\r\n fullPath: absolutePath,\r\n };\r\n });\r\n return uploadTasks;\r\n } catch(e) {\r\n return [];\r\n }\r\n }),\r\n // 选择文件\r\n chooseFiles: safeCall(async () => {\r\n const { ipcRenderer } = global.electron;\r\n const res = await ipcRenderer.invoke('project-choose-files');\r\n const { canceled, filePaths } = res;\r\n if(canceled) return null;\r\n return filePaths;\r\n }),\r\n // 选择文件\r\n chooseFolders: safeCall(async () => {\r\n const { ipcRenderer } = global.electron;\r\n const res = await ipcRenderer.invoke('project-choose-folders');\r\n const { canceled, filePaths } = res;\r\n if(canceled) return null;\r\n return filePaths;\r\n }),\r\n /**\r\n * 上传文件到工作空间\r\n * 程序步骤:\r\n * + 用户选择本地文件/文件夹\r\n * + 文件上传至本地ipfs节点\r\n * + 将文件的ipfsCid连同文件信息发送到远端服务器\r\n * @param {params.projectId} 项目Id\r\n * @param {params.projectName} 项目名称\r\n * @param {params.folderId} 节点文件夹Id\r\n * @param {params.folderName} 节点文件夹Id\r\n * @param {params.folderLevelId} 节点文件夹levelId\r\n * @param {params.distFileRelativePath} 节点文件夹下的相对路径, 直接在节点文件夹下则为空, 用正斜杠\r\n * @param {params.sourceFilePath} 上传文件的完整路径\r\n * @param {params.fileName} 上传文件名\r\n * @param {params.fileExtension} 上传文件名\r\n * @param {params.fileList} 用于对比文件名是否重复的文件队列\r\n * @param {params.onSuccessHandler} 完成上传时的回调\r\n * @param {params.onProgressHandler} 上传进度反馈的回调\r\n * @param {params.onErrorHandler} 上传失败的回调\r\n */\r\n uploadFile: safeCall(async (params) => {\r\n const {\r\n projectId, projectName,\r\n folderId, folderName, folderLevelId, distFileRelativePath = '',\r\n fileName, fileExtension, sourceFilePath,\r\n fileList, onSuccess: onSuccessHandler, onProgress: onProgressHandler = identity, onError: onErrorHandler = identity\r\n } = params;\r\n const extensionedFileName = fileExtension ? `${fileName}.${fileExtension}`: fileName;\r\n const distFilePath = `${folderName}${distFileRelativePath ? `/${distFileRelativePath}`: ''}`;\r\n const maybeFile = fileList.find(iFile => distFileRelativePath === iFile.relativePath && `${iFile.archName}${iFile.extension ? `.${iFile.extension}` : ''}` === extensionedFileName);\r\n // 检测当前工作目录中是否存在同名文件\r\n // 考虑到需要批量的环境使用,把这块的逻辑移到页面去实现\r\n // if(maybeFile) {\r\n // let confirmRes = false;\r\n // try {\r\n // await Vue.prototype.$confirm('监测到文件夹存在同名文件,是否继续上传并覆盖同名文件?');\r\n // confirmRes = true;\r\n // } catch(e) { console.log('user canceled'); }\r\n // if(!confirmRes) return;\r\n // }\r\n \r\n const uploadFile = maybeFile\r\n ? firstCharToUpperCase({ ...maybeFile, ModifyUserId: sessionStorage.userId })\r\n : {\r\n // 文件名称 不带扩展名\r\n ArchName: fileName,\r\n // CommonStatus: 0,\r\n // CreateTime: \"string\",\r\n // 文件上传者Id\r\n CreateUserId: sessionStorage.userId,\r\n // Deleted: 0,\r\n Extension: fileExtension,\r\n // 文件大小 单位?\r\n // FileSize: +size,\r\n // 所处文件夹id\r\n FolderId: folderId,\r\n // 所处文件夹层级,拼接符:_\r\n FolderLevelId: folderLevelId,\r\n Id: `upload:${`${Math.random()}`.slice(2, 8)}`,\r\n // IpfsCid: hash,\r\n // IsShowRecycle: 0,\r\n // Milestone: 0,\r\n // ModifyTime: \"string\",\r\n // ModifyUserId: 0,\r\n // 项目id\r\n ProjId: projectId,\r\n RelativePath: distFileRelativePath,\r\n // ShowUrl: \"string\",\r\n Status: 2,\r\n Version: 1,\r\n // WorkStatus: 0\r\n };\r\n \r\n // 预写一条上传信息给页面\r\n onProgressHandler({ process: 0 }, uploadFile);\r\n \r\n const uploadTask = () => {\r\n const resolveError = (...args) => {\r\n uploadingQueue = uploadingQueue.filter(iTask => iTask !== uploadTask);\r\n if(uploadQueue.length) {\r\n const nextTask = uploadQueue.shift();\r\n uploadingQueue.push(nextTask);\r\n nextTask();\r\n }\r\n onErrorHandler(...args);\r\n }\r\n const resolveSuccess = (...args) => {\r\n uploadingQueue = uploadingQueue.filter(iTask => iTask !== uploadTask);\r\n if(uploadQueue.length) {\r\n const nextTask = uploadQueue.shift();\r\n uploadingQueue.push(nextTask);\r\n nextTask();\r\n }\r\n onSuccessHandler(...args);\r\n }\r\n const socket = io('upload');\r\n socket.on('open', () => {\r\n const data = [sourceFilePath, extensionedFileName, projectName, distFilePath.replace(/\\//g, '\\\\')].join('|');\r\n socket.send(data);\r\n onProgressHandler({ process: 0 }, uploadFile);\r\n });\r\n\r\n socket.on('message', async (e) => {\r\n // console.log('receive download file message:', e);\r\n if(e.data === '-1') {\r\n notify.error('文件上传失败');\r\n resolveError(e, uploadFile);\r\n return;\r\n }\r\n if(e.data === '-2') {\r\n notify.error('请先关闭本地文件后再上传');\r\n resolveError(e, uploadFile);\r\n return;\r\n }\r\n try {\r\n const progressData = JSON.parse(e.data);\r\n const { size, process, hash } = progressData;\r\n onProgressHandler(progressData, uploadFile);\r\n if(process !== 100 || !hash) return;\r\n socket.close();\r\n // {\"size\":\"88.69\",\"currentSize\":\"88.69\",\"unit\":\"KiB\",\"process\":100,\"hash\":\"\"}\r\n // {\"size\":\"\",\"currentSize\":\"\",\"unit\":\"\",\"process\":100,\"hash\":\"QmPJ9i4z5UdoQpLH1DrkhZiTZra2rGicXiPabiLw4LvTmX\"}\r\n uploadFile.FileSize = +size;\r\n uploadFile.IpfsCid = hash;\r\n const copyUploadFile = { ...uploadFile };\r\n if(!maybeFile) {\r\n delete copyUploadFile.Id;\r\n }\r\n const res = await fetchApi(`file/${maybeFile ? 'updateFile' : 'addFile'}`, copyUploadFile);\r\n wrapErrorHint(res);\r\n if(res.Code !== 0) {\r\n resolveError(res, uploadFile);\r\n return;\r\n }\r\n //notify.success(maybeFile ? '上传成功, 已覆盖同名文件' : '上传成功');\r\n notify.success('文件已上传。')\r\n resolveSuccess(uploadFile);\r\n } catch (e) {\r\n console.error('socket-upload-file parse data have error:', e);\r\n resolveError(e, uploadFile);\r\n }\r\n });\r\n socket.on('error', e => {\r\n resolveError(e, uploadFile);\r\n });\r\n }\r\n\r\n // 处理任务单元\r\n if(uploadingQueue.length >= MAX_UPLOAD_ENQUEUE) {\r\n uploadQueue.push(uploadTask);\r\n } else {\r\n uploadingQueue.push(uploadTask);\r\n uploadTask();\r\n }\r\n }),\r\n /**\r\n * 上传文件到工作空间\r\n * 程序步骤:\r\n * + 用户选择本地文件/文件夹\r\n * + 文件上传至本地ipfs节点\r\n * + 将文件的ipfsCid连同文件信息发送到远端服务器\r\n */\r\n // uploadFileOld: safeCall(async (projectId, projectName, folderId, folderName, levelId, fileList, onSuccessHandler, onProgressHandler = identity, onErrorHandler = identity) => {\r\n // const { ipcRenderer } = global.electron;\r\n // const res = await ipcRenderer.invoke('project-upload-file');\r\n // console.log('ipcRenderer project-selected-upload-file: ', res);\r\n // const { canceled, filePaths } = res;\r\n // if(canceled) return;\r\n // const filePath = filePaths[0];\r\n // const extensionedFileName = filePath.split(/\\/|\\\\/g).pop();\r\n\r\n // const tempFilePaths = extensionedFileName.split('.');\r\n // const extension = tempFilePaths.length > 1 ? tempFilePaths.pop() : '';\r\n // const fileName = tempFilePaths.join('.');\r\n\r\n // const maybeFile = fileList.find(iFile => `${iFile.archName}${iFile.extension ? `.${iFile.extension}` : ''}` === extensionedFileName);\r\n // // 检测当前工作目录中是否存在同名文件\r\n // if(maybeFile) {\r\n // let confirmRes = false;\r\n // try {\r\n // await Vue.prototype.$confirm('监测到文件夹存在同名文件,是否继续上传并覆盖同名文件?');\r\n // confirmRes = true;\r\n // } catch(e) { console.log('user canceled'); }\r\n // if(!confirmRes) return;\r\n // }\r\n \r\n // const uploadFile = maybeFile\r\n // ? firstCharToUpperCase({ ...maybeFile, ModifyUserId: sessionStorage.userId })\r\n // : {\r\n // // 文件名称 不带扩展名\r\n // ArchName: fileName,\r\n // // CommonStatus: 0,\r\n // // CreateTime: \"string\",\r\n // // 文件上传者Id\r\n // CreateUserId: sessionStorage.userId,\r\n // // Deleted: 0,\r\n // Extension: extension,\r\n // // 文件大小 单位?\r\n // // FileSize: +size,\r\n // // 所处文件夹id\r\n // FolderId: folderId,\r\n // // 所处文件夹层级,拼接符:_\r\n // FolderLevelId: levelId,\r\n // Id: `upload:${`${Math.random()}`.slice(2, 8)}`,\r\n // // IpfsCid: hash,\r\n // // IsShowRecycle: 0,\r\n // // Milestone: 0,\r\n // // ModifyTime: \"string\",\r\n // // ModifyUserId: 0,\r\n // // 项目id\r\n // ProjId: projectId,\r\n // // ShowUrl: \"string\",\r\n // Status: 2,\r\n // Version: 1,\r\n // // WorkStatus: 0\r\n // };\r\n\r\n // const socket = io('upload');\r\n // socket.on('open', () => {\r\n // const data = [filePath, extensionedFileName, projectName, folderName].join('|');\r\n // socket.send(data);\r\n // onProgressHandler({ process: 0 }, uploadFile);\r\n // });\r\n\r\n // socket.on('message', async (e) => {\r\n // console.log('receive download file message:', e);\r\n // if(e.data === '-1') {\r\n // notify.error('文件上传失败,请检查网络。');\r\n // onErrorHandler(e, uploadFile);\r\n // return;\r\n // }\r\n // if(e.data === '-2') {\r\n // notify.error('请先关闭本地文件后再上传');\r\n // onErrorHandler(e, uploadFile);\r\n // return;\r\n // }\r\n // try {\r\n // const progressData = JSON.parse(e.data);\r\n // const { size, process, hash } = progressData;\r\n // onProgressHandler(progressData, uploadFile);\r\n // if(process !== 100 || !hash) return;\r\n // socket.close();\r\n // // {\"size\":\"88.69\",\"currentSize\":\"88.69\",\"unit\":\"KiB\",\"process\":100,\"hash\":\"\"}\r\n // // {\"size\":\"\",\"currentSize\":\"\",\"unit\":\"\",\"process\":100,\"hash\":\"QmPJ9i4z5UdoQpLH1DrkhZiTZra2rGicXiPabiLw4LvTmX\"}\r\n // // const maybeFile = fileList.find(iFile => `${iFile.archName}${iFile.extension ? `.${iFile.extension}` : ''}` === extensionedFileName);\r\n // uploadFile.FileSize = +size;\r\n // uploadFile.IpfsCid = hash;\r\n // if(!maybeFile) {\r\n // delete uploadFile.Id;\r\n // }\r\n // const res = await fetchApi(`file/${maybeFile ? 'updateFile' : 'addFile'}`, uploadFile);\r\n // wrapErrorHint(res);\r\n // if(res.Code !== 0) return;\r\n // //notify.success(maybeFile ? '上传成功, 已覆盖同名文件' : '上传成功');\r\n // notify.success('文件已上传。')\r\n // onSuccessHandler(uploadFile);\r\n // } catch (e) {\r\n // console.error('socket-upload-file parse data have error:', e);\r\n // onErrorHandler(e, uploadFile);\r\n // }\r\n // });\r\n // socket.on('error', e => {\r\n // onErrorHandler(e, uploadFile);\r\n // });\r\n // }),\r\n /**\r\n * 更新本地文件\r\n */\r\n updateFile: safeCall((file, localFilePathPrefix, projectName, relativePath, onSuccessHandler, onProgressHandler = identity, onErrorHandler = identity) => {\r\n const socket = io('upload');\r\n const { archName, extension, id: fileId } = file;\r\n const extensionedFileName = `${archName}${extension ? `.${extension}` : ''}`;\r\n const filePath = `${localFilePathPrefix}\\\\${relativePath}\\\\${extensionedFileName}`;\r\n socket.on('open', () => {\r\n const data = [filePath, extensionedFileName, projectName, relativePath].join('|');\r\n socket.send(data);\r\n });\r\n socket.on('message', async (e) => {\r\n if(e.data === '-1') {\r\n notify.error('文件上传失败');\r\n onErrorHandler(e);\r\n return;\r\n }\r\n if(e.data === '-2') {\r\n notify.error('请先关闭本地文件后再上传');\r\n onErrorHandler(e);\r\n return;\r\n }\r\n try {\r\n const progressData = JSON.parse(e.data);\r\n const { size, process, hash } = progressData;\r\n onProgressHandler(progressData);\r\n if(process !== 100 || !hash) return;\r\n socket.close();\r\n const copyFile = firstCharToUpperCase({ ...file, ipfsCid: hash, size: +size, ModifyUserId: sessionStorage.userId });\r\n\r\n const res = await fetchApi('file/updateFile', copyFile);\r\n wrapErrorHint(res);\r\n // if(res.Code === 0) { notify.success(`${archName} 更新成功`); }\r\n onSuccessHandler(copyFile);\r\n return;\r\n } catch(err) {\r\n console.error('socket-update-file parse data have error:', e);\r\n // todo 上传失败\r\n }\r\n });\r\n socket.on('error', e => {\r\n onErrorHandler(e, file);\r\n });\r\n }),\r\n /**\r\n * 系统打开文件\r\n */\r\n openFile: safeCall((filePath) => {\r\n const { shell } = global.electron;\r\n shell.openPath(filePath);\r\n }),\r\n /**\r\n * 系统打开文件目录\r\n */\r\n openFolder: safeCall((filePath) => {\r\n const { shell } = global.electron;\r\n shell.showItemInFolder(filePath);\r\n }),\r\n}\r\n\r\nexport default system;\r\n","'use strict';\nvar fixRegExpWellKnownSymbolLogic = require('../internals/fix-regexp-well-known-symbol-logic');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar toInteger = require('../internals/to-integer');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\nvar advanceStringIndex = require('../internals/advance-string-index');\nvar regExpExec = require('../internals/regexp-exec-abstract');\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function (it) {\n return it === undefined ? it : String(it);\n};\n\n// @@replace logic\nfixRegExpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {\n var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;\n var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;\n var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';\n\n return [\n // `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined\n ? replacer.call(searchValue, O, replaceValue)\n : nativeReplace.call(String(O), searchValue, replaceValue);\n },\n // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n if (\n (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||\n (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)\n ) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n }\n\n var rx = anObject(regexp);\n var S = String(this);\n\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n\n var global = rx.global;\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n var results = [];\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n\n results.push(result);\n if (!global) break;\n\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = [];\n // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));\n var namedCaptures = result.groups;\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n return accumulatedResult + S.slice(nextSourcePosition);\n }\n ];\n\n // https://tc39.github.io/ecma262/#sec-getsubstitution\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n return nativeReplace.call(replacement, symbols, function (match, ch) {\n var capture;\n switch (ch.charAt(0)) {\n case '$': return '$';\n case '&': return matched;\n case '`': return str.slice(0, position);\n case \"'\": return str.slice(tailPos);\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n default: // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n capture = captures[n - 1];\n }\n return capture === undefined ? '' : capture;\n });\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IndexedObject = require('../internals/indexed-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar nativeJoin = [].join;\n\nvar ES3_STRINGS = IndexedObject != Object;\nvar STRICT_METHOD = arrayMethodIsStrict('join', ',');\n\n// `Array.prototype.join` method\n// https://tc39.github.io/ecma262/#sec-array.prototype.join\n$({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD }, {\n join: function join(separator) {\n return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);\n }\n});\n"],"sourceRoot":""}
\ No newline at end of file