| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641 | starter.controller('ScheduleCtrl', function ($rootScope, $scope, $state, $cordovaCalendar, global, Schedule, Tool) {    $scope.goBack = function () {        global.goBack();    }    global.fetch_user().then(function () {        getscheduledata();    })    $scope.toadd = function () {        $state.go('schedule-create', {            id: -1        });    }    $scope.toman = function () {        $state.go('schedule-man');    }    $scope.todetails = function (details) {        Schedule.scheduleDetails = details;        $state.go('schedule-details', {            id: details.id        });    }    $scope.doRefresh = function () {        global.refresh = true;        getscheduledata();    }    $scope.loadMore = function () {        if ($scope.schedules != undefined && $scope.schedules.next != null) {            Tool.get($scope.schedules.next).then(function (data) {                _.each(data.results, function (item) {                    $scope.schedules.results.push(item);                })                $scope.schedules.next = data.next;                $scope.schedules.previous = data.previous;            }).finally(function () {                $scope.$broadcast('scroll.infiniteScrollComplete');                $scope.loading = false;            });        } else {            $scope.$broadcast('scroll.infiniteScrollComplete');        }    }    $scope.moreCanBeLoaded = function () {        return $scope.schedules != undefined && $scope.schedules.next != null ? true : false;    }    function getscheduledata() {        if (global.user.token != "") {            if ($scope.schedules == undefined) {                $scope.loading = true;            }            Schedule.schedule.get({'type': 'receive'}, function (res) {                $scope.schedules = res;            }, function (err) {                alert(JSON.stringify(err));            }).$promise.finally(function () {                $scope.$broadcast('scroll.refreshComplete');                $scope.loading = false;            });        }    }    enter = $scope.$on("$ionicView.enter", function (event, data) {        if (data.fromCache && $rootScope.commons.refresh) {            $rootScope.commons.refresh = false;            getscheduledata();        }    })    $scope.$on("$destroy", function () {        enter = null;    })//  function getscheduledata() {//      if (global.user.token != "") {//          Schedule.getReceive().then(function (data) {//              data_unover = [];//              data_over = [];//              _.each(data, function (item) {//                  var isover = false;//                  var currentDateTime = new Date();//                  if ((item.end_date != null && new Date(Date.parse(item.end_date)) < currentDateTime) ||//                          (item.repeat_type == 0 && item.start_date != null && new Date(Date.parse(item.start_date)) < currentDateTime)) {//                      isOver = true;//                  } else {//                      isOver = false;//                  }//                  if (isOver) {//                      //已过期//                      data_over.push(item);//                  } else {//                      //未过期//                      data_unover.push(item);//                  }////              });////              data_unover = _.sortBy(data_unover, 'execute_dd'); //升序//              data_over = _.sortBy(data_over, 'execute_dd').reverse(); //降序//              data = [];//              _.each(data_unover, function (item) {//                  data.push(item);//              });//              _.each(data_over, function (item) {//                  data.push(item);//              });//              $scope.Schedule = data;//          }, function (error) {//              alert(JSON.stringify(error));//          });//      }//  }}).controller('SchedulePostedCtrl', function ($rootScope, $scope, $state, global, Schedule, Tool) {    global.fetch_user().then(function () {        getscheduledata();    })    $scope.toadd = function () {        $state.go('schedule-create');    }    $scope.todetails = function (id) {        $state.go('schedule-details', {            id: id        });    }    $scope.doRefresh = function () {        global.refresh = true;        getscheduledata();    }    $scope.loadMore = function () {        if ($scope.schedules != undefined && $scope.schedules.next != null) {            Tool.get($scope.schedules.next).then(function (data) {                _.each(data.results, function (item) {                    $scope.schedules.results.push(item);                })                $scope.schedules.next = data.next;                $scope.schedules.previous = data.previous;            }).finally(function () {                $scope.$broadcast('scroll.infiniteScrollComplete');                $scope.loading = false;            });        } else {            $scope.$broadcast('scroll.infiniteScrollComplete');        }    }    $scope.moreCanBeLoaded = function () {        return $scope.schedules != undefined && $scope.schedules.next != null ? true : false;    }    function getscheduledata() {        if (global.user.token != "") {            if ($scope.schedules == undefined) {                $scope.loading = true;            }            Schedule.schedule.get({'type': 'release'}, function (res) {                $scope.schedules = res;            }, function (err) {                alert(JSON.stringify(err));            }).$promise.finally(function () {                $scope.$broadcast('scroll.refreshComplete');                $scope.loading = false;            });        }    }    enter = $scope.$on("$ionicView.enter", function (event, data) {        if (data.fromCache && $rootScope.commons.refresh) {            $rootScope.commons.refresh = false;            getscheduledata();        }    })    $scope.$on("$destroy", function () {        enter = null;    })}).controller('ScheduleCreateCtrl', function ($rootScope, $scope, $state, $ionicHistory, $cordovaDatePicker, $cordovaCalendar, global, Schedule, Member, showPopup, Tool) {    var id = $state.params['id'];    var isModified = false;    $scope.repeatfreqWeekDayHt = {        "1": false,        "2": false,        "3": false,        "4": false,        "5": false,        "6": false,        "0": false    }    $scope.repeatfreqMonthDayHt = {        "1": false,        "2": false,        "3": false,        "4": false,        "5": false,        "6": false,        "7": false,        "8": false,        "9": false,        "10": false,        "11": false,        "12": false,        "13": false,        "14": false,        "15": false,        "16": false,        "17": false,        "18": false,        "19": false,        "20": false,        "21": false,        "22": false,        "23": false,        "24": false,        "25": false,        "26": false,        "27": false,        "28": false,        "29": false,        "30": false,        "31": false    }        $scope.data = {        content: null,        start_date: getDateTimeYMDHM(1),        start_date_title: null,        repeat_type: 0,        freq: '',        repeat_freq_title: '不重复',        end_date: null,        repeat_end_date_type: 1,        notification_type: 1,        schedulemembers: []    }    $scope.popup = {        isPopup: false    }    if (id > 0) {        $scope.data = Tool.cloneObj(Schedule.scheduleDetails);        $scope.data.freq = $scope.data.freq.split(',');        if ($scope.data.repeat_type == 2) {            setRepeatByFreq($scope.data.freq, $scope.repeatfreqWeekDayHt);        } else if ($scope.data.repeat_type == 3) {            setRepeatByFreq($scope.data.freq, $scope.repeatfreqMonthDayHt);        }        $scope.data.repeat_freq_title = Schedule.getRepeatFreqTitle($scope.data.repeat_type, $scope.data.freq);        if ($scope.data.end_date == null) {            $scope.data.repeat_end_date_type = 1;        } else {            $scope.data.repeat_end_date_type = 2;        }        var content_old = $scope.data.content;        var date_old = $scope.data.start_date;    }    $scope.data.start_date_title = Schedule.getDateTimeTitle($scope.data.start_date);    $scope.warningHt = Schedule.notificationType;    $scope.repeatHt = Schedule.repeatType;    $scope.weekDayHt = Schedule.weekDay;    $scope.repeatfreqstyleunactive = {        "border": "1px solid #ddd",        "background-color": "#fff"    }    $scope.repeatfreqstyleactive = {        "border": "1px solid #ddd",        "background-color": "red"    }    $scope.goBack = function () {        if (id < 0 && ($scope.data.content != null || $scope.data.schedulemembers.length > 0)) {            showPopup.confirm('是否取消创建?', '是', '否').then(function (res) {                if (res)                    global.goBack();            });        } else {            global.goBack();        }    }    $scope.selectmember = function () {        Member.resourcemember = [];        _.each($scope.data.schedulemembers, function (user) {            Member.resourcemember.push(user);        })        Member.titlename = '选择成员'        Member.disabled = false;        $state.go('selectmember');    }    //选择重复 重复类型(0:永不,1:每天 2:每周,3:每月,4:每年)    showPopup.modalTemplate('templates/modal-selectrepeatid.html', 'slide-in-right', $scope).then(function (modal) {        $scope.repeat_id_modal = modal;    });    $scope.showRepeatIdModal = function () {        $scope.repeat_id_modal.show();        $rootScope.commons.modal = $scope.repeat_id_modal;    }    $scope.closeRepeatIdModal = function () {        //0:永不,1:每天 2:每周,3:每月,4:每年        if ($scope.data.repeat_type == "2") {            $scope.data.freq = getFreqByRepeat($scope.repeatfreqWeekDayHt);        } else if ($scope.data.repeat_type == "3") {            $scope.data.freq = getFreqByRepeat($scope.repeatfreqMonthDayHt);        }        $scope.data.repeat_freq_title = Schedule.getRepeatFreqTitle($scope.data.repeat_type, $scope.data.freq);        $rootScope.commons.modal.hide();    }    $scope.changeRepeatId = function (repeat_type) {        //0:永不,1:每天 2:每周,3:每月,4:每年        if (repeat_type == "1") {            $scope.data.freq = 1;        } else if (repeat_type == "2") {            $scope.repeatfreqWeekDayHt[new Date().getDay()] = true;        } else if (repeat_type == "3") {            $scope.repeatfreqMonthDayHt[new Date().getDate()] = true;        }        $scope.data.repeat_type = repeat_type;    }    $scope.changeDayRepeatfreqIdColor = function (freq) {        $scope.data.freq = freq;    }    $scope.changeWeekDayRepeatfreqIdColor = function (freq) {        if (!(_.compact($scope.repeatfreqWeekDayHt).length == 1 && $scope.repeatfreqWeekDayHt[freq]))            $scope.repeatfreqWeekDayHt[freq] = !$scope.repeatfreqWeekDayHt[freq];    }    $scope.changeMonthDayRepeatfreqIdColor = function (freq) {        if (!(_.compact($scope.repeatfreqMonthDayHt).length == 1 && $scope.repeatfreqMonthDayHt[freq]))            $scope.repeatfreqMonthDayHt[freq] = !$scope.repeatfreqMonthDayHt[freq];    }    //选择结束重复(null:一直重复)    showPopup.modalTemplate('templates/modal-selectrepeatenddd.html', 'slide-in-right', $scope).then(function (modal) {        $scope.repeat_end_dd_modal = modal;    });    $scope.showRepeatendddModal = function () {        $scope.repeat_end_dd_modal.show();        $rootScope.commons.modal = $scope.repeat_end_dd_modal;    }    $scope.closeRepeatendddModal = function () {        $rootScope.commons.modal.hide();    }    $scope.changeRepeatendddId = function (repeat_end_date_type) {        $scope.data.repeat_end_date_type = repeat_end_date_type;        $scope.data.end_date = null;        $scope.closeRepeatendddModal();    }    //选择提醒 提醒类型(0:不提醒,1:事件发生时,2:提前5分钟,3:提前15分钟,4:提前30分钟,5:提前1小时,6:提前2小时,7:提前5小时)    showPopup.modalTemplate('templates/modal-selectwarningid.html', 'slide-in-right', $scope).then(function (modal) {        $scope.warning_id_modal = modal;    });    $scope.showWarningIdModal = function () {        $scope.warning_id_modal.show();        $rootScope.commons.modal = $scope.warning_id_modal;    }    $scope.closeWarningIdModal = function () {        $rootScope.commons.modal.hide();    }    $scope.changeWarningId = function (notification_type) {        $scope.data.notification_type = notification_type;        $scope.closeWarningIdModal();    }    $scope.addSchedule = function () {        if (Schedule.checkSchedule($scope.data)) {            showPopup.showLoading(1, '正在提交');            if (id < 0) {                createSchdule();            } else {//              if (isModified) { // todo :edit change is modified                Schedule.deleteEvent(content_old, date_old);                createSchdule();//              }            }        }    }    $scope.chooseDate = function () {        var options = {            mode: 'date',            date: $scope.data.end_date != null ? new Date($scope.data.end_date) : new Date(),            androidTheme: 3        };        $cordovaDatePicker.show(options).then(function (date) {            if (date == undefined) return;            $scope.data.end_date = date;            $scope.data.repeat_end_date_type = 2;            $scope.closeRepeatendddModal();        }, function (cancel) {            $scope.data.end_date = null;            $scope.data.repeat_end_date_type = 1;        });    }    $scope.chooseStartddDate = function () {        var options = {            mode: 'datetime',            date: new Date($scope.data.start_date),            androidTheme: 3        };        $cordovaDatePicker.show(options).then(function (date) {            if (date == undefined) return;            $scope.data.start_date = date;            $scope.data.start_date_title = Schedule.getDateTimeTitle($scope.data.start_date);        });    }    var watch = $scope.$watch('data', function (n, o) {        if (n == o)            return;        isModified = true;    }, true);    var enter = $scope.$on("$ionicView.enter", function () {        selectMember();    });    $scope.$on("$destroy", function () {        if ($rootScope.commons.modal)            $rootScope.commons.modal = null;        $scope.repeat_end_dd_modal.remove();        $scope.warning_id_modal.remove();        $scope.repeat_id_modal.remove();        enter = null;        watch();    })    function createSchdule() {        if ($scope.data.repeat_end_date_type == 1)            $scope.data.end_date = null;        var data = _.pick($scope.data, 'content', 'start_date', 'repeat_type', 'freq', 'end_date', 'notification_type', 'schedulemembers');        if (data.freq.length > 0)            data.freq = data.freq.join(',');        data.schedulemembers = _.map(data.schedulemembers, function (user) {            return user.user_id;        })        if (id < 0) {            Schedule.schedule.save(data, function (data) {                $rootScope.commons.refresh = true;                Schedule.createEventWithOptions($scope.data.content, $scope.data.start_date, $scope.data.end_date, $scope.data.repeat_type, $scope.data.freq, $scope.data.notification_type);                showPopup.hideLoading();                $ionicHistory.goBack();            })        } else {            data.id = id;            Schedule.schedule.update(data, function (data) {                $rootScope.commons.refresh = true;                Schedule.createEventWithOptions($scope.data.content, $scope.data.start_date, $scope.data.end_date, $scope.data.repeat_type, $scope.data.freq, $scope.data.notification_type);                showPopup.hideLoading();                $ionicHistory.goBack();            })        }    }    function getFreqByRepeat(repeat) {        var freq = []        _.each(repeat, function (value, key) {            if (value) freq.push(parseInt(key));        })        return freq;    }    function setRepeatByFreq(freq, repeat) {        _.each(freq, function (f) {            repeat[f] = !repeat[f];        })    }    function selectMember() {        if (Member.selectedemplst.length > 0) {            $scope.data.schedulemembers = [];            console.log(Member.selectedemplst);            _.each(Member.selectedemplst, function (item) {                $scope.data.schedulemembers.push({                    user_id: item.user_id,                    username: item.username,                    deptname: item.depname,                    degree: item.degree                })            });            $scope.sel_member_names = Schedule.getMemberTitle($scope.data.schedulemembers);            Member.selectedemplst = [];        }    }    function getDateTimeYMDHM(add_hours) {        var date = new Date()        date.setHours(date.getHours() + add_hours);        date.setMinutes(0);        return date;    }}).controller('ScheduleDetailsCtrl', function ($rootScope, $scope, $state, $ionicHistory, $ionicPopover, Schedule, global, showPopup, Tool) {    var id = $state.params['id'];    $scope.popup = {        isPopup: false,    }    var view = $ionicHistory.backView();    global.fetch_user().then(function () {        if (view) {            $scope.details = Schedule.scheduleDetails;//              $scope.execute_dd_title = Schedule.getDateTimeTitle(res.execute_dd);            $scope.scheduleMemberNames = Schedule.getMemberTitle($scope.details.schedulemembers);            $scope.repeat_req_title = Schedule.getRepeatFreqTitle($scope.details.repeat_type, $scope.details.freq);            $scope.isShowRemoveMember = _.find($scope.details.schedulemembers, function (user) {                return user.user_id == global.user.usrid;            });            $scope.isOver = false;            if ($scope.details.end_date != null && new Date() > new Date($scope.details.end_date))                $scope.isOver = true;        } else {            getscheduledetails();        }    });    $ionicPopover.fromTemplateUrl('templates/detailsmenu.html', {        scope: $scope,    }).then(function (popover) {        $scope.popover = popover;    });    $scope.deleteSchedule = function () {        $scope.popover.hide();        $scope.popup.isPopup = true;        showPopup.confirm('是否删除该日程?', '是', '否').then(function (res) {            if (res) {                Schedule.deleteEvent($scope.details.content, $scope.details.start_date);                Schedule.schedule.delete({'id': id}, function () {                    $rootScope.commons.refresh = true;                    $ionicHistory.goBack();                });            }        });    }    $scope.deleteMember = function () {        $scope.popup.isPopup = true;        showPopup.confirm('退出后,你将不再参与该日程', '是', '否').then(function (res) {            if (res) {                Schedule.deleteEvent($scope.details.content, $scope.details.start_date);                Schedule.schedulemenber.delete({'schedule_id': id}).then(function () {                    $rootScope.commons.refresh = true;                    $ionicHistory.goBack();                });            }        });    }    $scope.edit = function () {        $scope.popover.hide();        $state.go('schedule-create', {            'id': $scope.details.id        })    }    $scope.doRefresh = function () {        global.refresh = true;        getscheduledetails();    }    function getscheduledetails() {        if (global.user.token != "") {            if ($scope.details == undefined) {                $scope.loading = true;            }            Schedule.schedule.get({'id': id}, function (res) {                Schedule.scheduleDetails = _.clone(res);                console.log(res);                $scope.details = res;//              $scope.execute_dd_title = Schedule.getDateTimeTitle(res.execute_dd);                $scope.scheduleMemberNames = Schedule.getMemberTitle(res.schedulemembers);                $scope.repeat_req_title = Schedule.getRepeatFreqTitle(res.repeat_type, res.freq);                $scope.isShowRemoveMember = _.find(res.schedulemembers, function (user) {                    return user.user_id == global.user.usrid;                });                $scope.isOver = false;                if ($scope.details.end_date != null && new Date() > new Date($scope.details.end_date))                    $scope.isOver = true;//              //是否过期//              var currentDateTime = new Date();//              var executeddTime = new Date(Date.parse($scope.data.execute_dd));//              if (($scope.data.end_date != null && new Date(Date.parse($scope.data.end_date)) < currentDateTime) && currentDateTime > executeddTime ||//                      ($scope.data.repeat_type == 0 && $scope.data.start_date != null && new Date(Date.parse($scope.data.start_date)) < currentDateTime)) {//                  $scope.isOver = true;//              } else {//                  $scope.isOver = false;//              }            }, function (err) {                alert(JSON.stringify(err));            }).$promise.finally(function () {                $scope.$broadcast('scroll.refreshComplete');                $scope.loading = false;            })        }    }    enter = $scope.$on("$ionicView.enter", function (event, data) {        if (data.fromCache && $rootScope.commons.refresh) {            if (view == null)                $rootScope.commons.refresh = false;            getscheduledetails();        }    });    $scope.$on("$destroy", function () {        $scope.popover.remove();        enter = null;    });});
 |