优化排班功能

This commit is contained in:
java110 2022-12-15 14:08:40 +08:00
parent 9ae3888cc0
commit 457f5a4d3b
4 changed files with 117 additions and 76 deletions

View File

@ -1,5 +1,4 @@
<div id="editScheduleClassesDayModel" class="modal fade" role="dialog" aria-labelledby="exampleModalLabel"
aria-hidden="true">
<div id="editScheduleClassesDayModel" class="modal fade" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg">
<div class="modal-content">
<div class="modal-body">
@ -16,31 +15,26 @@
<div class="col-sm-10">
<select class="custom-select" v-model="editScheduleClassesDayInfo.workday" @change="_changeScheduleClassesDayState()">
<option value="2002">休息</option>
<option :value="item.classesId" v-for="(item,index) in editScheduleClassesDayInfo.classess">{{item.name}}</option>
<option :value="item.classesId" v-for="(item,index) in editScheduleClassesDayInfo.classess">{{item.name}}{{_getClassTime(item)}}</option>
</select>
</div>
</div>
<div class="form-group row"
v-if="editScheduleClassesDayInfo.workday != '2002'"
v-for="(item,index) in editScheduleClassesDayInfo.times">
<div class="form-group row" v-if="editScheduleClassesDayInfo.workday != '2002'" v-for="(item,index) in editScheduleClassesDayInfo.times">
<label class="col-sm-2 col-form-label text-right">
<span><vc:i18n name='上班时间' namespace='editScheduleClassesDay'></vc:i18n></span>
</label>
<div class="col-sm-4">
<input v-model="item.startTime" type="text"
:placeholder="vc.i18n('必填,请填写上班时间','editScheduleClassesDay')" class="form-control" />
<input v-model="item.startTime" type="text" :placeholder="vc.i18n('必填,请填写上班时间','editScheduleClassesDay')" class="form-control" />
</div>
<label class="col-sm-2 col-form-label text-right">
<span><vc:i18n name='下班时间' namespace='editScheduleClassesDay'></vc:i18n></span>
</label>
<div class="col-sm-4">
<input v-model="item.endTime" type="text"
:placeholder="vc.i18n('必填,请填写下班时间','editScheduleClassesDay')" class="form-control" />
<input v-model="item.endTime" type="text" :placeholder="vc.i18n('必填,请填写下班时间','editScheduleClassesDay')" class="form-control" />
</div>
</div>
<div class="ibox-content">
<button type="button" class="btn btn-primary float-right" style="margin-right:20px;"
data-dismiss="modal">
<button type="button" class="btn btn-primary float-right" style="margin-right:20px;" data-dismiss="modal">
<span><vc:i18n name="提交"></vc:i18n></span>
</button>
</div>

View File

