first
24
.gitignore
vendored
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
# Logs
|
||||||
|
logs
|
||||||
|
*.log
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
pnpm-debug.log*
|
||||||
|
lerna-debug.log*
|
||||||
|
|
||||||
|
node_modules
|
||||||
|
dist
|
||||||
|
dist-ssr
|
||||||
|
*.local
|
||||||
|
|
||||||
|
# Editor directories and files
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/extensions.json
|
||||||
|
.idea
|
||||||
|
.DS_Store
|
||||||
|
*.suo
|
||||||
|
*.ntvs*
|
||||||
|
*.njsproj
|
||||||
|
*.sln
|
||||||
|
*.sw?
|
||||||
11
.prettierrc
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
{
|
||||||
|
"singleQuote": true,
|
||||||
|
"trailingComma": "none",
|
||||||
|
"tabWidth": 4,
|
||||||
|
"printWidth": 120,
|
||||||
|
"useTabs": false,
|
||||||
|
"semi": false,
|
||||||
|
"arrowParens": "avoid",
|
||||||
|
"endOfLine": "lf",
|
||||||
|
"htmlWhitespaceSensitivity": "ignore"
|
||||||
|
}
|
||||||
3
.vscode/extensions.json
vendored
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
{
|
||||||
|
"recommendations": ["Vue.volar", "Vue.vscode-typescript-vue-plugin"]
|
||||||
|
}
|
||||||
15
README.md
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
Vue 3 + TypeScript + Vite
|
||||||
|
这个模板可以帮助您开始使用Vue 3和TypeScript在Vite中进行开发。该模板使用了Vue 3的<script setup>单文件组件,请查看script setup文档了解更多信息。
|
||||||
|
|
||||||
|
推荐的IDE设置
|
||||||
|
VS Code + Volar(并禁用Vetur)+ TypeScript Vue Plugin (Volar)。
|
||||||
|
在TS中对.vue导入提供类型支持
|
||||||
|
TypeScript 默认情况下无法处理.vue导入的类型信息,因此我们用vue-tsc替换了tsc CLI进行类型检查。在编辑器中,我们需要TypeScript Vue Plugin (Volar)来让TypeScript语言服务了解.vue类型。
|
||||||
|
|
||||||
|
如果独立的TypeScript插件对您来说不够快,Volar还实现了一种Take Over Mode,它的性能更好。您可以按照以下步骤启用它:
|
||||||
|
|
||||||
|
禁用内置的TypeScript扩展
|
||||||
|
从VSCode的命令面板中运行Extensions: Show Built-in Extensions
|
||||||
|
找到TypeScript and JavaScript Language Features,右键单击并选择Disable (Workspace)
|
||||||
|
通过运行Developer: Reload Window命令重新加载VSCode窗口。
|
||||||
|
|
||||||
13
index.html
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<link rel="icon" type="image/svg+xml" href="/favicon.ico" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>电能质量数据监测云平台</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="app"></div>
|
||||||
|
<script type="module" src="/src/main.ts"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
47
package.json
Normal file
@@ -0,0 +1,47 @@
|
|||||||
|
{
|
||||||
|
"name": "canneng-admin",
|
||||||
|
"private": true,
|
||||||
|
"version": "0.0.0",
|
||||||
|
"type": "module",
|
||||||
|
"scripts": {
|
||||||
|
"dev": "vite",
|
||||||
|
"build": "vite build",
|
||||||
|
"preview": "vite preview"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@element-plus/icons-vue": "^2.3.1",
|
||||||
|
"@fortawesome/fontawesome-free": "^6.5.1",
|
||||||
|
"@vueuse/core": "^10.7.0",
|
||||||
|
"@wangeditor/editor": "^5.1.23",
|
||||||
|
"@wangeditor/editor-for-vue": "^5.1.12",
|
||||||
|
"axios": "^1.6.2",
|
||||||
|
"crypto-js": "^4.2.0",
|
||||||
|
"echarts": "^5.4.3",
|
||||||
|
"echarts4": "npm:echarts@^4.9.0",
|
||||||
|
"element-plus": "^2.5.3",
|
||||||
|
"html2canvas": "^1.4.1",
|
||||||
|
"jquery": "^3.7.1",
|
||||||
|
"lodash-es": "^4.17.21",
|
||||||
|
"mitt": "^3.0.1",
|
||||||
|
"nprogress": "^0.2.0",
|
||||||
|
"pinia": "^2.1.7",
|
||||||
|
"pinia-plugin-persistedstate": "^3.2.1",
|
||||||
|
"screenfull": "^6.0.2",
|
||||||
|
"use-element-plus-theme": "^0.0.5",
|
||||||
|
"vue": "^3.3.11",
|
||||||
|
"vue-draggable-resizable": "3.0.0-beta.2",
|
||||||
|
"vue-router": "4",
|
||||||
|
"vxe-table": "^4.5.17",
|
||||||
|
"xe-utils": "^3.5.14"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/lodash-es": "^4.17.12",
|
||||||
|
"@types/node": "^20.10.5",
|
||||||
|
"@vitejs/plugin-vue": "^4.5.2",
|
||||||
|
"@vitejs/plugin-vue-jsx": "^3.1.0",
|
||||||
|
"sass": "^1.69.5",
|
||||||
|
"typescript": "^5.2.2",
|
||||||
|
"vite": "^5.0.8",
|
||||||
|
"vue-tsc": "^1.8.25"
|
||||||
|
}
|
||||||
|
}
|
||||||
2461
pnpm-lock.yaml
generated
Normal file
BIN
public/favicon.ico
Normal file
|
After Width: | Height: | Size: 6.6 KiB |
1
public/vite.svg
Normal file
@@ -0,0 +1 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="31.88" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 257"><defs><linearGradient id="IconifyId1813088fe1fbc01fb466" x1="-.828%" x2="57.636%" y1="7.652%" y2="78.411%"><stop offset="0%" stop-color="#41D1FF"></stop><stop offset="100%" stop-color="#BD34FE"></stop></linearGradient><linearGradient id="IconifyId1813088fe1fbc01fb467" x1="43.376%" x2="50.316%" y1="2.242%" y2="89.03%"><stop offset="0%" stop-color="#FFEA83"></stop><stop offset="8.333%" stop-color="#FFDD35"></stop><stop offset="100%" stop-color="#FFA800"></stop></linearGradient></defs><path fill="url(#IconifyId1813088fe1fbc01fb466)" d="M255.153 37.938L134.897 252.976c-2.483 4.44-8.862 4.466-11.382.048L.875 37.958c-2.746-4.814 1.371-10.646 6.827-9.67l120.385 21.517a6.537 6.537 0 0 0 2.322-.004l117.867-21.483c5.438-.991 9.574 4.796 6.877 9.62Z"></path><path fill="url(#IconifyId1813088fe1fbc01fb467)" d="M185.432.063L96.44 17.501a3.268 3.268 0 0 0-2.634 3.014l-5.474 92.456a3.268 3.268 0 0 0 3.997 3.378l24.777-5.718c2.318-.535 4.413 1.507 3.936 3.838l-7.361 36.047c-.495 2.426 1.782 4.5 4.151 3.78l15.304-4.649c2.372-.72 4.652 1.36 4.15 3.788l-11.698 56.621c-.732 3.542 3.979 5.473 5.943 2.437l1.313-2.028l72.516-144.72c1.215-2.423-.88-5.186-3.54-4.672l-25.505 4.922c-2.396.462-4.435-1.77-3.759-4.114l16.646-57.705c.677-2.35-1.37-4.583-3.769-4.113Z"></path></svg>
|
||||||
|
After Width: | Height: | Size: 1.5 KiB |
16
src/App.vue
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
<template>
|
||||||
|
<el-config-provider :locale="zhCn">
|
||||||
|
<router-view></router-view>
|
||||||
|
</el-config-provider>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import zhCn from 'element-plus/dist/locale/zh-cn.mjs'
|
||||||
|
import useSetTheme from '@/utils/setTheme'
|
||||||
|
useSetTheme()
|
||||||
|
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
/* Your SCSS styles here */
|
||||||
|
</style>
|
||||||
15
src/api/access-boot/analyzeModel.ts
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 新增设备模版
|
||||||
|
export const addDevModel = (file:any) => {
|
||||||
|
let form = new FormData()
|
||||||
|
form.append('file', file)
|
||||||
|
return request({
|
||||||
|
url: '/access-boot/analyzeModel/addModel',
|
||||||
|
method: 'post',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'multipart/form-data',
|
||||||
|
},
|
||||||
|
data: form,
|
||||||
|
})
|
||||||
|
}
|
||||||
14
src/api/auth.ts
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
import createAxios from '@/utils/request'
|
||||||
|
|
||||||
|
//登录获取token
|
||||||
|
export function getRouteMenu() {
|
||||||
|
return createAxios({
|
||||||
|
url: '/user-boot/function/getRouteMenu'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
//获取字典
|
||||||
|
export function dictDataCache() {
|
||||||
|
return createAxios({
|
||||||
|
url: '/system-boot/dictType/dictDataCache'
|
||||||
|
})
|
||||||
|
}
|
||||||
32
src/api/common.ts
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
import createAxios from '@/utils/request'
|
||||||
|
|
||||||
|
// 用户名列表
|
||||||
|
export function saveLogParam() {
|
||||||
|
return createAxios({
|
||||||
|
url: '/system-boot/audit/saveLogParam',
|
||||||
|
method: 'POST'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 区域列表
|
||||||
|
export function getAreaList() {
|
||||||
|
return createAxios({
|
||||||
|
url: '/user-boot/dept/deptTree',
|
||||||
|
method: 'POST'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 设备列表
|
||||||
|
export function getDeviceTree() {
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/csLedger/deviceTree',
|
||||||
|
method: 'POST'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 获取波形数据
|
||||||
|
export function analyseWave(params:string) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-harmonic-boot/event/analyseWave?eventId=' + params,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
17
src/api/cs-device-boot/EquipmentDelivery.ts
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
import createAxios from '@/utils/request'
|
||||||
|
|
||||||
|
// 装置基础数据和模板数据
|
||||||
|
export function getDeviceData(deviceId: string, type: string, lineId = '') {
|
||||||
|
let form = new FormData()
|
||||||
|
form.append('deviceId', deviceId)
|
||||||
|
form.append('lineId', lineId)
|
||||||
|
form.append('type', type)
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/EquipmentDelivery/deviceData',
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/x-www-form-urlencoded'
|
||||||
|
},
|
||||||
|
data: form
|
||||||
|
})
|
||||||
|
}
|
||||||
15
src/api/cs-device-boot/capacity.ts
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
import createAxios from '@/utils/request'
|
||||||
|
|
||||||
|
// 更新组和指标关系
|
||||||
|
export function getDevCapacity(devId: string) {
|
||||||
|
let form = new FormData()
|
||||||
|
form.append('id', devId)
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/capacity/getDevCapacity',
|
||||||
|
method: 'post',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/x-www-form-urlencoded'
|
||||||
|
},
|
||||||
|
data: form
|
||||||
|
})
|
||||||
|
}
|
||||||
15
src/api/cs-device-boot/csDataArray.ts
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
import createAxios from '@/utils/request'
|
||||||
|
|
||||||
|
// 根据数据集获取指标数据
|
||||||
|
export function getTargetById(id: string) {
|
||||||
|
let form = new FormData()
|
||||||
|
form.append('id', id)
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/csDataArray/getTargetById',
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/x-www-form-urlencoded'
|
||||||
|
},
|
||||||
|
data: form
|
||||||
|
})
|
||||||
|
}
|
||||||
10
src/api/cs-device-boot/csGroArr.ts
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import createAxios from '@/utils/request'
|
||||||
|
|
||||||
|
// 更新组和指标关系
|
||||||
|
export function updateGroArr(data: any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/csGroArr/updateGroArr',
|
||||||
|
method: 'POST',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
52
src/api/cs-device-boot/csGroup.ts
Normal file
@@ -0,0 +1,52 @@
|
|||||||
|
import createAxios from '@/utils/request'
|
||||||
|
|
||||||
|
// 查询分组
|
||||||
|
export function getGroup(dataSet: string) {
|
||||||
|
let form = new FormData()
|
||||||
|
form.append('dataSet', dataSet)
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/csGroup/getGroup',
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/x-www-form-urlencoded'
|
||||||
|
},
|
||||||
|
data: form
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 装置分组实时数据
|
||||||
|
export function deviceHisData(data: any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/csGroup/deviceHistoryData',
|
||||||
|
method: 'POST',
|
||||||
|
data: Object.assign(
|
||||||
|
{
|
||||||
|
endTime: '',
|
||||||
|
id: '',
|
||||||
|
lineId: '',
|
||||||
|
pageNum: 1,
|
||||||
|
pageSize: 20,
|
||||||
|
startTime: ''
|
||||||
|
},
|
||||||
|
data
|
||||||
|
)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 装置分组历史数据
|
||||||
|
export function deviceRtData(data: any) {
|
||||||
|
let form = new FormData()
|
||||||
|
form.append('id', data.id)
|
||||||
|
form.append('lineId', data.lineId)
|
||||||
|
form.append('pageNum', data.pageNum)
|
||||||
|
form.append('pageSize', data.pageSize)
|
||||||
|
form.append('searchValue', data.searchValue)
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/csGroup/deviceRtData',
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/x-www-form-urlencoded'
|
||||||
|
},
|
||||||
|
data: form
|
||||||
|
})
|
||||||
|
}
|
||||||
17
src/api/cs-device-boot/csLedger.ts
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
import createAxios from '@/utils/request'
|
||||||
|
|
||||||
|
// 设备列表
|
||||||
|
export function getDeviceTree() {
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/csLedger/deviceTree',
|
||||||
|
method: 'POST'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 监测点列表
|
||||||
|
export function getLineTree() {
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/csLedger/lineTree',
|
||||||
|
method: 'POST'
|
||||||
|
})
|
||||||
|
}
|
||||||
10
src/api/cs-device-boot/devmodel.ts
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 编辑设备模版
|
||||||
|
export const AuditDevModel = (data:any) => {
|
||||||
|
return request({
|
||||||
|
url: '/cs-device-boot/devmodel/AuditDevModel',
|
||||||
|
method: 'post',
|
||||||
|
data: data,
|
||||||
|
})
|
||||||
|
}
|
||||||
24
src/api/cs-device-boot/edData.ts
Normal file
@@ -0,0 +1,24 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 新增程序版本
|
||||||
|
export const addEdData = (data) => {
|
||||||
|
return request({
|
||||||
|
url: '/cs-device-boot/edData/addEdData',
|
||||||
|
method: 'post',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'multipart/form-data',
|
||||||
|
},
|
||||||
|
data: data,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export const auditEdData = (data) => {
|
||||||
|
return request({
|
||||||
|
url: '/cs-device-boot/edData/auditEdData',
|
||||||
|
method: 'post',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'multipart/form-data',
|
||||||
|
},
|
||||||
|
data: data,
|
||||||
|
})
|
||||||
|
}
|
||||||
10
src/api/cs-device-boot/lineTemplate.ts
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
// 上传拓扑图模板监测点位置
|
||||||
|
export const addLineTemplate = (data: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/cs-device-boot/lineTemplate/addLineTemplate',
|
||||||
|
method: 'POST',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
37
src/api/cs-device-boot/topologyTemplate.ts
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
import createAxios from '@/utils/request'
|
||||||
|
// 上传拓扑图
|
||||||
|
export const uploadTopo = file => {
|
||||||
|
let form = new FormData()
|
||||||
|
form.append('file', file)
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/topologyTemplate/uploadImage',
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'multipart/form-data'
|
||||||
|
},
|
||||||
|
data: form
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 查询拓扑图模板
|
||||||
|
export const getTopoTemplate = () => {
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/topologyTemplate/queryImage',
|
||||||
|
method: 'POST'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//删除拓扑图模板
|
||||||
|
export const deleteTopoTemplate = id => {
|
||||||
|
let form = new FormData()
|
||||||
|
form.append('id', id)
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/topologyTemplate/deleteImage',
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/x-www-form-urlencoded'
|
||||||
|
},
|
||||||
|
data: form
|
||||||
|
})
|
||||||
|
}
|
||||||
55
src/api/cs-device-boot/user.ts
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
import createAxios from '@/utils/request'
|
||||||
|
// 查询游客配置
|
||||||
|
export const getVisitorConfig = () => {
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/csTouristData/queryAll',
|
||||||
|
method: 'POST'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询营销人员未选择的工程
|
||||||
|
*/
|
||||||
|
export const queryEnginnerByUseId = (data: any) => {
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/csMarketData/queryEnginnerByUseId',
|
||||||
|
method: 'post',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 更新游客配置
|
||||||
|
export const updateVisitorConfig = (data: any) => {
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/csTouristData/add',
|
||||||
|
method: 'POST',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// * 根据用户获取营销数据
|
||||||
|
export const queryByUseId = (data: any) => {
|
||||||
|
return createAxios({
|
||||||
|
url: 'cs-device-boot/csMarketData/queryByUseId',
|
||||||
|
method: 'POST',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// * 新增营销数据
|
||||||
|
export const add = (data: any) => {
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/csMarketData/add',
|
||||||
|
method: 'POST',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* 移除营销数据
|
||||||
|
*/
|
||||||
|
export const removeMarketData = (data: any) => {
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/csMarketData/remove',
|
||||||
|
method: 'post',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
14
src/api/cs-harmonic-boot/datatrend.ts
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
import createAxios from '@/utils/request'
|
||||||
|
|
||||||
|
// 查询设备数据趋势
|
||||||
|
export function getDeviceDataTrend(data: any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-harmonic-boot/datatrend/querydatatrend',
|
||||||
|
method: 'POST',
|
||||||
|
data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
20
src/api/cs-harmonic-boot/stable.ts
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
import createAxios from '@/utils/request'
|
||||||
|
|
||||||
|
// 更新组和指标关系
|
||||||
|
export function queryCommonStatisticalByTime(data: any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-harmonic-boot/stable/queryCommonStatisticalByTime',
|
||||||
|
method: 'post',
|
||||||
|
data: Object.assign(
|
||||||
|
{
|
||||||
|
devId: '',
|
||||||
|
endTime: '',
|
||||||
|
frequency: '',
|
||||||
|
startTime: '',
|
||||||
|
statisticalId: '',
|
||||||
|
valueType: '',
|
||||||
|
},
|
||||||
|
data
|
||||||
|
),
|
||||||
|
})
|
||||||
|
}
|
||||||
30
src/api/cs-system-boot/appinfo.ts
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
import createAxios from '@/utils/request'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 查询app个人中心信息详情
|
||||||
|
* @param id
|
||||||
|
*/
|
||||||
|
export const queryAppInfo = (type: string) => {
|
||||||
|
let form = new FormData()
|
||||||
|
form.append('type', type)
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-system-boot/appinfo/queryAppInfoByType',
|
||||||
|
method: 'post',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/x-www-form-urlencoded'
|
||||||
|
},
|
||||||
|
data: form
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 新增app基础信息
|
||||||
|
**/
|
||||||
|
export const addAppInfo = (data: { type: string, content: string }) => {
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-system-boot/appinfo/addAppInfo',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
66
src/api/cs-system-boot/device.ts
Normal file
@@ -0,0 +1,66 @@
|
|||||||
|
import createAxios from '@/utils/request'
|
||||||
|
// 新增出厂设备
|
||||||
|
export const addEquipmentDelivery = (data: any) => {
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/EquipmentDelivery/addEquipmentDelivery',
|
||||||
|
method: 'POST',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除出厂设备
|
||||||
|
export const deleteEquipmentDelivery = (id: any) => {
|
||||||
|
let form = new FormData()
|
||||||
|
form.append('id', id)
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/EquipmentDelivery/AuditEquipmentDelivery',
|
||||||
|
method: 'POST',
|
||||||
|
data: form
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 恢复出厂设置
|
||||||
|
export const resetEquipmentDelivery = (id: any) => {
|
||||||
|
let form = new FormData()
|
||||||
|
form.append('nDid', id)
|
||||||
|
return createAxios({
|
||||||
|
url: '/access-boot/device/resetFactory',
|
||||||
|
method: 'POST',
|
||||||
|
data: form
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 编辑出厂设备
|
||||||
|
|
||||||
|
export const editEquipmentDelivery = (data: any) => {
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/EquipmentDelivery/updateEquipmentDelivery',
|
||||||
|
method: 'POST',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 上传拓扑图
|
||||||
|
export const uploadTopo = (file: any) => {
|
||||||
|
let form = new FormData()
|
||||||
|
form.append('file', file)
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/topologyTemplate/uploadImage',
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'multipart/form-data'
|
||||||
|
},
|
||||||
|
data: form
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 批量导入设备
|
||||||
|
export const batchImportDevice = (file: any) => {
|
||||||
|
let form = new FormData()
|
||||||
|
form.append('file', file)
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-device-boot/EquipmentDelivery/importEquipment',
|
||||||
|
method: 'POST',
|
||||||
|
responseType: 'blob',
|
||||||
|
data: form
|
||||||
|
})
|
||||||
|
}
|
||||||
10
src/api/cs-system-boot/manage.ts
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
import createAxios from '@/utils/request'
|
||||||
|
|
||||||
|
// 更新问题状态
|
||||||
|
export function auditFeedBack(data:any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/cs-system-boot/feedback/auditFeedBack',
|
||||||
|
method: 'post',
|
||||||
|
params:data
|
||||||
|
})
|
||||||
|
}
|
||||||
55
src/api/system-boot/csDictData.ts
Normal file
@@ -0,0 +1,55 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
// 新增字典数据
|
||||||
|
export const addCsDictData = (data: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/system-boot/csDictData/add',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 查询字典数据
|
||||||
|
export const queryCsDictDataPage = (data: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/system-boot/csDictData/list',
|
||||||
|
method: 'post',
|
||||||
|
data: Object.assign(
|
||||||
|
{
|
||||||
|
orderBy: '',
|
||||||
|
pageNum: 0,
|
||||||
|
pageSize: 0,
|
||||||
|
searchBeginTime: '',
|
||||||
|
searchEndTime: '',
|
||||||
|
searchState: 0,
|
||||||
|
searchValue: '',
|
||||||
|
dataType: '',
|
||||||
|
sortBy: ''
|
||||||
|
},
|
||||||
|
data
|
||||||
|
)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//删除字典数据
|
||||||
|
export const delCsDictData = (id: string) => {
|
||||||
|
let form = new FormData()
|
||||||
|
form.append('id', id)
|
||||||
|
return request({
|
||||||
|
url: '/system-boot/csDictData/delete',
|
||||||
|
method: 'post',
|
||||||
|
data: form,
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/x-www-form-urlencoded'
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改字典数据
|
||||||
|
export const updateCsDictData = (data: any) => {
|
||||||
|
return request({
|
||||||
|
url: '/system-boot/csDictData/update',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
23
src/api/system-boot/csstatisticalset.ts
Normal file
@@ -0,0 +1,23 @@
|
|||||||
|
import createAxios from '@/utils/request'
|
||||||
|
// 查询指标
|
||||||
|
export const queryStatistical = (id:string) => {
|
||||||
|
let form = new FormData()
|
||||||
|
form.append('id', id)
|
||||||
|
return createAxios({
|
||||||
|
url: '/system-boot/csstatisticalset/queryStatistical',
|
||||||
|
method: 'post',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/x-www-form-urlencoded'
|
||||||
|
},
|
||||||
|
data: form
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 绑定指标
|
||||||
|
export const addStatistical = (params:any) => {
|
||||||
|
return createAxios({
|
||||||
|
url: '/system-boot/csstatisticalset/addStatistical',
|
||||||
|
method: 'post',
|
||||||
|
data: params
|
||||||
|
})
|
||||||
|
}
|
||||||
30
src/api/system-boot/dic.ts
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
import createAxios from '@/utils/request'
|
||||||
|
|
||||||
|
export const dicDelete = (id: string) => {
|
||||||
|
let form = new FormData()
|
||||||
|
form.append('id', id)
|
||||||
|
return createAxios({
|
||||||
|
url: '/system-boot/dic/delete',
|
||||||
|
method: 'DELETE',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/x-www-form-urlencoded'
|
||||||
|
},
|
||||||
|
data: form
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function dicAdd(data: any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/system-boot/dic/add',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function dicUpdate(data: any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/system-boot/dic/update',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
34
src/api/system-boot/dicData.ts
Normal file
@@ -0,0 +1,34 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
export function dictDataUpdate(data: any) {
|
||||||
|
return request({
|
||||||
|
url: '/system-boot/dictData/update',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function dictDataDelete(data: any) {
|
||||||
|
return request({
|
||||||
|
url: '/system-boot/dictData/delete',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function dictDataGetTypeIdData(data: any) {
|
||||||
|
return request({
|
||||||
|
url: '/system-boot/dictData/getTypeIdData',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export function dictDataAdd(data) {
|
||||||
|
return request({
|
||||||
|
url: '/system-boot/dictData/add',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
63
src/api/system-boot/dictTree.ts
Normal file
@@ -0,0 +1,63 @@
|
|||||||
|
import createAxios from '@/utils/request'
|
||||||
|
|
||||||
|
// 字典树接口
|
||||||
|
export function queryByCode(code: string) {
|
||||||
|
let form = new FormData()
|
||||||
|
form.append('code', code)
|
||||||
|
return createAxios({
|
||||||
|
url: '/system-boot/dictTree/queryByCode',
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/x-www-form-urlencoded'
|
||||||
|
},
|
||||||
|
data: form
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 字典树接口通过code
|
||||||
|
export function queryCsDictTree(pid: string) {
|
||||||
|
let form = new FormData()
|
||||||
|
form.append('pid', pid)
|
||||||
|
return createAxios({
|
||||||
|
url: '/system-boot/dictTree/query',
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/x-www-form-urlencoded'
|
||||||
|
},
|
||||||
|
data: form
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 字典树接口通过id
|
||||||
|
export function queryByid(id: string) {
|
||||||
|
let form = new FormData()
|
||||||
|
form.append('id', id)
|
||||||
|
return createAxios({
|
||||||
|
url: '/system-boot/dictTree/queryByid',
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/x-www-form-urlencoded'
|
||||||
|
},
|
||||||
|
data: form
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//新增字典树数据
|
||||||
|
export const addDictTree = (data: any) => {
|
||||||
|
return createAxios({
|
||||||
|
url: '/system-boot/dictTree/add',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 编辑统计指标配置项
|
||||||
|
export const updateStatistical = (data) => {
|
||||||
|
return createAxios({
|
||||||
|
url: '/system-boot/dic/update',
|
||||||
|
method: 'PUT',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
33
src/api/system-boot/dictType.ts
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
|
||||||
|
export function dictTypeList(data: any) {
|
||||||
|
return request({
|
||||||
|
url: '/system-boot/dictType/list',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function dictTypeUpdate(data: any) {
|
||||||
|
return request({
|
||||||
|
url: '/system-boot/dictType/update',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function dictTypeAdd(data: any) {
|
||||||
|
return request({
|
||||||
|
url: '/system-boot/dictType/add',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function dictTypeDelete(data: any) {
|
||||||
|
return request({
|
||||||
|
url: '/system-boot/dictType/delete',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
26
src/api/systerm.ts
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
import createAxios from '@/utils/request'
|
||||||
|
|
||||||
|
// 菜单修改
|
||||||
|
export function updateMenu(params: anyObj) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/user-boot/function/update',
|
||||||
|
method: 'PUT',
|
||||||
|
data: params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function addMenu(params: anyObj) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/user-boot/function/add',
|
||||||
|
method: 'POST',
|
||||||
|
data: params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function delMenu(id: string) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/user-boot/function/delete?id=' + id,
|
||||||
|
method: 'delete'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
42
src/api/user-boot/function.ts
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
import createAxios from '@/utils/request'
|
||||||
|
|
||||||
|
export const functionTree = () => {
|
||||||
|
return createAxios({
|
||||||
|
url: '/user-boot/function/functionTree'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 新增菜单接口
|
||||||
|
export function add(data: anyObj) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/user-boot/function/add',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 修改菜单接口
|
||||||
|
export function update(data: anyObj) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/user-boot/function/update',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 删除菜单接口
|
||||||
|
export function deleteMenu(id: string) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/user-boot/function/delete?id=' + id,
|
||||||
|
method: 'delete',
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 更新角色菜单
|
||||||
|
export function updateRoleMenu(data:any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/user-boot/function/assignFunctionByRoleIndexes',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
8
src/api/user-boot/referralCode.ts
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
import createAxios from '@/utils/request'
|
||||||
|
|
||||||
|
export const refreshReferralCode = () => {
|
||||||
|
return createAxios({
|
||||||
|
url: '/user-boot/referralCode/refreshReferralCode',
|
||||||
|
method: 'post',
|
||||||
|
})
|
||||||
|
}
|
||||||
33
src/api/user-boot/role.ts
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
import createAxios from '@/utils/request'
|
||||||
|
|
||||||
|
export function add(data: any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/user-boot/role/add',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function update(data: any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/user-boot/role/update',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function del(data: any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/user-boot/role/delete',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
export function roleList(id: number) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/user-boot/role/selectRoleDetail?id=' + id,
|
||||||
|
method: 'post'
|
||||||
|
})
|
||||||
|
}
|
||||||
21
src/api/user-boot/roleFuction.ts
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
import createAxios from '@/utils/request'
|
||||||
|
|
||||||
|
export function getFunctionsByRoleIndex(data) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/user-boot/roleFunction/getFunctionsByRoleIndex',
|
||||||
|
method: 'post',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function updateRoleMenu(data:any) {
|
||||||
|
return createAxios({
|
||||||
|
url: '/user-boot/function/assignFunctionByRoleIndexes',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
// params: roleIndex,functionIndexList
|
||||||
|
// data:{
|
||||||
|
// roleIndex,functionIndexList
|
||||||
|
// }
|
||||||
|
})
|
||||||
|
}
|
||||||
142
src/api/user-boot/user.ts
Normal file
@@ -0,0 +1,142 @@
|
|||||||
|
import request from '@/utils/request'
|
||||||
|
import { LoginData } from '@/api/types'
|
||||||
|
import { useAdminInfo } from '@/stores/adminInfo'
|
||||||
|
import { sm3Digest } from '@/assets/commjs/sm3.js'
|
||||||
|
import { sm2, encrypt } from '@/assets/commjs/sm2.js'
|
||||||
|
|
||||||
|
// 获取公钥
|
||||||
|
export function gongkey(params?: any) {
|
||||||
|
if (!params) {
|
||||||
|
const adminInfo = useAdminInfo()
|
||||||
|
params = {
|
||||||
|
loginName: encrypt(adminInfo.$state.loginName)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return request({
|
||||||
|
url: '/user-boot/user/generateSm2Key',
|
||||||
|
method: 'get',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function pwdSm3(pwd: any, loginName?: string) {
|
||||||
|
let publicKey = await gongkey(
|
||||||
|
loginName
|
||||||
|
? {
|
||||||
|
loginName: encrypt(loginName)
|
||||||
|
}
|
||||||
|
: false
|
||||||
|
)
|
||||||
|
let sm3Pwd = sm3Digest(pwd) //SM3加密
|
||||||
|
return sm2(sm3Pwd + '|' + pwd, publicKey.data, 0)
|
||||||
|
}
|
||||||
|
|
||||||
|
//登录获取token
|
||||||
|
export async function login(params: any) {
|
||||||
|
params.password = await pwdSm3(params.password, params.username)
|
||||||
|
params.username = encrypt(params.username)
|
||||||
|
return request({
|
||||||
|
url: '/pqs-auth/oauth/token',
|
||||||
|
method: 'post',
|
||||||
|
params
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
//获取用户信息
|
||||||
|
export function getUserById() {
|
||||||
|
const adminInfo = useAdminInfo()
|
||||||
|
return request({
|
||||||
|
url: '/user-boot/user/getUserById?id=' + adminInfo.userIndex,
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// 刷新token
|
||||||
|
export function refreshToken(): Promise<any> {
|
||||||
|
const adminInfo = useAdminInfo()
|
||||||
|
return login({
|
||||||
|
grant_type: 'refresh_token',
|
||||||
|
refresh_token: adminInfo.refresh_token,
|
||||||
|
username: adminInfo.loginName
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取营销用户列表
|
||||||
|
* @returns {AxiosPromise}
|
||||||
|
*/
|
||||||
|
export const getMarketList = () => {
|
||||||
|
return request({
|
||||||
|
url: '/user-boot/user/getMarketList',
|
||||||
|
method: 'post'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function add(data: any) {
|
||||||
|
return request({
|
||||||
|
url: '/user-boot/user/add',
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function edit(data: any) {
|
||||||
|
return request({
|
||||||
|
url: '/user-boot/user/update',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function passwordConfirm(pwd: string) {
|
||||||
|
return request({
|
||||||
|
url: '/user-boot/user/passwordConfirm?password=' + (await pwdSm3(pwd)),
|
||||||
|
method: 'get'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function deluser(data: any) {
|
||||||
|
return request({
|
||||||
|
url: '/user-boot/user/delete',
|
||||||
|
method: 'delete',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function activateUser(data: any) {
|
||||||
|
return request({
|
||||||
|
url: '/user-boot/user/activateUser',
|
||||||
|
method: 'put',
|
||||||
|
params: data
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function updatePassword(params: any) {
|
||||||
|
return request({
|
||||||
|
url: '/user-boot/user/updatePassword',
|
||||||
|
method: 'put',
|
||||||
|
params: {
|
||||||
|
id: params.id,
|
||||||
|
newPassword: await pwdSm3(params.newPassword)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function updateFirstPassword(params: any) {
|
||||||
|
return request({
|
||||||
|
url: '/user-boot/user/updateFirstPassword',
|
||||||
|
method: 'put',
|
||||||
|
data: {
|
||||||
|
name: encrypt(params.name),
|
||||||
|
password: await pwdSm3(params.password, params.name)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
export function checkUser(data: any) {
|
||||||
|
return request({
|
||||||
|
url: '/user-boot/user/check',
|
||||||
|
method: 'put',
|
||||||
|
data: data
|
||||||
|
})
|
||||||
|
}
|
||||||
BIN
src/assets/avatar.png
Normal file
|
After Width: | Height: | Size: 424 B |
BIN
src/assets/bg.jpg
Normal file
|
After Width: | Height: | Size: 4.1 KiB |
3734
src/assets/commjs/sm2.js
Normal file
257
src/assets/commjs/sm3.js
Normal file
@@ -0,0 +1,257 @@
|
|||||||
|
/**
|
||||||
|
* 国密摘要算法(SM3)
|
||||||
|
* @param str:raw string
|
||||||
|
* @return the 256-bit hex string produced by SM3 from a raw string
|
||||||
|
*/
|
||||||
|
function sm3Digest(str) {
|
||||||
|
//1. 转换为二进制数组
|
||||||
|
var binArr = str2bin(str2rstr_utf8(str));
|
||||||
|
//2. 填充
|
||||||
|
var groupNum = alignSM3(binArr, str.length);
|
||||||
|
//3. 迭代压缩
|
||||||
|
var v = new Array(8);//初始值
|
||||||
|
v[0] = 0x7380166f;
|
||||||
|
v[1] = 0x4914b2b9;
|
||||||
|
v[2] = 0x172442d7;
|
||||||
|
v[3] = 0xda8a0600;
|
||||||
|
v[4] = 0xa96f30bc;
|
||||||
|
v[5] = 0x163138aa;
|
||||||
|
v[6] = 0xe38dee4d;
|
||||||
|
v[7] = 0xb0fb0e4e;
|
||||||
|
//按 512bit 分组进行压缩
|
||||||
|
for (var i = 0; i < groupNum; i++) {
|
||||||
|
v = compress(v, binArr, i);
|
||||||
|
}
|
||||||
|
return word2str(v, '');
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将数组转换为字符串。数组长度不定,每个元素为 32bit 的数字。
|
||||||
|
* @param words:数组,每个元素为 32bit 的数字
|
||||||
|
* @param seperator:在每个数组元素转换得到的字符串之间的分隔符
|
||||||
|
*/
|
||||||
|
function word2str(words, seperator) {
|
||||||
|
var prefix = Array(8).join('0');
|
||||||
|
for (var i = 0; i < words.length; i++) {
|
||||||
|
//若 hex 不足 8 位,则高位补 0
|
||||||
|
words[i] = (prefix + (words[i] >>> 0).toString(16)).slice(-8);
|
||||||
|
}
|
||||||
|
|
||||||
|
return words.join(seperator);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将字符串转换为二进制数组,默认字符串编码为 UTF-8,且范围在 0x00~0xFF 内。
|
||||||
|
* 若某些字符的编码超过此范围,则会只保留最低字节。加密可正常进行,但加密结果有误。
|
||||||
|
* 每个数组元素包含 4 个字符,即 32 bit。
|
||||||
|
* @param 字符串
|
||||||
|
* @return 数组,长度为(字符串长度 / 4),每个元素为 32bit 的数字
|
||||||
|
*/
|
||||||
|
function str2bin(str) {
|
||||||
|
var binary = new Array(str.length >> 2);
|
||||||
|
for (var i = 0; i < str.length * 8; i += 8) {
|
||||||
|
binary[i >> 5] |= (str.charCodeAt(i / 8) & 0xFF) << (24 - i % 32);
|
||||||
|
}
|
||||||
|
return binary;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 对明文的二进制串进行填充
|
||||||
|
* <pre>
|
||||||
|
* | 满足 mod 512 = 448 | 固定 64 位 |
|
||||||
|
* | 明文二进制 |填充部分|明文二进制串的长度的二进制表示|
|
||||||
|
* xxxxxxxxxxxx 10.....0 0...........................xx
|
||||||
|
* </pre>
|
||||||
|
* @param arr:数组,每个元素为 32bit 的数字
|
||||||
|
* @param strLen:明文字符串长度
|
||||||
|
* @return 数组,每个元素为 32bit 的数字,数组长度为 16 的倍数(包括 16)
|
||||||
|
*/
|
||||||
|
function alignSM3(arr, strLen) {
|
||||||
|
//在明文二进制串后面拼接 1000 0000
|
||||||
|
arr[strLen >> 2] |= 0x80 << (24 - strLen % 4 * 8);
|
||||||
|
var groupNum = ((strLen + 8) >> 6) + 1;//以 512bit 为一组,总的组数
|
||||||
|
var wordNum = groupNum * 16;//一个 word 32bit,总的 word 数
|
||||||
|
|
||||||
|
for (var i = (strLen >> 2) + 1; i < wordNum; i++) {
|
||||||
|
arr[i] = 0;
|
||||||
|
}
|
||||||
|
arr[wordNum - 1] = strLen * 8;//在末尾填上明文的二进制长度
|
||||||
|
|
||||||
|
return groupNum;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 压缩函数中的置换函数
|
||||||
|
*/
|
||||||
|
function p0(x) {
|
||||||
|
return x ^ bitRol(x, 9) ^ bitRol(x, 17);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 压缩函数中的置换函数
|
||||||
|
*/
|
||||||
|
function p1(x) {
|
||||||
|
return x ^ bitRol(x, 15) ^ bitRol(x, 23);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 循环左移
|
||||||
|
*/
|
||||||
|
function bitRol(input, n) {
|
||||||
|
return (input << n) | (input >>> (32 - n));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 压缩函数
|
||||||
|
*/
|
||||||
|
function compress(v, binArr, i) {
|
||||||
|
//将消息分组扩展成 132 个字
|
||||||
|
var w1 = new Array(68);
|
||||||
|
var w2 = new Array(64);
|
||||||
|
for (var j = 0; j < 68; j++) {
|
||||||
|
if (j < 16) {
|
||||||
|
w1[j] = binArr[i * 16 + j];
|
||||||
|
} else {
|
||||||
|
w1[j] = p1(w1[j-16] ^ w1[j-9] ^ bitRol(w1[j-3], 15)) ^ bitRol(w1[j-13], 7) ^ w1[j-6];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (var j = 0; j < 64; j++) {
|
||||||
|
w2[j] = w1[j] ^ w1[j+4];
|
||||||
|
}
|
||||||
|
|
||||||
|
//压缩
|
||||||
|
var a = v[0];
|
||||||
|
var b = v[1];
|
||||||
|
var c = v[2];
|
||||||
|
var d = v[3];
|
||||||
|
var e = v[4];
|
||||||
|
var f = v[5];
|
||||||
|
var g = v[6];
|
||||||
|
var h = v[7];
|
||||||
|
var ss1;
|
||||||
|
var ss2;
|
||||||
|
var tt1;
|
||||||
|
var tt2;
|
||||||
|
for (var j = 0; j < 64; j++) {
|
||||||
|
ss1 = bitRol(addAll(bitRol(a, 12) , e , bitRol(t(j), j)), 7);
|
||||||
|
ss2 = ss1 ^ bitRol(a, 12);
|
||||||
|
tt1 = addAll(ff(a, b, c, j) , d , ss2 , w2[j]);
|
||||||
|
tt2 = addAll(gg(e, f, g, j) , h , ss1 , w1[j]);
|
||||||
|
d = c;
|
||||||
|
c = bitRol(b, 9);
|
||||||
|
b = a;
|
||||||
|
a = tt1;
|
||||||
|
h = g;
|
||||||
|
g = bitRol(f, 19);
|
||||||
|
f = e;
|
||||||
|
e = p0(tt2);
|
||||||
|
}
|
||||||
|
v[0] ^= a;
|
||||||
|
v[1] ^= b;
|
||||||
|
v[2] ^= c;
|
||||||
|
v[3] ^= d;
|
||||||
|
v[4] ^= e;
|
||||||
|
v[5] ^= f;
|
||||||
|
v[6] ^= g;
|
||||||
|
v[7] ^= h;
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 常量 T 随 j 的不同而不同
|
||||||
|
*/
|
||||||
|
function t(j) {
|
||||||
|
if (0 <= j && j < 16) {
|
||||||
|
return 0x79CC4519;
|
||||||
|
} else if (j < 64) {
|
||||||
|
return 0x7A879D8A;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 布尔函数,随 j 的变化取不同的表达式
|
||||||
|
*/
|
||||||
|
function ff(x, y, z, j) {
|
||||||
|
if (0 <= j && j < 16) {
|
||||||
|
return x ^ y ^ z;
|
||||||
|
} else if (j < 64) {
|
||||||
|
return (x & y) | (x & z) | (y & z);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 布尔函数,随 j 的变化取不同的表达式
|
||||||
|
*/
|
||||||
|
function gg(x, y, z, j) {
|
||||||
|
if (0 <= j && j < 16) {
|
||||||
|
return x ^ y ^ z;
|
||||||
|
} else if (j < 64) {
|
||||||
|
return (x & y) | (~x & z);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 两数相加
|
||||||
|
* 避免某些 js 引擎的 32 位加法的 bug
|
||||||
|
*/
|
||||||
|
function safe_add(x, y) {
|
||||||
|
var lsw = ( x & 0xFFFF ) + (y & 0xFFFF);
|
||||||
|
var msw = ( x >> 16 ) + (y >> 16) + (lsw >> 16);
|
||||||
|
return (msw << 16) | ( lsw & 0xFFFF );
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将所有参数相加
|
||||||
|
*/
|
||||||
|
function addAll() {
|
||||||
|
var sum = 0;
|
||||||
|
for (var i = 0; i < arguments.length; i++) {
|
||||||
|
sum = safe_add(sum, arguments[i]);
|
||||||
|
}
|
||||||
|
return sum;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* UTF-16 --> UTF-8
|
||||||
|
*/
|
||||||
|
function str2rstr_utf8(input) {
|
||||||
|
var output = "" ;
|
||||||
|
var i = -1 ;
|
||||||
|
var x, y ;
|
||||||
|
|
||||||
|
while(++ i < input.length) {
|
||||||
|
//按 UTF-16 解码
|
||||||
|
x = input.charCodeAt(i);
|
||||||
|
y = i + 1 < input.length ? input .charCodeAt (i + 1) : 0 ;
|
||||||
|
if( 0xD800 <= x && x <= 0xDBFF && 0xDC00 <= y && y <= 0xDFFF ) {
|
||||||
|
x = 0x10000 + ((x & 0x03FF) << 10 ) + (y & 0x03FF);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
//按 UTF-8 编码
|
||||||
|
if( x <= 0x7F ) {
|
||||||
|
output += String.fromCharCode(x);
|
||||||
|
}
|
||||||
|
else if(x <= 0x7FF) {
|
||||||
|
output += String.fromCharCode(
|
||||||
|
0xC0 | ((x >>> 6 ) & 0x1F),
|
||||||
|
0x80 | ( x & 0x3F ));
|
||||||
|
} else if(x <= 0xFFFF) {
|
||||||
|
output += String.fromCharCode(
|
||||||
|
0xE0 | ((x >>> 12) & 0x0F ),
|
||||||
|
0x80 | ((x >>> 6 ) & 0x3F),
|
||||||
|
0x80 | ( x & 0x3F ));
|
||||||
|
} else if(x <= 0x1FFFFF) {
|
||||||
|
output += String.fromCharCode(
|
||||||
|
0xF0 | ((x >>> 18) & 0x07 ),
|
||||||
|
0x80 | ((x >>> 12) & 0x3F),
|
||||||
|
0x80 | ((x >>> 6 ) & 0x3F),
|
||||||
|
0x80 | ( x & 0x3F ));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return output;
|
||||||
|
}
|
||||||
|
export {
|
||||||
|
sm3Digest
|
||||||
|
}
|
||||||
|
|
||||||
539
src/assets/font/demo.css
Normal file
@@ -0,0 +1,539 @@
|
|||||||
|
/* Logo 字体 */
|
||||||
|
@font-face {
|
||||||
|
font-family: "iconfont logo";
|
||||||
|
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834');
|
||||||
|
src: url('https://at.alicdn.com/t/font_985780_km7mi63cihi.eot?t=1545807318834#iefix') format('embedded-opentype'),
|
||||||
|
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.woff?t=1545807318834') format('woff'),
|
||||||
|
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.ttf?t=1545807318834') format('truetype'),
|
||||||
|
url('https://at.alicdn.com/t/font_985780_km7mi63cihi.svg?t=1545807318834#iconfont') format('svg');
|
||||||
|
}
|
||||||
|
|
||||||
|
.logo {
|
||||||
|
font-family: "iconfont logo";
|
||||||
|
font-size: 160px;
|
||||||
|
font-style: normal;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* tabs */
|
||||||
|
.nav-tabs {
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.nav-tabs .nav-more {
|
||||||
|
position: absolute;
|
||||||
|
right: 0;
|
||||||
|
bottom: 0;
|
||||||
|
height: 42px;
|
||||||
|
line-height: 42px;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tabs {
|
||||||
|
border-bottom: 1px solid #eee;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tabs li {
|
||||||
|
cursor: pointer;
|
||||||
|
width: 100px;
|
||||||
|
height: 40px;
|
||||||
|
line-height: 40px;
|
||||||
|
text-align: center;
|
||||||
|
font-size: 16px;
|
||||||
|
border-bottom: 2px solid transparent;
|
||||||
|
position: relative;
|
||||||
|
z-index: 1;
|
||||||
|
margin-bottom: -1px;
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#tabs .active {
|
||||||
|
border-bottom-color: #f00;
|
||||||
|
color: #222;
|
||||||
|
}
|
||||||
|
|
||||||
|
.tab-container .content {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 页面布局 */
|
||||||
|
.main {
|
||||||
|
padding: 30px 100px;
|
||||||
|
width: 960px;
|
||||||
|
margin: 0 auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.main .logo {
|
||||||
|
color: #333;
|
||||||
|
text-align: left;
|
||||||
|
margin-bottom: 30px;
|
||||||
|
line-height: 1;
|
||||||
|
height: 110px;
|
||||||
|
margin-top: -50px;
|
||||||
|
overflow: hidden;
|
||||||
|
*zoom: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.main .logo a {
|
||||||
|
font-size: 160px;
|
||||||
|
color: #333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.helps {
|
||||||
|
margin-top: 40px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.helps pre {
|
||||||
|
padding: 20px;
|
||||||
|
margin: 10px 0;
|
||||||
|
border: solid 1px #e7e1cd;
|
||||||
|
background-color: #fffdef;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon_lists {
|
||||||
|
width: 100% !important;
|
||||||
|
overflow: hidden;
|
||||||
|
*zoom: 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon_lists li {
|
||||||
|
width: 100px;
|
||||||
|
margin-bottom: 10px;
|
||||||
|
margin-right: 20px;
|
||||||
|
text-align: center;
|
||||||
|
list-style: none !important;
|
||||||
|
cursor: default;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon_lists li .code-name {
|
||||||
|
line-height: 1.2;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon_lists .icon {
|
||||||
|
display: block;
|
||||||
|
height: 100px;
|
||||||
|
line-height: 100px;
|
||||||
|
font-size: 42px;
|
||||||
|
margin: 10px auto;
|
||||||
|
color: #333;
|
||||||
|
-webkit-transition: font-size 0.25s linear, width 0.25s linear;
|
||||||
|
-moz-transition: font-size 0.25s linear, width 0.25s linear;
|
||||||
|
transition: font-size 0.25s linear, width 0.25s linear;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon_lists .icon:hover {
|
||||||
|
font-size: 100px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon_lists .svg-icon {
|
||||||
|
/* 通过设置 font-size 来改变图标大小 */
|
||||||
|
width: 1em;
|
||||||
|
/* 图标和文字相邻时,垂直对齐 */
|
||||||
|
vertical-align: -0.15em;
|
||||||
|
/* 通过设置 color 来改变 SVG 的颜色/fill */
|
||||||
|
fill: currentColor;
|
||||||
|
/* path 和 stroke 溢出 viewBox 部分在 IE 下会显示
|
||||||
|
normalize.css 中也包含这行 */
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon_lists li .name,
|
||||||
|
.icon_lists li .code-name {
|
||||||
|
color: #666;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* markdown 样式 */
|
||||||
|
.markdown {
|
||||||
|
color: #666;
|
||||||
|
font-size: 14px;
|
||||||
|
line-height: 1.8;
|
||||||
|
}
|
||||||
|
|
||||||
|
.highlight {
|
||||||
|
line-height: 1.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown img {
|
||||||
|
vertical-align: middle;
|
||||||
|
max-width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown h1 {
|
||||||
|
color: #404040;
|
||||||
|
font-weight: 500;
|
||||||
|
line-height: 40px;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown h2,
|
||||||
|
.markdown h3,
|
||||||
|
.markdown h4,
|
||||||
|
.markdown h5,
|
||||||
|
.markdown h6 {
|
||||||
|
color: #404040;
|
||||||
|
margin: 1.6em 0 0.6em 0;
|
||||||
|
font-weight: 500;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown h1 {
|
||||||
|
font-size: 28px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown h2 {
|
||||||
|
font-size: 22px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown h3 {
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown h4 {
|
||||||
|
font-size: 14px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown h5 {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown h6 {
|
||||||
|
font-size: 12px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown hr {
|
||||||
|
height: 1px;
|
||||||
|
border: 0;
|
||||||
|
background: #e9e9e9;
|
||||||
|
margin: 16px 0;
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown p {
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown>p,
|
||||||
|
.markdown>blockquote,
|
||||||
|
.markdown>.highlight,
|
||||||
|
.markdown>ol,
|
||||||
|
.markdown>ul {
|
||||||
|
width: 80%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown ul>li {
|
||||||
|
list-style: circle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown>ul li,
|
||||||
|
.markdown blockquote ul>li {
|
||||||
|
margin-left: 20px;
|
||||||
|
padding-left: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown>ul li p,
|
||||||
|
.markdown>ol li p {
|
||||||
|
margin: 0.6em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown ol>li {
|
||||||
|
list-style: decimal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown>ol li,
|
||||||
|
.markdown blockquote ol>li {
|
||||||
|
margin-left: 20px;
|
||||||
|
padding-left: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown code {
|
||||||
|
margin: 0 3px;
|
||||||
|
padding: 0 5px;
|
||||||
|
background: #eee;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown strong,
|
||||||
|
.markdown b {
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown>table {
|
||||||
|
border-collapse: collapse;
|
||||||
|
border-spacing: 0px;
|
||||||
|
empty-cells: show;
|
||||||
|
border: 1px solid #e9e9e9;
|
||||||
|
width: 95%;
|
||||||
|
margin-bottom: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown>table th {
|
||||||
|
white-space: nowrap;
|
||||||
|
color: #333;
|
||||||
|
font-weight: 600;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown>table th,
|
||||||
|
.markdown>table td {
|
||||||
|
border: 1px solid #e9e9e9;
|
||||||
|
padding: 8px 16px;
|
||||||
|
text-align: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown>table th {
|
||||||
|
background: #F7F7F7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown blockquote {
|
||||||
|
font-size: 90%;
|
||||||
|
color: #999;
|
||||||
|
border-left: 4px solid #e9e9e9;
|
||||||
|
padding-left: 0.8em;
|
||||||
|
margin: 1em 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown blockquote p {
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown .anchor {
|
||||||
|
opacity: 0;
|
||||||
|
transition: opacity 0.3s ease;
|
||||||
|
margin-left: 8px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown .waiting {
|
||||||
|
color: #ccc;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown h1:hover .anchor,
|
||||||
|
.markdown h2:hover .anchor,
|
||||||
|
.markdown h3:hover .anchor,
|
||||||
|
.markdown h4:hover .anchor,
|
||||||
|
.markdown h5:hover .anchor,
|
||||||
|
.markdown h6:hover .anchor {
|
||||||
|
opacity: 1;
|
||||||
|
display: inline-block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.markdown>br,
|
||||||
|
.markdown>p>br {
|
||||||
|
clear: both;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
.hljs {
|
||||||
|
display: block;
|
||||||
|
background: white;
|
||||||
|
padding: 0.5em;
|
||||||
|
color: #333333;
|
||||||
|
overflow-x: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-comment,
|
||||||
|
.hljs-meta {
|
||||||
|
color: #969896;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-string,
|
||||||
|
.hljs-variable,
|
||||||
|
.hljs-template-variable,
|
||||||
|
.hljs-strong,
|
||||||
|
.hljs-emphasis,
|
||||||
|
.hljs-quote {
|
||||||
|
color: #df5000;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-keyword,
|
||||||
|
.hljs-selector-tag,
|
||||||
|
.hljs-type {
|
||||||
|
color: #a71d5d;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-literal,
|
||||||
|
.hljs-symbol,
|
||||||
|
.hljs-bullet,
|
||||||
|
.hljs-attribute {
|
||||||
|
color: #0086b3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-section,
|
||||||
|
.hljs-name {
|
||||||
|
color: #63a35c;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-tag {
|
||||||
|
color: #333333;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-title,
|
||||||
|
.hljs-attr,
|
||||||
|
.hljs-selector-id,
|
||||||
|
.hljs-selector-class,
|
||||||
|
.hljs-selector-attr,
|
||||||
|
.hljs-selector-pseudo {
|
||||||
|
color: #795da3;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-addition {
|
||||||
|
color: #55a532;
|
||||||
|
background-color: #eaffea;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-deletion {
|
||||||
|
color: #bd2c00;
|
||||||
|
background-color: #ffecec;
|
||||||
|
}
|
||||||
|
|
||||||
|
.hljs-link {
|
||||||
|
text-decoration: underline;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* 代码高亮 */
|
||||||
|
/* PrismJS 1.15.0
|
||||||
|
https://prismjs.com/download.html#themes=prism&languages=markup+css+clike+javascript */
|
||||||
|
/**
|
||||||
|
* prism.js default theme for JavaScript, CSS and HTML
|
||||||
|
* Based on dabblet (http://dabblet.com)
|
||||||
|
* @author Lea Verou
|
||||||
|
*/
|
||||||
|
code[class*="language-"],
|
||||||
|
pre[class*="language-"] {
|
||||||
|
color: black;
|
||||||
|
background: none;
|
||||||
|
text-shadow: 0 1px white;
|
||||||
|
font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
|
||||||
|
text-align: left;
|
||||||
|
white-space: pre;
|
||||||
|
word-spacing: normal;
|
||||||
|
word-break: normal;
|
||||||
|
word-wrap: normal;
|
||||||
|
line-height: 1.5;
|
||||||
|
|
||||||
|
-moz-tab-size: 4;
|
||||||
|
-o-tab-size: 4;
|
||||||
|
tab-size: 4;
|
||||||
|
|
||||||
|
-webkit-hyphens: none;
|
||||||
|
-moz-hyphens: none;
|
||||||
|
-ms-hyphens: none;
|
||||||
|
hyphens: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre[class*="language-"]::-moz-selection,
|
||||||
|
pre[class*="language-"] ::-moz-selection,
|
||||||
|
code[class*="language-"]::-moz-selection,
|
||||||
|
code[class*="language-"] ::-moz-selection {
|
||||||
|
text-shadow: none;
|
||||||
|
background: #b3d4fc;
|
||||||
|
}
|
||||||
|
|
||||||
|
pre[class*="language-"]::selection,
|
||||||
|
pre[class*="language-"] ::selection,
|
||||||
|
code[class*="language-"]::selection,
|
||||||
|
code[class*="language-"] ::selection {
|
||||||
|
text-shadow: none;
|
||||||
|
background: #b3d4fc;
|
||||||
|
}
|
||||||
|
|
||||||
|
@media print {
|
||||||
|
|
||||||
|
code[class*="language-"],
|
||||||
|
pre[class*="language-"] {
|
||||||
|
text-shadow: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Code blocks */
|
||||||
|
pre[class*="language-"] {
|
||||||
|
padding: 1em;
|
||||||
|
margin: .5em 0;
|
||||||
|
overflow: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
:not(pre)>code[class*="language-"],
|
||||||
|
pre[class*="language-"] {
|
||||||
|
background: #f5f2f0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Inline code */
|
||||||
|
:not(pre)>code[class*="language-"] {
|
||||||
|
padding: .1em;
|
||||||
|
border-radius: .3em;
|
||||||
|
white-space: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.comment,
|
||||||
|
.token.prolog,
|
||||||
|
.token.doctype,
|
||||||
|
.token.cdata {
|
||||||
|
color: slategray;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.punctuation {
|
||||||
|
color: #999;
|
||||||
|
}
|
||||||
|
|
||||||
|
.namespace {
|
||||||
|
opacity: .7;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.property,
|
||||||
|
.token.tag,
|
||||||
|
.token.boolean,
|
||||||
|
.token.number,
|
||||||
|
.token.constant,
|
||||||
|
.token.symbol,
|
||||||
|
.token.deleted {
|
||||||
|
color: #905;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.selector,
|
||||||
|
.token.attr-name,
|
||||||
|
.token.string,
|
||||||
|
.token.char,
|
||||||
|
.token.builtin,
|
||||||
|
.token.inserted {
|
||||||
|
color: #690;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.operator,
|
||||||
|
.token.entity,
|
||||||
|
.token.url,
|
||||||
|
.language-css .token.string,
|
||||||
|
.style .token.string {
|
||||||
|
color: #9a6e3a;
|
||||||
|
background: hsla(0, 0%, 100%, .5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.atrule,
|
||||||
|
.token.attr-value,
|
||||||
|
.token.keyword {
|
||||||
|
color: #07a;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.function,
|
||||||
|
.token.class-name {
|
||||||
|
color: #DD4A68;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.regex,
|
||||||
|
.token.important,
|
||||||
|
.token.variable {
|
||||||
|
color: #e90;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.important,
|
||||||
|
.token.bold {
|
||||||
|
font-weight: bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.italic {
|
||||||
|
font-style: italic;
|
||||||
|
}
|
||||||
|
|
||||||
|
.token.entity {
|
||||||
|
cursor: help;
|
||||||
|
}
|
||||||
280
src/assets/font/demo_index.html
Normal file
@@ -0,0 +1,280 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8"/>
|
||||||
|
<title>iconfont Demo</title>
|
||||||
|
<link rel="shortcut icon" href="//img.alicdn.com/imgextra/i4/O1CN01Z5paLz1O0zuCC7osS_!!6000000001644-55-tps-83-82.svg" type="image/x-icon"/>
|
||||||
|
<link rel="icon" type="image/svg+xml" href="//img.alicdn.com/imgextra/i4/O1CN01Z5paLz1O0zuCC7osS_!!6000000001644-55-tps-83-82.svg"/>
|
||||||
|
<link rel="stylesheet" href="https://g.alicdn.com/thx/cube/1.3.2/cube.min.css">
|
||||||
|
<link rel="stylesheet" href="demo.css">
|
||||||
|
<link rel="stylesheet" href="iconfont.css">
|
||||||
|
<script src="iconfont.js"></script>
|
||||||
|
<!-- jQuery -->
|
||||||
|
<script src="https://a1.alicdn.com/oss/uploads/2018/12/26/7bfddb60-08e8-11e9-9b04-53e73bb6408b.js"></script>
|
||||||
|
<!-- 代码高亮 -->
|
||||||
|
<script src="https://a1.alicdn.com/oss/uploads/2018/12/26/a3f714d0-08e6-11e9-8a15-ebf944d7534c.js"></script>
|
||||||
|
<style>
|
||||||
|
.main .logo {
|
||||||
|
margin-top: 0;
|
||||||
|
height: auto;
|
||||||
|
}
|
||||||
|
|
||||||
|
.main .logo a {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
}
|
||||||
|
|
||||||
|
.main .logo .sub-title {
|
||||||
|
margin-left: 0.5em;
|
||||||
|
font-size: 22px;
|
||||||
|
color: #fff;
|
||||||
|
background: linear-gradient(-45deg, #3967FF, #B500FE);
|
||||||
|
-webkit-background-clip: text;
|
||||||
|
-webkit-text-fill-color: transparent;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div class="main">
|
||||||
|
<h1 class="logo"><a href="https://www.iconfont.cn/" title="iconfont 首页" target="_blank">
|
||||||
|
<img width="200" src="https://img.alicdn.com/imgextra/i3/O1CN01Mn65HV1FfSEzR6DKv_!!6000000000514-55-tps-228-59.svg">
|
||||||
|
|
||||||
|
</a></h1>
|
||||||
|
<div class="nav-tabs">
|
||||||
|
<ul id="tabs" class="dib-box">
|
||||||
|
<li class="dib active"><span>Unicode</span></li>
|
||||||
|
<li class="dib"><span>Font class</span></li>
|
||||||
|
<li class="dib"><span>Symbol</span></li>
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<a href="https://www.iconfont.cn/manage/index?manage_type=myprojects&projectId=3482754" target="_blank" class="nav-more">查看项目</a>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
<div class="tab-container">
|
||||||
|
<div class="content unicode" style="display: block;">
|
||||||
|
<ul class="icon_lists dib-box">
|
||||||
|
|
||||||
|
<li class="dib">
|
||||||
|
<span class="icon iconfont"></span>
|
||||||
|
<div class="name">密码</div>
|
||||||
|
<div class="code-name">&#xe635;</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="dib">
|
||||||
|
<span class="icon iconfont"></span>
|
||||||
|
<div class="name">用户</div>
|
||||||
|
<div class="code-name">&#xe639;</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="dib">
|
||||||
|
<span class="icon iconfont"></span>
|
||||||
|
<div class="name">back</div>
|
||||||
|
<div class="code-name">&#xe617;</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="dib">
|
||||||
|
<span class="icon iconfont"></span>
|
||||||
|
<div class="name">platform-manage</div>
|
||||||
|
<div class="code-name">&#xe63e;</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<div class="article markdown">
|
||||||
|
<h2 id="unicode-">Unicode 引用</h2>
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<p>Unicode 是字体在网页端最原始的应用方式,特点是:</p>
|
||||||
|
<ul>
|
||||||
|
<li>支持按字体的方式去动态调整图标大小,颜色等等。</li>
|
||||||
|
<li>默认情况下不支持多色,直接添加多色图标会自动去色。</li>
|
||||||
|
</ul>
|
||||||
|
<blockquote>
|
||||||
|
<p>注意:新版 iconfont 支持两种方式引用多色图标:SVG symbol 引用方式和彩色字体图标模式。(使用彩色字体图标需要在「编辑项目」中开启「彩色」选项后并重新生成。)</p>
|
||||||
|
</blockquote>
|
||||||
|
<p>Unicode 使用步骤如下:</p>
|
||||||
|
<h3 id="-font-face">第一步:拷贝项目下面生成的 <code>@font-face</code></h3>
|
||||||
|
<pre><code class="language-css"
|
||||||
|
>@font-face {
|
||||||
|
font-family: 'iconfont';
|
||||||
|
src: url('iconfont.woff2?t=1703485952035') format('woff2'),
|
||||||
|
url('iconfont.woff?t=1703485952035') format('woff'),
|
||||||
|
url('iconfont.ttf?t=1703485952035') format('truetype');
|
||||||
|
}
|
||||||
|
</code></pre>
|
||||||
|
<h3 id="-iconfont-">第二步:定义使用 iconfont 的样式</h3>
|
||||||
|
<pre><code class="language-css"
|
||||||
|
>.iconfont {
|
||||||
|
font-family: "iconfont" !important;
|
||||||
|
font-size: 16px;
|
||||||
|
font-style: normal;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
</code></pre>
|
||||||
|
<h3 id="-">第三步:挑选相应图标并获取字体编码,应用于页面</h3>
|
||||||
|
<pre>
|
||||||
|
<code class="language-html"
|
||||||
|
><span class="iconfont">&#x33;</span>
|
||||||
|
</code></pre>
|
||||||
|
<blockquote>
|
||||||
|
<p>"iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>
|
||||||
|
</blockquote>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="content font-class">
|
||||||
|
<ul class="icon_lists dib-box">
|
||||||
|
|
||||||
|
<li class="dib">
|
||||||
|
<span class="icon iconfont icon-mima"></span>
|
||||||
|
<div class="name">
|
||||||
|
密码
|
||||||
|
</div>
|
||||||
|
<div class="code-name">.icon-mima
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="dib">
|
||||||
|
<span class="icon iconfont icon-yonghu"></span>
|
||||||
|
<div class="name">
|
||||||
|
用户
|
||||||
|
</div>
|
||||||
|
<div class="code-name">.icon-yonghu
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="dib">
|
||||||
|
<span class="icon iconfont icon-back"></span>
|
||||||
|
<div class="name">
|
||||||
|
back
|
||||||
|
</div>
|
||||||
|
<div class="code-name">.icon-back
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="dib">
|
||||||
|
<span class="icon iconfont icon-platform-manage"></span>
|
||||||
|
<div class="name">
|
||||||
|
platform-manage
|
||||||
|
</div>
|
||||||
|
<div class="code-name">.icon-platform-manage
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<div class="article markdown">
|
||||||
|
<h2 id="font-class-">font-class 引用</h2>
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<p>font-class 是 Unicode 使用方式的一种变种,主要是解决 Unicode 书写不直观,语意不明确的问题。</p>
|
||||||
|
<p>与 Unicode 使用方式相比,具有如下特点:</p>
|
||||||
|
<ul>
|
||||||
|
<li>相比于 Unicode 语意明确,书写更直观。可以很容易分辨这个 icon 是什么。</li>
|
||||||
|
<li>因为使用 class 来定义图标,所以当要替换图标时,只需要修改 class 里面的 Unicode 引用。</li>
|
||||||
|
</ul>
|
||||||
|
<p>使用步骤如下:</p>
|
||||||
|
<h3 id="-fontclass-">第一步:引入项目下面生成的 fontclass 代码:</h3>
|
||||||
|
<pre><code class="language-html"><link rel="stylesheet" href="./iconfont.css">
|
||||||
|
</code></pre>
|
||||||
|
<h3 id="-">第二步:挑选相应图标并获取类名,应用于页面:</h3>
|
||||||
|
<pre><code class="language-html"><span class="iconfont icon-xxx"></span>
|
||||||
|
</code></pre>
|
||||||
|
<blockquote>
|
||||||
|
<p>"
|
||||||
|
iconfont" 是你项目下的 font-family。可以通过编辑项目查看,默认是 "iconfont"。</p>
|
||||||
|
</blockquote>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="content symbol">
|
||||||
|
<ul class="icon_lists dib-box">
|
||||||
|
|
||||||
|
<li class="dib">
|
||||||
|
<svg class="icon svg-icon" aria-hidden="true">
|
||||||
|
<use xlink:href="#icon-mima"></use>
|
||||||
|
</svg>
|
||||||
|
<div class="name">密码</div>
|
||||||
|
<div class="code-name">#icon-mima</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="dib">
|
||||||
|
<svg class="icon svg-icon" aria-hidden="true">
|
||||||
|
<use xlink:href="#icon-yonghu"></use>
|
||||||
|
</svg>
|
||||||
|
<div class="name">用户</div>
|
||||||
|
<div class="code-name">#icon-yonghu</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="dib">
|
||||||
|
<svg class="icon svg-icon" aria-hidden="true">
|
||||||
|
<use xlink:href="#icon-back"></use>
|
||||||
|
</svg>
|
||||||
|
<div class="name">back</div>
|
||||||
|
<div class="code-name">#icon-back</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
<li class="dib">
|
||||||
|
<svg class="icon svg-icon" aria-hidden="true">
|
||||||
|
<use xlink:href="#icon-platform-manage"></use>
|
||||||
|
</svg>
|
||||||
|
<div class="name">platform-manage</div>
|
||||||
|
<div class="code-name">#icon-platform-manage</div>
|
||||||
|
</li>
|
||||||
|
|
||||||
|
</ul>
|
||||||
|
<div class="article markdown">
|
||||||
|
<h2 id="symbol-">Symbol 引用</h2>
|
||||||
|
<hr>
|
||||||
|
|
||||||
|
<p>这是一种全新的使用方式,应该说这才是未来的主流,也是平台目前推荐的用法。相关介绍可以参考这篇<a href="">文章</a>
|
||||||
|
这种用法其实是做了一个 SVG 的集合,与另外两种相比具有如下特点:</p>
|
||||||
|
<ul>
|
||||||
|
<li>支持多色图标了,不再受单色限制。</li>
|
||||||
|
<li>通过一些技巧,支持像字体那样,通过 <code>font-size</code>, <code>color</code> 来调整样式。</li>
|
||||||
|
<li>兼容性较差,支持 IE9+,及现代浏览器。</li>
|
||||||
|
<li>浏览器渲染 SVG 的性能一般,还不如 png。</li>
|
||||||
|
</ul>
|
||||||
|
<p>使用步骤如下:</p>
|
||||||
|
<h3 id="-symbol-">第一步:引入项目下面生成的 symbol 代码:</h3>
|
||||||
|
<pre><code class="language-html"><script src="./iconfont.js"></script>
|
||||||
|
</code></pre>
|
||||||
|
<h3 id="-css-">第二步:加入通用 CSS 代码(引入一次就行):</h3>
|
||||||
|
<pre><code class="language-html"><style>
|
||||||
|
.icon {
|
||||||
|
width: 1em;
|
||||||
|
height: 1em;
|
||||||
|
vertical-align: -0.15em;
|
||||||
|
fill: currentColor;
|
||||||
|
overflow: hidden;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
|
</code></pre>
|
||||||
|
<h3 id="-">第三步:挑选相应图标并获取类名,应用于页面:</h3>
|
||||||
|
<pre><code class="language-html"><svg class="icon" aria-hidden="true">
|
||||||
|
<use xlink:href="#icon-xxx"></use>
|
||||||
|
</svg>
|
||||||
|
</code></pre>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<script>
|
||||||
|
$(document).ready(function () {
|
||||||
|
$('.tab-container .content:first').show()
|
||||||
|
|
||||||
|
$('#tabs li').click(function (e) {
|
||||||
|
var tabContent = $('.tab-container .content')
|
||||||
|
var index = $(this).index()
|
||||||
|
|
||||||
|
if ($(this).hasClass('active')) {
|
||||||
|
return
|
||||||
|
} else {
|
||||||
|
$('#tabs li').removeClass('active')
|
||||||
|
$(this).addClass('active')
|
||||||
|
|
||||||
|
tabContent.hide().eq(index).fadeIn()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
})
|
||||||
|
</script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
31
src/assets/font/iconfont.css
Normal file
@@ -0,0 +1,31 @@
|
|||||||
|
@font-face {
|
||||||
|
font-family: "iconfont"; /* Project id 3482754 */
|
||||||
|
src: url('iconfont.woff2?t=1703485952035') format('woff2'),
|
||||||
|
url('iconfont.woff?t=1703485952035') format('woff'),
|
||||||
|
url('iconfont.ttf?t=1703485952035') format('truetype');
|
||||||
|
}
|
||||||
|
|
||||||
|
.iconfont {
|
||||||
|
font-family: "iconfont" !important;
|
||||||
|
font-size: 16px;
|
||||||
|
font-style: normal;
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-mima:before {
|
||||||
|
content: "\e635";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-yonghu:before {
|
||||||
|
content: "\e639";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-back:before {
|
||||||
|
content: "\e617";
|
||||||
|
}
|
||||||
|
|
||||||
|
.icon-platform-manage:before {
|
||||||
|
content: "\e63e";
|
||||||
|
}
|
||||||
|
|
||||||
1
src/assets/font/iconfont.js
Normal file
@@ -0,0 +1 @@
|
|||||||
|
window._iconfont_svg_string_3482754='<svg><symbol id="icon-mima" viewBox="0 0 1024 1024"><path d="M860.58 489.4c-0.09-47.06-29.76-88.04-72.49-101.63-16.6-5.3-33.82-6.09-51.12-5.3-7.68 0.35-12.01 0.71-11.12-10.95 2.12-28.52 2.47-57.39 1.23-86.09-4.06-94.48-70.11-174.13-163.18-198.41-88.3-23.04-182.87 15.72-233.64 93.86-40.62 62.34-35.23 130.94-31.97 201.58-11.92 0-22.69-0.26-33.38 0-56.25 1.5-101.1 46-101.37 102.16-0.53 117.88-0.62 235.75 0 353.63 0.35 57.31 44.94 104.2 101.9 104.54 165.29 1.06 330.68 0.97 495.97 0 55.01-0.35 98.9-46.71 99.16-101.89 0.45-117.15 0.36-234.33 0.01-351.5zM566.02 666.18c-8.65 6.53-11.3 12.72-11.04 22.87 0.62 25.78 0.44 51.66 0.18 77.44-0.44 29.76-17.31 47.68-43.97 47.24-25.7-0.35-41.77-18.01-42.21-46.8-0.26-15.1-0.44-30.11 0-45.21 0.8-26.23-0.09-48.39-23.75-69.58-25.52-22.95-25.96-57.83-10.95-89.88 15.54-33.03 42.91-48.39 72.4-50.51 42.12 0.44 75.76 25.34 87.33 59.96 11.47 34.51 1.06 72.48-27.99 94.47z m59.86-283.44c-37.35-0.71-74.7-0.27-112.05-0.27-38.06 0-76.2-0.79-114.26 0.35-14.84 0.45-17.75-4.68-17.22-18.1 1.06-22.96 0.09-46 0.35-68.96 0.8-71.88 57.39-128.65 128.48-129 71.17-0.35 128.65 55.8 130.15 127.68 0.53 24.46-0.71 48.92 0.35 73.29 0.54 12.88-4.23 15.18-15.8 15.01z" fill="#050101" ></path></symbol><symbol id="icon-yonghu" viewBox="0 0 1024 1024"><path d="M502.496 63.136c125.888 0 227.936 100.384 227.936 224.192 0 123.84-102.048 224.224-227.936 224.224-125.888 0-227.936-100.384-227.936-224.224C274.56 163.488 376.64 63.136 502.496 63.136L502.496 63.136zM502.496 63.136c125.888 0 227.936 100.384 227.936 224.192 0 123.84-102.048 224.224-227.936 224.224-125.888 0-227.936-100.384-227.936-224.224C274.56 163.488 376.64 63.136 502.496 63.136L502.496 63.136zM417.024 586.304l189.984 0c162.624 0 294.432 129.632 294.432 289.6l0 18.656c0 63.04-131.84 65.44-294.432 65.44l-189.984 0c-162.624 0-294.432-0.096-294.432-65.44l0-18.656C122.592 715.936 254.4 586.304 417.024 586.304L417.024 586.304zM417.024 586.304" fill="#272636" ></path></symbol><symbol id="icon-back" viewBox="0 0 1024 1024"><path d="M482.7 249.9V106.1c0-37.4-45.3-56.2-71.7-29.7L140.3 347c-16.4 16.4-16.4 43 0 59.4L410.9 677c26.5 26.5 71.7 7.7 71.7-29.7v-155c96.1-0.3 271.5-10.7 271.5 227.7 0 118.1-92.8 216.8-216 239.6 198.1-24.4 326-236 326-361.9 0.1-292.6-309.4-346.3-381.4-347.8z" fill="" ></path></symbol><symbol id="icon-platform-manage" viewBox="0 0 1024 1024"><path d="M186.561 655.343v0.047l282.35 139.201c27.067 13.355 59.018 13.355 86.086 0l282.35-139.154L944.22 708.06c9.678 4.76 15.782 14.445 15.782 25.031 0 10.586-6.104 20.27-15.782 25.03L554.997 950c-27.058 13.335-58.98 13.335-86.04 0L79.738 758.076c-9.627-4.78-15.688-14.435-15.688-24.984 0-10.55 6.061-20.205 15.687-24.985l106.825-52.764zM554.997 74.016L944.22 265.939c9.625 4.774 15.686 14.43 15.686 24.984 0 10.549-6.061 20.205-15.686 24.98L554.997 507.828c-27.058 13.336-58.98 13.336-86.04 0L79.738 315.902c-9.627-4.774-15.688-14.43-15.688-24.979 0-10.554 6.061-20.21 15.687-24.984L468.91 74.016c27.068-13.355 59.02-13.355 86.087 0z" ></path><path d="M185.891 434.654l283.067 139.529c27.058 13.335 58.981 13.335 86.04 0l283.018-139.529 106.204 52.301c9.678 4.756 15.782 14.44 15.782 25.027 0 10.59-6.104 20.275-15.782 25.03L554.997 728.936c-27.058 13.335-58.98 13.335-86.04 0L79.738 537.013c-9.65-4.766-15.735-14.436-15.735-25.008 0-10.568 6.085-20.238 15.734-25.003l106.155-52.348z" ></path></symbol></svg>',function(n){var t=(t=document.getElementsByTagName("script"))[t.length-1],e=t.getAttribute("data-injectcss"),t=t.getAttribute("data-disable-injectsvg");if(!t){var o,c,i,l,a,d=function(t,e){e.parentNode.insertBefore(t,e)};if(e&&!n.__iconfont__svg__cssinject__){n.__iconfont__svg__cssinject__=!0;try{document.write("<style>.svgfont {display: inline-block;width: 1em;height: 1em;fill: currentColor;vertical-align: -0.1em;font-size:16px;}</style>")}catch(t){console&&console.log(t)}}o=function(){var t,e=document.createElement("div");e.innerHTML=n._iconfont_svg_string_3482754,(e=e.getElementsByTagName("svg")[0])&&(e.setAttribute("aria-hidden","true"),e.style.position="absolute",e.style.width=0,e.style.height=0,e.style.overflow="hidden",e=e,(t=document.body).firstChild?d(e,t.firstChild):t.appendChild(e))},document.addEventListener?~["complete","loaded","interactive"].indexOf(document.readyState)?setTimeout(o,0):(c=function(){document.removeEventListener("DOMContentLoaded",c,!1),o()},document.addEventListener("DOMContentLoaded",c,!1)):document.attachEvent&&(i=o,l=n.document,a=!1,r(),l.onreadystatechange=function(){"complete"==l.readyState&&(l.onreadystatechange=null,s())})}function s(){a||(a=!0,i())}function r(){try{l.documentElement.doScroll("left")}catch(t){return void setTimeout(r,50)}s()}}(window);
|
||||||
37
src/assets/font/iconfont.json
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
{
|
||||||
|
"id": "3482754",
|
||||||
|
"name": "灿能——电能质量光伏全景管理系统",
|
||||||
|
"font_family": "iconfont",
|
||||||
|
"css_prefix_text": "icon-",
|
||||||
|
"description": "",
|
||||||
|
"glyphs": [
|
||||||
|
{
|
||||||
|
"icon_id": "8765228",
|
||||||
|
"name": "密码",
|
||||||
|
"font_class": "mima",
|
||||||
|
"unicode": "e635",
|
||||||
|
"unicode_decimal": 58933
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "677608",
|
||||||
|
"name": "用户",
|
||||||
|
"font_class": "yonghu",
|
||||||
|
"unicode": "e639",
|
||||||
|
"unicode_decimal": 58937
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "1471594",
|
||||||
|
"name": "back",
|
||||||
|
"font_class": "back",
|
||||||
|
"unicode": "e617",
|
||||||
|
"unicode_decimal": 58903
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"icon_id": "30132209",
|
||||||
|
"name": "platform-manage",
|
||||||
|
"font_class": "platform-manage",
|
||||||
|
"unicode": "e63e",
|
||||||
|
"unicode_decimal": 58942
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
BIN
src/assets/font/iconfont.ttf
Normal file
BIN
src/assets/font/iconfont.woff
Normal file
BIN
src/assets/font/iconfont.woff2
Normal file
BIN
src/assets/img/dw.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
src/assets/img/point.png
Normal file
|
After Width: | Height: | Size: 3.1 KiB |
BIN
src/assets/login-header.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
src/assets/login/big_bg.png
Normal file
|
After Width: | Height: | Size: 3.0 MiB |
BIN
src/assets/login/fullscreen.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
src/assets/login/jhui.png
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
src/assets/login/kt.gif
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
src/assets/login/login.png
Normal file
|
After Width: | Height: | Size: 388 KiB |
BIN
src/assets/login/login2.png
Normal file
|
After Width: | Height: | Size: 363 KiB |
BIN
src/assets/login/login3.png
Normal file
|
After Width: | Height: | Size: 529 KiB |
BIN
src/assets/login/logo.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
src/assets/login/logo1.png
Normal file
|
After Width: | Height: | Size: 21 KiB |
BIN
src/assets/login/njcn.png
Normal file
|
After Width: | Height: | Size: 4.2 KiB |
1
src/assets/map/上海.json
Normal file
26630
src/assets/map/中国.json
Normal file
5323
src/assets/map/云南.json
Normal file
26630
src/assets/map/全国.json
Normal file
1705
src/assets/map/冀北.json
Normal file
1
src/assets/map/内蒙古.json
Normal file
1
src/assets/map/北京.json
Normal file
1
src/assets/map/台湾.json
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"adcode":710000,"name":"台湾省","center":[121.509062,25.044332],"centroid":[120.971485,23.749452],"childrenNum":0,"level":"province","acroutes":[100000],"parent":{"adcode":100000}},"geometry":{"type":"MultiPolygon","coordinates":[[[[120.443558,22.441245],[120.517584,22.408536],[120.569903,22.361728],[120.640505,22.241347],[120.659209,22.15432],[120.662001,22.066983],[120.651464,22.033165],[120.667691,21.983168],[120.70157,21.927065],[120.743246,21.915569],[120.78155,21.923957],[120.85468,21.883333],[120.87291,21.897387],[120.866482,21.98436],[120.907315,22.033208],[120.904154,22.119757],[120.914955,22.302718],[120.981658,22.528305],[121.015009,22.584168],[121.033292,22.650725],[121.078498,22.669656],[121.170544,22.723133],[121.210481,22.770665],[121.237931,22.836327],[121.324708,22.945666],[121.354687,23.01006],[121.370388,23.084347],[121.409535,23.102669],[121.430294,23.137196],[121.415015,23.195973],[121.440358,23.272096],[121.479558,23.3223],[121.497788,23.419789],[121.521497,23.483198],[121.523078,23.538708],[121.587778,23.76102],[121.621604,23.92075],[121.659381,24.006893],[121.639992,24.064276],[121.643838,24.097713],[121.678085,24.133906],[121.689044,24.174401],[121.809172,24.339055],[121.826717,24.423579],[121.867498,24.478978],[121.885464,24.529677],[121.892524,24.617912],[121.862598,24.671515],[121.837993,24.76015],[121.845053,24.836269],[121.932883,24.938645],[122.012178,25.001469],[121.980776,25.03079],[121.947425,25.031955],[121.917077,25.137908],[121.842155,25.135332],[121.782407,25.160425],[121.750531,25.160716],[121.707327,25.191493],[121.700319,25.226913],[121.655324,25.241859],[121.623026,25.294694],[121.584986,25.308926],[121.535038,25.307515],[121.444415,25.270624],[121.413487,25.238912],[121.371864,25.159885],[121.319281,25.140691],[121.209322,25.127104],[121.133135,25.078728],[121.102102,25.075153],[121.024704,25.040479],[121.009688,24.993649],[120.960899,24.940227],[120.908475,24.852012],[120.892299,24.767526],[120.823753,24.688321],[120.762371,24.658335],[120.688661,24.600678],[120.64277,24.490172],[120.589187,24.432354],[120.546299,24.370413],[120.521009,24.312038],[120.470534,24.24259],[120.451461,24.182691],[120.392029,24.11824],[120.316158,23.984881],[120.278276,23.927798],[120.245768,23.840553],[120.175377,23.807385],[120.102773,23.700981],[120.094817,23.587466],[120.121741,23.504664],[120.107831,23.341264],[120.081434,23.29191],[120.018947,23.073115],[120.029537,23.048623],[120.131382,23.002118],[120.149138,22.896715],[120.200403,22.721101],[120.274272,22.560181],[120.297191,22.531315],[120.443558,22.441245]]],[[[124.542984,25.903911],[124.586346,25.913777],[124.572805,25.93974],[124.541825,25.931031],[124.542984,25.903911]]],[[[123.445286,25.725966],[123.472104,25.713024],[123.508933,25.723237],[123.514834,25.751226],[123.483063,25.768587],[123.444496,25.746514],[123.445286,25.725966]]],[[[119.64597,23.55091],[119.701081,23.550657],[119.678057,23.600041],[119.610089,23.603953],[119.594388,23.577245],[119.566306,23.584732],[119.562565,23.530377],[119.573788,23.505885],[119.609141,23.503864],[119.64597,23.55091]]],[[[123.667207,25.914066],[123.707092,25.916873],[123.678008,25.938667],[123.667207,25.914066]]],[[[119.506031,23.625567],[119.505241,23.575814],[119.472416,23.557136],[119.523207,23.563699],[119.525578,23.624895],[119.506031,23.625567]]],[[[119.49739,23.386683],[119.495125,23.350156],[119.516885,23.349903],[119.49739,23.386683]]],[[[119.557454,23.666474],[119.604083,23.616989],[119.615516,23.660925],[119.586485,23.675974],[119.557454,23.666474]]],[[[121.46823,22.676644],[121.476502,22.64166],[121.513541,22.631833],[121.5147,22.67639],[121.46823,22.676644]]],[[[121.510538,22.087185],[121.507693,22.048523],[121.534089,22.022146],[121.594522,21.995382],[121.604586,22.022699],[121.575028,22.037122],[121.575607,22.084421],[121.510538,22.087185]]],[[[122.097533,25.500168],[122.093581,25.47183],[122.124825,25.475932],[122.097533,25.500168]]],[[[119.421467,23.216684],[119.421309,23.18935],[119.453396,23.217697],[119.421467,23.216684]]],[[[120.355042,22.327259],[120.395454,22.342287],[120.383072,22.355573],[120.355042,22.327259]]]]}}]}
|
||||||
6409
src/assets/map/吉林.json
Normal file
1
src/assets/map/唐山市.json
Normal file
7270
src/assets/map/四川.json
Normal file
1
src/assets/map/天津.json
Normal file
1
src/assets/map/宁夏.json
Normal file
5474
src/assets/map/安徽.json
Normal file
7366
src/assets/map/山东.json
Normal file
2587
src/assets/map/山西.json
Normal file
8581
src/assets/map/广东.json
Normal file
1
src/assets/map/广西.json
Normal file
2150
src/assets/map/廊坊市.json
Normal file
1
src/assets/map/张家口市.json
Normal file
1
src/assets/map/承德市.json
Normal file
1
src/assets/map/新疆.json
Normal file
4186
src/assets/map/江苏.json
Normal file
5264
src/assets/map/江西.json
Normal file
2381
src/assets/map/河北.json
Normal file
6633
src/assets/map/河南.json
Normal file
5786
src/assets/map/浙江.json
Normal file
866
src/assets/map/海南.json
Normal file
@@ -0,0 +1,866 @@
|
|||||||
|
{
|
||||||
|
"type": "FeatureCollection",
|
||||||
|
"features": [{
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 460100, "name": "海口", "center": [110.33119, 20.031971], "centroid": [110.422966, 19.852113], "childrenNum": 4, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 0, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[110.106525, 20.026851],
|
||||||
|
[110.161895, 19.977693],
|
||||||
|
[110.143932, 19.889106],
|
||||||
|
[110.186246, 19.864193],
|
||||||
|
[110.228283, 19.753767],
|
||||||
|
[110.208468, 19.716679],
|
||||||
|
[110.222357, 19.67974],
|
||||||
|
[110.262449, 19.687318],
|
||||||
|
[110.314208, 19.697421],
|
||||||
|
[110.340041, 19.720625],
|
||||||
|
[110.393373, 19.698053],
|
||||||
|
[110.372633, 19.654004],
|
||||||
|
[110.401151, 19.606626],
|
||||||
|
[110.455687, 19.574559],
|
||||||
|
[110.486705, 19.593357],
|
||||||
|
[110.519297, 19.563341],
|
||||||
|
[110.540223, 19.535532],
|
||||||
|
[110.611518, 19.526841],
|
||||||
|
[110.641333, 19.549122],
|
||||||
|
[110.636148, 19.593989],
|
||||||
|
[110.672814, 19.647214],
|
||||||
|
[110.623463, 19.664109],
|
||||||
|
[110.623, 19.735461],
|
||||||
|
[110.670314, 19.812776],
|
||||||
|
[110.704665, 19.805992],
|
||||||
|
[110.699573, 19.861512],
|
||||||
|
[110.676147, 19.860092],
|
||||||
|
[110.675314, 19.907868],
|
||||||
|
[110.634666, 19.965401],
|
||||||
|
[110.598, 19.98305],
|
||||||
|
[110.526612, 20.075206],
|
||||||
|
[110.495039, 20.077253],
|
||||||
|
[110.387355, 20.11347],
|
||||||
|
[110.318467, 20.109061],
|
||||||
|
[110.293282, 20.059614],
|
||||||
|
[110.24319, 20.077568],
|
||||||
|
[110.144395, 20.074418],
|
||||||
|
[110.106525, 20.026851]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 460200, "name": "三亚", "center": [109.508268, 18.247872], "centroid": [109.421656, 18.362263], "childrenNum": 4, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 1, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[108.932374, 18.335288],
|
||||||
|
[108.956448, 18.307433],
|
||||||
|
[109.006632, 18.323032],
|
||||||
|
[109.108298, 18.323828],
|
||||||
|
[109.138668, 18.267791],
|
||||||
|
[109.174686, 18.260149],
|
||||||
|
[109.28811, 18.264925],
|
||||||
|
[109.355887, 18.214922],
|
||||||
|
[109.441349, 18.199153],
|
||||||
|
[109.4632, 18.177171],
|
||||||
|
[109.527366, 18.169046],
|
||||||
|
[109.561718, 18.143554],
|
||||||
|
[109.63792, 18.171595],
|
||||||
|
[109.72616, 18.177808],
|
||||||
|
[109.749863, 18.19326],
|
||||||
|
[109.783381, 18.337516],
|
||||||
|
[109.805418, 18.347543],
|
||||||
|
[109.785048, 18.426622],
|
||||||
|
[109.809955, 18.459388],
|
||||||
|
[109.781159, 18.51107],
|
||||||
|
[109.725234, 18.493102],
|
||||||
|
[109.710882, 18.426462],
|
||||||
|
[109.665883, 18.391462],
|
||||||
|
[109.539866, 18.396713],
|
||||||
|
[109.515607, 18.429008],
|
||||||
|
[109.536996, 18.490717],
|
||||||
|
[109.535237, 18.53142],
|
||||||
|
[109.506163, 18.551291],
|
||||||
|
[109.423386, 18.574657],
|
||||||
|
[109.405146, 18.623443],
|
||||||
|
[109.332832, 18.575451],
|
||||||
|
[109.313295, 18.517429],
|
||||||
|
[109.246537, 18.558921],
|
||||||
|
[109.203574, 18.553517],
|
||||||
|
[109.185056, 18.507095],
|
||||||
|
[109.195148, 18.469407],
|
||||||
|
[109.072557, 18.452231],
|
||||||
|
[109.015243, 18.422645],
|
||||||
|
[108.932374, 18.335288]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
{
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 460400, "name": "儋州", "center": [109.576782, 19.517486], "centroid": [109.390059, 19.579264], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 3, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[108.928671, 19.524313],
|
||||||
|
[108.939596, 19.497287],
|
||||||
|
[108.982744, 19.477213],
|
||||||
|
[108.997373, 19.431522],
|
||||||
|
[109.04478, 19.430415],
|
||||||
|
[109.051447, 19.487803],
|
||||||
|
[109.117557, 19.46757],
|
||||||
|
[109.13052, 19.479584],
|
||||||
|
[109.178389, 19.399262],
|
||||||
|
[109.26774, 19.376803],
|
||||||
|
[109.318943, 19.398155],
|
||||||
|
[109.384035, 19.355448],
|
||||||
|
[109.424405, 19.354815],
|
||||||
|
[109.457275, 19.39942],
|
||||||
|
[109.483848, 19.406063],
|
||||||
|
[109.506348, 19.359561],
|
||||||
|
[109.468386, 19.301178],
|
||||||
|
[109.541625, 19.311939],
|
||||||
|
[109.587365, 19.243249],
|
||||||
|
[109.611995, 19.252589],
|
||||||
|
[109.634031, 19.20256],
|
||||||
|
[109.673105, 19.207627],
|
||||||
|
[109.686994, 19.178965],
|
||||||
|
[109.706808, 19.22156],
|
||||||
|
[109.697271, 19.271267],
|
||||||
|
[109.713382, 19.309881],
|
||||||
|
[109.700234, 19.349436],
|
||||||
|
[109.647272, 19.357505],
|
||||||
|
[109.646439, 19.402425],
|
||||||
|
[109.737734, 19.407486],
|
||||||
|
[109.751993, 19.416974],
|
||||||
|
[109.728197, 19.496023],
|
||||||
|
[109.760048, 19.528895],
|
||||||
|
[109.7694, 19.578508],
|
||||||
|
[109.709308, 19.57756],
|
||||||
|
[109.659402, 19.611048],
|
||||||
|
[109.664216, 19.629685],
|
||||||
|
[109.582921, 19.637581],
|
||||||
|
[109.557366, 19.697421],
|
||||||
|
[109.599402, 19.730726],
|
||||||
|
[109.569218, 19.797947],
|
||||||
|
[109.564588, 19.854888],
|
||||||
|
[109.498663, 19.873339],
|
||||||
|
[109.410794, 19.895256],
|
||||||
|
[109.349591, 19.898724],
|
||||||
|
[109.30811, 19.9178],
|
||||||
|
[109.264592, 19.90503],
|
||||||
|
[109.255611, 19.867189],
|
||||||
|
[109.218574, 19.855834],
|
||||||
|
[109.15913, 19.790689],
|
||||||
|
[109.169501, 19.736724],
|
||||||
|
[109.147649, 19.704998],
|
||||||
|
[109.093668, 19.689844],
|
||||||
|
[109.048576, 19.620051],
|
||||||
|
[108.993392, 19.586723],
|
||||||
|
[108.928671, 19.524313]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469001, "name": "五指山", "center": [109.516662, 18.776921], "centroid": [109.511892, 18.824035], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 4, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[109.715419, 18.833686],
|
||||||
|
[109.699123, 18.889379],
|
||||||
|
[109.730512, 18.913649],
|
||||||
|
[109.676531, 18.925862],
|
||||||
|
[109.601532, 18.910318],
|
||||||
|
[109.55357, 18.946321],
|
||||||
|
[109.524033, 19.030986],
|
||||||
|
[109.468386, 19.032254],
|
||||||
|
[109.456349, 18.995635],
|
||||||
|
[109.424775, 18.990403],
|
||||||
|
[109.367739, 18.936171],
|
||||||
|
[109.34848, 18.946321],
|
||||||
|
[109.32635, 18.926338],
|
||||||
|
[109.343109, 18.877163],
|
||||||
|
[109.374591, 18.853998],
|
||||||
|
[109.353387, 18.812896],
|
||||||
|
[109.356628, 18.710653],
|
||||||
|
[109.398109, 18.671104],
|
||||||
|
[109.408016, 18.627733],
|
||||||
|
[109.448293, 18.655378],
|
||||||
|
[109.48857, 18.64664],
|
||||||
|
[109.539866, 18.659508],
|
||||||
|
[109.533662, 18.694295],
|
||||||
|
[109.576717, 18.714782],
|
||||||
|
[109.619865, 18.678252],
|
||||||
|
[109.641809, 18.72304],
|
||||||
|
[109.703012, 18.721769],
|
||||||
|
[109.681531, 18.786071],
|
||||||
|
[109.689216, 18.830036],
|
||||||
|
[109.715419, 18.833686]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469002, "name": "琼海", "center": [110.466785, 19.246011], "centroid": [110.421962, 19.210377], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 5, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[110.610593, 19.084394],
|
||||||
|
[110.619296, 19.152041],
|
||||||
|
[110.676703, 19.286302],
|
||||||
|
[110.706517, 19.320167],
|
||||||
|
[110.730035, 19.378859],
|
||||||
|
[110.633555, 19.391354],
|
||||||
|
[110.604574, 19.350386],
|
||||||
|
[110.584111, 19.367787],
|
||||||
|
[110.581426, 19.419504],
|
||||||
|
[110.546242, 19.46836],
|
||||||
|
[110.504853, 19.46836],
|
||||||
|
[110.484761, 19.443223],
|
||||||
|
[110.450317, 19.447492],
|
||||||
|
[110.423928, 19.413495],
|
||||||
|
[110.368744, 19.391829],
|
||||||
|
[110.327356, 19.315261],
|
||||||
|
[110.3593, 19.298646],
|
||||||
|
[110.344392, 19.228368],
|
||||||
|
[110.300226, 19.21586],
|
||||||
|
[110.224857, 19.221718],
|
||||||
|
[110.170598, 19.191317],
|
||||||
|
[110.150876, 19.208419],
|
||||||
|
[110.115229, 19.133191],
|
||||||
|
[110.124118, 19.04747],
|
||||||
|
[110.158562, 18.99944],
|
||||||
|
[110.229579, 19.002452],
|
||||||
|
[110.249949, 18.976292],
|
||||||
|
[110.465039, 19.074411],
|
||||||
|
[110.477539, 19.096912],
|
||||||
|
[110.521797, 19.102932],
|
||||||
|
[110.610593, 19.084394]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469005, "name": "文昌", "center": [110.753975, 19.612986], "centroid": [110.788535, 19.747363], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 6, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[110.730035, 19.378859],
|
||||||
|
[110.781053, 19.395783],
|
||||||
|
[110.844015, 19.450179],
|
||||||
|
[110.920774, 19.552598],
|
||||||
|
[111.008921, 19.60394],
|
||||||
|
[111.071327, 19.628895],
|
||||||
|
[111.044013, 19.763551],
|
||||||
|
[111.013643, 19.850472],
|
||||||
|
[110.969569, 20.010151],
|
||||||
|
[110.940959, 20.028583],
|
||||||
|
[110.871515, 20.011569],
|
||||||
|
[110.808738, 20.035672],
|
||||||
|
[110.778368, 20.068276],
|
||||||
|
[110.744665, 20.073946],
|
||||||
|
[110.717258, 20.148734],
|
||||||
|
[110.687073, 20.16353],
|
||||||
|
[110.655685, 20.134409],
|
||||||
|
[110.56226, 20.109691],
|
||||||
|
[110.526612, 20.075206],
|
||||||
|
[110.598, 19.98305],
|
||||||
|
[110.634666, 19.965401],
|
||||||
|
[110.675314, 19.907868],
|
||||||
|
[110.676147, 19.860092],
|
||||||
|
[110.699573, 19.861512],
|
||||||
|
[110.704665, 19.805992],
|
||||||
|
[110.670314, 19.812776],
|
||||||
|
[110.623, 19.735461],
|
||||||
|
[110.623463, 19.664109],
|
||||||
|
[110.672814, 19.647214],
|
||||||
|
[110.636148, 19.593989],
|
||||||
|
[110.641333, 19.549122],
|
||||||
|
[110.611518, 19.526841],
|
||||||
|
[110.540223, 19.535532],
|
||||||
|
[110.519297, 19.563341],
|
||||||
|
[110.469854, 19.531424],
|
||||||
|
[110.485779, 19.502345],
|
||||||
|
[110.520594, 19.509931],
|
||||||
|
[110.546242, 19.46836],
|
||||||
|
[110.581426, 19.419504],
|
||||||
|
[110.584111, 19.367787],
|
||||||
|
[110.604574, 19.350386],
|
||||||
|
[110.633555, 19.391354],
|
||||||
|
[110.730035, 19.378859]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469006, "name": "万宁", "center": [110.388793, 18.796216], "centroid": [110.324496, 18.830445], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 7, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[110.158562, 18.99944],
|
||||||
|
[110.108284, 18.944577],
|
||||||
|
[110.097729, 18.911746],
|
||||||
|
[110.045322, 18.884778],
|
||||||
|
[110.095785, 18.811467],
|
||||||
|
[110.057267, 18.758448],
|
||||||
|
[110.014952, 18.732885],
|
||||||
|
[110.020786, 18.658873],
|
||||||
|
[110.115877, 18.592774],
|
||||||
|
[110.137543, 18.606123],
|
||||||
|
[110.213931, 18.578789],
|
||||||
|
[110.246246, 18.609619],
|
||||||
|
[110.329393, 18.642509],
|
||||||
|
[110.36754, 18.632182],
|
||||||
|
[110.495316, 18.649976],
|
||||||
|
[110.500779, 18.752732],
|
||||||
|
[110.577908, 18.784642],
|
||||||
|
[110.590593, 18.839082],
|
||||||
|
[110.585871, 18.897786],
|
||||||
|
[110.610593, 19.084394],
|
||||||
|
[110.521797, 19.102932],
|
||||||
|
[110.477539, 19.096912],
|
||||||
|
[110.465039, 19.074411],
|
||||||
|
[110.249949, 18.976292],
|
||||||
|
[110.229579, 19.002452],
|
||||||
|
[110.158562, 18.99944]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469007, "name": "东方", "center": [108.653789, 19.10198], "centroid": [108.818801, 18.996184], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 8, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[109.125242, 18.878432],
|
||||||
|
[109.089779, 18.909842],
|
||||||
|
[109.113668, 18.969949],
|
||||||
|
[109.098853, 19.028291],
|
||||||
|
[109.008762, 19.050005],
|
||||||
|
[109.022929, 19.107052],
|
||||||
|
[108.99191, 19.13034],
|
||||||
|
[108.954874, 19.218869],
|
||||||
|
[108.916171, 19.218552],
|
||||||
|
[108.833209, 19.25987],
|
||||||
|
[108.783765, 19.244674],
|
||||||
|
[108.704136, 19.262719],
|
||||||
|
[108.644785, 19.349278],
|
||||||
|
[108.605712, 19.264619],
|
||||||
|
[108.591082, 19.141587],
|
||||||
|
[108.598305, 19.055869],
|
||||||
|
[108.630434, 19.003086],
|
||||||
|
[108.637841, 18.924593],
|
||||||
|
[108.595619, 18.872086],
|
||||||
|
[108.593212, 18.809404],
|
||||||
|
[108.659785, 18.716846],
|
||||||
|
[108.761543, 18.732091],
|
||||||
|
[108.81145, 18.720022],
|
||||||
|
[108.844412, 18.750827],
|
||||||
|
[108.928578, 18.790198],
|
||||||
|
[108.987003, 18.786547],
|
||||||
|
[109.015151, 18.808928],
|
||||||
|
[109.071076, 18.807499],
|
||||||
|
[109.094965, 18.857012],
|
||||||
|
[109.125242, 18.878432]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469021, "name": "定安", "center": [110.349235, 19.684966], "centroid": [110.312936, 19.483405], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 9, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[110.224857, 19.221718],
|
||||||
|
[110.300226, 19.21586],
|
||||||
|
[110.344392, 19.228368],
|
||||||
|
[110.3593, 19.298646],
|
||||||
|
[110.327356, 19.315261],
|
||||||
|
[110.368744, 19.391829],
|
||||||
|
[110.423928, 19.413495],
|
||||||
|
[110.450317, 19.447492],
|
||||||
|
[110.484761, 19.443223],
|
||||||
|
[110.504853, 19.46836],
|
||||||
|
[110.546242, 19.46836],
|
||||||
|
[110.520594, 19.509931],
|
||||||
|
[110.485779, 19.502345],
|
||||||
|
[110.469854, 19.531424],
|
||||||
|
[110.519297, 19.563341],
|
||||||
|
[110.486705, 19.593357],
|
||||||
|
[110.455687, 19.574559],
|
||||||
|
[110.401151, 19.606626],
|
||||||
|
[110.372633, 19.654004],
|
||||||
|
[110.393373, 19.698053],
|
||||||
|
[110.340041, 19.720625],
|
||||||
|
[110.314208, 19.697421],
|
||||||
|
[110.262449, 19.687318],
|
||||||
|
[110.221616, 19.629843],
|
||||||
|
[110.186524, 19.636791],
|
||||||
|
[110.160784, 19.67153],
|
||||||
|
[110.13134, 19.648003],
|
||||||
|
[110.137266, 19.56034],
|
||||||
|
[110.192172, 19.58925],
|
||||||
|
[110.196339, 19.535374],
|
||||||
|
[110.243005, 19.517675],
|
||||||
|
[110.227727, 19.450654],
|
||||||
|
[110.194024, 19.455871],
|
||||||
|
[110.164487, 19.426146],
|
||||||
|
[110.165691, 19.361459],
|
||||||
|
[110.188283, 19.306242],
|
||||||
|
[110.228098, 19.301969],
|
||||||
|
[110.224857, 19.221718]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469022, "name": "屯昌", "center": [110.102773, 19.362916], "centroid": [110.055723, 19.342208], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 10, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[110.115229, 19.133191],
|
||||||
|
[110.150876, 19.208419],
|
||||||
|
[110.170598, 19.191317],
|
||||||
|
[110.224857, 19.221718],
|
||||||
|
[110.228098, 19.301969],
|
||||||
|
[110.188283, 19.306242],
|
||||||
|
[110.165691, 19.361459],
|
||||||
|
[110.164487, 19.426146],
|
||||||
|
[110.194024, 19.455871],
|
||||||
|
[110.227727, 19.450654],
|
||||||
|
[110.243005, 19.517675],
|
||||||
|
[110.196339, 19.535374],
|
||||||
|
[110.192172, 19.58925],
|
||||||
|
[110.137266, 19.56034],
|
||||||
|
[110.101803, 19.54928],
|
||||||
|
[110.119488, 19.503293],
|
||||||
|
[110.072081, 19.492071],
|
||||||
|
[110.045785, 19.456029],
|
||||||
|
[110.020508, 19.485432],
|
||||||
|
[109.938287, 19.485749],
|
||||||
|
[109.94699, 19.468044],
|
||||||
|
[109.914583, 19.42409],
|
||||||
|
[109.912917, 19.391671],
|
||||||
|
[109.876436, 19.386926],
|
||||||
|
[109.826436, 19.343108],
|
||||||
|
[109.822733, 19.289626],
|
||||||
|
[109.923565, 19.239608],
|
||||||
|
[109.957638, 19.188625],
|
||||||
|
[110.026526, 19.17564],
|
||||||
|
[110.057267, 19.134617],
|
||||||
|
[110.115229, 19.133191]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469023, "name": "澄迈", "center": [110.007147, 19.737095], "centroid": [109.990417, 19.700201], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 11, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[110.137266, 19.56034],
|
||||||
|
[110.13134, 19.648003],
|
||||||
|
[110.160784, 19.67153],
|
||||||
|
[110.186524, 19.636791],
|
||||||
|
[110.221616, 19.629843],
|
||||||
|
[110.262449, 19.687318],
|
||||||
|
[110.222357, 19.67974],
|
||||||
|
[110.208468, 19.716679],
|
||||||
|
[110.228283, 19.753767],
|
||||||
|
[110.186246, 19.864193],
|
||||||
|
[110.143932, 19.889106],
|
||||||
|
[110.161895, 19.977693],
|
||||||
|
[110.106525, 20.026851],
|
||||||
|
[109.997638, 19.979899],
|
||||||
|
[109.965231, 19.993608],
|
||||||
|
[109.855047, 19.984153],
|
||||||
|
[109.879491, 19.885322],
|
||||||
|
[109.842269, 19.871446],
|
||||||
|
[109.884121, 19.853311],
|
||||||
|
[109.874306, 19.799524],
|
||||||
|
[109.897084, 19.77933],
|
||||||
|
[109.852732, 19.652582],
|
||||||
|
[109.786437, 19.608047],
|
||||||
|
[109.7694, 19.578508],
|
||||||
|
[109.760048, 19.528895],
|
||||||
|
[109.728197, 19.496023],
|
||||||
|
[109.751993, 19.416974],
|
||||||
|
[109.737734, 19.407486],
|
||||||
|
[109.793474, 19.379966],
|
||||||
|
[109.857269, 19.412388],
|
||||||
|
[109.876436, 19.386926],
|
||||||
|
[109.912917, 19.391671],
|
||||||
|
[109.914583, 19.42409],
|
||||||
|
[109.94699, 19.468044],
|
||||||
|
[109.938287, 19.485749],
|
||||||
|
[110.020508, 19.485432],
|
||||||
|
[110.045785, 19.456029],
|
||||||
|
[110.072081, 19.492071],
|
||||||
|
[110.119488, 19.503293],
|
||||||
|
[110.101803, 19.54928],
|
||||||
|
[110.137266, 19.56034]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469024, "name": "临高", "center": [109.687697, 19.908293], "centroid": [109.71548, 19.809704], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 12, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[109.855047, 19.984153],
|
||||||
|
[109.814307, 19.992977],
|
||||||
|
[109.761715, 19.981317],
|
||||||
|
[109.712271, 20.017398],
|
||||||
|
[109.585328, 19.98825],
|
||||||
|
[109.526626, 19.943494],
|
||||||
|
[109.498663, 19.873339],
|
||||||
|
[109.564588, 19.854888],
|
||||||
|
[109.569218, 19.797947],
|
||||||
|
[109.599402, 19.730726],
|
||||||
|
[109.557366, 19.697421],
|
||||||
|
[109.582921, 19.637581],
|
||||||
|
[109.664216, 19.629685],
|
||||||
|
[109.659402, 19.611048],
|
||||||
|
[109.709308, 19.57756],
|
||||||
|
[109.7694, 19.578508],
|
||||||
|
[109.786437, 19.608047],
|
||||||
|
[109.852732, 19.652582],
|
||||||
|
[109.897084, 19.77933],
|
||||||
|
[109.874306, 19.799524],
|
||||||
|
[109.884121, 19.853311],
|
||||||
|
[109.842269, 19.871446],
|
||||||
|
[109.879491, 19.885322],
|
||||||
|
[109.855047, 19.984153]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469025, "name": "白沙", "center": [109.452606, 19.224584], "centroid": [109.351743, 19.20989], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 13, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[109.298203, 18.960911],
|
||||||
|
[109.34848, 18.946321],
|
||||||
|
[109.367739, 18.936171],
|
||||||
|
[109.424775, 18.990403],
|
||||||
|
[109.456349, 18.995635],
|
||||||
|
[109.468386, 19.032254],
|
||||||
|
[109.524033, 19.030986],
|
||||||
|
[109.561347, 19.072668],
|
||||||
|
[109.601439, 19.053492],
|
||||||
|
[109.613569, 19.086454],
|
||||||
|
[109.687734, 19.118775],
|
||||||
|
[109.686994, 19.178965],
|
||||||
|
[109.673105, 19.207627],
|
||||||
|
[109.634031, 19.20256],
|
||||||
|
[109.611995, 19.252589],
|
||||||
|
[109.587365, 19.243249],
|
||||||
|
[109.541625, 19.311939],
|
||||||
|
[109.468386, 19.301178],
|
||||||
|
[109.506348, 19.359561],
|
||||||
|
[109.483848, 19.406063],
|
||||||
|
[109.457275, 19.39942],
|
||||||
|
[109.424405, 19.354815],
|
||||||
|
[109.384035, 19.355448],
|
||||||
|
[109.318943, 19.398155],
|
||||||
|
[109.26774, 19.376803],
|
||||||
|
[109.178389, 19.399262],
|
||||||
|
[109.13052, 19.479584],
|
||||||
|
[109.117557, 19.46757],
|
||||||
|
[109.051447, 19.487803],
|
||||||
|
[109.04478, 19.430415],
|
||||||
|
[109.043669, 19.342792],
|
||||||
|
[109.08265, 19.328869],
|
||||||
|
[109.142834, 19.265727],
|
||||||
|
[109.120242, 19.203985],
|
||||||
|
[109.163667, 19.14222],
|
||||||
|
[109.177093, 19.083443],
|
||||||
|
[109.271166, 19.067438],
|
||||||
|
[109.298203, 18.960911]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469026, "name": "昌江", "center": [109.053351, 19.260968], "centroid": [108.993675, 19.226048], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 14, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[109.04478, 19.430415],
|
||||||
|
[108.997373, 19.431522],
|
||||||
|
[108.982744, 19.477213],
|
||||||
|
[108.939596, 19.497287],
|
||||||
|
[108.928671, 19.524313],
|
||||||
|
[108.887004, 19.4897],
|
||||||
|
[108.806357, 19.450654],
|
||||||
|
[108.747654, 19.391671],
|
||||||
|
[108.694137, 19.387084],
|
||||||
|
[108.644785, 19.349278],
|
||||||
|
[108.704136, 19.262719],
|
||||||
|
[108.783765, 19.244674],
|
||||||
|
[108.833209, 19.25987],
|
||||||
|
[108.916171, 19.218552],
|
||||||
|
[108.954874, 19.218869],
|
||||||
|
[108.99191, 19.13034],
|
||||||
|
[109.022929, 19.107052],
|
||||||
|
[109.008762, 19.050005],
|
||||||
|
[109.098853, 19.028291],
|
||||||
|
[109.113668, 18.969949],
|
||||||
|
[109.089779, 18.909842],
|
||||||
|
[109.125242, 18.878432],
|
||||||
|
[109.141816, 18.904449],
|
||||||
|
[109.206722, 18.894772],
|
||||||
|
[109.265518, 18.905877],
|
||||||
|
[109.298203, 18.960911],
|
||||||
|
[109.271166, 19.067438],
|
||||||
|
[109.177093, 19.083443],
|
||||||
|
[109.163667, 19.14222],
|
||||||
|
[109.120242, 19.203985],
|
||||||
|
[109.142834, 19.265727],
|
||||||
|
[109.08265, 19.328869],
|
||||||
|
[109.043669, 19.342792],
|
||||||
|
[109.04478, 19.430415]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469027, "name": "乐东", "center": [109.175444, 18.74758], "centroid": [109.029671, 18.639822], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 15, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[109.405146, 18.623443],
|
||||||
|
[109.408016, 18.627733],
|
||||||
|
[109.398109, 18.671104],
|
||||||
|
[109.356628, 18.710653],
|
||||||
|
[109.353387, 18.812896],
|
||||||
|
[109.374591, 18.853998],
|
||||||
|
[109.343109, 18.877163],
|
||||||
|
[109.32635, 18.926338],
|
||||||
|
[109.34848, 18.946321],
|
||||||
|
[109.298203, 18.960911],
|
||||||
|
[109.265518, 18.905877],
|
||||||
|
[109.206722, 18.894772],
|
||||||
|
[109.141816, 18.904449],
|
||||||
|
[109.125242, 18.878432],
|
||||||
|
[109.094965, 18.857012],
|
||||||
|
[109.071076, 18.807499],
|
||||||
|
[109.015151, 18.808928],
|
||||||
|
[108.987003, 18.786547],
|
||||||
|
[108.928578, 18.790198],
|
||||||
|
[108.844412, 18.750827],
|
||||||
|
[108.81145, 18.720022],
|
||||||
|
[108.761543, 18.732091],
|
||||||
|
[108.659785, 18.716846],
|
||||||
|
[108.664137, 18.673328],
|
||||||
|
[108.641082, 18.565279],
|
||||||
|
[108.644971, 18.486741],
|
||||||
|
[108.658304, 18.462728],
|
||||||
|
[108.70997, 18.444119],
|
||||||
|
[108.776728, 18.442051],
|
||||||
|
[108.881264, 18.416599],
|
||||||
|
[108.932374, 18.335288],
|
||||||
|
[109.015243, 18.422645],
|
||||||
|
[109.072557, 18.452231],
|
||||||
|
[109.195148, 18.469407],
|
||||||
|
[109.185056, 18.507095],
|
||||||
|
[109.203574, 18.553517],
|
||||||
|
[109.246537, 18.558921],
|
||||||
|
[109.313295, 18.517429],
|
||||||
|
[109.332832, 18.575451],
|
||||||
|
[109.405146, 18.623443]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469028, "name": "陵水", "center": [110.037218, 18.505006], "centroid": [109.951436, 18.549546], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 16, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[110.014952, 18.732885],
|
||||||
|
[109.980416, 18.76718],
|
||||||
|
[109.94412, 18.771942],
|
||||||
|
[109.902361, 18.739395],
|
||||||
|
[109.891065, 18.754479],
|
||||||
|
[109.830696, 18.728597],
|
||||||
|
[109.773474, 18.809404],
|
||||||
|
[109.756159, 18.788928],
|
||||||
|
[109.771993, 18.723675],
|
||||||
|
[109.802177, 18.725263],
|
||||||
|
[109.839677, 18.67857],
|
||||||
|
[109.804677, 18.594364],
|
||||||
|
[109.846621, 18.57116],
|
||||||
|
[109.828751, 18.511229],
|
||||||
|
[109.781159, 18.51107],
|
||||||
|
[109.809955, 18.459388],
|
||||||
|
[109.785048, 18.426622],
|
||||||
|
[109.805418, 18.347543],
|
||||||
|
[109.919676, 18.375551],
|
||||||
|
[109.999767, 18.359797],
|
||||||
|
[110.070785, 18.376187],
|
||||||
|
[110.090507, 18.399258],
|
||||||
|
[110.116618, 18.506618],
|
||||||
|
[110.213931, 18.578789],
|
||||||
|
[110.137543, 18.606123],
|
||||||
|
[110.115877, 18.592774],
|
||||||
|
[110.020786, 18.658873],
|
||||||
|
[110.014952, 18.732885]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469029, "name": "保亭", "center": [109.70245, 18.636371], "centroid": [109.650759, 18.589686], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 17, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[109.715419, 18.833686],
|
||||||
|
[109.689216, 18.830036],
|
||||||
|
[109.681531, 18.786071],
|
||||||
|
[109.703012, 18.721769],
|
||||||
|
[109.641809, 18.72304],
|
||||||
|
[109.619865, 18.678252],
|
||||||
|
[109.576717, 18.714782],
|
||||||
|
[109.533662, 18.694295],
|
||||||
|
[109.539866, 18.659508],
|
||||||
|
[109.48857, 18.64664],
|
||||||
|
[109.448293, 18.655378],
|
||||||
|
[109.408016, 18.627733],
|
||||||
|
[109.405146, 18.623443],
|
||||||
|
[109.423386, 18.574657],
|
||||||
|
[109.506163, 18.551291],
|
||||||
|
[109.535237, 18.53142],
|
||||||
|
[109.536996, 18.490717],
|
||||||
|
[109.515607, 18.429008],
|
||||||
|
[109.539866, 18.396713],
|
||||||
|
[109.665883, 18.391462],
|
||||||
|
[109.710882, 18.426462],
|
||||||
|
[109.725234, 18.493102],
|
||||||
|
[109.781159, 18.51107],
|
||||||
|
[109.828751, 18.511229],
|
||||||
|
[109.846621, 18.57116],
|
||||||
|
[109.804677, 18.594364],
|
||||||
|
[109.839677, 18.67857],
|
||||||
|
[109.802177, 18.725263],
|
||||||
|
[109.771993, 18.723675],
|
||||||
|
[109.756159, 18.788928],
|
||||||
|
[109.773474, 18.809404],
|
||||||
|
[109.715419, 18.833686]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}, {
|
||||||
|
"type": "Feature",
|
||||||
|
"properties": { "adcode": 469030, "name": "琼中", "center": [109.839996, 19.03557], "centroid": [109.854584, 19.033919], "childrenNum": 0, "level": "city", "parent": { "adcode": 460000 }, "subFeatureIndex": 18, "acroutes": [100000, 460000] },
|
||||||
|
"geometry": {
|
||||||
|
"type": "MultiPolygon",
|
||||||
|
"coordinates": [
|
||||||
|
[
|
||||||
|
[
|
||||||
|
[109.876436, 19.386926],
|
||||||
|
[109.857269, 19.412388],
|
||||||
|
[109.793474, 19.379966],
|
||||||
|
[109.737734, 19.407486],
|
||||||
|
[109.646439, 19.402425],
|
||||||
|
[109.647272, 19.357505],
|
||||||
|
[109.700234, 19.349436],
|
||||||
|
[109.713382, 19.309881],
|
||||||
|
[109.697271, 19.271267],
|
||||||
|
[109.706808, 19.22156],
|
||||||
|
[109.686994, 19.178965],
|
||||||
|
[109.687734, 19.118775],
|
||||||
|
[109.613569, 19.086454],
|
||||||
|
[109.601439, 19.053492],
|
||||||
|
[109.561347, 19.072668],
|
||||||
|
[109.524033, 19.030986],
|
||||||
|
[109.55357, 18.946321],
|
||||||
|
[109.601532, 18.910318],
|
||||||
|
[109.676531, 18.925862],
|
||||||
|
[109.730512, 18.913649],
|
||||||
|
[109.699123, 18.889379],
|
||||||
|
[109.715419, 18.833686],
|
||||||
|
[109.773474, 18.809404],
|
||||||
|
[109.830696, 18.728597],
|
||||||
|
[109.891065, 18.754479],
|
||||||
|
[109.902361, 18.739395],
|
||||||
|
[109.94412, 18.771942],
|
||||||
|
[109.980416, 18.76718],
|
||||||
|
[110.014952, 18.732885],
|
||||||
|
[110.057267, 18.758448],
|
||||||
|
[110.095785, 18.811467],
|
||||||
|
[110.045322, 18.884778],
|
||||||
|
[110.097729, 18.911746],
|
||||||
|
[110.108284, 18.944577],
|
||||||
|
[110.158562, 18.99944],
|
||||||
|
[110.124118, 19.04747],
|
||||||
|
[110.115229, 19.133191],
|
||||||
|
[110.057267, 19.134617],
|
||||||
|
[110.026526, 19.17564],
|
||||||
|
[109.957638, 19.188625],
|
||||||
|
[109.923565, 19.239608],
|
||||||
|
[109.822733, 19.289626],
|
||||||
|
[109.826436, 19.343108],
|
||||||
|
[109.876436, 19.386926]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||