源码提交
parent
788dc1c25f
commit
0918911368
@ -0,0 +1,11 @@
|
||||
[0428/095632.212:ERROR:registration_protocol_win.cc(107)] CreateFile: 系统找不到指定的文件。 (0x2)
|
||||
[0428/095632.217:ERROR:registration_protocol_win.cc(107)] CreateFile: 系统找不到指定的文件。 (0x2)
|
||||
[0428/095632.397:ERROR:registration_protocol_win.cc(107)] CreateFile: 系统找不到指定的文件。 (0x2)
|
||||
[0428/095632.684:ERROR:registration_protocol_win.cc(107)] CreateFile: 系统找不到指定的文件。 (0x2)
|
||||
[0428/095911.511:ERROR:registration_protocol_win.cc(107)] CreateFile: 系统找不到指定的文件。 (0x2)
|
||||
[0428/095911.517:ERROR:registration_protocol_win.cc(107)] CreateFile: 系统找不到指定的文件。 (0x2)
|
||||
[0428/095911.557:ERROR:registration_protocol_win.cc(107)] CreateFile: 系统找不到指定的文件。 (0x2)
|
||||
[0428/095911.676:ERROR:registration_protocol_win.cc(107)] CreateFile: 系统找不到指定的文件。 (0x2)
|
||||
[0506/163040.088:ERROR:registration_protocol_win.cc(107)] CreateFile: 系统找不到指定的文件。 (0x2)
|
||||
[0506/163043.808:ERROR:registration_protocol_win.cc(107)] CreateFile: 系统找不到指定的文件。 (0x2)
|
||||
[0506/163057.058:ERROR:registration_protocol_win.cc(107)] CreateFile: 系统找不到指定的文件。 (0x2)
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,132 @@
|
||||
<template>
|
||||
<div>
|
||||
<div style="display: flex;margin-bottom: 10px">
|
||||
<div></div>
|
||||
<div class="flex" style="margin-left: auto;align-items: center;" >
|
||||
<el-select v-model="pageInfo.type" placeholder="服务类型" @change="init" clearable style="width: 150px;margin-right: 10px" >
|
||||
<el-option
|
||||
v-for="item in [{label:'月结',value:1},{label:'日结',value:0}]"
|
||||
:key="item.value"
|
||||
:label="item.label"
|
||||
:value="item.value">
|
||||
</el-option>
|
||||
</el-select>
|
||||
<el-date-picker
|
||||
style="margin-right: 10px;width: 250px;"
|
||||
v-model="date"
|
||||
type="daterange"
|
||||
format="yyyy-MM-dd" value-format="yyyy-MM-dd"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
@change="init"
|
||||
end-placeholder="结束日期">
|
||||
</el-date-picker>
|
||||
<el-input size="medium" class="form-width-ms" v-model="pageInfo.staffName" placeholder="输入要查询的员工姓名" @change="init" clearable style="margin-right:10px"></el-input >
|
||||
<el-button size="mini" type="primary" @click='init'>查询</el-button>
|
||||
<el-button size="mini" type="warning" @click='exportError' :loading="exportLoading">导出</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<div class="displsy-mod">
|
||||
<el-table :data="list" v-loading="loading" stripe style="width: 100%" :header-cell-style="{background: 'linear-gradient(#6cb3ff, #1873d4)',color:'#eeeeee'}">
|
||||
<el-table-column align="center" prop="attendanceTime" label="考勤时间" >
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.attendanceTime.substring(0,10) }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="staffNum" label="员工编码" ></el-table-column>
|
||||
<el-table-column align="center" prop="staffName" label="员工名称" ></el-table-column>
|
||||
<el-table-column align="center" prop="staffName" label="服务类型" >
|
||||
<template slot-scope="scope">
|
||||
{{ scope.row.type?'月结':'日结' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="checkTime" label="首打卡时间" ></el-table-column>
|
||||
<el-table-column align="center" prop="checkEndTime" label="尾打卡时间" ></el-table-column>
|
||||
<el-table-column align="center" prop="recordType" label="考勤状态" ></el-table-column>
|
||||
</el-table>
|
||||
<div class="block" style="margin-top:15px;">
|
||||
<el-pagination align="left" @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="pageInfo.pageNum" :page-sizes="[10,20,30,40,50]" :page-size="pageInfo.pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total"></el-pagination>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { abnormalPage,exportErrorDetail } from "../../../api/storeManage.js";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
list:[],
|
||||
total: 0, //分页总条数
|
||||
pageInfo: {
|
||||
page: 1,
|
||||
size: 10
|
||||
},
|
||||
queryFome:{},
|
||||
date:[],
|
||||
loading:false,
|
||||
exportLoading:false
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.init()
|
||||
},
|
||||
methods: {
|
||||
exportError(){
|
||||
let params = {...this.pageInfo}
|
||||
try{
|
||||
if(this.date.length){
|
||||
params.enterStartTime = this.formatTime(this.date[0],"YYYY-MM-DD 00:00:00");
|
||||
params.enterEndTime = this.formatTime(this.date[1],"YYYY-MM-DD 23:59:59" );
|
||||
}
|
||||
}catch(err){
|
||||
params.enterStartTime = null
|
||||
params.enterEndTime = null
|
||||
}
|
||||
params.page = 1
|
||||
params.size = 9999
|
||||
this.exportLoading = true
|
||||
exportErrorDetail(params).then(res=>{
|
||||
this.exportLoading = false
|
||||
let blob = new Blob([res]);
|
||||
var a = document.createElement("a");
|
||||
var url = window.URL.createObjectURL(blob);
|
||||
a.href = url;
|
||||
a.download = "临时工异常打卡导出表.xlsx";
|
||||
a.click();
|
||||
window.URL.revokeObjectURL(url);
|
||||
})
|
||||
},
|
||||
handleSizeChange(val) {
|
||||
this.pageInfo.size = val
|
||||
this.init();
|
||||
},
|
||||
handleCurrentChange(val) {
|
||||
this.pageInfo.page = val
|
||||
this.init();
|
||||
},
|
||||
init(){
|
||||
let params = {...this.pageInfo}
|
||||
try{
|
||||
if(this.date.length){
|
||||
params.enterStartTime = this.formatTime(this.date[0],"YYYY-MM-DD 00:00:00");
|
||||
params.enterEndTime = this.formatTime(this.date[1],"YYYY-MM-DD 23:59:59" );
|
||||
}
|
||||
}catch(err){
|
||||
params.enterStartTime = null
|
||||
params.enterEndTime = null
|
||||
}
|
||||
if(!params.staffName)params.staffName = null //过滤空字符
|
||||
this.loading = true
|
||||
abnormalPage(params).then(res=>{
|
||||
this.loading = false
|
||||
this.list = res.pageInfo.list
|
||||
this.total = res.pageInfo.total
|
||||
})
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@ -0,0 +1,81 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-dialog title="获取最新" :visible.sync="dataDialog" width="600px">
|
||||
<el-form :model="form" :rules="rules" ref="form">
|
||||
<el-form-item label="选择日期:" label-width="120px">
|
||||
<div class="searchDiv">
|
||||
<el-date-picker
|
||||
v-model="form.date"
|
||||
:picker-options="pickerOptions"
|
||||
type="date"
|
||||
placeholder="选择日期">
|
||||
</el-date-picker>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button size="mini" type="primary" plain @click="dataDialog = false">取 消</el-button>
|
||||
<el-button type="primary" size="mini" :loading="loading" @click="confirm">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
dataDialog:false,
|
||||
form:{},
|
||||
rules:{
|
||||
date: [
|
||||
{ type: 'date', required: true, message: '请选择日期', trigger: 'change' }
|
||||
],
|
||||
},
|
||||
loading:false,
|
||||
pickerOptions: {
|
||||
disabledDate(time) {
|
||||
return time.getTime() > Date.now(); // 禁用今天之后的日期
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
getNextDate(dateStr) {
|
||||
let date = new Date(dateStr);
|
||||
date.setDate(date.getDate() + 1);
|
||||
let Y = date.getFullYear();
|
||||
let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1);
|
||||
let D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate());
|
||||
return Y + '-' + M + '-' + D;
|
||||
},
|
||||
confirm(){
|
||||
this.$refs['form'].validate(async (valid) => {
|
||||
if (valid) {
|
||||
this.loading = true
|
||||
let params = {
|
||||
starttime : this.formatTime(this.form.date,"YYYY-MM-DD 03:00:00"),
|
||||
endtime : this.getNextDate(this.form.date,"YYYY-MM-DD" ) + ' 03:00:00',
|
||||
}
|
||||
this.$emit('handleSelectNew',params)
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
})
|
||||
},
|
||||
formatDate(date) {
|
||||
let Y = date.getFullYear() + '-';
|
||||
let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
|
||||
let D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate());
|
||||
return Y + M + D;
|
||||
},
|
||||
show(){
|
||||
this.form = {}
|
||||
this.dataDialog = true
|
||||
},
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
|
||||
</style>
|
||||
@ -0,0 +1,103 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-dialog title="批量更新" :visible.sync="searchDialog" width="500px">
|
||||
<el-form :model="form" :rules="rules" ref="ruleForm">
|
||||
<el-form-item label="入场日期:" label-width="120px" prop="ruzhiTime">
|
||||
<div class="searchDiv">
|
||||
<el-date-picker
|
||||
value-format="yyyy-MM-dd"
|
||||
v-model="form.ruzhiTime"
|
||||
:picker-options="pickerOptions"
|
||||
type="date"
|
||||
style='width:200px'
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期">
|
||||
</el-date-picker>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="服务类型:" label-width="120px" prop="type">
|
||||
<div class="searchDiv">
|
||||
<el-radio-group v-model="form.type">
|
||||
<el-radio label="0">日结</el-radio>
|
||||
<el-radio label="1">月结</el-radio>
|
||||
</el-radio-group>
|
||||
<!-- <el-radio v-model="form.type" label="0">日结</el-radio>
|
||||
<el-radio v-model="form.type" label="1">月结</el-radio> -->
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<span slot="footer" class="dialog-footer">
|
||||
<el-button size="mini" type="primary" plain @click="searchDialog = false">取 消</el-button>
|
||||
<el-button type="primary" size="mini" @click="confirm" :loading="configLoing">确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { updateByIds } from "../../../api/storeManage.js"
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
pickerOptions: {
|
||||
disabledDate(time) {
|
||||
return time.getTime() < Date.now() - 24 * 60 * 60 * 1000;
|
||||
}
|
||||
},
|
||||
configLoing:false,
|
||||
rules:{
|
||||
type:[
|
||||
{ required: true, message: '请选择劳务类型', trigger: 'change' }
|
||||
],
|
||||
ruzhiTime:[
|
||||
{ required: true, message: '请选择人员入职时间', trigger: 'change' }
|
||||
],
|
||||
},
|
||||
form:{},
|
||||
searchDialog:false,
|
||||
list:[]
|
||||
}
|
||||
},
|
||||
methods:{
|
||||
show(list){
|
||||
this.searchDialog = true
|
||||
this.list = list
|
||||
this.$nextTick(()=>{
|
||||
this.form = {}
|
||||
this.$refs['ruleForm'].resetFields();
|
||||
})
|
||||
},
|
||||
confirm(){
|
||||
this.$refs['ruleForm'].validate((valid) => {
|
||||
if (valid) {
|
||||
let params = {
|
||||
...this.form,
|
||||
ids:this.list.map(item=>item.id)
|
||||
}
|
||||
params.ruzhiTime = params.ruzhiTime + ' 08:00:00'
|
||||
updateByIds(params).then(res=>{
|
||||
if(res.code == '000000'){
|
||||
this.searchDialog = false
|
||||
this.$emit('init')
|
||||
}else{
|
||||
this.$alert(res.message, "提示", {
|
||||
confirmButtonText: "确定",
|
||||
confirmButtonClass: "confirmbtnFalses",
|
||||
type: "warning",
|
||||
center: true,
|
||||
callback: (action) => {
|
||||
},
|
||||
});
|
||||
}
|
||||
})
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
/deep/.el-cascader .el-input .el-input__inner{
|
||||
width:192px !important;
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,278 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-dialog v-dialogDrag :title="title" :visible.sync="dialogVisible" width="60%" center
|
||||
@close="close" :close-on-click-modal="false" :append-to-body="true">
|
||||
<div class="head">
|
||||
<div class="content flex">
|
||||
<div class="role-size-color">操作人: <span class="role-size">{{ form.staffName }}</span></div>
|
||||
<div class="role-size-color">操作时间: <span class="role-size">{{ form.mobilePhone }}</span></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="body">
|
||||
<div class="box">
|
||||
<div class="table-header">
|
||||
<span class="table-header-title"></span>
|
||||
<div class='table-header-topSize'>修改前</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<el-table :data="list" :header-cell-style="{ background: 'linear-gradient(#6cb3ff, #1873d4)',color: '#eeeeee'}">
|
||||
<el-table-column align="center" prop="staffName" label="姓名"></el-table-column>
|
||||
<el-table-column align="center" prop="staffNum" label="人员编号"></el-table-column>
|
||||
<el-table-column align="center" prop="sex" label="性别">
|
||||
<template slot-scope='scope'>
|
||||
{{ scope.row.sex?'女':'男' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="mobilePhone" label="手机号" width="110px"></el-table-column>
|
||||
<el-table-column align="center" prop="identityCard" label="证件号" width="160px"></el-table-column>
|
||||
<el-table-column align="center" prop="type" label="服务类型">
|
||||
<template slot-scope='scope'>
|
||||
{{ scope.row.type ==0?'日结':'月结' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="state" label="状态">
|
||||
<template slot-scope='scope'>
|
||||
{{ scope.row.state ==0?'正常':'异常' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="remark" label="外包服务商" width="150px"></el-table-column>
|
||||
<el-table-column align="center" label="图像" fixed="right">
|
||||
<template slot-scope='scope'>
|
||||
<el-image
|
||||
style="width: 20px; height: 20px"
|
||||
:src="scope.row.facesInformation"
|
||||
:preview-src-list="[scope.row.facesInformation]">
|
||||
</el-image>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<div class="table-header">
|
||||
<span class="table-header-title"></span>
|
||||
<div class='table-header-topSize'>修改后</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<el-table :data="[list.staffTemporary]" :header-cell-style="{ background: 'linear-gradient(#6cb3ff, #1873d4)',color: '#eeeeee'}">
|
||||
<el-table-column align="center" prop="staffName" label="姓名"></el-table-column>
|
||||
<el-table-column align="center" prop="staffNum" label="人员编号"></el-table-column>
|
||||
<el-table-column align="center" prop="sex" label="性别">
|
||||
<template slot-scope='scope'>
|
||||
{{ scope.row.sex?'女':'男' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="mobilePhone" label="手机号" width="110px"></el-table-column>
|
||||
<el-table-column align="center" prop="identityCard" label="证件号" width="160px"></el-table-column>
|
||||
<el-table-column align="center" prop="type" label="服务类型">
|
||||
<template slot-scope='scope'>
|
||||
{{ scope.row.type ==0?'日结':'月结' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="state" label="状态">
|
||||
<template slot-scope='scope'>
|
||||
{{ scope.row.state ==0?'正常':'异常' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="remark" label="外包服务商" width="150px"></el-table-column>
|
||||
<el-table-column align="center" label="图像" fixed="right">
|
||||
<template slot-scope='scope'>
|
||||
<el-image
|
||||
style="width: 20px; height: 20px"
|
||||
:src="scope.row.facesInformation"
|
||||
:preview-src-list="[scope.row.facesInformation]">
|
||||
</el-image>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 100%;text-align:center;margin-top: 20px;">
|
||||
<el-button size="small" @click="dialogVisible = false">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
title:"修改记录",
|
||||
saveLoad:false,
|
||||
dialogVisible:false,
|
||||
list:[]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
show(row){
|
||||
this.dialogVisible = true
|
||||
this.list = [...row]
|
||||
console.log(this.list)
|
||||
},
|
||||
close(){
|
||||
this.dialogVisible = false
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
.role-size-color{
|
||||
font-weight: 600;
|
||||
color: #092553
|
||||
}
|
||||
.role-size{
|
||||
font-weight: 600;
|
||||
color: #000;
|
||||
}
|
||||
.head{
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.box{
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.body{
|
||||
max-height: 500px;
|
||||
overflow: auto;
|
||||
}
|
||||
.checkout{
|
||||
width: 110px;
|
||||
margin-bottom: 8px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.myRedCheckBox{
|
||||
zoom: 1.1;
|
||||
}
|
||||
/deep/.myRedCheckBox .checkbox__input.is-indeterminate .el-checkbox__inner{
|
||||
background: #28bd9c !important;
|
||||
border-color: #28bd9c !important;
|
||||
z-index: 99999;
|
||||
}
|
||||
/deep/.myRedCheckBox .el-checkbox__input.is-checked .el-checkbox__inner, .el-checkbox__input.is-indeterminate .el-checkbox__inner{
|
||||
background: #28bd9c !important;
|
||||
border-color: #28bd9c !important;
|
||||
}
|
||||
/deep/.myRedCheckBox .el-checkbox__input.is-checked .el-checkbox__inner, .myRedCheckBox .el-checkbox__input.is-indeterminate .el-checkbox__inner {
|
||||
background: #28bd9c;
|
||||
border-color: #28bd9c;
|
||||
}
|
||||
/deep/.myRedCheckBox .el-checkbox__label{
|
||||
font-size: 14px !important;
|
||||
color: #092553 !important;
|
||||
}
|
||||
/deep/.myRedCheckBox .el-checkbox__input.is-checked + .el-checkbox__label {
|
||||
color: #092553 !important;
|
||||
font-size: 14px;
|
||||
}
|
||||
.content{
|
||||
background: rgb(242,244,248);
|
||||
border-radius: 4px;
|
||||
padding: 16px 28px;
|
||||
-ms-flex-wrap: wrap;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.table-header-topSize{
|
||||
font-size: 16px;
|
||||
}
|
||||
.table-header {
|
||||
width: 100%;
|
||||
height: 50px;
|
||||
line-height: 50px;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-family: SourceHanSansCN-Medium;
|
||||
color: #092553;
|
||||
font-weight: 600;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.table-header-title {
|
||||
border-radius: 2.5px;
|
||||
width: 5px;
|
||||
height: 16px;
|
||||
margin-right: 15px;
|
||||
background-color: #28bd9c;
|
||||
}
|
||||
|
||||
.amount {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding-bottom: 10px;
|
||||
border-bottom: 1px solid #ccc;
|
||||
margin-top: 10px;
|
||||
}
|
||||
.flex {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.left-amout {
|
||||
font-size: 14px;
|
||||
color: #8994af;
|
||||
width: 70px;
|
||||
}
|
||||
.right-amout {
|
||||
font-family: SourceHanSansCN-Medium;
|
||||
color: #092553;
|
||||
font-weight: 600;
|
||||
font-size: 16px;
|
||||
}
|
||||
.right {
|
||||
margin-left: auto;
|
||||
font-size: 16px;
|
||||
color: #092553;
|
||||
font-weight: 600;
|
||||
}
|
||||
.pay {
|
||||
color: #22ab8c;
|
||||
background-color: #eefaf7;
|
||||
}
|
||||
.Late {
|
||||
background-color: #ffeded;
|
||||
color: #f91515;
|
||||
}
|
||||
.status {
|
||||
font-size: 14px;
|
||||
padding: 0 5px;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
border-radius: 4px
|
||||
}
|
||||
|
||||
.center {
|
||||
margin-top: 20px;
|
||||
padding: 10px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
/deep/ .el-dialog__title {
|
||||
font-size: 18px;
|
||||
color: #092553;
|
||||
position: relative;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.top {
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
box-sizing: border-box;
|
||||
background-color: #f2f4f8;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-family: SourceHanSansCN-Medium;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-family: SourceHanSansCN-Medium;
|
||||
color: #092553;
|
||||
font-weight: 600;
|
||||
font-size: 16px;
|
||||
}
|
||||
</style>
|
||||
@ -0,0 +1,142 @@
|
||||
<template>
|
||||
<div>
|
||||
<div class="header_flex">
|
||||
<div></div>
|
||||
<div>
|
||||
<el-date-picker
|
||||
style="width:220px"
|
||||
v-model="date"
|
||||
type="daterange"
|
||||
range-separator="至"
|
||||
start-placeholder="开始日期"
|
||||
end-placeholder="结束日期">
|
||||
</el-date-picker>
|
||||
<el-input v-model="pageInfo.staffNum" placeholder="请输入员工编码"></el-input>
|
||||
<el-input v-model="pageInfo.staffName" placeholder="请输入员工姓名"></el-input>
|
||||
<!-- <el-input v-model="pageInfo.mobilePhone" placeholder="请输入员工手机号"></el-input>
|
||||
<el-input v-model="pageInfo.identityCard" placeholder="请输入员工身份证"></el-input> -->
|
||||
<el-button type="primary" size="mini" @click="init">查询</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<el-table style="margin-top:20px" :data="list" v-loading="loading" :header-cell-style="{ background: 'linear-gradient(#6cb3ff, #1873d4)',color: '#eeeeee'}">
|
||||
<el-table-column align="center" prop="staffNum" label="员工编码"></el-table-column>
|
||||
<el-table-column align="center" prop="staffName" label="员工名字"></el-table-column>
|
||||
<!-- <el-table-column align="center" prop="mobilePhone" label="员工手机"></el-table-column>
|
||||
<el-table-column align="center" prop="identityCard" label="身份证"></el-table-column> -->
|
||||
<!-- <el-table-column align="center" prop="sex" label="性别">
|
||||
<template slot-scope='scope'>
|
||||
{{ scope.row.sex?'女':'男' }}
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
<!-- <el-table-column align="center" prop="urgentName" label="紧急联系人"></el-table-column>
|
||||
<el-table-column align="center" prop="urgentPhone" label="紧急联系人联系方式"></el-table-column>
|
||||
<el-table-column align="center" prop="urgentRelationship" label="紧急联系人联系关系"></el-table-column>
|
||||
<el-table-column align="center" label="图像" fixed="right">
|
||||
<template slot-scope='scope'>
|
||||
<el-image
|
||||
style="width: 20px; height: 20px"
|
||||
:src="scope.row.facesInformation"
|
||||
:preview-src-list="[scope.row.facesInformation]">
|
||||
</el-image>
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
<el-table-column align="center" prop="updateDate" label="修改时间" fixed="right"></el-table-column>
|
||||
<el-table-column align="center" label="修改记录" fixed="right">
|
||||
<template slot-scope='scope'>
|
||||
<el-button type="text" @click="handleShow(scope.row)">查看</el-button>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<!-- <el-table-column align="center" prop="updateDate" label="修改时间" fixed="right"></el-table-column>
|
||||
<el-table-column align="center" prop="updateName" label="修改人" fixed="right">
|
||||
<template slot-scope='scope'>
|
||||
{{ scope.row.updateName?scope.row.updateName:'本人' }}
|
||||
</template>
|
||||
</el-table-column> -->
|
||||
</el-table>
|
||||
<div class="block" style="margin-top: 10px">
|
||||
<el-pagination
|
||||
align="left"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
:current-page="pageInfo.pageNum"
|
||||
:page-sizes="[10, 20, 30, 40, 50]"
|
||||
:page-size="pageInfo.pageSize"
|
||||
layout="total, sizes, prev, pager, next, jumper"
|
||||
:total="total">
|
||||
</el-pagination>
|
||||
</div>
|
||||
<updateList ref="updateList"></updateList>
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import { staffTemporaryUpdate } from "../../../api/storeManage.js"
|
||||
import updateList from './updateList.vue';
|
||||
export default {
|
||||
components:{
|
||||
updateList
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
list:[],
|
||||
pageInfo:{
|
||||
pageNum:1,
|
||||
pageSize:10
|
||||
},
|
||||
total:0,
|
||||
loading:false,
|
||||
date:[]
|
||||
};
|
||||
},
|
||||
methods:{
|
||||
handleShow(row){
|
||||
this.$refs.updateList.show(row)
|
||||
},
|
||||
handleCurrentChange(current){
|
||||
this.pageInfo.pageNum = current
|
||||
this.init()
|
||||
},
|
||||
handleSizeChange(size){
|
||||
this.pageInfo.pageSize = size
|
||||
this.init()
|
||||
},
|
||||
init(){
|
||||
this.loading = true
|
||||
let params = { ...this.pageInfo }
|
||||
try{
|
||||
if(this.date.length){
|
||||
params.startTime = this.formatTime(this.date[0],"YYYY-MM-DD 00:00:00");
|
||||
params.endTime = this.formatTime(this.date[1],"YYYY-MM-DD 23:59:59" );
|
||||
}
|
||||
}catch(err){''
|
||||
params.startTime = null
|
||||
params.endTime = null
|
||||
}
|
||||
params.staffNum = params.staffNum||null
|
||||
params.staffName = params.staffName||null
|
||||
params.mobilePhone = params.mobilePhone||null
|
||||
params.identityCard = params.identityCard||null
|
||||
staffTemporaryUpdate(params).then(res=>{
|
||||
console.log(res)
|
||||
this.loading = false
|
||||
if(res.code == '000000'){
|
||||
this.list = res.pageInfo.list
|
||||
this.total = res.pageInfo.total
|
||||
}
|
||||
})
|
||||
}
|
||||
},
|
||||
created(){
|
||||
this.init()
|
||||
}
|
||||
};
|
||||
</script>
|
||||
<style scoped>
|
||||
.el-button {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.el-input {
|
||||
width: 200px;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -0,0 +1,334 @@
|
||||
<template>
|
||||
<div>
|
||||
<el-dialog v-dialogDrag :title="title" :visible.sync="dialogVisible" width="70%" center
|
||||
@close="close" :close-on-click-modal="false" :append-to-body="true">
|
||||
<div class="head">
|
||||
<div class="content flex">
|
||||
<div class="role-size-color">操作人: <span class="role-size">{{ listBefore[0].updateName?listBefore[0].updateName:listBefore[0].staffName }}</span></div>
|
||||
<div class="role-size-color">操作时间: <span class="role-size">{{ listBefore[0].updateDate }}</span></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="body">
|
||||
<div class="box">
|
||||
<div class="table-header">
|
||||
<span class="table-header-title"></span>
|
||||
<div class='table-header-topSize'>修改前</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<el-table :data="listBefore" :header-cell-style="{ background: 'linear-gradient(#6cb3ff, #1873d4)',color: '#eeeeee'}">
|
||||
<el-table-column align="center" prop="staffName" label="姓名"></el-table-column>
|
||||
<el-table-column align="center" prop="staffNum" label="人员编号"></el-table-column>
|
||||
<el-table-column align="center" prop="sex" label="性别">
|
||||
<template slot-scope='scope'>
|
||||
{{ scope.row.sex?'女':'男' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="mobilePhone" label="手机号" width="110px"></el-table-column>
|
||||
<el-table-column align="center" prop="identityCard" label="证件号" width="165px"></el-table-column>
|
||||
<el-table-column align="center" prop="type" label="服务类型">
|
||||
<template slot-scope='scope'>
|
||||
{{ scope.row.type ==0?'日结':'月结' }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="remark" label="外包服务商" width="150px"></el-table-column>
|
||||
<el-table-column align="center" prop="urgentName" label="紧急联系人" min-width="90"></el-table-column>
|
||||
<el-table-column align="center" prop="urgentPhone" label="紧急联系人电话" min-width="110"></el-table-column>
|
||||
<el-table-column align="center" prop="urgentRelationship" label="紧急联系人关系"></el-table-column>
|
||||
<el-table-column align="center" prop="ruzhiTime" label="入场时间" width="135px">
|
||||
<template slot-scope='scope'>
|
||||
{{ scope.row.ruzhiTime }}
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="图像" fixed="right">
|
||||
<template slot-scope='scope'>
|
||||
<el-image
|
||||
style="width: 20px; height: 20px"
|
||||
:src="scope.row.facesInformation"
|
||||
:preview-src-list="[scope.row.facesInformation]">
|
||||
</el-image>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
<div class="box">
|
||||
<div class="table-header">
|
||||
<span class="table-header-title"></span>
|
||||
<div class='table-header-topSize'>修改后</div>
|
||||
</div>
|
||||
<div class="content">
|
||||
<el-table :data="listAfter" :header-cell-style="{ background: 'linear-gradient(#6cb3ff, #1873d4)',color: '#eeeeee'}">
|
||||
<el-table-column align="center" prop="staffName" label="姓名">
|
||||
<template slot-scope='scope'>
|
||||
<span :class="{ 'isUpdate':scope.row.staffName !=listBefore[0].staffName }">{{ scope.row.staffName }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="staffNum" label="人员编号">
|
||||
<template slot-scope='scope'>
|
||||
<span :class="{ 'isUpdate':scope.row.staffNum !=listBefore[0].staffNum }">{{ scope.row.staffNum }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="sex" label="性别">
|
||||
<template slot-scope='scope'>
|
||||
<span :class="{ 'isUpdate':scope.row.sex !=listBefore[0].sex }">{{ scope.row.sex?'女':'男' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="mobilePhone" label="手机号" width="110px">
|
||||
<template slot-scope='scope'>
|
||||
<span :class="{ 'isUpdate':scope.row.mobilePhone !=listBefore[0].mobilePhone }">{{ scope.row.mobilePhone }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="identityCard" label="证件号" width="165px">
|
||||
<template slot-scope='scope'>
|
||||
<span :class="{ 'isUpdate':scope.row.identityCard !=listBefore[0].identityCard }">{{ scope.row.identityCard }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="type" label="服务类型">
|
||||
<template slot-scope='scope'>
|
||||
<span :class="{ 'isUpdate':scope.row.type !=listBefore[0].type }">{{ scope.row.type ==0?'日结':'月结' }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="remark" label="外包服务商" width="150px">
|
||||
<template slot-scope='scope'>
|
||||
<span :class="{ 'isUpdate':scope.row.remark !=listBefore[0].remark }">{{ scope.row.remark }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="urgentName" label="紧急联系人" min-width="90">
|
||||
<template slot-scope='scope'>
|
||||
<span :class="{ 'isUpdate':scope.row.urgentName !=listBefore[0].urgentName }">{{ scope.row.urgentName }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="urgentPhone" label="紧急联系人电话" min-width="110">
|
||||
<template slot-scope='scope'>
|
||||
<span :class="{ 'isUpdate':scope.row.urgentPhone !=listBefore[0].urgentPhone }">{{ scope.row.urgentPhone }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="urgentRelationship" label="紧急联系人关系">
|
||||
<template slot-scope='scope'>
|
||||
<span :class="{ 'isUpdate':scope.row.urgentRelationship !=listBefore[0].urgentRelationship }">{{ scope.row.urgentRelationship }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" prop="ruzhiTime" label="入场时间" width="135px">
|
||||
<template slot-scope='scope'>
|
||||
<span :class="{ 'isUpdate':scope.row.ruzhiTime != listBefore[0].ruzhiTime }">{{ scope.row.ruzhiTime }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column align="center" label="图像" fixed="right">
|
||||
<template slot-scope='scope'>
|
||||
<el-image
|
||||
style="width: 20px; height: 20px"
|
||||
:src="scope.row.facesInformation"
|
||||
:preview-src-list="[scope.row.facesInformation]">
|
||||
</el-image>
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div style="width: 100%;text-align:center;margin-top: 20px;">
|
||||
<el-button size="small" @click="dialogVisible = false">取 消</el-button>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
title:"更新记录",
|
||||
saveLoad:false,
|
||||
dialogVisible:false,
|
||||
listBefore:[{}],
|
||||
listAfter:[{}]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
show(row){
|
||||
this.dialogVisible = true
|
||||
this.listBefore = [{...row}]
|
||||
this.listAfter = [{...row.staffTemporary}]
|
||||
this.listBefore[0].ruzhiTime = this.timestampToTime(this.listBefore[0].ruzhiTime)
|
||||
this.listAfter[0].ruzhiTime = this.timestampToTime(this.listAfter[0].ruzhiTime )
|
||||
},
|
||||
timestampToTime(timestamp) {
|
||||
timestamp = timestamp ? timestamp : null;
|
||||
let date = new Date(timestamp);
|
||||
let Y = date.getFullYear() + '-';
|
||||
let M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-';
|
||||
let D = (date.getDate() < 10 ? '0' + date.getDate() : date.getDate()) + ' ';
|
||||
let h = (date.getHours() < 10 ? '0' + date.getHours() : date.getHours()) + ':';
|
||||
let m = (date.getMinutes() < 10 ? '0' + date.getMinutes() : date.getMinutes()) + ':';
|
||||
let s = date.getSeconds() < 10 ? '0' + date.getSeconds() : date.getSeconds();
|
||||
return Y + M + D;
|
||||
},
|
||||
close(){
|
||||
this.dialogVisible = false
|
||||
}
|
||||
},
|
||||
}
|
||||
</script>
|
||||
<style scoped>
|
||||
.isUpdate{
|
||||
display: inline-block;
|
||||
font-weight: 600;
|
||||
color: red;
|
||||
}
|
||||
.role-size-color{
|
||||
font-weight: 600;
|
||||
color: #092553
|
||||
}
|
||||
.role-size{
|
||||
font-weight: 600;
|
||||
color: #000;
|
||||
}
|
||||
.head{
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.box{
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.body{
|
||||
max-height: 500px;
|
||||
overflow: auto;
|
||||
}
|
||||
.checkout{
|
||||
width: 110px;
|
||||
margin-bottom: 8px;
|
||||
white-space: nowrap;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
}
|
||||
.myRedCheckBox{
|
||||
zoom: 1.1;
|
||||
}
|
||||
/deep/.myRedCheckBox .checkbox__input.is-indeterminate .el-checkbox__inner{
|
||||
background: #28bd9c !important;
|
||||
border-color: #28bd9c !important;
|
||||
z-index: 99999;
|
||||
}
|
||||
/deep/.myRedCheckBox .el-checkbox__input.is-checked .el-checkbox__inner, .el-checkbox__input.is-indeterminate .el-checkbox__inner{
|
||||
background: #28bd9c !important;
|
||||
border-color: #28bd9c !important;
|
||||
}
|
||||
/deep/.myRedCheckBox .el-checkbox__input.is-checked .el-checkbox__inner, .myRedCheckBox .el-checkbox__input.is-indeterminate .el-checkbox__inner {
|
||||
background: #28bd9c;
|
||||
border-color: #28bd9c;
|
||||
}
|
||||
/deep/.myRedCheckBox .el-checkbox__label{
|
||||
font-size: 14px !important;
|
||||
color: #092553 !important;
|
||||
}
|
||||
/deep/.myRedCheckBox .el-checkbox__input.is-checked + .el-checkbox__label {
|
||||
color: #092553 !important;
|
||||
font-size: 14px;
|
||||
}
|
||||
.content{
|
||||
background: rgb(242,244,248);
|
||||
border-radius: 4px;
|
||||
padding: 16px 28px;
|
||||
-ms-flex-wrap: wrap;
|
||||
flex-wrap: wrap;
|
||||
}
|
||||
.table-header-topSize{
|
||||
font-size: 16px;
|
||||
}
|
||||
.table-header {
|
||||
width: 100%;
|
||||
height: 50px;
|
||||
line-height: 50px;
|
||||
box-sizing: border-box;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-family: SourceHanSansCN-Medium;
|
||||
color: #092553;
|
||||
font-weight: 600;
|
||||
font-size: 16px;
|
||||
}
|
||||
.table-header-title {
|
||||
border-radius: 2.5px;
|
||||
width: 5px;
|
||||
height: 16px;
|
||||
margin-right: 15px;
|
||||
background-color: #28bd9c;
|
||||
}
|
||||
|
||||
.amount {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
padding-bottom: 10px;
|
||||
border-bottom: 1px solid #ccc;
|
||||
margin-top: 10px;
|
||||
}
|
||||
.flex {
|
||||
align-items: center;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
}
|
||||
.left-amout {
|
||||
font-size: 14px;
|
||||
color: #8994af;
|
||||
width: 70px;
|
||||
}
|
||||
.right-amout {
|
||||
font-family: SourceHanSansCN-Medium;
|
||||
color: #092553;
|
||||
font-weight: 600;
|
||||
font-size: 16px;
|
||||
}
|
||||
.right {
|
||||
margin-left: auto;
|
||||
font-size: 16px;
|
||||
color: #092553;
|
||||
font-weight: 600;
|
||||
}
|
||||
.pay {
|
||||
color: #22ab8c;
|
||||
background-color: #eefaf7;
|
||||
}
|
||||
.Late {
|
||||
background-color: #ffeded;
|
||||
color: #f91515;
|
||||
}
|
||||
.status {
|
||||
font-size: 14px;
|
||||
padding: 0 5px;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
border-radius: 4px
|
||||
}
|
||||
|
||||
.center {
|
||||
margin-top: 20px;
|
||||
padding: 10px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
/deep/ .el-dialog__title {
|
||||
font-size: 18px;
|
||||
color: #092553;
|
||||
position: relative;
|
||||
font-weight: 700;
|
||||
}
|
||||
|
||||
.top {
|
||||
width: 100%;
|
||||
height: 40px;
|
||||
line-height: 40px;
|
||||
box-sizing: border-box;
|
||||
background-color: #f2f4f8;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-family: SourceHanSansCN-Medium;
|
||||
font-size: 18px;
|
||||
}
|
||||
|
||||
.title {
|
||||
font-family: SourceHanSansCN-Medium;
|
||||
color: #092553;
|
||||
font-weight: 600;
|
||||
font-size: 16px;
|
||||
}
|
||||
</style>
|
||||
Loading…
Reference in New Issue