# performance_system **Repository Path**: JUTSSAM/performance_system ## Basic Information - **Project Name**: performance_system - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-11-07 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 绩效计算系统 后端采用python3.7 + django2.2 + mysql5.7 前端在开源项目vue-element-admin基础上开发 ## 后端部署 ### 环境部署 ``` python manage.py migrate conda install pymysql pip install django-cors-headers ``` PerformanceCalculation\Lib\site-packages\django\db\backends\mysql\base.py 注释掉 35-36 ```python # if version < (1, 3, 13): # raise ImproperlyConfigured('mysqlclient 1.3.13 or newer is required; you have %s.' % Database.__version__) ``` PerformanceCalculation\Lib\site-packages\django\db\backends\mysql\operations.py 修改146 ```python if query is not None: # query = query.decode(errors='replace') query = query.encode(errors='replace') return query ``` `python manage.py create superuser` 创建超级管理员 `python manage.py runserver` 运行服务 ## 前端部署 见 frontend/readme.md ## 接口 base url : localhost:8000 ### 状态码 | 数字 | 宏 | 含义 | | --- | --- | --- | | 200 | SUCCESS | 请求成功 | | 500 | WRONG_METHOD | 请求方法错误 | | 501 | WRONG_POINTER | 请求内容不存在 | | 502 | WRONG_PARAM | 参数格式有误 | | 503 | NOT_LOGIN | 没有登陆或者状态过期 | | 504 | NO_ACCESS | 没有权限 | ### 用户接口 - 创建\修改 用户 POST /user/save Request: ```json { "username":"bjyang", "password":"password", "nickname":"杨宝1君", "email":"bjyang@tencent.com", "is_admin":1, "user_id":2 } ``` |字段|类型|介绍| |---|---|---| |username|char|用户名| |password|char|密码| |nickname|char|昵称| |email|char|邮箱| |is_admin|boolean|是否为负责人| |user_id|int|用户id| Response: ```json { "code": 200, "data": "[username]" } ``` - 登录 POST /user/login Request: ```json { "username":"bjyang", "password":"password" } ``` |字段|类型|介绍| |---|---|---| |username|char|用户名| |password|char|密码| Response: ```json { "code": 200, "data": "[username]" } ``` - 用户信息 GET /user/info Request: 无 Response: ```json { "code": 200, "data": { "id": 1, "name": "[username]", "is_admin": true, "is_superuser": true } } ``` - 查看用户绩效 GET /user/index ```json { "code": 200, "data": { "personal": { "performance": [{ "project": "123", "number": 24.6, "head_user": "杨宝君" }], "achievement": [{ "project": "123", "number": 24.6, "head_user": "未输入用户名" }], "argument": [{ "project": "123", "number": 0, "head_user": "未输入用户名" }, { "project": "123", "number": 0, "head_user": "杨宝君" }], "service": { "activity_num": 0, "activity": "[{"level": "2", "total_people": 5}, {"level": "1", "total_people": "2"}, {"level": "3", "total_people": "4"}, {"level": "23", "total_people": "23"}]", "hangar_num": 0, "hangar": "[{"level": 1, "total_people": 5}, {"level": "12", "total_people": "2"}]", "visual_design_num": 0.1, "visual_design": "[{"level": 1, "total_people": 5}]", "service_num": 20, "service": "[{"overall": 1, "intensity": 5}]" }, "research": { "paper_num": 370.0, "paper": "[{"rank": 1, "partition": "123", "total_people": 3}, {"rank": "11", "partition": "22", "total_people": "22"}, {"rank": "11", "partition": "22", "total_people": "22"}, {"rank": "11", "partition": "22", "total_people": "22"}]", "patent_num": 0, "patent": "[{"rank": 1, "total_people": 3}, {"rank": "5", "total_people": "1"}]", "award_num": 0, "award": "[{"rank": 1, "level": 2, "total_people": 3}, {"rank": "1", "level": "2", "total_people": "3"}]", "acceptance_num": 0, "acceptance": "[{"rank": 1, "level": 2, "total_people": 3}, {"rank": "7", "level": "6", "total_people": "8"}, {"rank": "7", "level": "6", "total_people": "8"}]" } }, "related": [{ "user_id": 4, "project": "123", "username": "吕洋", "performance": 24.6, "achievement": 0.2, "argument": 0 }, { "user_id": 2, "project": "123", "username": "杨宝君", "performance": 24.6, "achievement": 0, "argument": 0 }] } } ``` |参数|类型|含义| |---|---|---| |personal|dict|个人绩效| |||| |achievement|array|当年到款| |project|string|项目标题| |head_user|string|负责人| |number|float|绩效实际数字| |||| |performance|array|新签合同| |project|string|项目标题| |head_user|string|负责人| |number|float|绩效实际数字| |||| |argument|dict|论证编制| |project|string|项目标题| |head_user|string|负责人| |number|float|绩效实际数字| |||| |service|dict|公共服务| |activity|array|展览活动| |activity_num|float|展览活动总绩效| |activity|数组|活动参展| |level|float|级别系数| |total_people|int|参与人数| || |hangar|数组|机库讲解| |hangar_num|float|机库讲解总绩效| |level|float|角色排名指数| |total_people|int|参与人数| || |visual_design|数组|视觉设计| |visual_design_num|数组|视觉设计| |level|float|角色排名指数| |total_people|int|参与人数| || |service|数组|综合服务| |service_num|数组|综合服务总绩效| |overall|float|综合评价得分| |intensity|float|工作强度指数| |||| |research|dict|科研成果| |paper|数组|论文| |paper_num|float|论文总绩效| |rank|float|角色排名指数| |partition|float|分区指数| |total_people|int|参与人数| || |patent|数组|专利、软著| |patent_num|float|专利、软著总绩效| |rank|float|角色排名指数| |total_people|int|参与人数| || |award|数组|获奖| |award_num|float|获奖| |rank|float|角色排名指数总绩效| |level|float|指数级别| |total_people|int|参与人数| || |acceptance|数组|结题验收| |acceptance_num|float|结题验收总绩效| |rank|float|角色排名指数| |level|float|指数级别| |total_people|int|参与人数| |||| |related|array|相关人员绩效| |user_id|int|用户id| |username|int|用户| |project|string|项目| |performance|float|新签合同| |achievement|float|当年到款| |argument|string|论证编制| - 用户列表 GET /user/list Request: ?page=1&size=2 |参数|含义| |---|---| |page|| |size|| Response: ```json { "code": 200, "data": { "list": [ { "id": 1, "name": "我的明治" } ], "total_page": 1 } } ``` - 负责人列表 GET /user/head/list Request: Response: ```json { "code": 200, "data": [{ "id": 1, "name": "我的明治" }] } ``` - 退出 POST/GET /user/logout Request: 无 Response: ```json { "code": 200, "data": "success" } ``` ### 项目接口 - 获取项目信息 GET /project/get Request: ?project_id=3 |字段|类型|介绍| |---|---|---| |project_id|char|项目id| Response: ```json { "code": 200, "data": { "project_id": 1, "title": "测试标题", "introduce": "测试简介", "head_user_id": 1, "head_user": "admin", "total_number": 350.2, "start_date": "2019-11-05", "end_date": "2019-11-30" } } ``` - 获取项目list GET /project/list Request: |字段|类型|介绍| |---|---|---| |page|-|-| |size|-|-| Response: ```json { "code": 200, "data": { "list": [ { "serial": "测试serial", "decree": "测试decree", "title": "测试标题", "introduce": "测试简介", "head_user_id": 1, "head_user": "", "total_number": 350.2, "start_date": "2019-11-05", "end_date": "2019-11-30" } ], "total_page": 1 } } ``` - 保存个人绩效(公共服务和研究成果) POST /user/input/save Request: ```json { "topic": "visual_design", "data": { "level": "4", "total_people": "5" } } ``` |字段|类型|含义| |---|---|---| |topic|string|哪一个类里的| |data|dict|数据| Response: ```json { "code": 200, "data": "success" } ``` - 保存项目信息 POST /project/save Request: ```json { "decree": "123", "end_date": "2019-11-12", "introduce": "123", "serial": "123", "start_date": "2019-11-11", "title": "123", "total_num": 123, "user_id": 1 } ``` |字段|类型|介绍| |---|---|---| |project_id|int|项目id| |serial|string|项目编号| |decree|string|项目令号| |title|string|项目标题| |introduce|string|简介| |user_id|int|负责人id| |total_number|float|项目总绩效| |start_date|date|开始时间| |end_date|date|结束时间| Response: ```json { "code": 200, "data": "success" } ``` - 删除项目 POST /project/delete Request: |字段|类型|介绍| |---|---|---| |project_id|int|项目id| Response: ```json { "code": 200, "data": "success" } ``` ### 绩效接口 该绩效为考核方案中的 *[新签合同]* 和 *[当年到款]* 内容 新签合同对应的是performance 当年到款对应的是achievement 只需要把接口中的performance换成achievement - 保存 POST /performance/save Request: ```json { "project_id": 2, "type": 1, "list": [{ "user_id": 2, "performance": 0.2 }] } ``` |字段|类型|介绍| |---|---|---| |project_id|int|项目id| |type|int|比例(1)还是真实数目(2)| |list|json|对应的人和他的绩效 [{"user_id": 1, "performance": 0.2}, {"user_id": 1, "performance": 0.2}] Response: ```json { "code": 200, "data": "success" } ``` - 针对个人获取 GET /performance/get/user Request: ?user_id=2 |字段|类型|介绍| |---|---|---| |user_id|int|用户id| Response: ```json { "msg": "success", "data": [ { "type": 1, "project_title": "测试标题", "performance": 0.2 }, { "type": 1, "project_title": "测试标题", "performance": 0.2 } ] } ``` - 针对项目获取 GET /performance/get/project Request: ?project_id=2 |字段|类型|介绍| |---|---|---| |project_id|int|项目id| Response: ```json { "msg": "success", "data": [ { "type": 1, "user_name": "a", "performance": 0.2 }, { "type": 1, "user_name": "b", "performance": 0.2 } ] } ``` ### 论证编制 指南、标准、项目申报等论证编制 不产生直接经济效益的项目争取等论证编制相关工作,参与人员也可获得个人绩点 - 保存 POST /argument/save Request: ```json { "user_id": 1, "guide": [{ "level": 1, "total_people": 5 }], "standard": [{ "level": 1, "total_people": 5 }], "application": [{ "level": 1, "total_people": 5, "money": 100, "ratio": 2.0 }] } ``` |字段|类型|介绍| |---|---|---| |user_id|int|用户id| |guide|json|指南编制json| |standard|json|标准编制json| |application|json|项目申报json| Response: ```json { "code": 200, "data": "success" } ``` - 针对个人获取 GET /argument/get/user Request: |字段|类型|介绍| |---|---|---| |user_id|int|用户id| Response: ```json { "code": 200, "data": { "guide": [{ "level": 1, "total_people": 5 }], "standard": [{ "level": 1, "total_people": 5 }], "application": [{ "level": 1, "total_people": 5, "money": 100, "ratio": 2.0 }] } } ``` |字段|类型|介绍| | --- | --- | --- | |guide|数组|指南编制| |level|float|级别指数| |total_people|int|参与人数| || |standard|数组|标准编制| |level|float|级别系数| |total_people|int|参与人数| || |application|数组|项目申报| |level|float|角色排名指数| |total_people|int|参与申报人数| |money|float|项目金额| |ratio|float|申报绩点系数| ### 公共服务 - 保存 POST /service/save Request: ```json { "user_id": 1, "activity": [{ "level": 1, "total_people": 5 }], "hangar": [{ "level": 1, "total_people": 5 }], "visual_design": [{ "level": 1, "total_people": 5 }], "service": [{ "overall": 1, "intensity": 5 }] } ``` |字段|类型|介绍| |---|---|---| |user_id|int|用户id| |activity|json|活动参展json| |hangar|json|机库讲解json| |visual_design|json|视觉设计json| |service|json|综合服务json| Response: ```json { "code": 200, "data": "success" } ``` - 针对个人获取 GET /service/get/user Request: |字段|类型|介绍| |---|---|---| |user_id|int|用户id| Response: ```json { "code": 200, "data": { "activity": [{ "level": 1, "total_people": 5 }], "hangar": [{ "level": 1, "total_people": 5 }], "visual_design": [{ "level": 1, "total_people": 5 }], "service": [{ "overall": 1, "intensity": 5 }] } } ``` |字段|类型|介绍| | --- | --- | --- | |activity|数组|活动参展| |level|float|级别系数| |total_people|int|参与人数| || |hangar|数组|机库讲解| |level|float|角色排名指数| |total_people|int|参与人数| || |visual_design|数组|视觉设计| |level|float|角色排名指数| |total_people|int|参与人数| || |service|数组|综合服务| |overall|float|综合评价得分| |intensity|float|工作强度指数| ### 科研结果 - 保存 POST /research/save Request: ```json { "user_id": 1, "paper": [{ "rank":1, "partition":2, "total_people":3 }], "patent": [{ "rank":1, "total_people":3 }], "award": [{ "rank":1, "level":2, "total_people":3 }], "acceptance": [{ "rank":1, "level":2, "total_people":3 }] } ``` |字段|类型|介绍| |---|---|---| |user_id|int|用户id| |paper|json|论文内容json| |patent|json|专利内容json| |award|json|获奖内容json| |acceptance|json|解题验收内容json| Response: ```json { "code": 200, "data": "success" } ``` - 针对个人获取 GET /research/get/user Request: |字段|类型|介绍| |---|---|---| |user_id|int|用户id| Response: ```json { "code": 200, "data": { "paper": [{ "rank":1, "partition":2, "total_people":3 }], "patent": [{ "rank":1, "total_people":3 }], "award": [{ "rank":1, "level":2, "total_people":3 }], "acceptance": [{ "rank":1, "level":2, "total_people":3 }] } } ``` |字段|类型|介绍| | --- | --- | --- | |paper|数组|论文| |rank|float|角色排名指数| |partition|float|分区指数| |total_people|int|参与人数| || |patent|数组|专利、软著| |rank|float|角色排名指数| |total_people|int|参与人数| || |award|数组|获奖| |rank|float|角色排名指数| |level|float|指数级别| |total_people|int|参与人数| || |acceptance|数组|结题验收| |rank|float|角色排名指数| |level|float|指数级别| |total_people|int|参与人数|