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

修改考勤汇总

parent 3db4eab4
...@@ -4,172 +4,171 @@ ...@@ -4,172 +4,171 @@
<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"
:placeholder="item.label ? item.label : '请选择'" v-if="item.type === 'select'"
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="item.label ? item.label : '选择日期'" placeholder="选择日期"
> >
</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="item.label ? item.label : '选择日期'" placeholder="选择日期"
> >
</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="item.label ? item.label : '选择月份'" placeholder="选择月份"
> >
</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="item.label ? item.label : '选择月份'" placeholder="选择月份"
> >
</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" type="primary" class="addclass"
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>
...@@ -194,16 +193,17 @@ export default { ...@@ -194,16 +193,17 @@ 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,11 +254,12 @@ export default { ...@@ -254,11 +254,12 @@ 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(this.form,'dddddd') // console.log("after form",this.form)
}, },
cleanForm() { cleanForm() {
this.clean(); this.clean();
this.onSubmit();
}, },
// 清空表单值 // 清空表单值
clean() { clean() {
...@@ -267,61 +268,36 @@ export default { ...@@ -267,61 +268,36 @@ export default {
if (item.name === "groupList") { if (item.name === "groupList") {
newData[item.name] = []; newData[item.name] = [];
} else { } else {
newData[item.name] = item.multiple ? [] : ""; newData[item.name] = item.multiple ? [] : undefined;
} }
}); });
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;
if (this.form.attendanceDateStart && this.form.attendanceDateEnd) { let data = this.decode(this.form);
let startValue = Date.parse(this.form.attendanceDateStart); console.log("data:",data)
let endValue = Date.parse(this.form.attendanceDateEnd); console.log("form",this.form)
if (startValue > endValue) { //delete this.form["deviceStatusList"]
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: { query: Object.assign({}, query, data),
...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);
...@@ -331,9 +307,9 @@ export default { ...@@ -331,9 +307,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;
...@@ -346,10 +322,10 @@ export default { ...@@ -346,10 +322,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();
...@@ -365,6 +341,34 @@ export default { ...@@ -365,6 +341,34 @@ 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) {
...@@ -386,7 +390,7 @@ export default { ...@@ -386,7 +390,7 @@ export default {
data() { data() {
return { return {
form: { form: {
// groupList: [], groupList: [],
}, },
remoteOptions: {}, remoteOptions: {},
}; };
...@@ -424,3 +428,4 @@ export default { ...@@ -424,3 +428,4 @@ export default {
} }
} }
</style> </style>
...@@ -470,6 +470,7 @@ export default { ...@@ -470,6 +470,7 @@ export default {
formatter: this.formatterDateOnly, formatter: this.formatterDateOnly,
}, },
{ label: "员工姓名", prop: "staffName" }, { label: "员工姓名", prop: "staffName" },
{ label: "员工工号", prop: "workNum" },
{ {
label: "考勤组", label: "考勤组",
prop: "attendanceGroupName", prop: "attendanceGroupName",
......
...@@ -4,7 +4,7 @@ import java.util.LinkedHashMap; ...@@ -4,7 +4,7 @@ import java.util.LinkedHashMap;
import java.util.Map; import java.util.Map;
/** /**
* 评价来源(窗口评价系统,导视系统,自助服务系统,微官网,其它)枚举类 * 核查结果(1.加分或扣分,2.不扣分)枚举类
* *
* @author zxfei * @author zxfei
*/ */
...@@ -31,9 +31,9 @@ public enum ReviewSourceEnum { ...@@ -31,9 +31,9 @@ public enum ReviewSourceEnum {
} }
public static ReviewSourceEnum getByValue(String value) { public static ReviewSourceEnum getByValue(String value) {
for (ReviewSourceEnum reviewSourceEnum : ReviewSourceEnum.values()) { for (ReviewSourceEnum checkResultEnum : ReviewSourceEnum.values()) {
if (reviewSourceEnum.getValue() == value) { if (checkResultEnum.getValue() == value) {
return reviewSourceEnum; return checkResultEnum;
} }
} }
return null; return null;
......
...@@ -53,6 +53,7 @@ public class CheckComplainRecordController extends BaseCRUDJsonBodyMappingContro ...@@ -53,6 +53,7 @@ public class CheckComplainRecordController extends BaseCRUDJsonBodyMappingContro
this.addDict(model, "checkResult", CheckResultEnum.getEnumMap()); this.addDict(model, "checkResult", CheckResultEnum.getEnumMap());
this.addDict(model, "checkResultAdd", CheckResultAddEnum.getEnumMap()); this.addDict(model, "checkResultAdd", CheckResultAddEnum.getEnumMap());
this.addDict(model, "checkResultSub", CheckResultSubEnum.getEnumMap()); this.addDict(model, "checkResultSub", CheckResultSubEnum.getEnumMap());
this.addDict(model, "complainSource", ReviewSourceEnum.getEnumMap());
} }
@Override @Override
......
...@@ -65,6 +65,8 @@ public class CheckReviewRecordController extends BaseCRUDJsonBodyMappingControll ...@@ -65,6 +65,8 @@ public class CheckReviewRecordController extends BaseCRUDJsonBodyMappingControll
this.addDict(model, "checkResult", CheckResultEnum.getEnumMap()); this.addDict(model, "checkResult", CheckResultEnum.getEnumMap());
this.addDict(model, "checkResultAdd", CheckResultAddEnum.getEnumMap()); this.addDict(model, "checkResultAdd", CheckResultAddEnum.getEnumMap());
this.addDict(model, "checkResultSub", CheckResultSubEnum.getEnumMap()); this.addDict(model, "checkResultSub", CheckResultSubEnum.getEnumMap());
this.addDict(model, "reviewSource", ReviewSourceEnum.getEnumMap());
} }
@Override @Override
......
...@@ -3,6 +3,8 @@ import com.mortals.framework.model.BaseEntityLong; ...@@ -3,6 +3,8 @@ import com.mortals.framework.model.BaseEntityLong;
import com.mortals.xhx.module.perform.model.PerformRulesEntity; import com.mortals.xhx.module.perform.model.PerformRulesEntity;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import com.mortals.xhx.module.perform.model.PerformRulesQuery;
import lombok.Data; import lombok.Data;
/** /**
* 绩效规则信息视图对象 * 绩效规则信息视图对象
...@@ -15,4 +17,13 @@ public class PerformRulesVo extends BaseEntityLong { ...@@ -15,4 +17,13 @@ public class PerformRulesVo extends BaseEntityLong {
/** 类型名称 **/ /** 类型名称 **/
private String typeName; 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; package com.mortals.xhx.module.perform.web;
import com.mortals.framework.web.BaseCRUDJsonBodyMappingController; import com.mortals.framework.web.BaseCRUDJsonBodyMappingController;
import com.mortals.xhx.base.system.param.service.ParamService; import com.mortals.xhx.base.system.param.service.ParamService;
import com.mortals.xhx.common.code.*; import com.mortals.xhx.common.code.*;
import org.apache.tomcat.jni.Proc;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
import com.mortals.framework.model.Context; 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.model.PerformComplainRecordEntity;
import com.mortals.xhx.module.perform.service.PerformComplainRecordService; 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.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
* @author zxfei * @date 2023-07-11
* @date 2023-07-11 */
*/
@RestController @RestController
@RequestMapping("perform/complain/record") @RequestMapping("perform/complain/record")
public class PerformComplainRecordController extends BaseCRUDJsonBodyMappingController<PerformComplainRecordService,PerformComplainRecordEntity,Long> { public class PerformComplainRecordController extends BaseCRUDJsonBodyMappingController<PerformComplainRecordService, PerformComplainRecordEntity, Long> {
@Autowired @Autowired
private ParamService paramService; private ParamService paramService;
public PerformComplainRecordController(){ public PerformComplainRecordController() {
super.setModuleDesc( "评价绩效投诉记录信息"); super.setModuleDesc("评价绩效投诉记录信息");
} }
@Override @Override
protected void init(Map<String, Object> model, Context context) { 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, "checkStatus", CheckStatusEnum.getEnumMap());
this.addDict(model, "subMethod", SubMethodEnum.getEnumMap()); this.addDict(model, "subMethod", SubMethodEnum.getEnumMap());
this.addDict(model, "subAddType", SubAddTypeEnum.getEnumMap()); this.addDict(model, "subAddType", SubAddTypeEnum.getEnumMap());
this.addDict(model, "checkType", CheckTypeEnum.getEnumMap()); this.addDict(model, "checkType", CheckTypeEnum.getEnumMap());
this.addDict(model, "complainSource", ReviewSourceEnum.getEnumMap());
super.init(model, context); super.init(model, context);
} }
......
...@@ -54,6 +54,8 @@ public class PerformReviewRecordController extends BaseCRUDJsonBodyMappingContro ...@@ -54,6 +54,8 @@ public class PerformReviewRecordController extends BaseCRUDJsonBodyMappingContro
this.addDict(model, "subAddType", SubAddTypeEnum.getEnumMap()); this.addDict(model, "subAddType", SubAddTypeEnum.getEnumMap());
this.addDict(model, "checkType", CheckTypeEnum.getEnumMap()); this.addDict(model, "checkType", CheckTypeEnum.getEnumMap());
this.addDict(model, "reviewSource", ReviewSourceEnum.getEnumMap());
super.init(model, context); 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