常州网站制作方案,深圳发型网站建设,永康手工活外发加工网,怎么查看网站死链接背景 校园规模和复杂性#xff1a; 大型学校和校园通常拥有众多的建筑物、设施和设备#xff0c;需要有效的维护和报修系统#xff0c;以满足学生、教职员工和校园管理人员的需求。 学生和员工需求#xff1a; 学生和员工在校园内可能遇到各种维修问题#xff0c;如故障的…背景 校园规模和复杂性 大型学校和校园通常拥有众多的建筑物、设施和设备需要有效的维护和报修系统以满足学生、教职员工和校园管理人员的需求。 学生和员工需求 学生和员工在校园内可能遇到各种维修问题如故障的电灯、漏水、损坏的设备等。他们需要一种便捷的方式来报修问题并追踪报修进度。 校园安全和卫生 校园管理方需要确保校园内的设施和设备处于良好状态以提供安全和卫生的学习和工作环境。因此他们需要一个系统来管理和处理报修请求。 工作效率提升 传统的报修方式可能涉及电话、邮件或纸质报修单这可能会导致信息不准确或丢失。校园需要一种更高效的方式来收集和处理报修请求。 数据管理和分析 校园管理方需要能够记录和分析报修数据以便了解常见的问题、维修成本和维修工作的效率。 可持续性和资源分配 通过维护设施和设备校园可以延长其使用寿命降低维修成本减少资源浪费有助于可持续性管理。
功能设计
基于这些需求和背景校园物业报修小程序的开发变得重要。这样的小程序可以提供以下功能 报修请求提交 学生和员工可以使用小程序提交报修请求包括问题的描述、照片等信息。 报修进度追踪 用户可以随时追踪其报修请求的进度以了解何时将解决问题。 工单分配和管理 校园管理人员可以使用小程序来分配工单给维修人员确保问题得到及时解决。 维修资源管理 系统可以帮助管理方有效地分配维修资源提高维修效率。
开发校园物业报修小程序有助于提高校园的效率、安 全性和可持续性同时提供更好的用户体验。此外小程序还可以降低沟通成本减少信息丢失的可能性为校园管理提供有力的工具。
概要设计 数据库设计
TaskModel.DB_STRUCTURE { _pid: ‘string|true’, TASK_ID: ‘string|true’,
TASK_TYPE: int|true|default0|comment类型 0用户创建1系统创建,TASK_USER_ID: string|false|comment用户ID,TASK_STATUS: int|true|default0|comment状态 0待派工,1已派工,2待处理, 9已完成,TASK_FORMS: array|true|default[],
TASK_OBJ: object|true|default{}, TASK_MEMBER_ID: string|false|comment工作人员ID,
TASK_MEMBER_NAME: string|false,
TASK_MEMBER_PHONE: string|false,
TASK_MEMBER_CATE_NAME: string|false|comment工作人员分类,
TASK_MEMBER_CATE_ID: string|false|comment工作人员分类ID,
TASK_MEMBER_TIME: int|true|default0|comment工作人员派工时间,TASK_RUN_FORMS: array|true|default[],
TASK_RUN_OBJ: object|true|default{},
TASK_RUN_TIME: int|true|default0,TASK_OVER_FORMS: array|true|default[],
TASK_OVER_OBJ: object|true|default{},
TASK_OVER_TIME: int|true|default0,TASK_COMMENT_FORMS: array|true|default[],
TASK_COMMENT_OBJ: object|true|default{},
TASK_COMMENT_TIME: int|true|default0,
TASK_COMMENT_STATUS: int|true|default0,TASK_MEMBER_ADMIN_ID: string|false,
TASK_MEMBER_ADMIN_NAME: string|false,TASK_ADD_TIME: int|true,
TASK_EDIT_TIME: int|true,
TASK_ADD_IP: string|false,
TASK_EDIT_IP: string|false,};
// 字段前缀 TaskModel.FIELD_PREFIX “TASK_”;
/**
状态 0待处理,1处理中 9已完成 */ TaskModel.STATUS { WAIT: 0, APPT: 1, RUN: 2, OVER: 9 };
TaskModel.STATUS_DESC { WAIT: ‘待派工’, APPT: ‘已派工’, RUN: ‘处理中’, OVER: ‘已完成’, };
难点攻关
// 取得处理流程 getTaskLogList(task) { let taskLogList []; if (task.TASK_TYPE 0) { taskLogList.push( { desc: ‘用户提交’, time: timeUtil.timestamp2Time(task.TASK_ADD_TIME, ‘Y-M-D h:m’) } ); } else { taskLogList.push( { desc: ‘后台录入’, time: timeUtil.timestamp2Time(task.TASK_ADD_TIME, ‘Y-M-D h:m’) } ); } if (task.TASK_STATUS TaskModel.STATUS.APPT) {let desc 已派工给 [ task.TASK_MEMBER_CATE_NAME ] task.TASK_MEMBER_NAME 正在等待处理;if (task.TASK_MEMBER_PHONE) desc 电话 task.TASK_MEMBER_PHONE ;taskLogList.push({desc,time: timeUtil.timestamp2Time(task.TASK_MEMBER_TIME, Y-M-D h:m)});}if (task.TASK_STATUS TaskModel.STATUS.RUN)taskLogList.push({desc: [ task.TASK_MEMBER_CATE_NAME ] task.TASK_MEMBER_NAME 开始处理,time: timeUtil.timestamp2Time(task.TASK_RUN_TIME, Y-M-D h:m),content: task.TASK_RUN_OBJ.content,img: task.TASK_RUN_OBJ.img,});if (task.TASK_STATUS TaskModel.STATUS.OVER)taskLogList.push({desc: [ task.TASK_MEMBER_CATE_NAME ] task.TASK_MEMBER_NAME 已完成,time: timeUtil.timestamp2Time(task.TASK_OVER_TIME, Y-M-D h:m),content: task.TASK_OVER_OBJ.content,img: task.TASK_OVER_OBJ.img,});return taskLogList;
}async getTaskCountByType(userId) {let status0Cnt await TaskModel.count({ TASK_STATUS: 0, TASK_USER_ID: userId });let status1Cnt await TaskModel.count({ TASK_STATUS: 1, TASK_USER_ID: userId });let status2Cnt await TaskModel.count({ TASK_STATUS: 2, TASK_USER_ID: userId });let status9Cnt await TaskModel.count({ TASK_STATUS: 9, TASK_USER_ID: userId });let task {status0Cnt,status1Cnt,status2Cnt,status9Cnt}return task;
}async getTaskDetail(userId, id, isAdmin false) {let where {_id: id}if (!isAdmin) where.TASK_USER_ID userId;let task await TaskModel.getOne(where);task.taskLogList this.getTaskLogList(task);return task;
}/**添加 */
async insertTask(userId, {forms
}) {this.AppError([校园报修]该功能暂不开放如有需要请加作者微信cclinux0730);
}/**修改 */
async editTask({id,forms
}, formsName TASK_FORMS, objName TASK_OBJ) {this.AppError([校园报修]该功能暂不开放如有需要请加作者微信cclinux0730);
}// 更新forms信息
async updateTaskForms({id,hasImageForms
}, formsName TASK_FORMS, objName TASK_OBJ) {await TaskModel.editForms(id, formsName, objName, hasImageForms);
}/**删除数据 */
async delTask(userId, id, isAdmin) {this.AppError([校园报修]该功能暂不开放如有需要请加作者微信cclinux0730);}async commentTask(id, forms) {this.AppError([校园报修]该功能暂不开放如有需要请加作者微信cclinux0730);
}/** 取得我的 */
async getMyTaskList(userId, {search, // 搜索条件sortType, // 搜索菜单sortVal, // 搜索菜单orderBy, // 排序 page,size,isTotal true,oldTotal
}) {orderBy orderBy || {TASK_ADD_TIME: desc};let fields *;let where {};where.and {_pid: this.getProjectId(), //复杂的查询在此处标注PID TASK_USER_ID: userId};if (util.isDefined(search) search) {where.or [{ [TASK_OBJ.type]: [like, search] },{ [TASK_OBJ.address]: [like, search] },{ [TASK_OBJ.person]: [like, search] }];} else if (sortType sortVal ! ) {// 搜索菜单switch (sortType) {case type: {where.and[TASK_OBJ.type] sortVal;break;}case status: {where.and.TASK_STATUS Number(sortVal);break;}case sort: {orderBy this.fmtOrderBySort(sortVal, TASK_ADD_TIME);break;}}}let result await TaskModel.getList(where, fields, orderBy, page, size, isTotal, oldTotal);return result;
}async getTaskList({search, // 搜索条件sortType, // 搜索菜单sortVal, // 搜索菜单orderBy, // 排序 page,size,isTotal true,oldTotal
}) {orderBy orderBy || {TASK_ADD_TIME: desc};let fields *;let where {};where.and {_pid: this.getProjectId(), //复杂的查询在此处标注PID };if (util.isDefined(search) search) {where.or [{ [TASK_OBJ.title]: [like, search] },{ [TASK_OBJ.building]: [like, search] },];} else if (sortType sortVal ! ) {// 搜索菜单switch (sortType) {case type: {where.and[TASK_OBJ.type] sortVal;break;}case status: {where.and.TASK_STATUS Number(sortVal);break;}case sort: {orderBy this.fmtOrderBySort(sortVal, TASK_ADD_TIME);break;}}}let result await TaskModel.getList(where, fields, orderBy, page, size, isTotal, oldTotal);return result;
}用户UI设计 维修工作人员UI设计 管理人员UI设计 git下载
下载