|
|
1 week geleden | |
|---|---|---|
| public | 1 week geleden | |
| src | 1 week geleden | |
| .gitignore | 4 maanden geleden | |
| README.md | 1 week geleden | |
| jsconfig.json | 4 maanden geleden | |
| package-lock.json | 1 week geleden | |
| package.json | 1 week geleden | |
| vue.config.js | 1 week geleden |
基于 Vue 3 + Mapbox GL JS 构建,集成申勤项目数据上图、辖区可视化、绘制工具、员工信息管理于一体,支持手动登录与外部链接 token 自动登录两种模式。
| 分类 | 技术 |
|---|---|
| 框架 | Vue 3.2 + Vue Router 4 + Vuex 4 |
| UI | Element Plus 2.9 + Element Plus Icons |
| 地图 | Mapbox GL JS 3.21 + @mapbox/mapbox-gl-draw + @turf/turf |
| 图表 | ECharts 5.6 |
| HTTP | Axios 0.27 + qs |
| 工具 | wellknown(WKT/GeoJSON 互转)、moment、xlsx、vue-clipboard3 |
| 编辑器 | json-editor-vue、vue-json-ui-editor |
| 构建 | Vue CLI 5 + Less + compression-webpack-plugin(gzip)+ terser |
sq_dataview/
├── public/
│ ├── index.html # 入口模板(引入 mapbox/turf/jquery/mapDraw 等静态插件)
│ └── static/
│ ├── config/config.js # 全局配置 webConfig(服务地址、地图瓦片、字段映射等)
│ ├── data/area.geojson # 上海16区辖区面数据
│ └── plugins/
│ ├── mapDraw.js # 自定义 Mapbox 绘制插件(绘点/线/面/圆/矩形/测距/测面)
│ ├── mapbox-v3.20.0/ # Mapbox GL 本地资源
│ ├── turf.min.js # 空间计算
│ ├── jquery/ # jQuery 工具
│ └── createAuth.js # 认证辅助
├── src/
│ ├── api/
│ │ ├── common.js # 登录、用户、内容增删改查、数据列表
│ │ ├── content.js # 栏目模型、内容导入导出、权限
│ │ └── mapCommon.js # 地址搜索接口
│ ├── components/
│ │ ├── Map.vue # 地图主容器(底图、数据上图、辖区、弹窗、图层控制)
│ │ ├── DrawMap.vue # 绘制工具栏
│ │ ├── Header.vue # 顶部栏(时间、天气、全屏)
│ │ ├── LeftMenu.vue # 左侧项目列表(按市辖区/管理区域分级、搜索、总数统计)
│ │ ├── Table.vue # 员工信息表格(分页、搜索、编辑)
│ │ ├── JsonEditor.vue # 图层要素 JSON 编辑器
│ │ └── editManage.vue # 员工信息编辑表单
│ ├── views/
│ │ ├── Login.vue # 手动登录页
│ │ ├── AutoLogin.vue # 外部链接 token 自动登录页
│ │ └── IndexView.vue # 主视图(地图 + 搜索 + 底图切换)
│ ├── router/index.js # 路由(/、/index、/autoLogin)
│ ├── store/index.js # Vuex(token、userState、userInfo,持久化到 localStorage)
│ ├── utils/
│ │ ├── request.js # axios 封装(get/post/postform/postFile/getFile 等)
│ │ ├── util.js # 终端判断、GeoJSON→WKT 等
│ │ ├── encrypt.js # 登录加密
│ │ └── loading.js # 全局 loading
│ ├── App.vue
│ └── main.js # 入口(注册 ElementPlus、全局 $getUserType、$copyText)
├── vue.config.js # Vue CLI 配置(别名、gzip、geojson loader、devServer 代理)
└── package.json
登录与认证
postMessage 传递 token,校验 getUserByToken 自动登录地图可视化
fill-extrusion 立体面 + 多层光晕边线 + 名称标注绘制工具
项目列表
员工信息管理
图层 JSON 编辑
顶部信息栏
npm install
npm run serve
默认端口 2120,devServer 代理配置见 vue.config.js:
/proxy_auth → 认证服务/proxy_dms → 数据管理服务/proxy_map_search_address、/proxy_map_search → 地图地址搜索npm run build
全局配置位于 public/static/config/config.js:
systemName:系统名称OAUTH_URL / DMS_URL / PROXY_URL_SEARCH_*:服务地址MAPBOX_ACCESS_TOKEN:Mapbox tokenMAPBOX_TILES_NORMAL/BLUE/YXT:三种底图瓦片地址CITY_CODE_LIST:上海 16 区列表columnArr:申勤员工栏目配置FILTER_PARAM:弹窗/列表显示字段映射defaultAccount.adminRoleId:管理员角色 ID