|
@@ -18,24 +18,22 @@
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="sliders-list" id="sliderListId">
|
|
|
- <div
|
|
|
- class="sliders-wrapper"
|
|
|
- id="slidersWrapperId"
|
|
|
- :key="'slider' + index"
|
|
|
- v-for="(item, index) in nowTimerArr"
|
|
|
- >
|
|
|
- <div class="sliders">
|
|
|
- <div class="label" v-show="index === 0 || index % 2 === 0">
|
|
|
- {{ item.timer }}
|
|
|
+ <template v-for="(item, index) in nowTimerArr" :key="'slider' + index">
|
|
|
+ <div class="sliders-wrapper" id="slidersWrapperId">
|
|
|
+ <div class="sliders">
|
|
|
+ <div class="label" v-show="index === 0 || index % 2 === 0">
|
|
|
+ {{ item.timer }}
|
|
|
+ </div>
|
|
|
+ <div
|
|
|
+ class="slider-box"
|
|
|
+ @click="checkSlider(item, index)"
|
|
|
+ :data-index="index"
|
|
|
+ ></div>
|
|
|
</div>
|
|
|
- <div
|
|
|
- class="slider-box"
|
|
|
- @click="checkSlider(item, index)"
|
|
|
- :data-index="index"
|
|
|
- ></div>
|
|
|
</div>
|
|
|
- </div>
|
|
|
- <div class="slider-btn" id="sliderBtnId">
|
|
|
+ </template>
|
|
|
+
|
|
|
+ <div class="slider-btn" id="sliderBtnId" @click="triggerDelTime">
|
|
|
<div class="start" id="startId"></div>
|
|
|
<div class="end-box" id="endBoxId">
|
|
|
<div class="end" id="endId"></div>
|
|
@@ -46,9 +44,13 @@
|
|
|
</div>
|
|
|
<div class="add-time-btn">
|
|
|
<div class="cancel-btn">取消</div>
|
|
|
- <div class="comfirm-btn"
|
|
|
- :class="formBtn?'comfirm-btn-diabled':''"
|
|
|
- @click="addWorkTimer">提交申请</div>
|
|
|
+ <div
|
|
|
+ class="comfirm-btn"
|
|
|
+ :class="formBtn ? 'comfirm-btn-diabled' : ''"
|
|
|
+ @click="addWorkTimer"
|
|
|
+ >
|
|
|
+ 提交申请
|
|
|
+ </div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</template>
|
|
@@ -74,6 +76,7 @@ import {
|
|
|
getNowTime,
|
|
|
getRelNowTime,
|
|
|
getTimers,
|
|
|
+ getUserInfo,
|
|
|
getWeekDate,
|
|
|
parseImgUrl,
|
|
|
} from "@/utils";
|
|
@@ -107,7 +110,9 @@ export default defineComponent({
|
|
|
let nowData: any = [];
|
|
|
let redUrl: any = `${parseImgUrl("ipdImages", "time-check.svg")}`;
|
|
|
let bgRed: any = `linear-gradient(0deg, rgba(255, 0, 0, 0.2), rgba(255, 0, 0, 0.2)), url(${redUrl})`;
|
|
|
+ const userInfo: any = getUserInfo();
|
|
|
const proxyData = reactive({
|
|
|
+ userInfo: userInfo,
|
|
|
screenInfo: screenInfo,
|
|
|
projectId: props.projectId,
|
|
|
workkArr: props.workkArr,
|
|
@@ -159,9 +164,7 @@ export default defineComponent({
|
|
|
let sliderList: any = document.querySelector("#sliderListId");
|
|
|
let slidersWrapper: any = document.querySelector("#slidersWrapperId");
|
|
|
sliderList.style.width =
|
|
|
- slidersWrapper.offsetWidth * timerArr.length +
|
|
|
- slidersWrapper.offsetWidth +
|
|
|
- "px";
|
|
|
+ slidersWrapper.offsetWidth * timerArr.length - 15 + "px";
|
|
|
let index: any = proxyData.getNowPerstion(timerArr).nowIndex;
|
|
|
let len: any = proxyData.getNowPerstion(timerArr).len;
|
|
|
let sliderLeft: any = slidersWrapper.offsetWidth * index;
|
|
@@ -226,7 +229,7 @@ export default defineComponent({
|
|
|
// 判断滑动的位置是否包含服务定制的位置(如果当前滑动的位置在服务定制处不让滑动)
|
|
|
checkPersionService() {
|
|
|
let flag: any = false;
|
|
|
- for (let i = proxyData.startIndex; i <= proxyData.endIndex; i++) {
|
|
|
+ for (let i = proxyData.startIndex; i < proxyData.endIndex; i++) {
|
|
|
if (proxyData.nowTimerArr[i].isServiceTime) {
|
|
|
flag = true;
|
|
|
break;
|
|
@@ -423,7 +426,7 @@ export default defineComponent({
|
|
|
let sliderBoxArr: any = document.querySelectorAll(".slider-box");
|
|
|
for (let i = 0; i < sliderBoxArr.length; i++) {
|
|
|
if (i < index) {
|
|
|
- sliderBoxArr[i].style.background = `#EcEcEc`;
|
|
|
+ sliderBoxArr[i].style.background = `rgba(196, 196, 196, 0.2)`;
|
|
|
}
|
|
|
}
|
|
|
},
|
|
@@ -506,6 +509,9 @@ export default defineComponent({
|
|
|
* 选中当前模块
|
|
|
*/
|
|
|
checkSlider(item: any, index: any) {
|
|
|
+ if (index === proxyData.nowTimerArr.length - 1) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
// 按钮的状态
|
|
|
proxyData.formBtn = false;
|
|
|
let nowIndex: any = getNowTime()[1];
|
|
@@ -522,10 +528,7 @@ export default defineComponent({
|
|
|
let cusEndTime: any = proxyData.parseCusEndTime(
|
|
|
proxyData.nowData.cusEndTime
|
|
|
);
|
|
|
- if (
|
|
|
- formatTimer > proxyData.nowData.cusStartTime &&
|
|
|
- formatTimer < proxyData.nowData.cusEndTime
|
|
|
- ) {
|
|
|
+ if (formatTimer >= cusStartTime && formatTimer < cusEndTime) {
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
@@ -558,10 +561,6 @@ export default defineComponent({
|
|
|
let nowDate: any = formatDate("YYYY-MM-DD");
|
|
|
for (let i = 0; i < data.length; i++) {
|
|
|
let date: any = formatDateStr(data[i].date);
|
|
|
- // let cusStartTime: any = formatDateStr(data[i].cusStartTime);
|
|
|
- // let cusEndTime: any = formatDateStr(data[i].cusEndTime);
|
|
|
- // let cusStartTime: any = data[i].cusStartTime;
|
|
|
- // let cusEndTime: any = data[i].cusEndTime;
|
|
|
let cusStartTime: any = proxyData.parseCusStartTime(
|
|
|
data[i].cusStartTime
|
|
|
);
|
|
@@ -584,11 +583,35 @@ export default defineComponent({
|
|
|
let customSceneList: any = data[i]?.customSceneList ?? [];
|
|
|
customSceneList.map((custom: any) => {
|
|
|
for (let j = 0; j < timerArr.length; j++) {
|
|
|
- if (
|
|
|
- timerArr[j].formatTimer >= custom.startTime &&
|
|
|
- timerArr[j].formatTimer <= custom.endTime
|
|
|
- ) {
|
|
|
- timerArr[j].isCheck = true;
|
|
|
+ // debugger
|
|
|
+ if (timerArr[j].formatTimer < cusStartTime) {
|
|
|
+ let tempStartTime: any = proxyData.parseCusStartTime(
|
|
|
+ custom.startTime
|
|
|
+ );
|
|
|
+ let tempEndTime: any = proxyData.parseCusStartTime(
|
|
|
+ custom.endTime
|
|
|
+ );
|
|
|
+ // 加班时间在服务定制时间之前
|
|
|
+ if (
|
|
|
+ timerArr[j].formatTimer >= tempStartTime &&
|
|
|
+ timerArr[j].formatTimer < tempEndTime
|
|
|
+ ) {
|
|
|
+ timerArr[j].isCheck = true;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ // 加班时间在服务外定制时间之后
|
|
|
+ let tempStartTime: any = proxyData.parseCusEndTime(
|
|
|
+ custom.startTime
|
|
|
+ );
|
|
|
+ let tempEndTime: any = proxyData.parseCusEndTime(
|
|
|
+ custom.endTime
|
|
|
+ );
|
|
|
+ if (
|
|
|
+ timerArr[j].formatTimer >= tempStartTime &&
|
|
|
+ timerArr[j].formatTimer < tempEndTime
|
|
|
+ ) {
|
|
|
+ timerArr[j].isCheck = true;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
});
|
|
@@ -649,8 +672,8 @@ export default defineComponent({
|
|
|
proxyData.sliderSwiper();
|
|
|
proxyData.endBoxSwiper();
|
|
|
},
|
|
|
- // 日期格式化
|
|
|
- formateTimer() {
|
|
|
+ // 加班数据格式化=》后台需要的数据结构(添加加班逻辑)
|
|
|
+ formateAddTimer() {
|
|
|
let customSceneList: any = proxyData.nowData.customSceneList;
|
|
|
let timerArr: any = proxyData.nowData.timerArr;
|
|
|
let startTime: any = timerArr[proxyData.startIndex].formatTimer;
|
|
@@ -727,7 +750,6 @@ export default defineComponent({
|
|
|
startTime = proxyData.nowData.cusEndTime;
|
|
|
}
|
|
|
}
|
|
|
- debugger
|
|
|
let relNowTime: any = getRelNowTime();
|
|
|
let type = "0";
|
|
|
if (relNowTime >= startTime && relNowTime <= endTime) {
|
|
@@ -755,22 +777,102 @@ export default defineComponent({
|
|
|
startTime: startTime, //类型:String 必有字段 备注://开始时间
|
|
|
endTime: endTime, //类型:String 必有字段 备注://结束时间
|
|
|
type: type, //类型:String 必有字段 备注://0 预约加班,1 取消,2 加班(我来了), 3 最后一个走
|
|
|
- userId: item.userId, //类型:String 必有字段 备注://用户id
|
|
|
- userPhone: item.userPhone, //类型:String 必有字段 备注://手机号
|
|
|
+ userId: proxyData.userInfo.userId, //类型:String 必有字段 备注://用户id
|
|
|
+ userPhone: proxyData.userInfo.userPhone, //类型:String 必有字段 备注://手机号
|
|
|
customSceneEqType: "ALL", //类型:String 必有字段 备注://来源 AC 空调入口, SE 灯入口 ALL 加班入口
|
|
|
- userName: item.userName, //类型:String 必有字段 备注://名字
|
|
|
+ userName: proxyData.userInfo.userName, //类型:String 必有字段 备注://名字
|
|
|
};
|
|
|
if (type === "1") {
|
|
|
obj.id = item.id; //类型:String 必有字段 备注:取消加班时必传
|
|
|
}
|
|
|
return obj;
|
|
|
},
|
|
|
+ // 加班数据格式化=》后台需要的数据结构(删除加班逻辑)
|
|
|
+ formateDelTimer() {
|
|
|
+ let timerArr: any = proxyData.nowData.timerArr;
|
|
|
+ let endIndex: any = proxyData.endIndex > 0 ? proxyData.endIndex - 1 : 0;
|
|
|
+ // 如果当前选择的日期只在已经选中的范围内
|
|
|
+ if (
|
|
|
+ timerArr[proxyData.startIndex].isCheck &&
|
|
|
+ timerArr[endIndex].isCheck
|
|
|
+ ) {
|
|
|
+ let customSceneList: any = proxyData.nowData.customSceneList;
|
|
|
+ let startTime: any = timerArr[proxyData.startIndex].formatTimer;
|
|
|
+ let endTime: any = timerArr[proxyData.endIndex].formatTimer;
|
|
|
+ let delTimerArr: any = [];
|
|
|
+ let addTimeArr: any = [];
|
|
|
+ // 删除时间的数据拼接
|
|
|
+ customSceneList.map((item: any, index: any) => {
|
|
|
+ if (item.startTime < startTime) {
|
|
|
+ if (item.endTime <= endTime) {
|
|
|
+ let delObj: any = proxyData.formaTimeObj(
|
|
|
+ item,
|
|
|
+ "1",
|
|
|
+ item.startTime,
|
|
|
+ item.endTime
|
|
|
+ );
|
|
|
+ delTimerArr.push(delObj);
|
|
|
+ let addObj: any = proxyData.formaTimeObj(
|
|
|
+ customSceneList[0],
|
|
|
+ "0",
|
|
|
+ item.startTime,
|
|
|
+ startTime
|
|
|
+ );
|
|
|
+ addTimeArr.push(addObj);
|
|
|
+ } else if (item.endTime > endTime) {
|
|
|
+ let delObj: any = proxyData.formaTimeObj(
|
|
|
+ item,
|
|
|
+ "1",
|
|
|
+ item.startTime,
|
|
|
+ item.endTime
|
|
|
+ );
|
|
|
+ delTimerArr.push(delObj);
|
|
|
+ let addObj1: any = proxyData.formaTimeObj(
|
|
|
+ customSceneList[0],
|
|
|
+ "0",
|
|
|
+ item.startTime,
|
|
|
+ startTime
|
|
|
+ );
|
|
|
+ addTimeArr.push(addObj1);
|
|
|
+ let addObj2: any = proxyData.formaTimeObj(
|
|
|
+ customSceneList[0],
|
|
|
+ "0",
|
|
|
+ endTime,
|
|
|
+ item.endTime
|
|
|
+ );
|
|
|
+ addTimeArr.push(addObj2);
|
|
|
+ }
|
|
|
+ } else if (item.startTime === item.startTime) {
|
|
|
+ if (item.endTime === endTime) {
|
|
|
+ // 整段删除
|
|
|
+ let delObj: any = proxyData.formaTimeObj(
|
|
|
+ item,
|
|
|
+ "1",
|
|
|
+ item.startTime,
|
|
|
+ item.endTime
|
|
|
+ );
|
|
|
+ delTimerArr.push(delObj);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ // return formTimeArr;
|
|
|
+ } else {
|
|
|
+ return [];
|
|
|
+ }
|
|
|
+ },
|
|
|
// 提交申请
|
|
|
addWorkTimer() {
|
|
|
- let formTimerArr: any = proxyData.formateTimer();
|
|
|
+ let formTimerArr: any = proxyData.formateAddTimer();
|
|
|
console.log("提交申请-----");
|
|
|
console.log(formTimerArr);
|
|
|
},
|
|
|
+ // 删除
|
|
|
+ triggerDelTime() {
|
|
|
+ let formTimeArr: any = proxyData.formateDelTimer();
|
|
|
+ if (formTimeArr && formTimeArr.length) {
|
|
|
+ alert("确定删除当前时间吗?");
|
|
|
+ }
|
|
|
+ },
|
|
|
});
|
|
|
nextTick(() => {
|
|
|
// proxyData.setScreennWidth()
|
|
@@ -1023,7 +1125,7 @@ export default defineComponent({
|
|
|
}
|
|
|
.comfirm-btn-diabled {
|
|
|
background: rgba(196, 196, 196, 0.2);
|
|
|
- color: #1F2529;
|
|
|
+ color: #1f2529;
|
|
|
}
|
|
|
}
|
|
|
</style>
|