@ -1,4 +1,4 @@
(function (vc) {
(function(vc) {
vc.extends({
data: {
editScheduleClassesDayInfo: {
@ -8,61 +8,77 @@
classess: [],
}
},
_initMethod: function () {
_initMethod: function() {
},
_initEvent: function () {
vc.on('editScheduleClassesDay', 'notify', function (_param) {
_initEvent: function() {
vc.on('editScheduleClassesDay', 'notify', function(_param) {
$that.editScheduleClassesDayInfo = _param;
$that._listClassess();
$('#editScheduleClassesDayModel').modal('show');
});
},
methods: {
_changeScheduleClassesDayState:function(){
$that.editScheduleClassesDayInfo.times.splice(0,$that.editScheduleClassesDayInfo.times.length);
if($that.editScheduleClassesDayInfo.workday == '2002'){
_changeScheduleClassesDayState: function() {
$that.editScheduleClassesDayInfo.times.splice(0, $that.editScheduleClassesDayInfo.times.length);
if ($that.editScheduleClassesDayInfo.workday == '2002') {
$that.editScheduleClassesDayInfo.workdayName = '休息';
return ;
return;
}
let _classes = $that.editScheduleClassesDayInfo.classess;
let _classes = $that.editScheduleClassesDayInfo.classess;
_classes.forEach(item => {
if($that.editScheduleClassesDayInfo.workday == item.classesId){
if ($that.editScheduleClassesDayInfo.workday == item.classesId) {
$that.editScheduleClassesDayInfo.workdayName = item.name;
item.times.forEach(time=>{
item.times.forEach(time => {
$that.editScheduleClassesDayInfo.times.push(time);
})
}
});
},
_summitEditScheduleClassesDay:function(){
_summitEditScheduleClassesDay: function() {
},
_listClassess: function (_page, _rows) {
_listClassess: function(_page, _rows) {
let param = {
params: {
page:1,
row:100
page: 1,
row: 100
}
};
//发送get请求
vc.http.apiGet('/classes.listClasses',
param,
function (json, res) {
function(json, res) {
let _classesManageInfo = JSON.parse(json);
vc.component.editScheduleClassesDayInfo.classess = _classesManageInfo.data;
$that.$forceUpdate();
}, function (errInfo, error) {
},
function(errInfo, error) {
console.log('请求失败处理');
}
);
},
_getClassTime: function(item) {
let _time = "";
if (!item.times) {
return _time
}
item.times.forEach(_timeItem => {
_time += (_timeItem.startTime + "~" + _timeItem.endTime + ";")
})
if (!_time) {
return _time;
}
return "(" + _time + ")";
}
}
});
})(window.vc);
})(window.vc);

View File

@ -12,11 +12,9 @@
</div>
<div class="ibox-content">
<div class="row">
<div class="col-sm-4">
<div class="col-sm-3">
<div class="form-group">
<input type="text" :placeholder="vc.i18n('请输入员工名称','scheduleClassesPage')"
v-model="scheduleClassesPageInfo.conditions.nameLike" class=" form-control ">
<input type="text" :placeholder="vc.i18n('请输入员工名称','scheduleClassesPage')" v-model="scheduleClassesPageInfo.conditions.nameLike" class=" form-control ">
</div>
</div>
<div class="col-sm-3">
@ -29,27 +27,38 @@
</div>
<div class="col-sm-3">
<div class="form-group">
<input type="text" :placeholder="vc.i18n('请输入日期 YYYY-MM','scheduleClassesPage')"
v-model="scheduleClassesPageInfo.conditions.curDate"
class=" form-control queryDate">
<input type="text" :placeholder="vc.i18n('请输入日期 YYYY-MM','scheduleClassesPage')" v-model="scheduleClassesPageInfo.conditions.curDate" class=" form-control queryDate">
</div>
</div>
<div class="col-sm-2">
<button type="button" class="btn btn-primary btn-sm"
v-on:click="_queryScheduleClassesMethod()">
<button type="button" class="btn btn-primary btn-sm" v-on:click="_queryScheduleClassesMethod()">
<i class="fa fa-search"></i>
<span>
<vc:i18n name="查询" namespace="scheduleClassesPage"></vc:i18n>
</span>
</button>
<button type="button" class="btn btn-white btn-sm"
v-on:click="_exportScheduleClasses()">
<button type="button" class="btn btn-white btn-sm" v-on:click="_resetScheduleClassesMethod()">
<i class="fa fa-search"></i>
<span>
<vc:i18n name="重置" namespace="scheduleClassesPage"></vc:i18n>
</span>
</button>
<button type="button" class="btn btn-white btn-sm" v-on:click="_exportScheduleClasses()">
<span>
<vc:i18n name="导出" namespace="scheduleClassesPage"></vc:i18n>
</span>
</button>
</div>
</div>
<div class="row">
<div class="col-sm-3">
<div class="form-group">
<input v-model="scheduleClassesPageInfo.conditions.orgName" readonly @focus="_staffChangeOrg()" type="text" :placeholder="vc.i18n('必填,请选择关联组织','addStaff')" class="form-control">
</div>
</div>
</div>
</div>
</div>
</div>
@ -97,8 +106,7 @@
</div>
</td>
<td class="text-center" v-for="(day,index) in staff.days">
<div class=" text-center border padding-lg labeling-strip"
style="border-radius: 5px;cursor:pointer">
<div class=" text-center border padding-lg labeling-strip" style="border-radius: 5px;cursor:pointer">
<div>{{day.workdayName?day.workdayName:'休息'}}</div>
<div v-for="(time,index) in day.times">{{time.startTime}}-{{time.endTime}}
</div>
@ -130,4 +138,6 @@
</div>
</div>
</div>
<vc:create path="frame/chooseOrgTree" callBackListener="scheduleClassesPage"></vc:create>
</div>

View File

@ -1,17 +1,17 @@
/**
入驻小区
**/
(function (vc) {
(function(vc) {
var DEFAULT_PAGE = 1;
var DEFAULT_ROWS = 10;
vc.extends({
data: {
scheduleClassesPageInfo: {
staffs: [],
scheduleClassess:[],
maxDay:30,
curMonth:'',
curYear:'',
scheduleClassess: [],
maxDay: 30,
curMonth: '',
curYear: '',
total: 0,
records: 1,
moreCondition: false,
@ -19,23 +19,29 @@
conditions: {
staffNameLike: '',
scheduleId: '',
curDate: ''
curDate: '',
orgId: '',
orgName: ''
}
}
},
_initMethod: function () {
_initMethod: function() {
$that.initStaffDate();
vc.component._listStaffScheduleClassess(DEFAULT_PAGE, DEFAULT_ROWS);
vc.component._listScheduleClassess(DEFAULT_PAGE, DEFAULT_ROWS);
},
_initEvent: function () {
vc.on('scheduleClassesPage', 'listScheduleClasses', function (_param) {
_initEvent: function() {
vc.on('scheduleClassesPage', 'listScheduleClasses', function(_param) {
vc.component._listStaffScheduleClassess(DEFAULT_PAGE, DEFAULT_ROWS);
});
vc.on('pagination', 'page_event', function (_currentPage) {
vc.on('pagination', 'page_event', function(_currentPage) {
vc.component._listStaffScheduleClassess(_currentPage, DEFAULT_ROWS);
});
vc.on('scheduleClassesPage', 'switchOrg', function(_org) {
$that.scheduleClassesPageInfo.conditions.orgId = _org.orgId;
$that.scheduleClassesPageInfo.conditions.orgName = _org.allOrgName;
});
},
methods: {
initStaffDate: function() {
@ -54,7 +60,7 @@
vc.component._listStaffScheduleClassess(DEFAULT_PAGE, DEFAULT_ROWS);
})
},
_listStaffScheduleClassess: function (_page, _rows) {
_listStaffScheduleClassess: function(_page, _rows) {
vc.component.scheduleClassesPageInfo.conditions.page = _page;
vc.component.scheduleClassesPageInfo.conditions.row = _rows;
let param = {
@ -63,7 +69,7 @@
//发送get请求
vc.http.apiGet('/scheduleClasses.staffMonthScheduleClasses',
param,
function (json, res) {
function(json, res) {
let _scheduleClassesPageInfo = JSON.parse(json);
vc.component.scheduleClassesPageInfo.total = _scheduleClassesPageInfo.total;
vc.component.scheduleClassesPageInfo.records = _scheduleClassesPageInfo.records;
@ -74,45 +80,57 @@
currentPage: _page
});
},
function (errInfo, error) {
function(errInfo, error) {
console.log('请求失败处理');
}
);
},
//查询
_queryScheduleClassesMethod: function () {
_queryScheduleClassesMethod: function() {
vc.component._listStaffScheduleClassess(DEFAULT_PAGE, DEFAULT_ROWS);
},
_moreCondition: function () {
_resetScheduleClassesMethod: function() {
$that.scheduleClassesPageInfo.conditions = {
staffNameLike: '',
scheduleId: '',
curDate: '',
orgId: '',
orgName: ''
}
let _date = new Date(new Date());
$that.scheduleClassesPageInfo.conditions.curDate = _date.getFullYear() + "-" + (_date.getMonth() + 1);
},
_moreCondition: function() {
if (vc.component.scheduleClassesPageInfo.moreCondition) {
vc.component.scheduleClassesPageInfo.moreCondition = false;
} else {
vc.component.scheduleClassesPageInfo.moreCondition = true;
}
},
_listScheduleClassess: function (_page, _rows) {
_listScheduleClassess: function(_page, _rows) {
let param = {
params: {
page:1,
row:100
page: 1,
row: 100
}
};
//发送get请求
vc.http.apiGet('/scheduleClasses.listScheduleClasses',
param,
function (json, res) {
function(json, res) {
let _scheduleClassesInfo = JSON.parse(json);
$that.scheduleClassesPageInfo.scheduleClassess = _scheduleClassesInfo.data;
},
function (errInfo, error) {
function(errInfo, error) {
console.log('请求失败处理');
}
);
},
_exportScheduleClasses: function () {
_exportScheduleClasses: function() {
//vc.jumpToPage('/callComponent/exportReportFee/exportData?pagePath=reportPayFeeDetail&' + vc.objToGetParam($that.reportPayFeeDetailInfo.conditions));
vc.component.scheduleClassesPageInfo.conditions.communityId = vc.getCurrentCommunity().communityId;
vc.component.scheduleClassesPageInfo.conditions.pagePath = 'reportStaffMonthScheduleClasses';
@ -121,18 +139,21 @@
};
//发送get请求
vc.http.apiGet('/export.exportData', param,
function (json, res) {
function(json, res) {
let _json = JSON.parse(json);
vc.toast(_json.msg);
if(_json.code == 0){
if (_json.code == 0) {
vc.jumpToPage('/#/pages/property/downloadTempFile?tab=下载中心')
}
},
function (errInfo, error) {
function(errInfo, error) {
console.log('请求失败处理');
});
},
_staffChangeOrg: function() {
vc.emit('chooseOrgTree', 'openOrgModal', {});
}
}
});
})(window.vc);