'csmtable', 'title' => 'Table功能增强', 'sublist' => [ [ 'name' => 'csmtable/test', 'title' => '使用示例', 'icon' => 'fa fa-meetup', 'sublist' => [ [ 'name' => 'csmtable/test/index', 'title' => '查询' ], [ 'name' => 'csmtable/test/recyclebin', 'title' => '回收站' ], [ 'name' => 'csmtable/test/add', 'title' => '添加' ], [ 'name' => 'csmtable/test/edit', 'title' => '修改' ], [ 'name' => 'csmtable/test/del', 'title' => '删除' ], [ 'name' => 'csmtable/test/destroy', 'title' => '真实删除' ], [ 'name' => 'csmtable/test/restore', 'title' => '还原' ], [ 'name' => 'csmtable/test/multi', 'title' => '批量更新' ], [ 'name' => 'csmtable/test/import', 'title' => '导入' ], [ 'name' => 'csmtable/datasource/admin', 'title' => '人员信息读取' ], [ 'name' => 'csmtable/cligenerateexcel/index', 'title' => '下载Excel' ] ] ], [ 'name' => 'csmtable/xlstask', 'title' => '下载任务', 'icon' => 'fa fa-meetup', 'sublist' => [ [ 'name' => 'csmtable/xlstask/index', 'title' => '查询' ], [ 'name' => 'csmtable/xlstask/add', 'title' => '添加' ], [ 'name' => 'csmtable/xlstask/edit', 'title' => '修改' ], [ 'name' => 'csmtable/xlstask/del', 'title' => '删除' ], [ 'name' => 'csmtable/xlstask/multi', 'title' => '批量' ], [ 'name' => 'csmtable/csmgeneratesub/index', 'title' => '重新执行' ], [ 'name' => 'csmtable/csmgenerate/generate', 'title' => '生成文件' ], ] ] ] ] ]; Menu::create($menu); return true; } /** * 插件卸载方法 * @return bool */ public function uninstall() { Menu::delete(XcConfigUtils::getAddonCode()); return true; } /** * 插件启用方法 * @return bool */ public function enable() { Menu::enable(XcConfigUtils::getAddonCode()); return true; } /** * 插件禁用方法 * @return bool */ public function disable() { Menu::disable(XcConfigUtils::getAddonCode()); return true; } /** * JS 获取配置的方式 Config.csmtable.cloginwxmp */ public function configInit(&$params) { $config = $this->getConfig(); $addons = XcConfigUtils::xpconfig('addons_code'); $params[$addons] = [ ]; } public function actionBegin($call) { $request = XcRequestUtils::getRequest(); if (true) { // 判断是否安装了插件:表格无刷新行内编辑 $path = $request->path(); if ($path == 'csmtable/test') { $editable = get_addon_info('editable'); if (! $editable || ! $editable['state']) { XcResponseUtils::error("为更好的演示本功能,请安装【表格无刷新行内编辑】插件", null, null, 60); } } } if (true) { // 异步下载用 $method = $request->request('csmtable_method'); $filesource = $request->request('csmtable_filesource'); if ($method == 'download_excel') { set_time_limit(0); $dao = new \app\admin\model\csmtable\Xlstask(); $admin_id = XcAdminSessionUtils::getUserId(); // 限制下载 if (true) { $row = $dao->where("admin_id", "=", $admin_id) ->where("progress", "<", "100") ->where("createtime", ">", time() - 1800) ->where("iserror", "<>", "Y") ->find(); if ($row) { XcResponseUtils::error("当前有下载任务,请任务结束后再尝试下载。"); } } // 生成任务记录 $dao->where("admin_id", "=", $admin_id) ->where("filesource", '=', $filesource) ->where("status", "=", "normal") ->update([ "status" => "hidden" ]); // 触发异步生成Excel任务 $classname = get_class($call[0]); $getparams = [ 'search' => $request->request('search'), 'filter' => $request->request('filter'), 'op' => $request->request('op'), 'sort' => $request->request('sort'), 'order' => $request->request('order'), 'offset' => $request->request('offset'), 'limit' => $request->request('limit'), 'csmtable_classname' => str_replace('\\', '/', $classname), 'csmtable_methodname' => 'index', 'csmtable_columns' => $request->request('csmtable_columns') ]; $param = [ 'admin_id' => $admin_id, 'filesource' => $filesource, 'param' => json_encode($getparams), 'createtime' => time() ]; $row = $dao->create($param); $url = XcRequestUtils::urlBase("/addons/csmtable/csmgenerate/index?id={$row->id}&clogintoken=".XcAdminSessionUtils::getToken()); $this->callremote2($url); } } } private function callremote2($url) { \fast\Http::sendRequest($url); } }