Commit c0b69381 authored by 赵啸非's avatar 赵啸非

修改考勤汇总

parent 3db4eab4
......@@ -4,172 +4,171 @@
<div class="search-form-wapper">
<el-form :inline="true" :model="form" ref="search-form" size="small">
<el-form-item
v-for="(item, i) in search"
:key="i"
v-bind:class="{ search_new_line: item.newLine }"
v-for="(item, i) in search"
:key="i"
v-bind:class="{ search_new_line: item.newLine }"
>
<el-input
v-model="form[item.name]"
v-if="item.type === 'text'"
:placeholder="
v-model="form[item.name]"
v-if="item.type === 'text'"
:placeholder="
item.placeholder ? item.placeholder : '请输入' + item.label
"
></el-input>
<el-checkbox-group
v-model="form[item.name]"
v-if="item.type === 'checkbox'"
v-model="form[item.name]"
v-if="item.type === 'checkbox'"
>
<el-checkbox
v-for="(label, value) in table.dict[item.name]"
:label="value"
:key="value"
>{{ label }}</el-checkbox
v-for="(label, value) in table.dict[item.name]"
:label="value"
:key="value"
>{{ label }}</el-checkbox
>
</el-checkbox-group>
<el-select
v-model="form[item.name]"
:filterable="item.filterable"
:multiple="item.multiple"
clearable="true"
@change="item.change"
@clear="item.clear"
:placeholder="item.label ? item.label : '请选择'"
v-if="item.type === 'select'"
v-model="form[item.name]"
:filterable="item.filterable"
:multiple="item.multiple"
clearable="true"
@change="item.change"
@clear="item.clear"
v-if="item.type === 'select'"
>
<el-option
label="全部"
value=""
v-if="!item.multiple && !item.notShowAll"
label="全部"
value=""
v-if="!item.multiple && !item.notShowAll"
></el-option>
<el-option
:label="label"
:value="value"
v-for="(label, value) in table.dict[item.name]"
:key="value"
:label="label"
:value="value"
v-for="(label, value) in table.dict[item.name]"
:key="value"
></el-option>
</el-select>
<el-select
v-model="form[item.name]"
clearable
:multiple="item.multiple"
filterable
remote
v-if="item.type === 'remoteSelect'"
placeholder="请输入关键词"
searchType="item.searchType"
:remote-method="
v-model="form[item.name]"
clearable
:multiple="item.multiple"
filterable
remote
v-if="item.type === 'remoteSelect'"
placeholder="请输入关键词"
searchType="item.searchType"
:remote-method="
(query) => {
remoteMethod(query, item.searchType);
}
"
>
<el-option
:label="label"
:value="value"
v-for="(label, value) in remoteOptions[item.searchType]"
:key="value"
:label="label"
:value="value"
v-for="(label, value) in remoteOptions[item.searchType]"
:key="value"
></el-option>
</el-select>
<el-cascader
placeholder="选择区域"
v-if="item.type === 'cascader'"
v-model="selectedTreeID"
:filterable="item.filterable"
clearable="true"
change-on-select
@change="treeSelecteds"
:options="treeDatas"
placeholder="选择区域"
v-if="item.type === 'cascader'"
v-model="selectedTreeID"
:filterable="item.filterable"
clearable="true"
change-on-select
@change="treeSelecteds"
:options="treeDatas"
></el-cascader>
<el-select
v-model="form[item.name]"
:multiple="item.multiple"
:remote-method="userRemoteMethod"
:loading="loading"
@focus="userRemoteMethod"
:reserve-keyword="item.reserve - keyword"
:clearable="item.clearable"
:placeholder="item.placeholder ? item.placeholder : '请输入用户'"
filterable
remote
v-if="item.type === 'userLoginNameRemoteSelect'"
v-model="form[item.name]"
:multiple="item.multiple"
:remote-method="userRemoteMethod"
:loading="loading"
@focus="userRemoteMethod"
:reserve-keyword="item.reserve - keyword"
:clearable="item.clearable"
:placeholder="item.placeholder ? item.placeholder : '请输入用户'"
filterable
remote
v-if="item.type === 'userLoginNameRemoteSelect'"
>
<el-option
v-for="i in userData"
:key="i.loginName"
:label="i.realName"
:value="i.loginName"
v-for="i in userData"
:key="i.loginName"
:label="i.realName"
:value="i.loginName"
></el-option>
</el-select>
<el-date-picker
v-model="form[item.name]"
v-if="item.type === 'date' && !item.valueFormat"
type="date"
value-format="yyyy-MM-dd"
:placeholder="item.label ? item.label : '选择日期'"
v-model="form[item.name]"
v-if="item.type === 'date' && !item.valueFormat"
type="date"
value-format="yyyy-MM-dd"
placeholder="选择日期"
>
</el-date-picker>
<el-date-picker
v-model="form[item.name]"
v-if="item.type === 'date' && item.valueFormat"
type="date"
:value-format="item.valueFormat"
:placeholder="item.label ? item.label : '选择日期'"
v-model="form[item.name]"
v-if="item.type === 'date' && item.valueFormat"
type="date"
:value-format="item.valueFormat"
placeholder="选择日期"
>
</el-date-picker>
<el-date-picker
v-model="form[item.name]"
v-if="item.type === 'month' && !item.valueFormat"
type="month"
value-format="yyyy-MM"
:placeholder="item.label ? item.label : '选择月份'"
v-model="form[item.name]"
v-if="item.type === 'month' && !item.valueFormat"
type="month"
value-format="yyyy-MM"
placeholder="选择月份"
>
</el-date-picker>
<el-date-picker
v-model="form[item.name]"
v-if="item.type === 'month' && item.valueFormat"
type="month"
:value-format="item.valueFormat"
:placeholder="item.label ? item.label : '选择月份'"
v-model="form[item.name]"
v-if="item.type === 'month' && item.valueFormat"
type="month"
:value-format="item.valueFormat"
placeholder="选择月份"
>
</el-date-picker>
<el-date-picker
v-model="form[item.name]"
v-if="item.type === 'datetime'"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
:placeholder="item.label"
v-model="form[item.name]"
v-if="item.type === 'datetime'"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
:placeholder="item.label"
>
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button
type="primary"
icon="el-icon-search"
@click="onSubmit"
title="查询"
>查询</el-button
type="primary" class="addclass"
icon="el-icon-search"
@click="onSubmit"
title="查询"
>查询</el-button
>
<el-button
icon="el-icon-download"
@click="downloadFile"
:loading="isDownload"
v-if="downloadUrl"
>下载</el-button
icon="el-icon-download"
@click="downloadFile"
:loading="isDownload"
v-if="downloadUrl"
>下载</el-button
>
<el-button icon="el-icon-refresh-left" @click="cleanForm" title="清空"
>清空</el-button
>清空</el-button
>
</el-form-item>
</el-form>
......@@ -194,16 +193,17 @@ export default {
},
watch: {
$route(route) {
console.log(222)
this.initForm(route.query);
},
},
async created() {
console.log("1111")
this.initForm(this.$route.query);
},
methods: {
remoteMethod(query, searchType) {
if (query == "") {
console.log("查询参数为空!");
return;
}
this.loading = true;
......@@ -220,8 +220,8 @@ export default {
});
this.remoteOptions[searchType] = Object.assign({}, tempOptions);
sessionStorage.setItem(
searchType + "OptionsDict",
JSON.stringify(this.remoteOptions[searchType])
searchType + "OptionsDict",
JSON.stringify(this.remoteOptions[searchType])
);
});
} catch (error) {}
......@@ -254,11 +254,12 @@ export default {
}
});
this.form = Object.assign({}, this.form, newFormData);
this.form = Object.assign({}, this.form, data);
// console.log(this.form,'dddddd')
// this.form = Object.assign({}, this.form, data);
// console.log("after form",this.form)
},
cleanForm() {
this.clean();
this.onSubmit();
},
// 清空表单值
clean() {
......@@ -267,61 +268,36 @@ export default {
if (item.name === "groupList") {
newData[item.name] = [];
} else {
newData[item.name] = item.multiple ? [] : "";
newData[item.name] = item.multiple ? [] : undefined;
}
});
this.form = Object.assign({}, this.form, newData);
this.onSubmit();
},
onSubmit() {
let { path, query } = this.$route;
if (this.form.attendanceDateStart && this.form.attendanceDateEnd) {
let startValue = Date.parse(this.form.attendanceDateStart);
let endValue = Date.parse(this.form.attendanceDateEnd);
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)
let data = this.decode(this.form);
console.log("data:",data)
console.log("form",this.form)
//delete this.form["deviceStatusList"]
this.$router.push({
path: path,
query: {
...query,
...data,
},
query: Object.assign({}, query, data),
});
//this.decodetwo(this.form)
},
// 解析url字符串,去除query字段
encode(data, formTemp) {
let newData = {};
Object.keys(Qs.parse(data)).forEach((item) => {
console.log(item);
if (/^query\./.test(item)) {
let val = data[item];
let key = item.replace(/^query\./, "");
this.search.forEach((obj) => {
if (
obj.name === key &&
obj.fuzzy === true &&
val &&
val.length > 0
obj.name === key &&
obj.fuzzy === true &&
val &&
val.length > 0
) {
//支持模糊查询,首尾去掉百分号
val = val.substring(1, val.length - 1);
......@@ -331,9 +307,9 @@ export default {
let isAreaTemp = ["areaId"];
let isAreaParam = isAreaTemp.includes(key);
newData[key] =
type(val) === "Array"
? val.map(isAreaParam ? Number : String)
: val;
type(val) === "Array"
? val.map(isAreaParam ? Number : String)
: val;
}
});
return newData;
......@@ -346,10 +322,10 @@ export default {
let val = data[item];
this.search.forEach((obj) => {
if (
obj.name === item &&
obj.fuzzy === true &&
val &&
val.length > 0
obj.name === item &&
obj.fuzzy === true &&
val &&
val.length > 0
) {
//支持模糊查询,收尾增加百分号
val = val.trim();
......@@ -365,6 +341,34 @@ export default {
});
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) {
let valType = type(val);
if (["Number", "Boolean"].indexOf(valType) > -1) {
......@@ -386,7 +390,7 @@ export default {
data() {
return {
form: {
// groupList: [],
groupList: [],
},
remoteOptions: {},
};
......@@ -424,3 +428,4 @@ export default {
}
}
</style>
......@@ -470,6 +470,7 @@ export default {
formatter: this.formatterDateOnly,
},
{ label: "员工姓名", prop: "staffName" },
{ label: "员工工号", prop: "workNum" },
{
label: "考勤组",
prop: "attendanceGroupName",
......
......@@ -4,7 +4,7 @@ import java.util.LinkedHashMap;
import java.util.Map;
/**
* 评价来源(窗口评价系统,导视系统,自助服务系统,微官网,其它)枚举类
* 核查结果(1.加分或扣分,2.不扣分)枚举类
*
* @author zxfei
*/
......@@ -31,9 +31,9 @@ public enum ReviewSourceEnum {
}
public static ReviewSourceEnum getByValue(String value) {
for (ReviewSourceEnum reviewSourceEnum : ReviewSourceEnum.values()) {
if (reviewSourceEnum.getValue() == value) {
return reviewSourceEnum;
for (ReviewSourceEnum checkResultEnum : ReviewSourceEnum.values()) {
if (checkResultEnum.getValue() == value) {
return checkResultEnum;
}
}
return null;
......
......@@ -53,6 +53,7 @@ public class CheckComplainRecordController extends BaseCRUDJsonBodyMappingContro
this.addDict(model, "checkResult", CheckResultEnum.getEnumMap());
this.addDict(model, "checkResultAdd", CheckResultAddEnum.getEnumMap());
this.addDict(model, "checkResultSub", CheckResultSubEnum.getEnumMap());
this.addDict(model, "complainSource", ReviewSourceEnum.getEnumMap());
}
@Override
......
......@@ -65,6 +65,8 @@ public class CheckReviewRecordController extends BaseCRUDJsonBodyMappingControll
this.addDict(model, "checkResult", CheckResultEnum.getEnumMap());
this.addDict(model, "checkResultAdd", CheckResultAddEnum.getEnumMap());
this.addDict(model, "checkResultSub", CheckResultSubEnum.getEnumMap());
this.addDict(model, "reviewSource", ReviewSourceEnum.getEnumMap());
}
@Override
......
......@@ -3,6 +3,8 @@ import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.perform.model.PerformRulesEntity;
import java.util.ArrayList;
import java.util.List;
import com.mortals.xhx.module.perform.model.PerformRulesQuery;
import lombok.Data;
/**
* 绩效规则信息视图对象
......@@ -15,4 +17,13 @@ public class PerformRulesVo extends BaseEntityLong {
/** 类型名称 **/
private String typeName;
/** 规则编码,唯一,默认规则类型内容简称拼音首字母。排除列表 */
private List <String> ruleCodeNotList;
/** OR条件集合,列表项之间是OR,项内容之间是AND,如:(list[0].1 and list[0].2) or (list[1].3 and list[1].4) */
private List<PerformRulesQuery> orConditionList;
/** AND条件集合,列表项之间是AND,项内容之间是OR,如:(list[0].1 or list[0].2) and (list[1].3 or list[1].4) */
private List<PerformRulesQuery> andConditionList;
}
\ No newline at end of file
package com.mortals.xhx.module.perform.web;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.common.code.*;
import org.apache.tomcat.jni.Proc;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import com.mortals.framework.model.Context;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.module.perform.model.PerformComplainRecordEntity;
import com.mortals.xhx.module.perform.service.PerformComplainRecordService;
import org.apache.commons.lang3.ArrayUtils;
import com.mortals.framework.util.StringUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import com.alibaba.fastjson.JSONObject;
import java.util.Arrays;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;
import static com.mortals.framework.ap.SysConstains.*;
/**
*
* 评价绩效投诉记录信息
*
* @author zxfei
* @date 2023-07-11
*/
* 评价绩效投诉记录信息
*
* @author zxfei
* @date 2023-07-11
*/
@RestController
@RequestMapping("perform/complain/record")
public class PerformComplainRecordController extends BaseCRUDJsonBodyMappingController<PerformComplainRecordService,PerformComplainRecordEntity,Long> {
public class PerformComplainRecordController extends BaseCRUDJsonBodyMappingController<PerformComplainRecordService, PerformComplainRecordEntity, Long> {
@Autowired
private ParamService paramService;
public PerformComplainRecordController(){
super.setModuleDesc( "评价绩效投诉记录信息");
public PerformComplainRecordController() {
super.setModuleDesc("评价绩效投诉记录信息");
}
@Override
protected void init(Map<String, Object> model, Context context) {
this.addDict(model, "processStatus", ProcessStatusEnum.getEnumMap());
this.addDict(model, "processStatus", ProcessStatusEnum.getEnumMap());
this.addDict(model, "checkStatus", CheckStatusEnum.getEnumMap());
this.addDict(model, "subMethod", SubMethodEnum.getEnumMap());
this.addDict(model, "subAddType", SubAddTypeEnum.getEnumMap());
this.addDict(model, "checkType", CheckTypeEnum.getEnumMap());
this.addDict(model, "complainSource", ReviewSourceEnum.getEnumMap());
super.init(model, context);
}
......
......@@ -54,6 +54,8 @@ public class PerformReviewRecordController extends BaseCRUDJsonBodyMappingContro
this.addDict(model, "subAddType", SubAddTypeEnum.getEnumMap());
this.addDict(model, "checkType", CheckTypeEnum.getEnumMap());
this.addDict(model, "reviewSource", ReviewSourceEnum.getEnumMap());
super.init(model, context);
}
......
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