|
@@ -0,0 +1,1573 @@
|
|
|
+starter.controller('PayCtrl', function ($rootScope, $scope, $state, $ionicPopover, global, Member, Pay, Tool) {
|
|
|
+ beforeEnter = $scope.$on("$ionicView.beforeEnter", function (event, data) {
|
|
|
+ global.fetch_user().then(function () {
|
|
|
+ if ($scope.recordlist == undefined) getpaydata();
|
|
|
+ set_step_data();
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ Member.selectedemplst = [];
|
|
|
+
|
|
|
+ $scope.goBack = function () {
|
|
|
+ global.goBack();
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.toman = function () {
|
|
|
+ $state.go('payman');
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.torecord = function (record) {
|
|
|
+ if (record) {
|
|
|
+ Pay.recordItem = _.clone(record);
|
|
|
+ $state.go('pay-record', {
|
|
|
+ id: record.id
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ $scope.popover.hide();
|
|
|
+ $state.go('pay-record', {
|
|
|
+ id: -1
|
|
|
+ });
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.addpaybill = function () {
|
|
|
+ $scope.popover.hide();
|
|
|
+ $state.go('pay-bill', {
|
|
|
+ type: 0,
|
|
|
+ id: -1
|
|
|
+ })
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.toauditstep = function () {
|
|
|
+ $scope.popover.hide();
|
|
|
+ Member.customerop = null;
|
|
|
+ if ($scope.is_have_step) {
|
|
|
+ $state.go('auditstep', {
|
|
|
+ "id": 0
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ Member.selectedemplst.push({
|
|
|
+ "user_id": global.user.usrid,
|
|
|
+ "username": global.user.usrname
|
|
|
+ });
|
|
|
+ Member.dialogresult = 1;
|
|
|
+ Member.customerop = 1;
|
|
|
+ $state.go('auditstep', {
|
|
|
+ "id": -1
|
|
|
+ });
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ $ionicPopover.fromTemplateUrl('templates/paymenu.html', {
|
|
|
+ scope: $scope
|
|
|
+ }).then(function (popover) {
|
|
|
+ $scope.popover = popover;
|
|
|
+ });
|
|
|
+
|
|
|
+ $scope.doRefresh = function () {
|
|
|
+ global.refresh = true;
|
|
|
+ getpaydata();
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.loadMore = function () {
|
|
|
+ if ($scope.recordlist != undefined && $scope.recordlist.next != null) {
|
|
|
+ Tool.get($scope.recordlist.next).then(function (data) {
|
|
|
+ _.each(data.results, function (item) {
|
|
|
+ $scope.recordlist.results.push(item);
|
|
|
+ });
|
|
|
+ $scope.recordlist.next = data.next;
|
|
|
+ $scope.recordlist.previous = data.previous;
|
|
|
+ }).finally(function () {
|
|
|
+ $scope.$broadcast('scroll.infiniteScrollComplete');
|
|
|
+ $scope.loading = false;
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ $scope.$broadcast('scroll.infiniteScrollComplete');
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.moreCanBeLoaded = function () {
|
|
|
+ return $scope.recordlist != undefined && $scope.recordlist.next != null;
|
|
|
+ };
|
|
|
+
|
|
|
+ function getpaydata() {
|
|
|
+ if (global.user.token != "") {
|
|
|
+ if ($scope.recordlist == undefined) {
|
|
|
+ $scope.loading = true;
|
|
|
+ }
|
|
|
+ Pay.record.get(function (res) {
|
|
|
+ Pay.recordList = _.clone(res.results);
|
|
|
+ $scope.recordlist = res;
|
|
|
+ $scope.roleid = global.user.roleid;
|
|
|
+ }, 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;
|
|
|
+ getpaydata();
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ $scope.is_have_step = false;
|
|
|
+
|
|
|
+ function set_step_data() {
|
|
|
+ Pay.auditstep.query({"userid": global.user.usrid}, function (data) {
|
|
|
+ Pay.personstepdata = data;
|
|
|
+ $scope.is_have_step = data.length > 0;
|
|
|
+ }, function (err) {
|
|
|
+ alert(JSON.stringify(err));
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ $scope.$on("$destroy", function () {
|
|
|
+ enter = null;
|
|
|
+ Pay.auditstepdata = [];
|
|
|
+ $scope.popover.remove();
|
|
|
+ });
|
|
|
+})
|
|
|
+
|
|
|
+.controller('TypeSetCtrl', function ($rootScope, $scope, $state, $ionicHistory, global, showPopup, Pay, Tool) {
|
|
|
+ $scope.ordering = false;
|
|
|
+ global.fetch_user().then(function () {
|
|
|
+ gettypedata();
|
|
|
+ });
|
|
|
+
|
|
|
+ $scope.toaddtype = function () {
|
|
|
+ $state.go("addtype", {
|
|
|
+ "id": -1
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.toedittype = function (item) {
|
|
|
+ Pay.typeItem = _.clone(item);
|
|
|
+ $state.go("addtype", {
|
|
|
+ "id": item.id
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.reorderItem = function (item, fromIndex, toIndex) {
|
|
|
+ $scope.types.splice(fromIndex, 1);
|
|
|
+ $scope.types.splice(toIndex, 0, item);
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.ok = function () {
|
|
|
+ $scope.ordering = !$scope.ordering;
|
|
|
+ if (!$scope.ordering) {
|
|
|
+ var data = [];
|
|
|
+ for (var i = 0; i < $scope.types.length; i++) {
|
|
|
+ data.push({
|
|
|
+ 'id': $scope.types[i].id,
|
|
|
+ 'ordering': i
|
|
|
+ });
|
|
|
+ }
|
|
|
+ Pay.type.patch(data, function (data) {
|
|
|
+ $scope.doRefresh();
|
|
|
+ })
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.doRefresh = function () {
|
|
|
+ global.refresh = true;
|
|
|
+ gettypedata();
|
|
|
+ }
|
|
|
+
|
|
|
+ function gettypedata() {
|
|
|
+ if (global.user.token != "") {
|
|
|
+ if ($scope.types == undefined) {
|
|
|
+ $scope.loading = true;
|
|
|
+ }
|
|
|
+ Pay.type.get(function (res) {
|
|
|
+ $scope.types = res;
|
|
|
+ Pay.typeList = 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;
|
|
|
+ gettypedata();
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ $scope.$on("$destroy", function () {
|
|
|
+ enter = null;
|
|
|
+ });
|
|
|
+})
|
|
|
+
|
|
|
+.controller('AuditStepSetCtrl', function ($rootScope, $scope, $state, $ionicPopover, $timeout, $location, $ionicScrollDelegate, $ionicHistory, global, showPopup, Member, Pay) {
|
|
|
+ $ionicPopover.fromTemplateUrl('templates/add.html', {
|
|
|
+ scope: $scope
|
|
|
+ }).then(function (popover) {
|
|
|
+ $scope.popover = popover;
|
|
|
+ });
|
|
|
+ var beforeEnter = $scope.$on("$ionicView.beforeEnter", function () {
|
|
|
+ getPayStepMflist();
|
|
|
+ });
|
|
|
+
|
|
|
+ $scope.sortchars = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', '#'];
|
|
|
+ $scope.sortchar = 'A';
|
|
|
+ $scope.is_show_middle = false;
|
|
|
+ $scope.is_show_delete = false;
|
|
|
+
|
|
|
+ $scope.sortByChar = function (char, id) {
|
|
|
+ $scope.sortchar = char;
|
|
|
+ $scope.is_show_middle = true;
|
|
|
+ $location.hash(id);
|
|
|
+ $ionicScrollDelegate.anchorScroll();
|
|
|
+ $timeout(function () {
|
|
|
+ $scope.is_show_middle = false;
|
|
|
+ }, 200);
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.displayremove = function () {
|
|
|
+ $scope.is_show_delete = !$scope.is_show_delete;
|
|
|
+ $scope.popover.hide();
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.ok = function () {
|
|
|
+ $scope.popover.hide();
|
|
|
+ $scope.is_show_delete = false;
|
|
|
+ var data = {"U": [], "D": delete_data, "C": []};
|
|
|
+ if (delete_data.length > 0) {
|
|
|
+ Pay.auditstep.patch(data, function (data) {
|
|
|
+ console.log(data);
|
|
|
+ }, function (err) {
|
|
|
+ // alert('delete error');
|
|
|
+ }).$promise.finally(function (f) {
|
|
|
+ delete_data = [];
|
|
|
+ });
|
|
|
+ Pay.auditstepdata = _.filter(Pay.auditstepdata, function (item) {
|
|
|
+ return !_.contains(delete_data, item.id);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.toadd = function () {
|
|
|
+ Member.resourcemember = [];
|
|
|
+ Member.selectedemplst = [];
|
|
|
+ Member.disabled = true;
|
|
|
+ Member.resourcemember = _.map(_.pluck(Pay.auditstepdata, 'create_user'), function (m) {
|
|
|
+ return {"user_id": m.id, "username": m.username};
|
|
|
+ });
|
|
|
+ Member.showall = false;
|
|
|
+ Member.showgroup = false;
|
|
|
+ Member.customerop = 1;
|
|
|
+ Member.titlename = "选择添加的成员";
|
|
|
+ Member.routename = "auditstep";
|
|
|
+ Member.routeparams = {
|
|
|
+ "id": -1
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.popover.hide();
|
|
|
+ $state.go('selectmember');
|
|
|
+ };
|
|
|
+
|
|
|
+ var delete_data = [];
|
|
|
+ $scope.removeItem = function (user, _char) {
|
|
|
+ var ids = _.pluck(_.filter(Pay.auditstepdata, function (item) {
|
|
|
+ return item.create_user.id == user.id;
|
|
|
+ }), 'id');
|
|
|
+ delete_data = delete_data.concat(ids);
|
|
|
+ for (var i = 0; i < $scope.resultdata.length; i++) {
|
|
|
+ if ($scope.resultdata[i].sortchar == _char) {
|
|
|
+ for (var j = 0; j < $scope.resultdata[i].persons.length; j++) {
|
|
|
+ if ($scope.resultdata[i].persons[j].emp.id == user.id) {
|
|
|
+ $scope.resultdata[i].persons.splice(j, 1);
|
|
|
+ if ($scope.resultdata[i].persons.length == 0) {
|
|
|
+ $scope.resultdata.splice(i, 1);
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.toedit = function (usrid) {
|
|
|
+ Member.customerop = null;
|
|
|
+ $state.go('auditstep', {
|
|
|
+ "id": usrid
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.doRefresh = function () {
|
|
|
+ getPayStepMflist();
|
|
|
+ };
|
|
|
+
|
|
|
+ function getPayStepMflist() {
|
|
|
+ if ($scope.resultdata == undefined) {
|
|
|
+ showPopup.showLoading(1, '正在加载', false);
|
|
|
+ }
|
|
|
+ Pay.auditstep.query(function (data) {
|
|
|
+ Pay.auditstepdata = angular.copy(data);
|
|
|
+ $scope.resultdata = [];
|
|
|
+ var chars = _.map(data, function (item) {
|
|
|
+ return _.indexOf($scope.sortchars, getCamelChar(item.create_user.username)) >= 0 ? getCamelChar(item.create_user.username) : '#';
|
|
|
+ });
|
|
|
+ chars = _.sortBy(_.uniq(chars));
|
|
|
+ for (var i = 0; i < chars.length; i++) {
|
|
|
+ var d = {
|
|
|
+ "sortchar": chars[i],
|
|
|
+ "persons": []
|
|
|
+ };
|
|
|
+ var users = _.map(_.uniq(_.map(_.pluck(data, 'create_user'), JSON.stringify)), JSON.parse);
|
|
|
+ for (var j = 0; j < users.length; j++) {
|
|
|
+ var char = _.indexOf($scope.sortchars, getCamelChar(users[j].username)) >= 0 ? getCamelChar(users[j].username) : '#';
|
|
|
+ if (char == chars[i]) {
|
|
|
+ var p = {"emp": users[j], "checknames": ""};
|
|
|
+ var steps = _.sortBy(_.filter(data, function (v) {
|
|
|
+ return v.create_user.id == users[j].id && !v.is_teller;
|
|
|
+ }), 'ordering');
|
|
|
+ var newsteps = steps.length > 3 ? steps.slice(0, 3) : steps;
|
|
|
+ p.checknames = _.pluck(_.pluck(newsteps, 'verifier'), 'username').join('→');
|
|
|
+ if (steps.length > 3) p.checknames += '...';
|
|
|
+ d.persons.push(p)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ $scope.resultdata.push(d);
|
|
|
+ }
|
|
|
+ var index = _.pluck($scope.resultdata, 'sortchar').indexOf('#');
|
|
|
+ if (index >= 0) {
|
|
|
+ var item = $scope.resultdata[index];
|
|
|
+ $scope.resultdata.splice(index, 1);
|
|
|
+ $scope.resultdata.push(item);
|
|
|
+ }
|
|
|
+ showPopup.hideLoading();
|
|
|
+ }, function (err) {
|
|
|
+ showPopup.hideLoading();
|
|
|
+ }).$promise.finally(function (f) {
|
|
|
+ $scope.$broadcast('scroll.refreshComplete');
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ function getCamelChar(str) {
|
|
|
+ return pinyin.getCamelChars(str).toUpperCase().charAt(0)
|
|
|
+ }
|
|
|
+})
|
|
|
+
|
|
|
+.controller('AddTypeCtrl', function ($rootScope, $scope, $state, $ionicHistory, global, showPopup, Pay, Tool) {
|
|
|
+ var icon = {icon: null}, iconcolor = null, isModified = false;
|
|
|
+ $scope.typeid = $state.params['id'];
|
|
|
+ $scope.data = {
|
|
|
+ "name": "",
|
|
|
+ "icon": "",
|
|
|
+ "icon_color": "",
|
|
|
+ "ordering": 0
|
|
|
+ };
|
|
|
+ $scope.iconcolordata = [{
|
|
|
+ 'background': "#FCB232",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#F89E79",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#FB7B7A",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#F393C3",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#DF9FF3",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#C08CCE",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#609BF5",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#4BB1FB",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#89cff0",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#68D3C9",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#87CC79",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#4AD592",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#C8BEBD",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#CBA7AB",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#868CA6",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#8299CF",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#A0C7E6",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#90B1B6",
|
|
|
+ 'isacitve': false
|
|
|
+ }];
|
|
|
+
|
|
|
+ $scope.icondata = [{
|
|
|
+ 'background': "#fff",
|
|
|
+ 'icon': "ion-android-bus",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#fff",
|
|
|
+ 'icon': "ion-ios-cart",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#fff",
|
|
|
+ 'icon': "ion-ios-telephone",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#fff",
|
|
|
+ 'icon': "ion-ios-home",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#fff",
|
|
|
+ 'icon': "ion-fork",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#fff",
|
|
|
+ 'icon': "icon-money",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#fff",
|
|
|
+ 'icon': "ion-android-film",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#fff",
|
|
|
+ 'icon': "ion-umbrella",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#fff",
|
|
|
+ 'icon': "ion-ios-game-controller-b",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#fff",
|
|
|
+ 'icon': "ion-android-print",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#fff",
|
|
|
+ 'icon': "ion-tshirt",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#fff",
|
|
|
+ 'icon': "ion-ios-medkit",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#fff",
|
|
|
+ 'icon': "ion-outlet",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#fff",
|
|
|
+ 'icon': "ion-android-bicycle",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#fff",
|
|
|
+ 'icon': "ion-ios-pulse-strong",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#fff",
|
|
|
+ 'icon': "ion-trophy",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#fff",
|
|
|
+ 'icon': "ion-android-favorite",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#fff",
|
|
|
+ 'icon': "ion-ios-cloud-download",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#fff",
|
|
|
+ 'icon': "ion-plane",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#fff",
|
|
|
+ 'icon': "ion-android-bar",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#fff",
|
|
|
+ 'icon': "ion-nuclear",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#fff",
|
|
|
+ 'icon': "ion-film-marker",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#fff",
|
|
|
+ 'icon': "ion-icecream",
|
|
|
+ 'isacitve': false
|
|
|
+ }, {
|
|
|
+ 'background': "#fff",
|
|
|
+ 'icon': "ion-flag",
|
|
|
+ 'isacitve': false
|
|
|
+ }];
|
|
|
+
|
|
|
+ global.fetch_user().then(function () {
|
|
|
+ if ($scope.typeid > 0) {
|
|
|
+ $scope.data = Tool.cloneObj(Pay.typeItem);
|
|
|
+ iconcolor = _.find($scope.iconcolordata, function (item) {
|
|
|
+ if (item.background == $scope.data.icon_color) {
|
|
|
+ item.isacitve = true;
|
|
|
+ return item;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ iconcolor = iconcolor.background;
|
|
|
+ icon = _.find($scope.icondata, function (item) {
|
|
|
+ if (item.icon == $scope.data.icon) {
|
|
|
+ item.isacitve = true;
|
|
|
+ item.background = $scope.data.icon_color;
|
|
|
+ return item;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ $scope.data.ordering = Pay.typeList.length;
|
|
|
+ $scope.iconcolordata[0].isacitve = true;
|
|
|
+ $scope.icondata[0].background = '#FCB232';
|
|
|
+ $scope.icondata[0].isacitve = true;
|
|
|
+ iconcolor = $scope.iconcolordata[0].background;
|
|
|
+ icon.icon = $scope.icondata[0].icon;
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ if ($scope.typeid > 0) {
|
|
|
+ watch = $scope.$watch('data', function (n, o) {
|
|
|
+ if (n == o)
|
|
|
+ return;
|
|
|
+ isModified = true;
|
|
|
+ }, true);
|
|
|
+ }
|
|
|
+
|
|
|
+ $scope.selecticon = function (iconitem) {
|
|
|
+ _.find($scope.icondata, function (item) {
|
|
|
+ if (item.isacitve) {
|
|
|
+ item.isacitve = false;
|
|
|
+ item.background = '#fff';
|
|
|
+ return item;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ iconitem.isacitve = true;
|
|
|
+ iconitem.background = iconcolor;
|
|
|
+ icon = iconitem;
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.selectcolor = function (coloritem) {
|
|
|
+ _.find($scope.iconcolordata, function (item) {
|
|
|
+ if (item.isacitve) {
|
|
|
+ item.isacitve = false;
|
|
|
+ return item;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ coloritem.isacitve = true;
|
|
|
+ icon.background = coloritem.background;
|
|
|
+ iconcolor = coloritem.background;
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.ok = function () {
|
|
|
+ if ($scope.data.name == "") {
|
|
|
+ return showPopup.PopupWindow(0, '类型名称不能为空!');
|
|
|
+ }
|
|
|
+ $scope.data.icon = icon.icon;
|
|
|
+ $scope.data.icon_color = iconcolor;
|
|
|
+ var type = null;
|
|
|
+ if ($scope.typeid > 0) {
|
|
|
+ if (isModified) {
|
|
|
+ type = _.find(Pay.typeList, function (item) {
|
|
|
+ if (item.id != $scope.typeid && item.name == $scope.data.name) {
|
|
|
+ showPopup.PopupWindow(0, '类型名称不能重复!');
|
|
|
+ return item;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if (!type) {
|
|
|
+ showPopup.showLoading(1, '正在上传');
|
|
|
+ Pay.type.update($scope.data, function () {
|
|
|
+ $rootScope.commons.refresh = true;
|
|
|
+ showPopup.hideLoading();
|
|
|
+ $scope.back();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ $scope.back();
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ type = _.find(Pay.typeList, function (item) {
|
|
|
+ if (item.name == $scope.data.name) {
|
|
|
+ showPopup.PopupWindow(0, '类型名称不能重复!');
|
|
|
+ return item;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if (!type) {
|
|
|
+ showPopup.showLoading(1, '正在上传');
|
|
|
+ Pay.type.save($scope.data, function () {
|
|
|
+ $rootScope.commons.refresh = true;
|
|
|
+ showPopup.hideLoading();
|
|
|
+ $scope.back();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.deltype = function () {
|
|
|
+ showPopup.confirm('确定删除该类型吗?', '确定', '取消').then(function (res) {
|
|
|
+ if (res) {
|
|
|
+ showPopup.showLoading(1, '正在删除');
|
|
|
+ Pay.type.delete({'id': $scope.typeid}, function () {
|
|
|
+ $rootScope.commons.refresh = true;
|
|
|
+ showPopup.hideLoading();
|
|
|
+ $scope.back();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.back = function () {
|
|
|
+ $ionicHistory.goBack();
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.$on('$destroy', function () {
|
|
|
+ if ($scope.typeid > 0) {
|
|
|
+ watch();
|
|
|
+ }
|
|
|
+ })
|
|
|
+})
|
|
|
+
|
|
|
+.controller('AuditStepCtrl', function ($rootScope, $scope, $state, $ionicHistory, $timeout, global, Member, showPopup, Pay, Tool) {
|
|
|
+ $scope.create_users = [];
|
|
|
+ $scope.step_users = [];
|
|
|
+ $scope.teller = null;
|
|
|
+ $scope.op_id = 0;
|
|
|
+ var beforeEnter = $scope.$on("$ionicView.enter", function () {
|
|
|
+ $scope.op_id = $state.params['id'];
|
|
|
+ if ($scope.op_id != 0) Tool.removeBackView(['selectmember', 'selectsinglemember', 'auditstep']);
|
|
|
+ var back = $ionicHistory.backView();
|
|
|
+ if ($scope.op_id > 0) {
|
|
|
+ $scope.titlename = "编辑审批步骤";
|
|
|
+ if (Member.customerop == null) {
|
|
|
+ $scope.create_users = [_.find(Pay.auditstepdata, function (item) {
|
|
|
+ return item.create_user.id == $scope.op_id;
|
|
|
+ }).create_user];
|
|
|
+ setusers(Pay.auditstepdata, $scope.op_id);
|
|
|
+ } else seteditdata();
|
|
|
+ } else if ($scope.op_id < 0) {
|
|
|
+ $scope.titlename = "添加审批步骤";
|
|
|
+ setdata();
|
|
|
+ if (back.stateName == 'pay' && Member.customerop == null && Pay.personstepdata.length > 0) setusers(Pay.personstepdata, Pay.personstepdata[0].create_user.id);
|
|
|
+ } else if ($scope.op_id == 0) { //修改当前登录人的审批步骤
|
|
|
+ $scope.titlename = "编辑审批步骤";
|
|
|
+ if (Member.customerop == null) {
|
|
|
+ if (Pay.personstepdata.length == 0) {
|
|
|
+ Pay.auditstep.query({"userid": global.user.usrid}, function (data) {
|
|
|
+ $scope.step_data = angular.copy(data);
|
|
|
+ $scope.create_users.push({"id": global.user.usrid, "username": global.user.usrname});
|
|
|
+ setusers(data, global.user.usrid);
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ $scope.create_users = [{"id": global.user.usrid, "username": global.user.usrname}];
|
|
|
+ setusers(Pay.personstepdata, Pay.personstepdata[0].create_user.id);
|
|
|
+ }
|
|
|
+ } else setdata();
|
|
|
+ $scope.showbar = true;
|
|
|
+ }
|
|
|
+ $scope.is_current_user = (global.user.usrid == formatusers($scope.create_users)[0].user_id && back.stateName == "pay");
|
|
|
+ });
|
|
|
+
|
|
|
+ $scope.$on("$destroy", function () {
|
|
|
+ Pay.personstepdata = [];
|
|
|
+ Member.selectedemplst = [];
|
|
|
+ Member.unenabledata = [];
|
|
|
+ beforeEnter = null;
|
|
|
+ });
|
|
|
+
|
|
|
+ $scope.add_teller = function () {
|
|
|
+ set_member_option(false, $scope.teller == null ? [] : [$scope.teller], 3, "选择出纳人员", "selectsinglemember");
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.add_step_user = function () {
|
|
|
+ set_member_option(true, $scope.step_users, 2, "选择审批人", "selectsinglemember");
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.add_create_user = function () {
|
|
|
+ set_member_option(false, $scope.create_users, 1, "选择添加的成员", "selectmember");
|
|
|
+ Member.unenabledata = formatusers(_.pluck(Pay.auditstepdata, "create_user"));
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.ok = function () {
|
|
|
+ if ($scope.step_users.length == 0) {
|
|
|
+ showPopup.PopupWindow(0, "请选择审批人!", false);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if ($scope.teller == null) {
|
|
|
+ showPopup.PopupWindow(0, "请选择出纳人!", false);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ showPopup.showLoading(1, '正在提交', false);
|
|
|
+ if ($scope.op_id >= 0) {//edit
|
|
|
+ Pay.auditstep.patch({"C": [], "D": [], "U": get_upload_data()}, function (data) {
|
|
|
+ showPopup.hideLoading();
|
|
|
+ $ionicHistory.goBack();
|
|
|
+ }, function (err) {
|
|
|
+ showPopup.hideLoading();
|
|
|
+ // alert(JSON.stringify(err))
|
|
|
+ $ionicHistory.goBack();
|
|
|
+ })
|
|
|
+ } else if ($scope.op_id < 0) { //add
|
|
|
+ Pay.auditstep.save(get_upload_data(), function (data) {
|
|
|
+ showPopup.hideLoading();
|
|
|
+ $ionicHistory.goBack();
|
|
|
+ }, function (err) {
|
|
|
+ alert(JSON.stringify(err));
|
|
|
+ })
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.goback = function () {
|
|
|
+ $ionicHistory.goBack();
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.toSeeList = function () {
|
|
|
+ $state.go("seestepmflist");
|
|
|
+ };
|
|
|
+
|
|
|
+ function set_member_option(is_disabled, data, op, titlename, route) {
|
|
|
+ Member.selectedemplst = [];
|
|
|
+ Member.disabled = is_disabled;
|
|
|
+ Member.resourcemember = formatusers(data);
|
|
|
+ Member.customerop = op;
|
|
|
+ Member.titlename = titlename;
|
|
|
+ $state.go(route);
|
|
|
+ }
|
|
|
+
|
|
|
+ function seteditdata() {
|
|
|
+ $scope.titlename = "编辑审批步骤";
|
|
|
+ if (Member.customerop == null) $scope.create_users = Member.selectedemplst;
|
|
|
+ setdata();
|
|
|
+ }
|
|
|
+
|
|
|
+ function setdata() {
|
|
|
+ if (Member.customerop == 1) { //申请
|
|
|
+ if (Member.dialogresult == 1) $scope.create_users = Member.selectedemplst;
|
|
|
+ } else if (Member.customerop == 2) { //审核
|
|
|
+ if (Member.selectedemplst.length > 0) $scope.step_users.push(Member.selectedemplst[0])
|
|
|
+ } else if (Member.customerop == 3) {//出纳
|
|
|
+ if (Member.selectedemplst.length > 0) $scope.teller = Member.selectedemplst[0]
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ function get_upload_data() {
|
|
|
+ var data = [];
|
|
|
+ _.each($scope.create_users, function (c_user) {
|
|
|
+ data = data.concat(_.map($scope.step_users, function (s_user, index) {
|
|
|
+ return {"create_user": getuserid(c_user), "verifier": getuserid(s_user), "is_teller": false, "ordering": index + 1};
|
|
|
+ }));
|
|
|
+ data.push({"create_user": getuserid(c_user), "verifier": getuserid($scope.teller), "is_teller": true, "ordering": $scope.step_users.length + 1})
|
|
|
+ });
|
|
|
+ return data;
|
|
|
+ }
|
|
|
+
|
|
|
+ function getuserid(user) {
|
|
|
+ return _.has(user, 'id') ? user.id : user.user_id;
|
|
|
+ }
|
|
|
+
|
|
|
+ function setusers(data, userid) {
|
|
|
+ $scope.step_users = _.pluck(_.sortBy(_.filter(data, function (item) {
|
|
|
+ return item.create_user.id == userid && !item.is_teller;
|
|
|
+ }), "ordering"), 'verifier');
|
|
|
+ $scope.teller = _.find(data, function (item) {
|
|
|
+ return item.create_user.id == userid && item.is_teller;
|
|
|
+ }).verifier;
|
|
|
+ }
|
|
|
+
|
|
|
+ function formatusers(data) {
|
|
|
+ return _.map(data, function (item) {
|
|
|
+ return {"user_id": _.has(item, 'id') ? item.id : item.user_id, "username": item.username}
|
|
|
+ })
|
|
|
+ }
|
|
|
+})
|
|
|
+
|
|
|
+.controller('SeeStepMfListCtrl', function ($rootScope, $scope, $state, $ionicHistory, $cordovaDatePicker, $timeout, global, Pay, Member, showPopup) {
|
|
|
+ doRefresh();
|
|
|
+ $scope.usestep = function (step) {
|
|
|
+ Member.customerop = null;
|
|
|
+ Pay.personstepdata = _.filter($scope.step_data_copy, function (item) {
|
|
|
+ return item.create_user.id == step.create_user.id;
|
|
|
+ });
|
|
|
+ $ionicHistory.goBack();
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.doRefresh = function () {
|
|
|
+ doRefresh();
|
|
|
+ };
|
|
|
+
|
|
|
+ function doRefresh() {
|
|
|
+ if ($scope.step_datas == undefined) showPopup.showLoading(1, '正在加载', false);
|
|
|
+ Pay.auditstep.query(function (data) {
|
|
|
+ $scope.step_datas = [];
|
|
|
+ $scope.step_data_copy = angular.copy(data);
|
|
|
+ var users = _.map(_.uniq(_.map(_.pluck(data, 'create_user'), JSON.stringify)), JSON.parse);
|
|
|
+ _.each(users, function (user) {
|
|
|
+ if (user.id != global.user.usrid) {
|
|
|
+ var step_users = _.pluck(_.sortBy(_.filter(data, function (item) {
|
|
|
+ return item.create_user.id == user.id && !item.is_teller;
|
|
|
+ }), 'ordering'), 'verifier');
|
|
|
+ var step_usernames = _.pluck(step_users, 'username').join('→');
|
|
|
+ var teller = _.find(data, function (item) {
|
|
|
+ return item.create_user.id == user.id && item.is_teller;
|
|
|
+ }).verifier;
|
|
|
+ $scope.step_datas.push({"create_user": user, "step_users": step_users, "teller": teller, "step_usernames": step_usernames})
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }, function (err) {
|
|
|
+ showPopup.hideLoading();
|
|
|
+ alert(JSON.stringify(err));
|
|
|
+ }).$promise.finally(function () {
|
|
|
+ $scope.$broadcast('scroll.refreshComplete');
|
|
|
+ showPopup.hideLoading();
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ $scope.goback = function () {
|
|
|
+ $ionicHistory.goBack();
|
|
|
+ };
|
|
|
+})
|
|
|
+
|
|
|
+.controller('PayRecordCtrl', function ($rootScope, $scope, $state, $cordovaDatePicker, $timeout, $ionicModal, $ionicHistory, $q, ImageManage, global, showPopup, Pay, Tool) {
|
|
|
+ showPopup.modalTemplate('templates/modal-paytype.html', 'slide-in-right', $scope).then(function (modal) {
|
|
|
+ $scope.select_pay_type = modal;
|
|
|
+ });
|
|
|
+ $scope.recordid = $state.params['id'];
|
|
|
+ $scope.titleArr = ['新建', '编辑'];
|
|
|
+ $scope.popup = {
|
|
|
+ isPopup: false
|
|
|
+ };
|
|
|
+ $scope.record = {
|
|
|
+ "amount": null,
|
|
|
+ "pay_type": null,
|
|
|
+ "type_modal": null,
|
|
|
+ "spend_date": null,
|
|
|
+ "description": null,
|
|
|
+ "files": []
|
|
|
+ };
|
|
|
+ var isModified = false;
|
|
|
+
|
|
|
+ Pay.type.get(function (res) {
|
|
|
+ $scope.types = res;
|
|
|
+ Pay.typeList = res;
|
|
|
+ _.each($scope.types, function (type) {
|
|
|
+ type.color = {
|
|
|
+ 'color': type.icon_color
|
|
|
+ };
|
|
|
+ type.selected = false;
|
|
|
+ });
|
|
|
+ }, function (err) {
|
|
|
+ alert(JSON.stringify(err));
|
|
|
+ });
|
|
|
+
|
|
|
+ if ($scope.recordid > 0) {
|
|
|
+ $scope.record = Tool.cloneObj(Pay.recordItem);
|
|
|
+ $scope.record.amount = parseFloat($scope.record.amount);
|
|
|
+ }
|
|
|
+
|
|
|
+ $scope.ok = function () {
|
|
|
+ if ($scope.record.amount == null) {
|
|
|
+ showPopup.PopupWindow(0, "请填写金额", false);
|
|
|
+ return
|
|
|
+ } else if ($scope.record.type_modal == null) {
|
|
|
+ showPopup.PopupWindow(0, "请选择消费类型", false);
|
|
|
+ return
|
|
|
+ } else if ($scope.record.spend_date == null) {
|
|
|
+ showPopup.PopupWindow(0, "请选择消费日期", false);
|
|
|
+ return
|
|
|
+ }
|
|
|
+ showPopup.showLoading(1, '正在提交', true);
|
|
|
+ if ($scope.recordid > 0) {
|
|
|
+ if (isModified) {
|
|
|
+ Pay.record.update($scope.record, function () {
|
|
|
+ $rootScope.commons.refresh = true;
|
|
|
+ _.each($scope.deleteimage_list, function (imageID) {
|
|
|
+ Pay.recordfile.delete({id: imageID});
|
|
|
+ });
|
|
|
+ var imagefiles = [];
|
|
|
+ _.each($scope.record.files, function (image) {
|
|
|
+ if (!image.id)
|
|
|
+ imagefiles.push(image.file_full_path);
|
|
|
+ });
|
|
|
+ if (imagefiles.length > 0) {
|
|
|
+ postimg(imagefiles, $scope.recordid);
|
|
|
+ } else {
|
|
|
+ showPopup.hideLoading();
|
|
|
+ $ionicHistory.goBack();
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ Pay.record.save($scope.record, function (data) {
|
|
|
+ $rootScope.commons.refresh = true;
|
|
|
+ var imagefiles = [];
|
|
|
+ _.each($scope.record.files, function (image) {
|
|
|
+ if (!image.id)
|
|
|
+ imagefiles.push(image.file_full_path);
|
|
|
+ });
|
|
|
+ if (imagefiles.length > 0) {
|
|
|
+ postimg(imagefiles, data.id);
|
|
|
+ } else {
|
|
|
+ showPopup.hideLoading();
|
|
|
+ $ionicHistory.goBack();
|
|
|
+ }
|
|
|
+ }, function (err) {
|
|
|
+ alert('post Record error' + err);
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $scope.selectSpendDate = function (spend_date) {
|
|
|
+ var options = {
|
|
|
+ mode: 'date',
|
|
|
+ date: spend_date ? new Date(spend_date) : new Date(),
|
|
|
+ androidTheme: 3
|
|
|
+ };
|
|
|
+ $cordovaDatePicker.show(options).then(function (date) {
|
|
|
+ if (date == undefined) return;
|
|
|
+ $scope.record.spend_date = date;
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ $scope.selectPayType = function () {
|
|
|
+ $scope.select_pay_type.show();
|
|
|
+ $rootScope.commons.modal = $scope.select_pay_type;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ $scope.cancel = function (op) {
|
|
|
+ $rootScope.commons.modal.hide();
|
|
|
+ }
|
|
|
+
|
|
|
+ $scope.checkType = function (type) {
|
|
|
+ $scope.pay_type = type.id;
|
|
|
+ $scope.record.type_modal = type;
|
|
|
+ $rootScope.commons.modal.hide();
|
|
|
+ }
|
|
|
+
|
|
|
+ $scope.deleteRecord = function () {
|
|
|
+ showPopup.confirm("是否删除该消费记录?", '是', '否').then(function (res) {
|
|
|
+ if (res) {
|
|
|
+ Pay.record.delete({id: $scope.recordid}, function () {
|
|
|
+ $rootScope.commons.refresh = true;
|
|
|
+ $ionicHistory.goBack();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ $scope.addphoto = function () {
|
|
|
+ if ($scope.record.files.length < 5) {
|
|
|
+ $scope.popup.optionsPopup = showPopup.showSelectImgPopup(Camera, ImagePicker, $scope);
|
|
|
+ $scope.popup.isPopup = true;
|
|
|
+ } else {
|
|
|
+ showPopup.PopupWindow(0, "上传图片数量需小于等于5!", false);
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ var ImagePicker = function () { //打开相册
|
|
|
+ $scope.popup.optionsPopup.close();
|
|
|
+ ImageManage.ImagePicker_getPictures(5).then(function (result) {
|
|
|
+ _.each(result, function (imageUrl) {
|
|
|
+ $scope.record.files.push({
|
|
|
+ "file_thumbnail_path": imageUrl,
|
|
|
+ "file_full_path": imageUrl
|
|
|
+ });
|
|
|
+ })
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
+ var Camera = function () {
|
|
|
+ $scope.popup.optionsPopup.close();
|
|
|
+ ImageManage.Camera_getPicture(true).then(function (result) {
|
|
|
+ $scope.record.files.push({
|
|
|
+ "file_thumbnail_path": result,
|
|
|
+ "file_full_path": result
|
|
|
+ });
|
|
|
+ });
|
|
|
+ };
|
|
|
+
|
|
|
+ function postimg(imgfiles, id) {
|
|
|
+ ImageManage.uploadImage(imgfiles, 'pay', id, 'payrecordfile').then(function (res) {
|
|
|
+ $q.all(res).then(function (data) {
|
|
|
+ showPopup.hideLoading();
|
|
|
+ $ionicHistory.goBack();
|
|
|
+ })
|
|
|
+ }, function (err) {
|
|
|
+ alert(JSON.stringify(error));
|
|
|
+ showPopup.PopupWindow(0, 'upload image fail');
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ $scope.deleteimage_list = [];
|
|
|
+ $scope.shouBigImage = function (imageUrl) {
|
|
|
+ $scope.Url = imageUrl;
|
|
|
+ $rootScope.commons.bigImage = true;
|
|
|
+ };
|
|
|
+
|
|
|
+ $rootScope.commons.bigImage = false;
|
|
|
+ $scope.hideBigImage = function () {
|
|
|
+ $rootScope.commons.bigImage = false;
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.deleteimage = function () {
|
|
|
+ var img = _.find($scope.record.files, function (image) {
|
|
|
+ return image.file_full_path == $scope.Url;
|
|
|
+ });
|
|
|
+ if (img) {
|
|
|
+ $scope.record.files.splice(_.indexOf($scope.record.files, img), 1);
|
|
|
+ if (img.id)
|
|
|
+ $scope.deleteimage_list.push(img.id);
|
|
|
+ }
|
|
|
+ $rootScope.commons.bigImage = false;
|
|
|
+ };
|
|
|
+
|
|
|
+ if ($scope.recordid > 0) {
|
|
|
+ watch = $scope.$watch('record', function (n, o) {
|
|
|
+ if (n == o)
|
|
|
+ return;
|
|
|
+ isModified = true;
|
|
|
+ }, true);
|
|
|
+ }
|
|
|
+
|
|
|
+ $scope.$on("$destroy", function () {
|
|
|
+ $scope.select_pay_type.remove();
|
|
|
+ if ($scope.recordid > 0) {
|
|
|
+ watch();
|
|
|
+ }
|
|
|
+ });
|
|
|
+})
|
|
|
+
|
|
|
+.controller('PayBillCtrl', function ($rootScope, $scope, $state, $ionicHistory, $ionicModal, global, showPopup, Pay, Tool) {
|
|
|
+ $scope.select_record = showPopup.modalTemplate('templates/modal-selectrecord.html', 'slide-in-right', $scope);
|
|
|
+ var isFirst = false;
|
|
|
+ $scope.type = $state.params['type'];
|
|
|
+ $scope.billid = $state.params['id']
|
|
|
+ $scope.titleArr = ['新建', '编辑'];
|
|
|
+ $scope.amountSum = 0;
|
|
|
+ $scope.bill = {
|
|
|
+ "title": null,
|
|
|
+ "note": null,
|
|
|
+ "status": null,
|
|
|
+ "record": [],
|
|
|
+ "record_old": []
|
|
|
+ }
|
|
|
+ $scope.records = [];
|
|
|
+
|
|
|
+ global.fetch_user().then(function () {
|
|
|
+ Pay.auditstep.get({userid: global.user.usrid}, function (data) {
|
|
|
+ $scope.checkusrdata = data;
|
|
|
+ });
|
|
|
+ if ($scope.billid < 0) {
|
|
|
+ $scope.recordlist = Tool.cloneObj(Pay.recordList);
|
|
|
+ $scope.select_record.then(function (modal) {
|
|
|
+ $scope.select_record = modal;
|
|
|
+ $rootScope.commons.modal = modal;
|
|
|
+ $scope.select_record.show();
|
|
|
+ });
|
|
|
+ isFirst = true;
|
|
|
+ } else {
|
|
|
+ $scope.select_record.then(function (modal) {
|
|
|
+ $scope.select_record = modal;
|
|
|
+ $rootScope.commons.modal = modal;
|
|
|
+ });
|
|
|
+ $scope.bill = Tool.cloneObj(Pay.detailItem);
|
|
|
+ $scope.recordlist = Tool.cloneObj(Pay.recordList);
|
|
|
+ $scope.records = $scope.bill.record;
|
|
|
+ $scope.bill.record_old = _.map($scope.bill.record, function (record) {
|
|
|
+ return record.id;
|
|
|
+ });
|
|
|
+ _.each($scope.records.reverse(), function (record) {
|
|
|
+ record.selected = true;
|
|
|
+ $scope.recordlist.splice(0, 0, record);
|
|
|
+ });
|
|
|
+ $scope.amountSum = $scope.bill.total_amount;
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ $scope.selectRecord = function (recorditem) {
|
|
|
+ if (recorditem.selected) {
|
|
|
+ $scope.amountSum = parseFloat($scope.amountSum) + parseFloat(recorditem.amount);
|
|
|
+ } else {
|
|
|
+ $scope.amountSum = parseFloat($scope.amountSum) - parseFloat(recorditem.amount);
|
|
|
+ }
|
|
|
+ $scope.amountSum = $scope.amountSum.toFixed(2);
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.toEditRecord = function () {
|
|
|
+ $scope.select_record.show();
|
|
|
+ $rootScope.commons.modal = $scope.select_record;
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.cancel = function (op) {
|
|
|
+ if (op == 'm') {
|
|
|
+ if (isFirst) {
|
|
|
+ $ionicHistory.goBack();
|
|
|
+ }
|
|
|
+ $rootScope.commons.modal.hide();
|
|
|
+ $rootScope.commons.modal = undefined;
|
|
|
+ } else {
|
|
|
+ $ionicHistory.goBack();
|
|
|
+ }
|
|
|
+
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.ok = function (op) {
|
|
|
+ if (op == 'bill') {
|
|
|
+ if ($scope.bill.title == null) {
|
|
|
+ showPopup.PopupWindow(0, "请填写标题", false);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ $scope.bill.record = _.map($scope.records, function (item) {
|
|
|
+ return item.id;
|
|
|
+ });
|
|
|
+ showPopup.showLoading(1, '正在提交', false);
|
|
|
+ if ($scope.billid < 0) {
|
|
|
+ Pay.billdetail.save($scope.bill, function (data) {
|
|
|
+ showPopup.hideLoading();
|
|
|
+ $state.go('paybilldetails', {
|
|
|
+ id: data.id
|
|
|
+ });
|
|
|
+ }, function (err) {
|
|
|
+ alert(JSON.stringify(err))
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ $scope.bill = _.pick($scope.bill, 'id', 'title', 'note', 'status', 'record', 'record_old');
|
|
|
+ Pay.billdetail.update($scope.bill, function (data) {
|
|
|
+ showPopup.hideLoading();
|
|
|
+ $state.go('paybilldetails', {
|
|
|
+ id: data.id
|
|
|
+ });
|
|
|
+ }, function (err) {
|
|
|
+ alert(JSON.stringify(err))
|
|
|
+ });
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ $scope.records = _.filter($scope.recordlist, function (item) {
|
|
|
+ return item.selected;
|
|
|
+ });
|
|
|
+ $rootScope.commons.modal.hide();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $scope.$on("$destroy", function () {
|
|
|
+ $scope.select_record.remove();
|
|
|
+ });
|
|
|
+})
|
|
|
+
|
|
|
+.controller('BillListCtrl', function ($rootScope, $scope, $state, global, Pay) {
|
|
|
+ var type = $state.params['type'];
|
|
|
+ global.fetch_user().then(function () {
|
|
|
+ getpaylistdata();
|
|
|
+ });
|
|
|
+
|
|
|
+ $scope.doRefresh = function () {
|
|
|
+ global.refresh = true;
|
|
|
+ getpaylistdata();
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.loadMore = function () {
|
|
|
+ if ($scope.bills != undefined && $scope.bills.next != null) {
|
|
|
+ Tool.get($scope.bills.next).then(function (data) {
|
|
|
+ _.each(data.results, function (item) {
|
|
|
+ $scope.bills.results.push(item);
|
|
|
+ });
|
|
|
+ $scope.bills.next = data.next;
|
|
|
+ $scope.bills.previous = data.previous;
|
|
|
+ }).finally(function () {
|
|
|
+ $scope.$broadcast('scroll.infiniteScrollComplete');
|
|
|
+ $scope.loading = false;
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ $scope.$broadcast('scroll.infiniteScrollComplete');
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.moreCanBeLoaded = function () {
|
|
|
+ return $scope.bills != undefined && $scope.bills.next != null;
|
|
|
+ };
|
|
|
+
|
|
|
+ function getpaylistdata() {
|
|
|
+ if (global.user.token != "") {
|
|
|
+ if ($scope.bills == undefined) {
|
|
|
+ $scope.loading = true;
|
|
|
+ }
|
|
|
+ Pay.bill.get({type: type}, function (data) {
|
|
|
+ $scope.bills = data;
|
|
|
+ }, function (err) {
|
|
|
+ alert(JSON.stringify(err));
|
|
|
+ }).$promise.finally(function () {
|
|
|
+ $scope.$broadcast('scroll.refreshComplete');
|
|
|
+ $scope.loading = false;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+})
|
|
|
+
|
|
|
+.controller('BillApproveCtrl', function ($rootScope, $scope, $state, global, Pay) {
|
|
|
+ var type = $state.params['type'];
|
|
|
+ global.fetch_user().then(function () {
|
|
|
+ getpaylistdata();
|
|
|
+ });
|
|
|
+
|
|
|
+ $scope.doRefresh = function () {
|
|
|
+ global.refresh = true;
|
|
|
+ getpaylistdata();
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.loadMore = function () {
|
|
|
+ if ($scope.bills != undefined && $scope.bills.next != null) {
|
|
|
+ Tool.get($scope.bills.next).then(function (data) {
|
|
|
+ _.each(data.results, function (item) {
|
|
|
+ $scope.bills.results.push(item);
|
|
|
+ });
|
|
|
+ $scope.bills.next = data.next;
|
|
|
+ $scope.bills.previous = data.previous;
|
|
|
+ }).finally(function () {
|
|
|
+ $scope.$broadcast('scroll.infiniteScrollComplete');
|
|
|
+ $scope.loading = false;
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ $scope.$broadcast('scroll.infiniteScrollComplete');
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.moreCanBeLoaded = function () {
|
|
|
+ return $scope.bills != undefined && $scope.bills.next != null;
|
|
|
+ };
|
|
|
+
|
|
|
+ function getpaylistdata() {
|
|
|
+ if (global.user.token != "") {
|
|
|
+ if ($scope.bills == undefined) {
|
|
|
+ $scope.loading = true;
|
|
|
+ }
|
|
|
+ Pay.bill.get({type: type}, function (data) {
|
|
|
+ $scope.bills = data;
|
|
|
+ }, function (err) {
|
|
|
+ alert(JSON.stringify(err));
|
|
|
+ }).$promise.finally(function () {
|
|
|
+ $scope.$broadcast('scroll.refreshComplete');
|
|
|
+ $scope.loading = false;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+})
|
|
|
+
|
|
|
+.controller('BillApprovedCtrl', function ($rootScope, $scope, $state, global, Pay, Member, Tool) {
|
|
|
+ var type = $state.params['type'];
|
|
|
+ $scope.centerdata = [
|
|
|
+ {"key": null, "name": "全部状态", "check": true},
|
|
|
+ {"key": 0, "name": "已驳回", "check": false},
|
|
|
+ {"key": 1, "name": "已支付", "check": false},
|
|
|
+ {"key": 2, "name": "未支付", "check": false},
|
|
|
+ {"key": 3, "name": "处理中", "check": false}];
|
|
|
+ var beforeenter = $scope.$on('$ionicView.beforeEnter', function () {
|
|
|
+ $scope.user_id = Member.selectedemplst.length > 0 ? Member.selectedemplst[0].user_id : 0;
|
|
|
+ });
|
|
|
+ global.fetch_user().then(function () {
|
|
|
+ getpaylistdata(null, null, null, null);
|
|
|
+ });
|
|
|
+
|
|
|
+ $scope.doRefresh = function () {
|
|
|
+ global.refresh = true;
|
|
|
+ getpaylistdata();
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.loadMore = function () {
|
|
|
+ if ($scope.bills != undefined && $scope.bills.next != null) {
|
|
|
+ Tool.get($scope.bills.next).then(function (data) {
|
|
|
+ _.each(data.results, function (item) {
|
|
|
+ $scope.bills.results.push(item);
|
|
|
+ });
|
|
|
+ $scope.bills.next = data.next;
|
|
|
+ $scope.bills.previous = data.previous;
|
|
|
+ }).finally(function () {
|
|
|
+ $scope.$broadcast('scroll.infiniteScrollComplete');
|
|
|
+ $scope.loading = false;
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ $scope.$broadcast('scroll.infiniteScrollComplete');
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.moreCanBeLoaded = function () {
|
|
|
+ return $scope.bills != undefined && $scope.bills.next != null;
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.selectClick = function (date, status, user_id) {
|
|
|
+ var year = date == null ? date : (date.length > 4 ? date.substr(0, 4) : date);
|
|
|
+ var month = date == null ? date : (date.length == 4 ? null : date.substr(5, date.length - 5));
|
|
|
+ getpaylistdata(status == null ? status : parseInt(status), year, month, user_id);
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.setUser = function () {
|
|
|
+ $scope.user_id = 0;
|
|
|
+ };
|
|
|
+
|
|
|
+ function getpaylistdata(status, year, month, create_user) {
|
|
|
+ if (global.user.token != "") {
|
|
|
+ if ($scope.bills == undefined) {
|
|
|
+ $scope.loading = true;
|
|
|
+ }
|
|
|
+ Pay.bill.get({"type": type, "status": status, "year": year, "month": month, "create_user": create_user}, function (data) {
|
|
|
+ $scope.bills = data;
|
|
|
+ }, function (err) {
|
|
|
+ alert(JSON.stringify(err));
|
|
|
+ }).$promise.finally(function () {
|
|
|
+ $scope.$broadcast('scroll.refreshComplete');
|
|
|
+ $scope.loading = false;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $scope.$on('$destroy', function () {
|
|
|
+ beforeenter = null;
|
|
|
+ Member.selectedemplst = [];
|
|
|
+ });
|
|
|
+})
|
|
|
+
|
|
|
+.controller('BillPayCtrl', function ($rootScope, $scope, $state, global, Pay) {
|
|
|
+ var type = $state.params['type'];
|
|
|
+ global.fetch_user().then(function () {
|
|
|
+ getpaylistdata();
|
|
|
+ });
|
|
|
+
|
|
|
+ $scope.doRefresh = function () {
|
|
|
+ global.refresh = true;
|
|
|
+ getpaylistdata();
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.toAnalyse = function () {
|
|
|
+ $state.go('pay-analyse');
|
|
|
+ }
|
|
|
+
|
|
|
+ $scope.loadMore = function () {
|
|
|
+ if ($scope.bills != undefined && $scope.bills.next != null) {
|
|
|
+ Tool.get($scope.bills.next).then(function (data) {
|
|
|
+ _.each(data.results, function (item) {
|
|
|
+ $scope.bills.results.push(item);
|
|
|
+ });
|
|
|
+ $scope.bills.next = data.next;
|
|
|
+ $scope.bills.previous = data.previous;
|
|
|
+ }).finally(function () {
|
|
|
+ $scope.$broadcast('scroll.infiniteScrollComplete');
|
|
|
+ $scope.loading = false;
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ $scope.$broadcast('scroll.infiniteScrollComplete');
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ $scope.moreCanBeLoaded = function () {
|
|
|
+ return $scope.bills != undefined && $scope.bills.next != null;
|
|
|
+ };
|
|
|
+
|
|
|
+ function getpaylistdata() {
|
|
|
+ if (global.user.token != "") {
|
|
|
+ if ($scope.bills == undefined) {
|
|
|
+ $scope.loading = true;
|
|
|
+ }
|
|
|
+ Pay.bill.get({type: type}, function (data) {
|
|
|
+ $scope.bills = data;
|
|
|
+ }, function (err) {
|
|
|
+ alert(JSON.stringify(err));
|
|
|
+ }).$promise.finally(function () {
|
|
|
+ $scope.$broadcast('scroll.refreshComplete');
|
|
|
+ $scope.loading = false;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+})
|
|
|
+
|
|
|
+.controller('PayBillDetailsCtrl', function ($rootScope, $scope, $state, $ionicPopup, $ionicHistory, $cordovaDialogs, global, Pay, showPopup, Tool) {
|
|
|
+ showPopup.modalTemplate('templates/modal-stepReject.html', 'slide-in-right', $scope).then(function (modal) {
|
|
|
+ $scope.step_reject = modal;
|
|
|
+ });
|
|
|
+ $scope.index = null;
|
|
|
+ var paybillid = $state.params["id"];
|
|
|
+ Tool.removeBackView('pay-bill');
|
|
|
+
|
|
|
+ global.fetch_user().then(function () {
|
|
|
+ $scope.user = global.user.usrid;
|
|
|
+ getbilldata();
|
|
|
+ });
|
|
|
+
|
|
|
+ $scope.toedit = function () {
|
|
|
+ $state.go('pay-bill', {
|
|
|
+ type: 1,
|
|
|
+ id: paybillid
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ $scope.deleteBill = function () {
|
|
|
+ $cordovaDialogs.confirm('是否撤销该报销单', '提示', ['是', '否']).then(function (buttonIndex) {
|
|
|
+ if (buttonIndex == 1) {
|
|
|
+ showPopup.showLoading(1, '撤销中');
|
|
|
+ Pay.billdetail.delete({id: paybillid}, function () {
|
|
|
+ showPopup.hideLoading();
|
|
|
+ $ionicHistory.goBack();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ $scope.audit = function (op) {
|
|
|
+ $scope.data = {};
|
|
|
+ if (op == 0) {
|
|
|
+ setPopup('驳回', '请输入驳回理由(必填)', op);
|
|
|
+ } else if (op == 1) {
|
|
|
+ setPopup('同意', '请输入备注(选填)', op);
|
|
|
+ } else if (op == 2) {
|
|
|
+ showPopup.showLoading(1, '提交中');
|
|
|
+ Pay.billdetail.update({id: paybillid, status: 2}, function (data) {
|
|
|
+ getbilldata();
|
|
|
+ showPopup.hideLoading();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ $scope.ok = function () {
|
|
|
+ console.log($scope.index);
|
|
|
+ $scope.data.ordering = $scope.index;
|
|
|
+ postHistory($scope.data);
|
|
|
+ $scope.cancel();
|
|
|
+ }
|
|
|
+
|
|
|
+ $scope.cancel = function () {
|
|
|
+ $rootScope.commons.modal.hide();
|
|
|
+ }
|
|
|
+
|
|
|
+ $scope.changeIndex = function (index) {
|
|
|
+ $scope.index = index;
|
|
|
+ }
|
|
|
+
|
|
|
+ function getbilldata() {
|
|
|
+ if (global.user.token != "") {
|
|
|
+ if ($scope.bill == undefined) {
|
|
|
+ $scope.loading = true;
|
|
|
+ }
|
|
|
+ Pay.billdetail.get({id: paybillid}, function (res) {
|
|
|
+ $scope.loading = false;
|
|
|
+ $scope.bill = res;
|
|
|
+ Pay.detailItem = _.clone(res);
|
|
|
+ console.log(res);
|
|
|
+ $scope.billhistorydata = [];
|
|
|
+ _.each(res.history, function (item) {
|
|
|
+ var historyitem = {};
|
|
|
+ historyitem.date = item.create_date;
|
|
|
+ historyitem.title = item.create_user.username;
|
|
|
+ historyitem.profilePicture = "../../../img/panda.png";
|
|
|
+ historyitem.text = item.content;
|
|
|
+ historyitem.icon = item.status == 0 ? "ion-ios-undo assertive" : "ion-ios-checkmark balanced"
|
|
|
+ $scope.billhistorydata.push(historyitem);
|
|
|
+ });
|
|
|
+ if (!$scope.bill.verifier.is_teller) {
|
|
|
+ $scope.billhistorydata.push({
|
|
|
+ icon: 'ion-load-c task-create-member-p',
|
|
|
+ title: $scope.bill.status == 0 ? $scope.user == $scope.bill.create_user.id ? '等待我处理' : '当前处理人:' + $scope.bill.create_user.username : $scope.user == $scope.bill.verifier.verifier_id ? '等待我处理' : '当前处理人:' + $scope.bill.verifier.verifier__username,
|
|
|
+ profilePicture: "../../../img/panda.png"
|
|
|
+ });
|
|
|
+ }
|
|
|
+ $scope.billhistorydata.reverse();
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ function setPopup(title, placeholdertext, op) {
|
|
|
+ $cordovaDialogs.prompt(placeholdertext, title, ['确定', '取消']).then(function (result) {
|
|
|
+ var input = result.input1;
|
|
|
+ var btnIndex = result.buttonIndex;
|
|
|
+ if (btnIndex == 1) {
|
|
|
+ if (input == '' && op == 0) {
|
|
|
+ $cordovaDialogs.alert('请填写驳回理由', '提示', '确定');
|
|
|
+ } else {
|
|
|
+ $scope.data = {
|
|
|
+ status: op,
|
|
|
+ content: input == '' ? null : input,
|
|
|
+ pay_bill_id: paybillid,
|
|
|
+ ordering: null
|
|
|
+ }
|
|
|
+ if (op == 1) {
|
|
|
+ postHistory($scope.data);
|
|
|
+ } else if (op == 0) {
|
|
|
+ $scope.step = getStep($scope.bill.step);
|
|
|
+ if ($scope.step.length >= 1) {
|
|
|
+ $scope.step.reverse();
|
|
|
+ $scope.step.push({
|
|
|
+ ordering: 0,
|
|
|
+ verifier: {
|
|
|
+ username: $scope.bill.create_user.username
|
|
|
+ }
|
|
|
+ });
|
|
|
+ $scope.index = $scope.step[0].ordering;
|
|
|
+ $scope.step_reject.show();
|
|
|
+ $rootScope.commons.modal = $scope.step_reject;
|
|
|
+ } else {
|
|
|
+ postHistory($scope.data);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ function postHistory(data) {
|
|
|
+ showPopup.showLoading(1, '提交中');
|
|
|
+ Pay.billhistory.save(data, function (data) {
|
|
|
+ getbilldata();
|
|
|
+ showPopup.hideLoading();
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ function getStep(step) {
|
|
|
+ return _.filter(step, function (item) {
|
|
|
+ return item.is_approved;
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+ $scope.$on("$destroy", function () {
|
|
|
+ $scope.step_reject.remove();
|
|
|
+ });
|
|
|
+})
|
|
|
+
|
|
|
+.controller('PayAnalyseCtrl', function ($rootScope, $scope, $filter, $state, global, Pay) {
|
|
|
+ global.fetch_user().then(function () {
|
|
|
+ getanalysedata();
|
|
|
+ });
|
|
|
+
|
|
|
+ function getanalysedata() {
|
|
|
+ if (global.user.token != "") {
|
|
|
+ if ($scope.data == undefined) {
|
|
|
+ $scope.loading = true;
|
|
|
+ }
|
|
|
+ Pay.analyse.get(function (res) {
|
|
|
+ $scope.loading = false;
|
|
|
+ $scope.data = res;
|
|
|
+ _.each($scope.data.result, function (item) {
|
|
|
+ item.percentage = $filter('percentage')(item.count / $scope.data.count, 2, "%");
|
|
|
+ })
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+})
|