import $g from "./sg";
import $ from 'jquery';
//import axios from 'axios';
//常用路径----------------------------------------------------------------
//const API_ROOT_URL = "http://192.168.2.20/b4e"; //凯哥的联想ThinkPad接口
const API_ROOT_URL = "http://你挚爱的强哥:8345"; //公司测试服务器
//const API_ROOT_URL = "https://你挚爱的强哥/api"; //学校正式服务器
//一些前提条件和方法----------------------------------------------------------------
//跳转到登录页面
const jumpLoginPage = () => {
if (!location.hash.includes('/login')) {
var url = location.href.split('#')[0] + '#/login?url=' + encodeURIComponent(location.href);
location.replace(url);
}
}
const errorTip = (where, d, url) => {
alert('【可能是' +
where + '报错】\n\r' +
'接口地址:' + url + '\n\r' +
'返回报文:' + JSON.stringify(d, null, 4));
/* document.write('【可能是' +
where + '报错】\n\r' +
'接口地址:' + url + '\n\r' +
'返回报文:' + JSON.stringify(d, null, 4)); */
}
//主体请求----------------------------------------------------------------
const timeout = 10 * 60 * 1000; //设置默认超时时间10分钟
export default {
//API URL❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤
_login: API_ROOT_URL + "/baseinfo/qrcode/login.do", //首次登陆
_getWeChatSDK: API_ROOT_URL + "/common/getTicket.do", //获取微信配置
_getPermissions: API_ROOT_URL + "/common/queryMyFunction4mobile.do", //获取用户权限
_scanRecord: API_ROOT_URL + "/inout/data/query.do", //获取个人扫码记录
_getOptions: API_ROOT_URL + "/common/queryDictsByPath.do", //获取【枚举值】
_registerTempPerson: API_ROOT_URL + "/common/tempuser/save.do", //临时人员登记注册
_getSSBMs: API_ROOT_URL + "/common/queryAllOrgTree4mobile.do", //获取所属部门
_getPersonalInfo: API_ROOT_URL + "/common/queryOwner.do", //获取个人信息
_queryAttend4instructorSum4mobile: API_ROOT_URL + "/attend/data/queryAttend4instructorSum4mobile.do", //查看学生扫码、旷课、请假次数
_getTempPersonInfo: API_ROOT_URL + "/common/queryOwnerDetail.do", //获取个人信息(临时人员)
_getTodayAttendance: API_ROOT_URL + "/course/data/queryMyCourse.do", //【今日课程考勤统计】
_getHistoryAttendance: API_ROOT_URL + "/course/data/queryMyCourseCode.do", //【历史考勤统计】
_getTeaClassList: API_ROOT_URL + "/teaclass/data/queryMyTeaClass.do", //根据课程代码获取教学班
_attendanceLineChart: API_ROOT_URL + "/attend/data/staAttendByCourseAndClass.do", //【课程考勤统计折线图】
_attendanceTeacherHistoryDetail: API_ROOT_URL + "/attend/data/queryAttendByCourse.do", //【历史考勤详情】
_queryAttend4teacher: API_ROOT_URL + "/attend/data/queryAttend4teacher.do", //【课堂考勤(任课老师)】列表---这个接口即将失效!!!
_queryAttend4instructor: API_ROOT_URL + "/attend/data/queryAttend4instructor.do", //【课堂考勤(任课老师、班主任或辅导员)】列表(tea:1老师 2班主任或者辅导员)
_queryUserDetail: API_ROOT_URL + "/common/queryUserDetail.do", //查询学生个人信息
_export: API_ROOT_URL + "/common/tempuser/export.do", //导出Excel
//API FUNCTION ❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤
__sd(type, url, data, doing, otherConfig = {}) {
type || (type = 'POST');
//noAutoToken=true代表该接口无需保持登录状态就可以获取信息,譬如一些公共对外开放的接口
var token = $g.cookie.get("token") ?
JSON.parse($g.cookie.get("token")) :
null //获取token
if (!otherConfig.noAutoToken) {
//判断如果本地没有token或者token里面没有用户名和密码,则直接跳转到登录页面
if (!(token && token.username && token.password)) return jumpLoginPage();
}
// 常规操作(缺陷:不能支所有手机)■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
/*
var headers = data ? data.headers : null;
headers || (headers = {});
data && data.headers && delete data.headers;
JSON.stringify(data) === '{}' && (data = null);
data && (data = JSON.stringify(data));
headers['Content-Type'] || (headers['Content-Type'] = 'application/json'); //application/x-www-form-urlencoded
if (!otherConfig.noAutoToken) {
headers["X-Authorization"] || (headers["X-Authorization"] = JSON.stringify({ username: token.username, password: token.password })); //noAutoToken=false的接口请求自动从cookie拿token填充到header里面,如果是个对象json务必要转换成功字符串String
}
headers.type = "requestBody"; //区分凯哥后台的form-data请求方式
*/
// 为了兼容低端安卓和IOS系统的手机■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
var headers = { 'Content-Type': 'application/x-www-form-urlencoded' };
if (!otherConfig.noAutoToken) {
data || (data = {});
data["X-Authorization"] || (data["X-Authorization"] = JSON.stringify({ username: token.username, password: token.password })); //noAutoToken=false的接口请求自动从cookie拿token填充到header里面,如果是个对象json务必要转换成功字符串String
}
data.__type__ = "requestBody"; //区分凯哥后台的form-data请求方式
// data && (data = JSON.stringify(data));
// ----------------------------------------------------------------
doing.s && (doing.success = doing.s); //精简便别名
doing.f && (doing.fail = doing.f); //精简便别名
doing.e && (doing.error = doing.e); //精简便别名
$.ajax({
timeout,
type,
url,
data,
// dataType: "json",//预期服务器返回的数据类型。如果不指定,jQuery 将自动根据 HTTP 包 MIME 信息来智能判断,比如 XML MIME 类型就被识别为 XML。在 1.4 中,JSON 就会生成一个 JavaScript 对象,而 script 则会执行这个脚本。随后服务器端返回的数据会根据这个值解析后,传递给回调函数。
headers,
success: d => {
if (otherConfig.isDownload) return doing.success(d); //如果是下载,直接返回文档流
switch (d.code) {
case 0: //登录成功 ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤
doing.success && doing.success(otherConfig.isGetAllData ? d : (d.data || d));
break;
case -404: //登录失败 ☠ ☠ ☠ ☠
jumpLoginPage();
break;
case -2: //扫码失败 ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤
case -1: //请求失败 ✖ ✖ ✖ ✖
default: //请求失败 ✖ ✖ ✖ ✖
doing.fail ? doing.fail(d) : errorTip('后端接口', d, url);
console.log("【报错】" + JSON.stringify(d, null, 4));
break;
}
},
error: d => { //请求报错 ✖ ✖ ✖ ✖
doing.error ? doing.error(d) : errorTip('后端逻辑', d, url);
console.log("【报错】" + JSON.stringify(d, null, 4));
},
});
},
//【通用接口】☯☯☯☯☯☯☯☯ ☯☯☯☯☯☯☯☯ ☯☯☯☯☯☯☯☯ ☯☯☯☯☯☯☯☯
API(path, data, doing, config) {
var url = API_ROOT_URL + (path.indexOf('/') === 0 ? '' : '/') + path;
this.__sd("post", url, data, doing, config);
},
//登录❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤
//用户登录接口
login(data, doing) {
var url = this._login;
this.__sd("post", url, data, doing, { noAutoToken: true });
},
//扫码❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤
//获取微信配置(获取用户坐标之前需要)
getWeChatSDK(data, doing) {
var url = this._getWeChatSDK;
this.__sd("post", url, data, doing, { noAutoToken: true });
},
//获取用户权限
getPermissions(doing) {
var url = this._getPermissions;
this.__sd("post", url, null, doing);
},
//考勤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤
//课堂考勤(学生)
scanRecord(data, doing) {
var url = this._scanRecord;
this.__sd("post", url, data, doing);
},
//获取扫码次数
getScanRecordTimes(doing) {
var url = this._scanRecord;
this.__sd("post", url, { start: 0, limit: 10 }, doing, { isGetAllData: true });
},
//获取扫码区域枚举值
getAreaOptions(doing) {
this.getOptions(doing, 'BASEINFO/AREA/LX');
},
//获取枚举值【通用方法】
getOptions(doing, path) {
var url = this._getOptions;
this.__sd("post", url, { path: path }, doing, { noAutoToken: true });
},
//战疫宝-课堂考勤(老师、班主任或辅导员)________________________
//今日课程考勤统计
getTodayAttendance(data, doing) {
var url = this._getTodayAttendance;
this.__sd("post", url, data, doing);
},
//历史课程考勤列表(同一门课程的)
getAttendanceTeacherHistoryList(data, doing) {
this.getTodayAttendance(data, doing)
},
//历史考勤统计
getHistoryAttendance(data, doing) {
var url = this._getHistoryAttendance;
this.__sd("post", url, data, doing);
},
//筛选搜索课堂考勤列表________________________
/* queryAttend4teacher(data, doing) {
var url = this._queryAttend4teacher; //【课堂考勤(任课老师)】列表
this.__sd("post", url, data, doing);
}, */
queryAttend4instructor(data, doing) {
var url = this._queryAttend4instructor; //【课堂考勤(班主任或辅导员)】列表
this.__sd("post", url, data, doing);
},
getTeaClassList(data, doing) {
/* 参数:
kcdm,传入查询当前课程,不传查询所有课程
type,1、班主任或者辅导员;2、学生;不传空表示教学老师 */
var url = this._getTeaClassList;
this.__sd("post", url, data, doing);
},
getAttendanceLineChart(data, doing) {
/* 参数:
courseCode,课程代码 通过course/data/queryMyCourseCode.do接口获取
classId,班级ID 通过teaclass/data/queryMyTeaClass.do接口获取
begin,开始日期
end,结束日期 */
var url = this._attendanceLineChart;
this.__sd("post", url, data, doing);
},
getAttendanceTeacherHistoryDetail(data, doing) {
/* 参数:kcid,课程代码 */
var url = this._attendanceTeacherHistoryDetail;
this.__sd("post", url, data, doing);
},
getAttendanceHeadmasterAndInstructorList(data, doing) {
/*
type: 1, //班主任或者辅导员
bjid: this.value2, //教学班id
kqzt: this.value3, //考勤状态
begin: this.begin, //考勤开始日期
end: this.end, //考勤结束日期
start: this.start,
limit: this.limit
*/
var url = this._attendanceHeadmasterAndInstructor;
this.__sd("post", url, data, doing);
},
// 课堂考勤(系统管理员)即 轨迹追踪❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤
// 扫码后的第一个列表 和 接触者名单列表都是用这个接口↓
/* keys 学号姓名关键字
begin 开始时间
end 结束时间
ewm 二维码编号
lx 是座位、出、进
orgid 查询哪个组织机构下的数据
qyid 查询哪个区域的数据
qclx 是不是要去重 //去重类型,1、去重取当天最后扫码数据,2、去重取当天最早扫码数据
qy1x 就是区域类型的枚举,比如 3教学场地 4图书馆 5食堂 //区域类型
queryType all 查询所有人, 空,不传,查自己的数据
*/
getTrack(data, doing) {
var url = this._scanRecord;
data.queryType = 'all';
this.__sd("post", url, data, doing);
},
//临时人员❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤
//注册临时人员登记
registerTempPerson(data, doing) {
var url = this._registerTempPerson;
this.__sd("post", url, data, doing, { noAutoToken: true });
},
//获取所属部门
getSSBMs(doing) {
var url = this._getSSBMs;
this.__sd("post", url, null, doing, { noAutoToken: true });
},
//个人中心❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤
//获取个人用户信息
getPersonalInfo(doing) {
var url = this._getPersonalInfo;
this.__sd("post", url, null, doing);
},
//查看学生扫码、旷课、请假次数
queryAttend4instructorSum4mobile(doing) {
var url = this._queryAttend4instructorSum4mobile;
this.__sd("post", url, null, doing);
},
//获取个人用户信息(临时人员)
getTempPersonInfo(doing) {
var url = this._getTempPersonInfo;
this.__sd("post", url, null, doing);
},
//获取指定用户信息
queryUserDetail(data, doing) {
// 参数 :xgh
var url = this._queryUserDetail;
this.__sd("post", url, data, doing);
},
// 导出❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤❤3
//导出excel
exportExcel(doing) {
var url = this._export;
this.__sd("post", url, null, doing, { isDownload: true });
this.__sd("post", url, null, doing);
},
}