You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 lines
12 KiB
1 lines
12 KiB
{"remainingRequest":"C:\\Users\\明允\\Desktop\\manage\\springboot\\vue\\node_modules\\vue-loader\\lib\\index.js??vue-loader-options!C:\\Users\\明允\\Desktop\\manage\\springboot\\vue\\src\\views\\front\\Attendance.vue?vue&type=script&lang=js","dependencies":[{"path":"C:\\Users\\明允\\Desktop\\manage\\springboot\\vue\\src\\views\\front\\Attendance.vue","mtime":1714290554649},{"path":"C:\\Users\\明允\\Desktop\\manage\\springboot\\vue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1713785856543},{"path":"C:\\Users\\明允\\Desktop\\manage\\springboot\\vue\\node_modules\\babel-loader\\lib\\index.js","mtime":1713785857863},{"path":"C:\\Users\\明允\\Desktop\\manage\\springboot\\vue\\node_modules\\cache-loader\\dist\\cjs.js","mtime":1713785856543},{"path":"C:\\Users\\明允\\Desktop\\manage\\springboot\\vue\\node_modules\\vue-loader\\lib\\index.js","mtime":1713785858382}],"contextDependencies":[],"result":[{"type":"Buffer","data":"base64:DQogIGV4cG9ydCBkZWZhdWx0IHsNCiAgICBuYW1lOiAiQXR0ZW5kcmVjb3JkcyIsDQogICAgZGF0YSgpIHsNCiAgICAgIHJldHVybiB7DQogICAgICAgIHRhYmxlRGF0YTogW10sDQogICAgICAgIGVtcGxveWVlczogW10sDQogICAgICAgIHRvdGFsOiAwLA0KICAgICAgICBwYWdlTnVtOiAxLA0KICAgICAgICBwYWdlU2l6ZTogMTAsDQogICAgICAgIG5hbWU6ICIiLA0KICAgICAgICBmb3JtOiB7fSwNCiAgICAgICAgbXVsdGlwbGVTZWxlY3Rpb246IFtdLA0KICAgICAgICB1c2VyOiBsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgidXNlciIpID8gSlNPTi5wYXJzZShsb2NhbFN0b3JhZ2UuZ2V0SXRlbSgidXNlciIpKSA6IHt9DQogICAgICB9DQogICAgfSwNCiAgICBjcmVhdGVkKCkgew0KICAgICAgdGhpcy5sb2FkKCkNCiAgICAgIHRoaXMucmVxdWVzdC5nZXQoIi9lbXBsb3llZSIpLnRoZW4ocmVzID0+IHsNCiAgICAgICAgdGhpcy5lbXBsb3llZXMgPSByZXMuZGF0YQ0KICAgICAgfSkNCiAgICB9LA0KICAgIG1ldGhvZHM6IHsNCiAgICAgIGxvYWQoKSB7DQogICAgICAgIHRoaXMucmVxdWVzdC5nZXQoIi9hdHRlbmRyZWNvcmRzL3BhZ2UiLCB7DQogICAgICAgICAgcGFyYW1zOiB7DQogICAgICAgICAgICBwYWdlTnVtOiB0aGlzLnBhZ2VOdW0sDQogICAgICAgICAgICBwYWdlU2l6ZTogdGhpcy5wYWdlU2l6ZSwNCiAgICAgICAgICAgIG5hbWU6IHRoaXMubmFtZSwNCiAgICAgICAgICB9DQogICAgICAgIH0pLnRoZW4ocmVzID0+IHsNCiAgICAgICAgICB0aGlzLnRhYmxlRGF0YSA9IHJlcy5kYXRhLnJlY29yZHMNCiAgICAgICAgICB0aGlzLnRvdGFsID0gcmVzLmRhdGEudG90YWwNCiAgICAgICAgfSkNCiAgICAgIH0sDQogICAgICBzYXZlKCkgew0KICAgICAgICB0aGlzLnJlcXVlc3QucG9zdCgiL2F0dGVuZHJlY29yZHMiLCB0aGlzLmZvcm0pLnRoZW4ocmVzID0+IHsNCiAgICAgICAgICBpZiAocmVzLmNvZGUgPT09ICcyMDAnKSB7DQogICAgICAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MoIuS/neWtmOaIkOWKnyIpDQogICAgICAgICAgICB0aGlzLmxvYWQoKQ0KICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKCLkv53lrZjlpLHotKUiKQ0KICAgICAgICAgIH0NCiAgICAgICAgfSkNCiAgICAgIH0sDQogICAgICBoYW5kbGVBZGQoKSB7DQogICAgICAgIHRoaXMuZm9ybSA9IHt9DQogICAgICAgIHRoaXMuJG5leHRUaWNrKCgpID0+IHsNCiAgICAgICAgICBpZih0aGlzLiRyZWZzLmltZykgew0KICAgICAgICAgICAgdGhpcy4kcmVmcy5pbWcuY2xlYXJGaWxlcygpOw0KICAgICAgICAgIH0NCiAgICAgICAgICBpZih0aGlzLiRyZWZzLmZpbGUpIHsNCiAgICAgICAgICAgIHRoaXMuJHJlZnMuZmlsZS5jbGVhckZpbGVzKCk7DQogICAgICAgICAgfQ0KICAgICAgICB9KQ0KICAgICAgfSwNCiAgICAgIGhhbmRsZUVkaXQocm93KSB7DQogICAgICAgIHRoaXMuZm9ybSA9IEpTT04ucGFyc2UoSlNPTi5zdHJpbmdpZnkocm93KSkNCiAgICAgICAgdGhpcy5yZXF1ZXN0LnBvc3QoIi9hdHRlbmRyZWNvcmRzIiwgdGhpcy5mb3JtKS50aGVuKHJlcyA9PiB7DQogICAgICAgICAgaWYgKHJlcy5jb2RlID09PSAnMjAwJykgew0KICAgICAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKCLkv53lrZjmiJDlip8iKQ0KICAgICAgICAgICAgdGhpcy5mb3JtPXt9DQogICAgICAgICAgICB0aGlzLmxvYWQoKQ0KICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKCLkv53lrZjlpLHotKUiKQ0KICAgICAgICAgIH0NCiAgICAgICAgfSkNCiAgICAgIH0sDQogICAgICBkZWwoaWQpIHsNCiAgICAgICAgdGhpcy5yZXF1ZXN0LmRlbGV0ZSgiL2F0dGVuZHJlY29yZHMvIiArIGlkKS50aGVuKHJlcyA9PiB7DQogICAgICAgICAgaWYgKHJlcy5jb2RlID09PSAnMjAwJykgew0KICAgICAgICAgICAgdGhpcy4kbWVzc2FnZS5zdWNjZXNzKCLliKDpmaTmiJDlip8iKQ0KICAgICAgICAgICAgdGhpcy5sb2FkKCkNCiAgICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgdGhpcy4kbWVzc2FnZS5lcnJvcigi5Yig6Zmk5aSx6LSlIikNCiAgICAgICAgICB9DQogICAgICAgIH0pDQogICAgICB9LA0KICAgICAgaGFuZGxlU2VsZWN0aW9uQ2hhbmdlKHZhbCkgew0KICAgICAgICBjb25zb2xlLmxvZyh2YWwpDQogICAgICAgIHRoaXMubXVsdGlwbGVTZWxlY3Rpb24gPSB2YWwNCiAgICAgIH0sDQogICAgICBkZWxCYXRjaCgpIHsNCiAgICAgICAgaWYgKCF0aGlzLm11bHRpcGxlU2VsZWN0aW9uLmxlbmd0aCkgew0KICAgICAgICAgIHRoaXMuJG1lc3NhZ2UuZXJyb3IoIuivt+mAieaLqemcgOimgeWIoOmZpOeahOaVsOaNriIpDQogICAgICAgICAgcmV0dXJuDQogICAgICAgIH0NCiAgICAgICAgbGV0IGlkcyA9IHRoaXMubXVsdGlwbGVTZWxlY3Rpb24ubWFwKHYgPT4gdi5pZCkgIC8vIFt7fSwge30sIHt9XSA9PiBbMSwyLDNdDQogICAgICAgIHRoaXMucmVxdWVzdC5wb3N0KCIvYXR0ZW5kcmVjb3Jkcy9kZWwvYmF0Y2giLCBpZHMpLnRoZW4ocmVzID0+IHsNCiAgICAgICAgICBpZiAocmVzLmNvZGUgPT09ICcyMDAnKSB7DQogICAgICAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MoIuaJuemHj+WIoOmZpOaIkOWKnyIpDQogICAgICAgICAgICB0aGlzLmxvYWQoKQ0KICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICB0aGlzLiRtZXNzYWdlLmVycm9yKCLmibnph4/liKDpmaTlpLHotKUiKQ0KICAgICAgICAgIH0NCiAgICAgICAgfSkNCiAgICAgIH0sDQogICAgICByZXNldCgpIHsNCiAgICAgICAgdGhpcy5uYW1lID0gIiINCiAgICAgICAgdGhpcy5sb2FkKCkNCiAgICAgIH0sDQogICAgICBoYW5kbGVTaXplQ2hhbmdlKHBhZ2VTaXplKSB7DQogICAgICAgIGNvbnNvbGUubG9nKHBhZ2VTaXplKQ0KICAgICAgICB0aGlzLnBhZ2VTaXplID0gcGFnZVNpemUNCiAgICAgICAgdGhpcy5sb2FkKCkNCiAgICAgIH0sDQogICAgICBoYW5kbGVDdXJyZW50Q2hhbmdlKHBhZ2VOdW0pIHsNCiAgICAgICAgY29uc29sZS5sb2cocGFnZU51bSkNCiAgICAgICAgdGhpcy5wYWdlTnVtID0gcGFnZU51bQ0KICAgICAgICB0aGlzLmxvYWQoKQ0KICAgICAgfSwNCiAgICAgIGhhbmRsZUZpbGVVcGxvYWRTdWNjZXNzKHJlcykgew0KICAgICAgICB0aGlzLmZvcm0uZmlsZSA9IHJlcw0KICAgICAgfSwNCiAgICAgIGhhbmRsZUltZ1VwbG9hZFN1Y2Nlc3MocmVzKSB7DQogICAgICAgIHRoaXMuZm9ybS5pbWcgPSByZXMNCiAgICAgIH0sDQogICAgICBkb3dubG9hZCh1cmwpIHsNCiAgICAgICAgd2luZG93Lm9wZW4odXJsKQ0KICAgICAgfSwNCiAgICAgIGV4cCgpIHsNCiAgICAgICAgd2luZG93Lm9wZW4oImh0dHA6Ly9sb2NhbGhvc3Q6OTA5MC9hdHRlbmRyZWNvcmRzL2V4cG9ydCIpDQogICAgICB9LA0KICAgICAgaGFuZGxlRXhjZWxJbXBvcnRTdWNjZXNzKCkgew0KICAgICAgICB0aGlzLiRtZXNzYWdlLnN1Y2Nlc3MoIuWvvOWFpeaIkOWKnyIpDQogICAgICAgIHRoaXMubG9hZCgpDQogICAgICB9DQogICAgfQ0KICB9DQo="},{"version":3,"sources":["Attendance.vue"],"names":[],"mappings":";AA2CA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA","file":"Attendance.vue","sourceRoot":"src/views/front","sourcesContent":["<template>\r\n <div>\r\n <!-- <div style=\"margin: 10px 0\">\r\n <el-input style=\"width: 200px\" placeholder=\"请输入名称\" suffix-icon=\"el-icon-search\" v-model=\"name\"></el-input>\r\n <el-button class=\"ml-5\" type=\"primary\" @click=\"load\">搜索</el-button>\r\n <el-button type=\"warning\" @click=\"reset\">重置</el-button>\r\n </div>-->\r\n\r\n <div style=\"margin: 10px 0\">\r\n <el-button class=\"ml-5\" type=\"primary\" @click=\"save\">上班打卡</el-button>\r\n </div>\r\n\r\n <el-table :data=\"tableData\" border stripe :header-cell-class-name=\"'headerBg'\" @selection-change=\"handleSelectionChange\">\r\n <el-table-column type=\"selection\" width=\"55\"></el-table-column>\r\n <el-table-column prop=\"id\" label=\"ID\" width=\"80\" sortable></el-table-column>\r\n <!-- <el-table-column prop=\"employeeId\" label=\"员工ID\"></el-table-column>-->\r\n <el-table-column prop=\"employee\" label=\"员工\"></el-table-column>\r\n <el-table-column prop=\"attendanceDate\" label=\"出勤日期\"></el-table-column>\r\n <el-table-column prop=\"startTime\" label=\"上班时间\"></el-table-column>\r\n <el-table-column prop=\"endTime\" label=\"下班时间\"></el-table-column>\r\n <el-table-column prop=\"status\" label=\"出勤状态\"></el-table-column>\r\n\r\n <el-table-column label=\"操作\" width=\"180\" align=\"center\">\r\n <template slot-scope=\"scope\">\r\n <el-button class=\"ml-5\" type=\"primary\" @click=\"handleEdit(scope.row)\">下班打卡</el-button>\r\n </template>\r\n </el-table-column>\r\n </el-table>\r\n <div style=\"padding: 10px 0\">\r\n <el-pagination\r\n @size-change=\"handleSizeChange\"\r\n @current-change=\"handleCurrentChange\"\r\n :current-page=\"pageNum\"\r\n :page-sizes=\"[2, 5, 10, 20]\"\r\n :page-size=\"pageSize\"\r\n layout=\"total, sizes, prev, pager, next, jumper\"\r\n :total=\"total\">\r\n </el-pagination>\r\n </div>\r\n </div>\r\n</template>\r\n\r\n<script>\r\n export default {\r\n name: \"Attendrecords\",\r\n data() {\r\n return {\r\n tableData: [],\r\n employees: [],\r\n total: 0,\r\n pageNum: 1,\r\n pageSize: 10,\r\n name: \"\",\r\n form: {},\r\n multipleSelection: [],\r\n user: localStorage.getItem(\"user\") ? JSON.parse(localStorage.getItem(\"user\")) : {}\r\n }\r\n },\r\n created() {\r\n this.load()\r\n this.request.get(\"/employee\").then(res => {\r\n this.employees = res.data\r\n })\r\n },\r\n methods: {\r\n load() {\r\n this.request.get(\"/attendrecords/page\", {\r\n params: {\r\n pageNum: this.pageNum,\r\n pageSize: this.pageSize,\r\n name: this.name,\r\n }\r\n }).then(res => {\r\n this.tableData = res.data.records\r\n this.total = res.data.total\r\n })\r\n },\r\n save() {\r\n this.request.post(\"/attendrecords\", this.form).then(res => {\r\n if (res.code === '200') {\r\n this.$message.success(\"保存成功\")\r\n this.load()\r\n } else {\r\n this.$message.error(\"保存失败\")\r\n }\r\n })\r\n },\r\n handleAdd() {\r\n this.form = {}\r\n this.$nextTick(() => {\r\n if(this.$refs.img) {\r\n this.$refs.img.clearFiles();\r\n }\r\n if(this.$refs.file) {\r\n this.$refs.file.clearFiles();\r\n }\r\n })\r\n },\r\n handleEdit(row) {\r\n this.form = JSON.parse(JSON.stringify(row))\r\n this.request.post(\"/attendrecords\", this.form).then(res => {\r\n if (res.code === '200') {\r\n this.$message.success(\"保存成功\")\r\n this.form={}\r\n this.load()\r\n } else {\r\n this.$message.error(\"保存失败\")\r\n }\r\n })\r\n },\r\n del(id) {\r\n this.request.delete(\"/attendrecords/\" + id).then(res => {\r\n if (res.code === '200') {\r\n this.$message.success(\"删除成功\")\r\n this.load()\r\n } else {\r\n this.$message.error(\"删除失败\")\r\n }\r\n })\r\n },\r\n handleSelectionChange(val) {\r\n console.log(val)\r\n this.multipleSelection = val\r\n },\r\n delBatch() {\r\n if (!this.multipleSelection.length) {\r\n this.$message.error(\"请选择需要删除的数据\")\r\n return\r\n }\r\n let ids = this.multipleSelection.map(v => v.id) // [{}, {}, {}] => [1,2,3]\r\n this.request.post(\"/attendrecords/del/batch\", ids).then(res => {\r\n if (res.code === '200') {\r\n this.$message.success(\"批量删除成功\")\r\n this.load()\r\n } else {\r\n this.$message.error(\"批量删除失败\")\r\n }\r\n })\r\n },\r\n reset() {\r\n this.name = \"\"\r\n this.load()\r\n },\r\n handleSizeChange(pageSize) {\r\n console.log(pageSize)\r\n this.pageSize = pageSize\r\n this.load()\r\n },\r\n handleCurrentChange(pageNum) {\r\n console.log(pageNum)\r\n this.pageNum = pageNum\r\n this.load()\r\n },\r\n handleFileUploadSuccess(res) {\r\n this.form.file = res\r\n },\r\n handleImgUploadSuccess(res) {\r\n this.form.img = res\r\n },\r\n download(url) {\r\n window.open(url)\r\n },\r\n exp() {\r\n window.open(\"http://localhost:9090/attendrecords/export\")\r\n },\r\n handleExcelImportSuccess() {\r\n this.$message.success(\"导入成功\")\r\n this.load()\r\n }\r\n }\r\n }\r\n</script>\r\n\r\n\r\n<style>\r\n .headerBg {\r\n background: #eee!important;\r\n }\r\n</style>\r\n"]}]} |