Commit f4f1fe48 by 陈永辉

初始化模板仓库

parent babefa4f
Showing with 1897 additions and 34 deletions
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -7,9 +7,14 @@ ...@@ -7,9 +7,14 @@
"build": "vue-cli-service build" "build": "vue-cli-service build"
}, },
"dependencies": { "dependencies": {
"ant-design-vue": "^4.0.3",
"axios": "^1.5.0",
"core-js": "^3.8.3", "core-js": "^3.8.3",
"pinia": "^2.1.6",
"svg-sprite-loader": "^6.0.11",
"vue": "^3.2.13", "vue": "^3.2.13",
"vue-router": "^4.0.3" "vue-router": "^4.0.3",
"vue-svg-loader": "^0.16.0"
}, },
"devDependencies": { "devDependencies": {
"@vue/cli-plugin-babel": "~5.0.0", "@vue/cli-plugin-babel": "~5.0.0",
......
<template> <template>
<nav> <a-config-provider :locale="locale">
<router-link to="/">Home</router-link> | <router-view/>
<router-link to="/about">About</router-link> </a-config-provider>
</nav>
<router-view/>
</template> </template>
<style lang="scss">
#app {
font-family: Avenir, Helvetica, Arial, sans-serif;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-align: center;
color: #2c3e50;
}
nav { <script setup>
padding: 30px; import zhCN from 'ant-design-vue/es/locale/zh_CN';
import { ref } from "vue"
const locale = ref(zhCN)
</script>
a {
font-weight: bold;
color: #2c3e50;
&.router-link-exact-active { <style lang="scss">
color: #42b983; </style>
} \ No newline at end of file
}
}
</style>
<template>
<a-layout style="min-height: 100vh">
<a-layout-sider
:trigger="null"
:collapsible="true"
:collapsed="isCollapsed"
:width="asideWidth"
collapsedWidth="80"
:defaultCollapsed="true"
>
<SideMenu/>
</a-layout-sider>
<a-layout>
<a-layout-header style="background: #fff; padding: 0">
<Header/>
</a-layout-header>
<a-layout-content style="margin: 0 16px">
<a-breadcrumb style="margin: 16px 0">
<a-breadcrumb-item v-for="item in breadcrumbList" :key="item.path">{{ item.meta.title }}</a-breadcrumb-item>
</a-breadcrumb>
<div :style="{ padding: '24px', background: '#fff', minHeight: '360px' }">
----{{ isCollapsed }}
===={{ asideWidth }}
<router-view/>
</div>
</a-layout-content>
</a-layout>
</a-layout>
</template>
<script>
import SideMenu from "@/Layout/components/SideMenu"
import Header from "@/Layout/components/Header"
import { useRoute, useRouter } from "vue-router";
import {reactive, watch, ref, toRefs, computed} from "vue";
import {useSystemStore} from "@/store/modules/system";
import { useSystem } from "@/hooks/useSystem";
export default {
components: {
SideMenu,
Header
},
setup() {
const route = useRoute();
const { isCollapsed, asideWidth } = useSystem()
const state = reactive({
breadcrumbList: []
})
state.breadcrumbList = route.matched
watch(() => route.matched,
(val)=>{
state.breadcrumbList = val
})
return {
isCollapsed,
asideWidth,
...toRefs(state)
}
}
}
</script>
<style scoped>
</style>
<script setup>
import {
MenuFoldOutlined,
RedoOutlined,
MenuUnfoldOutlined
} from '@ant-design/icons-vue'
import { useSystemStore } from '@/store/modules/system'
const systemStore = useSystemStore()
const handleClick = () => {
systemStore.setCollapsed(!systemStore.collapsed)
}
</script>
<template>
<div class="fix-header">
<div @click="handleClick">
<MenuFoldOutlined style="font-size: 20px"/>
</div>
<div>
<a-dropdown>
<div class="ant-dropdown-link" @click.prevent>
Hover me
</div>
<template #overlay>
<a-menu>
<a-menu-item>
<a href="javascript:;">修改密码</a>
</a-menu-item>
<a-menu-item>
<a href="javascript:;">退出登录</a>
</a-menu-item>
</a-menu>
</template>
</a-dropdown>
</div>
</div>
</template>
<style scoped lang="scss">
.fix-header{
position: fixed;
top: 0;
right: 0;
left: 200px;
background: #fff;
}
</style>
\ No newline at end of file
<script>
import SvgIcon from "@/components/SvgIcon.vue";
export default {
components: {SvgIcon},
props: {
menus: {
type: Array,
default: () => []
}
},
setup(props) {
const isShowSubMenu = (menuItem) => {
return menuItem.children && menuItem.children.length > 0
}
return {
isShowSubMenu
}
}
}
</script>
<template>
<template v-for="item in menus" :key="item.path">
<template v-if="isShowSubMenu(item)">
<a-sub-menu :key="item.path">
<template #icon v-if="item.meta.icon">
<SvgIcon :name="item.meta.icon" />
</template>
<template #title> {{item.meta.title}} </template>
<template v-if="item.children">
<MenuItem :menus="item.children"/>
</template>
</a-sub-menu>
</template>
<template v-else>
<a-menu-item :key="item.path">
<template #icon v-if="item.meta.icon">
<SvgIcon :name="item.meta.icon" />
</template>
<span>{{ item.meta.title }}</span>
</a-menu-item>
</template>
</template>
</template>
<style scoped lang="scss">
</style>
\ No newline at end of file
<template>
<div class="fix-menu" :style="{width: `${asideWidth}px`}">
<div class="logo">
<div class="menu-logo">
<img src="https://ebike-saas-prod.oss-cn-shenzhen.aliyuncs.com/frontend/res/1.logo.png"/>
</div>
<div class="menu-title" :style="{opacity: isCollapsed ? 0 : 1}">
<h1>小安电驴共享</h1>
<p>小安电驴共享</p>
</div>
</div>
<div class="menu" :style="{width: `${asideWidth}px`}">
<a-menu
style="width: 100%"
theme="dark"
:openKeys="openKeys"
v-model:selectedKeys="selectedKeys"
mode="inline"
@click="handleClickMenuItem"
>
<MenuItem :menus="menuList"/>
</a-menu>
</div>
</div>
</template>
<script>
import { useSystemStore } from "@/store/modules/system";
import { usePermissionStore } from "@/store/modules/permission";
import { useRouter, useRoute } from "vue-router";
import {toRefs, reactive, onMounted, h, watch, computed} from "vue";
import MenuItem from "@/Layout/components/MenuItem"
import { useSystem} from "@/hooks/useSystem";
export default {
components: {
MenuItem,
},
setup() {
const router = useRouter();
const route = useRoute();
const permissionStore = usePermissionStore();
const { asideWidth, isCollapsed } = useSystem()
const state = reactive({
selectedKeys: [],
openKeys: [],
menus: [],
menuList: [],
});
// 筛选出当前用户的菜单
const routes = permissionStore.getAddRouters.find(
(route) => route.path === "/"
);
state.menuList = (routes && routes.children) || [];
const updateMenuStatus = () => {
state.openKeys = route.matched.map(el => el.path)
state.selectedKeys = [route.fullPath]
}
//
onMounted(() => {
updateMenuStatus()
})
/*
用户点击菜单
*/
const handleClickMenuItem = ({ key, keyPath}) => {
state.selectedKeys = keyPath
state.openKeys = keyPath
router.push(key)
}
// 监听菜单选中变化
watch(
() => route.matched,
(_val) => {
const path = _val.map(el => el.path)
state.selectedKeys = path
state.openKeys = path
}
)
return {
asideWidth,
isCollapsed,
...toRefs(state),
handleClickMenuItem
}
},
}
</script>
<style scoped lang="scss">
.fix-menu{
height: 100%;
position: fixed;
left: 0;
top: 0;
bottom: 0;
transition: width .2s,background 0s;
.logo{
width: 100%;
height: 64px;
display: flex;
align-items: center;
background: #001529;
.menu-logo{
width: 45px;
height: 45px;
margin-left: 15px;
img{
width: 100%;
height: 100%;
}
}
.menu-title{
margin-left: 10px;
display: flex;
flex-direction: column;
transition: all .2s;
h1{
color: #fff;
margin-bottom: 5px;
font-size: 16px;
}
p{
color: #fdd000;
margin-bottom: 0;
}
}
}
.menu{
height: calc(100vh - 65px)!important;
transition: width .2s,background 0s;
overflow-y: scroll;
&::-webkit-scrollbar {
width: 0; /* 隐藏滚动条 */
}
}
}
</style>
\ No newline at end of file
import {
bxAnaalyse,
UserInfo,
ReportStatistics,
vehicle,
DataStatistics,
permission,
ProductionInfo,
MarketingActivities,
BackendConfig,
OperationLog,
screenRevenue,
Performance,
FinanicalServer,
businessScreen
} from '@/core/icons'
export default {
setup() {
return () => {
return <svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title></title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="导航栏" transform="translate(-1482.000000, -1189.000000)">
<g id="编组-8备份-2" transform="translate(1470.000000, 691.000000)">
<g id="编组-30" transform="translate(12.000000, 498.000000)">
<rect id="矩形" x="0" y="0" width="20" height="20"></rect>
<path d="M10.003343,2.5 L10.003343,9.99665701 L17.5,9.99665701 C17.5,11.1332084 17.2470792,12.2106861 16.7944504,13.1758772 L16.7717707,13.2223049 C15.5767777,15.7702863 12.9884044,17.5351014 9.98829953,17.5351014 C5.85301984,17.5351014 2.5,14.1820816 2.5,10.0468019 C2.5,9.70340802 2.52312125,9.36540837 2.5678917,9.03427496 C3.04027811,5.34845685 6.18915959,2.5 10.003343,2.5 L10.003343,2.5 Z M11.1232449,2.5 C14.6016269,2.5 17.4214397,5.31981279 17.4214397,8.79819478 L17.4214397,8.79819478 L11.5411188,8.79819478 C11.3104524,8.79819478 11.1232449,8.6109873 11.1232449,8.38032093 L11.1232449,8.38032093 Z M12.193002,3.68007577 L12.193002,7.72843771 L16.2413639,7.72843771 C16.1728326,7.39915311 16.0725429,7.07655449 15.9404948,6.76398485 C15.6763985,6.14218854 15.2986405,5.58223758 14.8189213,5.10251839 C14.3392021,4.6211277 13.7792512,4.24336973 13.1574549,3.98094495 C12.8448852,3.84889681 12.5222866,3.74860709 12.193002,3.68007577 L12.193002,3.68007577 Z" id="形状结合" fill="currentColor"></path>
</g>
</g>
</g>
</g>
</svg>
}
}
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="17px" height="17px" viewBox="0 0 17 17" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>矩形</title>
<g id="废弃" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="站点围栏3" transform="translate(-547.000000, -433.000000)" fill-rule="nonzero">
<g id="编组-48" transform="translate(80.000000, 21.000000)">
<g id="编组-49备份" transform="translate(459.000000, 404.000000)">
<g id="定位" transform="translate(8.000000, 8.000000)">
<rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="17" height="17"></rect>
<path d="M8.5,6.18181818 C7.21920455,6.18181818 6.18181818,7.21920455 6.18181818,8.5 C6.18181818,9.78079545 7.21920455,10.8181818 8.5,10.8181818 C9.78079545,10.8181818 10.8181818,9.78079545 10.8181818,8.5 C10.8181818,7.21920455 9.78079545,6.18181818 8.5,6.18181818 L8.5,6.18181818 Z M13.6811364,7.92045455 C13.4145455,5.50375 11.49625,3.58545455 9.07954545,3.31886364 L9.07954545,2.125 L7.92045455,2.125 L7.92045455,3.31886364 C5.50375,3.58545455 3.58545455,5.50375 3.31886364,7.92045455 L2.125,7.92045455 L2.125,9.07954545 L3.31886364,9.07954545 C3.58545455,11.49625 5.50375,13.4145455 7.92045455,13.6811364 L7.92045455,14.875 L9.07954545,14.875 L9.07954545,13.6811364 C11.49625,13.4145455 13.4145455,11.49625 13.6811364,9.07954545 L14.875,9.07954545 L14.875,7.92045455 L13.6811364,7.92045455 Z M8.5,12.5568182 C6.25715909,12.5568182 4.44318182,10.7428409 4.44318182,8.5 C4.44318182,6.25715909 6.25715909,4.44318182 8.5,4.44318182 C10.7428409,4.44318182 12.5568182,6.25715909 12.5568182,8.5 C12.5568182,10.7428409 10.7428409,12.5568182 8.5,12.5568182 Z" id="形状" fill="#1890FF"></path>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title></title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="导航栏" transform="translate(-1482.000000, -1145.000000)">
<g id="编组-8备份-2" transform="translate(1470.000000, 691.000000)">
<g id="编组-29" transform="translate(12.000000, 454.000000)">
<rect id="矩形" x="0" y="0" width="20" height="20"></rect>
<path d="M13.4348958,8.9338933 C13.7630208,8.9338933 14.0677083,9.19229306 14.1380208,9.52116551 C14.1614583,9.63861995 14.2552083,9.7325835 14.3723958,9.77956528 C14.5598958,9.82654705 14.7473959,9.92051061 14.9114583,10.0144742 C15.0286459,10.0614559 15.1458333,10.0614559 15.2630209,9.99098328 C15.4921875,9.82393696 15.8324653,9.84249766 16.0698624,10.0136686 L16.1536459,10.0849468 L16.4817709,10.3903284 C16.7161459,10.6487282 16.7630209,11.0245824 16.5755209,11.306473 C16.5052084,11.4239275 16.5052084,11.5413819 16.5520834,11.6588364 C16.6458334,11.8232726 16.7161459,12.0111997 16.7864584,12.1991268 C16.8333334,12.3165812 16.9270834,12.4105448 17.0442709,12.4340357 C17.3395834,12.4974611 17.5779427,12.7511627 17.6226615,13.0410167 L17.6302084,13.1387623 L17.6302084,13.5850892 C17.6302084,13.9139617 17.3723959,14.2193432 17.0442709,14.2898159 C16.9270834,14.3133068 16.8333334,14.4072703 16.7864584,14.5247248 C16.7552084,14.6186883 16.703125,14.7230923 16.6510417,14.8309763 L16.5755209,14.9945425 L16.5286459,15.0650152 C16.4817709,15.1824696 16.4817709,15.323415 16.5520834,15.4173785 C16.6223959,15.534833 16.6692709,15.6757783 16.6692709,15.8167236 C16.6692709,15.9670653 16.6242709,16.117407 16.5342709,16.243694 L16.4583334,16.3335232 L16.1536459,16.6389047 C15.9192708,16.8973045 15.4973958,16.9207954 15.2630209,16.7563592 C15.1458333,16.6858865 15.0286459,16.6858865 14.9114583,16.7328683 C14.7239583,16.8268318 14.5364583,16.9207954 14.3723958,16.9677772 C14.2552084,17.0147589 14.1614583,17.1087225 14.1380208,17.2261769 C14.0747396,17.5433039 13.8216146,17.7843204 13.5324193,17.8293525 L13.4348958,17.83694 L13.0130208,17.83694 C12.6848958,17.83694 12.3802083,17.5785403 12.3098958,17.2261769 C12.2864583,17.1087225 12.1927083,17.0147589 12.0755208,16.9677772 C11.9973958,16.936456 11.9088542,16.8946944 11.8168403,16.8494527 L11.6770833,16.77985 L11.5364583,16.7093774 C11.4895833,16.6858865 11.4192708,16.6623956 11.3723958,16.6623956 C11.3020833,16.6623956 11.2317708,16.6858865 11.1848959,16.7093774 C10.9348959,16.8764237 10.5923033,16.857863 10.3546489,16.6866921 L10.2708334,16.6154138 L9.96614586,16.3100323 C9.70833335,16.0516325 9.66145835,15.6757783 9.84895835,15.3938876 C9.90520835,15.2999241 9.91645835,15.2059605 9.89470835,15.111997 L9.87239585,15.0415243 L9.80208335,14.9240699 C9.73177085,14.7831245 9.66145835,14.6421792 9.61458334,14.5012339 C9.56770834,14.3837794 9.47395834,14.2898159 9.35677084,14.266325 C9.08255209,14.2028996 8.78934896,13.9682256 8.73345052,13.6650522 L8.72395834,13.5615983 L8.72395834,13.1387623 C8.72395834,12.786399 9.05208333,12.5045083 9.35677084,12.4340357 C9.47395834,12.4105448 9.56770834,12.3165812 9.61458334,12.1991268 C9.63802084,12.1051632 9.70833334,11.9877088 9.77864584,11.8702543 C9.82552084,11.7997817 9.84895834,11.729309 9.89583334,11.6588363 C9.94270835,11.5413819 9.94270835,11.4004366 9.87239585,11.306473 C9.80208335,11.1890186 9.75520834,11.0480732 9.75520834,10.9071279 C9.75520834,10.7567862 9.80020834,10.6064445 9.89020834,10.4801575 L9.96614584,10.3903284 L10.2708333,10.0849468 C10.5286458,9.85003795 10.9270833,9.80305617 11.1848958,9.99098328 C11.3020833,10.0614559 11.4192708,10.0614559 11.5364583,10.0144742 C11.7473958,9.89701973 11.9114583,9.82654706 12.0755208,9.77956528 C12.1927083,9.7325835 12.2864583,9.63861995 12.3098958,9.52116551 C12.3731771,9.22518032 12.6263021,8.98627798 12.9154974,8.94145736 L13.0130208,8.9338933 L13.4348958,8.9338933 Z M13.2239584,11.0245824 C11.9348959,11.0245824 10.9036458,12.0581815 10.9036458,13.3501803 C10.9036458,14.6421792 11.9348959,15.6757783 13.2239584,15.6757783 C14.4895834,15.6757783 15.5442709,14.6186883 15.5442709,13.3501803 C15.5442709,12.0581815 14.5130209,11.0245824 13.2239584,11.0245824 Z M7.60416667,13.8541667 C7.80511534,13.8541667 7.97283937,13.9964183 8.01213206,14.185715 C8.01130927,14.2611758 8.01295987,14.3371511 8.01694188,14.4123192 L8.01833333,14.3976667 L8.01412028,14.4498964 C7.97884031,14.6442707 7.80871657,14.7916667 7.60416667,14.7916667 L3.75,14.7916667 C3.51988135,14.7916667 3.33333333,14.6051186 3.33333333,14.375 L3.33333333,14.2708333 C3.33333333,14.0407147 3.51988135,13.8541667 3.75,13.8541667 L7.60416667,13.8541667 Z M6.25,4.47916667 C6.71023729,4.47916667 7.08333333,4.85226271 7.08333333,5.3125 L7.08333333,12.0833333 C7.08333333,12.5435706 6.71023729,12.9166667 6.25,12.9166667 L4.16666667,12.9166667 C3.70642938,12.9166667 3.33333333,12.5435706 3.33333333,12.0833333 L3.33333333,5.3125 C3.33333333,4.85226271 3.70642938,4.47916667 4.16666667,4.47916667 L6.25,4.47916667 Z M10.9375,1.66666667 C11.3977373,1.66666667 11.7708333,2.03976271 11.7708333,2.5 L11.7709339,8.92648572 C11.7249775,9.00252316 11.6855569,9.08351221 11.6536458,9.1688022 C11.5833333,9.1922931 11.4661458,9.23927487 11.3723958,9.28625665 C11.1848958,9.21578398 10.9973958,9.1688022 10.7864583,9.1688022 C10.4583333,9.1688022 10.1481527,9.27671347 9.88731893,9.49253601 L9.77864583,9.59163819 L9.47395833,9.89701974 C9.19270833,10.1554195 9.05208333,10.5312737 9.05208333,10.9071279 C9.05208333,11.1185459 9.09895833,11.306473 9.16927083,11.4944001 C9.14583334,11.4944001 9.14583334,11.517891 9.14583334,11.517891 C9.09895833,11.6118546 9.05208334,11.7058181 9.00520834,11.7997817 C8.64659295,11.9345688 8.34513534,12.2221238 8.17371607,12.5650514 C8.07773633,12.4295182 8.02083333,12.263071 8.02083333,12.0833333 L8.02083333,2.5 C8.02083333,2.03976271 8.39392938,1.66666667 8.85416667,1.66666667 L10.9375,1.66666667 Z M15.625,5.41666667 C16.0852373,5.41666667 16.4583333,5.78976271 16.4583333,6.25 L16.4600313,9.47312575 C16.2231213,9.30156457 15.9305711,9.21578398 15.6380208,9.21578398 C15.4270833,9.21578398 15.2395833,9.23927488 15.0520833,9.33323843 C14.8645833,9.42720198 14.8411458,9.23927488 14.7473958,9.1922931 C14.5526843,8.67187957 14.078387,8.29157737 13.5457146,8.23614871 L13.4114583,8.22916667 L12.9895833,8.22916667 C12.8941982,8.22916667 12.8000552,8.23912711 12.7083678,8.25823726 L12.7083333,6.25 C12.7083333,5.78976271 13.0814294,5.41666667 13.5416667,5.41666667 L15.625,5.41666667 Z" id="形状结合" fill="currentColor"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>编组备份 3</title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="运营大屏(白色)" transform="translate(-12.000000, -82.000000)">
<g id="编组-24" transform="translate(0.000000, 52.000000)">
<g id="编组备份-3" transform="translate(12.000000, 30.000000)">
<rect id="矩形" x="0" y="0" width="20" height="20"></rect>
<path d="M14.4791667,15.3125 C14.939404,15.3125 15.3125,15.685596 15.3125,16.1458333 L15.3125,16.25 C15.3125,16.7102373 14.939404,17.0833333 14.4791667,17.0833333 L5.52083333,17.0833333 C5.06059604,17.0833333 4.6875,16.7102373 4.6875,16.25 L4.6875,16.1458333 C4.6875,15.685596 5.06059604,15.3125 5.52083333,15.3125 L14.4791667,15.3125 Z M16.25,2.91666667 C16.7102373,2.91666667 17.0833333,3.28976271 17.0833333,3.75 L17.0833333,13.59375 C17.0833333,14.0539873 16.7102373,14.4270833 16.25,14.4270833 L3.75,14.4270833 C3.28976271,14.4270833 2.91666667,14.0539873 2.91666667,13.59375 L2.91666667,3.75 C2.91666667,3.28976271 3.28976271,2.91666667 3.75,2.91666667 L16.25,2.91666667 Z M5.56701113,8.55575594 C5.1988213,8.55575594 4.90034446,8.85423277 4.90034446,9.22242261 L4.90034446,12.7224226 C4.90034446,13.0906124 5.1988213,13.3890893 5.56701113,13.3890893 C5.93520096,13.3890893 6.2336778,13.0906124 6.2336778,12.7224226 L6.2336778,9.22242261 C6.2336778,8.85423277 5.93520096,8.55575594 5.56701113,8.55575594 Z M8.83333333,10.3890893 C8.4651435,10.3890893 8.16666667,10.6875661 8.16666667,11.0557559 L8.16666667,12.7224226 C8.16666667,13.0906124 8.4651435,13.3890893 8.83333333,13.3890893 C9.20152317,13.3890893 9.5,13.0906124 9.5,12.7224226 L9.5,11.0557559 C9.5,10.6875661 9.20152317,10.3890893 8.83333333,10.3890893 Z M12,11.1668671 C11.6318102,11.1668671 11.3333333,11.4653439 11.3333333,11.8335337 L11.3333333,12.7224226 C11.3333333,13.0906124 11.6318102,13.3890893 12,13.3890893 C12.3681898,13.3890893 12.6666667,13.0906124 12.6666667,12.7224226 L12.6666667,11.8335337 C12.6666667,11.4653439 12.3681898,11.1668671 12,11.1668671 Z M13.5017254,4.78118916 C12.3952399,3.67470366 10.6012725,3.67470366 9.494787,4.78118916 C8.3883015,5.88767465 8.3883015,7.68164209 9.494787,8.78812758 C10.4354157,9.72875624 11.8728725,9.86975194 12.9624455,9.21111468 L14.3633628,10.6113112 C14.6237124,10.8716608 15.0458224,10.8716608 15.3061719,10.6113112 C15.5665214,10.3509617 15.5665214,9.92885172 15.3061719,9.66850219 L13.9103038,8.27242148 C14.5853464,7.18008262 14.4491536,5.72861736 13.5017254,4.78118916 Z M10.437596,5.7239982 C11.0233825,5.13821176 11.9731299,5.13821176 12.5589164,5.7239982 C13.1447028,6.30978464 13.1447028,7.2595321 12.5589164,7.84531854 C11.9731299,8.43110498 11.0233825,8.43110498 10.437596,7.84531854 C9.8518096,7.2595321 9.8518096,6.30978464 10.437596,5.7239982 Z" id="形状结合" fill="currentColor"></path>
<g id="编组-47" transform="translate(12.405164, 7.691566) rotate(-45.000000) translate(-12.405164, -7.691566) translate(9.571830, 3.575672)"></g>
</g>
</g>
</g>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>矩形</title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="导航栏" transform="translate(-1482.000000, -773.000000)">
<g id="编组-8备份-2" transform="translate(1470.000000, 691.000000)">
<g id="编组" transform="translate(12.000000, 82.000000)">
<rect id="矩形" x="0" y="0" width="20" height="20"></rect>
<path d="M14.4791667,15.3125 C14.939404,15.3125 15.3125,15.685596 15.3125,16.1458333 L15.3125,16.25 C15.3125,16.7102373 14.939404,17.0833333 14.4791667,17.0833333 L5.52083333,17.0833333 C5.06059604,17.0833333 4.6875,16.7102373 4.6875,16.25 L4.6875,16.1458333 C4.6875,15.685596 5.06059604,15.3125 5.52083333,15.3125 L14.4791667,15.3125 Z M16.25,2.91666667 C16.7102373,2.91666667 17.0833333,3.28976271 17.0833333,3.75 L17.0833333,13.59375 C17.0833333,14.0539873 16.7102373,14.4270833 16.25,14.4270833 L3.75,14.4270833 C3.28976271,14.4270833 2.91666667,14.0539873 2.91666667,13.59375 L2.91666667,3.75 C2.91666667,3.28976271 3.28976271,2.91666667 3.75,2.91666667 L16.25,2.91666667 Z M15.341357,5.34417054 C14.9626319,5.03483198 14.4048461,5.0910809 14.0955075,5.46980603 L14.0955075,5.46980603 L11.6424479,8.47265625 L8.3718225,6.48645409 L8.27268481,6.43443844 C7.90183431,6.26873413 7.45821264,6.37671985 7.20683621,6.70799781 L7.20683621,6.70799781 L4.77903495,9.90749053 L4.71739397,10.000137 C4.49701455,10.3809504 4.58957392,10.8751936 4.9491572,11.1480484 L4.9491572,11.1480484 L5.04180366,11.2096894 C5.42261705,11.4300688 5.91686031,11.3375094 6.18971505,10.9779261 L6.18971505,10.9779261 L8.13442708,8.41421875 L11.3814366,10.3863395 L11.4779225,10.4371572 C11.8388393,10.5998028 12.2707631,10.5031836 12.5268254,10.189685 L12.5268254,10.189685 L15.4669925,6.59002008 L15.5319082,6.49963797 C15.7657693,6.12695185 15.6909495,5.62971384 15.341357,5.34417054 Z" id="形状结合" fill="currentColor"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title></title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="导航栏" transform="translate(-1482.000000, -965.000000)">
<g id="编组-8备份-2" transform="translate(1470.000000, 691.000000)">
<g id="编组-25" transform="translate(12.000000, 274.000000)">
<rect id="矩形" x="0" y="0" width="20" height="20"></rect>
<path d="M15.6877367,10 C15.9562027,10 16.2054924,10.211418 16.2630208,10.4804954 C16.282197,10.5765945 16.3589015,10.6534738 16.4547822,10.6919134 C16.6081913,10.7303531 16.7616004,10.8072323 16.8958333,10.8841116 C16.991714,10.9225513 17.0875947,10.9225513 17.1834754,10.8648918 C17.3680457,10.7303531 17.6407064,10.7429661 17.8344528,10.8769793 L17.9121686,10.9417711 L18.1806345,11.1916287 C18.3723959,11.4030467 18.4107481,11.7105638 18.257339,11.9412016 C18.1998106,12.0373007 18.1998106,12.1333998 18.2381629,12.2294989 C18.3148674,12.3640376 18.3723959,12.5177961 18.4299243,12.6715547 C18.4682765,12.7676538 18.5449811,12.844533 18.6408618,12.8637529 C18.8794981,12.9150057 19.0726799,13.1181188 19.1126631,13.351604 L19.1202652,13.4403474 L19.1202652,13.8055239 C19.1202652,14.0746014 18.9093277,14.324459 18.6408618,14.3821185 C18.5449811,14.4013383 18.4682765,14.4782176 18.4299243,14.5743166 C18.4043561,14.6511959 18.3617424,14.7366173 18.3191288,14.8248861 L18.257339,14.958713 L18.2189868,15.0163725 C18.1806345,15.1124716 18.1806345,15.2277905 18.2381629,15.3046697 C18.2956913,15.4007688 18.3340436,15.5160877 18.3340436,15.6314066 C18.3340436,15.7544135 18.2972254,15.8774203 18.223589,15.980746 L18.1614583,16.0542426 L17.9121686,16.3041002 C17.7204072,16.5155182 17.3752368,16.5347381 17.1834754,16.4001993 C17.0875947,16.3425399 16.991714,16.3425399 16.8958333,16.3809795 C16.7424242,16.4578588 16.5890152,16.5347381 16.4547822,16.5731777 C16.3589015,16.6116173 16.282197,16.6884966 16.2630208,16.7845957 C16.2118845,17.0408599 16.009233,17.2363801 15.7762784,17.2766652 L15.6877367,17.284311 L15.3425663,17.284311 C15.0741004,17.284311 14.8248106,17.072893 14.7672822,16.7845957 C14.7481061,16.6884966 14.6714015,16.6116173 14.5755208,16.5731777 C14.5116004,16.5475513 14.4391572,16.5133827 14.3638731,16.4763668 L14.2495265,16.4194192 L14.1344697,16.3617597 C14.0961174,16.3425399 14.038589,16.3233201 14.0002367,16.3233201 C13.9427083,16.3233201 13.8851799,16.3425399 13.8468277,16.3617597 C13.6454782,16.4962984 13.3707202,16.4836854 13.1767116,16.3496722 L13.0989583,16.2848804 L12.8496686,16.0350228 C12.6387311,15.8236048 12.6003788,15.5160877 12.7537879,15.2854499 C12.7969342,15.2133756 12.8077208,15.1413013 12.7942376,15.069227 L12.772964,14.9971526 L12.7154356,14.9010535 C12.6579072,14.7857346 12.6003788,14.6704157 12.5620265,14.5550968 C12.5236742,14.4589977 12.4469697,14.3821185 12.351089,14.3628986 C12.1294981,14.3116458 11.8927557,14.1237187 11.8428819,13.8801095 L11.8333333,13.7863041 L11.8333333,13.4403474 C11.8333333,13.1520501 12.1017992,12.9214123 12.351089,12.8637528 C12.4469697,12.844533 12.5236742,12.7676538 12.5620265,12.6715547 C12.5812027,12.5946754 12.6387311,12.4985763 12.6962595,12.4024772 C12.7346117,12.3448178 12.7537879,12.2871583 12.7921402,12.2294989 C12.8304924,12.1333998 12.8304924,12.0180809 12.772964,11.9412016 C12.7154356,11.8451025 12.6770833,11.7297836 12.6770833,11.6144647 C12.6770833,11.4914579 12.7139015,11.368451 12.7875379,11.2651253 L12.8496686,11.1916287 L13.0989583,10.9417711 C13.3098958,10.7495729 13.6358902,10.7111333 13.8468277,10.8648918 C13.9427083,10.9225513 14.038589,10.9225513 14.1344697,10.8841116 C14.3070549,10.7880125 14.4412879,10.7303531 14.5755208,10.6919134 C14.6714015,10.6534738 14.7481061,10.5765945 14.7672822,10.4804954 C14.8184186,10.2413155 15.0210701,10.0476936 15.2540246,10.0076194 L15.3425663,10 L15.6877367,10 Z M15.5151515,11.7105638 C14.460464,11.7105638 13.616714,12.5562358 13.616714,13.6133258 C13.616714,14.6704157 14.460464,15.5160877 15.5151515,15.5160877 C16.5506629,15.5160877 17.413589,14.6511959 17.413589,13.6133258 C17.413589,12.5562358 16.569839,11.7105638 15.5151515,11.7105638 Z M15.1666667,3.33333333 C15.626904,3.33333333 16,3.70642938 16,4.16666667 L15.9998515,9.24998496 C15.7306393,9.195348 15.4520024,9.16666667 15.1666667,9.16666667 C12.8654802,9.16666667 11,11.0321469 11,13.3333333 C11,13.9835136 11.1489205,14.5989116 11.4145128,15.1472786 L3.5,15.1470588 C3.03976271,15.1470588 2.66666667,14.7739628 2.66666667,14.3137255 L2.66666667,4.16666667 C2.66666667,3.70642938 3.03976271,3.33333333 3.5,3.33333333 L15.1666667,3.33333333 Z M8.94461716,5.75994038 C8.19923143,6.49586925 7.96945086,7.55762923 8.25527547,8.50141588 C8.3001107,8.65309588 8.27208868,8.82162921 8.1600006,8.93398476 L5.17513005,11.9057381 C4.96776711,12.1135958 4.96776711,12.4562803 5.17513005,12.6641381 L5.937329,13.422538 C6.14469195,13.6303958 6.48656059,13.6303958 6.69952794,13.422538 L9.6956073,10.4395492 C9.80769538,10.3271936 9.97022309,10.293487 10.1271464,10.3384292 C11.0630819,10.6137003 12.1111054,10.3833714 12.8508868,9.64182475 C13.506602,8.98454476 13.7588002,8.068847 13.6018769,7.21494479 C13.5570417,6.97338035 13.2487994,6.88349591 13.0750629,7.05764702 L11.6011047,8.52950477 C11.3937417,8.73736254 11.0518731,8.73736254 10.8389057,8.52950477 L10.0823112,7.77110478 C9.86934382,7.55762923 9.86934382,7.22056257 10.0823112,7.0127048 L11.5674782,5.52961149 C11.7412148,5.35546038 11.6571487,5.04648261 11.4161593,5.00154039 C10.5474767,4.83300706 9.61714564,5.08580706 8.94461716,5.75994038 Z" id="形状结合" fill="currentColor"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>矩形</title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="按钮样式3" transform="translate(-871.000000, -342.000000)">
<g id="编组-7备份" transform="translate(56.000000, 191.000000)">
<g id="编组-3" transform="translate(24.000000, 80.000000)">
<g id="编组-2" transform="translate(0.000000, 70.000000)">
<g id="编组-18" transform="translate(791.000000, 0.000000)">
<g id="1.通用/2.Icon图标/Line/Download" transform="translate(0.000000, 1.000000)">
<rect id="矩形" fill="#000000" fill-rule="nonzero" opacity="0" x="0" y="0" width="20" height="20"></rect>
<path d="M9.87695313,12.9101562 C9.93945313,12.9902344 10.0605469,12.9902344 10.1230469,12.9101562 L12.3105469,10.1425781 C12.390625,10.0410156 12.3183594,9.890625 12.1875,9.890625 L10.7402344,9.890625 L10.7402344,3.28125 C10.7402344,3.1953125 10.6699219,3.125 10.5839844,3.125 L9.41210938,3.125 C9.32617188,3.125 9.25585938,3.1953125 9.25585938,3.28125 L9.25585938,9.88867188 L7.8125,9.88867188 C7.68164063,9.88867188 7.609375,10.0390625 7.68945313,10.140625 L9.87695313,12.9101562 Z M17.1484375,12.2265625 L15.9765625,12.2265625 C15.890625,12.2265625 15.8203125,12.296875 15.8203125,12.3828125 L15.8203125,15.390625 L4.1796875,15.390625 L4.1796875,12.3828125 C4.1796875,12.296875 4.109375,12.2265625 4.0234375,12.2265625 L2.8515625,12.2265625 C2.765625,12.2265625 2.6953125,12.296875 2.6953125,12.3828125 L2.6953125,16.25 C2.6953125,16.5957031 2.97460938,16.875 3.3203125,16.875 L16.6796875,16.875 C17.0253906,16.875 17.3046875,16.5957031 17.3046875,16.25 L17.3046875,12.3828125 C17.3046875,12.296875 17.234375,12.2265625 17.1484375,12.2265625 Z" id="形状" fill="#0091FF"></path>
</g>
</g>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>矩形</title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="按钮样式3" transform="translate(-1146.000000, -197.000000)" fill="#0091FF" fill-rule="nonzero">
<g id="按钮/主要按钮/Normal备份-7" transform="translate(1134.000000, 191.000000)">
<g id="编组-41" transform="translate(12.000000, 6.000000)">
<path d="M13.6916635,2 C14.5462604,2.00087073 15.2388205,2.66159363 15.2397332,3.47690456 L15.2397332,3.47690456 L15.2397332,5.59901199 C15.2397332,5.70946894 15.1501901,5.79901199 15.0397332,5.79901199 L15.0397332,5.79901199 L14.0080526,5.79901199 C13.8975957,5.79901199 13.8080526,5.70946894 13.8080526,5.59901199 L13.8080526,5.59901199 L13.8080526,3.47690456 C13.8083722,3.44736286 13.7962125,3.41894225 13.7743156,3.398052 C13.7524188,3.37716175 13.7226287,3.365561 13.6916635,3.36586589 L13.6916635,3.36586589 L3.54806964,3.36586589 C3.51710447,3.365561 3.4873144,3.37716175 3.46541755,3.398052 C3.4435207,3.41894225 3.43136096,3.44736286 3.43168055,3.47690456 L3.43168055,3.47690456 L3.43168055,16.5230954 C3.43136096,16.5526371 3.4435207,16.5810578 3.46541755,16.601948 C3.4873144,16.6228383 3.51710447,16.634439 3.54806964,16.6341341 L3.54806964,16.6341341 L13.6916635,16.6341341 C13.7226287,16.634439 13.7524188,16.6228383 13.7743156,16.601948 C13.7962125,16.5810578 13.8083722,16.5526371 13.8080526,16.5230954 L13.8080526,16.5230954 L13.8080526,13.9058278 C13.8080526,13.7953708 13.8975957,13.7058278 14.0080526,13.7058278 L14.0080526,13.7058278 L15.0397332,13.7058278 C15.1501901,13.7058278 15.2397332,13.7953708 15.2397332,13.9058278 L15.2397332,13.9058278 L15.2397332,16.5230954 C15.2388205,17.3384064 14.5462604,17.9991293 13.6916635,18 L13.6916635,18 L3.54806964,18 C2.69347272,17.9991293 2.00091268,17.3384064 2,16.5230954 L2,16.5230954 L2,3.47690456 C2.00091268,2.66159363 2.69347272,2.00087073 3.54806964,2 L3.54806964,2 Z M15.8430176,7.68945312 C15.8430176,7.55859375 15.9934082,7.48632812 16.0949707,7.56640625 L16.0949707,7.56640625 L18.8625488,9.75390625 C18.942627,9.81640625 18.942627,9.9375 18.8625488,10 L18.8625488,10 L16.0930176,12.1875 C15.9914551,12.2675781 15.8410645,12.1953125 15.8410645,12.0644531 L15.8410645,12.0644531 L15.8410645,10.6210937 L9.23364258,10.6210937 C9.14770508,10.6210937 9.07739258,10.5507812 9.07739258,10.4648437 L9.07739258,10.4648437 L9.07739258,9.29296875 C9.07739258,9.20703125 9.14770508,9.13671875 9.23364258,9.13671875 L9.23364258,9.13671875 L15.8430176,9.13671875 Z" id="形状结合"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>我的产品</title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="分账服务-已有账号绑定4" transform="translate(-12.000000, -80.000000)" fill-rule="nonzero">
<g id="编组-36" transform="translate(0.000000, 72.000000)">
<g id="我的产品" transform="translate(12.000000, 8.000000)">
<rect id="矩形" x="0" y="0" width="20" height="20"></rect>
<path d="M9.85458823,7.98352941 C9.45764706,7.98352941 9.08235294,7.92564705 8.79741177,7.82047059 L2.932,5.65411764 C2.45152941,5.47647058 2.38,5.21764705 2.38,5.07929413 C2.38,4.94070589 2.4517647,4.68188236 2.932,4.5042353 L8.79717647,2.33788236 C9.08211764,2.23294117 9.45741177,2.17482353 9.85435294,2.17482353 C10.2515294,2.17482353 10.6268235,2.23270589 10.9117647,2.33788236 L16.7769412,4.5042353 C17.2574118,4.68188236 17.3289412,4.94070589 17.3289412,5.07929413 C17.3289412,5.21764706 17.2571765,5.47647059 16.7769412,5.65411764 L10.9117647,7.82047059 C10.6268235,7.92564706 10.2515294,7.98352941 9.85458823,7.98352941 Z M8.60329412,17.7567059 C8.46964706,17.7567059 8.32658825,17.7308235 8.19082353,17.6795294 L3.05317647,15.7192941 C2.45482353,15.4941176 2,14.7962353 2,14.0964706 L2,7.55929412 C2,6.97270589 2.31458823,6.59364706 2.80117647,6.59364706 C2.92541177,6.59364706 3.05717647,6.61952942 3.19317647,6.67082353 L8.40258823,8.63082353 C9.02752941,8.86611766 9.52964706,9.57905883 9.52964706,10.2538824 L9.52964706,16.7910588 C9.52941177,17.350353 9.13270589,17.7567059 8.60329412,17.7567059 L8.60329412,17.7567059 Z M11.2355294,17.6470588 L11.2632941,17.6470588 C10.7722353,17.6470588 10.4705882,17.3684706 10.4705882,16.7910588 L10.4705882,10.2538824 C10.4705882,9.55647059 10.8990588,8.85882353 11.5047059,8.63082353 L16.6343529,6.67105883 C16.7750115,6.62084509 16.9231214,6.5946753 17.0724706,6.59364706 C17.5990588,6.59364706 18,6.99082353 18,7.55929412 L18,14.0964706 C18,14.7736471 17.4748235,15.4868235 16.856,15.7195294 L11.6503529,17.6247059 C11.5138823,17.6757647 11.3611765,17.6470588 11.2355294,17.6470588 L11.2355294,17.6470588 Z" id="形状" fill="currentColor"></path>
</g>
</g>
</g>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title></title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="导航栏" transform="translate(-1482.000000, -1101.000000)">
<g id="编组-8备份-2" transform="translate(1470.000000, 691.000000)">
<g id="编组-28" transform="translate(12.000000, 410.000000)">
<rect id="矩形" x="0" y="0" width="20" height="20"></rect>
<path d="M9.38802083,9.03334545 L9.38802083,17.1062621 L4.16666667,17.1062621 C3.70642938,17.1062621 3.33333333,16.7331661 3.33333333,16.2729288 L3.33333333,9.86667879 C3.33333333,9.40644149 3.70642938,9.03334545 4.16666667,9.03334545 L9.38802083,9.03334545 Z M15.4166667,9.03334545 C15.876904,9.03334545 16.25,9.40644149 16.25,9.86667879 L16.25,16.2729288 C16.25,16.7331661 15.876904,17.1062621 15.4166667,17.1062621 L10.1953125,17.1062621 L10.1953125,9.03334545 L15.4166667,9.03334545 Z M7.36979167,3.68800872 L9.0823159,5.40053295 C9.20108459,5.51930164 9.2900246,5.65660351 9.34913591,5.80312935 L10.2341974,5.80312935 C10.2933087,5.65660351 10.3822487,5.51930164 10.5010174,5.40053295 L12.2135417,3.68800872 C12.6864422,3.21510821 13.4531654,3.21510821 13.9260659,3.68800872 C14.3989664,4.16090923 14.3989664,4.92763244 13.9260659,5.40053295 L13.5223333,5.80333334 L15.4166667,5.80417879 C15.876904,5.80417879 16.25,6.17727483 16.25,6.63751212 L16.25,7.39272045 C16.25,7.85295774 15.876904,8.22605379 15.4166667,8.22605379 L4.16666667,8.22605379 C3.70642938,8.22605379 3.33333333,7.85295774 3.33333333,7.39272045 L3.33333333,6.63751212 C3.33333333,6.17727483 3.70642938,5.80417879 4.16666667,5.80417879 L6.05933333,5.80333334 L5.65726743,5.40053295 C5.18436692,4.92763244 5.18436692,4.16090923 5.65726743,3.68800872 C6.13016794,3.21510821 6.89689116,3.21510821 7.36979167,3.68800872 Z" id="形状结合" fill="currentColor"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="16px" viewBox="0 0 20 16" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>矩形</title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="运营-系统配置-还车2备份-7" transform="translate(-248.000000, -671.000000)">
<g id="编组-11备份-2" transform="translate(232.000000, 606.000000)">
<g id="编组-22" transform="translate(16.000000, 62.000000)">
<g id="编组-16" transform="translate(0.000000, 3.000000)">
<path d="M6,0 L14,0 C17.3137085,-6.08718376e-16 20,2.6862915 20,6 L20,10 C20,13.3137085 17.3137085,16 14,16 L0,16 L0,16 L0,6 C-4.05812251e-16,2.6862915 2.6862915,6.08718376e-16 6,0 Z" id="矩形" fill="#EF2F6E"></path>
<text id="新" font-family="PingFangSC-Semibold, PingFang SC" font-size="10" font-weight="500" fill="#FFFFFF">
<tspan x="5" y="12"></tspan>
</text>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title></title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="导航栏" transform="translate(-1482.000000, -1012.000000)">
<g id="编组-8备份-2" transform="translate(1470.000000, 691.000000)">
<g id="编组-26" transform="translate(12.000000, 321.000000)">
<rect id="矩形" x="0" y="0" width="20" height="20"></rect>
<path d="M6.41851579,4.16666667 L6.41851579,4.43573282 C6.41851579,4.86056724 6.73642011,5.21115113 7.14731756,5.2625733 L7.25184912,5.26906615 L12.7505527,5.26906615 C13.1753872,5.26906615 13.5259711,4.95116183 13.5773932,4.54026438 L13.5838861,4.43573282 L13.5838861,4.16666667 L15.8333333,4.16666667 C16.2935706,4.16666667 16.6666667,4.53976271 16.6666667,5 L16.6666667,16.6666667 C16.6666667,17.126904 16.2935706,17.5 15.8333333,17.5 L4.16666667,17.5 C3.70642938,17.5 3.33333333,17.126904 3.33333333,16.6666667 L3.33333333,5 C3.33333333,4.53976271 3.70642938,4.16666667 4.16666667,4.16666667 L6.41851579,4.16666667 Z M9.37914273,8.38409036 C9.33233992,8.36064607 9.27679177,8.36064527 9.2299771,8.38407834 L9.2299771,8.38407834 L9.18672095,8.41540261 L7.60162322,10.001755 L7.57042314,10.0450346 C7.53922738,10.1074756 7.54964822,10.1854107 7.60167634,10.2374974 L7.60167634,10.2374974 L12.4776877,15.1129722 L12.5627241,15.1871905 C12.6523874,15.2553237 12.7552585,15.3048212 12.8652823,15.3322571 L12.8652823,15.3322571 L14.5299438,15.747363 L14.5967646,15.7570461 C14.7516663,15.7636391 14.8950497,15.6608821 14.9340244,15.5045852 C14.9472458,15.4515648 14.9472297,15.3961071 14.9339775,15.3430944 L14.9339775,15.3430944 L14.5177764,13.6781633 L14.4830878,13.57086 C14.4413128,13.4663877 14.3786585,13.3710796 14.2985439,13.2909738 L14.2985439,13.2909738 L9.42238307,8.41534951 Z M7.55976274,6.56398629 C7.49736123,6.53280637 7.41947688,6.54323499 7.36743696,6.59525737 L7.36743696,6.59525737 L5.78322429,8.17893623 L5.75197506,8.22218917 C5.72853571,8.26900215 5.72852635,8.32455414 5.75194992,8.37137502 L5.75194992,8.37137502 L5.78318457,8.41463849 L5.78318457,8.41463849 L6.76241386,9.39213767 L6.80566622,9.42332445 C6.86806773,9.45450437 6.94595209,9.44407575 6.997992,9.39205337 L6.997992,9.39205337 L8.58220467,7.80837451 L8.61345391,7.76512158 C8.63689325,7.71830859 8.63690261,7.6627566 8.61347905,7.61593572 L8.61347905,7.61593572 L8.58224439,7.57267225 L8.58224439,7.57267225 L7.60301511,6.59517307 Z M12.0833333,2.5 C12.5435706,2.5 12.9166667,2.87309604 12.9166667,3.33333333 L12.9166667,3.75 C12.9166667,4.21023729 12.5435706,4.58333333 12.0833333,4.58333333 L7.91666667,4.58333333 C7.45642938,4.58333333 7.08333333,4.21023729 7.08333333,3.75 L7.08333333,3.33333333 C7.08333333,2.87309604 7.45642938,2.5 7.91666667,2.5 L12.0833333,2.5 Z" id="形状结合" fill="currentColor"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>矩形</title>
<g id="废弃" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="绩效管理-绩效统计" transform="translate(-12.000000, -624.000000)">
<g id="编组-7" transform="translate(0.000000, 614.000000)">
<g id="编组-18" transform="translate(12.000000, 10.000000)">
<rect id="矩形" x="0" y="0" width="20" height="20"></rect>
<path d="M15.4093567,2 C16.2878447,2 17,2.71215525 17,3.59064327 L17,16.4093567 C17,17.2878447 16.2878447,18 15.4093567,18 L4.59064327,18 C3.71215525,18 3,17.2878447 3,16.4093567 L3,3.59064327 C3,2.71215525 3.71215525,2 4.59064327,2 L15.4093567,2 Z M14.2640963,14.5068226 L5.91971114,14.5068226 C5.6268818,14.5068226 5.38949672,14.7442077 5.38949672,15.037037 C5.38949672,15.3298664 5.6268818,15.5672515 5.91971114,15.5672515 L5.91971114,15.5672515 L14.2640963,15.5672515 C14.5569256,15.5672515 14.7943107,15.3298664 14.7943107,15.037037 C14.7943107,14.7442077 14.5569256,14.5068226 14.2640963,14.5068226 L14.2640963,14.5068226 Z M8.25971993,12.3859649 L5.91971114,12.3859649 C5.6268818,12.3859649 5.38949672,12.62335 5.38949672,12.9161793 C5.38949672,13.2090087 5.6268818,13.4463938 5.91971114,13.4463938 L5.91971114,13.4463938 L8.25971993,13.4463938 C8.55254927,13.4463938 8.78993435,13.2090087 8.78993435,12.9161793 C8.78993435,12.62335 8.55254927,12.3859649 8.25971993,12.3859649 L8.25971993,12.3859649 Z M9.95517749,4.69875426 C9.79519362,4.69875426 9.66078094,4.73012863 9.55193945,4.79287738 C9.44309796,4.85562612 9.35523796,4.93773351 9.28835946,5.03919956 C9.22148096,5.14066561 9.15853648,5.26816571 9.09952604,5.42169987 C9.04051559,5.57523402 8.99002888,5.70673936 8.94806589,5.81621589 L8.94806589,5.81621589 L7.47280476,9.62920322 C7.41248298,9.78140229 7.36920865,9.90022437 7.34298179,9.98566947 C7.31675492,10.0711146 7.30364149,10.1538895 7.30364149,10.2339943 C7.30364149,10.3728426 7.36002925,10.497005 7.47280476,10.6064815 C7.58558028,10.715958 7.71540326,10.7706963 7.8622737,10.7706963 C8.03537101,10.7706963 8.15994861,10.7192957 8.23600652,10.6164946 C8.31206443,10.5136934 8.40385845,10.3154341 8.5113886,10.0217166 L8.5113886,10.0217166 L8.78677068,9.26873173 L11.1314524,9.26873173 L11.4068344,10.0056957 C11.4435521,10.0964811 11.4874821,10.2012848 11.5386244,10.3201069 C11.5897668,10.438929 11.6376308,10.5270442 11.6822165,10.5844527 C11.7268022,10.6418611 11.7818786,10.6872538 11.8474458,10.7206308 C11.9130129,10.7540078 11.9916935,10.7706963 12.0834875,10.7706963 C12.2408487,10.7706963 12.3752614,10.7139554 12.4867256,10.6004736 C12.5981898,10.4869919 12.6539218,10.3621619 12.6539218,10.2259838 C12.6539218,10.095146 12.5949114,9.8855385 12.4768905,9.59716131 L12.4768905,9.59716131 L10.9701571,5.80820541 C10.8993446,5.61862411 10.8409898,5.46709257 10.7950928,5.35361081 C10.7491958,5.24012904 10.6928081,5.13399021 10.6259296,5.03519432 C10.559051,4.93639843 10.4711911,4.85562612 10.3623496,4.79287738 C10.2535081,4.73012863 10.1177841,4.69875426 9.95517749,4.69875426 Z M9.94730943,5.95239401 L10.81673,8.37556347 L9.09362499,8.37556347 L9.94730943,5.95239401 Z M13.5382932,4.58869396 C13.3014271,4.58869396 13.1094092,4.78071188 13.1094092,5.01757798 L13.1094092,5.01757798 L13.1084486,5.27469396 L12.8720958,5.2748538 C12.6309422,5.2748538 12.4354486,5.4703474 12.4354486,5.71150097 C12.4354486,5.95265455 12.6309422,6.14814815 12.8720958,6.14814815 L12.8720958,6.14814815 L13.1084486,6.14769396 L13.1094092,6.40542397 C13.1094092,6.64229007 13.3014271,6.83430799 13.5382932,6.83430799 C13.7751593,6.83430799 13.9671772,6.64229007 13.9671772,6.40542397 L13.9671772,6.40542397 L13.9664486,6.14769396 L14.2044907,6.14814815 C14.4456443,6.14814815 14.6411379,5.95265455 14.6411379,5.71150097 C14.6411379,5.4703474 14.4456443,5.2748538 14.2044907,5.2748538 L14.2044907,5.2748538 L13.9664486,5.27469396 L13.9671772,5.01757798 C13.9671772,4.78071188 13.7751593,4.58869396 13.5382932,4.58869396 Z" id="形状结合" fill="currentColor"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title></title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="导航栏" transform="translate(-1482.000000, -1057.000000)">
<g id="编组-8备份-2" transform="translate(1470.000000, 691.000000)">
<g id="编组-27" transform="translate(12.000000, 366.000000)">
<rect id="矩形" x="0" y="0" width="20" height="20"></rect>
<path d="M13.6539996,9.0235638 L9.90814463,12.7694188 C9.73625568,12.9413077 9.51069577,13.027134 9.2853723,13.026898 C9.05981239,13.027134 8.83448891,12.9413077 8.66236353,12.7694188 L6.34576395,10.4528192 C6.00245893,10.1092777 6.00245893,9.55223462 6.34576395,9.2089296 C6.68930541,8.86538814 7.24611211,8.86538814 7.58965356,9.2089296 L9.2853723,10.9044119 L12.41011,7.77967419 C12.7536515,7.43613274 13.3104582,7.43613274 13.6539996,7.77967419 C13.9975411,8.12297921 13.9975411,8.68002234 13.6539996,9.0235638 M15.9126724,4.21374698 L10.6191076,2.59274201 C10.2155114,2.469086 9.78425218,2.469086 9.38065599,2.59274201 L4.08709119,4.21374698 C3.63904504,4.35087984 3.33333333,4.76440634 3.33333333,5.23302242 L3.33333333,11.313919 C3.33333333,12.7918802 4.06179254,14.1755035 5.28085637,15.0117775 L8.92669894,17.5125607 C9.5733513,17.956351 10.4264123,17.956351 11.0730646,17.5125607 L14.7186708,15.0117775 C15.937971,14.1755035 16.6666667,12.7918802 16.6666667,11.313919 L16.6666667,5.23302242 C16.6666667,4.76440634 16.3607185,4.35087984 15.9126724,4.21374698" id="Fill-29" fill="currentColor"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title></title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="导航栏" transform="translate(-1482.000000, -1277.000000)">
<g id="编组-8备份-2" transform="translate(1470.000000, 691.000000)">
<g id="编组" transform="translate(12.000000, 586.000000)">
<rect id="矩形" x="0" y="0" width="20" height="20"></rect>
<path d="M6.41851579,4.16666667 L6.41851579,4.43573282 C6.41851579,4.86056724 6.73642011,5.21115113 7.14731756,5.2625733 L7.25184912,5.26906615 L12.7505527,5.26906615 C13.1753872,5.26906615 13.5259711,4.95116183 13.5773932,4.54026438 L13.5838861,4.43573282 L13.5838861,4.16666667 L15.8333333,4.16666667 C16.2935706,4.16666667 16.6666667,4.53976271 16.6666667,5 L16.6666667,16.6666667 C16.6666667,17.126904 16.2935706,17.5 15.8333333,17.5 L4.16666667,17.5 C3.70642938,17.5 3.33333333,17.126904 3.33333333,16.6666667 L3.33333333,5 C3.33333333,4.53976271 3.70642938,4.16666667 4.16666667,4.16666667 L6.41851579,4.16666667 Z M10.5733214,7.13709815 C9.83583276,6.39784969 8.81564018,6.12063152 7.86305073,6.30544363 C7.59878398,6.35472687 7.50659791,6.69354908 7.6971158,6.88452159 L7.6971158,6.88452159 L9.32573647,8.51086821 C9.55927453,8.73880315 9.55927453,9.10842738 9.32573647,9.34252272 L9.32573647,9.34252272 L8.49606179,10.1741772 C8.26252373,10.4021122 7.88763369,10.4021122 7.66024137,10.1741772 L7.66024137,10.1741772 L6.04391217,8.56015144 C5.85339428,8.36917892 5.51537867,8.46774538 5.46621276,8.73264274 C5.29413209,9.66902412 5.57069031,10.6731699 6.28974171,11.3939372 C7.10097917,12.2071105 8.25023225,12.4596871 9.27657056,12.1578273 C9.44865124,12.108544 9.62687765,12.1455065 9.74979242,12.2687145 L9.74979242,12.2687145 L13.0352658,15.539833 C13.2688038,15.7677679 13.6436939,15.7677679 13.8710862,15.539833 L13.8710862,15.539833 L14.7069066,14.7081784 C14.9342989,14.4802435 14.9342989,14.1044589 14.7069066,13.8765239 L14.7069066,13.8765239 L11.4337247,10.6177263 C11.31081,10.4945182 11.2800813,10.3097061 11.3292472,10.1433752 C11.6426798,9.10842738 11.3907046,7.94411105 10.5733214,7.13709815 Z M12.0833333,2.5 C12.5435706,2.5 12.9166667,2.87309604 12.9166667,3.33333333 L12.9166667,3.75 C12.9166667,4.21023729 12.5435706,4.58333333 12.0833333,4.58333333 L7.91666667,4.58333333 C7.45642938,4.58333333 7.08333333,4.21023729 7.08333333,3.75 L7.08333333,3.33333333 C7.08333333,2.87309604 7.45642938,2.5 7.91666667,2.5 L12.0833333,2.5 Z" id="形状结合" fill="currentColor"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title></title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="导航栏" transform="translate(-1482.000000, -1189.000000)">
<g id="编组-8备份-2" transform="translate(1470.000000, 691.000000)">
<g id="编组-30" transform="translate(12.000000, 498.000000)">
<rect id="矩形" x="0" y="0" width="20" height="20"></rect>
<path d="M10.003343,2.5 L10.003343,9.99665701 L17.5,9.99665701 C17.5,11.1332084 17.2470792,12.2106861 16.7944504,13.1758772 L16.7717707,13.2223049 C15.5767777,15.7702863 12.9884044,17.5351014 9.98829953,17.5351014 C5.85301984,17.5351014 2.5,14.1820816 2.5,10.0468019 C2.5,9.70340802 2.52312125,9.36540837 2.5678917,9.03427496 C3.04027811,5.34845685 6.18915959,2.5 10.003343,2.5 L10.003343,2.5 Z M11.1232449,2.5 C14.6016269,2.5 17.4214397,5.31981279 17.4214397,8.79819478 L17.4214397,8.79819478 L11.5411188,8.79819478 C11.3104524,8.79819478 11.1232449,8.6109873 11.1232449,8.38032093 L11.1232449,8.38032093 Z M12.193002,3.68007577 L12.193002,7.72843771 L16.2413639,7.72843771 C16.1728326,7.39915311 16.0725429,7.07655449 15.9404948,6.76398485 C15.6763985,6.14218854 15.2986405,5.58223758 14.8189213,5.10251839 C14.3392021,4.6211277 13.7792512,4.24336973 13.1574549,3.98094495 C12.8448852,3.84889681 12.5222866,3.74860709 12.193002,3.68007577 L12.193002,3.68007577 Z" id="形状结合" fill="currentColor"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title></title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="导航栏" transform="translate(-1482.000000, -821.000000)">
<g id="编组-8备份-2" transform="translate(1470.000000, 691.000000)">
<g id="编组" transform="translate(12.000000, 130.000000)">
<rect id="矩形" x="0" y="0" width="20" height="20"></rect>
<path d="M9.99988992,2.91666837 C10.7401674,2.91581727 11.4448417,3.23429415 11.9333505,3.79049573 L13.4646642,3.71773059 C13.9946919,3.69241832 14.4859913,3.99477027 14.7022211,4.47933895 C14.9184509,4.96390763 14.8153449,5.53149298 14.4425026,5.90905608 L13.3332983,7.03176428 C14.7519207,7.84731342 15.886561,9.16706705 16.5330871,10.7707979 C17.0987974,12.1726538 17.2282314,13.7448316 16.9217111,15.4863655 C16.7591508,16.4100017 15.9566859,17.083335 15.0188381,17.083335 L4.98094174,17.083335 C4.04309396,17.083335 3.24062905,16.4100017 3.07806878,15.4863655 C2.77187044,13.7448316 2.90130444,12.1732977 3.46669275,10.7707979 C4.11386274,9.16642311 5.24914702,7.84602554 6.66873532,7.03079837 L5.56049696,5.90937805 C5.18751751,5.53192803 5.08422822,4.96435581 5.30031926,4.47970778 C5.5164103,3.99505975 6.00764111,3.69255847 6.53769145,3.71773059 L8.06707327,3.79049573 C8.55543391,3.2344632 9.25983699,2.91600284 9.99988992,2.91666837 Z M11.3104167,7.54501865 C10.9716261,7.3494178 10.5384162,7.46549603 10.3428153,7.80428664 L10.3428153,7.80428664 L9.71633333,8.8880017 L9.09051799,7.80428664 C8.89491715,7.46549603 8.46170727,7.3494178 8.12291667,7.54501865 C7.78412606,7.7406195 7.66804782,8.17382937 7.86364867,8.51261998 L7.86364867,8.51261998 L8.80333333,10.1410017 L7.2375,10.1411053 C7.04189915,10.1411053 6.88333333,10.2996711 6.88333333,10.495272 C6.88333333,10.6908728 7.04189915,10.8494386 7.2375,10.8494386 L7.2375,10.8494386 L9.00833333,10.8494386 L9.00833333,12.2660017 L7.2375,12.2661053 C7.04189915,12.2661053 6.88333333,12.4246711 6.88333333,12.620272 C6.88333333,12.8158728 7.04189915,12.9744386 7.2375,12.9744386 L7.2375,12.9744386 L9.00833333,12.9740017 L9.00833333,14.3911053 C9.00833333,14.782307 9.32546497,15.0994386 9.71666667,15.0994386 C10.1078684,15.0994386 10.425,14.782307 10.425,14.3911053 L10.425,14.3911053 L10.4243333,12.9740017 L12.1958333,12.9744386 C12.3914342,12.9744386 12.55,12.8158728 12.55,12.620272 C12.55,12.4246711 12.3914342,12.2661053 12.1958333,12.2661053 L12.1958333,12.2661053 L10.4243333,12.2660017 L10.425,10.8494386 L12.1958333,10.8494386 C12.3914342,10.8494386 12.55,10.6908728 12.55,10.495272 C12.55,10.2996711 12.3914342,10.1411053 12.1958333,10.1411053 L12.1958333,10.1411053 L10.6283333,10.1410017 L11.5696847,8.51261998 C11.7652855,8.17382937 11.6492073,7.7406195 11.3104167,7.54501865 Z" id="形状结合" fill="currentColor"></path>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="18px" height="18px" viewBox="0 0 18 18" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title>路径</title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="运营-系统配置-还车2备份-7" transform="translate(-249.000000, -724.000000)" fill-rule="nonzero">
<g id="编组-11备份-2" transform="translate(232.000000, 606.000000)">
<g id="编组-22备份-2" transform="translate(16.000000, 116.000000)">
<g id="喇叭" transform="translate(0.000000, 1.000000)">
<rect id="矩形" fill="#000000" opacity="0" x="0" y="0" width="20" height="20"></rect>
<path d="M1.25,10 C1.25,14.8324916 5.16750844,18.75 10,18.75 C14.8324916,18.75 18.75,14.8324916 18.75,10 C18.75,5.16750844 14.8324916,1.25 10,1.25 C5.16750844,1.25 1.25,5.16750844 1.25,10 Z" id="路径" fill="#ECF7FF"></path>
<path d="M14.6599962,10.3577879 L12.8400896,10.3577879 C12.6523176,10.3577879 12.5001826,10.1971202 12.5001826,9.99871451 C12.5001826,9.80041108 12.6524144,9.63974336 12.8400896,9.63974336 L14.6599962,9.63974336 C14.8477682,9.63974336 15,9.80041108 15,9.99871451 C15,10.1971202 14.8477682,10.3577879 14.6599962,10.3577879 Z M14.4208992,14.1666664 C14.3619631,14.1666664 14.3040492,14.1504073 14.2528825,14.1195192 L12.6717824,13.1681945 C12.5087045,13.0701166 12.4517628,12.8508476 12.5447288,12.678521 C12.637598,12.5062967 12.8451252,12.4461614 13.0083,12.5443415 L14.5894001,13.4955639 C14.7236198,13.5761534 14.7894707,13.7421393 14.7498633,13.8996366 C14.7103528,14.0572361 14.5752615,14.1668706 14.4208992,14.1666664 Z M12.8403801,7.50054131 C12.6860178,7.50064351 12.5510234,7.39111129 12.511416,7.23351171 C12.4718086,7.07601439 12.5376595,6.91013086 12.6717824,6.82943906 L14.2528825,5.87801212 C14.4156699,5.78320692 14.6202919,5.84416042 14.7123864,6.01464615 C14.804384,6.18523414 14.7496696,6.4021509 14.5895938,6.50166056 L13.0084936,7.45329205 C12.9573175,7.48425834 12.8993611,7.50054131 12.8403801,7.50054131 Z" id="形状" fill="#0093FF"></path>
<path d="M10.3855469,13.6302734 L7.5578125,12.2164062 C7.51992187,12.1974609 7.47792969,12.1875 7.43554688,12.1875 L4.4921875,12.1875 C4.34121094,12.1875 4.21875,12.0650391 4.21875,11.9140625 L4.21875,8.0859375 C4.21875,7.93496094 4.34121094,7.8125 4.4921875,7.8125 L7.43554688,7.8125 C7.47792969,7.8125 7.51992187,7.80253906 7.5578125,7.78359375 L10.3855469,6.36972656 C10.5673828,6.27890625 10.78125,6.4109375 10.78125,6.61425781 L10.78125,13.3857422 C10.78125,13.5888672 10.5673828,13.7210937 10.3855469,13.6302734 L10.3855469,13.6302734 Z" id="路径" fill="#0093FF"></path>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title></title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="导航栏" transform="translate(-1482.000000, -917.000000)">
<g id="编组-8备份-2" transform="translate(1470.000000, 691.000000)">
<g id="编组-2" transform="translate(12.000000, 226.000000)">
<rect id="矩形" x="0" y="0" width="20" height="20"></rect>
<g id="编组" transform="translate(2.500000, 2.500000)" fill="currentColor">
<path d="M13.0210701,7.5 C13.289536,7.5 13.5388258,7.71141799 13.5963542,7.98049544 C13.6155303,8.07659453 13.6922349,8.1534738 13.7881155,8.19191344 C13.9415246,8.23035307 14.0949337,8.30723235 14.2291667,8.38411162 C14.3250474,8.42255126 14.420928,8.42255126 14.5168087,8.3648918 C14.701379,8.23035307 14.9740397,8.24296608 15.1677861,8.37697926 L15.2455019,8.44177107 L15.5139678,8.69162871 C15.7057292,8.90304671 15.7440815,9.21056379 15.5906724,9.4412016 C15.533144,9.53730069 15.533144,9.63339978 15.5714962,9.72949887 C15.6482008,9.8640376 15.7057292,10.0177961 15.7632576,10.1715547 C15.8016099,10.2676538 15.8783144,10.344533 15.9741951,10.3637529 C16.2128315,10.4150057 16.4060133,10.6181188 16.4459964,10.851604 L16.4535985,10.9403474 L16.4535985,11.3055239 C16.4535985,11.5746014 16.242661,11.824459 15.9741951,11.8821185 C15.8783144,11.9013383 15.8016099,11.9782176 15.7632576,12.0743166 C15.7376894,12.1511959 15.6950758,12.2366173 15.6524621,12.3248861 L15.5906724,12.458713 L15.5523201,12.5163725 C15.5139678,12.6124716 15.5139678,12.7277905 15.5714962,12.8046697 C15.6290246,12.9007688 15.6673769,13.0160877 15.6673769,13.1314066 C15.6673769,13.2544135 15.6305587,13.3774203 15.5569224,13.480746 L15.4947917,13.5542426 L15.2455019,13.8041002 C15.0537405,14.0155182 14.7085701,14.0347381 14.5168087,13.9001993 C14.420928,13.8425399 14.3250474,13.8425399 14.2291667,13.8809795 C14.0757576,13.9578588 13.9223485,14.0347381 13.7881155,14.0731777 C13.6922349,14.1116173 13.6155303,14.1884966 13.5963542,14.2845957 C13.5452178,14.5408599 13.3425663,14.7363801 13.1096117,14.7766652 L13.0210701,14.784311 L12.6758996,14.784311 C12.4074337,14.784311 12.1581439,14.572893 12.1006155,14.2845957 C12.0814394,14.1884966 12.0047349,14.1116173 11.9088542,14.0731777 C11.8449337,14.0475513 11.7724905,14.0133827 11.6972064,13.9763668 L11.5828598,13.9194192 L11.467803,13.8617597 C11.4294508,13.8425399 11.3719224,13.8233201 11.3335701,13.8233201 C11.2760417,13.8233201 11.2185133,13.8425399 11.180161,13.8617597 C10.9788116,13.9962984 10.7040535,13.9836854 10.5100449,13.8496722 L10.4322917,13.7848804 L10.1830019,13.5350228 C9.97206441,13.3236048 9.93371213,13.0160877 10.0871212,12.7854499 C10.1302675,12.7133756 10.1410541,12.6413013 10.1275709,12.569227 L10.1062974,12.4971526 L10.0487689,12.4010535 C9.99124054,12.2857346 9.93371213,12.1704157 9.89535985,12.0550968 C9.85700758,11.9589977 9.78030304,11.8821185 9.68442235,11.8628986 C9.46283144,11.8116458 9.22608902,11.6237187 9.17621528,11.3801095 L9.16666667,11.2863041 L9.16666667,10.9403474 C9.16666667,10.6520501 9.43513257,10.4214123 9.68442235,10.3637528 C9.78030304,10.344533 9.85700758,10.2676538 9.89535985,10.1715547 C9.91453599,10.0946754 9.9720644,9.99857631 10.0295928,9.90247722 C10.0679451,9.84481777 10.0871212,9.78715831 10.1254735,9.72949886 C10.1638258,9.63339977 10.1638258,9.51808086 10.1062974,9.44120159 C10.0487689,9.3451025 10.0104167,9.22978359 10.0104167,9.11446469 C10.0104167,8.99145786 10.0472349,8.86845102 10.1208712,8.76512528 L10.1830019,8.6916287 L10.4322917,8.44177107 C10.6432292,8.24957289 10.9692235,8.21113326 11.180161,8.3648918 C11.2760417,8.42255126 11.3719223,8.42255126 11.467803,8.38411162 C11.6403883,8.28801253 11.7746212,8.23035308 11.9088542,8.19191344 C12.0047348,8.1534738 12.0814394,8.07659453 12.1006155,7.98049544 C12.1517519,7.74131549 12.3544034,7.54769362 12.587358,7.50761938 L12.6758996,7.5 L13.0210701,7.5 Z M7.75359997,6.7909619 C8.39530235,6.7909619 9.0186833,6.86922381 9.61492139,7.01647381 C9.90874282,7.08908095 9.99673092,7.47405714 9.75583806,7.65727143 C8.62963568,8.51385476 7.90220711,9.86737857 7.90220711,11.3916762 C7.90220711,12.3502714 8.19195711,13.2392 8.68640949,13.9811048 C8.84971901,14.226069 8.68392139,14.5535929 8.38942139,14.5535929 L8.38942139,14.5535929 L0.365314252,14.5535929 C0.154052347,14.5535929 -0.00993574824,14.3746762 0.000469013663,14.1638667 C0.203588061,10.057831 3.59712378,6.7909619 7.75359997,6.7909619 Z M12.8484849,9.21056379 C11.7937974,9.21056379 10.9500474,10.0562358 10.9500474,11.1133258 C10.9500474,12.1704157 11.7937974,13.0160877 12.8484849,13.0160877 C13.8839962,13.0160877 14.7469224,12.1511959 14.7469224,11.1133258 C14.7469224,10.0562358 13.9031724,9.21056379 12.8484849,9.21056379 Z M7.75344163,0 C9.41616782,0 10.7640369,1.34764286 10.7640369,3.01036905 C10.7640369,4.67309524 9.41616782,6.02096429 7.75344163,6.02096429 C6.09094163,6.02096429 4.74307259,4.67309524 4.74307259,3.01036905 C4.74307259,1.34764286 6.09094163,0 7.75344163,0 Z" id="形状结合"></path>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<svg width="20px" height="20px" viewBox="0 0 20 20" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
<title></title>
<g id="页面-1" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
<g id="导航栏" transform="translate(-1482.000000, -869.000000)">
<g id="编组-8备份-2" transform="translate(1470.000000, 691.000000)">
<g id="编组" transform="translate(12.000000, 178.000000)">
<rect id="矩形" x="0" y="0" width="20" height="20"></rect>
<g id="监控20190611" transform="translate(10.255376, 10.446962) rotate(-360.000000) translate(-10.255376, -10.446962) translate(2.222222, 4.027778)" fill="currentColor">
<path d="M12.9869489,3.75898799 C13.0874076,4.02068671 13.2259073,4.50012963 13.4024479,5.19731676 C13.5107309,5.72995245 13.5651468,6.27148864 13.5649284,6.81428906 C13.5649284,7.05307756 13.5545742,7.28933921 13.5338659,7.52307399 C14.7582001,7.67986486 15.7607517,8.5397898 16.0663083,9.69524193 L15.4614441,9.74698768 C15.7325633,10.6261293 15.4467669,11.5771543 14.7304009,12.179629 C14.014035,12.7821038 12.9991904,12.9249379 12.1345144,12.5449865 C11.2698385,12.1650352 10.7147688,11.3323578 10.7146933,10.4150682 C10.7146933,10.3422286 10.7181637,10.270213 10.7251044,10.1990214 C10.697114,10.3318465 10.5511888,10.6967035 9.79306044,10.6952203 L5.21032621,10.6952203 C5.11659766,11.7658656 4.27981082,12.6373093 3.18121931,12.8083658 C2.0826278,12.9794223 1.00455641,12.4061322 0.567026544,11.4182066 C0.129496678,10.4302811 0.444948247,9.28160503 1.33195845,8.6328061 L0.610866051,8.65175757 C0.112672271,8.65175757 -0.104082132,8.20532688 0.0476459497,7.69594435 C0.182136083,7.24473459 0.662067879,6.72365159 0.662067879,6.72365159 C0.949139458,6.45833103 1.31079503,6.21278591 1.66903715,6.21278591 L5.62864514,6.21278591 C5.98683299,6.21278591 6.27720162,6.49315525 6.27720162,6.83900836 L6.27720162,7.89369881 C6.27225211,8.14913165 6.62810481,8.32167242 7.76683345,8.32430914 C10.2948383,8.13528884 10.7660658,7.17271901 11.199916,6.44020354 C11.2633507,6.02940716 11.2951262,5.61463181 11.2949807,5.19929431 C11.2967057,3.98372661 11.0218752,2.78263084 10.4899173,1.6809129 L8.45327929,1.6809129 C8.13750841,1.6809129 7.88152555,1.43374519 7.88152555,1.12884837 C7.88152555,0.823951547 8.13750841,0.576783838 8.45327929,0.576783838 L10.2714562,0.576783838 C10.2805613,0.255722188 10.5527292,0 10.8853661,0 L12.1824791,0 C12.333295,0 12.4555555,0.118050249 12.4555555,0.263672612 L12.4555555,1.41724029 C12.4555555,1.56286265 12.333295,1.6809129 12.1824791,1.6809129 L11.7341217,1.6809129 C11.9939575,2.00126575 12.2291478,2.33956153 12.4378055,2.69308614 C12.6901465,3.1073523 12.8731943,3.46265292 12.9869489,3.75898799 Z M2.3140095,9.59092645 C1.83172135,9.83059522 1.61209339,10.3812716 1.80332262,10.8713792 C1.99455185,11.3614868 2.53589555,11.6353461 3.06207461,11.5081667 C3.58825367,11.3809874 3.93213076,10.8931671 3.86167007,10.3738693 C3.32934174,10.149418 2.7137251,9.84570011 2.3140095,9.59092645 Z M12.0800749,10.4233079 C12.0801492,10.8477212 12.3498338,11.228637 12.7593701,11.3827771 C13.1689063,11.5369172 13.6344331,11.4327181 13.9319614,11.1203155 C14.2294897,10.807913 14.2980944,10.3512777 14.1047663,9.97012062 L12.1887939,9.97012062 C12.1171142,10.1111592 12.0799197,10.2662027 12.0800749,10.4233079 Z M6.37960528,5.53712484 L1.31062436,5.5206453 C0.95238224,5.5206453 1.02048067,5.2568079 1.02048067,4.91090239 C1.02048067,4.56504928 1.3108493,4.28467994 1.66903715,4.28467994 L6.08946159,4.28467994 C6.44764944,4.28467994 6.73801807,4.56504928 6.73801807,4.91090239 C6.73801807,5.2568079 6.73784739,5.53712484 6.37960528,5.53712484 Z" id="形状结合"></path>
</g>
</g>
</g>
</g>
</g>
</svg>
\ No newline at end of file
<template>
<svg class="svg-icon" :style="{ width: size + 'px', height: size + 'px' }">
<use :xlink:href="`#icon-${name}`" :fill="color" />
</svg>
</template>
<script setup>
defineProps({
name: {
type: String,
required: true,
default: "car"
},
size: {
type: Number,
default: 20
},
color: {
type: String,
default: "#000"
}
})
</script>
\ No newline at end of file
export const asyncRouterMap = [
{
path: '/',
name: 'BasicLayout',
redirect: '/workbench',
component: () => import('@/Layout/BasicLayout.vue'),
meta: {
title: '主页',
},
children: [
{
path: "/workbench",
name: "workbench",
component: () => import('@/views/WorkBench/WorkBench'),
hideChildrenInMenu: true,
meta: {
title: '工作台',
icon: 'businessScreen',
permission: [99]
}
},
{
path: "/SIMCardManage",
name: "simcard-manage",
component: () => import('@/views/SIMCardManage/index'),
meta: {
title: '物联网卡管理',
icon: 'businessScreen',
// permission: [9999]
},
children: [
{
path: "/SIMCardManage/index",
name: "simcard-manage-index",
component: () => import('@/views/SIMCardManage/index'),
meta: {
title: '物联网卡列表',
icon: ''
// permission: [9999]
},
}
]
},
{
path: "/complainManage",
name: "complain-manage",
component: () => import('@/views/ComplainManage/index'),
meta: {
title: '投诉管理',
icon: 'vehicle',
// permission: [9999]
},
children: [
{
path: "/complainManage/index",
name: "complain-manage-index",
component: () => import('@/views/ComplainManage/index'),
meta: {
title: '投诉管理',
// permission: [9999]
},
}
]
},
{
path: "/deviceManage",
name: "device-manage",
component: () => import('@/views/DeviceManage/index'),
meta: {
title: '设备管理',
icon: 'export',
// permission: [9999]
},
children: [
{
path: "/deviceManage/index",
name: "device-manage-index",
component: () => import('@/views/DeviceManage/index'),
meta: {
title: '设备列表',
// permission: [9999]
},
}
]
},
{
path: "/productManage",
name: "product-manage",
component: () => import('@/views/ProductManage/index'),
meta: {
title: '产品管理',
icon: '',
// permission: [9999]
},
children: [
{
path: "/productManage/index",
name: "product-manage-index",
component: () => import('@/views/ProductManage/index'),
meta: {
title: '产品列表',
// permission: [9999]
},
}
]
},
{
path: "/tenant",
name: "tenant-manage",
meta: {
title: '租户管理',
icon: ''
// permission: [9999]
},
children: [
{
path: "/tenant/index",
name: "tenant-manage-index",
component: () => import('@/views/Tenant/TenantList'),
meta: {
title: '租户列表',
// permission: [9999]
},
},
{
path: "/tenant/create",
name: "tenant-manage-create",
component: () => import('@/views/Tenant/CreateTenant'),
meta: {
title: '新建租户',
// permission: [9999]
},
}
]
},
]
},
{
path: '/:pathMatch(.*)*',
redirect: '/404',
hidden: true
}
]
export const constantRouterMap = [
{
path: '/login',
name: 'login',
meta: {
title: '登录',
},
component: () => import( '@/views/Login.vue')
},
{
path: '/about',
meta: {
title: '关于我们',
},
component: () => import(/* webpackChunkName: "fail" */ '@/views/AboutView')
},
{
path: '/404',
meta: {
title: '404',
},
component: () => import(/* webpackChunkName: "fail" */ '@/views/Exception/404')
}
]
\ No newline at end of file
//引入svgicon组件
import SvgIcon from "@/components/SvgIcon.vue"
const componentSvgPlugin = {
install: function(vue, options) {
if (
options &&
options.imports &&
Array.isArray(options.imports) &&
options.imports.length > 0
) {
// 按需引入svg图标
const { imports } = options;
imports.forEach((name) => {
require(`@/assets/icons/${name}.svg`);
});
} else {
// 全量引入svg图标
const ctx = require.context("@/assets/icons", false, /\.svg$/);
ctx.keys().forEach(path => {
const temp = path.match(/\.\/([A-Za-z0-9\-_]+)\.svg$/);
if (!temp) return;
const name = temp[1];
require(`@/assets/icons/${name}.svg`);
});
}
vue.component('SvgIcon', SvgIcon);
}
};
export default componentSvgPlugin
\ No newline at end of file
html,
body,
#app, #root {
height: 100vh;
}
html,
body{
padding: 0;
margin: 0;
}
h1{
margin: 0;
}
\ No newline at end of file
import { useSystemStore } from "@/store/modules/system";
import { computed } from "vue";
export const useSystem = () => {
const systemStore = useSystemStore()
const isCollapsed = computed(() => systemStore.getCollapsed)
const asideWidth = computed(() => systemStore.getCollapsed ? 80 : 200)
return {
isCollapsed,
asideWidth
}
}
\ No newline at end of file
import { createApp } from 'vue' import { createApp } from 'vue'
import App from './App.vue' import App from './App.vue'
import router from './router' import router from './router'
import Antd from 'ant-design-vue';
import 'ant-design-vue/dist/reset.css'
import './global.scss'
import { setupStore } from '@/store'
import './permission'
import componentSvgPlugin from './core/icons'
const Initializer = () => {
const app = createApp(App)
setupStore(app)
app.use(Antd).use(componentSvgPlugin, { imports: [] }).use(router).mount('#app')
}
Initializer()
createApp(App).use(router).mount('#app')
import router from "@/router"
import { setDocumentTitle } from "@/utils/domTools"
import { usePermissionStore } from '@/store/modules/permission'
import { useUser } from '@/store/modules/user'
router.beforeEach(async (to, from, next) => {
const permission = usePermissionStore()
const user = useUser()
to.meta && to.meta.title && setDocumentTitle(`${to.meta.title}-喜安`)
if (permission.getIsDynamicAddedRoute) {
next();
return;
}
const { roles } = await user.GetUserInfo()
const routes = permission.GenerateRoutes(roles)
routes.forEach((item) => {
router.addRoute(item);
})
const redirect = decodeURIComponent(from.query.redirect || to.path)
const nextData = to.path === redirect ? { ...to, replace: true } : { path: redirect }
permission.setDynamicAddedRoute(true);
next(nextData);
next()
})
\ No newline at end of file
import { createRouter, createWebHashHistory } from 'vue-router' import { createRouter, createWebHashHistory } from 'vue-router'
import HomeView from '../views/HomeView.vue' import HomeView from '../views/HomeView.vue'
import { constantRouterMap } from '@/config/router.config'
const routes = [ const routes = [
{ {
...@@ -8,6 +9,11 @@ const routes = [ ...@@ -8,6 +9,11 @@ const routes = [
component: HomeView component: HomeView
}, },
{ {
path: '/login',
name: 'Login',
component: () => import('@/views/Login')
},
{
path: '/about', path: '/about',
name: 'about', name: 'about',
// route level code-splitting // route level code-splitting
...@@ -19,7 +25,7 @@ const routes = [ ...@@ -19,7 +25,7 @@ const routes = [
const router = createRouter({ const router = createRouter({
history: createWebHashHistory(), history: createWebHashHistory(),
routes routes: constantRouterMap
}) })
export default router export default router
import { createPinia } from "pinia"
const store = createPinia()
export const setupStore = (app) => {
app.use(store)
}
\ No newline at end of file
import { defineStore } from "pinia"
import { constantRouterMap, asyncRouterMap } from "@/config/router.config"
const hasPermission = (route, permission) => {
if(route.meta && route.meta.permission){
for (let i = 0; i < permission.length; i++) {
return route.meta.permission.includes(permission[i])
}
}
return true
}
const filterAsyncRouter = (routerMap, roles) => {
return routerMap.filter(route => {
if(hasPermission(route, roles)){
if(route.children && route.children.length){
route.children = filterAsyncRouter(route.children, roles)
}
return true
}
return false
})
}
export const usePermissionStore = defineStore({
id: 'asyncRouter',
state: () => ({
routers: constantRouterMap,
addRouters: [],
isDynamicAddedRoute: false, // 动态路由是否添加完成
}),
getters: {
getIsDynamicAddedRoute () {
return this.isDynamicAddedRoute
},
getAddRouters() {
return this.addRouters
}
},
actions: {
setDynamicAddedRoute(added){
this.isDynamicAddedRoute = added
},
GenerateRoutes(roles = []) {
const accessRoutes = filterAsyncRouter(asyncRouterMap, roles)
this.routers = accessRoutes
this.addRouters = accessRoutes
return accessRoutes
}
}
})
\ No newline at end of file
import { defineStore } from "pinia"
export const useSystemStore = defineStore({
id: 'system',
state: () => ({
collapsed: false
}),
getters: {
getCollapsed () {
return this.collapsed
}
},
actions: {
setCollapsed(isCollapsed) {
this.collapsed = isCollapsed
}
}
})
\ No newline at end of file
import { defineStore } from "pinia"
export const useUser = defineStore({
id: 'user',
state: () => ({
roles: []
}),
getters: {
getUserRoles () {
return this.roles
}
},
actions: {
GetUserInfo(userInfo) {
return new Promise(resolve => {
const roles = [99]
this.setUserRoles(roles)
resolve({
roles
})
})
},
setUserRoles (roles) {
this.roles = roles
}
}
})
\ No newline at end of file
export const setDocumentTitle = (title) => {
document.title = title
const ua = navigator.userAgent
const regex = /\bMicroMessenger\/([\d\.]+)/
if (regex.test(ua) && /ip(hone|od|ad)/i.test(ua)) {
const i = document.createElement('iframe')
i.src = '/favicon.ico'
i.style.display = 'none'
i.onload = function () {
setTimeout(function () {
i.remove()
}, 9)
}
document.body.appendChild(i)
}
}
\ No newline at end of file
<template> <template>
<div class="about"> asd
<h1>This is an about page</h1> </template>
</div> \ No newline at end of file
</template>
<template>
<div v-for="item in 99" :key="item">
投诉管理
</div>
</template>
<script>
export default {
}
</script>
<style lang="scss" scoped>
</style>
\ No newline at end of file
<template>
<div class="test">
车辆管理
</div>
</template>
<script>
export default {
}
</script>
<style lang="scss" scoped>
// .test{
// color: blue;
// }
</style>
\ No newline at end of file
<template>
<a-result status="404" title="404" sub-title="Sorry, the page you visited does not exist.">
<template #extra>
<a-button type="primary" @click="toHome">
Back Home
</a-button>
</template>
</a-result>
</template>
<script>
export default {
name: 'Exception404',
methods: {
toHome () {
this.$router.push({ path: '/' })
}
}
}
</script>
<template> <template>
<div class="home"> <div class="home">
<img alt="Vue logo" src="../assets/logo.png">
<HelloWorld msg="Welcome to Your Vue.js App"/>
</div> </div>
</template> </template>
......
<template>
<div class="bg_wrap">
<div class="login_model">
<div class="login_container">
<div class="login-title">
<img class="login-title_img" src="../assets/images/login_title.png"/>
<div>让出行更简约</div>
</div>
<div class="form_title">
<span class="login-title_text login-title_text__select">
验证码登录
</span>
<span class="login-title_split"></span>
<span class="login-title_text">密码登录</span>
</div>
<div class="form-label">手机号码</div>
<div class="form_item">
<div class="form_select_phone">
<span>+86</span>
</div>
<input
class="form_input line"
v-model="username"
placeholder="注册时填写的手机号"
/>
</div>
<div class="form-label">验证码</div>
<div class="form_item">
<input class="form_input" v-model="password" placeholder="输入密码" />
<div class="form_getcode">获取验证码</div>
</div>
<div class="form-btn" @click="handleLogin">
<div class="form-login_btn">登录</div>
<div class="form-login_proto">
登录即表示同意
<span>《小安软件注册协议》《个人信息处理规则》</span>
</div>
<div class="form-login_other">
<div>企业微信登录</div>
<div>钉钉登录</div>
</div>
</div>
</div>
</div>
</div>
</template>
<script>
export default {
data() {
return {
username: "",
password: "",
};
},
methods: {
adds() {
this.add();
},
handleLogin() {
this.$router.push('/')
},
},
};
</script>
<style lang="scss" scoped>
.bg_wrap {
height: 100%;
background: url("../assets/images/login_bg.png") top left no-repeat;
background-size: cover;
overflow: hidden;
.login_model {
z-index: 1;
position: absolute;
top: 50%;
left: 50%;
margin-left: -190px;
margin-top: -255px;
box-sizing: border-box;
width: 400px;
height: 520px;
padding: 35px 35px 0 35px;
background: #f7f8fc;
box-shadow: 0 20px 30px 0 rgba(63, 63, 65, 0.06);
border-radius: 10px;
.login_container {
width: 100%;
height: 100%;
position: relative;
.login-title{
position: absolute;
top: -90px;
font-size: 20px;
display: flex;
align-items: center;
color: #fac900;
.login-title_img{
width: 100px;
display: block;
margin-right: 40px;
}
}
.form_title {
margin-bottom: 40px;
.login-title_text {
font-size: 20px;
color: #b6b7bf;
}
.login-title_text__select {
font-weight: 600;
color: #1f2026;
}
.login-title_split {
width: 1px;
height: 16px;
background: #e1e2e6;
display: inline-block;
margin: 0 8px;
}
.go_register {
float: right;
vertical-align: middle;
}
}
.form_item {
display: flex;
height: 40px;
line-height: 40px;
margin-bottom: 30px;
color: #595961;
border-bottom: 1px solid #e3e3e3;
.form_select_phone {
margin-right: 5px;
font-size: 14px;
}
.form_input {
flex: 1;
background: #f7f8fc;
border: none;
outline: none;
}
.line {
border-left: 1px solid #ddd;
margin: 8px 0 8px 10px;
padding: 5px 5px 5px 10px;
}
.form_getcode {
color: #2589ff;
cursor: pointer;
font-size: 14px;
}
input::placeholder {
color: #ddd !important;
}
}
.form-label{
color: #1f2026;
font-size: 14px;
font-weight: 600;
padding: 5px 0;
}
.form-btn{
position: absolute;
bottom: 12px;
.form-login_btn {
width: 320px;
height: 50px;
line-height: 50px;
text-align: center;
color: #fff;
background: #fac900;
border-radius: 6px;
font-size: 16px;
margin: 0 auto;
cursor: pointer;
}
.form-login_proto{
font-size: 12px;
color: #9598a6;
span{
color: #1e2226;
}
margin-top: 12px;
padding-bottom: 32px;
border-bottom: 1px dashed #e0ecf0;
}
.form-login_other{
display: flex;
justify-content: space-around;
color: #9598a6;
font-size: 12px;
margin-top: 10px;
}
}
}
}
}
</style>
<template>
<div>
<a-pagination size="small" :total="50" />
<a-pagination size="small" :total="50" show-size-changer show-quick-jumper />
<a-pagination size="small" :total="50" :show-total="total => `Total ${total} items`" />
</div>
</template>
<script >
import { defineComponent, ref } from 'vue';
export default defineComponent({
setup() {
const current1 = ref(1);
const current2 = ref(2);
const onChange = (pageNumber) => {
console.log('Page: ', pageNumber);
};
return {
current1,
current2,
onChange,
};
},
});
</script>
<template>
<div>
<div class="search-input">
<a-input-group compact>
<div
style="
width: 100%;
display: flex;
justify-content: space-around;
align-items: center;
"
>
<div>
<a-select :default-value="1" style="width: 30%;min-width: 30%; max-width: 30%;" size="large">
<a-select-option :value="0"> ICCID </a-select-option>
<a-select-option :value="1"> IMSI </a-select-option>
</a-select>
<a-input-search
style="width: 70%"
placeholder="请输入ICCID"
enterButton="搜索"
:disabled="false"
size="large"
/>
</div>
</div>
</a-input-group>
</div>
<div class="search-filter">
<div class="search-item" v-for="item in 9" :key="item">
<div class="search-label">SIM卡状态:</div>
<div class="search-content">
<a-select placeholder="请选择SIM卡状态" allowClear style="min-width: 170px">
<a-select-option :value="0"> 测试期 </a-select-option>
<a-select-option :value="1"> 正常 </a-select-option>
</a-select>
</div>
</div>
</div>
<div class="seatch-btns">
<div>
<a-space>
<a-button type="primary">批量导入</a-button>
<a-button type="danger">批量删除</a-button>
</a-space>
</div>
<div>
<a-space>
<a-button >重置</a-button>
<a-button type="primary" @click="getData">查询</a-button>
</a-space>
</div>
</div>
<!-- <Table-->
<!-- :dataSource="dataSource"-->
<!-- :columns="columns"-->
<!-- :loading="getLoading"-->
<!-- @pageChange="pageChange"-->
<!-- @pageSizeChange="pageSizeChange"-->
<!-- >-->
<!-- <template v-slot:operate="slotProps">-->
<!-- <a-button @click="click(slotProps)">操作</a-button>-->
<!-- </template>-->
<!-- </Table>-->
</div>
</template>
<script>
import { defineComponent, onMounted, reactive, ref, toRefs } from "vue";
import { DownOutlined, UpOutlined } from "@ant-design/icons-vue";
// import Table from "@/components/Table/Table.vue";
// import { useLoading } from "@/hooks/useLoading";
export default defineComponent({
components: {
DownOutlined,
UpOutlined,
// Table,
},
setup() {
const state = reactive({
columns: [
{
title: "ICCID",
dataIndex: "name",
},
{
title: "ICCID",
dataIndex: "money",
},
{
title: "IMSI",
dataIndex: "address",
},
{
title: "SIM卡状态",
dataIndex: "address",
},
{
title: "SIM卡类型",
dataIndex: "address",
},
{
title: "采购价格",
dataIndex: "address",
},
{
title: "出库日期",
dataIndex: "address",
},
{
title: "测试期",
dataIndex: "address",
},
{
title: "沉默期",
dataIndex: "address",
},
{
title: "激活日期",
dataIndex: "address",
},
{
title: "操作",
fixed: 'right',
key: 'operate',
scopedSlots: {
customRender: 'operate'
}
},
],
dataSource: [],
loading: false,
});
// const { getLoading, setLoading } = useLoading(state);
const getData = () => {
// setLoading(true);
return new Promise((resolve) => {
setTimeout(() => {
// setLoading(false);
resolve([
{
key: "1",
name: "John Brown",
money: "¥300,000.00",
address: "New York No. 1 Lake Park",
},
{
key: "2",
name: "Jim Green",
money: "¥1,256,000.00",
address: "London No. 1 Lake Park",
},
{
key: "3",
name: "Joe Black",
money: "¥120,000.00",
address: "Sidney No. 1 Lake Park",
},
]);
}, 2000);
});
};
const pageChange = (values) => {
console.log("Received values of form: ", values)
};
const pageSizeChange = () => {
}
onMounted(() => {
getData().then((res) => {
console.log(`==>`, res);
state.dataSource = res;
});
});
return {
...toRefs(state),
pageChange,
pageSizeChange,
// getLoading,
getData
};
},
});
</script>
<style lang="scss" scoped>
.search-filter {
display: flex;
flex-wrap: wrap;
margin: 10px;
.search-item {
display: flex;
align-items: center;
margin: 10px;
.search-label {
margin-right: 10px;
}
}
}
.seatch-btns{
display: flex;
justify-content: space-between;
}
</style>
<template>
<div>
<a-pagination v-model:current="current1" show-quick-jumper :total="500" @change="onChange" />
<br />
<a-pagination
v-model:current="current2"
show-quick-jumper
:total="500"
disabled
show-less-items
@change="onChange"
/>
</div>
</template>
<script >
import { defineComponent, ref } from 'vue';
export default defineComponent({
setup() {
const current1 = ref(1);
const current2 = ref(2);
const onChange = (pageNumber) => {
console.log('Page: ', pageNumber);
};
return {
current1,
current2,
onChange,
};
},
});
</script>
<template>
<div>
<div class="content-title">配置参数</div>
<div class="content-form">
</div>
</div>
</template>
<script>
import { reactive, ref } from "vue"
import { useRouter } from "vue-router"
export default {
components: {
},
setup() {
const router = useRouter()
const ruleFormRef = ref();
const ruleForm = reactive({
logo: '',
});
const rules = reactive({
wxTenantNum: [
{
required: true,
message: "请输入名称",
trigger: "blur",
},
],
wxAppId: [
{
required: true,
message: "请输入微信appId",
trigger: "blur",
},
],
logo: [
{
required: true,
message: "请上传租户logo图片",
trigger: "change",
},
],
});
const submitForm = async (formEl) => {
if (!formEl) return;
await formEl.validate((valid, fields) => {
if (valid) {
const {
tenantId = 1006,
tenantName,
tenantAlias,
companyName,
platformDomain,
rootPhone,
wxAppId,
wxAppSecret,
wxRefundCertificate,
wxTenantNum,
logo
} = ruleForm
addTenantApi({
refundFile: 'https://ebike-saas-prod.oss-cn-shenzhen.aliyuncs.com/download/backend/1156/type/20230105/25c68508-3152-4e32-948f-542bf3933ce4.png',
isWxSpecialMerchant: 0,
saasGroupArea: `A1-beijing`,
saasGroupNumber: `A1`,
aliasName: tenantAlias,
companyName: companyName,
wxAppid: wxAppId,
wxAppSecret: wxAppSecret,
tenantName: tenantName,
rootPhone: rootPhone,
domainName: platformDomain,
wxBusinessNumber: wxTenantNum,
logo: logo,
wxRefundCertificate: wxRefundCertificate
}).then(res => {
if(res.success){
ElMessage({
message: '添加成功',
type: 'success',
})
router.back()
}else{
ElMessage.error(res.message)
}
})
} else {
console.log("error submit!", fields);
}
});
};
const resetForm = (formEl) => {
if (!formEl) return;
formEl.resetFields();
};
const options = Array.from({ length: 10000 }).map((_, idx) => ({
value: `${idx + 1}`,
label: `${idx + 1}`,
}));
// 自定义上传图片
const handleUpload = (option, type) => {
const { file } = option
const data = new FormData()
data.append('file', file)
data.append('tenantId', `1156`)
data.append('pin', `1156`)
uploadFile(data).then(res => {
if(res.success){
ruleForm[type] = res.data
}
})
}
return {
rules,
ruleForm,
ruleFormRef,
submitForm,
resetForm,
options,
handleUpload
}
},
};
</script>
<style lang="scss" scoped>
.avatar-uploader .avatar {
width: 178px;
height: 178px;
display: block;
}
.avatar-uploader .el-upload {
border-radius: 6px;
cursor: pointer;
position: relative;
overflow: hidden;
}
.avatar-uploader .el-upload:hover {
border-color: #ccc;
}
.el-icon.avatar-uploader-icon {
font-size: 28px;
color: #8c939d;
width: 178px;
height: 178px;
text-align: center;
border: 1px dashed #ccc;
}
.content-title {
padding: 16px;
font-size: 16px;
align-self: flex-start;
width: 100%;
border-bottom: 1px solid #E9E9E9;
font-weight: bold;
}
.content-form{
padding: 24px;
}
</style>
\ No newline at end of file
<template>
22
</template>
<script>
import { onMounted, reactive, toRefs } from "vue"
import { useRouter } from 'vue-router'
export default {
setup() {
const router = useRouter()
const state = reactive({
tenantList: [],
loading: true,
currentPage: 1,
total: 0,
});
const formInline = reactive({
user: '',
region: '',
})
onMounted(() => {
initTenantList()
});
const initTenantList = () => {
}
const pageChange = (e) => {
state.currentPage = e
initTenantList()
console.log(e)
}
const addTenant = () => {
console.log(222)
router.push('/tenant/create')
}
return {
formInline,
pageChange,
addTenant,
...toRefs(state),
};
},
};
</script>
<style lang="scss" scoped>
.add-tenant{
display: flex;
justify-content: end;
margin: 0 0 20px 0;
}
.pagination{
margin: 20px 0;
display: flex;
justify-content: space-around;
}
</style>
<template>
<div >
asdr
<SvgIcon name="businessScreen" :size="50" color="#ff00ff" />
</div>
</template>
<script>
export default {
setup () {
return {
}
},
components: {
}
}
</script>
<style lang="scss" scoped>
</style>
\ No newline at end of file
{
"list": [
{
"position": { "lat": 30.500667, "lng": 114.435067 },
"icon": "https://webapi.amap.com/theme/v1.3/markers/n/mark_bs.png"
},
{
"position": { "lat": 30.50061241114097, "lng": 114.43504996877046 },
"icon": "https://ebike-saas-test.xiaoantech.com/frontend/admin/img/hengji_qi.png"
},
{
"position": { "lat": 30.50061241114097, "lng": 114.43504996877046 },
"icon": "https://ebike-saas-test.xiaoantech.com/frontend/admin/img/hengji_zhong.png"
},
{
"position": { "lat": 30.50064480251736, "lng": 114.43506591796876 },
"icon": "https://ebike-saas-test.xiaoantech.com/frontend/admin/img/user_phone_start.png"
},
{
"position": { "lat": 30.500641276041666, "lng": 114.43506401909723 },
"icon": "https://ebike-saas-test.xiaoantech.com/frontend/admin/img/user_phone_end.png"
}
]
}
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
const { defineConfig } = require('@vue/cli-service') const { defineConfig } = require('@vue/cli-service')
const path= require("path")
module.exports = defineConfig({ module.exports = defineConfig({
transpileDependencies: true transpileDependencies: true,
chainWebpack: function (config) {
config.module.rule('svg').exclude.add(path.resolve(__dirname, './src/assets/icons')).end()
},
configureWebpack: {
module: {
rules: [
{
test: /\.svg$/,
loader: 'svg-sprite-loader',
include: path.resolve(__dirname, './src/assets/icons'),
options: { symbolId: 'icon-[name]' }
}
]
}
}
}) })
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment