【sd.js】凯哥版(逐步废弃、逐渐日落2024.01.02)

简介: 【sd.js】凯哥版(逐步废弃、逐渐日落2024.01.02)


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);
    },
}
//调用
var d = {id: "值"};
this.$d.API('/common/接口名称.do',d, {
    s: d => {
        console.log("【成功】", d);
    }
});


相关文章
|
6天前
sd.js 2.0封装:更加简化请求传参内容(逐步废弃、逐渐日落2024.01.02)
sd.js 2.0封装:更加简化请求传参内容(逐步废弃、逐渐日落2024.01.02)
|
6天前
|
敏捷开发 JavaScript 前端开发
❤❤❤【Vue.js最新版】sd.js基于jQuery Ajax最新原生完整版for凯哥API版本❤❤❤
❤❤❤【Vue.js最新版】sd.js基于jQuery Ajax最新原生完整版for凯哥API版本❤❤❤
|
6天前
|
前端开发 JavaScript API
【uni-app】【基于jQuery Ajax】[sd.js]最新原生完整版for凯哥API版本
【uni-app】【基于jQuery Ajax】[sd.js]最新原生完整版for凯哥API版本
|
2天前
|
存储 JavaScript 前端开发
从零开始学习Vue.js
Vue.js 是一种流行的前端框架,它使用简单,灵活且易于上手。如果你是一个前端开发者,并想要学习 Vue.js,本文将为您提供一个从零开始的指南。我们将探讨 Vue.js 的基础知识和常用功能,以及如何构建一个简单的 Vue.js 应用程序。
|
4天前
|
缓存 JavaScript 前端开发
JavaScript:get和post的区别,2024年最新3-6岁儿童学习与发展指南心得体会
JavaScript:get和post的区别,2024年最新3-6岁儿童学习与发展指南心得体会
|
5天前
|
设计模式 存储 前端开发
JS的几种设计模式,Web前端基础三剑客学习知识分享,前端零基础开发
JS的几种设计模式,Web前端基础三剑客学习知识分享,前端零基础开发
|
6天前
|
XML Web App开发 前端开发
字节FE:JavaScript学习路线图
字节FE:JavaScript学习路线图
11 0
|
6天前
|
存储 移动开发 JavaScript
学习javascript,前端知识精讲,助力你轻松掌握
学习javascript,前端知识精讲,助力你轻松掌握
|
6天前
|
JavaScript 前端开发 测试技术
学习JavaScript
【4月更文挑战第23天】学习JavaScript
15 1
|
6天前
|
JavaScript 前端开发 应用服务中间件
node.js之第一天学习
node.js之第一天学习