当前位置: 首页 > news >正文

黄岛网站建设哪家好风险网站怎么解决方法

黄岛网站建设哪家好,风险网站怎么解决方法,全国装饰公司最新排行榜,网站被挂黑链对网站有啥影响背景 校园规模和复杂性: 大型学校和校园通常拥有众多的建筑物、设施和设备,需要有效的维护和报修系统,以满足学生、教职员工和校园管理人员的需求。 学生和员工需求: 学生和员工在校园内可能遇到各种维修问题,如故障的…

背景

  • 校园规模和复杂性: 大型学校和校园通常拥有众多的建筑物、设施和设备,需要有效的维护和报修系统,以满足学生、教职员工和校园管理人员的需求。

  • 学生和员工需求: 学生和员工在校园内可能遇到各种维修问题,如故障的电灯、漏水、损坏的设备等。他们需要一种便捷的方式来报修问题并追踪报修进度。

  • 校园安全和卫生: 校园管理方需要确保校园内的设施和设备处于良好状态,以提供安全和卫生的学习和工作环境。因此,他们需要一个系统来管理和处理报修请求。

  • 工作效率提升: 传统的报修方式可能涉及电话、邮件或纸质报修单,这可能会导致信息不准确或丢失。校园需要一种更高效的方式来收集和处理报修请求。

  • 数据管理和分析: 校园管理方需要能够记录和分析报修数据,以便了解常见的问题、维修成本和维修工作的效率。

  • 可持续性和资源分配: 通过维护设施和设备,校园可以延长其使用寿命,降低维修成本,减少资源浪费,有助于可持续性管理。

功能设计

基于这些需求和背景,校园物业报修小程序的开发变得重要。这样的小程序可以提供以下功能:

  • 报修请求提交: 学生和员工可以使用小程序提交报修请求,包括问题的描述、照片等信息。

  • 报修进度追踪: 用户可以随时追踪其报修请求的进度,以了解何时将解决问题。

  • 工单分配和管理: 校园管理人员可以使用小程序来分配工单给维修人员,确保问题得到及时解决。

  • 维修资源管理: 系统可以帮助管理方有效地分配维修资源,提高维修效率。

开发校园物业报修小程序有助于提高校园的效率、安
全性和可持续性,同时提供更好的用户体验。此外,小程序还可以降低沟通成本,减少信息丢失的可能性,为校园管理提供有力的工具。

概要设计

在这里插入图片描述

数据库设计

TaskModel.DB_STRUCTURE = {
_pid: ‘string|true’,
TASK_ID: ‘string|true’,

TASK_TYPE: 'int|true|default=0|comment=类型 0=用户创建,1=系统创建',TASK_USER_ID: 'string|false|comment=用户ID',TASK_STATUS: 'int|true|default=0|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|default=0|comment=工作人员派工时间',TASK_RUN_FORMS: 'array|true|default=[]',
TASK_RUN_OBJ: 'object|true|default={}',
TASK_RUN_TIME: 'int|true|default=0',TASK_OVER_FORMS: 'array|true|default=[]',
TASK_OVER_OBJ: 'object|true|default={}',
TASK_OVER_TIME: 'int|true|default=0',TASK_COMMENT_FORMS: 'array|true|default=[]',
TASK_COMMENT_OBJ: 'object|true|default={}',
TASK_COMMENT_TIME: 'int|true|default=0',
TASK_COMMENT_STATUS: 'int|true|default=0',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下载

下载

http://www.yayakq.cn/news/630266/

相关文章:

  • 网站换程序 搜索引擎oa报表网站开发
  • 谁会在西安做网站的吗阿玛尼高仿手表网站
  • asp是网站开发吗高端品牌的优势
  • 垂直门户网站怎样查网站空间地址
  • html5网站在线制作冷库 东莞网站建设
  • 响应式品牌网站设计seo任务平台
  • 集团门户网站建设策划湖北建设信息网官网
  • 网站建设公司公司哪家好7星彩网站开发
  • 查询公司信息去哪里查seo能干一辈子吗
  • 韶关建设网站湛江制作网站公司
  • cms网站怎么建网站建设与设计教程视频
  • 建立网站可以赚钱吗域名邮箱申请
  • 太原网站建设多少钱工程资质加盟分公司
  • 模板网站五金自适应网站的代表
  • asp.net 网站的编译品牌运营和品牌推广
  • 网站建设需要多少钱文档上海南京东路网站建设
  • 做盗市相关网站什么播放器能看无线新闻台直播
  • 上海 建站wordpress死链
  • 网站备案信息核验单怎么p2p网站制作流程
  • 啤酒招商网站大全公司想做个网站
  • 企业宣传网站建设需求说明书html网页制作过程
  • 珠海市横琴建设局网站免费网站视频主持人
  • 娄底营销型网站建设个人网站素材下载
  • 济南网站推广¥做下拉去118cr上海网站开发月薪多少钱
  • 济南网站开发xywlcn建材网站的模板
  • 哪些网站可以做团购在哪儿可以找到网站开发的需求
  • 高端营销网站定制上海网络排名优化
  • 怎么查看网站备案自建网站国家审核要多久
  • 网站建设设计流程步骤自己搭建服务器 发布网站 域名如何申请
  • 网站制作公司知道万维科技沈阳企业网站设计制作