Merge branch 'dev-sy' into dev

This commit is contained in:
BianLzhaoMin 2025-02-13 16:10:51 +08:00
commit eced3e2917
1 changed files with 344 additions and 197 deletions

View File

@ -1,6 +1,13 @@
<template> <template>
<div class="app-container" id="attSetting"> <div class="app-container" id="attSetting">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px"> <el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
label-width="68px"
>
<el-form-item label="名称" prop="groupName"> <el-form-item label="名称" prop="groupName">
<el-input <el-input
v-model="queryParams.groupName" v-model="queryParams.groupName"
@ -20,8 +27,16 @@
/> />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> <el-button
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery"
>重置</el-button
>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -34,7 +49,7 @@
size="mini" size="mini"
@click="handleAdd" @click="handleAdd"
v-hasPermi="['att:group:add']" v-hasPermi="['att:group:add']"
>新增 >新增
</el-button> </el-button>
</el-col> </el-col>
@ -45,36 +60,59 @@
icon="el-icon-download" icon="el-icon-download"
size="mini" size="mini"
@click="handleExport" @click="handleExport"
>导出
>导出
</el-button> </el-button>
</el-col> </el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row> </el-row>
<el-table v-loading="loading" :data="userList" @selection-change="handleSelectionChange"> <el-table
v-loading="loading"
:data="userList"
@selection-change="handleSelectionChange"
>
<!-- <el-table-column type="selection" width="55" align="center" /> --> <!-- <el-table-column type="selection" width="55" align="center" /> -->
<el-table-column label="序号" align="center" width="80" type="index"> <el-table-column label="序号" align="center" width="80" type="index">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ (queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1 }}</span> <span>{{
(queryParams.pageNum - 1) * queryParams.pageSize + scope.$index + 1
}}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="名称" align="center" prop="groupName"/> <el-table-column label="名称" align="center" prop="groupName" />
<el-table-column label="考勤时间" align="center" prop="attDay" :show-overflow-tooltip="true"> <el-table-column
label="考勤时间"
align="center"
prop="attDay"
:show-overflow-tooltip="true"
>
<template slot-scope="scope"> <template slot-scope="scope">
<span>每周</span> <span>每周</span>
<span v-if="scope.row.attDay.split(',')[0]==1"></span> <span v-if="scope.row.attDay.split(',')[0] == 1"></span>
<span v-if="scope.row.attDay.split(',')[1]==1"></span> <span v-if="scope.row.attDay.split(',')[1] == 1"></span>
<span v-if="scope.row.attDay.split(',')[2]==1"></span> <span v-if="scope.row.attDay.split(',')[2] == 1"></span>
<span v-if="scope.row.attDay.split(',')[3]==1"></span> <span v-if="scope.row.attDay.split(',')[3] == 1"></span>
<span v-if="scope.row.attDay.split(',')[4]==1"></span> <span v-if="scope.row.attDay.split(',')[4] == 1"></span>
<span v-if="scope.row.attDay.split(',')[5]==1"></span> <span v-if="scope.row.attDay.split(',')[5] == 1"></span>
<span v-if="scope.row.attDay.split(',')[6]==1"></span> <span v-if="scope.row.attDay.split(',')[6] == 1"></span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="上班时间" align="center" prop="toWorkTime" :show-overflow-tooltip="true"/> <el-table-column
<el-table-column label="下班时间" align="center" prop="offWorkTime" :show-overflow-tooltip="true"/> label="上班时间"
align="center"
prop="toWorkTime"
:show-overflow-tooltip="true"
/>
<el-table-column
label="下班时间"
align="center"
prop="offWorkTime"
:show-overflow-tooltip="true"
/>
<!-- <el-table-column label="创建时间" align="center" prop="createTime" width="180"> <!-- <el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template slot-scope="scope"> <template slot-scope="scope">
<span>{{ parseTime(scope.row.createTime) }}</span> <span>{{ parseTime(scope.row.createTime) }}</span>
@ -87,21 +125,21 @@
type="primary" type="primary"
v-hasPermi="['att:group:edit']" v-hasPermi="['att:group:edit']"
@click="handleUpdate(scope.row)" @click="handleUpdate(scope.row)"
>编辑 >编辑
</el-button> </el-button>
<el-button <el-button
size="mini" size="mini"
type="danger" type="danger"
v-hasPermi="['att:group:remove']" v-hasPermi="['att:group:remove']"
@click="handleDelete(scope.row)" @click="handleDelete(scope.row)"
>删除 >删除
</el-button> </el-button>
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<pagination <pagination
v-show="total>0" v-show="total > 0"
:total="total" :total="total"
:page.sync="queryParams.pageNum" :page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize" :limit.sync="queryParams.pageSize"
@ -110,17 +148,28 @@
<!-- 添加或修改参数配置对话框 --> <!-- 添加或修改参数配置对话框 -->
<el-dialog :title="title" :visible.sync="open" width="900px" append-to-body> <el-dialog :title="title" :visible.sync="open" width="900px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="130px"> <el-form ref="form" :model="form" :rules="rules" label-width="150px">
<el-row> <el-row>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="考勤组名称:" prop="groupName"> <el-form-item label="考勤组名称:" prop="groupName">
<el-input v-model="form.groupName" placeholder="请输入考勤组名称" maxlength="30"/> <el-input
v-model="form.groupName"
placeholder="请输入考勤组名称"
maxlength="30"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="参与考勤人员:" prop="checkList"> <el-form-item label="参与考勤人员:" prop="checkList">
<treeselect v-model="form.checkList" :multiple="true" :flat="false" :options="personOptions" <treeselect
:normalizer="normalizer" placeholder="选择部门和人员" @input="handleSelect"/> v-model="form.checkList"
:multiple="true"
:flat="false"
:options="personOptions"
:normalizer="normalizer"
placeholder="选择部门和人员"
@input="handleSelect"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -132,25 +181,38 @@
v-for="dict in typeList" v-for="dict in typeList"
:key="dict.value" :key="dict.value"
:label="dict.value" :label="dict.value"
>{{ dict.label }} >{{ dict.label }}
</el-radio> </el-radio>
</el-radio-group> </el-radio-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row>
<el-col :span="24">
<el-form-item label="是否有法定节假日:" prop="attType">
<el-radio-group>
<el-radio label="是"> </el-radio>
<el-radio label="否"> </el-radio>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
<el-row> <el-row>
<el-col :span="24"> <el-col :span="24">
<el-form-item label="考勤时间:" prop="attDays"> <el-form-item label="考勤时间:" prop="attDays">
<el-checkbox-group v-model="form.attDays"> <el-checkbox-group v-model="form.attDays">
<el-checkbox v-for="item in attDayList" :key="item.id" <el-checkbox
:label="item.id">{{ item.label }} v-for="item in attDayList"
:key="item.id"
:label="item.id"
>{{ item.label }}
</el-checkbox> </el-checkbox>
</el-checkbox-group> </el-checkbox-group>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row v-if="form.attType==1"> <el-row v-if="form.attType == 1">
<el-col :span="12"> <el-col :span="12">
<!-- <el-form-item label="上班时间:" prop="toWorkTime">--> <!-- <el-form-item label="上班时间:" prop="toWorkTime">-->
<!-- <el-time-select--> <!-- <el-time-select-->
@ -168,10 +230,10 @@
<el-time-picker <el-time-picker
v-model="form.toWorkTime" v-model="form.toWorkTime"
format="HH:mm:ss" format="HH:mm:ss"
placeholder="选择时间"> placeholder="选择时间"
>
</el-time-picker> </el-time-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<!-- <el-form-item label="下班时间:" prop="offWorkTime"> <!-- <el-form-item label="下班时间:" prop="offWorkTime">
@ -189,13 +251,14 @@
<el-time-picker <el-time-picker
v-model="form.offWorkTime" v-model="form.offWorkTime"
format="HH:mm:ss" format="HH:mm:ss"
placeholder="选择时间"> placeholder="选择时间"
>
</el-time-picker> </el-time-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row v-if="form.attType==1"> <el-row v-if="form.attType == 1">
<el-col :span="12"> <el-col :span="12">
<!-- <el-form-item label="休息开始时间:" prop="breakStartTime"> <!-- <el-form-item label="休息开始时间:" prop="breakStartTime">
<el-time-select <el-time-select
@ -212,7 +275,8 @@
<el-time-picker <el-time-picker
v-model="form.breakStartTime" v-model="form.breakStartTime"
format="HH:mm:ss" format="HH:mm:ss"
placeholder="选择时间"> placeholder="选择时间"
>
</el-time-picker> </el-time-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -232,95 +296,140 @@
<el-time-picker <el-time-picker
v-model="form.breakEndTime" v-model="form.breakEndTime"
format="HH:mm:ss" format="HH:mm:ss"
placeholder="选择时间"> placeholder="选择时间"
>
</el-time-picker> </el-time-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row v-if="form.attType==1"> <el-row v-if="form.attType == 1">
<el-col :span="10"> <el-col :span="12">
<el-form-item label="迟到、早退设置:" prop="lateMinute"> <el-form-item label="迟到、早退设置:" prop="lateMinute">
迟到 迟到
<el-input v-model.number="form.lateMinute" maxlength="4" style="width: 100px;"/> <el-input
v-model.number="form.lateMinute"
maxlength="4"
style="width: 100px"
/>
分钟不计迟到, 分钟不计迟到,
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="12">
<el-form-item label="" label-width="0" prop="leaveMinute"> <el-form-item label="" label-width="0" prop="leaveMinute">
早退 早退
<el-input v-model.number="form.leaveMinute" maxlength="4" style="width: 100px;"/> <el-input
v-model.number="form.leaveMinute"
maxlength="4"
style="width: 100px"
/>
分钟不计早退 分钟不计早退
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row v-if="form.attType==1"> <el-row v-if="form.attType == 1">
<el-col :span="10"> <el-col :span="12">
<el-form-item label="旷工设置:" prop="absenteeismLateMinute"> <el-form-item label="旷工设置:" prop="absenteeismLateMinute">
迟到 迟到
<el-input v-model.number="form.absenteeismLateMinute" maxlength="4" style="width: 100px;"/> <el-input
v-model.number="form.absenteeismLateMinute"
maxlength="4"
style="width: 100px"
/>
分钟即为旷工, 分钟即为旷工,
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="12">
<el-form-item label="" label-width="0" prop="absenteeismLeaveMinute"> <el-form-item
label=""
label-width="0"
prop="absenteeismLeaveMinute"
>
早退 早退
<el-input v-model.number="form.absenteeismLeaveMinute" maxlength="4" style="width: 100px;"/> <el-input
v-model.number="form.absenteeismLeaveMinute"
maxlength="4"
style="width: 100px"
/>
分钟即为旷工 分钟即为旷工
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row v-if="form.attType==1"> <el-row v-if="form.attType == 1">
<el-col :span="24"> <el-col :span="24">
<el-form-item label="出入异常设置:" prop="entryAbnormalMinute"> <el-form-item label="出入异常设置:" prop="entryAbnormalMinute">
<el-input v-model.number="form.entryAbnormalMinute" maxlength="4" style="width: 100px;"/> <el-input
v-model.number="form.entryAbnormalMinute"
maxlength="4"
style="width: 100px"
/>
分钟内连续打卡进出即为出入异常 分钟内连续打卡进出即为出入异常
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row v-if="form.attType==2"> <el-row v-if="form.attType == 2">
<el-col :span="8"> <el-col :span="8">
<el-form-item label="每天打卡:" prop="todayClockNum"> <el-form-item label="每天打卡:" prop="todayClockNum">
<el-input v-model.number="form.todayClockNum" maxlength="1" style="width: 100px;" @input="clockNum"/> <el-input
v-model.number="form.todayClockNum"
maxlength="1"
style="width: 100px"
@input="clockNum"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="应出勤时长:" prop="attendanceDuration"> <el-form-item label="应出勤时长:" prop="attendanceDuration">
<el-input v-model.number="form.attendanceDuration" maxlength="4" style="width: 100px;"/> <el-input
v-model.number="form.attendanceDuration"
maxlength="4"
style="width: 100px"
/>
分钟 分钟
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<el-form-item label="打卡范围:" prop="attRange"> <el-form-item label="打卡范围:" prop="attRange">
<el-input v-model.number="form.attRange" maxlength="4" style="width: 100px;"/> <el-input
v-model.number="form.attRange"
maxlength="4"
style="width: 100px"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row v-if="form.todayClockNum==2"> <el-row v-if="form.todayClockNum == 2">
<el-col :span="24"> <el-col :span="24">
<el-form-item label="实际出勤不满足:" prop="absenteeismLateMinute"> <el-form-item label="实际出勤不满足:" prop="absenteeismLateMinute">
<el-input v-model.number="form.absenteeismLateMinute" maxlength="4" style="width: 100px;"/> <el-input
v-model.number="form.absenteeismLateMinute"
maxlength="4"
style="width: 100px"
/>
分钟记录为早退 <span>早退时长=应出勤时长-实际出勤时长</span> 分钟记录为早退 <span>早退时长=应出勤时长-实际出勤时长</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row v-if="form.todayClockNum==2"> <el-row v-if="form.todayClockNum == 2">
<el-col :span="24"> <el-col :span="24">
<el-form-item label="实际出勤不满足:" prop="absenteeismLeaveMinute"> <el-form-item label="实际出勤不满足:" prop="absenteeismLeaveMinute">
<el-input v-model.number="form.absenteeismLeaveMinute" maxlength="4" style="width: 100px;"/> <el-input
v-model.number="form.absenteeismLeaveMinute"
maxlength="4"
style="width: 100px"
/>
分钟记录为旷工 <span>旷工时长=应出勤时长-实际出勤时长</span> 分钟记录为旷工 <span>旷工时长=应出勤时长-实际出勤时长</span>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button> <el-button type="primary" @click="submitForm"> </el-button>
@ -331,14 +440,21 @@
</template> </template>
<script> <script>
import {listAttGroup, getAttGroup, delAttGroup, addAttGroup, updateAttGroup, selectOrgList} from "@/api/setting/rules"; import {
listAttGroup,
getAttGroup,
delAttGroup,
addAttGroup,
updateAttGroup,
selectOrgList,
} from "@/api/setting/rules";
import Treeselect from "@riophae/vue-treeselect"; import Treeselect from "@riophae/vue-treeselect";
import "@riophae/vue-treeselect/dist/vue-treeselect.css"; import "@riophae/vue-treeselect/dist/vue-treeselect.css";
export default { export default {
name: "AttSetting", name: "AttSetting",
dicts: ['sys_normal_disable'], dicts: ["sys_normal_disable"],
components: {Treeselect}, components: { Treeselect },
data() { data() {
return { return {
// //
@ -366,111 +482,127 @@ export default {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 10,
groupName: undefined, groupName: undefined,
orgName: undefined orgName: undefined,
}, },
allCheckList: [], allCheckList: [],
personOptions: [], personOptions: [],
typeList: [{value: '1', label: '固定班制'}, {value: '2', label: '自由工时'}], typeList: [
attDayList: [{id: 0, label: '周一'}, {id: 1, label: '周二'}, {id: 2, label: '周三'}, { { value: "1", label: "固定班制" },
id: 3, { value: "2", label: "自由工时" },
label: '周四' ],
}, {id: 4, label: '周五'}, {id: 5, label: '周六'}, {id: 6, label: '周日'}], attDayList: [
{ id: 0, label: "周一" },
{ id: 1, label: "周二" },
{ id: 2, label: "周三" },
{
id: 3,
label: "周四",
},
{ id: 4, label: "周五" },
{ id: 5, label: "周六" },
{ id: 6, label: "周日" },
],
// //
form: {}, form: {},
// //
rules: { rules: {
groupName: [ groupName: [
{required: true, message: "名称不能为空", trigger: "blur"} { required: true, message: "名称不能为空", trigger: "blur" },
], ],
attDays: [ attDays: [
{required: true, message: "考勤时间不能为空", trigger: "blur"} { required: true, message: "考勤时间不能为空", trigger: "blur" },
], ],
checkList: [ checkList: [
{required: true, message: "考勤人员不能为空", trigger: "change"} { required: true, message: "考勤人员不能为空", trigger: "change" },
], ],
toWorkTime: [ toWorkTime: [
{required: true, message: "上班时间不能为空", trigger: "blur"} { required: true, message: "上班时间不能为空", trigger: "blur" },
], ],
offWorkTime: [ offWorkTime: [
{required: true, message: "下班时间不能为空", trigger: "blur"} { required: true, message: "下班时间不能为空", trigger: "blur" },
], ],
breakStartTime: [ breakStartTime: [
{required: true, message: "休息开始时间不能为空", trigger: "blur"} { required: true, message: "休息开始时间不能为空", trigger: "blur" },
], ],
breakEndTime: [ breakEndTime: [
{required: true, message: "休息结束时间不能为空", trigger: "blur"} { required: true, message: "休息结束时间不能为空", trigger: "blur" },
], ],
lateMinute: [ lateMinute: [
{required: true, message: "时间不能为空", trigger: "blur"}, { required: true, message: "时间不能为空", trigger: "blur" },
{type: 'number', message: '必须为数字值', trigger: 'change'}, { type: "number", message: "必须为数字值", trigger: "change" },
], ],
leaveMinute: [ leaveMinute: [
{required: true, message: "时间不能为空", trigger: "blur"}, { required: true, message: "时间不能为空", trigger: "blur" },
{type: 'number', message: '必须为数字值', trigger: 'change'}, { type: "number", message: "必须为数字值", trigger: "change" },
], ],
absenteeismLateMinute: [ absenteeismLateMinute: [
{required: true, message: "时间不能为空", trigger: "blur"}, { required: true, message: "时间不能为空", trigger: "blur" },
{type: 'number', message: '必须为数字值', trigger: 'change'}, { type: "number", message: "必须为数字值", trigger: "change" },
], ],
absenteeismLeaveMinute: [ absenteeismLeaveMinute: [
{required: true, message: "时间不能为空", trigger: "blur"}, { required: true, message: "时间不能为空", trigger: "blur" },
{type: 'number', message: '必须为数字值', trigger: 'change'}, { type: "number", message: "必须为数字值", trigger: "change" },
], ],
entryAbnormalMinute: [ entryAbnormalMinute: [
{required: true, message: "出入异常时间不能为空", trigger: "blur"}, { required: true, message: "出入异常时间不能为空", trigger: "blur" },
{type: 'number', message: '必须为数字值', trigger: 'change'}, { type: "number", message: "必须为数字值", trigger: "change" },
], ],
todayClockNum: [ todayClockNum: [
{required: true, message: "每天打卡次数不能为空", trigger: "change"}, {
required: true,
message: "每天打卡次数不能为空",
trigger: "change",
},
{ {
pattern: /^[1|2]\d{0}$/, pattern: /^[1|2]\d{0}$/,
message: "每天打卡次数必须为 1 或 2", message: "每天打卡次数必须为 1 或 2",
trigger: "change" trigger: "change",
} },
], ],
attendanceDuration: [ attendanceDuration: [
{required: true, message: "应出勤时长不能为空", trigger: "blur"}, { required: true, message: "应出勤时长不能为空", trigger: "blur" },
{type: 'number', message: '必须为数字值', trigger: 'change'}, { type: "number", message: "必须为数字值", trigger: "change" },
], ],
attRange: [ attRange: [
{required: true, message: "打卡范围不能为空", trigger: "blur"}, { required: true, message: "打卡范围不能为空", trigger: "blur" },
{type: 'number', message: '必须为数字值', trigger: 'change'}, { type: "number", message: "必须为数字值", trigger: "change" },
] ],
} },
}; };
}, },
created() { created() {
this.getList(); this.getList();
}, },
methods: { methods: {
selectOrgList() { selectOrgList() {
selectOrgList().then(res => { selectOrgList().then((res) => {
console.log(res) console.log(res);
this.personOptions = this.changeData(res.data); this.personOptions = this.changeData(res.data);
// // this.personOptions = this.handleTree(response.data, "id"); // // this.personOptions = this.handleTree(response.data, "id");
// console.log(this.personOptions) // console.log(this.personOptions)
} });
);
}, },
// //
changeData(data) { // changeData(data) {
data.map(item => { //
data.map((item) => {
if (item.disabled) { if (item.disabled) {
if (item.isChecked) { if (item.isChecked) {
item.isDisabled = false item.isDisabled = false;
} else { } else {
item.isDisabled = true item.isDisabled = true;
} }
} else if (!item.disabled) { } else if (!item.disabled) {
item.isDisabled = false item.isDisabled = false;
} }
item.children && item.children.length > 0 && this.changeData(item.children); item.children &&
}) item.children.length > 0 &&
this.changeData(item.children);
});
return data; return data;
}, },
handleSelect(value, instanceId) { handleSelect(value, instanceId) {
console.log('Selected:', value); console.log("Selected:", value);
}, },
/** 转换部门数据结构 */ /** 转换部门数据结构 */
@ -482,16 +614,16 @@ export default {
id: node.id, id: node.id,
label: node.name, label: node.name,
// isDisabled: node.disabled, // isDisabled: node.disabled,
children: node.children children: node.children,
}; };
}, },
changeRadio(v) { changeRadio(v) {
// el-radio aria-hidden // el-radio aria-hidden
this.$nextTick(() => { this.$nextTick(() => {
const radios = this.$el.querySelectorAll('.el-radio__original'); const radios = this.$el.querySelectorAll(".el-radio__original");
radios.forEach(radio => radio.removeAttribute('aria-hidden')); radios.forEach((radio) => radio.removeAttribute("aria-hidden"));
}); });
console.log(v) console.log(v);
if (v == 1) { if (v == 1) {
this.form.attDays = [0, 1, 2, 3, 4]; this.form.attDays = [0, 1, 2, 3, 4];
this.form.toWorkTime = this.setData("08:33:00"); this.form.toWorkTime = this.setData("08:33:00");
@ -499,26 +631,24 @@ export default {
this.form.breakStartTime = this.setData("12:00:00"); this.form.breakStartTime = this.setData("12:00:00");
this.form.breakEndTime = this.setData("14:00:00"); this.form.breakEndTime = this.setData("14:00:00");
this.form.lateMinute = undefined;// this.form.lateMinute = undefined; //
this.form.leaveMinute = undefined;//退 this.form.leaveMinute = undefined; //退
this.form.todayClockNum = undefined; this.form.todayClockNum = undefined;
this.form.absenteeismLateMinute = undefined;// this.form.absenteeismLateMinute = undefined; //
this.form.absenteeismLeaveMinute = undefined;//退 this.form.absenteeismLeaveMinute = undefined; //退
this.form.entryAbnormalMinute = undefined;// this.form.entryAbnormalMinute = undefined; //
} }
if (v == 2) { if (v == 2) {
this.form.attDays = [0, 1, 2, 3, 4, 5, 6]; this.form.attDays = [0, 1, 2, 3, 4, 5, 6];
this.form.todayClockNum = 1; this.form.todayClockNum = 1;
this.form.attendanceDuration = 360; this.form.attendanceDuration = 360;
this.form.attRange = 300; this.form.attRange = 300;
this.form.absenteeismLateMinute = undefined;// this.form.absenteeismLateMinute = undefined; //
this.form.absenteeismLeaveMinute = undefined;//退 this.form.absenteeismLeaveMinute = undefined; //退
} }
}, },
clockNum(v) { clockNum(v) {
if (v == 1) { if (v == 1) {
} }
if (v == 2) { if (v == 2) {
} }
@ -526,12 +656,11 @@ export default {
/** 查询列表 */ /** 查询列表 */
getList() { getList() {
this.loading = true; this.loading = true;
listAttGroup(this.queryParams).then(response => { listAttGroup(this.queryParams).then((response) => {
this.userList = response.rows; this.userList = response.rows;
this.total = response.total; this.total = response.total;
this.loading = false; this.loading = false;
} });
);
}, },
// //
cancel() { cancel() {
@ -550,15 +679,14 @@ export default {
offWorkTime: this.setData("17:30:00"), offWorkTime: this.setData("17:30:00"),
breakStartTime: this.setData("12:00:00"), breakStartTime: this.setData("12:00:00"),
breakEndTime: this.setData("14:00:00"), breakEndTime: this.setData("14:00:00"),
lateMinute: undefined,// lateMinute: undefined, //
leaveMinute: undefined,//退 leaveMinute: undefined, //退
absenteeismLateMinute: undefined,// absenteeismLateMinute: undefined, //
absenteeismLeaveMinute: undefined,//退 absenteeismLeaveMinute: undefined, //退
entryAbnormalMinute: undefined,// entryAbnormalMinute: undefined, //
todayClockNum: undefined, todayClockNum: undefined,
attendanceDuration: undefined, attendanceDuration: undefined,
attRange: undefined, attRange: undefined,
}; };
this.resetForm("form"); this.resetForm("form");
}, },
@ -567,11 +695,11 @@ export default {
setData(time) { setData(time) {
const backendTimeStr = time; // const backendTimeStr = time; //
// //
const [hours, minutes, seconds] = backendTimeStr.split(':').map(Number); const [hours, minutes, seconds] = backendTimeStr.split(":").map(Number);
// Date // Date
const defaultTime = new Date(); const defaultTime = new Date();
defaultTime.setHours(hours, minutes, seconds); defaultTime.setHours(hours, minutes, seconds);
return defaultTime return defaultTime;
}, },
/** 搜索按钮操作 */ /** 搜索按钮操作 */
handleQuery() { handleQuery() {
@ -593,108 +721,125 @@ export default {
}, },
// //
handleSelectionChange(selection) { handleSelectionChange(selection) {
this.ids = selection.map(item => item.groupId) this.ids = selection.map((item) => item.groupId);
this.single = selection.length != 1 this.single = selection.length != 1;
this.multiple = !selection.length this.multiple = !selection.length;
}, },
/** 修改按钮操作 */ /** 修改按钮操作 */
handleUpdate(row) { handleUpdate(row) {
// this.reset(); // this.reset();
const groupId = row.groupId const groupId = row.groupId;
getAttGroup(groupId).then(response => { getAttGroup(groupId).then((response) => {
this.form = response.data; this.form = response.data;
if(this.form.toWorkTime != "" && this.form.toWorkTime != null){ if (this.form.toWorkTime != "" && this.form.toWorkTime != null) {
this.form.toWorkTime = this.setData(this.form.toWorkTime); this.form.toWorkTime = this.setData(this.form.toWorkTime);
} }
if(this.form.offWorkTime != "" && this.form.offWorkTime != null){ if (this.form.offWorkTime != "" && this.form.offWorkTime != null) {
this.form.offWorkTime = this.setData(this.form.offWorkTime); this.form.offWorkTime = this.setData(this.form.offWorkTime);
} }
if (this.form.breakStartTime != "" && this.form.breakStartTime != null) { if (
this.form.breakStartTime != "" &&
this.form.breakStartTime != null
) {
this.form.breakStartTime = this.setData(this.form.breakStartTime); this.form.breakStartTime = this.setData(this.form.breakStartTime);
} }
if (this.form.breakEndTime != "" && this.form.breakEndTime != null) { if (this.form.breakEndTime != "" && this.form.breakEndTime != null) {
this.form.breakEndTime = this.setData(this.form.breakEndTime); this.form.breakEndTime = this.setData(this.form.breakEndTime);
} }
let arr = [] let arr = [];
this.form.attDay.split(",").forEach((item, index) => { this.form.attDay.split(",").forEach((item, index) => {
if (item == '1') { if (item == "1") {
arr.push(index) arr.push(index);
} }
}) });
this.$set(this.form, "attDays", arr) this.$set(this.form, "attDays", arr);
this.personOptions = this.changeData(this.form.treeList); this.personOptions = this.changeData(this.form.treeList);
this.form.checkList = [] this.form.checkList = [];
this.setCheck(this.form.treeList) this.setCheck(this.form.treeList);
// console.log(this.form) // console.log(this.form)
this.open = true; this.open = true;
this.title = "编辑"; this.title = "编辑";
}); });
}, },
setCheck(data) { // setCheck(data) {
data.map(item => { //
data.map((item) => {
if (item.isChecked) { if (item.isChecked) {
this.form.checkList.push(item.id) this.form.checkList.push(item.id);
} }
item.children && item.children.length > 0 && this.setCheck(item.children); item.children &&
}) item.children.length > 0 &&
this.setCheck(item.children);
});
}, },
/** 提交按钮 */ /** 提交按钮 */
submitForm: function () { submitForm: function () {
console.log(this.form) console.log(this.form);
this.$refs["form"].validate(valid => { this.$refs["form"].validate((valid) => {
if (valid) { if (valid) {
let arr = [0, 0, 0, 0, 0, 0, 0] let arr = [0, 0, 0, 0, 0, 0, 0];
this.form.attDays.forEach(item => { this.form.attDays.forEach((item) => {
arr[item] = 1 arr[item] = 1;
}) });
this.form.attDay = arr.join(",") this.form.attDay = arr.join(",");
let arr2 = [] let arr2 = [];
this.form.checkList.forEach(item => { this.form.checkList.forEach((item) => {
if (item.indexOf("|") > -1) { if (item.indexOf("|") > -1) {
let obj = { let obj = {
orgId: item.split('|')[1], orgId: item.split("|")[1],
userId: item.split('|')[0] userId: item.split("|")[0],
} };
arr2.push(obj) arr2.push(obj);
} else { } else {
let obj = { let obj = {
orgId: item, orgId: item,
userId: "" userId: "",
} };
arr2.push(obj) arr2.push(obj);
} }
}) });
this.form.checkOrgList = arr2; this.form.checkOrgList = arr2;
console.log(this.form) console.log(this.form);
if(this.form.toWorkTime!="" && this.form.toWorkTime !=null){ if (this.form.toWorkTime != "" && this.form.toWorkTime != null) {
this.form.toWorkTime = this.form.toWorkTime.toTimeString().substring(0, 8); this.form.toWorkTime = this.form.toWorkTime
.toTimeString()
.substring(0, 8);
} }
if(this.form.offWorkTime!="" && this.form.offWorkTime !=null){ if (this.form.offWorkTime != "" && this.form.offWorkTime != null) {
this.form.offWorkTime = this.form.offWorkTime.toTimeString().substring(0, 8); this.form.offWorkTime = this.form.offWorkTime
.toTimeString()
.substring(0, 8);
} }
if(this.form.breakStartTime!="" && this.form.breakStartTime !=null){ if (
this.form.breakStartTime = this.form.breakStartTime.toTimeString().substring(0, 8); this.form.breakStartTime != "" &&
this.form.breakStartTime != null
) {
this.form.breakStartTime = this.form.breakStartTime
.toTimeString()
.substring(0, 8);
} }
if(this.form.breakEndTime!="" && this.form.breakEndTime !=null){ if (this.form.breakEndTime != "" && this.form.breakEndTime != null) {
this.form.breakEndTime = this.form.breakEndTime.toTimeString().substring(0, 8); this.form.breakEndTime = this.form.breakEndTime
.toTimeString()
.substring(0, 8);
} }
if (this.form.groupId != undefined) { if (this.form.groupId != undefined) {
this.form.checkOrgList.forEach(item => { this.form.checkOrgList.forEach((item) => {
item.groupId = this.form.groupId item.groupId = this.form.groupId;
}) });
updateAttGroup(this.form).then(response => { updateAttGroup(this.form).then((response) => {
this.$modal.msgSuccess("修改成功"); this.$modal.msgSuccess("修改成功");
this.open = false; this.open = false;
this.getList(); this.getList();
}); });
} else { } else {
addAttGroup(this.form).then(response => { addAttGroup(this.form).then((response) => {
this.$modal.msgSuccess("新增成功"); this.$modal.msgSuccess("新增成功");
this.open = false; this.open = false;
this.getList(); this.getList();
@ -706,13 +851,16 @@ export default {
/** 删除按钮操作 */ /** 删除按钮操作 */
handleDelete(row) { handleDelete(row) {
const groupIds = row.groupId || this.ids; const groupIds = row.groupId || this.ids;
this.$modal.confirm('是否确认删除该数据项?').then(function () { this.$modal
return delAttGroup(groupIds); .confirm("是否确认删除该数据项?")
}).then(() => { .then(function () {
this.getList(); return delAttGroup(groupIds);
this.$modal.msgSuccess("删除成功"); })
}).catch(() => { .then(() => {
}); this.getList();
this.$modal.msgSuccess("删除成功");
})
.catch(() => {});
}, },
/** 导出按钮操作 */ /** 导出按钮操作 */
handleExport() { handleExport() {
@ -720,8 +868,7 @@ export default {
// ...this.queryParams // ...this.queryParams
// }, `type_${new Date().getTime()}.xlsx`) // }, `type_${new Date().getTime()}.xlsx`)
}, },
},
}
}; };
</script> </script>