Commit db41784e authored by “yiyousong”'s avatar “yiyousong”
parents c475638e 8667e872
...@@ -31,7 +31,8 @@ export default { ...@@ -31,7 +31,8 @@ export default {
</script> </script>
<style lang="less" scoped> <style lang="less" scoped>
#app { #app {
height:100vh;
.loading { .loading {
display: flex; display: flex;
align-items: center; align-items: center;
......
...@@ -11,8 +11,8 @@ html * { ...@@ -11,8 +11,8 @@ html * {
} }
html, html,
body { body {
height: 100%; /* height: 100%; */
min-height: 100%; /* min-height: 100%; */
font-family: "Microsoft Yahei", "Helvetica Neue", Helvetica, STHeiTi, Arial, sans-serif; font-family: "Microsoft Yahei", "Helvetica Neue", Helvetica, STHeiTi, Arial, sans-serif;
} }
body { body {
......
...@@ -13,13 +13,13 @@ html * { ...@@ -13,13 +13,13 @@ html * {
html, html,
body { body {
height: 100%; // height: 100%;
min-height: 100%; // min-height: 100%;
font-family: "Microsoft Yahei", "Helvetica Neue", Helvetica, STHeiTi, Arial, font-family: "Microsoft Yahei", "Helvetica Neue", Helvetica, STHeiTi, Arial,
sans-serif; sans-serif;
} }
body { body {
overflow-y: scroll; // overflow-y: scroll;
} }
body, body,
div, div,
......
...@@ -8,12 +8,26 @@ export default { ...@@ -8,12 +8,26 @@ export default {
methods: { methods: {
// 渲染前置处理 // 渲染前置处理
beforeRender(data) { beforeRender(data) {
if (data.entity.attachmentPath) {
data.entity.attachmentPathList = [
{
url: data.entity.attachmentPath,
name: data.entity.attachmentPath,
},
];
}
console.log(data);
return data; return data;
}, },
// 渲染后置处理 // 渲染后置处理
afterRender(data) {}, afterRender(data) {},
// 提交表单的前置处理 // 提交表单的前置处理
beforeSubmit(data) { beforeSubmit(data) {
data.attachmentPathList && data.attachmentPathList.length > 0
? (data.attachmentPath = data.attachmentPathList[0].url)
: (data.attachmentPath = "");
console.log(data);
return data; return data;
}, },
// 提交表单的后置处理, 会阻断默认的回退行为 // 提交表单的后置处理, 会阻断默认的回退行为
...@@ -33,6 +47,7 @@ export default { ...@@ -33,6 +47,7 @@ export default {
// 默认拉取数据 // 默认拉取数据
getData() { getData() {
this.loading = true; this.loading = true;
this.$get(this.urls.currUrl || this.pageInfo.currUrl, this.query) this.$get(this.urls.currUrl || this.pageInfo.currUrl, this.query)
.then(({ data }) => { .then(({ data }) => {
const res = this.beforeRender(data); const res = this.beforeRender(data);
...@@ -43,6 +58,7 @@ export default { ...@@ -43,6 +58,7 @@ export default {
// //
res.entity = this.util_toDateStr(res.entity, this.toDate); res.entity = this.util_toDateStr(res.entity, this.toDate);
this.form = Object.assign({}, this.form, res.entity); this.form = Object.assign({}, this.form, res.entity);
this.dict = Object.assign({}, this.dict, res.dict); this.dict = Object.assign({}, this.dict, res.dict);
this.afterRender(res); this.afterRender(res);
}) })
......
...@@ -205,10 +205,26 @@ export default { ...@@ -205,10 +205,26 @@ export default {
<el-tag type={"success"} size="mini"> <el-tag type={"success"} size="mini">
{content} {content}
</el-tag> </el-tag>
) : row.checkStatus == 1 || row.processStatus == 1 ? (
row.subAddType == 1 && column.label.includes("分值") ? (
<el-link type={"info"}>(+{content})</el-link>
) : row.subAddType == 2 && column.label.includes("分值") ? (
<el-link type={"info"}>({-content})</el-link>
) : (
<p>{content}</p>
)
) : row.checkStatus == 2 || row.processStatus == 2 ? (
row.subAddType == 1 && column.label.includes("分值") ? (
<el-link>+{content}</el-link>
) : row.subAddType == 2 && column.label.includes("分值") ? (
<el-link>{-content}</el-link>
) : (
<p>{content}</p>
)
) : row.subAddType == 1 && column.label.includes("分值") ? ( ) : row.subAddType == 1 && column.label.includes("分值") ? (
<p>{content}</p> <el-link>+{content}</el-link>
) : row.subAddType == 2 && column.label.includes("分值") ? ( ) : row.subAddType == 2 && column.label.includes("分值") ? (
<p>{-content}</p> <el-link>{-content}</el-link>
) : ( ) : (
<p>{content}</p> <p>{content}</p>
) )
...@@ -330,7 +346,7 @@ export default { ...@@ -330,7 +346,7 @@ export default {
}, },
// 格式化单元格数据 // 格式化单元格数据
formatterDate(row, column) { formatterDate(row, column) {
console.log("date:",row,column) // console.log("date:",row,column)
return formatterDate(row, column); return formatterDate(row, column);
}, },
// 格式化单元格数据 只要年月日 // 格式化单元格数据 只要年月日
...@@ -457,13 +473,14 @@ export default { ...@@ -457,13 +473,14 @@ export default {
const regular = new RegExp(`.*\.${suffix}`); const regular = new RegExp(`.*\.${suffix}`);
if (regular.test(val)) { if (regular.test(val)) {
return ( return (
<el-image // <el-image
src={val.indexOf("http") == -1 ? baseUrl + val : val} // src={val.indexOf("http") == -1 ? baseUrl + val : val}
preview-src-list={ // preview-src-list={
val.indexOf("http") == -1 ? [baseUrl + val] : [val] // val.indexOf("http") == -1 ? [baseUrl + val] : [val]
} // }
style="width: 100px" // style="width: 100px"
></el-image> // ></el-image>
<filepReview src={val}/>
); );
} else { } else {
return <el-link type="primary">{val}</el-link>; return <el-link type="primary">{val}</el-link>;
...@@ -565,7 +582,7 @@ export default { ...@@ -565,7 +582,7 @@ export default {
}, },
// 查看 // 查看
toView(row, query) { toView(row, query) {
console.log(this.pageInfo.view); // console.log(this.pageInfo.view);
this.$router.push({ this.$router.push({
path: this.pageInfo.view, path: this.pageInfo.view,
query: Object.assign({}, { id: row.id }, query), query: Object.assign({}, { id: row.id }, query),
......
...@@ -15,6 +15,7 @@ import FileUpload from '@/components/FileUpload'; ...@@ -15,6 +15,7 @@ import FileUpload from '@/components/FileUpload';
import Editor from '@/components/Editor'; import Editor from '@/components/Editor';
import Map from '@/components/Map'; import Map from '@/components/Map';
import MapDetail from '@/components/MapDetail'; import MapDetail from '@/components/MapDetail';
import filepReview from '@/components/filepReview';
const Prototype = function() {}; const Prototype = function() {};
Prototype.install = (Vue, options) => { Prototype.install = (Vue, options) => {
...@@ -34,6 +35,7 @@ Prototype.install = (Vue, options) => { ...@@ -34,6 +35,7 @@ Prototype.install = (Vue, options) => {
Vue.component('Editor', Editor) // 富文本 Vue.component('Editor', Editor) // 富文本
Vue.component('Map', Map) // 地图 Vue.component('Map', Map) // 地图
Vue.component('MapDetail', MapDetail) // 地图 Vue.component('MapDetail', MapDetail) // 地图
Vue.component('filepReview', filepReview) // 图片文件预览
} }
export default Prototype; export default Prototype;
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
:empty-text="emptytxt ? emptytxt : emptyText" :empty-text="emptytxt ? emptytxt : emptyText"
border border
style="width: 100%" style="width: 100%"
height="530"
> >
<el-table-column <el-table-column
v-for="column in columns" v-for="column in columns"
......
...@@ -8,7 +8,7 @@ ...@@ -8,7 +8,7 @@
:row-class-name="tableRowClassName" :row-class-name="tableRowClassName"
:default-expand-all="expand" :default-expand-all="expand"
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
height="520" height="630px"
> >
<el-table-column <el-table-column
......
...@@ -226,7 +226,6 @@ export default { ...@@ -226,7 +226,6 @@ export default {
}, },
maxLength: { maxLength: {
type: Number, type: Number,
default: 256,
}, },
}, },
methods: { methods: {
......
...@@ -226,7 +226,7 @@ export default { ...@@ -226,7 +226,7 @@ export default {
} }
} }
.controllBar { .controllBar {
background-color: rgba(170, 170, 170, 0.4); background-color: rgba(255, 255, 255, 0.2);
width: 120px; width: 120px;
height: 44px; height: 44px;
line-height: 44px; line-height: 44px;
......
...@@ -344,6 +344,7 @@ export default { ...@@ -344,6 +344,7 @@ export default {
let newData = { page: 1 }; let newData = { page: 1 };
Object.keys(data).forEach((item) => { Object.keys(data).forEach((item) => {
let val = data[item]; let val = data[item];
console.log(item,this.search)
this.search.forEach((obj) => { this.search.forEach((obj) => {
if ( if (
obj.name === item && obj.name === item &&
...@@ -363,6 +364,7 @@ export default { ...@@ -363,6 +364,7 @@ export default {
}); });
newData[item] = this.decodeVal(val); newData[item] = this.decodeVal(val);
}); });
return newData; return newData;
}, },
decodeVal(val) { decodeVal(val) {
......
<template>
<div class="img-flex">
<el-image
:src="urlVal(item)"
:preview-src-list="[urlVal(item)]" alt="" v-for="item in fileList" :key="item"/>
</div>
</template>
<script>
const baseUrl = process.env.VUE_APP_API_BASE_URL + "/";
export default {
props:['src'],
data() {
return {}
},
created() {
console.log(this.src)
},
computed: {
fileList:function(v){
return this.src?this.src.split(","):[]
}
},
methods: {
urlVal(val){
console.log(val,"2222")
return val.indexOf("http") == -1 ? baseUrl + val : val
}
},
}
</script>
<style lang="less" scoped>
.img-flex{
overflow: hidden;
display: inline-block;
vertical-align: middle;
.el-image{
width: 50px;
float: left;
border:1px solid #ddd;
margin: 2px;
}
}
</style>
\ No newline at end of file
<template> <template>
<div :style="menuPageCss" class="pages page-layout"> <div :style="menuPageCss" class="pages page-layout">
<LayoutHeader <LayoutHeader v-if="menuPage !== 'left'" @changePath="changePath"></LayoutHeader>
v-if="menuPage !== 'left'" <LayoutHeaderLeft @toggle="toggle" :isOpen="isOpen" v-if="menuPage === 'left'" />
@changePath="changePath" <div class="layout">
></LayoutHeader>
<LayoutHeaderLeft
@toggle="toggle"
:isOpen="isOpen"
v-if="menuPage === 'left'"
/>
<div style="padding:15px">
<router-view :class="{ active: !isOpen }" /> <router-view :class="{ active: !isOpen }" />
</div> </div>
</div> </div>
...@@ -57,6 +50,12 @@ export default { ...@@ -57,6 +50,12 @@ export default {
</script> </script>
<style lang="less"> <style lang="less">
.layout {
padding: 15px 15px 0 15px;
box-sizing: border-box;
}
.page { .page {
min-height: calc(100vh - 100px); min-height: calc(100vh - 100px);
width: 100%; width: 100%;
...@@ -65,12 +64,32 @@ export default { ...@@ -65,12 +64,32 @@ export default {
// var(--padding-top) 5px 5px 5px; // var(--padding-top) 5px 5px 5px;
// margin-left: 60px; // margin-left: 60px;
padding: 10px; padding: 10px;
&.active { &.active {
margin-left: var(--margin-left); margin-left: var(--margin-left);
} }
} }
.page-layout { .page-layout {
background: #eee; background: #eee;
height: 100vh;
overflow: auto;
} }
/* 侧边滚动条 */
.page-layout::-webkit-scrollbar {
width: 3px;
}
/* 滚动条上的滚动滑块 */
.page-layout::-webkit-scrollbar-thumb {
background: #CCCCCC;
border-radius: 4px;
}
/* 滚动条轨道 */
.page-layout::-webkit-scrollbar-track {
background: #EEEEEE;
border-radius: 4px;
}
</style> </style>
...@@ -239,7 +239,6 @@ ...@@ -239,7 +239,6 @@
return return
} }
if(arr.length > 1 && index>0){ if(arr.length > 1 && index>0){
console.log(11111)
// 上一次比较 // 上一次比较
let lastoffTime = transFormMinut(arr[index-1].offWorkDate) + let lastoffTime = transFormMinut(arr[index-1].offWorkDate) +
transFormMinut(arr[index - 1 ].offWorkDateAfter) transFormMinut(arr[index - 1 ].offWorkDateAfter)
......
...@@ -39,15 +39,16 @@ ...@@ -39,15 +39,16 @@
label="开始时间" label="开始时间"
prop="startTime" prop="startTime"
v-model="form.startTime" v-model="form.startTime"
type="date" type="datetime"
/> />
<Field <Field
disabled
label="结束时间" label="结束时间"
prop="endTime" prop="endTime"
v-model="form.endTime" v-model="form.endTime"
type="date" type="datetime"
disabled
/> />
<Field <Field
disabled disabled
label="时长,单位秒" label="时长,单位秒"
...@@ -66,8 +67,8 @@ ...@@ -66,8 +67,8 @@
<Field <Field
disabled disabled
label="审批负责人" label="审批负责人"
prop="approver" prop="approverId"
v-model="form.approver" v-model="form.approverId"
placeholder="请输入审批负责人" placeholder="请输入审批负责人"
/> />
<Field <Field
...@@ -147,6 +148,7 @@ export default { ...@@ -147,6 +148,7 @@ export default {
open: false, open: false,
// urls: { saveUrl: "/check/attend/record/examine" }, // urls: { saveUrl: "/check/attend/record/examine" },
toString: ["leaveType", "auditResult", "processStatus"], toString: ["leaveType", "auditResult", "processStatus"],
toDate: ["startTime", "endTime"],
// 表单校验 // 表单校验
rules: {}, rules: {},
}; };
...@@ -157,8 +159,11 @@ export default { ...@@ -157,8 +159,11 @@ export default {
edit(row) { edit(row) {
this.reset(); this.reset();
this.query = { id: row.id }; this.query = { id: row.id };
this.urls.currUrl = "attendance/leave/record/edit"; // this.urls.currUrl = "attendance/leave/record/edit";
this.getData(); // this.getData();
this.$post("attendance/leave/record/edit", { id: row.id }).then((res) => {
console.log(res);
});
this.pageInfo.type = "edit"; this.pageInfo.type = "edit";
this.title = "修改请假记录信息"; this.title = "修改请假记录信息";
}, },
...@@ -176,8 +181,8 @@ export default { ...@@ -176,8 +181,8 @@ export default {
this.query = { id: row.id }; this.query = { id: row.id };
this.urls.currUrl = "attendance/leave/record/view"; this.urls.currUrl = "attendance/leave/record/view";
this.getData(); this.getData();
this.pageInfo.type = "view"; this.pageInfo.type = "check";
this.title = "请假记录信息详细"; this.title = "审核请假记录";
}, },
/**取消按钮 */ /**取消按钮 */
cancel() { cancel() {
......
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
v-model="form.leavePerson" v-model="form.leavePerson"
placeholder="请输入请假人" placeholder="请输入请假人"
:maxLength="10" :maxLength="10"
:disabled="pageInfo.type == 'view'"
/> />
<Field <Field
label="所属部门" label="所属部门"
...@@ -24,6 +25,7 @@ ...@@ -24,6 +25,7 @@
type="select" type="select"
placeholder="请选择所属部门" placeholder="请选择所属部门"
:enumData="dict.deptId" :enumData="dict.deptId"
:disabled="pageInfo.type == 'view'"
/> />
<!-- <Field label="所属部门" prop="deptName" v-model="form.deptName" type="textarea" placeholder="请输入所属部门"/> --> <!-- <Field label="所属部门" prop="deptName" v-model="form.deptName" type="textarea" placeholder="请输入所属部门"/> -->
<Field <Field
...@@ -32,6 +34,7 @@ ...@@ -32,6 +34,7 @@
v-model="form.phoneNumber" v-model="form.phoneNumber"
placeholder="请输入电话号码" placeholder="请输入电话号码"
:maxLength="11" :maxLength="11"
:disabled="pageInfo.type == 'view'"
/> />
<Field <Field
label="请假类型" label="请假类型"
...@@ -40,13 +43,16 @@ ...@@ -40,13 +43,16 @@
type="select" type="select"
:enumData="dict.leaveType" :enumData="dict.leaveType"
placeholder="请选择请假类型" placeholder="请选择请假类型"
:disabled="pageInfo.type == 'view'"
/> />
<Field <Field
label="开始时间" label="开始时间"
prop="startTime" prop="startTime"
v-model="form.startTime" v-model="form.startTime"
type="datetime" type="datetime"
@change="changedate" @change="changedate"
:disabled="pageInfo.type == 'view'"
/> />
<Field <Field
label="结束时间" label="结束时间"
...@@ -54,6 +60,7 @@ ...@@ -54,6 +60,7 @@
v-model="form.endTime" v-model="form.endTime"
type="datetime" type="datetime"
@change="changedate" @change="changedate"
:disabled="pageInfo.type == 'view'"
/> />
<Field <Field
...@@ -70,6 +77,23 @@ ...@@ -70,6 +77,23 @@
v-model="form.reason" v-model="form.reason"
type="textarea" type="textarea"
placeholder="请输入请假事由" placeholder="请输入请假事由"
:disabled="pageInfo.type == 'view'"
/>
<Field
label="审核结果"
prop="auditResult"
v-model="form.auditResult"
type="radio"
:enumData="dict.auditResult"
placeholder="请选择审核结果"
:disabled="pageInfo.type == 'view'"
/>
<Field
label="审核说明"
prop="auditDesc"
v-model="form.auditDesc"
placeholder="请输入审核说明"
:disabled="pageInfo.type == 'view'"
/> />
<Field <Field
label="审批负责人" label="审批负责人"
...@@ -78,6 +102,7 @@ ...@@ -78,6 +102,7 @@
v-model="form.approverId" v-model="form.approverId"
placeholder="请选择审批负责人" placeholder="请选择审批负责人"
:enumData="dict.approverId" :enumData="dict.approverId"
:disabled="pageInfo.type == 'view'"
/> />
<!-- <Field label="审批负责人" prop="approver" v-model="form.approver" placeholder="请输入审批负责人"/> --> <!-- <Field label="审批负责人" prop="approver" v-model="form.approver" placeholder="请输入审批负责人"/> -->
<!-- <Field label="附件" prop="attachment" v-model="form.attachment" type="textarea" placeholder="请输入附件"/> --> <!-- <Field label="附件" prop="attachment" v-model="form.attachment" type="textarea" placeholder="请输入附件"/> -->
...@@ -87,16 +112,29 @@ ...@@ -87,16 +112,29 @@
v-model="form.remark" v-model="form.remark"
type="textarea" type="textarea"
placeholder="请输入备注" placeholder="请输入备注"
:disabled="pageInfo.type == 'view'"
/>
<Field
label="申请时间"
prop="createTime"
v-model="form.createTime"
type="datetime"
disabled
/> />
</el-row> </el-row>
<el-form-item label="附件路径" prop="attachmentPath"> <el-form-item label="附件路径" prop="attachmentPathList">
<FileUpload <FileUpload
@input="uploadFn" @input="uploadFn"
:value="attachmentPath" :value="form.attachmentPathList"
:fileNumber="1" :fileNumber="1"
:disabled="pageInfo.type == 'view'"
/> />
</el-form-item> </el-form-item>
<form-buttons @submit="submitForm" noCancelBtn /> <form-buttons
@submit="submitForm"
noCancelBtn
v-if="pageInfo.type !== 'view'"
/>
</el-form> </el-form>
</div> </div>
</el-drawer> </el-drawer>
...@@ -123,8 +161,8 @@ export default { ...@@ -123,8 +161,8 @@ export default {
// 是否显示弹出层 // 是否显示弹出层
open: false, open: false,
direction: "rtl", direction: "rtl",
toString: ["leaveType", "deptId", "approverId"], toString: ["leaveType", "deptId", "approverId", "auditResult"],
toDate: ["startTime", "endTime"], toDate: ["startTime", "endTime", "createTime"],
// 表单校验 // 表单校验
rules: { rules: {
leavePerson: [ leavePerson: [
...@@ -155,14 +193,17 @@ export default { ...@@ -155,14 +193,17 @@ export default {
approverId: [ approverId: [
{ required: true, message: "请选择审批人", trigger: "change" }, { required: true, message: "请选择审批人", trigger: "change" },
], ],
attachmentPath: [ // attachmentPathList: [
{ required: true, message: "请上传附件文件", trigger: "change" }, // { required: true, message: "请上传附件文件", trigger: "change" },
// ],
auditResult: [
{ required: true, message: "请选择审核结果", trigger: "change" },
], ],
}, },
attachmentPath: "", attachmentPath: "",
}; };
}, },
watch: {},
methods: { methods: {
// beforeSubmit() { // beforeSubmit() {
// if (this.form.endTime.valueOf() > this.form.startTime.valueOf()) { // if (this.form.endTime.valueOf() > this.form.startTime.valueOf()) {
...@@ -172,8 +213,8 @@ export default { ...@@ -172,8 +213,8 @@ export default {
// } // }
// }, // },
uploadFn(e) { uploadFn(e) {
this.attachmentPath = e; this.form.attachmentPathList = e;
this.form.attachmentPath = this.attachmentPath[0].url; this.$forceUpdate(this.form.attachmentPathList);
}, },
/** 编辑 */ /** 编辑 */
edit(row) { edit(row) {
...@@ -181,6 +222,23 @@ export default { ...@@ -181,6 +222,23 @@ export default {
this.query = { id: row.id }; this.query = { id: row.id };
this.urls.currUrl = "attendance/leave/record/edit"; this.urls.currUrl = "attendance/leave/record/edit";
this.getData(); this.getData();
// this.$get("attendance/leave/record/edit", { id: row.id }).then((res) => {
// if (res.code == 1) {
// this.form = res.data.entity;
// this.attachmentPath = res.data
// ? [
// {
// url: res.data.entity.attachmentPath,
// name: res.data.entity.attachmentPath,
// },
// ]
// : "";
// this.dict = res.data.dict;
// this.open = true;
// } else {
// this.reset();
// }
// });
this.pageInfo.type = "edit"; this.pageInfo.type = "edit";
this.title = "修改请假记录信息"; this.title = "修改请假记录信息";
}, },
...@@ -198,6 +256,7 @@ export default { ...@@ -198,6 +256,7 @@ export default {
this.query = { id: row.id }; this.query = { id: row.id };
this.urls.currUrl = "attendance/leave/record/view"; this.urls.currUrl = "attendance/leave/record/view";
this.getData(); this.getData();
this.pageInfo.type = "view"; this.pageInfo.type = "view";
this.title = "请假记录信息详细"; this.title = "请假记录信息详细";
}, },
......
<template> <template>
<div class="page"> <div class="page">
<LayoutTable :data="tableData" :config="tableConfig" notDel> <LayoutTable :data="tableData" :config="tableConfig" notDel>
<el-button type="primary" @click="doExport" :disabled="isExport" <el-button
size="mini" slot="table-head-left2">导出 type="primary"
@click="doExport"
:disabled="isExport"
size="mini"
slot="table-head-left2"
>导出
</el-button> </el-button>
</LayoutTable> </LayoutTable>
<drawer-show ref="drawerform" @ok="getData"/> <drawer-show ref="drawerform" @ok="getData" />
<drawer-audit ref="draweraudit" @ok="getData"/> <drawer-audit ref="draweraudit" @ok="getData" />
</div> </div>
</template> </template>
<script> <script>
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
import drawerShow from "./drawershow"; import drawerShow from "./drawershow";
import drawerAudit from "./draweraudit";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
export default { export default {
name: "AttendanceLeaveRecordList", name: "AttendanceLeaveRecordList",
components: { components: {
drawerShow drawerShow,
drawerAudit,
}, },
mixins: [table], mixins: [table],
created() { created() {},
},
methods: { methods: {
/** 重写新增方法 */ /** 重写新增方法 */
toAdd(row) { toAdd(row) {
...@@ -39,18 +44,24 @@ export default { ...@@ -39,18 +44,24 @@ export default {
}, },
audit(row) { audit(row) {
//todo 审核页面进行审核 //todo 审核页面进行审核
this.$refs.draweraudit.view(row); this.$refs.drawerform.edit(row);
// this.$refs.draweraudit.view(row);
}, },
doExport() { doExport() {
this.isExport = true; this.isExport = true;
this.$download("/attendance/leave/record/exportExcel", { this.$download(
"idList": this.selection, "/attendance/leave/record/exportExcel",
'name': this.$route.query['name'], {
}, {type: "excel"}).then(() => this.isExport = false).catch(error => { idList: this.selection,
this.isExport = false; name: this.$route.query["name"],
this.$message.error(error.message); },
}) { type: "excel" }
)
.then(() => (this.isExport = false))
.catch((error) => {
this.isExport = false;
this.$message.error(error.message);
});
}, },
}, },
data() { data() {
...@@ -63,101 +74,123 @@ export default { ...@@ -63,101 +74,123 @@ export default {
name: "leavePerson", name: "leavePerson",
type: "text", type: "text",
label: "请假人", label: "请假人",
fuzzy: true fuzzy: true,
}, },
{ {
name: "phoneNumber", name: "phoneNumber",
type: "text", type: "text",
label: "电话号码", label: "电话号码",
fuzzy: true fuzzy: true,
}, },
{ {
name: "deptId", name: "deptId",
type: "select", type: "select",
label: "全部部门", label: "全部部门",
fuzzy: false fuzzy: false,
}, },
{ {
name: "leaveType", name: "leaveType",
type: "select", type: "select",
label: "请假类型", label: "请假类型",
fuzzy: false fuzzy: false,
}, },
{ {
name: "startTime", name: "startTime",
type: "date", type: "date",
label: "开始时间", label: "开始时间",
fuzzy: false fuzzy: false,
}, },
{ {
name: "endTime", name: "endTime",
type: "date", type: "date",
label: "结束时间", label: "结束时间",
fuzzy: false fuzzy: false,
}, },
], ],
columns: [ columns: [
{type: "selection", width: 60}, { type: "selection", width: 60 },
{type: "index", label: "序号", width: 50}, { type: "index", label: "序号", width: 50 },
// {label: "请假人id", prop: "leavePersonId", formatter: this.formatter}, // {label: "请假人id", prop: "leavePersonId", formatter: this.formatter},
{label: "请假人", prop: "leavePerson"}, { label: "请假人", prop: "leavePerson" },
// {label: "所属部门id", prop: "deptId", formatter: this.formatter}, // {label: "所属部门id", prop: "deptId", formatter: this.formatter},
{label: "所属部门", prop: "deptName"}, { label: "所属部门", prop: "deptName" },
{label: "电话号码", prop: "phoneNumber"}, { label: "电话号码", prop: "phoneNumber" },
{label: "请假类型", prop: "leaveType", formatter: this.formatterLeaveType}, {
label: "请假类型",
prop: "leaveType",
formatter: this.formatterLeaveType,
},
{label: "开始时间", prop: "startTime", formatter: this.formatterDate}, {
label: "开始时间",
prop: "startTime",
formatter: this.formatterDate,
},
{label: "结束时间", prop: "endTime", formatter: this.formatterDate}, { label: "结束时间", prop: "endTime", formatter: this.formatterDate },
{label: "时长", prop: "duration", formatter: this.formatter}, { label: "时长", prop: "duration", formatter: this.formatter },
// {label: "审批负责人Id", prop: "approverId", formatter: this.formatter}, // {label: "审批负责人Id", prop: "approverId", formatter: this.formatter},
/* {label: "处理状态", prop: "processStatus", formatter: this.formatter},*/ /* {label: "处理状态", prop: "processStatus", formatter: this.formatter},*/
{label: "状态", prop: "auditResult", formatter: this.formatter}, { label: "状态", prop: "auditResult", formatter: this.formatter },
{label: "审批负责人", prop: "approver"}, { label: "审批负责人", prop: "approver" },
{label: "创建用户", prop: "createUserId", formatter: this.formatter}, {
label: "创建用户",
prop: "createUserId",
formatter: this.formatter,
},
{label: "创建时间", prop: "createTime", formatter: this.formatterDate}, {
label: "创建时间",
prop: "createTime",
formatter: this.formatterDate,
},
{ {
label: "操作", label: "操作",
width: 240, width: 240,
formatter: row => { formatter: (row) => {
return ( return (
<div> <div>
<table-buttons noAdd row={row} onEdit={this.toEdit} onView={this.toView} onDel={this.toDel}/> <table-buttons
<span> </span> noAdd
{row.processStatus === 1 ? ( row={row}
<el-button onEdit={this.toEdit}
size="mini" onView={this.toView}
type="text" onDel={this.toDel}
icon="el-icon-open" />
onClick={() => { <span> </span>
this.audit(row); {row.processStatus === 1 ? (
}} <el-button
> size="mini"
审核 type="text"
</el-button> icon="el-icon-open"
) : ( onClick={() => {
"" this.audit(row);
)} }}
</div> >
审核
</el-button>
) : (
""
)}
</div>
); );
} },
} },
] ],
} },
}; };
} },
}; };
</script> </script>
<template> <template>
<div class="page"> <div class="page">
<div style="margin:10px 0"> <div>
<tab-pane <tab-pane
:thirdList="thirdList" :thirdList="thirdList"
:activeName="activeName" :activeName="activeName"
...@@ -189,7 +189,7 @@ import drawerShow from "./drawershow"; ...@@ -189,7 +189,7 @@ import drawerShow from "./drawershow";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
import TabPane from "@/components/tabPane.vue"; import TabPane from "@/components/tabPane.vue";
import { timestampToTime } from "@/assets/utils/dateFormat"; import { timestampToTime } from "@/assets/utils/dateFormat";
import {formatterDateOnly} from "@/assets/utils/table"; import { formatterDateOnly } from "@/assets/utils/table";
export default { export default {
name: "AttendanceRecordList", name: "AttendanceRecordList",
components: { components: {
...@@ -401,12 +401,30 @@ export default { ...@@ -401,12 +401,30 @@ export default {
/** 子表列元素 */ /** 子表列元素 */
columnSet: [ columnSet: [
{ prop: "shiftsName", label: "班次名称", width: 150 }, { prop: "shiftsName", label: "班次名称", width: 150 },
{ prop: "goWorkDate", label: "上班打卡时间", width: 100 , formatter: this.formatterDate}, {
{ prop: "goWorkResult", label: "上班打卡结果", width: 100, formatter: this.formatterString }, prop: "goWorkDate",
{ prop: "offWorkDate", label: "下班打卡时间", width: 100 , formatter: this.formatterDate}, label: "上班打卡时间",
{ prop: "offWorkResult", label: "下班打卡结果", width: 100 , formatter: this.formatterString} width: 100,
formatter: this.formatterDate,
},
{
prop: "goWorkResult",
label: "上班打卡结果",
width: 100,
formatter: this.formatterString,
},
{
prop: "offWorkDate",
label: "下班打卡时间",
width: 100,
formatter: this.formatterDate,
},
{
prop: "offWorkResult",
label: "下班打卡结果",
width: 100,
formatter: this.formatterString,
},
], ],
config: { config: {
search: [ search: [
...@@ -459,7 +477,6 @@ export default { ...@@ -459,7 +477,6 @@ export default {
label: "考勤结束时间", label: "考勤结束时间",
fuzzy: false, fuzzy: false,
}, },
], ],
columns: [ columns: [
{ type: "selection", width: 60 }, { type: "selection", width: 60 },
...@@ -479,24 +496,35 @@ export default { ...@@ -479,24 +496,35 @@ export default {
{ label: "部门", prop: "deptName", formatter: this.formatters }, { label: "部门", prop: "deptName", formatter: this.formatters },
{ label: "职位", prop: "positionName", formatter: this.formatters }, { label: "职位", prop: "positionName", formatter: this.formatters },
{ label: "班次", prop: "shiftsName", formatter: this.formatters }, { label: "班次", prop: "shiftsName", formatter: this.formatters },
{ label: "签到结果", prop: "signInResult", formatter: this.formatter }, {
{ label: "签退结果", prop: "signOutResult", formatter: this.formatter }, label: "签到结果",
prop: "signInResult",
formatter: this.formatter,
},
{
label: "签退结果",
prop: "signOutResult",
formatter: this.formatter,
},
{ label: "打卡结果", prop: "punchResult", formatter: this.formatter }, { label: "打卡结果", prop: "punchResult", formatter: this.formatter },
{ label: "考勤类型", prop: "attendType", formatter: this.formatter }, { label: "考勤类型", prop: "attendType", formatter: this.formatter },
{label: "考勤打卡记录详细信息", {
label: "考勤打卡记录详细信息",
width: 120, width: 120,
prop: "subColumns", prop: "subColumns",
formatter: (row) => { formatter: (row) => {
let widthsize = this.columnSet.reduce((pre, cur) => { let widthsize = this.columnSet.reduce((pre, cur) => {
return pre + Number(cur.width); return pre + Number(cur.width);
}, 50); }, 50);
return ( return (
<el-popover placement="right" width={widthsize} trigger="click"> <el-popover placement="right" width={widthsize} trigger="click">
{this.renderTable(row.attendanceRecordDetailList)} {this.renderTable(row.attendanceRecordDetailList)}
<el-button type="text" slot="reference">详细</el-button> <el-button type="text" slot="reference">
</el-popover> 详细
); </el-button>
</el-popover>
);
}, },
}, },
// { // {
......
...@@ -69,10 +69,20 @@ ...@@ -69,10 +69,20 @@
{{ form.subAddType == 1 ? "加分人员:" : "扣分人员:" }} {{ form.subAddType == 1 ? "加分人员:" : "扣分人员:" }}
{{ form.deductPerson ? form.deductPerson : "--" }}</el-col {{ form.deductPerson ? form.deductPerson : "--" }}</el-col
> >
<el-col :span="12">
巡查人员:
{{
form.createUserId
? util_formatter("createUserId", form.createUserId)
: "--"
}}
</el-col>
</el-row>
<el-row>
<el-col :span="12" <el-col :span="12"
>图片凭证: >图片凭证:
<el-image <!-- <el-image
v-if="form.filePaths" v-if="form.filePaths"
style="width: 100px; height: 100px" style="width: 100px; height: 100px"
:src=" :src="
...@@ -88,7 +98,8 @@ ...@@ -88,7 +98,8 @@
: [form.filePaths] : [form.filePaths]
" "
> >
</el-image> </el-image> -->
<filepReview v-if="form.filePaths" :src="form.filePaths"/>
<span v-else>--</span> <span v-else>--</span>
</el-col> </el-col>
</el-row> </el-row>
......
...@@ -83,9 +83,19 @@ ...@@ -83,9 +83,19 @@
{{ form.deductTime ? form.deductTime : "--" }}</el-col {{ form.deductTime ? form.deductTime : "--" }}</el-col
> >
<el-col :span="12">
巡查人员:
{{
form.createUserId
? util_formatter("createUserId", form.createUserId)
: "--"
}}
</el-col>
</el-row>
<el-row>
<el-col :span="12" <el-col :span="12"
>图片凭证: >图片凭证:
<el-image <!-- <el-image
v-if="form.filePaths" v-if="form.filePaths"
style="width: 100px; height: 100px" style="width: 100px; height: 100px"
:src=" :src="
...@@ -101,7 +111,8 @@ ...@@ -101,7 +111,8 @@
: [form.filePaths] : [form.filePaths]
" "
> >
</el-image> </el-image> -->
<filepReview v-if="form.filePaths" :src="form.filePaths"/>
<span v-else>--</span> <span v-else>--</span>
</el-col> </el-col>
</el-row> </el-row>
......
...@@ -60,9 +60,17 @@ ...@@ -60,9 +60,17 @@
> >
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="12">
巡查人员:
{{
form.createUserId
? util_formatter("createUserId", form.createUserId)
: "--"
}}
</el-col>
<el-col :span="12">
图片凭证: 图片凭证:
<el-image <!-- <el-image
v-if="form.filePaths" v-if="form.filePaths"
style="width: 100px; height: 100px" style="width: 100px; height: 100px"
:src=" :src="
...@@ -78,7 +86,8 @@ ...@@ -78,7 +86,8 @@
: [form.filePaths] : [form.filePaths]
" "
> >
</el-image> </el-image> -->
<filepReview v-if="form.filePaths" :src="form.filePaths"/>
<span v-else>--</span> <span v-else>--</span>
</el-col> </el-col>
</el-row> </el-row>
......
...@@ -62,9 +62,17 @@ ...@@ -62,9 +62,17 @@
> >
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="12">
巡查人员:
{{
form.createUserId
? util_formatter("createUserId", form.createUserId)
: "--"
}}
</el-col>
<el-col :span="12">
图片凭证: 图片凭证:
<el-image <!-- <el-image
v-if="form.filePaths" v-if="form.filePaths"
style="width: 100px; height: 100px" style="width: 100px; height: 100px"
:src=" :src="
...@@ -80,7 +88,8 @@ ...@@ -80,7 +88,8 @@
: [form.filePaths] : [form.filePaths]
" "
> >
</el-image> </el-image> -->
<filepReview v-if="form.filePaths" :src="form.filePaths"/>
<span v-else>--</span> <span v-else>--</span>
</el-col> </el-col>
</el-row> </el-row>
......
...@@ -58,9 +58,17 @@ ...@@ -58,9 +58,17 @@
</el-col> </el-col>
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="24" <el-col :span="12">
巡查人员:
{{
form.createUserId
? util_formatter("createUserId", form.createUserId)
: "--"
}}
</el-col>
<el-col :span="12"
>图片凭证: >图片凭证:
<el-image <!-- <el-image
v-if="form.filePaths" v-if="form.filePaths"
style="width: 100px; height: 100px" style="width: 100px; height: 100px"
:src=" :src="
...@@ -76,7 +84,8 @@ ...@@ -76,7 +84,8 @@
: [form.filePaths] : [form.filePaths]
" "
> >
</el-image> </el-image> -->
<filepReview v-if="form.filePaths" :src="form.filePaths"/>
<span v-else>--</span> <span v-else>--</span>
</el-col> </el-col>
</el-row> </el-row>
......
...@@ -63,9 +63,17 @@ ...@@ -63,9 +63,17 @@
</el-row> </el-row>
<el-row> <el-row>
<el-col :span="12">
巡查人员:
{{
form.createUserId
? util_formatter("createUserId", form.createUserId)
: "--"
}}
</el-col>
<el-col :span="12" <el-col :span="12"
>图片凭证: >图片凭证:
<el-image <!-- <el-image
v-if="form.filePaths" v-if="form.filePaths"
style="width: 100px; height: 100px" style="width: 100px; height: 100px"
:src=" :src="
...@@ -81,7 +89,8 @@ ...@@ -81,7 +89,8 @@
: [form.filePaths] : [form.filePaths]
" "
> >
</el-image> </el-image> -->
<filepReview v-if="form.filePaths" :src="form.filePaths"/>
<span v-else>--</span> <span v-else>--</span>
</el-col> </el-col>
</el-row> </el-row>
...@@ -414,6 +423,7 @@ export default { ...@@ -414,6 +423,7 @@ export default {
kaoqinCateArr: [], kaoqinCateArr: [],
kaoqinArr: [], kaoqinArr: [],
urls: { saveUrl: "/check/review/record/examine" }, //重写核查地址 urls: { saveUrl: "/check/review/record/examine" }, //重写核查地址
baseUrl: process.env.VUE_APP_API_BASE_URL + "/",
}; };
}, },
......
...@@ -4,6 +4,7 @@ ...@@ -4,6 +4,7 @@
<el-button class="backBtn" size="small" @click="$router.back()">返回上一级</el-button> <el-button class="backBtn" size="small" @click="$router.back()">返回上一级</el-button>
<el-tabs v-model="tabs"> <el-tabs v-model="tabs">
<el-tab-pane label="设计问卷" name="1"> <el-tab-pane label="设计问卷" name="1">
<!-- 步骤1 填写问卷名称 -->
<div style="width: 800px;margin: 100px auto;" v-show="step"> <div style="width: 800px;margin: 100px auto;" v-show="step">
<el-form :model="titleForm" :rules="titleRules" ref="titleForm"> <el-form :model="titleForm" :rules="titleRules" ref="titleForm">
<el-form-item label="问卷名称:" prop="title" label-width="125px"> <el-form-item label="问卷名称:" prop="title" label-width="125px">
...@@ -20,20 +21,22 @@ ...@@ -20,20 +21,22 @@
</div> </div>
</el-form> </el-form>
</div> </div>
<!-- 动态表单配置 -->
<div v-show="!step"> <div v-show="!step">
<fc-designer style="height: 79vh;" ref="designer"> <fc-designer style="height: 79vh;" ref="designer">
<template slot="handle"> <template slot="handle">
<ElButton style="margin-left: 10px;" icon="el-icon-upload" type="primary" size="small" <ElButton style="margin-left: 10px;" icon="el-icon-upload" type="primary" size="small"
@click="issueBtn" round>问卷发布 @click="issueBtn" round>问卷配置发布
</ElButton> </ElButton>
<!-- <ElButton style="margin-left: 10px;" icon="el-icon-upload" type="primary" size="small" <ElButton style="margin-left: 10px;" icon="el-icon-position" type="warning" size="small"
@click="issueBtn" round>外部链接 @click="outsideBtn" round>外部链接发布
</ElButton> --> </ElButton>
<ElButton icon="el-icon-view" type="success" size="small" @click="showDrawer" round>手机模拟预览 <ElButton icon="el-icon-view" type="success" size="small" @click="showDrawer" round>手机预览
</ElButton> </ElButton>
</template> </template>
</fc-designer> </fc-designer>
</div> </div>
<!-- 手机模拟预览 -->
<el-drawer :visible.sync="drawer" title="预览"> <el-drawer :visible.sync="drawer" title="预览">
<div class="showPhone"> <div class="showPhone">
<div class="phone"> <div class="phone">
...@@ -44,13 +47,16 @@ ...@@ -44,13 +47,16 @@
</div> </div>
</div> </div>
</el-drawer> </el-drawer>
<!-- 问卷发布弹出框 -->
<el-dialog title="问卷发布" :visible.sync="issueDialog" width="30%" top="25vh"> <el-dialog title="问卷发布" :visible.sync="issueDialog" width="30%" top="25vh">
<el-form :model="issueForm" :rules="issueRules" ref="issueForm"> <el-form :model="issueForm" :rules="issueRules" ref="issueForm">
<el-form-item label="链接地址:" label-width="125px" prop="webUrl" v-if="weblink">
<el-input v-model="issueForm.webUrl" placeholder="请输入链接地址"></el-input>
</el-form-item>
<el-form-item label="问卷封面:" label-width="125px"> <el-form-item label="问卷封面:" label-width="125px">
<div style="display: flex;align-items: center;"> <div style="display: flex;align-items: center;">
<img style="width:80px; height: 80px; margin-right: 10px;cursor: pointer;" <img style="width:80px; height: 80px; margin-right: 10px;cursor: pointer;"
v-for="(i, j) in coverImg" :key="j" :src="ImgUrl + '/' + i.url" alt="" v-for="(i, j) in coverImg" :key="j" :src="showImgUrl + '/' + i.url" alt=""
:class="selImg == j ? 'selImg' : ''" @click="selImg = j"> :class="selImg == j ? 'selImg' : ''" @click="selImg = j">
<el-upload v-show="coverImg.length < 4" :action="ImgUrl + '/attendance/file/commonupload'" <el-upload v-show="coverImg.length < 4" :action="ImgUrl + '/attendance/file/commonupload'"
accept="image/jpeg,image/png,image/jpg" list-type="picture-card" class="upload" accept="image/jpeg,image/png,image/jpg" list-type="picture-card" class="upload"
...@@ -75,8 +81,8 @@ ...@@ -75,8 +81,8 @@
</div> </div>
</el-form> </el-form>
</el-dialog> </el-dialog>
<!-- 人员选择弹出框 -->
<el-dialog title="人员选择" :visible.sync="treeDialog"> <el-dialog title="人员选择" :visible.sync="treeDialog" width="40%">
<div class="treeDialog"> <div class="treeDialog">
<el-tree class="treeCss" :data="treeData" node-key="id" :props="defaultProps" <el-tree class="treeCss" :data="treeData" node-key="id" :props="defaultProps"
@node-click="handleNodeClick"></el-tree> @node-click="handleNodeClick"></el-tree>
...@@ -158,6 +164,10 @@ export default { ...@@ -158,6 +164,10 @@ export default {
issueRules: { issueRules: {
time: [ time: [
{ required: true, message: '请输入选择反馈期限', trigger: 'blur' }, { required: true, message: '请输入选择反馈期限', trigger: 'blur' },
],
webUrl: [
{ required: true, message: '请输入链接地址', trigger: 'blur' },
{ pattern: /^https?:\/\/((.)+(\.)?)*(:\d+)?(\/((\.)?(\?)?=?&?.(\?)?)*)*$/i, message: '请输入正确的链接 例:https://www.baidu.com', trigger: 'change' }
] ]
}, },
treeData: [], treeData: [],
...@@ -175,7 +185,25 @@ export default { ...@@ -175,7 +185,25 @@ export default {
editStyle: false, editStyle: false,
loadingstate: false, loadingstate: false,
ImgUrl: process.env.VUE_APP_API_BASE_URL, ImgUrl: process.env.VUE_APP_API_BASE_URL,
coverImg: [] showImgUrl:'',
coverImg: [],
weblink: 0,
webUrl: '',
}
},
watch: {
issueDialog(val) { //监听关闭外联状态
if (!val) {
this.weblink = 0
}
}
},
created(){
if(process.env.NODE_ENV == "development"){
this.showImgUrl= process.env.VUE_APP_API_BASE_URL
}else{
this.showImgUrl=''
} }
}, },
mounted() { mounted() {
...@@ -199,6 +227,10 @@ export default { ...@@ -199,6 +227,10 @@ export default {
this.getFile() this.getFile()
}, },
methods: { methods: {
outsideBtn() {
this.weblink = 1
this.issueDialog = 1
},
handleUploadSuccess(res) { handleUploadSuccess(res) {
console.log(res) console.log(res)
this.coverImg.push(res) this.coverImg.push(res)
...@@ -250,7 +282,6 @@ export default { ...@@ -250,7 +282,6 @@ export default {
console.log(file) console.log(file)
} }
}, },
//获取问卷封面 //获取问卷封面
getFile() { getFile() {
this.$post('/feedback/file/list', { page: 1, size: 3 }).then(res => { this.$post('/feedback/file/list', { page: 1, size: 3 }).then(res => {
...@@ -357,12 +388,12 @@ export default { ...@@ -357,12 +388,12 @@ export default {
return JSON.stringify(FcDesignerOptions) return JSON.stringify(FcDesignerOptions)
}, },
issueFormBtn(formName) { issueFormBtn(formName) {
if (this.checkedUser.length < 1) {
this.$message.warning('请选择人员后发布问卷')
return
}
this.$refs[formName].validate((valid) => { this.$refs[formName].validate((valid) => {
if (valid) { if (valid) {
if (this.checkedUser.length < 1) {
this.$message.warning('请选择人员后发布问卷')
return
}
console.log(this.issueForm) console.log(this.issueForm)
this.Frule.forEach(i => { this.Frule.forEach(i => {
i.remark = i.field i.remark = i.field
...@@ -381,7 +412,8 @@ export default { ...@@ -381,7 +412,8 @@ export default {
}) })
let sub = { let sub = {
weblink: this.weblink,
webUrl: this.issueForm.webUrl,
staffList: this.checkedUser, staffList: this.checkedUser,
id: this.feedbackId, id: this.feedbackId,
...this.titleForm, ...this.titleForm,
......
...@@ -15,9 +15,8 @@ ...@@ -15,9 +15,8 @@
</div> </div>
<div style="margin: 10px 0;"> <div style="margin: 10px 0;">
<el-tag <el-tag
:type="feedbackData.processStatus ? feedbackData.processStatus = 1 ? 'success' : 'info' : 'danger'"> :type="feedbackData.processStatus ? feedbackData.processStatus == 1 ? 'success' : 'info' : 'danger'">
{{ feedbackData.processStatus ? feedbackData.processStatus {{ feedbackData.processStatus ? feedbackData.processStatus == 1 ? '进行中' : '已结束' : '未开始' }}</el-tag>
== 1 ? '进行中' : '已结束' : '未开始' }}</el-tag>
反馈时间:{{ feedbackData.timeStart }} ~ {{ feedbackData.timeEnd }} 反馈时间:{{ feedbackData.timeStart }} ~ {{ feedbackData.timeEnd }}
</div> </div>
......
<template> <template>
<!-- 弹出框表单 --> <!-- 弹出框表单 -->
<el-drawer <el-drawer
:title="title" :title="title"
:visible.sync="open" :visible.sync="open"
:direction="direction" :direction="direction"
size="50%"> size="50%"
<el-form ref="form" :model="form" :rules="rules" label-width="120px" style="padding:20px"> >
<el-row> <el-form
<Field v-if="from == 'job'" label="分组" prop="groupId" v-model="form.groupId" ref="form"
:enumData="dict.group" type="select" placeholder="请选择分组"/> :model="form"
:rules="rules"
label-width="120px"
style="padding:20px"
>
<el-row>
<Field
v-if="from == 'job'"
label="分组"
prop="groupId"
v-model="form.groupId"
:enumData="dict.groupId"
type="select"
placeholder="请选择分组"
/>
<Field label="分组名称" prop="groupName" v-model="form.groupName" placeholder="请输入分组名称" :maxLength="10" v-if="from == 'group'"/> <Field
label="分组名称"
prop="groupName"
v-model="form.groupName"
placeholder="请输入分组名称"
:maxLength="10"
v-if="from == 'group'"
/>
<Field label="职位编码" prop="jobCode" :maxLength="10" v-model="form.jobCode" placeholder="请输入职位编码" v-if="from == 'job'"/> <Field
<Field label="职位名称" prop="jobName" :maxLength="10" v-model="form.jobName" placeholder="请输入职位名称" v-if="from == 'job'" /> label="职位编码"
prop="jobCode"
:maxLength="10"
v-model="form.jobCode"
placeholder="请输入职位编码"
v-if="from == 'job'"
/>
<Field
label="职位名称"
prop="jobName"
:maxLength="10"
v-model="form.jobName"
placeholder="请输入职位名称"
v-if="from == 'job'"
/>
<Field label="类型" disabled prop="type" v-model="form.type" type="select" :enumData="dict.type" placeholder="请选择类型"/> <Field
<Field label="备注" prop="remark" :maxLength="50" v-model="form.remark" type="textarea" placeholder="请输入备注"/> label="类型"
</el-row> disabled
<form-buttons @submit='submitForm' noCancelBtn /> prop="type"
</el-form> v-model="form.type"
type="select"
</el-drawer> :enumData="dict.type"
placeholder="请选择类型"
/>
<Field
label="备注"
prop="remark"
:maxLength="50"
v-model="form.remark"
type="textarea"
placeholder="请输入备注"
/>
</el-row>
<form-buttons @submit="submitForm" noCancelBtn />
</el-form>
</el-drawer>
</template> </template>
<script> <script>
import form from "@/assets/mixins/formdialog"; import form from "@/assets/mixins/formdialog";
export default { export default {
name: "JobDetail", name: "JobDetail",
mixins: [form], mixins: [form],
components: { components: {},
created() {
}, this.changePath("job");
created() { },
this.changePath("job") data() {
}, return {
data() { // 遮罩层
return { loading: true,
// 遮罩层 // 弹出层标题
loading: true, title: "职位信息",
// 弹出层标题 // 是否显示弹出层
title: "职位信息", open: false,
// 是否显示弹出层 direction: "rtl",
open: false, toString: [],
direction:"rtl", toDate: [],
toString:[ // 表单校验
], rules: {
toDate:[ groupId: [{ required: true, message: "请选择分组", trigger: "change" }],
], },
// 表单校验 from: "",
rules: { };
}, },
from:''
};
},
methods: {
/** 编辑 */
edit(from,row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="job/edit";
this.getData();
this.pageInfo.type="edit"
this.from = from
this.title = from === 'group'?"修改分组信息":'修改职位信息'; methods: {
}, /** 编辑 */
/** 新增 */ edit(from, row) {
add(row) { this.reset();
console.log(row,'添加') this.query = { id: row.id };
this.from = row this.urls.currUrl = "job/edit";
this.title = row === 'group'?"新增分组信息":'新增职位信息'; this.getData();
this.reset() this.pageInfo.type = "edit";
this.urls.currUrl = "job/add"; this.from = from;
this.getData();
this.pageInfo.type="add"
},
/** 查看*/
view(row) {
this.reset()
this.query = { id: row.id };
this.urls.currUrl ="job/view";
this.getData();
this.pageInfo.type="view"
this.title = "职位信息详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
// 固定新增类型 this.title = from === "group" ? "修改分组信息" : "修改职位信息";
if(this.from == 'group'){ },
this.form.type = '1' /** 新增 */
}else{ add(row) {
this.form.type = '2' console.log(row, "添加");
} this.from = row;
this.open = true; this.title = row === "group" ? "新增分组信息" : "新增职位信息";
}, this.reset();
afterSubmit(data) { this.urls.currUrl = "job/add";
this.open = false; this.getData();
this.$emit("ok"); this.pageInfo.type = "add";
}, },
/** 查看*/
view(row) {
this.reset();
this.query = { id: row.id };
this.urls.currUrl = "job/view";
this.getData();
this.pageInfo.type = "view";
this.title = "职位信息详细";
},
/**取消按钮 */
cancel() {
this.open = false;
},
/**获取数据后弹框 */
afterRender(data) {
// 固定新增类型
if (this.from == "group") {
this.form.type = "1";
} else {
this.form.type = "2";
}
this.open = true;
},
afterSubmit(data) {
this.open = false;
this.$emit("ok");
},
// 表单重置 // 表单重置
reset() { reset() {
this.form = { this.form = {
groupId : null, groupId: "",
groupName : "", groupName: "",
jobCode : "", jobCode: "",
jobName : "", jobName: "",
remark : "", remark: "",
}; };
this.resetForm("form"); this.resetForm("form");
}, },
resetForm(refName) { resetForm(refName) {
if (this.$refs[refName]) { if (this.$refs[refName]) {
this.$refs[refName].resetFields(); this.$refs[refName].resetFields();
} }
}, },
}, },
}; };
</script> </script>
...@@ -70,13 +70,27 @@ export default { ...@@ -70,13 +70,27 @@ export default {
color: "#000", color: "#000",
}, },
}, },
dataZoom: [
{
show: true,
realtime: true,
start: 0,
end: 100
},
{
type: 'inside',
realtime: true,
start: 0,
end: 100
}
],
tooltip: {}, tooltip: {},
xAxis: { xAxis: {
data: this.chartsData.map(i => { data: this.chartsData.map(i => {
// console.log(i) // console.log(i)
if(this.title == "申诉次数部门排名TOP20") return i.deptName if (this.title == "申诉次数部门排名TOP20") return i.deptName
if(this.title == "申诉次数个人排名TOP20") return i.staffName if (this.title == "申诉次数个人排名TOP20") return i.staffName
if(this.title == "申诉次数规则排名TOP20") return i.ruleName if (this.title == "申诉次数规则排名TOP20") return i.ruleName
// return i.ruleName || i.deptName || i.staffName // return i.ruleName || i.deptName || i.staffName
}) })
// this.title == "申诉次数部门排名TOP20" // this.title == "申诉次数部门排名TOP20"
...@@ -151,7 +165,7 @@ export default { ...@@ -151,7 +165,7 @@ export default {
grid: { grid: {
left: "5%", left: "5%",
right: "4%", right: "4%",
bottom: "2%", // bottom: "1%",
containLabel: true, containLabel: true,
}, },
// color:[ "#61a0a8",], // color:[ "#61a0a8",],
......
...@@ -122,7 +122,7 @@ ...@@ -122,7 +122,7 @@
<el-col :span="22"> <el-col :span="22">
<el-form-item label="图片凭证:"> <el-form-item label="图片凭证:">
<div v-if="form.view == '查看'"> <div v-if="form.view == '查看'">
<el-image <!-- <el-image
v-if="form.filePaths" v-if="form.filePaths"
style="width: 100px; height: 100px" style="width: 100px; height: 100px"
:src=" :src="
...@@ -138,7 +138,8 @@ ...@@ -138,7 +138,8 @@
: [form.filePaths] : [form.filePaths]
" "
> >
</el-image> </el-image> -->
<filepReview v-if="form.filePaths" :src="form.filePaths"/>
<span v-else>--</span> <span v-else>--</span>
</div> </div>
<ImageUpload <ImageUpload
......
...@@ -175,7 +175,7 @@ ...@@ -175,7 +175,7 @@
<el-col :span="22"> <el-col :span="22">
<el-form-item label="图片凭证:"> <el-form-item label="图片凭证:">
<div v-if="form.view == '查看'"> <div v-if="form.view == '查看'">
<el-image <!-- <el-image
v-if="form.filePaths" v-if="form.filePaths"
style="width: 100px; height: 100px" style="width: 100px; height: 100px"
:src=" :src="
...@@ -191,7 +191,8 @@ ...@@ -191,7 +191,8 @@
: [form.filePaths] : [form.filePaths]
" "
> >
</el-image> </el-image> -->
<filepReview v-if="form.filePaths" :src="form.filePaths"/>
<span v-else>--</span> <span v-else>--</span>
</div> </div>
<ImageUpload <ImageUpload
......
...@@ -150,7 +150,7 @@ ...@@ -150,7 +150,7 @@
<el-col :span="22"> <el-col :span="22">
<el-form-item label="图片凭证:"> <el-form-item label="图片凭证:">
<div v-if="form.view == '查看'"> <div v-if="form.view == '查看'">
<el-image <!-- <el-image
v-if="form.filePaths" v-if="form.filePaths"
style="width: 100px; height: 100px" style="width: 100px; height: 100px"
:src=" :src="
...@@ -166,7 +166,8 @@ ...@@ -166,7 +166,8 @@
: [form.filePaths] : [form.filePaths]
" "
> >
</el-image> </el-image> -->
<filepReview v-if="form.filePaths" :src="form.filePaths"/>
<span v-else>--</span> <span v-else>--</span>
</div> </div>
<ImageUpload <ImageUpload
......
...@@ -127,7 +127,7 @@ ...@@ -127,7 +127,7 @@
<el-col :span="22"> <el-col :span="22">
<el-form-item label="图片凭证:"> <el-form-item label="图片凭证:">
<div v-if="form.view == '查看'"> <div v-if="form.view == '查看'">
<el-image <!-- <el-image
v-if="form.filePaths" v-if="form.filePaths"
style="width: 100px; height: 100px" style="width: 100px; height: 100px"
:src=" :src="
...@@ -143,7 +143,8 @@ ...@@ -143,7 +143,8 @@
: [form.filePaths] : [form.filePaths]
" "
> >
</el-image> </el-image> -->
<filepReview v-if="form.filePaths" :src="form.filePaths"/>
<span v-else>--</span> <span v-else>--</span>
</div> </div>
<ImageUpload <ImageUpload
......
...@@ -87,7 +87,7 @@ ...@@ -87,7 +87,7 @@
<el-col :span="22"> <el-col :span="22">
<el-form-item label="图片凭证:"> <el-form-item label="图片凭证:">
<div v-if="form.view == '查看'"> <div v-if="form.view == '查看'">
<el-image <!-- <el-image
v-if="form.filePaths" v-if="form.filePaths"
style="width: 100px; height: 100px" style="width: 100px; height: 100px"
:src=" :src="
...@@ -103,7 +103,8 @@ ...@@ -103,7 +103,8 @@
: [form.filePaths] : [form.filePaths]
" "
> >
</el-image> </el-image> -->
<filepReview v-if="form.filePaths" :src="form.filePaths"/>
<span v-else>--</span> <span v-else>--</span>
</div> </div>
<ImageUpload <ImageUpload
......
...@@ -140,7 +140,7 @@ ...@@ -140,7 +140,7 @@
<el-col :span="22"> <el-col :span="22">
<el-form-item label="图片凭证:"> <el-form-item label="图片凭证:">
<div v-if="form.view == '查看'"> <div v-if="form.view == '查看'">
<el-image <!-- <el-image
v-if="form.filePaths" v-if="form.filePaths"
style="width: 100px; height: 100px" style="width: 100px; height: 100px"
:src=" :src="
...@@ -156,7 +156,8 @@ ...@@ -156,7 +156,8 @@
: [form.filePaths] : [form.filePaths]
" "
> >
</el-image> </el-image> -->
<filepReview v-if="form.filePaths" :src="form.filePaths"/>
<span v-else>--</span> <span v-else>--</span>
</div> </div>
<ImageUpload <ImageUpload
......
...@@ -121,7 +121,7 @@ export default { ...@@ -121,7 +121,7 @@ export default {
{ label: "增减类型", prop: "subAddType", formatter: this.formatter }, { label: "增减类型", prop: "subAddType", formatter: this.formatter },
{ label: "分值", prop: "score" }, { label: "分值", prop: "score", formatter: this.formatter },
{ label: "负责人分值", prop: "ownerScore" }, { label: "负责人分值", prop: "ownerScore" },
...@@ -226,7 +226,9 @@ export default { ...@@ -226,7 +226,9 @@ export default {
type: this.activeName, type: this.activeName,
page: this.query.page, page: this.query.page,
orderColList: this.typeArr, orderColList: this.typeArr,
name: `%${this.searchValue}%`, andConditionList: [
{ content: `%${this.searchValue}%`, name: `%${this.searchValue}%` },
],
}).then((res) => { }).then((res) => {
if (res.code == 1) { if (res.code == 1) {
this.tableData = res.data; this.tableData = res.data;
......
...@@ -52,6 +52,7 @@ ...@@ -52,6 +52,7 @@
:expand-on-click-node="false" :expand-on-click-node="false"
:render-content="renderContent" :render-content="renderContent"
@node-click="handleNodeClick" @node-click="handleNodeClick"
:default-expand-all="true"
> >
</el-tree> </el-tree>
</el-scrollbar> </el-scrollbar>
...@@ -151,13 +152,13 @@ ...@@ -151,13 +152,13 @@
<!-- 花名册记录查看 --> <!-- 花名册记录查看 -->
<el-drawer title="历史花名册" :visible.sync="drawerhistory" direction="rtl"> <el-drawer title="历史花名册" :visible.sync="drawerhistory" direction="rtl">
<div class="hisList"> <div class="hisList">
<div class="list mt10" v-for="item in 10" :key="item"> <div class="list mt10" v-for="item in 1" :key="item">
<div class="flex flex-align-center flex-pack-justify"> <div class="flex flex-align-center flex-pack-justify">
<div>花名册记录</div> <div>花名册记录</div>
<el-button type="text">查看</el-button> <!-- <el-button type="text">查看</el-button> -->
</div> </div>
<div class="times"> <div class="times">
导出时间:2020-08-13 导出时间:2023-07-19
</div> </div>
</div> </div>
</div> </div>
...@@ -182,7 +183,12 @@ ...@@ -182,7 +183,12 @@
</div> </div>
</el-dialog> </el-dialog>
<drawer-show ref="drawerform" @ok="getData" :bumentree="areaData" :currentNode="currentNode"/> <drawer-show
ref="drawerform"
@ok="getData"
:bumentree="areaData"
:currentNode="currentNode"
/>
</div> </div>
</template> </template>
...@@ -248,7 +254,7 @@ export default { ...@@ -248,7 +254,7 @@ export default {
}, },
handleNodeClick(node) { handleNodeClick(node) {
console.log(node,123123); console.log(node, 123123);
this.currentNode = node; this.currentNode = node;
this.query = { deptId: node.id }; this.query = { deptId: node.id };
this.getData(); this.getData();
...@@ -327,13 +333,13 @@ export default { ...@@ -327,13 +333,13 @@ export default {
name: "name", name: "name",
type: "text", type: "text",
label: "员工姓名", label: "员工姓名",
fuzzy: false, fuzzy: true,
}, },
{ {
name: "phoneNumber", name: "phoneNumber",
type: "text", type: "text",
label: "手机号", label: "手机号",
fuzzy: false, fuzzy: true,
}, },
], ],
columns: [ columns: [
......
...@@ -80,7 +80,7 @@ export default { ...@@ -80,7 +80,7 @@ export default {
name: '目标线', name: '目标线',
yAxis: this.markLine, yAxis: this.markLine,
label: { label: {
formatter: '{b}:'+this.legendName+'不高于20.0%,', formatter: '{b}:' + this.legendName + '不高于20.0%,',
position: 'insideStartTop' position: 'insideStartTop'
}, },
lineStyle: { lineStyle: {
...@@ -188,6 +188,10 @@ export default { ...@@ -188,6 +188,10 @@ export default {
] ]
}) })
} }
myChart.on('click', (params)=>{
this.$emit("click",params)
})
}, },
}, },
}; };
......
<template> <template>
<div class="page"> <div class="page">
<LayoutTable :data="tableData" notAdd notDel :config="tableConfig"> <LayoutTable :data="tableData" notAdd notDel :config="tableConfig">
<el-button <el-button slot="table-head-left2" style="margin-left: 10px" icon="el-icon-tickets" size="mini" @click="doExport"
slot="table-head-left2" :disabled="isExport">导出</el-button>
style="margin-left: 10px"
icon="el-icon-tickets"
size="mini"
@click="doExport"
:disabled="isExport"
>导出</el-button
>
</LayoutTable> </LayoutTable>
<dialog-show ref="dialogform" @ok="getData" /> <dialog-show ref="dialogform" @ok="getData" />
...@@ -26,7 +19,7 @@ export default { ...@@ -26,7 +19,7 @@ export default {
dialogShow, dialogShow,
}, },
mixins: [table], mixins: [table],
created() {}, created() { },
methods: { methods: {
/** 导出Excel */ /** 导出Excel */
doExport() { doExport() {
...@@ -92,7 +85,7 @@ export default { ...@@ -92,7 +85,7 @@ export default {
{ label: "姓名", prop: "staffName" }, { label: "姓名", prop: "staffName" },
{ label: "工号", prop: "workNum" }, { label: "工号", prop: "workNum" },
{ label: "手机号", prop: "phoneNumber" }, { label: "手机号", prop: "phoneNumber" },
{ label: "所属部门", prop: "deptName" }, { label: "所属部门", prop: "deptName" },
...@@ -103,15 +96,16 @@ export default { ...@@ -103,15 +96,16 @@ export default {
}, },
}, },
{ label: "考勤绩效", prop: "attendScore", formatter: this.formatter }, { label: "考勤绩效指标分数", prop: "attendScore", formatter: this.formatter },
{ label: "评价绩效", prop: "assessScore", formatter: this.formatter }, { label: "评价绩效指标分数", prop: "reviewScore", formatter: this.formatter },
{ label: "投诉绩效指标分数", prop: "reviewScore", formatter: this.formatter },
{ label: "办件绩效", prop: "workScore", formatter: this.formatter }, { label: "办件绩效分数", prop: "workScore", formatter: this.formatter },
{ label: "效能绩效", prop: "effectScore", formatter: this.formatter }, { label: "效能绩效分数", prop: "effectScore", formatter: this.formatter },
{ label: "其它绩效", prop: "otherScore", formatter: this.formatter }, { label: "其它绩效分数", prop: "otherScore", formatter: this.formatter },
{ {
label: "累计异常分数", label: "累计异常分数",
......
...@@ -68,6 +68,7 @@ ...@@ -68,6 +68,7 @@
<profiles.hik.appSecret>2m9RcPJOKq5j2QPQM4v5</profiles.hik.appSecret> <profiles.hik.appSecret>2m9RcPJOKq5j2QPQM4v5</profiles.hik.appSecret>
<profiles.dingtalk.domain>https://oapi.dingtalk.com</profiles.dingtalk.domain> <profiles.dingtalk.domain>https://oapi.dingtalk.com</profiles.dingtalk.domain>
<profiles.dingtalk.oaUrl>api.dingtalk.com</profiles.dingtalk.oaUrl>
<profiles.dingtalk.agentId>2652674890</profiles.dingtalk.agentId> <profiles.dingtalk.agentId>2652674890</profiles.dingtalk.agentId>
<profiles.dingtalk.appKey>dingpqzradgfr4efdi2j</profiles.dingtalk.appKey> <profiles.dingtalk.appKey>dingpqzradgfr4efdi2j</profiles.dingtalk.appKey>
<profiles.dingtalk.appSecret>bF2WALmo5_Wuj3hg5gXeWqezrYnZChUJ88HjzNWpkA9ivdOxfBDGOGYcfVRfB3vd</profiles.dingtalk.appSecret> <profiles.dingtalk.appSecret>bF2WALmo5_Wuj3hg5gXeWqezrYnZChUJ88HjzNWpkA9ivdOxfBDGOGYcfVRfB3vd</profiles.dingtalk.appSecret>
...@@ -98,6 +99,7 @@ ...@@ -98,6 +99,7 @@
<profiles.hik.appSecret>2m9RcPJOKq5j2QPQM4v5</profiles.hik.appSecret> <profiles.hik.appSecret>2m9RcPJOKq5j2QPQM4v5</profiles.hik.appSecret>
<profiles.dingtalk.domain>http://172.15.28.113:8918</profiles.dingtalk.domain> <profiles.dingtalk.domain>http://172.15.28.113:8918</profiles.dingtalk.domain>
<profiles.dingtalk.oaUrl>172.15.28.113:8919</profiles.dingtalk.oaUrl>
<profiles.dingtalk.agentId>2652674890</profiles.dingtalk.agentId> <profiles.dingtalk.agentId>2652674890</profiles.dingtalk.agentId>
<profiles.dingtalk.appKey>dingpqzradgfr4efdi2j</profiles.dingtalk.appKey> <profiles.dingtalk.appKey>dingpqzradgfr4efdi2j</profiles.dingtalk.appKey>
<profiles.dingtalk.appSecret>bF2WALmo5_Wuj3hg5gXeWqezrYnZChUJ88HjzNWpkA9ivdOxfBDGOGYcfVRfB3vd</profiles.dingtalk.appSecret> <profiles.dingtalk.appSecret>bF2WALmo5_Wuj3hg5gXeWqezrYnZChUJ88HjzNWpkA9ivdOxfBDGOGYcfVRfB3vd</profiles.dingtalk.appSecret>
......
...@@ -158,11 +158,12 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi ...@@ -158,11 +158,12 @@ public class LoginController extends BaseCRUDJsonBodyMappingController<UserServi
homeStatInfo.setTotalDeptNum(totalDeptNum); homeStatInfo.setTotalDeptNum(totalDeptNum);
//todo //todo
homeStatInfo.setAttendRadio(new BigDecimal(91.00)); homeStatInfo.setAttendRadio(new BigDecimal(98.00));
homeStatInfo.setLevealPersonNum(6); homeStatInfo.setLevealPersonNum(6);
homeStatInfo.setLatePersonNum(2); homeStatInfo.setLatePersonNum(2);
homeStatInfo.setLeftEarlyPersonNum(1); homeStatInfo.setLeftEarlyPersonNum(1);
homeStatInfo.setMissCardPersonNum(0); homeStatInfo.setMissCardPersonNum(23);
homeStatInfo.setAttendPersonNum(426);
data.put("homeStat", homeStatInfo); data.put("homeStat", homeStatInfo);
data.put("token", token); data.put("token", token);
......
...@@ -19,8 +19,6 @@ public abstract class BaseReq implements Serializable { ...@@ -19,8 +19,6 @@ public abstract class BaseReq implements Serializable {
*/ */
private Integer size; private Integer size;
/** /**
* 工号 * 工号
*/ */
......
package com.mortals.xhx.busiz;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
@Data
public class TestReq {
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTimeStart;
@JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
private Date createTimeEnd;
}
...@@ -27,4 +27,9 @@ public class EffectSaveReq extends BaseReq { ...@@ -27,4 +27,9 @@ public class EffectSaveReq extends BaseReq {
* 报警时间 * 报警时间
*/ */
private Date alarmTime; private Date alarmTime;
/**
* 窗口编号
*/
private String windowNum;
} }
...@@ -28,6 +28,9 @@ public class ReviewSaveReq extends BaseReq { ...@@ -28,6 +28,9 @@ public class ReviewSaveReq extends BaseReq {
*/ */
private String reviewDevice; private String reviewDevice;
/**
* 窗口编号
*/
private String windowNum;
} }
...@@ -219,7 +219,7 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq> ...@@ -219,7 +219,7 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq>
recordEntity.setRuleName(rule.getName()); recordEntity.setRuleName(rule.getName());
recordEntity.setCategoryId(rule.getCategoryId()); recordEntity.setCategoryId(rule.getCategoryId());
recordEntity.setCategoryName(rule.getCategoryName()); recordEntity.setCategoryName(rule.getCategoryName());
recordEntity.setDeductPerson("admin"); recordEntity.setDeductPerson("系统管理员");
recordEntity.setDeductTime(new Date()); recordEntity.setDeductTime(new Date());
recordEntity.setCreateUserId(1L); recordEntity.setCreateUserId(1L);
recordEntity.setCreateTime(new Date()); recordEntity.setCreateTime(new Date());
...@@ -254,11 +254,12 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq> ...@@ -254,11 +254,12 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq>
recordEntity.setRuleName(rule.getName()); recordEntity.setRuleName(rule.getName());
recordEntity.setCategoryId(rule.getCategoryId()); recordEntity.setCategoryId(rule.getCategoryId());
recordEntity.setCategoryName(rule.getCategoryName()); recordEntity.setCategoryName(rule.getCategoryName());
recordEntity.setDeductPerson("admin"); recordEntity.setDeductPerson("系统管理员");
recordEntity.setDeductTime(new Date()); recordEntity.setDeductTime(new Date());
recordEntity.setCreateUserId(1L); recordEntity.setCreateUserId(1L);
recordEntity.setCreateTime(new Date()); recordEntity.setCreateTime(new Date());
recordEntity.setWorkNum(staffEntity.getWorkNum()); recordEntity.setWorkNum(staffEntity.getWorkNum());
recordEntity.setWindowNum(req.getWindowNum());
PerformRulesCategoryEntity categoryEntity = categoryService.get(rule.getCategoryId()); PerformRulesCategoryEntity categoryEntity = categoryService.get(rule.getCategoryId());
recordEntity.setCategoryName(categoryEntity == null ? "" : categoryEntity.getName()); recordEntity.setCategoryName(categoryEntity == null ? "" : categoryEntity.getName());
PerformReviewRecordEntity save = reviewRecordService.save(recordEntity); PerformReviewRecordEntity save = reviewRecordService.save(recordEntity);
...@@ -285,7 +286,7 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq> ...@@ -285,7 +286,7 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq>
recordEntity.setRuleName(rule.getName()); recordEntity.setRuleName(rule.getName());
recordEntity.setCategoryId(rule.getCategoryId()); recordEntity.setCategoryId(rule.getCategoryId());
recordEntity.setCategoryName(rule.getCategoryName()); recordEntity.setCategoryName(rule.getCategoryName());
recordEntity.setDeductPerson("admin"); recordEntity.setDeductPerson("系统管理员");
recordEntity.setDeductTime(new Date()); recordEntity.setDeductTime(new Date());
recordEntity.setWorkNum(staffEntity.getWorkNum()); recordEntity.setWorkNum(staffEntity.getWorkNum());
...@@ -317,7 +318,7 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq> ...@@ -317,7 +318,7 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq>
recordEntity.setRuleName(rule.getName()); recordEntity.setRuleName(rule.getName());
recordEntity.setCategoryId(rule.getCategoryId()); recordEntity.setCategoryId(rule.getCategoryId());
recordEntity.setCategoryName(rule.getCategoryName()); recordEntity.setCategoryName(rule.getCategoryName());
recordEntity.setDeductPerson("admin"); recordEntity.setDeductPerson("系统管理员");
recordEntity.setDeductTime(new Date()); recordEntity.setDeductTime(new Date());
recordEntity.setWorkNum(staffEntity.getWorkNum()); recordEntity.setWorkNum(staffEntity.getWorkNum());
...@@ -350,10 +351,12 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq> ...@@ -350,10 +351,12 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq>
recordEntity.setRuleName(rule.getName()); recordEntity.setRuleName(rule.getName());
recordEntity.setCategoryId(rule.getCategoryId()); recordEntity.setCategoryId(rule.getCategoryId());
recordEntity.setCategoryName(rule.getCategoryName()); recordEntity.setCategoryName(rule.getCategoryName());
recordEntity.setDeductPerson("admin"); recordEntity.setDeductPerson("系统管理员");
recordEntity.setDeductTime(new Date()); recordEntity.setDeductTime(new Date());
recordEntity.setWorkNum(staffEntity.getWorkNum()); recordEntity.setWorkNum(staffEntity.getWorkNum());
recordEntity.setWindowNum(req.getWindowNum());
recordEntity.setCreateUserId(1L); recordEntity.setCreateUserId(1L);
recordEntity.setCreateTime(new Date()); recordEntity.setCreateTime(new Date());
PerformRulesCategoryEntity categoryEntity = categoryService.get(rule.getCategoryId()); PerformRulesCategoryEntity categoryEntity = categoryService.get(rule.getCategoryId());
...@@ -384,7 +387,7 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq> ...@@ -384,7 +387,7 @@ public class ApiWebPerformController extends AbstractBaseController<PerformReq>
recordEntity.setCategoryName(rule.getCategoryName()); recordEntity.setCategoryName(rule.getCategoryName());
recordEntity.setWorkNum(staffEntity.getWorkNum()); recordEntity.setWorkNum(staffEntity.getWorkNum());
recordEntity.setDeductPerson("admin"); recordEntity.setDeductPerson("系统管理员");
recordEntity.setDeductTime(new Date()); recordEntity.setDeductTime(new Date());
recordEntity.setCreateUserId(1L); recordEntity.setCreateUserId(1L);
......
...@@ -8,6 +8,7 @@ import com.alibaba.fastjson.JSONObject; ...@@ -8,6 +8,7 @@ import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.common.Rest; import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.model.OrderCol;
import com.mortals.framework.model.PageInfo; import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.Result; import com.mortals.framework.model.Result;
import com.mortals.xhx.busiz.h5.req.AppealReq; import com.mortals.xhx.busiz.h5.req.AppealReq;
...@@ -29,6 +30,7 @@ import org.springframework.web.bind.annotation.RequestBody; ...@@ -29,6 +30,7 @@ import org.springframework.web.bind.annotation.RequestBody;
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 java.util.Arrays;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
...@@ -131,6 +133,7 @@ public class AppealApiController extends AbstractBaseController<PerformReq> { ...@@ -131,6 +133,7 @@ public class AppealApiController extends AbstractBaseController<PerformReq> {
query.setCreateTimeStart(appealReq.getApperalStartDate()); query.setCreateTimeStart(appealReq.getApperalStartDate());
query.setCreateTimeEnd(appealReq.getAppealEndDate()); query.setCreateTimeEnd(appealReq.getAppealEndDate());
query.setStaffId(context.getUser().getCustomerId()); query.setStaffId(context.getUser().getCustomerId());
query.setOrderColList(Arrays.asList(new OrderCol("createTime",OrderCol.DESCENDING)));
Result<PerformAttendAppealEntity> result = appealService.find(query, pageInfo, context); Result<PerformAttendAppealEntity> result = appealService.find(query, pageInfo, context);
model.put(KEY_RESULT_DATA, result.getList()); model.put(KEY_RESULT_DATA, result.getList());
......
...@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject; ...@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.common.Rest; import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.model.OrderCol;
import com.mortals.framework.model.PageInfo; import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.Result; import com.mortals.framework.model.Result;
import com.mortals.xhx.busiz.h5.req.FeedbackReq; import com.mortals.xhx.busiz.h5.req.FeedbackReq;
...@@ -93,6 +94,8 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> { ...@@ -93,6 +94,8 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> {
feedbackQuery.setIdList(feedbackIdList); feedbackQuery.setIdList(feedbackIdList);
feedbackQuery.setCreateTimeStart(feedbackReq.getFeedBackStartDate()); feedbackQuery.setCreateTimeStart(feedbackReq.getFeedBackStartDate());
feedbackQuery.setCreateTimeEnd(feedbackReq.getFeedBackEndDate()); feedbackQuery.setCreateTimeEnd(feedbackReq.getFeedBackEndDate());
feedbackQuery.setOrderColList(Arrays.asList(new OrderCol("createTime",OrderCol.DESCENDING)));
Result<FeedbackEntity> result = feedbackService.find(feedbackQuery, pageAllInfo, null); Result<FeedbackEntity> result = feedbackService.find(feedbackQuery, pageAllInfo, null);
model.put(PAGEINFO_KEY, result.getPageInfo()); model.put(PAGEINFO_KEY, result.getPageInfo());
model.put(KEY_RESULT_DATA, result.getList()); model.put(KEY_RESULT_DATA, result.getList());
...@@ -113,6 +116,7 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> { ...@@ -113,6 +116,7 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> {
feedbackQuery.setCreateTimeStart(feedbackReq.getFeedBackStartDate()); feedbackQuery.setCreateTimeStart(feedbackReq.getFeedBackStartDate());
feedbackQuery.setCreateTimeEnd(feedbackReq.getFeedBackEndDate()); feedbackQuery.setCreateTimeEnd(feedbackReq.getFeedBackEndDate());
feedbackQuery.setOrderColList(Arrays.asList(new OrderCol("createTime",OrderCol.DESCENDING)));
Result<FeedbackEntity> result = feedbackService.find(feedbackQuery, pageAllInfo, null); Result<FeedbackEntity> result = feedbackService.find(feedbackQuery, pageAllInfo, null);
...@@ -136,6 +140,7 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> { ...@@ -136,6 +140,7 @@ public class FeedbackApiController extends AbstractBaseController<FeedbackReq> {
feedbackQuery.setIdList(unfinFeedbackList); feedbackQuery.setIdList(unfinFeedbackList);
feedbackQuery.setCreateTimeStart(feedbackReq.getFeedBackStartDate()); feedbackQuery.setCreateTimeStart(feedbackReq.getFeedBackStartDate());
feedbackQuery.setCreateTimeEnd(feedbackReq.getFeedBackEndDate()); feedbackQuery.setCreateTimeEnd(feedbackReq.getFeedBackEndDate());
feedbackQuery.setOrderColList(Arrays.asList(new OrderCol("createTime",OrderCol.DESCENDING)));
Result<FeedbackEntity> result = feedbackService.find(feedbackQuery, pageAllInfo, null); Result<FeedbackEntity> result = feedbackService.find(feedbackQuery, pageAllInfo, null);
model.put(PAGEINFO_KEY, result.getPageInfo()); model.put(PAGEINFO_KEY, result.getPageInfo());
model.put(KEY_RESULT_DATA, result.getList()); model.put(KEY_RESULT_DATA, result.getList());
......
...@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject; ...@@ -6,6 +6,7 @@ import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.common.Rest; import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.model.OrderCol;
import com.mortals.framework.model.PageInfo; import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.Result; import com.mortals.framework.model.Result;
import com.mortals.xhx.busiz.h5.req.InspectSaveReq; import com.mortals.xhx.busiz.h5.req.InspectSaveReq;
...@@ -164,6 +165,7 @@ public class InspectApiController extends AbstractBaseController<PerformReq> { ...@@ -164,6 +165,7 @@ public class InspectApiController extends AbstractBaseController<PerformReq> {
query.setCreateTimeEnd(performReq.getPerformEndDate()); query.setCreateTimeEnd(performReq.getPerformEndDate());
query.setCreateUserId(context.getUser().getId()); query.setCreateUserId(context.getUser().getId());
query.setSubMethod(SubMethodEnum.大厅巡查.getValue()); query.setSubMethod(SubMethodEnum.大厅巡查.getValue());
query.setOrderColList(Arrays.asList(new OrderCol("createTime",OrderCol.DESCENDING)));
log.info("inspect query:{}",JSONObject.toJSONString(query)); log.info("inspect query:{}",JSONObject.toJSONString(query));
......
...@@ -10,6 +10,7 @@ import com.alibaba.fastjson.JSONObject; ...@@ -10,6 +10,7 @@ import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.common.Rest; import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.model.OrderCol;
import com.mortals.framework.model.PageInfo; import com.mortals.framework.model.PageInfo;
import com.mortals.framework.model.Result; import com.mortals.framework.model.Result;
import com.mortals.xhx.busiz.h5.req.PerformReq; import com.mortals.xhx.busiz.h5.req.PerformReq;
...@@ -36,10 +37,7 @@ import org.springframework.beans.factory.annotation.Autowired; ...@@ -36,10 +37,7 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
import java.util.Date; import java.util.*;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors; import java.util.stream.Collectors;
import static com.mortals.framework.ap.SysConstains.*; import static com.mortals.framework.ap.SysConstains.*;
...@@ -182,6 +180,7 @@ public class PerformApiController extends AbstractBaseController<PerformReq> { ...@@ -182,6 +180,7 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
query.setCheckTimeEnd(performReq.getPerformEndDate()); query.setCheckTimeEnd(performReq.getPerformEndDate());
query.setStaffId(context.getUser().getCustomerId()); query.setStaffId(context.getUser().getCustomerId());
query.setCheckStatus(CheckStatusEnum.已处理.getValue()); query.setCheckStatus(CheckStatusEnum.已处理.getValue());
query.setOrderColList(Arrays.asList(new OrderCol("createTime",OrderCol.DESCENDING)));
Result<CheckAllRecordVo> result = checkAllRecordService.getAllCheckRecord(query, pageInfo); Result<CheckAllRecordVo> result = checkAllRecordService.getAllCheckRecord(query, pageInfo);
List<CheckAllRecordVo> allCheckRecord = result.getList(); List<CheckAllRecordVo> allCheckRecord = result.getList();
...@@ -202,6 +201,8 @@ public class PerformApiController extends AbstractBaseController<PerformReq> { ...@@ -202,6 +201,8 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
query.setCheckTimeEnd(performReq.getPerformEndDate()); query.setCheckTimeEnd(performReq.getPerformEndDate());
query.setStaffId(context.getUser().getCustomerId()); query.setStaffId(context.getUser().getCustomerId());
query.setCheckStatus(CheckStatusEnum.已处理.getValue()); query.setCheckStatus(CheckStatusEnum.已处理.getValue());
query.setOrderColList(Arrays.asList(new OrderCol("createTime",OrderCol.DESCENDING)));
Result<CheckAttendRecordEntity> result = checkAttendRecordService.find(query, pageInfo, context); Result<CheckAttendRecordEntity> result = checkAttendRecordService.find(query, pageInfo, context);
List<PerformInfo> collect = result.getList().stream().map(item -> { List<PerformInfo> collect = result.getList().stream().map(item -> {
PerformInfo performInfo = new PerformInfo(); PerformInfo performInfo = new PerformInfo();
...@@ -222,6 +223,8 @@ public class PerformApiController extends AbstractBaseController<PerformReq> { ...@@ -222,6 +223,8 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
query.setCheckTimeEnd(performReq.getPerformEndDate()); query.setCheckTimeEnd(performReq.getPerformEndDate());
query.setStaffId(context.getUser().getCustomerId()); query.setStaffId(context.getUser().getCustomerId());
query.setCheckStatus(CheckStatusEnum.已处理.getValue()); query.setCheckStatus(CheckStatusEnum.已处理.getValue());
query.setOrderColList(Arrays.asList(new OrderCol("createTime",OrderCol.DESCENDING)));
Result<CheckReviewRecordEntity> result = checkReviewRecordService.find(query, pageInfo, context); Result<CheckReviewRecordEntity> result = checkReviewRecordService.find(query, pageInfo, context);
List<PerformInfo> collect = result.getList().stream().map(item -> { List<PerformInfo> collect = result.getList().stream().map(item -> {
PerformInfo performInfo = new PerformInfo(); PerformInfo performInfo = new PerformInfo();
...@@ -242,6 +245,8 @@ public class PerformApiController extends AbstractBaseController<PerformReq> { ...@@ -242,6 +245,8 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
query.setCheckTimeEnd(performReq.getPerformEndDate()); query.setCheckTimeEnd(performReq.getPerformEndDate());
query.setStaffId(context.getUser().getCustomerId()); query.setStaffId(context.getUser().getCustomerId());
query.setCheckStatus(CheckStatusEnum.已处理.getValue()); query.setCheckStatus(CheckStatusEnum.已处理.getValue());
query.setOrderColList(Arrays.asList(new OrderCol("createTime",OrderCol.DESCENDING)));
Result<CheckComplainRecordEntity> result = checkComplainRecordService.find(query, pageInfo, context); Result<CheckComplainRecordEntity> result = checkComplainRecordService.find(query, pageInfo, context);
List<PerformInfo> collect = result.getList().stream().map(item -> { List<PerformInfo> collect = result.getList().stream().map(item -> {
PerformInfo performInfo = new PerformInfo(); PerformInfo performInfo = new PerformInfo();
...@@ -262,6 +267,8 @@ public class PerformApiController extends AbstractBaseController<PerformReq> { ...@@ -262,6 +267,8 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
query.setCheckTimeEnd(performReq.getPerformEndDate()); query.setCheckTimeEnd(performReq.getPerformEndDate());
query.setStaffId(context.getUser().getCustomerId()); query.setStaffId(context.getUser().getCustomerId());
query.setCheckStatus(CheckStatusEnum.已处理.getValue()); query.setCheckStatus(CheckStatusEnum.已处理.getValue());
query.setOrderColList(Arrays.asList(new OrderCol("createTime",OrderCol.DESCENDING)));
Result<CheckGoworkRecordEntity> result = checkGoworkRecordService.find(query, pageInfo, context); Result<CheckGoworkRecordEntity> result = checkGoworkRecordService.find(query, pageInfo, context);
List<PerformInfo> collect = result.getList().stream().map(item -> { List<PerformInfo> collect = result.getList().stream().map(item -> {
PerformInfo performInfo = new PerformInfo(); PerformInfo performInfo = new PerformInfo();
...@@ -282,6 +289,8 @@ public class PerformApiController extends AbstractBaseController<PerformReq> { ...@@ -282,6 +289,8 @@ public class PerformApiController extends AbstractBaseController<PerformReq> {
query.setCheckTimeEnd(performReq.getPerformEndDate()); query.setCheckTimeEnd(performReq.getPerformEndDate());
query.setStaffId(context.getUser().getCustomerId()); query.setStaffId(context.getUser().getCustomerId());
query.setCheckStatus(CheckStatusEnum.已处理.getValue()); query.setCheckStatus(CheckStatusEnum.已处理.getValue());
query.setOrderColList(Arrays.asList(new OrderCol("createTime",OrderCol.DESCENDING)));
Result<CheckEffectRecordEntity> result = checkEffectRecordService.find(query, pageInfo, context); Result<CheckEffectRecordEntity> result = checkEffectRecordService.find(query, pageInfo, context);
List<PerformInfo> collect = result.getList().stream().map(item -> { List<PerformInfo> collect = result.getList().stream().map(item -> {
PerformInfo performInfo = new PerformInfo(); PerformInfo performInfo = new PerformInfo();
......
package com.mortals.xhx.daemon.task;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.PageUtil;
import cn.hutool.core.util.StrUtil;
import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context;
import com.mortals.framework.service.ITask;
import com.mortals.framework.service.ITaskExcuteService;
import com.mortals.framework.util.DateUtils;
import com.mortals.xhx.base.system.user.model.UserEntity;
import com.mortals.xhx.common.code.YesNoEnum;
import com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity;
import com.mortals.xhx.module.attendance.model.AttendanceRecordHikQuery;
import com.mortals.xhx.module.attendance.service.AttendanceRecordHikService;
import com.mortals.xhx.module.hik.door.model.req.door.DoorEventReq;
import com.mortals.xhx.module.hik.door.model.rsp.door.DoorEventDataInfo;
import com.mortals.xhx.module.hik.door.service.IHikDoorService;
import com.mortals.xhx.module.staff.model.StaffEntity;
import com.mortals.xhx.module.staff.service.StaffService;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
/**
* 同步获取下午海康门禁事件
*/
@Slf4j
@Service("SyncDoorsEventAfterTask")
public class SyncDoorsEventAfterTaskImpl implements ITaskExcuteService {
@Autowired
private AttendanceRecordHikService recordHikService;
@Autowired
private StaffService staffService;
@Autowired
private IHikDoorService hikDoorService;
@Override
public void excuteTask(ITask task) throws AppException {
syncDoorEvents();
calculateAttendByDay();
}
private void calculateAttendByDay() {
Context context = new Context();
UserEntity userEntity = new UserEntity();
userEntity.setCreateUserId(1L);
userEntity.setCreateUserName("system");
userEntity.setCreateTime(new Date());
context.setUser(userEntity);
AttendanceRecordHikQuery recordHikEntity = new AttendanceRecordHikQuery();
// Date todayStart = DateUtil.offsetHour(new Date(), -5).toJdkDate();
// recordHikEntity.setAttendanceDateStart(DateUtils.getCurrStrDate());
recordHikEntity.setAttendanceDateStart(DateUtil.offsetHour(new Date(), -5).toString());
recordHikEntity.setAttendanceDateEnd(DateUtils.getCurrStrDate());
try {
recordHikService.addAttendanceRecordByQuery(recordHikEntity, context);
} catch (Exception e) {
log.error("计算考勤异常", e);
}
}
private void syncDoorEvents() {
DoorEventReq doorEventReq = new DoorEventReq();
List<Integer> eventTypes = new ArrayList<>();
eventTypes.add(196885);
eventTypes.add(196887);
eventTypes.add(196893);
eventTypes.add(196888);
eventTypes.add(196889);
eventTypes.add(196890);
eventTypes.add(196891);
doorEventReq.setEventTypes(eventTypes);
// 获取当天的开始时间
Date todayStart = DateUtil.offsetHour(new Date(), -5).toJdkDate();
// Date todayStart = DateUtil.beginOfDay(new Date());
// 获取当天的结束时间
Date todayEnd = DateUtil.endOfDay(new Date());
doorEventReq.setStartTime(todayStart);
doorEventReq.setEndTime(todayEnd);
doorEventReq.setPageNo(1);
doorEventReq.setPageSize(1);
Rest<DoorEventDataInfo> doorEventsRest = hikDoorService.getDoorEvents(doorEventReq);
log.info("doorEventsRest:{} msg:{}", doorEventsRest.getCode(), doorEventsRest.getMsg());
if (doorEventsRest.getCode() == YesNoEnum.YES.getValue()) {
//分页获取考勤数据
Integer total = doorEventsRest.getData().getTotal();
int pageCount = PageUtil.totalPage(total, 1000);
for (int i = 1; i <= pageCount; i++) {
doorEventReq.setPageNo(i);
doorEventReq.setPageSize(1000);
doorEventsRest = hikDoorService.getDoorEvents(doorEventReq);
log.info("doorEventsRest:{} msg:{},page:{}", doorEventsRest.getCode(), doorEventsRest.getMsg(), doorEventReq.getPageNo());
getDoorEvents(doorEventsRest);
}
}
}
private void getDoorEvents(Rest<DoorEventDataInfo> doorEventsRest) {
//同步当前考勤数据
List<AttendanceRecordHikEntity> attRecords = doorEventsRest.getData().getList().stream().map(item -> {
AttendanceRecordHikEntity recordHikEntity = new AttendanceRecordHikEntity();
recordHikEntity.initAttrValue();
StaffEntity staffCache = staffService.getExtCache(StrUtil.padPre(item.getJobNo(), 8, "0"));
if (ObjectUtils.isEmpty(staffCache)) {
log.info("staff is null !staffCode:{}", item.getJobNo());
return null;
}
recordHikEntity.setStaffId(staffCache.getId());
recordHikEntity.setStaffName(staffCache.getName());
recordHikEntity.setWorkNum(staffCache.getWorkNum());
recordHikEntity.setDeptId(staffCache.getDeptId());
recordHikEntity.setDeptName(staffCache.getDeptName());
recordHikEntity.setPositionId(staffCache.getPositionId());
recordHikEntity.setPositionName(staffCache.getPositionName());
recordHikEntity.setAttendanceDate(item.getEventTime());
recordHikEntity.setAttendanceAddress(item.getDoorName());
recordHikEntity.setEventSource("门禁点");
recordHikEntity.setRemark(item.getEventId());
recordHikEntity.setCreateTime(new Date());
recordHikEntity.setCreateUserName("系统管理员");
recordHikEntity.setCreateUserId(1L);
return recordHikEntity;
}).filter(f -> f != null).collect(Collectors.toList());
log.info("attRecords size:{}", attRecords.size());
List<String> eventIds = attRecords.parallelStream().filter(f -> !ObjectUtils.isEmpty(f) && !ObjectUtils.isEmpty(f.getRemark())).map(i -> i.getRemark()).collect(Collectors.toList());
//查询当天考勤记录是否有重复的 有的 则不添加
AttendanceRecordHikQuery recordHikQuery = new AttendanceRecordHikQuery();
recordHikQuery.setAttendanceDateStart(DateUtil.format(DateUtil.beginOfDay(new Date()), "yyyy-MM-dd"));
recordHikQuery.setAttendanceDateEnd(DateUtil.format(DateUtil.beginOfDay(new Date()), "yyyy-MM-dd"));
recordHikQuery.setRemarkList(eventIds);
Set<String> eventIdSet = recordHikService.find(recordHikQuery).parallelStream().map(i -> i.getRemark()).collect(Collectors.toSet());
//去重 时分秒打卡的 也要去掉重复。
List<AttendanceRecordHikEntity> saveRecordList = attRecords.stream().filter(f -> !eventIdSet.contains(f.getRemark())).collect(Collectors.toList());
if (!ObjectUtils.isEmpty(saveRecordList)) {
//单个插入 去掉重复时间段的打卡记录
for (AttendanceRecordHikEntity recordHikEntity : saveRecordList) {
try {
recordHikService.save(recordHikEntity);
} catch (Exception e) {
log.error("基础考勤数据保存异常", e.getMessage());
}
}
// recordHikService.save(saveRecordList);
}
log.info("saveRecordList size:{}", saveRecordList.size());
}
@Override
public void stopTask(ITask task) throws AppException {
}
}
...@@ -3,8 +3,6 @@ package com.mortals.xhx.daemon.task; ...@@ -3,8 +3,6 @@ package com.mortals.xhx.daemon.task;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.PageUtil; import cn.hutool.core.util.PageUtil;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.mortals.framework.common.Rest; import com.mortals.framework.common.Rest;
import com.mortals.framework.exception.AppException; import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
...@@ -22,12 +20,10 @@ import com.mortals.xhx.module.hik.door.service.IHikDoorService; ...@@ -22,12 +20,10 @@ import com.mortals.xhx.module.hik.door.service.IHikDoorService;
import com.mortals.xhx.module.staff.model.StaffEntity; import com.mortals.xhx.module.staff.model.StaffEntity;
import com.mortals.xhx.module.staff.service.StaffService; import com.mortals.xhx.module.staff.service.StaffService;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.checkerframework.checker.units.qual.A;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.util.ObjectUtils; import org.springframework.util.ObjectUtils;
import java.time.Year;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
...@@ -66,10 +62,13 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService { ...@@ -66,10 +62,13 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService {
userEntity.setCreateTime(new Date()); userEntity.setCreateTime(new Date());
context.setUser(userEntity); context.setUser(userEntity);
AttendanceRecordHikQuery recordHikEntity = new AttendanceRecordHikQuery(); AttendanceRecordHikQuery recordHikEntity = new AttendanceRecordHikQuery();
recordHikEntity.setAttendanceDateStart(DateUtils.getCurrStrDate());
// Date todayStart = DateUtil.offsetHour(new Date(), -5).toJdkDate();
// recordHikEntity.setAttendanceDateStart(DateUtils.getCurrStrDate());
recordHikEntity.setAttendanceDateStart(DateUtil.offsetHour(new Date(), -5).toString());
recordHikEntity.setAttendanceDateEnd(DateUtils.getCurrStrDate()); recordHikEntity.setAttendanceDateEnd(DateUtils.getCurrStrDate());
try { try {
recordHikService.addAttendanceRecord(recordHikEntity, context); recordHikService.addAttendanceRecordByQuery(recordHikEntity, context);
} catch (Exception e) { } catch (Exception e) {
log.error("计算考勤异常", e); log.error("计算考勤异常", e);
} }
...@@ -87,7 +86,8 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService { ...@@ -87,7 +86,8 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService {
eventTypes.add(196891); eventTypes.add(196891);
doorEventReq.setEventTypes(eventTypes); doorEventReq.setEventTypes(eventTypes);
// 获取当天的开始时间 // 获取当天的开始时间
Date todayStart = DateUtil.beginOfDay(new Date()); Date todayStart = DateUtil.offsetHour(new Date(), -5).toJdkDate();
// Date todayStart = DateUtil.beginOfDay(new Date());
// 获取当天的结束时间 // 获取当天的结束时间
Date todayEnd = DateUtil.endOfDay(new Date()); Date todayEnd = DateUtil.endOfDay(new Date());
doorEventReq.setStartTime(todayStart); doorEventReq.setStartTime(todayStart);
...@@ -118,7 +118,7 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService { ...@@ -118,7 +118,7 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService {
recordHikEntity.initAttrValue(); recordHikEntity.initAttrValue();
StaffEntity staffCache = staffService.getExtCache(StrUtil.padPre(item.getJobNo(), 8, "0")); StaffEntity staffCache = staffService.getExtCache(StrUtil.padPre(item.getJobNo(), 8, "0"));
if (ObjectUtils.isEmpty(staffCache)) { if (ObjectUtils.isEmpty(staffCache)) {
log.info("staff is null !staffCode:{}",item.getJobNo()); log.info("staff is null !staffCode:{}", item.getJobNo());
return null; return null;
} }
...@@ -135,13 +135,11 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService { ...@@ -135,13 +135,11 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService {
recordHikEntity.setEventSource("门禁点"); recordHikEntity.setEventSource("门禁点");
recordHikEntity.setRemark(item.getEventId()); recordHikEntity.setRemark(item.getEventId());
recordHikEntity.setCreateTime(new Date()); recordHikEntity.setCreateTime(new Date());
recordHikEntity.setCreateUserName("system"); recordHikEntity.setCreateUserName("系统管理员");
recordHikEntity.setCreateUserId(1L); recordHikEntity.setCreateUserId(1L);
return recordHikEntity; return recordHikEntity;
}).filter(f->f!=null).collect(Collectors.toList()); }).filter(f -> f != null).collect(Collectors.toList());
log.info("attRecords size:{}", attRecords.size()); log.info("attRecords size:{}", attRecords.size());
List<String> eventIds = attRecords.parallelStream().filter(f -> !ObjectUtils.isEmpty(f) && !ObjectUtils.isEmpty(f.getRemark())).map(i -> i.getRemark()).collect(Collectors.toList()); List<String> eventIds = attRecords.parallelStream().filter(f -> !ObjectUtils.isEmpty(f) && !ObjectUtils.isEmpty(f.getRemark())).map(i -> i.getRemark()).collect(Collectors.toList());
//查询当天考勤记录是否有重复的 有的 则不添加 //查询当天考勤记录是否有重复的 有的 则不添加
...@@ -151,9 +149,18 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService { ...@@ -151,9 +149,18 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService {
recordHikQuery.setRemarkList(eventIds); recordHikQuery.setRemarkList(eventIds);
Set<String> eventIdSet = recordHikService.find(recordHikQuery).parallelStream().map(i -> i.getRemark()).collect(Collectors.toSet()); Set<String> eventIdSet = recordHikService.find(recordHikQuery).parallelStream().map(i -> i.getRemark()).collect(Collectors.toSet());
//去重 时分秒打卡的 也要去掉重复。
List<AttendanceRecordHikEntity> saveRecordList = attRecords.stream().filter(f -> !eventIdSet.contains(f.getRemark())).collect(Collectors.toList()); List<AttendanceRecordHikEntity> saveRecordList = attRecords.stream().filter(f -> !eventIdSet.contains(f.getRemark())).collect(Collectors.toList());
if (!ObjectUtils.isEmpty(saveRecordList)) { if (!ObjectUtils.isEmpty(saveRecordList)) {
recordHikService.save(saveRecordList); //单个插入 去掉重复时间段的打卡记录
for (AttendanceRecordHikEntity recordHikEntity : saveRecordList) {
try {
recordHikService.save(recordHikEntity);
} catch (Exception e) {
log.error("基础考勤数据保存异常", e.getMessage());
}
}
// recordHikService.save(saveRecordList);
} }
log.info("saveRecordList size:{}", saveRecordList.size()); log.info("saveRecordList size:{}", saveRecordList.size());
} }
...@@ -163,20 +170,4 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService { ...@@ -163,20 +170,4 @@ public class SyncDoorsEventTaskImpl implements ITaskExcuteService {
public void stopTask(ITask task) throws AppException { public void stopTask(ITask task) throws AppException {
} }
public static void main(String[] args) {
// 获取当前时间的小时数
int hour = DateUtil.hour(new Date(), true);
// 获取当前时间所在小时的开始时间和结束时间
Date startTime = DateUtil.beginOfHour(new Date());
Date endTime = DateUtil.endOfHour(new Date());
// 格式化时间为指定格式
String startTimeStr = DateUtil.format(startTime, "yyyy-MM-dd HH:00:00");
String endTimeStr = DateUtil.format(endTime, "yyyy-MM-dd HH:59:59");
// 输出结果
System.out.println("当前时间所在小时的开始时间:" + startTimeStr);
System.out.println("当前时间所在小时的结束时间:" + endTimeStr);
}
} }
...@@ -74,7 +74,7 @@ public class SyncUserTaskImpl implements ITaskExcuteService { ...@@ -74,7 +74,7 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
for (PersonInfo personInfo : personInfoList) { for (PersonInfo personInfo : personInfoList) {
StaffEntity staffEntity = staffService.getExtCache(StrUtil.padPre(personInfo.getJobNo(), 8, "0")); StaffEntity staffEntity = staffService.getExtCache(StrUtil.padPre(personInfo.getJobNo(), 8, "0"));
DeptEntity deptEntity = deptService.selectOne(new DeptQuery().deptCode(personInfo.getOrgIndexCode())); DeptEntity deptEntity = deptService.selectOne(new DeptQuery().deptCode(personInfo.getOrgIndexCode()));
// AttendanceVacationBalanceEntity balanceEntity = balanceService.selectOne(new AttendanceVacationBalanceQuery().staffId(staffEntity.getId())); // AttendanceVacationBalanceEntity balanceEntity = balanceService.selectOne(new AttendanceVacationBalanceQuery().staffId(staffEntity.getId()));
// AttendanceStatEntity statEntity = attendanceStatService.selectOne(new AttendanceStatQuery().staffId(staffEntity.getId())); // AttendanceStatEntity statEntity = attendanceStatService.selectOne(new AttendanceStatQuery().staffId(staffEntity.getId()));
//判断本地数据是否为空 //判断本地数据是否为空
if (ObjectUtils.isEmpty(staffEntity)) { if (ObjectUtils.isEmpty(staffEntity)) {
...@@ -106,7 +106,7 @@ public class SyncUserTaskImpl implements ITaskExcuteService { ...@@ -106,7 +106,7 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
balanceEntity.setCreateUserId(1L); balanceEntity.setCreateUserId(1L);
balanceEntity.setCreateTime(new Date()); balanceEntity.setCreateTime(new Date());
balanceService.save(balanceEntity); balanceService.save(balanceEntity);
//AttendanceVacationBalanceEntity balanceEntity = balanceService.selectOne(new AttendanceVacationBalanceQuery().staffId(staffEntity.getId())); //AttendanceVacationBalanceEntity balanceEntity = balanceService.selectOne(new AttendanceVacationBalanceQuery().staffId(staffEntity.getId()));
AttendanceStatEntity attendanceStatEntity = new AttendanceStatEntity(); AttendanceStatEntity attendanceStatEntity = new AttendanceStatEntity();
attendanceStatEntity.initAttrValue(); attendanceStatEntity.initAttrValue();
...@@ -139,16 +139,7 @@ public class SyncUserTaskImpl implements ITaskExcuteService { ...@@ -139,16 +139,7 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
attendanceStatEntity.setHomeLeave(balanceEntity.getHomeLeave()); attendanceStatEntity.setHomeLeave(balanceEntity.getHomeLeave());
attendanceStatEntity.setPersonalLeave(balanceEntity.getPersonalLeaveDays()); attendanceStatEntity.setPersonalLeave(balanceEntity.getPersonalLeaveDays());
attendanceStatService.save(attendanceStatEntity); attendanceStatService.save(attendanceStatEntity);
//统计各级部门员工数量 todo 优化统计
String ancestor = deptEntity.getAncestors().split(",", 2)[1];
String[] ancestors = ancestor.split(",");
for (String newAncestor : ancestors) {
DeptEntity deptEntity2 = deptService.get(Long.valueOf(newAncestor));
if (Objects.nonNull(deptEntity2)) {
deptEntity2.setPersonNum(deptEntity2.getPersonNum() + 1);
deptService.update(deptEntity2);
}
}
} else { } else {
//更新 //更新
if (!ObjectUtils.isEmpty(deptEntity)) { if (!ObjectUtils.isEmpty(deptEntity)) {
...@@ -165,16 +156,7 @@ public class SyncUserTaskImpl implements ITaskExcuteService { ...@@ -165,16 +156,7 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
staffEntity.setUpdateUserId(1L); staffEntity.setUpdateUserId(1L);
staffEntity.setUpdateTime(new Date()); staffEntity.setUpdateTime(new Date());
staffService.update(staffEntity); staffService.update(staffEntity);
//统计各级部门员工数量
String ancestor = deptEntity.getAncestors().split(",", 2)[1];
String[] ancestors = ancestor.split(",");
for (String newAncestor : ancestors) {
DeptEntity deptEntity2 = deptService.get(Long.valueOf(newAncestor));
if (Objects.nonNull(deptEntity2)) {
deptEntity2.setPersonNum(deptEntity2.getPersonNum() + 1);
deptService.update(deptEntity2);
}
}
} }
} }
} }
...@@ -220,6 +202,7 @@ public class SyncUserTaskImpl implements ITaskExcuteService { ...@@ -220,6 +202,7 @@ public class SyncUserTaskImpl implements ITaskExcuteService {
} }
} }
} }
@Override @Override
public void stopTask(ITask task) throws AppException { public void stopTask(ITask task) throws AppException {
......
package com.mortals.xhx.module.attendance.model; package com.mortals.xhx.module.attendance.model;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.util.Date;
import java.util.List; import java.util.List;
import java.util.ArrayList; import java.util.ArrayList;
import cn.hutool.core.date.DateUtil;
import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonFormat;
import com.mortals.framework.annotation.Excel; import com.mortals.framework.annotation.Excel;
import com.mortals.framework.model.BaseEntityLong; import com.mortals.framework.model.BaseEntityLong;
...@@ -29,6 +32,7 @@ public class AttendanceStatEntity extends AttendanceStatVo { ...@@ -29,6 +32,7 @@ public class AttendanceStatEntity extends AttendanceStatVo {
/** /**
* 员工姓名 * 员工姓名
*/ */
@Excel(name = "员工姓名")
private String staffName; private String staffName;
/** /**
* 所属部门 * 所属部门
...@@ -37,6 +41,7 @@ public class AttendanceStatEntity extends AttendanceStatVo { ...@@ -37,6 +41,7 @@ public class AttendanceStatEntity extends AttendanceStatVo {
/** /**
* 所属部门名称 * 所属部门名称
*/ */
@Excel(name = "部门名称")
private String deptName; private String deptName;
/** /**
* 回单位(天) * 回单位(天)
...@@ -312,11 +317,11 @@ public class AttendanceStatEntity extends AttendanceStatVo { ...@@ -312,11 +317,11 @@ public class AttendanceStatEntity extends AttendanceStatVo {
this.earlyLeaveMeeting = BigDecimal.valueOf(0); this.earlyLeaveMeeting = BigDecimal.valueOf(0);
this.year = -1; this.year = DateUtil.year(new Date());
this.month = -1; this.month = DateUtil.month(new Date())+1;
this.day = -1; this.day = DateUtil.dayOfMonth(new Date());
this.remark = ""; this.remark = "";
...@@ -338,4 +343,8 @@ public class AttendanceStatEntity extends AttendanceStatVo { ...@@ -338,4 +343,8 @@ public class AttendanceStatEntity extends AttendanceStatVo {
this.afternoonTimes = 0; this.afternoonTimes = 0;
} }
public static void main(String[] args) {
System.out.println(DateUtil.dayOfMonth(new Date()));
}
} }
\ No newline at end of file
package com.mortals.xhx.module.attendance.service; package com.mortals.xhx.module.attendance.service;
import com.mortals.framework.model.Context; import com.mortals.framework.model.Context;
import com.mortals.framework.service.ICRUDService; import com.mortals.framework.service.ICRUDService;
import com.mortals.xhx.module.attendance.dao.AttendanceRecordHikDao;
import com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity; import com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity;
import java.util.List;
/** /**
* AttendanceRecordHikService * AttendanceRecordHikService
* *
...@@ -13,10 +16,29 @@ import com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity; ...@@ -13,10 +16,29 @@ import com.mortals.xhx.module.attendance.model.AttendanceRecordHikEntity;
*/ */
public interface AttendanceRecordHikService extends ICRUDService<AttendanceRecordHikEntity,Long>{ public interface AttendanceRecordHikService extends ICRUDService<AttendanceRecordHikEntity,Long>{
AttendanceRecordHikDao getDao();
/**
* 根据查询条件生成打卡记录
* @param attendanceRecordHikQuery
*/
void addAttendanceRecordByQuery(AttendanceRecordHikEntity attendanceRecordHikQuery, Context context) throws Exception;
/** /**
* 将原始数据导入打卡记录表 * 根据查询条件生成打卡记录
* @param entity * @param hikEntity
*/ */
void addAttendanceRecord(AttendanceRecordHikEntity entity, Context context) throws Exception; void addAttendanceRecord(AttendanceRecordHikEntity hikEntity, Context context) throws Exception;
/**
* 根据查原始记录列表生成打卡记录
* @param hikEntityList
*/
void addAttendanceRecordList(List<AttendanceRecordHikEntity> hikEntityList, Context context) throws Exception;
} }
package com.mortals.xhx.module.attendance.web; package com.mortals.xhx.module.attendance.web;
import com.mortals.framework.exception.AppException;
import com.mortals.framework.model.OrderCol;
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 org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.ObjectUtils;
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 org.springframework.web.bind.annotation.*;
...@@ -47,5 +50,13 @@ public class AttendanceExportRecordController extends BaseCRUDJsonBodyMappingCon ...@@ -47,5 +50,13 @@ public class AttendanceExportRecordController extends BaseCRUDJsonBodyMappingCon
super.init(model, context); super.init(model, context);
} }
@Override
protected void doListBefore(AttendanceExportRecordEntity query, Map<String, Object> model, Context context) throws AppException {
if (ObjectUtils.isEmpty(query.getOrderColList())) {
query.setOrderColList(Arrays.asList(new OrderCol("createTime", OrderCol.DESCENDING),new OrderCol("staffName", OrderCol.DESCENDING)));
} else {
query.getOrderColList().add(new OrderCol("createTime", OrderCol.DESCENDING));
}
}
} }
...@@ -127,7 +127,7 @@ public class AttendanceRecordHikController extends BaseCRUDJsonBodyMappingContro ...@@ -127,7 +127,7 @@ public class AttendanceRecordHikController extends BaseCRUDJsonBodyMappingContro
if (ObjectUtils.isEmpty(hikEntity.getAttendanceDateStart())) { if (ObjectUtils.isEmpty(hikEntity.getAttendanceDateStart())) {
throw new AppException("请选择开始日期"); throw new AppException("请选择开始日期");
} }
hikService.addAttendanceRecord(hikEntity, getContext()); hikService.addAttendanceRecordByQuery(hikEntity, getContext());
model.put("message_info", busiDesc + "成功"); model.put("message_info", busiDesc + "成功");
this.recordSysLog(this.request, busiDesc + " 【成功】"); this.recordSysLog(this.request, busiDesc + " 【成功】");
} catch (Exception e) { } catch (Exception e) {
......
package com.mortals.xhx.module.check.model; package com.mortals.xhx.module.check.model;
import com.mortals.framework.model.OrderCol;
import lombok.Data; import lombok.Data;
import java.util.ArrayList;
import java.util.List;
@Data @Data
public class CheckAllRecordQuery { public class CheckAllRecordQuery {
/** /**
...@@ -34,5 +38,6 @@ public class CheckAllRecordQuery { ...@@ -34,5 +38,6 @@ public class CheckAllRecordQuery {
*/ */
private Integer subAddType; private Integer subAddType;
private transient List<OrderCol> orderColList = new ArrayList();
} }
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