Commit f230b2cb authored by 姬鋆屾's avatar 姬鋆屾

tui

parent dc5a897c
...@@ -3,39 +3,118 @@ ...@@ -3,39 +3,118 @@
<el-dialog :title="title" :visible.sync="open" width="90%" append-to-body> <el-dialog :title="title" :visible.sync="open" width="90%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px"> <el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row> <el-row>
<Field label="员工ID" prop="staffId" v-model="form.staffId" placeholder="请输入员工ID"/> <Field
<Field label="员工姓名" prop="staffName" v-model="form.staffName" placeholder="请输入员工姓名"/> label="员工ID"
<Field label="工号" prop="workNum" v-model="form.workNum" placeholder="请输入工号"/> prop="staffId"
<Field label="所属部门" prop="deptId" v-model="form.deptId" placeholder="请输入所属部门"/> v-model="form.staffId"
<Field label="所属部门名称" prop="deptName" v-model="form.deptName" placeholder="请输入所属部门名称"/> placeholder="请输入员工ID"
<Field label="职位ID" prop="positionId" v-model="form.positionId" placeholder="请输入职位ID"/> />
<Field label="职位名称" prop="positionName" v-model="form.positionName" placeholder="请输入职位名称"/> <Field
<Field label="所属考勤组ID" prop="attendanceGroupId" v-model="form.attendanceGroupId" placeholder="请输入所属考勤组ID"/> label="员工姓名"
<Field label="所属考勤组名称" prop="attendanceGroupName" v-model="form.attendanceGroupName" placeholder="请输入所属考勤组名称"/> prop="staffName"
<Field label="班次ID" prop="shiftsId" v-model="form.shiftsId" placeholder="请输入班次ID"/> v-model="form.staffName"
<Field label="班次名称" prop="shiftsName" v-model="form.shiftsName" placeholder="请输入班次名称"/> placeholder="请输入员工姓名"
<Field label="考勤日期" prop="attendanceDate" v-model="form.attendanceDate" type="date" /> />
<Field label="考勤点名称" prop="attendanceAddress" v-model="form.attendanceAddress" placeholder="请输入考勤点名称"/> <Field
<Field label="事件源" prop="eventSource" v-model="form.eventSource" placeholder="请输入事件源"/> label="工号"
<Field label="备注" prop="remark" v-model="form.remark" type="textarea" placeholder="请输入备注"/> prop="workNum"
v-model="form.workNum"
placeholder="请输入工号"
/>
<Field
label="所属部门"
prop="deptId"
v-model="form.deptId"
placeholder="请输入所属部门"
/>
<Field
label="所属部门名称"
prop="deptName"
v-model="form.deptName"
placeholder="请输入所属部门名称"
/>
<Field
label="职位ID"
prop="positionId"
v-model="form.positionId"
placeholder="请输入职位ID"
/>
<Field
label="职位名称"
prop="positionName"
v-model="form.positionName"
placeholder="请输入职位名称"
/>
<Field
label="所属考勤组ID"
prop="attendanceGroupId"
v-model="form.attendanceGroupId"
placeholder="请输入所属考勤组ID"
/>
<Field
label="所属考勤组名称"
prop="attendanceGroupName"
v-model="form.attendanceGroupName"
placeholder="请输入所属考勤组名称"
/>
<Field
label="班次ID"
prop="shiftsId"
v-model="form.shiftsId"
placeholder="请输入班次ID"
/>
<Field
label="班次名称"
prop="shiftsName"
v-model="form.shiftsName"
placeholder="请输入班次名称"
/>
<Field
label="考勤日期"
prop="attendanceDate"
v-model="form.attendanceDate"
type="date"
/>
<Field
label="考勤点名称"
prop="attendanceAddress"
v-model="form.attendanceAddress"
placeholder="请输入考勤点名称"
/>
<Field
label="事件源"
prop="eventSource"
v-model="form.eventSource"
placeholder="请输入事件源"
/>
<Field
label="备注"
prop="remark"
v-model="form.remark"
type="textarea"
placeholder="请输入备注"
/>
</el-row> </el-row>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" v-if="pageInfo.type !== 'view'" @click="submitForm">确 定</el-button> <el-button
type="primary"
v-if="pageInfo.type !== 'view'"
@click="submitForm"
>确 定</el-button
>
<el-button @click="cancel">取 消</el-button> <el-button @click="cancel">取 消</el-button>
</div> </div>
</el-dialog> </el-dialog>
</template> </template>
<script> <script>
import form from "@/assets/mixins/formdialog"; import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow"; import dialogShow from "./dialogshow";
export default { export default {
mixins: [form], mixins: [form],
components: { components: {
dialogShow , dialogShow,
}, },
data() { data() {
return { return {
...@@ -45,46 +124,43 @@ ...@@ -45,46 +124,43 @@
title: "海康考勤打卡记录汇总信息", title: "海康考勤打卡记录汇总信息",
// 是否显示弹出层 // 是否显示弹出层
open: false, open: false,
toString:[ toString: [],
],
// 表单校验 // 表单校验
rules: { rules: {
staffName: [ staffName: [
{required: true,message: "请输入员工姓名", trigger: "blur" }, { required: true, message: "请输入员工姓名", trigger: "blur" },
{max: 64,message: "最多只能录入64个字符",trigger: "blur",}, { max: 64, message: "最多只能录入64个字符", trigger: "blur" },
],
createTime: [
{required: true,message: "请选择创建时间" },
], ],
} createTime: [{ required: true, message: "请选择创建时间" }],
},
}; };
}, },
methods: { methods: {
/** 编辑 */ /** 编辑 */
edit(row) { edit(row) {
this.reset() this.reset();
this.query = { id: row.id }; this.query = { id: row.id };
this.urls.currUrl ="attendance/record/hik/edit"; this.urls.currUrl = "attendance/record/hik/edit";
this.getData(); this.getData();
this.pageInfo.type="edit" this.pageInfo.type = "edit";
this.title = "修改海康考勤打卡记录汇总信息"; this.title = "修改海康考勤打卡记录汇总信息";
}, },
/** 新增 */ /** 新增 */
add(row) { add(row) {
this.reset() this.reset();
this.urls.currUrl = "attendance/record/hik/add"; this.urls.currUrl = "attendance/record/hik/add";
this.getData(); this.getData();
this.pageInfo.type="add" this.pageInfo.type = "add";
this.title = "新增海康考勤打卡记录汇总信息"; this.title = "新增海康考勤打卡记录汇总信息";
}, },
/** 查看*/ /** 查看*/
view(row) { view(row) {
this.reset() this.reset();
this.query = { id: row.id }; this.query = { id: row.id };
this.urls.currUrl ="attendance/record/hik/view"; this.urls.currUrl = "attendance/record/hik/view";
this.getData(); this.getData();
this.pageInfo.type="view" this.pageInfo.type = "view";
this.title = "海康考勤打卡记录汇总信息详细"; this.title = "海康考勤打卡记录汇总信息详细";
}, },
/**取消按钮 */ /**取消按钮 */
...@@ -104,21 +180,21 @@ ...@@ -104,21 +180,21 @@
// 表单重置 // 表单重置
reset() { reset() {
this.form = { this.form = {
staffId : null, staffId: null,
staffName : "", staffName: "",
workNum : "", workNum: "",
deptId : null, deptId: null,
deptName : "", deptName: "",
positionId : null, positionId: null,
positionName : "", positionName: "",
attendanceGroupId : null, attendanceGroupId: null,
attendanceGroupName : "", attendanceGroupName: "",
shiftsId : null, shiftsId: null,
shiftsName : "", shiftsName: "",
attendanceDate : null, attendanceDate: null,
attendanceAddress : "", attendanceAddress: "",
eventSource : "", eventSource: "",
remark : "", remark: "",
}; };
this.resetForm("form"); this.resetForm("form");
}, },
...@@ -128,5 +204,5 @@ ...@@ -128,5 +204,5 @@
} }
}, },
}, },
}; };
</script> </script>
...@@ -7,7 +7,8 @@ ...@@ -7,7 +7,8 @@
icon="el-icon-tickets" icon="el-icon-tickets"
size="mini" size="mini"
@click="handleImport" @click="handleImport"
>导入</el-button> >导入</el-button
>
<el-button <el-button
slot="table-head-left2" slot="table-head-left2"
style="margin-left: 10px" style="margin-left: 10px"
...@@ -16,7 +17,8 @@ ...@@ -16,7 +17,8 @@
type="primary" type="primary"
@click="doExport" @click="doExport"
:disabled="isExport" :disabled="isExport"
>导出</el-button> >导出</el-button
>
<el-button <el-button
slot="table-head-left2" slot="table-head-left2"
style="margin-left: 10px" style="margin-left: 10px"
...@@ -24,9 +26,16 @@ ...@@ -24,9 +26,16 @@
size="mini" size="mini"
type="success" type="success"
@click="lookexportHis" @click="lookexportHis"
>导出记录</el-button> >导出记录</el-button
<el-button type="primary" size="mini" slot="table-head-left2" >
style="margin-left: 10px" @click="formatData">生成打卡记录</el-button> <!-- <el-button
type="primary"
size="mini"
slot="table-head-left2"
style="margin-left: 10px"
@click="formatData"
>生成打卡记录</el-button
> -->
</LayoutTable> </LayoutTable>
<dialog-show ref="dialogform" @ok="getData" /> <dialog-show ref="dialogform" @ok="getData" />
<el-dialog <el-dialog
...@@ -53,10 +62,11 @@ ...@@ -53,10 +62,11 @@
<em>点击上传</em> <em>点击上传</em>
</div> </div>
<div class="el-upload__tip" slot="tip"> <div class="el-upload__tip" slot="tip">
<el-checkbox <el-checkbox v-model="upload.updateSupport" />是否更新已经存在的数据
v-model="upload.updateSupport" <el-link
/>是否更新已经存在的数据 type="primary"
<el-link type="primary" style="font-size: 14px" @click="downloadTemplate" style="font-size: 14px"
@click="downloadTemplate"
>下载模板</el-link >下载模板</el-link
> >
</div> </div>
...@@ -73,34 +83,40 @@ ...@@ -73,34 +83,40 @@
<el-drawer <el-drawer
title="导出记录" title="导出记录"
:visible.sync="drawerhistory" :visible.sync="drawerhistory"
:direction="direction"> :direction="direction"
>
<div class="hisList"> <div class="hisList">
<div class="list mt10" v-for="(item,index) in exportList" :key="index" @click="changeStatus(item)"> <div
class="list mt10"
v-for="(item, index) in exportList"
:key="index"
@click="changeStatus(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="details" v-if="item.islook"> <div class="details" v-if="item.islook">
<div class="mt10" v-if="item.recordIdList"> <div class="mt10" v-if="item.recordIdList">
选择列表id: {{item.recordIdList}} 选择列表id: {{ item.recordIdList }}
</div> </div>
<div class="mt10" v-if="item.deptName"> <div class="mt10" v-if="item.deptName">
选择部门:{{item.deptName}} 选择部门:{{ item.deptName }}
</div> </div>
<div class="mt10" v-if="item.groupName"> <div class="mt10" v-if="item.groupName">
选择考勤组:{{item.groupName}} 选择考勤组:{{ item.groupName }}
</div> </div>
<div class="mt10" v-if="item.className"> <div class="mt10" v-if="item.className">
选择班次:{{item.className}} 选择班次:{{ item.className }}
</div> </div>
<div class="mt10"> <div class="mt10">
<el-link :href="item.filePath" target="_blank" type="primary">重新下载</el-link> <el-link :href="item.filePath" target="_blank" type="primary"
</div> >重新下载</el-link
>
</div> </div>
<div class="times mt10">
导出时间:{{item.createTime}}
</div> </div>
<div class="times mt10">导出时间:{{ item.createTime }}</div>
</div> </div>
</div> </div>
</el-drawer> </el-drawer>
...@@ -108,58 +124,59 @@ ...@@ -108,58 +124,59 @@
</template> </template>
<script> <script>
/** 表单弹出框模式需引入 */ /** 表单弹出框模式需引入 */
import dialogShow from "./dialogshow"; import dialogShow from "./dialogshow";
import table from "@/assets/mixins/table"; import table from "@/assets/mixins/table";
import {timestampToTime} from '@/assets/utils/dateFormat' import { timestampToTime } from "@/assets/utils/dateFormat";
export default { export default {
name: "AttendanceRecordHikList", name: "AttendanceRecordHikList",
components: { components: {
dialogShow dialogShow,
},
mixins: [table],
created() {
}, },
mixins: [table],
created() {},
methods: { methods: {
// 生成打卡记录 // 生成打卡记录
formatData(){ formatData() {
let params = {} let params = {};
for(let value of this.config.search){ for (let value of this.config.search) {
if(this.query[value.name]){ if (this.query[value.name]) {
params[value.name] = this.query[value.name] params[value.name] = this.query[value.name];
} }
} }
if(this.selection.length>0){ if (this.selection.length > 0) {
params['idList'] = this.selection params["idList"] = this.selection;
} }
this.$post('/attendance/record/hik/addAttendanceRecord',{...params}).then(res => { this.$post("/attendance/record/hik/addAttendanceRecord", {
if(res.code == 1){ ...params,
this.$message.success("生成打卡记录成功!") }).then((res) => {
if (res.code == 1) {
this.$message.success("生成打卡记录成功!");
} }
}) });
}, },
// 更改状态 // 更改状态
changeStatus(item){ changeStatus(item) {
this.$set( this.$set(item, "islook", !item.islook);
item,
'islook',
!item.islook
)
}, },
// 导出记录 // 导出记录
lookexportHis(){ lookexportHis() {
this.$post('/attendance/export/record/list',{type:1,page:1,size:-1}).then(res => { this.$post("/attendance/export/record/list", {
if(res.code == 1){ type: 1,
let arr = res.data.data page: 1,
this.exportList = arr.map(item => { size: -1,
item.createTime = timestampToTime(item.createTime,6) }).then((res) => {
item.islook = false if (res.code == 1) {
return item let arr = res.data.data;
}) this.exportList = arr.map((item) => {
item.createTime = timestampToTime(item.createTime, 6);
item.islook = false;
return item;
});
} }
}) });
// 导出记录 // 导出记录
this.drawerhistory = true this.drawerhistory = true;
}, },
/** 导入 */ /** 导入 */
handleImport() { handleImport() {
...@@ -169,12 +186,16 @@ ...@@ -169,12 +186,16 @@
/** 下载模板操作 */ /** 下载模板操作 */
downloadTemplate() { downloadTemplate() {
this.isExport = true; this.isExport = true;
this.$download("/attendance/record/hik/downloadTemplate", {}, { type: "excel" }) this.$download(
"/attendance/record/hik/downloadTemplate",
{},
{ type: "excel" }
)
.then(() => (this.isExport = false)) .then(() => (this.isExport = false))
.catch((error) => { .catch((error) => {
this.isExport = false; this.isExport = false;
this.$message.error(error.message); this.$message.error(error.message);
}) });
}, },
/** 文件上传中处理 */ /** 文件上传中处理 */
handleFileUploadProgress(event, file, fileList) { handleFileUploadProgress(event, file, fileList) {
...@@ -195,23 +216,29 @@ ...@@ -195,23 +216,29 @@
/** 导出Excel */ /** 导出Excel */
doExport() { doExport() {
this.isExport = true; this.isExport = true;
let params = {} let params = {};
for(let value of this.config.search){ for (let value of this.config.search) {
if(this.query[value.name]){ if (this.query[value.name]) {
params[value.name] = this.query[value.name] params[value.name] = this.query[value.name];
} }
} }
if(this.selection.length>0){ if (this.selection.length > 0) {
params['idList'] = this.selection params["idList"] = this.selection;
} }
this.$download("/attendance/record/hik/exportExcel", { this.$download(
"/attendance/record/hik/exportExcel",
{
...params, ...params,
}, { type: "excel" }).then(() => this.isExport = false).catch(error => { },
{ type: "excel" }
)
.then(() => (this.isExport = false))
.catch((error) => {
this.isExport = false; this.isExport = false;
this.$message.error(error.message); this.$message.error(error.message);
}) });
}, },
/** 重写新增方法 */ /** 重写新增方法 */
toAdd(row) { toAdd(row) {
...@@ -226,14 +253,14 @@ ...@@ -226,14 +253,14 @@
this.$refs.dialogform.view(row); this.$refs.dialogform.view(row);
}, },
afterRender(data) { afterRender(data) {
console.log(this.tableData.data) console.log(this.tableData.data);
}, },
}, },
data() { data() {
return { return {
upload: { upload: {
headers:{ headers: {
Authorization:window.sessionStorage.getItem('token') || '' Authorization: window.sessionStorage.getItem("token") || "",
}, },
// 是否显示弹出层(员工关怀信息导入) // 是否显示弹出层(员工关怀信息导入)
open: false, open: false,
...@@ -244,22 +271,24 @@ ...@@ -244,22 +271,24 @@
// 是否更新已经存在的数据 // 是否更新已经存在的数据
updateSupport: 0, updateSupport: 0,
// 上传的地址 // 上传的地址
url: process.env.VUE_APP_API_BASE_URL +"/attendance/attendance/record/hik/importData", url:
process.env.VUE_APP_API_BASE_URL +
"/attendance/attendance/record/hik/importData",
}, },
config: { config: {
isshowTabPane:true, isshowTabPane: true,
search: [ search: [
{ {
name: "staffName", name: "staffName",
type: "text", type: "text",
label: "员工姓名", label: "员工姓名",
fuzzy: false fuzzy: false,
}, },
{ {
name:'workNum', name: "workNum",
type:'text', type: "text",
label:'工号', label: "工号",
fuzzy: false fuzzy: false,
}, },
// { // {
// name: "deptId", // name: "deptId",
...@@ -280,30 +309,34 @@ ...@@ -280,30 +309,34 @@
// fuzzy: false // fuzzy: false
// }, // },
{ {
name:'attendanceDateStart', name: "attendanceDateStart",
type: "date", type: "date",
label: "考勤开始时间", label: "考勤开始时间",
fuzzy: false fuzzy: false,
}, },
{ {
name:'attendanceDateEnd', name: "attendanceDateEnd",
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: "员工姓名", prop: "staffName"}, { label: "员工姓名", prop: "staffName" },
{label: "工号", prop: "workNum"}, { label: "工号", prop: "workNum" },
{label: "部门", prop: "deptName"}, { label: "部门", prop: "deptName" },
// {label: "考勤组", prop: "attendanceGroupName"}, // {label: "考勤组", prop: "attendanceGroupName"},
// {label: "职位", prop: "positionName"}, // {label: "职位", prop: "positionName"},
// {label: "班次", prop: "shiftsName"}, // {label: "班次", prop: "shiftsName"},
{label: "考勤时间", prop: "attendanceDate",formatter: this.formatterDate}, {
{label: "考勤点名称", prop: "attendanceAddress"}, label: "考勤时间",
{label: "事件源", prop: "eventSource"}, prop: "attendanceDate",
formatter: this.formatterDate,
},
{ label: "考勤点名称", prop: "attendanceAddress" },
{ label: "事件源", prop: "eventSource" },
// { // {
// label: "操作", // label: "操作",
// width: 240, // width: 240,
...@@ -314,32 +347,31 @@ ...@@ -314,32 +347,31 @@
// ) // )
// } // }
// } // }
] ],
}, },
drawerhistory:false, drawerhistory: false,
exportList:[], exportList: [],
baseUrl:process.env.VUE_APP_API_BASE_URL+'/' baseUrl: process.env.VUE_APP_API_BASE_URL + "/",
}
}
}; };
},
};
</script> </script>
<style scoped lang="scss"> <style scoped lang="scss">
.hisList{ .hisList {
padding: 15px; padding: 15px;
.list{ .list {
background-color: rgba(64, 158, 255, 0.1); background-color: rgba(64, 158, 255, 0.1);
font-size: 14px; font-size: 14px;
border-radius: 10px; border-radius: 10px;
padding: 10px; padding: 10px;
.times{ .times {
font-size: 12px; font-size: 12px;
color: #999; color: #999;
} }
cursor: pointer; cursor: pointer;
} }
} }
.details{ .details {
cursor: pointer; cursor: pointer;
} }
</style> </style>
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