diff --git a/nezha-fronted/src/assets/css/main.css b/nezha-fronted/src/assets/css/main.css index bf1f3331f..e5ef35ca2 100644 --- a/nezha-fronted/src/assets/css/main.css +++ b/nezha-fronted/src/assets/css/main.css @@ -222,6 +222,7 @@ html { text-align: center; } .right-box-top-btn { + text-align: center; border-radius: 0 0 9px 9px; float: right; color: #656565; diff --git a/nezha-fronted/src/components/common/header.vue b/nezha-fronted/src/components/common/header.vue index 6559201e3..83b7f74fc 100644 --- a/nezha-fronted/src/components/common/header.vue +++ b/nezha-fronted/src/components/common/header.vue @@ -29,11 +29,11 @@ @@ -123,7 +123,7 @@ export default { assetData: [], projectData: [], //顶部菜单project列表中的数据 editProject: {id: '', name: '', remark: ''}, //新增/编辑的project - currentProject: {id: '', name: '', remark: ''}, //module/endpoint弹框用来回显project,此处固定为空对象 + currentProject: {id: '', name: '', remark: ''}, //module/endpoint弹框用来回显project editModule: {id: '', name: '', project: {}, port: '', path: '', param: '', paramObj: []}, //新增/编辑的module currentModule: {id: '', name: '', project: {}, port: '', path: '', param: '', paramObj: []}, //endpoint弹框用来回显module,此处固定为空对象 editEndpoint: { //新增/编辑的endpoint @@ -182,42 +182,19 @@ export default { this.editProject = {id: '', name: '', remark: ''}; } else if (item.type == 2) { this.$refs.moduleBox.show(true); - this.editModule = {id: '', name: '', project: {}, port: '', path: '', param: '', paramObj: []}; + this.editModule = {id: '', name: '', project: this.$store.state.currentProject, port: '', path: '', param: '', paramObj: []}; } else if (item.type == 3) { - this.$refs.endpointBox.show(true); + //this.$refs.endpointBox.show(true); } - /*this.jumpTo(item.url); - setTimeout(() =>{ - if (item.type == 1) { - if (this.projectData.length > 0) { - this.$store.commit('setProject', this.projectData[0]); - } - this.$store.commit('toCreateProject', true); - this.$store.commit('projectRightBoxShow', true); - } else if (item.type == 2) { - if (this.projectData.length > 0) { - this.$store.commit('setProject', this.projectData[0]); - } - this.$store.commit('toCreateModule', true); - } else if (item.type == 3) { - if (this.projectData.length > 0) { - this.$store.commit('setProject', this.projectData[0]); - } - this.$store.commit('toCreateEndpoint', true); - } else if (item.type == 5) { - this.$store.commit('projectRightBoxShow', false); - this.$store.commit('toCreateAlertConfig', true); - } - }, 120);*/ }, jumpToAsset(data, id) { this.$store.state.assetData.moduleData = data; this.$store.state.assetData.selectedData = id; this.jumpTo(data); }, - jumpToProject(data, p) { + jumpToProject(p) { this.$store.commit('setProject', p); - this.jumpTo(data); + this.jumpTo('project'); }, changeLocal(lang) { localStorage.setItem("language", lang); @@ -230,7 +207,7 @@ export default { } }) }, - getProjectData() { + getProjectList() { this.$get('project', {}).then(response => { if (response.code == 200) { this.projectData = response.data.list; @@ -242,12 +219,12 @@ export default { this.editProject = Object.assign({}, p); }, projectReload() { - this.getProjectData(); + this.getProjectList(); } }, mounted() { this.getAssetData(); - this.getProjectData(); + this.getProjectList(); }, computed: { projectListReloadWatch() { @@ -257,8 +234,8 @@ export default { watch: { projectListReloadWatch(n, o) { if (n) { - this.getProjectData(); - this.$store.commit('projectListReloadChange', false); + this.getProjectList(); + this.$store.commit('projectListChange', false); } } } diff --git a/nezha-fronted/src/components/common/rightBox/endpointBox.vue b/nezha-fronted/src/components/common/rightBox/endpointBox.vue index f4cfd9a0d..c1036c561 100644 --- a/nezha-fronted/src/components/common/rightBox/endpointBox.vue +++ b/nezha-fronted/src/components/common/rightBox/endpointBox.vue @@ -9,14 +9,20 @@ {{$t('overall.esc')}} -
+
+
+ +
+ {{$t('overall.edit')}} +
+
{{$t('overall.save')}} {{$t('overall.edit')}}
-
+
@@ -35,7 +41,7 @@
{{$t("project.project.project")}}
- +
{{endpoint.project.name}}
@@ -46,7 +52,7 @@
{{$t("project.module.module")}}
- +
{{endpoint.module.name}}
@@ -62,7 +68,7 @@ v-model="endpoint.host" size="small" > -
+
{{endpoint.host}}
@@ -102,14 +108,17 @@ {{$t('overall.clearAll')}}
-
-
+
+
=
+
+
{{item.key}}={{item.value}}
+
@@ -117,9 +126,76 @@
-
{{$t('overall.cancel')}}
{{endpoint.id == '' ? $t('overall.create') : $t('overall.save')}}
+
{{$t('overall.cancel')}}
{{$t('overall.save')}}
+ + + +
+ +
{{subBox.title}}
+ +
+
+ +
+ {{$t('overall.esc')}} +
+ + + + + + + + +
+
+
IP
+
SN
+
+
+
+
+
{{selectedAsset.host}}
+
{{selectedAsset.sn}}
+
+
+
+
{{item.host}}
+
{{item.sn}}
+
+
+
+
All: {{assetPageObj.total}}
+ + +
+
+ +
+
+
@@ -134,34 +210,188 @@ }, data() { return { - // 清除param - clearAllParam: function() { - this.module.paramObj = []; - }, + rightBox: {show: false, title: '',isEdit: false}, + subBox: {show: false, title: this.$t("overall.asset")}, //asset子弹框 + assetSearch: {host: '', sn: '', text: '', label: 'IP', dropdownShow: false}, //侧滑框中asset的搜索相关 + assetPageObj: {pageNo: 1, pageSize: 11, total: 0}, + selectedAsset: {id: '', host: '', sn: ''}, //endpoint侧滑框中选中的asset + projectList: [], + moduleList: [], + assetList: [] + } + }, + methods: { + show(show) { + this.rightBox.show = show; + }, - // 新增param - addParam: function() { - this.module.paramObj.push({key: '', value: ''}); - }, + toEdit(show) { + this.rightBox.isEdit = show; + }, - // 移除单个param - removeParam: function(index) { - this.module.paramObj.splice(index, 1); - }, + //endpoint弹框中asset子弹框控制 + showSubBox(show) { + this.subBox.show = show; + }, - //将param转为json字符串格式 - paramToJson: function(param) { - let tempParam = {}; - for (let i = 0; i < param.length; i++) { - eval('tempParam.' + param[i].key + '="' + param[i].value + '"'); + /*关闭弹框*/ + esc() { + this.rightBox.show = false; + this.subBox.show = false; + }, + + /*关闭子弹框*/ + subEsc() { + this.subBox.show = false; + }, + + // 清除param + clearAllParam() { + this.endpoint.paramObj = []; + }, + + // 新增param + addParam() { + this.endpoint.paramObj.push({key: '', value: ''}); + }, + + // 移除单个param + removeParam(index) { + this.endpoint.paramObj.splice(index, 1); + }, + + //将param转为json字符串格式 + paramToJson(param) { + let tempParam = {}; + for (let i = 0; i < param.length; i++) { + eval('tempParam.' + param[i].key + '="' + param[i].value + '"'); + } + let jsonString = JSON.stringify(tempParam); + if (jsonString == '{}') { + return ""; + } else { + return jsonString; + } + }, + + /*获取project列表*/ + getProjectList() { + this.$get('project', {pageSize: 999, pageNo: 1}).then(response => { + if (response.code === 200) { + this.projectList = response.data.list; } - let jsonString = JSON.stringify(tempParam); - if (jsonString == '{}') { - return ""; + }); + }, + + // 获取endpoint弹框中的asset子弹框里asset列表数据 + getAssetList(currentPage) { + if (currentPage) { + this.assetPageObj.pageNo = currentPage; + } else { + this.assetPageObj.pageNo = 1; + } + this.$get('asset', this.assetPageObj).then(response => { + if (response.code === 200) { + this.assetList = response.data.list; + this.assetPageObj.total = response.data.total; + } + }); + }, + + //endpoint弹框中的asset子弹框搜索 + searchAsset() { + if (this.assetSearch.label == 'IP') { + this.assetSearch.host = this.assetSearch.text; + this.assetSearch.sn = ''; + } else if (this.assetSearch.label == 'SN') { + this.assetSearch.sn = this.assetSearch.text; + this.assetSearch.host = ''; + } + this.assetPageObj = Object.assign({}, this.assetPageObj, this.assetSearch); + this.getAssetList(false); + }, + + // endpoint弹框中的asset子弹框里asset选择事件 + selectAsset(obj) { + this.selectedAsset = obj; + this.endpoint.host = obj.host; + this.endpoint.assetId = obj.id; + }, + + // 获取endpoint弹框中module下拉框数据 + getModuleList(projectId) { + this.$get('module', {projectId: projectId}).then(response => { + if (response.code === 200) { + for (let i = 0; i < response.data.list.length; i++) { + try { + let tempObj = JSON.parse(response.data.list[i].param); + response.data.list[i].paramObj = []; + for (let k in tempObj) { + response.data.list[i].paramObj.push({key: k, value: tempObj[k]}) + } + } catch(err) { + console.info(response.data.list[i], err); + } + } + this.moduleList = response.data.list; + } + }); + }, + + //保存endpoint + save() { + this.endpoint.moduleId = this.currentModule.id; + this.endpoint.projectId = this.currentProject.id; + this.endpoint.param = this.paramToJson(this.endpoint.paramObj); + this.$put('endpoint', this.endpoint).then(response => { + if (response.code === 200) { + this.$message({duration: 1000, type: 'success', message: this.$t("tip.saveSuccess")}); + this.esc(); + this.$emit("reload"); } else { - return jsonString; + this.$message.error(response.msg); } - }, + }); + }, + + //删除endpoint + del() { + this.$confirm(this.$t("tip.confirmDelete"), { + confirmButtonText: this.$t("tip.yes"), + cancelButtonText: this.$t("tip.no"), + type: 'warning' + }).then(() => { + this.$delete("endpoint?ids=" + this.endpoint.id).then(response => { + if (response.code === 200) { + this.$message({duration: 1000, type: 'success', message: this.$t("tip.deleteSuccess")}); + this.$emit('reload'); + this.rightBox.show = false; + } else { + this.$message.error(response.msg); + } + }); + }); + }, + // endpoint弹框的asset子弹框顶部搜索条件选中事件 + dropdownSelect(label) { + this.assetSearch.label = label; + this.assetSearch.dropdownShow = false; + }, + }, + created() { + this.getProjectList(); + this.getAssetList(); + }, + mounted() { + this.getModuleList(this.currentProject.id); + }, + watch: { + endpoint(n, o) { + if (n && n.id) { + this.rightBox.title = this.$t("project.endpoint.editEndpoint") + " ID:" + n.id; + } else { + this.rightBox.title = this.$t("project.endpoint.createEndpoint"); + } } } } @@ -242,4 +472,95 @@ right: 1px; } /* end--param*/ + /* begin--子弹框*/ + .right-sub-box { + width: 380px; + height: 520px; + position: absolute; + right: 80px; + z-index: 2; + padding: 0 10px; + } + .right-sub-box .el-input-group { + width: 227px; + float: right; + margin: 7px 0 0 0; + } + /* begin--搜索框*/ + .endpoint-asset-prepend { + border-radius: 4px 0 0 4px; + } + .endpoint-asset-label { + line-height: 26px; + height: 26px; + } + .endpoint-asset-dropdown { + position: absolute; + top: 27px; + background-color: #656565; + border-radius: 4px; + width: 52px; + left: 0; + } + .endpoint-asset-dropdown-item { + text-align: center; + line-height: 22px; + height: 22px; + cursor: default; + } + .endpoint-asset-label-txt { + display: inline-block; + width: 19px; + text-align: center; + } + .endpoint-asset-dropdown-item:first-of-type { + border-radius: 4px 4px 0 0; + } + .endpoint-asset-dropdown-item:last-of-type { + border-radius: 0 0 4px 4px; + } + .endpoint-asset-dropdown-item:hover { + background-color: #3a8ee6; + } + /* end--搜索框*/ + /* begin--table*/ + .endpoint-sub-table { + margin-top: 25px; + } + .line-100 { + margin-bottom: 3px; + } + .endpoint-sub-table-head { + line-height: 28px; + height: 30px; + } + .endpoint-sub-table-row { + line-height: 28px; + height: 30px; + color: #656565; + } + .endpoint-sub-table-row-active { + background-color: #dadada; + } + .endpoint-sub-table-row-selected { + background-color: #656565; + color: white; + } + .endpoint-sub-table-col { + display: inline-block; + width: 45%; + padding-left: 10px; + } + .endpoint-sub-table-paginate-all { + position: absolute; + left: 10px; + bottom: 17px; + color: #5a5a5a; + } + .endpoint-sub-table-body { + font-size: 15px; + } + /* end--table*/ + + /* end--子弹框*/ diff --git a/nezha-fronted/src/components/common/rightBox/moduleBox.vue b/nezha-fronted/src/components/common/rightBox/moduleBox.vue index 6a0e6d9e3..b834d0a3f 100644 --- a/nezha-fronted/src/components/common/rightBox/moduleBox.vue +++ b/nezha-fronted/src/components/common/rightBox/moduleBox.vue @@ -1,109 +1,107 @@ @@ -140,7 +138,7 @@ if (this.module.id) { this.$put('module', this.module).then(response => { if (response.code === 200) { - this.$message({duration: 3000, type: 'success', message: this.$t("tip.saveSuccess")}); + this.$message({duration: 1000, type: 'success', message: this.$t("tip.saveSuccess")}); this.$emit("reload"); this.rightBox.show = false; } else { @@ -151,7 +149,7 @@ this.module.projectId = this.module.project.id; this.$post('module', this.module).then(response => { if (response.code === 200) { - this.$message({duration: 3000, type: 'success', message: this.$t("tip.saveSuccess")}); + this.$message({duration: 1000, type: 'success', message: this.$t("tip.saveSuccess")}); this.$emit("reload"); this.rightBox.show = false; } else { @@ -168,15 +166,15 @@ cancelButtonText: this.$t("tip.no"), type: 'warning' }).then(() => { - this.$delete("project?ids=" + this.project.id).then(response => { + this.$delete("module?ids=" + this.module.id).then(response => { if (response.code === 200) { - this.$message({duration: 3000, type: 'success', message: this.$t("tip.deleteSuccess")}); + this.$message({duration: 1000, type: 'success', message: this.$t("tip.deleteSuccess")}); this.rightBox.show = false; this.$emit("reload"); } else { this.$message.error(response.msg); } - }) + }); }); }, @@ -186,12 +184,14 @@ if (response.code === 200) { this.projectList = response.data.list; if (this.currentProject && this.currentProject.id) { - for (let i = 0; i < this.projectList.length; i++) { + /*for (let i = 0; i < this.projectList.length; i++) { if (this.projectList[i].id == this.currentProject.id) { this.currentProject = this.projectList[i]; break; } - } + }*/ + } else { + } } }); diff --git a/nezha-fronted/src/components/common/rightBox/projectBox.vue b/nezha-fronted/src/components/common/rightBox/projectBox.vue index 0d00034df..76919d914 100644 --- a/nezha-fronted/src/components/common/rightBox/projectBox.vue +++ b/nezha-fronted/src/components/common/rightBox/projectBox.vue @@ -84,7 +84,7 @@ if (this.project.id) { this.$put('project', this.project).then(response => { if (response.code === 200) { - this.$message({duration: 3000, type: 'success', message: this.$t("tip.saveSuccess")}); + this.$message({duration: 1000, type: 'success', message: this.$t("tip.saveSuccess")}); this.$emit("reload"); this.rightBox.show = false; } else { @@ -94,7 +94,7 @@ } else { this.$post('project', this.project).then(response => { if (response.code === 200) { - this.$message({duration: 3000, type: 'success', message: this.$t("tip.saveSuccess")}); + this.$message({duration: 1000, type: 'success', message: this.$t("tip.saveSuccess")}); this.$emit("reload"); this.rightBox.show = false; } else { @@ -113,7 +113,7 @@ }).then(() => { this.$delete("project?ids=" + this.project.id).then(response => { if (response.code === 200) { - this.$message({duration: 3000, type: 'success', message: this.$t("tip.deleteSuccess")}); + this.$message({duration: 1000, type: 'success', message: this.$t("tip.deleteSuccess")}); this.rightBox.show = false; this.$emit("reload"); } else { diff --git a/nezha-fronted/src/components/page/alert/config.vue b/nezha-fronted/src/components/page/alert/config.vue index 2032a0428..c8f4df8cf 100644 --- a/nezha-fronted/src/components/page/alert/config.vue +++ b/nezha-fronted/src/components/page/alert/config.vue @@ -81,7 +81,7 @@ - {{scope.row[item.prop].name}} + {{scope.row[item.prop].name}} {{scope.row[item.prop]}} @@ -508,15 +508,21 @@ export default { if (this.alertRule.id) { this.$put('alert/rule', this.alertRule).then(response => { if (response.code === 200) { + this.$message({duration: 1000, type: 'success', message: this.$t("tip.saveSuccess")}); this.getTableData(); - this.rightBox.isEdit = false; + this.rightBox.show = false; + } else { + this.$message.error(response.msg); } }); } else { this.$post('alert/rule', this.alertRule).then(response => { if (response.code === 200) { + this.$message({duration: 1000, type: 'success', message: this.$t("tip.saveSuccess")}); this.getTableData(); - this.rightBox.isEdit = false; + this.rightBox.show = false; + } else { + this.$message.error(response.msg); } }); } diff --git a/nezha-fronted/src/components/page/config/account.vue b/nezha-fronted/src/components/page/config/account.vue index 2117e18df..d4090b93c 100644 --- a/nezha-fronted/src/components/page/config/account.vue +++ b/nezha-fronted/src/components/page/config/account.vue @@ -90,7 +90,8 @@ + inactive-value="0" + @change="(val)=>{statusChange(scope.row)}"> {{scope.row[item.prop]}} @@ -117,7 +118,7 @@ {{$t('overall.save')}} {{$t('overall.edit')}}
-
+
@@ -360,6 +361,22 @@ export default { this.rightBox.show = true; }, del: function(u) { + this.$confirm(this.$t("tip.confirmDelete"), { + confirmButtonText: this.$t("tip.yes"), + cancelButtonText: this.$t("tip.no"), + type: 'warning' + }).then(() => { + this.$delete("sys/user/delete?userIds=" + u.userId).then(response => { + if (response.code === 200) { + this.$message({duration: 1000, type: 'success', message: this.$t("tip.deleteSuccess")}); + this.rightBox.show = false; + this.getTableData(); + } else { + this.$message.error(response.msg); + } + }); + }); + }, detail: function(u) { this.user = Object.assign({}, u); @@ -387,11 +404,27 @@ export default { this.rightBox.show = true; }, save: function() { - this.$post('sys/user/update', this.user).then(response => { - if (response.code === 200) { - this.rightBox.isEdit = false; - } - }); + if (this.user.userId) { + this.$put('sys/user/update', this.user).then(response => { + if (response.code === 200) { + this.rightBox.show = false; + this.$message({duration: 1000, type: 'success', message: this.$t("tip.saveSuccess")}); + } else { + this.$message.error(response.msg); + } + this.getTableData(); + }); + } else { + this.$post('sys/user/save', this.user).then(response => { + if (response.code === 200) { + this.rightBox.show = false; + this.$message({duration: 1000, type: 'success', message: this.$t("tip.saveSuccess")}); + this.getTableData(); + } else { + this.$message.error(response.msg); + } + }); + } }, saveOrToEdit: function() { if (!this.rightBox.isEdit) { @@ -401,6 +434,10 @@ export default { this.save(); } }, + statusChange: function(user) { + this.user = user; + this.save(); + }, jumpTo(data,id) { this.$store.state.assetData.moduleData = data; this.$store.state.assetData.selectedData = id; diff --git a/nezha-fronted/src/components/page/config/promServer.vue b/nezha-fronted/src/components/page/config/promServer.vue index 3a86e4a61..bd280c004 100644 --- a/nezha-fronted/src/components/page/config/promServer.vue +++ b/nezha-fronted/src/components/page/config/promServer.vue @@ -92,7 +92,7 @@ {{$t('overall.save')}} {{$t('overall.edit')}}
-
+
@@ -282,9 +282,7 @@ export default { disabled: false }], }, - searchLabel: { //搜索参数 - - }, + searchLabel: {}, //搜索参数 } }, methods: { @@ -302,8 +300,9 @@ export default { }).then(() => { this.$delete("promServer?ids=" + u.id).then(response => { if (response.code === 200) { - this.$message({type: 'success', message: this.$t("tip.deleteSuccess")}); + this.$message({duration: 1000, type: 'success', message: this.$t("tip.deleteSuccess")}); this.getTableData(); + this.rightBox.show = false; } else { this.$message.error(response.msg); } @@ -326,17 +325,23 @@ export default { if (this.promServer.id) { this.$put('promServer', this.promServer).then(response => { if (response.code === 200) { + this.$message({duration: 1000, type: 'success', message: this.$t("tip.saveSuccess")}); this.getTableData(); this.rightBox.isEdit = false; this.esc(); + } else { + this.$message.error(response.msg); } }); } else { this.$post('promServer', this.promServer).then(response => { if (response.code === 200) { + this.$message({duration: 1000, type: 'success', message: this.$t("tip.saveSuccess")}); this.getTableData(); this.rightBox.isEdit = false; this.esc(); + } else { + this.$message.error(response.msg); } }); } @@ -384,7 +389,21 @@ export default { }, toDelIdc: function(item) { this.blurEditIdc(); - //TODO 请求后台,删除 + this.$confirm(this.$t("tip.confirmDelete"), { + confirmButtonText: this.$t("tip.yes"), + cancelButtonText: this.$t("tip.no"), + type: 'warning' + }).then(() => { + this.$delete("idc?ids=" + item.id).then(response => { + if (response.code === 200) { + this.$message({duration: 1000, type: 'success', message: this.$t("tip.deleteSuccess")}); + this.getTableData(); + this.getIdcData(); + } else { + this.$message.error(response.msg); + } + }); + }); }, getIdcData: function() { this.$get('idc', this.pageObj).then(response => { diff --git a/nezha-fronted/src/components/page/project/project2.vue b/nezha-fronted/src/components/page/project/project2.vue index 4dc4d7326..b77c5ab2f 100644 --- a/nezha-fronted/src/components/page/project/project2.vue +++ b/nezha-fronted/src/components/page/project/project2.vue @@ -3,6 +3,15 @@
@@ -12,11 +21,11 @@ {{$t('project.endpoint.endpoint')}} - + {{$t('project.metrics.metrics')}} - + {{$t('overall.add')}} @@ -35,15 +44,18 @@ :label="item.label" > @@ -51,17 +63,17 @@
- + +
diff --git a/nezha-fronted/src/main.js b/nezha-fronted/src/main.js index 6098dfe8d..5895d34e4 100644 --- a/nezha-fronted/src/main.js +++ b/nezha-fronted/src/main.js @@ -18,13 +18,13 @@ import Pagination from "./components/common/pagination"; //引入全局分页组 import searchInput from "./components/common/searchInput"; //搜索框组件 import projectBox from './components/common/rightBox/projectBox'; //project弹框组件 import moduleBox from './components/common/rightBox/moduleBox'; //module弹框组件 -import endpointBox from './components/common/rightBox/endpointBox'; //endpoint弹框组件 +import editEndpointBox from './components/common/rightBox/endpointBox'; //endpoint弹框组件 Vue.component("Pagination", Pagination); Vue.component("searchInput", searchInput); Vue.component("project-box", projectBox); Vue.component("module-box", moduleBox); -Vue.component("endpoint-box", endpointBox); +Vue.component("edit-endpoint-box", editEndpointBox); Vue.prototype.$axios = axios; Vue.prototype.$post = post; diff --git a/nezha-fronted/src/store/index.js b/nezha-fronted/src/store/index.js index 58c1d73ef..84503c303 100644 --- a/nezha-fronted/src/store/index.js +++ b/nezha-fronted/src/store/index.js @@ -8,11 +8,11 @@ const store = new Vuex.Store({ selectedData:'', moduleData:'', }, - projectData: { + currentProject: { id: '', - name: '' + name: '', + remark: '' }, - projectBoxShow: false, projectListReload: false, createProject: false, createModule: false, @@ -23,13 +23,12 @@ const store = new Vuex.Store({ }, mutations: { setProject(state, project) { - state.projectData = Object.assign({}, project); - state.projectBoxShow = false; + state.currentProject = Object.assign({}, project); }, projectRightBoxShow(state, show) { state.projectBoxShow = show; }, - projectListReloadChange(state, reload) { + projectListChange(state, reload) { state.projectListReload = reload; }, toCreateProject(state, status) {