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>
@ -45,23 +60,36 @@
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>
@ -73,8 +101,18 @@
<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>
@ -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>
@ -138,12 +187,25 @@
</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>
@ -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,7 +251,8 @@
<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>
@ -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,41 +296,62 @@
<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>
@ -275,7 +360,11 @@
<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>
@ -284,20 +373,33 @@
<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>
@ -306,7 +408,11 @@
<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>
@ -315,12 +421,15 @@
<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,13 +440,20 @@
</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: "固定班制" },
{ value: "2", label: "自由工时" },
],
attDayList: [
{ id: 0, label: "周一" },
{ id: 1, label: "周二" },
{ id: 2, label: "周三" },
{
id: 3, id: 3,
label: '周四' label: "周四",
}, {id: 4, label: '周五'}, {id: 5, label: '周六'}, {id: 6, 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");
@ -505,7 +637,6 @@ export default {
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];
@ -518,7 +649,6 @@ export default {
}, },
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() {
@ -558,7 +687,6 @@ export default {
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,15 +721,15 @@ 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);
@ -609,92 +737,109 @@ export default {
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
.confirm("是否确认删除该数据项?")
.then(function () {
return delAttGroup(groupIds); return delAttGroup(groupIds);
}).then(() => { })
.then(() => {
this.getList(); this.getList();
this.$modal.msgSuccess("删除成功"); this.$modal.msgSuccess("删除成功");
}).catch(() => { })
}); .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>