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

tui

parent 28f210c9
export const timestampToTime = (timestamp,transLength) => {
export const timestampToTime = (timestamp, transLength) => {
// 时间戳为10位需*1000,时间戳为13位不需乘1000
let date = null
if(timestamp.length<13){
date= new Date(timestamp * 1000);
}else{
date= new Date(timestamp);
let date = null;
if (timestamp.length < 13) {
date = new Date(timestamp * 1000);
} else {
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());
switch(transLength){
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();
switch (transLength) {
case 3:
return Y + M + D;
case 6:
return Y + M + D + h + m + s;
}
}
// 小时:分钟 ==》 转分钟
};
// 小时:分钟 ==》 转分钟
export const transFormMinut = (String) => {
if(typeof(String) === 'number'){
return
if (typeof String === "number") {
return;
}
if(!String){
return 0
if (!String) {
return 0;
}
let arr = String.split(':')
let hour = arr[0].indexOf('0') === 0? arr[0].substring(1,arr[0].length):arr[0]
let minu = arr[1].indexOf('0') === 0? arr[1].substring(1,arr[1].length):arr[1]
return hour*60 + minu*1
}
let arr = String.split(":");
let hour =
arr[0].indexOf("0") === 0 ? arr[0].substring(1, arr[0].length) : arr[0];
let minu =
arr[1].indexOf("0") === 0 ? arr[1].substring(1, arr[1].length) : arr[1];
return hour * 60 + minu * 1;
// return JSON.stringify(hour * 60 + minu * 1);
};
// // 分钟 ==》 小时
export const transFormTime = (num) => {
if (typeof(num) != 'string' && num !== 0) {
return (Math.floor(num / 60)).toString() + ":" + (num % 60).toString()
}
else {
if (typeof num != "string" && num !== 0) {
return Math.floor(num / 60).toString() + ":" + (num % 60).toString();
} else {
return "0:00";
}
}
};
//当前月第一天
export const getFirstDay = () => {
let y = new Date().getFullYear(); //获取年份
let m = new Date().getMonth() + 1; //获取月份
let d = '01';
m = m < 10 ? '0' + m : m; //月份补 0
let d = "01";
m = m < 10 ? "0" + m : m; //月份补 0
return [y,m,d].join("-")
}
return [y, m, d].join("-");
};
//当前月最后一天
export const getLastDay = () =>{
export const getLastDay = () => {
let y = new Date().getFullYear(); //获取年份
let m = new Date().getMonth() + 1; //获取月份
let d = new Date(y, m, 0).getDate(); //获取当月最后一日
m = m < 10 ? '0' + m : m; //月份补 0
d = d < 10 ? '0' + d : d; //日数补 0
m = m < 10 ? "0" + m : m; //月份补 0
d = d < 10 ? "0" + d : d; //日数补 0
return [y,m,d].join("-")
}
return [y, m, d].join("-");
};
//获取两日期之间日期列表函数
export const getdiffdate = (stime,etime) =>{
export const getdiffdate = (stime, etime) => {
//初始化日期列表,数组
let diffdate = new Array();
let i=0;
let i = 0;
//开始日期小于等于结束日期,并循环
while(stime<=etime){
while (stime <= etime) {
diffdate[i] = stime;
//获取开始日期时间戳
let stime_ts = new Date(stime).getTime();
//增加一天时间戳后的日期
let next_date = stime_ts + (24*60*60*1000);
let next_date = stime_ts + 24 * 60 * 60 * 1000;
//拼接年月日,这里的月份会返回(0-11),所以要+1
let next_dates_y = new Date(next_date).getFullYear()+'-';
let next_dates_m = (new Date(next_date).getMonth()+1 < 10)?'0'+(new Date(next_date).getMonth()+1)+'-':(new Date(next_date).getMonth()+1)+'-';
let next_dates_d = (new Date(next_date).getDate() < 10)?'0'+new Date(next_date).getDate():new Date(next_date).getDate();
let next_dates_y = new Date(next_date).getFullYear() + "-";
let next_dates_m =
new Date(next_date).getMonth() + 1 < 10
? "0" + (new Date(next_date).getMonth() + 1) + "-"
: new Date(next_date).getMonth() + 1 + "-";
let next_dates_d =
new Date(next_date).getDate() < 10
? "0" + new Date(next_date).getDate()
: new Date(next_date).getDate();
stime = next_dates_y+next_dates_m+next_dates_d;
stime = next_dates_y + next_dates_m + next_dates_d;
//增加数组key
i++;
}
return diffdate;
}
};
// 获取某个日期是周几
export const getMyDay = (date) => {
let week;
if (date.getDay() == 0) week = "周日"
if (date.getDay() == 1) week = "周一"
if (date.getDay() == 2) week = "周二"
if (date.getDay() == 3) week = "周三"
if (date.getDay() == 4) week = "周四"
if (date.getDay() == 5) week = "周五"
if (date.getDay() == 6) week = "周六"
if (date.getDay() == 0) week = "周日";
if (date.getDay() == 1) week = "周一";
if (date.getDay() == 2) week = "周二";
if (date.getDay() == 3) week = "周三";
if (date.getDay() == 4) week = "周四";
if (date.getDay() == 5) week = "周五";
if (date.getDay() == 6) week = "周六";
return week;
}
};
// 求两个日期的 分钟差
export const getMinu = (s1, s2) => {
var reDate = /\d{4}-\d{1,2}-\d{1,2} /;
s1 = new Date((reDate.test(s1) ? s1 : '2023-01-01 ' + s1).replace(/-/g, '/'));
s2 = new Date((reDate.test(s2) ? s2 : '2023-01-01 ' + s2).replace(/-/g, '/'));
s1 = new Date((reDate.test(s1) ? s1 : "2023-01-01 " + s1).replace(/-/g, "/"));
s2 = new Date((reDate.test(s2) ? s2 : "2023-01-01 " + s2).replace(/-/g, "/"));
var ms = s2.getTime() - s1.getTime();
if (ms < 0) return 0;
return Math.floor(ms / 1000 / 60); //分钟
}
\ No newline at end of file
};
......@@ -3,18 +3,39 @@
<el-drawer :title="title" :visible.sync="open" size="55%">
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-row>
<Field label="班次名称" prop="className" v-model="form.className" placeholder="请输入班次名称" :maxLength="20"/>
<Field label="班次负责人" prop="classResponsiblePersonId" type="select" :enumData="dict.workManId"
v-model="form.classResponsiblePersonId" placeholder="请选择班次负责人"/>
<Field
label="班次名称"
prop="className"
v-model="form.className"
placeholder="请输入班次名称"
:maxLength="20"
/>
<Field
label="班次负责人"
prop="classResponsiblePersonId"
type="select"
:enumData="dict.workManId"
v-model="form.classResponsiblePersonId"
placeholder="请选择班次负责人"
/>
</el-row>
<el-form-item label="上下班考勤时间" prop="attendanceClassDetailList">
<el-button type="text" @click="handleAddAttendanceClassDetail">添加</el-button>
<div class="bancifor" v-for="(item,index) in attendanceClassDetailList" :key="index">
<el-button type="text" @click="handleAddAttendanceClassDetail"
>添加</el-button
>
<div
class="bancifor"
v-for="(item, index) in attendanceClassDetailList"
:key="index"
>
<div class="title flex flex-align-center flex-pack-justify">
<span>
{{index+1}}次上班
</span>
<el-button type="danger" size="mini" @click="handleDeleteAttendanceClassDetail(index)">删除</el-button>
<span>{{ index + 1 }}次上班 </span>
<el-button
type="danger"
size="mini"
@click="handleDeleteAttendanceClassDetail(index)"
>删除</el-button
>
</div>
<div>
<span>上班考勤时间</span>
......@@ -25,7 +46,8 @@
value-format="HH:mm"
format="HH:mm"
v-model="item.goWorkDate"
placeholder="上班考勤时间">
placeholder="上班考勤时间"
>
</el-time-picker>
</div>
<div>
......@@ -38,7 +60,8 @@
v-model="item.goWorkDateBefore"
value-format="H:mm"
format="H小时mm分钟"
placeholder="未设置">
placeholder="未设置"
>
</el-time-picker>
<span class="ml20">——</span>
<span class="ml20">上班后签到</span>
......@@ -49,7 +72,8 @@
v-model="item.goWorkDateAfter"
value-format="HH:mm"
format="H小时mm分钟"
placeholder="未设置">
placeholder="未设置"
>
</el-time-picker>
</div>
<div>
......@@ -61,7 +85,8 @@
format="HH:mm"
value-format="HH:mm"
v-model="item.offWorkDate"
placeholder="下班考勤时间">
placeholder="下班考勤时间"
>
</el-time-picker>
</div>
<div>
......@@ -74,7 +99,8 @@
v-model="item.offWorkDateBefore"
value-format="H:mm"
format="H小时mm分钟"
placeholder="未设置">
placeholder="未设置"
>
</el-time-picker>
<span class="ml20">——</span>
<span class="ml20">下班后签退</span>
......@@ -85,7 +111,8 @@
v-model="item.offWorkDateAfter"
value-format="H:mm"
format="H小时mm分钟"
placeholder="未设置">
placeholder="未设置"
>
</el-time-picker>
</div>
</div>
......@@ -93,19 +120,25 @@
</el-form>
<div class="dialog-footer ml20">
<!-- submitForm -->
<el-button type="primary" size="mini" v-if="pageInfo.type !== 'view'" @click="formatData">确 定</el-button>
<el-button
type="primary"
size="mini"
v-if="pageInfo.type !== 'view'"
@click="formatData"
>确 定</el-button
>
<el-button @click="cancel" size="mini">取 消</el-button>
</div>
</el-drawer>
</template>
<script>
import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow";
import {transFormMinut,transFormTime} from '@/assets/utils/dateFormat.js'
export default {
import form from "@/assets/mixins/formdialog";
import dialogShow from "./dialogshow";
import { transFormMinut, transFormTime } from "@/assets/utils/dateFormat.js";
export default {
mixins: [form],
components: {
dialogShow ,
dialogShow,
},
data() {
return {
......@@ -119,58 +152,52 @@
title: "考勤班次信息",
// 是否显示弹出层
open: false,
toString:[
],
toString: [],
// 表单校验
rules: {
className: [
{required: true,message: "请输入班次名称" },
className: [{ required: true, message: "请输入班次名称" }],
classResponsiblePersonId: [
{ required: true, message: "请选择班次负责人" },
],
classResponsiblePersonId:[
{required: true,message: "请选择班次负责人" },
],
attendanceClassDetailList:[
{required: true,message: "请添加" }
]
attendanceClassDetailList: [{ required: true, message: "请添加" }],
},
currentIndex:0//当前索引值
}
},
created(){
currentIndex: 0, //当前索引值
};
},
created() {},
methods: {
formatData(){
let value = true
formatData() {
let value = true;
if(this.attendanceClassDetailList.length < 1){
this.$message.error('请完整打卡时间填写')
value = false
return
}else{
console.log(this.attendanceClassDetailList.length,'执行了')
this.attendanceClassDetailList.forEach((item,index) => {
let valueres = this.judgeStatus(this.attendanceClassDetailList,index)
if(!valueres){
value = false
return
if (this.attendanceClassDetailList.length < 1) {
this.$message.error("请完整打卡时间填写");
value = false;
return;
} else {
console.log(this.attendanceClassDetailList.length, "执行了");
this.attendanceClassDetailList.forEach((item, index) => {
let valueres = this.judgeStatus(
this.attendanceClassDetailList,
index
);
if (!valueres) {
value = false;
return;
}
})
});
}
if(value){
console.log('测试')
this.attendanceClassDetailList.forEach(item => {
item.goWorkDateBefore = transFormMinut(item.goWorkDateBefore)
item.goWorkDateAfter = transFormMinut(item.goWorkDateAfter)
item.offWorkDateBefore = transFormMinut(item.offWorkDateBefore)
item.offWorkDateAfter = transFormMinut(item.offWorkDateAfter)
})
this.submitForm()
}else{
this.$message.error('打卡时间填写有误')
if (value) {
this.attendanceClassDetailList.forEach((item) => {
item.goWorkDateBefore = transFormMinut(item.goWorkDateBefore);
item.goWorkDateAfter = transFormMinut(item.goWorkDateAfter);
item.offWorkDateBefore = transFormMinut(item.offWorkDateBefore);
item.offWorkDateAfter = transFormMinut(item.offWorkDateAfter);
});
this.submitForm();
} else {
this.$message.error("打卡时间填写有误");
}
},
/** 考勤班次详细信息序号 */
rowAttendanceClassDetailIndex({ row, rowIndex }) {
......@@ -187,83 +214,88 @@
obj.offWorkDateAfter = "";
obj.remark = "";
this.attendanceClassDetailList.push(obj);
},
// 判断添加上下班考勤时间
judgeStatus(arr,index){
console.log(arr,index,'ces')
let status = true
if(arr.length == 0){
}else{
if(arr[index].goWorkDate === ''){
this.$message.error('请选择上班考勤时间')
status = false
return
judgeStatus(arr, index) {
console.log(arr, index, "ces");
let status = true;
if (arr.length == 0) {
} else {
if (arr[index].goWorkDate === "") {
this.$message.error("请选择上班考勤时间");
status = false;
return;
}
if(arr[index].goWorkDateBefore === ''){
this.$message.error('请选择允许上班前签到打卡时间')
status = false
return
if (arr[index].goWorkDateBefore === "") {
this.$message.error("请选择允许上班前签到打卡时间");
status = false;
return;
}
if(arr[index].goWorkDateAfter === ''){
this.$message.error('请选择允许上班后签到打卡时间')
status = false
return
if (arr[index].goWorkDateAfter === "") {
this.$message.error("请选择允许上班后签到打卡时间");
status = false;
return;
}
if(arr[index].offWorkDate === ''){
this.$message.error('请选择下班考勤时间')
status = false
return
if (arr[index].offWorkDate === "") {
this.$message.error("请选择下班考勤时间");
status = false;
return;
}
if(arr[index].offWorkDateBefore === ''){
this.$message.error('请选择允许下班前签退打卡时间')
status = false
return
if (arr[index].offWorkDateBefore === "") {
this.$message.error("请选择允许下班前签退打卡时间");
status = false;
return;
}
if(arr[index].offWorkDateAfter === ''){
this.$message.error('请选择允许下班后签退打卡时间')
status = false
return
if (arr[index].offWorkDateAfter === "") {
this.$message.error("请选择允许下班后签退打卡时间");
status = false;
return;
}
//当前比较下班和上班
let workTime = transFormMinut(arr[index].goWorkDate)+
transFormMinut(arr[index].goWorkDateAfter)
let workTime =
transFormMinut(arr[index].goWorkDate) +
transFormMinut(arr[index].goWorkDateAfter);
let offworkTime = transFormMinut(arr[index].offWorkDate)-
transFormMinut(arr[index].offWorkDateBefore)
let offworkTime =
transFormMinut(arr[index].offWorkDate) -
transFormMinut(arr[index].offWorkDateBefore);
if(offworkTime <= workTime){
this.$message.error('下班打卡时间不能小于上班打卡时间')
status = false
return
if (offworkTime <= workTime) {
this.$message.error("下班打卡时间不能小于上班打卡时间");
status = false;
return;
}
if(arr.length > 1 && index>0){
if (arr.length > 1 && index > 0) {
// 上一次比较
let lastoffTime = transFormMinut(arr[index-1].offWorkDate) +
transFormMinut(arr[index - 1 ].offWorkDateAfter)
let lastoffTime =
transFormMinut(arr[index - 1].offWorkDate) +
transFormMinut(arr[index - 1].offWorkDateAfter);
let currentwokeTime = transFormMinut(arr[index].goWorkDate) -
transFormMinut(arr[index].goWorkDateBefore)
let currentwokeTime =
transFormMinut(arr[index].goWorkDate) -
transFormMinut(arr[index].goWorkDateBefore);
if(currentwokeTime <= lastoffTime){
this.$message.error(`第${index}上班考勤时间需大于第${index-1}上班考勤时间`)
status = false
return
if (currentwokeTime <= lastoffTime) {
this.$message.error(
`第${index}上班考勤时间需大于第${index - 1}上班考勤时间`
);
status = false;
return;
}
}
}
return status
return status;
},
/** 考勤班次详细信息删除按钮操作 */
handleDeleteAttendanceClassDetail(index) {
this.$alert('确定要删除这条设置吗', '删除提醒', {
confirmButtonText: '确定',
callback: action => {
this.attendanceClassDetailList.splice(index,1)
this.currentIndex --
}
})
this.$alert("确定要删除这条设置吗", "删除提醒", {
confirmButtonText: "确定",
callback: (action) => {
this.attendanceClassDetailList.splice(index, 1);
this.currentIndex--;
},
});
},
/** 单选框选中数据 */
handleAttendanceClassDetailSelectionChange(selection) {
......@@ -276,36 +308,35 @@
},
// 渲染前置处理
beforeRender(data) {
if(data.entity.attendanceClassDetailList) {
if (data.entity.attendanceClassDetailList) {
this.attendanceClassDetailList = data.entity.attendanceClassDetailList;
}
return data
return data;
},
/** 编辑 */
edit(row) {
this.reset()
this.reset();
this.query = { id: row.id };
this.urls.currUrl ="attendance/class/edit";
this.urls.currUrl = "attendance/class/edit";
this.getData();
this.pageInfo.type="edit"
this.pageInfo.type = "edit";
this.title = "修改考勤班次信息";
},
/** 新增 */
add(row) {
this.reset()
this.reset();
this.urls.currUrl = "attendance/class/add";
this.getData();
this.pageInfo.type="add"
this.pageInfo.type = "add";
this.title = "新增考勤班次信息";
},
/** 查看*/
view(row) {
this.reset()
this.reset();
this.query = { id: row.id };
this.urls.currUrl ="attendance/class/view";
this.urls.currUrl = "attendance/class/view";
this.getData();
this.pageInfo.type="view"
this.pageInfo.type = "view";
this.title = "考勤班次信息详细";
},
/**取消按钮 */
......@@ -314,16 +345,16 @@
},
/**获取数据后弹框 */
afterRender(data) {
if(this.attendanceClassDetailList.length>0){
this.attendanceClassDetailList.forEach(item => {
item.goWorkDateBefore = transFormTime(item.goWorkDateBefore)
item.goWorkDateAfter = transFormTime(item.goWorkDateAfter)
item.offWorkDateBefore = transFormTime(item.offWorkDateBefore)
item.offWorkDateAfter = transFormTime(item.offWorkDateAfter)
})
this.currentIndex = this.attendanceClassDetailList.length - 1
this.form.classResponsiblePersonId = this.form.classResponsiblePersonId.toString()
console.log(this.currentIndex,'执行了')
if (this.attendanceClassDetailList.length > 0) {
this.attendanceClassDetailList.forEach((item) => {
item.goWorkDateBefore = transFormTime(item.goWorkDateBefore);
item.goWorkDateAfter = transFormTime(item.goWorkDateAfter);
item.offWorkDateBefore = transFormTime(item.offWorkDateBefore);
item.offWorkDateAfter = transFormTime(item.offWorkDateAfter);
});
this.currentIndex = this.attendanceClassDetailList.length - 1;
this.form.classResponsiblePersonId = this.form.classResponsiblePersonId.toString();
console.log(this.currentIndex, "执行了");
}
this.open = true;
},
......@@ -336,10 +367,10 @@
// 表单重置
reset() {
this.form = {
className : "",
classResponsiblePersonId : null,
classResponsiblePersonName : "",
remark : "",
className: "",
classResponsiblePersonId: null,
classResponsiblePersonName: "",
remark: "",
};
this.resetForm("form");
},
......@@ -349,14 +380,14 @@
}
},
},
};
};
</script>
<style scoped lang="less">
.bancifor{
.bancifor {
background-color: #f5f5f5;
padding: 10px;
margin-bottom: 15px;
.title{
.title {
border-bottom: 1px solid rgb(206, 206, 206);
}
}
......
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