安安网站建设,手机网站建设设计服务,网站外链的建设,asp网站建设实验设计功能说明#xff1a;
1 点击新增时间#xff0c;出现一个默认时间段模板#xff0c;不能提交
2 点击“新增时间文本”#xff0c;弹出弹窗#xff0c;选择时间#xff0c;不允许开始时间和结束时间同时为00:00#xff0c;
view classitem_cont … 功能说明
1 点击新增时间出现一个默认时间段模板不能提交
2 点击“新增时间文本”弹出弹窗选择时间不允许开始时间和结束时间同时为00:00
view classitem_cont view classstart_item view classstart_item_title{{i18nCast(vqSettingStartTime)}}/viewpicker modemultiSelector :valueitem.start :starthours :endminutes :rangerangeOpts changehandlerTime($event,start,item)view classuni-inputview classselect_time_txt v-ifisTimeEmpty(item.start){{i18nCast(vqSettingSelectedTimeSlot)}} text classicon_right/text/viewview v-else{{transTimeToStr(item.start)}}/view/view/picker/viewview classend_item view classend_item_title{{i18nCast(vqSettingEndTime)}}/viewpicker modemultiSelector :valueitem.end :starthours :endminutes :rangerangeOpts changehandlerTime($event,end,item)view classuni-inputview classselect_time_txt v-ifisTimeEmpty(item.end){{i18nCast(vqSettingSelectedTimeSlot)}} text classicon_right/text/viewview v-else{{transTimeToStr(item.end)}}/view/view/picker/view/viewview classdel_item clicktriggerDelItem(item,index){{i18nCast(vqSettingdelete)}}/viewdata(){return {curTimeItem:{start:,end:,},rangeOpts:[[...hours],[...minutes]],hours: Array.from({ length: 24 }, (_, i) i),minutes: Array.from({ length: 60 }, (_, i) i),}}methods:{i18nCast,...mapMutations({setStoreId:global/setStoreId,}),cancelStart(){console.log(confirm----)},setPageTitle(){this.redirectFromPagevq?setNavigationBarTitleFn(i18nCast(vqSettingNamequeueTime)):setNavigationBarTitleFn(i18nCast(vqSettingOperationTime))},init(){getSetting({storeId: this.storeId}).then(res{let {openingPeriods,inventoryPeriods,storeToggle,inventoryPeriodsStore}res.data;this.storeTogglestoreToggle//有桌型if(storeToggle){this.list(this.redirectFromPagevq?inventoryPeriods:openingPeriods)||[]}else{//无桌型this.list(this.redirectFromPagevq?inventoryPeriodsStore:openingPeriods)||[]}console.log(this.list,this.list)this.addListKey(this.list)}).finally((){uni.hideLoading()uni.stopPullDownRefresh()})},addListKey(arr){if(arrarr.length0){arr.forEach(item{this.$set(item,moveX,0)this.$set(item,isShowError,false)this.$set(item,timebName,Time Slot)this.spiltTimeToArr(item)})}},isTimeEmpty(str){return str.every(itemitem )?true:false},setTimeListFn(timelist){let paramsthis.getParams(timelist)console.log(params:,params)if(this.hasTimeIsZero()){uni.showToast({title: i18nCast(vqSettingEmptyTimeErr),icon:none})}else{this.hasTimeSegmentsOverlap()if(this.hasTimeCross||this.hasItemErr()){return}else{//正常提交console.log(params:,params)this.submitCore(timelist)}}},getParams(timelist){let arrtimelist.map(({start,end})({start:this.transTimeToStr(start),end:this.transTimeToStr(end)})) console.log(getParams--,arr)let params{storeId:this.storeId}if(this.redirectFromPagevq arr.length0){params{...params,inventoryType:single}}if(this.storeToggle){this.redirectFromPagevq?params{...params,inventoryPeriods:arr}:params{...params,openingPeriods:arr}}else{this.redirectFromPagevq?params{...params,inventoryPeriodsStore:arr}:params{...params,openingPeriods:arr}}return params},submitCore(list){let paramsthis.getParams(list)setSetting(params).then(res{let iconTyperes.errcode0?iconTypesuccess:iconTypeerroruni.showToast({title: i18nCast(vqSettingSaveSuccess),icon:iconType})this.init()}).catch(err{uni.showToast({title:err.data.errmsg,icon:none})})},save(){ this.setTimeListFn(this.list)},transformDate(num) { return num num 10 ? num : 0${num};},// 时间段错误统计hasItemErr(){const errsthis.list.filter(itemitem.isShowError)return errs.length0?true:false},handlerTime(e,type,item){typestart?item.starte.detail.value:item.ende.detail.value;this.hasTimeSegmentsOverlap()this.timeError(item)},transTimeToStr(timeArr){let resif(timeArr.every(itemitem)){res00:00}else{res${this.transformDate(timeArr[0])}:${this.transformDate(timeArr[1])}}return res},spiltTimeToArr(item){if(item.startitem.end){let startArritem.start.split(:)let endArritem.end.split(:)item.start[Number(startArr[0]),Number(startArr[1])]item.end[Number(endArr[0]),Number(endArr[1])]}},timeError(item){let startHitem.start[0]let startMitem.start[1]let endHitem.end[0]let endMitem.end[1]console.log(startH-,startH)console.log(endH-,endH)//先比较时if(Number(endH)Number(startH)){item.isShowErrortrue}else if(Number(endH)Number(startH)){// 再比较分item.isShowErrorstartMendM?true:false}else{item.isShowErrorfalse}},addTime(item){console.log(addtime,item)console.log(this.list---prev,this.list)let upperTimeNumthis.redirectFromPagebusiness?3:5this.listthis.list||[]if(this.list.lengthupperTimeNum){uni.showToast({icon: none,title: i18nCast(vqSettingUpperLimit)})return}else{this.list.push({id:Math.random()*10100,timebName:i18nCast(vqSettingTimeSections),start:[,],end:[,],})}console.log(this.list---next,this.list)},drawStart(e){e.preventDefault()this.startXe.touches[0].clientX;console.log(this.startx,this.startX)},drawMove(e,item){e.preventDefault()item.moveXe.touches[0].clientX-this.startX;if(item.moveX0){item.moveX0}else{if(item.moveX-this.delBtnWidth/2){item.moveX-this.delBtnWidth}}},drawEnd(e,item){e.preventDefault()if(item.moveX0){if(Math.abs(item.moveX)this.delBtnWidth/2){item.moveX0}else{item.moveX-this.delBtnWidth}}},triggerDelItem(item,index){console.log(item:,item)this.visibletrue;this.curTimeItemitem},//删除confirmDel(){let listthis.list.filter(itemitem.start!this.curTimeItem.start)console.log(lsit,this.list)this.visiblefalse// this.setTimeListFn(list)this.submitCore(list)},hasTimeIsZero(){let resfalseconst timeSlots this.list.map(({start,end})({start:this.transTimeToStr(start),end:this.transTimeToStr(end)}));if(timeSlots.some(itemitem.start00:00item.end00:00)){restrue}return res},convertToMinutes(timeString) {const [hours, minutes] timeString.split(:);return parseInt(hours) * 60 parseInt(minutes);},hasTimeSegmentsOverlap() {let resfalseconst timeArray this.list.map(({start,end})({start:this.transTimeToStr(start),end:this.transTimeToStr(end)}));for (let i 0; i timeArray.length; i) {const current timeArray[i];for (let j i 1; j timeArray.length; j) {const compare timeArray[j];// 将时间字符串转换为分钟数const currentStart this.convertToMinutes(current.start);const currentEnd this.convertToMinutes(current.end);const compareStart this.convertToMinutes(compare.start);const compareEnd this.convertToMinutes(compare.end);// 检查时间段是否重叠if ((currentStart compareStart compareStart currentEnd) ||(currentStart compareEnd compareEnd currentEnd) ||(compareStart currentStart currentStart compareEnd) ||(compareStart currentEnd currentEnd compareEnd)) {res true; // 存在交叉时间段}}}// 不存在交叉时间段console.log(是否有交叉,res)this.hasTimeCrossresreturn res}}