# 项目必读
## 项目运行
```
npm install // 项目初始化下载,运行过慢时可选择执行yarn,运行前如有package-lock.json请删除
npm start // 运行
npm run build // 打包
```
## 注意事项
* 项目的运行环境是node@14.17.4版本下下载的。(版本过高可能会存在问题)
* TODO 标签代表可运行但后续变化可修改
* 打包代码需注意api地址访问,需修改utils - utility.js文件的 isDebug 变量,true为正式环境。
* 引入dingtalk-jsapi包是为了钉钉ui组件引入,未使用到钉钉的jsapi接口, 此项目为政务钉钉jsApi调用是用gdt-jsapi
* 引入海口地图服务注意:
1. 海口地图引入了public的map,主要在index.html里面中引入了:
```
```
2. 修改了map地图内以下地址的源码,添加了自己的服务器资源地址替换原有的地址,将源代码中的[HOSTNAME_AND_PATH_TO_JSAPI] 替换为global中的arcgisUrl。
D:\CodeWeb\hztGrid\mobile\public\map\arcgis_js_v332_api\arcgis_js_api\library\3.32\3.32 地图路径需要修改
```
static-server\public\arcgis-3.32\init.js // 38行处
static-server\public\arcgis-3.32\dojo\dojo.js // 36行处
```
3. 海口地图参考:ArcGIS API for JavaScript3.x版本。
4. 项目运行地图服务(ArcGIS)时调用的是以下地址(global.js)内的请求链接,如项目存放的服务器地址变更注意此(global.js)也需要考虑是否变更。
```
static-server\public\arcgis-3.32\global.js
```
* gdt-jsapi海口“海政通”接口调用的包。
* 项目中使用了“react-router-cache-route”路由缓存,可以缓存路由页面,不进行二次刷新页面,刷新页面通过status->router.js内的spinPage变量控制。
* building,room,task,mediate/eventList模块页面(index.jsx)和搜索页面(Search.jsx)有共同的操作代码,如要改其中一个,另一个也需要注意是否需要更改,后续这一部分逻辑可优化(当时设计是为了独立性)。
* 项目中曾使用react-virtual虚拟滚动,但因与react-router-cache-route配合使用时产生滚动条复位的问题未能解决,现已屏蔽react-virtual相关代码,后续不需要则可删除。
## 项目目录
```
├── public
│ ├── favicon.ico
│ ├── index.html
│ ├── loader.css 项目初始空白过渡动画
│ ├── map_dot.png 地图服务的打点标记图片icon
│ ├── marker.png 地图服务的marker标记图片icon
│ ├── dayjs.min.js 时间,日期处理的js,moment的替代
│ ├── regionData2.js 海口市地址js
│ ├── regionData.js 省市区地址js
│ └── map 海口政务地图服务的js库
├── src
├── api 项目api接口
├── assets 项目图片,icon等资源
├── components 公共组件,页面组件(页面组件多数情况下都是其页面单独使用)库
├── router 路由
├── status 数据,状态,工具类
├── styles 样式
├── utils 公共方法
├── views 页面
└── index.js 入口文件
└── craco.config.js craco的配置文件,用于加载less
```