You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

384 lines
15 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

/**
* Created by yixian on 2016-06-29.
*/
define(['angular', 'angularSanitize', 'angularAnimate', 'angularMessages', 'uiRouter', 'uiBootstrap', 'ngFileUpload', 'sockjs', 'stomp'], function (angular) {
'use strict';
var app = angular.module('managerMainApp', ['ngSanitize', 'ngAnimate', 'ngMessages', 'ui.router', 'ui.bootstrap', 'ngFileUpload']);
app.config(['$urlRouterProvider', '$httpProvider', function ($urlRouterProvider, $httpProvider) {
$urlRouterProvider.otherwise(((window.currentUser.role & parseInt('100000', 2)) > 0) ? '/managers' : '/dashboard');
if (!$httpProvider.defaults.headers.get) {
$httpProvider.defaults.headers.get = {};
}
$httpProvider.defaults.headers.get['If-Modified-Since'] = 'Mon, 26 Jul 1997 05:00:00 GMT';
$httpProvider.defaults.headers.get['Cache-Control'] = 'no-cache';
$httpProvider.defaults.headers.get['Pragma'] = 'no-cache';
}]);
app.controller('managerIndexCtrl', ['$scope', '$rootScope', '$http', '$log', '$timeout', '$interval', '$uibModal', '$filter', 'myLoginLogView', 'commonDialog',
function ($scope, $rootScope, $http, $log, $timeout, $interval, $uibModal, $filter, myLoginLogView, commonDialog) {
$http.get('/sysconfig/base').then(function (resp) {
$rootScope.sysParams = resp.data;
});
var stompClient = null;
$scope.loadCurrentUser = function () {
$http.get('/global/userstatus/current_manager').then(function (resp) {
$rootScope.currentUser = resp.data;
// connectWebSocket();
$scope.notifyCounts = 0;
if ($rootScope.currentUser.role & parseInt('110', 2)) {
$scope.loadPartnerApplyNotice();
if (window.currentUser.role & 10000000000) {
$scope.loadRefundNotice();
}
}
// if ($rootScope.currentUser.role ==2 || $rootScope.currentUser.role == 4){
// $scope.loadPartnerApplyNotice();
// }
if ($rootScope.currentUser.wx_openid == null) {
if ($filter('withRole')('100')) {
$scope.managerBindWechat('static');
} else {
$scope.managerBindWechat(true);
}
}
}, function (resp) {
if (resp.status == 403) {
location.href = 'm_login.html?f=' + encodeURIComponent(location.href);
}
})
};
$scope.loadCurrentUser();
$scope.getManagerTodoNotices = function () {
$http.get('/global/userstatus/manager_todo_notices').then(function (resp) {
if (resp.data.length) {
$uibModal.open({
controller: 'managerTodoNoticeCtrl',
templateUrl: '/static/boot/templates/manager_todo.html',
resolve: {
notices: function () {
return resp.data;
}
}
})
}
})
};
$scope.getManagerTodoNotices();
var connected;
$interval($scope.loadCurrentUser, 300000);
function connectWebSocket() {
if (connected && stompClient) {
return;
}
var sock = new SockJS('/register');
stompClient = window.Stomp.over(sock);
stompClient.connect({}, function (frame) {
$log.debug('websocket connected:' + frame);
connected = true;
stompClient.subscribe('/app/common/page_events/' + $rootScope.currentUser.manager_id, function (msg) {
$log.debug('new event notice:' + msg.body);
var msgBody = JSON.parse(msg.body);
$scope.$broadcast(msgBody.event, msgBody.data);
});
}, function () {
$log.error('连接失败3秒后尝试重连');
connected = false;
$timeout(connectWebSocket, 3000);
})
};
connectWebSocket();
$scope.$on('manager_bind_success', function (evt, msg) {
if (msg.key == $scope.checkCode) {
$scope.checkModal != null && $scope.checkModal.close();
}
});
$scope.showMyLoginLogs = function () {
myLoginLogView.show();
};
$scope.toggleHideSideBar = function () {
$scope.hideSideBar = !$scope.hideSideBar;
};
$scope.showQrCode = function (data, backdrop) {
return $uibModal.open({
template: '<div style="width: 100%;padding: 10px;">请使用微信扫描<br><div style="width:100%" qrcode="url"></div><p class="text-center"><img class="img-circle img-bordered" style="width: 45px" ng-show="{{wx_headimg}}" ng-src="{{wx_headimg}}">{{wx_nickname}}</p></div>',
controller: ['$scope', 'data', function ($scope, data) {
$scope.url = data.url;
$scope.wx_headimg = data.wx_headimg;
$scope.wx_nickname = data.wx_nickname;
}],
size: 'sm',
resolve: {
data: function () {
return data;
}
},
keyboard: false,
backdrop: backdrop
})
};
$scope.logout = function () {
$http.put('/global/userstatus/manager_signout').then(function () {
location.href = '/m_login.html';
});
};
$scope.changePwd = function () {
$uibModal.open({
templateUrl: '/static/boot/templates/change_pwd_dialog.html',
controller: 'changePwdCtrl',
size: 'sm'
}).result.then(function () {
commonDialog.alert({title: '操作成功', content: '您成功修改了密码', type: 'success'})
})
};
$scope.currentUserHasRole = function (role) {
return ($scope.currentUser.role & role) > 0
};
$scope.loadPartnerApplyNotice = function () {
var params = {};
$http.get('/partners/application/notice', {params: params}).then(function (resp) {
$scope.partner_application_new = resp.data.counts;
if ($scope.partner_application_new) {
$scope.notifyCounts = $scope.notifyCounts + 1;
}
})
};
$scope.loadRefundNotice = function () {
$http.get('/api/payment/v1.0/refund/orders/notifyReview').then(function (resp) {
$scope.refundReviews = resp.data;
if ($scope.refundReviews) {
$scope.notifyCounts = $scope.notifyCounts + 1;
}
});
}
$scope.openNotice = false;
$scope.toggleOpenNotice = function () {
var openNotice = angular.copy($scope.openNotice);
$scope.openNotice = !openNotice;
};
$scope.managerBindWechat = function (backdrop) {
$http.post('/system/manager_wechat_binds').then(function (resp) {
$scope.checkCode = resp.data.bind_id;
if (resp.data.wx_nickname) {
backdrop = true;
}
$scope.checkModal = $scope.showQrCode(resp.data, backdrop);
// $scope.showQrCode(resp.data.url);
})
}
}]);
app.controller('changePwdCtrl', ['$scope', '$http', function ($scope, $http) {
$scope.formData = {};
$scope.submit = function (form) {
if (form.$invalid) {
angular.forEach(form, function (item, key) {
if (key.indexOf('$') <= 0) {
item.$dirty = true;
$scope.errmsg = '请输入密码';
}
});
return;
}
// $scope.errmsg = null;
// if($scope.formData.pwd && $scope.formData.pwd.length < 8){
// $scope.errmsg = '密码必须大于8位';
// return;
// }
// var regex = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,16}$/;
// if($scope.formData.pwd &&!regex.test($scope.formData.pwd)){
// $scope.errmsg = '密码需要由8-16位数字以及字母组成';
// return;
// }
if ($scope.formData.pwd != $scope.formData.repeatpwd) {
$scope.errmsg = '两次输入密码不一致';
return;
}
$scope.errmsg = null;
$http.put('/global/userstatus/manager_password', $scope.formData).then(function () {
$scope.$close();
}, function (resp) {
$scope.errmsg = resp.data.message;
})
}
}]);
app.controller('managerTodoNoticeCtrl', ['$scope', 'notices', function ($scope, notices) {
$scope.notices = notices;
}]);
app.controller('blankCtrl', ['$scope', function ($scope) {
}]);
app.factory('myLoginLogView', ['$uibModal', function ($uibModal) {
return {
show: function () {
$uibModal.open({
templateUrl: '/static/boot/templates/user_login_logs.html',
controller: ['$scope', '$http', function ($scope, $http) {
$scope.pagination = {};
$scope.getMyLoginLogs = function (page) {
var params = {page: page || $scope.pagination.page || 1};
$http.get('/global/userstatus/current_manager/login_logs', {params: params}).then(function (resp) {
$scope.pagination = resp.data.pagination;
$scope.loginLogs = resp.data.data;
})
};
$scope.getMyLoginLogs();
}]
})
}
}
}]);
app.filter('withRole', ['$rootScope', function ($rootScope) {
return function (roleCode) {
if (angular.isNumber(roleCode)) {
var code = roleCode;
} else {
code = parseInt(roleCode, 2);
}
return ($rootScope.currentUser.role & code) > 0
}
}]);
app.filter('withModule', ['$rootScope', function ($rootScope) {
return function (moduleName) {
return $rootScope.currentUser.module_names.indexOf(moduleName) >= 0;
}
}]);
app.filter('withFunc', ['$rootScope', function ($rootScope) {
return function (funcName) {
return $rootScope.currentUser.available_func_names.indexOf(funcName) >= 0;
}
}]);
app.filter('tradeStatus', function () {
return function (status) {
switch (status + '') {
case '0':
return 'Creating';
case '1':
return 'Failed Create Order';
case '2':
return 'Wait For Payment';
case '3':
return 'Closed';
case '4':
return 'Payment Failed';
case '5':
return 'Payment Successful';
case '6':
return 'Partial Refund';
case '7':
return 'Full Refund';
}
}
});
app.filter('refundStatus', function () {
return function (status) {
switch (status + '') {
case '0':
case'1':
return 'Submit Failed';
case '2':
return 'Submit Success';
case '3':
return 'Failed';
case '4':
return 'Success';
case '5':
return 'Change'
}
}
});
app.filter('tradeGateway', function () {
return function (gateway) {
switch (gateway + '') {
case '0':
return '线下扫码';
case '1':
return '线下扫码';
case '2':
return '商户静态码';
case '3':
return '线上网关';
case '4':
return 'JSAPI网关';
case '5':
return '线下网关';
case '6':
return '线下网关';
case '7':
return '商户静态码';
case '8':
return 'Mobile H5';
case '9':
return '第三方网关';
case '10':
return 'APP网关';
case '11':
return '账单码';
case '12':
return '小程序';
case '13':
return '原生二维码';
case '14':
return '原生二维码'
}
}
});
app.constant('uiDatetimePickerConfig', {
dateFormat: 'yyyy-MM-dd HH:mm',
defaultTime: '00:00:00',
html5Types: {
date: 'yyyy-MM-dd',
'datetime-local': 'yyyy-MM-ddTHH:mm:ss.sss',
'month': 'yyyy-MM'
},
initialPicker: 'date',
reOpenDefault: false,
enableDate: true,
enableTime: true,
buttonBar: {
show: true,
now: {
show: true,
text: '现在'
},
today: {
show: true,
text: '今天'
},
clear: {
show: true,
text: '清空'
},
date: {
show: true,
text: '日期'
},
time: {
show: true,
text: '时间'
},
close: {
show: true,
text: '关闭'
}
},
closeOnDateSelection: true,
appendToBody: false,
altInputFormats: [],
ngModelOptions: {}
});
return app;
});