diff --git a/dataDeal/自动算分(附分秒转换)(1).xlsx b/dataDeal/自动算分(附分秒转换)(1).xlsx new file mode 100644 index 0000000..4e9e30e Binary files /dev/null and b/dataDeal/自动算分(附分秒转换)(1).xlsx differ diff --git a/front/src/main/index.js b/front/src/main/index.js index b32eea3..7b22515 100644 --- a/front/src/main/index.js +++ b/front/src/main/index.js @@ -10,7 +10,8 @@ let mainWindow function createWindow() { mainWindow = new BrowserWindow({ minWidth: 1366, - minHeight: 980, + minHeight: 900, + height: 970, show: false, autoHideMenuBar: true, icon: logoIcon, diff --git a/front/src/renderer/src/App.vue b/front/src/renderer/src/App.vue index 19679c4..f18d443 100644 --- a/front/src/renderer/src/App.vue +++ b/front/src/renderer/src/App.vue @@ -108,11 +108,7 @@ export default { this.zhucema = localStorage.getItem('zhucema') let isVipObj = JSON.parse(localStorage.getItem('isVip') || "{}") if (!_.isEmpty(isVipObj)) { - if (dayjs().isBefore(dayjs(isVipObj.endTime)) && dayjs().isAfter(dayjs(isVipObj.startTime))) { - this.isVip = isVipObj.isVip - } else { - this.isVip = false - } + this.isVip = isVipObj.isVip } if (!this.isVip) { this.zhuce() diff --git a/front/src/renderer/src/assets/js/db.js b/front/src/renderer/src/assets/js/db.js index 3bac7ae..2fbc0ca 100644 --- a/front/src/renderer/src/assets/js/db.js +++ b/front/src/renderer/src/assets/js/db.js @@ -4,6 +4,6 @@ export const myDatabase = new Dexie('myDatabase'); // 定义数据库版本 myDatabase.version(1).stores({ - student: '++id, nianjicode, banjicode, nianji, banji, &xuejihao, minzudaima, minzu, name, gender, birth, address, height, weight, BMI, BMIscore, lungs, lungsccore, fifty, fiftyscore, sitforward, sitforwardscore, jump, jumpscore, situp, situpscore, fiftyeight, fiftyeightscore, stand, standscore, eighty, eightyscore, thousand ,thousandscore, pullup, pullupscore, totalscore, level, note1, nodt2, create_at, update_at', + student: '++id, nianjicode, banjicode, nianji, banji, &xuejihao, minzudaima, minzu, name, gender, birth, address, height, weight, BMI, BMIscore, lungs, lungsscore, fifty, fiftyscore, sitforward, sitforwardscore, jump, jumpscore, situp, situpscore, fiftyeight, fiftyeightscore, stand, standscore, eighty, eightyscore, thousand ,thousandscore, pullup, pullupscore, totalScore, level, note1, nodt2, create_at, update_at', jihuoshijian: '++id, jihuoma, isVip, zhucema, create_at, update_at' }); \ No newline at end of file diff --git a/front/src/renderer/src/assets/json/jifen.json b/front/src/renderer/src/assets/json/jifen.json index 5ca6fa5..b114c7b 100644 --- a/front/src/renderer/src/assets/json/jifen.json +++ b/front/src/renderer/src/assets/json/jifen.json @@ -141,7 +141,7 @@ } ] }, - "lungsccore": { + "lungsscore": { "prop": "lungs", "fuhao": ">=", "list": [ diff --git a/front/src/renderer/src/assets/json/student.json b/front/src/renderer/src/assets/json/student.json index ac7f785..c7e7bfd 100644 --- a/front/src/renderer/src/assets/json/student.json +++ b/front/src/renderer/src/assets/json/student.json @@ -4,8 +4,14 @@ "prop": "nianjicode", "type": "text", "index": "0", - "fixed": true, + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", + "isSort": true, + "isSearch": true, + "openPopoverVisible": false, + "searchValue": "", "formShow": true, "export": true }, @@ -14,7 +20,14 @@ "prop": "banjicode", "type": "text", "index": "1", - "tableShow": false, + "fixed": false, + "tableShow": true, + "setTableShow": true, + "sort": "", + "isSort": true, + "isSearch": true, + "openPopoverVisible": false, + "searchValue": "", "formShow": false, "export": true }, @@ -23,7 +36,9 @@ "prop": "nianji", "type": "text", "index": "-1", + "fixed": false, "tableShow": false, + "setTableShow": false, "formShow": false, "export": false }, @@ -32,8 +47,14 @@ "prop": "banji", "type": "text", "index": "2", - "fixed": true, + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", + "isSort": true, + "isSearch": true, + "openPopoverVisible": false, + "searchValue": "", "formShow": true, "export": true }, @@ -42,7 +63,14 @@ "prop": "xuejihao", "type": "text", "index": "3", - "tableShow": false, + "fixed": false, + "tableShow": true, + "setTableShow": true, + "sort": "", + "isSort": true, + "isSearch": true, + "openPopoverVisible": false, + "searchValue": "", "formShow": false, "export": true }, @@ -51,7 +79,14 @@ "prop": "minzudaima", "type": "text", "index": "4", - "tableShow": false, + "fixed": false, + "tableShow": true, + "setTableShow": true, + "sort": "", + "isSort": true, + "isSearch": true, + "openPopoverVisible": false, + "searchValue": "", "formShow": false, "export": true }, @@ -60,6 +95,7 @@ "prop": "minzu", "type": "text", "index": "-1", + "fixed": false, "tableShow": false, "formShow": false, "export": false @@ -69,8 +105,14 @@ "prop": "name", "type": "text", "index": "5", - "fixed": true, + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", + "isSort": true, + "isSearch": true, + "openPopoverVisible": false, + "searchValue": "", "formShow": true, "export": true }, @@ -87,9 +129,16 @@ "value": "2" } ], - "type": "text", + "type": "select", "index": "6", + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", + "isSort": true, + "isSearch": true, + "openPopoverVisible": false, + "searchValue": "", "formShow": true, "export": true }, @@ -99,7 +148,14 @@ "type": "date", "default": 10, "index": "7", - "tableShow": false, + "fixed": false, + "tableShow": true, + "setTableShow": true, + "sort": "", + "isSort": true, + "isSearch": true, + "openPopoverVisible": false, + "searchValue": "", "formShow": false, "export": true }, @@ -108,7 +164,14 @@ "prop": "address", "type": "text", "index": "8", - "tableShow": false, + "fixed": false, + "tableShow": true, + "setTableShow": true, + "sort": "", + "isSort": true, + "isSearch": true, + "openPopoverVisible": false, + "searchValue": "", "formShow": false, "export": true }, @@ -117,7 +180,10 @@ "prop": "height", "type": "number", "index": "9", + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", "formShow": true, "export": true }, @@ -126,7 +192,10 @@ "prop": "weight", "type": "number", "index": "10", + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", "formShow": true, "export": true }, @@ -135,7 +204,10 @@ "prop": "BMI", "type": "number", "index": "11", + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", "formShow": true, "export": false }, @@ -144,7 +216,10 @@ "prop": "BMIscore", "type": "number", "index": "12", + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", "formShow": false, "export": false }, @@ -153,16 +228,23 @@ "prop": "lungs", "type": "number", "index": "13", + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", "formShow": true, "export": true }, { "label": "得分", - "prop": "lungsccore", + "label1": "肺活量得分", + "prop": "lungsscore", "type": "number", "index": "14", + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", "formShow": false, "export": false }, @@ -171,16 +253,23 @@ "prop": "fifty", "type": "text", "index": "15", + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", "formShow": true, "export": true }, { "label": "得分", + "label1": "50米跑得分", "prop": "fiftyscore", "type": "number", "index": "16", + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", "formShow": false, "export": false }, @@ -189,16 +278,23 @@ "prop": "sitforward", "type": "number", "index": "17", + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", "formShow": true, "export": true }, { "label": "得分", + "label1": "坐位体前屈得分", "prop": "sitforwardscore", "type": "number", "index": "18", + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", "formShow": false, "export": false }, @@ -207,16 +303,23 @@ "prop": "jump", "type": "number", "index": "19", + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", "formShow": true, "export": true }, { "label": "得分", + "label1": "一分钟跳绳得分", "prop": "jumpscore", "type": "number", "index": "20", + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", "formShow": false, "export": false }, @@ -225,16 +328,23 @@ "prop": "situp", "type": "number", "index": "21", + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", "formShow": true, "export": true }, { "label": "得分", + "label1": "一分钟仰卧起坐得分", "prop": "situpscore", "type": "number", "index": "22", + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", "formShow": false, "export": false }, @@ -243,16 +353,23 @@ "prop": "fiftyeight", "type": "text", "index": "23", + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", "formShow": true, "export": true }, { "label": "得分", + "label1": "50米×8往返跑得分", "prop": "fiftyeightscore", "type": "number", "index": "24", + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", "formShow": false, "export": false }, @@ -261,16 +378,23 @@ "prop": "stand", "type": "number", "index": "25", + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", "formShow": true, "export": true }, { "label": "得分", + "label1": "立定跳远得分", "prop": "standscore", "type": "number", "index": "26", + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", "formShow": false, "export": false }, @@ -279,16 +403,23 @@ "prop": "eighty", "type": "text", "index": "27", + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", "formShow": true, "export": true }, { "label": "得分", + "label1": "800米跑得分", "prop": "eightyscore", "type": "number", "index": "28", + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", "formShow": false, "export": false }, @@ -297,16 +428,23 @@ "prop": "thousand", "type": "text", "index": "29", + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", "formShow": true, "export": true }, { "label": "得分", + "label1": "1000米跑得分", "prop": "thousandscore", "type": "number", "index": "30", + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", "formShow": false, "export": false }, @@ -315,25 +453,35 @@ "prop": "pullup", "type": "number", "index": "31", + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", "formShow": true, "export": true }, { "label": "得分", + "label1": "引体向上得分", "prop": "pullupscore", "type": "number", "index": "32", + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", "formShow": false, "export": false }, { "label": "总分", - "prop": "totalscore", + "prop": "totalScore", "type": "number", "index": "33", + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", "formShow": false, "export": false }, @@ -342,7 +490,13 @@ "prop": "level", "type": "text", "index": "34", + "fixed": false, "tableShow": true, + "setTableShow": true, + "sort": "", + "isSearch": true, + "openPopoverVisible": false, + "searchValue": "", "formShow": false, "export": false }, @@ -350,7 +504,8 @@ "label": "备注1", "prop": "nodt1", "type": "text", - "index": "35", + "index": "-1", + "fixed": false, "tableShow": false, "formShow": false, "export": false @@ -359,7 +514,8 @@ "label": "备注2", "prop": "nodt2", "type": "text", - "index": "36", + "index": "-1", + "fixed": false, "tableShow": false, "formShow": false, "export": false diff --git a/front/src/renderer/src/components/formcomponent.vue b/front/src/renderer/src/components/formcomponent.vue index d366d58..a845edb 100644 --- a/front/src/renderer/src/components/formcomponent.vue +++ b/front/src/renderer/src/components/formcomponent.vue @@ -5,6 +5,12 @@ + + + + + @@ -21,7 +27,8 @@ + :disabled="['create_at', 'update_at'].indexOf(formItem.prop) !== -1" + :placeholder="`请选择${formItem.label}`" /> diff --git a/front/src/renderer/src/components/tablecomponent.vue b/front/src/renderer/src/components/tablecomponent.vue index 96dae33..6c93595 100644 --- a/front/src/renderer/src/components/tablecomponent.vue +++ b/front/src/renderer/src/components/tablecomponent.vue @@ -1,7 +1,7 @@ - + @@ -10,18 +10,83 @@ - - - {{ scope.row[headerItem.prop] }} - - - {{ scope.row[headerItem.prop] }} - - - {{ scope.row[headerItem.prop] }} - - {{ scope.row[headerItem.prop] }} + :key="headerIndex" :min-width="`${headerItem.label.length * 23 + 38}px`" :fixed="!!headerItem.fixed"> + + + {{ column.label }} + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 搜索 + + + + + + + + + + + + + + + + + + + + + + + + {{ row[headerItem.prop] }} + + + {{ _.find(headerItem.tableDisplay, { value: `${row[headerItem.prop]}` }).label }} + + + {{ row[headerItem.prop] }} + + + {{ row[headerItem.prop] }} + + {{ row[headerItem.prop] }} + @@ -57,7 +122,7 @@ import { ElMessage, ElMessageBox } from 'element-plus' export default { name: 'tablecomponent', components: {}, - emits: ["selectChange", "handleCurrentChange", "handleSizeChange", "edit", "info", "del"], + emits: ["selectChange", "handleCurrentChange", "handleSizeChange", "edit", "info", "del", "searchValue", "headerSort"], props: { tableHeader: { type: Array, @@ -74,7 +139,7 @@ export default { pageSizes: { type: Array, default: () => { - return [12, 50, 100, 200] + return [15, 50, 75, 100] } }, total: { @@ -83,6 +148,12 @@ export default { return 0 } }, + searchParams: { + type: Object, + default: () => { + return {} + } + }, hiddenXuhao: { type: Boolean, default: () => { @@ -96,7 +167,7 @@ export default { _: _, dayjs: dayjs, currentPage: 1, - pageSize: 12, + pageSize: 15, } }, methods: { @@ -118,7 +189,37 @@ export default { }, clearSelection() { this.$refs.tableRef.clearSelection() - } + }, + searchValue(item) { + item.popoverVisible = false + this.$emit("searchValue") + }, + // 打开popoverp + openPopoverVisible(item) { + for (let i = 0; i < this.tableHeader.length; i++) { + let headerItem = this.tableHeader[i]; + headerItem.popoverVisible = false + } + item.popoverVisible = true + }, + headerSort(headerItem) { + for (let i = 0; i < this.tableHeader.length; i++) { + let item = this.tableHeader[i]; + if (headerItem.prop !== item.prop) { + item.sort = "" + } + } + let sortOld = headerItem.sort + if (sortOld === "") { + headerItem.sort = 1 + } else if (sortOld === 1) { + headerItem.sort = -1 + } else if (sortOld === -1) { + headerItem.sort = "" + } + + this.$emit("headerSort", headerItem) + }, }, async mounted() { }, watch: { diff --git a/front/src/renderer/src/views/student.vue b/front/src/renderer/src/views/student.vue index db56c15..77579b5 100644 --- a/front/src/renderer/src/views/student.vue +++ b/front/src/renderer/src/views/student.vue @@ -42,7 +42,21 @@ 刷新 - + + + + + 清空搜索 + + + + + + + 设置表头 + + + - + + + 守望者网络科技有限公司 Copyright@{{ dayjs().format("YYYY") }} 版权所有:北京市房山区 资深教育工作者 李竞飞 + @@ -72,6 +90,14 @@ + + + + + + + + @@ -88,22 +114,23 @@ import { ElMessage, ElMessageBox } from 'element-plus' export default { name: 'student', components: { tablecomponent, formcomponent }, + watch: {}, + computed: {}, data() { return { _: _, dayjs: dayjs, tableHeader: [], + setTableHeader: [], formHeader: [], exportHeader: [], tableData: [], currentPage: 1, - pageSize: 12, - pageSizes: [12, 50, 100, 200], + pageSize: 15, + pageSizes: [15, 50, 75, 100], total: 0, fileOriData: null, - searchParams: { - name: "" - }, + searchParams: {}, selectionData: [], dialogFrom: { visible: false, @@ -112,6 +139,8 @@ export default { formHeader: [], formData: {} }, + setHeaderVisible: false, + sortObj: {}, } }, methods: { @@ -145,7 +174,9 @@ export default { let dealItem = {} for (let key in element) { let headerItem = _.find(tableHeaderLocal, o => o.label === key) - dealItem[headerItem.prop] = element[key] + if (headerItem) { + dealItem[headerItem.prop] = element[key] + } } try { await myDatabase.student.add({ @@ -184,9 +215,9 @@ export default { for (let i = 0; i < value.list.length; i++) { let item = value.list[i]; let rowValue = this.transTime(row[value.prop]) - let itemValue = this.transTime(item[row.nianjicode]) - if (item.gender === row.gender && this.createComparator(value.fuhao)(rowValue, itemValue)) { - scoreItem = { ...item } + let itemValue = this.transTime(item[`${row.nianjicode}`]) + if (`${item.gender}` === `${row.gender}` && this.createComparator(value.fuhao)(rowValue, itemValue)) { + scoreItem = { ...item, [`${key.slice(0, key.length - 5)}_org`]: row[value.prop] } break } } @@ -195,7 +226,43 @@ export default { } } // todo处理总分 - + // G2_性别、M2_BMI得分、o2_肺活量、q2_50米、s2_坐位体前屈、u2_一分钟跳绳、w2_一分钟仰卧起坐、y2_50米X8、AA2_立定跳远、Ac2_800米跑、AE2_1000米跑、Ag2_引体向上 + // 小学一、二年级总分: + // =M2 * 0.15 + O2 * 0.15 + Q2 * 0.2 + S2 * 0.3 + U2 * 0.2 + // 小学三、四年级总分: + // =M2 * 0.15 + O2 * 0.15 + Q2 * 0.2 + S2 * 0.2 + U2 * 0.2 + W2 * 0.1 + // 小学五、六年级总分: + // =M2 * 0.15 + O2 * 0.15 + Q2 * 0.2 + S2 * 0.1 + U2 * 0.1 + W2 * 0.2 + Y2 * 0.1 + // 初中总分: + // =IF(G2 = 1, M2 * 0.15 + O2 * 0.15 + Q2 * 0.2 + S2 * 0.1 + AA2 * 0.1 + AG2 * 0.1 + AE2 * 0.2, IF(G2 = 2, M2 * 0.15 + O2 * 0.15 + Q2 * 0.2 + S2 * 0.1 + AA2 * 0.1 + W2 * 0.1 + AC2 * 0.2)) + if (["11", "12"].indexOf(`${row.nianjicode}`) !== -1) { + row["totalScore"] = Number(Number(row.BMIscore * 0.15 + row.lungsscore * 0.15 + row.fiftyscore * 0.2 + row.sitforwardscore * 0.3 + row.jumpscore * 0.2).toFixed(2)) + } else if (["13", "14"].indexOf(`${row.nianjicode}`) !== -1) { + row["totalScore"] = Number(Number(row.BMIscore * 0.15 + row.lungsscore * 0.15 + row.fiftyscore * 0.2 + row.sitforwardscore * 0.2 + row.jumpscore * 0.2 + row.situpscore * 0.1).toFixed(2)) + } else if (["15", "16"].indexOf(`${row.nianjicode}`) !== -1) { + row["totalScore"] = Number(Number(row.BMIscore * 0.15 + row.lungsscore * 0.15 + row.fiftyscore * 0.2 + row.sitforwardscore * 0.1 + row.jumpscore * 0.1 + row.situpscore * 0.2 + row.fiftyeightscore * 0.1).toFixed(2)) + } else if (["21", "22", "23"].indexOf(`${row.nianjicode}`) !== -1) { + if (`${row.gender}` === "1") { + row["totalScore"] = Number(Number(row.BMIscore * 0.15 + row.lungsscore * 0.15 + row.fiftyscore * 0.2 + row.sitforwardscore * 0.1 + row.standscore * 0.1 + row.pullupscore * 0.1 + row.thousandscore * 0.2).toFixed(2)) + } else if (`${row.gender}` === "2") { + row["totalScore"] = Number(Number(row.BMIscore * 0.15 + row.lungsscore * 0.15 + row.fiftyscore * 0.2 + row.sitforwardscore * 0.1 + row.standscore * 0.1 + row.situpscore * 0.1 + row.eightyscore * 0.2).toFixed(2)) + } + } + row["totalScore"] = Number(Number(row["totalScore"] + row["addScore"]).toFixed(2)) + // 等级: + // = IF(AH2 >= 90, "优秀", IF(AH2 >= 80, "良好", IF(AH2 >= 60, "及格", "不及格"))) + let totalScoreNumber = Number(row.totalScore) + if (totalScoreNumber >= 90) { + row["level"] = "优秀" + } else if (totalScoreNumber >= 80) { + row["level"] = "良好" + } else if (totalScoreNumber >= 60) { + row["level"] = "及格" + } else if (totalScoreNumber >= 0) { + row["level"] = "不及格" + } else { + row["level"] = "" + } return row }, transTime(value) { @@ -241,88 +308,57 @@ export default { } }, - //表格增加数据 - async successSubmit11(opts) { - let that = this - let file = opts.file - this.fileDealData = [] - let fileReader = new FileReader() - fileReader.onload = async function () { - let data = this.result - let dataObj = {} - let workbook = XLSX.read(data, { type: 'binary' }) - for (let i = 0; i < workbook.SheetNames.length; i++) { - let sheetName = workbook.SheetNames[i]; - let sheetData = XLSX.utils.sheet_to_json(workbook.Sheets[sheetName]) - let sheetDataList = [] - let noKey = ["prop", "fuhao"] - for (let i = 0; i < sheetData.length; i++) { - let element = sheetData[i]; - let item = {} - for (let key in element) { - if (element[key] === "-Infinity") { - element[key] = -100000 - } else if (element[key] === "Infinity") { - element[key] = 999999 - } - if (element[key] !== "无") { - if (noKey.indexOf(key) === -1) { - item[key] = element[key] - } - if (key === "score") { - if (element[key] > 100) { - item[key] = 100 - item[`add_${key}`] = element[key] - 100 - } - } + //更新数据 + async updateSeach(params = {}) { + let allStudentList = _.cloneDeep(await myDatabase.student.toArray()) + if (!_.isEmpty(params)) { + let paramsTemp = {} + for (let key in params) { + let value = params[key] + if (["undefined", "", "null"].indexOf(`${value}`) === -1) { + paramsTemp[key] = [`${value}`, Number(value)] + } + } + let dataTemp = [] + if (!_.isEmpty(paramsTemp)) { + for (let i = 0; i < allStudentList.length; i++) { + let element = allStudentList[i]; + for (let key in paramsTemp) { + if (paramsTemp[key].includes(element[key])) { + dataTemp.push({ ...element }) } } - sheetDataList.push(item) - } - dataObj[sheetName] = { - prop: sheetData[0].prop, - fuhao: sheetData[0].fuhao, - list: sheetDataList } + allStudentList = _.cloneDeep(dataTemp) } - console.log(774444, dataObj) - // let sheetName = workbook.SheetNames[0] - // let sheetData = XLSX.utils.sheet_to_json(workbook.Sheets[sheetName], { header: 1, defval: '' }) - // console.log(11174444, sheetData) - - // let list = [] - } - - fileReader.onerror = function (error) { - ElMessage({ - message: `Error reading file:, ${error}`, - type: 'error', - }) + if (_.get(this.sortObj, ["sort"], "")) { + // 带条件排序 + allStudentList = _.cloneDeep(_.orderBy(allStudentList, [this.sortObj.prop], [_.get(this.sortObj, ["sort"], "") === 1 ? 'desc' : 'asc'])) } - fileReader.readAsArrayBuffer(file) - }, - //更新数据 - async updateSeach(params = {}) { - let studentList = [] - let totalList = 0 - if (params.name) { - studentList = await myDatabase.student.where('name').anyPass(studentItem => studentItem.includes(params.name)).offset((this.currentPage - 1) * this.pageSize).limit(this.pageSize).toArray() - totalList = await myDatabase.student.where('name').anyPass(studentItem => studentItem.includes(params.name)).toArray() - } else { - studentList = await myDatabase.student.offset((this.currentPage - 1) * this.pageSize).limit(this.pageSize).toArray() - totalList = await myDatabase.student.toArray() - } - this.total = totalList.length - this.tableData = _.cloneDeep(studentList) + this.total = allStudentList.length + this.tableData = allStudentList.slice((this.currentPage - 1) * this.pageSize, this.currentPage * this.pageSize) }, //搜索数据 async searchData() { - let params = {} - if (this.searchParams.name) { - params["name"] = { $regex: `${_.trim(this.searchParams.name)}`, $options: 'i' } + await this.updateSeach(this.searchParams) + }, + // 排序 + async headerSort(headerSort) { + this.sortObj = headerSort + await this.updateSeach(this.searchParams) + }, + // 清空搜索 + async clearSelection() { + for (let key in this.searchParams) { + this.searchParams[key] = "" + } + for (let i = 0; i < this.tableHeader.length; i++) { + let item = this.tableHeader; + item.sort = "" } - await this.updateSeach(params) + this.sortObj = {} + await this.searchData() }, //选中数据 selectChange(selection) { @@ -358,13 +394,13 @@ export default { } } let params = { - ...this.dialogFrom.formData, create_at: dayjs().format('YYYY-MM-DD HH:mm:ss'), update_at: dayjs().format('YYYY-MM-DD HH:mm:ss') + ...this.dialogFrom.formData, ...this.dealRow(this.dialogFrom.formData), create_at: dayjs().format('YYYY-MM-DD HH:mm:ss'), update_at: dayjs().format('YYYY-MM-DD HH:mm:ss') } if (this.dialogFrom.type === "put") { delete params.create_at } try { - await myDatabase.student[this.dialogFrom.type]({ ...this.dialogFrom.formData, update_at: dayjs().format('YYYY-MM-DD HH:mm:ss') }) + await myDatabase.student[this.dialogFrom.type]({ ...params, update_at: dayjs().format('YYYY-MM-DD HH:mm:ss') }) await this.searchData() this.cancelDialog() } catch (e) { @@ -383,6 +419,8 @@ export default { let element = this.formHeader[i]; if (element.type === "text") { formData[element.prop] = "" + } else if (element.type === "select") { + formData[element.prop] = "" } else if (element.type === "date") { formData[element.prop] = dayjs().subtract(element.default || 0, 'year').format("YYYY-MM-DD") } else if (element.type === "number") { @@ -489,9 +527,9 @@ export default { for (let i = 0; i < listCopy.length; i++) { let item = listCopy[i]; let listItem = {} - for (let j = 0; j < tableHeaderLocal.length; j++) { - let headerItem = tableHeaderLocal[j]; - listItem[headerItem.label] = item[headerItem.prop] + for (let j = 0; j < this.exportHeader.length; j++) { + let headerItem = this.exportHeader[j]; + listItem[headerItem.label] = item[`${headerItem.prop}_org`] || item[`${headerItem.prop}`] } lilstLocal.push(listItem) } @@ -510,16 +548,36 @@ export default { }) } }, + // 表头设置 + setHeader() { + this.setHeaderVisible = true + } }, async mounted() { - this.tableHeader = _.filter(tableHeaderLocal, o => o.tableShow) + this.setTableHeader = [] + if (!localStorage.getItem('setTableHeader')) { + for (let i = 0; i < tableHeaderLocal.length; i++) { + let headerItem = tableHeaderLocal[i]; + if (headerItem.isSearch) { + this.searchParams[headerItem.prop] = "" + } + if (headerItem.setTableShow) { + this.setTableHeader.push(headerItem) + } + } + localStorage.setItem('setTableHeader', JSON.stringify(this.setTableHeader)) + } else { + this.setTableHeader = JSON.parse(localStorage.getItem('setTableHeader')) + } + this.tableHeader = _.filter(this.setTableHeader, o => o.setTableShow) this.formHeader = _.filter(tableHeaderLocal, o => o.formShow) this.exportHeader = _.filter(tableHeaderLocal, o => o.export) await this.updateSeach() + this.$watch("setTableHeader", (val) => { + this.tableHeader = _.filter(val, o => o.setTableShow) + localStorage.setItem('setTableHeader', JSON.stringify(val)) + }, { deep: true }) }, - - watch: {}, - computed: {} }