优胜美房-B端CRM系统-项目文档

504 阅读6分钟

项目简介及背景

优房数据B端产品是为海内外投资人提供完全与美国同步的第三方精准数据,对不同区域的房源做对应分析并提供专业报告,通过深度分析,做出房价及租金的预测,并把房源及投资人进行精准推送,促使投资人做出最明智投资决策。

我们会利用数据分层、智能报表、数据分析、数据切片为服务机构提供全面数据服务,同时会根据企业不同层级要求精确描绘投资人画像,再不泄露任何投资人个人信息的前提下进行精准广告投放,高效为企业海外业务营销进行全方位服务。

33.gif

系统功能体系

①、账户体系:公司账户、顾问账户、账户中心。

②、大平台营销体系:房源管理、数据分析、营销工具、二级平台、客户注册。

系统主要页面

①、公司账户:公司信息管理、房源列表、客户管理、顾问管理、公司落地页管理、公司二级主页管理等功能。

②、顾问账户:房源列表、客户管理、分享组管理、Ping++聚合支付-支付宝微信扫码支付功能、房产报告管理、订单管理、收藏房源等功能。 

③、公共组件对外页面:公司落地页、房源详情页、移动端-房源列表分享页、移动端-房源视频分享页、。

技术栈

Client: Vue全家桶、ElementUI,及其他第三方Vue插件,例如:axios、moment、lodash、lazyload、qrcoder、vue-ripple-directive、clipboard、ali-oss等等。Pages目录总计37个.vue组件,Components目录总计169个公共组件,Router配置共计35个页面。

PS:本项目17年开发第一版为Java+jQuery前后分离架构,18年采用Vue重构。

整个系统的页面布局是我参考借鉴其他国内外同行门户网站,独立进行设计开发,例如:Redfin、Zillow、Trulia等等。早期地图是Google maps,后期因为Google改版,取消了免费额度,改为了会员制并每个月送100刀(没什么卵用),随改为Mapbox GL进行重构替换,数据可视化图表是Echarts。 

第三方库

API 接口说明

获取房源列表数据

GET /house/search
ParameterTypeDescription
filedStringRequired, 排序字段
directionStringRequired, 排序顺序,desc:降序,asc:升序
pageNumberRequired, 分页页数
pageSizeNumberRequired, 分页大小
actionString搜索方法:房源地址/MLS、城市、邮编
keywordString搜索关键字
typeNumber房源类型
bedsNumber卧室数量
bathsNumber卫浴数量
yearNumber房龄
minPriceNumber最低价格
maxPriceNumber最高价格
minSizeNumber最小面积
maxSizeNumber最大面积
maxXNumber地图拖动搜索房源——北
minXNumber地图拖动搜索房源——南
maxYNumber地图拖动搜索房源——东
minYNumber地图拖动搜索房源——西
isShowShareGroupBoolean是否展示分享组名称

安装、运行及部署构建步骤

# 安装依赖(第一次生成项目后)
npm install

# 开始本地开发,通过webpack-dev-server实时编译代码
npm run dev

# 构建测试环境的代码
npm run build:test

# 构建生产环境的代码
npm run build:prod

链接地址

生产环境:beta-business.mf-data.com

核心代码逻辑

①、公司账户下的公司二级主页管理功能,包括新建、修改、提交审核、发布等功能。类似于简易的低代码系统,搭建完成后可预览并发布,赋能B端客户搭建的自己公司的PC端LandingPage落地页。

②、关于地图的具体解决方案可以详看:juejin.cn/post/707202…

③、房屋贷款公式:Principal and Interest-本金和利息公式、Property Taxes-房产税公式,Homeowners' Insurance-业主保险公式,Mortgage Insurance-抵押贷款保险公式、每月还款本息(月供)。

④、房源详情页的10个图表模块的交互体验优化,如果数据齐全的情况下大概累计有上百个图表,没有数据的图表则不会展示,大多数房源的房源详情页里至少有50个图表以上。

