diff --git a/fapp/ciyon_ap/pages.json b/fapp/ciyon_ap/pages.json index 6bd5f9d..4f5ea2f 100644 --- a/fapp/ciyon_ap/pages.json +++ b/fapp/ciyon_ap/pages.json @@ -412,15 +412,23 @@ ] }, { - "root": "pages/lab", - "pages": [ - { - "path": "userlist", - "style": { - "enablePullDownRefresh": true - } - } - ] - } + "root": "pages/lab", + "pages": [ + { + "path": "userlist", + "style": { + "navigationBarTitleText": "成员管理", // 补充标题(可选) + "enablePullDownRefresh": true + } + }, + // 如果 lab 目录下还有其他页面(比如新增成员页),可以加在这里 + { + "path": "useredit", + "style": { + "navigationBarTitleText": "添加成员" + } + } + ] + } ] } \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/lab/useredit.vue b/fapp/ciyon_ap/pages/lab/useredit.vue new file mode 100644 index 0000000..9c8519a --- /dev/null +++ b/fapp/ciyon_ap/pages/lab/useredit.vue @@ -0,0 +1,382 @@ + + + + + \ No newline at end of file diff --git a/fapp/ciyon_ap/pages/lab/userlist.vue b/fapp/ciyon_ap/pages/lab/userlist.vue index f9c9030..a806624 100644 --- a/fapp/ciyon_ap/pages/lab/userlist.vue +++ b/fapp/ciyon_ap/pages/lab/userlist.vue @@ -1,331 +1,271 @@ - - \ No newline at end of file +}; + + + \ No newline at end of file diff --git a/web/ambap/login.php b/web/ambap/login.php index 3ea993c..8a9222b 100644 --- a/web/ambap/login.php +++ b/web/ambap/login.php @@ -120,8 +120,7 @@ class login { $rsuser['addtimes'] = tostamp(); $rsuser['sid'] = $sid; $rsuser['exptimes'] = $exp; - $rsuser['ip'] = getip(); - $rsuser['laborgid'] = 0; + $rsuser['ip'] = getip(); $rsuser['laborgid'] = 0; // 所属机构默认ID $rsuser['usertitle'] = 0; // 头衔默认 $rsuser['sn'] = ''; // 编号默认 @@ -129,6 +128,10 @@ class login { $rsuser['totalpnt'] = 0; // 总积分默认 $rsuser['dvotecnt'] = 0; // 互动贡献默认 $rsuser['email'] = ''; + $rsuser['education'] = 0; // 学历默认值(0=未知,对应education字典) + $rsuser['userlevel'] = 10; // 成员等级默认值(10=普通成员,对应lab_userlevel字典) + // ================================================== + $csql = new \ciy\sql('lab_user'); if ($db->insert($csql, $rsuser) === false) return errjson('注册用户失败:' . $db->error); @@ -377,6 +380,12 @@ class login { $ret['me']['dvotecnt'] = $userrow['dvotecnt']; $ret['me']['needpass'] = empty($userrow['password']); $ret['me']['cciy'] = ''; + // ========== 新增修改2:返回新增字段给前端 ========== + $ret['me']['education'] = $userrow['education'] ?? 0; // 学历字段(兼容旧数据) + $ret['me']['userlevel'] = $userrow['userlevel'] ?? 10; // 成员等级字段(兼容旧数据) + $ret['me']['usertitle'] = $userrow['usertitle'] ?? 0; // 头衔字段(补充返回,方便前端展示) + $ret['me']['sex'] = $userrow['sex'] ?? 0; // 性别字段(补充返回,方便前端展示) + // ================================================== return succjson($ret); } public static function json_logout() { @@ -475,4 +484,4 @@ class login { $db->insert($csql, $updata); return false; } -} +} \ No newline at end of file diff --git a/web/ambap/member.php b/web/ambap/member.php new file mode 100644 index 0000000..2329f72 --- /dev/null +++ b/web/ambap/member.php @@ -0,0 +1,248 @@ + 0, 'errmsg' => '无效的接口动作']); + break; + } + } + + // 1. 获取成员列表(适配 ciy\db 类) + public static function json_list() { + global $db; + $post = new \ciy\post(); + $page = $post->getint('page', 1); + $pageSize = $post->getint('pageSize', 15); + $offset = ($page - 1) * $pageSize; + + // 构建查询条件 + $csql = new \ciy\sql('lab_user'); + $csql->limit($offset, $pageSize); // 分页:偏移量、每页条数 + $csql->order('addtimes DESC'); + + // 核心修改:使用 ciy\db 的 get 方法获取列表+总数 + $total = -1; // 传入 -1 自动查询总数 + $list = $db->get($csql, $total); // $total 会被赋值为总条数 + + // 处理查询失败 + if ($list === false) { + return self::err('获取列表失败:' . $db->error); + } + + // 格式化返回数据 + $retList = []; + foreach ($list as $item) { + $retList[] = [ + 'id' => $item['id'], + 'name' => $item['name'], + 'mobile' => $item['mobile'], + 'usertitle' => $item['usertitle'], + 'status' => $item['stpstatus'] == 10 ? 1 : 2, // 1=在册 2=历史 + 'sex' => $item['sex'], + 'email' => $item['email'], + 'avatar' => $item['avatar'] ?? '', + 'isLeader' => $item['usertitle'] == 1, // 是否负责人 + 'addtimes' => $item['addtimes'] + ]; + } + + echo json_encode([ + 'code' => 1, + 'list' => $retList, + 'total' => $total + ]); + } + + // 2. 新增成员 + public static function json_add() { + global $db; + $post = new \ciy\post(); + + // 获取表单数据 + $name = $post->get('name'); + $mobile = $post->get('mobile'); + $usertitle = $post->getint('usertitle'); + $status = $post->getint('status'); + $sex = $post->getint('sex'); + $email = $post->get('email'); + $password = $post->get('password'); + + // 基础验证 + if (empty($name)) return self::err('请输入姓名'); + if (empty($mobile)) return self::err('请输入手机号'); + if (!preg_match('/^1[3-9]\d{9}$/', $mobile)) return self::err('手机号格式错误'); + if (empty($password)) return self::err('请设置密码'); + + // 检查手机号是否已注册 + $csql = new \ciy\sql('lab_user'); + $csql->where('mobile', $mobile); + $exist = $db->getone($csql); + if (is_array($exist)) return self::err('该手机号已注册'); + + // 组装数据 + $data = [ + 'name' => $name, + 'mobile' => $mobile, + 'usertitle' => $usertitle, + 'stpstatus' => $status == 1 ? 10 : 20, // 10=正常(在册) 20=禁用(历史) + 'sex' => $sex, + 'email' => $email, + 'password' => $password, // 前端已加密 + 'userlevel' => 10, // 默认等级 + 'trytime' => 0, + 'logintimes' => tostamp(), + 'addtimes' => tostamp(), + 'ip' => getip(), + 'laborgid' => 0, + 'sn' => '', + 'totalpnt' => 0, + 'dvotecnt' => 0 + ]; + + // 插入数据(使用 ciy\db 的 insert 方法) + $csql = new \ciy\sql('lab_user'); + $result = $db->insert($csql, $data); + if ($result === false) { + return self::err('新增失败:' . $db->error); + } + + echo json_encode(['code' => 1, 'msg' => '新增成功']); + } + + // 3. 编辑成员 + public static function json_edit() { + global $db; + $post = new \ciy\post(); + + $id = $post->getint('id'); + $name = $post->get('name'); + $usertitle = $post->getint('usertitle'); + $status = $post->getint('status'); + $sex = $post->getint('sex'); + $email = $post->get('email'); + + if (empty($id)) return self::err('参数错误'); + if (empty($name)) return self::err('请输入姓名'); + + // 组装更新数据 + $data = [ + 'name' => $name, + 'usertitle' => $usertitle, + 'stpstatus' => $status == 1 ? 10 : 20, + 'sex' => $sex, + 'email' => $email, + 'updatetime' => tostamp() + ]; + + // 更新数据(使用 ciy\db 的 update 方法) + $csql = new \ciy\sql('lab_user'); + $csql->where('id', $id); + $result = $db->update($csql, $data); + if ($result === false) { + return self::err('修改失败:' . $db->error); + } + + echo json_encode(['code' => 1, 'msg' => '修改成功']); + } + + // 4. 获取成员详情 + public static function json_detail() { + global $db; + $post = new \ciy\post(); + $id = $post->getint('id'); + + if (empty($id)) return self::err('参数错误'); + + // 查询详情(使用 ciy\db 的 getone 方法) + $csql = new \ciy\sql('lab_user'); + $csql->where('id', $id); + $item = $db->getone($csql); + + if (!is_array($item)) return self::err('成员不存在'); + + // 格式化返回数据 + $data = [ + 'id' => $item['id'], + 'name' => $item['name'], + 'mobile' => $item['mobile'], + 'usertitle' => $item['usertitle'], + 'status' => $item['stpstatus'] == 10 ? 1 : 2, + 'sex' => $item['sex'], + 'email' => $item['email'] + ]; + + echo json_encode(['code' => 1, 'data' => $data]); + } + + // 5. 删除成员 + public static function json_del() { + global $db; + $post = new \ciy\post(); + $id = $post->getint('id'); + + if (empty($id)) return self::err('参数错误'); + + // 删除数据(使用 ciy\db 的 delete 方法) + $csql = new \ciy\sql('lab_user'); + $csql->where('id', $id); + $result = $db->delete($csql); + if ($result === false) { + return self::err('删除失败:' . $db->error); + } + + echo json_encode(['code' => 1, 'msg' => '删除成功']); + } + + // 6. 审核成员 + public static function json_audit() { + global $db; + $post = new \ciy\post(); + $id = $post->getint('id'); + $status = $post->getint('status'); + + if (empty($id)) return self::err('参数错误'); + + $data = ['stpstatus' => $status == 10 ? 10 : 20]; + $csql = new \ciy\sql('lab_user'); + $csql->where('id', $id); + $result = $db->update($csql, $data); + if ($result === false) { + return self::err('审核失败:' . $db->error); + } + + echo json_encode(['code' => 1, 'msg' => '审核成功']); + } + + // 通用错误返回 + private static function err($msg) { + echo json_encode(['code' => 0, 'errmsg' => $msg]); + exit; + } +} + +// 执行入口 +member::index(); +?> \ No newline at end of file diff --git a/zc_cata.sql b/zc_cata.sql new file mode 100644 index 0000000..0b2d10a --- /dev/null +++ b/zc_cata.sql @@ -0,0 +1,129 @@ +/* + Navicat Premium Data Transfer + + Source Server : ryx + Source Server Type : MariaDB + Source Server Version : 100510 + Source Host : localhost:3307 + Source Schema : c5_labsci + + Target Server Type : MariaDB + Target Server Version : 100510 + File Encoding : 65001 + + Date: 26/01/2026 14:39:29 +*/ + +SET NAMES utf8mb4; +SET FOREIGN_KEY_CHECKS = 0; + +-- ---------------------------- +-- Table structure for zc_cata +-- ---------------------------- +DROP TABLE IF EXISTS `zc_cata`; +CREATE TABLE `zc_cata` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `upid` int(11) NOT NULL COMMENT '上级,DB,zc_cata', + `csort` int(11) NOT NULL DEFAULT 10 COMMENT '排序', + `isuse` int(11) NOT NULL DEFAULT 1 COMMENT '|行为|,BOOL', + `cbid` int(11) NOT NULL DEFAULT 0 COMMENT '库,DB,zc_cata', + `codeid` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '值', + `name` varchar(30) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称', + `clas` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '样式类', + `extdata` varchar(180) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '扩展值', + PRIMARY KEY (`id`) USING BTREE, + INDEX `cbid`(`cbid`) USING BTREE +) ENGINE = InnoDB AUTO_INCREMENT = 12001701 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '字典表' ROW_FORMAT = Dynamic; + +-- ---------------------------- +-- Records of zc_cata +-- ---------------------------- +INSERT INTO `zc_cata` VALUES (1, 0, 0, 1, 0, '', '固定字典', '', ''); +INSERT INTO `zc_cata` VALUES (2, 0, 0, 1, 0, '', '灵活字典', '', ''); +INSERT INTO `zc_cata` VALUES (10, 1, 0, 1, 0, 'sex', '性别', '', 'zc_admin'); +INSERT INTO `zc_cata` VALUES (11, 1, 0, 1, 0, 'stpstatus', '账号状态', '', 'zc_admin'); +INSERT INTO `zc_cata` VALUES (12, 1, 0, 1, 0, 'auditstatus', '审核状态', '', 'zc_urole'); +INSERT INTO `zc_cata` VALUES (13, 1, 0, 1, 0, 'autotaskstatus', '任务状态', '', 'zc_autotask'); +INSERT INTO `zc_cata` VALUES (14, 2, 0, 1, 0, 'targettype', '子系统', '', 'zc_debug_user\nzc_online'); +INSERT INTO `zc_cata` VALUES (18, 1, 0, 1, 0, 'cashstatus', '提现状态', '', 'ap_cash_out'); +INSERT INTO `zc_cata` VALUES (19, 2, 0, 1, 0, 'cashtype', '收支分类', '', 'ap_cash_ie,ap_cash_oe'); +INSERT INTO `zc_cata` VALUES (21, 2, 0, 1, 0, 'userlevel', '用户等级', '', 'ap_user'); +INSERT INTO `zc_cata` VALUES (22, 1, 0, 1, 0, 'artsort', '文章排序', '', 'ap_art_post'); +INSERT INTO `zc_cata` VALUES (23, 1, 0, 1, 0, 'artstatus', '文章状态', '', 'ap_art_post'); +INSERT INTO `zc_cata` VALUES (24, 2, 0, 1, 0, 'certs', '认证范围', '', 'ap_user'); +INSERT INTO `zc_cata` VALUES (100, 2, 0, 1, 0, 'aicapacity', 'AI能力', '', 'zc_ai_key'); +INSERT INTO `zc_cata` VALUES (101, 1, 0, 1, 0, 'aidotype', 'AI执行方式', '', 'zc_ai_tsk_run'); +INSERT INTO `zc_cata` VALUES (102, 1, 10, 1, 0, 'education', '学历', '', ''); +INSERT INTO `zc_cata` VALUES (103, 0, 10, 1, 0, 'orderstatus', '订单状态', '', ''); +INSERT INTO `zc_cata` VALUES (1000, 0, 10, 1, 10, '10', '男', '', ''); +INSERT INTO `zc_cata` VALUES (1001, 0, 20, 1, 10, '20', '女', '', ''); +INSERT INTO `zc_cata` VALUES (1002, 0, 90, 1, 10, '90', '其他', '', ''); +INSERT INTO `zc_cata` VALUES (1010, 0, 8, 1, 11, '8', '被禁用', 'dag', ''); +INSERT INTO `zc_cata` VALUES (1011, 0, 9, 1, 11, '9', '登录保护', 'warn', ''); +INSERT INTO `zc_cata` VALUES (1012, 0, 10, 1, 11, '10', '正常', 'succ', ''); +INSERT INTO `zc_cata` VALUES (1020, 0, 10, 2, 12, '10', '草稿', 'def', ''); +INSERT INTO `zc_cata` VALUES (1021, 0, 20, 1, 12, '20', '未审核', 'man', ''); +INSERT INTO `zc_cata` VALUES (1022, 0, 50, 1, 12, '50', '审核中', 'warn', ''); +INSERT INTO `zc_cata` VALUES (1023, 0, 90, 1, 12, '90', '驳回', 'dag', ''); +INSERT INTO `zc_cata` VALUES (1024, 0, 95, 1, 12, '95', '撤回', 'def', ''); +INSERT INTO `zc_cata` VALUES (1025, 0, 100, 1, 12, '100', '通过', 'succ', ''); +INSERT INTO `zc_cata` VALUES (1030, 0, 20, 1, 13, '20', '等待执行', 'succ', ''); +INSERT INTO `zc_cata` VALUES (1031, 0, 30, 1, 13, '30', '执行中', 'warn', ''); +INSERT INTO `zc_cata` VALUES (1039, 0, 90, 1, 13, '90', '禁止执行', 'dag', ''); +INSERT INTO `zc_cata` VALUES (1040, 0, 10, 1, 14, '10', '总控', '', ''); +INSERT INTO `zc_cata` VALUES (1041, 0, 20, 1, 14, '20', 'SaaS PC端', '', ''); +INSERT INTO `zc_cata` VALUES (1042, 0, 21, 1, 14, '21', 'SaaS 移动端', '', ''); +INSERT INTO `zc_cata` VALUES (1150, 0, 10, 1, 18, '10', '申请中', 'def', ''); +INSERT INTO `zc_cata` VALUES (1151, 0, 20, 1, 18, '20', '已通过', 'warn', ''); +INSERT INTO `zc_cata` VALUES (1152, 0, 21, 2, 18, '21', '微信操作中', 'warn', ''); +INSERT INTO `zc_cata` VALUES (1153, 0, 30, 1, 18, '30', '已传发票', 'man', ''); +INSERT INTO `zc_cata` VALUES (1154, 0, 50, 1, 18, '50', '待打款', 'def', ''); +INSERT INTO `zc_cata` VALUES (1155, 0, 90, 1, 18, '90', '已拒绝', 'dag', ''); +INSERT INTO `zc_cata` VALUES (1156, 0, 100, 1, 18, '100', '已完成', 'succ', ''); +INSERT INTO `zc_cata` VALUES (1200, 0, 10, 1, 19, '10', '充值', '', ''); +INSERT INTO `zc_cata` VALUES (1201, 0, 11, 1, 19, '11', '提现', '', ''); +INSERT INTO `zc_cata` VALUES (1210, 0, 20, 1, 19, '20', '推荐奖', '', ''); +INSERT INTO `zc_cata` VALUES (1211, 0, 21, 1, 19, '21', '带新奖', '', ''); +INSERT INTO `zc_cata` VALUES (1212, 0, 22, 1, 19, '22', '领导奖', '', ''); +INSERT INTO `zc_cata` VALUES (1550, 0, 1, 1, 21, '10', 'LV.1', '', ''); +INSERT INTO `zc_cata` VALUES (1551, 0, 2, 1, 21, '20', 'LV.2', '', ''); +INSERT INTO `zc_cata` VALUES (1600, 0, 0, 1, 22, '10', '劣后', '', ''); +INSERT INTO `zc_cata` VALUES (1601, 0, 0, 1, 22, '20', '正常', '', ''); +INSERT INTO `zc_cata` VALUES (1602, 0, 0, 1, 22, '30', '置顶', '', ''); +INSERT INTO `zc_cata` VALUES (1603, 0, 0, 1, 22, '40', '总置顶', '', ''); +INSERT INTO `zc_cata` VALUES (1650, 0, 0, 1, 23, '10', '草稿', 'def', ''); +INSERT INTO `zc_cata` VALUES (1651, 0, 0, 1, 23, '20', '待审核', 'warn', ''); +INSERT INTO `zc_cata` VALUES (1652, 0, 0, 1, 23, '90', '驳回', 'dag', ''); +INSERT INTO `zc_cata` VALUES (1653, 0, 0, 1, 23, '100', '发布', 'succ', ''); +INSERT INTO `zc_cata` VALUES (1700, 0, 10, 1, 24, 'a', '实名认证', '', ''); +INSERT INTO `zc_cata` VALUES (1701, 0, 20, 1, 24, 'b', '付费会员', '', ''); +INSERT INTO `zc_cata` VALUES (10100, 0, 1, 1, 100, 'text', '文本', '', ''); +INSERT INTO `zc_cata` VALUES (10101, 0, 2, 1, 100, 'json', 'JSON', '', ''); +INSERT INTO `zc_cata` VALUES (10105, 0, 5, 1, 100, 'fcall', '函数', '', ''); +INSERT INTO `zc_cata` VALUES (10110, 0, 10, 1, 100, 'image', '理解图像', '', ''); +INSERT INTO `zc_cata` VALUES (10115, 0, 15, 1, 100, 'video', '理解视频', '', ''); +INSERT INTO `zc_cata` VALUES (10120, 0, 20, 1, 100, '3dmodel', '理解三维', '', ''); +INSERT INTO `zc_cata` VALUES (10150, 0, 0, 1, 101, '10', '等待介入', '', ''); +INSERT INTO `zc_cata` VALUES (10151, 0, 0, 1, 101, '30', '专家研判', '', ''); +INSERT INTO `zc_cata` VALUES (10152, 0, 0, 1, 101, '20', '专家建议', '', ''); +INSERT INTO `zc_cata` VALUES (10154, 0, 0, 1, 101, '100', 'AI不执行', '', ''); +INSERT INTO `zc_cata` VALUES (10155, 0, 0, 1, 101, '110', 'AI自主执行', '', ''); +INSERT INTO `zc_cata` VALUES (10156, 0, 0, 1, 101, '150', '直接执行', '', ''); +INSERT INTO `zc_cata` VALUES (10157, 0, 0, 1, 101, '160', '改后执行', '', ''); +INSERT INTO `zc_cata` VALUES (10159, 0, 0, 1, 101, '190', '人类拒绝', '', ''); +INSERT INTO `zc_cata` VALUES (10160, 0, 0, 1, 101, '200', 'AI执行已阅', '', ''); +INSERT INTO `zc_cata` VALUES (10161, 0, 0, 1, 101, '210', 'AI执行问题', '', ''); +INSERT INTO `zc_cata` VALUES (10200, 0, 10, 1, 102, '10', '小学', '', ''); +INSERT INTO `zc_cata` VALUES (10201, 0, 10, 1, 102, '20', '初中', '', ''); +INSERT INTO `zc_cata` VALUES (10202, 0, 10, 1, 102, '30', '高中', '', ''); +INSERT INTO `zc_cata` VALUES (10203, 0, 10, 1, 102, '40', '大专', '', ''); +INSERT INTO `zc_cata` VALUES (10204, 0, 10, 1, 102, '50', '本科', '', ''); +INSERT INTO `zc_cata` VALUES (10205, 0, 10, 1, 102, '60', '硕士', '', ''); +INSERT INTO `zc_cata` VALUES (10206, 0, 10, 1, 102, '70', '博士', '', ''); +INSERT INTO `zc_cata` VALUES (10250, 0, 10, 1, 103, '10', '等待指令', '', ''); +INSERT INTO `zc_cata` VALUES (10251, 0, 10, 1, 103, '20', '队列中', '', ''); +INSERT INTO `zc_cata` VALUES (10252, 0, 10, 1, 103, '30', '转账中', '', ''); +INSERT INTO `zc_cata` VALUES (10253, 0, 10, 1, 103, '100', '成功', '', ''); +INSERT INTO `zc_cata` VALUES (10254, 0, 10, 1, 103, '90', '失败', '', ''); + +SET FOREIGN_KEY_CHECKS = 1;