|
|
@@ -750,6 +750,8 @@ ws['!page'] = {
|
|
|
e.json = JSON.parse(e.json);
|
|
|
});
|
|
|
|
|
|
+ data = data.filter(e=>[this.timeA,this.timeB].includes(e.time))
|
|
|
+ // console.log("filterData",data)
|
|
|
data.forEach(e => {
|
|
|
e.evaSca = 0;
|
|
|
e.cogSco = 0;
|
|
|
@@ -796,6 +798,8 @@ ws['!page'] = {
|
|
|
|
|
|
if(testList.length>0){
|
|
|
let _time = data[i].timeValue?JSON.parse(data[i].timeValue):{};
|
|
|
+ // console.log("testList",testList)
|
|
|
+ // console.log("await this.computedTest(testList,data[i].userid,_time)3")
|
|
|
let testData = await this.computedTest(testList,data[i].userid,_time)
|
|
|
let _isReviewNum = 0;
|
|
|
let _num = 0;
|
|
|
@@ -917,6 +921,7 @@ ws['!page'] = {
|
|
|
|
|
|
let _time = _test.timeValue?JSON.parse(_test.timeValue):{};
|
|
|
|
|
|
+ // console.log("this.computedTest(_testList,_test.userid,_time)1")
|
|
|
let allTestData = await this.computedTest(_testList,_test.userid,_time)
|
|
|
|
|
|
|
|
|
@@ -1376,6 +1381,7 @@ ws['!page'] = {
|
|
|
for (const e of this.PageBaseData) {
|
|
|
for (const k of e.children) {
|
|
|
if (k.testid.test.length > 0) {
|
|
|
+ // console.log("await this.computedTest(k.testid.test);")
|
|
|
k.testid.test = await this.computedTest(k.testid.test);
|
|
|
}
|
|
|
}
|
|
|
@@ -1512,14 +1518,62 @@ ws['!page'] = {
|
|
|
|
|
|
exportListExcel() {
|
|
|
this.fetchFormulaForList().then(formula => {
|
|
|
- let headers = [["教师名称", "认定分", "加权分"]];
|
|
|
+ // 解析 rjson 的辅助函数
|
|
|
+ const parseRjson = (person) => {
|
|
|
+ if (!person.rjson) return null;
|
|
|
+ try {
|
|
|
+ let obj = typeof person.rjson === "string" ? JSON.parse(person.rjson) : person.rjson;
|
|
|
+ return obj.rjson || null;
|
|
|
+ } catch (e) {
|
|
|
+ return null;
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ // 收集所有唯一的二级指标(按首次出现顺序)
|
|
|
+ let indicatorMap = new Map();
|
|
|
+ this.copyTableData.forEach(person => {
|
|
|
+ let rjsonArr = parseRjson(person);
|
|
|
+ if (rjsonArr && Array.isArray(rjsonArr)) {
|
|
|
+ rjsonArr.forEach(firstLevel => {
|
|
|
+ if (firstLevel.children && Array.isArray(firstLevel.children)) {
|
|
|
+ firstLevel.children.forEach(secondLevel => {
|
|
|
+ if (!indicatorMap.has(secondLevel.id)) {
|
|
|
+ indicatorMap.set(secondLevel.id, {
|
|
|
+ id: secondLevel.id,
|
|
|
+ name: secondLevel.name
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ let indicators = Array.from(indicatorMap.values());
|
|
|
+
|
|
|
+ let headers = [["教师名称", ...indicators.map(i => i.name), "认定分", "加权分"]];
|
|
|
let rows = this.copyTableData.map(person => {
|
|
|
+ // 构建该人员的 sco2 映射
|
|
|
+ let sco2Map = {};
|
|
|
+ let rjsonArr = parseRjson(person);
|
|
|
+ let personJson = person.json;
|
|
|
+ if (rjsonArr && Array.isArray(rjsonArr)) {
|
|
|
+ rjsonArr.forEach(firstLevel => {
|
|
|
+ if (firstLevel.children && Array.isArray(firstLevel.children)) {
|
|
|
+ firstLevel.children.forEach(secondLevel => {
|
|
|
+ sco2Map[secondLevel.id] = secondLevel.sco2 || "";
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ let indicatorScores = indicators.map(ind =>
|
|
|
+ sco2Map[ind.id] !== undefined ? sco2Map[ind.id] : ""
|
|
|
+ );
|
|
|
let cogSco = person.cogSco || "0.00";
|
|
|
let formulaScore = "0.00";
|
|
|
- if (formula && person.json) {
|
|
|
- formulaScore = this.computeFormulaForPerson(person.json, formula);
|
|
|
+ if (formula && personJson) {
|
|
|
+ formulaScore = this.computeFormulaForPerson(personJson, formula);
|
|
|
}
|
|
|
- return [person.username || "", cogSco, formulaScore];
|
|
|
+ return [person.username || "", ...indicatorScores, cogSco, formulaScore];
|
|
|
});
|
|
|
let data = [...headers, ...rows];
|
|
|
const wb = XLSX.utils.book_new();
|
|
|
@@ -1535,7 +1589,10 @@ ws['!page'] = {
|
|
|
ws[cellRef].s = commonStyle;
|
|
|
}
|
|
|
}
|
|
|
- ws["!cols"] = [{ wch: 20 }, { wch: 12 }, { wch: 12 }];
|
|
|
+ let colWidths = [{ wch: 20 }];
|
|
|
+ indicators.forEach(() => colWidths.push({ wch: 14 }));
|
|
|
+ colWidths.push({ wch: 12 }, { wch: 12 });
|
|
|
+ ws["!cols"] = colWidths;
|
|
|
XLSX.utils.book_append_sheet(wb, ws, "考核列表");
|
|
|
XLSX.writeFile(wb, "考核数据导出.xlsx");
|
|
|
});
|