初始技术方案是进入详情页后,就默认并发请求所有业务模块的图表数据接口,并展示全部图表实例,这样性能很差,页面会卡2~5s左右😅。

最终解决方案是默认进来页面后不请求业务模块的图表数据接口,只展示这10个业务模块的标题,每个模块都做成折叠面板的形式,点击标题则请求接口并展开该模块下的图表,并且只在第一次展开时请求一次接口即可,接口数据缓存起来,之后关闭再打开不会再请求接口,这样做以后性能比之前好了很多,详情页加载耗时大大缩短,性能极大改善。

⑤、顾问账户下的房源分享组管理功能,此为移动端页面,B端公司的顾问通过朋友圈分享出这条分享组后,该顾问的客户查看此分享组并感兴趣有意向时,又通过微信将该分享组分享给其他朋友时,此时该分享组的level层级计算比较复杂。

⑥、房源视频增删改查管理,上传阿里云OSS bucket,并支持弱网场景及断点续传,页面功能操作流程:

B端公司主页——新房视频相关功能流程 (1).jpg

业务逻辑视图

Image_20220823122147.png

目录结构

├── build                                       // 构建工具配置文件夹
│   ├── build.js
│   ├── check-versions.js
│   ├── logo.png
│   ├── utils.js
│   ├── vue-loader.conf.js
│   ├── webpack.base.conf.js                    // Webpack基础配置
│   ├── webpack.dev.conf.js                     // 开发环境配置
│   └── webpack.prod.conf.js                    // 生产环境配置
├── config                                      // 项目配置
│   ├── dev.env.js
│   ├── index.js
│   └── prod.env.js
├── src                                         // 源码目录
│   ├── api                                     // 接口配置,对接口进行统一管理
│   ├── axios                                   // 公共静态资源
│   │   └── index.js                            // axios封装配置
│   ├── components                              // 公共通用、业务组件
│   │   ├── companyHomePage                     // 落地页
│   │   ├── houseDetails                        // 房源详情页
│   │   ├── houseListMap                        // 房源列表页,含左侧地图及右侧房源列表
│   │   ├── massEmail                           // 群发邮件页
│   │   ├── massSMS                             // 群发短信页
│   │   ├── TagsView                            // 标签导航栏切换菜单功能
│   │   ├── videoPlayer                         // 视频播放组件
│   │   ├── houseListMapInfowindow              // 地图的InfoWindow/Popup弹窗交互组件
│   │   ├── clientShareHouse                    // 移动端-客户看的分享房源页
│   │   ├── clientShareVideo                    // 移动端-客户看的分享视频页
│   │   ├── Breadcrumb                          // 面包屑导航二次封装
│   │   └── BackTop                             // 自定义返回顶部组件
│   ├── mixin                                   // 公共混入组件
│   │   └── echarts_radio                       // Echarts图表封装组件
│   ├── pages                                   // 业务组件页面
│   │   ├── Company                             // 公司领导账户页
│   │   ├── Consultant                          // 顾问账户页
│   │   ├── YFSJinfo                            // 页底公司介绍信息页
│   │   └── errorPage                           // 错误页,例如404
│   ├── router                                  // 路由配置
│   │   ├── index.js                            // 路由配置及相关鉴权逻辑等等
│   │   └── routerMap.js                        // 路由枚举字典表
│   ├── utils                                   // 工具方法类库
│   │   └── globalBase.js                       // 挂载全局方法工具函数
│   ├── App.vue                                 // 页面入口根实例
│   └── main.js                                 // 程序入口文件,加载各种公共组件及插件配置 
├── static                                      // 公共静态资源
│   ├── css                                     // 公共通用样式
│   ├── img                                     // 公共图片
│   └── js                                      // 第三方库及插件的js文件
└──index.html                                   // 入口html文件

4 directories, 207 .vue组件,11 .js文件