#ifndef INTERACTIVETASK_H
#define INTERACTIVETASK_H

#include <QObject>
#include <QJSValue>
#include <QVariant>

class InteractiveTask : public QObject
{
    Q_OBJECT
public:
    enum TaskType
    {
        TypeDataCacheRefresh,                       // 刷新缓存信息

        TypeMaterialInfoListRefresh,                // http get 请求， 获取物资信息列表

        TypeMaterialReplaceRefreshListModel,        // 刷新物资更换视图model
        TypeMaterialManualReplaceRefreshListModel,  // 刷新手动更换视图model

        TypeMaterialManualReplaceSubmit,            // 物资手动更换提交

        TypeMaterialExceptionReport,                // 异常上报
        TypeMaterialExceptionRefreshListModel,      // 刷新异常列表


        TypeHttpGet_exception_type,                     // 获取异常类型字典值
        TypeHttpGet_severity_level,                     // 获取严重等级字典值
        TypeHttpGet_getInfo,                            // 获取用户信息
        TypeHttpGet_getCabinetHomePage,                 // 获取主界面信息
        TypeHttpGet_getInstructionsList,                // 查询用户使用说明
        TypeHttpGet_selectIsMaterialsCabinetByCode,     // 获取物资柜ID

        TypeHttpGet_getIsMaterialsLoanExceptionPage,    // 获取异常信息
        TypeHttpGet_getSysUserCharacteristicPage,       // 查询用户特征(指纹、面部)
        TypeHttpGet_getIsMaterialsPage,                 // 查询物资信息All
        TypeHttpGet_getLastCheckPlanByCabinetCode,      // 查询当前用户的物资检查计划

        TypeHttpPost_startCheckPlan,                    // 开始物资检查计划
        TypeHttpPost_insertCheckRecord,                 // 物资检查保存
        TypeHttpPost_insertSubmitPlan,                  // 提交最终检查结果
        TypeHttpPost_deleteSysUserCharacteristicByRecordIds,    // 删除人员特征
        TypeHttpPost_insertUserFace,                    // 新增人脸记录
        TypeHttpPost_insertUserFingerprintDat,          // 新增指纹记录
        TypeHttpPost_loginByFace,                       // 人脸登录
        TypeHttpPost_loginByFingerprintDat,             // 指纹登录
        TypeHttpPost_insertIsException,                 // 上报异常

        TypeViewWait,                                   // 视图等待(ms)
        TypeViewRefresh_AbnormalReport,                 // 视图刷新-异常上报

    };

    enum TaskStat
    {
        StatWaitStart,      // 等待开始
        StatExecAfoot,      // 正在进行
        StatCompleted,      // 已经完成
        StatFailStart,      // 启动失败
    };

    Q_ENUM(TaskType)
public:
    explicit InteractiveTask(QObject *parent = nullptr);

    TaskType type;    // 任务类型
    TaskStat stat;    // 任务状态
    QVariant request; // 任务请求信息
    QVariant respond; // 任务响应信息
    QJSValue callback;// 任务回调
};

#endif // INTERACTIVETASK_H
