|
|
@@ -404,6 +404,26 @@ export default {
|
|
|
this.loadTreeData()
|
|
|
}
|
|
|
},
|
|
|
+ /**
|
|
|
+ * 初始化的时候 将选中的数据移动到最前面 防止因为分页找不到对应的label
|
|
|
+ */
|
|
|
+ handleData (data = []) {
|
|
|
+ if (data.length === 0 || !this.selectData) return data
|
|
|
+ const newData = JSON.parse(JSON.stringify(data)) // 深拷贝避免缓存数据被修改
|
|
|
+ const selectiton = this.multiple ? this.selectData : [this.selectData]
|
|
|
+ // 将n条数据与前n条数据做交换
|
|
|
+ for (let i = 0; i < selectiton.length; i++) {
|
|
|
+ const item = selectiton[i]
|
|
|
+ const index = newData.findIndex(i => i[this.valueKey] === item)
|
|
|
+ if (index > -1 && index !== i) {
|
|
|
+ const temp = newData[index]
|
|
|
+ newData[index] = newData[i]
|
|
|
+ newData[i] = temp
|
|
|
+ }
|
|
|
+ // console.log(JSON.parse(JSON.stringify(newData)))
|
|
|
+ }
|
|
|
+ return newData
|
|
|
+ },
|
|
|
loadTreeData (init = false) {
|
|
|
if (init) {
|
|
|
this.listData = []
|
|
|
@@ -444,13 +464,24 @@ export default {
|
|
|
}).then(response => {
|
|
|
this.showEmptyText = this.emptyText
|
|
|
const responseData = response.data
|
|
|
- const data = responseData.dataResult || []
|
|
|
+ let data = responseData.dataResult || []
|
|
|
+
|
|
|
+ // 当多选的数据大于分页数时 动态调整分页容量
|
|
|
+ if (this.multiple && this.selectData.length > this.pagination.limit) {
|
|
|
+ this.pagination.limit = Math.ceil(this.selectData.length / 10) * 10
|
|
|
+ this.defaultPagination.limit = this.pagination.limit
|
|
|
+ }
|
|
|
+ data = this.handleData(data, init)
|
|
|
|
|
|
if (this.structure === 'list') {
|
|
|
// 处理分页
|
|
|
this.handlerPagination(JSON.parse(JSON.stringify(this.defaultPagination)))
|
|
|
this.pagination.count = data.length
|
|
|
- this.selectDataOptions = data.slice(this.pagination.page - 1, this.pagination.limit)
|
|
|
+
|
|
|
+ this.selectDataOptions = []
|
|
|
+ this.$nextTick(() => {
|
|
|
+ this.selectDataOptions = data.slice(this.pagination.page - 1, this.pagination.limit)
|
|
|
+ })
|
|
|
|
|
|
this.treeData = data
|
|
|
} else {
|