| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333 |
- /**
- * EMA 公共工具模块
- */
- var Common = {
- /**
- * 获取请求头(包含token)
- */
- getHeaders: function() {
- var token = localStorage.getItem('token');
- var headers = {};
- if (token) {
- // 添加Bearer Token认证
- headers['token'] = token;
- }
- return headers;
- },
- /**
- * Ajax请求封装
- * @param {Object} options 请求配置
- */
- ajax: function(options) {
- var layer = layui.layer;
- var token = localStorage.getItem('token');
-
- // 获取请求类型
- var requestType = (options.type || 'GET').toUpperCase();
-
- // 构建请求配置
- var ajaxOptions = {
- url: Config.getApiUrl(options.url || ''),
- type: requestType,
- dataType: 'json',
- headers: this.getHeaders(),
- beforeSend: function(xhr) {
- // 确保token在请求头中
- if (token) {
- xhr.setRequestHeader('token', token);
- }
- if (options.loading !== false) {
- layer.load(2, { shade: [0.3, '#000'] });
- }
- },
- complete: function() {
- if (options.loading !== false) {
- layer.closeAll('loading');
- }
- },
- success: function(res) {
- if (res.code === 401 || res.code === 403 || (res.msg && res.msg.indexOf('登录') !== -1)) {
- layer.msg('登录已过期,请重新登录', { icon: 2 }, function() {
- localStorage.clear();
- parent.location.href = '../index.html';
- });
- return;
- }
- options.success && options.success(res);
- },
- error: function(xhr) {
- var msg = '请求失败';
- if (xhr.status === 401) {
- layer.msg('登录已过期,请重新登录', { icon: 2 }, function() {
- localStorage.clear();
- parent.location.href = '../index.html';
- });
- return;
- } else if (xhr.status === 404) {
- msg = '接口不存在';
- } else if (xhr.status === 500) {
- msg = '服务器错误';
- } else if (xhr.status === 0) {
- msg = '网络连接失败,请检查网络';
- }
- options.error && options.error(xhr) || layer.msg(msg, { icon: 2 });
- }
- };
- // POST/PUT 请求使用 JSON 格式放入请求体
- if (requestType === 'POST' || requestType === 'PUT') {
- ajaxOptions.contentType = 'application/json;charset=UTF-8';
- if (options.data) {
- ajaxOptions.data = JSON.stringify(options.data);
- } else {
- ajaxOptions.data = '{}';
- }
- } else {
- // GET/DELETE 请求数据作为查询参数
- ajaxOptions.data = options.data;
- }
- $.ajax(ajaxOptions);
- },
-
- /**
- * GET请求
- */
- get: function(url, data, success, error) {
- var options = { url: url, type: 'GET' };
- if (typeof data === 'function') {
- options.success = data;
- } else {
- options.data = data;
- options.success = success;
- }
- options.error = error;
- this.ajax(options);
- },
-
- /**
- * POST请求
- */
- post: function(url, data, success, error) {
- this.ajax({
- url: url,
- type: 'POST',
- data: data,
- success: success,
- error: error
- });
- },
-
- /**
- * PUT请求
- */
- put: function(url, data, success, error) {
- this.ajax({
- url: url,
- type: 'PUT',
- data: data,
- success: success,
- error: error
- });
- },
-
- /**
- * DELETE请求
- */
- del: function(url, success, error) {
- this.ajax({
- url: url,
- type: 'DELETE',
- success: success,
- error: error
- });
- },
-
- /**
- * 打开弹窗
- * @param {Object} options 配置
- */
- open: function(options) {
- var layer = layui.layer;
- var defaults = {
- type: 2,
- shade: 0.3,
- anim: -1,
- maxmin: true,
- moveOut: true
- };
- return layer.open($.extend(defaults, options));
- },
-
- /**
- * 确认对话框
- */
- confirm: function(content, callback) {
- var layer = layui.layer;
- layer.confirm(content, { icon: 3, title: '提示' }, function(index) {
- callback && callback();
- layer.close(index);
- });
- },
-
- /**
- * 成功提示
- */
- success: function(msg, callback) {
- var layer = layui.layer;
- layer.msg(msg, { icon: 1 }, callback);
- },
-
- /**
- * 失败提示
- */
- error: function(msg, callback) {
- var layer = layui.layer;
- layer.msg(msg, { icon: 2 }, callback);
- },
-
- /**
- * 获取URL参数
- */
- getQueryString: function(name) {
- var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
- var r = window.location.search.substr(1).match(reg);
- return r != null ? decodeURIComponent(r[2]) : null;
- },
-
- /**
- * 格式化日期
- */
- formatDate: function(date, format) {
- if (!date) return '';
- date = typeof date === 'string' ? new Date(date.replace(/-/g, '/')) : date;
- format = format || 'yyyy-MM-dd HH:mm:ss';
-
- var o = {
- 'M+': date.getMonth() + 1,
- 'd+': date.getDate(),
- 'H+': date.getHours(),
- 'h+': date.getHours() % 12 || 12,
- 'm+': date.getMinutes(),
- 's+': date.getSeconds(),
- 'q+': Math.floor((date.getMonth() + 3) / 3),
- 'S': date.getMilliseconds()
- };
-
- if (/(y+)/.test(format)) {
- format = format.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length));
- }
-
- for (var k in o) {
- if (new RegExp('(' + k + ')').test(format)) {
- format = format.replace(RegExp.$1, RegExp.$1.length === 1 ? o[k] : ('00' + o[k]).substr(('' + o[k]).length));
- }
- }
- return format;
- },
-
- /**
- * 获取状态标签
- */
- getStatusBadge: function(status, map) {
- map = map || { '1': '正常', '0': '停用' };
- var config = {
- '1': { class: 'layui-btn-xs', color: 'green' },
- '0': { class: 'layui-btn-xs layui-btn-primary', color: 'gray' }
- };
- var text = map[status] || status;
- var c = config[status] || config['0'];
- return '<span class="layui-badge-' + c.color + ' ' + c.class + '">' + text + '</span>';
- },
-
- /**
- * 获取用户信息
- */
- getUserInfo: function() {
- var userInfo = localStorage.getItem('userInfo');
- return userInfo ? JSON.parse(userInfo) : null;
- },
-
- /**
- * 检查登录状态
- */
- checkLogin: function() {
- var token = localStorage.getItem('token');
- if (!token) {
- parent.location.href = '../index.html';
- return false;
- }
- return true;
- }
- };
- /**
- * 表格渲染封装
- */
- var TableRender = {
- /**
- * 获取表格请求头
- */
- getTableHeaders: function() {
- var token = localStorage.getItem('token');
- var headers = {};
- if (token) {
- headers['Authorization'] = 'Bearer ' + token;
- }
- return headers;
- },
- /**
- * 初始化表格
- */
- init: function(options) {
- var table = layui.table;
- var defaults = {
- method: 'POST',
- contentType: 'application/json',
- headers: this.getTableHeaders(),
- request: {
- pageName: 'pageNumber',
- limitName: 'pageSize'
- },
- response: {
- statusName: 'code',
- statusCode: 200,
- msgName: 'msg',
- dataName: 'data',
- countName: 'total'
- },
- parseData: function(res) {
- return {
- code: res.code,
- msg: res.msg,
- count: res.data ? res.data.totalRow : 0,
- data: res.data ? res.data.list : []
- };
- },
- before: function(req) {
- // layui table 会在请求前调用此方法
- var token = localStorage.getItem('token');
- if (token) {
- req.headers = req.headers || {};
- req.headers['Authorization'] = 'Bearer ' + token;
- }
- }
- };
- return table.render($.extend(defaults, options));
- },
-
- /**
- * 重新加载表格
- */
- reload: function(tableId, options) {
- var table = layui.table;
- var defaultOptions = {
- where: {},
- page: { curr: 1 }
- };
- table.reload(tableId, $.extend(defaultOptions, options));
- }
- };
|