精华内容
下载资源
问答
  • react后台管理项目

    千次阅读 多人点赞 2021-08-19 22:03:14
    git管理项目4. 创建项目的基本结构5 引入antd6. 引入路由7. Login的静态组件8. 收集表单数据和表单的前台验证9. 高阶函数与高阶组件day021. 后台应用2. 编写ajax代码3. 实现登陆(包含自动登陆)4. 搭建admin的整体...

    文章目录

    介绍

    几天时间按照尚硅谷提供的资源做了一个后台管理的项目,放到gitee上了:

    https://gitee.com/aniu251700/react-admin

    熟练了部分常用的react语法,还有用到了redux状态管理,大致效果如下:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    day01

    1. 项目开发准备

    1). 描述项目
    2). 技术选型 
    3). API接口/接口文档/测试接口
    

    2. 启动项目开发

    1). 使用react脚手架创建项目
    2). 开发环境运行: npm start
    3). 生产环境打包运行: npm run build   serve build
    

    3. git管理项目

    1). 创建远程仓库
    2). 创建本地仓库
        a. 配置.gitignore
        b. git init
        c. git add .
        d. git commit -m "init"
    3). 将本地仓库推送到远程仓库
        git remote add origin url
        git push origin master
    4). 在本地创建dev分支, 并推送到远程
        git checkout -b dev
        git push origin dev
    5). 如果本地有修改
        git add .
        git commit -m "xxx"
        git push origin dev
    6). 新的同事: 克隆仓库
        git clone url
        git checkout -b dev origin/dev
        git pull origin dev
    7). 如果远程修改
        git pull origin dev
    

    4. 创建项目的基本结构

    api: ajax请求的模块
    components: 非路由组件
    pages: 路由组件
    App.js: 应用的根组件
    index.js: 入口js
    

    5 引入antd

    下载antd的包
    按需打包: 只打包import引入组件的js/css
        下载工具包
        config-overrides.js
        package.json
    自定义主题
        下载工具包
        config-overrides.js
    使用antd的组件
        根据antd的文档编写
    

    6. 引入路由

    下载包: react-router-dom
    拆分应用路由:
      Login: 登陆
      Admin: 后台管理界面
    注册路由:
      <BrowserRouter>
      <Switch>
      <Route path='' component={}/>
    

    7. Login的静态组件

    1). 自定义了一部分样式布局
    2). 使用antd的组件实现登陆表单界面
      Form  / Form.Item
      Input
      Icon
      Button
    

    8. 收集表单数据和表单的前台验证

    1). form对象
        如何让包含<Form>的组件得到form对象?  WrapLoginForm = Form.create()(LoginForm)
        WrapLoginForm是LoginForm的父组件, 它给LoginForm传入form属性
        用到了高阶函数和高阶组件的技术
    2). 操作表单数据
        form.getFieldDecorator('标识名称', {initialValue: 初始值, rules: []})(<Input/>)包装表单项组件标签
        form.getFieldsValue(): 得到包含所有输入数据的对象
        form.getFieldValue(id): 根据标识得到对应字段输入的数据
    
    3). 前台表单验证
        a. 声明式实时表单验证:
            form.getFieldDecorator('标识名称', {rules: [{min: 4, message: '错误提示信息'}]})(<Input/>)
        b. 自定义表单验证
            form.getFieldDecorator('标识名称', {rules: [{validator: this.validatePwd}]})(<Input/>)
            validatePwd = (rule, value, callback) => {
              if(有问题) callback('错误提示信息') else callack()
            } 
        c. 点击提示时统一验证
            form.validateFields((error, values) => {
              if(!error) {通过了验证, 发送ajax请求}
            })
    

    9. 高阶函数与高阶组件

    1. 高阶函数    1). 一类特别的函数        a. 接受函数类型的参数        b. 返回值是函数    2). 常见        a. 定时器: setTimeout()/setInterval()        b. Promise: Promise(() => {}) then(value => {}, reason => {})        c. 数组遍历相关的方法: forEach()/filter()/map()/reduce()/find()/findIndex()        d. 函数对象的bind()        e. Form.create()() / getFieldDecorator()()    3). 高阶函数更新动态, 更加具有扩展性2. 高阶组件    1). 本质就是一个函数    2). 接收一个组件(被包装组件), 返回一个新的组件(包装组件), 包装组件会向被包装组件传入特定属性    3). 作用: 扩展组件的功能    3. 高阶组件与高阶函数的关系    高阶组件是特别的高阶函数    接收一个组件函数, 返回是一个新的组件函数
    

    day02

    1. 后台应用

    启动后台应用: mongodb服务必须启动使用postman测试接口(根据接口文档):    访问测试: post请求的参数在body中设置    保存测试接口    导出/导入所有测试接口
    

    2. 编写ajax代码

    1). ajax请求函数模块: api/ajax.js    封装axios + Promise    函数的返回值是promise对象  ===> 后面用上async/await    自己创建Promise      1. 内部统一处理请求异常: 外部的调用都不用使用try..catch来处理请求异常      2. 异步返回是响应数据(而不是响应对象): 外部的调用异步得到的就直接是数据了(response --> response.data)2). 接口请求函数模块: api/index.js    根据接口文档编写(一定要具备这个能力)    接口请求函数: 使用ajax(), 返回值promise对象3). 解决ajax跨域请求问题(开发时)    办法: 配置代理  ==> 只能解决开发环境    编码: package.json: proxy: "http://localhost:5000"4). 对代理的理解    1). 是什么?        具有特定功能的程序    2). 运行在哪?        前台应用端        只能在开发时使用    3). 作用?        解决开发时的ajax请求跨域问题        a. 监视并拦截请求(3000)        b. 转发请求(4000)    4). 配置代理        告诉代理服务器一些信息: 比如转发的目标地址        开发环境: 前端工程师        生产环境: 后端工程师5). async和await    a. 作用?       简化promise对象的使用: 不用再使用then()来指定成功/失败的回调函数       以同步编码(没有回调函数了)方式实现异步流程    b. 哪里写await?        在返回promise的表达式左侧写await: 不想要promise, 想要promise异步执行的成功的value数据    c. 哪里写async?        await所在函数(最近的)定义的左侧写async
    

    3. 实现登陆(包含自动登陆)

    login.jsx    1). 调用登陆的接口请求    2). 如果失败, 显示错误提示信息    3). 如果成功了:        保存user到local/内存中        跳转到admin    4). 如果内存中的user有值, 自动跳转到adminsrc/index.js    读取local中user到内存中保存admin.jsx    判断如果内存中没有user(_id没有值), 自动跳转到loginstorageUtils.js    包含使用localStorage来保存user相关操作的工具模块    使用第三库store        简化编码        兼容不同的浏览器memoryUtils.js    用来在内存中保存数据(user)的工具类
    

    4. 搭建admin的整体界面结构

    1). 整体布局使用antd的Layout组件2). 拆分组件    LeftNav: 左侧导航    Header: 右侧头部3). 子路由    定义路由组件    注册路由
    

    5. LeftNav组件

    1). 使用antd的组件    Menu / Item / SubMenu2). 使用react-router    withRouter(): 包装非路由组件, 给其传入history/location/match属性    history: push()/replace()/goBack()    location: pathname属性    match: params属性3). componentWillMount与componentDidMount的比较    componentWillMount: 在第一次render()前调用一次, 为第一次render()准备数据(同步)    componentDidMount: 在第一次render()之后调用一次, 启动异步任务, 后面异步更新状态重新render4). 根据动态生成Item和SubMenu的数组    map() + 递归: 多级菜单列表    reduce() + 递归: 多级菜单列表5). 2个问题?    刷新时如何选中对应的菜单项?        selectedKey是当前请求的path    刷新子菜单路径时, 自动打开子菜单列表?        openKey是 一级列表项的某个子菜单项是当前对应的菜单项
    

    day03

    1. Header组件

    1). 界面静态布局    三角形效果2). 获取登陆用户的名称显示    MemoryUtils3). 当前时间    循环定时器, 每隔1s更新当前时间状态    格式化指定时间: dateUtils4). 天气预报    使用jsonp库发jsonp请求百度天气预报接口    对jsonp请求的理解5). 当前导航项的标题    得到当前请求的路由path: withRouter()包装非路由组件    根据path在menuList中遍历查找对应的item的title6). 退出登陆    Modal组件显示提示    清除保存的user    跳转到login7). 抽取通用的类链接按钮组件    通过...透传所有接收的属性: <Button {...props} />    <LinkButton>xxxx</LinkButton>    组件标签的所有子节点都会成为组件的children属性
    

    2. jsonp解决ajax跨域的原理

    1). jsonp只能解决GET类型的ajax请求跨域问题2). jsonp请求不是ajax请求, 而是一般的get请求3). 基本原理    浏览器端:        动态生成<script>来请求后台接口(src就是接口的url)        定义好用于接收响应数据的函数(fn), 并将函数名通过请求参数提交给后台(如: callback=fn)    服务器端:        接收到请求处理产生结果数据后, 返回一个函数调用的js代码, 并将结果数据作为实参传入函数调用    浏览器端:        收到响应自动执行函数调用的js代码, 也就执行了提前定义好的回调函数, 并得到了需要的结果数据
    

    day04: Category组件

    1. 使用antd组件构建分类列表界面

    CardTableButtonIcon
    

    2. 相关接口请求函数

    获取一级/二级分类列表添加分类更新分类
    

    3. 异步显示一级分类列表

    设计一级分类列表的状态: categorys异步获取一级分类列表: componentDidMount(){}更新状态, 显示
    

    4. 显示二级分类列表

    设计状态: subCategorys / parentId / parentName显示二级分类列表: 根据parentId状态值, 异步获取分类列表setState()的问题    setState()更新状态是异步更新的, 直接读取状态值还是旧的状态值    setState({}, [callback]), 回调函数是在状态更新且界面更新之后执行, 可以在此获取最新的状态
    

    5. 更新分类

    1). 界面    antd组件: Modal, Form, Input    显示/隐藏: showStatus状态为2/0    2). 功能    父组(Category)件得到子组件(AddForm)的数据(form)    调用更新分类的接口    重新获取分类列表
    

    day05

    1. 添加分类

    1). 界面    antd组件: Modal, Form, Select, Input    显示/隐藏: showStatus状态为1/0    2). 功能    父组(Category)件得到子组件(AddForm)的数据(form)    调用添加分类的接口    重新获取分类列表
    

    2. Product整体路由

    1). 配置子路由:     ProductHome / ProductDetail / ProductAddUpdate    <Route> / <Switch> / <Redirect>2). 匹配路由的逻辑:    默认: 逐层匹配   <Route path='/product' component={ProductHome}/>    exact属性: 完全匹配
    

    3. 分页实现技术(2种)

    1). 前台分页    请求获取数据: 一次获取所有数据, 翻页时不需要再发请求    请求接口:         不需要指定请求参数: 页码(pageNum)和每页数量(pageSize)        响应数据: 所有数据的数组2). 基于后台的分页    请求获取数据: 每次只获取当前页的数据, 翻页时要发请求    请求接口:         需要指定请求参数: 页码(pageNum)和每页数量(pageSize)        响应数据: 当前页数据的数组 + 总记录数(total)3). 如何选择?    基本根据数据多少来选择
    

    4. ProductHome组件

    1). 分页显示   界面: <Card> / <Table> / Select / Icon / Input / Button   状态: products / total   接口请求函数需要的数据: pageNum, pageSize   异步获取第一页数据显示       调用分页的接口请求函数, 获取到当前页的products和总记录数total       更新状态: products / total   翻页:       绑定翻页的监听, 监听回调需要得到pageNum       异步获取指定页码的数据显示   2). 搜索分页   接口请求函数需要的数据:        pageSize: 每页的条目数       pageNum: 当前请求第几页 (从1开始)       productDesc / productName: searchName 根据商品描述/名称搜索   状态:  searchType / searchName  / 在用户操作时实时收集数据   异步搜索显示分页列表       如果searchName有值, 调用搜索的接口请求函数获取数据并更新状态       3). 更新商品的状态   初始显示: 根据product的status属性来显示  status = 1/2   点击切换:       绑定点击监听       异步请求更新状态4). 进入详情界面   history.push('/product/detail', {product})5). 进入添加界面    history.push('/product/addupdate')
    

    5. ProductDetail组件

    1). 读取商品数据: this.props.location.state.product2). 显示商品信息: <Card> / List 3). 异步显示商品所属分类的名称    pCategoryId==0 : 异步获取categoryId的分类名称    pCategoryId!=0: 异步获取 pCategoryId/categoryId的分类名称4). Promise.all([promise1, promise2])    返回值是promise    异步得到的是所有promsie的结果的数组    特点: 一次发多个请求, 只有当所有请求都成功, 才成功, 并得到成功的数据,一旦有一个失败, 整个都失败
    

    day06

    1. ProductAddUpdate

    1). 基本界面    Card / Form / Input / TextArea / Button    FormItem的label标题和layout    2). 分类的级联列表    Cascader的基本使用    异步获取一级分类列表, 生成一级分类options    如果当前是更新二级分类的商品, 异步获取对应的二级分类列表, 生成二级分类options, 并添加为对应option的children    async函数返回值是一个新promise对象, promise的结果和值由async函数的结果决定    当选择某个一级分类项时, 异步获取对应的二级分类列表, 生成二级分类options, 并添加为当前option的children3). 表单数据收集与表单验证
    

    2. PicturesWall

    1). antd组件    Upload / Modal / Icon    根据示例DEMO改造编写2). 上传图片    在<Upload>上配置接口的path和请求参数名    监视文件状态的改变: 上传中 / 上传完成/ 删除    在上传成功时, 保存好相关信息: name / url    为父组件提供获取已上传图片文件名数组的方法3). 删除图片    当文件状态变为删除时, 调用删除图片的接口删除上传到后台的图片4). 父组件调用子组件对象的方法: 使用ref技术    1. 创建ref容器: thi.pw = React.createRef()    2. 将ref容器交给需要获取的标签元素: <PicturesWall ref={this.pw} />  // 自动将将标签对象添加为pw对象的current属性    3. 通过ref容器读取标签元素: this.pw.current
    

    day07

    1. RichTextEditor

    1). 使用基于react的富文本编程器插件库: react-draft-wysiwyg2). 参考库的DEMO和API文档编写3). 如果还有不确定的, 百度搜索, 指定相对准确的关键字
    

    2. 完成商品添加与修改功能

    1). 收集输入数据    通过form收集: name/desc/price/pCategoryId/categoryId    通过ref收集: imgs/detail    如果是更新收集: _id    将收集数据封装成product对象2). 更新商品    定义添加和更新的接口请求函数    调用接口请求函数, 如果成功并返回商品列表界面
    

    3. 角色管理

    1). 角色前台分页显示2). 添加角色3). 给指定角色授权    界面: Tree    状态: checkedKeys, 根据传入的role的menus进行初始化    勾选某个Node时, 更新checkedKeys    点击OK时: 通过ref读取到子组件中的checkedKeys作为要更新product新的menus            发请求更新product    解决默认勾选不正常的bug: 利用组件的componentWillReceiveProps()
    

    day08

    1. setState()的使用

    1). setState(updater, [callback]),    updater为返回stateChange对象的函数: (state, props) => stateChange    接收的state和props被保证为最新的2). setState(stateChange, [callback])    stateChange为对象,    callback是可选的回调函数, 在状态更新且界面更新后才执行3). 总结:    对象方式是函数方式的简写方式        如果新状态不依赖于原状态 ===> 使用对象方式        如果新状态依赖于原状态 ===> 使用函数方式    如果需要在setState()后获取最新的状态数据, 在第二个callback函数中读取
    

    2. setState()的异步与同步

    1). setState()更新状态是异步还是同步的?    a. 执行setState()的位置?        在react控制的回调函数中: 生命周期勾子 / react事件监听回调        非react控制的异步回调函数中: 定时器回调 / 原生事件监听回调 / promise回调 /...    b. 异步 OR 同步?        react相关回调中: 异步        其它异步回调中: 同步2). 关于异步的setState()    a. 多次调用, 如何处理?        setState({}): 合并更新一次状态, 只调用一次render()更新界面 ---状态更新和界面更新都合并了        setState(fn): 更新多次状态, 但只调用一次render()更新界面  ---状态更新没有合并, 但界面更新合并了    b. 如何得到异步更新后的状态数据?        在setState()的callback回调函数中
    

    3. Component与PureComponent

    1). Component存在的问题?    a. 父组件重新render(), 当前组件也会重新执行render(), 即使没有任何变化    b. 当前组件setState(), 重新执行render(), 即使state没有任何变化  2). 解决Component存在的问题    a. 原因: 组件的shouldcomponentUpdate()默认返回true, 即使数据没有变化render()都会重新执行    b. 办法1: 重写shouldComponentUpdate(), 判断如果数据有变化返回true, 否则返回false    c. 办法2: 使用PureComponent代替Component    d. 说明: 一般都使用PureComponent来优化组件性能  3). PureComponent的基本原理    a. 重写实现shouldComponentUpdate()    b. 对组件的新/旧state和props中的数据进行浅比较, 如果都没有变化, 返回false, 否则返回true    c. 一旦componentShouldUpdate()返回false不再执行用于更新的render()  4). 面试题:    组件的哪个生命周期勾子能实现组件优化?    PureComponent的原理?    区别Component与PureComponent?
    

    4. 用户管理

    1). 显示用户分页列表2). 添加用户3). 修改用户4). 删除用户
    

    5. 导航菜单权限控制

    1). 基本思路(依赖于后台):     角色: 包含所拥有权限的所有菜单项key的数组: menus=[key1, key2, key3]    用户: 包含所属角色的ID: role_id    当前登陆用户: user中已经包含了所属role对象    遍历显示菜单项时: 判断只有当有对应的权限才显示2). 判断是否有权限的条件?    a. 如果当前用户是admin    b. 如果当前item是公开的    c. 当前用户有此item的权限: key有没有menus中    d. 如果当前用户有此item的某个子item的权限
    

    day09

    1. redux理解

    什么?: redux是专门做状态管理的独立第3方库, 不是react插件, 但一般都用在react项目中作用?: 对应用中状态进行集中式的管理(写/读)开发: 与react-redux, redux-thunk等插件配合使用
    

    2. redux相关API

    redux中包含: createStore(), applyMiddleware(), combineReducers()store对象: getState(), dispatch(), subscribe()react-redux: 	<Provider store={store}>: 向所有的容器组件提供store	connect(		state => ({xxx: state.xxx}),		{actionCreator1, actionCreator2}	)(UI组件): 		产生的就是容器组件, 负责向UI组件传递标签属性, 		一般属性值从state中获取, 函数属性内部会执行dispatch分发action
    

    3. redux核心概念(3个)

    action: 	默认是对象(同步action), {type: 'xxx', data: value}, 需要通过对应的actionCreator产生, 	它的值也可以是函数(异步action), 需要引入redux-thunk才可以reducer	根据老的state和指定的action, 返回一个新的state	不能修改老的statestore	redux最核心的管理对象	内部管理着: state和reducer	提供方法: getState(), dispatch(action), subscribe(listener)
    

    4. redux工作流程

    5. 使用redux及相关库编码

    需要引入的库: 	redux	react-redux	redux-thunk	redux-devtools-extension(这个只在开发时需要)redux文件夹: 	action-types.js	actions.js	reducers.js	store.js组件分2类: 	ui组件(components): 不使用redux相关API	容器组件(containers): 通过connect()()生成的组件
    

    day10

    1. 在项目中搭建redux整套环境

    1). store.js2). reducer.js3). actions.js4). action-types.js5). index.js6). 在需要与redux进行状态数据通信(读/写)的UI组件包装生成容器组件
    

    2. 通过redux管理头部标题headTitle数据

    1). action-types.js2). actoins.js3). reducer.js4). 相关组件:     left-nav.js    header.js
    

    3. 通过redux管理登陆用户信息user数据

    1). action-types.js2). actoin.js3). reducer.js4). 相关组件:     login.js    admin.js    left-nav.js    header.js    role.js
    

    4. 自定义redux库

    1). redux库向外暴露下面几个函数    createStore(): 接收的参数为reducer函数, 返回为store对象    combineReducers(): 接收包含n个reducer方法的对象, 返回一个新的reducer函数    applyMiddleware() // 暂不实现2). store对象的内部结构    getState(): 返回值为内部保存的state数据    dispatch(): 参数为action对象    subscribe(): 参数为监听内部state更新的回调函数3). combineReducers函数:    返回的总reducer函数内部会根据总的state和指定的action,     调用每个reducer函数得到对应的新的state, 并封装成一个新的总state对象返回
    

    5. 自定义react-redux库

    1). react-redux向外暴露了2个API    a. Provider组件类    b. connect函数2). Provider组件    接收store属性    通过context将store暴露给所有的容器子组件    Provider原样渲染其所有标签子节点    3). connect函数    接收2个参数: mapStateToProps和mapDispatchToProps    connect()执行的返回值为一个高阶组件: 包装UI组件, 返回一个新的容器组件    mapStateToProps:         为一个函数, 返回包含n个一般属性对象,         容器组件中调用得到对象后, 初始化为容器组件的初始状态, 并指定为UI组件标签的一般属性    mapDispatchToProps:        如果为函数, 调用得到包含n个dispatch方法的对象        如果为对象, 遍历封装成包含n个dispatch方法的对象        将包含n个dispatch方法的对象分别作为函数属性传入UI组件    通过store绑定state变化的监听, 在回调函数中根据store中最新的state数据更新容器组件状态, 从而更新UI组件
    

    day11

    1. 数据可视化

    1). echarts(百度) ==> echarts-for-react2). g2(阿里) ==> bizCharts3). d3(国外)
    

    2. 前台404界面

    <Redirect from='/' to='/home' exact/><Route component={NotFound}/>
    

    3. 打包应用运行

    1). 解决生产环境ajax跨域问题    使用nginx的反向代理解决(一般由后台配置)    CORS: 允许浏览器端跨域2). BrowserRouter模式刷新404的问题    a. 问题: 刷新某个路由路径时, 会出现404的错误    b. 原因: 项目根路径后的path路径会被当作后台路由路径, 去请求对应的后台路由, 但没有    c. 解决: 使用自定义中间件去读取返回index页面展现
    

    接口文档

    目录:

    1). 登陆
    2). 添加用户
    3). 更新用户
    4). 获取所有用户列表
    5). 删除用户
    6). 获取一级或某个二级分类列表
    7). 添加分类
    8). 更新品类名称
    9). 根据分类ID获取分类
    10). 获取商品分页列表
    11). 根据ID/Name搜索产品分页列表
    12). 添加商品
    13). 更新商品
    14). 对商品进行上架/下架处理
    15). 上传图片
    16). 删除图片
    17). 添加角色
    18). 获取角色列表
    19). 更新角色(给角色设置权限)
    20). 获取天气信息(支持jsonp)
    

    1. 登陆

    请求URL:

    http://localhost:5000/login
    

    请求方式:

    POST
    

    参数类型

    |参数		|是否必选 |类型     |说明
    |username    |Y       |string   |用户名
    |password    |Y       |string   |密码
    

    返回示例:

    成功:
      {
        "status": 0,
        "data": {
          "_id": "5c3b297dea95883f340178b0",
          "password": "21232f297a57a5a743894a0e4a801fc3",
          "username": "admin",
          "create_time": 1547381117891,
          "__v": 0,
          "role": {
            "menus": []
          }
        }
      }
    失败
      {
        "status": 1,
        "msg": "用户名或密码不正确!"
      }
    

    2. 添加用户

    请求URL:

    http://localhost:5000/manage/user/add
    

    请求方式:

    POST
    

    参数类型

    |参数		|是否必选 |类型     |说明
    |username    |Y       |string   |用户名
    |password    |Y       |string   |密码
    |phone       |N       |string   |手机号
    |email       |N       |string   |邮箱
    |role_id     |N       |string   |角色ID
    

    返回示例:

    成功:
      {
        "status": 0,
        "data": {
          "_id": "5c3b382c82a14446f4ffb647",
          "username": "admin6",
          "password": "d7b79bb6d6f77e6cbb5df2d0d2478361",
          "phone": "13712341234",
          "email": "test@qq.com",
          "create_time": 1547384876804,
          "__v": 0
        }
      }
    失败
      {
        "status": 1,
        "msg": "此用户已存在"
      }
    

    3. 更新用户

    请求URL:

    http://localhost:5000/manage/user/update
    

    请求方式:

    POST
    

    参数类型

    |参数		|是否必选 |类型     |说明
    |_id         |Y       |string   |ID
    |username    |N       |string   |用户名
    |phone       |N       |string   |手机号
    |email       |N       |string   |邮箱
    |role_id     |N       |string   |角色ID
    

    返回示例:

    成功:
      {
        "status": 0,
        "data": {
          "_id": "5c3b382c82a14446f4ffb647",
          "username": "admin6",
          "password": "d7b79bb6d6f77e6cbb5df2d0d2478361",
          "phone": "13712341234",
          "email": "test@qq.com",
          "create_time": 1547384876804,
          "__v": 0
        }
      }
    失败
      {
        "status": 1,
        "msg": "此用户已存在"
      }
    

    4. 获取所有用户列表

    请求URL:

    http://localhost:5000/manage/user/list
    

    请求方式:

    GET
    

    参数类型:

    返回示例:

    {
      "status": 0,
      "data": {
        "users": [
          {
            "_id": "5cb05b4db6ed8c44f42c9af2",
            "username": "test",
            "password": "202cb962ac59075b964b07152d234b70",
            "phone": "123412342134",
            "email": "sd",
            "role_id": "5ca9eab0b49ef916541160d4",
            "create_time": 1555061581734,
            "__v": 0
          },
          {
            "_id": "5cb05b69b6ed8c44f42c9af3",
            "username": "ss22",
            "password": "123",
            "phone": "23343",
            "email": "df",
            "role_id": "5caf5444c61376319cef80a8",
            "create_time": 1555061609666,
            "__v": 0
          }
        ],
        "roles": [
          {
            "menus": [
              "/home",
              "/role",
              "/category",
              "/products",
              "/product",
              "/charts/bar"
            ],
            "_id": "5ca9eaa1b49ef916541160d3",
            "name": "测试",
            "create_time": 1554639521749,
            "__v": 0,
            "auth_time": 1555145863489,
            "auth_name": "admin"
          }
        ]
      }
    }
    

    5. 删除用户

    请求URL:

    http://localhost:5000/manage/user/delete
    

    请求方式:

    POST
    

    参数类型:

    |参数		|是否必选 |类型     |说明
    |userId     |Y       |string   |用户ID
    

    返回示例:

    {
      "status": 0
    }
    

    6. 获取一级或某个二级分类列表

    请求URL:

    http://localhost:5000/manage/category/list
    

    请求方式:

    GET
    

    参数类型: query

    |参数		|是否必选 |类型     |说明
    |parentId    |Y       |string   |父级分类的ID
    

    返回示例:

    一级分类:
      {
        "status": 0,
        "data": [
          {
            "parentId": "0",
            "_id": "5c2ed631f352726338607046",
            "name": "分类001",
            "__v": 0
          },
          {
            "parentId": "0",
            "_id": "5c2ed647f352726338607047",
            "name": "分类2",
            "__v": 0
          },
          {
            "parentId": "0",
            "_id": "5c2ed64cf352726338607048",
            "name": "1分类3",
            "__v": 0
          }
        ]
      }
    二级分类
      {
        "status": 0,
        "data": [
          {
            "parentId": "5c2ed64cf352726338607048",
            "_id": "5c2ed65df352726338607049",
            "name": "分类3333",
            "__v": 0
          },
          {
            "parentId": "5c2ed64cf352726338607048",
            "_id": "5c2ed66ff35272633860704a",
            "name": "分类34",
            "__v": 0
          }
        ]
      }
    

    7. 添加分类

    请求URL:

    http://localhost:5000/manage/category/add
    

    请求方式:

    POST
    

    参数类型:

    |参数		|是否必选 |类型     |说明
    |parentId      |Y       |string   |父级分类的ID
    |categoryName  |Y       |string   |名称
    

    返回示例:

    添加一级分类:
        {
          "status": 0,
          "data": {
            "parentId": "0",
            "_id": "5c3ec1534594a00e5877b841",
            "name": "分类9",
            "__v": 0
          }
        }
    添加二级分类
        {
          "status": 0,
          "data": {
            "parentId": "5c2ed64cf352726338607048",
            "_id": "5c3ec1814594a00e5877b842",
            "name": "分类39",
            "__v": 0
          }
        }
    

    8. 更新品类名称

    请求URL:

    http://localhost:5000/manage/category/update
    

    请求方式:

    POST
    

    参数类型:

    |参数		|是否必选 |类型     |说明
    |categoryId    |Y       |string   |父级分类的ID
    |categoryName  |Y       |string   |名称
    

    返回示例:

    {
      "status": 0
    }
    

    9. 根据分类ID获取分类

    请求URL:

    http://localhost:5000/manage/category/info
    

    请求方式:

    GET
    

    参数类型:

    |参数		|是否必选 |类型     |说明
    |categoryId    |Y       |string   |父级分类的ID
    

    返回示例:

    {
      "status": 0,
      "data": {
        "parentId": "0",
        "_id": "5c2ed631f352726338607046",
        "name": "分类001",
        "__v": 0
      }
    }
    

    10. 获取商品分页列表

    请求URL:

    http://localhost:5000/manage/product/list
    

    请求方式:

    GET
    

    参数类型:

    |参数		|是否必选 |类型     |说明
    |pageNum    |Y       |Number   |页码
    |pageSize   |Y       |Number   |每页条目数
    

    返回示例:

    {
        "status": 0,
        "data": {
            "pageNum": 1,
            "total": 12,
            "pages": 3,
            "pageSize": 5,
            "list": [
                {
                    "status": 1,
                    "imgs": [
                        "image-1559402396338.jpg"
                    ],
                    "_id": "5ca9e05db49ef916541160cd",
                    "name": "联想ThinkPad 翼4809",
                    "desc": "年度重量级新品,X390、T490全新登场 更加轻薄机身设计9",
                    "price": 65999,
                    "pCategoryId": "5ca9d6c0b49ef916541160bb",
                    "categoryId": "5ca9db9fb49ef916541160cc",
                    "detail": "<p><span style=\"color: rgb(228,57,60);background-color: rgb(255,255,255);font-size: 12px;\">想你所需,超你所想!精致外观,轻薄便携带光驱,内置正版office杜绝盗版死机,全国联保两年!</span> 222</p>\n<p><span style=\"color: rgb(102,102,102);background-color: rgb(255,255,255);font-size: 16px;\">联想(Lenovo)扬天V110 15.6英寸家用轻薄便携商务办公手提笔记本电脑 定制【E2-9010/4G/128G固态】 2G独显 内置</span></p>\n<p><span style=\"color: rgb(102,102,102);background-color: rgb(255,255,255);font-size: 16px;\">99999</span></p>\n",
                    "__v": 0
                },
                {
                    "status": 1,
                    "imgs": [
                        "image-1559402448049.jpg",
                        "image-1559402450480.jpg"
                    ],
                    "_id": "5ca9e414b49ef916541160ce",
                    "name": "华硕(ASUS) 飞行堡垒",
                    "desc": "15.6英寸窄边框游戏笔记本电脑(i7-8750H 8G 256GSSD+1T GTX1050Ti 4G IPS)",
                    "price": 6799,
                    "pCategoryId": "5ca9d6c0b49ef916541160bb",
                    "categoryId": "5ca9db8ab49ef916541160cb",
                    "detail": "<p><span style=\"color: rgb(102,102,102);background-color: rgb(255,255,255);font-size: 16px;\">华硕(ASUS) 飞行堡垒6 15.6英寸窄边框游戏笔记本电脑(i7-8750H 8G 256GSSD+1T GTX1050Ti 4G IPS)火陨红黑</span>&nbsp;</p>\n<p><span style=\"color: rgb(228,57,60);background-color: rgb(255,255,255);font-size: 12px;\">【4.6-4.7号华硕集体放价,大牌够品质!】1T+256G高速存储组合!超窄边框视野无阻,强劲散热一键启动!</span>&nbsp;</p>\n",
                    "__v": 0
                },
                {
                    "status": 2,
                    "imgs": [
                        "image-1559402436395.jpg"
                    ],
                    "_id": "5ca9e4b7b49ef916541160cf",
                    "name": "你不知道的JS(上卷)",
                    "desc": "图灵程序设计丛书: [You Don't Know JS:Scope & Closures] JavaScript开发经典入门图书 打通JavaScript的任督二脉",
                    "price": 35,
                    "pCategoryId": "0",
                    "categoryId": "5ca9d6c9b49ef916541160bc",
                    "detail": "<p style=\"text-align:start;\"><span style=\"color: rgb(102,102,102);background-color: rgb(255,255,255);font-size: 16px;\">图灵程序设计丛书:你不知道的JavaScript(上卷)</span> <span style=\"color: rgb(102,102,102);background-color: rgb(255,255,255);font-size: 16px;\"><strong>[You Don't Know JS:Scope &amp; Closures]</strong></span></p>\n<p style=\"text-align:start;\"><span style=\"color: rgb(227,57,60);background-color: rgb(255,255,255);font-size: 12px;\">JavaScript开发经典入门图书 打通JavaScript的任督二脉 领略语言内部的绝美风光</span>&nbsp;</p>\n",
                    "__v": 0
                },
                {
                    "status": 2,
                    "imgs": [
                        "image-1554638240202.jpg"
                    ],
                    "_id": "5ca9e5bbb49ef916541160d0",
                    "name": "美的(Midea) 213升-BCD-213TM",
                    "desc": "爆款直降!大容量三口之家优选! *节能养鲜,自动低温补偿,36分贝静音呵护",
                    "price": 1388,
                    "pCategoryId": "5ca9d695b49ef916541160ba",
                    "categoryId": "5ca9d9cfb49ef916541160c4",
                    "detail": "<p style=\"text-align:start;\"><span style=\"color: rgb(102,102,102);background-color: rgb(255,255,255);font-size: 16px;font-family: Arial, \"microsoft yahei;\">美的(Midea) 213升 节能静音家用三门小冰箱 阳光米 BCD-213TM(E)</span></p>\n<p><span style=\"color: rgb(228,57,60);background-color: rgb(255,255,255);font-size: 12px;font-family: tahoma, arial, \"Microsoft YaHei\", \"Hiragino Sans GB\", u5b8bu4f53, sans-serif;\">【4.8美的大牌秒杀日】爆款直降!大容量三口之家优选! *节能养鲜,自动低温补偿,36分贝静音呵护! *每天不到一度电,省钱又省心!</span>&nbsp;</p>\n",
                    "__v": 0
                },
                {
                    "status": 1,
                    "imgs": [
                        "image-1554638403550.jpg"
                    ],
                    "_id": "5ca9e653b49ef916541160d1",
                    "name": "美的(Midea)KFR-35GW/WDAA3",
                    "desc": "正1.5匹 变频 智弧 冷暖 智能壁挂式卧室空调挂机",
                    "price": 2499,
                    "pCategoryId": "5ca9d695b49ef916541160ba",
                    "categoryId": "5ca9da1ab49ef916541160c6",
                    "detail": "<p style=\"text-align:start;\"><span style=\"color: rgb(102,102,102);background-color: rgb(255,255,255);font-size: 16px;\">美的(Midea)正1.5匹 变频 智弧 冷暖 智能壁挂式卧室空调挂机 KFR-35GW/WDAA3@</span></p>\n<p style=\"text-align:start;\"></p>\n<p><span style=\"color: rgb(228,57,60);background-color: rgb(255,255,255);font-size: 12px;\">【4.8美的大牌秒杀日】提前加入购物车!2299元成交价!前50名下单送赠品加湿型电风扇,赠完即止!8日0点开抢!</span><a href=\"https://sale.jd.com/mall/LKHdqZUIYk.html\" target=\"_blank\"><span style=\"color: rgb(94,105,173);background-color: rgb(255,255,255);font-size: 12px;\">更有无风感柜挂组合套购立减500元!猛戳!!</span></a>&nbsp;</p>\n",
                    "__v": 0
                }
            ]
        }
    }
    

    11. 根据ID/Name搜索产品分页列表

    请求URL:

    http://localhost:5000/manage/product/search?pageNum=1&pageSize=5&productName=T
    

    请求方式:

    GET
    

    参数类型:

    |参数		|是否必选 |类型     |说明
    |pageNum       |Y       |Number   |页码
    |pageSize      |Y       |Number   |每页条目数
    |productName   |N       |String   |根据商品名称搜索
    |productDesc   |N       |String   |根据商品描述搜索
    

    返回示例:

    {
        "status": 0,
        "data": {
            "pageNum": 1,
            "total": 3,
            "pages": 1,
            "pageSize": 5,
            "list": [
                {
                    "status": 1,
                    "imgs": [
                        "image-1559402396338.jpg"
                    ],
                    "_id": "5ca9e05db49ef916541160cd",
                    "name": "联想ThinkPad 翼4809",
                    "desc": "年度重量级新品,X390、T490全新登场 更加轻薄机身设计9",
                    "price": 65999,
                    "pCategoryId": "5ca9d6c0b49ef916541160bb",
                    "categoryId": "5ca9db9fb49ef916541160cc",
                    "detail": "<p><span style=\"color: rgb(228,57,60);background-color: rgb(255,255,255);font-size: 12px;\">想你所需,超你所想!精致外观,轻薄便携带光驱,内置正版office杜绝盗版死机,全国联保两年!</span> 222</p>\n<p><span style=\"color: rgb(102,102,102);background-color: rgb(255,255,255);font-size: 16px;\">联想(Lenovo)扬天V110 15.6英寸家用轻薄便携商务办公手提笔记本电脑 定制【E2-9010/4G/128G固态】 2G独显 内置</span></p>\n<p><span style=\"color: rgb(102,102,102);background-color: rgb(255,255,255);font-size: 16px;\">99999</span></p>\n",
                    "__v": 0
                },
                {
                    "status": 2,
                    "imgs": [
                        "image-1554638240202.jpg"
                    ],
                    "_id": "5ca9e5bbb49ef916541160d0",
                    "name": "美的(Midea) 213升-BCD-213TM",
                    "desc": "爆款直降!大容量三口之家优选! *节能养鲜,自动低温补偿,36分贝静音呵护",
                    "price": 1388,
                    "pCategoryId": "5ca9d695b49ef916541160ba",
                    "categoryId": "5ca9d9cfb49ef916541160c4",
                    "detail": "<p style=\"text-align:start;\"><span style=\"color: rgb(102,102,102);background-color: rgb(255,255,255);font-size: 16px;font-family: Arial, \"microsoft yahei;\">美的(Midea) 213升 节能静音家用三门小冰箱 阳光米 BCD-213TM(E)</span></p>\n<p><span style=\"color: rgb(228,57,60);background-color: rgb(255,255,255);font-size: 12px;font-family: tahoma, arial, \"Microsoft YaHei\", \"Hiragino Sans GB\", u5b8bu4f53, sans-serif;\">【4.8美的大牌秒杀日】爆款直降!大容量三口之家优选! *节能养鲜,自动低温补偿,36分贝静音呵护! *每天不到一度电,省钱又省心!</span>&nbsp;</p>\n",
                    "__v": 0
                },
                {
                    "status": 1,
                    "imgs": [
                        "image-1554638676149.jpg",
                        "image-1554638683746.jpg"
                    ],
                    "_id": "5ca9e773b49ef916541160d2",
                    "name": "联想ThinkPad X1 Carbon",
                    "desc": "英特尔酷睿i5 14英寸轻薄笔记本电脑(i5-8250U 8G 256GSSD FHD)黑色",
                    "price": 9999,
                    "pCategoryId": "5ca9d6c0b49ef916541160bb",
                    "categoryId": "5ca9db78b49ef916541160ca",
                    "detail": "<p style=\"text-align:start;\"><span style=\"color: rgb(102,102,102);background-color: rgb(255,255,255);font-size: 16px;font-family: Arial, \"microsoft yahei;\">联想ThinkPad X1 Carbon 2018(09CD)英特尔酷睿i5 14英寸轻薄笔记本电脑(i5-8250U 8G 256GSSD FHD)黑色</span></p>\n<p><span style=\"color: rgb(228,57,60);background-color: rgb(255,255,255);font-size: 12px;font-family: tahoma, arial, \"Microsoft YaHei\", \"Hiragino Sans GB\", u5b8bu4f53, sans-serif;\">年度重量级新品,X390、T490全新登场 更加轻薄机身设计,全面的配置升级,让工作更便捷,让生活更轻松</span><a href=\"https://pro.jd.com/mall/active/2M4o7NTzHH6jEJXS7VbpbTAANQB9/index.html\" target=\"_blank\"><span style=\"color: rgb(94,105,173);background-color: rgb(255,255,255);font-size: 12px;font-family: tahoma, arial, \"Microsoft YaHei\", \"Hiragino Sans GB\", u5b8bu4f53, sans-serif;\">4月9日京东震撼首发,火爆预约</span></a>&nbsp;</p>\n",
                    "__v": 0
                }
            ]
        }
    }
    

    12. 添加商品

    请求URL:

    http://localhost:5000/manage/product/add
    

    请求方式:

    POST
    

    参数类型:

    |参数		       |是否必选 |类型     |说明
    |categoryId    |Y       |string   |分类ID
    |pCategoryId   |Y       |string   |父分类ID
    |name          |Y       |string   |商品名称
    |desc          |N       |string   |商品描述
    |price         |N       |string   |商品价格
    |detail        |N       |string   |商品详情
    |imgs          |N       |array   |商品图片名数组
    

    返回示例:

    {
        "status": 0,
        "data": {
            "status": 1,
            "imgs": [
                "image-1559467198366.jpg"
            ],
            "_id": "5cf394d29929a304dcc0c6eb",
            "name": "商品A",
            "desc": "一个笔记本",
            "price": 11111,
            "detail": "<p><strong>abc</strong></p>\n",
            "pCategoryId": "5ca9d6c0b49ef916541160bb",
            "categoryId": "5ca9db78b49ef916541160ca",
            "__v": 0
        }
    }
    

    13. 更新商品

    请求URL:

    http://localhost:5000/manage/product/update
    

    请求方式:

    POST
    

    参数类型:

    |参数		       |是否必选 |类型     |说明
    |_id           |Y       |string   |商品ID
    |categoryId    |Y       |string   |分类ID
    |pCategoryId   |Y       |string   |父分类ID
    |name          |Y       |string   |商品名称
    |desc          |N       |string   |商品描述
    |price         |N       |string   |商品价格
    |detail        |N       |string   |商品详情
    |imgs          |N       |array   |商品图片名数组
    

    返回示例:

    {
      "status": 0
    }
    

    14. 对商品进行上架/下架处理

    请求URL:

    http://localhost:5000/manage/product/updateStatus
    

    请求方式:

    POST
    

    参数类型:

    |参数		      |是否必选 |类型     |说明
    |productId    |Y       |string   |商品名称
    |status       |Y       |number   |商品状态值
    

    返回示例:

    {
      "status": 0
    }
    

    15. 上传图片

    请求URL:

    http://localhost:5000/manage/img/upload
    

    请求方式:

    POST
    

    参数类型:

    |参数		|是否必选 |类型     |说明
    |image  |Y       |文件   |图片文件
    

    返回示例:

    {
        "status": 0,
        "data": {
            "name": "image-1559466841118.jpg",
            "url": "http://localhost:5000/upload/image-1559466841118.jpg"
        }
    }
    

    16. 删除图片

    请求URL:

    http://localhost:5000/manage/img/delete
    

    请求方式:

    POST
    

    参数类型:

    |参数		|是否必选 |类型     |说明
    |name    |Y       |string   |图片文件名
    

    返回示例:

    {
      "status": 0
    }
    

    17. 添加角色

    请求URL:

    http://localhost:5000/manage/role/add
    

    请求方式:

    POST
    

    参数类型:

    |参数		     |是否必选 |类型     |说明
    |roleName    |Y       |string   |角色名称
    

    返回示例:

    {
        "status": 0,
        "data": {
            "menus": [],
            "_id": "5cf39a319929a304dcc0c6ec",
            "name": "角色x",
            "create_time": 1559468593702,
            "__v": 0
        }
    }
    

    18. 获取角色列表

    请求URL:

    http://localhost:5000/manage/role/list
    

    请求方式:

    GET
    

    参数类型:

    返回示例:

    {
        "status": 0,
        "data": [
            {
                "menus": [
                    "/role",
                    "/charts/bar",
                    "/home",
                    "/category"
                ],
                "_id": "5ca9eaa1b49ef916541160d3",
                "name": "测试",
                "create_time": 1554639521749,
                "__v": 0,
                "auth_time": 1558679920395,
                "auth_name": "test007"
            },
            {
                "menus": [
                    "/role",
                    "/charts/bar",
                    "/home",
                    "/charts/line",
                    "/category",
                    "/product",
                    "/products"
                ],
                "_id": "5ca9eab0b49ef916541160d4",
                "name": "经理",
                "create_time": 1554639536419,
                "__v": 0,
                "auth_time": 1558506990798,
                "auth_name": "test008"
            },
            {
                "menus": [
                    "/home",
                    "/products",
                    "/category",
                    "/product",
                    "/role"
                ],
                "_id": "5ca9eac0b49ef916541160d5",
                "name": "角色1",
                "create_time": 1554639552758,
                "__v": 0,
                "auth_time": 1557630307021,
                "auth_name": "admin"
            }
        ]
    }
    

    19. 更新角色(给角色设置权限)

    请求URL:

    http://localhost:5000/manage/role/update
    

    请求方式:

    POST
    

    参数类型:

    |参数		     |是否必选  |类型     |说明
    |_id          |Y       |string   |角色ID
    |menus        |Y       |array    |权限key数组
    |auth_time    |Y       |number   |权限时间
    |auth_name    |Y       |string   |权限人姓名
    

    返回示例:

    {
        "status": 0,
        "data": {
            "menus": [
                "/role",
                "/charts/bar",
                "/home",
                "/category",
                "/user"
            ],
            "_id": "5ca9eaa1b49ef916541160d3",
            "name": "测试",
            "create_time": 1554639521749,
            "__v": 0,
            "auth_time": 1559469116470,
            "auth_name": "admin"
        }
    }
    

    20. 获取天气信息(支持jsonp)

    请求URL:

    http://api.map.baidu.com/telematics/v3/weather
    

    请求方式:

    GET
    

    参数类型:

    |参数		     |是否必选 |类型     |说明
    |location    |Y       |string   |城市名称
    |output      |Y       |string   |返回数据格式: json
    |ak          |Y       |string   |唯一的应用key(3p49MVra6urFRGOT9s8UBWr2)
    

    返回示例:

    {
      "error": 0,
      "status": "success",
      "date": "2019-06-02",
      "results": [
        {
          "currentCity": "北京",
          "pm25": "119",
          "index": [
            {
              "des": "建议着长袖T恤、衬衫加单裤等服装。年老体弱者宜着针织长袖衬衫、马甲和长裤。",
              "tipt": "穿衣指数",
              "title": "穿衣",
              "zs": "舒适"
            },
            {
              "des": "不宜洗车,未来24小时内有雨,如果在此期间洗车,雨水和路上的泥水可能会再次弄脏您的爱车。",
              "tipt": "洗车指数",
              "title": "洗车",
              "zs": "不宜"
            },
            {
              "des": "各项气象条件适宜,无明显降温过程,发生感冒机率较低。",
              "tipt": "感冒指数",
              "title": "感冒",
              "zs": "少发"
            },
            {
              "des": "天气较好,赶快投身大自然参与户外运动,尽情感受运动的快乐吧。",
              "tipt": "运动指数",
              "title": "运动",
              "zs": "适宜"
            },
            {
              "des": "紫外线强度较弱,建议出门前涂擦SPF在12-15之间、PA+的防晒护肤品。",
              "tipt": "紫外线强度指数",
              "title": "紫外线强度",
              "zs": "弱"
            }
          ],
          "weather_data": [
            {
              "date": "周日 06月02日 (实时:30℃)",
              "dayPictureUrl": "http://api.map.baidu.com/images/weather/day/duoyun.png",
              "nightPictureUrl": "http://api.map.baidu.com/images/weather/night/leizhenyu.png",
              "weather": "多云转雷阵雨",
              "wind": "西南风3-4级",
              "temperature": "31 ~ 20℃"
            },
            {
              "date": "周一",
              "dayPictureUrl": "http://api.map.baidu.com/images/weather/day/duoyun.png",
              "nightPictureUrl": "http://api.map.baidu.com/images/weather/night/duoyun.png",
              "weather": "多云",
              "wind": "南风微风",
              "temperature": "34 ~ 20℃"
            },
            {
              "date": "周二",
              "dayPictureUrl": "http://api.map.baidu.com/images/weather/day/leizhenyu.png",
              "nightPictureUrl": "http://api.map.baidu.com/images/weather/night/leizhenyu.png",
              "weather": "雷阵雨",
              "wind": "东风微风",
              "temperature": "28 ~ 21℃"
            },
            {
              "date": "周三",
              "dayPictureUrl": "http://api.map.baidu.com/images/weather/day/duoyun.png",
              "nightPictureUrl": "http://api.map.baidu.com/images/weather/night/duoyun.png",
              "weather": "多云",
              "wind": "北风3-4级",
              "temperature": "33 ~ 19℃"
            }
          ]
        }
      ]
    }
    
    展开全文
  • 今天,分享一个在企业微信中,可以更高效办公和管理项目的一个SaaS工具。这个工具名字叫YesDev项目,可以在线管理你团队的工作、项目和任务。不仅能友好地融合到企业微信中,还可以免费注册和使用,任何行..

    根据企业微信官网显示,

    企业微信是唯一能跟微信互相拉通的商务软件,这意味着,通过企业微信,企业能够触达并服务12亿微信用户

    企业微信

    并且,企业微信官网还显示,80%的中国五百强企业都在使用企业微信。

     

    可以说,企业微信对外是沟通、联系和触达客户的有效途径,对内是有效的办公和协助工具。

     

    今天,分享一个在企业微信中,可以更高效办公和管理项目的一个SaaS工具。这个工具名字叫YesDev项目,可以在线管理你团队的工作、项目和任务。不仅能友好地融合到企业微信中,还可以免费注册和使用,任何行业的企业团队都适用。

     

    以下是简明教程。

    YesDev项目管理的特色功能

    使用YesDev项目管理,最核心的好处是,可以节省办公时间,提升办公效率。像地图导航一样,在做一个任务、每一个需求、每一个项目时,为团队的每个人,节省几分钟或30分钟,点点滴滴,惜时如金。

     

    例如,YesDev的四大场景。

     

    Top 1、个人办公

    我的工作台、精益看板、信息流提醒,更精准的个性化,只为让你工作更高效。

    在企业微信中高效办公、管理项目的新技能

     

    Top 2、在线沟通

    日常中,我们都会使用企业微信、微信、钉钉、飞书等进行在线沟通,同时也需要频繁沟通和同步项目的进度和信息,这时可以使用【一键复制】把项目、需求、任务信息同步给团队或客户。

    在企业微信中高效办公、管理项目的新技能

     

    Top 3、会议

    平时工作中,会议是一个必不可或缺的环节,也是同步信息和明确分工最好的场景。如果有一个信息汇总和结构化的管理及呈现方式,将能更有效加快会议中显示和操作的时间,进一步加快开会的速度。

     

    例如会议中,有20人参加,每节省1分钟,就相当于节省了20分钟!!

    在企业微信中高效办公、管理项目的新技能

     

    Top 4、邮件

    除了会议、沟通,还有一个很重要的汇报途径是写邮件。通过邮件往来,可以更加正式且有效地传达价值更高的信息。例如项目周报、团队周报、专项汇报。但是,实际工作时,需要编写一封得体、扼要的邮件是很耗时的,通常需要30分钟到1小时。如果这时能有一款工具,可以帮你生成一封邮件,里面有80%以上的正文内容,你只需要稍微修改20%的内容就可以了,是不是很棒?!

    在企业微信中高效办公、管理项目的新技能

     

    除此之外,YesDev还可以灵活创建工作群(类似微信群),以项目为核心,聚合需求,进行任务分工、工时评估和排期,从而得到项目燃尽图和项目排期,以及每个人、每个团队、每个工作组的工作计划。

     

    下来,再来分享下,如何在企业微信中使用YesDev,高效管理项目,提升办公效率。

    在企业微信中添加YesDev应用

    为了方便在企业微信中直接使用YesDev工具,需要先添加YesDev应用。

     

    最终效果如下:

     

    PC版企业微信:

    在企业微信中高效办公、管理项目的新技能

     

    手机版企业微信:

    在企业微信中高效办公、管理项目的新技能

     

    首先,用电脑打开企业微信,在左下角,找到【登录管理端后台】。

    在企业微信中高效办公、管理项目的新技能

     

    切换到【应用管理】,

    在企业微信中高效办公、管理项目的新技能

     

    在【自建】分类中,点击:【创建应用】,

    在企业微信中高效办公、管理项目的新技能

     

    在创建应用页面,输入:

    应用logo:

    在企业微信中高效办公、管理项目的新技能

     

    应用名称:

    YesDev项目管理

     

    应用介绍:

    在线管理你团队的工作、项目和任务

     

    可见范围,选择当前自己的团队或企业即可。效果如下,然后创建应用。

    在企业微信中高效办公、管理项目的新技能

     

    成功创建后,

    在企业微信中高效办公、管理项目的新技能

     

    接下来,还有一步很重要的,在工作台应用主页,点击【设置应用主页】。

    在企业微信中高效办公、管理项目的新技能

     

    在弹窗中输入:http://www.yesdev.cn/ (如果你已配置企业独立域名,可直接使用独立域名)。

    在企业微信中高效办公、管理项目的新技能

     

    到此,配置完毕,可以开始使用啦!

    使用YesDev在线管理团队的工作、项目和任务

    在你的企业微信中,配置好YesDev后,打开应用,免费注册后,就可以进行项目管理。

     

    手机企业微信使用YesDev(目前移动版还在拼命研发中,即将上线,敬请期待!)

    在企业微信中高效办公、管理项目的新技能

     

    PC版企业微信中使用YesDev,

    在企业微信中高效办公、管理项目的新技能

     

    你也可以直接点击右上角,在浏览器中进行访问和使用。

    在企业微信中高效办公、管理项目的新技能

     

    当项目开始协作后,就可以看到团队的工作排期,方便及时进行工作上的安排和协助。

    在企业微信中高效办公、管理项目的新技能

     

    他们都在使用YesDev

    从开源社区、创业团队、科技公司,到发展型企业、中大型企业,都有用YesDev高效协助。

    在企业微信中高效办公、管理项目的新技能

     

    免费注册YesDev项目管理:http://www.yesdev.cn/

    展开全文
  • 2021年全国职业院校技能大赛:网络系统管理项目-模块A–样题(一) -----------------------------模块A:Linux环境 目录2021年全国职业院校技能大赛:网络系统管理项目-模块A--样题(一) ------------------------...

    2021年全国职业院校技能大赛:网络系统管理项目模块A:Linux环境


    一、竞赛简介

    1.请认真阅读以下指引!
    2.比赛共4个小时,你必须自行决定如何分配你的时间。
    3.当比赛结束时,离开时请不要关机您的虚拟机。
    4.如果没有明确要求,请使用“Chinaskill21”作为默认密码。
    5.本模块所有的系统为已经安装的最基本的系统状态,客户端带桌面。

    二、竞赛注意事项

    1.竞赛所需的硬件、软件和辅助工具由组委会统一布置,选手不得私自携带任何软件、移动存储、辅助工具、移动通信等进入赛场。
    2.请根据大赛所提供的比赛环境,检查所列的硬件设备、软件清单、材料清单是否齐全,计算机设备是否能正常使用。
    3.操作过程中,需要及时保存设备配置。比赛结束后,所有设备保持运行状态,不要拆动硬件连接。
    4.比赛完成后,比赛设备、软件和赛题请保留在座位上,禁止将比赛所用的所有物品(包括试卷和草纸)带离赛场。
    5.裁判以各参赛队提交的竞赛结果文档为主要评分依据。所有提交的文档必须按照赛题所规定的命名规则命名,不得以任何形式体现参赛院校、工位号等信息。

    三、竞赛结果文件的提交

    按照题目要求,提交符合模板的WORD文件以及对应的PDF文件(利用Office Word另存为pdf文件方式生成pdf文件),所有截图建议除了配置文件截图外,还需要截功能测试的图ÿ

    展开全文
  • 项目管理项目质量管理

    千次阅读 2021-01-15 10:09:41
    PMP指的是项目管理专业人士资格认证。它是由美国项目管理协会(Project Management Institute(PMI)发起的,严格评估项目管理人员知识技能是否具有高品质的资格认证考试。该文章内容基于PMBOK第六版总结而得。 重 ...

    PMP指的是项目管理专业人士资格认证。它是由美国项目管理协会(Project Management Institute(PMI)发起的,严格评估项目管理人员知识技能是否具有高品质的资格认证考试。该文章内容基于PMBOK第六版总结而得。

    重 点 知 识

    “规划质量管理”、“管理质量”、“控制质量”相互影响、交叠进行,没有先后顺序。

    “管理质量”的重点是审计,需要对“规划质量管理”的结果和“控制质量”的结果都审计。

    管理质量是所有人的共同职责,包括:项目经理、项目团队、项目发起人、执行组织的管理层,甚至是客户。

    管理质量过程的作用:做出合格质量建立信心(客户/团队)满足特定的需求和期望审计质量要求和质量控制测量结果改进生产过程

    质量成本(COQ)是指在整个产品生命周期中的、评价产品或服务是否符合要求,以及因未达到要求而发生的所有成本。

    质量成本包含一致性成本非一致性成本,一致性成本包含预防成本评估成本,非一致性成本包含内部失效成本外部失效成本

    流程图:追溯过往步骤(向上)查找原因;对于未来(向下)做预测;制作SIPOC模型。

    因果图(鱼骨图/why-why分析图/石川图/ISHIKAWA图):找出产生问题的根本原因

    帕累托图:遵守“二八原则”,可以找到最主要的原因

    散点图(相关图):显示2个变量间的关系,找到引起2个变量问题的共同原因

    问题解决方法通常包括的因素有:定义问题;识别根本原因;生成可能的解决方案;选择最佳解决方案;执行解决方案;验证解决方案的有效性。

    质量报告可能是图形、数据或定性文件;其中包含的信息可帮助其他过程和部门采取纠正措施,以实现项目质量期望。

    质量报告的信息可以包含团队上报的质量管理问题,针对过程、项目和产品的改善建议,纠正措施建议(包括返工、缺陷/缺漏补救、100%检查等)以及在控制质量过程中发现的情况的概述。

    控制图主要作用:用来确定一个过程是否稳定;是否具有可预测的绩效。

    控制图具体功能:查明何时发生了特殊原因引起的变化,导致该过程失控;评价过程变更是否达到了预期的改进效果;提醒人们在还有时间解决问题时及时发现问题并采取措施。

    控制图经验总结:控制界限通常设在±3西格玛的位置;控制线外异常;7点原则(7点同侧,或7点同趋势,过程算异常,需要纠正);当过程被认为是在控制之内时不应调整,可以进行质量改进。

    质量管理详细内容

    一、项目质量管理包含的过程

    “规划质量管理”、“管理质量”、“控制质量”相互影响、交叠进行,没有先后顺序。

    “管理质量”的重点是审计,需要对“规划质量管理”的结果和“控制质量”的结果都审计。

    二、现代质量管理理念

    五个基本理念:客户满意、预防胜于检查、持续改进(PDCA)、管理层的责任(85%)、与供应商的互利合作关系。

    一个基本前提:项目质量管理需要兼顾项目管理与项目产品两个方面。

    三、质量和等级,精确和准确

    质量(ISO9000):一系列内在特性满足要求的程度。等级:对用途相同但技术特性不同的产品或服务的级别分类。

    精确:重复测量的结果非常聚合,离散度很小。

    准确:测量值非常接近实际值。

    四、五种质量管理水平

    按有效性递增排列的五种质量管理水平如下:

    让客户发现缺陷:这种方法可能会导致担保问题、召回、商誉受损和返工成本。

    先通过控制质量检测和纠正缺陷:再将可交付成果发送给客户。该过程会带来相关成本,主要是评估成本和内部失败成本。

    通过质量保证检查并纠正过程本身:不仅仅是特殊缺陷。

    将质量融入项目和产品的规划和设计中√

    在整个组织内创建一种关注并致力于实现过程和产品质量的文化。

    五、裁剪考虑因素

    政策合规与审计:组织有哪些质量政策和程序?组织使用哪些质量工具、技术和模板?

    标准与法规合规性:是否存在必须遵守的行业质量标准?需要考虑哪些政府、法律或法规方面的制约因素?

    持续改进:如何管理项目中的质量改进?是在组织层面还是在单个项目层面进行管理?

    相关方参与:项目环境是否有利于相关方及供应商合作?

    六、关于敏捷/适应型环境的考虑因素

    敏捷方法要求多个质量与审核步骤贯穿整个项目,而不是在面临项目结束时才执行。

    循环回顾,定期检查质量过程的效果;寻找问题的根本原因,然后建议实施新的质量改进方法;后续回顾会议评估试验过程,确定是否可行、是否应继续、或做出调整,或者直接弃用。

    为促进频繁的增量交付,敏捷方法关注于小批量工作,纳入尽可能多的项目可交付成果的要素。

    小批量系统的目的是在项目生命周期早期(整体变更成本较低)发现不一致和质量问

    题。

    七、质量政策(Policy)

    由高级管理层颁布的、确定组织质量工作方向的质量政策。

    执行组织的产品质量政策经常可“原样”照搬到项目中使用。

    如果执行组织没有正式的质量政策,或项目涉及多个执行组织(如:合资项目),项目管理团队就需要为项目制定质量政策。

    无论质量政策源自何处,项目管理团队必须通过适当的信息发布,确保相关方完全了解项目所使用的质量政策。

    八、专有的质量管理方法

    六西格玛:每100万个机会中只3.4个错误Minitab。

    精益六西格玛:精益生产与六西格玛管理的结合,其本质是消除浪费。

    质量功能部署:把顾客对产品的需求进行多层次的演绎分析,转化为设计和工艺要求等。

    CMMl:软件能力成熟度模型集成,目的是帮助软件企业对软件工程过程进行管理和改进,增强开发与改进能力。

    全面质量管理:鼓励全公司及所有员工共同致力于持续改进其本职工作质量以提高产品质量。

    九、规划质量管理

    定义:识别/制定质量标准(质量政策[由上至下],质量测量指标);记录如何达到(质量管理计划[how])。

    作用:在整个项目期间如何管理和核实质量提供指南和方向。

    发生时间:仅开展一次或仅在项目的预定义点开展。

    十、规划质量管理

    十一、数据分析——成本效益分析

    概念:对每个质量活动进行成本效益分析(商业论证),比较可能成本与预期效益

    投入 = 回报,质量免费

    十二、数据分析——质量成本(COQ)

    十三、质量成本(Cost of Quality)

    十四、数据表现——流程图

    *流程图也叫过程图。

    *基本要素:活动、决策点、分支、并行、处理顺序。

    *是对一个过程的图形化表示

    *四点用途:

    - 了解和估算一个过程的质量成本

    - 追溯过往步骤(向上)查找原因

    - 对未来(向下)做预测

    - 制作SIPOC模型

    十五、SIPOC模型

    * SIPOC模型是质量大师戴明提出来的组织系统模型

    * Supplier 供应者;Input 输入;Process 过程;Output:输出;Customer 客户

    十六、数据表现——矩阵图

    矩阵图在行列交叉的位置展示因素、原因和目标之间的关系强弱。

    根据可用来比较因素的数量,项目经理可使用不同形状的矩阵图,如L型、T型、Y型、X型、C型和屋顶型矩阵。

    在本过程中,它们有助于识别对项目成功至关重要的质量测量指标。

    十七、测试与检查的规划

    在规划阶段,项目经理和项目团队决定如何测试或检查产品、可交付成果或服务,以满足相关方的需求和期望,以及如何满足产品的绩效和可靠性目标。

    不同行业有不同的测试方式:

    软件项目:α测试和β测试。

    建筑项目:强度测试、制造和实地测试的检查、工程的无损伤测试。

    十八、质量管理计划

    * 描述如何实施执行组织的质量政策

    * 可以是正式或非正式的,非常详细或高度概括

    * 在项目早期进行评审,以确保决策是基于准确信息的(更加关注项目的价值定位,减少返工)

    * 包括:

    √项目采用的质量标准;

    √项目的质量目标;

    √质量角色与职责;

    √需要质量审查的项目可交付成果和过程;

    √为项目规划的质量控制和质量管理活动;

    √项目使用的质量工具;

    √与项目有关的主要程序;

    十九、质量测量指标

    * 是一种操作性定义。

    * 用非常具体的语言,描述项目或产品属性以及控制质量过程将如何验证符合程度。

    * 测量指标的例子包括:按时完成的任务的百分比、以CPI测量的成本绩效、故障率、识别的日缺陷数量、每月总停机时间、每个代码行的错误、客户满意度分数,测试计划所涵盖的需求的百分比(即:测试覆盖度)。

    * 测量指标可允许的变动范围叫公差。

    二十、管理质量

    定义:把组织的质量政策用于项目,并将质量管理计划转化为可执行的质量活动。

    作用:提高实现质量目标的可能性,以及识别无效过程和导致质量低劣的原因(审计)。

    发生时间:在整个项目期间开展。

    * 管理质量有时被称为“质量保证”,但“管理质量“的定义比“质量保证”更广,因其可用于非项目工作。

    * 管理质量包括所有质量保证活动,还与产品设计和过程改进有关。

    * 管理质量的工作属于质量成本框架中的一致性工作。

    二十一、管理质量

    * 管理质量是所有人的共同职责,包括:项目经理、项目团队、项目发起人、执行组织的管理层,甚至是客户。

    * 在敏捷项目中,整个项目期间的质量管理由所有团队成员执行;在传统项目中,质量管理通常是特定团队成员的职责。

    * 管理质量过程的作用: - 做出合格质量; - 建立信心(客户/团队); - 满足特定的需求和期望; - 审计质量要求和质量控制测量结果(确保使用合理标准); - 改进生产过程(提高过程和活动的效率与效果,获得更好的成果和绩效,提高相关方的满意程度)。

    二十二、管理质量

    二十三、数据表现——因果图

    * 1953年日本管理大师石川馨先生创造了一种极方便又有效的原因分析法。

    因果图又称“鱼骨图”、“why-why分析图”、“石川图”、“ISHIKAWA图”。

    * 直观地显示各种因素如何与潜在问题或结果相联系,找出产生问题的根本原因

    * 用于找出控制图中产生特殊偏差的非随机原因,来消除特殊偏差。

    * 因果图还可用于风险识别(识别风险起因)。

    二十四、数据表现——直方图

    * 概念:描述集中趋势、分散程度、统计分布形状。

    * 利用数字和柱形的相对高度,直观表示引发问题最普遍的原因,不考虑时间因素影响(非过程监控)

    * 示例:横轴是问题各个原因,纵轴是各个原因的发生次数。

    二十五、帕累托图

    * 按发生频率排序的特殊直方图,显示每种已识别的原因分别导致了多少缺陷。

    * 80/20原则,排序的目的是为了有重点地采取纠正措施。

    降序排列,涵盖100%的可观察结果

    * 项目团队首先要处理那些导致最多缺陷的原因。

    * 关键词:排序,最重要

    二十六、数据表现——散点图

    * 散点图又称相关图。

    * 显示2个变量间的共同原因。

    * 找到引起2个变量问题的共同原因。

    * 需要在散点图上标出因变量和自变量。

    * 数据点越接近对角线,两个变量之间的关系就越密切。

    * 相关性:正比例(正相关),负比例(负相关),不存在(零相关)。

    二十七、(质量)审计

    * 独立的结构化审查。* 通常由项目外部的团队开展,如:组织内部审计部门、项目管理办公室(PMO)或组织内部或外部的审计师。

    可确认项目活动是否遵循了组织和项目的政策

    作用: - 识别全部正在实施的良好及最佳实践

    - 识别所有违规做法、差距及不足

    - 分享所在组织和/或行业中类似项目的良好实践

    - 积极、主动地提供协助,以改进过程的执行,从而帮助团队提高生产效率

    - 强调每次审计都应对组织经验教训知识库的积累做出贡献

    * 质量审计还可确认已批准的变更请求。

    二十八、面向X的设计

    * 面向X的设计(DFX)是产品设计期间可采用的一系列技术指南,旨在优化设计的特定方面,可以控制或提高产品最终特性。* DFX中的“X”可以是产品开发的不同方面,例如:可靠性、调配、装配、制造、成本、服务、可用性、安全性和质量。

    * 使用DFX可以降低成本、改进质量、提高绩效和客户满意度。

    * 典型的DFX方法如下:

    - DFA:面向装配的设计

    - DFM:面向制造的设计

    - DFI:面向检验的设计

    - DFS:面向维修的设计

    - DFR:面向回收的设计

    - DFC:面向成本的设计

    - DFQ:面向质量的设计

    二十九、问题解决

    * 发现解决问题或应对挑战的解决方案。* 它包括收集其他信息、具有批判性思维的、创造性的、量化的和/或逻辑性的解决方法。

    * 有效和系统化地解决问题是管理质量和质量改进的基本要素。

    * 问题可能在控制质量过程或质量审计中发现,也可能与过程或可交付成果有关。

    * 使用结构化的问题解决方案有助于消除问题和制定长久有效的解决方案。

    * 问题解决方法通常包括以下要素:

    - 定义问题;

    - 识别根本原因;

    - 生成可能的解决方案;

    - 选择最佳解决方案;

    - 执行解决方案;

    - 验证解决方案的有效性。

    三十、质量改进方法

    * 质量改进的开展,可基于质量控制过程的发现和建议、质量审计的发现,或管理质量过程的问题解决。* 计划 - 实施 - 检查 - 行动(PDCA)和六西格玛是最常用于分析和评估改进机会的两种质量改进工具。

    三十一、质量报告

    * 质量报告可能是图形、数据或定性文件。

    * 其中包含的信息可帮助其他过程和部门采取纠正措施,以实现项目质量期望。

    * 质量报告的信息可以包含团队上报的质量管理问题,针对过程、项目和产品的改善建议,纠正措施建议(包括返工、缺陷/漏洞补救、100%检查等)以及在控制质量过程中发现的情况的概述。

    三十二、控制质量

    定义:为了评估绩效,确保项目输出完整、正确且满足客户期望,而监督和记录质量管理活动执行结果。* 作用:核实项目可交付成果和工作已经达到主要相关方的质量要求,可供最终验收。

    发生时间:在整个项目期间开展。

    * 控制质量过程确定项目输出是否达到预期目的,这些输出需要满足所有适用标准、要求、法规和规范。

    控制质量过程的目的是在用户验收和最终交付之前测量产品和服务的完整性、合规性和适用性。

    * 控制质量的努力程度和执行程度可能会因所在行业和项目管理风格而不同。

    三十三、控制质量

    * 项目管理计划 + 工作绩效数据 -> 数据分析 -> 工作绩效信息

    * 测试与评估文件 -> 测试/产品评估 -> 质量控制测量结果

    * 可交付成果 -> 检查 -> 核实的可交付成果

    三十四、数据收集——核对单(Checklists)

    * 结构化工具。* 用于质量控制过程。* 基于项目的不同要求和实践,可简可繁。

    * 应该涵盖范围基准中的验收标准。* 核对单可能会不够全面

    三十五、数据收集——核查表(check sheets)

    * 核查表也叫计数表(tall sheets)* 实时记录结果

    * 用一些图案、符号表示核查的结果

    * 有效收集潜在质量问题的有用数据* 收集属性数据比较擅长* 核查表 + 帕累托图

    三十六、数据收集——统计抽样

    关键:确定抽样的频率和规模,选取的样本可以代表全局。* 思考:最大的好处:是解决成本吗?

    * 使用场景:样本多,概率统计。

    三十七、测试/产品评估

    * 测试是一种有组织的、结构化的调查,旨在根据项目需求提供有关被测产品或服务质量的客观信息。

    * 测试的目的是找出产品或服务中存在的错误、缺陷、漏洞或其他不合规问题。

    * 用于评估各项需求的测试的类型、数量和程度是项目质量计划的一部分,具体取决于项目的性质、时间、预算或其他制约因素。

    * 测试可以贯穿于整个项目,可以随着项目的不同组成部分变得可用时进行,也可以在项目结束(即交付最终可交付成果)时进行。

    * 早期测试有助于识别不合规问题,帮助减少修补不合规组件的成本。

    * 不同应用领域需要不同测试:

    软件项目测试:包括单元测试、集成测试、黑盒测试、白盒测试、接口测试、回归测试、σ测试等。

    建筑项目测试:水泥强度测试、混凝土和易性测试、在建筑工地进行的旨在测试硬化混凝土结构的质量的无损伤测试,以及土壤试验等。

    硬件开始测试:环境应力筛选、老化测试、系统测试等。

    三十八、数据表现——控制图

    主要作用

    - 控制图用来确定一个过程是否稳定。

    - 是否具有可预测的绩效。

    具体功能

    - 查明何时发生了特殊原因引起的变化,导致该过程失控。

    - 评价过程变更是否达到了预期的改进效果。

    - 提醒人们在还有时间解决问题时及时发现问题并采取措施。

    两对概念

    - 规格的上限和下限:反映了可允许的最大值和最小值,根据协议要求而制定。

    - 控制上限和下限:反映了必须采取纠正措施的位置,由项目经理和相关方设定。

    经验总结

    - 控制界限通常设在±3西格玛的位置。

    控制线外异常

    7点原则(7点同侧,或7点同趋势,过程算异常,需要纠正)

    - 当过程被认为是在控制之内时不应调整,可以进行质量改进。

    三十九、质量责任

    需要项目管理资料合集的同学可留言

    展开全文
  • 太白正式作为一个开源多云管理平台加入OpenInfra Labs云网络,太白项目通过实现云与电信通信网络的融合使用户可采用统一端口实现自动化和多云资源的管理,该项目最初由烽火开发,烽火是OpenInfra基金会的白金成员,...
  • 关于idea2021版本创建maven管理项目骨架缺失问题,我是这样解决的: 使用meven管理项目工程,首先把下载的maven集成到idea,一开始我默认选择setting.xml和repository本地库路径为c盘下的路径,但是我安装的maven是...
  • 项目管理进阶——PMP 5A高分通过备考经验分享
  • 项目生命周期 项目的生命周期是描述项目从开始到结束所经历...项目设阶段的目的是为了管控的需要,每一个阶段都可以当成是一个子项目,每一个阶段中都可以执行项目管理生命周期定义的五大过程组。阶段结束时要进行阶段
  • SpringBoot+Shiro+LayUI权限管理系统项目-1.项目介绍

    千次阅读 多人点赞 2021-04-13 23:33:09
    项目介绍 打造一个基于RBAC架构模式的通用的、并不复杂但易用的权限管理系统。 2.获取源码 源码是捐赠方式获取,捐赠后在评论区留下邮箱发送或QQ联系我 :)! 3.功能介绍 部门管理 对于一个公司来说,下设众多部门...
  • 前端项目开发总结:电商后台管理系统

    千次阅读 多人点赞 2021-11-20 20:31:35
    这篇文章主要总结自己在学习黑马的电商后台管理系统中遇到的问题及其解决方法,和学到的知识;页面样式之类的就不做整理了 注:很多模块的添加,编辑删除等功能实现都比较相似,在弹窗之前 调用相应的api拿到数据...
  • 工业和信息化部为了进一步规范管理系统集成企业和项目经理人员,把通过"系统集成项目管理工程师"与"信息系统项目管理师"考试,作为申报系统集成项目经理资质的要求之一。 通过本考试的合格人员能够掌握系统集成项目...
  • 软件项目管理知识点总结

    千次阅读 2020-12-27 18:18:16
    软件项目管理第1章 软件项目管理概述1、项目的基本概念(注意与日常运作的区分)和特征;2、软件项目及特征;3、项目管理的基本概念;4、项目管理知识体系(以2017年发布的PMBOK6的十个知识领域为准);5、适用于...
  • 这是个典型的SSM后台管理项目(不是有很多小伙伴让推荐SSM项目练手嘛),基于经典技术组合(Spring MVC、Shiro、MyBatis、Bootstrap UI等)开发,适合学习练手。 而且它作为一个典型的后台管理系统,要素基本都有,...
  • 项目管理-网络图

    千次阅读 2021-03-13 11:12:38
    项目管理-网络图网络图1. 分类1.1 单代号网络图(节点型):1.2 双代号网络图(箭线型): 网络图 由箭线和节点组成的,用来表示 工作开展顺序及其相互依赖、相互制约关系的有向、有序的网状图形。说得通俗一些就是...
  • Vue+SpringBoot+ElementUI实战学生管理系统-1.项目介绍

    千次阅读 多人点赞 2021-01-21 17:48:08
    1.项目介绍 前段时间有位老铁问老徐有没有Vue+SpringBoot+ElementUI前后分离的项目想学习下,抱歉前端时间有点忙。千呼万唤始出来,做得不是很到位,需要的朋友可以拿去自己定制。:) 2.获取源码 源码是捐赠方式...
  • 本课程是Vue.js的实战项目课,通过讲解电商后台管理系统,加强对Vue.js技术的理解和综合运用,如果你是Vue.js的初学者,这套视频课程非常适合您! 以通俗易懂的方式讲解电商后台管理系统实战开发,帮您快速提升,...
  • 项目技术栈的展示以及项目的核心重点部分 二.如何搭建vue-cli脚手架 补充: 1.安装node.js 注:检查node版本命令 node -v npm和node.js一起安装 2.安装cnpm 命令: npm install -g cnpm --registry=...
  • 银行资金管理系统项目

    千次阅读 多人点赞 2020-12-20 15:37:45
    银行资金管理系统 使用Python语言完成【银行资金管理系统】,在新建工程中创建bank_main.py和bank_tools.py两个文件,其中bank_main.py文件为主文件,用于提供系统入口及主函数存放。bank_tools.py为工具文件,详细...
  • Mysql+Idea图书管理系统(项目链接+项目感悟)

    千次阅读 多人点赞 2021-12-09 17:01:28
    MySql+IDEA图书管理系统(Java) 在前面做IO流的图书管理系统面前,总有人说我的图书管理系统不上档次呀,连个数据打开txt文档都看不懂,那今天我们就看看看得懂的图书管理系统。 编写前的一些约定 编号长度都是8位 ...
  • 电商后台管理系统项目总结(一)

    千次阅读 2021-05-05 18:43:02
    项目模块分析:用户管理模块、权限管理模块、商品管理模块、订单管理模块、数据统计模块 各模块技术点: 用户管理模块 登录/退出、状态切换、编辑、分页、分配角色、面包屑导航切换 权限管理模块 添加角色、分配...
  • 开发库、受控库和产品库,配置管理员和开发人员的访问权限区分 软件过程管理包括启动和范围定义、项目规划、项目实施、监控和评审、收尾在关闭,项目规划除 了做计划之外,关键是确定合适的软件生命周期周期过程。...
  • SAP项目工时管理解决方案及开发建议
  • maven项目统一管理版本号方案

    千次阅读 2021-01-05 16:51:52
    maven项目统一管理版本号的方式 共有两种方案: 第一种亲测,靠谱。 方法一、引用版本管理插件 项目的结果如图: 模拟其他微服务目录一致的test2项目 两个项目的pom文件依赖关系: test1的parent.pom继承test1最...
  • JavaWeb项目作业 Market商品管理系统

    千次阅读 多人点赞 2021-04-01 16:33:51
    一、语言和环境 实现语言:Java语言。 环境要求:MyEclipse(Eclipse)+MySQL。 实现方式:JBDC、jsp/servlet。 二、实现功能 需求如下: ...1、首页完成商品信息列表显示,如图1所示。...2、当用户点击新增超链接时...
  • 根据管理对象的不同, 我们可以将项目管理软件可分为: 进度计划管理、合同管理、风险管理、投资管理等软件。 而仅36氪企服点评官网收录,项目管理工具的数量就已经达到上百款(产品搜索结果就有八百多个),这种情况...
  • 一款高效的、良好的项目管理软件必须具备快速的、强大的且包含:调度、成本控制、资源分配、文档、协作以及沟通等功能。   当前许多互联网公司都提供了一些项目开发的管理工具(大部分都是依据 Scrum),下面我们...
  • 项目流程管理解析华为项目管理

    千次阅读 2020-12-29 04:17:49
    原标题:从项目流程管理解析华为项目管理华为公司不仅是世界500强和全球通信行业的No.1,更是中国优秀的民族企业的代表,其处于高科技领域的塔尖位置。作为本土快速成长起来的杰出企业,其积累的优秀管理模式对我国...
  • PMP第六章:项目进度管理

    千次阅读 2021-03-09 17:33:08
    一、明确项目管理中的进度管理 项目进度管理是指在项目实施过程中,对各阶段的进展程度和项目最终完成的期限所进行的管理。 一般进度管理一共分三大步: ⑴对进度做出客观直实的判断 其具体方法包括: 横道图...
  • 使用 MonoRepo 管理前端项目

    千次阅读 2020-12-30 17:00:00
    前言在工作中,我们可能会遇到一些项目管理方面的问题。在单个项目管理的时候,大家都知道该怎么管理。一旦涉及到多个项目管理,很多人就不一定能够管理好了。这篇文章主要讲解一下 monorepo...
  •   项目管理本质上是知识,包括各种技术,例如工作分解结构(WBS)、关键路径分析和挣值管理,所以第二节是项目管理知识体系构成,如下图所示:   IPMP/PMP和PRINCE2是知识认证。也就是第三节和第四节的内容。  ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,343,557
精华内容 937,422
关键字:

怎么管理项目