From f7e3a830b433fec3788e11e2e9f32f1e0516e666 Mon Sep 17 00:00:00 2001 From: zicla Date: Mon, 25 Dec 2017 18:47:43 +0800 Subject: [PATCH] Finish the breadcrumbs. --- src/backyard/Frame.vue | 120 +++++++++--------- src/backyard/matter/List.vue | 92 +++++++++++++- src/backyard/matter/ListOld.vue | 10 +- .../matter/components/TypeMatterComponent.vue | 6 +- src/backyard/matter/widget/MatterPanel.vue | 1 - src/common/model/base/BaseEntity.js | 2 +- src/common/model/base/Pager.js | 46 +++++-- src/common/model/matter/Matter.js | 12 +- src/common/router/index.js | 11 +- 9 files changed, 204 insertions(+), 96 deletions(-) diff --git a/src/backyard/Frame.vue b/src/backyard/Frame.vue index bc4e282..98fa661 100644 --- a/src/backyard/Frame.vue +++ b/src/backyard/Frame.vue @@ -1,58 +1,58 @@ diff --git a/src/backyard/matter/List.vue b/src/backyard/matter/List.vue index cabb208..21a8771 100644 --- a/src/backyard/matter/List.vue +++ b/src/backyard/matter/List.vue @@ -43,8 +43,11 @@ export default { data() { return { + //当前文件夹信息。 + matter: new Matter(), pager: new Pager(Matter, 50), - user: this.$store.state.user + user: this.$store.state.user, + breadcrumbs: this.$store.state.breadcrumbs } }, components: { @@ -67,15 +70,90 @@ this.refresh() }, refresh() { + + //刷新面包屑 + this.refreshBreadcrumbs() + this.pager.httpFastPage(); }, goToDirectory(uuid) { this.pager.setFilterValue("puuid", uuid) this.search() + this.refreshBreadcrumbs() + }, + refreshBreadcrumbs() { + + let that = this + + let uuid = that.pager.getFilterValue("puuid") + + + //根目录简单处理即可。 + if (!uuid || uuid === "root") { + that.breadcrumbs.splice(0, that.breadcrumbs.length); + that.breadcrumbs.push({ + title: '全部文件' + }) + + } else { + + this.matter.uuid = uuid + this.matter.httpDetail(function () { + + let arr = [] + let cur = that.matter.parent + while (cur) { + arr.push(cur) + cur = cur.parent; + } + + that.breadcrumbs.splice(0, that.breadcrumbs.length); + let query = that.pager.getParams() + query["puuid"] = "root" + query["_t"] = new Date().getTime() + that.breadcrumbs.push({ + title: '全部文件', + path: '/matter/list', + query: query + }) + + for (let i = arr.length - 1; i >= 0; i--) { + let m = arr[i] + let query = that.pager.getParams() + query["puuid"] = m.uuid + query["_t"] = new Date().getTime() + that.breadcrumbs.push({ + title: m.name, + path: '/matter/list', + query: query + }) + } + + //第一个文件 + that.breadcrumbs.push({ + title: that.matter.name + }) + }) + } + + + } + }, + watch: { + '$route'(newVal, oldVal) { + + let puuid = this.$route.query.puuid + if (puuid) { + this.pager.setFilterValue("puuid", puuid) + } else { + this.pager.setFilterValue("puuid", "root") + } + + this.refresh() + } }, - watch: {}, created() { }, @@ -83,9 +161,17 @@ let that = this this.pager.enableHistory(); - this.pager.setFilterValue("puuid", "root") + + let puuid = this.$route.query.puuid + if (puuid) { + this.pager.setFilterValue("puuid", puuid) + } else { + this.pager.setFilterValue("puuid", "root") + } + this.refresh(); + } } diff --git a/src/backyard/matter/ListOld.vue b/src/backyard/matter/ListOld.vue index 3819318..5431caa 100644 --- a/src/backyard/matter/ListOld.vue +++ b/src/backyard/matter/ListOld.vue @@ -250,7 +250,7 @@ cancelButtonText: '关闭', callback: (action, instance) => { if (action === 'confirm') { - that.matter.httpMatterMove(that.moveUuids.join(','), that.destMatter.uuid, function (response) { + that.matter.httpMove(that.moveUuids.join(','), that.destMatter.uuid, function (response) { Message.success('移动成功!') that.refresh() }) @@ -299,7 +299,7 @@ uuids += i.uuid } }) - that.matter.httpMatterDeleteBatch(uuids, function (response) { + that.matter.httpDeleteBatch(uuids, function (response) { Message.success('删除成功!') that.refresh() }, function (response) { @@ -343,7 +343,7 @@ let that = this let puuid = this.matter.uuid //父级uuid row.loading = true - row.httpMatterCreateDirectory(this.currentUser.uuid, puuid, function (response) { + row.httpCreateDirectory(this.currentUser.uuid, puuid, function (response) { Message.success('创建文件夹成功!') row.newFolderStatus = false }, function (response) { @@ -393,7 +393,7 @@ if (row.renameStatus) { let that = this row.name = $('#modify').val() - row.httpMatterRename(function (response) { + row.httpRename(function (response) { Message.success('重命名成功!') row.renameStatus = false }, function (response) { @@ -416,7 +416,7 @@ type: 'warning', callback: function (action, instance) { if (action === 'confirm') { - row.httpMatterDelete(function (response) { + row.httpDelete(function (response) { Message.success('删除成功!') that.refresh() }) diff --git a/src/backyard/matter/components/TypeMatterComponent.vue b/src/backyard/matter/components/TypeMatterComponent.vue index 24eb632..2037b28 100644 --- a/src/backyard/matter/components/TypeMatterComponent.vue +++ b/src/backyard/matter/components/TypeMatterComponent.vue @@ -204,7 +204,7 @@ uuids += i.uuid } }) - that.matter.httpMatterDeleteBatch(uuids, function (response) { + that.matter.httpDeleteBatch(uuids, function (response) { Message.success('删除成功!') that.refresh() }, function (response) { @@ -256,7 +256,7 @@ if (row.renameStatus) { let that = this row.name = $('#modify').val() - row.httpMatterRename(function (response) { + row.httpRename(function (response) { Message.success('重命名成功!') row.renameStatus = false }, function (response) { @@ -281,7 +281,7 @@ type: 'warning', callback: function (action, instance) { if (action === 'confirm') { - row.httpMatterDelete(function (response) { + row.httpDelete(function (response) { Message.success('删除成功!') that.refresh() }) diff --git a/src/backyard/matter/widget/MatterPanel.vue b/src/backyard/matter/widget/MatterPanel.vue index 150dbab..fbff666 100644 --- a/src/backyard/matter/widget/MatterPanel.vue +++ b/src/backyard/matter/widget/MatterPanel.vue @@ -56,7 +56,6 @@ }, methods: { clickRow() { - console.log("click name?") let that = this if (this.matter.dir) { this.$emit("goToDirectory", that.matter.uuid) diff --git a/src/common/model/base/BaseEntity.js b/src/common/model/base/BaseEntity.js index c81e5e5..2d3709c 100644 --- a/src/common/model/base/BaseEntity.js +++ b/src/common/model/base/BaseEntity.js @@ -99,7 +99,7 @@ export default class BaseEntity extends Base { let that = this if (!this.uuid) { - this.errorMessage = '没有详情!' + this.errorMessage = '没有定义uui,没有详情!' this.defaultErrorHandler(this.errorMessage, errorCallback) diff --git a/src/common/model/base/Pager.js b/src/common/model/base/Pager.js index 97999ad..9d738d1 100644 --- a/src/common/model/base/Pager.js +++ b/src/common/model/base/Pager.js @@ -129,6 +129,39 @@ export default class Pager extends Base { } }; + //根据一个key来获取某个filter + getFilterValue(key) { + let filter = this.getFilter(key) + if (!filter) { + return null + } else { + return filter.getParam() + } + + }; + + //获取所有的filter参数,键值对形式 + getParams() { + + let params = { + page: this.page, + pageSize: this.pageSize + } + if (!this.FILTERS || !this.FILTERS.length) { + return params + } + + for (let i = 0; i < this.FILTERS.length; i++) { + let filter = this.FILTERS[i] + + if (filter.getParam() !== null && filter.getParam() !== '') { + params[filter.key] = filter.getParam() + } + } + + return params; + }; + //获取当前pager中的list getList() { return this.data @@ -220,18 +253,7 @@ export default class Pager extends Base { this.pageSize = 10 } - let params = { - page: this.page, - pageSize: this.pageSize - } - - for (let i = 0; i < this.FILTERS.length; i++) { - let filter = this.FILTERS[i] - - if (filter.getParam() !== null && filter.getParam() !== '') { - params[filter.key] = filter.getParam() - } - } + let params = this.getParams() this.httpCustomPage(this.URL_PAGE, params, successCallback, errorCallback) diff --git a/src/common/model/matter/Matter.js b/src/common/model/matter/Matter.js index b9e4b87..e1977bd 100644 --- a/src/common/model/matter/Matter.js +++ b/src/common/model/matter/Matter.js @@ -79,7 +79,7 @@ export default class Matter extends BaseEntity { - httpMatterCreateDirectory(userUuid, puuid, successCallback, errorCallback) { + httpCreateDirectory(userUuid, puuid, successCallback, errorCallback) { let that = this let form = {'userUuid': userUuid, 'name': this.name} if (puuid) { @@ -93,19 +93,19 @@ export default class Matter extends BaseEntity { }, errorCallback) } - httpMatterDelete(successCallback, errorCallback) { + httpDelete(successCallback, errorCallback) { this.httpPost(Matter.URL_MATTER_DELETE, {'uuid': this.uuid}, function (response) { typeof successCallback === 'function' && successCallback(response) }, errorCallback) } - httpMatterDeleteBatch(uuids, successCallback, errorCallback) { + httpDeleteBatch(uuids, successCallback, errorCallback) { this.httpPost(Matter.URL_MATTER_DELETE_BATCH, {'uuids': uuids}, function (response) { typeof successCallback === 'function' && successCallback(response) }, errorCallback) } - httpMatterRename(successCallback, errorCallback) { + httpRename(successCallback, errorCallback) { let that = this this.httpPost(Matter.URL_MATTER_RENAME, {'uuid': this.uuid, 'name': this.name}, function (response) { that.render(response.data.data) @@ -113,7 +113,7 @@ export default class Matter extends BaseEntity { }, errorCallback) } - httpMatterMove(srcUuids, destUuid, successCallback, errorCallback) { + httpMove(srcUuids, destUuid, successCallback, errorCallback) { let form = {'srcUuids': srcUuids} if (destUuid) { form.destUuid = destUuid @@ -125,7 +125,7 @@ export default class Matter extends BaseEntity { }, errorCallback) } - httpMatterDownload(successCallback, errorCallback) { + httpDownload(successCallback, errorCallback) { this.httpPost(Matter.URL_MATTER_DOWNLOAD, {'uuid': this.uuid}, function (response) { typeof successCallback === 'function' && successCallback(response) }, errorCallback) diff --git a/src/common/router/index.js b/src/common/router/index.js index 86fa744..23d1433 100644 --- a/src/common/router/index.js +++ b/src/common/router/index.js @@ -209,7 +209,8 @@ const router = new Router({ { name: 'PreferenceIndex', title: '网站偏好' - }, { + }, + { name: 'PreferenceEdit', title: '网站偏好设置' } @@ -224,11 +225,11 @@ const router = new Router({ //add global interceptor. router.beforeEach((to, from, next) => { - //handle breadcrumbs things. + //清空数组 + store.state.breadcrumbs.splice(0, store.state.breadcrumbs.length); if (to.meta.breadcrumbs) { - store.state.breadcrumbs = to.meta.breadcrumbs - } else { - store.state.breadcrumbs = [] + //追加一个数组 + store.state.breadcrumbs.push.apply(store.state.breadcrumbs, to.meta.breadcrumbs) } if (to.meta.title) {