feat: 1.星勤考勤模块--考勤规则说明 2.星勤考勤模块--考勤时间设置 3.星勤考勤模块--考勤特殊日期设置
This commit is contained in:
parent
f57ee6af3a
commit
02c4636a42
@ -8,20 +8,84 @@
|
||||
</route>
|
||||
|
||||
<template>
|
||||
<view class="bg-white rounded-1 pt-20 pb-15 box-border mx-4 pt-2">
|
||||
<view class="text-center">
|
||||
<image src="/static/images/icon_wechat.png" class="w-30 h30" />
|
||||
<view v-if="canClockIn">
|
||||
<view class="bg-white rounded-2 p-4 box-border mx-3">
|
||||
<view v-for="(item, index) in clockInList" :key="index">
|
||||
<view class="flex flex-row flex-justify-between items-center">
|
||||
<view class="font-bold text-4">{{ item.title }}</view>
|
||||
<view class="color-[#3372FA]">{{ item.status }}</view>
|
||||
</view>
|
||||
<view
|
||||
:class="item.title == '上班' ? '' : 'inline-block'"
|
||||
class="hpx bg-gray-100 my-3"
|
||||
></view>
|
||||
<view v-if="item.isClockIn == false">
|
||||
<view @click="goRules()" class="color-[#3372FA]">考勤 ></view>
|
||||
<view
|
||||
class="gradual w-30 h-30 mx-a rounded-36 mt-15 shadow shadow-blue-400 shadow-lg flex flex-col items-center justify-center color-white"
|
||||
>
|
||||
<view class="text-6.5 font-bold">
|
||||
{{ time.getHours().toString().padStart(2, '0') }}:{{
|
||||
time.getMinutes().toString().padStart(2, '0')
|
||||
}}
|
||||
</view>
|
||||
<view class="text-3 font-300">点击打卡</view>
|
||||
</view>
|
||||
<view class="flex flex-row flex-justify-center items-center my-5">
|
||||
<view class="i-carbon-location-filled color-[#3372FA]"></view>
|
||||
<view class="ml-1 text-3">你已在打卡范围内</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="text-center mt-2 color-gray">你所在考勤组无法手机打卡</view>
|
||||
<view class="text-center color-gray">请在考勤机或者门禁设备上打卡</view>
|
||||
</view>
|
||||
<view class="w-100% h-17 bg-[#3372FA] mt-2 rounded-1" @click="goHelper"></view>
|
||||
<view v-else>
|
||||
<view class="bg-white rounded-2 pt-20 pb-15 box-border mx-3 pt-2">
|
||||
<view class="text-center">
|
||||
<image src="/static/images/icon_wechat.png" class="w-30 h30" />
|
||||
</view>
|
||||
<view class="text-center mt-2 color-gray">你所在考勤组无法手机打卡</view>
|
||||
<view class="text-center color-gray">请在考勤机或者门禁设备上打卡</view>
|
||||
</view>
|
||||
<view class="w-100% h-17 bg-[#3372FA] mt-2 rounded-2" @click="goHelper"></view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, onMounted } from 'vue'
|
||||
const canClockIn = ref(true)
|
||||
const time = ref(new Date())
|
||||
onMounted(() => {
|
||||
setInterval(() => {
|
||||
time.value = new Date()
|
||||
}, 1000)
|
||||
})
|
||||
const clockInList = ref([
|
||||
{
|
||||
title: '上班',
|
||||
status: '正常',
|
||||
isClockIn: true
|
||||
},
|
||||
{
|
||||
title: '下班',
|
||||
status: '未打卡',
|
||||
isClockIn: false
|
||||
}
|
||||
])
|
||||
const goRules = () => {
|
||||
console.log('goRules')
|
||||
uni.navigateTo({
|
||||
url: '/pages/attendance/attendance-rules'
|
||||
})
|
||||
// todo goRules
|
||||
}
|
||||
const goHelper = () => {
|
||||
// todo goHelper
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
<style lang="scss" scoped>
|
||||
.gradual {
|
||||
background: linear-gradient(to bottom, #50a0f5, #1e6eed);
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -10,13 +10,13 @@
|
||||
<template>
|
||||
<view class="mx-4 pt-2">
|
||||
<view
|
||||
class="my-2 p-3.5 flex flex-justify-between rounded-1.2 items-center bg-white"
|
||||
class="my-2 p-3.5 flex flex-justify-between rounded-2.2 items-center bg-white"
|
||||
@click="goAddGroup"
|
||||
>
|
||||
<view class="color-[#3372FA]">添加考勤组</view>
|
||||
<wd-icon name="add-circle" class="color-[#3372FA]" size="20"></wd-icon>
|
||||
</view>
|
||||
<view class="my-2 p-3.5 flex flex-justify-between rounded-1.2 items-center bg-white">
|
||||
<view class="my-2 p-3.5 flex flex-justify-between rounded-2.2 items-center bg-white">
|
||||
<view class="flex flex-col">
|
||||
<view>考勤</view>
|
||||
<view class="text-gray mt-1 text-3">固定班制</view>
|
||||
@ -27,21 +27,21 @@
|
||||
<view class="flex flex-row flex-justify-between">
|
||||
<view
|
||||
@click="goClasses()"
|
||||
class="p-3.5 bg-white rounded-1.2 flex-1 mr-1 flex flex-row items-center"
|
||||
class="p-3.5 bg-white rounded-2.2 flex-1 mr-1 flex flex-row items-center"
|
||||
>
|
||||
<image src="/static/images/icon_wechat.png" class="w-6 h-6 mr-2" />
|
||||
<view class="text-3">班次管理</view>
|
||||
</view>
|
||||
<view
|
||||
@click="goIssueRecord"
|
||||
class="p-3.5 bg-white rounded-1.2 flex-1 ml-1 flex flex-row items-center"
|
||||
class="p-3.5 bg-white rounded-2.2 flex-1 ml-1 flex flex-row items-center"
|
||||
>
|
||||
<image src="/static/images/icon_wechat.png" class="w-6 h-6 mr-2" />
|
||||
<view class="text-3">下发记录</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="text-gray mt-4 ml-3 text-3 mb-2">了解详情</view>
|
||||
<view class="flex flex-wrap bg-white rounded-1.2 px-3 py-1.5 flex-justify-between">
|
||||
<view class="flex flex-wrap bg-white rounded-2.2 px-3 py-1.5 flex-justify-between">
|
||||
<view
|
||||
v-for="(item, index) in [
|
||||
'电脑网页端',
|
||||
@ -52,7 +52,7 @@
|
||||
'打卡-缺卡提醒'
|
||||
]"
|
||||
:key="index"
|
||||
class="my-1.5 bg-[#F6F8FC] w-4.8/10 py-3.5 px-2 rounded-1.2 box-border flex flex-row items-center"
|
||||
class="my-1.5 bg-[#F6F8FC] w-4.8/10 py-3.5 px-2 rounded-2.2 box-border flex flex-row items-center"
|
||||
>
|
||||
<image src="/static/images/icon_wechat.png" class="w-5 h-5" mode="scaleToFill" />
|
||||
<view class="text-center text-2.5 custom-color-black ml-1">{{ item }}</view>
|
||||
|
||||
@ -23,7 +23,7 @@
|
||||
<wd-icon name="arrow-right" class="text-gray" size="20"></wd-icon>
|
||||
<view class="color-[#3372FA] flex-1 text-end text-3">查看/导出月报</view>
|
||||
</view>
|
||||
<view class="rounded-1 bg-white mt-4 p-3.5 flex flex-col">
|
||||
<view class="rounded-2 bg-white mt-4 p-3.5 flex flex-col">
|
||||
<wd-calendar-view
|
||||
v-model="teamDateTime"
|
||||
@change="handleChange"
|
||||
@ -46,8 +46,8 @@
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="w-100% h-17 bg-blue mt-2 rounded-1" @click="goCheck"></view>
|
||||
<view class="w-100% h-17 bg-gray mt-2 rounded-1" @click="goProblem"></view>
|
||||
<view class="w-100% h-17 bg-blue mt-2 rounded-2" @click="goCheck"></view>
|
||||
<view class="w-100% h-17 bg-gray mt-2 rounded-2" @click="goProblem"></view>
|
||||
</view>
|
||||
<view v-if="tabIndex == 1" class="flex-1 flex flex-col px-3 pt-4">
|
||||
<view class="flex flex-row items-center">
|
||||
@ -58,7 +58,7 @@
|
||||
<wd-icon name="arrow-right" class="text-gray" size="20"></wd-icon>
|
||||
<view class="color-[#3372FA] flex-1 text-end text-3">查看月报</view>
|
||||
</view>
|
||||
<view class="rounded-1 bg-white mt-4 p-3.5 flex flex-col">
|
||||
<view class="rounded-2 bg-white mt-4 p-3.5 flex flex-col">
|
||||
<wd-calendar-view
|
||||
v-model="myDateTime"
|
||||
@change="handleChange"
|
||||
@ -90,7 +90,7 @@
|
||||
const tabIndex = ref(0)
|
||||
const teamDateTime = ref(Date.now())
|
||||
const myDateTime = ref(Date.now())
|
||||
const current = ref<number>(0)
|
||||
const current = ref<number>(17)
|
||||
function handleChange({ value }) {
|
||||
console.log(value)
|
||||
}
|
||||
|
||||
@ -23,14 +23,14 @@
|
||||
</template>
|
||||
</CommonItem>
|
||||
<view class="flex flex-row flex-justify-between mx-4">
|
||||
<view class="bg-[#f6f8fc] rounded-1 p-2 w-48% box-border">
|
||||
<view class="bg-[#f6f8fc] rounded-2 p-2 w-48% box-border">
|
||||
<view class="text-2.8 color-gray">最早打卡时间</view>
|
||||
<view class="flex flex-row items-center mt-1.5">
|
||||
<view class="color-[#3372FA] text-3">未设置</view>
|
||||
<view class="i-carbon-next-outline ml-1 text-2.3 color-gray"></view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="bg-[#f6f8fc] rounded-1 p-2 w-48% box-border">
|
||||
<view class="bg-[#f6f8fc] rounded-2 p-2 w-48% box-border">
|
||||
<view class="text-2.8 color-gray">最早打卡时间</view>
|
||||
<view class="flex flex-row items-center mt-1.5">
|
||||
<view class="color-[#3372FA] text-3">未设置</view>
|
||||
|
||||
@ -26,7 +26,7 @@
|
||||
<template v-slot:child>
|
||||
<view class="px-4">
|
||||
<view
|
||||
class="bg-white rounded-1 mt-2"
|
||||
class="bg-white rounded-2 mt-2"
|
||||
@click="typeIndex = index"
|
||||
v-for="(item, index) in typeList"
|
||||
:key="index"
|
||||
@ -58,7 +58,7 @@
|
||||
>
|
||||
<template v-slot:child>
|
||||
<view class="px-4">
|
||||
<view class="bg-white rounded-1 mt-2">
|
||||
<view class="bg-white rounded-2 mt-2">
|
||||
<view
|
||||
class="flex flex-row items-center p-3 box-border"
|
||||
@click="
|
||||
@ -85,7 +85,7 @@
|
||||
|
||||
<TopNavigation title="添加考勤组"></TopNavigation>
|
||||
<view class="h-[calc(100vh-60px)] p-3 box-border">
|
||||
<view class="bg-white rounded-1.2 mt-2">
|
||||
<view class="bg-white rounded-2.2 mt-2">
|
||||
<CommonItem text="考勤组名称" isMust :isNext="false" value="" hint="" noLine></CommonItem>
|
||||
<view class="flex items-center px-4.3 pb-3 box-border">
|
||||
<input
|
||||
@ -115,11 +115,16 @@
|
||||
:value="typeList[typeSelectIndex].title"
|
||||
></CommonItem>
|
||||
</view>
|
||||
<view class="bg-white rounded-1.2 mt-2">
|
||||
<view class="bg-white rounded-2.2 mt-2">
|
||||
<CommonItem @click="goStaff()" text="考勤人员" isMust value=""></CommonItem>
|
||||
<CommonItem text="考勤时间" noLine value="周一至周五,09:00-17:00"></CommonItem>
|
||||
<CommonItem
|
||||
@click="goTime()"
|
||||
text="考勤时间"
|
||||
noLine
|
||||
value="周一至周五,09:00-17:00"
|
||||
></CommonItem>
|
||||
</view>
|
||||
<view class="bg-white rounded-1.2 mt-2">
|
||||
<view class="bg-white rounded-2.2 mt-2">
|
||||
<CommonItem
|
||||
@click="
|
||||
() => {
|
||||
@ -139,10 +144,10 @@
|
||||
<CommonItem text="打卡地点" v-show="wayIndex == 1" value="" hint="未设置"></CommonItem>
|
||||
<CommonItem text="打卡WIFI" v-show="wayIndex == 1" noLine value="" hint="未设置"></CommonItem>
|
||||
</view>
|
||||
<view @click="goOutsideRule()" v-show="wayIndex == 1" class="bg-white rounded-1.2 mt-2">
|
||||
<view @click="goOutsideRule()" v-show="wayIndex == 1" class="bg-white rounded-2.2 mt-2">
|
||||
<CommonItem text="外勤规则" noLine value="允许外勤卡" hint=""></CommonItem>
|
||||
</view>
|
||||
<view class="bg-white rounded-1.2 mt-2">
|
||||
<view class="bg-white rounded-2.2 mt-2">
|
||||
<CommonItem text="加班统计规则" noLine value="未开启" hint=""></CommonItem>
|
||||
</view>
|
||||
<view
|
||||
@ -156,7 +161,7 @@
|
||||
<script lang="ts" setup>
|
||||
import BottomPop from '@/components/BottomPop/BottomPop.vue'
|
||||
import CommonItem from '@/components/CommonItemItem/CommonItem.vue'
|
||||
const showType = ref(false)
|
||||
const showType = ref(true)
|
||||
const typeIndex = ref(0)
|
||||
const typeSelectIndex = ref(0)
|
||||
const showWay = ref(false)
|
||||
@ -208,6 +213,11 @@
|
||||
url: '/pages/attendance/attendance-add-group/attendance-staff'
|
||||
})
|
||||
}
|
||||
const goTime = () => {
|
||||
uni.navigateTo({
|
||||
url: '/pages/attendance/attendance-add-group/attendance-time'
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
@ -10,7 +10,7 @@
|
||||
<template>
|
||||
<TopNavigation title="考勤人员"></TopNavigation>
|
||||
<view class="h-[calc(100vh-60px)] p-3 box-border">
|
||||
<view class="bg-white flex flex flex-row flex-justify-center items-center rounded-1 py-1.5">
|
||||
<view class="bg-white flex flex flex-row flex-justify-center items-center rounded-2 py-1.5">
|
||||
<wd-icon name="search" class="color-gray text-3.3 ml-2"></wd-icon>
|
||||
<view class="color-gray ml-2">搜索</view>
|
||||
</view>
|
||||
|
||||
172
src/pages/attendance/attendance-add-group/attendance-time.vue
Normal file
172
src/pages/attendance/attendance-add-group/attendance-time.vue
Normal file
@ -0,0 +1,172 @@
|
||||
<route lang="json5" type="page">
|
||||
{
|
||||
layout: 'default',
|
||||
style: {
|
||||
navigationStyle: 'custom'
|
||||
}
|
||||
}
|
||||
</route>
|
||||
|
||||
<template>
|
||||
<BottomPop
|
||||
:show="showHoliday"
|
||||
title="请选择"
|
||||
:onclose="
|
||||
() => {
|
||||
showHoliday = false
|
||||
}
|
||||
"
|
||||
noSure
|
||||
>
|
||||
<template v-slot:child>
|
||||
<view class="px-4">
|
||||
<view class="bg-white rounded-2 mt-2">
|
||||
<view
|
||||
class="flex flex-row items-center p-3 box-border"
|
||||
@click="
|
||||
() => {
|
||||
holidayIndex = index
|
||||
showHoliday = false
|
||||
}
|
||||
"
|
||||
v-for="(item, index) in holidayList"
|
||||
:key="index"
|
||||
>
|
||||
<view class="flex flex-1 flex-col flex-justify-items-start">
|
||||
<view class="">{{ item.title }}</view>
|
||||
</view>
|
||||
<view v-show="holidayIndex == index">
|
||||
<wd-icon name="check" class="color-[#3372FA] mr-2"></wd-icon>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
</BottomPop>
|
||||
<view class="h-100vh flex flex-col">
|
||||
<TopNavigation title="考勤时间"></TopNavigation>
|
||||
<scroll-view scroll-y class="px-4 box-border flex-1">
|
||||
<view v-for="(item, index) in rules" :key="index">
|
||||
<view class="flex flex-justify-between items-center mx-3.5 pb-2 pt-5">
|
||||
<view class="color-gray text-3">规则{{ index + 1 }}</view>
|
||||
<view @click="rules.splice(index, 1)" v-show="rules.length > 1" class="text-3 color-red">
|
||||
删除
|
||||
</view>
|
||||
</view>
|
||||
<view class="bg-white rounded-2 p-3.5">
|
||||
<view class="must mb-2">周时间选择</view>
|
||||
<view class="flex flex-row flex-justify-between">
|
||||
<view
|
||||
@click="checkOtherRule(t, i)"
|
||||
:class="t.isSelect ? selectCss : noSelectCss"
|
||||
v-for="(t, i) in item.dayList"
|
||||
:key="i"
|
||||
>
|
||||
{{ t.name }}
|
||||
</view>
|
||||
</view>
|
||||
<view class="hpx bg-gray-100 my-3"></view>
|
||||
<view class="flex" @click="goSelectClasses">
|
||||
<view class="must flex-1">上下班时间</view>
|
||||
<view class="color-gray">{{ item.title }} {{ item.time }}</view>
|
||||
<wd-icon name="arrow-right ml-1.5 mr-0.5" class="text-gray" size="20"></wd-icon>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view
|
||||
v-show="rules.length < 7"
|
||||
@click="rules.push({ dayList: cloneDayList(), title: '', time: '' })"
|
||||
class="flex flex-justify-center items-center flex-row py-3 box-border bg-white rounded-2 mt-2"
|
||||
>
|
||||
<wd-icon name="add-circle mr-2" class="color-[#3372FA]" size="17"></wd-icon>
|
||||
<view class="color-[#3372FA]">添加规则</view>
|
||||
</view>
|
||||
<view class="flex flex-justify-between items-center mx-3.5 pb-2 pt-5 color-gray text-3">
|
||||
特殊规则
|
||||
</view>
|
||||
<view class="bg-white rounded-2">
|
||||
<CommonItem text="节假日自动排休" value="" hint="" :isNext="false">
|
||||
<template v-slot:child>
|
||||
<wd-switch v-model="isAutoRest" class="ml-a"></wd-switch>
|
||||
</template>
|
||||
</CommonItem>
|
||||
<CommonItem
|
||||
v-show="isAutoRest"
|
||||
@click="showHoliday = true"
|
||||
text="节假日计划"
|
||||
value="按中国大陆法定节假日"
|
||||
hint=""
|
||||
></CommonItem>
|
||||
<CommonItem @click="goSpecial" text="特殊日期" value="已设置" hint="" noLine></CommonItem>
|
||||
</view>
|
||||
</scroll-view>
|
||||
<view class="mt-a w-full p-3 box-border border-solid border-0 border-t-1 border-gray-200">
|
||||
<wd-button :round="false" block>保存</wd-button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import CommonItem from '@/components/CommonItemItem/CommonItem.vue'
|
||||
|
||||
const baseCss = 'rounded-100 w-8 h-8 flex items-center justify-center font-bold text-3 border'
|
||||
const selectCss = `${baseCss} bg-[#3372FA] color-white border-[#3372FA] border-solid`
|
||||
const noSelectCss = `${baseCss} border-gray border-dashed`
|
||||
const isAutoRest = ref(false)
|
||||
const showHoliday = ref(false)
|
||||
const holidayIndex = ref(0)
|
||||
const holidayList = [{ title: '按中国大陆法定节假日' }]
|
||||
const dayList = [
|
||||
{ name: '一', value: 1, isSelect: false },
|
||||
{ name: '二', value: 2, isSelect: false },
|
||||
{ name: '三', value: 3, isSelect: false },
|
||||
{ name: '四', value: 4, isSelect: false },
|
||||
{ name: '五', value: 5, isSelect: false },
|
||||
{ name: '六', value: 6, isSelect: false },
|
||||
{ name: '日', value: 7, isSelect: false }
|
||||
]
|
||||
const cloneDayList = () => {
|
||||
return dayList.map(day => ({ ...day }))
|
||||
}
|
||||
|
||||
const rules = ref([
|
||||
{
|
||||
dayList: cloneDayList(),
|
||||
title: '默认班次',
|
||||
time: '09:00-17:00'
|
||||
}
|
||||
])
|
||||
const checkOtherRule = (t, i) => {
|
||||
if (!t.isSelect) {
|
||||
rules.value.forEach(item => {
|
||||
item.dayList[i].isSelect = false
|
||||
})
|
||||
}
|
||||
t.isSelect = !t.isSelect
|
||||
}
|
||||
const goSelectClasses = () => {
|
||||
uni.navigateTo({
|
||||
url: '/pages/attendance/classes-manage?isSelect=true'
|
||||
})
|
||||
// goSelectClass
|
||||
}
|
||||
const goSpecial = () => {
|
||||
uni.navigateTo({
|
||||
url: '/pages/attendance/attendance-add-group/special-date-set'
|
||||
})
|
||||
}
|
||||
//
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.must {
|
||||
position: relative;
|
||||
&::before {
|
||||
position: absolute;
|
||||
left: -1em;
|
||||
color: red;
|
||||
content: '*';
|
||||
}
|
||||
}
|
||||
//
|
||||
</style>
|
||||
@ -10,14 +10,14 @@
|
||||
<template>
|
||||
<TopNavigation title="外勤规则"></TopNavigation>
|
||||
<view class="h-[calc(100vh-60px)] p-3 box-border">
|
||||
<view class="bg-white rounded-1.2">
|
||||
<view class="bg-white rounded-2.2">
|
||||
<CommonItem text="允许外勤打卡" noLine value="">
|
||||
<template v-slot:child>
|
||||
<wd-switch v-model="outsideRules.allow" class="ml-a" />
|
||||
</template>
|
||||
</CommonItem>
|
||||
</view>
|
||||
<view v-show="outsideRules.allow" class="bg-white rounded-1.2 mt-2">
|
||||
<view v-show="outsideRules.allow" class="bg-white rounded-2.2 mt-2">
|
||||
<CommonItem text="外勤打卡必须拍照" value="">
|
||||
<template v-slot:child>
|
||||
<wd-switch v-model="outsideRules.takePhoto" class="ml-a" />
|
||||
|
||||
@ -0,0 +1,92 @@
|
||||
<route lang="json5" type="page">
|
||||
{
|
||||
layout: 'default',
|
||||
style: {
|
||||
navigationStyle: 'custom'
|
||||
}
|
||||
}
|
||||
</route>
|
||||
|
||||
<template>
|
||||
<view class="h-100vh flex flex-col">
|
||||
<TopNavigation title="特殊日期"></TopNavigation>
|
||||
<wd-tabs v-model="tabsIndex">
|
||||
<block v-for="item in tabs" :key="item">
|
||||
<wd-tab :title="item.title"></wd-tab>
|
||||
</block>
|
||||
</wd-tabs>
|
||||
<view class="flex-1 flex flex-col p-3">
|
||||
<scroll-view scroll-y class="flex-1 box-border">
|
||||
<view class="bg-white rounded-2">
|
||||
<CommonItem
|
||||
text="添加"
|
||||
@click="
|
||||
tabsIndex == 0 ? mustDate.push(cloneBestDate()) : unMustDate.push(cloneBestDate())
|
||||
"
|
||||
>
|
||||
<template v-slot:child>
|
||||
<wd-icon name="add-circle" class="ml-a" size="18"></wd-icon>
|
||||
</template>
|
||||
</CommonItem>
|
||||
</view>
|
||||
<view
|
||||
class="mt-5"
|
||||
v-for="(item, index) in tabsIndex == 0 ? mustDate : unMustDate"
|
||||
:key="index"
|
||||
>
|
||||
<view class="flex flex-justify-between px-3 mb-2">
|
||||
<view class="color-gray text-3">{{ tabs[tabsIndex].title }}({{ index + 1 }})</view>
|
||||
<view
|
||||
@click="tabsIndex == 0 ? mustDate.splice(index, 1) : unMustDate.splice(index, 1)"
|
||||
class="color-red text-3"
|
||||
>
|
||||
删除
|
||||
</view>
|
||||
</view>
|
||||
<view class="bg-white rounded-2">
|
||||
<CommonItem text="日期" :value="item.data" :noLine="tabsIndex != 0"></CommonItem>
|
||||
<CommonItem
|
||||
v-show="tabsIndex == 0"
|
||||
text="上下班时间"
|
||||
:value="item.time"
|
||||
noLine
|
||||
></CommonItem>
|
||||
</view>
|
||||
</view>
|
||||
</scroll-view>
|
||||
</view>
|
||||
<view class="mt-a w-full p-3 box-border border-solid border-0 border-t-1 border-gray-200">
|
||||
<wd-button :round="false" block>确定</wd-button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import CommonItem from '@/components/CommonItemItem/CommonItem.vue'
|
||||
|
||||
const tabsIndex = ref(0)
|
||||
const mustDate = ref([])
|
||||
const unMustDate = ref([])
|
||||
const bestDate = [
|
||||
{
|
||||
date: '',
|
||||
time: ''
|
||||
}
|
||||
]
|
||||
const cloneBestDate = () => {
|
||||
return bestDate.map(t => ({ ...t }))
|
||||
}
|
||||
const tabs = ref([
|
||||
{
|
||||
title: '必须打卡的日期'
|
||||
},
|
||||
{
|
||||
title: '不用打卡的日期'
|
||||
}
|
||||
])
|
||||
//
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
//
|
||||
</style>
|
||||
42
src/pages/attendance/attendance-rules.vue
Normal file
42
src/pages/attendance/attendance-rules.vue
Normal file
@ -0,0 +1,42 @@
|
||||
<route lang="json5" type="page">
|
||||
{
|
||||
layout: 'default',
|
||||
style: {
|
||||
navigationStyle: 'custom'
|
||||
}
|
||||
}
|
||||
</route>
|
||||
|
||||
<template>
|
||||
<view class="h-100vh flex flex-col">
|
||||
<TopNavigation title="考勤规则"></TopNavigation>
|
||||
<view class="px-4 pt-5 text-3">
|
||||
<view class="color-gray text-3 ml-3.5 mb-2">考勤</view>
|
||||
<view class="bg-white rounded-2 p-3.5">
|
||||
<view class="font-bold text-3.5">今日考勤时间</view>
|
||||
<view class="mt-3">上班时间不固定,可自由打卡</view>
|
||||
</view>
|
||||
<view class="bg-white rounded-2 p-3.5 mt-2">
|
||||
<view class="font-bold text-3.5">打卡方式</view>
|
||||
<view class="mt-3">在设备上打卡</view>
|
||||
<view class="mt-2">手机定位打卡</view>
|
||||
<view class="inline-flex flex-row items-center bg-gray-100 rounded-2 mt-1.5 p-1.5">
|
||||
<view class="i-carbon-location-filled color-[#3372FA]"></view>
|
||||
<view class="ml-0.5 text-3">宏发科技园H1栋</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="bg-white rounded-2 p-3.5 mt-2">
|
||||
<view class="font-bold text-3.5">其他</view>
|
||||
<view class="mt-3">允许外勤打卡</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
//
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
//
|
||||
</style>
|
||||
@ -11,7 +11,7 @@
|
||||
<view class="h-100vh flex flex-col">
|
||||
<TopNavigation title="新增班次"></TopNavigation>
|
||||
<view class="flex-1 p-3 box-border">
|
||||
<view class="bg-white rounded-1.2 mt-2">
|
||||
<view class="bg-white rounded-2.2 mt-2">
|
||||
<CommonItem text="班次名称" isMust :isNext="false" value="" hint="" noLine></CommonItem>
|
||||
<view class="flex items-center px-4.3 pb-3 box-border">
|
||||
<input
|
||||
@ -36,7 +36,7 @@
|
||||
删除
|
||||
</view>
|
||||
</view>
|
||||
<view class="bg-white rounded-1.2 mt-2">
|
||||
<view class="bg-white rounded-2.2 mt-2">
|
||||
<CommonItem text="上班" value="09:00"></CommonItem>
|
||||
<CommonItem text="下班" value="17:00"></CommonItem>
|
||||
<view
|
||||
@ -49,13 +49,13 @@
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<view class="bg-white rounded-1.2 mt-2">
|
||||
<view class="bg-white rounded-2.2 mt-2">
|
||||
<CommonItem @click="goAllowedTime" text="允许打卡时间" value="" hint=""></CommonItem>
|
||||
</view>
|
||||
<view class="bg-white rounded-1.2 mt-2">
|
||||
<view class="bg-white rounded-2.2 mt-2">
|
||||
<CommonItem @click="goFlexblePunching" text="弹性打卡" value="" hint="不设置"></CommonItem>
|
||||
</view>
|
||||
<view v-show="times.length == 1" class="bg-white rounded-1.2 mt-2">
|
||||
<view v-show="times.length == 1" class="bg-white rounded-2.2 mt-2">
|
||||
<CommonItem value="" :noLine="haveRest ? false : true">
|
||||
<template v-slot:leftChild>
|
||||
<view>
|
||||
|
||||
@ -8,9 +8,9 @@
|
||||
</route>
|
||||
|
||||
<template>
|
||||
<TopNavigation title="班次管理"></TopNavigation>
|
||||
<view class="h-[calc(100vh-60px)] p-3 box-border flex flex-col">
|
||||
<view class="flex items-center bg-gray-200 p-2 rounded">
|
||||
<view class="h-100vh flex flex-col">
|
||||
<TopNavigation title="班次管理"></TopNavigation>
|
||||
<view class="flex items-center bg-gray-200 p-2 mx-3 rounded">
|
||||
<wd-icon name="search" class="text-gray mr-2"></wd-icon>
|
||||
<input
|
||||
v-model="key"
|
||||
@ -21,7 +21,7 @@
|
||||
/>
|
||||
<view v-show="key" class="i-carbon-close-filled color-gray text-4"></view>
|
||||
</view>
|
||||
<view @click="goClassesAddOrEdit(false)" class="bg-white rounded-1.2 mt-2">
|
||||
<view @click="goClassesAddOrEdit(false)" class="bg-white rounded-2.2 mt-2 mx-3">
|
||||
<CommonItem text="添加班次" noLine value="">
|
||||
<template v-slot:child>
|
||||
<wd-icon name="add-circle" class="ml-a" size="20"></wd-icon>
|
||||
@ -31,37 +31,59 @@
|
||||
<scroll-view
|
||||
ref="scrollView"
|
||||
scroll-y
|
||||
class="mt-2 flex-1"
|
||||
class="mt-2 flex-1 px-3 box-border"
|
||||
refresher-enabled
|
||||
:refresher-threshold="45"
|
||||
@refresherrefresh="onRefresh()"
|
||||
:refresher-triggered="scrollViewStatus"
|
||||
>
|
||||
<view class="bg-white rounded-1.2">
|
||||
<view class="bg-white rounded-2.2">
|
||||
<CommonItem
|
||||
@click="goClassesAddOrEdit(true)"
|
||||
@click="selectIndex = index"
|
||||
v-for="(item, index) in classList"
|
||||
:key="index"
|
||||
value=""
|
||||
>
|
||||
<template v-slot:leftChild>
|
||||
<view>
|
||||
<view>{{ item.name }}</view>
|
||||
<view class="color-gray mt-1">{{ item.time }}</view>
|
||||
<view class="flex items-center">
|
||||
<view
|
||||
v-if="isSelect"
|
||||
:class="
|
||||
selectIndex == index
|
||||
? 'i-carbon-checkmark-filled color-[#3372FA]'
|
||||
: 'i-carbon-circle-outline color-gray'
|
||||
"
|
||||
class="text-5 mr-3"
|
||||
></view>
|
||||
<view>
|
||||
<view>{{ item.name }}</view>
|
||||
<view class="color-gray mt-1">{{ item.time }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
<template v-slot:child>
|
||||
<view class="ml-a i-bytesize-compose color-gray"></view>
|
||||
<view
|
||||
@click="goClassesAddOrEdit(true)"
|
||||
class="ml-a i-bytesize-compose color-gray"
|
||||
></view>
|
||||
</template>
|
||||
</CommonItem>
|
||||
</view>
|
||||
<view class="ml-3 mt-1 text-3 color-gray">添加班次后,请至考勤组中选择和使用</view>
|
||||
</scroll-view>
|
||||
<view
|
||||
v-if="isSelect"
|
||||
class="mt-a w-full p-3 box-border border-solid border-0 border-t-1 border-gray-200"
|
||||
>
|
||||
<wd-button :round="false" block>确定</wd-button>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import CommonItem from '@/components/CommonItemItem/CommonItem.vue'
|
||||
const selectIndex = ref(-1)
|
||||
const isSelect = ref(false)
|
||||
const scrollViewStatus = ref(true)
|
||||
const key = ref('')
|
||||
const onRefresh = () => {
|
||||
@ -71,6 +93,9 @@
|
||||
scrollViewStatus.value = false
|
||||
}, 2000)
|
||||
}
|
||||
onLoad(options => {
|
||||
isSelect.value = options.isSelect ?? false
|
||||
})
|
||||
const goClassesAddOrEdit = (isEdit: boolean) => {
|
||||
uni.navigateTo({
|
||||
url: '/pages/attendance/classes-add-edit?isEdit=' + isEdit
|
||||
|
||||
@ -9,7 +9,7 @@
|
||||
|
||||
<template>
|
||||
<TopNavigation title="弹性打卡"></TopNavigation>
|
||||
<view class="bg-white rounded-1.2 mt-2">
|
||||
<view class="bg-white rounded-2.2 mt-2">
|
||||
<CommonItem
|
||||
@click="selectIndex = index"
|
||||
v-for="(item, index) in setList"
|
||||
@ -30,7 +30,7 @@
|
||||
</template>
|
||||
</CommonItem>
|
||||
</view>
|
||||
<view class="bg-white rounded-1.2 mt-1.5">
|
||||
<view class="bg-white rounded-2.2 mt-1.5">
|
||||
<CommonItem v-show="selectIndex == 1" text="" value="10分钟" hint="">
|
||||
<template v-slot:leftChild>
|
||||
<view>
|
||||
|
||||
@ -22,13 +22,13 @@
|
||||
v-for="(item, index) in tagList"
|
||||
:key="index"
|
||||
:class="tagIndex === index ? 'color-[#3372FA]' : ''"
|
||||
class="bg-white px-3 py-1.5 rounded-10 color-gray text-3 ml-3"
|
||||
class="bg-white px-3 py-1.5 rounded-20 color-gray text-3 ml-3"
|
||||
>
|
||||
{{ item.name }}
|
||||
</view>
|
||||
</view>
|
||||
<scroll-view scroll-y class="flex-1 p-3 box-border">
|
||||
<view v-for="(item, index) in detailList" :key="index" class="bg-white rounded-1 p-3 mb-2">
|
||||
<view v-for="(item, index) in detailList" :key="index" class="bg-white rounded-2 p-3 mb-2">
|
||||
<view class="flex flex-row flex-justify-between">
|
||||
<view>
|
||||
<view>{{ item.name }}</view>
|
||||
|
||||
@ -18,7 +18,7 @@
|
||||
@click="goDetail"
|
||||
v-for="(item, index) in recordList"
|
||||
:key="index"
|
||||
class="bg-white rounded-1 p-3 mb-2"
|
||||
class="bg-white rounded-2 p-3 mb-2"
|
||||
>
|
||||
<view class="flex flex-row flex-justify-between items-center">
|
||||
<view class="flex flex-col">
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user