handerPersonList(list,result,type){ // 获取所有 收藏人员 数据Id let empIds = this.getPersonEmpId(this.latelyList); let arr = []; if(list && list.length > 0){ for(let item of list){ let obj = Object.assign({},item); obj.admin = util.combineName(item); obj.id = ''; obj.aId = ''; obj.bId = ''; obj.picSrc = item.picSrc || require('@/assets/common_images/person.jpg'); // 设置收藏 if(empIds.indexOf(obj.empId) > -1){ let latelyUser = this.latelyList.find(it=>it.empId == obj.empId); if(latelyUser){ obj.id = latelyUser.id; } obj.isCollect = true; } else{ obj.isCollect = false; } arr.push(obj); } } if(type && type == 'allUser'){ this.paginationuser.total = result.pageControllerInfo.totalRecordCount; this.$refs.userTable.bodyWrapper.scrollTop = 0; this.userdata = arr; }else{ this.orgPersonList = arr; this.pagination.total = result.pageControllerInfo.totalRecordCount; this.$refs.employeeTable.bodyWrapper.scrollTop = 0; } },
时间: 2024-02-14 19:36:12 浏览: 27
这段代码主要是用来处理收藏人员列表数据的。它接收三个参数,分别是 `list`,`result` 和 `type`。
首先,代码会使用 `getPersonEmpId` 函数获取所有收藏人员的 ID,然后对 `list` 数组进行遍历,对每个元素进行处理。处理后的每个元素会被添加一些属性,比如 `admin`,`id`,`aId`,`bId`,`picSrc` 和 `isCollect` 等。其中,`admin` 表示人员名称,`id` 表示收藏人员 ID,`aId` 和 `bId` 分别表示一级部门和二级部门的 ID,`picSrc` 表示人员头像,`isCollect` 表示人员是否被收藏。
如果 `empIds.indexOf(obj.empId) > -1`,则表示当前人员已被收藏。此时,代码会在 `latelyList` 中查找该人员并获取其 ID,然后将该 ID 赋值给 `obj.id`。最后,设置 `obj.isCollect` 为 `true`。
如果 `empIds.indexOf(obj.empId) < 0`,则表示当前人员未被收藏。此时,代码会将 `obj.isCollect` 设置为 `false`。
最后,如果 `type` 的值为 `allUser`,则将处理后的数据赋值给 `this.userdata`,否则赋值给 `this.orgPersonList`。
相关问题
goOn: function () { let t = this.data.marks.length; let y = this.data.list.length; let w = t - y; let queryList = []; let pbynumbers = this.data.pbynumbers; let ptory = this.data.marks; let limit = this.data.limit; if (w > 10) { for (let i = 0; i < 10; i++) { queryList.push(ptory[pbynumbers-1]); pbynumbers--; } } else { for (let i = 0; i < w; i++) { queryList.push(ptory[pbynumbers-1]); pbynumbers--; } } if (queryList.length > 0) { wx.cloud.callFunction({ name: 'getMarksList', data: { queryList: queryList, length: 0, limit: limit } }).then(res => { console.log(res.result); this.arrs = [...this.data.list, ...res.result]; this.setData({ list: this.arrs, pbynumbers: pbynumbers }); }) } },详细解读这段代码的意思
这段代码是一个小程序中的一个方法,功能是根据一些条件从云数据库中获取数据,并将数据添加到页面的列表中。下面是这段代码的详细解读:
1. 获取当前已经加载的数据数量(t)和列表中已经显示的数据数量(y),计算还需要加载的数据数量(w)。
```
let t = this.data.marks.length;
let y = this.data.list.length;
let w = t - y;
```
2. 定义一些变量,包括查询列表(queryList)、查询的起始位置(pbynumbers)、所有数据数组(ptory)以及每次查询的数据数量(limit)。
```
let queryList = [];
let pbynumbers = this.data.pbynumbers;
let ptory = this.data.marks;
let limit = this.data.limit;
```
3. 根据还需要加载的数据数量(w)的值,分别将数据添加到查询列表(queryList)中。
如果还需要加载的数据数量(w)大于10,则将最近的10条数据添加到查询列表(queryList)中;否则,将所有剩余未加载的数据添加到查询列表(queryList)中。
```
if (w > 10) {
for (let i = 0; i < 10; i++) {
queryList.push(ptory[pbynumbers-1]);
pbynumbers--;
}
} else {
for (let i = 0; i < w; i++) {
queryList.push(ptory[pbynumbers-1]);
pbynumbers--;
}
}
```
4. 如果查询列表(queryList)中有数据,则调用云函数获取数据,并将获取到的数据添加到页面的列表中。
```
if (queryList.length > 0) {
wx.cloud.callFunction({
name: 'getMarksList',
data: { queryList: queryList, length: 0, limit: limit }
}).then(res => {
console.log(res.result);
this.arrs = [...this.data.list, ...res.result];
this.setData({
list: this.arrs,
pbynumbers: pbynumbers
});
})
}
```
在云函数中,根据传入的查询列表(queryList)和每次查询的数据数量(limit),从云数据库中获取数据并返回。最后,在小程序中将获取到的数据添加到页面的列表中。
let historyList = result.list; historyList.forEach(hItem => { let valueArr = []; // 根据@的位置,将变量和值进行分组 let stringArr = hItem.value.split('@'); stringArr.forEach(item => { // 按照变量的顺序,将取值进行对应 const variableId = item.split('#')[0]; const value = parseInt(item.split('#')[1]); const index = this.variableId.indexOf(variableId); valueArr[index] = value; }); this.chartSet.push([moment(hItem.date_time).format('YYYY-MM-DDTHH:mm:ss.SSS'), ...valueArr]); })请将上面的js代码进行执行效率的最优化处理
以下是对代码的优化建议:
1. 避免重复计算。在代码中,多次使用了类似 item.split('#') 的操作,可以将其提取到外面,避免重复计算。
2. 使用解构赋值。在对 item 进行分割时,可以使用解构赋值,使得代码更加简洁。
3. 使用数组的 map 方法。在对 stringArr 进行遍历时,可以使用数组的 map 方法代替 forEach 方法,这样可以减少代码量,并且更易读。
4. 避免多次调用 moment 函数。在对日期进行格式化时,可以先将 moment 函数调用的结果缓存起来,避免多次调用。
下面是优化后的代码:
```
let historyList = result.list;
let variableId = this.variableId;
let chartSet = this.chartSet;
historyList.forEach(hItem => {
let valueArr = [];
let [first, ...stringArr] = hItem.value.split('@');
stringArr.forEach(item => {
let [variableId, value] = item.split('#');
let index = variableId.indexOf(variableId);
valueArr[index] = parseInt(value);
});
let date = moment(hItem.date_time);
chartSet.push([date.format('YYYY-MM-DDTHH:mm:ss.SSS'), ...valueArr]);
});
```