|
@@ -50,12 +50,18 @@
|
|
></el-date-picker>
|
|
></el-date-picker>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
<el-form-item>
|
|
<el-form-item>
|
|
|
|
+ <el-button
|
|
|
|
+ type="primary"
|
|
|
|
+ size="mini"
|
|
|
|
+ style="margin-left: 8px"
|
|
|
|
+ @click="handleQuery('queryForm')"
|
|
|
|
+ >查询</el-button>
|
|
<el-button
|
|
<el-button
|
|
type="info"
|
|
type="info"
|
|
size="mini"
|
|
size="mini"
|
|
style="margin-left: 8px"
|
|
style="margin-left: 8px"
|
|
@click="handleReset('queryForm')"
|
|
@click="handleReset('queryForm')"
|
|
- >重置</el-button>
|
|
|
|
|
|
+ >重置</el-button>
|
|
</el-form-item>
|
|
</el-form-item>
|
|
</div>
|
|
</div>
|
|
</el-form>
|
|
</el-form>
|
|
@@ -67,9 +73,38 @@
|
|
plain
|
|
plain
|
|
icon="el-icon-download"
|
|
icon="el-icon-download"
|
|
:loading="downloadLoading"
|
|
:loading="downloadLoading"
|
|
- @click="downloadXls"
|
|
|
|
|
|
+ @click="exportXls"
|
|
>导出数据</el-button>
|
|
>导出数据</el-button>
|
|
</el-row>
|
|
</el-row>
|
|
|
|
+ <el-table
|
|
|
|
+ ref="table"
|
|
|
|
+ stripe
|
|
|
|
+ :data="tableData"
|
|
|
|
+ :height="tableHeight"
|
|
|
|
+ style="width: 100%">
|
|
|
|
+ <el-table-column label="姓名" fixed="left" prop="name"></el-table-column>
|
|
|
|
+ <el-table-column label="单位" prop="company"></el-table-column>
|
|
|
|
+ <el-table-column label="部门" prop="department"></el-table-column>
|
|
|
|
+ <el-table-column label="工号" prop="jobNumber"></el-table-column>
|
|
|
|
+ <el-table-column label="出勤天数" prop="workDays"></el-table-column>
|
|
|
|
+ <el-table-column label="休息天数" prop="restDays"></el-table-column>
|
|
|
|
+ <el-table-column label="迟到次数" prop="lateNum"></el-table-column>
|
|
|
|
+ <el-table-column label="早退次数" prop="leaveNum"></el-table-column>
|
|
|
|
+ <el-table-column label="上班缺卡次数" prop="missCardOnWorkCount"></el-table-column>
|
|
|
|
+ <el-table-column label="下班缺卡次数" prop="missCardOffWorkCount"></el-table-column>
|
|
|
|
+ <el-table-column label="旷工天数" prop="missCardAllDayCount"></el-table-column>
|
|
|
|
+ <template v-for="col in dayColumns">
|
|
|
|
+ <el-table-column :label="col.label" :prop="col.name" :key="col.name" width="200px">
|
|
|
|
+ <template slot-scope="{row}">
|
|
|
|
+ <div style="display:flex;flex-direction:column;">
|
|
|
|
+ <template v-for="(item,index) in row.workAttendanceMap[col.name]">
|
|
|
|
+ <div v-html="showItem(item)" :key="index"></div>
|
|
|
|
+ </template>
|
|
|
|
+ </div>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table-column>
|
|
|
|
+ </template>
|
|
|
|
+ </el-table>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</template>
|
|
<script>
|
|
<script>
|
|
@@ -110,7 +145,17 @@ export default {
|
|
downloadLoading: false,
|
|
downloadLoading: false,
|
|
tableHeight: "",
|
|
tableHeight: "",
|
|
timeRangesDefaultTime: [],
|
|
timeRangesDefaultTime: [],
|
|
- companyResult: ""
|
|
|
|
|
|
+ companyResult: "",
|
|
|
|
+ editorOption: {
|
|
|
|
+ modules: {
|
|
|
|
+ toolbar: "title" // 设置文本编辑器的头部是否展示
|
|
|
|
+ },
|
|
|
|
+ placeholder: "", // 文本框为空时 , 占位文本
|
|
|
|
+ theme: "snow" // 或者为 `bubble`
|
|
|
|
+ },
|
|
|
|
+ downloadUrl: "",
|
|
|
|
+ dayColumns: [],
|
|
|
|
+ tmplKey: ""
|
|
};
|
|
};
|
|
},
|
|
},
|
|
created() {
|
|
created() {
|
|
@@ -127,15 +172,52 @@ export default {
|
|
this.getCurrentMonthFirst();
|
|
this.getCurrentMonthFirst();
|
|
},
|
|
},
|
|
methods: {
|
|
methods: {
|
|
- handleReset(name) {
|
|
|
|
- this.$refs[name].resetFields();
|
|
|
|
|
|
+ showItem(item){
|
|
|
|
+ var content = [];
|
|
|
|
+
|
|
|
|
+ var arr = item.recordTime.split(' ');
|
|
|
|
+
|
|
|
|
+ if(arr.length>1){
|
|
|
|
+ content.push(arr[1]);
|
|
|
|
+ }
|
|
|
|
+ else{
|
|
|
|
+ content.push(arr[0]);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ content.push(" ");
|
|
|
|
+
|
|
|
|
+ if(item.classifier==1){
|
|
|
|
+ content.push("上班");
|
|
|
|
+ }
|
|
|
|
+ else{
|
|
|
|
+ content.push("下班");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ var fontColor = "";
|
|
|
|
+
|
|
|
|
+ if(item.result=="0"){
|
|
|
|
+ content.push("缺卡");
|
|
|
|
+ fontColor = "red";
|
|
|
|
+ }
|
|
|
|
+ else if(item.result=="1"){
|
|
|
|
+ content.push("打卡");
|
|
|
|
+ fontColor = "green";
|
|
|
|
+ }
|
|
|
|
+ else if(item.result=="2"){
|
|
|
|
+ content.push("迟到");
|
|
|
|
+ }
|
|
|
|
+ else if(item.result=="3"){
|
|
|
|
+ content.push("早退");
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return `<font color='${fontColor}'>` + content.join("") + '</font>';
|
|
},
|
|
},
|
|
- downloadXls() {
|
|
|
|
- //导出
|
|
|
|
|
|
+ handleQuery(){
|
|
var self = this;
|
|
var self = this;
|
|
|
|
+
|
|
this.$refs["queryForm"].validate(valid => {
|
|
this.$refs["queryForm"].validate(valid => {
|
|
if (valid) {
|
|
if (valid) {
|
|
- self.downloadLoading = true;
|
|
|
|
|
|
+ self.downloadLoading = true;
|
|
var formData = new FormData();
|
|
var formData = new FormData();
|
|
|
|
|
|
formData.append("companyId", self.queryModel.companyId);
|
|
formData.append("companyId", self.queryModel.companyId);
|
|
@@ -153,19 +235,69 @@ export default {
|
|
formData.append("startDate", startDate);
|
|
formData.append("startDate", startDate);
|
|
formData.append("endDate", endDate);
|
|
formData.append("endDate", endDate);
|
|
|
|
|
|
|
|
+ workAttendanceApi.statList(formData).then(function(response) {
|
|
|
|
+ var jsonData = response.data;
|
|
|
|
+
|
|
|
|
+ self.downloadLoading = false;
|
|
|
|
+
|
|
|
|
+ if (jsonData.result) {
|
|
|
|
+ self.tableData = jsonData.data.list;
|
|
|
|
+ self.tableHeight = window.innerHeight - 280;
|
|
|
|
+ self.dayColumns = jsonData.data.dayColumns;
|
|
|
|
+ self.tmplKey = jsonData.data.tmplKey;
|
|
|
|
+ } else {
|
|
|
|
+ self.$message({
|
|
|
|
+ type: "warning",
|
|
|
|
+ message: jsonData.message
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ handleReset(name) {
|
|
|
|
+ this.$refs[name].resetFields();
|
|
|
|
+ },
|
|
|
|
+ exportXls() {
|
|
|
|
+ var self = this;
|
|
|
|
+
|
|
|
|
+ //导出
|
|
|
|
+ this.$refs["queryForm"].validate(valid => {
|
|
|
|
+ if (valid) {
|
|
|
|
+ if(self.tmplKey==null || self.tmplKey.length==0){
|
|
|
|
+ self.$message.warning("请先查询!");
|
|
|
|
+ return;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ self.downloadLoading = true;
|
|
|
|
+
|
|
|
|
+ var formData = new FormData();
|
|
|
|
+ formData.append("tmplKey", self.tmplKey);
|
|
|
|
+
|
|
|
|
+ var startDate = "";
|
|
|
|
+ var endDate = "";
|
|
|
|
+ var timeRanges = self.queryModel.timeRanges + "";
|
|
|
|
+
|
|
|
|
+ if (timeRanges != "" && timeRanges != null) {
|
|
|
|
+ timeRanges = timeRanges.split(",");
|
|
|
|
+ startDate = timeRanges[0];
|
|
|
|
+ endDate = timeRanges[1];
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ formData.append("startDate", startDate);
|
|
|
|
+ formData.append("endDate", endDate);
|
|
|
|
+
|
|
workAttendanceApi.exportXls(formData).then(function(response) {
|
|
workAttendanceApi.exportXls(formData).then(function(response) {
|
|
var jsonData = response.data;
|
|
var jsonData = response.data;
|
|
|
|
+
|
|
self.downloadLoading = false;
|
|
self.downloadLoading = false;
|
|
|
|
+
|
|
if (jsonData.result) {
|
|
if (jsonData.result) {
|
|
- if (jsonData.data != null) {
|
|
|
|
- self.$message({
|
|
|
|
- type: "success",
|
|
|
|
- showClose: true,
|
|
|
|
- dangerouslyUseHTMLString: true,
|
|
|
|
- message: `导出成功,<a href="${jsonData.data}" target="_blank">请点击下载考勤报表</a> `,
|
|
|
|
- duration: 30000
|
|
|
|
- });
|
|
|
|
- }
|
|
|
|
|
|
+ self.$message({
|
|
|
|
+ type: "success",
|
|
|
|
+ message: `报表已生成,<a href="${jsonData.data}">请点击链接下载</a>`,
|
|
|
|
+ dangerouslyUseHTMLString: true
|
|
|
|
+ });
|
|
} else {
|
|
} else {
|
|
self.$message({
|
|
self.$message({
|
|
type: "warning",
|
|
type: "warning",
|