Commit 15f70ac8 authored by 赵啸非's avatar 赵啸非

修改考勤汇总

parent 0edd87c4
...@@ -4,171 +4,172 @@ ...@@ -4,171 +4,172 @@
<div class="search-form-wapper"> <div class="search-form-wapper">
<el-form :inline="true" :model="form" ref="search-form" size="small"> <el-form :inline="true" :model="form" ref="search-form" size="small">
<el-form-item <el-form-item
v-for="(item, i) in search" v-for="(item, i) in search"
:key="i" :key="i"
v-bind:class="{ search_new_line: item.newLine }" v-bind:class="{ search_new_line: item.newLine }"
> >
<el-input <el-input
v-model="form[item.name]" v-model="form[item.name]"
v-if="item.type === 'text'" v-if="item.type === 'text'"
:placeholder=" :placeholder="
item.placeholder ? item.placeholder : '请输入' + item.label item.placeholder ? item.placeholder : '请输入' + item.label
" "
></el-input> ></el-input>
<el-checkbox-group <el-checkbox-group
v-model="form[item.name]" v-model="form[item.name]"
v-if="item.type === 'checkbox'" v-if="item.type === 'checkbox'"
> >
<el-checkbox <el-checkbox
v-for="(label, value) in table.dict[item.name]" v-for="(label, value) in table.dict[item.name]"
:label="value" :label="value"
:key="value" :key="value"
>{{ label }}</el-checkbox >{{ label }}</el-checkbox
> >
</el-checkbox-group> </el-checkbox-group>
<el-select <el-select
v-model="form[item.name]" v-model="form[item.name]"
:filterable="item.filterable" :filterable="item.filterable"
:multiple="item.multiple" :multiple="item.multiple"
clearable="true" clearable="true"
@change="item.change" @change="item.change"
@clear="item.clear" @clear="item.clear"
v-if="item.type === 'select'" :placeholder="item.label ? item.label : '请选择'"
v-if="item.type === 'select'"
> >
<el-option <el-option
label="全部" label="全部"
value="" value=""
v-if="!item.multiple && !item.notShowAll" v-if="!item.multiple && !item.notShowAll"
></el-option> ></el-option>
<el-option <el-option
:label="label" :label="label"
:value="value" :value="value"
v-for="(label, value) in table.dict[item.name]" v-for="(label, value) in table.dict[item.name]"
:key="value" :key="value"
></el-option> ></el-option>
</el-select> </el-select>
<el-select <el-select
v-model="form[item.name]" v-model="form[item.name]"
clearable clearable
:multiple="item.multiple" :multiple="item.multiple"
filterable filterable
remote remote
v-if="item.type === 'remoteSelect'" v-if="item.type === 'remoteSelect'"
placeholder="请输入关键词" placeholder="请输入关键词"
searchType="item.searchType" searchType="item.searchType"
:remote-method=" :remote-method="
(query) => { (query) => {
remoteMethod(query, item.searchType); remoteMethod(query, item.searchType);
} }
" "
> >
<el-option <el-option
:label="label" :label="label"
:value="value" :value="value"
v-for="(label, value) in remoteOptions[item.searchType]" v-for="(label, value) in remoteOptions[item.searchType]"
:key="value" :key="value"
></el-option> ></el-option>
</el-select> </el-select>
<el-cascader <el-cascader
placeholder="选择区域" placeholder="选择区域"
v-if="item.type === 'cascader'" v-if="item.type === 'cascader'"
v-model="selectedTreeID" v-model="selectedTreeID"
:filterable="item.filterable" :filterable="item.filterable"
clearable="true" clearable="true"
change-on-select change-on-select
@change="treeSelecteds" @change="treeSelecteds"
:options="treeDatas" :options="treeDatas"
></el-cascader> ></el-cascader>
<el-select <el-select
v-model="form[item.name]" v-model="form[item.name]"
:multiple="item.multiple" :multiple="item.multiple"
:remote-method="userRemoteMethod" :remote-method="userRemoteMethod"
:loading="loading" :loading="loading"
@focus="userRemoteMethod" @focus="userRemoteMethod"
:reserve-keyword="item.reserve - keyword" :reserve-keyword="item.reserve - keyword"
:clearable="item.clearable" :clearable="item.clearable"
:placeholder="item.placeholder ? item.placeholder : '请输入用户'" :placeholder="item.placeholder ? item.placeholder : '请输入用户'"
filterable filterable
remote remote
v-if="item.type === 'userLoginNameRemoteSelect'" v-if="item.type === 'userLoginNameRemoteSelect'"
> >
<el-option <el-option
v-for="i in userData" v-for="i in userData"
:key="i.loginName" :key="i.loginName"
:label="i.realName" :label="i.realName"
:value="i.loginName" :value="i.loginName"
></el-option> ></el-option>
</el-select> </el-select>
<el-date-picker <el-date-picker
v-model="form[item.name]" v-model="form[item.name]"
v-if="item.type === 'date' && !item.valueFormat" v-if="item.type === 'date' && !item.valueFormat"
type="date" type="date"
value-format="yyyy-MM-dd" value-format="yyyy-MM-dd"
placeholder="选择日期" :placeholder="item.label ? item.label : '选择日期'"
> >
</el-date-picker> </el-date-picker>
<el-date-picker <el-date-picker
v-model="form[item.name]" v-model="form[item.name]"
v-if="item.type === 'date' && item.valueFormat" v-if="item.type === 'date' && item.valueFormat"
type="date" type="date"
:value-format="item.valueFormat" :value-format="item.valueFormat"
placeholder="选择日期" :placeholder="item.label ? item.label : '选择日期'"
> >
</el-date-picker> </el-date-picker>
<el-date-picker <el-date-picker
v-model="form[item.name]" v-model="form[item.name]"
v-if="item.type === 'month' && !item.valueFormat" v-if="item.type === 'month' && !item.valueFormat"
type="month" type="month"
value-format="yyyy-MM" value-format="yyyy-MM"
placeholder="选择月份" :placeholder="item.label ? item.label : '选择月份'"
> >
</el-date-picker> </el-date-picker>
<el-date-picker <el-date-picker
v-model="form[item.name]" v-model="form[item.name]"
v-if="item.type === 'month' && item.valueFormat" v-if="item.type === 'month' && item.valueFormat"
type="month" type="month"
:value-format="item.valueFormat" :value-format="item.valueFormat"
placeholder="选择月份" :placeholder="item.label ? item.label : '选择月份'"
> >
</el-date-picker> </el-date-picker>
<el-date-picker <el-date-picker
v-model="form[item.name]" v-model="form[item.name]"
v-if="item.type === 'datetime'" v-if="item.type === 'datetime'"
type="datetime" type="datetime"
value-format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss"
:placeholder="item.label" :placeholder="item.label"
> >
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button <el-button
type="primary" class="addclass" type="primary"
icon="el-icon-search" icon="el-icon-search"
@click="onSubmit" @click="onSubmit"
title="查询" title="查询"
>查询</el-button >查询</el-button
> >
<el-button <el-button
icon="el-icon-download" icon="el-icon-download"
@click="downloadFile" @click="downloadFile"
:loading="isDownload" :loading="isDownload"
v-if="downloadUrl" v-if="downloadUrl"
>下载</el-button >下载</el-button
> >
<el-button icon="el-icon-refresh-left" @click="cleanForm" title="清空" <el-button icon="el-icon-refresh-left" @click="cleanForm" title="清空"
>清空</el-button >清空</el-button
> >
</el-form-item> </el-form-item>
</el-form> </el-form>
...@@ -193,17 +194,16 @@ export default { ...@@ -193,17 +194,16 @@ export default {
}, },
watch: { watch: {
$route(route) { $route(route) {
console.log(222)
this.initForm(route.query); this.initForm(route.query);
}, },
}, },
async created() { async created() {
console.log("1111")
this.initForm(this.$route.query); this.initForm(this.$route.query);
}, },
methods: { methods: {
remoteMethod(query, searchType) { remoteMethod(query, searchType) {
if (query == "") { if (query == "") {
console.log("查询参数为空!");
return; return;
} }
this.loading = true; this.loading = true;
...@@ -220,8 +220,8 @@ export default { ...@@ -220,8 +220,8 @@ export default {
}); });
this.remoteOptions[searchType] = Object.assign({}, tempOptions); this.remoteOptions[searchType] = Object.assign({}, tempOptions);
sessionStorage.setItem( sessionStorage.setItem(
searchType + "OptionsDict", searchType + "OptionsDict",
JSON.stringify(this.remoteOptions[searchType]) JSON.stringify(this.remoteOptions[searchType])
); );
}); });
} catch (error) {} } catch (error) {}
...@@ -254,12 +254,11 @@ export default { ...@@ -254,12 +254,11 @@ export default {
} }
}); });
this.form = Object.assign({}, this.form, newFormData); this.form = Object.assign({}, this.form, newFormData);
// this.form = Object.assign({}, this.form, data); this.form = Object.assign({}, this.form, data);
// console.log("after form",this.form) // console.log(this.form,'dddddd')
}, },
cleanForm() { cleanForm() {
this.clean(); this.clean();
this.onSubmit();
}, },
// 清空表单值 // 清空表单值
clean() { clean() {
...@@ -268,36 +267,61 @@ export default { ...@@ -268,36 +267,61 @@ export default {
if (item.name === "groupList") { if (item.name === "groupList") {
newData[item.name] = []; newData[item.name] = [];
} else { } else {
newData[item.name] = item.multiple ? [] : undefined; newData[item.name] = item.multiple ? [] : "";
} }
}); });
this.form = Object.assign({}, this.form, newData); this.form = Object.assign({}, this.form, newData);
this.onSubmit();
}, },
onSubmit() { onSubmit() {
let { path, query } = this.$route; let { path, query } = this.$route;
let data = this.decode(this.form); if (this.form.attendanceDateStart && this.form.attendanceDateEnd) {
console.log("data:",data) let startValue = Date.parse(this.form.attendanceDateStart);
console.log("form",this.form) let endValue = Date.parse(this.form.attendanceDateEnd);
//delete this.form["deviceStatusList"] if (startValue > endValue) {
this.$message.error("查询-结束的日期需大于开始日期");
this.form.attendanceDateEnd = "";
return false;
}
}
if (this.form.startTime && this.form.endTime) {
let startValue = Date.parse(this.form.startTime);
let endValue = Date.parse(this.form.endTime);
if (startValue > endValue) {
this.$message.error("查询-结束的日期需大于开始日期");
this.form.endTime = "";
return false;
}
}
let params = JSON.parse(JSON.stringify(this.form)); //不更改原始数据
// console.log(this.form,'form参数')
let data = this.decode(params);
// Object.assign({}, query, data)
this.$router.push({ this.$router.push({
path: path, path: path,
query: Object.assign({}, query, data), query: {
...query,
...data,
},
}); });
//this.decodetwo(this.form)
}, },
// 解析url字符串,去除query字段 // 解析url字符串,去除query字段
encode(data, formTemp) { encode(data, formTemp) {
let newData = {}; let newData = {};
Object.keys(Qs.parse(data)).forEach((item) => { Object.keys(Qs.parse(data)).forEach((item) => {
console.log(item);
if (/^query\./.test(item)) { if (/^query\./.test(item)) {
let val = data[item]; let val = data[item];
let key = item.replace(/^query\./, ""); let key = item.replace(/^query\./, "");
this.search.forEach((obj) => { this.search.forEach((obj) => {
if ( if (
obj.name === key && obj.name === key &&
obj.fuzzy === true && obj.fuzzy === true &&
val && val &&
val.length > 0 val.length > 0
) { ) {
//支持模糊查询,首尾去掉百分号 //支持模糊查询,首尾去掉百分号
val = val.substring(1, val.length - 1); val = val.substring(1, val.length - 1);
...@@ -307,9 +331,9 @@ export default { ...@@ -307,9 +331,9 @@ export default {
let isAreaTemp = ["areaId"]; let isAreaTemp = ["areaId"];
let isAreaParam = isAreaTemp.includes(key); let isAreaParam = isAreaTemp.includes(key);
newData[key] = newData[key] =
type(val) === "Array" type(val) === "Array"
? val.map(isAreaParam ? Number : String) ? val.map(isAreaParam ? Number : String)
: val; : val;
} }
}); });
return newData; return newData;
...@@ -322,10 +346,10 @@ export default { ...@@ -322,10 +346,10 @@ export default {
let val = data[item]; let val = data[item];
this.search.forEach((obj) => { this.search.forEach((obj) => {
if ( if (
obj.name === item && obj.name === item &&
obj.fuzzy === true && obj.fuzzy === true &&
val && val &&
val.length > 0 val.length > 0
) { ) {
//支持模糊查询,收尾增加百分号 //支持模糊查询,收尾增加百分号
val = val.trim(); val = val.trim();
...@@ -341,34 +365,6 @@ export default { ...@@ -341,34 +365,6 @@ export default {
}); });
return newData; return newData;
}, },
decodetwo(data) {
let newData = { page: 1 };
Object.keys(data).forEach((item) => {
let val = data[item];
this.search.forEach((obj) => {
if (
obj.name === item &&
obj.fuzzy === true &&
val &&
val.length > 0
) {
//支持模糊查询,收尾增加百分号
val = val.trim();
if (val.charAt(0) == "%") {
val = val.slice(1);
}
if (val.charAt(val.length - 1) == "%") {
val = val + "%";
}
}
});
newData[item] = this.decodeVal(val);
});
return newData;
},
decodeVal(val) { decodeVal(val) {
let valType = type(val); let valType = type(val);
if (["Number", "Boolean"].indexOf(valType) > -1) { if (["Number", "Boolean"].indexOf(valType) > -1) {
...@@ -390,7 +386,7 @@ export default { ...@@ -390,7 +386,7 @@ export default {
data() { data() {
return { return {
form: { form: {
groupList: [], // groupList: [],
}, },
remoteOptions: {}, remoteOptions: {},
}; };
...@@ -428,4 +424,3 @@ export default { ...@@ -428,4 +424,3 @@ export default {
} }
} }
</style> </style>
...@@ -11,7 +11,7 @@ import lombok.Data; ...@@ -11,7 +11,7 @@ import lombok.Data;
* 请假记录信息实体对象 * 请假记录信息实体对象
* *
* @author zxfei * @author zxfei
* @date 2023-07-18 * @date 2023-07-19
*/ */
@Data @Data
public class AttendanceLeaveRecordEntity extends AttendanceLeaveRecordVo { public class AttendanceLeaveRecordEntity extends AttendanceLeaveRecordVo {
...@@ -20,11 +20,11 @@ public class AttendanceLeaveRecordEntity extends AttendanceLeaveRecordVo { ...@@ -20,11 +20,11 @@ public class AttendanceLeaveRecordEntity extends AttendanceLeaveRecordVo {
/** /**
* 请假人id * 请假人id
*/ */
@Excel(name = "请假人id")
private Long leavePersonId; private Long leavePersonId;
/** /**
* 请假人 * 请假人
*/ */
@Excel(name = "请假人")
private String leavePerson; private String leavePerson;
/** /**
* 所属部门id * 所属部门id
...@@ -37,26 +37,32 @@ public class AttendanceLeaveRecordEntity extends AttendanceLeaveRecordVo { ...@@ -37,26 +37,32 @@ public class AttendanceLeaveRecordEntity extends AttendanceLeaveRecordVo {
/** /**
* 电话号码 * 电话号码
*/ */
@Excel(name = "电话号码")
private String phoneNumber; private String phoneNumber;
/** /**
* 请假类型(1.事假,2.调休,3.病假,4.年假,5.产假,6.陪产假,7.婚假,8.例假,9.哺乳假,10.丧假,11.回单位,12.因公请假,13.外出勘验,14.值班补班,15.体检,16.隔离,17.因公外出,18.公休,19.育儿假,20.调回单位,21.探亲假) * 请假类型(1.事假,2.调休,3.病假,4.年假,5.产假,6.陪产假,7.婚假,8.例假,9.哺乳假,10.丧假,11.回单位,12.因公请假,13.外出勘验,14.值班补班,15.体检,16.隔离,17.因公外出,18.公休,19.育儿假,20.调回单位,21.探亲假)
*/ */
@Excel(name = "请假类型", readConverterExp = "1=事假,2.调休,3.病假,4.年假,5.产假,6.陪产假,7.婚假,8.例假,9.哺乳假,10.丧假,11.回单位,12.因公请假,13.外出勘验,14.值班补班,15.体检,16.隔离,17.因公外出,18.公休,19.育儿假,20.调回单位,21.探亲假")
private Integer leaveType; private Integer leaveType;
/** /**
* 开始时间 * 开始时间
*/ */
@Excel(name = "开始时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date startTime; private Date startTime;
/** /**
* 结束时间 * 结束时间
*/ */
@Excel(name = "结束时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date endTime; private Date endTime;
/** /**
* 时长,单位秒 * 时长,单位秒
*/ */
@Excel(name = "时长,单位秒")
private Integer duration; private Integer duration;
/** /**
* 请假事由 * 请假事由
*/ */
@Excel(name = "请假事由")
private String reason; private String reason;
/** /**
* 审批负责人Id * 审批负责人Id
...@@ -85,14 +91,17 @@ public class AttendanceLeaveRecordEntity extends AttendanceLeaveRecordVo { ...@@ -85,14 +91,17 @@ public class AttendanceLeaveRecordEntity extends AttendanceLeaveRecordVo {
/** /**
* 审核结果(1.申请通过,2.申请不通过) * 审核结果(1.申请通过,2.申请不通过)
*/ */
@Excel(name = "审核结果", readConverterExp = "1=申请通过,2.申请不通过")
private Integer auditResult; private Integer auditResult;
/** /**
* 审核说明 * 审核说明
*/ */
@Excel(name = "审核说明")
private String auditDesc; private String auditDesc;
/** /**
* 审核时间 * 审核时间
*/ */
@Excel(name = "审核时间", width = 30, dateFormat = "yyyy-MM-dd")
private Date auditTime; private Date auditTime;
/** /**
* 处理状态 * 处理状态
...@@ -116,7 +125,7 @@ public class AttendanceLeaveRecordEntity extends AttendanceLeaveRecordVo { ...@@ -116,7 +125,7 @@ public class AttendanceLeaveRecordEntity extends AttendanceLeaveRecordVo {
public void initAttrValue(){ public void initAttrValue(){
this.leavePersonId = null; this.leavePersonId = -1L;
this.leavePerson = ""; this.leavePerson = "";
...@@ -126,7 +135,7 @@ public class AttendanceLeaveRecordEntity extends AttendanceLeaveRecordVo { ...@@ -126,7 +135,7 @@ public class AttendanceLeaveRecordEntity extends AttendanceLeaveRecordVo {
this.phoneNumber = ""; this.phoneNumber = "";
this.leaveType = null; this.leaveType =null;
this.startTime = null; this.startTime = null;
......
...@@ -800,7 +800,7 @@ ALTER TABLE mortals_xhx_attendance_record ADD COLUMN `signOutResult` tinyint(2) ...@@ -800,7 +800,7 @@ ALTER TABLE mortals_xhx_attendance_record ADD COLUMN `signOutResult` tinyint(2)
ALTER TABLE mortals_xhx_attendance_record ADD COLUMN `attendType` varchar(128) DEFAULT '0' COMMENT '考勤类型' ; ALTER TABLE mortals_xhx_attendance_record ADD COLUMN `attendType` varchar(128) DEFAULT '0' COMMENT '考勤类型' ;
ALTER TABLE mortals_xhx_attendance_record ADD COLUMN `punchResult` tinyint(2) DEFAULT '0' COMMENT '打卡结果(0.否,1.是)'; ALTER TABLE mortals_xhx_attendance_record ADD COLUMN `punchResult` tinyint(2) DEFAULT '0' COMMENT '打卡结果(0.否,1.是)';
ALTER TABLE mortals_xhx_attendance_record_hik ADD COLUMN `signInResult` tinyint(2) DEFAULT '0' COMMENT '签到结果(0.否,1.是)' ; ALTER TABLE mortals_xhx_attendance_record_hik ADD COLUMN `signInResult` tinyint(2) DEFAULT '0' COMMENT '签到结果(0.否,1.是)' ;
ALTER TABLE mortals_xhx_attendance_record_hik ADD COLUMN `signOutResult` tinyint(2) DEFAULT '0' COMMENT '签退结果(0.否,1.是)'; ALTER TABLE mortals_xhx_attendance_record_hik ADD COLUMN `signOutResult` tinyint(2) DEFAULT '0' COMMENT '签退结果(0.否,1.是)';
ALTER TABLE mortals_xhx_attendance_record_hik ADD COLUMN `attendType` varchar(128) DEFAULT '0' COMMENT '考勤类型'; ALTER TABLE mortals_xhx_attendance_record_hik ADD COLUMN `attendType` varchar(128) DEFAULT '0' COMMENT '考勤类型';
ALTER TABLE mortals_xhx_attendance_record_hik ADD COLUMN `punchResult` tinyint(2) DEFAULT '0' COMMENT '打卡结果(0.否,1.是)'; ALTER TABLE mortals_xhx_attendance_record_hik ADD COLUMN `punchResult` tinyint(2) DEFAULT '0' COMMENT '打卡结果(0.否,1.是)';
......
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