Commit 87216c4f authored by 廖旭伟's avatar 廖旭伟

Merge remote-tracking branch 'origin/master'

parents 69ebf551 47ca8729
...@@ -4,46 +4,62 @@ ...@@ -4,46 +4,62 @@
title="批量处理" title="批量处理"
:visible.sync="open" :visible.sync="open"
:direction="direction" :direction="direction"
size="50%"> size="50%"
>
<div style="padding:20px;font-size:15px"> <div style="padding:20px;font-size:15px">
<div> <div>已选择{{ selection.length }}个:</div>
已选择{{selection.length}}个:
</div>
<div class="staffList mt20"> <div class="staffList mt20">
<div v-for="item in selection" :key="item" class="mt10"> <div v-for="item in selection" :key="item" class="mt10">
<span> {{item.staffName}} </span> <span> {{ item.staffName }} </span>
<span>{{item.goOrOff}} 时间 {{item.goOffDateTime}} 打卡异常状态</span> <span
>{{ item.goOrOff }} 时间
{{ item.goOffDateTime }} 打卡异常状态</span
>
<span class="ml10" style="color:#f56c6c"> <span class="ml10" style="color:#f56c6c">
{{dict['errorStatus'][item.errorStatus]}} {{ dict["errorStatus"][item.errorStatus] }}
</span> </span>
<span class="ml10">修改为</span> <span class="ml10">修改为</span>
</div> </div>
<div class="mt10"> <div class="mt10">
<!--
<!--
<Field label="" v-model="dealParams.processResult" type="select" :enumData="dict.errorStatus"/> <Field label="" v-model="dealParams.processResult" type="select" :enumData="dict.errorStatus"/>
--> -->
<!-- 处理异常状态 --> <!-- 处理异常状态 -->
<el-select v-model="dealParams.processResult"> <el-select v-model="dealParams.errorStatus">
<el-option <el-option
v-for='($label, $value) in dict.errorStatus' v-for="($label, $value) in dict.errorStatus"
:key="$value" :key="$value"
:label="$label" :label="$label"
:value="$value"> :value="$value"
>
</el-option> </el-option>
</el-select> </el-select>
<!-- 早退/迟到 --> <!-- 早退/迟到 -->
<el-input style="width:220px" placeholder="请输入数字" :maxlength="4" v-model="duration" <el-input
v-if="dealParams.processResult == '1'|| dealParams.processResult == '2'" style="width:220px"
class="ml20" type="number"> placeholder="请输入数字"
:maxlength="4"
v-model="duration"
v-if="
dealParams.errorStatus == '1' || dealParams.errorStatus == '2'
"
class="ml20"
type="number"
>
<template slot="append">分钟</template> <template slot="append">分钟</template>
</el-input> </el-input>
</div> </div>
<div class="mt10"> <div class="mt10">
<span>备注:</span> <span>处理结果:</span>
<el-input placeholder="请输入备注" type="textarea" show-word-limit class="mt10" <el-input
:maxlength="50" v-model="dealParams.remark"></el-input> placeholder="请输入处理结果"
type="textarea"
show-word-limit
class="mt10"
:maxlength="50"
v-model="dealParams.processResult"
></el-input>
</div> </div>
</div> </div>
<div class="mt20"> <div class="mt20">
...@@ -51,16 +67,13 @@ ...@@ -51,16 +67,13 @@
<el-button @click="cancleFn">取消</el-button> <el-button @click="cancleFn">取消</el-button>
</div> </div>
</div> </div>
</el-drawer> </el-drawer>
</template> </template>
<script> <script>
export default { export default {
name: "AttendanceRecordDetail", name: "AttendanceRecordDetail",
created() { created() {},
},
data() { data() {
return { return {
// 遮罩层 // 遮罩层
...@@ -69,100 +82,105 @@ ...@@ -69,100 +82,105 @@
title: "考勤打卡记录信息", title: "考勤打卡记录信息",
// 是否显示弹出层 // 是否显示弹出层
open: false, open: false,
direction:"rtl", direction: "rtl",
toString: ["processResult"], toString: ["processResult", "errorStatus"],
// 表单校验 // 表单校验
rules: { rules: {
staffName: [ staffName: [
{required: true,message: "请输入员工姓名", trigger: "blur" }, { required: true, message: "请输入员工姓名", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",}, { max: 64, message: "最多只能录入64个字符", trigger: "blur" },
],
createTime: [
{required: true,message: "请选择创建时间" },
], ],
createTime: [{ required: true, message: "请选择创建时间" }],
}, },
dealParams:{ dealParams: {
remark:'', remark: "",
errorStatus:null, errorStatus: null,
durtion:0, durtion: 0,
processResult:'', processResult: "",
recordErrorEntities:[],//处理员工 recordErrorEntities: [], //处理员工
processStatus:1//处理状态 processStatus: 1, //处理状态
}, },
selection:[], selection: [],
query:{}, query: {},
urls:{ urls: {
currUrl:'', currUrl: "",
saveUrl:'attendance/record/error/save' saveUrl: "attendance/record/error/save",
}, },
dict:{ dict: {
errorStatus:'' errorStatus: "",
}, },
duration:'' duration: "",
} };
}, },
methods: { methods: {
// 渲染前置处理 // 渲染前置处理
beforeRender(data) { beforeRender(data) {
return data return data;
}, },
/** 编辑 */ /** 编辑 */
edit(row,selection) { edit(row, selection) {
if(selection.length<1){ if (selection.length < 1) {
this.selection = [row] this.selection = [row];
this.query = { id: row.id }; this.query = { id: row.id };
}else{ } else {
this.selection = selection this.selection = selection;
this.query = {id:this.selection[0].id} this.query = { id: this.selection[0].id };
} }
this.dealParams.recordErrorEntities = this.selection this.dealParams.recordErrorEntities = this.selection;
this.urls.currUrl ="attendance/record/error/edit"; this.urls.currUrl = "attendance/record/error/edit";
this.getInital(this.query.id) this.getInital(this.query.id);
}, },
/**获取数据后弹框 */ /**获取数据后弹框 */
afterRender(data) { afterRender(data) {
this.open = true; this.open = true;
}, },
getInital(id){ getInital(id) {
this.$post(this.urls.currUrl+'?id='+id).then(res => { this.$post(this.urls.currUrl + "?id=" + id).then((res) => {
if(res.code == 1){ if (res.code == 1) {
this.afterRender() this.afterRender();
this.dict = res.data.dict this.dict = res.data.dict;
} }
}) });
}, },
// 保存 // 保存
saveForm(){ saveForm() {
if(this.dealParams.processResult == ''){ if (this.dealParams.errorStatus == "") {
this.$message.error('请选择处理结果') this.$message.error("请选择处理结果");
return return;
} }
this.dealParams.errorStatus=this.dealParams.processResult this.dealParams.errorStatus = this.dealParams.errorStatus;
if(this.duration && (this.dealParams.processResult == '1' || this.dealParams.processResult == '2')){ if (
this.dealParams.processResult =this.dict.errorStatus[this.dealParams.processResult] + this.duration +'分钟' this.duration &&
this.dealParams.durtion=this.duration (this.dealParams.errorStatus == "1" ||
this.dealParams.errorStatus == "2")
) {
this.dealParams.errorStatus =
this.dict.errorStatus[this.dealParams.errorStatus] +
this.duration +
"分钟";
this.dealParams.durtion = this.duration;
} }
// 保存结果处理 // 保存结果处理
this.$post(this.urls.saveUrl,this.dealParams).then(res => { this.$post(this.urls.saveUrl, this.dealParams).then((res) => {
if(res.code == 1){ if (res.code == 1) {
this.cancleFn() this.cancleFn();
} }
}) });
}, },
cancleFn(){ cancleFn() {
this.open = false this.open = false;
this.dealParams = { this.dealParams = {
remark:'', remark: "",
errorStatus:null, errorStatus: null,
durtion:0, durtion: 0,
processResult:'', processResult: "",
recordErrorEntities:[],//处理员工 recordErrorEntities: [], //处理员工
processStatus:1//处理状态 processStatus: 1, //处理状态
} };
this.$emit("ok") this.$emit("ok");
} },
} },
} };
</script> </script>
...@@ -7,12 +7,15 @@ ...@@ -7,12 +7,15 @@
size="mini" size="mini"
type="primary" type="primary"
@click="morehandle" @click="morehandle"
>批量处理</el-button> >批量处理</el-button
>
</LayoutTable> </LayoutTable>
<drawer-show ref="drawerShow" @ok="getData" /> <drawer-show ref="drawerShow" @ok="getData" />
<!-- 撤销提示 --> <!-- 撤销提示 -->
<el-dialog :visible.sync="dialogVisible" title="提示" width="40%"> <el-dialog :visible.sync="dialogVisible" title="提示" width="40%">
<div>撤销异常处理结果后,当天的考勤结果将会重新计算,系统需要花费一点时间。</div> <div>
撤销异常处理结果后,当天的考勤结果将会重新计算,系统需要花费一点时间。
</div>
<div class="flex flex_end"> <div class="flex flex_end">
<el-button @click="dialogVisible = false">取消</el-button> <el-button @click="dialogVisible = false">取消</el-button>
<el-button type="primary" @click="resetError">确定</el-button> <el-button type="primary" @click="resetError">确定</el-button>
...@@ -22,17 +25,16 @@ ...@@ -22,17 +25,16 @@
</template> </template>
<script> <script>
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
import drawerShow from "./drawershow"; import drawerShow from "./drawershow";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
export default { export default {
name: "AttendanceRecordErrorList", name: "AttendanceRecordErrorList",
components: { components: {
drawerShow drawerShow,
}, },
mixins: [table], mixins: [table],
created() { created() {},
},
methods: { methods: {
/** 重写新增方法 */ /** 重写新增方法 */
// toAdd(row) { // toAdd(row) {
...@@ -47,58 +49,60 @@ ...@@ -47,58 +49,60 @@
// this.$refs.dialogform.view(row); // this.$refs.dialogform.view(row);
// }, // },
morehandle(){ morehandle() {
let arr = this.tableData.data.filter(item => { let arr = this.tableData.data.filter((item) => {
if(this.selection.includes(item.id) && item.processStatus == 0){ if (this.selection.includes(item.id) && item.processStatus == 0) {
return item return item;
} }
}) });
this.$nextTick(() => { this.$nextTick(() => {
this.selection = arr.map(item => item.id) this.selection = arr.map((item) => item.id);
}) });
if(arr.length < 1){ if (arr.length < 1) {
this.$message.error('请至少选择一条处理') this.$message.error("请至少选择一条处理");
return return;
} }
this.$refs.drawerShow.edit(arr[0],arr); this.$refs.drawerShow.edit(arr[0], arr);
}, },
// 处理 // 处理
handle(err){ handle(err) {
console.log(err) console.log(err);
this.$refs.drawerShow.edit(err,[]); this.$refs.drawerShow.edit(err, []);
}, },
// 撤销 // 撤销
reCancle(err){ reCancle(err) {
console.log(err) console.log(err);
this.currentParams = err this.currentParams = err;
this.dialogVisible = true this.dialogVisible = true;
}, },
resetError(){ resetError() {
this.$post('attendance/record/error/revokeError',{...this.currentParams}).then(res => { this.$post("attendance/record/error/revokeError", {
if(res.code == 1){ ...this.currentParams,
this.dialogVisible = false }).then((res) => {
this.getData() if (res.code == 1) {
} this.dialogVisible = false;
}) this.getData();
} }
});
},
}, },
data() { data() {
return { return {
config: { config: {
isshowTabPane:true, isshowTabPane: true,
search: [ search: [
{ {
name: "deptId", name: "deptId",
type: "select", type: "select",
label: "全部部门" label: "全部部门",
}, },
{ {
name: "groupId", name: "groupId",
type: "select", type: "select",
label: "全部考勤组" label: "全部考勤组",
}, },
/* { /* {
name: "classId", name: "classId",
type: "select", type: "select",
label: "全部班次", label: "全部班次",
...@@ -107,83 +111,121 @@ ...@@ -107,83 +111,121 @@
{ {
name: "errorStatus", name: "errorStatus",
type: "select", type: "select",
label: "全部异常状态" label: "全部异常状态",
}, },
{ {
name: "processStatus", name: "processStatus",
type: "select", type: "select",
label: "全部处理状态" label: "全部处理状态",
}, },
{ {
name:'errorDateTimeStart', name: "errorDateTimeStart",
type: "date", type: "date",
label: "异常开始时间" label: "异常开始时间",
}, },
{ {
name:'attendanceDateEnd', name: "attendanceDateEnd",
type: "date", type: "date",
label: "errorDateTimeEnd" label: "errorDateTimeEnd",
}, },
{ {
name: "staffName", name: "staffName",
type: "text", type: "text",
label: "员工姓名", label: "员工姓名",
fuzzy: true fuzzy: true,
}, },
{ {
name: "phoneNumber", name: "phoneNumber",
type: "text", type: "text",
label: "手机号", label: "手机号",
fuzzy: true fuzzy: true,
}, },
], ],
columns: [ columns: [
{type: "selection", width: 60,fixed:'left'}, { type: "selection", width: 60, fixed: "left" },
{type: "index",label: "序号",width: 50,fixed:'left'}, { type: "index", label: "序号", width: 50, fixed: "left" },
{label: "员工姓名", prop: "staffName",fixed:'left',width:100}, { label: "员工姓名", prop: "staffName", fixed: "left", width: 100 },
{label: "工号", prop: "workNum"}, { label: "工号", prop: "workNum" },
{label: "部门", prop: "deptName"}, { label: "部门", prop: "deptName" },
{label: "考勤组", prop: "attendanceGroupName"}, { label: "考勤组", prop: "attendanceGroupName" },
/* {label: "班次", prop: "shiftsName"},*/ /* {label: "班次", prop: "shiftsName"},*/
{label: "异常状态", prop: "errorStatus",formatter: this.formattereErrorStatus}, {
{label: "异常时间", prop: "errorDateTime", formatter: this.formatterDate}, label: "异常状态",
{label: "处理结果", prop: "processResult", formatter: this.formatters}, prop: "errorStatus",
{label: "上下班时间", prop: "goOffDateTime",formatter:(row) => { formatter: this.formattereErrorStatus,
return row.goOrOff+" "+row.goOffDateTime },
}}, {
{label: "实际打卡时间", prop: "actualAttendanceDateTime", formatter: this.formatterDate}, label: "异常时间",
{label: "处理时间", prop: "operDateTime", formatter: this.formatterDate}, prop: "errorDateTime",
{label: "处理状态", prop: "processStatus",formatter: this.formattereDealStatus}, formatter: this.formatterDate,
{label: "处理人", prop: "opertor",formatter:this.formatters}, },
{label: "备注", prop: "remark",formatter:this.formatters}, {
label: "处理结果",
prop: "processResult",
formatter: this.formatters,
},
{
label: "上下班时间",
prop: "goOffDateTime",
formatter: (row) => {
return row.goOrOff + " " + row.goOffDateTime;
},
},
{
label: "实际打卡时间",
prop: "actualAttendanceDateTime",
formatter: this.formatterDate,
},
{
label: "处理时间",
prop: "operDateTime",
formatter: this.formatterDate,
},
{
label: "处理状态",
prop: "processStatus",
formatter: this.formattereDealStatus,
},
{ label: "处理人", prop: "opertor", formatter: this.formatters },
{ label: "备注", prop: "remark", formatter: this.formatters },
{ {
label: "操作", label: "操作",
width: 240, width: 240,
formatter: (row) => { formatter: (row) => {
if(row.processStatus == 0 || !row.processStatus){ if (row.processStatus == 0 || !row.processStatus) {
return( return (
<el-button type="text" size='mini' onClick={() => { <el-button
this.handle(row) type="text"
}}>处理</el-button> size="mini"
) onClick={() => {
}else{ this.handle(row);
}}
>
处理
</el-button>
);
} else {
return ( return (
<span> <span>
<el-button
<el-button type="text" size='mini' onClick={() => { type="text"
this.reCancle(row) size="mini"
}}>撤销</el-button> onClick={() => {
this.reCancle(row);
}}
>
撤销
</el-button>
</span> </span>
) );
}
}
} }
]
}, },
dialogVisible:false, },
currentParams:{} ],
} },
} dialogVisible: false,
} currentParams: {},
};
},
};
</script> </script>
...@@ -102,8 +102,11 @@ export default { ...@@ -102,8 +102,11 @@ export default {
methods: { methods: {
// 处理 // 处理
handleArr(arr, currentTime) { handleArr(arr, currentTime) {
let index = arr.findIndex((item) => item.createTime === currentTime); console.log(currentTime);
console.log(arr);
let index = arr.findIndex((item) => item.createTime == currentTime);
if (index > -1) { if (index > -1) {
console.log(arr[index].attendanceSummary);
return arr[index].attendanceSummary; return arr[index].attendanceSummary;
} else { } else {
return "-"; return "-";
...@@ -263,16 +266,21 @@ export default { ...@@ -263,16 +266,21 @@ export default {
{ label: "出勤天数", prop: "goTimes", formatter: this.formatter }, { label: "出勤天数", prop: "goTimes", formatter: this.formatter },
{ {
label: "上午缺卡次数", label: "缺卡次数",
prop: "morningTimes", prop: "morningTimes",
formatter: this.formatter, formatter: this.formatter,
}, },
// {
// label: "上午缺卡次数",
// prop: "morningTimes",
// formatter: this.formatter,
// },
{ // {
label: "下午缺卡次数", // label: "下午缺卡次数",
prop: "afternoonTimes", // prop: "afternoonTimes",
formatter: this.formatter, // formatter: this.formatter,
}, // },
{ label: "回单位(天)", prop: "backToUnit" }, { label: "回单位(天)", prop: "backToUnit" },
{ label: "因公请假(天)", prop: "onDutyLeave" }, { label: "因公请假(天)", prop: "onDutyLeave" },
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment