已有kb文档:PDM/IPM系统操作手册
一、练习DEMO
使用如下技术栈完成图示的demo
- create-react-app 搭建前端项目(端口3000)
- antd 作为UI框架
- mobx 作为状态管理工具
- koa/express 启动Node服务(端口3001)
功能描述:
- 前端创建一个具有「搜索-列表-分页」功能的页面,前端请求 Node 服务,Node 服务转发该请求到 https://cnodejs.org/api 提供的开放接口服务获取数据。渲染内容参考 CNode 首页;
- 完成一个上传/下载功能,上传后的文件保存在 Node 服务中,可以在前端访问并下载;
- 使用 Antd 的 Form 功能完成一个表单页,填写的数据发送到 Node 服务,Node 中打印出来即可
二、检查账号开通情况
- 企业微信账号;
- gitlab 权限(https://gitlab.gz.cvte.cn/),先确保本地 git 已安装;
- KB 权限(https://kb.cvte.com/),用于查看项目文档;
- cplm权限(https://cplmtest.gz.cvte.cn/),负责开发的项目;
三、运行代码
- 负责人开通 gitlab 项目权限(pdm-front / cat-master / rich-table / wuli-react-dynamic-form-render);
- 按 README.md 指引在本地运行 pdm(pdm-front) / pcm(cat-master) 项目;
- 使用 wuli-react-dynamic-form-render 组件搭建一个表单页,可参考文档及其他页面代码(新建测试页面方法查看6.1);
四、项目架构简介
五、代码提交规范
六、如何新建一个页面
6.1 本地测试页面
{
name: "新品流程放行规则配置",
path: "prod_flow_approval_conf",
component: LoadableComponent(() => import('~/pages/admin/prodConfiguration/newProdFlowApprovalConf')),
},
{
name: "测试页面",
path: "test",
component: LoadableComponent(() => import('~/pages/admin/test')),
},
在 frontend/src/routers 目录下新建一行路由数据后,到页面中手动修改 url 为当前路由进行访问。
6.2 正式页面
- 到 https://cplmadtest.gz.cvte.cn/ 中,基础配置 > 页面资源配置 页面下,找到对应位置新建页面数据(其中「页面编码」和「访问地址」要一一对应,用尽可能准确的英文描述路径);
- 返回项目代码中新建路由及页面,同 6.1 ;
- 到项目页面中,点 清空缓存刷新 页面;
- 若菜单对应位置显示新建菜单,并且可点击进入,说明新建页面成功;
七、如何对接一个新接口
7.1 PDM的接口
1. Nodejs 中,找到对应模块,配置接口映射:
'use strict';
const OBJECT_CLASS_SERVER = process.env.OBJECT_CLASS_SERVER || ''; // 到 .cvte_env 文件中,找域名对应的变量
module.exports = {
// 产品生命周期管控-列表
PUT_PROD_LIFECYCLE_RULE_LIST: { // 映射名全大写
method: 'POST', // 请求方法类型
uri: `${OBJECT_CLASS_SERVER}/product/ctrl/lifecycle/search`, // 后端提供的接口地址
},
}
2. frontend/src/_stores/models 目录下(即mobx配置目录),找到对应模块,增加请求方法
import { observable } from 'mobx';
import { asyncAction } from 'mobx-utils';
import { fetch, createService } from '~/_utils/http';
class NewProdFlowApprovalConf {
@observable stateForCVTECerList = 'done'; // 某一状态
// 列表
postProdReleaseInfoSearch = asyncAction(function* (payload) {
try {
const { data } = yield fetch('POST_PROD_RELEASE_INFO_SEARCH', 'post', payload || {});
return data;
} catch (error) {
return Promise.reject(error);
}
});
}
export default new NewProdFlowApprovalConf();
3. 页面代码中,使用装饰器引入 mobx
import React, { Component, Fragment } from "react";
import { observer, inject } from 'mobx-react';
@inject('newProdFlowApprovalConf') // 这里写对应mobx文件名
@observer
export default class NewProdFlowApprovalConf extends Component {
componentDidMount() {
this.props.newProdFlowApprovalConf.postProdReleaseInfoSearch({ data: {} }); // 使用 props 调用方法
}
}
八、对象管理
8.1 配置对象(基本信息、通用视图)
8.2 创建通用视图页面
九、流程/任务
十、数据字典
十一、代码风格
11.1 类组件
11.2 Hook
作者:朱黔杨 创建时间:2023-04-19 11:18
最后编辑:陈思奇 更新时间:2024-01-23 15:26
最后编辑:陈思奇 更新时间:2024-01-23 15:26