<template> <j-modal title="排班" :width="1000" :visible="visible" @ok="save()" switchFullscreen @cancel="handleCancel"> <a-spin :spinning="confirmLoading"> <a-form :form="form"> <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="*上班类型"> <a-radio-group v-model="types"> <a-radio value="1">固定时间上下班</a-radio> <a-radio value="2">按班次上下班</a-radio> <a-radio value="3">自由上下班</a-radio> </a-radio-group> </a-form-item> <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="*上班时间" v-if="types==1"> <a-time-picker showTime format='HH:mm' v-model="startDate"> <div slot="addon" style="width:100%;overflow:hidden"> <div style="width:50%;float:left;border-right:solid 1px ;text-align:center"> <div style="padding-top:10%;padding-bottom:10%"> <span style="width:100%;">时</span> </div> </div> <div style="width:50%;float:right;text-align:center"> <div style="padding-top:10%;padding-bottom:10%"> <span style="width:100%;">分</span> </div> </div> </div> </a-time-picker> </a-form-item> <a-form-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="*下班时间" v-if="types==1"> <a-time-picker showTime format='HH:mm' v-model="endDate"> <div slot="addon" style="width:100%;overflow:hidden"> <div style="width:50%;float:left;border-right:solid 1px ;text-align:center"> <div style="padding-top:10%;padding-bottom:10%"> <span style="width:100%;">时</span> </div> </div> <div style="width:50%;float:right;text-align:center"> <div style="padding-top:10%;padding-bottom:10%"> <span style="width:100%;">分</span> </div> </div> </div> </a-time-picker> </a-form-item> </a-form> <a-form-item v-if="types!=2" label="*打卡人员" :labelCol="labelCol" :wrapperCol="wrapperCol"> <a-tag v-for='(user,i) in selectUsers' :key="user.id" closable @close="tagBtnCloseFunc(user)">{{user.realname}} </a-tag> </a-form-item> <div v-if="types=='2'"> <div class='month'> <ul> <!--点击会触发pickpre函数,重新刷新当前日期 @click(vue v-on:click缩写) --> <li class='arrow' @click='pickPre(currentYear,currentMonth)'>上个月</li> <li class='year-month'> <span class='choose-year'>{{ currentYear }}年</span> <span class='choose-month'>{{ currentMonth }}月</span> </li> <li class='arrow' @click='pickNext(currentYear,currentMonth)'>下个月</li> </ul> <br> </div> <div> <a-table bordered :data-source="dataSource" :columns="columns" :scroll="{ x:300 }" :pagination="ipagination" @change="handleTableChange"> <template v-for='(dayobject,i) in days' :slot="dayobject.day.getDate()" style="color: #ff6b81"> <div style="height: 35px;"> <div style="text-align: center;margin-top: -10px;"> <p>{{dayobject.day.getDate()}}</p> <div style="margin-top: -10px;"> <p v-if='dayobject.day.getDay()==0'>日</p> <p v-else-if='dayobject.day.getDay()==1'>一</p> <p v-else-if='dayobject.day.getDay()==2'>二</p> <p v-else-if='dayobject.day.getDay()==3'>三</p> <p v-else-if='dayobject.day.getDay()==4'>四</p> <p v-else-if='dayobject.day.getDay()==5'>五</p> <p v-else-if='dayobject.day.getDay()==6'>六</p> </div> </div> </div> </template> <span v-for='(d,i) in tpdata' style="margin-left: -11px;" :slot="d" slot-scope="text, record, index"> <a-dropdown :trigger="['click']"> <a-tag color="blue" v-if="text=='休息'" @click="UserType(d,record,index)">{{text}}</a-tag> <a-tag color="#87d068" v-else-if="text!='休息'&&text!=''&&text!=null" @click="UserType(d,record,index)"> {{text}} </a-tag> <a-tag color="#FFFFFF" v-else @click="UserType(d,record,index)" style="width: 40px;">.</a-tag> <a-menu slot="overlay"> <a-menu-item key="0"> <a @click="shiftOks(0,d,record,index)">休息</a> </a-menu-item> <a-menu-item v-if="isShow" v-for="(item,index) in shiftlist" :key="item.id"> <a @click="shiftOks(item,d,record,index)">{{item.name}} ({{item.startDate}} - {{item.endDate}})</a> </a-menu-item> </a-menu> </a-dropdown> </span> </a-table> </div> </a-calendar> <a-modal v-model="visibles" title="班次" @ok="shiftOk()"> <div class="table-page-search-wrapper"> <a-form layout="inline"> <a-row :gutter="24"> <a-col :xl="10" :lg="10" :md="8" :sm="24"> <a-form-item label="班次名称"> <a-select v-model="shiftname" placeholder="请选择班次"> <a-select-option value="">请选择</a-select-option> <a-select-option value="a">休息</a-select-option> <a-select-option v-for="(item,index) in shiftlist" :value="item.id">{{item.name}} </a-select-option> </a-select> </a-form-item> </a-col> </a-row> </a-form> </div> </a-modal> </div> </a-spin> </j-modal> </template> <script> import { httpAction, getFileAccessHttpUrl, getAction, deleteAction } from '@/api/manage' import pick from 'lodash.pick' import moment from "moment" import { JeecgListMixin } from '@/mixins/JeecgListMixin' import '@/assets/less/TableExpand.less' import ar from '../AttendanceRuleList.vue' export default { name: "UserShiftModal", mixins: [JeecgListMixin], data() { return { tts: false, tpdata: [], dataSource: [], columns: [], queryParam: { shiftDate: moment(new Date()).format('YYYY-MM-DD HH:mm:ss'), type: "1" }, types: "1", currentMonth: new Date().getMonth(), currentYear: new Date().getYear(), days: [], selectUsers: [], checkUserIds: "", visibles: false, shiftDate: null, startDate: "", endDate: "", show: 1, id: null, obj: { "cid": "C0", "ctext": "区县" }, shiftname: "", username: "", deptlist: null, shiftlist: null, title: "操作", visible: false, key: null, index: null, vs: false, model: {}, labelCol: { xs: { span: 24 }, sm: { span: 5 }, }, wrapperCol: { xs: { span: 24 }, sm: { span: 16 }, }, isShow: true, listData: [], confirmLoading: false, form: this.$form.createForm(this), validatorRules: {}, url: { add: "/attendanceRule/attendanceRule/add", userShift: "/userShift/userShift/queryMothByUser", shift: "/shift/shift/lists", list: "/sys/user/queryMothByUsers", moth: "/userShift/userShift/queryMothByUser", deptlist: "/sys/sysDepart/listAll", delUserShift: '/userShift/userShift/delete', edit: '/attendanceRule/attendanceRule/edit', userShiftDay:'/userShift/userShift/UserShiftType' }, } }, created() { this.initData(null) this.queryShift() }, methods: { tagBtnCloseFunc(e) { const tags = this.selectUsers.filter(tag => tag !== e); this.selectUsers = tags; }, UserType(e, a, index) { this.isShow = true; var d = new Date(this.formatDate(this.currentYear, this.currentMonth, e)) var obj = this.dataSource[index]; var list = []; var sum=0; var f=false; if (d.getDay() == 1) { list.push(this.getDays(0, d)); list.push(this.getDays(1, d)); list.push(this.getDays(2, d)); list.push(this.getDays(3, d)); list.push(this.getDays(4, d)); list.push(this.getDays(5, d)); list.push(this.getDays(6, d)); } else if (d.getDay() == 2) { list.push(this.getDays(-1, d)); list.push(this.getDays(0, d)); list.push(this.getDays(1, d)); list.push(this.getDays(2, d)); list.push(this.getDays(3, d)); list.push(this.getDays(4, d)); list.push(this.getDays(5, d)); } else if (d.getDay() == 3) { list.push(this.getDays(-2, d)); list.push(this.getDays(-1, d)); list.push(this.getDays(0, d)); list.push(this.getDays(1, d)); list.push(this.getDays(2, d)); list.push(this.getDays(3, d)); list.push(this.getDays(4, d)); } else if (d.getDay() == 4) { list.push(this.getDays(-3, d)); list.push(this.getDays(-2, d)); list.push(this.getDays(-1, d)); list.push(this.getDays(0, d)); list.push(this.getDays(1, d)); list.push(this.getDays(2, d)); list.push(this.getDays(3, d)); } else if (d.getDay() == 5) { list.push(this.getDays(-4, d)); list.push(this.getDays(-3, d)); list.push(this.getDays(-2, d)); list.push(this.getDays(-1, d)); list.push(this.getDays(0, d)); list.push(this.getDays(1, d)); list.push(this.getDays(2, d)); } else if (d.getDay() == 6) { list.push(this.getDays(-5, d)); list.push(this.getDays(-4, d)); list.push(this.getDays(-3, d)); list.push(this.getDays(-2, d)); list.push(this.getDays(-1, d)); list.push(this.getDays(0, d)); list.push(this.getDays(1, d)); } else if (d.getDay() == 0) { list.push(this.getDays(-6, d)); list.push(this.getDays(-5, d)); list.push(this.getDays(-4, d)); list.push(this.getDays(-3, d)); list.push(this.getDays(-2, d)); list.push(this.getDays(-1, d)); list.push(this.getDays(0, d)); } for (var i = 0; i < list.length; i++) { if (list[i].split("-")[0] != this.currentYear || list[i].split("-")[1] != this.currentMonth) { getAction(this.url.userShiftDay, { userid: a.id, shiftDate:moment(new Date(list[i])).format('YYYY-MM-DD HH:mm:ss') , } ).then((res) => { if (res.success) { if(res.result!=0||res.result!='0'){ sum++; } } }).finally(() => { }) list.splice(i, 1) } } for (var o = 0; o< list.length; o++) { for (var t in obj) { //用javascript的for/in循环遍历对象的属性 if (t == "shiftid" + list[o].split("-")[2]&&list[o].split("-")[2]==e) { if(obj[t]!=0){ sum++; f=true; } }else if(t == "shiftid" + list[o].split("-")[2]){ if(obj[t]!=0){ sum++; } } } } if (a.category == 106) { if (sum==6&&f==false) { this.isShow = false; } } else{ if (sum==5&&f==false) { this.isShow = false; } } }, // 获取当前时间,day为number,getDay(-1):昨天的日期;getDay(0):今天的日期;getDay(1):明天的日期;【以此类推】 getDays(day, date) { var today = new Date(date); var targetday_milliseconds = today.getTime() + 1000 * 60 * 60 * 24 * day; today.setTime(targetday_milliseconds); //注意,这行是关键代码 var tYear = today.getFullYear(); var tMonth = today.getMonth() + 1; var tDate = today.getDate(); return tYear + "-" + tMonth + "-" + tDate; }, doHandleMonth(month) { var m = month; if (month.toString().length == 1) { m = "0" + month; } return m; }, shiftOks(a, b, c, d) { var date = this.currentYear + "-" + this.currentMonth + "-" + b + " 00:00:000"; var name = a.name; var shift = a.id; if (a == 0 || a == "0") { name = "休息"; shift = "0"; } if (b == 1) { c.a1 = name; c.shiftid1 = shift; } else if (b == 2) { c.a2 = name; c.shiftid2 = shift; } else if (b == 3) { c.a3 = name; c.shiftid3 = shift; } else if (b == 4) { c.a4 = name; c.shiftid4 = shift; } else if (b == 5) { c.a5 = name; c.shiftid5 = shift; } else if (b == 6) { c.a6 = name; c.shiftid6 = shift; } else if (b == 7) { c.a7 = name; c.shiftid7 = shift; } else if (b == 8) { c.a8 = name; c.shiftid8 = shift; } else if (b == 9) { c.a9 = name; c.shiftid9 = shift; } else if (b == 10) { c.a10 = name; c.shiftid10 = shift; } else if (b == 11) { c.a11 = name; c.shiftid11 = shift; } else if (b == 12) { c.a12 = name; c.shiftid12 = shift; } else if (b == 13) { c.a13 = name; c.shiftid13 = shift; } else if (b == 14) { c.a14 = name; c.shiftid14 = shift; } else if (b == 15) { c.a15 = name; c.shiftid15 = shift; } else if (b == 16) { c.a16 = name; c.shiftid16 = shift; } else if (b == 17) { c.a17 = name; c.shiftid17 = shift; } else if (b == 18) { c.a18 = name; c.shiftid18 = shift; } else if (b == 19) { c.a19 = name; c.shiftid19 = shift; } else if (b == 20) { c.a20 = name; c.shiftid20 = shift; } else if (b == 21) { c.a21 = name; c.shiftid21 = shift; } else if (b == 22) { c.a22 = name; c.shiftid22 = shift; } else if (b == 23) { c.a23 = name; c.shiftid23 = shift; } else if (b == 24) { c.a24 = name; c.shiftid24 = shift; } else if (b == 25) { c.a25 = name; c.shiftid25 = shift; } else if (b == 26) { c.a26 = name; c.shiftid26 = shift; } else if (b == 27) { c.a27 = name; c.shiftid27 = shift; } else if (b == 28) { c.a28 = name; c.shiftid28 = shift; } else if (b == 29) { c.a29 = name; c.shiftid29 = shift; } else if (b == 30) { c.a30 = name; c.shiftid30 = shift; } else if (b == 31) { c.a31 = name; c.shiftid31 = shift; } }, pickPre: function(year, month) { var d = new Date(this.formatDate(year, month, 1)) d.setDate(0) this.initData(this.formatDate(d.getFullYear(), d.getMonth() + 1, 1)) this.queryParam.shiftDate = this.formatDate(d.getFullYear(), d.getMonth() + 1, 1) + " 00:00:000"; this.$options.methods.searchQuery.call(this) }, pickNext: function(year, month) { var d = new Date(this.formatDate(year, month + 1, 1)) this.initData(this.formatDate(d.getFullYear(), d.getMonth() + 1, 1)) this.queryParam.shiftDate = this.formatDate(d.getFullYear(), d.getMonth() + 1, 1) + " 00:00:000"; this.$options.methods.searchQuery.call(this) }, initData: function(cur) { this.columns = []; var date if (cur) { date = new Date(cur) } else { var now = new Date() date = now; } this.currentDay = date.getDate() this.currentYear = date.getFullYear() this.currentMonth = date.getMonth() + 1 this.currentWeek = date.getDay() // 1...6,0 var str = this.formatDate( this.currentYear, this.currentMonth, this.currentDay ) this.days.length = 0 var moth = new Date(str); moth.setDate(28) moth.setMonth(moth.getMonth() + 1); moth.setDate(0); this.columns.push({ title: '名称', dataIndex: 'realname', width: '100px' }) for (var i = 1; i <= moth.getDate(); i++) { var d = new Date(this.formatDate(this.currentYear, this.currentMonth, i)) this.tpdata.push(i) var dayobjectSelf = { width: '49px', slots: { title: d.getDate() }, dataIndex: "a" + d.getDate(), scopedSlots: { customRender: i }, } // 用一个对象包装Date对象 以便为以后预定功能添加属性 var dat = {}; dat.day = d; this.days.push(dat) this.columns.push(dayobjectSelf) // 将日期放入data 中的days数组 供页面渲染使用 } }, // 返回 类似 2016-01-02 格式的字符串 formatDate: function(year, month, day) { var y = year if (month > 12) { y = y + 1; month = 1; }; var m = month if (m < 10) m = '0' + m var d = day if (d < 10) d = '0' + d return y + '-' + m + '-' + d }, delUserShift(e) { this.vs = true; deleteAction(this.url.delUserShift, { id: e }).then((res) => { if (res.success) { this.$message.success(res.message); } else { this.$message.warning(res.message); } }).finally(() => { this.vs = false; this.getListData(moment(this.queryParam.entryDate).format('YYYY-MM-DD HH:mm:ss')); }) }, queryUserShifts() { this.queryParam.shiftDate = moment(new Date()).format('YYYY-MM-DD HH:mm:ss'); this.$options.methods.searchQuery.call(this); }, close() { this.selectedRowKeys = []; this.queryParam = {}; this.shiftname = ""; this.id = null; this.$emit('close'); this.dataSource = []; this.visible = false; this.selectUsers = []; this.startDate = ""; this.endDate = ""; this.initData(null); }, queryShift() { httpAction(this.url.shift, "", "get").then((res) => { if (res.success) { this.shiftlist = res.result; } }).finally(() => { }) }, handleCancel() { this.close() }, save() { var userid = ""; var startDate = ""; var endDate = ""; var workDay = ""; var obj = ""; var year = this.currentYear + "-" + this.currentMonth; if (this.types != '2' && this.types != 2) { if (this.selectUsers == [] || this.selectUsers.length < 1) { this.$message.warning('人员不能为空'); return; } else if (this.types == '1' || this.types == 1) { if (this.startDate == null || this.startDate == "") { this.$message.warning('请选择上班时间'); return; } else if (this.endDate == null || this.endDate == "") { this.$message.warning('请选择下班时间'); return; } startDate = moment(this.startDate).format('YYYY-MM-DD HH:mm') + ":00"; endDate = moment(this.endDate).format('YYYY-MM-DD HH:mm') + ":00"; } var ids = []; for (var i = 0; i < this.selectUsers.length; i++) { ids.push(this.selectUsers[i].id); } userid = ids.join(','); workDay = "1,2,3,4,5"; } else if (this.types == '2' || this.types == 2) { var data = []; var uids = []; userid = this.checkUserIds; for (var i = 0; i < this.dataSource.length; i++) { uids.push(this.dataSource[i].id); if (this.dataSource[i].shiftid1 != "" && this.dataSource[i].shiftid1 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid1, date: year + "-1 00:00:00" }; data.push(str) } if (this.dataSource[i].shiftid2 != "" && this.dataSource[i].shiftid2 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid2, date: year + "-2 00:00:00" }; data.push(str) } if (this.dataSource[i].shiftid3 != "" && this.dataSource[i].shiftid3 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid3, date: year + "-3 00:00:00", }; data.push(str) } if (this.dataSource[i].shiftid4 != "" && this.dataSource[i].shiftid4 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid4, date: year + "-4 00:00:00" }; data.push(str) } if (this.dataSource[i].shiftid5 != "" && this.dataSource[i].shiftid5 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid5, date: year + "-5 00:00:00", }; data.push(str) } if (this.dataSource[i].shiftid6 != "" && this.dataSource[i].shiftid6 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid6, date: year + "-6 00:00:00", }; data.push(str) } if (this.dataSource[i].shiftid7 != "" && this.dataSource[i].shiftid7 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid7, date: year + "-7 00:00:00" }; data.push(str) } if (this.dataSource[i].shiftid8 != "" && this.dataSource[i].shiftid8 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid8, date: year + "-8 00:00:00" }; data.push(str) } if (this.dataSource[i].shiftid9 != "" && this.dataSource[i].shiftid9 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid9, date: year + "-9 00:00:00" }; data.push(str) } if (this.dataSource[i].shiftid10 != "" && this.dataSource[i].shiftid10 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid10, date: year + "-10 00:00:00" }; data.push(str) } if (this.dataSource[i].shiftid11 != "" && this.dataSource[i].shiftid11 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid11, date: year + "-11 00:00:00" }; data.push(str) } if (this.dataSource[i].shiftid12 != "" && this.dataSource[i].shiftid12 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid12, date: year + "-12 00:00:00" }; data.push(str) } if (this.dataSource[i].shiftid13 != "" && this.dataSource[i].shiftid13 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid13, date: year + "-13 00:00:00" }; data.push(str) } if (this.dataSource[i].shiftid14 != "" && this.dataSource[i].shiftid14 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid14, date: year + "-14 00:00:00" }; data.push(str) } if (this.dataSource[i].shiftid15 != "" && this.dataSource[i].shiftid15 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid15, date: year + "-15 00:00:00" }; data.push(str) } if (this.dataSource[i].shiftid16 != "" && this.dataSource[i].shiftid16 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid16, date: year + "-16 00:00:00" }; data.push(str) } if (this.dataSource[i].shiftid17 != "" && this.dataSource[i].shiftid17 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid17, date: year + "-17 00:00:00" }; data.push(str) } if (this.dataSource[i].shiftid18 != "" && this.dataSource[i].shiftid18 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid18, date: year + "-18 00:00:00" }; data.push(str) } if (this.dataSource[i].shiftid19 != "" && this.dataSource[i].shiftid19 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid19, date: year + "-19 00:00:00" }; data.push(str) } if (this.dataSource[i].shiftid20 != "" && this.dataSource[i].shiftid20 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid20, date: year + "-20 00:00:00" }; data.push(str) } if (this.dataSource[i].shiftid21 != "" && this.dataSource[i].shiftid21 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid21, date: year + "-21 00:00:00" }; data.push(str) } if (this.dataSource[i].shiftid22 != "" && this.dataSource[i].shiftid22 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid22, date: year + "-22 00:00:00" }; data.push(str) } if (this.dataSource[i].shiftid23 != "" && this.dataSource[i].shiftid23 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid23, date: year + "-23 00:00:00" }; data.push(str) } if (this.dataSource[i].shiftid24 != "" && this.dataSource[i].shiftid24 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid24, date: year + "-24 00:00:00" }; data.push(str) } if (this.dataSource[i].shiftid25 != "" && this.dataSource[i].shiftid25 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid25, date: year + "-25 00:00:00" }; data.push(str) } if (this.dataSource[i].shiftid26 != "" && this.dataSource[i].shiftid26 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid26, date: year + "-26 00:00:00" }; data.push(str) } if (this.dataSource[i].shiftid27 != "" && this.dataSource[i].shiftid27 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid27, date: year + "-27 00:00:00" }; data.push(str) } if (this.dataSource[i].shiftid28 != "" && this.dataSource[i].shiftid28 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid28, date: year + "-28 00:00:00" }; data.push(str) } if (this.dataSource[i].shiftid29 != "" && this.dataSource[i].shiftid29 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid29, date: year + "-29 00:00:00" }; data.push(str) } if (this.dataSource[i].shiftid30 != "" && this.dataSource[i].shiftid30 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid30, date: year + "-30 00:00:00" }; data.push(str) } if (this.dataSource[i].shiftid31 != "" && this.dataSource[i].shiftid31 != null) { var str = { userid: this.dataSource[i].id, shiftid: this.dataSource[i].shiftid31, date: year + "-31 00:00:00" }; data.push(str) } } obj = JSON.stringify(data); userid = uids.join(","); } var url = this.url.add; var typet = "post" if (this.id != null && this.id != "") { url = this.url.edit; typet = "put"; } this.confirmLoading = true; httpAction(url, { id: this.id, type: this.types, startDate: startDate, endDate: endDate, userId: userid, workDay: workDay, ruleType: obj }, typet).then((res) => { if (res.success) { this.$message.success(res.message); this.$emit('ok'); } else { this.$message.warning(res.message); } }).finally(() => { this.confirmLoading = false; this.close(); }) }, add(e, a) { this.visible = true; this.queryParam.usertid = e.join(","); this.checkUserIds = e.join(","); this.selectUsers = a; this.queryParam.shiftDate = moment(new Date()).format('YYYY-MM-DD HH:mm:ss'); this.queryParam.type = "1"; this.$options.methods.searchQuery.call(this) }, edit(e, a) { this.visible = true; this.queryParam.usertid = e.join(","); this.checkUserIds = e.join(","); this.selectUsers = a; this.types = a[0].type; this.id = a[0].id; this.queryParam.shiftDate = moment(new Date()).format('YYYY-MM-DD HH:mm:ss'); this.queryParam.type = "2"; if (a[0].startDate != null) { this.startDate = moment(new Date(a[0].startDate)).format('YYYY-MM-DD HH:mm:ss'); } if (a[0].endDate != null) { this.endDate = moment(new Date(a[0].endDate)).format('YYYY-MM-DD HH:mm:ss'); } this.$options.methods.searchQuery.call(this) } } } </script> <style lang="less" scoped> .month { width: 100%; color: #333333; background: #ffffff; margin-top: -20px; } .month ul { margin: 0; padding: 0; display: flex; justify-content: space-between; height: 30px; list-style-type: none; } .year-month { display: flex; align-items: center; justify-content: space-around; margin-top: 10px; } .choose-month { text-align: center; font-size: 12px; } .arrow { padding: 15px; color: #999999; } .month ul li { font-size: 12px; text-transform: uppercase; letter-spacing: 3px; } .weekdays { margin: 0; padding: 10px; display: flex; flex-wrap: wrap; color: #999; justify-content: space-around; background: #ffffff; } .weekdays li { display: inline-block; width: 13.6%; text-align: center; } .days { padding: 10px; background: #ffffff; margin: 0; display: flex; flex-wrap: wrap; } .ts { padding: 20px; background: #ffffff; margin: 0; display: flex; flex-wrap: wrap; } .days li { list-style-type: none; display: inline-block; width: 14.2%; text-align: center; padding-bottom: 4px; padding-top: 5px; font-size: 13px; color: #000; height: 40px; } .days li .active { padding: 8px 10px; border-radius: 5%; background: #00b8ec; color: #fff; } .days li .other-month { padding: 5px; color: gainsboro; } .days li:hover .act { padding: 6px 10px; border-radius: 50%; background: #e1e1e1; color: #fff; } </style>