chore: initial commit
Some checks failed
Synchronize to Gitee / repo-sync (push) Has been cancelled
Typos Checking / Spell Check with Typos (push) Has been cancelled

This commit is contained in:
2026-06-23 11:56:23 +08:00
commit 72e2110987
2883 changed files with 367388 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
VITE_API_BASE_URL= 'front'
VITE_DEV_DOMAIN='http://127.0.0.1:8081'

View File

@@ -0,0 +1 @@
VITE_API_BASE_URL= ''

View File

@@ -0,0 +1,7 @@
/*.json
/src/**/*.json
dist
postcss.config.js
*.md
/src/assets/icon-font/iconfont.js
/src/assets/fonts/AlibabaPuHuiTi-3-55-Regular-normal.js

View File

@@ -0,0 +1,74 @@
{
"globals": {
"Component": true,
"ComponentPublicInstance": true,
"ComputedRef": true,
"DirectiveBinding": true,
"EffectScope": true,
"ExtractDefaultPropTypes": true,
"ExtractPropTypes": true,
"ExtractPublicPropTypes": true,
"InjectionKey": true,
"MaybeRef": true,
"MaybeRefOrGetter": true,
"PropType": true,
"Ref": true,
"VNode": true,
"WritableComputedRef": true,
"computed": true,
"createApp": true,
"customRef": true,
"defineAsyncComponent": true,
"defineComponent": true,
"effectScope": true,
"getCurrentInstance": true,
"getCurrentScope": true,
"h": true,
"inject": true,
"isProxy": true,
"isReactive": true,
"isReadonly": true,
"isRef": true,
"markRaw": true,
"nextTick": true,
"onActivated": true,
"onBeforeMount": true,
"onBeforeUnmount": true,
"onBeforeUpdate": true,
"onDeactivated": true,
"onErrorCaptured": true,
"onMounted": true,
"onRenderTracked": true,
"onRenderTriggered": true,
"onScopeDispose": true,
"onServerPrefetch": true,
"onUnmounted": true,
"onUpdated": true,
"onWatcherCleanup": true,
"provide": true,
"reactive": true,
"readonly": true,
"ref": true,
"resolveComponent": true,
"shallowReactive": true,
"shallowReadonly": true,
"shallowRef": true,
"toRaw": true,
"toRef": true,
"toRefs": true,
"toValue": true,
"triggerRef": true,
"unref": true,
"useAttrs": true,
"useCssModule": true,
"useCssVars": true,
"useId": true,
"useModel": true,
"useSlots": true,
"useTemplateRef": true,
"watch": true,
"watchEffect": true,
"watchPostEffect": true,
"watchSyncEffect": true
}
}

View File

@@ -0,0 +1,39 @@
# web
This template should help get you started developing with Vue 3 in Vite.
## Recommended IDE Setup
[VSCode](https://code.visualstudio.com/) + [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur).
## Type Support for `.vue` Imports in TS
TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) to make the TypeScript language service aware of `.vue` types.
## Customize configuration
See [Vite Configuration Reference](https://vite.dev/config/).
## Project Setup
```sh
pnpm install
```
### Compile and Hot-Reload for Development
```sh
pnpm dev
```
### Type-Check, Compile and Minify for Production
```sh
pnpm build
```
### Lint with [ESLint](https://eslint.org/)
```sh
pnpm lint
```

77
frontend/packages/web/auto-import.d.ts vendored Normal file
View File

@@ -0,0 +1,77 @@
/* prettier-ignore */
// @ts-nocheck
// noinspection JSUnusedGlobalSymbols
// Generated by unplugin-auto-import
export {}
declare global {
const EffectScope: typeof import('vue')['EffectScope'];
const computed: typeof import('vue')['computed'];
const createApp: typeof import('vue')['createApp'];
const customRef: typeof import('vue')['customRef'];
const defineAsyncComponent: typeof import('vue')['defineAsyncComponent'];
const defineComponent: typeof import('vue')['defineComponent'];
const effectScope: typeof import('vue')['effectScope'];
const getCurrentInstance: typeof import('vue')['getCurrentInstance'];
const getCurrentScope: typeof import('vue')['getCurrentScope'];
const h: typeof import('vue')['h'];
const inject: typeof import('vue')['inject'];
const isProxy: typeof import('vue')['isProxy'];
const isReactive: typeof import('vue')['isReactive'];
const isReadonly: typeof import('vue')['isReadonly'];
const isRef: typeof import('vue')['isRef'];
const markRaw: typeof import('vue')['markRaw'];
const nextTick: typeof import('vue')['nextTick'];
const onActivated: typeof import('vue')['onActivated'];
const onBeforeMount: typeof import('vue')['onBeforeMount'];
const onBeforeUnmount: typeof import('vue')['onBeforeUnmount'];
const onBeforeUpdate: typeof import('vue')['onBeforeUpdate'];
const onDeactivated: typeof import('vue')['onDeactivated'];
const onErrorCaptured: typeof import('vue')['onErrorCaptured'];
const onMounted: typeof import('vue')['onMounted'];
const onRenderTracked: typeof import('vue')['onRenderTracked'];
const onRenderTriggered: typeof import('vue')['onRenderTriggered'];
const onScopeDispose: typeof import('vue')['onScopeDispose'];
const onServerPrefetch: typeof import('vue')['onServerPrefetch'];
const onUnmounted: typeof import('vue')['onUnmounted'];
const onUpdated: typeof import('vue')['onUpdated'];
const provide: typeof import('vue')['provide'];
const reactive: typeof import('vue')['reactive'];
const readonly: typeof import('vue')['readonly'];
const ref: typeof import('vue')['ref'];
const resolveComponent: typeof import('vue')['resolveComponent'];
const shallowReactive: typeof import('vue')['shallowReactive'];
const shallowReadonly: typeof import('vue')['shallowReadonly'];
const shallowRef: typeof import('vue')['shallowRef'];
const toRaw: typeof import('vue')['toRaw'];
const toRef: typeof import('vue')['toRef'];
const toRefs: typeof import('vue')['toRefs'];
const toValue: typeof import('vue')['toValue'];
const triggerRef: typeof import('vue')['triggerRef'];
const unref: typeof import('vue')['unref'];
const useAttrs: typeof import('vue')['useAttrs'];
const useCssModule: typeof import('vue')['useCssModule'];
const useCssVars: typeof import('vue')['useCssVars'];
const useSlots: typeof import('vue')['useSlots'];
const watch: typeof import('vue')['watch'];
const watchEffect: typeof import('vue')['watchEffect'];
const watchPostEffect: typeof import('vue')['watchPostEffect'];
const watchSyncEffect: typeof import('vue')['watchSyncEffect'];
}
// for type re-export
declare global {
// @ts-ignore
export type {
Component,
ComponentPublicInstance,
ComputedRef,
ExtractDefaultPropTypes,
ExtractPropTypes,
ExtractPublicPropTypes,
InjectionKey,
PropType,
Ref,
VNode,
WritableComputedRef,
} from 'vue';
import('vue');
}

View File

@@ -0,0 +1,3 @@
module.exports = {
plugins: ['@vue/babel-plugin-jsx'],
};

17
frontend/packages/web/components.d.ts vendored Normal file
View File

@@ -0,0 +1,17 @@
/* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
// Generated by unplugin-vue-components
// Read more: https://github.com/vuejs/core/pull/3399
import '@vue/runtime-core'
export {};
declare module '@vue/runtime-core' {
export interface GlobalComponents {
CrmColorSelect: typeof import('./src/components/pure/crm-color-select/index.vue')['default'];
CrmIconFont: typeof import('./src/components/pure/crm-icon-font/index.vue')['default'];
RouterLink: typeof import('vue-router')['RouterLink'];
RouterView: typeof import('vue-router')['RouterView'];
}
}

View File

@@ -0,0 +1,31 @@
/**
* Used to package and output gzip. Note that this does not work properly in Vite, the specific reason is still being investigated
* gzip压缩
* https://github.com/anncwb/vite-plugin-compression
*/
import type { Plugin } from 'vite';
import compressPlugin from 'vite-plugin-compression';
export default function configCompressPlugin(compress: 'gzip' | 'brotli', deleteOriginFile = false): Plugin | Plugin[] {
const plugins: Plugin[] = [];
if (compress === 'gzip') {
plugins.push(
compressPlugin({
ext: '.gz',
deleteOriginFile,
})
);
}
if (compress === 'brotli') {
plugins.push(
compressPlugin({
ext: '.br',
algorithm: 'brotliCompress',
deleteOriginFile,
})
);
}
return plugins;
}

View File

@@ -0,0 +1,18 @@
/**
* Generation packaging analysis
* 生成打包分析
*/
import { isReportMode } from '../utils';
import visualizer from 'rollup-plugin-visualizer';
export default function configVisualizerPlugin() {
if (isReportMode()) {
return visualizer({
filename: './node_modules/.cache/visualizer/stats.html',
open: true,
gzipSize: true,
brotliSize: true,
});
}
return [];
}

View File

@@ -0,0 +1,9 @@
/**
* Whether to generate package preview
* 是否生成打包报告
*/
export default {};
export function isReportMode(): boolean {
return process.env.REPORT === 'true';
}

View File

@@ -0,0 +1,75 @@
import vue from '@vitejs/plugin-vue';
import vueJsx from '@vitejs/plugin-vue-jsx';
import { resolve } from 'path';
import AutoImport from 'unplugin-auto-import/vite';
import { defineConfig } from 'vite';
import { createSvgIconsPlugin } from 'vite-plugin-svg-icons';
import vueSetupExtend from 'vite-plugin-vue-setup-extend';
import svgLoader from 'vite-svg-loader';
export default defineConfig({
plugins: [
vue(),
vueJsx(),
vueSetupExtend(),
svgLoader({ svgoConfig: {} }),
createSvgIconsPlugin({
// 指定需要缓存的图标文件夹
iconDirs: [resolve(process.cwd(), 'src/assets/svg'), resolve(process.cwd(), 'public/images')], // 与本地储存地址一致
// 指定symbolId格式
symbolId: 'icon-[name]',
}),
AutoImport({
include: [
/\.[tj]sx?$/, // .ts, .tsx, .js, .jsx
/\.vue$/,
/\.vue\?vue/, // .vue
/\.md$/, // .md
],
imports: ['vue'],
dts: 'src/auto-import.d.ts',
eslintrc: {
enabled: true, // <-- this
},
}),
],
resolve: {
alias: [
{
find: '@locale',
replacement: resolve(__dirname, '../src/locale'),
},
{
find: '@',
replacement: resolve(__dirname, '../src'),
},
{
find: 'vue-i18n',
replacement: 'vue-i18n/dist/vue-i18n.esm-bundler.js', // 解决 vue-i18n 依赖包报错
},
{
find: 'vue',
replacement: 'vue/dist/vue.esm-bundler.js', // compile template
},
],
extensions: ['.ts', '.js', '.jsx', '.tsx', '.json', '.vue'],
},
define: {
'process.env': {},
// 定义特性标志
'__VUE_OPTIONS_API__': true,
'__VUE_PROD_DEVTOOLS__': false,
// 设置hydration不匹配详细信息的标志
'__VUE_PROD_HYDRATION_MISMATCH_DETAILS__': true,
},
css: {
preprocessorOptions: {
less: {
modifyVars: {
hack: `true; @import (reference) "${resolve('src/assets/style/var.less')}";`,
},
javascriptEnabled: true,
},
},
},
});

View File

@@ -0,0 +1,54 @@
import baseConfig from './vite.config.base';
import { config } from 'dotenv';
import { mergeConfig } from 'vite';
import eslint from 'vite-plugin-eslint';
// 注入本地/开发配置环境变量(先导入的配置优先级高)
config({ path: ['.env.development.local', '.env.development'] });
export default mergeConfig(
{
mode: 'development',
server: {
open: true,
fs: {
strict: true,
},
proxy: {
'/sse': {
target: process.env.VITE_DEV_DOMAIN,
changeOrigin: true,
},
'/front': {
target: process.env.VITE_DEV_DOMAIN,
changeOrigin: true,
rewrite: (path: string) => path.replace(/^\/front/, ''),
},
'/pic': {
target: process.env.VITE_DEV_DOMAIN,
changeOrigin: true,
rewrite: (path: string) => path.replace(/^\/front\/pic/, ''),
},
'/attachment': {
target: process.env.VITE_DEV_DOMAIN,
changeOrigin: true,
rewrite: (path: string) => path.replace(/^\/front\/attachment/, ''),
},
'/ui': {
target: process.env.VITE_DEV_DOMAIN,
changeOrigin: true,
rewrite: (path: string) => path.replace(/^\/front\/ui/, ''),
},
},
},
plugins: [
eslint({
overrideConfigFile: 'eslint.config.cjs',
cache: false,
include: ['src/**/*.ts', 'src/**/*.tsx', 'src/**/*.vue'],
exclude: ['node_modules'],
}),
],
},
baseConfig
);

View File

@@ -0,0 +1,31 @@
import configCompressPlugin from './plugin/compress';
import configVisualizerPlugin from './plugin/visualizer';
import baseConfig from './vite.config.base';
import legacy from '@vitejs/plugin-legacy';
import { mergeConfig } from 'vite';
export default mergeConfig(
{
mode: 'production',
plugins: [
configCompressPlugin('gzip'),
configVisualizerPlugin(),
// 兼容性配置配合package.json中的browserslist使用
legacy({
targets: ['defaults', 'not IE 11'],
}),
],
build: {
rollupOptions: {
output: {
manualChunks: {
vue: ['vue', 'vue-router', 'pinia', '@vueuse/core', 'vue-i18n'],
chart: ['echarts', 'vue-echarts'],
},
},
},
chunkSizeWarningLimit: 2000,
},
},
baseConfig
);

19
frontend/packages/web/env.d.ts vendored Normal file
View File

@@ -0,0 +1,19 @@
/// <reference types="vite/client" />
declare module '*.vue' {
import { DefineComponent } from 'vue';
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
const component: DefineComponent<{}, {}, any>;
export default component;
}
interface ImportMetaEnv {
readonly VITE_API_BASE_URL: string;
readonly VITE_DEV_DOMAIN: string; // 开发环境域名
}
declare module 'xml-beautify' {
export default class xmlBeautify {
beautify: (xml: string) => string;
}
}

View File

@@ -0,0 +1,174 @@
const { defineConfig, globalIgnores } = require('eslint/config');
const pluginVue = require('eslint-plugin-vue');
const parser = require('vue-eslint-parser');
const globals = require('globals');
const simpleImportSort = require('eslint-plugin-simple-import-sort');
const { fixupConfigRules } = require('@eslint/compat');
const js = require('@eslint/js');
const { FlatCompat } = require('@eslint/eslintrc');
const compat = new FlatCompat({
baseDirectory: __dirname,
recommendedConfig: js.configs.recommended,
allConfig: js.configs.all,
});
const path = require('path');
module.exports = defineConfig([
{
files: ['**/*.js', '**/*.ts', '**/*.vue'],
languageOptions: {
parser,
parserOptions: {
parser: '@typescript-eslint/parser', // parse <script lang="ts">
extraFileExtensions: ['.vue'],
ecmaVersion: 2020,
sourceType: 'module',
project: path.resolve(__dirname, './tsconfig.json'),
},
globals: {
...globals.browser,
...globals.node,
defineProps: 'readonly',
defineEmits: 'readonly',
defineExpose: 'readonly',
withDefaults: 'readonly',
NodeJS: 'readonly',
},
},
plugins: {
'vue': pluginVue,
'simple-import-sort': simpleImportSort,
},
extends: fixupConfigRules(
compat.extends(
'airbnb-base',
'plugin:@typescript-eslint/recommended',
'plugin:import/recommended',
'plugin:import/typescript',
'plugin:prettier/recommended',
'./.eslintrc-auto-import.json'
)
),
settings: {
'import/resolver': {
typescript: {
project: path.resolve(__dirname, './tsconfig.json'),
},
},
},
rules: {
'prettier/prettier': 1,
'vue/require-default-prop': 0,
'vue/singleline-html-element-content-newline': 0,
'vue/max-attributes-per-line': 0,
'vue/custom-event-name-casing': [2, 'camelCase'],
'vue/no-v-text': 1,
'vue/padding-line-between-blocks': 1,
'vue/require-direct-export': 1,
'vue/multi-word-component-names': 0,
'@typescript-eslint/ban-ts-comment': 0,
'@typescript-eslint/no-unused-vars': 1,
'@typescript-eslint/no-empty-function': 1,
'@typescript-eslint/no-explicit-any': 0,
'@typescript-eslint/no-duplicate-enum-values': 0,
'@typescript-eslint/no-require-imports': 0,
'consistent-return': 'off',
'vue/return-in-computed-property': ['off'],
'vue/no-side-effects-in-computed-properties': 'off',
'vue/require-default-prop': 0,
'vue/singleline-html-element-content-newline': 0,
'vue/max-attributes-per-line': 0,
'vue/custom-event-name-casing': [2, 'camelCase'],
'@typescript-eslint/no-unused-vars': ['off'],
'import/extensions': [
2,
'ignorePackages',
{
js: 'never',
jsx: 'never',
ts: 'never',
tsx: 'never',
},
],
'no-debugger': 2,
'no-param-reassign': 0,
'prefer-regex-literals': 0,
'import/no-extraneous-dependencies': 0,
'import/no-cycle': 'off',
'import/order': 'off',
'class-methods-use-this': 'off',
'global-require': 0,
'no-plusplus': 'off',
'no-underscore-dangle': 'off',
'vue/attributes-order': 1,
'simple-import-sort/exports': 'error',
'no-case-declarations': 'off',
'simple-import-sort/imports': [
'error',
{
groups: [
[
'^vue$',
'^vue-router$',
'^vue-i18n$',
'^pinia$',
'^@vueuse/core$',
'^naive-ui$',
'^@vicons/ionicons5$',
'^lodash-es$',
'^axios$',
'^dayjs$',
'^jsencrypt$',
'^echarts$',
'^localforage$',
'^vue-draggable-plus$',
'^echarts$',
'^echarts/*',
],
['.*/assets/.*', '^@/assets$'],
['^@lib/shared/.*'],
['^@/components/pure/.*', '^@/components/business/.*', '.*\\.vue$'],
[
'^@/api($|/.*)',
'^@/config($|/.*)',
'^@/directive($|/.*)',
'^@/hooks($|/.*)',
'^@/locale($|/.*)',
'^@/router($|/.*)',
'^@/store($|/.*)',
'^@/utils($|/.*)',
],
['^@/models($|/.*)', '^@/enums($|/.*)'],
['^type'],
],
},
],
},
},
{
files: ['src/enums/**/*.ts'],
rules: {
'no-shadow': 'off',
},
},
globalIgnores([
'*.json',
'src/**/*.json',
'**/dist',
'**/postcss.config.js',
'**/*.md',
'src/assets/icon-font/iconfont.js',
'src/assets/fonts/AlibabaPuHuiTi-3-55-Regular-normal.js',
]),
]);

View File

@@ -0,0 +1,22 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<link rel="shortcut icon" type="image/x-icon" href="/favicon.ico" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Cordys CRM</title>
</head>
<script type="module">
function isMobileDevice() {
return /Mobile|Android/i.test(navigator.userAgent);
}
if (isMobileDevice()) {
window.location.href = import.meta.env.DEV ? 'http://localhost:3000' : `${window.location.origin}/mobile`;
}
</script>
<body>
<div id="app"></div>
<script type="module" src="/src/main.ts"></script>
</body>
</html>

View File

@@ -0,0 +1,87 @@
{
"name": "@cordys/web",
"description": "PC web",
"version": "1.0.0",
"private": true,
"author": "MeterSphere Team",
"license": "MIT",
"type": "module",
"scripts": {
"dev": "vite --config ./config/vite.config.dev.ts",
"build": "vue-tsc --noEmit && vite build --config ./config/vite.config.prod.ts",
"build:local": "vue-tsc --noEmit && vite build --config ./config/vite.config.prod.ts --mode development",
"build:localProd": "vue-tsc --noEmit && vite build --config ./config/vite.config.prod.ts --mode localProd",
"report": "cross-env REPORT=true npm run build",
"preview": "npm run build && vite preview --host",
"type:check": "vue-tsc --noEmit --skipLibCheck -p tsconfig.json",
"lint-staged": "npx lint-staged",
"lint": "eslint . --ext .vue,.js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix",
"lint:styles": "stylelint 'src/**/*.{vue,html,css,scss,less}' --fix"
},
"dependencies": {
"@antv/x6": "^3.1.7",
"@antv/x6-vue-shape": "^3.0.2",
"@types/color": "^4.2.1",
"@vicons/ionicons5": "^0.13.0",
"@wecom/jssdk": "^2.4.0",
"echarts": "^6.1.0",
"jsencrypt": "^3.5.4",
"naive-ui": "^2.44.1",
"nprogress": "^0.2.0",
"seemly": "^0.3.10",
"sortablejs": "^1.15.7",
"vfonts": "^0.0.3",
"vue-draggable-plus": "^0.6.1",
"vue3-colorpicker": "^2.3.0"
},
"devDependencies": {
"@types/sortablejs": "^1.15.9",
"@vitejs/plugin-legacy": "^8.0.2",
"@vitejs/plugin-vue": "^6.0.7",
"@vitejs/plugin-vue-jsx": "^4.2.0",
"@vue/babel-plugin-jsx": "^1.5.0",
"@vue/test-utils": "^2.4.10",
"color": "^4.2.3",
"consola": "^2.15.3",
"fast-glob": "^3.3.3",
"jsdom": "^22.1.0",
"less": "4.3.0",
"less-loader": "^11.1.4",
"rollup": "^4.61.0",
"rollup-plugin-visualizer": "^5.14.0",
"sass": "^1.100.0",
"typescript": "5.9.3",
"unplugin-auto-import": "^0.16.7",
"unplugin-vue-components": "^0.24.1",
"vite": "^7.3.5",
"vite-plugin-compression": "^0.5.1",
"vite-plugin-eslint": "^1.8.1",
"vite-plugin-svg-icons": "^2.0.1",
"vite-plugin-vue-setup-extend": "^0.4.0",
"vite-svg-loader": "^5.1.1"
},
"lint-staged": {
"*.{js,ts,jsx,tsx}": [
"prettier --write",
"eslint --fix"
],
"*.vue": [
"stylelint --fix",
"prettier --write",
"eslint --fix"
],
"*.{less,css,scss,sass}": [
"stylelint --fix --custom-syntax postcss-less",
"prettier --write"
]
},
"engines": {
"node": ">=18.0.0"
},
"browserslist": [
"> 0.5%",
"last 2 versions",
"not dead",
"not IE 11"
]
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 211 KiB

View File

@@ -0,0 +1 @@
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1860 400"><defs><style>.cls-1,.cls-2{fill:#364c4b;}.cls-2{fill-rule:evenodd;}.cls-3{fill:#00a6ab;}.cls-4{fill:#fff;}.cls-5{fill:#52efc2;}</style></defs><title>CORDYS</title><path class="cls-1" d="M896.569,190.276v17.977c0,32.358-1.893,54.95-7.763,67.772q-14.024,32.9-43.145,48.177-27.867,15.1-70.29,15.1t-70.289-15.1q-29.486-15.995-43.145-48.177c-6.111-13.3-7.078-35.891-7.078-67.772V190.276c0-39.069,3.183-65.733,13.73-80a91.294,91.294,0,0,1,36.493-35.235q28.044-15.457,70.289-15.459,42.066,0,70.29,15.459,22.112,11.867,36.493,35.235C892.46,125.02,896.569,151.688,896.569,190.276Zm-121.2,93.48q33.437-.54,42.426-13.3,10.246-8.267,10.246-47.818V180.748q0-46.2-11.5-53.391-10.968-11.144-41.168-12.224-30.2,1.079-41.167,12.224-12.943,8.09-12.943,51.773v42.426q0,39.73,11.325,48.9Q741.574,283.219,775.371,283.756Z"/><path class="cls-1" d="M1494.208,337.427l.3-110.663-79.5-165.1h77.3l40.33,90.421,47.084-90.421h76.941l-82.854,165.1.055,110.663Z"/><path class="cls-1" d="M615.43,278.268v53.624a569.6,569.6,0,0,1-72.987,4.626c-19.524,0-66.581,4.512-95.408-36.2-15.1-21.324-23.913-56.075-23.913-108.189,0-53.524,13.482-86.6,32.968-105.259,29.789-28.531,71.777-25.334,86.7-25.334,19.222,0,44.352.45,72.635,2.96v54.216c-26.283-2.307-51.01-2.145-66.13-2.145q-36.045,0-47.822,11.956c-3.649,2.972-14.975,14.851-14.975,58.963,0,70.346,11.635,79.231,13.392,80.989C514.363,285.461,587.843,279.715,615.43,278.268Z"/><path class="cls-1" d="M1005.439,252.786v84.972H936.4V60.619l94.092-1.17h25.6q56.057,0,77.87,36.591a121.369,121.369,0,0,1,7.749,23.072,165.1,165.1,0,0,1,3.246,34.429V160.3a110.515,110.515,0,0,1-3.425,28.841,75.758,75.758,0,0,1-7.932,18.745q-10.1,17.306-32.265,26.858,13.88,5.23,25.055,18.205a111.508,111.508,0,0,1,7.572,10.455c14.323,21.424,13.179,74.354,13.179,74.354h-64.971c-1.8-5.526-2.585-62.974-21.657-78.825C1050.4,250.525,1006.639,252.668,1005.439,252.786Zm0-48.57c1.322.121,54.479,4.453,69.036-12.913,6.734-8.033,8.472-14.78,8.472-27.4V149.936q0-22.53-6.308-30.283-6.851-7.029-21.81-9.012-16.405-2.163-49.39.9Z"/><path class="cls-2" d="M1291.233,61.538h-104.67V335.609h104.67c66.681-.029,120.742-45.174,120.742-100.871V162.432C1411.975,106.721,1357.914,61.583,1291.233,61.538Zm53.5,175.558c0,24.706-23.933,44.727-53.5,44.756h-34.951V115.3h34.951c29.571.028,53.5,20.064,53.5,44.756Z"/><path class="cls-1" d="M1743.674,338.109a428.1,428.1,0,0,1-45.017-2.607q-9.384-1.042-19.293-2.433l-25.573-2.424.547-65.807,40.08,6.267s15.756,2.259,22.943,2.955q12.859,1.216,23.291,1.216,37.89,0,43.8-17.206a14.78,14.78,0,0,0-.348-13.906q-3.651-7.47-15.47-12.862a123.928,123.928,0,0,0-12.688-4.693L1741,222.089q-9.909-2.43-17.73-4.866-10.083-3.127-18.424-6.605-20.685-8.69-32.154-20.161a55.357,55.357,0,0,1-14.08-28.506,91.9,91.9,0,0,1-.521-27.288q4.694-44.147,37.718-60.66,12.338-6.6,29.72-9.56,6.78-1.043,15.471-1.738l14.947-1.043h10.081q17.208,0,37.89,2.086l16.861,1.912,19.608,2.589.381,57.724a269.76,269.76,0,0,0-28.506-5.041,287.274,287.274,0,0,0-39.977-3.129c-26.419,0-35.548,5.615-40.182,17.548a33.722,33.722,0,0,0-1.348,14.892c.613,5.821.245,7.353,11.982,13.446q5.386,2.438,13.557,5.214l34.415,10.255q9.908,3.131,17.729,6.431,18.942,8,28.679,18.425,11.472,11.47,14.774,28.678a89.318,89.318,0,0,1,.522,26.768c-3.13,29.2-17.72,55.419-39.736,66.656q-12.168,6.608-29.72,9.386-6.78,1.042-15.471,1.738l-13.383.869Z"/><path class="cls-3" d="M6.878,139.205V259.547a64.675,64.675,0,0,0,32.337,56.009l104.219,60.171a64.672,64.672,0,0,0,64.674,0l104.218-60.171a64.668,64.668,0,0,0,32.337-56.009V139.205A64.671,64.671,0,0,0,312.326,83.2L208.108,23.025a64.678,64.678,0,0,0-64.674,0L39.215,83.2A64.675,64.675,0,0,0,6.878,139.205Z"/><path class="cls-4" d="M238.648,124.318V98.672A15.673,15.673,0,0,0,222.976,83h-96a15.672,15.672,0,0,0-15.672,15.672v21.362a15.671,15.671,0,0,1-15.672,15.672H74.273A15.67,15.67,0,0,0,58.6,151.378v96a15.671,15.671,0,0,0,15.672,15.672H95.635a15.668,15.668,0,0,1,15.672,15.672V300.08a15.671,15.671,0,0,0,15.672,15.672h96a15.666,15.666,0,0,0,15.672-15.672V274.435a15.672,15.672,0,0,0-15.672-15.672H126.948a11.353,11.353,0,0,1-11.357-11.357V151.09a11.1,11.1,0,0,1,11.1-11.1h96.285a15.673,15.673,0,0,0,15.672-15.672Z"/><path class="cls-5" d="M264.445,199.376h0a28.494,28.494,0,0,1,28.5,28.5h0a28.494,28.494,0,0,1-28.5,28.495h0a28.494,28.494,0,0,1-28.5-28.495h0a28.493,28.493,0,0,1,28.5-28.5Z"/></svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -0,0 +1 @@
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1860 400"><defs><style>.cls-1,.cls-2{fill:#364c4b;}.cls-2{fill-rule:evenodd;}.cls-3{fill:#00a6ab;}.cls-4{fill:#fff;}.cls-5{fill:#52efc2;}</style></defs><title>CORDYS</title><path class="cls-1" d="M896.569,190.276v17.977c0,32.358-1.893,54.95-7.763,67.772q-14.024,32.9-43.145,48.177-27.867,15.1-70.29,15.1t-70.289-15.1q-29.486-15.995-43.145-48.177c-6.111-13.3-7.078-35.891-7.078-67.772V190.276c0-39.069,3.183-65.733,13.73-80a91.294,91.294,0,0,1,36.493-35.235q28.044-15.457,70.289-15.459,42.066,0,70.29,15.459,22.112,11.867,36.493,35.235C892.46,125.02,896.569,151.688,896.569,190.276Zm-121.2,93.48q33.437-.54,42.426-13.3,10.246-8.267,10.246-47.818V180.748q0-46.2-11.5-53.391-10.968-11.144-41.168-12.224-30.2,1.079-41.167,12.224-12.943,8.09-12.943,51.773v42.426q0,39.73,11.325,48.9Q741.574,283.219,775.371,283.756Z"/><path class="cls-1" d="M1494.208,337.427l.3-110.663-79.5-165.1h77.3l40.33,90.421,47.084-90.421h76.941l-82.854,165.1.055,110.663Z"/><path class="cls-1" d="M615.43,278.268v53.624a569.6,569.6,0,0,1-72.987,4.626c-19.524,0-66.581,4.512-95.408-36.2-15.1-21.324-23.913-56.075-23.913-108.189,0-53.524,13.482-86.6,32.968-105.259,29.789-28.531,71.777-25.334,86.7-25.334,19.222,0,44.352.45,72.635,2.96v54.216c-26.283-2.307-51.01-2.145-66.13-2.145q-36.045,0-47.822,11.956c-3.649,2.972-14.975,14.851-14.975,58.963,0,70.346,11.635,79.231,13.392,80.989C514.363,285.461,587.843,279.715,615.43,278.268Z"/><path class="cls-1" d="M1005.439,252.786v84.972H936.4V60.619l94.092-1.17h25.6q56.057,0,77.87,36.591a121.369,121.369,0,0,1,7.749,23.072,165.1,165.1,0,0,1,3.246,34.429V160.3a110.515,110.515,0,0,1-3.425,28.841,75.758,75.758,0,0,1-7.932,18.745q-10.1,17.306-32.265,26.858,13.88,5.23,25.055,18.205a111.508,111.508,0,0,1,7.572,10.455c14.323,21.424,13.179,74.354,13.179,74.354h-64.971c-1.8-5.526-2.585-62.974-21.657-78.825C1050.4,250.525,1006.639,252.668,1005.439,252.786Zm0-48.57c1.322.121,54.479,4.453,69.036-12.913,6.734-8.033,8.472-14.78,8.472-27.4V149.936q0-22.53-6.308-30.283-6.851-7.029-21.81-9.012-16.405-2.163-49.39.9Z"/><path class="cls-2" d="M1291.233,61.538h-104.67V335.609h104.67c66.681-.029,120.742-45.174,120.742-100.871V162.432C1411.975,106.721,1357.914,61.583,1291.233,61.538Zm53.5,175.558c0,24.706-23.933,44.727-53.5,44.756h-34.951V115.3h34.951c29.571.028,53.5,20.064,53.5,44.756Z"/><path class="cls-1" d="M1743.674,338.109a428.1,428.1,0,0,1-45.017-2.607q-9.384-1.042-19.293-2.433l-25.573-2.424.547-65.807,40.08,6.267s15.756,2.259,22.943,2.955q12.859,1.216,23.291,1.216,37.89,0,43.8-17.206a14.78,14.78,0,0,0-.348-13.906q-3.651-7.47-15.47-12.862a123.928,123.928,0,0,0-12.688-4.693L1741,222.089q-9.909-2.43-17.73-4.866-10.083-3.127-18.424-6.605-20.685-8.69-32.154-20.161a55.357,55.357,0,0,1-14.08-28.506,91.9,91.9,0,0,1-.521-27.288q4.694-44.147,37.718-60.66,12.338-6.6,29.72-9.56,6.78-1.043,15.471-1.738l14.947-1.043h10.081q17.208,0,37.89,2.086l16.861,1.912,19.608,2.589.381,57.724a269.76,269.76,0,0,0-28.506-5.041,287.274,287.274,0,0,0-39.977-3.129c-26.419,0-35.548,5.615-40.182,17.548a33.722,33.722,0,0,0-1.348,14.892c.613,5.821.245,7.353,11.982,13.446q5.386,2.438,13.557,5.214l34.415,10.255q9.908,3.131,17.729,6.431,18.942,8,28.679,18.425,11.472,11.47,14.774,28.678a89.318,89.318,0,0,1,.522,26.768c-3.13,29.2-17.72,55.419-39.736,66.656q-12.168,6.608-29.72,9.386-6.78,1.042-15.471,1.738l-13.383.869Z"/><path class="cls-3" d="M6.878,139.205V259.547a64.675,64.675,0,0,0,32.337,56.009l104.219,60.171a64.672,64.672,0,0,0,64.674,0l104.218-60.171a64.668,64.668,0,0,0,32.337-56.009V139.205A64.671,64.671,0,0,0,312.326,83.2L208.108,23.025a64.678,64.678,0,0,0-64.674,0L39.215,83.2A64.675,64.675,0,0,0,6.878,139.205Z"/><path class="cls-4" d="M238.648,124.318V98.672A15.673,15.673,0,0,0,222.976,83h-96a15.672,15.672,0,0,0-15.672,15.672v21.362a15.671,15.671,0,0,1-15.672,15.672H74.273A15.67,15.67,0,0,0,58.6,151.378v96a15.671,15.671,0,0,0,15.672,15.672H95.635a15.668,15.668,0,0,1,15.672,15.672V300.08a15.671,15.671,0,0,0,15.672,15.672h96a15.666,15.666,0,0,0,15.672-15.672V274.435a15.672,15.672,0,0,0-15.672-15.672H126.948a11.353,11.353,0,0,1-11.357-11.357V151.09a11.1,11.1,0,0,1,11.1-11.1h96.285a15.673,15.673,0,0,0,15.672-15.672Z"/><path class="cls-5" d="M264.445,199.376h0a28.494,28.494,0,0,1,28.5,28.5h0a28.494,28.494,0,0,1-28.5,28.495h0a28.494,28.494,0,0,1-28.5-28.495h0a28.493,28.493,0,0,1,28.5-28.5Z"/></svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -0,0 +1 @@
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400"><defs><style>.cls-1{fill:#00a6ab;}.cls-2{fill:#fff;}.cls-3{fill:#52efc2;}</style></defs><title>CORDYS</title><path class="cls-1" d="M31.107,139.829V260.171A64.675,64.675,0,0,0,63.444,316.18l104.219,60.171a64.678,64.678,0,0,0,64.674,0L336.556,316.18a64.677,64.677,0,0,0,32.337-56.009V139.829A64.676,64.676,0,0,0,336.556,83.82L232.337,23.649a64.678,64.678,0,0,0-64.674,0L63.444,83.82a64.675,64.675,0,0,0-32.337,56.009Z"/><path class="cls-2" d="M262.877,124.941V99.3a15.672,15.672,0,0,0-15.672-15.672h-96A15.672,15.672,0,0,0,135.536,99.3v21.362a15.671,15.671,0,0,1-15.672,15.672H98.5A15.672,15.672,0,0,0,82.83,152v96A15.671,15.671,0,0,0,98.5,263.67h21.362a15.667,15.667,0,0,1,15.672,15.672V300.7a15.673,15.673,0,0,0,15.672,15.672h96A15.665,15.665,0,0,0,262.877,300.7V275.059a15.67,15.67,0,0,0-15.672-15.672H151.177A11.355,11.355,0,0,1,139.82,248.03V151.714a11.1,11.1,0,0,1,11.1-11.1h96.284a15.671,15.671,0,0,0,15.672-15.672Z"/><path class="cls-3" d="M288.675,200h0a28.5,28.5,0,0,1,28.5,28.5h0a28.494,28.494,0,0,1-28.5,28.5h0a28.5,28.5,0,0,1-28.5-28.5h0a28.493,28.493,0,0,1,28.5-28.5Z"/></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,182 @@
<template>
<n-config-provider
:theme-overrides="appStore.themeOverridesConfig"
:locale="naiveUILocale"
:date-locale="naiveUIDateLocale"
>
<n-message-provider>
<n-dialog-provider>
<RouterView />
</n-dialog-provider>
</n-message-provider>
</n-config-provider>
</template>
<script setup lang="ts">
import { useRouter } from 'vue-router';
import { dateEnUS, dateZhCN, enUS, NConfigProvider, NDialogProvider, NMessageProvider, zhCN } from 'naive-ui';
import { CompanyTypeEnum } from '@lib/shared/enums/commonEnum';
import useLocale from '@lib/shared/locale/useLocale';
import { hasToken, setLoginExpires, setLoginType } from '@lib/shared/method/auth';
import { getQueryVariable, getUrlParameterWidthRegExp } from '@lib/shared/method/index';
import type { Result } from '@lib/shared/types/axios';
import CrmSysUpgradeTip from '@/components/pure/crm-sys-upgrade-tip/index.vue';
import { getThirdOauthCallback } from '@/api/modules';
import useLoading from '@/hooks/useLoading';
import useUser from '@/hooks/useUser';
import useAppStore from '@/store/modules/app';
import { setFavicon, watchStyle, watchTheme } from '@/utils/theme';
import useDiscreteApi from './hooks/useDiscreteApi';
import { WHITE_LIST } from './router/constants';
import useLicenseStore from './store/modules/setting/license';
import useUserStore from './store/modules/user';
const { goUserHasPermissionPage, logout } = useUser();
const { setLoading } = useLoading();
const { message } = useDiscreteApi();
const router = useRouter();
const userStore = useUserStore();
const licenseStore = useLicenseStore();
const { currentLocale } = useLocale(message.loading);
const appStore = useAppStore();
const naiveUILocale = computed(() => {
return currentLocale.value === 'zh-CN' ? zhCN : enUS;
});
const naiveUIDateLocale = computed(() => {
return currentLocale.value === 'zh-CN' ? dateZhCN : dateEnUS;
});
async function handleOauthLogin(type: string, loginType: CompanyTypeEnum, isDingBrowser: boolean) {
try {
const codeKey = isDingBrowser ? 'authCode' : 'code';
const authParams = isDingBrowser ? ['code', 'authCode', 'state'] : ['code', 'state'];
const code = getQueryVariable(codeKey);
if (code) {
const res = await getThirdOauthCallback(code, type);
const boolean = userStore.qrCodeLogin(res.data.data);
if (boolean) {
setLoginExpires();
setLoginType(loginType);
goUserHasPermissionPage();
setLoading(false);
await userStore.getAuthentication();
}
if (code) {
const currentUrl = window.location.href;
const url = new URL(currentUrl);
authParams.forEach((param) => {
getUrlParameterWidthRegExp(param);
});
authParams.forEach((param) => {
url.searchParams.delete(param);
});
const newUrl = url.toString();
// 或者在不刷新页面的情况下更新URL比如使用 History API
window.history.replaceState({}, document.title, newUrl);
}
}
} catch (error) {
// eslint-disable-next-line no-console
console.log(error);
if ((error as Result).code === 100500) {
router.replace({ name: 'login' });
}
if ((error as Result).code === 401) {
logout();
}
}
}
onBeforeMount(async () => {
const isWXWork = navigator.userAgent.includes('wxwork');
const isDingTalk =
navigator.userAgent.includes('dingtalk') ||
navigator.userAgent.includes('aliapp(dingtalk') ||
(getQueryVariable('authCode') !== '' &&
getQueryVariable('authCode') !== undefined &&
getQueryVariable('authCode') !== null);
const isLark =
navigator.userAgent.includes('feishu') ||
navigator.userAgent.includes('lark') ||
getQueryVariable('state') === 'LARK';
if (!hasToken()) {
if (isWXWork) {
await handleOauthLogin('wecom', CompanyTypeEnum.WE_COM_OAUTH2, false);
} else if (isDingTalk) {
await handleOauthLogin('ding-talk', CompanyTypeEnum.DINGTALK_OAUTH2, isDingTalk);
} else if (isLark) {
await handleOauthLogin('lark', CompanyTypeEnum.LARK_OAUTH2, false);
}
}
if (WHITE_LIST.find((el) => window.location.hash.split('#')[1].includes(el.path)) === undefined) {
await userStore.checkIsLogin(isWXWork || isDingTalk || isLark);
appStore.setLoginLoading(false);
}
});
onBeforeUnmount(() => {
appStore.disconnectSystemMessageSSE();
});
function showUpdateMessage() {
message.warning(() => h(CrmSysUpgradeTip), {
duration: 0,
closable: false,
});
}
function adjustOSTheme() {
const isMac = navigator.platform.toUpperCase().includes('MAC');
if (!isMac) {
document.documentElement.style.setProperty('--text-n9', 'var(--text-n8)');
}
}
watchStyle(appStore.pageConfig.style, appStore.pageConfig);
watchTheme(appStore.pageConfig.theme, appStore.pageConfig);
onBeforeMount(async () => {
try {
appStore.initThirdPartyResource();
await licenseStore.getValidateLicense();
if (licenseStore.hasLicense()) {
await appStore.initPageConfig();
if (appStore.pageConfig.icon[0]?.url) {
setFavicon(appStore.pageConfig.icon[0]?.url);
}
}
} catch (error) {
// eslint-disable-next-line no-console
console.log(error);
}
});
onMounted(() => {
adjustOSTheme();
window.onerror = (_message) => {
if (typeof _message === 'string' && _message.includes('Failed to fetch dynamically imported')) {
showUpdateMessage();
}
};
window.onunhandledrejection = (event: PromiseRejectionEvent) => {
if (
event &&
event.reason &&
event.reason.message &&
event.reason.message.includes('Failed to fetch dynamically imported')
) {
showUpdateMessage();
}
};
});
</script>

View File

@@ -0,0 +1,90 @@
import { useI18n } from '@lib/shared/hooks/useI18n';
import useDiscreteApi from '@/hooks/useDiscreteApi';
import useUser from '@/hooks/useUser';
import router from '@/router';
import { NO_RESOURCE_ROUTE_NAME } from '@/router/constants';
export default function checkStatus(
status: number,
msg: string,
msgDetail: string | Record<string, any>,
code?: number,
noErrorTip?: boolean
): void {
const { message } = useDiscreteApi({
messageProviderProps: {
max: 1, // 最大显示一条消息
},
});
const { t } = useI18n();
const { logout, isLoginPage, isWhiteListPage } = useUser();
let errMessage = '';
switch (status) {
case 400:
errMessage = `${msg}`;
break;
case 401: {
errMessage = msg || t('api.errMsg401');
if (!isLoginPage() && !isWhiteListPage()) {
// 不是登录页再调用logout
logout();
}
break;
}
case 403:
if (router.currentRoute.value.name !== NO_RESOURCE_ROUTE_NAME) {
router.push({ name: NO_RESOURCE_ROUTE_NAME });
}
break;
// 404请求不存在
case 404:
errMessage = msg || t('api.errMsg404');
break;
case 405:
errMessage = msg || t('api.errMsg405');
break;
case 408:
errMessage = msg || t('api.errMsg408');
break;
case 500:
// 101003 用于查重功能,表示模块未开启,不需要弹出消息
if (code === 101003) {
errMessage = '';
} else {
errMessage = msg || t('api.errMsg500');
}
break;
case 501:
errMessage = msg || t('api.errMsg501');
break;
case 502:
errMessage = msg || t('api.errMsg502');
break;
case 503:
errMessage = msg || t('api.errMsg503');
break;
case 504:
errMessage = msg || t('api.errMsg504');
break;
case 505:
errMessage = msg || t('api.errMsg505');
break;
default:
}
if (msgDetail && !noErrorTip) {
if (typeof msgDetail === 'object') {
errMessage = Object.values(msgDetail)
.map((e) => e)
.join('\n');
} else {
errMessage = msgDetail;
}
message.destroyAll();
message.error(errMessage);
} else if (errMessage && !noErrorTip) {
message.destroyAll();
message.error(errMessage);
}
}

View File

@@ -0,0 +1,16 @@
import createAxios from '@lib/shared/api/http';
import useDiscreteApi from '@/hooks/useDiscreteApi';
import useAppStore from '@/store/modules/app';
import checkStatus from './checkStatus';
const { message } = useDiscreteApi();
const CDR = createAxios({
useAppStore,
showErrorMsg: message.error,
checkStatus,
});
export default CDR;

View File

@@ -0,0 +1,841 @@
import createAxios from '@lib/shared/api/http';
import useAgentApi from '@lib/shared/api/modules/agent';
import useClueApi from '@lib/shared/api/modules/clue';
import useContractApi from '@lib/shared/api/modules/contract';
import useCustomerApi from '@lib/shared/api/modules/customer';
import useCustomFormApi from '@lib/shared/api/modules/customForm';
import useDashboard from '@lib/shared/api/modules/dashboard';
import useFollowApi from '@lib/shared/api/modules/follow';
import useHomeApi from '@lib/shared/api/modules/home';
import useOpportunityApi from '@lib/shared/api/modules/opportunity';
import useOrderApi from '@lib/shared/api/modules/order';
import useProductApi from '@lib/shared/api/modules/product';
import useSysApi from '@lib/shared/api/modules/sys';
import useLicenseApi from '@lib/shared/api/modules/system/authorizedManagement';
import useBusinessApi from '@lib/shared/api/modules/system/business';
import useLoginApi from '@lib/shared/api/modules/system/login';
import useMessageApi from '@lib/shared/api/modules/system/message';
import useModuleApi from '@lib/shared/api/modules/system/module';
import useOrgApi from '@lib/shared/api/modules/system/org';
import useProcessApi from '@lib/shared/api/modules/system/process';
import useRoleApi from '@lib/shared/api/modules/system/role';
import useDiscreteApi from '@/hooks/useDiscreteApi';
import checkStatus from '../http/checkStatus';
const { message } = useDiscreteApi();
const CDR = createAxios({
showErrorMsg: message.error,
checkStatus,
});
const orgApi = useOrgApi(CDR);
const sysApi = useSysApi(CDR);
const clueApi = useClueApi(CDR);
const roleApi = useRoleApi(CDR);
const homeApi = useHomeApi(CDR);
const loginApi = useLoginApi(CDR);
const agentApi = useAgentApi(CDR);
const moduleApi = useModuleApi(CDR);
const followApi = useFollowApi(CDR);
const productApi = useProductApi(CDR);
const messageApi = useMessageApi(CDR);
const licenseApi = useLicenseApi(CDR);
const customerApi = useCustomerApi(CDR);
const businessApi = useBusinessApi(CDR);
const dashboardApi = useDashboard(CDR);
const opportunityApi = useOpportunityApi(CDR);
const contractApi = useContractApi(CDR);
const orderApi = useOrderApi(CDR);
const customFormApi = useCustomFormApi(CDR);
const processApi = useProcessApi(CDR);
export const {
addCustomForm,
updateCustomForm,
getCustomFormDetail,
saveCustomFormAdmins,
getCustomFormAdmins,
relateCustomFormMember,
getCustomFormRoles,
getCustomFormRoleUsers,
getCustomFormRoleUserDeptTree,
getCustomFormRoleUserRoleTree,
removeCustomFormMember,
getCustomFormList,
getCustomFormDataDetail,
getCustomFormDataPage,
addCustomFormData,
batchUpdateCustomFormData,
batchDeleteCustomFormData,
updateCustomFormData,
deleteCustomFormData,
deleteCustomForm,
enableCustomForm,
disableCustomForm,
getCustomFormOptions,
preCheckImportCustomForm,
downloadCustomFormTemplate,
importCustomForm,
exportCustomFormAll,
exportCustomFormSelected,
} = customFormApi;
export const {
getOrderFormConfig,
getOrderFormSnapshotConfig,
addOrder,
getOrderDetail,
getOrderDetailSnapshot,
updateOrder,
batchUpdateOrder,
deleteOrder,
getOrderList,
getOrderInContractList,
getOrderTab,
addOrderView,
updateOrderView,
getOrderViewList,
getOrderViewDetail,
fixedOrderView,
enableOrderView,
deleteOrderView,
dragOrderView,
updateOrderStatus,
updateOrderStatusRollback,
sortOrder,
sortOrderStatus,
addOrderStatus,
getOrderStatusConfig,
updateOrderStage,
downloadOrder,
deleteOrderStatus,
getOrderStatistic,
saveAdvanceConfig,
switchOrderCirculationType,
} = orderApi;
export const {
getFollowPlanTab,
deleteFollowPlan,
updateFollowPlan,
getFollowPLanPage,
addFollowPlanView,
deleteFollowRecord,
getFollowRecordTab,
updateFollowRecord,
addFollowRecord,
addFollowPlan,
dragFollowPlanView,
getFollowPlanDetail,
getFollowRecordPage,
addFollowRecordView,
fixedFollowPlanView,
dragFollowRecordView,
updateFollowPlanView,
enableFollowPlanView,
deleteFollowPlanView,
getFollowRecordDetail,
fixedFollowRecordView,
getFollowPlanViewList,
updateFollowPlanStatus,
updateFollowRecordView,
enableFollowRecordView,
deleteFollowRecordView,
getFollowRecordViewList,
getFollowPlanViewDetail,
getFollowRecordViewDetail,
} = followApi;
export const {
addProduct,
getProduct,
deleteProduct,
updateProduct,
importProduct,
getProductList,
dragSortProduct,
getProductOptions,
batchDeleteProduct,
batchUpdateProduct,
getProductFormConfig,
preCheckImportProduct,
downloadProductTemplate,
getProductPrice,
updateProductPrice,
getProductPriceList,
addProductPrice,
deleteProductPrice,
getProductPriceFormConfig,
dragSortProductPrice,
batchUpdateProductPrice,
downloadProductPriceTemplate,
exportProductPriceAll,
exportProductPriceSelected,
preCheckImportProductPrice,
importProductPrice,
copyProductPrice,
} = productApi;
export const {
deleteOpt,
getOptTab,
transferOpt,
addOpportunity,
batchDeleteOpt,
updateOptStage,
addBusinessView,
getOptStatistic,
sortOpportunity,
getOptFormConfig,
addOptFollowPlan,
getOptFollowPlan,
dragBusinessView,
updateOpportunity,
fixedBusinessView,
preCheckImportOpt,
importOpportunity,
getOpportunityList,
addOptFollowRecord,
getOptFollowRecord,
deleteBusinessView,
updateBusinessView,
enableBusinessView,
updateOptFollowPlan,
deleteOptFollowPlan,
cancelOptFollowPlan,
getBusinessViewList,
globalSearchOptPage,
downloadOptTemplate,
addOpportunityStage,
getOpportunityDetail,
getOptFollowPlanList,
exportOpportunityAll,
sortOpportunityStage,
deleteOptFollowRecord,
updateOptFollowRecord,
getBusinessViewDetail,
advancedSearchOptPage,
getOptFollowRecordList,
batchUpdateOpportunity,
updateOpportunityStage,
deleteOpportunityStage,
advancedSearchOptDetail,
generateOpportunityChart,
getOpportunityContactList,
updateOptFollowPlanStatus,
exportOpportunitySelected,
getOpportunityStageConfig,
updateOpportunityStageRollback,
getQuotationTab,
addQuotationView,
deleteQuotationView,
fixedQuotationView,
getQuotationViewDetail,
getQuotationViewList,
updateQuotationView,
enableQuotationView,
dragQuotationView,
getQuotationList,
addQuotation,
updateQuotation,
getQuotationDetail,
getQuotationSnapshotDetail,
getQuotationFormConfig,
getQuotationSnapshotFormConfig,
deleteQuotation,
approvalQuotation,
voidQuotation,
revokeQuotation,
batchApprove,
batchVoided,
batchUpdateQuotation,
downloadQuotation,
} = opportunityApi;
export const {
addClue,
getClue,
pickClue,
updateClue,
deleteClue,
assignClue,
getClueTab,
importLead,
getClueList,
getPoolClue,
addClueView,
dragClueView,
batchPickClue,
exportClueAll,
fixedClueView,
transformClue,
getPoolOptions,
deleteCluePool,
moveToLeadPool,
deleteClueView,
updateClueView,
enableClueView,
batchToCluePool,
batchDeleteClue,
getCluePoolList,
batchAssignClue,
getClueViewList,
addLeadPoolView,
batchUpdateLead,
updateClueStatus,
dragLeadPoolView,
batchTransferClue,
getClueFormConfig,
addClueFollowPlan,
getClueFollowPlan,
getClueHeaderList,
getClueViewDetail,
exportCluePoolAll,
fixedLeadPoolView,
generateLeadChart,
exportClueSelected,
preCheckImportLead,
deleteLeadPoolView,
updateLeadPoolView,
enableLeadPoolView,
addClueFollowRecord,
getClueFollowRecord,
batchDeleteCluePool,
batchUpdateCluePool,
getLeadPoolViewList,
reTransitionCustomer,
updateClueFollowPlan,
deleteClueFollowPlan,
cancelClueFollowPlan,
downloadLeadTemplate,
getClueFollowPlanList,
getGlobalCluePoolList,
getLeadPoolViewDetail,
generateLeadPoolChart,
ClueTransitionCustomer,
updateClueFollowRecord,
deleteClueFollowRecord,
exportCluePoolSelected,
getClueFollowRecordList,
getAdvancedCluePoolList,
getGlobalSearchClueList,
getAdvancedSearchClueList,
updateClueFollowPlanStatus,
getCluePoolFollowRecordList,
getAdvancedSearchClueDetail,
getClueTransitionCustomerList,
} = clueApi;
export const {
addCustomer,
getCustomer,
mergeAccount,
importAccount,
importContact,
updateCustomer,
deleteCustomer,
getCustomerTab,
addContactView,
getCustomerList,
addCustomerView,
dragContactView,
checkOpportunity,
fixedContactView,
dragCustomerView,
exportContactAll,
mergeAccountPage,
batchMoveCustomer,
getOpenSeaOptions,
exportCustomerAll,
fixedCustomerView,
deleteContactView,
updateContactView,
enableContactView,
addCustomerContact,
getCustomerContact,
addCustomerOpenSea,
getOpenSeaCustomer,
getCustomerOptions,
moveCustomerToPool,
deleteCustomerView,
updateCustomerView,
enableCustomerView,
getContactViewList,
addAccountPoolView,
batchUpdateAccount,
batchUpdateContact,
batchDeleteCustomer,
pickOpenSeaCustomer,
getCustomerViewList,
dragAccountPoolView,
saveCustomerRelation,
getContactViewDetail,
getGlobalModuleCount,
fixedAccountPoolView,
getCustomerFormConfig,
batchTransferCustomer,
addCustomerFollowPlan,
getCustomerFollowPlan,
updateCustomerContact,
enableCustomerContact,
deleteCustomerContact,
updateCustomerOpenSea,
switchCustomerOpenSea,
deleteCustomerOpenSea,
assignOpenSeaCustomer,
deleteOpenSeaCustomer,
getCustomerHeaderList,
getCustomerContactTab,
getCustomerViewDetail,
getGlobalCustomerList,
exportContactSelected,
preCheckImportAccount,
preCheckImportContact,
deleteAccountPoolView,
updateAccountPoolView,
enableAccountPoolView,
generateCustomerChart,
getCustomerContactList,
disableCustomerContact,
getCustomerOpenSeaList,
getOpenSeaCustomerList,
exportCustomerSelected,
geAdvancedCustomerList,
getAccountPoolViewList,
addCustomerFollowRecord,
getCustomerFollowRecord,
isCustomerOpenSeaNoPick,
getCustomerRelationList,
downloadAccountTemplate,
downloadContactTemplate,
updateCustomerFollowPlan,
deleteCustomerFollowPlan,
cancelCustomerFollowPlan,
batchPickOpenSeaCustomer,
addCustomerCollaboration,
exportCustomerOpenSeaAll,
getAccountPoolViewDetail,
getCustomerFollowPlanList,
generateCustomerPoolChart,
updateCustomerFollowRecord,
deleteCustomerFollowRecord,
batchDeleteOpenSeaCustomer,
batchAssignOpenSeaCustomer,
getCustomerOpportunityPage,
batchUpdateOpenSeaCustomer,
getCustomerFollowRecordList,
getContactListUnderCustomer,
updateCustomerCollaboration,
deleteCustomerCollaboration,
getCustomerContactFormConfig,
getCustomerCollaborationList,
getGlobalOpenSeaCustomerList,
getGlobalCustomerContactList,
generateCustomerContactChart,
exportCustomerOpenSeaSelected,
updateCustomerFollowPlanStatus,
getAdvancedCustomerContactList,
getAdvancedOpenSeaCustomerList,
getCustomerFollowPlanFormConfig,
batchDeleteCustomerCollaboration,
getCustomerFollowRecordFormConfig,
getCustomerOpenSeaFollowRecordList,
getAccountContract,
getAccountContractStatistic,
getAccountPayment,
getAccountPaymentStatistic,
getAccountPaymentRecord,
getAccountPaymentRecordStatistic,
getCustomerInvoiceList,
getCustomerOrderList,
getCustomerInvoiceStatistic,
} = customerApi;
export const {
exportContractAll,
exportContractSelected,
generateContractChart,
getContractDetail,
getContractList,
getContractTab,
getContractViewDetail,
getContractViewList,
addContractView,
updateContractView,
fixedContractView,
enableContractView,
deleteContractView,
dragContractView,
addContract,
approvalContract,
revokeContract,
batchApproveContract,
batchUpdateContract,
getContractFormSnapshotConfig,
updateContract,
deleteContract,
changeContractStatus,
getContractFormConfig,
getPaymentPlanList,
getContractPaymentPlanList,
addPaymentPlan,
updatePaymentPlan,
deletePaymentPlan,
getPaymentPlanDetail,
getPaymentPlanFormConfig,
getPaymentPlanTab,
exportPaymentPlanAll,
exportPaymentPlanSelected,
generatePaymentPlanChart,
addPaymentPlanView,
updatePaymentPlanView,
getPaymentPlanViewList,
getPaymentPlanViewDetail,
fixedPaymentPlanView,
enablePaymentPlanView,
deletePaymentPlanView,
dragPaymentPlanView,
getPaymentRecordFormConfig,
addPaymentRecord,
updatePaymentRecord,
getPaymentRecordDetail,
getPaymentRecordList,
deletePaymentRecord,
getPaymentRecordTab,
exportPaymentRecordAll,
exportPaymentRecordSelected,
addPaymentRecordView,
updatePaymentRecordView,
getPaymentRecordViewList,
getPaymentRecordViewDetail,
fixedPaymentRecordView,
enablePaymentRecordView,
deletePaymentRecordView,
dragPaymentRecordView,
preCheckImportContractPaymentRecord,
importContractPaymentRecord,
downloadContractPaymentRecordTemplate,
preCheckImportBusinessTitle,
downloadBusinessTitleTemplate,
importBusinessTitle,
getBusinessTitleList,
addBusinessTitle,
updateBusinessTitle,
deleteBusinessTitle,
revokeBusinessTitle,
getBusinessTitleDetail,
getBusinessTitleInvoiceCheck,
exportBusinessTitleAll,
exportBusinessTitleSelected,
getBusinessTitleThirdQuery,
getBusinessTitleThirdQueryOption,
getBusinessTitleConfig,
switchBusinessTitleFormConfig,
getBusinessTitleModuleForm,
addInvoiced,
updateInvoiced,
deleteInvoiced,
getInvoicedList,
getInvoicedDetail,
getInvoicedFormConfig,
getInvoicedFormSnapshotConfig,
exportInvoicedAll,
exportInvoicedSelected,
revokeInvoiced,
approvalInvoiced,
batchDeleteInvoiced,
addContractInvoicedView,
updateContractInvoicedView,
getContractInvoicedViewList,
getContractInvoicedViewDetail,
fixedContractInvoicedView,
enableContractInvoicedView,
deleteContractInvoicedView,
dragContractInvoicedView,
getInvoicedTab,
getInvoicedInContractList,
getContractDetailSnapshot,
getInvoicedDetailSnapshot,
getContractStatistic,
sortContract,
getPaymentRecordStatistic,
updateContractStatus,
updateContractStatusRollback,
sortContractStatus,
addContractStatus,
getContractStatusConfig,
deleteContractStatus,
updateContractStage,
saveContractAdvanceConfig,
switchContractCirculationType,
} = contractApi;
export const {
syncDE,
addApiKey,
updateAuth,
createAuth,
deleteAuth,
getDEToken,
getAuthList,
getDEOrgList,
updateApiKey,
enableApiKey,
deleteApiKey,
getAuthDetail,
sendEmailCode,
getApiKeyList,
disableApiKey,
getPageConfig,
getConfigEmail,
updateAuthName,
savePageConfig,
testConfigEmail,
getPersonalInfo,
getThirdTypeList,
switchThirdParty,
updateAuthStatus,
updateConfigEmail,
getPersonalFollow,
updatePersonalInfo,
updateUserPassword,
cancelCenterExport,
getExportCenterList,
getThirdPartyConfig,
getThirdConfigByType,
exportCenterDownload,
getThirdPartyResource,
getConfigSynchronization,
testConfigSynchronization,
updateConfigSynchronization,
getTenderConfig,
} = businessApi;
export const {
getMessageTask,
addAnnouncement,
saveMessageTask,
updateAnnouncement,
deleteAnnouncement,
getHomeMessageList,
getAnnouncementList,
getNotificationList,
setNotificationRead,
getNotificationCount,
batchSaveMessageTask,
getAnnouncementDetail,
closeMessageSubscribe,
getUnReadAnnouncement,
setAllNotificationRead,
getMessageTaskConfigDetail,
} = messageApi;
export const {
addReason,
sortReason,
addCluePool,
addCapacity,
checkRepeat,
updateReason,
searchConfig,
getReasonList,
updateCluePool,
noPickCluePool,
updateCapacity,
deleteCapacity,
uploadTempFile,
previewPicture,
getCluePoolPage,
getCapacityPage,
addCustomerPool,
downloadPicture,
getReasonConfig,
getSearchConfig,
getFieldDeptTree,
getFieldClueList,
getFieldContractList,
getFieldInvoiceList,
getFieldContractPaymentPlanList,
getFieldContractPaymentRecordList,
deleteReasonItem,
deleteAttachment,
moduleNavListSort,
getModuleRoleTree,
deleteOpportunity,
resetSearchConfig,
setTopNavListSort,
setDisplayAdvanced,
getAdvancedSwitch,
previewAttachment,
addOpportunityRule,
updateCustomerPool,
deleteCustomerPool,
noPickCustomerPool,
updateReasonEnable,
downloadAttachment,
getCustomerPoolPage,
getFormDesignConfig,
getFieldDeptUerTree,
getFieldContactList,
getFieldProductList,
getModuleTopNavList,
switchCluePoolStatus,
deleteModuleCluePool,
saveFormDesignConfig,
getFieldCustomerList,
uploadTempAttachment,
toggleModuleNavStatus,
getModuleUserDeptTree,
updateOpportunityRule,
getModuleNavConfigList,
getOpportunityRuleList,
moduleSearchMaskConfig,
switchOpportunityStatus,
getFieldOpportunityList,
switchCustomerPoolStatus,
getModuleSearchMaskConfig,
getFieldPriceList,
getFieldQuotationList,
getFieldOrderList,
getFieldDisplayList,
getFieldBusinessTitleList,
getDatasourceRefDetailList,
getFieldCustomFormList,
getDatasourceFieldConfig,
} = moduleApi;
export const {
addUser,
syncOrg,
updateUser,
deleteUser,
getUserList,
importUsers,
setCommander,
addDepartment,
getUserDetail,
batchEditUser,
getUserOptions,
getAdminOptions,
getRoleOptions,
sortDepartment,
deleteUserCheck,
renameDepartment,
deleteDepartment,
getDepartmentTree,
resetUserPassword,
updateOrgUserName,
importUserPreCheck,
getOrgDepartmentUser,
checkSync,
batchToggleStatusUser,
checkDeleteDepartment,
batchResetUserPassword,
checkSyncUserFromThird,
} = orgApi;
export const {
getRoles,
getUsers,
updateRole,
createRole,
deleteRole,
getRoleMember,
getRoleDetail,
getPermissions,
getRoleDeptTree,
relateRoleMember,
removeRoleMember,
getRoleMemberTree,
getRoleDeptUserTree,
batchRemoveRoleMember,
} = roleApi;
export const { login, signout, isLogin, getKey, getThirdCallback, getThirdOauthCallback } = loginApi;
export const { getSystemVersion, changeLocaleBackEnd } = sysApi;
export const { getLicense, addLicense } = licenseApi;
export const {
dashboardAdd,
dashboardPage,
dashboardDrag,
dashboardDelete,
dashboardDetail,
dashboardRename,
dashboardUpdate,
dashboardCollect,
dashboardModuleAdd,
dashboardUnCollect,
dashboardModuleTree,
dashboardModuleDrag,
dashboardCollectPage,
dashboardModuleCount,
dashboardModuleDelete,
dashboardModuleRename,
} = dashboardApi;
export const {
getHomeDepartmentTree,
getHomeFollowOpportunity,
getHomeLeadStatistic,
getHomeSuccessOptStatistic,
getHomeOpportunityUnderwayStatistic,
} = homeApi;
export const {
addAgent,
agentPos,
updateAgent,
agentRename,
agentDelete,
getAgentPage,
agentCollect,
agentModuleAdd,
unCollectAgent,
getAgentDetail,
agentModuleMove,
getAgentOptions,
agentModuleRename,
agentModuleDelete,
getMkAgentVersion,
getAgentModuleTree,
getAgentCollectPage,
getApplicationScript,
agentWorkspaceOptions,
getAgentModuleTreeCount,
agentApplicationOptions,
getMkApplication,
} = agentApi;
export const {
getApprovalProcessList,
getApprovalPermissions,
addApprovalProcess,
updateApprovalProcess,
approvalProcessDetail,
deleteApprovalProcess,
toggleApprovalProcess,
getApprovalConfigDetail,
getResourceApprovingDetail,
reviewResource,
revokeResource,
getProcessedApprovalList,
getPendingApprovalList,
getInitiatedApprovalList,
getCcApprovalList,
rejectApproval,
backApproval,
addSignApproval,
getApprovalResourceDetail,
getTodoStatistic,
revokeApproval,
batchRejectApproval,
agreeApproval,
batchAgreeApproval,
testApprovalWebHook,
} = processApi;

View File

@@ -0,0 +1,26 @@
import { GetOperationLogDetailUrl, LoginLogListUrl, OperationLogListUrl } from '@lib/shared/api/requrls/system/log';
import type { CommonList } from '@lib/shared/models/common';
import type {
LoginLogItem,
LoginLogParams,
OperationLogDetail,
OperationLogItem,
OperationLogParams,
} from '@lib/shared/models/system/log';
import CDR from '@/api/http/index';
// 登录日志
export function loginLogList(data: LoginLogParams) {
return CDR.post<CommonList<LoginLogItem>>({ url: LoginLogListUrl, data });
}
// 操作日志
export function operationLogList(data: OperationLogParams) {
return CDR.post<CommonList<OperationLogItem>>({ url: OperationLogListUrl, data });
}
// 操作日志-详情
export function operationLogDetail(id: string) {
return CDR.get<OperationLogDetail>({ url: `${GetOperationLogDetailUrl}/${id}` });
}

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,733 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Created by iconfont</metadata>
<defs>
<font id="iconfont" horiz-adv-x="1024">
<font-face
font-family="iconfont"
font-weight="400"
font-stretch="normal"
units-per-em="1024"
ascent="896"
descent="-128"
/>
<missing-glyph />
<glyph glyph-name="icon_form" unicode="&#59392;" d="M874.666667 810.666667A106.666667 106.666667 0 0 0 981.333333 704v-640a106.666667 106.666667 0 0 0-106.666666-106.666667h-725.333334A106.666667 106.666667 0 0 0 42.666667 64v640A106.666667 106.666667 0 0 0 149.333333 810.666667h725.333334z m21.333333-256H128v-490.666667a21.333333 21.333333 0 0 1 21.333333-21.333333h725.333334a21.333333 21.333333 0 0 1 21.333333 21.333333V554.666667z m-128-298.666667a42.666667 42.666667 0 0 0 0-85.333333h-341.333333a42.666667 42.666667 0 0 0 0 85.333333h341.333333zM298.666667 256a42.666667 42.666667 0 0 0 0-85.333333H256a42.666667 42.666667 0 0 0 0 85.333333h42.666667z m469.333333 170.666667a42.666667 42.666667 0 0 0 0-85.333334h-341.333333a42.666667 42.666667 0 0 0 0 85.333334h341.333333zM298.666667 426.666667a42.666667 42.666667 0 0 0 0-85.333334H256a42.666667 42.666667 0 0 0 0 85.333334h42.666667z m576 298.666666h-725.333334a21.333333 21.333333 0 0 1-21.333333-21.333333V640h768V704a21.333333 21.333333 0 0 1-21.333333 21.333333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_move2" unicode="&#59393;" d="M458.666667 618.666667A96 96 0 0 0 554.666667 522.666667v-32.64l4.096 0.426666 6.570666 0.213334c33.152 0 62.336-16.810667 79.616-42.325334l2.218667-3.584 5.504 1.28a96 96 0 0 0 12.757333 1.706667l6.570667 0.256c33.152 0 62.336-16.810667 79.616-42.325333l2.218667-3.584 5.504 1.28a96 96 0 0 0 12.757333 1.706666l6.570667 0.256a96 96 0 0 0 96-96v-167.850666c0-32.512-8.661333-63.232-26.624-88.661334-35.84-50.858667-77.994667-92.245333-127.232-113.365333-87.637333-37.546667-165.973333-38.314667-266.410667-0.768-95.872 35.84-178.773333 134.826667-249.344 261.504-28.245333 50.773333-14.336 113.706667 31.189333 150.101333a124.373333 124.373333 0 0 0 125.994667 17.493334l0.426667 154.88a96 96 0 0 0 89.429333 95.786666l6.570667 0.213334z m0-85.333334a10.666667 10.666667 0 0 1-10.666667-10.666666v-245.333334c0-37.973333-45.952-57.045333-72.832-30.165333l-33.621333 33.621333a39.04 39.04 0 0 1-52.010667 2.901334c-13.653333-10.922667-17.493333-28.373333-9.941333-41.984 61.226667-109.866667 133.888-196.608 204.672-223.061334 80.213333-30.037333 135.893333-29.482667 202.922666-0.768 31.445333 13.482667 63.573333 45.056 91.136 84.138667 7.168 10.197333 11.008 23.722667 11.008 39.466667V309.333333a10.666667 10.666667 0 0 1-21.333333 0c0-56.874667-85.333333-56.874667-85.333333 0v42.666667a10.666667 10.666667 0 0 1-21.333334 0c0-56.874667-85.333333-56.874667-85.333333 0v42.666667a10.666667 10.666667 0 0 1-21.333333 0c0-56.874667-85.333333-56.874667-85.333334 0v128a10.666667 10.666667 0 0 1-10.666666 10.666666zM328.832 840.832a42.666667 42.666667 0 0 0 0-60.330667L316.330667 768h263.296l-12.458667 12.501333a42.666667 42.666667 0 0 0-3.541333 56.32l3.541333 4.010667a42.666667 42.666667 0 0 0 60.330667 0l85.333333-85.333333c1.237333-1.194667 2.346667-2.517333 3.413333-3.84l-3.413333 3.84a43.008 43.008 0 0 0 12.458667-28.8L725.333333 725.333333v-1.408l-0.170666-2.218666L725.333333 725.333333a43.008 43.008 0 0 0-9.088-26.325333l-0.298666-0.341333-3.114667-3.498667-85.333333-85.333333a42.666667 42.666667 0 0 0-60.330667 60.330666L579.584 682.666667H316.373333l12.458667-12.501334a42.666667 42.666667 0 0 0 3.541333-56.32l-3.541333-4.010666a42.666667 42.666667 0 0 0-60.330667 0l-85.333333 85.333333-3.114667 3.498667a42.88 42.88 0 0 0-0.298666 0.341333l3.413333-3.84A43.008 43.008 0 0 0 170.666667 724.48 42.666667 42.666667 0 0 0 170.666667 725.333333v0.768c0 1.024 0.085333 2.048 0.170666 3.029334L170.666667 725.333333a43.008 43.008 0 0 0 9.088 26.325334c1.066667 1.322667 2.176 2.645333 3.413333 3.84l85.333333 85.333333a42.666667 42.666667 0 0 0 60.330667 0z" horiz-adv-x="1024" />
<glyph glyph-name="icon_send" unicode="&#59391;" d="M911.146667 807.978667l1.621333-0.725334a42.368 42.368 0 0 0 13.397333-9.088l0.64-0.64c3.328-3.456 6.058667-7.466667 8.106667-11.818666l0.341333-0.938667a41.386667 41.386667 0 0 0 1.28-30.037333l-0.256-0.853334-283.733333-810.666666c-12.8-36.437333-63.573333-38.528-79.274667-3.2l-155.477333 349.824-349.781333 155.434666c-33.621333 14.933333-33.365333 61.738667-1.749334 77.226667l4.992 2.048 810.666667 283.733333 0.810667 0.298667a42.538667 42.538667 0 0 0 1.749333 0.512l-2.56-0.853333c2.048 0.768 4.138667 1.28 6.186667 1.706666l0.682666 0.128a41.258667 41.258667 0 0 0 22.357334-2.133333z m-117.205334-202.368l-292.949333-292.949334 106.538667-239.658666 186.410666 532.608zM733.653333 666.026667L200.96 479.573333l239.658667-106.538666 293.034666 293.034666z" horiz-adv-x="1024" />
<glyph glyph-name="icon_end" unicode="&#59390;" d="M757.162667 762.368a449.066667 449.066667 0 0 0 111.957333-90.538667A438.186667 438.186667 0 0 0 981.333333 378.752C981.333333 134.101333 780.629333-64 533.333333-64S85.333333 134.101333 85.333333 378.752c0 109.44 40.362667 212.778667 112.213334 293.12a448.426667 448.426667 0 0 0 111.957333 90.496 42.666667 42.666667 0 1 0 42.325333-74.069333A363.733333 363.733333 0 0 1 261.12 614.954667 352.896 352.896 0 0 1 170.666667 378.752c0-197.248 162.261333-357.418667 362.666666-357.418667s362.666667 160.170667 362.666667 357.418667a352.896 352.896 0 0 1-90.453333 236.202667 363.093333 363.093333 0 0 1-90.709334 73.344 42.666667 42.666667 0 1 0 42.325334 74.069333zM533.333333 853.333333a42.666667 42.666667 0 0 0 42.666667-42.666666v-426.666667a42.666667 42.666667 0 0 0-85.333333 0V810.666667a42.666667 42.666667 0 0 0 42.666666 42.666666z" horiz-adv-x="1024" />
<glyph glyph-name="icon_down" unicode="&#59389;" d="M768 533.333333c37.973333 0 57.045333-45.952 30.165333-72.832l-256-256a42.666667 42.666667 0 0 0-60.330666 0l-256 256C198.954667 487.381333 217.984 533.333333 256 533.333333h512z" horiz-adv-x="1024" />
<glyph glyph-name="icon_left" unicode="&#59386;" d="M682.666667 640v-512c0-37.973333-45.952-57.045333-72.832-30.165333l-256 256a42.666667 42.666667 0 0 0 0 60.330666l256 256C636.714667 697.045333 682.666667 678.016 682.666667 640z" horiz-adv-x="1024" />
<glyph glyph-name="icon_right" unicode="&#59387;" d="M414.165333 670.165333l256-256a42.666667 42.666667 0 0 0 0-60.330666l-256-256C387.285333 70.954667 341.333333 89.984 341.333333 128V640c0 37.973333 45.952 57.045333 72.832 30.165333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_up" unicode="&#59388;" d="M542.165333 563.498667l256-256c26.88-26.88 7.850667-72.832-30.165333-72.832H256c-37.973333 0-57.045333 45.952-30.165333 72.832l256 256a42.666667 42.666667 0 0 0 60.330666 0z" horiz-adv-x="1024" />
<glyph glyph-name="icon_aiming" unicode="&#59379;" d="M512 853.333333c259.2 0 469.333333-210.133333 469.333333-469.333333s-210.133333-469.333333-469.333333-469.333333S42.666667 124.8 42.666667 384 252.8 853.333333 512 853.333333z m42.666667-87.68V661.333333a42.666667 42.666667 0 0 0-85.333334 0V765.653333A384.170667 384.170667 0 0 1 130.346667 426.666667H234.666667a42.666667 42.666667 0 0 0 0-85.333334H130.346667A384.170667 384.170667 0 0 1 469.333333 2.304V106.666667a42.666667 42.666667 0 0 0 85.333334 0v-104.32a384.170667 384.170667 0 0 1 338.986666 338.944L768 341.333333a42.666667 42.666667 0 0 0 0 85.333334h125.653333a384.170667 384.170667 0 0 1-338.944 338.986666z" horiz-adv-x="1024" />
<glyph glyph-name="icon_zoom_out1" unicode="&#59380;" d="M490.666667 810.666667a405.333333 405.333333 0 0 0 405.333333-405.333334 403.626667 403.626667 0 0 0-90.154667-254.890666l156.757334-156.672a42.666667 42.666667 0 0 0-60.373334-60.373334l-156.672 156.757334A403.626667 403.626667 0 0 0 490.666667 0a405.333333 405.333333 0 0 0 0 810.666667z m0-85.333334a320 320 0 1 1 0-640 320 320 0 0 1 0 640z m128-277.333333a42.666667 42.666667 0 0 0 0-85.333333h-256a42.666667 42.666667 0 0 0 0 85.333333h256z" horiz-adv-x="1024" />
<glyph glyph-name="icon_simplified" unicode="&#59381;" d="M896 757.333333a42.666667 42.666667 0 0 0 0-85.333333H85.333333a42.666667 42.666667 0 1 0 0 85.333333h810.666667z m0-682.666666a42.666667 42.666667 0 0 0 0-85.333334H85.333333a42.666667 42.666667 0 0 0 0 85.333334h810.666667z m-192 426.666666a42.666667 42.666667 0 0 0 42.666667-42.666666v-170.666667a42.666667 42.666667 0 0 0-42.666667-42.666667h-426.666667a42.666667 42.666667 0 0 0-42.666666 42.666667v170.666667a42.666667 42.666667 0 0 0 42.666666 42.666666h426.666667z m-42.666667-85.333333h-341.333333v-85.333333h341.333333v85.333333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_order_form1" unicode="&#59382;" d="M661.333333 853.333333a42.666667 42.666667 0 0 0 42.666667-42.666666v-21.333334H810.666667a85.333333 85.333333 0 0 0 85.333333-85.333333V0a85.333333 85.333333 0 0 0-85.333333-85.333333H213.333333a85.333333 85.333333 0 0 0-85.333333 85.333333V704a85.333333 85.333333 0 0 0 85.333333 85.333333h106.666667V810.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h298.666666z m-341.333333-149.333333H213.333333V0h597.333334V704h-106.666667V682.666667a42.666667 42.666667 0 0 0-37.674667-42.368L661.333333 640h-298.666666a42.666667 42.666667 0 0 0-42.666667 42.666667v21.333333z m286.165333-183.168a42.666667 42.666667 0 0 0 0-60.330667L508.330667 362.666667h110.421333c36.352 0 55.338667-42.069333 33.408-69.248l-3.242667-3.626667-170.752-170.666667a42.666667 42.666667 0 1 0-60.330666 60.330667l97.877333 97.877333H405.333333c-36.352 0-55.338667 42.026667-33.408 69.205334l3.242667 3.584 170.666667 170.709333a42.666667 42.666667 0 0 0 60.330666 0zM618.666667 768h-213.333334v-42.666667h213.333334V768z" horiz-adv-x="1024" />
<glyph glyph-name="icon_zoom_in1" unicode="&#59383;" d="M490.666667 810.666667a405.333333 405.333333 0 0 0 405.333333-405.333334 403.626667 403.626667 0 0 0-90.154667-254.890666l156.757334-156.672a42.666667 42.666667 0 0 0-60.373334-60.373334l-156.672 156.757334A403.626667 403.626667 0 0 0 490.666667 0a405.333333 405.333333 0 0 0 0 810.666667z m0-85.333334a320 320 0 1 1 0-640 320 320 0 0 1 0 640z m0-149.333333a42.666667 42.666667 0 0 0 42.666666-42.666667v-85.418666l85.290667 0.085333a42.666667 42.666667 0 0 0 0.085333-85.333333l-85.376-0.085334V277.333333a42.666667 42.666667 0 0 0-85.333333 0v85.162667l-84.906667-0.170667a42.666667 42.666667 0 0 0-0.170666 85.333334l85.077333 0.170666V533.333333a42.666667 42.666667 0 0 0 42.666667 42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="icon_keyboard" unicode="&#59384;" d="M896 768a85.333333 85.333333 0 0 0 85.333333-85.333333v-597.333334a85.333333 85.333333 0 0 0-85.333333-85.333333H128a85.333333 85.333333 0 0 0-85.333333 85.333333V682.666667a85.333333 85.333333 0 0 0 85.333333 85.333333h768z m0-85.333333H128v-597.333334h768V682.666667z m-128-362.666667a42.666667 42.666667 0 0 0 0-85.333333H256a42.666667 42.666667 0 0 0 0 85.333333h512zM298.666667 512a42.666667 42.666667 0 1 0 0-85.333333H256a42.666667 42.666667 0 0 0 0 85.333333h42.666667z m192 0a42.666667 42.666667 0 0 0 0-85.333333h-42.666667a42.666667 42.666667 0 0 0 0 85.333333h42.666667zM768 512a42.666667 42.666667 0 0 0 0-85.333333h-149.333333a42.666667 42.666667 0 0 0 0 85.333333H768z" horiz-adv-x="1024" />
<glyph glyph-name="icon_numerous" unicode="&#59385;" d="M384 853.333333a85.333333 85.333333 0 0 0 85.333333-85.333333v-256a85.333333 85.333333 0 0 0-85.333333-85.333333H128a85.333333 85.333333 0 0 0-85.333333 85.333333V768a85.333333 85.333333 0 0 0 85.333333 85.333333h256z m0-85.333333H128v-256h256V768z m0-426.666667a85.333333 85.333333 0 0 0 85.333333-85.333333v-256a85.333333 85.333333 0 0 0-85.333333-85.333333H128a85.333333 85.333333 0 0 0-85.333333 85.333333v256a85.333333 85.333333 0 0 0 85.333333 85.333333h256z m0-85.333333H128v-256h256v256zM896 853.333333a85.333333 85.333333 0 0 0 85.333333-85.333333v-256a85.333333 85.333333 0 0 0-85.333333-85.333333h-256a85.333333 85.333333 0 0 0-85.333333 85.333333V768a85.333333 85.333333 0 0 0 85.333333 85.333333h256z m0-85.333333h-256v-256h256V768z m42.666667-426.666667a42.666667 42.666667 0 0 0 0-85.333333h-341.333334a42.666667 42.666667 0 0 0 0 85.333333h341.333334z m0-170.666666a42.666667 42.666667 0 0 0 0-85.333334h-170.666667a42.666667 42.666667 0 0 0 0 85.333334h170.666667z m0-170.666667a42.666667 42.666667 0 0 0 0-85.333333h-341.333334a42.666667 42.666667 0 0 0 0 85.333333h341.333334z" horiz-adv-x="1024" />
<glyph glyph-name="icon_order_form" unicode="&#59378;" d="M661.333333 853.333333a42.666667 42.666667 0 0 0 42.666667-42.666666v-21.333334H810.666667a85.333333 85.333333 0 0 0 85.333333-85.333333V0a85.333333 85.333333 0 0 0-85.333333-85.333333H213.333333a85.333333 85.333333 0 0 0-85.333333 85.333333V704a85.333333 85.333333 0 0 0 85.333333 85.333333h106.666667V810.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h298.666666z m-341.333333-149.333333H213.333333V0h597.333334V704h-106.666667V682.666667a42.666667 42.666667 0 0 0-37.674667-42.368L661.333333 640h-298.666666a42.666667 42.666667 0 0 0-42.666667 42.666667v21.333333z m286.165333-183.168a42.666667 42.666667 0 0 0 0-60.330667L508.330667 362.666667h110.421333c36.352 0 55.338667-42.069333 33.408-69.248l-3.242667-3.626667-170.752-170.666667a42.666667 42.666667 0 1 0-60.330666 60.330667l97.877333 97.877333H405.333333c-36.352 0-55.338667 42.026667-33.408 69.205334l3.242667 3.584 170.666667 170.709333a42.666667 42.666667 0 0 0 60.330666 0zM618.666667 768h-213.333334v-42.666667h213.333334V768z" horiz-adv-x="1024" />
<glyph glyph-name="icon_add_one" unicode="&#59377;" d="M512 853.333333c259.2 0 469.333333-210.133333 469.333333-469.333333s-210.133333-469.333333-469.333333-469.333333S42.666667 124.8 42.666667 384 252.8 853.333333 512 853.333333z m0-256a42.666667 42.666667 0 0 1-42.666667-42.666666v-128H341.333333a42.666667 42.666667 0 0 1 0-85.333334h128v-128a42.666667 42.666667 0 0 1 85.333334 0v128h128a42.666667 42.666667 0 0 1 0 85.333334h-128V554.666667a42.666667 42.666667 0 0 1-42.666667 42.666666z" horiz-adv-x="1024" />
<glyph glyph-name="icon_qichacha" unicode="&#59376;" d="M512 853.333333a469.077333 469.077333 0 0 0 427.52-662.613333l-84.437333 47.872A372.693333 372.693333 0 0 1 188.8 569.301333a372.693333 372.693333 0 0 1 623.061333-406.357333l160.213334-98.261333-46.805334-81.152-95.701333 55.168A469.077333 469.077333 0 0 0 60.544 511.957333 469.162667 469.162667 0 0 0 512 853.333333z m0-187.562666c58.538667 0 112.981333-17.92 157.994667-48.512L614.826667 538.026667a185.002667 185.002667 0 1 1 45.696-264.362667l79.104-55.466667a281.557333 281.557333 0 0 0-502.869334 224.512A281.557333 281.557333 0 0 0 512 665.770667z m0-176.426667c24.32 0 46.72-8.234667 64.554667-22.101333l-37.12-53.930667a40.106667 40.106667 0 1 1 7.594666-48.64l53.333334-37.802667a105.258667 105.258667 0 1 0-88.32 162.56v-0.085333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_correlation" unicode="&#59375;" d="M640 501.333333a32 32 0 1 0 0-64h-213.333333a138.666667 138.666667 0 1 1 0-277.333333h341.333333a138.666667 138.666667 0 0 1 104.021333 230.4 32 32 0 1 0 47.957334 42.325333A202.666667 202.666667 0 0 0 768 96h-341.333333a202.666667 202.666667 0 1 0 0 405.333333h213.333333z m-42.666667 170.666667a202.666667 202.666667 0 1 0 0-405.333333H384a32 32 0 1 0 0 64h213.333333a138.666667 138.666667 0 1 1 0 277.333333H256a138.666667 138.666667 0 0 1-104.021333-230.4 32 32 0 1 0-47.957334-42.325333A202.666667 202.666667 0 0 0 256 672h341.333333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_target" unicode="&#59374;" d="M512 853.333333a42.666667 42.666667 0 0 0 42.666667-42.666666v-23.552c189.824-19.882667 340.608-170.666667 360.448-360.448H938.666667a42.666667 42.666667 0 0 0 0-85.333334h-23.552A405.418667 405.418667 0 0 0 554.666667-19.157333L554.666667-42.666667a42.666667 42.666667 0 0 0-85.333334 0v23.552a405.418667 405.418667 0 0 0-360.448 360.405334L85.333333 341.333333a42.666667 42.666667 0 0 0 0 85.333334h23.552A405.418667 405.418667 0 0 0 469.333333 787.114667V810.666667a42.666667 42.666667 0 0 0 42.666667 42.666666zM302.933333 341.333333H194.816a320.128 320.128 0 0 1 274.56-274.517333V174.933333A213.504 213.504 0 0 0 302.933333 341.333333z m526.250667 0H721.066667a213.504 213.504 0 0 0-166.4-166.4v-108.117333A320.128 320.128 0 0 1 829.184 341.333333zM469.333333 341.333333H391.253333A128.256 128.256 0 0 1 469.333333 263.253333V341.333333z m163.413334 0H554.666667v-78.08A128.256 128.256 0 0 1 632.746667 341.333333zM194.773333 426.666667H302.933333A213.504 213.504 0 0 0 469.333333 593.066667V701.184a320.128 320.128 0 0 1-274.517333-274.56zM554.666667 701.141333V593.066667a213.504 213.504 0 0 0 166.4-166.4h108.117333A320.128 320.128 0 0 1 554.666667 701.141333z m-163.413334-274.56L469.333333 426.666667V504.746667A128.256 128.256 0 0 1 391.253333 426.666667zM554.666667 504.746667V426.666667h78.08A128.256 128.256 0 0 1 554.666667 504.746667z" horiz-adv-x="1024" />
<glyph glyph-name="icon_pie" unicode="&#59373;" d="M536.32-74.026667l-8.064-0.341333a459.434667 459.434667 0 0 0-34.389333 0.042667l-2.090667 0.085333a456.704 456.704 0 0 0-281.173333 112.512l-2.56 2.261333a440.32 440.32 0 0 0-9.258667 8.405334l-0.768 0.725333A457.557333 457.557333 0 0 0 53.333333 384c0 249.216 198.784 452.010667 446.464 458.496L512 842.666667c5.077333 0 10.154667-0.085333 15.189333-0.256L512 842.666667a456.618667 456.618667 0 0 0 293.12-105.898667l1.92-1.621333a416.170667 416.170667 0 0 0 11.904-10.325334 458.581333 458.581333 0 0 0 23.04-22.272 457.045333 457.045333 0 0 0 128.256-298.794666l0.128-2.858667a456.917333 456.917333 0 0 0-149.12-355.626667c-3.584-3.285333-7.253333-6.485333-10.922667-9.642666l-0.426666-0.426667-1.109334-0.938667c-3.498667-2.944-6.997333-5.845333-10.538666-8.661333l11.648 9.642667a456.32 456.32 0 0 0-265.685334-108.8h-0.426666 0.426666l-7.850666-0.469334z m7.68 851.370667V384a32 32 0 0 0-8.661333-21.888l-269.269334-286.72 9.813334-7.637333 12.928-9.301334 1.194666-0.810666a395.946667 395.946667 0 0 1 103.594667-50.133334l14.250667-4.181333a394.666667 394.666667 0 0 1 63.488-11.946667l-0.896 0.128c4.693333-0.469333 9.386667-0.853333 14.122666-1.237333l-13.226666 1.152c5.589333-0.597333 11.264-1.066667 16.938666-1.408l-3.712 0.256c5.930667-0.426667 11.818667-0.682667 17.749334-0.853333l-14.08 0.597333c5.12-0.298667 10.24-0.469333 15.36-0.597333h-1.28a394.666667 394.666667 0 0 1 232.277333 68.650666l-1.834667-1.237333a394.666667 394.666667 0 0 1 36.522667 27.904l-0.981333-0.853333a394.666667 394.666667 0 0 1 32.682666 31.317333l-1.493333-1.621333a394.666667 394.666667 0 0 1 21.034667 24.277333l-1.962667-2.432a394.666667 394.666667 0 0 1 87.68 230.485333l-0.170667-3.797333a394.666667 394.666667 0 0 1 0.554667 15.488l-0.384-11.690667c0.256 4.864 0.384 9.685333 0.426667 14.592l-0.042667-2.901333a394.666667 394.666667 0 0 1-138.666667 306.773333l2.474667-2.090666a394.666667 394.666667 0 0 1-10.24 8.533333l7.765333-6.4a396.672 396.672 0 0 1-10.496 8.661333l2.730667-2.218666a394.666667 394.666667 0 0 1-203.861333 85.333333l-12.373334 1.152zM117.333333 384c0-101.930667 38.613333-194.816 102.058667-264.832l260.608 277.546667V777.386667A394.666667 394.666667 0 0 1 117.333333 384zM512 810.666667a426.666667 426.666667 0 1 0-292.053333-737.706667L512 384V810.666667z" horiz-adv-x="1024" />
<glyph glyph-name="icon_contract" unicode="&#59370;" d="M518.826667 810.666667c134.4 0 230.741333-78.08 230.741333-231.509334 0-73.557333-21.632-125.781333-62.122667-173.568-4.821333-5.674667-34.688-37.888-38.997333-44.074666a20.949333 20.949333 0 0 1-2.901333-4.821334v-12.416l0.042666-3.84h186.453334a64 64 0 0 0 63.658666-57.856l0.298667-6.144V106.666667a42.666667 42.666667 0 0 0-42.666667-42.666667H170.666667a42.666667 42.666667 0 0 0-42.666667 42.666667l0.085333 169.813333a64.042667 64.042667 0 0 0 64 63.957333H382.293333l0.085334 3.584v9.258667a155.136 155.136 0 0 1-6.186667 7.594667l-1.365333 1.536a1308.288 1308.288 0 0 0-35.157334 39.466666c-39.893333 49.066667-61.824 103.808-61.824 177.28C277.802667 732.16 381.653333 810.666667 518.826667 810.666667z m0-85.333334C424.405333 725.333333 363.136 679.04 363.136 579.157333c0-52.522667 14.506667-88.746667 42.752-123.477333 4.48-5.546667 9.258667-10.965333 15.445333-17.749333-0.512 0.554667 12.373333-13.354667 15.786667-17.194667 15.232-17.024 23.765333-29.568 28.202667-46.08 1.578667-5.888 2.389333-11.861333 2.389333-17.92v-8.362667c-0.085333-26.581333-0.682667-35.413333-3.84-47.530666-7.253333-27.989333-28.8-45.738667-58.368-45.738667H213.418667L213.333333 149.333333h597.333334v105.770667h-191.146667c-24.874667 0-45.312 10.837333-54.058667 35.541333l-1.792 5.973334c-2.730667 10.581333-3.328 17.706667-3.413333 44.8v15.274666c0 19.541333 6.485333 36.778667 18.090667 53.461334 8.405333 12.117333 42.666667 48.981333 43.989333 50.602666 28.16 33.194667 41.898667 66.432 41.898667 118.4C664.234667 681.045333 609.578667 725.333333 518.826667 725.333333zM853.333333 21.333333a42.666667 42.666667 0 0 0 0-85.333333H170.666667a42.666667 42.666667 0 0 0 0 85.333333h682.666666z" horiz-adv-x="1024" />
<glyph glyph-name="icon_arithmetic" unicode="&#59371;" d="M896 245.333333a32 32 0 1 0 0-64h-298.666667a32 32 0 1 0 0 64h298.666667z m0-170.666666a32 32 0 1 0 0-64h-298.666667a32 32 0 1 0 0 64h298.666667zM179.285333 281.984l98.005334-98.048 98.090666 98.048a32 32 0 0 0 45.226667-45.226667L322.56 138.666667l98.090667-98.048a32 32 0 0 0-45.269334-45.226667L277.290667 93.44l-98.005334-98.090667a32 32 0 0 0-45.226666 45.226667l98.005333 98.090667-98.048 98.048a32 32 0 0 0 45.226667 45.226666zM896 650.666667a32 32 0 1 0 0-64h-298.666667a32 32 0 1 0 0 64h298.666667zM277.333333 800a32 32 0 0 0 32-32v-117.333333H426.666667a32 32 0 1 0 0-64H309.333333V469.333333a32 32 0 1 0-64 0V586.666667H128a32 32 0 0 0 0 64h117.333333V768a32 32 0 0 0 32 32z" horiz-adv-x="1024" />
<glyph glyph-name="icon_table" unicode="&#59372;" d="M138.666667 10.666667A74.666667 74.666667 0 0 0 64 85.333333V682.666667c0 41.216 33.450667 74.666667 74.666667 74.666666h768c41.216 0 74.666667-33.450667 74.666666-74.666666v-597.333334a74.666667 74.666667 0 0 0-74.666666-74.666666h-768zM341.333333 245.333333H128V85.333333c0-5.888 4.778667-10.666667 10.666667-10.666666H341.333333v170.666666z m298.666667 0H405.333333v-170.666666H640v170.666666z m277.333333 0h-213.333333v-170.666666h202.666667a10.666667 10.666667 0 0 1 10.666666 10.666666v160z m-576 213.333334H128v-149.333334h213.333333v149.333334z m298.666667 0H405.333333v-149.333334H640v149.333334z m277.333333 0h-213.333333v-149.333334h213.333333v149.333334z m-10.666666 234.666666h-768A10.666667 10.666667 0 0 1 128 682.666667v-160h789.333333V682.666667a10.666667 10.666667 0 0 1-10.666666 10.666666z" horiz-adv-x="1024" />
<glyph glyph-name="icon_wait" unicode="&#58914;" d="M512 853.333333c259.2 0 469.333333-210.133333 469.333333-469.333333s-210.133333-469.333333-469.333333-469.333333S42.666667 124.8 42.666667 384 252.8 853.333333 512 853.333333z m187.733333-213.333333H307.2a8.021333 8.021333 0 0 1-6.144-2.56 9.258667 9.258667 0 0 1-2.389333-6.570667v-18.304c0-2.645333 0.810667-4.864 2.389333-6.570666 1.621333-1.706667 3.669333-2.56 6.144-2.56h25.6c0-49.706667 9.472-93.653333 28.416-131.84 18.901333-38.229333 42.624-67.413333 71.04-87.594667-28.416-20.181333-52.138667-49.365333-71.04-87.594667-18.944-38.144-28.416-82.133333-28.416-131.84h-25.6a8.021333 8.021333 0 0 1-6.144-2.56 9.258667 9.258667 0 0 1-2.389333-6.570666v-18.304c0-2.645333 0.810667-4.864 2.389333-6.570667 1.621333-1.706667 3.669333-2.56 6.144-2.56h392.533333c2.474667 0 4.522667 0.853333 6.144 2.56a9.258667 9.258667 0 0 1 2.389334 6.570667v18.304a9.258667 9.258667 0 0 1-2.389334 6.570666 8.021333 8.021333 0 0 1-6.144 2.56h-25.6c0 49.706667-9.472 93.696-28.416 131.84-18.901333 38.229333-42.624 67.413333-71.04 87.594667 28.416 20.181333 52.138667 49.365333 71.04 87.552 18.944 38.229333 28.416 82.176 28.416 131.84h25.6c2.474667 0 4.522667 0.896 6.144 2.602667a9.258667 9.258667 0 0 1 2.389334 6.570666v18.304a9.258667 9.258667 0 0 1-2.389334 6.570667A8.021333 8.021333 0 0 1 699.733333 640z m-165.589333-274.304c18.346667-7.978667 35.584-21.546667 51.882667-40.704 16.213333-19.157333 29.184-42.154667 38.784-68.992H382.165333a219.306667 219.306667 0 0 0 38.784 68.992c16.256 19.157333 33.536 32.725333 51.882667 40.704zM640 603.434667c0-39.253333-7.552-75.818667-22.656-109.738667H389.546667a266.410667 266.410667 0 0 0-22.613334 109.738667z" horiz-adv-x="1024" />
<glyph glyph-name="icon_skip_planarity" unicode="&#58920;" d="M512 853.333333c259.2 0 469.333333-210.133333 469.333333-469.333333s-210.133333-469.333333-469.333333-469.333333S42.666667 124.8 42.666667 384 252.8 853.333333 512 853.333333z m204.8-298.666666a51.2 51.2 0 0 1-51.2-51.2v-102.4h-234.794667l40.618667 40.576A51.2 51.2 0 1 1 398.933333 514.133333l-128-128a51.029333 51.029333 0 0 1 0-72.405333l128-128a51.2 51.2 0 0 1 72.448 72.405333L430.805333 298.666667H716.8a51.2 51.2 0 0 1 51.2 51.2V503.466667A51.2 51.2 0 0 1 716.8 554.666667z" horiz-adv-x="1024" />
<glyph glyph-name="icon_industry" unicode="&#59369;" d="M821.333333 661.333333c12.501333 0 23.893333-7.253333 29.098667-18.688l117.333333-256a32 32 0 0 0 2.901334-13.312v-256A32 32 0 0 0 938.666667 85.333333h-32.469334a117.333333 117.333333 0 1 0-233.728 0H415.573333a117.333333 117.333333 0 1 0-233.728 0H128a32 32 0 0 0-32 32v170.666667A32 32 0 0 0 128 320h522.666667V629.333333A32 32 0 0 0 682.666667 661.333333h138.666666zM789.333333 128a53.333333 53.333333 0 1 1 0-106.666667 53.333333 53.333333 0 0 1 0 106.666667zM298.666667 128a53.333333 53.333333 0 1 1 0-106.666667A53.333333 53.333333 0 0 1 298.666667 128z m352 128H160v-106.666667h48.170667c21.504 26.026667 54.058667 42.666667 90.496 42.666667 36.437333 0 68.992-16.64 90.496-42.666667h261.504V256z m150.144 341.333333H714.666667v-432.170666a116.864 116.864 0 0 0 74.666666 26.837333c36.437333 0 68.992-16.64 90.496-42.666667h26.837334v217.002667L800.810667 597.333333zM554.666667 746.666667a32 32 0 0 0 32-32v-298.666667A32 32 0 0 0 554.666667 384H149.333333a32 32 0 0 0-31.274666 25.301333l-64 298.666667A32 32 0 0 0 85.333333 746.666667h469.333334zM522.666667 682.666667H124.885333l50.304-234.666667h347.477334V682.666667zM810.666667 789.333333A32 32 0 1 0 810.666667 725.333333h-128a32 32 0 1 0 0 64h128z" horiz-adv-x="1024" />
<glyph glyph-name="icon_functions_outlined" unicode="&#59368;" d="M512 384L207.189333 645.248C175.104 672.768 194.56 725.333333 236.8 725.333333H802.133333c12.586667 0 22.741333-10.197333 22.741334-22.741333v-39.850667A22.741333 22.741333 0 0 0 802.133333 640H341.333333l291.370667-238.378667c11.093333-9.130667 11.093333-26.112 0-35.242666L341.333333 128h489.258667c12.544 0 22.741333-10.197333 22.741333-22.741333v-39.850667a22.741333 22.741333 0 0 0-22.741333-22.741333H236.8c-42.24 0-61.696 52.565333-29.610667 80.085333L512 384z" horiz-adv-x="1024" />
<glyph glyph-name="icon_timeline" unicode="&#59367;" d="M138.666667-42.666667a42.666667 42.666667 0 0 0-85.333334 0V810.666667a42.666667 42.666667 0 1 0 85.333334 0v-128h113.92a128.042667 128.042667 0 0 0 241.493333 0h455.253333a42.666667 42.666667 0 0 0 0-85.333334H494.037333a128.042667 128.042667 0 0 0-241.408 0H138.666667v-170.666666h497.92a128.042667 128.042667 0 0 0 241.493333 0h71.253333a42.666667 42.666667 0 0 0 0-85.333334h-71.296a128.042667 128.042667 0 0 0-241.408 0H138.666667v-170.666666h113.92a128.042667 128.042667 0 0 0 241.493333 0h455.253333a42.666667 42.666667 0 0 0 0-85.333334H494.037333a128.042667 128.042667 0 0 0-241.408 0H138.666667v-128z m234.666666 213.333334a42.666667 42.666667 0 1 1 0-85.333334 42.666667 42.666667 0 0 1 0 85.333334z m384 256a42.666667 42.666667 0 1 1 0-85.333334 42.666667 42.666667 0 0 1 0 85.333334z m-384 256a42.666667 42.666667 0 1 1 0-85.333334 42.666667 42.666667 0 0 1 0 85.333334z" horiz-adv-x="1024" />
<glyph glyph-name="icon_waterfalls" unicode="&#59365;" d="M490.666667 810.666667a42.666667 42.666667 0 0 0 42.666666-42.666667v-298.666667a42.666667 42.666667 0 0 0-42.666666-42.666666H128a42.666667 42.666667 0 0 0-42.666667 42.666666V768a42.666667 42.666667 0 0 0 42.666667 42.666667h362.666667z m-42.666667-85.333334H170.666667v-213.333333h277.333333V725.333333zM896 341.333333a42.666667 42.666667 0 0 0 42.666667-42.666666v-298.666667a42.666667 42.666667 0 0 0-42.666667-42.666667h-362.666667a42.666667 42.666667 0 0 0-42.666666 42.666667v298.666667a42.666667 42.666667 0 0 0 42.666666 42.666666H896z m-42.666667-85.333333h-277.333333v-213.333333H853.333333v213.333333z m42.666667 554.666667a42.666667 42.666667 0 0 0 42.666667-42.666667v-298.666667a42.666667 42.666667 0 0 0-42.666667-42.666666h-234.666667a42.666667 42.666667 0 0 0-42.666666 42.666666V768a42.666667 42.666667 0 0 0 42.666666 42.666667H896z m-42.666667-85.333334h-149.333333v-213.333333H853.333333V725.333333zM362.666667 341.333333a42.666667 42.666667 0 0 0 42.666666-42.666666v-298.666667a42.666667 42.666667 0 0 0-42.666666-42.666667H128a42.666667 42.666667 0 0 0-42.666667 42.666667v298.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h234.666667z m-42.666667-85.333333H170.666667v-213.333333h149.333333v213.333333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_list" unicode="&#59366;" d="M170.666667 810.666667a128 128 0 1 0 0-256 128 128 0 0 0 0 256z m0-85.333334a42.666667 42.666667 0 1 1 0-85.333333 42.666667 42.666667 0 0 1 0 85.333333z m0-256a85.333333 85.333333 0 1 0 0-170.666666 85.333333 85.333333 0 0 0 0 170.666666z m0-298.666666a85.333333 85.333333 0 1 0 0-170.666667 85.333333 85.333333 0 0 0 0 170.666667z m768 256a42.666667 42.666667 0 0 0 0-85.333334H426.666667a42.666667 42.666667 0 0 0 0 85.333334h512z m0-298.666667a42.666667 42.666667 0 0 0 0-85.333333H426.666667a42.666667 42.666667 0 0 0 0 85.333333h512z m0 597.333333a42.666667 42.666667 0 0 0 0-85.333333H426.666667a42.666667 42.666667 0 1 0 0 85.333333h512z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file-unknown_colorful1" unicode="&#59364;" d="M170.666667 789.333333a42.666667 42.666667 0 0 0 42.666666 42.666667h417.834667a21.333333 21.333333 0 0 0 15.061333-6.229333l200.874667-200.874667a21.333333 21.333333 0 0 0 6.229333-15.061333V-21.333333a42.666667 42.666667 0 0 0-42.666666-42.666667H213.333333a42.666667 42.666667 0 0 0-42.666666 42.666667v810.666666zM640 830.08a21.290667 21.290667 0 0 0 6.229333-4.309333l200.874667-200.874667a21.376 21.376 0 0 0 4.309333-6.229333H682.666667a42.666667 42.666667 0 0 0-42.666667 42.666666V830.08zM609.578667 475.093333c-23.253333 22.058667-53.845333 32.981333-91.818667 32.981334-42.666667 0-76.16-13.653333-100.394667-41.557334-20.522667-23.936-31.573333-46.933333-33.194666-83.114666l-0.085334-4.266667a10.581333 10.581333 0 0 1 10.624-10.666667h25.216a10.752 10.752 0 0 1 10.709334 10.581334c0 1.749333 0.085333 3.285333 0.128 4.096 1.237333 25.002667 7.722667 38.101333 19.370666 52.650666 14.72 19.626667 36.266667 29.226667 65.877334 29.226667 26.410667 0 46.208-6.741333 59.861333-20.394667 13.056-13.568 19.84-32.042667 19.84-55.253333 0-15.786667-5.717333-30.890667-17.408-45.866667-3.712-4.650667-9.045333-10.154667-26.282667-27.392-27.178667-23.765333-43.989333-43.093333-52.906666-62.165333a108.8 108.8 0 0 1-11.008-48.981333v-12.032c0-5.888 4.778667-10.666667 10.666666-10.666667h25.813334a10.666667 10.666667 0 0 1 10.666666 10.666667v12.032c0 15.104 3.712 28.629333 11.434667 41.813333 5.76 9.813333 13.184 17.536 26.112 28.842667 25.898667 23.466667 40.234667 37.376 46.677333 45.568a112.554667 112.554667 0 0 1 23.381334 69.376c0 35.285333-11.093333 63.573333-33.28 84.48z m-110.208-339.370666a10.666667 10.666667 0 0 1-10.666667-10.666667v-25.216c0-5.888 4.778667-10.666667 10.666667-10.666667h25.216a10.666667 10.666667 0 0 1 10.666666 10.666667v25.173333a10.666667 10.666667 0 0 1-10.666666 10.666667h-25.173334z" horiz-adv-x="1024" />
<glyph glyph-name="icon_link2" unicode="&#59363;" d="M503.850667 438.144a32 32 0 0 0 0-45.269333c-45.952-45.952-46.933333-119.04-2.816-163.157334l1.408-1.493333 1.365333-1.28 194.986667-194.986667c44.16-44.16 117.205333-43.178667 163.157333 2.773334s46.933333 119.04 2.773333 163.157333L695.466667 367.146667a32 32 0 1 0 45.226666 45.269333l169.301334-169.258667c69.418667-69.418667 67.882667-182.997333-2.773334-253.653333-70.698667-70.698667-184.234667-72.234667-253.653333-2.816l-194.986667 194.986667-1.28 1.408a32.469333 32.469333 0 0 0-1.536 1.408c-69.376 69.376-67.84 182.954667 2.816 253.653333a32 32 0 0 0 45.226667 0zM403.584 748.8l194.986667-194.986667c69.418667-69.418667 67.882667-182.954667-2.773334-253.653333a32 32 0 1 0-45.226666 45.226667c45.909333 45.994667 46.933333 119.04 2.773333 163.2l-194.986667 194.986666c-44.16 44.117333-117.205333 43.136-163.157333-2.816s-46.933333-118.997333-2.816-163.157333l169.301333-169.258667a32 32 0 0 0-45.226666-45.226666L147.114667 492.373333c-69.418667 69.418667-67.882667 182.954667 2.773333 253.653334C220.629333 816.725333 334.165333 818.261333 403.626667 748.8z" horiz-adv-x="1024" />
<glyph glyph-name="icon_bot" unicode="&#59362;" d="M522.666667 810.666667a85.333333 85.333333 0 0 0 42.709333-159.232L565.333333 554.666667h234.666667a85.333333 85.333333 0 0 0 85.333333-85.333334v-426.666666a85.333333 85.333333 0 0 0-85.333333-85.333334h-554.666667a85.333333 85.333333 0 0 0-85.333333 85.333334V469.333333a85.333333 85.333333 0 0 0 85.333333 85.333334h234.666667V651.434667a85.333333 85.333333 0 0 0 42.666667 159.232z m277.333333-341.333334h-554.666667v-426.666666h554.666667V469.333333z m-704-85.333333a42.666667 42.666667 0 0 0 42.666667-42.666667v-170.666666a42.666667 42.666667 0 0 0-85.333334 0v170.666666a42.666667 42.666667 0 0 0 42.666667 42.666667z m853.333333 0a42.666667 42.666667 0 0 0 42.666667-42.666667v-170.666666a42.666667 42.666667 0 0 0-85.333333 0v170.666666a42.666667 42.666667 0 0 0 42.666666 42.666667z m-341.333333-170.666667l4.992-0.298666A42.666667 42.666667 0 0 0 608 128h-170.666667l-4.992 0.298667A42.666667 42.666667 0 0 0 437.333333 213.333333h170.666667z m-234.666667 170.666667a42.666667 42.666667 0 1 0 0-85.333333 42.666667 42.666667 0 0 0 0 85.333333z m298.666667 0a42.666667 42.666667 0 1 0 0-85.333333 42.666667 42.666667 0 0 0 0 85.333333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_365" unicode="&#59355;" d="M906.666667 853.333333a85.333333 85.333333 0 0 0 85.333333-85.333333v-768a85.333333 85.333333 0 0 0-85.333333-85.333333h-768a85.333333 85.333333 0 0 0-85.333334 85.333333V768a85.333333 85.333333 0 0 0 85.333334 85.333333h768z m0-298.666666h-768v-554.666667h768V554.666667z m0 213.333333h-768v-128h768V768zM521.642667 426.666667c43.776 0 82.048-28.885333 97.706666-71.338667a28.373333 28.373333 0 0 0-16.426666-36.437333 27.989333 27.989333 0 0 0-36.096 16.64c-7.765333 20.992-25.685333 34.517333-45.226667 34.517333-26.496 0-49.066667-24.832-49.066667-56.661333v-12.245334a103.936 103.936 0 0 0 49.066667 12.245334c58.112 0 105.216-47.530667 105.216-106.154667 0-58.666667-47.104-106.197333-105.173333-106.197333-58.112 0-105.216 47.530667-105.216 106.197333l0.085333 4.906667a29.013333 29.013333 0 0 0-0.085333 2.133333v99.114667C416.426667 375.466667 462.933333 426.666667 521.642667 426.666667z m0-169.898667c-27.136 0-49.066667-22.186667-49.066667-49.536 0-27.392 21.930667-49.536 49.066667-49.536 27.093333 0 49.066667 22.186667 49.066666 49.493333 0 27.392-21.973333 49.578667-49.066666 49.578667zM345.984 426.666667c19.370667 0 35.072-15.829333 35.072-35.413334v-247.722666c0-19.541333-15.701333-35.413333-35.072-35.413334H205.738667a35.242667 35.242667 0 0 0-35.072 35.413334c0 19.541333 15.701333 35.413333 35.072 35.413333h105.173333v53.077333H240.810667a35.242667 35.242667 0 0 0-35.072 35.413334c0 19.498667 15.701333 35.370667 35.072 35.370666h70.101333v53.077334H205.738667a35.2 35.2 0 0 0-34.816 31.274666L170.666667 391.253333c0 19.584 15.701333 35.413333 35.072 35.413334h140.245333zM821.461333 426.666667a31.872 31.872 0 0 0 0-63.701334h-95.573333v-29.141333l6.016 1.493333c8.106667 1.834667 16.512 2.986667 25.130667 3.498667l8.704 0.256c61.866667 0 87.594667-45.525333 87.594666-119.466667 0-69.888-37.12-111.488-102.656-111.488-56.32 0-88.448 36.565333-88.448 85.418667a31.872 31.872 0 0 0 63.701334 0c0-15.36 5.546667-21.717333 24.746666-21.717333 28.586667 0 38.954667 11.605333 38.954667 47.786666 0 43.434667-6.997333 55.765333-23.893333 55.765334-13.738667 0-26.88-3.2-38.741334-8.533334a74.837333 74.837333 0 0 1-13.44-7.424 31.872 31.872 0 0 0-51.328 25.173334v110.208c0 17.621333 14.250667 31.872 31.829334 31.872h127.402666z" horiz-adv-x="1024" />
<glyph glyph-name="icon_facial_clue" unicode="&#59356;" d="M512 853.333333c259.2 0 469.333333-210.133333 469.333333-469.333333s-210.133333-469.333333-469.333333-469.333333S42.666667 124.8 42.666667 384 252.8 853.333333 512 853.333333z m184.874667-184.874666a99.541333 99.541333 0 0 1-28.416-194.986667v-253.098667a63.957333 63.957333 0 0 0-127.914667 0V547.498667a120.96 120.96 0 1 1-241.877333 0v-252.970667a99.584 99.584 0 1 1 56.917333 0V547.498667a64.042667 64.042667 0 1 0 128.085333 0v-327.125334a120.832 120.832 0 0 1 241.664 0V473.472a99.584 99.584 0 0 1-28.458666 194.986667z m-369.749334-426.666667a42.666667 42.666667 0 1 0 0-85.333333 42.666667 42.666667 0 0 0 0 85.333333z m369.749334 369.749333a42.666667 42.666667 0 1 0 0-85.333333 42.666667 42.666667 0 0 0 0 85.333333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_jin" unicode="&#59357;" d="M906.666667 853.333333a85.333333 85.333333 0 0 0 85.333333-85.333333v-768a85.333333 85.333333 0 0 0-85.333333-85.333333h-768a85.333333 85.333333 0 0 0-85.333334 85.333333V768a85.333333 85.333333 0 0 0 85.333334 85.333333h768z m0-298.666666h-768v-554.666667h768V554.666667z m-183.04-291.84v-58.026667a2119.253333 2119.253333 0 0 0-131.413334-165.546667l-64.853333 35.84c34.133333 37.546667 68.266667 78.506667 100.693333 124.586667H365.226667v63.146667h358.4z m-186.026667 116.053333c27.306667-29.013333 49.493333-54.613333 69.973333-78.506667l-58.026666-37.546666c-29.013333 35.84-49.493333 63.146667-64.853334 80.213333l52.906667 35.84z m71.68 121.173333v-1.706666l-15.36-15.36c47.786667-63.146667 112.64-112.64 194.56-145.066667-15.36-18.773333-29.013333-35.84-44.373333-56.32-83.626667 39.253333-146.773333 90.453333-192.853334 153.6-49.493333-63.146667-116.053333-116.053333-201.386666-158.72-17.066667 27.306667-32.426667 44.373333-44.373334 58.026667 83.626667 35.84 155.306667 92.16 209.92 165.546666h93.866667zM906.666667 768h-768v-128h768V768z" horiz-adv-x="1024" />
<glyph glyph-name="icon_facial_deal_win" unicode="&#59358;" d="M496.512 853.333333c173.952 0 320-67.413333 320-170.666666 0-41.728-23.850667-77.568-63.701333-105.514667 73.941333-97.706667 134.528-220.330667 183.466666-357.973333C990.592 66.346667 872.874667-85.333333 708.437333-85.333333H283.605333c-164.096 0-281.685333 151.125333-227.626666 303.616C104.746667 355.84 165.546667 478.72 240.170667 577.237333 200.362667 605.098667 176.512 640.938667 176.512 682.666667c0 103.253333 146.048 170.666667 320 170.666666z m-97.834667-396.501333a42.666667 42.666667 0 0 1-60.330666-60.330667L393.472 341.333333h-24.96a42.666667 42.666667 0 0 1 0-85.333333h85.504v-42.666667H368.512a42.666667 42.666667 0 0 1 0-85.333333h85.504v-42.666667a42.666667 42.666667 0 0 1 85.333333 0v42.666667h85.162667a42.666667 42.666667 0 1 1 0 85.333333h-85.162667v42.666667h85.162667a42.666667 42.666667 0 1 1 0 85.333333h-25.002667l55.168 55.168a42.666667 42.666667 0 0 1 0 60.330667l-4.010666 3.541333a42.666667 42.666667 0 0 1-56.32-3.541333l-97.877334-97.792zM496.512 768c-132.394667 0-234.666667-47.232-234.666667-85.333333 0-20.565333 29.824-43.818667 78.08-60.842667 4.053333-1.322667 8.149333-2.56 12.373334-3.797333 31.36-8.96 65.493333-14.848 99.669333-18.090667 14.506667-1.408 26.624-2.133333 35.498667-2.432l4.906666-0.128 4.266667-0.042667 5.077333 0.042667c9.002667 0.213333 22.698667 0.938667 39.68 2.56 34.133333 3.285333 68.181333 9.130667 99.498667 18.133333l10.922667 3.328c49.024 17.066667 79.36 40.533333 79.36 61.269334 0 38.101333-102.272 85.333333-234.666667 85.333333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_facial_business" unicode="&#59359;" d="M512 853.333333c259.2 0 469.333333-210.133333 469.333333-469.333333s-210.133333-469.333333-469.333333-469.333333S42.666667 124.8 42.666667 384 252.8 853.333333 512 853.333333zM414.165333 606.165333a42.666667 42.666667 0 0 1-60.330666-60.330666L430.293333 469.333333H384a42.666667 42.666667 0 0 1 0-85.333333h85.504v-42.666667H384a42.666667 42.666667 0 0 1 0-85.333333h85.504v-85.333333a42.666667 42.666667 0 0 1 85.333333 0v85.333333H640a42.666667 42.666667 0 0 1 0 85.333333h-85.162667v42.666667H640a42.666667 42.666667 0 0 1 0 85.333333h-46.336l76.501333 76.501334a42.666667 42.666667 0 0 1 0 60.330666l-4.010666 3.541334a42.666667 42.666667 0 0 1-56.32-3.541334l-97.877334-97.792z" horiz-adv-x="1024" />
<glyph glyph-name="icon_30" unicode="&#59360;" d="M906.666667 853.333333a85.333333 85.333333 0 0 0 85.333333-85.333333v-768a85.333333 85.333333 0 0 0-85.333333-85.333333h-768a85.333333 85.333333 0 0 0-85.333334 85.333333V768a85.333333 85.333333 0 0 0 85.333334 85.333333h768z m0-298.666666h-768v-554.666667h768V554.666667zM768 469.333333a42.666667 42.666667 0 0 0 42.666667-42.666666v-298.666667a42.666667 42.666667 0 0 0-42.666667-42.666667h-170.666667a42.666667 42.666667 0 0 0-42.666666 42.666667v298.666667a42.666667 42.666667 0 0 0 42.666666 42.666666h170.666667z m-341.333333 0a42.666667 42.666667 0 0 0 42.666666-42.666666v-298.666667a42.666667 42.666667 0 0 0-42.666666-42.666667H256a42.666667 42.666667 0 0 0 0 85.333334h128v64H298.666667a42.666667 42.666667 0 0 0 0 85.333333h85.333333V384H256a42.666667 42.666667 0 0 0-42.368 37.674667L213.333333 426.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h170.666667z m298.666666-85.333333h-85.333333v-213.333333h85.333333v213.333333z m181.333334 384h-768v-128h768V768z" horiz-adv-x="1024" />
<glyph glyph-name="icon_7" unicode="&#59361;" d="M906.666667 853.333333a85.333333 85.333333 0 0 0 85.333333-85.333333v-768a85.333333 85.333333 0 0 0-85.333333-85.333333h-768a85.333333 85.333333 0 0 0-85.333334 85.333333V768a85.333333 85.333333 0 0 0 85.333334 85.333333h768z m0-298.666666h-768v-554.666667h768V554.666667zM640 512a42.666667 42.666667 0 0 0 39.04-59.989333l-170.837333-384a42.666667 42.666667 0 1 0-77.952 34.645333L574.378667 426.666667H426.666667a42.666667 42.666667 0 0 0-42.368 37.674666L384 469.333333a42.666667 42.666667 0 0 0 42.666667 42.666667h213.333333z m266.666667 256h-768v-128h768V768z" horiz-adv-x="1024" />
<glyph glyph-name="icon_data_person" unicode="&#59352;" d="M477.44 341.290667c107.093333-0.426667 136.106667-3.84 174.08-23.210667a213.333333 213.333333 0 0 0 93.226667-93.226667c20.778667-40.746667 23.253333-71.210667 23.253333-199.253333v-25.6a42.666667 42.666667 0 0 0-42.666667-42.666667H85.333333a42.666667 42.666667 0 0 0-42.666666 42.666667l0.042666 50.773333c0.426667 107.093333 3.84 136.106667 23.210667 174.08a213.333333 213.333333 0 0 0 93.226667 93.226667c37.973333 19.328 66.986667 22.826667 174.08 23.210667h144.213333z m-2.688-85.333334H335.914667c-92.16-0.298667-116.522667-2.986667-138.026667-13.909333a128 128 0 0 1-55.936-55.936c-10.965333-21.504-13.610667-45.866667-13.909333-138.026667L128 42.666667h554.624v5.418666c-0.298667 88.618667-2.773333 114.56-12.672 135.509334l-1.237333 2.517333a128 128 0 0 1-55.936 55.936c-21.504 10.965333-45.866667 13.610667-138.026667 13.909333zM810.666667 661.333333a42.666667 42.666667 0 0 0 42.666666-42.666666v-85.333334h85.333334a42.666667 42.666667 0 0 0 42.368-37.674666L981.333333 490.666667a42.666667 42.666667 0 0 0-42.666666-42.666667h-85.333334v-85.333333a42.666667 42.666667 0 0 0-37.674666-42.368L810.666667 320a42.666667 42.666667 0 0 0-42.666667 42.666667v85.333333h-85.333333a42.666667 42.666667 0 0 0-42.368 37.674667L640 490.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h85.333333v85.333334a42.666667 42.666667 0 0 0 37.674667 42.368L810.666667 661.333333zM405.333333 810.666667a192 192 0 1 0 0-384 192 192 0 0 0 0 384z m0-85.333334a106.666667 106.666667 0 1 1 0-213.333333 106.666667 106.666667 0 0 1 0 213.333333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_data_plan" unicode="&#59353;" d="M704 853.333333a42.666667 42.666667 0 0 0 42.666667-42.666666v-21.333334H896a85.333333 85.333333 0 0 0 85.333333-85.333333V42.666667a85.333333 85.333333 0 0 0-85.333333-85.333334H170.666667a85.333333 85.333333 0 0 0-85.333334 85.333334V704a85.333333 85.333333 0 0 0 85.333334 85.333333h149.333333V810.666667a42.666667 42.666667 0 1 0 85.333333 0v-21.333334h256V810.666667a42.666667 42.666667 0 0 0 42.666667 42.666666z m192-384H170.666667v-426.666666h725.333333V469.333333z m-119.168-55.168a42.666667 42.666667 0 0 0 0-60.330666l-256-256a42.666667 42.666667 0 0 0-60.330667 0l-128 128a42.666667 42.666667 0 0 0 60.330667 60.330666l97.834667-97.792 225.834666 225.792a42.666667 42.666667 0 0 0 60.330667 0zM320 704H170.666667V554.666667h725.333333V704h-149.333333V640a42.666667 42.666667 0 0 0-85.333334 0V704h-256V640a42.666667 42.666667 0 1 0-85.333333 0V704z" horiz-adv-x="1024" />
<glyph glyph-name="icon_data_record" unicode="&#59354;" d="M170.666667-96a85.333333 85.333333 0 0 0-85.333334 85.333333v768a85.333333 85.333333 0 0 0 85.333334 85.333334h682.666666a85.333333 85.333333 0 0 0 85.333334-85.333334v-768a85.333333 85.333333 0 0 0-85.333334-85.333333H170.666667z m85.333333 853.333333H170.666667v-768h85.333333v768z m597.333333 0H341.333333v-768h512v768z m-213.333333-256a42.666667 42.666667 0 0 0 0-85.333333h-170.666667a42.666667 42.666667 0 1 0 0 85.333333h170.666667z m0 170.666667a42.666667 42.666667 0 0 0 0-85.333333h-170.666667a42.666667 42.666667 0 1 0 0 85.333333h170.666667z" horiz-adv-x="1024" />
<glyph glyph-name="icon_folder_collapse" unicode="&#59350;" d="M85.333333 690.432C85.333333 733.269333 121.728 768 166.613333 768h243.797334c12.032 0 23.509333-5.12 31.232-13.952l89.344-102.4h326.4c44.885333 0 81.28-34.730667 81.28-77.568v-504.277333c0-42.837333-36.394667-77.568-81.28-77.568H166.613333C121.728-7.765333 85.333333 26.965333 85.333333 69.802667V690.432z m306.048 0H166.613333v-620.629333h690.773334V574.08H512a41.514667 41.514667 0 0 0-31.232 13.952l-89.386667 102.4z m173.141334-244.096a42.069333 42.069333 0 0 0 57.472 0l101.632-96.981333a37.546667 37.546667 0 0 0 0-54.826667l-101.632-96.981333a42.069333 42.069333 0 0 0-57.472 0 37.546667 37.546667 0 0 0 0 54.826666l72.874666 69.546667-72.874666 69.546667a37.546667 37.546667 0 0 0 0 54.869333z m-105.045334-54.869333a37.546667 37.546667 0 0 1 0 54.869333 42.026667 42.026667 0 0 1-57.472 0L300.373333 349.354667a37.546667 37.546667 0 0 1 0-54.826667l101.632-96.981333a42.069333 42.069333 0 0 1 57.472 0 37.546667 37.546667 0 0 1 0 54.826666l-72.874666 69.546667 72.874666 69.546667z" horiz-adv-x="1024" />
<glyph glyph-name="icon_folder_expansion" unicode="&#59351;" d="M409.898667 768c11.52 0 22.485333-5.12 29.866666-13.952l90.368-108.501333h328.96c41.898667 0 76.330667-32.512 79.36-73.685334l0.213334-5.973333v-183.722667a38.826667 38.826667 0 1 0-77.568 0V565.888a2.048 2.048 0 0 1-2.048 2.048H512a38.826667 38.826667 0 0 0-29.781333 13.952l-90.453334 108.544H164.949333a2.005333 2.005333 0 0 1-1.749333-1.024l-0.298667-1.024v-610.602667c0-1.152 0.938667-2.048 2.048-2.048h306.218667a38.826667 38.826667 0 1 0 0-77.568H164.949333A79.616 79.616 0 0 0 85.333333 77.781333V688.341333C85.333333 732.416 120.96 768 164.949333 768h244.949334z m517.418666-540.330667a38.826667 38.826667 0 0 0 0-54.826666l-102.058666-102.101334a38.826667 38.826667 0 0 0-54.912 54.912l74.666666 74.666667-74.666666 74.624a38.826667 38.826667 0 0 0-3.2 51.2l3.2 3.626667a38.826667 38.826667 0 0 0 54.912 0l102.058666-102.101334z m-265.386666 47.274667l-74.666667-74.666667 74.666667-74.666666a38.826667 38.826667 0 0 0 3.2-51.2l-3.2-3.669334a38.826667 38.826667 0 0 0-54.869334 0l-102.101333 102.101334a38.826667 38.826667 0 0 0 0 54.826666l102.101333 102.101334a38.826667 38.826667 0 0 0 54.869334-54.826667z" horiz-adv-x="1024" />
<glyph glyph-name="icon_dashboard1" unicode="&#59349;" d="M512 810.666667c259.2 0 469.333333-210.133333 469.333333-469.333334 0-126.122667-50.048-244.48-137.472-331.861333a42.666667 42.666667 0 0 0-60.330666 60.330667 383.018667 383.018667 0 0 1 97.194666 163.925333 12.8 12.8 0 0 0-2.005333 0.341333l-79.189333 18.304a42.666667 42.666667 0 1 0 19.2 83.114667l76.544-17.664a382.208 382.208 0 0 1-67.2 241.578667l-50.773334-41.130667a42.666667 42.666667 0 0 0-53.674666 66.304l48.469333 39.253333A382.592 382.592 0 0 1 554.666667 722.986667L554.666667 666.410667a42.666667 42.666667 0 0 0-85.333334 0V722.986667a382.592 382.592 0 0 1-217.429333-99.157334l48.469333-39.253333a42.666667 42.666667 0 0 0-53.674666-66.304l-50.773334 41.130667a382.208 382.208 0 0 1-67.2-241.578667l76.544 17.664a42.666667 42.666667 0 0 0 19.2-83.114667l-79.189333-18.304-2.005333-0.341333a383.018667 383.018667 0 0 1 97.194666-163.925333 42.666667 42.666667 0 1 0-60.330666-60.330667A467.925333 467.925333 0 0 0 42.666667 341.333333C42.666667 600.533333 252.8 810.666667 512 810.666667z m168.149333-377.514667a2504.533333 2504.533333 0 0 0-43.392-113.066667c-4.864-11.733333-9.642667-22.912-14.208-33.28-18.986667-42.922667-34.048-71.04-48.682666-86.229333a123.946667 123.946667 0 0 0-178.346667 172.16c15.061333 15.573333 43.776 32.128 87.893333 53.333333 9.386667 4.48 19.328 9.130667 29.781334 13.866667a2508.672 2508.672 0 0 0 111.104 47.189333 42.666667 42.666667 0 0 0 55.893333-53.973333z m-115.498666-63.573333l-16.170667-7.338667c-9.898667-4.48-19.328-8.874667-28.117333-13.098667-34.048-16.384-58.282667-30.293333-63.445334-35.669333a38.613333 38.613333 0 1 1 55.552-53.632c4.949333 5.12 17.493333 28.501333 32 61.44 4.309333 9.728 8.789333 20.266667 13.397334 31.445333l6.826666 16.810667z" horiz-adv-x="1024" />
<glyph glyph-name="icon_export" unicode="&#59206;" d="M810.666667 853.333333a85.333333 85.333333 0 0 0 85.333333-85.333333v-384a42.666667 42.666667 0 0 0-85.333333 0V768H213.333333v-768h298.666667a42.666667 42.666667 0 0 0 0-85.333333H213.333333a85.333333 85.333333 0 0 0-85.333333 85.333333V768a85.333333 85.333333 0 0 0 85.333333 85.333333h597.333334z m30.165333-620.501333l96-96a42.666667 42.666667 0 0 0 0-60.330667l-96-96a42.666667 42.666667 0 0 0-60.330667 60.330667l23.082667 23.168H608a42.666667 42.666667 0 0 0 0 85.333333h195.626667l-23.125334 23.168a42.666667 42.666667 0 0 0-3.541333 56.32l3.541333 4.010667a42.666667 42.666667 0 0 0 60.330667 0zM512 426.666667a42.666667 42.666667 0 0 0 0-85.333334H341.333333a42.666667 42.666667 0 0 0 0 85.333334h170.666667z m170.666667 170.666666a42.666667 42.666667 0 0 0 0-85.333333H341.333333a42.666667 42.666667 0 1 0 0 85.333333h341.333334z" horiz-adv-x="1024" />
<glyph glyph-name="icon_phone_outgoing" unicode="&#59203;" d="M512 853.333333c259.2 0 469.333333-210.133333 469.333333-469.333333s-210.133333-469.333333-469.333333-469.333333S42.666667 124.8 42.666667 384 252.8 853.333333 512 853.333333zM349.781333 662.954667H266.368c-64.938667 0-111.530667-61.482667-90.752-123.093334 41.557333-123.178667 97.450667-232.277333 170.24-305.066666 72.832-72.832 181.930667-128.682667 305.066667-170.24 61.653333-20.821333 123.136 25.770667 123.136 90.709333v83.413333c0 23.893333-12.970667 45.909333-33.834667 57.514667l-72.661333 40.362667-5.248 2.645333a65.749333 65.749333 0 0 1-56.106667-1.28l-66.474667-33.194667-1.578666 0.469334a202.410667 202.410667 0 0 0-57.173334 29.568 175.104 175.104 0 0 0-35.328 35.370666 198.314667 198.314667 0 0 0-26.453333 48.384l-1.664 4.608a191.658667 191.658667 0 0 0-1.408 4.181334l-0.512 1.664 33.194667 66.346666a65.792 65.792 0 0 1-1.28 61.312l-40.234667 72.490667a65.749333 65.749333 0 0 1-57.514667 33.834667z m0-65.749334l40.234667-72.490666-38.784-77.482667a32.853333 32.853333 0 0 1-2.858667-20.992c4.864-24.96 18.218667-60.16 44.629334-95.488a241.28 241.28 0 0 1 48.512-48.64c35.413333-26.538667 70.698667-39.850667 95.701333-44.629333a32.853333 32.853333 0 0 1 20.906667 2.858666l77.482666 38.741334 72.661334-40.405334v-83.413333c0-20.778667-18.133333-34.56-36.266667-28.416-114.389333 38.613333-215.594667 90.453333-279.594667 154.453333s-115.882667 165.205333-154.453333 279.552c-6.144 18.176 7.637333 36.352 28.416 36.352h83.413333z m362.368 118.485334a32.853333 32.853333 0 0 1-46.506666 0l-2.773334-3.072a32.853333 32.853333 0 0 1 2.773334-43.434667l75.52-75.52h-183.808a32.853333 32.853333 0 1 1 0-65.749333h183.466666l-75.178666-75.264a32.853333 32.853333 0 1 1 46.506666-46.506667l130.56 130.432a32.298667 32.298667 0 0 1 8.448 12.714667l0.426667 0.853333a25.173333 25.173333 0 0 1 0.853333 3.242667l0.384 1.706666a33.109333 33.109333 0 0 1 0.469334 5.674667l-0.085334-2.218667-0.085333-0.64 0.170667 2.858667V561.92a28.416 28.416 0 0 1-0.256 2.944l-0.085334 0.938667a25.898667 25.898667 0 0 1-0.725333 3.285333l-0.256 1.194667a22.528 22.528 0 0 1-1.152 3.114666 32.810667 32.810667 0 0 1-7.125333 10.794667z" horiz-adv-x="1024" />
<glyph glyph-name="icon_that_person" unicode="&#58986;" d="M512 810.666667c259.2 0 469.333333-210.133333 469.333333-469.333334a468.053333 468.053333 0 0 0-132.352-326.656C798.165333 122.794667 714.282667 234.666667 640 234.666667H384c-74.325333 0-158.208-111.786667-209.066667-219.946667C93.098667 99.2 42.666667 214.4 42.666667 341.333333 42.666667 600.533333 252.8 810.666667 512 810.666667z m0-170.666667a170.666667 170.666667 0 1 1 0-341.333333 170.666667 170.666667 0 0 1 0 341.333333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file1" unicode="&#59202;" d="M431.488 768c12.117333 0 23.552-5.376 31.317333-14.634667l89.6-107.52h255.829334a81.493333 81.493333 0 0 0 81.194666-75.392l0.256-6.101333V482.986667h50.901334a40.746667 40.746667 0 0 0 39.936-48.725334l-81.493334-407.253333a40.746667 40.746667 0 0 0-39.893333-32.768H127.829333c-1.92-0.042667-3.84 0-5.76 0.213333l3.968-0.213333a41.386667 41.386667 0 0 0-10.154666 1.28 38.954667 38.954667 0 0 0-30.293334 34.474667L85.333333 34.944V686.506667C85.333333 731.52 121.813333 768 166.784 768h264.704z m-19.072-81.450667H166.784v-308.181333l17.664 73.386667a40.746667 40.746667 0 0 0 39.594667 31.146666h584.192v81.493334H533.333333a40.746667 40.746667 0 0 0-31.317333 14.634666l-89.6 107.52z" horiz-adv-x="1024" />
<glyph glyph-name="icon_enterprise" unicode="&#59186;" d="M512 853.333333c259.2 0 469.333333-210.133333 469.333333-469.333333s-210.133333-469.333333-469.333333-469.333333S42.666667 124.8 42.666667 384 252.8 853.333333 512 853.333333z m57.6-128a42.666667 42.666667 0 0 1-67.456 34.730667l-209.066667-149.333333a42.666667 42.666667 0 0 1-17.877333-34.730667L275.157333 170.666667H213.333333a42.666667 42.666667 0 0 1 0-85.333334h597.333334a42.666667 42.666667 0 0 1 0 85.333334h-32v270.933333a42.666667 42.666667 0 0 1-17.877334 34.730667l-191.232 136.533333z m-85.376-82.901333V170.666667H360.533333V554.069333l123.690667 88.362667z m85.376-134.4l123.733333-88.362667V170.666667h-123.733333V508.032z" horiz-adv-x="1024" />
<glyph glyph-name="icon_send_colorful" unicode="&#59348;" d="M512 332.373333v-267.349333l146.773333-132.266667a43.477333 43.477333 0 0 1 72.661334 19.541334l220.373333 780.544c6.058667 21.376-20.522667 36.608-35.925333 20.565333L512 332.373333zM881.706667 788.181333c16.213333 15.573333 0.426667 42.410667-21.034667 35.797334L81.92 583.424a43.434667 43.434667 0 0 1-19.712-72.704l133.888-146.645333h243.413333l442.154667 424.106666z" horiz-adv-x="1024" />
<glyph glyph-name="icon_edit1" unicode="&#59165;" d="M904.448 579.2L696.96 786.752 742.144 832l207.552-207.552-45.248-45.248zM382.208 56.96l-231.232-46.272a19.2 19.2 0 0 0-22.592 22.592l46.272 231.232 467.008 467.008 207.616-207.552-467.072-467.072z m376.512 467.008l-117.056 117.056L233.6 232.96l-29.312-146.368 146.368 29.248 408.064 408.128zM960 192h-256v-64h256v64zM960 64H544v-64H960v64z" horiz-adv-x="1024" />
<glyph glyph-name="icon_my" unicode="&#59156;" d="M512 853.333333c259.2 0 469.333333-210.133333 469.333333-469.333333 0-127.573333-50.858667-243.2-133.461333-327.808l-5.546667-5.546667A467.882667 467.882667 0 0 0 512-85.333333c-125.184 0-238.933333 48.981333-323.029333 128.853333a43.562667 43.562667 0 0 0-9.045334 8.789333A467.968 467.968 0 0 0 42.666667 384C42.666667 643.2 252.8 853.333333 512 853.333333z m85.333333-618.666666h-170.666666a170.752 170.752 0 0 1-167.808-139.392A382.506667 382.506667 0 0 1 512 0c96.981333 0 185.6 35.968 253.141333 95.232A170.752 170.752 0 0 1 597.333333 234.666667zM512 768a384 384 0 0 1-318.592-598.442667A256 256 0 0 0 426.666667 320h170.666666a256.170667 256.170667 0 0 0 233.301334-150.4A384 384 0 0 1 512 768z m0-106.666667a149.333333 149.333333 0 1 0 0-298.666666 149.333333 149.333333 0 0 0 0 298.666666z m0-85.333333a64 64 0 1 1 0-128 64 64 0 0 1 0 128z" horiz-adv-x="1024" />
<glyph glyph-name="icon_general" unicode="&#59114;" d="M512-85.333333C252.8-85.333333 42.666667 124.8 42.666667 384S252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333-210.133333-469.333333-469.333333-469.333333z m0 213.333333l256 242.517333h-161.706667V613.034667H417.706667v-242.517334H256L512 128z" horiz-adv-x="1024" />
<glyph glyph-name="icon_serious" unicode="&#59119;" d="M512 853.333333c259.2 0 469.333333-210.133333 469.333333-469.333333s-210.133333-469.333333-469.333333-469.333333S42.666667 124.8 42.666667 384 252.8 853.333333 512 853.333333z m0-213.333333l-256-242.517333h161.706667v-242.517334h188.586666v242.517334H768L512 640z" horiz-adv-x="1024" />
<glyph glyph-name="icon_succeed_filled" unicode="&#59066;" d="M42.666667 384c0-259.2 210.133333-469.333333 469.333333-469.333333s469.333333 210.133333 469.333333 469.333333S771.2 853.333333 512 853.333333 42.666667 643.2 42.666667 384z m646.101333 128.981333a21.333333 21.333333 0 0 0 30.165333 0l30.165334-30.165333a21.333333 21.333333 0 0 0 0-30.165333l-271.488-271.530667a21.333333 21.333333 0 0 0-30.208 0l-156.16 156.16a21.333333 21.333333 0 0 0 0 30.208l30.165333 30.165333a21.333333 21.333333 0 0 0 30.165333 0l110.933334-110.933333 226.261333 226.261333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_block_filled" unicode="&#59116;" d="M981.333333 384c0-259.2-210.133333-469.333333-469.333333-469.333333S42.666667 124.79999999999995 42.666667 384 252.8 853.333333 512 853.333333s469.333333-210.133333 469.333333-469.333333zM320 426.666667a21.333333 21.333333 0 0 1-21.333333-21.333334v-42.666666a21.333333 21.333333 0 0 1 21.333333-21.333334h384a21.333333 21.333333 0 0 1 21.333333 21.333334v42.666666a21.333333 21.333333 0 0 1-21.333333 21.333334h-384z" horiz-adv-x="1024" />
<glyph glyph-name="icon_testing" unicode="&#58916;" d="M520.533333-85.333333c-259.242667 0-469.333333 210.090667-469.333333 469.333333s210.090667 469.333333 469.333333 469.333333 469.333333-210.090667 469.333334-469.333333-210.090667-469.333333-469.333334-469.333333z m216.533334 675.072A298.666667 298.666667 0 0 1 222.378667 401.066667c-0.554667-9.386667 7.125333-17.066667 16.554666-17.066667h51.2c9.429333 0 17.024 7.68 17.749334 17.066667a213.333333 213.333333 0 0 0 390.826666 100.352l-65.066666-5.461334a17.066667 17.066667 0 0 1-15.573334-18.474666l4.309334-50.986667a17.066667 17.066667 0 0 1 18.432-15.573333l178.56 15.061333a17.066667 17.066667 0 0 1 15.573333 18.432l-15.061333 178.56a17.066667 17.066667 0 0 1-18.432 15.573333l-51.029334-4.266666a17.066667 17.066667 0 0 1-15.573333-18.474667l2.218667-26.069333z m-417.237334-411.477334A298.666667 298.666667 0 0 1 834.56 366.933333a16.341333 16.341333 0 0 1-16.554667 17.066667h-51.2c-9.429333 0-17.024-7.68-17.749333-17.066667a213.333333 213.333333 0 0 0-390.826667-100.352l65.066667 5.461334a17.066667 17.066667 0 0 1 15.573333 18.474666l-4.309333 50.986667a17.066667 17.066667 0 0 1-18.474667 15.573333l-178.56-15.061333a17.066667 17.066667 0 0 1-15.573333-18.432l15.104-178.56a17.066667 17.066667 0 0 1 18.432-15.573333l51.029333 4.266666a17.066667 17.066667 0 0 1 15.573334 18.474667l-2.218667 26.069333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_off_screen" unicode="&#58925;" d="M347.733333 806.4a46.933333 46.933333 0 0 1-93.866666 0v-164.266667H89.6a46.933333 46.933333 0 0 1 0-93.866666h211.2a46.933333 46.933333 0 0 1 46.933333 46.933333V806.4z m422.4 0a46.933333 46.933333 0 1 1-93.866666 0v-211.2a46.933333 46.933333 0 0 1 46.933333-46.933333h211.2a46.933333 46.933333 0 1 1 0 93.866666h-164.266667V806.4zM42.666667 172.8a46.933333 46.933333 0 0 0 46.933333 46.933333h211.2a46.933333 46.933333 0 0 0 46.933333-46.933333v-211.2a46.933333 46.933333 0 1 0-93.866666 0v164.266667H89.6a46.933333 46.933333 0 0 0-46.933333 46.933333z m680.533333 46.933333a46.933333 46.933333 0 0 1-46.933333-46.933333v-211.2a46.933333 46.933333 0 1 1 93.866666 0v164.266667h161.92a46.933333 46.933333 0 0 1 0 93.866666H723.2z" horiz-adv-x="1024" />
<glyph glyph-name="icon_full_screen_one" unicode="&#58929;" d="M704 810.666667H896a42.666667 42.666667 0 0 0 42.666667-42.666667v-192a42.666667 42.666667 0 1 0-85.333334 0V667.136l-140.501333-140.501333a42.666667 42.666667 0 1 0-60.330667 60.330666L790.826667 725.333333H704a42.666667 42.666667 0 1 0 0 85.333334zM170.666667 682.666667v-106.666667a42.666667 42.666667 0 0 0-85.333334 0V768a42.666667 42.666667 0 0 0 42.666667 42.666667h192a42.666667 42.666667 0 0 0 0-85.333334H246.912l124.416-138.24a42.666667 42.666667 0 1 0-60.032-60.586666L170.666667 682.666667z m200.661333-499.626667a42.666667 42.666667 0 0 1-60.032 60.586667L170.666667 104.448V192a42.666667 42.666667 0 1 1-85.333334 0V0a42.666667 42.666667 0 0 1 42.666667-42.666667h192a42.666667 42.666667 0 1 1 0 85.333334H229.546667l141.781333 140.373333z m283.306667 60.458667a42.666667 42.666667 0 0 0 60.373333 0L853.333333 105.173333V192a42.666667 42.666667 0 1 0 85.333334 0V0a42.666667 42.666667 0 0 0-42.666667-42.666667h-192a42.666667 42.666667 0 1 0 0 85.333334h91.136l-140.501333 140.501333a42.666667 42.666667 0 0 0 0 60.330667z" horiz-adv-x="1024" />
<glyph glyph-name="icon_disable" unicode="&#58977;" d="M512 853.333333c259.2 0 469.333333-210.133333 469.333333-469.333333s-210.133333-469.333333-469.333333-469.333333S42.666667 124.8 42.666667 384 252.8 853.333333 512 853.333333z m0-85.333333a384 384 0 1 1 0-768 384 384 0 0 1 0 768zM320.682667 613.333333l294.314666-509.781333A298.666667 298.666667 0 0 0 320.682667 613.333333zM512 682.666667a298.666667 298.666667 0 0 0 178.048-538.453334L393.301333 658.133333A297.685333 297.685333 0 0 0 512 682.666667z" horiz-adv-x="1024" />
<glyph glyph-name="a-icon_file-compressed_colorful_ash" unicode="&#58943;" d="M648.533333 853.333333a42.666667 42.666667 0 0 0 33.322667-16l170.325333-212.906666 1.792-2.346667 0.213334-0.341333 0.426666-0.554667 0.426667-0.768-0.853333 1.322667-1.664 2.261333 2.730666-3.925333 1.152-1.877334a40.021333 40.021333 0 0 0 4.053334-9.941333 41.258667 41.258667 0 0 0 1.109333-5.973333L861.866667 597.333333v-85.333333h42.666666a85.333333 85.333333 0 0 0 85.333334-85.333333v-298.666667a85.333333 85.333333 0 0 0-85.333334-85.333333h-42.666666v-85.333334a42.666667 42.666667 0 0 0-42.666667-42.666666h-597.333333a42.666667 42.666667 0 0 0-42.666667 42.666666v85.333334h-42.666667a85.333333 85.333333 0 0 0-85.333333 85.333333v298.666667a85.333333 85.333333 0 0 0 85.333333 85.333333h42.666667V810.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h426.666666z m128-810.666666h-512v-42.666667h512v42.666667z m128 384h-768v-298.666667h768v298.666667z m-533.333333-21.333334a42.666667 42.666667 0 0 0 34.133333-68.266666l-76.8-102.4h42.666667a42.666667 42.666667 0 0 0 42.368-37.674667l0.298667-4.992a42.666667 42.666667 0 0 0-42.666667-42.666667h-128a42.666667 42.666667 0 0 0-34.133333 68.266667l76.8 102.4h-42.666667a42.666667 42.666667 0 0 0-42.368 37.674667L200.533333 362.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h128z m149.333333 0a42.666667 42.666667 0 0 0 42.666667-42.666666v-170.666667a42.666667 42.666667 0 1 0-85.333333 0v170.666667a42.666667 42.666667 0 0 0 42.666666 42.666666z m224 0a96 96 0 0 0 0-192h-32v-21.333333a42.666667 42.666667 0 1 0-85.333333 0v170.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h74.666666z m0-85.333333h-32v-21.333333h32a10.666667 10.666667 0 1 1 0 21.333333zM563.2 768h-298.666667v-256h512V554.666667h-170.666666a42.666667 42.666667 0 0 0-42.666667 42.666666V768z m85.333333-25.6V640h81.92L648.533333 742.4z" horiz-adv-x="1024" />
<glyph glyph-name="a-icon_file-compressed_colorful" unicode="&#58944;" d="M648.533333 853.333333a42.666667 42.666667 0 0 0 33.322667-16l170.325333-212.906666 1.792-2.346667 0.213334-0.341333 0.426666-0.554667 0.426667-0.768-0.853333 1.322667-1.664 2.261333 2.730666-3.925333 1.152-1.877334a40.021333 40.021333 0 0 0 4.053334-9.941333 41.258667 41.258667 0 0 0 1.109333-5.973333L861.866667 597.333333v-85.333333h42.666666a85.333333 85.333333 0 0 0 85.333334-85.333333v-298.666667a85.333333 85.333333 0 0 0-85.333334-85.333333h-42.666666v-85.333334a42.666667 42.666667 0 0 0-42.666667-42.666666h-597.333333a42.666667 42.666667 0 0 0-42.666667 42.666666v85.333334h-42.666667a85.333333 85.333333 0 0 0-85.333333 85.333333v298.666667a85.333333 85.333333 0 0 0 85.333333 85.333333h42.666667V810.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h426.666666z m128-810.666666h-512v-42.666667h512v42.666667z m128 384h-768v-298.666667h768v298.666667z m-533.333333-21.333334a42.666667 42.666667 0 0 0 34.133333-68.266666l-76.8-102.4h42.666667a42.666667 42.666667 0 0 0 42.368-37.674667l0.298667-4.992a42.666667 42.666667 0 0 0-42.666667-42.666667h-128a42.666667 42.666667 0 0 0-34.133333 68.266667l76.8 102.4h-42.666667a42.666667 42.666667 0 0 0-42.368 37.674667L200.533333 362.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h128z m149.333333 0a42.666667 42.666667 0 0 0 42.666667-42.666666v-170.666667a42.666667 42.666667 0 1 0-85.333333 0v170.666667a42.666667 42.666667 0 0 0 42.666666 42.666666z m224 0a96 96 0 0 0 0-192h-32v-21.333333a42.666667 42.666667 0 1 0-85.333333 0v170.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h74.666666z m0-85.333333h-32v-21.333333h32a10.666667 10.666667 0 1 1 0 21.333333zM563.2 768h-298.666667v-256h512V554.666667h-170.666666a42.666667 42.666667 0 0 0-42.666667 42.666666V768z m85.333333-25.6V640h81.92L648.533333 742.4z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file-image_colorful_ash" unicode="&#58946;" d="M867.541333 853.333333A113.792 113.792 0 0 0 981.333333 739.541333v-711.082666A113.792 113.792 0 0 0 867.541333-85.333333H156.458667A113.792 113.792 0 0 0 42.666667 28.458667V739.541333A113.792 113.792 0 0 0 156.458667 853.333333h711.082666z m-189.781333-574.293333l-208.341333-187.477333a42.666667 42.666667 0 0 0-52.053334-3.882667l-4.266666 3.2-139.946667 119.978667L128 101.930667v-73.472c0-15.744 12.714667-28.458667 28.458667-28.458667h711.082666a28.458667 28.458667 0 0 1 28.458667 28.458667V80.64l-218.24 198.4zM867.541333 768H156.458667A28.458667 28.458667 0 0 1 128 739.541333V208.64l121.344 91.008a42.666667 42.666667 0 0 0 53.376-1.706667l137.472-117.802666 209.194667 188.202666a42.666667 42.666667 0 0 0 57.258666-0.128L896 196.010667V739.584A28.458667 28.458667 0 0 1 867.541333 768zM369.792 687.402667a161.194667 161.194667 0 1 0 0-322.346667 161.194667 161.194667 0 0 0 0 322.346667z m0-85.333334a75.861333 75.861333 0 1 1 0-151.68 75.861333 75.861333 0 0 1 0 151.68z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file-ppt_colorful_ash" unicode="&#58947;" d="M576 810.666667v-21.333334H810.666667a42.666667 42.666667 0 0 0 42.666666-42.666666V640h42.666667a85.333333 85.333333 0 0 0 85.333333-85.333333v-341.333334a85.333333 85.333333 0 0 0-85.333333-85.333333h-42.666667v-106.666667a42.666667 42.666667 0 0 0-42.666666-42.666666h-234.666667v-21.333334a42.666667 42.666667 0 0 0-57.088-40.192l-320 114.773334A42.666667 42.666667 0 0 0 170.666667 72.106667V128H128a85.333333 85.333333 0 0 0-85.333333 85.333333V554.666667a85.333333 85.333333 0 0 0 85.333333 85.333333h42.666667V695.850667a42.666667 42.666667 0 0 0 28.245333 40.106666l320 114.816A42.666667 42.666667 0 0 0 576 810.666667z m-85.333333-682.666667H256v-25.898667l234.666667-84.138666V128z m277.333333 0h-192v-64H768V128z m128 426.666667H128v-341.333334h768V554.666667z m-618.666667-21.333334a106.666667 106.666667 0 1 0 0-213.333333H256v-42.666667a42.666667 42.666667 0 1 0-85.333333 0v213.333334a42.666667 42.666667 0 0 0 42.666666 42.666666h64z m234.666667 0a106.666667 106.666667 0 1 0 0-213.333333h-21.333333v-42.666667a42.666667 42.666667 0 1 0-85.333334 0v213.333334a42.666667 42.666667 0 0 0 42.666667 42.666666H512z m298.666667-21.333333a42.666667 42.666667 0 1 0 0-85.333333h-21.333334v-128a42.666667 42.666667 0 1 0-85.333333 0v128H682.666667a42.666667 42.666667 0 1 0 0 85.333333h128zM277.333333 448H256v-42.666667h21.333333a21.333333 21.333333 0 1 1 0 42.666667z m234.666667 0h-21.333333v-42.666667h21.333333a21.333333 21.333333 0 1 1 0 42.666667z m-21.333333 301.994667L256 665.856V640h234.666667V749.994667zM768 704L576 704V640H768V704z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file-pdf_colorful_ash" unicode="&#58948;" d="M640 853.333333a42.666667 42.666667 0 0 0 33.28-16l170.368-212.906666 1.792-2.346667 0.213333-0.341333 0.426667-0.554667 0.426667-0.768-0.853334 1.322667-1.706666 2.261333 2.773333-3.925333 1.152-1.877334a40.021333 40.021333 0 0 0 4.053333-9.941333 41.258667 41.258667 0 0 0 1.109334-5.973333L853.333333 597.333333v-85.333333h42.666667a85.333333 85.333333 0 0 0 85.333333-85.333333v-298.666667a85.333333 85.333333 0 0 0-85.333333-85.333333h-42.666667v-85.333334a42.666667 42.666667 0 0 0-42.666666-42.666666H213.333333a42.666667 42.666667 0 0 0-42.666666 42.666666v85.333334H128a85.333333 85.333333 0 0 0-85.333333 85.333333v298.666667a85.333333 85.333333 0 0 0 85.333333 85.333333h42.666667V810.666667a42.666667 42.666667 0 0 0 42.666666 42.666666h426.666667z m128-810.666666H256v-42.666667h512v42.666667z m128 384H128v-298.666667h768v298.666667z m-405.333333-21.333334a128 128 0 0 0 0-256h-42.666667a42.666667 42.666667 0 0 0-42.666667 42.666667v170.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h42.666667z m-202.666667 0a96 96 0 0 0 0-192H256v-21.333333a42.666667 42.666667 0 1 0-85.333333 0v170.666667a42.666667 42.666667 0 0 0 42.666666 42.666666h74.666667z m501.333333 0a42.666667 42.666667 0 1 0 0-85.333333H725.333333v-21.333333h64a42.666667 42.666667 0 1 0 0-85.333334H725.333333v-21.333333a42.666667 42.666667 0 0 0-37.674666-42.368L682.666667 149.333333a42.666667 42.666667 0 0 0-42.666667 42.666667v170.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h106.666666z m-298.666666-85.333333v-85.333333a42.666667 42.666667 0 1 1 0 85.333333z m-202.666667 0H256v-21.333333h32a10.666667 10.666667 0 1 1 0 21.333333zM554.666667 768H256v-256h512V554.666667h-170.666667a42.666667 42.666667 0 0 0-42.666666 42.666666V768z m85.333333-25.6V640h81.92L640 742.4z" horiz-adv-x="1024" />
<glyph glyph-name="a-icon_file-compressed_colorful1" unicode="&#58949;" d="M640 853.333333a42.666667 42.666667 0 0 0 33.28-16l170.368-212.906666 1.792-2.346667 0.213333-0.341333 0.426667-0.554667 0.426667-0.768-0.853334 1.322667-1.706666 2.261333 2.773333-3.925333 1.152-1.877334a40.021333 40.021333 0 0 0 4.053333-9.941333 41.258667 41.258667 0 0 0 1.109334-5.973333L853.333333 597.333333v-85.333333h42.666667a85.333333 85.333333 0 0 0 85.333333-85.333333v-298.666667a85.333333 85.333333 0 0 0-85.333333-85.333333h-42.666667v-85.333334a42.666667 42.666667 0 0 0-42.666666-42.666666H213.333333a42.666667 42.666667 0 0 0-42.666666 42.666666v85.333334H128a85.333333 85.333333 0 0 0-85.333333 85.333333v298.666667a85.333333 85.333333 0 0 0 85.333333 85.333333h42.666667V810.666667a42.666667 42.666667 0 0 0 42.666666 42.666666h426.666667z m128-810.666666H256v-42.666667h512v42.666667z m128 384H128v-298.666667h768v298.666667z m-533.333333-21.333334a42.666667 42.666667 0 0 0 34.133333-68.266666l-76.8-102.4h42.666667a42.666667 42.666667 0 0 0 42.368-37.674667l0.298666-4.992a42.666667 42.666667 0 0 0-42.666666-42.666667h-128a42.666667 42.666667 0 0 0-34.133334 68.266667l76.8 102.4h-42.666666a42.666667 42.666667 0 0 0-42.368 37.674667L192 362.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h128z m149.333333 0a42.666667 42.666667 0 0 0 42.666667-42.666666v-170.666667a42.666667 42.666667 0 1 0-85.333334 0v170.666667a42.666667 42.666667 0 0 0 42.666667 42.666666z m224 0a96 96 0 0 0 0-192h-32v-21.333333a42.666667 42.666667 0 1 0-85.333333 0v170.666667a42.666667 42.666667 0 0 0 42.666666 42.666666h74.666667z m0-85.333333h-32v-21.333333h32a10.666667 10.666667 0 1 1 0 21.333333zM554.666667 768H256v-256h512V554.666667h-170.666667a42.666667 42.666667 0 0 0-42.666666 42.666666V768z m85.333333-25.6V640h81.92L640 742.4z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file-image_colorful" unicode="&#58950;" d="M867.541333 853.333333A113.792 113.792 0 0 0 981.333333 739.541333v-711.082666A113.792 113.792 0 0 0 867.541333-85.333333H156.458667A113.792 113.792 0 0 0 42.666667 28.458667V739.541333A113.792 113.792 0 0 0 156.458667 853.333333h711.082666z m-189.781333-574.293333l-208.341333-187.477333a42.666667 42.666667 0 0 0-52.053334-3.882667l-4.266666 3.2-139.946667 119.978667L128 101.930667v-73.472c0-15.744 12.714667-28.458667 28.458667-28.458667h711.082666a28.458667 28.458667 0 0 1 28.458667 28.458667V80.64l-218.24 198.4zM867.541333 768H156.458667A28.458667 28.458667 0 0 1 128 739.541333V208.64l121.344 91.008a42.666667 42.666667 0 0 0 53.376-1.706667l137.472-117.802666 209.194667 188.202666a42.666667 42.666667 0 0 0 57.258666-0.128L896 196.010667V739.584A28.458667 28.458667 0 0 1 867.541333 768zM369.792 687.402667a161.194667 161.194667 0 1 0 0-322.346667 161.194667 161.194667 0 0 0 0 322.346667z m0-85.333334a75.861333 75.861333 0 1 1 0-151.68 75.861333 75.861333 0 0 1 0 151.68z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file-word_colorful_ash" unicode="&#58951;" d="M256 0h640V768H256v-128h213.333333a42.666667 42.666667 0 0 0 42.666667-42.666667v-384a42.666667 42.666667 0 0 0-42.666667-42.666666H256v-170.666667z m554.666667 256a42.666667 42.666667 0 1 0 0-85.333333h-170.666667a42.666667 42.666667 0 1 0 0 85.333333h170.666667zM135.04 554.666667h-10.581333a30.208 30.208 0 0 1-29.226667-37.845334l61.653333-235.349333a34.133333 34.133333 0 0 1 33.024-25.472h18.773334a34.133333 34.133333 0 0 1 33.28 26.453333l35.157333 153.258667 36.48-153.472a34.133333 34.133333 0 0 1 33.194667-26.24h18.517333a34.133333 34.133333 0 0 1 33.024 25.557333l61.226667 235.52a30.08 30.08 0 0 1-29.013334 37.589334h-10.325333a34.133333 34.133333 0 0 1-33.578667-28.074667l-28.885333-160.085333-38.272 161.877333A34.133333 34.133333 0 0 1 286.250667 554.666667h-18.602667a34.133333 34.133333 0 0 1-33.28-26.538667l-36.864-161.621333-28.885333 160.085333A34.133333 34.133333 0 0 1 135.04 554.666667zM810.666667 426.666667a42.666667 42.666667 0 1 0 0-85.333334h-170.666667a42.666667 42.666667 0 1 0 0 85.333334h170.666667z m0 170.666666a42.666667 42.666667 0 1 0 0-85.333333h-170.666667a42.666667 42.666667 0 1 0 0 85.333333h170.666667zM85.333333 170.666667a42.666667 42.666667 0 0 0-42.666666 42.666666V597.333333a42.666667 42.666667 0 0 0 42.666666 42.666667h85.333334V768a85.333333 85.333333 0 0 0 85.333333 85.333333h640a85.333333 85.333333 0 0 0 85.333333-85.333333v-768a85.333333 85.333333 0 0 0-85.333333-85.333333H256a85.333333 85.333333 0 0 0-85.333333 85.333333v170.666667H85.333333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file-sketch_colorful" unicode="&#58952;" d="M874.666667 853.333333A106.666667 106.666667 0 0 0 981.333333 746.666667v-725.333334a106.666667 106.666667 0 0 0-106.666666-106.666666h-725.333334A106.666667 106.666667 0 0 0 42.666667 21.333333v725.333334A106.666667 106.666667 0 0 0 149.333333 853.333333h725.333334z m0-85.333333h-725.333334a21.333333 21.333333 0 0 1-21.333333-21.333333v-725.333334a21.333333 21.333333 0 0 1 21.333333-21.333333h725.333334a21.333333 21.333333 0 0 1 21.333333 21.333333v725.333334a21.333333 21.333333 0 0 1-21.333333 21.333333zM640 616.277333a42.666667 42.666667 0 0 0 33.877333-16.725333l85.333334-111.530667a42.666667 42.666667 0 0 0-0.512-52.522666l-213.333334-267.733334a42.666667 42.666667 0 0 0-66.730666 0l-213.333334 267.733334a42.666667 42.666667 0 0 0-0.512 52.48l85.333334 111.573333A42.666667 42.666667 0 0 0 384 616.277333h256z m-21.077333-85.333333H405.034667l-52.266667-68.266667L512 262.826667l159.189333 199.765333-52.266666 68.309333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file-ppt_colorful" unicode="&#58953;" d="M576 810.666667v-21.333334H810.666667a42.666667 42.666667 0 0 0 42.666666-42.666666V640h42.666667a85.333333 85.333333 0 0 0 85.333333-85.333333v-341.333334a85.333333 85.333333 0 0 0-85.333333-85.333333h-42.666667v-106.666667a42.666667 42.666667 0 0 0-42.666666-42.666666h-234.666667v-21.333334a42.666667 42.666667 0 0 0-57.088-40.192l-320 114.773334A42.666667 42.666667 0 0 0 170.666667 72.106667V128H128a85.333333 85.333333 0 0 0-85.333333 85.333333V554.666667a85.333333 85.333333 0 0 0 85.333333 85.333333h42.666667V695.850667a42.666667 42.666667 0 0 0 28.245333 40.106666l320 114.816A42.666667 42.666667 0 0 0 576 810.666667z m-85.333333-682.666667H256v-25.898667l234.666667-84.138666V128z m277.333333 0h-192v-64H768V128z m128 426.666667H128v-341.333334h768V554.666667z m-618.666667-21.333334a106.666667 106.666667 0 1 0 0-213.333333H256v-42.666667a42.666667 42.666667 0 1 0-85.333333 0v213.333334a42.666667 42.666667 0 0 0 42.666666 42.666666h64z m234.666667 0a106.666667 106.666667 0 1 0 0-213.333333h-21.333333v-42.666667a42.666667 42.666667 0 1 0-85.333334 0v213.333334a42.666667 42.666667 0 0 0 42.666667 42.666666H512z m298.666667-21.333333a42.666667 42.666667 0 1 0 0-85.333333h-21.333334v-128a42.666667 42.666667 0 1 0-85.333333 0v128H682.666667a42.666667 42.666667 0 1 0 0 85.333333h128zM277.333333 448H256v-42.666667h21.333333a21.333333 21.333333 0 1 1 0 42.666667z m234.666667 0h-21.333333v-42.666667h21.333333a21.333333 21.333333 0 1 1 0 42.666667z m-21.333333 301.994667L256 665.856V640h234.666667V749.994667zM768 704L576 704V640H768V704z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file_video_colorful_ash" unicode="&#58956;" d="M867.541333 853.333333A113.792 113.792 0 0 0 981.333333 739.541333v-711.082666A113.792 113.792 0 0 0 867.541333-85.333333H156.458667A113.792 113.792 0 0 0 42.666667 28.458667V739.541333A113.792 113.792 0 0 0 156.458667 853.333333h711.082666zM896 554.666667H128v-526.208c0-15.744 12.714667-28.458667 28.458667-28.458667h711.082666a28.458667 28.458667 0 0 1 28.458667 28.458667V554.666667zM450.389333 469.845333l124.416-71.850666 124.458667-71.850667a42.666667 42.666667 0 0 0 0-73.898667l-124.458667-71.850666-124.416-71.850667a42.666667 42.666667 0 0 0-64 36.949333v287.402667a42.666667 42.666667 0 0 0 64 36.949333z m21.333334-110.848v-139.562666l60.416 34.858666 60.458666 34.944-60.458666 34.858667-60.416 34.901333zM361.130667 768H156.458667A28.458667 28.458667 0 0 1 128 739.541333V640h147.797333l85.333334 128z m506.453333 0h-119.424l-85.376-128H896V739.541333A28.458667 28.458667 0 0 1 867.541333 768zM645.546667 768h-181.845334l-85.333333-128h181.888l85.290667 128z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file-excel_colorful" unicode="&#58957;" d="M256 0h640V768H256v-170.666667h213.333333a42.666667 42.666667 0 0 0 42.666667-42.666666v-384a42.666667 42.666667 0 0 0-42.666667-42.666667H256v-128z m554.666667 256a42.666667 42.666667 0 1 0 0-85.333333h-170.666667a42.666667 42.666667 0 1 0 0 85.333333h170.666667zM221.184 512H175.274667a27.477333 27.477333 0 0 1-22.997334-42.496l65.877334-100.522667-74.666667-112.64A27.690667 27.690667 0 0 1 166.656 213.333333H213.333333a8.533333 8.533333 0 0 1 7.253334 4.053334l56.618666 91.904 56.362667-91.904a8.533333 8.533333 0 0 1 7.253333-4.053334h47.104a27.904 27.904 0 0 1 23.296 43.264L338.133333 367.36l65.706667 102.314667A27.477333 27.477333 0 0 1 380.714667 512H335.402667a8.533333 8.533333 0 0 1-7.424-4.352L279.04 420.138667 228.565333 507.733333a8.533333 8.533333 0 0 1-7.381333 4.266667zM810.666667 426.666667a42.666667 42.666667 0 1 0 0-85.333334h-170.666667a42.666667 42.666667 0 1 0 0 85.333334h170.666667z m0 170.666666a42.666667 42.666667 0 1 0 0-85.333333h-170.666667a42.666667 42.666667 0 1 0 0 85.333333h170.666667zM85.333333 128a42.666667 42.666667 0 0 0-42.666666 42.666667V554.666667a42.666667 42.666667 0 0 0 42.666666 42.666666h85.333334V768a85.333333 85.333333 0 0 0 85.333333 85.333333h640a85.333333 85.333333 0 0 0 85.333333-85.333333v-768a85.333333 85.333333 0 0 0-85.333333-85.333333H256a85.333333 85.333333 0 0 0-85.333333 85.333333v128H85.333333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file-pdf_colorful" unicode="&#58958;" d="M640 853.333333a42.666667 42.666667 0 0 0 33.28-16l170.368-212.906666 1.792-2.346667 0.213333-0.341333 0.426667-0.554667 0.426667-0.768-0.853334 1.322667-1.706666 2.261333 2.773333-3.925333 1.152-1.877334a40.021333 40.021333 0 0 0 4.053333-9.941333 41.258667 41.258667 0 0 0 1.109334-5.973333L853.333333 597.333333v-85.333333h42.666667a85.333333 85.333333 0 0 0 85.333333-85.333333v-298.666667a85.333333 85.333333 0 0 0-85.333333-85.333333h-42.666667v-85.333334a42.666667 42.666667 0 0 0-42.666666-42.666666H213.333333a42.666667 42.666667 0 0 0-42.666666 42.666666v85.333334H128a85.333333 85.333333 0 0 0-85.333333 85.333333v298.666667a85.333333 85.333333 0 0 0 85.333333 85.333333h42.666667V810.666667a42.666667 42.666667 0 0 0 42.666666 42.666666h426.666667z m128-810.666666H256v-42.666667h512v42.666667z m128 384H128v-298.666667h768v298.666667z m-405.333333-21.333334a128 128 0 0 0 0-256h-42.666667a42.666667 42.666667 0 0 0-42.666667 42.666667v170.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h42.666667z m-202.666667 0a96 96 0 0 0 0-192H256v-21.333333a42.666667 42.666667 0 1 0-85.333333 0v170.666667a42.666667 42.666667 0 0 0 42.666666 42.666666h74.666667z m501.333333 0a42.666667 42.666667 0 1 0 0-85.333333H725.333333v-21.333333h64a42.666667 42.666667 0 1 0 0-85.333334H725.333333v-21.333333a42.666667 42.666667 0 0 0-37.674666-42.368L682.666667 149.333333a42.666667 42.666667 0 0 0-42.666667 42.666667v170.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h106.666666z m-298.666666-85.333333v-85.333333a42.666667 42.666667 0 1 1 0 85.333333z m-202.666667 0H256v-21.333333h32a10.666667 10.666667 0 1 1 0 21.333333zM554.666667 768H256v-256h512V554.666667h-170.666667a42.666667 42.666667 0 0 0-42.666666 42.666666V768z m85.333333-25.6V640h81.92L640 742.4z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file_video_colorful" unicode="&#58959;" d="M867.541333 853.333333A113.792 113.792 0 0 0 981.333333 739.541333v-711.082666A113.792 113.792 0 0 0 867.541333-85.333333H156.458667A113.792 113.792 0 0 0 42.666667 28.458667V739.541333A113.792 113.792 0 0 0 156.458667 853.333333h711.082666zM896 554.666667H128v-526.208c0-15.744 12.714667-28.458667 28.458667-28.458667h711.082666a28.458667 28.458667 0 0 1 28.458667 28.458667V554.666667zM450.389333 469.845333l124.416-71.850666 124.458667-71.850667a42.666667 42.666667 0 0 0 0-73.898667l-124.458667-71.850666-124.416-71.850667a42.666667 42.666667 0 0 0-64 36.949333v287.402667a42.666667 42.666667 0 0 0 64 36.949333z m21.333334-110.848v-139.562666l60.416 34.858666 60.458666 34.944-60.458666 34.858667-60.416 34.901333zM361.130667 768H156.458667A28.458667 28.458667 0 0 1 128 739.541333V640h147.797333l85.333334 128z m506.453333 0h-119.424l-85.376-128H896V739.541333A28.458667 28.458667 0 0 1 867.541333 768zM645.546667 768h-181.845334l-85.333333-128h181.888l85.290667 128z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file-CSV_colorful_ash" unicode="&#58960;" d="M640 853.333333a42.666667 42.666667 0 0 0 33.28-16l170.368-212.906666 1.792-2.346667 0.213333-0.341333 0.426667-0.554667 0.426667-0.768-0.853334 1.322667-1.706666 2.261333 2.773333-3.925333 1.152-1.877334a40.021333 40.021333 0 0 0 4.053333-9.941333 41.258667 41.258667 0 0 0 1.109334-5.973333L853.333333 597.333333v-85.333333h42.666667a85.333333 85.333333 0 0 0 85.333333-85.333333v-298.666667a85.333333 85.333333 0 0 0-85.333333-85.333333h-42.666667v-85.333334a42.666667 42.666667 0 0 0-42.666666-42.666666H213.333333a42.666667 42.666667 0 0 0-42.666666 42.666666v85.333334H128a85.333333 85.333333 0 0 0-85.333333 85.333333v298.666667a85.333333 85.333333 0 0 0 85.333333 85.333333h42.666667V810.666667a42.666667 42.666667 0 0 0 42.666666 42.666666h426.666667z m128-810.666666H256v-42.666667h512v42.666667z m128 384H128v-298.666667h768v298.666667z m-632.192-19.114667c29.312 0 52.394667-5.930667 69.12-17.749333 16.810667-11.861333 29.269333-30.08 37.418667-54.613334l-63.488-14.165333a54.442667 54.442667 0 0 1-6.997334 15.573333 41.344 41.344 0 0 1-14.762666 12.714667 42.410667 42.410667 0 0 1-19.541334 4.437333c-16.298667 0-28.757333-6.570667-37.461333-19.712-6.570667-9.728-9.813333-25.002667-9.813333-45.866666 0-25.813333 3.882667-43.52 11.733333-53.077334 7.808-9.6 18.816-14.378667 33.024-14.378666 13.738667 0 24.149333 3.84 31.146667 11.605333 7.082667 7.68 12.16 18.944 15.36 33.621333l63.018666-19.029333c-4.266667-17.664-10.88-32.426667-20.010666-44.288a86.826667 86.826667 0 0 0-33.877334-26.837333c-13.482667-6.016-30.677333-9.045333-51.541333-9.045334-25.258667 0-45.952 3.669333-61.952 11.008-16.042667 7.381333-29.866667 20.309333-41.514667 38.826667-11.648 18.517333-17.493333 42.24-17.493333 71.125333 0 38.528 10.24 68.138667 30.72 88.832 20.48 20.693333 49.493333 31.018667 86.912 31.018667z m238.762667 0c29.738667 0 52.437333-5.546667 68.053333-16.597333 15.573333-11.050667 24.874667-28.629333 27.861333-52.778667l-67.84-3.968c-1.749333 10.496-5.546667 18.090667-11.306666 22.869333-5.76 4.778667-13.738667 7.168-23.893334 7.168-8.362667 0-14.677333-1.792-18.901333-5.333333a16.298667 16.298667 0 0 1-6.357333-12.928c0-3.712 1.749333-7.04 5.248-10.026667 3.413333-3.072 11.434667-5.930667 24.149333-8.533333 31.402667-6.826667 53.930667-13.653333 67.541333-20.608 13.610667-6.912 23.466667-15.530667 29.696-25.770667 6.186667-10.24 9.258667-21.76 9.258667-34.474666 0-14.933333-4.138667-28.672-12.373333-41.258667a77.525333 77.525333 0 0 0-34.602667-28.672c-14.805333-6.485333-33.493333-9.728-56.021333-9.728-39.594667 0-66.986667 7.594667-82.261334 22.826667-15.232 15.274667-23.893333 34.645333-25.856 58.112l68.394667 4.266666c1.493333-11.093333 4.522667-19.541333 9.045333-25.386666 7.424-9.386667 18.005333-14.08 31.786667-14.08 10.24 0 18.133333 2.389333 23.722667 7.168a21.632 21.632 0 0 1 8.32 16.768 21.333333 21.333333 0 0 1-7.936 16.213333c-5.290667 4.736-17.578667 9.258667-36.821334 13.482667-31.573333 7.082667-54.016 16.512-67.456 28.245333a56.832 56.832 0 0 0-20.352 44.928c0 11.946667 3.498667 23.253333 10.410667 33.877333 6.912 10.666667 17.365333 19.029333 31.274667 25.088 13.909333 6.101333 32.981333 9.130667 57.216 9.130667z m191.957333-3.968l52.394667-167.466667 51.584 167.466667h73.002666l-86.357333-232.704h-77.952l-87.936 232.704h75.264zM554.666667 768H256v-256h512V554.666667h-170.666667a42.666667 42.666667 0 0 0-42.666666 42.666666V768z m85.333333-25.6V640h81.92L640 742.4z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file-sketch_colorful_ash" unicode="&#58961;" d="M874.666667 853.333333A106.666667 106.666667 0 0 0 981.333333 746.666667v-725.333334a106.666667 106.666667 0 0 0-106.666666-106.666666h-725.333334A106.666667 106.666667 0 0 0 42.666667 21.333333v725.333334A106.666667 106.666667 0 0 0 149.333333 853.333333h725.333334z m0-85.333333h-725.333334a21.333333 21.333333 0 0 1-21.333333-21.333333v-725.333334a21.333333 21.333333 0 0 1 21.333333-21.333333h725.333334a21.333333 21.333333 0 0 1 21.333333 21.333333v725.333334a21.333333 21.333333 0 0 1-21.333333 21.333333zM640 616.277333a42.666667 42.666667 0 0 0 33.877333-16.725333l85.333334-111.530667a42.666667 42.666667 0 0 0-0.512-52.522666l-213.333334-267.733334a42.666667 42.666667 0 0 0-66.730666 0l-213.333334 267.733334a42.666667 42.666667 0 0 0-0.512 52.48l85.333334 111.573333A42.666667 42.666667 0 0 0 384 616.277333h256z m-21.077333-85.333333H405.034667l-52.266667-68.266667L512 262.826667l159.189333 199.765333-52.266666 68.309333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file-CSV_colorful" unicode="&#58962;" d="M640 853.333333a42.666667 42.666667 0 0 0 33.28-16l170.368-212.906666 1.792-2.346667 0.213333-0.341333 0.426667-0.554667 0.426667-0.768-0.853334 1.322667-1.706666 2.261333 2.773333-3.925333 1.152-1.877334a40.021333 40.021333 0 0 0 4.053333-9.941333 41.258667 41.258667 0 0 0 1.109334-5.973333L853.333333 597.333333v-85.333333h42.666667a85.333333 85.333333 0 0 0 85.333333-85.333333v-298.666667a85.333333 85.333333 0 0 0-85.333333-85.333333h-42.666667v-85.333334a42.666667 42.666667 0 0 0-42.666666-42.666666H213.333333a42.666667 42.666667 0 0 0-42.666666 42.666666v85.333334H128a85.333333 85.333333 0 0 0-85.333333 85.333333v298.666667a85.333333 85.333333 0 0 0 85.333333 85.333333h42.666667V810.666667a42.666667 42.666667 0 0 0 42.666666 42.666666h426.666667z m128-810.666666H256v-42.666667h512v42.666667z m128 384H128v-298.666667h768v298.666667z m-632.192-19.114667c29.312 0 52.394667-5.930667 69.12-17.749333 16.810667-11.861333 29.269333-30.08 37.418667-54.613334l-63.488-14.165333a54.442667 54.442667 0 0 1-6.997334 15.573333 41.344 41.344 0 0 1-14.762666 12.714667 42.410667 42.410667 0 0 1-19.541334 4.437333c-16.298667 0-28.757333-6.570667-37.461333-19.712-6.570667-9.728-9.813333-25.002667-9.813333-45.866666 0-25.813333 3.882667-43.52 11.733333-53.077334 7.808-9.6 18.816-14.378667 33.024-14.378666 13.738667 0 24.149333 3.84 31.146667 11.605333 7.082667 7.68 12.16 18.944 15.36 33.621333l63.018666-19.029333c-4.266667-17.664-10.88-32.426667-20.010666-44.288a86.826667 86.826667 0 0 0-33.877334-26.837333c-13.482667-6.016-30.677333-9.045333-51.541333-9.045334-25.258667 0-45.952 3.669333-61.952 11.008-16.042667 7.381333-29.866667 20.309333-41.514667 38.826667-11.648 18.517333-17.493333 42.24-17.493333 71.125333 0 38.528 10.24 68.138667 30.72 88.832 20.48 20.693333 49.493333 31.018667 86.912 31.018667z m238.762667 0c29.738667 0 52.437333-5.546667 68.053333-16.597333 15.573333-11.050667 24.874667-28.629333 27.861333-52.778667l-67.84-3.968c-1.749333 10.496-5.546667 18.090667-11.306666 22.869333-5.76 4.778667-13.738667 7.168-23.893334 7.168-8.362667 0-14.677333-1.792-18.901333-5.333333a16.298667 16.298667 0 0 1-6.357333-12.928c0-3.712 1.749333-7.04 5.248-10.026667 3.413333-3.072 11.434667-5.930667 24.149333-8.533333 31.402667-6.826667 53.930667-13.653333 67.541333-20.608 13.610667-6.912 23.466667-15.530667 29.696-25.770667 6.186667-10.24 9.258667-21.76 9.258667-34.474666 0-14.933333-4.138667-28.672-12.373333-41.258667a77.525333 77.525333 0 0 0-34.602667-28.672c-14.805333-6.485333-33.493333-9.728-56.021333-9.728-39.594667 0-66.986667 7.594667-82.261334 22.826667-15.232 15.274667-23.893333 34.645333-25.856 58.112l68.394667 4.266666c1.493333-11.093333 4.522667-19.541333 9.045333-25.386666 7.424-9.386667 18.005333-14.08 31.786667-14.08 10.24 0 18.133333 2.389333 23.722667 7.168a21.632 21.632 0 0 1 8.32 16.768 21.333333 21.333333 0 0 1-7.936 16.213333c-5.290667 4.736-17.578667 9.258667-36.821334 13.482667-31.573333 7.082667-54.016 16.512-67.456 28.245333a56.832 56.832 0 0 0-20.352 44.928c0 11.946667 3.498667 23.253333 10.410667 33.877333 6.912 10.666667 17.365333 19.029333 31.274667 25.088 13.909333 6.101333 32.981333 9.130667 57.216 9.130667z m191.957333-3.968l52.394667-167.466667 51.584 167.466667h73.002666l-86.357333-232.704h-77.952l-87.936 232.704h75.264zM554.666667 768H256v-256h512V554.666667h-170.666667a42.666667 42.666667 0 0 0-42.666666 42.666666V768z m85.333333-25.6V640h81.92L640 742.4z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file-sql_colorful_ash" unicode="&#58963;" d="M640 853.333333a42.666667 42.666667 0 0 0 33.28-16l170.368-212.906666 1.792-2.346667 0.213333-0.341333 0.426667-0.554667 0.426667-0.768-0.853334 1.322667-1.706666 2.261333 2.773333-3.925333 1.152-1.877334a40.021333 40.021333 0 0 0 4.053333-9.941333 41.258667 41.258667 0 0 0 1.109334-5.973333L853.333333 597.333333v-85.333333h42.666667a85.333333 85.333333 0 0 0 85.333333-85.333333v-298.666667a85.333333 85.333333 0 0 0-85.333333-85.333333h-42.666667v-85.333334a42.666667 42.666667 0 0 0-42.666666-42.666666H213.333333a42.666667 42.666667 0 0 0-42.666666 42.666666v85.333334H128a85.333333 85.333333 0 0 0-85.333333 85.333333v298.666667a85.333333 85.333333 0 0 0 85.333333 85.333333h42.666667V810.666667a42.666667 42.666667 0 0 0 42.666666 42.666666h426.666667z m128-810.666666H256v-42.666667h512v42.666667z m128 384H128v-298.666667h768v298.666667z m-384.469333-19.114667c39.893333 0 70.698667-10.666667 92.373333-32.128 21.717333-21.418667 32.554667-52.053333 32.554667-91.989333 0-35.498667-8.746667-63.914667-26.24-85.248 9.301333-6.442667 15.36-10.496 18.218666-12.117334 4.266667-2.432 9.984-5.205333 17.194667-8.362666l-20.650667-41.642667a240.768 240.768 0 0 0-30.848 17.92 263.850667 263.850667 0 0 0-21.333333 15.658667c-16.341333-7.082667-36.906667-10.666667-61.610667-10.666667-36.48 0-65.28 9.557333-86.4 28.586667-24.917333 22.485333-37.376 54.144-37.376 94.890666 0 39.594667 10.88 70.314667 32.682667 92.245334 21.845333 21.888 52.309333 32.853333 91.434667 32.853333z m-259.072 0c30.72 0 54.186667-5.717333 70.272-17.109333 16.128-11.434667 25.728-29.610667 28.757333-54.528l-69.973333-4.096c-1.877333 10.837333-5.802667 18.688-11.733334 23.594666-5.973333 4.949333-14.208 7.381333-24.704 7.381334-8.618667 0-15.104-1.834667-19.498666-5.504a16.853333 16.853333 0 0 1-6.570667-13.354667c0-3.84 1.834667-7.253333 5.418667-10.325333 3.498667-3.157333 11.818667-6.101333 24.917333-8.832 32.469333-6.997333 55.722667-14.08 69.76-21.248 14.08-7.168 24.32-16.042667 30.677333-26.624 6.4-10.624 9.6-22.485333 9.6-35.584 0-15.402667-4.266667-29.610667-12.8-42.666667-8.533333-12.970667-20.437333-22.826667-35.754666-29.568-15.274667-6.741333-34.56-10.069333-57.856-10.069333-40.874667 0-69.205333 7.850667-84.906667 23.594666-15.786667 15.744-24.661333 35.754667-26.752 59.989334l70.656 4.437333c1.536-11.477333 4.693333-20.224 9.386667-26.24 7.637333-9.728 18.56-14.592 32.768-14.592 10.581333 0 18.773333 2.517333 24.490666 7.466667a22.357333 22.357333 0 0 1 8.618667 17.322666 22.058667 22.058667 0 0 1-8.192 16.725334c-5.461333 4.906667-18.133333 9.557333-38.058667 13.909333-32.554667 7.338667-55.765333 17.066667-69.674666 29.184a58.666667 58.666667 0 0 0-20.992 46.421333c0 12.373333 3.584 24.021333 10.752 34.986667 7.168 11.008 17.92 19.626667 32.298666 25.898667 14.378667 6.314667 34.090667 9.429333 59.093334 9.429333z m498.261333-4.096v-181.162667h115.925333v-59.178666h-190.208v240.341333h74.282667z m-239.36-52.138667a45.226667 45.226667 0 0 1-35.925333-15.914666c-9.173333-10.581333-13.738667-27.136-13.738667-49.664 0-26.24 4.48-44.629333 13.44-55.253334 8.96-10.581333 21.248-15.914667 36.864-15.914666 5.034667 0 9.813333 0.512 14.293333 1.493333-6.229333 5.973333-16.085333 11.690667-29.525333 17.066667l11.648 26.709333c6.528-1.194667 11.648-2.688 15.36-4.437333 3.626667-1.706667 10.752-6.314667 21.333333-13.738667 2.56-1.749333 5.248-3.584 8.234667-5.418667 5.888 10.581333 8.832 26.453333 8.832 47.530667 0 24.277333-4.522667 41.6-13.525333 51.968-9.002667 10.410667-21.461333 15.573333-37.290667 15.573333zM554.666667 768H256v-256h512V554.666667h-170.666667a42.666667 42.666667 0 0 0-42.666666 42.666666V768z m85.333333-25.6V640h81.92L640 742.4z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file-text_colorful" unicode="&#58964;" d="M874.666667 853.333333A106.666667 106.666667 0 0 0 981.333333 746.666667v-725.333334a106.666667 106.666667 0 0 0-106.666666-106.666666h-725.333334A106.666667 106.666667 0 0 0 42.666667 21.333333v725.333334A106.666667 106.666667 0 0 0 149.333333 853.333333h725.333334z m0-85.333333h-725.333334a21.333333 21.333333 0 0 1-21.333333-21.333333v-725.333334a21.333333 21.333333 0 0 1 21.333333-21.333333h725.333334a21.333333 21.333333 0 0 1 21.333333 21.333333v725.333334a21.333333 21.333333 0 0 1-21.333333 21.333333z m-410.069334-663.722667a42.666667 42.666667 0 0 0 0 85.333334l4.736 0.042666V526.208l0.256 4.778667h-104.533333v-28.458667a42.666667 42.666667 0 0 0-37.717333-42.410667l-4.949334-0.256a42.666667 42.666667 0 0 0-42.666666 42.666667V573.610667a42.666667 42.666667 0 0 0 42.666666 42.666666h379.221334a42.666667 42.666667 0 0 0 42.666666-42.666666v-71.082667a42.666667 42.666667 0 1 0-85.333333 0v28.416l-104.533333 0.042667c0.170667-1.578667 0.256-3.157333 0.256-4.778667v-336.554667h4.736a42.666667 42.666667 0 1 0 0-85.333333H464.64z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file-word_colorful" unicode="&#58965;" d="M256 0h640V768H256v-128h213.333333a42.666667 42.666667 0 0 0 42.666667-42.666667v-384a42.666667 42.666667 0 0 0-42.666667-42.666666H256v-170.666667z m554.666667 256a42.666667 42.666667 0 1 0 0-85.333333h-170.666667a42.666667 42.666667 0 1 0 0 85.333333h170.666667zM135.04 554.666667h-10.581333a30.208 30.208 0 0 1-29.226667-37.845334l61.653333-235.349333a34.133333 34.133333 0 0 1 33.024-25.472h18.773334a34.133333 34.133333 0 0 1 33.28 26.453333l35.157333 153.258667 36.48-153.472a34.133333 34.133333 0 0 1 33.194667-26.24h18.517333a34.133333 34.133333 0 0 1 33.024 25.557333l61.226667 235.52a30.08 30.08 0 0 1-29.013334 37.589334h-10.325333a34.133333 34.133333 0 0 1-33.578667-28.074667l-28.885333-160.085333-38.272 161.877333A34.133333 34.133333 0 0 1 286.250667 554.666667h-18.602667a34.133333 34.133333 0 0 1-33.28-26.538667l-36.864-161.621333-28.885333 160.085333A34.133333 34.133333 0 0 1 135.04 554.666667zM810.666667 426.666667a42.666667 42.666667 0 1 0 0-85.333334h-170.666667a42.666667 42.666667 0 1 0 0 85.333334h170.666667z m0 170.666666a42.666667 42.666667 0 1 0 0-85.333333h-170.666667a42.666667 42.666667 0 1 0 0 85.333333h170.666667zM85.333333 170.666667a42.666667 42.666667 0 0 0-42.666666 42.666666V597.333333a42.666667 42.666667 0 0 0 42.666666 42.666667h85.333334V768a85.333333 85.333333 0 0 0 85.333333 85.333333h640a85.333333 85.333333 0 0 0 85.333333-85.333333v-768a85.333333 85.333333 0 0 0-85.333333-85.333333H256a85.333333 85.333333 0 0 0-85.333333 85.333333v170.666667H85.333333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file-xmind_colorful" unicode="&#58966;" d="M260.266667-8.533333h640v768h-640v-128h213.333333a42.666667 42.666667 0 0 0 42.666667-42.666667v-384a42.666667 42.666667 0 0 0-42.666667-42.666667h-213.333333v-170.666666z m554.666666 256a42.666667 42.666667 0 1 0 0-85.333334h-170.666666a42.666667 42.666667 0 1 0 0 85.333334h170.666666zM120.192 463.573333c-9.813333 0-19.456-0.768-28.842667-2.218666a185.6 185.6 0 0 1 20.906667-114.773334 187.562667 187.562667 0 0 0 90.752-6.186666 185.941333 185.941333 0 0 0-12.629333-85.333334 185.813333 185.813333 0 0 1 102.4-48.725333 185.472 185.472 0 0 1 13.866666 70.784 186.453333 186.453333 0 0 1-186.453333 186.453333zM270.378667 588.8a185.130667 185.130667 0 0 1-13.824-70.698667 188.885333 188.885333 0 0 1 10.154666-60.928 189.226667 189.226667 0 0 1 22.869334-45.098666l0.426666-0.554667a187.733333 187.733333 0 0 1 21.162667-25.301333l0.64-0.597334 1.28-1.28 4.138667-3.925333c18.645333-17.066667 40.789333-30.378667 65.194666-38.741333l1.450667-0.426667 0.938667-0.384c7.765333-2.56 15.744-4.565333 23.893333-6.058667l4.565333-0.768 8.192-1.194666a188.714667 188.714667 0 0 1 50.389334 1.024 187.733333 187.733333 0 0 1-20.906667 114.773333 187.648 187.648 0 0 0-90.752 6.144 185.984 185.984 0 0 0 12.629333 85.333333 185.813333 185.813333 0 0 1-102.4 48.682667z m544.554666-170.666667a42.666667 42.666667 0 1 0 0-85.333333h-170.666666a42.666667 42.666667 0 1 0 0 85.333333h170.666666z m0 170.666667a42.666667 42.666667 0 1 0 0-85.333333h-170.666666a42.666667 42.666667 0 1 0 0 85.333333h170.666666z m-725.333333-426.666667a42.666667 42.666667 0 0 0-42.666667 42.666667v384a42.666667 42.666667 0 0 0 42.666667 42.666667h85.333333v128a85.333333 85.333333 0 0 0 85.333334 85.333333h640a85.333333 85.333333 0 0 0 85.333333-85.333333v-768a85.333333 85.333333 0 0 0-85.333333-85.333334h-640a85.333333 85.333333 0 0 0-85.333334 85.333334v170.666666h-85.333333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file-sql_colorful" unicode="&#58967;" d="M640 853.333333a42.666667 42.666667 0 0 0 33.28-16l170.368-212.906666 1.792-2.346667 0.213333-0.341333 0.426667-0.554667 0.426667-0.768-0.853334 1.322667-1.706666 2.261333 2.773333-3.925333 1.152-1.877334a40.021333 40.021333 0 0 0 4.053333-9.941333 41.258667 41.258667 0 0 0 1.109334-5.973333L853.333333 597.333333v-85.333333h42.666667a85.333333 85.333333 0 0 0 85.333333-85.333333v-298.666667a85.333333 85.333333 0 0 0-85.333333-85.333333h-42.666667v-85.333334a42.666667 42.666667 0 0 0-42.666666-42.666666H213.333333a42.666667 42.666667 0 0 0-42.666666 42.666666v85.333334H128a85.333333 85.333333 0 0 0-85.333333 85.333333v298.666667a85.333333 85.333333 0 0 0 85.333333 85.333333h42.666667V810.666667a42.666667 42.666667 0 0 0 42.666666 42.666666h426.666667z m128-810.666666H256v-42.666667h512v42.666667z m128 384H128v-298.666667h768v298.666667z m-384.469333-19.114667c39.893333 0 70.698667-10.666667 92.373333-32.128 21.717333-21.418667 32.554667-52.053333 32.554667-91.989333 0-35.498667-8.746667-63.914667-26.24-85.248 9.301333-6.442667 15.36-10.496 18.218666-12.117334 4.266667-2.432 9.984-5.205333 17.194667-8.362666l-20.650667-41.642667a240.768 240.768 0 0 0-30.848 17.92 263.850667 263.850667 0 0 0-21.333333 15.658667c-16.341333-7.082667-36.906667-10.666667-61.610667-10.666667-36.48 0-65.28 9.557333-86.4 28.586667-24.917333 22.485333-37.376 54.144-37.376 94.890666 0 39.594667 10.88 70.314667 32.682667 92.245334 21.845333 21.888 52.309333 32.853333 91.434667 32.853333z m-259.072 0c30.72 0 54.186667-5.717333 70.272-17.109333 16.128-11.434667 25.728-29.610667 28.757333-54.528l-69.973333-4.096c-1.877333 10.837333-5.802667 18.688-11.733334 23.594666-5.973333 4.949333-14.208 7.381333-24.704 7.381334-8.618667 0-15.104-1.834667-19.498666-5.504a16.853333 16.853333 0 0 1-6.570667-13.354667c0-3.84 1.834667-7.253333 5.418667-10.325333 3.498667-3.157333 11.818667-6.101333 24.917333-8.832 32.469333-6.997333 55.722667-14.08 69.76-21.248 14.08-7.168 24.32-16.042667 30.677333-26.624 6.4-10.624 9.6-22.485333 9.6-35.584 0-15.402667-4.266667-29.610667-12.8-42.666667-8.533333-12.970667-20.437333-22.826667-35.754666-29.568-15.274667-6.741333-34.56-10.069333-57.856-10.069333-40.874667 0-69.205333 7.850667-84.906667 23.594666-15.786667 15.744-24.661333 35.754667-26.752 59.989334l70.656 4.437333c1.536-11.477333 4.693333-20.224 9.386667-26.24 7.637333-9.728 18.56-14.592 32.768-14.592 10.581333 0 18.773333 2.517333 24.490666 7.466667a22.357333 22.357333 0 0 1 8.618667 17.322666 22.058667 22.058667 0 0 1-8.192 16.725334c-5.461333 4.906667-18.133333 9.557333-38.058667 13.909333-32.554667 7.338667-55.765333 17.066667-69.674666 29.184a58.666667 58.666667 0 0 0-20.992 46.421333c0 12.373333 3.584 24.021333 10.752 34.986667 7.168 11.008 17.92 19.626667 32.298666 25.898667 14.378667 6.314667 34.090667 9.429333 59.093334 9.429333z m498.261333-4.096v-181.162667h115.925333v-59.178666h-190.208v240.341333h74.282667z m-239.36-52.138667a45.226667 45.226667 0 0 1-35.925333-15.914666c-9.173333-10.581333-13.738667-27.136-13.738667-49.664 0-26.24 4.48-44.629333 13.44-55.253334 8.96-10.581333 21.248-15.914667 36.864-15.914666 5.034667 0 9.813333 0.512 14.293333 1.493333-6.229333 5.973333-16.085333 11.690667-29.525333 17.066667l11.648 26.709333c6.528-1.194667 11.648-2.688 15.36-4.437333 3.626667-1.706667 10.752-6.314667 21.333333-13.738667 2.56-1.749333 5.248-3.584 8.234667-5.418667 5.888 10.581333 8.832 26.453333 8.832 47.530667 0 24.277333-4.522667 41.6-13.525333 51.968-9.002667 10.410667-21.461333 15.573333-37.290667 15.573333zM554.666667 768H256v-256h512V554.666667h-170.666667a42.666667 42.666667 0 0 0-42.666666 42.666666V768z m85.333333-25.6V640h81.92L640 742.4z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file-text_colorful_ash" unicode="&#58968;" d="M874.666667 853.333333A106.666667 106.666667 0 0 0 981.333333 746.666667v-725.333334a106.666667 106.666667 0 0 0-106.666666-106.666666h-725.333334A106.666667 106.666667 0 0 0 42.666667 21.333333v725.333334A106.666667 106.666667 0 0 0 149.333333 853.333333h725.333334z m0-85.333333h-725.333334a21.333333 21.333333 0 0 1-21.333333-21.333333v-725.333334a21.333333 21.333333 0 0 1 21.333333-21.333333h725.333334a21.333333 21.333333 0 0 1 21.333333 21.333333v725.333334a21.333333 21.333333 0 0 1-21.333333 21.333333z m-410.069334-663.722667a42.666667 42.666667 0 0 0 0 85.333334l4.736 0.042666V526.208l0.256 4.778667h-104.533333v-28.458667a42.666667 42.666667 0 0 0-37.717333-42.410667l-4.949334-0.256a42.666667 42.666667 0 0 0-42.666666 42.666667V573.610667a42.666667 42.666667 0 0 0 42.666666 42.666666h379.221334a42.666667 42.666667 0 0 0 42.666666-42.666666v-71.082667a42.666667 42.666667 0 1 0-85.333333 0v28.416l-104.533333 0.042667c0.170667-1.578667 0.256-3.157333 0.256-4.778667v-336.554667h4.736a42.666667 42.666667 0 1 0 0-85.333333H464.64z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file-xmind_colorful_ash" unicode="&#58969;" d="M260.266667-8.533333h640v768h-640v-128h213.333333a42.666667 42.666667 0 0 0 42.666667-42.666667v-384a42.666667 42.666667 0 0 0-42.666667-42.666667h-213.333333v-170.666666z m554.666666 256a42.666667 42.666667 0 1 0 0-85.333334h-170.666666a42.666667 42.666667 0 1 0 0 85.333334h170.666666zM120.192 463.573333c-9.813333 0-19.456-0.768-28.842667-2.218666a185.6 185.6 0 0 1 20.906667-114.773334 187.562667 187.562667 0 0 0 90.752-6.186666 185.941333 185.941333 0 0 0-12.629333-85.333334 185.813333 185.813333 0 0 1 102.4-48.725333 185.472 185.472 0 0 1 13.866666 70.784 186.453333 186.453333 0 0 1-186.453333 186.453333zM270.378667 588.8a185.130667 185.130667 0 0 1-13.824-70.698667 188.885333 188.885333 0 0 1 10.154666-60.928 189.226667 189.226667 0 0 1 22.869334-45.098666l0.426666-0.554667a187.733333 187.733333 0 0 1 21.162667-25.301333l0.64-0.597334 1.28-1.28 4.138667-3.925333c18.645333-17.066667 40.789333-30.378667 65.194666-38.741333l1.450667-0.426667 0.938667-0.384c7.765333-2.56 15.744-4.565333 23.893333-6.058667l4.565333-0.768 8.192-1.194666a188.714667 188.714667 0 0 1 50.389334 1.024 187.733333 187.733333 0 0 1-20.906667 114.773333 187.648 187.648 0 0 0-90.752 6.144 185.984 185.984 0 0 0 12.629333 85.333333 185.813333 185.813333 0 0 1-102.4 48.682667z m544.554666-170.666667a42.666667 42.666667 0 1 0 0-85.333333h-170.666666a42.666667 42.666667 0 1 0 0 85.333333h170.666666z m0 170.666667a42.666667 42.666667 0 1 0 0-85.333333h-170.666666a42.666667 42.666667 0 1 0 0 85.333333h170.666666z m-725.333333-426.666667a42.666667 42.666667 0 0 0-42.666667 42.666667v384a42.666667 42.666667 0 0 0 42.666667 42.666667h85.333333v128a85.333333 85.333333 0 0 0 85.333334 85.333333h640a85.333333 85.333333 0 0 0 85.333333-85.333333v-768a85.333333 85.333333 0 0 0-85.333333-85.333334h-640a85.333333 85.333333 0 0 0-85.333334 85.333334v170.666666h-85.333333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file-unknown_colorful" unicode="&#58976;" d="M682.666667 853.333333a42.666667 42.666667 0 0 0 33.28-16l170.368-212.906666c1.28-1.536 2.389333-3.157333 3.413333-4.821334l-3.072 4.394667c1.450667-1.834667 2.773333-3.797333 3.882667-5.802667l2.389333-4.949333 1.664-4.992a41.258667 41.258667 0 0 0 1.109333-5.973333L896 597.333333v-640a42.666667 42.666667 0 0 0-42.666667-42.666666H170.666667a42.666667 42.666667 0 0 0-42.666667 42.666666V810.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h512z m-85.333334-85.333333H213.333333v-768h597.333334V554.666667h-170.666667a42.666667 42.666667 0 0 0-42.666667 42.666666V768z m-85.333333-612.437333a41.472 41.472 0 1 0 0-82.986667 41.472 41.472 0 0 0 0 82.986667z m0 374.528a142.208 142.208 0 0 0 44.970667-277.205334l-2.304-0.64v-30.293333a42.666667 42.666667 0 0 0-37.674667-42.410667l-4.992-0.298666a42.666667 42.666667 0 0 0-42.666667 42.666666v66.389334a42.666667 42.666667 0 0 0 37.674667 42.368l4.992 0.298666a56.874667 56.874667 0 1 1-56.618667 62.378667l-0.256-5.504a42.666667 42.666667 0 1 0-85.333333 0A142.208 142.208 0 0 0 512 530.090667zM764.586667 640L682.666667 742.4V640h81.92z" horiz-adv-x="1024" />
<glyph glyph-name="a-icon_file-jar_colorful" unicode="&#59333;" d="M648.533 853.333a42.667 42.667 0 0 0 33.323-16L852.523 624l2.73-3.925 1.152-1.878a40.021 40.021 0 0 0 4.054-9.941 41.259 41.259 0 0 0 1.109-5.973l0.299-4.95V512h42.666a85.333 85.333 0 0 0 85.334-85.333V128a85.333 85.333 0 0 0-85.334-85.333h-42.666v-85.334a42.667 42.667 0 0 0-42.667-42.666H221.867a42.667 42.667 0 0 0-42.667 42.666v85.334h-42.667A85.333 85.333 0 0 0 51.2 128V426.667A85.333 85.333 0 0 0 136.533 512H179.2V810.667a42.667 42.667 0 0 0 42.667 42.666h426.666z m128-810.666h-512V0h512v42.667z m128 384h-768V128h768V426.667z m-556.8-42.24v-116.182c0-24.405-2.176-43.008-6.528-55.722-4.309-12.758-13.013-23.51-26.112-32.384-13.056-8.832-29.781-13.227-50.218-13.227-21.59 0-38.315 2.859-50.176 8.704a63.104 63.104 0 0 0-27.478 25.6c-6.485 11.221-10.282 25.13-11.434 41.643l63.146 8.618c0.086-9.429 0.896-16.469 2.475-21.034a22.87 22.87 0 0 1 7.85-11.094c2.56-1.834 6.145-2.73 10.795-2.73 7.382 0 12.8 2.73 16.256 8.234 3.456 5.504 5.206 14.763 5.206 27.734v131.84h66.176z m174.848 0l80.299-213.76h-69.12l-10.496 35.285H448l-10.368-35.285h-67.456l80.341 213.76h72.064z m212.48 0c20.395 0 36.011-1.707 46.806-5.206 10.794-3.498 19.498-9.984 26.112-19.498 6.57-9.472 9.898-20.992 9.898-34.603 0-11.861-2.56-22.101-7.594-30.72a59.307 59.307 0 0 0-20.864-20.907c-5.632-3.413-13.355-6.229-23.168-8.49 7.893-2.603 13.61-5.248 17.194-7.851 2.432-1.75 5.974-5.504 10.582-11.221 4.608-5.76 7.68-10.155 9.258-13.27l31.958-61.994h-74.667l-35.285 65.322c-4.48 8.448-8.491 13.952-11.947 16.47a27.733 27.733 0 0 1-16.213 4.992h-5.846v-86.784H624.94v213.76h110.08z m-249.258-55.382l-23.467-76.842h47.104l-23.637 76.8z m234.496 12.246h-29.014v-43.478h27.862c2.986 0 8.832 0.982 17.493 2.944a17.493 17.493 0 0 1 10.71 6.699 19.755 19.755 0 0 1 4.18 12.373c0 6.912-2.218 12.246-6.57 15.915-4.395 3.712-12.587 5.547-24.661 5.547zM563.2 768H264.533v-256h512v42.667H605.867a42.667 42.667 0 0 0-42.667 42.666V768z m85.333-25.6V640h81.92l-81.92 102.4z" horiz-adv-x="1024" />
<glyph glyph-name="logo_dingtalk" unicode="&#59339;" d="M838.058667 470.314667a164.693333 164.693333 0 0 0-9.728-26.453334h0.085333l-0.512-1.066666c-28.416-63.829333-102.656-189.141333-102.656-189.141334l-0.341333 0.853334-21.674667-39.68h104.533333l-199.68-278.826667 45.312 189.653333h-82.346666l28.586666 125.44c-23.125333-5.845333-50.389333-13.952-82.773333-24.874666 0 0-43.776-26.88-126.208 51.84 0 0-55.552 51.328-23.338667 64.256 13.653333 5.418667 66.517333 12.373333 108.117334 18.346666 56.064 7.978667 90.624 12.245333 90.624 12.245334s-173.056-2.773333-214.144 4.053333c-41.088 6.784-93.056 78.762667-104.234667 141.994667 0 0-17.152 34.773333 36.821333 18.346666 54.101333-16.426667 277.845333-64 277.845334-64S271.445333 566.869333 252.074667 589.738667c-19.328 22.826667-56.96 124.8-52.053334 187.392 0 0 2.133333 15.658667 17.408 11.52 0 0 215.168-103.338667 362.24-159.744 147.072-56.618667 274.901333-85.418667 258.389334-158.592z" horiz-adv-x="1024" />
<glyph glyph-name="logo_lark" unicode="&#59345;" d="M548.48 366.805333c0.682667 0.725333 1.450667 1.365333 2.133333 2.048 1.493333 1.365333 2.858667 2.773333 4.266667 4.181334l2.901333 2.858666 8.746667 8.661334 11.904 11.733333 10.197333 10.112 9.557334 9.472 10.026666 9.856 9.173334 9.088 12.8 12.629333a273.493333 273.493333 0 0 0 35.541333 29.696 290.645333 290.645333 0 0 0 80 39.808A504.533333 504.533333 0 0 1 650.410667 708.266667 45.568 45.568 0 0 1 614.656 725.333333h-368.213333c-6.656 0-9.429333-8.533333-4.053334-12.458666a1074.773333 1074.773333 0 0 0 305.237334-346.88l0.853333 0.853333zM402.432 42.666667a505.728 505.728 0 0 1 450.986667 276.522666 208.469333 208.469333 0 0 0-48.213334-61.184 187.733333 187.733333 0 0 0-31.658666-22.016 192.768 192.768 0 0 0-64.938667-22.314666 198.186667 198.186667 0 0 0-34.688-2.346667 207.786667 207.786667 0 0 0-34.730667 3.413333 216.149333 216.149333 0 0 0-19.797333 4.394667c-6.4 1.706667-12.672 3.456-18.944 5.290667-3.157333 0.853333-6.272 1.834667-9.386667 2.773333-4.693333 1.408-9.386667 2.816-13.994666 4.266667a966.698667 966.698667 0 0 0-22.186667 7.210666l-7.381333 2.432-8.874667 3.114667-6.4 2.218667-12.501333 4.608c-2.432 0.853333-4.821333 1.834667-7.253334 2.730666l-9.685333 3.754667-10.24 4.096-6.570667 2.688-8.192 3.413333-6.314666 2.688c-2.176 0.938667-4.394667 1.877333-6.528 2.858667l-5.674667 2.474667-5.162667 2.261333-5.248 2.389333-5.418666 2.474667-6.826667 3.2-7.125333 3.370667-7.594667 3.669333-6.4 3.2a1064.746667 1064.746667 0 0 0-301.184 224.682667 6.869333 6.869333 0 0 1-11.946667-4.693334l0.213334-324.949333v-26.368c0-15.317333 7.594667-29.696 20.309333-38.186667A503.978667 503.978667 0 0 1 402.432 42.666667zM844.672 302.677333a1.706667 1.706667 0 0 1-0.256-0.426666l0.256 0.426666 1.706667 3.2-1.706667-3.2zM852.565333 317.568l0.426667 0.853333 0.256 0.426667-0.682667-1.28zM960.853333 500.693333a288.298667 288.298667 0 0 1-127.744 29.653334 288.512 288.512 0 0 1-87.253333-13.397334l-6.016-1.962666a291.498667 291.498667 0 0 1-109.525333-67.541334l-12.8-12.629333-9.173334-9.088-9.984-9.813333-9.6-9.514667-10.197333-10.112-11.904-11.733333-8.704-8.661334-2.901333-2.858666-4.266667-4.181334c-0.725333-0.682667-1.450667-1.322667-2.133333-2.048l-3.242667-3.072-3.626667-3.413333a506.410667 506.410667 0 0 0-104.832-74.197333 303.573333 303.573333 0 0 1 12.245334-5.674667l5.205333-2.389333 5.205333-2.261334c1.877333-0.853333 3.797333-1.706667 5.674667-2.474666l6.528-2.858667 6.314667-2.688 8.192-3.413333a2542.08 2542.08 0 0 1 16.810666-6.784c3.2-1.28 6.442667-2.517333 9.685334-3.712l7.253333-2.773334 12.501333-4.565333 6.4-2.261333 8.874667-3.072 7.338667-2.517334 10.794666-3.541333 11.434667-3.626667a1278.464 1278.464 0 0 1 42.325333-12.330666 265.301333 265.301333 0 0 1 19.797334-4.437334 206.805333 206.805333 0 0 1 91.946666 3.84 179.925333 179.925333 0 0 1 27.818667 10.112 192.768 192.768 0 0 1 21.546667 11.392c2.218667 1.365333 4.352 2.773333 6.528 4.181334a216.405333 216.405333 0 0 1 18.133333 13.781333 201.002667 201.002667 0 0 1 48.128 61.013333l4.906667 9.813334 44.544 88.746666-0.085334-0.213333a275.498667 275.498667 0 0 0 57.898667 83.285333z" horiz-adv-x="1024" />
<glyph glyph-name="logo_wechat-work" unicode="&#59346;" d="M689.92 117.12a13.184 13.184 0 0 1 1.877333-20.138667l3.797334-3.669333c24.661333-24.704 40.149333-55.04 46.506666-86.869333a49.408 49.408 0 0 1 1.877334-11.136 55.125333 55.125333 0 1 1 58.922666 69.376 169.301333 169.301333 0 0 0-94.293333 52.48 13.184 13.184 0 0 1-18.645333 0zM914.005333 204.288a55.04 55.04 0 0 1-15.786666-33.194667 169.386667 169.386667 0 0 0-52.522667-94.293333 13.184 13.184 0 1 1 20.181333-16.853333 169.344 169.344 0 0 0 90.496 50.346666 50.218667 50.218667 0 0 1 11.178667 1.877334 55.125333 55.125333 0 1 1-53.546667 92.16zM758.570667 360.149333a55.168 55.168 0 0 1 33.152-93.781333 169.386667 169.386667 0 0 0 94.336-52.48 13.226667 13.226667 0 1 1 16.810666 20.138667 169.472 169.472 0 0 0-50.346666 90.538666 48.768 48.768 0 0 1-1.834667 11.178667 55.168 55.168 0 0 1-92.16 24.405333zM731.349333 273.834667l-1.024-0.938667a13.226667 13.226667 0 0 1-1.536-1.834667l-3.669333-3.84a169.216 169.216 0 0 0-86.869333-46.506666 52.608 52.608 0 0 1-11.136-1.834667 55.125333 55.125333 0 1 1 69.376-58.922667 169.472 169.472 0 0 0 52.48 94.293334 13.184 13.184 0 0 1-17.621334 19.584zM398.08 750.165333c-98.986667-10.752-188.970667-53.12-253.354667-119.253333A338.176 338.176 0 0 1 83.2 544.213333c-20.949333-42.666667-31.573333-87.893333-31.573333-134.528 0-60.032 18.261333-119.210667 52.821333-171.136a470.613333 470.613333 0 0 1 72.448-82.858666l-11.861333-93.568c-0.512-1.28-1.024-2.56-1.28-3.882667-0.298667-1.237333-0.384-2.474667-0.512-3.754667-0.042667-0.938667-0.256-1.877333-0.256-2.858666 0-1.024 0.213333-2.005333 0.298666-3.072 1.578667-15.36 14.378667-27.434667 30.208-27.434667 5.504 0 10.581333 1.578667 15.061334 4.138667l0.426666 0.213333 1.92 1.152 28.458667 14.293333 84.693333 42.496c24.32-6.997333 48.512-11.434667 73.984-14.250666a458.624 458.624 0 0 1 102.101334 0.298666c34.773333 3.925333 68.181333 11.946667 99.882666 23.338667a55.082667 55.082667 0 0 0-37.546666 57.6 373.248 373.248 0 0 0-70.784-15.146667 384.384 384.384 0 0 0-85.504-0.256c-2.858667 0.341333-5.76 0.768-8.661334 1.194667a377.728 377.728 0 0 0-56.021333 11.733333 38.272 38.272 0 0 1-30.165333-3.072c-0.853333-0.426667-1.621333-0.768-2.432-1.237333l-69.546667-41.002667-3.029333-1.792h-0.085334c-1.493333-0.896-2.346667-1.28-3.114666-1.28a4.693333 4.693333 0 0 0-4.650667 4.864l2.688 10.794667 3.114667 11.818667 5.077333 19.328 5.632 21.546666a29.226667 29.226667 0 0 1-10.496 32.512 305.621333 305.621333 0 0 0-29.098667 24.405334 284.672 284.672 0 0 0-41.216 48.768 243.712 243.712 0 0 0-41.813333 134.997333c0 36.650667 8.362667 72.234667 24.874667 105.856a271.445333 271.445333 0 0 0 49.365333 69.504C249.514667 638.293333 323.968 673.194667 406.186667 682.112c14.293333 1.536 28.373333 2.346667 41.813333 2.346667 14.122667 0 28.8-0.853333 43.690667-2.56 81.834667-9.258667 155.818667-44.330667 208.341333-98.645334a271.061333 271.061333 0 0 0 49.152-69.674666c16.213333-33.365333 24.448-68.693333 24.448-104.96 0-3.797333-0.213333-7.552-0.426667-11.306667a55.04 55.04 0 0 0 67.669334-7.936c0.938667-0.938667 1.706667-1.962667 2.56-2.944a299.52 299.52 0 0 1-30.122667 156.714667 337.322667 337.322667 0 0 1-61.226667 86.912c-63.914667 66.090667-153.386667 108.672-251.946666 119.893333-17.706667 2.005333-35.242667 2.986667-52.138667 2.986667-16.085333 0-32.853333-0.896-49.92-2.773334z" horiz-adv-x="1024" />
<glyph glyph-name="a-icon_file-json" unicode="&#59347;" d="M648.533333 853.333333a42.666667 42.666667 0 0 0 33.322667-16l170.325333-212.906666 1.792-2.346667 0.213334-0.341333 0.426666-0.554667 0.426667-0.768-0.853333 1.322667-1.664 2.261333 2.730666-3.925333 1.152-1.877334a40.021333 40.021333 0 0 0 4.053334-9.941333 41.258667 41.258667 0 0 0 1.109333-5.973333L861.866667 597.333333v-85.333333h42.666666a85.333333 85.333333 0 0 0 85.333334-85.333333v-298.666667a85.333333 85.333333 0 0 0-85.333334-85.333333h-42.666666v-85.333334a42.666667 42.666667 0 0 0-42.666667-42.666666h-597.333333a42.666667 42.666667 0 0 0-42.666667 42.666666v85.333334h-42.666667a85.333333 85.333333 0 0 0-85.333333 85.333333v298.666667a85.333333 85.333333 0 0 0 85.333333 85.333333h42.666667V810.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h426.666666z m128-810.666666h-512v-42.666667h512v42.666667z m128 384h-768v-298.666667h768v298.666667z m-341.333333 341.333333h-298.666667v-256h512V554.666667h-170.666666a42.666667 42.666667 0 0 0-42.666667 42.666666V768z m85.333333-25.6V640h81.92L648.533333 742.4z m-341.333333-374.698667v-141.056c0-17.749333-3.157333-32.384-9.898667-43.733333-11.690667-19.797333-32.512-29.525333-60.629333-29.525333-27.818667 0-47.957333 7.850667-58.88 24.618666-9.642667 14.848-14.293333 34.346667-14.293333 58.282667v17.066667h61.952v-16.768c0.298667-12.544 1.621333-21.077333 3.413333-24.789334 0.426667-0.810667 1.706667-1.450667 6.4-1.450666 4.48 0 5.76 0.682667 6.4 2.133333 0.810667 1.621333 1.450667 6.4 1.450667 13.568v141.653333H307.2z m277.589333 5.632c29.568 0 53.034667-8.362667 68.992-24.832 21.504-19.584 32.042667-48.341333 32.042667-85.461333 0-36.394667-10.496-65.109333-31.488-84.906667-16.512-17.066667-39.978667-25.386667-69.546667-25.386666-29.568 0-53.034667 8.362667-69.12 24.96-14.08 13.226667-23.466667 30.165333-28.288 50.474666l0.213334-3.626666c0-20.565333-8.106667-38.101333-23.765334-51.626667-15.402667-13.354667-36.565333-19.797333-62.933333-19.797333-26.666667 0-48.341333 6.272-64.597333 19.2-16.853333 13.482667-25.429333 32.256-25.429334 55.210666v12.8h55.594667l-0.426667 0.085334a114.986667 114.986667 0 0 0-23.808 9.344l-4.181333 2.56c-16.085333 11.050667-24.192 28.373333-24.192 50.474666 0 20.053333 7.509333 37.205333 22.186667 50.56 14.634667 13.312 35.328 19.712 61.482666 19.712 22.101333 0 41.386667-5.973333 57.386667-18.005333 16.938667-12.714667 25.898667-31.274667 26.666667-54.613333l0.426666-13.226667H432.64l4.693333-1.237333c9.6-2.816 17.706667-6.272 24.277334-10.453334l4.650666-3.328c8.917333-7.04 15.061333-16.042667 18.346667-26.752a144 144 0 0 0-0.938667 17.578667c0 37.12 10.581333 65.92 31.573334 84.906667 16.554667 17.066667 40.021333 25.386667 69.589333 25.386666zM371.754667 238.933333l1.322666-9.642666c0.853333-6.272 2.389333-10.410667 4.096-12.501334 3.456-4.181333 10.538667-6.698667 22.229334-6.698666 7.765333 0 13.738667 0.853333 17.834666 2.261333 5.802667 2.048 7.637333 4.48 7.637334 9.301333 0 1.621333-0.384 2.261333-1.877334 3.2-3.882667 2.389333-11.050667 4.821333-21.248 7.082667l-19.541333 4.352a319.744 319.744 0 0 0-8.448 2.048l-2.005333 0.554667z m213.034666 76.202667c-11.434667 0-19.925333-3.925333-26.538666-12.117333-7.04-8.746667-10.794667-21.930667-10.794667-39.978667 0-18.048 3.754667-31.232 10.794667-39.978667 6.613333-8.192 15.104-12.074667 26.538666-12.074666s19.84 3.882667 26.368 12.032l2.730667 4.010666c5.12 8.533333 7.850667 20.48 7.850667 36.010667 0 18.005333-3.712 31.189333-10.666667 39.978667-6.485333 8.192-14.890667 12.117333-26.282667 12.117333z m-189.866666 0.341333c-7.552 0-13.013333-1.365333-16.597334-3.797333-2.389333-1.621333-3.242667-3.2-3.242666-6.144 0-1.92 0.426667-2.56 2.346666-3.669333 2.346667-1.322667 9.514667-3.626667 20.608-6.272l21.461334-5.12-0.469334 8.789333c-0.341333 5.376-1.877333 8.874667-4.992 11.349333l-2.56 1.706667a36.309333 36.309333 0 0 1-16.554666 3.157333z m354.688 52.224l3.669333-6.442666 49.493333-86.741334v93.184h61.44V157.866667H805.546667l-3.669334 6.4-51.413333 89.344 0.042667-95.744h-61.44v209.834666h60.586666z" horiz-adv-x="1024" />
<glyph glyph-name="a-icon_file-JMX" unicode="&#59038;" d="M648.533333 853.333333a42.666667 42.666667 0 0 0 33.322667-16l170.666667-213.333333 2.730666-3.925333 1.152-1.877334 1.664-3.242666 1.408-3.541334 0.981334-3.157333a41.258667 41.258667 0 0 0 1.109333-5.973333L861.866667 597.333333v-85.333333h42.666666a85.333333 85.333333 0 0 0 85.333334-85.333333v-298.666667a85.333333 85.333333 0 0 0-85.333334-85.333333h-42.666666v-85.333334a42.666667 42.666667 0 0 0-42.666667-42.666666h-597.333333a42.666667 42.666667 0 0 0-42.666667 42.666666v85.333334h-42.666667a85.333333 85.333333 0 0 0-85.333333 85.333333v298.666667a85.333333 85.333333 0 0 0 85.333333 85.333333h42.666667V810.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h426.666666z m128-810.666666h-512v-42.666667h512v42.666667z m128 384h-768v-298.666667h768v298.666667z m-572.16-42.24v-116.181334c0-24.405333-2.218667-43.008-6.528-55.722666-4.309333-12.757333-13.013333-23.509333-26.112-32.384-13.056-8.832-29.824-13.226667-50.218666-13.226667-21.589333 0-38.314667 2.858667-50.176 8.704a63.104 63.104 0 0 0-27.477334 25.6c-6.485333 11.221333-10.282667 25.130667-11.477333 41.642667l63.146667 8.618666c0.128-9.429333 0.938667-16.469333 2.474666-21.034666a22.869333 22.869333 0 0 1 7.893334-11.093334c2.56-1.834667 6.101333-2.730667 10.794666-2.730666 7.381333 0 12.8 2.730667 16.256 8.234666 3.413333 5.504 5.162667 14.762667 5.162667 27.733334v131.84H332.373333z m130.176 0l33.536-130.048 33.408 130.090666h86.613334V170.666667h-53.930667v163.029333L520.32 170.666667H471.466667l-41.728 163.029333V170.666667H375.637333v213.76h86.912z m253.781334 0l37.888-65.706667 36.778666 65.706667h72.021334l-66.517334-103.509334L869.290667 170.666667h-74.24l-42.154667 68.693333-42.24-68.693333h-73.813333l73.813333 111.402666-67.114667 102.4h72.789334zM563.2 768h-298.666667v-256h512V554.666667h-170.666666a42.666667 42.666667 0 0 0-42.666667 42.666666V768z m85.333333-25.6V640h81.92L648.533333 742.4z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file_har" unicode="&#59041;" d="M648.533333 853.333333a42.666667 42.666667 0 0 0 33.322667-16l170.666667-213.333333 2.730666-3.925333 1.152-1.877334 1.664-3.242666 1.408-3.541334 0.981334-3.157333a41.258667 41.258667 0 0 0 1.109333-5.973333L861.866667 597.333333v-85.333333h42.666666a85.333333 85.333333 0 0 0 85.333334-85.333333v-298.666667a85.333333 85.333333 0 0 0-85.333334-85.333333h-42.666666v-85.333334a42.666667 42.666667 0 0 0-42.666667-42.666666h-597.333333a42.666667 42.666667 0 0 0-42.666667 42.666666v85.333334h-42.666667a85.333333 85.333333 0 0 0-85.333333 85.333333v298.666667a85.333333 85.333333 0 0 0 85.333333 85.333333h42.666667V810.666667a42.666667 42.666667 0 0 0 42.666667 42.666666h426.666666z m128-810.666666h-512v-42.666667h512v42.666667z m128 384h-768v-298.666667h768v298.666667z m-660.992-42.24v-74.794667h72.149334v74.837333h66.389333V170.666667H315.690667v86.485333H243.541333V170.666667H177.450667v213.76h66.090666z m313.216 0L637.141333 170.666667h-69.12l-10.538666 35.285333h-75.221334L471.893333 170.666667H404.394667l80.341333 213.76h72.021333z m212.48 0c20.437333 0 36.053333-1.706667 46.805334-5.205334 10.794667-3.498667 19.498667-9.984 26.112-19.498666 6.613333-9.472 9.941333-20.992 9.941333-34.602667 0-11.861333-2.56-22.101333-7.594667-30.72a59.306667 59.306667 0 0 0-20.864-20.906667c-5.632-3.413333-13.354667-6.229333-23.168-8.490666 7.850667-2.602667 13.610667-5.248 17.194667-7.850667 1.834667-1.28 4.266667-3.754667 7.296-7.296l3.285333-3.925333c4.608-5.76 7.68-10.154667 9.258667-13.269334L869.418667 170.666667h-74.666667l-35.285333 65.322666c-4.48 8.448-8.448 13.952-11.946667 16.469334a27.733333 27.733333 0 0 1-16.213333 4.992h-5.802667V170.666667h-66.346667v213.76h110.08z m-249.216-55.381334l-23.466666-76.842666h47.104l-23.637334 76.8z m234.496 12.245334h-29.013333v-43.477334h27.861333c2.986667 0 8.832 0.981333 17.493334 2.944a17.493333 17.493333 0 0 1 10.709333 6.698667 19.754667 19.754667 0 0 1 4.181333 12.373333c0 6.912-2.218667 12.245333-6.570666 15.914667-4.394667 3.712-12.586667 5.546667-24.661334 5.546667zM563.2 768h-298.666667v-256h512V554.666667h-170.666666a42.666667 42.666667 0 0 0-42.666667 42.666666V768z m85.333333-25.6V640h81.92L648.533333 742.4z" horiz-adv-x="1024" />
<glyph glyph-name="icon_filter_clear" unicode="&#59343;" d="M128.192 768h575.616a64 64 0 0 0 44.032-110.464L512 434.304v-354.304L320-64l-0.064 498.304-235.776 223.232a64 64 0 0 0-7.616 84.288l5.12 6.208A64 64 0 0 0 128.256 768z m575.616-64H128.192L384 461.76l-0.064-397.696L448 112.064V461.76L703.872 704zM685.248 256l90.496-90.496L866.304 256l45.248-45.248-90.56-90.496 90.56-90.56-45.248-45.248-90.56 90.56-90.496-90.56-45.248 45.248 90.496 90.56L640 210.752l45.248 45.248z" horiz-adv-x="1024" />
<glyph glyph-name="icon_filter" unicode="&#59344;" d="M128 704a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64v-114.304l-272-160V0h-224V429.696L128 589.696V704z m704 0H192v-77.696l272-160V64h96V466.304l272 160V704z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file-excel_colorful_ash" unicode="&#58954;" d="M256 0h640V768H256v-170.666667h213.333333a42.666667 42.666667 0 0 0 42.666667-42.666666v-384a42.666667 42.666667 0 0 0-42.666667-42.666667H256v-128z m554.666667 256a42.666667 42.666667 0 1 0 0-85.333333h-170.666667a42.666667 42.666667 0 1 0 0 85.333333h170.666667zM221.184 512H175.274667a27.477333 27.477333 0 0 1-22.997334-42.496l65.877334-100.522667-74.666667-112.64A27.690667 27.690667 0 0 1 166.656 213.333333H213.333333a8.533333 8.533333 0 0 1 7.253334 4.053334l56.618666 91.904 56.362667-91.904a8.533333 8.533333 0 0 1 7.253333-4.053334h47.104a27.904 27.904 0 0 1 23.296 43.264L338.133333 367.36l65.706667 102.314667A27.477333 27.477333 0 0 1 380.714667 512H335.402667a8.533333 8.533333 0 0 1-7.424-4.352L279.04 420.138667 228.565333 507.733333a8.533333 8.533333 0 0 1-7.381333 4.266667zM810.666667 426.666667a42.666667 42.666667 0 1 0 0-85.333334h-170.666667a42.666667 42.666667 0 1 0 0 85.333334h170.666667z m0 170.666666a42.666667 42.666667 0 1 0 0-85.333333h-170.666667a42.666667 42.666667 0 1 0 0 85.333333h170.666667zM85.333333 128a42.666667 42.666667 0 0 0-42.666666 42.666667V554.666667a42.666667 42.666667 0 0 0 42.666666 42.666666h85.333334V768a85.333333 85.333333 0 0 0 85.333333 85.333333h640a85.333333 85.333333 0 0 0 85.333333-85.333333v-768a85.333333 85.333333 0 0 0-85.333333-85.333333H256a85.333333 85.333333 0 0 0-85.333333 85.333333v128H85.333333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_font_color" unicode="&#59342;" d="M482.901333 781.312a32 32 0 0 0 58.197334 0l117.333333-256 39.082667-85.333333 78.250666-170.666667a32 32 0 1 0-58.197333-26.624l-69.674667 151.978667H376.064l-69.632-151.978667a32 32 0 0 0-38.4-17.322667l-4.010667 1.536a32 32 0 0 0-15.786666 42.410667l78.250666 170.666667 39.082667 85.333333 117.333333 256zM512 691.242667L423.765333 498.688l-18.389333-40.021333h213.205333l-18.346666 40.021333L512 691.2z m384-573.909334a32 32 0 1 0 0-64H128a32 32 0 1 0 0 64h768z" horiz-adv-x="1024" />
<glyph glyph-name="icon_add_pic" unicode="&#59332;" d="M562.432 714.666667a32 32 0 1 0 0-64H170.666667a10.666667 10.666667 0 0 1-10.666667-10.666667v-597.333333c0-5.888 4.778667-10.666667 10.666667-10.666667h597.333333a10.666667 10.666667 0 0 1 10.666667 10.666667v405.333333a32 32 0 1 0 64 0V42.666667A74.666667 74.666667 0 0 0 768-32H170.666667A74.666667 74.666667 0 0 0 96 42.666667V640c0 41.258667 33.408 74.666667 74.666667 74.666667h391.765333z m-13.653333-237.44l160-224.64A32 32 0 0 0 682.666667 202.026667H256a32 32 0 0 0-25.6 51.114666l128 171.349334a32 32 0 0 0 48.213333 3.456l35.84-35.754667 53.248 83.626667a32 32 0 0 0 53.034667 1.408z m-24.661334-75.776l-49.109333-77.312a32 32 0 0 0-49.621333-5.418667l-37.930667 37.888-67.626667-90.581333h300.8l-96.512 135.424z m286.421334 402.901333a32 32 0 0 0 32-32V714.666667H896a32 32 0 1 0 0-64h-53.461333v-48.981334a32 32 0 1 0-64 0V650.666667H725.333333a32 32 0 1 0 0 64h53.205334V772.352a32 32 0 0 0 32 32z" horiz-adv-x="1024" />
<glyph glyph-name="icon_text_underline" unicode="&#59334;" d="M842.666667 2.090667a32 32 0 1 0 0-64h-682.666667a32 32 0 1 0 0 64h682.666667zM778.666667 810.666667a32 32 0 0 0 32-32v-339.285334a309.333333 309.333333 0 0 0-618.666667 0V778.666667a32 32 0 0 0 64 0v-339.285334a245.333333 245.333333 0 0 1 490.666667 0V778.666667a32 32 0 0 0 32 32z" horiz-adv-x="1024" />
<glyph glyph-name="icon_text_italic" unicode="&#59335;" d="M256-42.666667a32 32 0 1 0 0 64h124.970667L576.298667 725.333333H426.666667a32 32 0 0 0 0 64h183.808a31.829333 31.829333 0 0 0 16.170666 0H768A32 32 0 1 0 768 725.333333h-125.312l-195.285333-704H597.333333a32 32 0 1 0 0-64H256z" horiz-adv-x="1024" />
<glyph glyph-name="icon_add_text" unicode="&#59336;" d="M682.666667 746.666667A32 32 0 1 0 682.666667 682.666667H416v-693.333334a32 32 0 1 0-64 0V682.666667H85.333333a32 32 0 0 0 0 64h597.333334z m256-277.333334a32 32 0 1 0 0-64h-138.666667v-416a32 32 0 1 0-64 0V405.333333H597.333333a32 32 0 1 0 0 64h341.333334z" horiz-adv-x="1024" />
<glyph glyph-name="icon_align_text_right" unicode="&#59337;" d="M896 746.666667A32 32 0 1 0 896 682.666667H128a32 32 0 0 0 0 64h768z m0-213.333334a32 32 0 1 0 0-64H298.666667a32 32 0 0 0 0 64h597.333333z m0-213.333333a32 32 0 1 0 0-64H128a32 32 0 1 0 0 64h768z m0-213.333333a32 32 0 1 0 0-64H298.666667a32 32 0 1 0 0 64h597.333333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_align_text_left" unicode="&#59338;" d="M896 736a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64h768z m-170.666667-213.333333a32 32 0 1 0 0-64H128a32 32 0 0 0 0 64h597.333333z m170.666667-213.333334a32 32 0 1 0 0-64H128a32 32 0 1 0 0 64h768z m-170.666667-213.333333a32 32 0 1 0 0-64H128a32 32 0 1 0 0 64h597.333333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_text_bold" unicode="&#59340;" d="M181.333333 810.666667A32 32 0 0 0 213.333333 842.666667h277.333334c135.168 0 244.650667-109.866667 244.650666-245.333334 0-77.098667-35.456-145.92-90.965333-190.890666A245.248 245.248 0 0 0 821.333333 170.666667c0-135.466667-109.525333-245.333333-244.650666-245.333334H213.333333a32 32 0 0 0-32 32V810.666667z m395.349334-458.666667H245.333333v-362.666667h331.349334A180.992 180.992 0 0 1 757.333333 170.666667a180.992 180.992 0 0 1-180.650666 181.333333z m-86.016 426.666667H245.333333v-362.666667h245.333334A180.992 180.992 0 0 1 671.317333 597.333333 180.992 180.992 0 0 1 490.666667 778.666667z" horiz-adv-x="1024" />
<glyph glyph-name="icon_align_text_center" unicode="&#59341;" d="M768 533.333333a32 32 0 1 0 0-64H256a32 32 0 0 0 0 64h512z m128 213.333334A32 32 0 1 0 896 682.666667H128a32 32 0 0 0 0 64h768z m0-426.666667a32 32 0 1 0 0-64H128a32 32 0 1 0 0 64h768z m-128-213.333333a32 32 0 1 0 0-64H256a32 32 0 1 0 0 64h512z" horiz-adv-x="1024" />
<glyph glyph-name="icon_map" unicode="&#59323;" d="M362.666667-32a31.872 31.872 0 0 0-13.013334 2.773333l-0.426666 0.170667-277.333334 128A32 32 0 0 0 53.333333 128V768a32 32 0 0 0 45.397334 29.056l138.581333-64 23.381333-10.709333 102.4-47.317334 285.653334 122.368a31.317333 31.317333 0 0 0 4.693333 1.621334l-4.693333-1.621334a32 32 0 0 0 8.234666 2.304l1.365334 0.170667a32 32 0 0 0 1.536 0.085333l1.365333 0.042667 2.389333-0.085333a32 32 0 0 0 1.194667-0.085334l0.853333-0.128 2.816-0.512 1.194667-0.298666c1.621333-0.426667 3.157333-0.981333 4.608-1.621334l0.426667-0.213333 132.394666-61.056 144.938667-66.944A32 32 0 0 0 970.666667 640v-640a32 32 0 0 0-45.397334-29.056l-138.282666 63.829333-126.122667 58.24-285.610667-122.453333-1.194666-0.469333a31.786667 31.786667 0 0 0-7.04-1.792l-3.114667-0.256a32 32 0 0 0-1.152-0.042667z m266.666666 751.530667l-234.666666-100.608v-570.325334l234.666666 100.565334V719.530667z m64-1.493334V148.48l213.333334-98.517333V619.562667l-119.253334 55.04a32.597333 32.597333 0 0 0-0.853333 0.341333l-93.226667 43.093333z m-576 0V148.48l213.333334-98.432V619.52L210.602667 674.944l-0.512 0.298667L117.333333 718.037333z" horiz-adv-x="1024" />
<glyph glyph-name="a-icon_multiple_selection_of_departments" unicode="&#59324;" d="M149.333333 522.666667v-469.333334c0-5.888 4.778667-10.666667 10.666667-10.666666h554.666667c30.976-3.456 35.84-57.941333 0-64h-554.666667A74.666667 74.666667 0 0 0 85.333333 53.333333v469.333334c15.445333 50.56 61.568 24.533333 64 0zM469.333333 768a32 32 0 1 0 0-64H288a10.666667 10.666667 0 0 1-10.666667-10.666667v-512c0-5.888 4.778667-10.666667 10.666667-10.666666h597.333333a10.666667 10.666667 0 0 1 10.666667 10.666666V320a32 32 0 1 0 64 0v-138.666667a74.666667 74.666667 0 0 0-74.666667-74.666666h-597.333333A74.666667 74.666667 0 0 0 213.333333 181.333333v512C213.333333 734.549333 246.784 768 288 768H469.333333z m288-394.666667a32 32 0 1 0 0-64h-384a32 32 0 1 0 0 64h384z m-21.333333 416a117.333333 117.333333 0 0 0 86.784-196.266666A159.744 159.744 0 0 0 896 458.666667a32 32 0 1 0-64 0 96 96 0 0 1-192 0 32 32 0 1 0-64 0c0 56.362667 29.141333 105.941333 73.173333 134.4a117.333333 117.333333 0 0 0 86.826667 196.266666z m-277.333333-245.333333a32 32 0 1 0 0-64h-85.333334a32 32 0 0 0 0 64h85.333334zM736 725.333333a53.333333 53.333333 0 1 1 0-106.666666 53.333333 53.333333 0 0 1 0 106.666666z" horiz-adv-x="1024" />
<glyph glyph-name="icon_calendar1" unicode="&#59325;" d="M661.333333 842.666667a32 32 0 0 0 32-32v-32H853.333333c41.258667 0 74.666667-33.408 74.666667-74.666667V42.666667A74.666667 74.666667 0 0 0 853.333333-32H128A74.666667 74.666667 0 0 0 53.333333 42.666667V704c0 41.216 33.450667 74.666667 74.666667 74.666667h160V810.666667a32 32 0 0 0 64 0v-32h277.333333V810.666667a32 32 0 0 0 32 32z m202.666667-384H117.333333V42.666667a10.666667 10.666667 0 0 1 8.234667-10.368L128 32h725.333333a10.666667 10.666667 0 0 1 10.666667 10.666667v416z m-160-256a32 32 0 1 0 0-64h-128a32 32 0 1 0 0 64h128z m-298.666667 0a32 32 0 1 0 0-64h-128a32 32 0 1 0 0 64h128z m298.666667 170.666666a32 32 0 1 0 0-64h-128a32 32 0 1 0 0 64h128z m-298.666667 0a32 32 0 1 0 0-64h-128a32 32 0 1 0 0 64h128z m-117.333333 341.333334H128a10.666667 10.666667 0 0 1-10.666667-10.666667v-181.333333h746.666667V704a10.666667 10.666667 0 0 1-8.234667 10.368L853.333333 714.666667h-160V640a32 32 0 1 0-64 0V714.666667h-277.333333V640a32 32 0 0 0-64 0V714.666667z" horiz-adv-x="1024" />
<glyph glyph-name="icon_link1" unicode="&#59326;" d="M629.248 710.485333a160 160 0 0 0 226.261333-226.304l-377.130666-377.130666a224 224 0 0 0-316.757334 316.8l316.757334 316.8a32 32 0 0 0 45.269333-45.226667l-316.8-316.842667a160 160 0 1 1 226.304-226.261333L810.24 529.493333a96 96 0 0 1-135.765333 135.765334L297.386667 288.085333a32 32 0 1 1 45.226666-45.226666l316.8 316.757333a32 32 0 0 0 45.226667-45.226667L387.925333 197.546667a96 96 0 1 0-135.765333 135.765333l377.130667 377.130667z" horiz-adv-x="1024" />
<glyph glyph-name="a-icon_collectbeifen12" unicode="&#59327;" d="M832 800a96 96 0 0 0 96-96v-640a96 96 0 0 0-96-96h-640a96 96 0 0 0-96 96v640A96 96 0 0 0 192 800h640z m0-64h-640a32 32 0 0 1-32-32v-640c0-17.664 14.336-32 32-32h640a32 32 0 0 1 32 32v640a32 32 0 0 1-32 32zM682.666667 586.666667a32 32 0 0 0 32-32v-341.333334a32 32 0 0 0-32-32H341.333333a32 32 0 0 0-32 32V554.666667A32 32 0 0 0 341.333333 586.666667h341.333334z m-32-64h-277.333334v-277.333334h277.333334v277.333334z" horiz-adv-x="1024" />
<glyph glyph-name="icon_department_single_choice" unicode="&#59328;" d="M437.333333 757.333333a32 32 0 1 0 0-64H128a10.666667 10.666667 0 0 1-10.666667-10.666666v-597.333334c0-5.888 4.778667-10.666667 10.666667-10.666666h768a10.666667 10.666667 0 0 1 10.666667 10.666666v138.666667a32 32 0 1 0 64 0V85.333333A74.666667 74.666667 0 0 0 896 10.666667H128A74.666667 74.666667 0 0 0 53.333333 85.333333V682.666667c0 41.216 33.450667 74.666667 74.666667 74.666666h309.333333zM640 320a32 32 0 1 0 0-64H170.666667a32 32 0 1 0 0 64h469.333333z m106.666667 416a117.333333 117.333333 0 0 0 86.784-196.266667 159.744 159.744 0 0 0 73.216-134.4 32 32 0 1 0-64 0 96 96 0 0 1-192 0 32 32 0 1 0-64 0c0 56.362667 29.141333 105.941333 73.173333 134.4a117.333333 117.333333 0 0 0 86.826667 196.266667zM426.666667 490.666667a32 32 0 1 0 0-64H170.666667a32 32 0 1 0 0 64h256z m320 181.333333a53.333333 53.333333 0 1 1 0-106.666667 53.333333 53.333333 0 0 1 0 106.666667z" horiz-adv-x="1024" />
<glyph glyph-name="icon_find" unicode="&#59329;" d="M938.666667 746.666667A32 32 0 1 0 938.666667 682.666667H85.333333a32 32 0 0 0 0 64h853.333334z m-618.666667-341.333334a32 32 0 1 0 0-64H85.333333a32 32 0 1 0 0 64h234.666667z m0-341.333333a32 32 0 1 0 0-64H85.333333a32 32 0 1 0 0 64h234.666667z m352 469.333333a213.333333 213.333333 0 0 0 162.261333-351.829333l127.146667-128a32 32 0 1 0-45.44-45.141333l-130.218667 131.114666A213.333333 213.333333 0 1 0 672 533.333333z m0-64a149.333333 149.333333 0 1 1 0-298.666666 149.333333 149.333333 0 0 1 0 298.666666z" horiz-adv-x="1024" />
<glyph glyph-name="icon_handwritten_signature" unicode="&#59330;" d="M896 32a32 32 0 1 0 0-64H128a32 32 0 1 0 0 64h768zM632.192 790.613333a32 32 0 0 0 45.269333 0l155.818667-155.904a32 32 0 0 0 0-45.226666L392.106667 148.053333a32 32 0 0 0-22.613334-9.386666H213.333333a32 32 0 0 0-32 32v155.306666a32 32 0 0 0 9.386667 22.613334L632.149333 790.613333z m22.656-67.882666L245.333333 312.789333v-110.122666h110.805334l409.258666 409.472-110.549333 110.592z" horiz-adv-x="1024" />
<glyph glyph-name="icon_button" unicode="&#59331;" d="M896 586.666667c41.258667 0 74.666667-33.408 74.666667-74.666667v-298.666667A74.666667 74.666667 0 0 0 896 138.666667H128A74.666667 74.666667 0 0 0 53.333333 213.333333V512c0 41.258667 33.408 74.666667 74.666667 74.666667h768z m0-64H128a10.666667 10.666667 0 0 1-10.666667-10.666667v-298.666667c0-5.888 4.778667-10.666667 10.666667-10.666666h768a10.666667 10.666667 0 0 1 10.666667 10.666666V512a10.666667 10.666667 0 0 1-10.666667 10.666667z m-234.666667-128a32 32 0 1 0 0-64H384a32 32 0 1 0 0 64h277.333333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_select_data" unicode="&#59307;" d="M405.333333 757.333333c189.994667 0 344.96-50.261333 351.786667-132.992l0.213333-5.674666v-162.090667a245.376 245.376 0 1 0-140.629333-463.274667l8.618667 2.517334-10.325334-2.986667c-59.306667-16-132.565333-24.832-209.664-24.832-194.304 0-352 52.565333-352 138.666667v512c0 86.101333 157.696 138.666667 352 138.666666z m320-362.666666a180.778667 180.778667 0 0 1-134.954666-60.202667 180.48 180.48 0 0 1-43.776-151.978667A181.546667 181.546667 0 0 1 725.333333 32a181.333333 181.333333 0 0 1 0 362.666667z m118.613334-116.053334a32 32 0 0 0 0-45.226666l-117.333334-117.333334a32 32 0 0 0-45.226666 0l-64 64a32 32 0 0 0 45.226666 45.226667l41.386667-41.344 94.72 94.72a32 32 0 0 0 45.226667 0zM117.333333 364.117333V277.333333c0-31.701333 128.853333-74.666667 288-74.666666 25.6 0 50.688 1.024 74.965334 3.029333A79.957333 79.957333 0 0 0 480 213.333333c0 35.413333 7.552 69.632 21.632 100.821334-30.848-3.2-63.232-4.821333-96.298667-4.821334-119.04 0-224.298667 19.712-288 54.784zM405.333333 480c-119.04 0-224.298667 19.712-288 54.784V448c0-31.701333 128.853333-74.666667 288-74.666667 44.202667 0 86.997333 3.114667 126.08 8.96l19.072 3.114667a244.693333 244.693333 0 0 0 140.032 70.826667l2.816 0.341333 0.085334 78.250667C629.674667 499.712 524.373333 480 405.333333 480z m0 213.333333c-159.146667 0-288-42.965333-288-74.666666 0-31.701333 128.853333-74.666667 288-74.666667s288 42.965333 288 74.666667c0 31.701333-128.853333 74.666667-288 74.666666z m132.48-638.165333l-0.213333 0.256-0.085333 0.085333-2.986667 3.626667a246.570667 246.570667 0 0 0-12.245333 16.469333l-2.261334 3.413334a245.930667 245.930667 0 0 0-27.093333 55.594666l-0.682667 2.048a243.925333 243.925333 0 0 0-0.981333 2.986667l-0.810667 2.688c-27.52-2.432-56.064-3.669333-85.12-3.669333-119.04 0-224.298667 19.712-288 54.784V106.666667c0-31.701333 128.853333-74.666667 288-74.666667 45.226667 0 88.874667 3.242667 128.341334 9.258667l14.506666 2.432-3.114666 3.2-7.253334 8.277333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_single_line_text" unicode="&#59308;" d="M832 800a96 96 0 0 0 96-96v-640a96 96 0 0 0-96-96h-640a96 96 0 0 0-96 96v640A96 96 0 0 0 192 800h640z m0-64h-640a32 32 0 0 1-32-32v-640c0-17.664 14.336-32 32-32h640a32 32 0 0 1 32 32v640a32 32 0 0 1-32 32z m-362.666667-597.333333a32 32 0 1 0 0 64h10.666667V512c0 3.754667 0.64 7.338667 1.834667 10.666667H373.333333v-32a32 32 0 0 0-27.648-31.701334L341.333333 458.666667a32 32 0 0 0-32 32V554.666667A32 32 0 0 0 341.333333 586.666667h341.333334a32 32 0 0 0 32-32v-64a32 32 0 1 0-64 0v32h-108.501334a31.957333 31.957333 0 0 0 1.834667-10.666667v-309.333333H554.666667a32 32 0 1 0 0-64h-85.333334z" horiz-adv-x="1024" />
<glyph glyph-name="icon_multiple_choice_of_members" unicode="&#59309;" d="M405.333333 800a181.333333 181.333333 0 1 0 0-362.666667 181.333333 181.333333 0 0 0 0 362.666667z m0-64a117.333333 117.333333 0 1 1 0-234.666667 117.333333 117.333333 0 0 1 0 234.666667z m262.869334 27.178667a32 32 0 0 0 43.946666 10.88A181.205333 181.205333 0 0 0 800 618.666667a181.205333 181.205333 0 0 0-87.893333-155.392 32 32 0 0 0-33.024 54.784A117.248 117.248 0 0 1 736 618.666667c0 41.642667-21.845333 79.488-56.874667 100.608a32 32 0 0 0-10.922666 43.946666zM452.266667 330.666667c125.909333 0 155.861333-2.432 194.389333-22.101334a202.666667 202.666667 0 0 0 88.576-88.576c19.626667-38.528 22.101333-68.48 22.101333-194.389333v-25.6a32 32 0 0 0-32-32H85.333333a32 32 0 0 0-32 32v25.6c0 125.909333 2.432 155.861333 22.101334 194.389333a202.666667 202.666667 0 0 0 88.576 88.576c38.528 19.626667 68.48 22.101333 194.389333 22.101334h93.866667z m22.954666-64H335.445333c-93.952-0.384-118.869333-3.114667-142.378666-15.104a138.666667 138.666667 0 0 1-60.586667-60.586667c-12.032-23.552-14.762667-48.469333-15.104-142.421333l-0.042667-16.554667h575.957334v5.376c-0.128 99.370667-2.432 127.146667-13.738667 150.869333l-1.322667 2.688a138.666667 138.666667 0 0 1-60.586666 60.586667c-23.552 12.032-48.469333 14.762667-142.421334 15.104z m341.76 27.904a32 32 0 0 0 43.008 13.994666 202.666667 202.666667 0 0 0 88.576-88.576c19.626667-38.528 22.101333-68.48 22.101334-194.389333v-25.6a32 32 0 1 0-64 0v25.6c0 113.066667-2.218667 140.032-15.104 165.333333a138.666667 138.666667 0 0 1-60.586667 60.586667 32 32 0 0 0-13.994667 43.093333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_subform" unicode="&#59310;" d="M810.666667 842.666667c41.216 0 74.666667-33.450667 74.666666-74.666667v-768A74.666667 74.666667 0 0 0 810.666667-74.666667H213.333333A74.666667 74.666667 0 0 0 138.666667 0V768c0 41.216 33.450667 74.666667 74.666666 74.666667h597.333334z m0-64H213.333333a10.666667 10.666667 0 0 1-10.666666-10.666667v-768c0-5.888 4.778667-10.666667 10.666666-10.666667h597.333334a10.666667 10.666667 0 0 1 10.666666 10.666667V768a10.666667 10.666667 0 0 1-10.666666 10.666667z m-106.666667-576a32 32 0 1 0 0-64h-256a32 32 0 1 0 0 64h256z m0 213.333333a32 32 0 1 0 0-64h-256a32 32 0 1 0 0 64h256z m0 213.333333a32 32 0 1 0 0-64h-256a32 32 0 1 0 0 64h256zM320 554.666667a42.666667 42.666667 0 1 1 0 85.333333 42.666667 42.666667 0 0 1 0-85.333333zM320 341.333333a42.666667 42.666667 0 1 1 0 85.333334 42.666667 42.666667 0 0 1 0-85.333334zM320 128a42.666667 42.666667 0 1 1 0 85.333333 42.666667 42.666667 0 0 1 0-85.333333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_picture" unicode="&#59311;" d="M821.333333 810.666667a96 96 0 0 0 96-96v-640a96 96 0 0 0-96-96h-640A96 96 0 0 0 85.333333 74.666667v640A96 96 0 0 0 181.333333 810.666667h640zM367.061333 494.848L149.333333 295.338667v-220.672c0-17.664 14.336-32 32-32h640a32 32 0 0 1 32 32v304L725.077333 474.88a10.666667 10.666667 0 0 1-13.952-1.024L615.68 378.453333l77.141333-66.133333a32 32 0 0 0-41.642666-48.64L381.226667 495.146667a10.666667 10.666667 0 0 1-14.165334-0.256zM853.333333 714.666667a32 32 0 0 1-32 32h-640a32 32 0 0 1-32-32v-332.586667l174.506667 159.957333a74.666667 74.666667 0 0 0 99.029333 1.664l144.042667-123.477333 98.986667 98.901333a74.666667 74.666667 0 0 0 97.578666 6.954667L853.333333 458.666667V714.666667z" horiz-adv-x="1024" />
<glyph glyph-name="icon_phone" unicode="&#59312;" d="M810.666667 842.666667c41.258667 0 74.666667-33.408 74.666666-74.666667v-768A74.666667 74.666667 0 0 0 810.666667-74.666667H213.333333A74.666667 74.666667 0 0 0 138.666667 0V768c0 41.216 33.450667 74.666667 74.666666 74.666667h597.333334z m10.666666-618.666667H202.666667V0a10.666667 10.666667 0 0 1 8.234666-10.368L213.333333-10.666667h597.333334a10.666667 10.666667 0 0 1 10.666666 10.666667v224z m-266.666666-85.333333a32 32 0 1 0 0-64h-85.333334a32 32 0 1 0 0 64h85.333334z m256 640H213.333333a10.666667 10.666667 0 0 1-10.666666-10.666667v-480h618.666666V768a10.666667 10.666667 0 0 1-10.666666 10.666667z" horiz-adv-x="1024" />
<glyph glyph-name="icon_local" unicode="&#59313;" d="M822.912 227.84c92.074667-27.648 147.754667-67.114667 147.754667-121.173333 0-98.688-204.330667-160-458.666667-160S53.333333 7.978667 53.333333 106.666667c0 54.058667 55.68 93.525333 147.754667 121.173333a32 32 0 1 0 18.389333-61.312c-66.858667-20.053333-102.144-45.098667-102.144-59.861333 0-14.762667 35.285333-39.808 102.144-59.861334 76.330667-22.869333 180.778667-36.138667 292.522667-36.138666 111.786667 0 216.192 13.226667 292.522667 36.138666 66.858667 20.053333 102.144 45.098667 102.144 59.861334 0 14.762667-35.285333 39.808-102.144 59.861333a32 32 0 1 0 18.346666 61.312zM512 842.666667c170.666667 0 309.333333-135.253333 309.333333-302.506667 0-101.802667-55.808-201.514667-147.712-296.277333a959.402667 959.402667 0 0 0-144.128-121.344 32 32 0 0 0-34.986666 0 882.133333 882.133333 0 0 0-45.482667 33.152 959.402667 959.402667 0 0 0-98.645333 88.192C258.474667 338.645333 202.666667 438.357333 202.666667 540.117333 202.666667 707.413333 341.333333 842.666667 512 842.666667z m0-64c-135.68 0-245.333333-106.965333-245.333333-238.506667 0-81.621333 48.213333-167.765333 129.621333-251.733333a896.170667 896.170667 0 0 1 115.285333-99.754667l0.426667-0.298667 0.426667 0.298667c4.821333 3.498667 9.898667 7.253333 15.146666 11.264l8.106667 6.229333a896.170667 896.170667 0 0 1 92.032 82.261334c81.408 83.968 129.621333 170.112 129.621333 251.733333 0 131.541333-109.653333 238.506667-245.333333 238.506667z m0-106.666667a138.666667 138.666667 0 1 0 0-277.333333 138.666667 138.666667 0 0 0 0 277.333333z m0-64a74.666667 74.666667 0 1 1 0-149.333333 74.666667 74.666667 0 0 1 0 149.333333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_dividing_line" unicode="&#59314;" d="M938.666667 405.333333a32 32 0 1 0 0-64H128a32 32 0 1 0 0 64h810.666667z m-341.333334-298.666666a32 32 0 1 0 0-64h-128a32 32 0 1 0 0 64h128z m341.333334 0a32 32 0 1 0 0-64h-128a32 32 0 1 0 0 64h128z m-341.333334 597.333333A32 32 0 1 0 597.333333 640h-128a32 32 0 1 0 0 64h128z m-341.333333-597.333333A32 32 0 1 0 256 42.666667H128a32 32 0 1 0 0 64h128z m0 597.333333A32 32 0 0 0 256 640H128a32 32 0 0 0 0 64h128z m682.666667 0A32 32 0 1 0 938.666667 640h-128a32 32 0 1 0 0 64h128z" horiz-adv-x="1024" />
<glyph glyph-name="icon_multiline" unicode="&#59315;" d="M832 800a96 96 0 0 0 96-96v-640a96 96 0 0 0-96-96h-640a96 96 0 0 0-96 96v640A96 96 0 0 0 192 800h640z m0-64h-640a32 32 0 0 1-32-32v-640c0-17.664 14.336-32 32-32h640a32 32 0 0 1 32 32v640a32 32 0 0 1-32 32zM373.333333 106.666667a32 32 0 1 0 0 64H384V480c0 3.754667 0.64 7.338667 1.834667 10.666667H277.333333v-32a32 32 0 0 0-27.648-31.701334L245.333333 426.666667a32 32 0 0 0-32 32v64A32 32 0 0 0 245.333333 554.666667h341.333334a32 32 0 0 0 32-32v-64a32 32 0 1 0-64 0V490.666667h-108.501334a31.957333 31.957333 0 0 0 1.834667-10.666667V170.666667h10.666667a32 32 0 1 0 0-64h-85.333334zM426.666667 672a32 32 0 1 0 0-64H256a32 32 0 0 0 0 64h170.666667z" horiz-adv-x="1024" />
<glyph glyph-name="icon_member_single_choice" unicode="&#59316;" d="M512 800a181.333333 181.333333 0 1 0 0-362.666667 181.333333 181.333333 0 0 0 0 362.666667z m0-64a117.333333 117.333333 0 1 1 0-234.666667 117.333333 117.333333 0 0 1 0 234.666667z m110.933333-405.333333c125.909333 0 155.861333-2.432 194.389334-22.101334a202.666667 202.666667 0 0 0 88.576-88.576c19.626667-38.528 22.101333-68.48 22.101333-194.389333v-25.6a32 32 0 0 0-32-32H128a32 32 0 0 0-32 32v25.6c0 125.909333 2.432 155.861333 22.101333 194.389333a202.666667 202.666667 0 0 0 88.576 88.576c38.528 19.626667 68.48 22.101333 194.389334 22.101334h221.866666z m22.954667-64H378.112c-93.952-0.384-118.869333-3.114667-142.378667-15.104a138.666667 138.666667 0 0 1-60.586666-60.586667c-12.032-23.552-14.762667-48.469333-15.104-142.421333l-0.042667-16.554667h703.957333v5.376c-0.128 99.370667-2.432 127.146667-13.738666 150.869333l-1.322667 2.688a138.666667 138.666667 0 0 1-60.586667 60.586667c-23.552 12.032-48.469333 14.762667-142.421333 15.104z" horiz-adv-x="1024" />
<glyph glyph-name="icon_radio" unicode="&#59317;" d="M512 842.666667c253.312 0 458.666667-205.354667 458.666667-458.666667S765.312-74.666667 512-74.666667 53.333333 130.688 53.333333 384 258.688 842.666667 512 842.666667z m0-64a394.666667 394.666667 0 1 1 0-789.333334 394.666667 394.666667 0 0 1 0 789.333334z m0-192a202.666667 202.666667 0 1 0 0-405.333334 202.666667 202.666667 0 0 0 0 405.333334z m0-64a138.666667 138.666667 0 1 1 0-277.333334 138.666667 138.666667 0 0 1 0 277.333334z" horiz-adv-x="1024" />
<glyph glyph-name="icon_serial_number" unicode="&#59318;" d="M693.333333 544c41.216 0 74.666667-33.450667 74.666667-74.666667v-384a74.666667 74.666667 0 0 0-74.666667-74.666666h-554.666666A74.666667 74.666667 0 0 0 64 85.333333v384c0 41.216 33.450667 74.666667 74.666667 74.666667h554.666666z m10.666667-256H128V85.333333c0-5.888 4.778667-10.666667 10.666667-10.666666h554.666666a10.666667 10.666667 0 0 1 10.666667 10.666666v202.666667z m-288-64a32 32 0 1 0 0-64h-170.666667a32 32 0 1 0 0 64h170.666667z m170.666667 0a32 32 0 1 0 0-64h-42.666667a32 32 0 1 0 0 64h42.666667z m320 576c41.258667 0 74.666667-33.408 74.666666-74.666667v-384a74.666667 74.666667 0 0 0-74.666666-74.666666h-42.666667a32 32 0 1 0 0 64h42.666667a10.666667 10.666667 0 0 1 10.666666 10.666666V725.333333a10.666667 10.666667 0 0 1-10.666666 10.666667h-554.666667A10.666667 10.666667 0 0 1 341.333333 725.333333v-85.333333a32 32 0 0 0-64 0V725.333333c0 41.258667 33.408 74.666667 74.666667 74.666667h554.666667z m-213.333334-320h-554.666666A10.666667 10.666667 0 0 1 128 469.333333v-117.333333h576V469.333333a10.666667 10.666667 0 0 1-10.666667 10.666667z" horiz-adv-x="1024" />
<glyph glyph-name="icon_text_recognition" unicode="&#59319;" d="M128 224a32 32 0 0 0 32-32v-128c0-17.664 14.336-32 32-32h128a32 32 0 1 0 0-64h-128a96 96 0 0 0-96 96v128a32 32 0 0 0 32 32z m768 0a32 32 0 0 0 32-32v-128a96 96 0 0 0-96-96h-128a32 32 0 1 0 0 64h128a32 32 0 0 1 32 32v128a32 32 0 0 0 32 32z m-234.666667 384a32 32 0 1 0 0-64h-117.333333v-394.666667a32 32 0 1 0-64 0V544H362.666667a32 32 0 0 0 0 64h298.666666z m170.666667 192a96 96 0 0 0 96-96v-128a32 32 0 1 0-64 0v128a32 32 0 0 1-32 32h-128a32 32 0 1 0 0 64h128z m-512 0a32 32 0 0 0 0-64h-128a32 32 0 0 1-32-32v-128a32 32 0 0 0-64 0v128A96 96 0 0 0 192 800h128z" horiz-adv-x="1024" />
<glyph glyph-name="icon_pull_down_single_choice" unicode="&#59320;" d="M213.333333 202.666667a117.333333 117.333333 0 1 0 0-234.666667 117.333333 117.333333 0 0 0 0 234.666667z m0-64a53.333333 53.333333 0 1 1 0-106.666667 53.333333 53.333333 0 0 1 0 106.666667z m0 661.333333a117.333333 117.333333 0 1 0 0-234.666667 117.333333 117.333333 0 0 0 0 234.666667z m0-64a53.333333 53.333333 0 1 1 0-106.666667 53.333333 53.333333 0 0 1 0 106.666667z m0-234.666667a117.333333 117.333333 0 1 0 0-234.666666 117.333333 117.333333 0 0 0 0 234.666666z m0-64a53.333333 53.333333 0 1 1 0-106.666666 53.333333 53.333333 0 0 1 0 106.666666z m725.333334-21.333333a32 32 0 1 0 0-64H469.333333a32 32 0 1 0 0 64h469.333334z m0-298.666667a32 32 0 1 0 0-64H469.333333a32 32 0 1 0 0 64h469.333334z m0 597.333334a32 32 0 1 0 0-64H469.333333a32 32 0 1 0 0 64h469.333334z" horiz-adv-x="1024" />
<glyph glyph-name="icon_hashtag_key" unicode="&#59321;" d="M832 800a96 96 0 0 0 96-96v-640a96 96 0 0 0-96-96h-640a96 96 0 0 0-96 96v640A96 96 0 0 0 192 800h640z m0-64h-640a32 32 0 0 1-32-32v-640c0-17.664 14.336-32 32-32h640a32 32 0 0 1 32 32v640a32 32 0 0 1-32 32z m-213.333333-149.333333a32 32 0 0 0 32-32v-32H682.666667a32 32 0 1 0 0-64h-32v-149.333334H682.666667a32 32 0 1 0 0-64h-32V213.333333a32 32 0 1 0-64 0v32h-149.333334V213.333333a32 32 0 1 0-64 0v32H341.333333a32 32 0 1 0 0 64h32v149.333334H341.333333a32 32 0 0 0 0 64h32V554.666667a32 32 0 0 0 64 0v-32h149.333334V554.666667a32 32 0 0 0 32 32z m-32-128h-149.333334v-149.333334h149.333334v149.333334z" horiz-adv-x="1024" />
<glyph glyph-name="icon_pull_down_multiple_selection" unicode="&#59322;" d="M938.666667 416a32 32 0 1 0 0-64H426.666667a32 32 0 1 0 0 64h512z m0-298.666667a32 32 0 1 0 0-64H426.666667a32 32 0 1 0 0 64h512z m0 597.333334a32 32 0 1 0 0-64H426.666667a32 32 0 0 0 0 64h512z m-682.666667-512a32 32 0 0 0 32-32v-170.666667a32 32 0 0 0-32-32H85.333333a32 32 0 0 0-32 32v170.666667a32 32 0 0 0 32 32h170.666667z m-32-64h-106.666667v-106.666667h106.666667v106.666667zM256 501.333333a32 32 0 0 0 32-32v-170.666666a32 32 0 0 0-32-32H85.333333a32 32 0 0 0-32 32v170.666666A32 32 0 0 0 85.333333 501.333333h170.666667z m-32-64h-106.666667v-106.666666h106.666667v106.666666zM256 800a32 32 0 0 0 32-32v-170.666667a32 32 0 0 0-32-32H85.333333A32 32 0 0 0 53.333333 597.333333V768A32 32 0 0 0 85.333333 800h170.666667z m-32-64h-106.666667v-106.666667h106.666667v106.666667z" horiz-adv-x="1024" />
<glyph glyph-name="order-descending" unicode="&#59296;" d="M608 736H128v-64h480v64zM768 736v-626.752l137.344 137.408 45.248-45.312-188.672-188.672a33.92 33.92 0 0 0-57.92 23.936V736h64zM128 416h480v-64H128v64zM608 96H128v-64h480v64z" horiz-adv-x="1024" />
<glyph glyph-name="icon_video" unicode="&#59297;" d="M707.2 400.64a19.2 19.2 0 0 0 0-33.28l-326.4-188.416a19.2 19.2 0 0 0-28.8 16.64V572.48a19.2 19.2 0 0 0 28.8 16.64l326.4-188.48zM416 494.848v-221.696L608 384l-192 110.848zM128 704a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64v-640a64 64 0 0 0-64-64H192a64 64 0 0 0-64 64V704z m64 0v-640h640V704H192z" horiz-adv-x="1024" />
<glyph glyph-name="icon_zoom_in" unicode="&#59298;" d="M384 448v-128h64V448h128V512H448V640H384v-128H256v-64h128zM608.704 242.048a304.896 304.896 0 1 0 45.248 45.248l225.984-225.984-45.248-45.248-225.984 225.92z m49.152 237.056a240.896 240.896 0 1 1-481.856 0 240.896 240.896 0 0 1 481.792 0z" horiz-adv-x="1024" />
<glyph glyph-name="order-ascending" unicode="&#59299;" d="M768 32V658.752l137.344-137.408 45.248 45.312-188.672 188.672a33.92 33.92 0 0 1-57.92-23.936V32h64zM608 32H128v64h480v-64zM128 352h480v64H128v-64zM608 672H128v64h480v-64z" horiz-adv-x="1024" />
<glyph glyph-name="icon_zoom_out" unicode="&#59300;" d="M576 448H256V512h320v-64zM608.704 242.048a304.896 304.896 0 1 0 45.248 45.248l225.984-225.984-45.248-45.248-225.984 225.92z m49.152 237.056a240.896 240.896 0 1 1-481.856 0 240.896 240.896 0 0 1 481.792 0z" horiz-adv-x="1024" />
<glyph glyph-name="icon_usergroup" unicode="&#59301;" d="M384 832c33.664 0 65.408-8 93.568-22.144l-40.32-52.032a144 144 0 1 1-56.192-277.76v-64A208 208 0 0 0 384 832zM34.56 292.096A821.056 821.056 0 0 0 381.12 369.92v-64c-113.28-0.448-220.352-25.792-317.056-70.656V128h118.848v-64H32a32 32 0 0 0-32 32v140.224c0 23.808 13.12 45.824 34.56 55.872zM640 363.904a208 208 0 1 0 0 416 208 208 0 0 0 0-416z m0 64a144 144 0 1 1 0 288 144 144 0 0 1 0-288zM1024 158.848a61.184 61.184 0 0 1-34.624 55.872A821.12 821.12 0 0 1 640 292.48a821.12 821.12 0 0 1-349.44-77.76 61.184 61.184 0 0 1-34.56-55.872V0a32 32 0 0 1 32-32h704a32 32 0 0 1 32 32v158.848z m-64-1.024V32H320v125.824a757.12 757.12 0 0 0 320 70.656c114.368 0 222.464-25.408 320-70.656z" horiz-adv-x="1024" />
<glyph glyph-name="icon_wifi" unicode="&#59302;" d="M649.856 210.944l44.672 45.824c-52.8 53.696-117.056 83.2-183.488 83.2-65.664 0-129.152-28.8-181.568-81.28l44.672-45.824c42.432 42.88 90.88 63.04 136.896 63.04 46.72 0 95.872-20.8 138.816-64.96zM779.392 343.872l44.736 45.824c-87.936 90.56-198.4 140.672-313.024 140.672-113.856 0-223.616-49.408-311.232-138.752l44.736-45.824c77.248 79.36 171.648 120.576 266.496 120.576 95.552 0 190.72-41.92 268.288-122.496zM904.512 472.128l44.736 45.888C827.52 643.84 672.192 713.6 511.104 713.6c-160.384 0-314.88-69.12-436.288-193.792l44.672-45.824C230.336 588.416 369.28 649.664 511.104 649.664c142.464 0 282.24-61.888 393.408-177.536zM576 96a64 64 0 1 0-128 0 64 64 0 0 0 128 0z" horiz-adv-x="1024" />
<glyph glyph-name="icon_view_module" unicode="&#59303;" d="M256 416h448v-64H256v64zM640 256H256v-64h384v64zM128 704a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64v-640a64 64 0 0 0-64-64H192a64 64 0 0 0-64 64V704z m64 0v-128h640V704H192z m0-192v-448h640V512H192z" horiz-adv-x="1024" />
<glyph glyph-name="view-column" unicode="&#59304;" d="M224 768v-768h64V768h-64z m256-768V768h64v-768h-64z m256 0V768h64v-768h-64z" horiz-adv-x="1024" />
<glyph glyph-name="view-list" unicode="&#59305;" d="M896 608H128v64h768v-64zM896 352H128v64h768v-64zM128 96h768v64H128v-64z" horiz-adv-x="1024" />
<glyph glyph-name="icon_wallet" unicode="&#59306;" d="M736 608h128a64 64 0 0 0 64-64V128a64 64 0 0 0-64-64h-704a64 64 0 0 0-64 64V704a64 64 0 0 0 64 64h512a64 64 0 0 0 64-64v-96z m-64 96h-512v-96h512V704z m192-160h-704V128h704V544z" horiz-adv-x="1024" />
<glyph glyph-name="icon_usb" unicode="&#59276;" d="M480 512h-128V576h128v-64zM544 512h128V576h-128v-64zM256 384V736a32 32 0 0 0 32 32h448a32 32 0 0 0 32-32V384a64 64 0 0 0 64-64v-320a64 64 0 0 0-64-64H256a64 64 0 0 0-64 64V320a64 64 0 0 0 64 64z m64 0h384V704H320v-320zM256 320v-320h512V320H256z" horiz-adv-x="1024" />
<glyph glyph-name="icon_user_add" unicode="&#59277;" d="M512 352a224 224 0 1 1 0 448 224 224 0 0 1 0-448z m0 64a160 160 0 1 0 0 320 160 160 0 0 0 0-320zM736 192.896A817.536 817.536 0 0 1 512 224c-125.888 0-244.864-28.544-352-79.36v-112.64h448v-64H128a32 32 0 0 0-32 32v145.6a61.44 61.44 0 0 0 34.368 55.808A882.24 882.24 0 0 0 512 288c77.44 0 152.384-10.048 224-28.8v-66.304zM816 16V-128h64v144H1024v64h-144V224h-64v-144H672v-64h144z" horiz-adv-x="1024" />
<glyph glyph-name="icon_swap_right" unicode="&#59278;" d="M818.752 320H64v-64h827.392a33.92 33.92 0 0 1 24 57.92l-252.8 252.736-45.184-45.312L818.752 320z" horiz-adv-x="1024" />
<glyph glyph-name="icon_user_avatar" unicode="&#59279;" d="M512 224c79.424 0 155.008-20.032 224-56.32v-71.68h64v73.088a60.224 60.224 0 0 1-31.104 53.632A542.72 542.72 0 0 1 512 288a542.72 542.72 0 0 1-256.896-65.28 60.224 60.224 0 0 1-31.104-53.632V96h64v71.68A478.272 478.272 0 0 0 512 224zM672 512a160 160 0 1 0-320 0 160 160 0 0 0 320 0z m-64 0a96 96 0 1 1-192 0 96 96 0 0 1 192 0zM160 800a64 64 0 0 1-64-64v-704a64 64 0 0 1 64-64h704a64 64 0 0 1 64 64v704a64 64 0 0 1-64 64h-704z m704-64v-704h-704v704h704z" horiz-adv-x="1024" />
<glyph glyph-name="icon_thumb_up" unicode="&#59280;" d="M640 512h206.08a64 64 0 0 0 62.08-79.552l-96-384a64 64 0 0 0-62.08-48.448H192a64 64 0 0 0-64 64V384a64 64 0 0 0 64 64h128l128 320h128a64 64 0 0 0 64-64v-192zM384 435.648V64h366.08l96 384H576V704H491.328L384 435.648zM320 384H192v-320h128V384z" horiz-adv-x="1024" />
<glyph glyph-name="icon_time_filled" unicode="&#59281;" d="M512-64A448 448 0 1 1 512 832a448 448 0 0 1 0-896zM480 576h64v-190.4l182.656-182.656-45.248-45.248L480 359.104V576z" horiz-adv-x="1024" />
<glyph glyph-name="icon_tools" unicode="&#59282;" d="M624 368l35.968-9.856c63.936-17.664 133.632-1.6 182.144 46.912a185.856 185.856 0 0 1 51.648 160.32L826.24 497.728a96 96 0 0 0-135.744 0l-27.2 27.2a96 96 0 0 0 0 135.744l67.648 67.584a185.856 185.856 0 0 1-160.32-51.648 186.368 186.368 0 0 1-46.912-182.144l9.856-35.904-371.456-371.456 90.496-90.56 371.52 371.52z m159.616 413.056c21.12-7.168 41.536-17.088 60.672-29.888L708.48 615.424a32 32 0 0 1 0-45.248l27.2-27.2a32 32 0 0 1 45.248 0l135.744 135.808c12.8-19.136 22.72-39.552 29.824-60.672 29.824-88.32 10.24-188.928-59.136-258.304a250.368 250.368 0 0 0-244.416-63.36l-345.152-345.152a64 64 0 0 0-90.496 0l-90.496 90.496a64 64 0 0 0 0 90.56L461.952 477.44a250.368 250.368 0 0 0 63.36 244.48c69.376 69.312 169.984 88.96 258.304 59.136z" horiz-adv-x="1024" />
<glyph glyph-name="icon_user_clear" unicode="&#59283;" d="M512 352a224 224 0 1 1 0 448 224 224 0 0 1 0-448z m0 64a160 160 0 1 0 0 320 160 160 0 0 0 0-320zM672 208.32A819.584 819.584 0 0 1 512 224c-125.888 0-244.864-28.544-352-79.36v-112.64h512v-64H128a32 32 0 0 0-32 32v145.6a61.44 61.44 0 0 0 34.368 55.808A882.24 882.24 0 0 0 512 288c54.656 0 108.16-4.992 160-14.528v-65.152zM729.856-18.752l101.76 101.824-101.76 101.824 45.248 45.248 101.76-101.76 101.888 101.76 45.248-45.248-101.824-101.824 101.76-101.76-45.184-45.312-101.824 101.76L775.04-64l-45.248 45.248z" horiz-adv-x="1024" />
<glyph glyph-name="icon_time" unicode="&#59284;" d="M480 640v-280.896L640 192l45.248 45.248L544 385.6V640h-64zM960 384A448 448 0 1 0 64 384a448 448 0 0 0 896 0z m-64 0A384 384 0 1 1 128 384a384 384 0 0 1 768 0z" horiz-adv-x="1024" />
<glyph glyph-name="icon_unfold_less" unicode="&#59285;" d="M278.784 760L512 524.032l233.28 235.968 45.44-45.056-251.392-254.336a38.4 38.4 0 0 0-54.656 0L233.216 714.944l45.568 45.056zM275.712 10.88L512 247.104l236.288-236.352 45.248 45.248-254.4 254.464a38.4 38.4 0 0 1-54.272 0L230.4 56.064l45.248-45.248z" horiz-adv-x="1024" />
<glyph glyph-name="icon_thumb_down" unicode="&#59286;" d="M640 270.656h206.08a64 64 0 0 1 62.08 79.552l-96 384a64 64 0 0 1-62.08 48.448H192a64 64 0 0 1-64-64v-320a64 64 0 0 1 64-64h128l128-320h128a64 64 0 0 1 64 64v192zM384 347.008V718.656h366.08l96-384H576v-256H491.328L384 347.008z m-64 51.648H192v320h128v-320z" horiz-adv-x="1024" />
<glyph glyph-name="icon_user_talk" unicode="&#59287;" d="M852.992 395.008a256 256 0 0 1 0 361.984l45.312 45.312a320 320 0 0 0 0-452.608l-45.312 45.312zM704 576a224 224 0 1 0-448 0 224 224 0 0 0 448 0z m-64 0a160 160 0 1 1-320 0 160 160 0 0 1 320 0zM861.632 201.408a61.44 61.44 0 0 0 34.368-55.808V0a32 32 0 0 0-32-32h-768A32 32 0 0 0 64 0v145.6a61.44 61.44 0 0 0 34.368 55.808A882.24 882.24 0 0 0 480 288c136.512 0 265.6-31.168 381.632-86.592zM480 224c-125.888 0-244.864-28.544-352-79.36v-112.64h704v112.64a818.24 818.24 0 0 1-352 79.36zM762.496 666.496a128 128 0 0 0 0-180.992l45.248-45.248a192 192 0 0 1 0 271.488l-45.248-45.248z" horiz-adv-x="1024" />
<glyph glyph-name="icon_tips" unicode="&#59288;" d="M512 832a317.248 317.248 0 0 1-226.176-93.824A317.248 317.248 0 0 1 192 512c0-88 35.456-168.32 93.76-226.048 19.776-20.288 42.176-37.12 66.24-51.008V128a64 64 0 0 1 64-64h192a64 64 0 0 1 64 64v106.944c24.064 13.824 46.464 30.72 66.24 51.008A317.248 317.248 0 0 1 832 512c0 177.024-142.976 320-320 320zM331.264 693.056A253.248 253.248 0 0 0 512 768c141.696 0 256-114.304 256-256a253.184 253.184 0 0 0-74.944-180.736l-0.512-0.512a245.248 245.248 0 0 0-66.88-48l-17.664-8.896V128h-192V273.856l-17.664 8.832a245.248 245.248 0 0 0-66.88 48.064l-0.512 0.512A253.248 253.248 0 0 0 256 512c0 70.656 28.48 134.784 74.944 180.736l0.32 0.32zM352 0v-64h320v64h-320z" horiz-adv-x="1024" />
<glyph glyph-name="icon_unfold_more" unicode="&#59289;" d="M745.28 458.24L512 694.144 278.784 458.24l-45.568 44.992 251.52 254.336a38.4 38.4 0 0 0 54.592 0l251.456-254.336-45.504-44.992zM748.288 309.888L512 73.6 275.712 309.888l-45.248-45.248 254.4-254.4a38.4 38.4 0 0 1 54.272 0L793.6 264.64l-45.312 45.248z" horiz-adv-x="1024" />
<glyph glyph-name="icon_upload" unicode="&#59290;" d="M239.232 468.608L480 709.504V160h64V709.504l240.896-240.896 45.248 45.248-295.488 295.488a32 32 0 0 1-45.248 0L193.92 513.92l45.312-45.248zM128 192v-128a64 64 0 0 1 64-64h640a64 64 0 0 1 64 64v128h-64v-128H192v128H128z" horiz-adv-x="1024" />
<glyph glyph-name="icon_user" unicode="&#59291;" d="M736 576a224 224 0 1 0-448 0 224 224 0 0 0 448 0z m-64 0a160 160 0 1 1-320 0 160 160 0 0 1 320 0zM893.632 201.408a61.44 61.44 0 0 0 34.368-55.808V0a32 32 0 0 0-32-32H128a32 32 0 0 0-32 32v145.6a61.44 61.44 0 0 0 34.368 55.808A882.24 882.24 0 0 0 512 288c136.512 0 265.6-31.168 381.632-86.592zM512 224c-125.888 0-244.864-28.544-352-79.36v-112.64h704v112.64A818.24 818.24 0 0 1 512 224z" horiz-adv-x="1024" />
<glyph glyph-name="icon_usergroup_add" unicode="&#59292;" d="M847.04512 80v-112h64v112h112v64h-112V256h-64v-112h-112v-64h112zM477.57312 809.856A208 208 0 1 1 381.06112 416v64a144 144 0 1 0 56.128 277.76l40.32 52.032zM381.06112 369.92A821.056 821.056 0 0 1 34.56512 292.032a61.184 61.184 0 0 1-34.624-55.872V96a32 32 0 0 1 32-32h150.848v64H64.00512v107.2a756.992 756.992 0 0 0 317.056 70.656v64zM848.00512 571.904a208 208 0 1 0-416 0 208 208 0 0 0 416 0z m-64 0a144 144 0 1 1-288 0 144 144 0 0 1 288 0zM768.00512 217.664a760.448 760.448 0 0 1-448-59.84V32h448v-64H288.00512A32 32 0 0 0 256.00512 0v158.848c0 23.808 13.12 45.76 34.56 55.872A825.088 825.088 0 0 0 768.00512 282.56V217.6z" horiz-adv-x="1024" />
<glyph glyph-name="icon_swap" unicode="&#59293;" d="M80 512h752.512L586.496 751.936l44.672 45.824 298.944-291.584a33.92 33.92 0 0 0-23.68-58.176H80V512zM944 256H193.28l243.84-230.4-43.904-46.528-298.88 282.368A33.92 33.92 0 0 0 117.76 320H944v-64z" horiz-adv-x="1024" />
<glyph glyph-name="icon_usergroup_clear" unicode="&#59294;" d="M477.57312 809.856A208 208 0 1 1 381.06112 416v64a144 144 0 1 0 56.128 277.76l40.32 52.032zM381.06112 369.92A821.056 821.056 0 0 1 34.56512 292.032a61.184 61.184 0 0 1-34.624-55.872V96a32 32 0 0 1 32-32h150.848v64H64.00512v107.2a756.992 756.992 0 0 0 317.056 70.656v64zM848.00512 571.904a208 208 0 1 0-416 0 208 208 0 0 0 416 0z m-64 0a144 144 0 1 1-288 0 144 144 0 0 1 288 0zM704.00512 225.792a757.12 757.12 0 0 1-384-68.032V32h352v-64h-384A32 32 0 0 0 256.00512 0v158.848c0 23.808 13.12 45.76 34.56 55.872A821.12 821.12 0 0 0 704.00512 289.92v-64.192zM840.77312 105.984l-92.736-92.736 45.248-45.248 92.736 92.736 92.736-92.736 45.248 45.248-92.736 92.736 92.8 92.736-45.312 45.248-92.736-92.736-92.736 92.736-45.248-45.248 92.736-92.736z" horiz-adv-x="1024" />
<glyph glyph-name="icon_user_circle" unicode="&#59295;" d="M512 320a177.92 177.92 0 1 1 0 355.84A177.92 177.92 0 0 1 512 320z m0 64a113.92 113.92 0 1 0 0 227.84A113.92 113.92 0 0 0 512 384zM512-64A448 448 0 1 1 512 832a448 448 0 0 1 0-896z m319.68 235.2C734.464 225.472 626.24 256 512 256c-114.304 0-222.4-30.464-319.68-84.8a384 384 0 1 0 639.424 0z m-40.448-50.752A382.912 382.912 0 0 0 512 0c-110.08 0-209.28 46.272-279.232 120.448C318.72 166.528 412.992 192 512 192c99.008 0 193.28-25.472 279.232-71.552z" horiz-adv-x="1024" />
<glyph glyph-name="icon_queue" unicode="&#59266;" d="M256 704h576v-576h64V704a64 64 0 0 1-64 64H256v-64zM421.312 293.312v-186.624h64V293.312h176v64h-176v176h-64v-176H234.688v-64h186.624zM128 64a64 64 0 0 1 64-64h512a64 64 0 0 1 64 64V576a64 64 0 0 1-64 64H192a64 64 0 0 1-64-64v-512z m64 512h512v-512H192V576z" horiz-adv-x="1024" />
<glyph glyph-name="icon_refresh" unicode="&#59267;" d="M512 722.496c185.344 0 336.192-151.232 336.192-338.432h61.568c0 220.864-178.112 399.936-397.76 399.936A397.056 397.056 0 0 1 173.44 593.92V726.848H112v-198.784a32 32 0 0 1 32-32h197.568v61.696H223.36A335.744 335.744 0 0 0 512 722.496zM114.304 384.064h61.44c0-187.2 150.912-338.368 336.256-338.368a335.744 335.744 0 0 1 288.64 164.736h-118.208v61.696h197.568a32 32 0 0 0 32-32v-198.848h-61.376v132.928a397.056 397.056 0 0 0-338.56-190.08c-219.712 0-397.76 179.072-397.76 400z" horiz-adv-x="1024" />
<glyph glyph-name="icon_pin" unicode="&#59268;" d="M801.152 810.24a38.4 38.4 0 0 1-51.904 2.24L490.368 593.984l-49.344 49.344a38.4 38.4 0 0 1-54.336 0L251.968 508.672a38.4 38.4 0 0 1 0-54.336l142.592-142.528-262.912-262.912 45.248-45.248 262.912 262.912 142.528-142.592a38.4 38.4 0 0 1 54.336 0l134.656 134.72a38.4 38.4 0 0 1 0 54.336l-49.28 49.28 218.432 258.944a38.4 38.4 0 0 1-2.176 51.84l-137.152 137.216z m-28.608-61.824l103.872-103.872-241.28-285.888 72.896-72.832-98.56-98.496-294.144 294.208 98.56 98.432 72.768-72.832 285.888 241.28z" horiz-adv-x="1024" />
<glyph glyph-name="icon_poweroff" unicode="&#59269;" d="M480 832v-448h64V832h-64zM96 352A416 416 0 0 0 317.952 720l32-55.488a352 352 0 1 1 323.968 0l32.128 55.488A416 416 0 1 0 96 352z" horiz-adv-x="1024" />
<glyph glyph-name="icon_photo" unicode="&#59270;" d="M704 384a192 192 0 1 0-384 0 192 192 0 0 0 384 0z m-64 0a128 128 0 1 1-256 0 128 128 0 0 1 256 0zM387.456 768a38.4 38.4 0 0 1-32-17.088L302.848 672H128.64a32.64 32.64 0 0 1-32.64-32.64v-542.72c0-18.048 14.592-32.64 32.64-32.64h766.72a32.64 32.64 0 0 1 32.64 32.64V639.36a32.64 32.64 0 0 1-32.64 32.64h-174.208l-52.608 78.912a38.4 38.4 0 0 1-32 17.088H387.456z m13.696-64h221.696l64-96H864V128h-704V608h177.152l64 96z" horiz-adv-x="1024" />
<glyph glyph-name="icon_precise_monitor" unicode="&#59271;" d="M480 800V576h64V800h-64zM398.848 542.4L172.608 768.64l-45.248-45.248 226.24-226.24 45.248 45.248z m226.304 0l226.24 226.24 45.248-45.248-226.24-226.24-45.248 45.248zM576 384a64 64 0 0 0-119.424-32H96v64h360.576A64 64 0 0 0 576 384zM353.6 270.848L127.36 44.608l45.248-45.248 226.24 226.24-45.248 45.248z m316.8 0l226.24-226.24-45.248-45.248-226.24 226.24 45.248 45.248zM928 416H704v-64h224v64z m-448-448V192h64v-224h-64z" horiz-adv-x="1024" />
<glyph glyph-name="icon_print" unicode="&#59272;" d="M255.936 768.064v-128h-64c-35.584 0-64-28.416-64-64v-320c0-35.584 28.416-64 64-64h64v-192h512v192h64c35.584 0 64 28.416 64 64v320c0 35.584-28.416 64-64 64h-64v128h-512z m448-128h-384v64h384v-64z m-512-64h640v-320h-64v128h-512v-128h-64v320z m128-512v256h384v-256h-384z" horiz-adv-x="1024" />
<glyph glyph-name="icon_play_circle" unicode="&#59273;" d="M739.2 400.64a19.2 19.2 0 0 0 0-33.28l-326.4-188.416a19.2 19.2 0 0 0-28.8 16.64V572.48a19.2 19.2 0 0 0 28.8 16.64l326.4-188.48zM512 832a448 448 0 1 0 0-896A448 448 0 0 0 512 832z m0-64a384 384 0 1 1 0-768A384 384 0 0 1 512 768z" horiz-adv-x="1024" />
<glyph glyph-name="icon_play" unicode="&#59274;" d="M739.2 400.64a19.2 19.2 0 0 0 0-33.28l-326.4-188.416a19.2 19.2 0 0 0-28.8 16.64V572.416a19.2 19.2 0 0 0 28.8 16.64l326.4-188.416z" horiz-adv-x="1024" />
<glyph glyph-name="icon_remove" unicode="&#59275;" d="M224 425.6h576v-83.2h-576v83.2z" horiz-adv-x="1024" />
<glyph glyph-name="icon_server" unicode="&#59254;" d="M448 560H256v64h192v-64zM96 736A32 32 0 0 0 128 768h768a32 32 0 0 0 32-32l0.064-288a32 32 0 0 0-32-32h-768a32 32 0 0 0-32 32V736z m64.064-256h704V704h-704v-224zM256 144h192v64H256v-64zM96.064 320a32 32 0 0 0 32 32h768a32 32 0 0 0 32-32v-288a32 32 0 0 0-32-32h-768a32 32 0 0 0-32 32V320z m64-256h704V288h-704V64z" horiz-adv-x="1024" />
<glyph glyph-name="icon_rollfront" unicode="&#59255;" d="M773.504 576l-105.408 105.344 45.248 45.312 160-160a32 32 0 0 0 0-45.312l-160-160-45.248 45.312L773.504 512H402.752a192 192 0 1 1 0-384h320v-64h-320a256 256 0 1 0 0 512h370.752z" horiz-adv-x="1024" />
<glyph glyph-name="icon_scan" unicode="&#59256;" d="M768 672H256v-192H192v192a64 64 0 0 0 64 64h512a64 64 0 0 0 64-64v-192h-64v192zM192 288h64v-192h512v192h64v-192a64 64 0 0 0-64-64H256a64 64 0 0 0-64 64v192zM896 416H128v-64h768v64z" horiz-adv-x="1024" />
<glyph glyph-name="icon_rotation" unicode="&#59257;" d="M128 768h64v-389.312A384.32 384.32 0 0 0 506.688 64H896v-64H192a64 64 0 0 0-64 64V768z m313.6-704A320.384 320.384 0 0 1 192 313.6V64h249.6z" horiz-adv-x="1024" />
<glyph glyph-name="icon_pause_circle" unicode="&#59258;" d="M448 576H384v-384h64V576zM640 576H576v-384h64V576zM263.104 756.48a448 448 0 1 0 497.792-744.96A448 448 0 0 0 263.104 756.48z m462.208-53.184a384 384 0 1 1-426.624-638.592 384 384 0 0 1 426.624 638.592z" horiz-adv-x="1024" />
<glyph glyph-name="icon_pause" unicode="&#59259;" d="M448 576H384v-384h64V576zM640 576H576v-384h64V576z" horiz-adv-x="1024" />
<glyph glyph-name="icon_pin_filled" unicode="&#59260;" d="M801.152 810.24a38.4 38.4 0 0 1-51.904 2.24L490.368 593.984l-49.344 49.344a38.4 38.4 0 0 1-54.336 0L251.968 508.672a38.4 38.4 0 0 1 0-54.336l142.592-142.528-262.912-262.912 45.248-45.248 262.912 262.912 142.528-142.592a38.4 38.4 0 0 1 54.336 0l134.656 134.72a38.4 38.4 0 0 1 0 54.336l-49.28 49.28 218.432 258.944a38.4 38.4 0 0 1-2.176 51.84l-137.152 137.216z" horiz-adv-x="1024" />
<glyph glyph-name="icon_play_circle_filled" unicode="&#59261;" d="M960 384A448 448 0 1 1 64 384a448 448 0 0 1 896 0z m-257.024-14.592L416.64 204.16a16.832 16.832 0 0 0-25.216 14.592V549.312c0 12.992 14.016 21.12 25.216 14.592l286.336-165.312a16.832 16.832 0 0 0 0-29.184z" horiz-adv-x="1024" />
<glyph glyph-name="icon_qrcode" unicode="&#59262;" d="M384 640H256v-128h128V640zM160 768a32 32 0 0 1-32-32v-320a32 32 0 0 1 32-32h320a32 32 0 0 1 32 32v320a32 32 0 0 1-32 32h-320zM192 704h256v-256H192V704zM672 768a32 32 0 0 1-32-32v-192a32 32 0 0 1 32-32h192a32 32 0 0 1 32 32v192a32 32 0 0 1-32 32h-192z m32-192V704h128v-128h-128zM640 224a32 32 0 0 0 32 32h192a32 32 0 0 0 32-32v-192a32 32 0 0 0-32-32h-192a32 32 0 0 0-32 32v192z m64-160h128v128h-128v-128zM160 256a32 32 0 0 1-32-32v-192a32 32 0 0 1 32-32h192a32 32 0 0 1 32 32v192a32 32 0 0 1-32 32h-192z m32-64h128v-128H192v128zM896 416h-256v-64h256v64zM544 192v-192h-64v192h64zM544 256V320h-64v-64h64z" horiz-adv-x="1024" />
<glyph glyph-name="icon_previous" unicode="&#59263;" d="M256 0H192V768h64v-768zM329.536 357.12a32 32 0 0 0 0 53.76L782.656 704a32 32 0 0 0 49.344-26.88v-586.24a32 32 0 0 0-49.408-26.88l-453.12 293.12zM768 149.632V618.368L405.76 384 768 149.632z" horiz-adv-x="1024" />
<glyph glyph-name="icon_rollback" unicode="&#59264;" d="M269.248 576l105.408 105.344-45.248 45.312-160-160a32 32 0 0 1 0-45.312l160-160 45.248 45.312L269.248 512H640a192 192 0 0 0 0-384H320v-64h320a256 256 0 1 1 0 512H269.248z" horiz-adv-x="1024" />
<glyph glyph-name="icon_play_circle_stroke" unicode="&#59265;" d="M739.2 400.64a19.2 19.2 0 0 0 0-33.28l-326.4-188.416a19.2 19.2 0 0 0-28.8 16.64V572.48a19.2 19.2 0 0 0 28.8 16.64l326.4-188.48zM448 494.848v-221.696L640 384 448 494.848zM512 832a448 448 0 1 0 0-896A448 448 0 0 0 512 832z m0-64a384 384 0 1 1 0-768A384 384 0 0 1 512 768z" horiz-adv-x="1024" />
<glyph glyph-name="icon_swap_left" unicode="&#59238;" d="M205.248 320H960v-64H132.672a33.92 33.92 0 0 0-24 57.92l252.736 252.736 45.248-45.248L205.248 320z" horiz-adv-x="1024" />
<glyph glyph-name="icon_stop_circle" unicode="&#59239;" d="M351.872 544.128h320.256v-320.256H351.872V544.128zM512 832a448 448 0 1 1 0-896A448 448 0 0 1 512 832z m0-64a384 384 0 1 0 0-768A384 384 0 0 0 512 768z" horiz-adv-x="1024" />
<glyph glyph-name="icon_sound" unicode="&#59240;" d="M256 192l271.552-162.944a32 32 0 0 1 48.448 27.52V711.424a32 32 0 0 1-48.448 27.456L256 576H134.72a38.4 38.4 0 0 1-38.4-38.4L96 230.4a38.4 38.4 0 0 1 38.4-38.4H256z m64 347.776l192 115.2v-541.952l-192 115.2V539.776zM256 256H160l0.256 256H256v-256zM864.96 529.472a383.36 383.36 0 0 1-89.216 124.544l43.648 46.72a447.36 447.36 0 0 0 104.064-145.28c24.128-54.4 36.48-112.64 36.48-171.456 0-58.88-12.352-117.12-36.48-171.456-24.128-54.4-59.52-103.68-104.064-145.28l-43.648 46.72a383.36 383.36 0 0 1 89.216 124.544C885.44 284.8 896 334.208 896 384s-10.496 99.2-31.04 145.472zM736 384c0 55.872-23.04 112.192-68.672 157.056l44.864 45.632c57.28-56.256 87.872-128.832 87.808-202.752-0.064-73.92-30.72-146.496-88.128-202.688l-44.8 45.76c45.696 44.8 68.864 101.12 68.928 156.992z" horiz-adv-x="1024" />
<glyph glyph-name="icon_setting" unicode="&#59241;" d="M704 384a192 192 0 1 0-384 0 192 192 0 0 0 384 0z m-64 0a128 128 0 1 1-256 0 128 128 0 0 1 256 0zM512 816l387.968-216v-432L512-48l-387.968 216v432L512 816zM188.032 562.368v-356.736L512 25.28l323.968 180.352V562.368L512 742.72 188.032 562.368z" horiz-adv-x="1024" />
<glyph glyph-name="icon_share" unicode="&#59242;" d="M635.648 553.088a148.288 148.288 0 1 1-32.256 55.296l-215.04-125.44a148.288 148.288 0 1 1 0-201.152l215.04-125.376a148.288 148.288 0 1 1 32.32 55.232l-215.04 125.376a148.224 148.224 0 0 1 0 90.624l214.976 125.44z m108.928 184.96a84.288 84.288 0 1 0 0-168.64 84.288 84.288 0 0 0 0 168.576zM351.232 426.368a32.192 32.192 0 0 1 1.92-3.392 83.904 83.904 0 0 0-1.92-84.864 84.224 84.224 0 1 0 0 88.32z m309.12-315.52c0 13.952 3.328 27.072 9.28 38.656a33.28 33.28 0 0 1 4.544 7.744 84.224 84.224 0 0 0 154.752-46.4 84.288 84.288 0 0 0-168.64 0z" horiz-adv-x="1024" />
<glyph glyph-name="icon_search" unicode="&#59243;" d="M608.64 241.984a304.896 304.896 0 1 0 45.312 45.312l226.048-225.92-45.312-45.376-226.048 225.984z m49.088 237.12a240.832 240.832 0 1 1-481.6 0 240.832 240.832 0 0 1 481.6 0z" horiz-adv-x="1024" />
<glyph glyph-name="icon_service" unicode="&#59244;" d="M161.024 488.064a352 352 0 0 0 701.952 0 32 32 0 0 0 1.024-8.064v-256a32 32 0 0 0-1.344-9.344A288 288 0 0 0 576-44.992H512v64h64A224.064 224.064 0 0 1 794.176 192H672a32 32 0 0 0-32 32v256a32 32 0 0 0 32 32h123.52a288.064 288.064 0 0 1-567.04 0H352a32 32 0 0 0 32-32v-256a32 32 0 0 0-32-32H192a32 32 0 0 0-32 32v256a32 32 0 0 0 1.024 8.064zM800 448H704v-192h96V448z m-576 0v-192H320V448H224z" horiz-adv-x="1024" />
<glyph glyph-name="icon_star" unicode="&#59245;" d="M610.688 487.68l-98.56 199.68-98.56-199.68-220.48-32L352.64 300.16l-37.632-219.52 197.12 103.68 197.12-103.68-37.632 219.52 159.488 155.52-220.352 32z m319.36 18.24a19.2 19.2 0 0 0 10.688-32.768l-200.384-195.328 47.36-275.84a19.2 19.2 0 0 0-27.904-20.224l-247.68 130.24-247.68-130.24a19.2 19.2 0 0 0-27.904 20.224l47.296 275.84-200.384 195.328a19.2 19.2 0 0 0 10.624 32.768l276.928 40.256 123.84 250.88a19.2 19.2 0 0 0 34.432 0l123.904-250.88 276.928-40.256z" horiz-adv-x="1024" />
<glyph glyph-name="icon_round" unicode="&#59246;" d="M512 160a224 224 0 1 0 0 448 224 224 0 0 0 0-448zM512 64A320 320 0 1 1 512 704a320 320 0 0 1 0-640z" horiz-adv-x="1024" />
<glyph glyph-name="icon_star_filled" unicode="&#59247;" d="M486.272 779.648a28.8 28.8 0 0 0 51.648 0l115.2-233.472 257.728-37.44a28.8 28.8 0 0 0 16-49.152l-186.496-181.76 43.968-256.64a28.8 28.8 0 0 0-41.792-30.336l-230.4 121.152L281.6-9.152a28.8 28.8 0 0 0-41.792 30.336l44.032 256.64-186.496 181.76a28.8 28.8 0 0 0 16 49.152l257.664 37.44 115.2 233.472z" horiz-adv-x="1024" />
<glyph glyph-name="icon_shop" unicode="&#59248;" d="M512 832a160 160 0 0 1-160-160V576h-128a32 32 0 0 1-32-32v-576a32 32 0 0 1 32-32h576a32 32 0 0 1 32 32v576a32 32 0 0 1-32 32h-128V672A160 160 0 0 1 512 832z m96-320v-128h64V512H768v-512H256V512h96v-128h64V512h192z m0 64h-192V672a96 96 0 1 0 192 0V576z" horiz-adv-x="1024" />
<glyph glyph-name="icon_stop_circle_filled" unicode="&#59249;" d="M263.104 756.48a448 448 0 1 0 497.792-744.96A448 448 0 0 0 263.104 756.48zM352 544v-320h320v320h-320z" horiz-adv-x="1024" />
<glyph glyph-name="icon_slash" unicode="&#59250;" d="M260.288 12.032l448 775.936 55.424-32-448-775.936-55.424 32z" horiz-adv-x="1024" />
<glyph glyph-name="icon_save" unicode="&#59251;" d="M704 768l192-192v-512a64 64 0 0 0-64-64H192a64 64 0 0 0-64 64V704a64 64 0 0 0 64 64h512z m-64-64H384v-96h256V704z m64-26.496V544H320V704H192v-640h128V384h384v-320h128V549.504l-128 128zM640 64V320H384v-256h256z" horiz-adv-x="1024" />
<glyph glyph-name="icon_secured" unicode="&#59252;" d="M472.96 260.544l228.736 228.8-45.248 45.248L472.96 351.04 367.552 456.448l-45.248-45.248 150.592-150.656zM160 768v-448c0-90.624 47.552-174.656 125.312-221.312L512-37.312l226.688 136A258.048 258.048 0 0 1 864 320V768h-704z m64-448V704h576v-384a194.048 194.048 0 0 0-94.208-166.4L512 37.312 318.208 153.6A194.048 194.048 0 0 0 224 320z" horiz-adv-x="1024" />
<glyph glyph-name="icon_root_list" unicode="&#59253;" d="M288 576h448v-64h-448V576zM576 416H288v-64H576v64zM192 768a64 64 0 0 1-64-64v-640a64 64 0 0 1 64-64h640a64 64 0 0 1 64 64V704a64 64 0 0 1-64 64H192z m640-64v-640H192V704h640z" horiz-adv-x="1024" />
<glyph glyph-name="icon_menu-application1" unicode="&#59231;" d="M256 704a64 64 0 1 0-128 0 64 64 0 0 0 128 0zM256 384a64 64 0 1 0-128 0 64 64 0 0 0 128 0zM192 0a64 64 0 1 1 0 128 64 64 0 0 1 0-128zM576 704a64 64 0 1 0-128 0 64 64 0 0 0 128 0zM512 320a64 64 0 1 1 0 128 64 64 0 0 1 0-128zM576 64a64 64 0 1 0-128 0 64 64 0 0 0 128 0zM832 640a64 64 0 1 1 0 128 64 64 0 0 1 0-128zM896 384a64 64 0 1 0-128 0 64 64 0 0 0 128 0zM832 0a64 64 0 1 1 0 128 64 64 0 0 1 0-128z" horiz-adv-x="1024" />
<glyph glyph-name="icon_mobile_vibrate" unicode="&#59232;" d="M416 64h192v64h-192v-64zM320 800a64 64 0 0 1-64-64V0a64 64 0 0 1 64-64h384a64 64 0 0 1 64 64V736a64 64 0 0 1-64 64H320z m384-64V0H320V736h384zM128 640v-576h64V640H128zM832 640v-576h64V640h-64z" horiz-adv-x="1024" />
<glyph glyph-name="icon_mirror" unicode="&#59233;" d="M480 832h64v-896h-64V832zM942.08 100.032a32 32 0 0 0-22.336-34.56c-4.608-1.472-11.2-1.472-24.32-1.472h-213.76c-8.96 0-13.44 0-17.152 0.896a32 32 0 0 0-23.68 23.68C640 92.16 640 96.64 640 105.6V576c0 33.92 0 50.88 2.624 56.96a32 32 0 0 0 50.88 11.008c4.928-4.48 11.904-19.84 25.984-50.816l213.76-470.336c5.44-11.968 8.192-17.92 8.832-22.784zM704 128h156.608L704 472.512V128zM104.32 65.408c4.544-1.408 11.136-1.408 24.32-1.408h213.76c8.96 0 13.44 0 17.088 0.896a32 32 0 0 1 23.68 23.68C384 92.16 384 96.64 384 105.6V576c0 33.92 0 50.88-2.56 56.96a32 32 0 0 1-50.944 11.008c-4.864-4.48-11.904-19.84-25.984-50.816l-213.76-470.336c-5.44-11.968-8.192-17.92-8.768-22.784a32 32 0 0 1 22.272-34.56zM320 472.512V128H163.392L320 472.512z" horiz-adv-x="1024" />
<glyph glyph-name="icon_move" unicode="&#59234;" d="M320 832a64 64 0 1 1 0-128 64 64 0 0 1 0 128zM704 832a64 64 0 1 1 0-128 64 64 0 0 1 0 128zM256 512a64 64 0 1 0 128 0 64 64 0 0 0-128 0zM704 576a64 64 0 1 1 0-128 64 64 0 0 1 0 128zM256 256a64 64 0 1 0 128 0 64 64 0 0 0-128 0zM320 64a64 64 0 1 1 0-128 64 64 0 0 1 0 128zM640 256a64 64 0 1 0 128 0 64 64 0 0 0-128 0zM704 64a64 64 0 1 1 0-128 64 64 0 0 1 0 128z" horiz-adv-x="1024" />
<glyph glyph-name="icon_page_first" unicode="&#59235;" d="M793.92 610.56l-58.88 58.88L449.728 384l285.44-285.44 58.88 58.88L567.296 384l226.56 226.56zM306.88 640v-512h83.2V640h-83.2z" horiz-adv-x="1024" />
<glyph glyph-name="icon_notification_filled" unicode="&#59236;" d="M544 766.272V832h-64v-65.728a288 288 0 0 1-256-286.272V192l-57.6-76.8a32 32 0 0 1 25.6-51.2h163.2a160 160 0 0 1 313.6 0H832a32 32 0 0 1 25.6 51.2l-57.6 76.8V480a288 288 0 0 1-256 286.272z" horiz-adv-x="1024" />
<glyph glyph-name="icon_minus_rectangle1" unicode="&#59237;" d="M320 352h384v64H320v-64zM192 0a64 64 0 0 0-64 64V704a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64v-640a64 64 0 0 0-64-64H192z m0 64h640V704H192v-640z" horiz-adv-x="1024" />
<glyph glyph-name="icon_menu_unfold1" unicode="&#59218;" d="M896 127.104L128.128 128 128 64l768-0.896v64zM544 416H128v-64h416v64zM896 703.104L128.128 704 128 640l768-0.896v64zM642.112 357.952a32 32 0 0 0 0 51.2L844.8 561.152a32 32 0 0 0 51.2-25.6v-304a32 32 0 0 0-51.2-25.6l-202.688 152zM832 295.552v176l-117.312-88L832 295.552z" horiz-adv-x="1024" />
<glyph glyph-name="icon_page_last" unicode="&#59219;" d="M230.08 157.44l58.816-58.88L574.336 384l-285.44 285.44-58.88-58.88L456.704 384l-226.56-226.56z m487.04-29.44V640h-83.2v-512h83.2z" horiz-adv-x="1024" />
<glyph glyph-name="icon_pause_circle_filled" unicode="&#59220;" d="M960 384A448 448 0 1 0 64 384a448 448 0 0 0 896 0zM384 576v-384h64V576H384z m256 0H576v-384h64V576z" horiz-adv-x="1024" />
<glyph glyph-name="icon_money_circle" unicode="&#59221;" d="M672 416h-128v-64h128v-64h-128V128h-64V288h-128v64h128v64h-128v64h93.44L359.04 588.032l49.92 39.936L512 499.2l103.04 128.768 49.92-39.936L578.56 480h93.44v-64zM960 384A448 448 0 1 1 64 384a448 448 0 0 1 896 0z m-64 0A384 384 0 1 0 128 384a384 384 0 0 0 768 0z" horiz-adv-x="1024" />
<glyph glyph-name="icon_mail1" unicode="&#59222;" d="M95.936 640.064a64 64 0 0 0 64 64h704a64 64 0 0 0 64-64v-512a64 64 0 0 0-64-64h-704a64 64 0 0 0-64 64v512z m742.336 0H185.6L512 422.528l326.336 217.6z m-678.336-59.776V128h704V580.288L511.936 345.6l-352 234.688z" horiz-adv-x="1024" />
<glyph glyph-name="icon_minus_circle_filled1" unicode="&#59223;" d="M512-64A448 448 0 1 1 512 832a448 448 0 0 1 0-896z m224 416h-448v64h448v-64z" horiz-adv-x="1024" />
<glyph glyph-name="icon_more" unicode="&#59224;" d="M512 640a64 64 0 1 1 0 128 64 64 0 0 1 0-128zM512 320a64 64 0 1 1 0 128 64 64 0 0 1 0-128zM576 64a64 64 0 1 0-128 0 64 64 0 0 0 128 0z" horiz-adv-x="1024" />
<glyph glyph-name="icon_menu_fold1" unicode="&#59225;" d="M128 640.896L895.936 640 896 704 128 704.896v-64zM480 352H896v64H480v-64zM128 64.896L895.936 64 896 128l-768 0.896v-64zM381.888 410.048a32 32 0 0 0 0-51.2L179.2 206.848a32 32 0 0 0-51.2 25.6v304a32 32 0 0 0 51.2 25.6l202.688-152zM192 472.448v-176l117.312 88L192 472.448z" horiz-adv-x="1024" />
<glyph glyph-name="icon_next" unicode="&#59226;" d="M768 768h64v-768h-64V768zM694.464 410.88a32 32 0 0 0 0-53.76L241.344 64A32 32 0 0 0 192 90.88V677.12A32 32 0 0 0 241.408 704l453.12-293.12zM256 618.368v-468.736L618.24 384 256 618.368z" horiz-adv-x="1024" />
<glyph glyph-name="icon_notification" unicode="&#59227;" d="M544 766.272V832h-64v-65.728a288 288 0 0 1-256-286.272V192l-57.6-76.8a32 32 0 0 1 25.6-51.2h163.2a160 160 0 0 1 313.6 0H832a32 32 0 0 1 25.6 51.2l-57.6 76.8V480a288 288 0 0 1-256 286.272z m-256-595.584V480a224 224 0 1 0 448 0v-309.312L768 128H256l32 42.688zM512 0a96 96 0 0 0-90.56 64h181.12A96 96 0 0 0 512 0z" horiz-adv-x="1024" />
<glyph glyph-name="icon_minus_circle1" unicode="&#59228;" d="M288 352h448v64h-448v-64zM960 384A448 448 0 1 0 64 384a448 448 0 0 0 896 0z m-64 0A384 384 0 1 1 128 384a384 384 0 0 1 768 0z" horiz-adv-x="1024" />
<glyph glyph-name="icon_mobile" unicode="&#59229;" d="M416 64h192v64h-192v-64zM224 736a64 64 0 0 0 64 64h448a64 64 0 0 0 64-64V0a64 64 0 0 0-64-64h-448a64 64 0 0 0-64 64V736z m64 0V0h448V736h-448z" horiz-adv-x="1024" />
<glyph glyph-name="icon_order_adjustment_column" unicode="&#59230;" d="M480 352V-64h64V352h298.048l-108.288-108.224 45.248-45.312 162.88 162.88a32 32 0 0 1 0 45.312l-162.88 162.88-45.248-45.312L842.048 416H544V832h-64v-416H182.144l108.224 108.224L245.12 569.6 82.24 406.656a32 32 0 0 1 0-45.312l162.88-162.88 45.248 45.248L182.144 352H480z" horiz-adv-x="1024" />
<glyph glyph-name="icon_jump" unicode="&#59200;" d="M146.752 18.752c12.032-11.968 28.288-18.752 45.248-18.752h640a64.064 64.064 0 0 1 64 64V352h-64V64H192V704h288V768H192a64.064 64.064 0 0 1-64-64v-640c0-16.96 6.784-33.28 18.752-45.248zM576 704V768h288a32 32 0 0 0 32-32V448h-64V658.752L557.248 384 512 429.248 786.752 704H576z" horiz-adv-x="1024" />
<glyph glyph-name="icon_lock_off" unicode="&#59201;" d="M384 192v64h256v-64H384zM288 512V576a224 224 0 1 0 448 0h-64a160 160 0 0 1-320 0v-64H832a32 32 0 0 0 32-32v-448a32 32 0 0 0-32-32H192a32 32 0 0 0-32 32v448A32 32 0 0 0 192 512h96z m-64-448h576V448h-576v-384z" horiz-adv-x="1024" />
<glyph glyph-name="icon_loading" unicode="&#59204;" d="M512 800a416 416 0 0 1 0-832v104A312 312 0 1 0 824 384H928A416 416 0 0 1 512 800z" horiz-adv-x="1024" />
<glyph glyph-name="icon_laptop" unicode="&#59205;" d="M160 128a64 64 0 0 0-64 64V640a64 64 0 0 0 64 64h704a64 64 0 0 0 64-64v-448a64 64 0 0 0-64-64h-704z m0 64h704V640h-704v-448zM960 64H64v-64h896v64z" horiz-adv-x="1024" />
<glyph glyph-name="icon_mail" unicode="&#59207;" d="M95.936 640.064a64 64 0 0 0 64 64h704a64 64 0 0 0 64-64v-512a64 64 0 0 0-64-64h-704a64 64 0 0 0-64 64v512z m742.336 0H185.6L512 422.528l326.336 217.6z m-678.336-59.776V128h704V580.288L511.936 345.6l-352 234.688z" horiz-adv-x="1024" />
<glyph glyph-name="icon_minus_rectangle" unicode="&#59208;" d="M320 352h384v64H320v-64zM192 0a64 64 0 0 0-64 64V704a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64v-640a64 64 0 0 0-64-64H192z m0 64h640V704H192v-640z" horiz-adv-x="1024" />
<glyph glyph-name="icon_location" unicode="&#59209;" d="M672 512a160 160 0 1 0-320 0 160 160 0 0 0 320 0z m-64 0a96 96 0 1 1-192 0 96 96 0 0 1 192 0zM535.168-29.952a28.032 28.032 0 0 0-46.336 0L246.784 325.632a320.896 320.896 0 1 0 530.496 0l-242.112-355.584z m189.184 391.616a256.896 256.896 0 1 1-424.704 0L512 49.728l212.352 311.936z" horiz-adv-x="1024" />
<glyph glyph-name="icon_lock_on" unicode="&#59210;" d="M384 256v-64h256v64H384zM288 576.64V512H192a32 32 0 0 1-32-32v-448a32 32 0 0 1 32-32h640a32 32 0 0 1 32 32v448A32 32 0 0 1 832 512h-96V576.64a224 224 0 0 1-448 0z m384-64.64h-320V576.64a160 160 0 0 0 320 0V512z m-448-64h576v-384h-576V448z" horiz-adv-x="1024" />
<glyph glyph-name="icon_link_unlink" unicode="&#59211;" d="M384 768v-128h64V768H384zM523.328 282.176l-147.072-147.072a80 80 0 0 0-113.152 113.152l147.072 147.072-45.248 45.248-147.072-147.072a144 144 0 0 1 203.648-203.648l147.072 147.072-45.248 45.248zM613.76 372.672l45.312-45.248 147.072 147.072a144 144 0 1 1-203.648 203.648L455.424 531.072l45.248-45.248 147.072 147.072a80 80 0 0 0 113.152-113.152L613.824 372.672zM768 320h128v-64h-128V320zM128 448h128V512H128v-64zM640 128v-128H576v128h64zM750.848 190.4l103.808-103.744-45.312-45.248-103.68 103.68 45.184 45.312zM169.344 681.408l103.808-103.808 45.248 45.248-103.744 103.808-45.312-45.248z" horiz-adv-x="1024" />
<glyph glyph-name="icon_menu-application" unicode="&#59212;" d="M256 704a64 64 0 1 0-128 0 64 64 0 0 0 128 0zM256 384a64 64 0 1 0-128 0 64 64 0 0 0 128 0zM192 0a64 64 0 1 1 0 128 64 64 0 0 1 0-128zM576 704a64 64 0 1 0-128 0 64 64 0 0 0 128 0zM512 320a64 64 0 1 1 0 128 64 64 0 0 1 0-128zM576 64a64 64 0 1 0-128 0 64 64 0 0 0 128 0zM832 640a64 64 0 1 1 0 128 64 64 0 0 1 0-128zM896 384a64 64 0 1 0-128 0 64 64 0 0 0 128 0zM832 0a64 64 0 1 1 0 128 64 64 0 0 1 0-128z" horiz-adv-x="1024" />
<glyph glyph-name="icon_minus_circle" unicode="&#59213;" d="M288 352h448v64h-448v-64zM960 384A448 448 0 1 0 64 384a448 448 0 0 0 896 0z m-64 0A384 384 0 1 1 128 384a384 384 0 0 1 768 0z" horiz-adv-x="1024" />
<glyph glyph-name="icon_logout" unicode="&#59214;" d="M576 704v-128h64V736a32 32 0 0 1-32 32h-512a32 32 0 0 1-32-32v-704a32 32 0 0 1 32-32h512a32 32 0 0 1 32 32V192H576v-128H128V704h448zM718.848 559.744L862.528 416H384v-64h478.528l-143.68-143.744 45.248-45.248 198.336 198.4a32 32 0 0 1 0 45.248l-198.4 198.336-45.184-45.248z" horiz-adv-x="1024" />
<glyph glyph-name="icon_link" unicode="&#59215;" d="M398.848 135.04l135.808 135.808 45.248-45.248-135.808-135.744a160 160 0 0 0-226.24 226.24l135.744 135.808 45.248-45.248-135.744-135.808a96 96 0 0 1 135.744-135.744zM670.4 316.16l-45.248 45.184 135.744 135.808a96 96 0 1 1-135.744 135.744L489.344 497.152l-45.248 45.248 135.808 135.744a160 160 0 0 0 226.24-226.24l-135.744-135.808zM579.84 497.152L398.912 316.096l45.312-45.248 180.992 181.056-45.248 45.248z" horiz-adv-x="1024" />
<glyph glyph-name="icon_layers" unicode="&#59216;" d="M900.672 577.408L512 415.488l-388.736 161.92c-26.24 10.944-26.24 49.792 0 60.736L512 800l388.672-161.92c26.24-10.944 26.24-49.792 0-60.736zM219.328 607.744L512 485.824l292.608 121.92L512 729.664 219.328 607.808zM95.936 446.272v-78.528L512 184.832l415.936 182.848V446.208L512 263.36 95.936 446.272zM95.936 229.12v-78.528L512-32.32l415.936 182.848V229.12L512 46.208 96 229.184z" horiz-adv-x="1024" />
<glyph glyph-name="icon_login" unicode="&#59217;" d="M542.528 416L398.848 559.744l45.248 45.248 198.4-198.4a32 32 0 0 0 0-45.248l-198.4-198.336-45.248 45.248L542.528 352H64v64h478.528zM256 576V704h512v-640H256v128H192v-160a32 32 0 0 1 32-32h576a32 32 0 0 1 32 32v704a32 32 0 0 1-32 32h-576a32 32 0 0 1-32-32V576h64z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file_paste" unicode="&#59160;" d="M704 160H320v-64h384v64zM160 772.992c0 37.44 33.28 59.008 63.68 59.008h339.072a64 64 0 0 0 45.248-18.752L845.248 576a64 64 0 0 0 18.752-45.248v-535.744c0-37.44-33.28-59.008-63.68-59.008h-576.64c-30.4 0-63.68 21.568-63.68 59.008V772.992zM224 768v-768h576V511.168h-256V768h-320z m384-192.832h147.584L608 722.752v-147.584z" horiz-adv-x="1024" />
<glyph glyph-name="icon_error_circle" unicode="&#59161;" d="M544 640v-352h-64V640h64zM550.016 224h-76.8v-76.8h76.8v76.8zM960 384A448 448 0 1 1 64 384a448 448 0 0 1 896 0z m-64 0A384 384 0 1 0 128 384a384 384 0 0 0 768 0z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file_word" unicode="&#59162;" d="M224 768v-768h192v-64H223.68c-30.4 0-63.68 21.568-63.68 59.008V772.992c0 37.44 33.28 59.008 63.68 59.008h343.68a64 64 0 0 0 45.76-19.2l232.576-237.056a64 64 0 0 0 18.304-44.8V384h-64V511.168h-256V768h-320z m384-41.344v-151.488h148.608L608 726.656zM576 0V288H512V0a64 64 0 0 1 64-64h224a64 64 0 0 1 64 64V288h-64V0h-80V288h-64V0H576z" horiz-adv-x="1024" />
<glyph glyph-name="icon_enter" unicode="&#59163;" d="M832 640v-384H269.248l105.408 105.344-45.248 45.312-160-160a32 32 0 0 1 0-45.312l160-160 45.248 45.312L269.248 192H832a64 64 0 0 1 64 64V640h-64z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file" unicode="&#59164;" d="M223.68 832c-30.4 0-63.68-21.568-63.68-59.008v-777.984c0-37.44 33.28-59.008 63.68-59.008h576.64c30.4 0 63.68 21.568 63.68 59.008v535.68A64 64 0 0 1 845.248 576L608 813.248A64 64 0 0 1 562.752 832H223.68zM544 768v-256.832h256V0h-576V768h320z m64-45.248l147.584-147.584H608V722.752z" horiz-adv-x="1024" />
<glyph glyph-name="icon_fork" unicode="&#59166;" d="M384 736a32 32 0 0 0 32 32h192a32 32 0 0 0 32-32v-192a32 32 0 0 0-32-32h-64v-128h192a64 64 0 0 0 64-64v-64h64a32 32 0 0 0 32-32v-192a32 32 0 0 0-32-32h-192a32 32 0 0 0-32 32v192a32 32 0 0 0 32 32h64V320h-448v-64h64a32 32 0 0 0 32-32v-192a32 32 0 0 0-32-32h-192a32 32 0 0 0-32 32v192a32 32 0 0 0 32 32h64V320a64 64 0 0 0 64 64h192V512h-64a32 32 0 0 0-32 32v192zM448 576h128V704H448v-128z m-256-384v-128h128v128H192z m512 0v-128h128v128h-128z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file_copy" unicode="&#59167;" d="M256 772.992C256 810.432 289.28 832 319.68 832h279.68a64 64 0 0 0 45.76-19.2l232.576-237.056a64 64 0 0 0 18.304-44.8l0.32-407.936c0-37.376-33.28-59.008-63.744-59.008H320c-30.336 0-63.616 21.568-63.616 59.008L256 772.992zM320 768l0.32-640h512L832 511.168H576V768H320z m320-41.344v-151.488h148.608L640 726.656zM128 576v-576.832a64 64 0 0 1 64-64h512v64H192V576H128z" horiz-adv-x="1024" />
<glyph glyph-name="icon_flag" unicode="&#59168;" d="M556.416 715.392A466.688 466.688 0 0 0 832 721.408v-379.2a566.592 566.592 0 0 1-307.2-14.464l-33.024-11.008A543.168 543.168 0 0 0 192 304.128V681.856a566.592 566.592 0 0 1 307.2 14.4l57.216 19.136zM128 256V733.184c0 17.152 16.832 29.248 33.088 23.808a502.528 502.528 0 0 1 317.824 0l57.28 19.072a530.624 530.624 0 0 0 335.616 0 35.392 35.392 0 0 0 24.192-33.536v-451.648a25.152 25.152 0 0 0-33.088-23.808 502.528 502.528 0 0 1-317.824 0L512 256a607.168 607.168 0 0 0-320-17.472V-64H128v320z" horiz-adv-x="1024" />
<glyph glyph-name="icon_folder" unicode="&#59169;" d="M96 672a64 64 0 0 0 64 64H357.824l8.32-6.08L490.432 640H864a64 64 0 0 0 64-64v-512a64 64 0 0 0-64-64h-704a64 64 0 0 0-64 64V672z m241.088 0H160V64h704V576H469.632l-8.384 6.08L337.088 672z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file_image" unicode="&#59170;" d="M223.68 832c-30.4 0-63.68-21.568-63.68-59.008v-777.984c0-37.44 33.28-59.008 63.68-59.008h571.776c30.4 0 63.68 21.568 63.68 59.008V530.944a64 64 0 0 1-18.304 44.8L608.256 812.8A64 64 0 0 1 562.56 832H223.68zM224 168.704V768h320v-256.64h251.136v-273.792L672 360.704l-192-192-128 128-128-128z m0-81.408l128 128L439.296 128l-128-128H224v87.296z m448 192l123.136-123.2V0H392.704L672 279.296z m79.488 296.128H608V721.664l143.488-146.24z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file_powerpoint" unicode="&#59171;" d="M224 768v-768H512v-64H223.68c-30.4 0-63.68 21.568-63.68 59.008V772.992c0 37.44 33.28 59.008 63.68 59.008h343.68a64 64 0 0 0 45.76-19.2l232.576-237.056a64 64 0 0 0 18.304-44.8V416h-64V511.168h-256V768h-320z m384-41.344v-151.488h148.608L608 726.656zM800 352h-192V-64h64v160h128a64 64 0 0 1 64 64v128a64 64 0 0 1-64 64z m0-192h-128v128h128v-128z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file_add" unicode="&#59172;" d="M256 832c-35.584 0-64-28.416-64-64v-704c0-35.584 28.416-64 64-64h290.304v64H256V768h256v-256h256v-158.976h64V530.752A64 64 0 0 1 813.248 576l-5.248 5.248-0.064 0.128-237.44 237.44a33.792 33.792 0 0 1-18.24 9.472A64 64 0 0 1 530.752 832H256z m466.752-256H576V722.752L722.752 576zM768-64v128h-128v64h128v128h64v-128h128v-64h-128v-128h-64z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file_unknown" unicode="&#59173;" d="M224 768v-768H576v-64H223.68c-30.4 0-63.68 21.568-63.68 59.008V772.992c0 37.44 33.28 59.008 63.68 59.008h338.624a64 64 0 0 0 45.696-19.2l232.576-237.056a64 64 0 0 0 18.304-44.8V416h-64V511.168h-256V768H224z m378.88-41.344v-151.488h148.608L602.88 726.656zM730.88 357.12c-68.48 0-128-52.608-128-121.728h64c0 29.76 26.688 57.664 64 57.664 37.376 0 64-27.904 64-57.664 0-19.2-17.92-42.24-46.016-52.864H748.8c-28.352-11.008-49.856-37.952-49.856-71.168v-42.24h64v42.24c0 4.16 2.688 8.96 8.832 11.392 42.112 16 87.168 56.96 87.168 112.64 0 69.12-59.456 121.664-128 121.664zM730.88 12.8a38.4 38.4 0 1 1 0-76.8 38.4 38.4 0 0 1 0 76.8z" horiz-adv-x="1024" />
<glyph glyph-name="icon_error_circle_filled" unicode="&#59174;" d="M960 384A448 448 0 1 1 64 384a448 448 0 0 1 896 0zM544 640v-352h-64V640h64z m-70.784-448h76.8v-76.8h-76.8V192z" horiz-adv-x="1024" />
<glyph glyph-name="icon_help" unicode="&#59175;" d="M512 736c-121.408 0-224-92.672-224-211.2h64c0 79.104 69.696 147.2 160 147.2s160-68.096 160-147.2c0-56.576-49.6-112-112.64-135.936l-0.192-0.064C513.536 371.2 480 328.32 480 276.48V192h64V276.48c0 22.784 14.72 43.52 38.144 52.544C659.456 358.4 736 431.936 736 524.8c0 118.528-102.592 211.2-224 211.2zM512 128a48 48 0 1 1 0-96 48 48 0 0 1 0 96z" horiz-adv-x="1024" />
<glyph glyph-name="icon_fullscreen_exit" unicode="&#59176;" d="M416 525.248V704h64v-256a32 32 0 0 0-32-32H192v64h178.752L137.344 713.344l45.312 45.312L416 525.248zM608 242.752V64h-64V320a32 32 0 0 0 32 32h256v-64h-178.752l233.408-233.344-45.248-45.312L608 242.752z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file_pdf" unicode="&#59177;" d="M224 0V768h320v-256.832h256V416h64V530.944a64 64 0 0 1-18.304 44.8L613.12 812.8a64 64 0 0 1-45.696 19.2h-343.68c-30.464 0-63.744-21.568-63.744-59.008v-777.984c0-37.44 33.28-59.008 63.68-59.008H768v64H224z m532.608 575.168H608V726.656l148.608-151.488zM536.128 320h119.104c30.976 0 56-25.088 56-56v-142.784a56 56 0 0 0-56-56H536.128V320z m48-48v-158.784h71.104a8 8 0 0 1 8 8V264a8 8 0 0 1-8 8H584.128zM320 319.616h119.104c30.976 0 56-25.088 56-56v-67.328a56 56 0 0 0-56-56H368v-76.16H320V319.616z m48-131.328h71.104a8 8 0 0 1 8 8V263.68a8 8 0 0 1-8 8H368v-83.328zM752.256 64.128h48v101.184h103.104v48h-103.104V272h103.104V320h-151.104v-255.872z" horiz-adv-x="1024" />
<glyph glyph-name="icon_gift" unicode="&#59178;" d="M224 640c0-36.032 11.904-69.248 32-96H160A32 32 0 0 1 128 512v-512a32 32 0 0 1 32-32h704a32 32 0 0 1 32 32V512a32 32 0 0 1-32 32H768a160 160 0 0 1-256 192A160 160 0 0 1 224 640z m512 0A96 96 0 0 0 640 544H544V640a96 96 0 1 0 192 0z m-256-160V192h64V480H832v-448H192v448h288z m0 64H384A96 96 0 1 0 480 640v-96z" horiz-adv-x="1024" />
<glyph glyph-name="icon_gender_female" unicode="&#59179;" d="M512 788.608a224 224 0 0 1-31.168-445.888v-86.848h-128v-64h128v-224h64v224h128v64h-128V342.976A224 224 0 0 1 512 788.608z m0-64a160 160 0 1 0 0-320 160 160 0 0 0 0 320z" horiz-adv-x="1024" />
<glyph glyph-name="icon_home1" unicode="&#59180;" d="M384 192v-64h256v64H384zM489.344 790.656a32 32 0 0 0 45.312 0l416-416-45.248-45.312L832 402.752V32a64 64 0 0 0-64-64H256a64 64 0 0 0-64 64V402.752L118.656 329.344l-45.312 45.312 416 416zM512 722.752l-256-256V32h512V466.752l-256 256z" horiz-adv-x="1024" />
<glyph glyph-name="icon_heart_filled" unicode="&#59181;" d="M128 472.768c0 186.496 221.696 284.032 359.168 158.016L512 608l24.832 22.784C674.304 756.8 896 659.2 896 472.768c0-56.832-22.592-111.36-62.72-151.552l-311.936-311.872c-5.12-5.12-13.504-5.12-18.688 0L190.784 321.216A214.336 214.336 0 0 0 128 472.768z" horiz-adv-x="1024" />
<glyph glyph-name="icon_info_circle" unicode="&#59182;" d="M480.384 128V480h64V128h-64zM550.4 640H473.6v-76.8h76.8V640zM64 384a448 448 0 1 1 896 0A448 448 0 0 1 64 384z m64 0a384 384 0 1 0 768 0A384 384 0 0 0 128 384z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file_icon" unicode="&#59183;" d="M224 768v-768h494.976v-64H223.68c-30.4 0-63.68 21.568-63.68 59.008V772.992c0 37.44 33.28 59.008 63.68 59.008h343.68a64 64 0 0 0 45.76-19.2l232.576-237.056a64 64 0 0 0 18.304-44.8V416h-64V511.168h-256V768h-320z m384-192.832h148.608L608 726.656v-151.488zM286.784 320h128v-51.2h-38.4v-153.6h38.4v-51.2h-128v51.2h38.4V268.8h-38.4V320zM576 320H498.688A50.944 50.944 0 0 1 448 268.8v-153.6c0-28.288 22.72-51.2 50.688-51.2H576v51.2H498.688V268.8H576V320zM883.008 268.8V64H832V320h111.552c28.16 0 51.072-22.912 51.072-51.2V64h-51.072V268.8h-60.544zM608 268.16V115.2c0-28.16 22.848-51.008 51.008-51.008h76.544c28.16 0 51.008 22.848 51.008 51.008V268.224a51.008 51.008 0 0 1-51.008 51.008h-76.544a51.008 51.008 0 0 1-51.008-51.008z m51.008-153.024V268.224h76.544v-153.088h-76.544z" horiz-adv-x="1024" />
<glyph glyph-name="icon_heart" unicode="&#59184;" d="M512 521.152l68.096 62.464C676.48 671.936 832 603.52 832 472.768c0-39.872-15.872-78.08-44.032-106.24L512 90.432 236.032 366.464A150.336 150.336 0 0 0 192 472.768C192 603.584 347.52 672 443.904 583.68L512 521.152z m-24.832 109.632C349.696 756.8 128 659.2 128 472.768c0-56.832 22.592-111.36 62.72-151.552l311.936-311.872c5.12-5.12 13.504-5.12 18.688 0l311.872 311.872c40.192 40.192 62.784 94.72 62.784 151.552 0 186.496-221.696 284.032-359.168 158.016L512 608l-24.832 22.784z" horiz-adv-x="1024" />
<glyph glyph-name="icon_history" unicode="&#59185;" d="M505.984 717.248c188.416 0 339.456-150.208 339.456-333.376 0-183.104-151.04-333.312-339.456-333.312-157.568 0-288.96 104.96-327.808 246.4l-66.112-10.752c44.224-173.696 203.84-302.336 393.92-302.336 224.256 0 406.08 179.136 406.08 400 0 220.928-181.76 400-406.08 400A407.552 407.552 0 0 1 178.56 620.544v106.24H112v-201.408a32 32 0 0 1 32-32h200.128V560.192H217.92a340.288 340.288 0 0 0 288 157.056zM448 544v-184.896l169.344-169.344 45.248 45.248L512 385.6V544H448z" horiz-adv-x="1024" />
<glyph glyph-name="icon_hourglass" unicode="&#59187;" d="M512 440.576l256 212.288V736H256v-83.2l256-212.224zM192 622.784V736a64 64 0 0 0 64 64h512a64 64 0 0 0 64-64v-113.28L544 384l288-238.72v-113.28a64 64 0 0 0-64-64H256a64 64 0 0 0-64 64v113.28L480 384 192 622.72z m64-507.648V32h512v83.2L512 327.36l-256-212.288z" horiz-adv-x="1024" />
<glyph glyph-name="icon_info_circle_filled" unicode="&#59188;" d="M512-64A448 448 0 1 1 512 832a448 448 0 0 1 0-896zM473.6 640h76.8v-76.8H473.6V640z m6.784-160h64V128h-64V480z" horiz-adv-x="1024" />
<glyph glyph-name="icon_folder_open" unicode="&#59189;" d="M160 720.384h251.456L544 614.784h320v64H566.4l-132.608 105.6H160v-64zM160 614.72a64 64 0 0 1-64-64V64a64 64 0 0 1 64-64h704a64 64 0 0 1 64 64V445.12a64 64 0 0 1-64 64H523.2l-132.608 105.6H160z m0-64h208.256l132.544-105.6H864V64h-704V550.72z" horiz-adv-x="1024" />
<glyph glyph-name="icon_help_circle_filled" unicode="&#59190;" d="M959.616 384a448 448 0 1 1-896 0 448 448 0 0 1 896 0zM371.392 471.616c0 77.312 62.848 140.224 140.224 140.224 77.44 0 140.288-62.912 140.288-140.224 0-62.08-47.552-110.144-95.04-129.536a21.632 21.632 0 0 1-13.248-20.16v-51.008h-64V321.92c0 35.84 21.76 66.496 52.928 79.36l0.128 0.064c31.68 12.864 55.232 42.048 55.232 70.272 0 41.984-34.24 76.224-76.288 76.224-41.984 0-76.224-34.24-76.224-76.224h-64z m106.496-290.688a33.728 33.728 0 1 0 67.456 0 33.728 33.728 0 0 0-67.456 0z" horiz-adv-x="1024" />
<glyph glyph-name="icon_help_circle" unicode="&#59191;" d="M473.216 153.6a38.4 38.4 0 1 0 76.8 0 38.4 38.4 0 0 0-76.8 0zM511.616 639.616A155.328 155.328 0 0 1 356.48 484.416h64c0 50.24 40.96 91.2 91.2 91.2s91.2-40.96 91.2-91.2c0-34.432-28.416-68.928-65.6-84.032h-0.128c-33.92-14.08-57.472-47.36-57.472-86.272V256h64v58.112c0 12.416 7.36 22.72 17.792 27.008 52.992 21.568 105.408 74.944 105.408 143.296a155.328 155.328 0 0 1-155.2 155.2zM959.616 384a448 448 0 1 1-896 0 448 448 0 0 1 896 0z m-64 0a384 384 0 1 0-768 0 384 384 0 0 0 768 0z" horiz-adv-x="1024" />
<glyph glyph-name="icon_image" unicode="&#59192;" d="M640 384a128 128 0 1 1 0 256 128 128 0 0 1 0-256z m0 64a64 64 0 1 1 0 128 64 64 0 0 1 0-128zM128 64a64 64 0 0 1 64-64h640a64 64 0 0 1 64 64V704a64 64 0 0 1-64 64H192a64 64 0 0 1-64-64v-640z m64 82.752l192 192L658.752 64H192v82.752z m0 90.496V704h640v-640h-82.752L384 429.248l-192-192z" horiz-adv-x="1024" />
<glyph glyph-name="icon_gender_male" unicode="&#59193;" d="M832 665.6a38.4 38.4 0 0 1-38.4 38.4H576v-64h152.512l-237.44-237.44a224 224 0 1 1 44.352-46.08L768 588.992V448h64V665.6z m-591.552-553.152a160 160 0 1 0 226.304 226.304 160 160 0 0 0-226.304-226.304z" horiz-adv-x="1024" />
<glyph glyph-name="icon_fullsreen" unicode="&#59194;" d="M224 626.752V448h-64V704a32 32 0 0 0 32 32h256v-64H269.248l201.408-201.344-45.312-45.312L224 626.752zM800 141.248V320h64v-256a32 32 0 0 0-32-32H576v64h178.752L553.344 297.344l45.312 45.312 201.344-201.408z" horiz-adv-x="1024" />
<glyph glyph-name="icon_image_error" unicode="&#59195;" d="M128 64V384h64v-146.752l192 192L749.248 64H832V704H512V768h320a64 64 0 0 0 64-64v-640a64 64 0 0 0-64-64H192a64 64 0 0 0-64 64z m256 274.752l-192-192V64h466.752L384 338.752zM768 512a128 128 0 1 0-256 0 128 128 0 0 0 256 0z m-64 0a64 64 0 1 1-128 0 64 64 0 0 1 128 0zM402.048 540.16l-45.248-45.184-90.496 90.496-90.496-90.496-45.312 45.248 90.56 90.496-90.56 90.496 45.312 45.248L266.24 675.968l90.496 90.496 45.248-45.248-90.496-90.496 90.496-90.496z" horiz-adv-x="1024" />
<glyph glyph-name="icon_folder_add" unicode="&#59196;" d="M96 704a64 64 0 0 0 64 64h229.76l132.608-96H832a64 64 0 0 0 64-64v-256h-64v256H501.632L369.088 704H160v-576h384v-64h-384a64 64 0 0 0-64 64V704zM768-64v128h-128v64h128v128h64v-128h128v-64h-128v-128h-64z" horiz-adv-x="1024" />
<glyph glyph-name="icon_file_excel" unicode="&#59197;" d="M224 768v-768H512v-64H223.68c-30.4 0-63.68 21.568-63.68 59.008V772.992c0 37.44 33.28 59.008 63.68 59.008h343.68a64 64 0 0 0 45.76-19.2l232.576-237.056a64 64 0 0 0 18.304-44.8V416h-64V511.168h-256V768h-320z m384-41.344v-151.488h148.608L608 726.656zM661.504 269.312v53.76h-64v-53.76c0-16.512 5.632-32.512 16-45.44l76.16-94.784-76.16-94.848c-10.368-12.864-16-28.864-16-45.44v-53.76h64v53.76c0 1.92 0.64 3.84 1.92 5.376l67.328 83.84 67.392-83.84c1.216-1.536 1.856-3.392 1.856-5.312v-53.76h64v53.76c0 16.512-5.632 32.512-16 45.44l-76.16 94.72 76.16 94.848c10.368 12.928 16 28.928 16 45.44v53.76h-64v-53.76c0-1.92-0.64-3.84-1.92-5.312l-67.328-83.84-67.328 83.84a8.448 8.448 0 0 0-1.92 5.312z" horiz-adv-x="1024" />
<glyph glyph-name="icon_forward" unicode="&#59198;" d="M944.512 408.96a32 32 0 0 0 0-49.92L583.68 70.912a32 32 0 0 0-51.904 24.96V368.96a31.936 31.936 0 0 0-7.808-9.6L180.48 73.28a32 32 0 0 0-52.48 24.576V670.208a32 32 0 0 0 52.48 24.576l343.488-286.208a31.872 31.872 0 0 0 7.808-9.6V672.128a32 32 0 0 0 51.904 24.96l360.832-288z m-348.8 196.608v-443.136L873.344 384 595.776 605.568zM192 601.92v-435.84L453.504 384 192 601.92z" horiz-adv-x="1024" />
<glyph glyph-name="icon_internet" unicode="&#59199;" d="M70.4 390.4a441.6 441.6 0 1 0 883.2 0v-12.8a441.6 441.6 0 1 0-883.2 0v12.8z m818.368-38.4h-192a631.232 631.232 0 0 0-125.184-347.328A377.728 377.728 0 0 1 888.768 352z m-192 64h192A377.792 377.792 0 0 1 571.52 763.328 631.232 631.232 0 0 0 696.768 416z m-64.064 0A567.36 567.36 0 0 1 512 735.808 567.36 567.36 0 0 1 391.296 416h241.408z m-305.472-64h-192a377.728 377.728 0 0 1 317.184-347.328A631.296 631.296 0 0 0 327.232 352z m0 64A631.296 631.296 0 0 0 452.48 763.328 377.728 377.728 0 0 1 135.232 416h192z m305.472-64H391.296A567.36 567.36 0 0 1 512 32.192 567.36 567.36 0 0 1 632.704 352z" horiz-adv-x="1024" />
<glyph glyph-name="icon_check_circle_filled" unicode="&#59121;" d="M512-64A448 448 0 1 1 512 832a448 448 0 0 1 0-896zM288 370.752l45.248 45.248L448 301.248 690.752 544l45.248-45.248-288-288-160 160z" horiz-adv-x="1024" />
<glyph glyph-name="icon_chevron_right_circle" unicode="&#59122;" d="M397.248 562.752L576 384l-178.752-178.752 45.248-45.248 224 224-224 224-45.248-45.248zM512-64A448 448 0 1 0 512 832a448 448 0 0 0 0-896z m0 64A384 384 0 1 1 512 768a384 384 0 0 1 0-768z" horiz-adv-x="1024" />
<glyph glyph-name="icon_creditcard" unicode="&#59123;" d="M224 192h192v64h-192v-64zM960 128V640a64 64 0 0 1-64 64H128a64 64 0 0 1-64-64v-512a64 64 0 0 1 64-64h768a64 64 0 0 1 64 64z m-64 512v-96H128V640h768zM128 128V480h768V128H128z" horiz-adv-x="1024" />
<glyph glyph-name="icon_close_circle_filled" unicode="&#59124;" d="M960 384A448 448 0 1 1 64 384a448 448 0 0 1 896 0zM362.88 579.328L512 429.44l149.12 149.952 45.312-45.12L557.12 384l149.312-150.272-45.376-45.056L512 338.56l-149.12-150.016-45.312 45.184L466.88 384 317.568 534.208l45.376 45.12z" horiz-adv-x="1024" />
<glyph glyph-name="icon_circle" unicode="&#59125;" d="M512 832a448 448 0 1 0 0-896A448 448 0 0 0 512 832z m0-64a384 384 0 1 1 0-768A384 384 0 0 1 512 768z" horiz-adv-x="1024" />
<glyph glyph-name="icon_chevron_left_circle" unicode="&#59126;" d="M626.752 205.248L448 384l178.752 178.752-45.248 45.248-224-224 224-224 45.248 45.248zM512 832a448 448 0 1 0 0-896A448 448 0 0 0 512 832z m0-64a384 384 0 1 1 0-768A384 384 0 0 1 512 768z" horiz-adv-x="1024" />
<glyph glyph-name="icon_chevron_left_double" unicode="&#59127;" d="M834.56 610.56l-58.816 58.88L490.304 384l285.44-285.44 58.88 58.88L608 384l226.56 226.56zM514.56 610.56l-58.816 58.88L170.304 384l285.44-285.44 58.88 58.88L288 384l226.56 226.56z" horiz-adv-x="1024" />
<glyph glyph-name="icon_chevron_right" unicode="&#59128;" d="M413.44 98.56l-58.816 58.88L581.184 384l-226.56 226.56 58.88 58.88L698.88 384l-285.44-285.44z" horiz-adv-x="1024" />
<glyph glyph-name="icon_control_platform" unicode="&#59129;" d="M927.68 624L542.08 846.72a59.968 59.968 0 0 1-60.032 0L96.32 624v-445.376c0-21.44 11.456-41.216 30.016-51.968L512-96l385.728 222.72a59.968 59.968 0 0 1 29.952 51.904V624zM512 420.992L192.256 605.568 512 790.144l319.68-184.576L512 420.992z m32.064-55.488l319.68 184.576v-369.088L544-3.52V365.44z m-64 0v-369.024l-319.744 184.512V550.144L480 365.44z" horiz-adv-x="1024" />
<glyph glyph-name="icon_close" unicode="&#59130;" d="M512 325.12l196.864-196.8 58.88 58.88L570.752 384l196.864 196.864-58.816 58.88L512 442.752 315.136 639.68l-58.88-58.88L453.248 384l-196.864-196.864 58.88-58.88L512 325.248z" horiz-adv-x="1024" />
<glyph glyph-name="icon_check" unicode="&#59131;" d="M411.776 260.992l398.208 398.272 58.88-58.88-457.088-457.024-285.44 285.44 58.88 58.816 226.56-226.56z" horiz-adv-x="1024" />
<glyph glyph-name="icon_chevron_right_double" unicode="&#59132;" d="M189.44 157.44l58.816-58.88L533.696 384l-285.44 285.44-58.88-58.88L416 384l-226.56-226.56z m320 0l58.816-58.88L853.696 384l-285.44 285.44-58.88-58.88L736 384l-226.56-226.56z" horiz-adv-x="1024" />
<glyph glyph-name="icon_check_rectangle_filled" unicode="&#59133;" d="M128 64a64 64 0 0 1 64-64h640a64 64 0 0 1 64 64V704a64 64 0 0 1-64 64H192a64 64 0 0 1-64-64v-640z m320 233.152l241.6 241.6 45.248-45.248L448 206.656 288.832 365.76l45.312 45.248L448 297.088z" horiz-adv-x="1024" />
<glyph glyph-name="icon_cloud_upload" unicode="&#59134;" d="M302.72 495.168l-45.568-5.312C185.408 481.536 128 419.008 128 341.376c0-77.44 56.96-139.648 128-148.352v-64.32c-107.328 8.896-192 100.864-192 212.608 0 109.76 81.28 199.936 185.792 212.16C276.032 676.48 383.552 768 512 768c128.448 0 235.968-91.456 262.208-214.528 104.576-12.16 185.792-102.4 185.792-212.16 0-111.744-84.672-203.712-192-212.608v64.32c71.04 8.704 128 70.912 128 148.288 0 77.696-57.344 140.16-129.152 148.544l-45.632 5.312-9.6 44.928C691.392 634.816 609.024 704 512 704 414.976 704 332.608 634.88 312.32 540.096l-9.6-44.928zM392.96 209.92l86.912 85.248 2.176-327.616 64.64 0.448-2.112 326.464 87.872-85.696 45.696 44.8-144.128 140.544a32 32 0 0 1-44.736 0l-142.08-139.52 45.824-44.672z" horiz-adv-x="1024" />
<glyph glyph-name="icon_chevron_up_circle" unicode="&#59135;" d="M333.248 269.248L512 448l178.752-178.752 45.248 45.248-224 224-224-224 45.248-45.248zM960 384A448 448 0 1 0 64 384a448 448 0 0 0 896 0z m-64 0A384 384 0 1 1 128 384a384 384 0 0 1 768 0z" horiz-adv-x="1024" />
<glyph glyph-name="icon_chevron_down_circle" unicode="&#59136;" d="M690.752 498.752L512 320 333.248 498.752l-45.248-45.248 224-224 224 224-45.248 45.248zM64 384a448 448 0 1 0 896 0A448 448 0 0 0 64 384z m64 0a384 384 0 1 1 768 0A384 384 0 0 1 128 384z" horiz-adv-x="1024" />
<glyph glyph-name="icon_chevron_up_rectangle" unicode="&#59137;" d="M333.248 269.248L512 448l178.752-178.752 45.248 45.248-224 224-224-224 45.248-45.248zM128 704a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64v-640a64 64 0 0 0-64-64H192a64 64 0 0 0-64 64V704z m64 0v-640h640V704H192z" horiz-adv-x="1024" />
<glyph glyph-name="icon_close_rectangle" unicode="&#59138;" d="M308.352 225.6L466.752 384 308.352 542.4l45.248 45.248L512 429.248l158.4 158.4 45.248-45.248L557.248 384l158.4-158.4-45.248-45.248L512 338.752l-158.4-158.4-45.248 45.248zM192 0a64 64 0 0 0-64 64V704a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64v-640a64 64 0 0 0-64-64H192z m0 64h640V704H192v-640z" horiz-adv-x="1024" />
<glyph glyph-name="icon_chevron_down_rectangle" unicode="&#59139;" d="M690.752 498.752L512 320 333.248 498.752l-45.248-45.248 224-224 224 224-45.248 45.248zM896 64a64 64 0 0 0-64-64H192a64 64 0 0 0-64 64V704a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64v-640z m-64 0V704H192v-640h640z" horiz-adv-x="1024" />
<glyph glyph-name="icon_chevron_left" unicode="&#59140;" d="M610.56 669.44l58.816-58.88L442.816 384l226.56-226.56-58.88-58.88L325.12 384l285.44 285.44z" horiz-adv-x="1024" />
<glyph glyph-name="icon_check_circle" unicode="&#59141;" d="M288 370.752l160-160 288 288-45.248 45.248L448 301.248 333.248 416l-45.248-45.248zM263.104 756.48a448 448 0 1 0 497.792-744.96A448 448 0 0 0 263.104 756.48z m35.584-691.776a384 384 0 1 1 426.624 638.592 384 384 0 0 1-426.624-638.592z" horiz-adv-x="1024" />
<glyph glyph-name="icon_chevron_right_rectangle" unicode="&#59142;" d="M397.248 562.752L576 384l-178.752-178.752 45.248-45.248 224 224-224 224-45.248-45.248zM832 768a64 64 0 0 0 64-64v-640a64 64 0 0 0-64-64H192a64 64 0 0 0-64 64V704a64 64 0 0 0 64 64h640z m0-64H192v-640h640V704z" horiz-adv-x="1024" />
<glyph glyph-name="icon_check_rectangle" unicode="&#59143;" d="M689.6 538.752L448 297.152l-113.92 113.92-45.248-45.312L448 206.72l286.848 286.848-45.248 45.248zM192 0a64 64 0 0 0-64 64V704a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64v-640a64 64 0 0 0-64-64H192z m0 64h640V704H192v-640z" horiz-adv-x="1024" />
<glyph glyph-name="icon_close_circle" unicode="&#59144;" d="M318.72 236.032L466.816 384 318.72 531.968l45.248 45.248L512 429.248l147.968 147.968 45.248-45.248L557.248 384l147.968-147.968-45.248-45.248L512 338.752 364.032 190.72l-45.248 45.248zM512 832a448 448 0 1 0 0-896A448 448 0 0 0 512 832z m0-64a384 384 0 1 1 0-768A384 384 0 0 1 512 768z" horiz-adv-x="1024" />
<glyph glyph-name="icon_cloud" unicode="&#59145;" d="M302.72 431.296l9.6 44.864C332.672 570.944 415.04 640.064 512 640.064s179.392-69.12 199.68-163.904l9.6-44.864 45.568-5.376C838.656 417.6 896 355.072 896 277.44 896 193.792 829.632 128 750.912 128H273.088C194.368 128.064 128 193.92 128 277.376c0 77.696 57.344 140.16 129.216 148.544l45.568 5.376z m471.488 58.24C747.968 612.672 640.448 704 512 704c-128.448 0-235.968-91.392-262.208-214.528C145.216 477.376 64 387.136 64 277.376c0-117.632 93.76-213.312 209.088-213.312h477.824c115.328 0 209.088 95.68 209.088 213.312 0 109.76-81.28 199.936-185.792 212.16z" horiz-adv-x="1024" />
<glyph glyph-name="icon_chevron_down" unicode="&#59146;" d="M226.56 482.56l58.88 58.88L512 314.88l226.56 226.56 58.88-58.88L512 197.12 226.56 482.56z" horiz-adv-x="1024" />
<glyph glyph-name="icon_delete" unicode="&#59147;" d="M384 128V512h64v-384H384zM576 512v-384h64V512H576zM672 704H896v-64h-64v-640a64 64 0 0 0-64-64H256a64 64 0 0 0-64 64V640H128V704h224V780.8a51.2 51.2 0 0 0 51.2 51.2h217.6a51.2 51.2 0 0 0 51.2-51.2V704z m-256 0h192V768h-192v-64zM256 640v-640h512V640H256z" horiz-adv-x="1024" />
<glyph glyph-name="icon_chevron_up" unicode="&#59148;" d="M797.44 285.44l-58.88-58.88L512 453.12l-226.56-226.56-58.88 58.88L512 570.752l285.44-285.44z" horiz-adv-x="1024" />
<glyph glyph-name="icon_code" unicode="&#59149;" d="M572.16 732.288L389.952 52.288l61.824-16.576L633.984 715.712l-61.824 16.576zM137.6 384l219.2-219.2-45.248-45.248L74.24 356.864a38.4 38.4 0 0 0 0 54.272l237.312 237.312 45.248-45.248L137.6 384zM886.144 384l-220.16-217.728 44.928-45.44 238.656 235.84a38.4 38.4 0 0 1 0 54.656l-238.656 235.904-44.992-45.504L886.144 384z" horiz-adv-x="1024" />
<glyph glyph-name="icon_dashboard" unicode="&#59150;" d="M887.936 581.952L600.128 294.016l-45.312 45.312 288 287.872 45.248-45.248zM513.408 188.672a64 64 0 1 0 0 128 64 64 0 0 0 0-128z m0-64a128 128 0 1 1 0 256 128 128 0 0 1 0-256zM512 672a416 416 0 0 1-341.44-653.696l-52.48-36.608A480 480 0 0 0 734.72 681.344l-29.76-56.704A414.08 414.08 0 0 1 512 672z m416-416a414.08 414.08 0 0 1-46.848 192l56.768 29.568A478.08 478.08 0 0 0 992 256a477.952 477.952 0 0 0-86.08-274.304l-52.48 36.608A413.952 413.952 0 0 1 928 256z" horiz-adv-x="1024" />
<glyph glyph-name="icon_clear" unicode="&#59151;" d="M448 640h128V768H448v-128z m192 128v-128h192a64 64 0 0 0 64-64v-128a64 64 0 0 0-54.976-63.36l44.544-311.616a64 64 0 0 0-63.36-73.024H201.792a64 64 0 0 0-63.36 73.024L183.04 384.64A64 64 0 0 0 128 448V576a64 64 0 0 0 64 64h192V768a64 64 0 0 0 64 64h128a64 64 0 0 0 64-64z m136.512-320H832V576H192v-128h584.512z m0-64H247.488l-45.696-320H320v128h64v-128h96v128h64v-128H640v128h64v-128h118.208l-45.696 320z" horiz-adv-x="1024" />
<glyph glyph-name="icon_chevron_left_rectangle" unicode="&#59152;" d="M626.752 205.248L448 384l178.752 178.752-45.248 45.248-224-224 224-224 45.248 45.248zM192 0a64 64 0 0 0-64 64V704a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64v-640a64 64 0 0 0-64-64H192z m0 64h640V704H192v-640z" horiz-adv-x="1024" />
<glyph glyph-name="icon_cloud_download" unicode="&#59153;" d="M302.72 495.168l-45.568-5.312C185.408 481.536 128 419.008 128 341.376c0-77.44 56.96-139.648 128-148.352v-64.32c-107.328 8.896-192 100.864-192 212.608 0 109.76 81.28 199.936 185.792 212.16C276.032 676.48 383.552 768 512 768c128.448 0 235.968-91.456 262.208-214.528 104.576-12.16 185.792-102.4 185.792-212.16 0-111.744-84.672-203.712-192-212.608v64.32c71.04 8.704 128 70.912 128 148.288 0 77.696-57.344 140.16-129.152 148.544l-45.632 5.312-9.6 44.928C691.392 634.816 609.024 704 512 704 414.976 704 332.608 634.88 312.32 540.096l-9.6-44.928zM627.008 172.8l-82.816-82.496V384.192H480.128v-293.888l-82.816 82.56-45.312-45.248 137.6-137.088a32 32 0 0 1 45.12 0l137.6 137.088-45.312 45.184z" horiz-adv-x="1024" />
<glyph glyph-name="icon_desktop" unicode="&#59154;" d="M160 192h320v-128H192v-64h640v64H544v128h320a64 64 0 0 1 64 64V704a64 64 0 0 1-64 64h-704a64 64 0 0 1-64-64v-448a64 64 0 0 1 64-64z m0 512h704v-448h-704V704z" horiz-adv-x="1024" />
<glyph glyph-name="icon_ellipsis" unicode="&#59155;" d="M192 320a64 64 0 1 0 0 128 64 64 0 0 0 0-128zM448 384a64 64 0 1 1 128 0 64 64 0 0 1-128 0zM768 384a64 64 0 1 1 128 0 64 64 0 0 1-128 0z" horiz-adv-x="1024" />
<glyph glyph-name="icon_edit" unicode="&#59157;" d="M696.448 784.832l207.552-207.552 45.248 45.248L741.76 830.08l-45.248-45.248zM150.528 8.768l231.232 46.208 467.072 467.072L641.216 729.6 174.208 262.592l-46.272-231.232a19.2 19.2 0 0 1 22.592-22.592z m490.688 630.4l117.12-117.12-408.128-408.064-146.304-29.312 29.248 146.368 408.064 408.064z" horiz-adv-x="1024" />
<glyph glyph-name="icon_download" unicode="&#59158;" d="M784.896 523.904L544 283.072V864h-64v-580.928L239.104 523.904l-45.248-45.248 295.488-295.488a32 32 0 0 1 45.312 0l295.488 295.488-45.248 45.248zM128 192v-128a64 64 0 0 1 64-64h640a64 64 0 0 1 64 64v128h-64v-128H192v128H128z" horiz-adv-x="1024" />
<glyph glyph-name="icon_discount_filled" unicode="&#59159;" d="M447.168 554.88A75.008 75.008 0 1 0 341.12 448.896 75.008 75.008 0 0 0 447.168 554.88zM128 401.28a64 64 0 0 1 18.752-45.248l378.368-378.368a64 64 0 0 1 90.496 0l302.72 302.72a64 64 0 0 1 0 90.496L539.968 749.248A64 64 0 0 1 494.72 768H128v-366.72z m364.416 198.912a139.008 139.008 0 1 0-196.608-196.608 139.008 139.008 0 0 0 196.608 196.608z" horiz-adv-x="1024" />
<glyph glyph-name="icon_caret_down" unicode="&#59081;" d="M512 234.688L256 576h512l-256-341.312z m-25.6-72.576a32 32 0 0 1 51.2 0l320 426.688A32 32 0 0 1 832 640H192a32 32 0 0 1-25.6-51.2l320-426.688z" horiz-adv-x="1024" />
<glyph glyph-name="icon_backtop" unicode="&#59082;" d="M127.936 704.064h768v64h-768v-64zM216.128 241.28l263.04 258.24v-553.536h64.64V499.84l267.52-260.928 45.76 44.8-323.2 315.264a32 32 0 0 1-44.8-0.064L170.24 285.952l45.824-44.608z" horiz-adv-x="1024" />
<glyph glyph-name="icon_caret_right" unicode="&#59083;" d="M725.376 384L384 128V640l341.376-256z m72.512-25.6a32 32 0 0 1 0 51.2L371.2 729.6A32 32 0 0 1 320 704v-640a32 32 0 0 1 51.2-25.6l426.688 320z" horiz-adv-x="1024" />
<glyph glyph-name="icon_bulletpoint" unicode="&#59084;" d="M896 704H320v-64h576V704zM224 704H128v-64h96V704zM320 416h576v-64H320v64zM128 416h96v-64H128v64zM320 128h576v-64H320v64zM128 128h96v-64H128v64z" horiz-adv-x="1024" />
<glyph glyph-name="icon_caret_right_small" unicode="&#59085;" d="M384 576v-384l288 192L384 576z" horiz-adv-x="1024" />
<glyph glyph-name="icon_add" unicode="&#59086;" d="M470.4 342.4v-246.4h83.2V342.4h246.4v83.2H553.6V672h-83.2v-246.4H224v-83.2h246.4z" horiz-adv-x="1024" />
<glyph glyph-name="icon_caret_left" unicode="&#59087;" d="M298.688 384L640 640v-512L298.688 384z m-72.512 25.6a32 32 0 0 1 0-51.2l426.624-320a32 32 0 0 1 51.2 25.6V704a32 32 0 0 1-51.2 25.6l-426.624-320z" horiz-adv-x="1024" />
<glyph glyph-name="icon_caret_down_small" unicode="&#59088;" d="M704 512H320l192-288L704 512z" horiz-adv-x="1024" />
<glyph glyph-name="icon_caret_left_small" unicode="&#59089;" d="M672 576v-384L384 384l288 192z" horiz-adv-x="1024" />
<glyph glyph-name="chart-bar" unicode="&#59090;" d="M480 768v-768h64V768h-64zM160 512v-512h64V512h-64zM800 0v256h64v-256h-64z" horiz-adv-x="1024" />
<glyph glyph-name="icon_arrow_left" unicode="&#59091;" d="M250.496 352l233.408-233.344-45.312-45.248-296.96 297.024a19.2 19.2 0 0 0 0 27.2l296.96 296.96 45.312-45.184L250.496 416H896v-64H250.496z" horiz-adv-x="1024" />
<glyph glyph-name="icon_calendar" unicode="&#59092;" d="M640 704H384V800H320V704H192a64 64 0 0 1-64-64v-576a64 64 0 0 1 64-64h640a64 64 0 0 1 64 64V640a64 64 0 0 1-64 64h-128V800h-64V704zM320 576h64V640h256v-64h64V640h128v-128H192V640h128v-64zM192 448h640v-384H192V448z" horiz-adv-x="1024" />
<glyph glyph-name="icon_chart_pie" unicode="&#59093;" d="M960 384A448 448 0 1 0 64 384a448 448 0 0 0 896 0z m-65.28-32H480V766.72a384 384 0 1 1 414.72-414.72z m0 64A384.064 384.064 0 0 1 544 766.72V416h350.72z" horiz-adv-x="1024" />
<glyph glyph-name="icon_arrow_right" unicode="&#59094;" d="M773.504 416L540.096 649.344l45.248 45.248 297.088-297.024a19.2 19.2 0 0 0 0-27.136l-297.088-297.088-45.248 45.248L773.504 352H128v64h645.504z" horiz-adv-x="1024" />
<glyph glyph-name="icon_caret_up_small" unicode="&#59095;" d="M704 224H320L512 512l192-288z" horiz-adv-x="1024" />
<glyph glyph-name="icon_browse" unicode="&#59097;" d="M696.32 384a184.32 184.32 0 1 0-368.64 0 184.32 184.32 0 0 0 368.64 0z m-64 0a120.32 120.32 0 1 1-240.64 0 120.32 120.32 0 0 1 240.64 0zM71.488 369.28c86.016-168.96 255.04-273.28 440.832-273.28 185.152 0 354.176 104.32 440.192 273.28L960 384l-7.488 14.72C866.56 567.04 697.472 672 512.32 672c-185.792 0-354.816-104.96-440.832-273.28L64 384l7.488-14.72z m440.832-209.28C355.2 160 212.416 245.12 135.04 384 212.416 522.88 355.2 608 512.32 608c156.48 0 299.264-85.12 377.216-224-77.312-138.88-220.736-224-377.216-224z" horiz-adv-x="1024" />
<glyph glyph-name="icon_books" unicode="&#59099;" d="M511.936 302.208l-256-179.2v581.12h512v-581.12l-256 179.2z m0-78.08l269.632-188.8a32 32 0 0 1 50.368 26.24V704.064a64 64 0 0 1-64 64h-512a64 64 0 0 1-64-64v-642.56a32 32 0 0 1 50.368-26.24l269.632 188.8z" horiz-adv-x="1024" />
<glyph glyph-name="icon_app" unicode="&#59100;" d="M720 784a192 192 0 1 1 0-384 192 192 0 0 1 0 384z m-128-192a128 128 0 1 0 256 0 128 128 0 0 0-256 0zM128 704a64 64 0 0 0 64 64h224a64 64 0 0 0 64-64v-224a64 64 0 0 0-64-64H192a64 64 0 0 0-64 64V704z m64 0v-224h224V704H192zM128 288a64 64 0 0 0 64 64h224a64 64 0 0 0 64-64V64a64 64 0 0 0-64-64H192a64 64 0 0 0-64 64V288z m64 0V64h224V288H192zM544 288a64 64 0 0 0 64 64H832a64 64 0 0 0 64-64V64a64 64 0 0 0-64-64H608a64 64 0 0 0-64 64V288z m64-224H832V288H608V64z" horiz-adv-x="1024" />
<glyph glyph-name="icon_arrow_up" unicode="&#59101;" d="M480 645.504L246.656 412.096l-45.248 45.248 297.024 297.088a19.2 19.2 0 0 0 27.136 0l297.088-297.088-45.248-45.248L544 645.504V0h-64V645.504z" horiz-adv-x="1024" />
<glyph glyph-name="icon_backward" unicode="&#59103;" d="M79.488 359.04a32 32 0 0 0 0 49.92l360.768 288.064a32 32 0 0 0 51.968-24.96v-273.024a31.936 31.936 0 0 0 7.808 9.6l343.488 286.144a32 32 0 0 0 52.48-24.576v-572.416a32 32 0 0 0-52.48-24.576L500.032 359.424a31.936 31.936 0 0 0-7.808 9.6v-273.088a32 32 0 0 0-51.968-24.96l-360.768 288z m348.8-196.608V605.568L150.656 384l277.504-221.568zM832 166.08v435.84L570.496 384 832 166.08z" horiz-adv-x="1024" />
<glyph glyph-name="icon_cart" unicode="&#59104;" d="M64 704h100.864l88.896-533.248a51.2 51.2 0 0 1 50.56-42.752H896v64H315.136L293.76 320h552.576A51.2 51.2 0 0 1 896 358.784l54.4 217.6A51.2 51.2 0 0 1 900.736 640H240.448l-14.208 85.248A51.2 51.2 0 0 1 175.68 768H64v-64z m772.352-320H283.136l-32 192h633.216l-48-192zM304-32a48 48 0 1 1 0 96 48 48 0 0 1 0-96zM820.032-32a48 48 0 1 1 0 96 48 48 0 0 1 0-96z" horiz-adv-x="1024" />
<glyph glyph-name="icon_attach" unicode="&#59105;" d="M776.128 649.216a129.088 129.088 0 0 1-181.952-0.512l-461.44-461.44-45.248 45.248 461.44 461.44a193.088 193.088 0 1 0 273.024-273.088l-373.76-373.76A120.576 120.576 0 0 0 277.696 217.6l363.136 363.136 45.248-45.248-363.136-363.136a56.512 56.512 0 1 1 80-80l373.76 373.76a129.088 129.088 0 0 1-0.64 183.104z" horiz-adv-x="1024" />
<glyph glyph-name="chart" unicode="&#59106;" d="M288 128V416h64V128h-64zM480 608V128h64V608h-64zM672 128V320h64v-192h-64zM128 704a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64v-640a64 64 0 0 0-64-64H192a64 64 0 0 0-64 64V704z m64 0v-640h640V704H192z" horiz-adv-x="1024" />
<glyph glyph-name="icon_chat" unicode="&#59107;" d="M296.832 224H832V640H192v-503.36L296.832 224z m-137.344-197.76A19.2 19.2 0 0 0 128 40.96V640a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64v-416a64 64 0 0 0-64-64H320l-160.512-133.76z" horiz-adv-x="1024" />
<glyph glyph-name="icon_add_rectangle" unicode="&#59108;" d="M480 192V352H320v64h160V576h64v-160H704v-64H544V192h-64zM192 0a64 64 0 0 0-64 64V704a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64v-640a64 64 0 0 0-64-64H192z m0 64h640V704H192v-640z" horiz-adv-x="1024" />
<glyph glyph-name="icon_add_circle" unicode="&#59109;" d="M480 352h-192v64h192v192h64v-192h192v-64h-192v-192h-64v192zM512-64A448 448 0 1 1 512 832a448 448 0 0 1 0-896z m0 64A384 384 0 1 0 512 768a384 384 0 0 0 0-768z" horiz-adv-x="1024" />
<glyph glyph-name="icon_barcode" unicode="&#59110;" d="M256 768v-768H128V768h128z m640 0v-768h-128V768h128z m-192 0v-768h-64V768h64zM576 768v-768H448V768h128zM384 768v-768H320V768h64z" horiz-adv-x="1024" />
<glyph glyph-name="icon_arrow_down_rectangle" unicode="&#59111;" d="M687.744 412.992L544 269.248V608h-64v-338.752L336.256 412.992l-45.248-45.248L512 146.752l220.992 220.992-45.248 45.248zM192 0a64 64 0 0 0-64 64V704a64 64 0 0 0 64 64h640a64 64 0 0 0 64-64v-640a64 64 0 0 0-64-64H192z m0 64h640V704H192v-640z" horiz-adv-x="1024" />
<glyph glyph-name="icon_browse_off" unicode="&#59112;" d="M689.472 129.28l87.872-87.872 45.248 45.248L201.6 707.648l-45.248-45.248 77.44-77.44a505.664 505.664 0 0 1-162.304-186.24L64 384l7.488-14.72c86.016-168.96 255.04-273.28 440.832-273.28 61.696 0 121.6 11.584 177.152 33.28z m-50.048 50.048a427.008 427.008 0 0 0-127.104-19.328C355.2 160 212.416 245.12 135.04 384a438.72 438.72 0 0 0 144.384 155.264l69.376-69.376a184.32 184.32 0 0 1 248.96-248.96l41.6-41.6z m-241.92 241.92l151.68-151.68a120.32 120.32 0 0 0-151.68 151.68zM952.512 369.28L960 384l-7.488 14.72C866.56 567.04 697.472 672 512.32 672c-54.784 0-108.16-9.088-158.336-26.304l51.2-51.2A428.736 428.736 0 0 0 512.32 608c156.48 0 299.264-85.12 377.216-224a439.552 439.552 0 0 0-129.152-144.704l45.312-45.312a505.216 505.216 0 0 1 146.816 175.36zM696.32 384c0-23.936-4.608-46.784-12.864-67.776l-52.16 52.16a120.32 120.32 0 0 1-134.912 134.912L444.16 555.52A184.32 184.32 0 0 0 696.32 384z" horiz-adv-x="1024" />
<glyph glyph-name="icon_backtop_rectangle" unicode="&#59113;" d="M479.872 371.52L380.416 273.92l-45.824 44.672L512.128 492.8 691.2 318.08l-45.696-44.8-101.056 98.56V128h-64.64V371.52zM287.936 544.064h448v64h-448v-64zM191.936 768.064a64 64 0 0 1-64-64v-640a64 64 0 0 1 64-64h640a64 64 0 0 1 64 64v640a64 64 0 0 1-64 64h-640z m640-64v-640h-640v640h640z" horiz-adv-x="1024" />
<glyph glyph-name="icon_arrow_down" unicode="&#59115;" d="M544 768v-645.504l233.344 233.344 45.248-45.248-297.024-296.96a19.2 19.2 0 0 0-27.136 0l-297.088 296.96 45.312 45.248L480 122.56V768h64z" horiz-adv-x="1024" />
<glyph glyph-name="icon_call" unicode="&#59117;" d="M896 188.352a195.2 195.2 0 0 0-33.152-112.64l-8.064-10.688a129.6 129.6 0 0 0-62.72-48c-17.92-6.656-29.184-8.64-58.176-11.968-124.672-11.648-260.928 46.592-395.52 166.272-89.856 80.128-157.184 180.352-189.568 282.816C135.04 497.472 128 539.072 128 576.768c0 45.184 10.24 84.288 30.72 113.664 19.456 26.752 56.448 48.96 112 69.952a64 64 0 0 0 74.88-22.912l106.624-150.912a64 64 0 0 0-5.76-80.896l-13.888-14.144-16.768-16.256a97.92 97.92 0 0 1-10.56-12.16c-1.472-19.584 19.456-59.968 80.384-122.368l18.176-16.96c56.192-51.84 71.296-56 88.576-44.032l5.76 4.736c6.144 4.672 22.08 15.744 56.192 39.232a64 64 0 0 0 65.984 3.904l15.552-8.192c106.432-56.832 155.008-91.008 159.744-126.08l0.384-4.992z m-64-1.024c0.064-5.248-7.36 2.816-22.72 13.952-22.464 16.256-57.088 36.864-103.488 61.632l-15.168 8.064-50.432-34.816c-1.216-0.768-1.728-1.088-1.536-0.832-55.04-43.2-102.4-31.104-197.952 59.904-73.344 75.008-102.4 131.072-99.328 172.288 1.472 22.592 17.024 43.264 32.128 55.68 6.4 6.144 12.8 12.416 18.432 18.176l8 8.32-106.56 150.848c-44.864-16.96-72.64-33.664-82.56-47.232C198.912 636.16 192 609.792 192 576.768c0-30.72 6.016-65.92 17.792-103.36 28.8-91.072 89.6-181.632 171.136-254.272 122.432-108.928 242.304-160.128 346.368-150.4l16.448 2.048c11.392 1.6 17.792 3.2 25.92 6.208 14.08 5.248 25.088 13.44 34.112 26.56 17.088 20.864 26.24 47.616 27.904 72.96l0.32 10.816z" horiz-adv-x="1024" />
<glyph glyph-name="icon_caret_up" unicode="&#59118;" d="M512 533.312L768 192H256l256 341.312z m25.6 72.576a32 32 0 0 1-51.2 0l-320-426.688a32 32 0 0 1 25.6-51.2h640a32 32 0 0 1 25.6 51.2l-320 426.688z" horiz-adv-x="1024" />
<glyph glyph-name="icon_chart_bubble" unicode="&#59120;" d="M576 544a192 192 0 1 0-384 0 192 192 0 0 0 384 0z m-64 0a128 128 0 1 1-256 0 128 128 0 0 1 256 0zM896 256a160 160 0 1 0-320 0 160 160 0 0 0 320 0z m-64 0a96 96 0 1 1-192 0 96 96 0 0 1 192 0zM320 128a96 96 0 1 0-192 0 96 96 0 0 0 192 0zM832 608a64 64 0 1 1 0 128 64 64 0 0 1 0-128z" horiz-adv-x="1024" />
<glyph glyph-name="icon_data" unicode="&#59054;" d="M490.666667 853.333333C738.090667 853.333333 938.666667 652.757333 938.666667 405.333333a42.666667 42.666667 0 0 0-42.666667-42.666666h-362.666667V0a42.666667 42.666667 0 0 0-42.666666-42.666667C243.242667-42.666667 42.666667 157.909333 42.666667 405.333333S243.242667 853.333333 490.666667 853.333333z m384-533.333333a42.666667 42.666667 0 0 0 42.666666-42.666667v-256a42.666667 42.666667 0 0 0-42.666666-42.666666h-256a42.666667 42.666667 0 0 0-42.666667 42.666666v256a42.666667 42.666667 0 0 0 42.666667 42.666667h256zM490.666667 768a362.666667 362.666667 0 0 1-43.050667-722.773333l0.384-0.042667V362.666667a85.333333 85.333333 0 0 0 78.933333 85.12l6.4 0.213333h317.482667v0.384a362.752 362.752 0 0 1-349.269333 319.445333L490.666667 768z m341.333333-533.333333h-170.666667v-170.666667h170.666667v170.666667z" horiz-adv-x="1024" />
<glyph glyph-name="icon_clue" unicode="&#59055;" d="M789.333333 810.666667a149.333333 149.333333 0 0 0 42.666667-292.48v-379.605334a181.248 181.248 0 0 0-362.496 0v490.666667a96.085333 96.085333 0 1 1-192.170667 0v-379.434667A149.418667 149.418667 0 0 0 234.666667-42.666667a149.333333 149.333333 0 0 0-42.666667 292.48V629.248a181.418667 181.418667 0 1 0 362.837333 0v-490.666667a95.914667 95.914667 0 0 1 191.829334 0V518.186667A149.418667 149.418667 0 0 0 789.333333 810.666667z m-554.666666-640a64 64 0 1 1 0-128 64 64 0 0 1 0 128z m554.666666 554.666666a64 64 0 1 1 0-128 64 64 0 0 1 0 128z" horiz-adv-x="1024" />
<glyph glyph-name="icon_business_opportunity" unicode="&#59056;" d="M512 853.333333c259.2 0 469.333333-210.133333 469.333333-469.333333s-210.133333-469.333333-469.333333-469.333333S42.666667 124.8 42.666667 384 252.8 853.333333 512 853.333333z m0-85.333333a384 384 0 1 1 0-768 384 384 0 0 1 0 768zM414.165333 606.165333L512 508.373333l97.877333 97.792a42.666667 42.666667 0 0 0 56.32 3.541334l4.010667-3.541334a42.666667 42.666667 0 0 0 0-60.330666L593.664 469.333333H640a42.666667 42.666667 0 0 0 0-85.333333h-85.162667v-42.666667H640a42.666667 42.666667 0 0 0 0-85.333333h-85.162667v-85.333333a42.666667 42.666667 0 0 0-85.333333 0v85.333333H384a42.666667 42.666667 0 0 0 0 85.333333h85.504v42.666667H384a42.666667 42.666667 0 0 0 0 85.333333h46.293333L353.834667 545.834667a42.666667 42.666667 0 0 0 60.330666 60.330666z" horiz-adv-x="1024" />
<glyph glyph-name="icon_set_up" unicode="&#59048;" d="M637.44 851.797333a468.608 468.608 0 0 0 194.090667-108.586666 42.666667 42.666667 0 0 0 9.216-50.133334A85.333333 85.333333 0 0 1 917.333333 570.069333h1.194667a42.666667 42.666667 0 0 0 41.301333-29.866666 471.253333 471.253333 0 0 0 11.946667-235.306667 42.666667 42.666667 0 0 0-45.952-33.877333 85.333333 85.333333 0 0 1-73.770667-139.904 42.666667 42.666667 0 0 0-1.834666-57.088 469.205333 469.205333 0 0 0-204.117334-124.501334 42.666667 42.666667 0 0 0-52.778666 27.904 85.376 85.376 0 0 1-162.645334 0 42.666667 42.666667 0 0 0-52.778666-27.904 469.205333 469.205333 0 0 0-204.117334 124.501334 42.666667 42.666667 0 0 0-1.834666 57.088A85.333333 85.333333 0 0 1 98.133333 271.018667a42.666667 42.666667 0 0 0-45.994666 33.92 471.253333 471.253333 0 0 0 11.946666 235.264 42.666667 42.666667 0 0 0 41.386667 29.866666H106.666667a85.333333 85.333333 0 0 1 76.586666 123.008 42.666667 42.666667 0 0 0 9.216 50.133334A468.608 468.608 0 0 0 386.56 851.797333a42.666667 42.666667 0 0 0 49.408-21.76 85.333333 85.333333 0 0 1 152.149333 0 42.666667 42.666667 0 0 0 49.408 21.76zM380.330667 760.277333a384.341333 384.341333 0 0 1-106.453334-59.605333l-2.176-1.749333 2.389334-10.026667c1.450667-7.296 2.432-14.72 2.901333-22.186667l0.384-11.264a170.709333 170.709333 0 0 0-137.301333-167.424l-1.792-0.256-1.237334-5.205333a384.341333 384.341333 0 0 1-8.618666-66.218667L128 399.445333c0-10.538667 0.426667-20.949333 1.28-31.317333l1.28-13.013333 1.322667-0.213334a170.709333 170.709333 0 0 0 145.237333-160.298666l0.213333-8.533334c0-23.765333-4.906667-46.848-14.08-68.010666l-3.754666-7.893334 9.386666-7.978666a383.914667 383.914667 0 0 1 90.368-55.210667l8.917334-3.626667 4.352 6.485334a170.666667 170.666667 0 0 0 130.56 72.021333l8.917333 0.256a170.666667 170.666667 0 0 0 139.52-72.277333l4.266667-6.485334 8.96 3.626667a383.914667 383.914667 0 0 1 90.410666 55.210667l9.301334 7.978666-3.669334 7.893334a170.112 170.112 0 0 0-13.824 57.898666l-0.298666 10.154667a170.666667 170.666667 0 0 0 145.450666 168.789333l1.28 0.213334 1.365334 13.013333c0.426667 5.162667 0.725333 10.368 0.938666 15.573333l0.298667 15.744c0 28.245333-3.029333 56.064-9.002667 83.114667l-1.28 5.205333-1.749333 0.256a170.752 170.752 0 0 0-137.088 158.890667l-0.213333 8.533333c0 11.306667 1.109333 22.528 3.285333 33.450667l2.346667 10.026667-2.133334 1.749333a383.274667 383.274667 0 0 1-106.24 59.477333l-5.205333-5.717333A170.496 170.496 0 0 0 512 698.112a170.496 170.496 0 0 0-126.72 56.32l-4.992 5.845333zM512 591.445333a192 192 0 1 0 0-384 192 192 0 0 0 0 384z m0-85.333333a106.666667 106.666667 0 1 1 0-213.333333 106.666667 106.666667 0 0 1 0 213.333333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_not_bookmarked" unicode="&#59049;" d="M473.642667 829.44a42.666667 42.666667 0 0 0 76.544 0.213333l122.154666-246.186666 272.469334-39.722667a42.666667 42.666667 0 0 0 27.050666-69.077333l-3.328-3.626667-198.229333-194.048 47.104-269.653333a42.666667 42.666667 0 0 0-58.026667-46.933334l-4.096 1.962667L512 92.032l-243.242667-129.706667a42.666667 42.666667 0 0 0-62.677333 40.533334l0.554667 4.522666 47.402666 269.610667-198.485333 194.005333a42.666667 42.666667 0 0 0 18.858667 71.765334l4.821333 0.981333 273.92 39.722667 120.533333 245.973333z m38.528-115.242667L419.882667 525.696a42.666667 42.666667 0 0 0-32.213334-23.466667l-210.773333-30.549333 152.874667-149.418667a42.666667 42.666667 0 0 0 12.8-32.725333l-0.64-5.205333-36.138667-205.44 186.112 99.157333a42.666667 42.666667 0 0 0 35.328 2.176l4.821333-2.176 186.24-99.285333-35.84 205.653333a42.666667 42.666667 0 0 0 8.618667 33.92l3.541333 3.84 152.618667 149.546667-209.322667 30.549333a42.666667 42.666667 0 0 0-29.44 18.730667l-2.602666 4.522666-93.696 188.672z" horiz-adv-x="1024" />
<glyph glyph-name="icon_product" unicode="&#59050;" d="M531.072 848.810667l426.666667-213.333334 0.981333-0.469333c1.066667-0.597333 2.133333-1.194667 3.157333-1.877333l-4.138666 2.346666a42.709333 42.709333 0 0 0 8.234666-5.333333l1.024-0.896a37.802667 37.802667 0 0 0 6.954667-7.893333 38.485333 38.485333 0 0 0 2.858667-4.949334l0.64-1.28a42.666667 42.666667 0 0 0 1.28-3.029333l-1.92 4.309333a42.965333 42.965333 0 0 0 4.522666-18.730666V170.666667a42.666667 42.666667 0 0 0-23.594666-38.144l-426.666667-213.333334a41.130667 41.130667 0 0 0-4.864-2.133333l4.864 2.133333A42.666667 42.666667 0 0 0 512-85.333333l-2.133333 0.042666a42.666667 42.666667 0 0 0-1.237334 0.085334L512-85.333333a42.922667 42.922667 0 0 0-12.629333 1.877333l-1.493334 0.512a40.32 40.32 0 0 0-4.992 2.133333l-426.666666 213.333334A42.666667 42.666667 0 0 0 42.666667 170.666667V597.674667a42.368 42.368 0 0 0 4.522666 18.773333l0.384 0.725333 0.64 1.237334-1.024-2.005334c0.896 1.877333 1.962667 3.626667 3.114667 5.290667l0.512 0.725333a40.704 40.704 0 0 0 2.602667 3.285334l0.853333 0.853333a38.997333 38.997333 0 0 0 2.645333 2.602667l1.152 0.981333a38.954667 38.954667 0 0 0 7.594667 5.077333l0.597333 0.256 426.666667 213.333334a42.666667 42.666667 0 0 0 38.144 0zM128 528.298667v-331.264l341.333333-170.624v331.221333l-341.333333 170.666667z m768 0l-341.333333-170.666667v-331.221333l341.333333 170.666666V528.298667z m-170.666667 128L394.069333 490.666667 512 431.701333 843.264 597.333333 725.333333 656.298667z m-213.333333 106.666666L180.778667 597.333333 298.666667 538.368 629.930667 704 512 762.965333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_customer" unicode="&#59051;" d="M405.333333 810.666667a192 192 0 1 0 0-384 192 192 0 0 0 0 384z m0-85.333334a106.666667 106.666667 0 1 1 0-213.333333 106.666667 106.666667 0 0 1 0 213.333333z m253.738667 43.349334a42.666667 42.666667 0 0 0 58.581333 14.506666A191.872 191.872 0 0 0 810.666667 618.666667a191.872 191.872 0 0 0-93.013334-164.565334 42.666667 42.666667 0 0 0-44.032 73.130667A106.581333 106.581333 0 0 1 725.333333 618.666667c0 37.888-19.84 72.234667-51.712 91.434666a42.666667 42.666667 0 0 0-14.506666 58.581334zM452.266667 341.333333c128.042667 0 158.506667-2.474667 199.253333-23.253333a213.333333 213.333333 0 0 0 93.226667-93.226667c20.778667-40.746667 23.253333-71.210667 23.253333-199.253333v-25.6a42.666667 42.666667 0 0 0-42.666667-42.666667H85.333333a42.666667 42.666667 0 0 0-42.666666 42.666667v25.6c0 128.042667 2.474667 158.506667 23.253333 199.253333a213.333333 213.333333 0 0 0 93.226667 93.226667C199.893333 338.858667 230.4 341.333333 358.4 341.333333h93.866667z m22.485333-85.333333H335.914667c-92.16-0.341333-116.522667-2.986667-138.026667-13.952a128 128 0 0 1-55.936-55.936c-10.965333-21.504-13.610667-45.866667-13.909333-138.026667L128 42.666667h554.624v5.418666c-0.298667 88.618667-2.773333 114.56-12.672 135.509334l-1.237333 2.517333a128 128 0 0 1-55.936 55.936c-21.504 10.965333-45.866667 13.610667-138.026667 13.909333z m332.714667 43.434667a42.666667 42.666667 0 0 0 57.386666 18.645333 213.333333 213.333333 0 0 0 93.226667-93.226667c20.778667-40.746667 23.253333-71.210667 23.253333-199.253333v-25.6a42.666667 42.666667 0 0 0-85.333333 0v25.6c0 110.933333-2.133333 137.386667-13.952 160.512a128 128 0 0 1-55.936 55.893333 42.666667 42.666667 0 0 0-18.645333 57.429334z" horiz-adv-x="1024" />
<glyph glyph-name="icon_home" unicode="&#59052;" d="M530.474667 801.28l333.141333-266.496a42.666667 42.666667 0 0 0 16-33.28V-31.573333a42.666667 42.666667 0 0 0-37.674667-42.368l-4.992-0.298667H170.666667a42.666667 42.666667 0 0 0-42.666667 42.666667V501.461333a42.666667 42.666667 0 0 0 16 33.322667l333.184 266.538667a42.666667 42.666667 0 0 0 53.290667 0z m-26.666667-87.893333L213.333333 481.024v-469.888l136.746667 0.042667v245.973333a42.666667 42.666667 0 0 0 42.666667 42.666667h222.122666a42.666667 42.666667 0 0 0 42.666667-42.666667l-0.042667-245.973333 136.789334-0.042667V480.981333L503.808 713.386667z m68.352-498.901334h-136.746667v-203.306666h136.746667v203.306666z" horiz-adv-x="1024" />
<glyph glyph-name="icon_collect" unicode="&#59053;" d="M550.186667 829.653333l122.154666-246.186666 272.469334-39.722667a42.666667 42.666667 0 0 0 27.050666-69.077333l-3.328-3.626667-198.229333-194.048 47.104-269.653333a42.666667 42.666667 0 0 0-58.026667-46.933334l-4.096 1.962667L512 92.032l-243.242667-129.706667a42.666667 42.666667 0 0 0-62.677333 40.533334l0.554667 4.522666 47.402666 269.610667-198.485333 194.005333a42.666667 42.666667 0 0 0 18.858667 71.765334l4.821333 0.981333 273.92 39.722667 120.533333 245.973333a42.666667 42.666667 0 0 0 76.544 0.213333z" horiz-adv-x="1024" />
<glyph glyph-name="icon_search-outline_outlined" unicode="&#59074;" d="M702.848 132.821333A403.626667 403.626667 0 0 0 448 42.666667a405.333333 405.333333 0 1 0 405.333333 405.333333 403.626667 403.626667 0 0 0-90.154666-254.848l175.914666-175.914667a21.333333 21.333333 0 0 0 0-30.165333l-30.165333-30.165333a21.333333 21.333333 0 0 0-30.165333 0l-175.914667 175.914666zM768 448a320 320 0 1 1-640 0 320 320 0 0 1 640 0z" horiz-adv-x="1024" />
<glyph glyph-name="icon-alarmclock" unicode="&#59080;" d="M426.666667 778.24V810.666667a21.333333 21.333333 0 0 0 21.333333 21.333333h128a21.333333 21.333333 0 0 0 21.333333-21.333333v-32.426667c147.2-39.125333 256-177.066667 256-341.248V192h64a21.333333 21.333333 0 0 0 21.333334-21.333333v-42.666667a21.333333 21.333333 0 0 0-21.333334-21.333333h-810.666666A21.333333 21.333333 0 0 0 85.333333 128v42.666667a21.333333 21.333333 0 0 0 21.333334 21.333333H170.666667v244.992C170.666667 601.173333 279.466667 739.114667 426.666667 778.24zM256 192h512v244.906667c0 147.498667-114.602667 267.093333-256 267.093333s-256-119.594667-256-267.093333v-244.906667zM405.333333 42.666667h213.333334a21.333333 21.333333 0 0 0 21.333333-21.333334v-42.666666a21.333333 21.333333 0 0 0-21.333333-21.333334h-213.333334a21.333333 21.333333 0 0 0-21.333333 21.333334v42.666666a21.333333 21.333333 0 0 0 21.333333 21.333334z" horiz-adv-x="1024" />
</font>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 244 KiB

View File

@@ -0,0 +1,149 @@
/* stylelint-disable font-family-no-missing-generic-family-keyword */
@import url('./var.less');
* {
@apply box-border;
}
html,
body {
@apply m-0 h-full w-full p-0;
font-size: 14px;
font-family: 'Helvetica Neue', Arial, 'PingFang SC', 'Source Han Serif' !important;
font-weight: 400;
color: var(--text-n1);
line-height: 22px;
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
}
// 小投影
.base-box-shadow {
box-shadow: @box-base-shadow;
}
// 中层投影
.middle-box-shadow {
box-shadow: @box-middle-shadow;
}
// 大投影
.large-box-shadow {
box-shadow: @box-large-shadow;
}
/* 单行文本缩略 */
.one-line-text {
@apply overflow-hidden overflow-ellipsis whitespace-nowrap;
line-height: normal;
}
/* 修改进度条的背景颜色 */
#nprogress {
.bar {
background: var(--primary-8) !important;
}
}
/* 白色背景的tooltip */
.crm-tooltip-white {
&.n-tooltip {
color: var(--text-n1);
background-color: var(--text-n10);
box-shadow: @box-middle-shadow;
}
.n-popover-arrow {
z-index: 1;
background-color: var(--text-n10) !important;
}
}
/* error 背景tooltip */
.crm-tooltip-error {
&.n-tooltip {
color: var(--error-red);
background-color: var(--error-5);
box-shadow: @box-middle-shadow;
}
.n-popover-arrow {
z-index: 1;
background-color: var(--error-5) !important;
}
}
/* warning 背景tooltip */
.crm-tooltip-warning {
&.n-tooltip {
color: var(--warning-red);
background-color: var(--warning-5);
box-shadow: @box-middle-shadow;
}
.n-popover-arrow {
z-index: 1;
background-color: var(--warning-5) !important;
}
}
/* success 背景tooltip */
.crm-tooltip-success {
&.n-tooltip {
color: var(--success-red);
background-color: var(--success-5);
box-shadow: @box-middle-shadow;
}
.n-popover-arrow {
z-index: 1;
background-color: var(--success-5) !important;
}
}
/* primary 背景tooltip */
.crm-tooltip-primary {
&.n-tooltip {
color: var(--primary-8);
background-color: var(--primary-7);
box-shadow: @box-middle-shadow;
}
.n-popover-arrow {
z-index: 1;
background-color: var(--primary-7) !important;
}
}
// modal 对话框 title
.crm-modal-title {
.crm-modal-title();
}
/* 动态表单 */
.crm-form-create-item-desc {
@apply w-full flex-1;
margin-bottom: 4px;
font-size: 12px;
color: var(--text-n4);
}
/* 抽屉 */
.crm-drawer-content {
background-color: var(--text-n9) !important;
}
// model表单
.crm-form-modal {
.n-dialog__content {
margin-bottom: 16px;
}
.n-form-item:last-of-type {
.n-form-item-feedback-wrapper {
overflow: hidden;
min-height: 0;
line-height: 1;
}
}
}
.n-popconfirm,
.n-popover {
.n-popconfirm__action {
margin-top: 0 !important;
}
}

View File

@@ -0,0 +1,5 @@
@import url('@lib/shared/assets/style/themeVariables.less');
@import url('./var.less');
@import url('./tailwind.less');
@import url('./naive-reset.less');
@import url('./global.less');

View File

@@ -0,0 +1,581 @@
@import url('./var.less');
// 重置默认按钮聚焦
.n-button {
&.n-button--default-type {
.btn-text-sec-focus();
.btn-text-sec-hover();
.btn-text-sec-active();
.btn-text-sec-disabled();
}
}
// secondary背景按钮
.n-button {
&.n-button--default-type {
&.n-button--secondary {
.btn-base-sec-focus();
.btn-base-sec-hover();
.btn-base-sec-active();
.btn-base-sec-disabled();
}
}
}
// 主要 outline 按钮
.n-button--tertiary-type {
border: 1px solid var(--primary-8) !important;
color: var(--primary-8) !important;
.btn-outline-primary-hover();
.btn-outline-primary-active();
.btn-outline-primary-disabled();
}
// 次要边框按钮
.n-button--default-type.outline--secondary {
.btn-outline-sec-default();
.btn-outline-sec-hover();
.btn-outline-sec-active();
.btn-outline-sec-disabled();
}
// 次要文本主题按钮
.text-btn-primary {
&.n-button--primary-type {
.btn-text-default();
.btn-text-primary-hover();
.btn-text-primary-active();
.btn-text-primary-disabled();
}
}
// 文本error按钮
.text-btn-error {
&.n-button--error-type {
.btn-text-default();
.btn-text-error-hover();
.btn-text-error-active();
.btn-text-error-disabled();
}
}
// 文本warning按钮
.text-btn-warning {
&.n-button--warning-type {
.btn-text-default();
.btn-text-warning-hover();
.btn-text-warning-active();
.btn-text-warning-disabled();
}
}
// 文本success按钮
.text-btn-success {
&.n-button--success-type {
.btn-text-default();
.btn-text-success-hover();
.btn-text-success-active();
.btn-text-success-disabled();
}
}
// 文本info按钮
.text-btn-info {
&.n-button--info-type {
.btn-text-default();
.btn-text-info-hover();
.btn-text-info-active();
.btn-text-info-disabled();
}
}
// outline primary 状态按钮
.n-btn-outline-primary {
&.n-button--primary-type {
.btn-outline-primary-hover();
.btn-outline-primary-active();
.btn-outline-primary-disabled();
}
}
// outline error状态按钮
.n-btn-outline-error {
&.n-button--error-type {
.btn-outline-error-hover();
.btn-outline-error-active();
.btn-outline-error-disabled();
}
}
// outline warning状态按钮
.n-btn-outline-warning {
&.n-button--warning-type {
.btn-outline-warning-hover();
.btn-outline-warning-active();
.btn-outline-warning-disabled();
}
}
// outline success状态按钮
.n-btn-outline-success {
&.n-button--success-type {
.btn-outline-success-hover();
.btn-outline-success-active();
.btn-outline-success-disabled();
}
}
// outline info 状态按钮
.n-btn-outline-info {
&.n-button--info-type {
.btn-outline-info-hover();
.btn-outline-info-active();
.btn-outline-info-disabled();
}
}
// small 24px 按钮尺寸
.n-button--small-type {
height: 24px !important;
}
// medium 32px 按钮尺寸
.n-button--medium-type {
height: 32px !important;
}
// 消息框
.n-message,
.n-notification,
.n-dropdown,
.n-popover {
border: 1px solid var(--text-n8) !important;
box-shadow: @box-middle-shadow;
}
// 标签
.n-tag {
.n-tag__content {
overflow: hidden !important;
max-width: 144px !important;
text-overflow: ellipsis !important;
}
}
// tooltip 最大限制
.n-tooltip {
max-width: 300px;
.n-popover__content {
@apply overflow-y-auto break-all;
max-height: 30vh;
&:hover {
.crm-scroll-bar();
}
.crm-scroll-bar();
}
}
// 表格
.n-data-table {
.n-data-table-empty {
border-bottom: 1px solid var(--text-n8);
}
.n-data-table-base-table-header {
overflow-y: hidden;
}
.n-data-table-thead {
.n-data-table-tr:not(.n-data-table-tr--summary):hover {
background-color: var(--text-n10);
}
}
.n-data-table-base-table-body .n-scrollbar-rail--horizontal--bottom {
bottom: 0;
}
.n-data-table-th {
border-top: 1px solid var(--text-n8);
white-space: nowrap;
&.n-data-table-th--filterable {
padding-right: 12px !important;
}
&.n-data-table-th--sorting {
background-color: transparent;
}
&.n-data-table-th--sortable {
&:hover {
background-color: transparent;
}
}
.n-data-table-th__title-wrapper {
float: left; // 只有设置这个 排序和过滤才能拼一起
width: fit-content;
height: 22px;
white-space: normal;
.n-data-table-th__title {
flex: none !important;
}
.n-data-table-sorter {
margin-left: 8px;
}
}
// 过滤的样式
.n-data-table-filter {
position: relative;
display: inline-flex;
width: 24px;
height: 22px;
&:hover {
background-color: transparent;
}
&.n-data-table-filter--show {
background-color: transparent;
}
&.n-data-table-filter--active {
border-radius: 0 2px 2px 0;
background-color: var(--primary-7);
}
}
// 过滤时标题的样式
&:has(> .n-data-table-filter--active) {
.n-data-table-th__title-wrapper {
border-radius: 2px 0 0 2px !important;
background-color: var(--primary-7);
}
.n-data-table-th__title {
padding-left: 4px;
color: var(--primary-8);
}
}
// 排序时标题的样式
&.n-data-table-th--sorting {
.n-data-table-th__title-wrapper {
border-radius: 2px;
background-color: var(--primary-7);
}
.n-data-table-th__title {
padding-left: 4px;
color: var(--primary-8);
}
}
&.n-data-table-th--last {
.n-data-table-resize-button {
display: none;
}
}
&.n-data-table-th--fixed-right {
z-index: 3;
pointer-events: auto;
}
}
.n-data-table-td {
padding-top: 0;
padding-bottom: 0;
height: 46px;
&.n-data-table-td--sorting {
background-color: var(--text-n10);
}
.crm-table-data-draggable-handle {
cursor: move;
@apply flex items-center justify-center;
}
&.n-data-table-td--fixed-right {
z-index: 3;
}
}
&.crm-data-table-compact {
.n-data-table-th {
padding-top: 5px;
padding-bottom: 5px;
}
.n-data-table-td {
line-height: 36px;
height: 36px;
}
}
&.crm-data-table-loose {
.n-data-table-th {
padding: 10px;
}
.n-data-table-td {
line-height: 46px;
height: 46px;
}
}
}
.n-data-table--bordered {
.n-data-table-th {
border-top: none;
}
}
// 分页
.n-pagination {
.n-pagination-quick-jumper {
padding: 2px 8px;
border-radius: 3px 0 0 3px;
background-color: var(--text-n9);
.n-input__input {
text-align: center;
}
}
.n-pagination-suffix {
margin: 0;
padding-right: 8px;
border-radius: 0 3px 3px 0;
color: var(--text-n2);
background-color: var(--text-n9);
}
}
.crm-pagination--medium {
.n-base-selection-label {
height: 32px;
}
}
.crm-pagination--small {
.total {
font-size: 12px;
}
.n-base-selection-label,
.n-pagination-quick-jumper,
.n-pagination-suffix {
height: 24px;
}
.n-input-wrapper {
height: 20px;
}
}
// 模态框
.n-modal {
.n-dialog__title {
.crm-modal-title();
}
}
// 对话框
.n-dialog,
.n-drawer {
.n-base-close:not(.n-base-close--disabled) {
&:focus::before {
background: none;
}
&:hover::before {
background: var(--text-n9);
}
&:active::before {
background: var(--text-n8);
}
}
}
// 弹窗的上下比例
.n-modal-body-wrapper:not(:has(.crm-full-modal)) {
padding: 6vh 0;
box-sizing: border-box;
height: calc(100vh + 12%);
transform: translateY(-10%);
}
// small-modal
.crm-modal-small {
&.n-modal {
width: 480px;
}
}
// medium-modal
.crm-modal-medium {
&.n-modal {
width: 680px;
}
}
// large-modal
.crm-modal-large {
&.n-modal {
width: 960px;
}
}
// tabs
.n-tabs {
&.n-tabs--segment-type {
.n-tabs-tab-pad {
width: 4px;
}
.n-tabs-rail {
padding: 2px;
width: auto;
.n-tabs-capsule {
border-radius: 2px;
}
.n-tabs-tab:hover {
background-color: var(--text-n9);
}
}
&.n-tabs--medium-size {
.n-tabs-tab__label {
line-height: 22px;
}
}
&.n-tabs--small-size {
.n-tabs-tab__label {
line-height: 20px;
}
}
}
&.n-tabs--line-type {
.n-tabs-tab-pad {
width: 0;
}
.n-tabs-nav-scroll-content {
height: 48px;
}
.n-tabs-tab {
padding: 8px;
.n-tabs-tab__label {
padding: 5px 8px;
border-radius: 3px;
}
&:not(.n-tabs-tab--active):hover {
.n-tabs-tab__label {
background-color: var(--text-n9);
}
}
}
}
}
.no-content {
.n-tabs-pane-wrapper {
@apply hidden;
}
}
// 级联选择器、树形选择器
.n-cascader,
.n-tree-select,
.n-base-selection-popover {
.n-base-selection-tags {
padding: 4px;
height: 26px;
}
.n-base-selection-tag-wrapper {
padding-bottom: 0;
.n-tag {
background-color: var(--text-n8);
.n-base-close {
font-size: 12px;
color: var(--text-n4);
}
.n-tag__border {
border: none;
}
}
}
}
.n-base-selection-popover {
.n-base-selection-tag-wrapper {
padding-bottom: 8px;
}
}
// 下拉选择框
.n-base-selection,
.n-tree-select,
.n-cascader {
--n-border-focus: none !important;
--n-box-shadow-focus: none !important;
.n-base-selection-tags {
padding-left: 4px;
}
}
.n-cascader-menu {
.n-cascader-option:hover {
background-color: var(--primary-7) !important;
}
}
.n-base-selection-placeholder {
padding: 0 8px !important;
}
.n-base-select-option--selected {
background-color: var(--primary-7) !important;
&::before {
@apply hidden;
}
}
.n-base-select-option--pending,
.n-cascader-option--pending {
background-color: var(--primary-7) !important;
&::before {
@apply hidden;
}
}
.n-base-select-menu {
padding-top: 8px;
padding-bottom: 8px;
.v-vl-items {
padding-top: 0 !important;
padding-bottom: 0 !important;
}
}
.n-base-select-option__content {
@apply w-full;
}
// 树
.n-tree.n-tree--block-line .n-tree-node:not(.n-tree-node--disabled).n-tree-node--pending {
@apply bg-transparent;
}
.n-tree-node--highlight {
.n-tree-node-content__text {
border-bottom: none !important;
}
}
.n-tree-node--selected {
background: var(--n-node-color-active) !important;
}
.n-input__textarea-el {
word-break: break-all !important;
}
// 表单
.n-form-item-blank {
@apply flex-wrap;
}
.n-form.n-form--inline .n-form-item {
margin-right: 24px;
}
.n-form-item-feedback__line {
font-size: 12px;
}
.n-input--focus {
--n-box-shadow-focus: none !important;
}
// 滚动条
.n-scrollbar-rail {
z-index: 100;
}
// 标记 Badge
.n-badge.n-badge--dot {
.n-badge-sup {
width: 6px;
min-width: 6px;
height: 6px;
}
}
.n-alert {
padding: 16px 24px;
&.n-alert--right-adjust {
.n-alert-body {
padding-right: 36px;
}
}
&.n-alert--show-icon {
.n-alert-body {
padding-left: 28px;
}
}
.n-alert__icon {
left: 16px;
margin-top: 0 !important;
height: 100%;
}
.n-alert__close {
margin: 16px 24px;
}
.n-alert-body {
padding: 0 8px;
}
}

View File

@@ -0,0 +1,6 @@
/* stylelint-disable at-rule-no-unknown */
/* tailWindCss.less */
@tailwind base;
@tailwind components;
@tailwind utilities;

View File

@@ -0,0 +1,503 @@
/** 圆角 **/
@border-radius-mini: 2px;
@border-radius-small: 4px;
@border-radius-medium: 6px;
@border-radius-large: 12px;
@color-white: #fff;
@color-text-5: #aeaeb2;
/** 投影 **/
@box-base-shadow: 0 4px 10px -1px rgba(100 103 103 / 15%);
@box-middle-shadow: 0 4px 15px 2px rgba(100 103 103 / 10%);
@box-large-shadow: 0 6px 35px 6px rgba(100 103 103 / 10%);
/** 按钮状态类 **/
// 主要 outline 按钮
.btn-outline-primary-hover() {
&:not(:disabled):hover {
border-color: var(--primary-1) !important;
color: var(--primary-1) !important;
background-color: var(--primary-6) !important;
}
}
.btn-outline-primary-active() {
&:not(:disabled):active {
border-color: var(--primary-0) !important;
color: var(--primary-0) !important;
background-color: var(--primary-6) !important;
}
}
.btn-outline-primary-disabled() {
&:disabled {
border-color: var(--primary-4) !important;
color: var(--primary-4) !important;
background-color: var(--text-n10) !important;
}
}
// outline error状态按钮
.btn-outline-error-hover() {
&:not(:disabled):hover {
border-color: var(--error-1) !important;
color: var(--error-1) !important;
background-color: var(--error-5) !important;
}
}
.btn-outline-error-active() {
&:not(:disabled):active {
border-color: var(--error-0) !important;
color: var(--error-0) !important;
background-color: var(--error-4) !important;
}
}
.btn-outline-error-disabled() {
&:disabled {
border-color: var(--error-3) !important;
color: var(--error-3) !important;
background-color: var(--text-n9) !important;
}
}
// outline warning 状态按钮
.btn-outline-warning-hover() {
&:not(:disabled):hover {
border-color: var(--warning-1) !important;
color: var(--warning-1) !important;
background-color: var(--warning-5) !important;
}
}
.btn-outline-warning-active() {
&:not(:disabled):active {
border-color: var(--warning-0) !important;
color: var(--warning-0) !important;
background-color: var(--warning-4) !important;
}
}
.btn-outline-warning-disabled() {
&:disabled {
border-color: var(--warning-3) !important;
color: var(--warning-3) !important;
background-color: var(--text-n9) !important;
}
}
// outline success 状态按钮
.btn-outline-success-hover() {
&:not(:disabled):hover {
border-color: var(--success-1) !important;
color: var(--success-1) !important;
background-color: var(--success-5) !important;
}
}
.btn-outline-success-active() {
&:not(:disabled):active {
border-color: var(--success-0) !important;
color: var(--success-0) !important;
background-color: var(--success-4) !important;
}
}
.btn-outline-success-disabled() {
&:disabled {
border-color: var(--success-3) !important;
color: var(--success-3) !important;
background-color: var(--text-n9) !important;
}
}
// outline info 状态按钮
.btn-outline-info-hover() {
&:not(:disabled):hover {
border-color: var(--info-1) !important;
color: var(--info-1) !important;
background-color: var(--info-5) !important;
}
}
.btn-outline-info-active() {
&:not(:disabled):active {
border-color: var(--info-0) !important;
color: var(--info-0) !important;
background-color: var(--info-4) !important;
}
}
.btn-outline-info-disabled() {
&:disabled {
border-color: var(--info-3) !important;
color: var(--info-3) !important;
background-color: var(--text-n9) !important;
}
}
// 次要outline按钮
.btn-outline-sec-default() {
color: var(--text-n1) !important;
background-color: var(--text-n10) !important;
}
.btn-outline-sec-hover() {
&:not(:disabled):hover {
border-color: var(--text-n7) !important;
color: var(--text-n1) !important;
background-color: var(--text-n9) !important;
}
}
.btn-outline-sec-active() {
&:not(:disabled):active {
border-color: var(--text-n7) !important;
color: var(--text-n1) !important;
background-color: var(--text-n8) !important;
}
}
.btn-outline-sec-disabled() {
&:disabled {
color: var(--text-n6) !important;
background-color: var(--text-n9) !important;
.n-button__border {
border: solid 1px var(--text-n7) !important;
}
}
}
// 次要按钮
.btn-second-default() {
border-color: var(--text-n8) !important;
color: var(--color-text-1) !important;
background-color: var(--text-n8) !important;
}
.btn-second-hover() {
&:not(:disabled):hover {
border: 1px solid var(--text-n9) !important;
color: var(--text-n1) !important;
background-color: var(--text-n9) !important;
}
}
.btn-second-active() {
&:not(:disabled):active {
border-color: var(--text-n7) !important;
color: var(--text-n1) !important;
background-color: var(--text-n7) !important;
}
}
.btn-second-disabled() {
&:disabled {
border: 1px solid var(--text-n9) !important;
color: var(--text-n6) !important;
background-color: var(--text-n9) !important;
}
}
// danger状态的outline按钮
.btn-outline-danger-default() {
border-color: var(--error-red) !important;
color: var(--error-red) !important;
}
.btn-outline-danger-hover() {
&:not(:disabled):hover {
border-color: var(--error-1) !important;
color: var(--error-1) !important;
background-color: var(--error-5) !important;
}
}
.btn-outline-danger-active() {
&:not(:disabled):active {
border-color: var(--error-0) !important;
color: var(--error-0) !important;
background-color: var(--error-4) !important;
}
}
.btn-outline-danger-disabled() {
&:disabled {
border-color: var(--error-3) !important;
color: var(--error-3) !important;
background-color: var(--text-n10) !important;
}
}
// danger状态主要按钮
.btn-base-danger-hover() {
&:not(:disabled):hover {
background-color: var(--error-1) !important;
}
}
.btn-base-danger-active() {
&:not(:disabled):active {
background-color: var(--error-0) !important;
}
}
.btn-base-danger-disabled() {
&:disabled {
background-color: var(--error-3) !important;
}
}
// danger状态主要按钮
.btn-base-primary-hover() {
&:not(:disabled):hover {
color: var(--text-n9);
background-color: var(--primary-1) !important;
}
}
.btn-base-primary-active() {
&:not(:disabled):active {
color: var(--text-n9);
background-color: var(--primary-0) !important;
}
}
.btn-base-primary-focus() {
&:not(:disabled):active {
color: var(--text-n9);
background-color: var(--primary-0) !important;
}
}
.btn-base-primary-disabled() {
&:disabled {
background-color: var(--primary-4) !important;
}
}
/** 文本按钮 **/
// 主要文本按钮
.btn-text-default {
background-color: var(--text-n10) !important;
}
.btn-text-primary-hover() {
&:not(:disabled):hover {
color: var(--primary-8) !important;
background: var(--primary-7) !important;
}
}
.btn-text-primary-active() {
&:not(:disabled):active {
color: var(--primary-8) !important;
background: var(--primary-6) !important;
}
}
.btn-text-primary-disabled() {
&:disabled {
color: var(--primary-4) !important;
background: none !important;
}
}
// 次要文本按钮
.btn-text-sec-hover() {
&:not(.n-button--disabled):hover {
background: var(--text-n9) !important;
}
}
.btn-text-sec-active() {
&:not(.n-button--disabled):active {
background: var(--text-n8) !important;
}
}
.btn-text-sec-focus() {
&:not(.n-button--disabled):focus {
background: none !important;
}
}
.btn-text-sec-focus() {
&:not(.n-button--disabled):focus {
background: none !important;
}
}
.btn-text-sec-disabled() {
&:disabled {
color: var(--text-n6) !important;
background: var(--text-n10) !important;
}
}
// 基础second背景按钮
.btn-base-sec-default() {
background: var(--text-n8) !important;
}
.btn-base-sec-hover() {
&:not(.n-button--disabled):hover {
background: var(--text-n9) !important;
}
}
.btn-base-sec-focus() {
&:not(.n-button--disabled):focus {
background: var(--text-n8) !important;
}
}
.btn-base-sec-active {
&:not(.n-button--disabled):active {
color: var(--text-n1) !important;
background: var(--text-n7) !important;
}
}
.btn-base-sec-disabled() {
&:disabled {
color: var(--text-n6) !important;
background: var(--text-n9) !important;
}
}
// error状态的文本按钮
.btn-text-error-hover() {
&:not(:disabled):hover {
background-color: var(--error-5) !important;
}
}
.btn-text-error-active() {
&:not(:disabled):active {
background-color: var(--error-4) !important;
}
}
.btn-text-error-disabled() {
&:disabled {
color: var(--error-3) !important;
}
}
// warning状态的文本按钮
.btn-text-warning-hover() {
&:not(:disabled):hover {
background-color: var(--warning-5) !important;
}
}
.btn-text-warning-active() {
&:not(:disabled):active {
background-color: var(--warning-4) !important;
}
}
.btn-text-warning-disabled() {
&:disabled {
color: var(--warning-3) !important;
}
}
// success状态的文本按钮
.btn-text-success-hover() {
&:not(:disabled):hover {
background-color: var(--success-5) !important;
}
}
.btn-text-success-active() {
&:not(:disabled):active {
background-color: var(--success-4) !important;
}
}
.btn-text-success-disabled() {
&:disabled {
color: var(--success-3) !important;
}
}
// info状态的文本按钮
.btn-text-info-hover() {
&:not(:disabled):hover {
background-color: var(--info-5) !important;
}
}
.btn-text-info-active() {
&:not(:disabled):active {
background-color: var(--info-4) !important;
}
}
.btn-text-info-disabled() {
&:disabled {
color: var(--info-3) !important;
}
}
/** 滚动条 **/
.crm-scroll-bar() {
&::-webkit-scrollbar {
@apply bg-transparent;
width: 5px;
height: 5px;
}
&::-webkit-scrollbar-thumb {
@apply hidden;
border-radius: var(--border-radius-medium);
background-color: var(--text-n8);
}
&::-webkit-scrollbar-track {
@apply bg-transparent;
}
&:hover {
&::-webkit-scrollbar-thumb {
@apply block;
}
}
}
/** 容器内部上下阴影类 **/
.crm-container--shadow-y() {
@apply relative;
&::before {
position: absolute;
top: 0;
left: 0;
z-index: 1;
width: 100%;
height: 10px;
background-color: transparent;
box-shadow: none;
transition: box-shadow 0.1s cubic-bezier(0, 0, 1, 1);
content: '';
pointer-events: none;
}
&-shadow-top::before {
box-shadow: inset 0 10px 6px -10px rgb(0 0 0 / 15%);
}
&::after {
position: absolute;
bottom: 0;
left: 0;
z-index: 1;
width: 100%;
height: 10px;
background-color: transparent;
box-shadow: none;
transition: box-shadow 0.1s cubic-bezier(0, 0, 1, 1);
content: '';
pointer-events: none;
}
&-shadow-bottom::after {
box-shadow: inset 0 -10px 6px -10px rgb(0 0 0 / 15%);
}
}
// 模态框title
.crm-modal-title() {
width: calc(100% - 16px);
font-size: 16px;
color: var(--text-n1);
@apply font-semibold;
}

View File

@@ -0,0 +1 @@
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 400 400"><defs><style>.cls-1{fill:#00a6ab;}.cls-2{fill:#fff;}.cls-3{fill:#52efc2;}</style></defs><title>CORDYS</title><path class="cls-1" d="M31.107,139.829V260.171A64.675,64.675,0,0,0,63.444,316.18l104.219,60.171a64.678,64.678,0,0,0,64.674,0L336.556,316.18a64.677,64.677,0,0,0,32.337-56.009V139.829A64.676,64.676,0,0,0,336.556,83.82L232.337,23.649a64.678,64.678,0,0,0-64.674,0L63.444,83.82a64.675,64.675,0,0,0-32.337,56.009Z"/><path class="cls-2" d="M262.877,124.941V99.3a15.672,15.672,0,0,0-15.672-15.672h-96A15.672,15.672,0,0,0,135.536,99.3v21.362a15.671,15.671,0,0,1-15.672,15.672H98.5A15.672,15.672,0,0,0,82.83,152v96A15.671,15.671,0,0,0,98.5,263.67h21.362a15.667,15.667,0,0,1,15.672,15.672V300.7a15.673,15.673,0,0,0,15.672,15.672h96A15.665,15.665,0,0,0,262.877,300.7V275.059a15.67,15.67,0,0,0-15.672-15.672H151.177A11.355,11.355,0,0,1,139.82,248.03V151.714a11.1,11.1,0,0,1,11.1-11.1h96.284a15.671,15.671,0,0,0,15.672-15.672Z"/><path class="cls-3" d="M288.675,200h0a28.5,28.5,0,0,1,28.5,28.5h0a28.494,28.494,0,0,1-28.5,28.5h0a28.5,28.5,0,0,1-28.5-28.5h0a28.493,28.493,0,0,1,28.5-28.5Z"/></svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1 @@
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 400 400"><defs><style>.cls-1{fill:#149cc5;}.cls-2{fill:#69caa4;}.cls-3{fill:url(#未命名的渐变_19);}.cls-4{fill:#75cccc;}</style><linearGradient id="未命名的渐变_19" x1="88.669" y1="59.213" x2="334.656" y2="389.988" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#b2f288"/><stop offset="0.181" stop-color="#80d79c"/><stop offset="0.371" stop-color="#52bead"/><stop offset="0.554" stop-color="#2faabb"/><stop offset="0.724" stop-color="#159cc5"/><stop offset="0.878" stop-color="#0594cb"/><stop offset="1" stop-color="#0091cd"/></linearGradient></defs><title>SQLBot</title><path class="cls-1" d="M377.77,182.253h-3.078a170.568,170.568,0,0,1,2.752,30.636,152.429,152.429,0,0,1-4.472,37.444h8.676a14,14,0,0,0,14-14v-36.2A17.879,17.879,0,0,0,377.77,182.253Z"/><path class="cls-2" d="M22.555,212.889a170.659,170.659,0,0,1,2.752-30.636H22.23A17.879,17.879,0,0,0,4.352,200.132v36.2a14,14,0,0,0,14,14h8.676A152.38,152.38,0,0,1,22.555,212.889Z"/><path class="cls-3" d="M200,50.6c-91.855,0-166.317,70.431-166.317,162.286S108.146,349.4,200,349.4,366.316,304.744,366.316,212.89,291.854,50.6,200,50.6Zm40.353,231.071H159.647a79.892,79.892,0,0,1-33.12-7.138c-7.515-3.412-29.437,3.755-35.5-1.692-7.347-6.6,1.56-26.251-2.95-35.147a79.849,79.849,0,0,1-8.624-36.215h0a80.191,80.191,0,0,1,80.191-80.191h80.707a80.191,80.191,0,0,1,80.191,80.191h0A80.192,80.192,0,0,1,240.354,281.675Z"/><path class="cls-3" d="M200,50.6c-91.855,0-166.317,70.431-166.317,162.286S108.146,349.4,200,349.4,366.316,304.744,366.316,212.89,291.854,50.6,200,50.6Zm40.353,231.071H159.647a79.892,79.892,0,0,1-33.12-7.138c-7.515-3.412-29.437,3.755-35.5-1.692-7.347-6.6,1.56-26.251-2.95-35.147a79.849,79.849,0,0,1-8.624-36.215h0a80.191,80.191,0,0,1,80.191-80.191h80.707a80.191,80.191,0,0,1,80.191,80.191h0A80.192,80.192,0,0,1,240.354,281.675Z"/><rect class="cls-4" x="116.887" y="198.867" width="23.721" height="51.728"/><rect class="cls-4" x="164.542" y="175.91" width="23.721" height="74.685"/><rect class="cls-4" x="212.197" y="205.841" width="23.721" height="44.754"/><rect class="cls-4" x="259.392" y="166.029" width="23.721" height="84.566"/></svg>

After

Width:  |  Height:  |  Size: 2.2 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 304 KiB

View File

@@ -0,0 +1,3 @@
<svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.75447 16.0647C8.31921 16.0647 9.75356 15.5418 10.901 14.6269C10.7185 14.2348 10.4838 13.8426 10.1708 13.5289C9.36237 14.2086 8.34529 14.6269 7.22389 14.7314V13.8688C8.0845 13.7642 8.89295 13.4505 9.54492 12.9277C8.89295 12.431 8.11058 12.0911 7.22389 11.9866C7.06742 11.9604 6.91094 11.9604 6.72839 11.9604C6.57191 11.9604 6.38936 11.9604 6.23289 11.9866C5.37228 12.0911 4.56383 12.4048 3.91185 12.9277C4.56383 13.4244 5.3462 13.7642 6.23289 13.8688V14.7314C5.11149 14.6269 4.09441 14.2086 3.28596 13.5289C2.99909 13.8688 2.76438 14.2348 2.55574 14.6269C3.7293 15.5418 5.18973 16.0647 6.75447 16.0647ZM13.6133 4.66684L13.0917 5.03282L11.7616 4.82369L12.2311 4.37928L13.6133 4.66684ZM11.3965 2.41864L11.0314 2.94148L11.2401 4.27471L11.6834 3.80416L11.3965 2.41864ZM10.6142 3.5166L10.1969 4.06558L10.2491 5.29424L10.6402 4.84983L10.7185 4.7714L10.6142 3.5166ZM12.5179 5.42495L11.9703 5.84322L10.7446 5.79094L11.1879 5.39881L11.2661 5.32038L12.5179 5.42495ZM13.4307 2.60163L13.5089 2.62777L14.6825 2.94148C14.7346 2.94148 14.8129 2.96762 14.865 2.99376C15.1258 3.12447 15.2562 3.41203 15.2041 3.67345L15.517 3.75187C15.6735 3.77801 15.8039 3.88258 15.8821 4.01329C16.0908 4.30085 16.0125 4.69298 15.7257 4.90211L12.9613 6.73204C13.2742 7.5163 13.4568 8.40512 13.4568 9.29394C13.4568 10.8625 12.9352 12.3003 12.0224 13.4505C11.6312 13.2675 11.2401 13.0322 10.9271 12.7185C11.6052 11.9081 12.0224 10.8886 12.1267 9.7645H11.2661C11.1618 10.6272 10.8489 11.4376 10.3273 12.0911C9.83179 11.4376 9.49277 10.6533 9.38845 9.7645C9.36237 9.60765 9.36237 9.4508 9.36237 9.2678C9.36237 9.11095 9.36237 8.92796 9.38845 8.77111C9.41453 8.53583 9.44061 8.3267 9.51884 8.11756H9.12766L8.86687 8.37898L8.4496 8.79725C8.4496 8.9541 8.42353 9.11095 8.42353 9.2678C8.42353 9.99977 8.58 10.7317 8.86687 11.4114C8.4496 11.2284 7.87587 11.0716 7.38036 11.0193H7.35429H7.32821H7.30213H7.27605H7.24997H7.22389C7.06742 10.9932 6.91094 10.9932 6.72839 10.9932C5.99818 10.9932 5.26796 11.15 4.58991 11.4376C4.74638 11.0716 4.8507 10.7317 4.92894 10.3396V10.3135V10.2873V10.2612V10.2351V10.2089V10.1828V10.1566V10.1305V10.1043V10.0782V10.0521V10.0259V9.99977V9.97363V9.94749V9.92135V9.89521V9.86906V9.84292V9.81678V9.79064C4.95501 9.63379 4.95501 9.47694 4.95501 9.29394C4.95501 8.56197 4.79854 7.83 4.51167 7.15031C5.18973 7.43787 5.91994 7.59472 6.65015 7.59472C6.80663 7.59472 6.9631 7.59472 7.11957 7.56858L7.82371 6.88889V6.49677C7.61508 6.54905 7.38036 6.60133 7.17173 6.62748C7.01526 6.65362 6.85878 6.65362 6.67623 6.65362C6.51976 6.65362 6.3372 6.65362 6.18073 6.62748C5.32012 6.52291 4.51167 6.20921 3.8597 5.68637C4.51167 5.18967 5.29404 4.84983 6.18073 4.74526V3.88258C5.05933 3.98715 4.04225 4.40542 3.2338 5.08511C2.94693 4.74526 2.71222 4.37928 2.50359 3.98715C3.65106 3.09833 5.08541 2.54935 6.65015 2.54935C7.56292 2.54935 8.42353 2.73234 9.2059 3.04604L11.0314 0.275008C11.2401 -0.0125527 11.6312 -0.0909782 11.9181 0.118157C12.0485 0.222724 12.1267 0.353433 12.1789 0.484142L12.2571 0.797844C12.5179 0.745561 12.8048 0.87627 12.9352 1.13769C12.9613 1.18997 12.9874 1.2684 12.9874 1.32068L13.3003 2.49706L13.4307 2.60163ZM8.55392 4.17014C8.13666 4.01329 7.69331 3.93487 7.24997 3.88258V4.74526C7.51076 4.7714 7.79763 4.82369 8.03234 4.90211L8.55392 4.17014ZM11.1357 8.01299C11.214 8.27441 11.2661 8.53583 11.2922 8.79725H12.1528C12.1007 8.35284 12.0224 7.90843 11.866 7.49016L11.1357 8.01299ZM6.10249 8.66654V9.97363H7.40644V9.00638L8.91903 7.49016L10.7185 7.54244L11.7095 6.86275L9.62316 6.83661L10.1187 6.36606L12.2832 6.47062L15.3866 4.37928L13.9784 4.03943L14.6043 3.56888L13.3785 3.22904L12.7787 3.80416L12.3354 3.69959L12.2571 3.25518L12.8048 2.68006L12.4658 1.45139L11.9964 2.07879L11.6573 0.667135L9.571 3.77801L9.67532 5.94779L9.2059 6.44448L9.17982 4.35314L8.50176 5.34653L8.55392 7.15031L7.04134 8.66654H6.10249ZM0 9.32009C0 7.75158 0.52158 6.31377 1.43435 5.16353C1.82553 5.34653 2.21672 5.5818 2.52967 5.8955C1.85161 6.7059 1.43435 7.72543 1.33003 8.84953H2.19064C2.29495 7.98685 2.6079 7.17645 3.12948 6.52291C3.62498 7.17645 3.96401 7.96071 4.06833 8.84953C4.09441 9.00638 4.09441 9.16323 4.09441 9.34623C4.09441 9.50308 4.09441 9.68607 4.06833 9.84292C3.96401 10.7056 3.65106 11.516 3.12948 12.1695C2.63398 11.516 2.29495 10.7317 2.19064 9.84292H1.33003C1.43435 10.967 1.85161 11.9866 2.52967 12.797C2.19064 13.0845 1.82553 13.3198 1.43435 13.5289C0.52158 12.3264 0 10.8886 0 9.32009Z" fill="#E6212D"/>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@@ -0,0 +1,9 @@
<svg width="256" height="256" viewBox="0 0 256 256" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M128.272 4.53097L235.497 66.4239V190.233L128.272 252.137L21.0464 190.187V66.3789L128.272 4.53097ZM128.272 1.13274L18.1239 64.6911V191.875L128.272 255.479L238.42 191.875V64.6911L128.272 1.13274Z" fill="#426DF2"/>
<path d="M128.272 42.1833L202.852 85.2276V171.316L128.272 214.36L53.7034 171.316V85.2276L128.272 42.1833ZM128.272 19.0528L33.6765 73.6283V182.859L128.272 237.48L222.879 182.859V73.6283L128.272 19.0075V19.0528Z" fill="#426DF2"/>
<path d="M82.5204 129.416C80.6057 129.415 78.7447 128.783 77.2258 127.617C75.7069 126.452 74.6151 124.818 74.1195 122.968C73.6239 121.119 73.7523 119.158 74.4847 117.388C75.2172 115.619 76.5127 114.141 78.1706 113.184L108.993 95.3995C110.988 94.2884 113.34 94.0066 115.541 94.6147C117.743 95.2228 119.617 96.6721 120.759 98.6498C121.901 100.628 122.219 102.975 121.645 105.185C121.072 107.396 119.652 109.292 117.692 110.465L86.8588 128.249C85.5408 129.014 84.0441 129.416 82.5204 129.416Z" fill="#00BFFF"/>
<path d="M137.051 97.9708C135.132 97.9747 133.266 97.3443 131.744 96.178C130.221 95.0116 129.126 93.3747 128.63 91.5217C128.133 89.6687 128.264 87.7035 129 85.9321C129.736 84.1608 131.037 82.6825 132.701 81.7272L144.028 75.2253C145.019 74.6137 146.122 74.2073 147.273 74.03C148.424 73.8528 149.599 73.9084 150.727 74.1935C151.856 74.4785 152.917 74.9873 153.845 75.6896C154.774 76.3919 155.552 77.2736 156.134 78.2822C156.715 79.2908 157.089 80.406 157.231 81.5615C157.374 82.7171 157.283 83.8894 156.965 85.0093C156.646 86.1291 156.106 87.1737 155.376 88.0809C154.646 88.9881 153.742 89.7395 152.716 90.2908L141.389 96.8041C140.069 97.5637 138.574 97.9659 137.051 97.9708Z" fill="#00BFFF"/>
<path d="M95.3769 155.967C93.4612 155.97 91.5985 155.339 90.0777 154.174C88.5569 153.009 87.4631 151.375 86.9661 149.525C86.4691 147.675 86.5965 145.713 87.3288 143.943C88.061 142.173 89.3571 140.694 91.0158 139.735L91.3103 139.565C92.3002 138.957 93.4019 138.552 94.5506 138.376C95.6992 138.201 96.8715 138.257 97.9982 138.541C99.1248 138.826 100.183 139.333 101.11 140.034C102.038 140.734 102.815 141.613 103.397 142.619C103.979 143.625 104.354 144.737 104.499 145.89C104.644 147.043 104.557 148.213 104.242 149.332C103.927 150.45 103.392 151.495 102.667 152.403C101.942 153.311 101.042 154.065 100.021 154.62L99.7266 154.789C98.4059 155.559 96.9053 155.965 95.3769 155.967Z" fill="#00BFFF"/>
<path d="M119.085 142.533C117.175 142.532 115.318 141.901 113.801 140.74C112.285 139.578 111.193 137.949 110.694 136.105C110.196 134.261 110.318 132.304 111.042 130.536C111.766 128.768 113.052 127.288 114.701 126.324L156.805 101.788C157.793 101.188 158.891 100.79 160.035 100.618C161.178 100.447 162.344 100.505 163.465 100.789C164.586 101.074 165.638 101.579 166.562 102.275C167.485 102.971 168.26 103.844 168.842 104.843C169.424 105.842 169.801 106.947 169.951 108.093C170.101 109.24 170.021 110.405 169.716 111.52C169.41 112.635 168.885 113.678 168.172 114.588C167.459 115.498 166.571 116.257 165.562 116.82L123.457 141.344C122.131 142.121 120.622 142.531 119.085 142.533Z" fill="#00BFFF"/>
<path d="M108.268 182.519C106.35 182.523 104.484 181.893 102.961 180.726C101.438 179.56 100.343 177.923 99.847 176.07C99.3508 174.217 99.481 172.252 100.217 170.48C100.954 168.709 102.255 167.231 103.918 166.276L169.731 128.329C171.723 127.258 174.055 127.005 176.231 127.624C178.406 128.243 180.255 129.686 181.386 131.645C182.516 133.605 182.838 135.928 182.284 138.121C181.73 140.315 180.344 142.206 178.419 143.394L112.572 181.352C111.262 182.106 109.779 182.508 108.268 182.519Z" fill="#426DF2"/>
</svg>

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@@ -0,0 +1,9 @@
<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M8.16683 1.33334C8.90321 1.33334 9.50016 1.9303 9.50016 2.66668C9.50016 3.1599 9.23235 3.59058 8.83421 3.82122L8.8335 5.33334H12.5002C13.2365 5.33334 13.8335 5.9303 13.8335 6.66668V13.3333C13.8335 14.0697 13.2365 14.6667 12.5002 14.6667H3.8335C3.09712 14.6667 2.50016 14.0697 2.50016 13.3333V6.66668C2.50016 5.9303 3.09712 5.33334 3.8335 5.33334H7.50016L7.50011 3.82161C7.10161 3.59106 6.8335 3.16018 6.8335 2.66668C6.8335 1.9303 7.43045 1.33334 8.16683 1.33334ZM12.5002 6.66668H3.8335V13.3333H12.5002V6.66668ZM1.50016 8.00001C1.86835 8.00001 2.16683 8.29849 2.16683 8.66668V11.3333C2.16683 11.7015 1.86835 12 1.50016 12C1.13197 12 0.833496 11.7015 0.833496 11.3333V8.66668C0.833496 8.29849 1.13197 8.00001 1.50016 8.00001ZM14.8335 8.00001C15.2017 8.00001 15.5002 8.29849 15.5002 8.66668V11.3333C15.5002 11.7015 15.2017 12 14.8335 12C14.4653 12 14.1668 11.7015 14.1668 11.3333V8.66668C14.1668 8.29849 14.4653 8.00001 14.8335 8.00001ZM9.50016 10.6667L9.57791 10.6712C9.90948 10.7097 10.1668 10.9914 10.1668 11.3333C10.1668 11.7015 9.86836 12 9.50016 12H6.8335L6.75575 11.9955C6.42418 11.957 6.16683 11.6752 6.16683 11.3333C6.16683 10.9651 6.4653 10.6667 6.8335 10.6667H9.50016ZM5.8335 8.00001C6.20169 8.00001 6.50016 8.29849 6.50016 8.66668C6.50016 9.03487 6.20169 9.33334 5.8335 9.33334C5.46531 9.33334 5.16683 9.03487 5.16683 8.66668C5.16683 8.29849 5.46531 8.00001 5.8335 8.00001ZM10.5002 8.00001C10.8684 8.00001 11.1668 8.29849 11.1668 8.66668C11.1668 9.03487 10.8684 9.33334 10.5002 9.33334C10.132 9.33334 9.8335 9.03487 9.8335 8.66668C9.8335 8.29849 10.132 8.00001 10.5002 8.00001Z" fill="url(#paint0_linear_9255_6921)"/>
<defs>
<linearGradient id="paint0_linear_9255_6921" x1="8.16683" y1="1.33334" x2="8.16683" y2="14.6667" gradientUnits="userSpaceOnUse">
<stop stop-color="#00C261"/>
<stop offset="1" stop-color="#3370FF"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1754374129011" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="21687" width="16" height="16" xmlns:xlink="http://www.w3.org/1999/xlink"><path d="M266.88 341.333333a298.666667 298.666667 0 1 1-41.173333 256H137.514667A384 384 0 1 0 213.333333 270.634667V149.333333a21.333333 21.333333 0 0 0-21.333333-21.333333h-42.666667a21.333333 21.333333 0 0 0-21.333333 21.333333V384a42.666667 42.666667 0 0 0 42.666667 42.666667h234.666666a21.333333 21.333333 0 0 0 21.333334-21.333334v-42.666666a21.333333 21.333333 0 0 0-21.333334-21.333334H266.88z" p-id="21688"></path></svg>

After

Width:  |  Height:  |  Size: 753 B

View File

@@ -0,0 +1 @@
<svg id="图层_1" data-name="图层 1" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1860 400"><defs><style>.cls-1,.cls-2{fill:#364c4b;}.cls-2{fill-rule:evenodd;}.cls-3{fill:#00a6ab;}.cls-4{fill:#fff;}.cls-5{fill:#52efc2;}</style></defs><title>CORDYS</title><path class="cls-1" d="M896.569,190.276v17.977c0,32.358-1.893,54.95-7.763,67.772q-14.024,32.9-43.145,48.177-27.867,15.1-70.29,15.1t-70.289-15.1q-29.486-15.995-43.145-48.177c-6.111-13.3-7.078-35.891-7.078-67.772V190.276c0-39.069,3.183-65.733,13.73-80a91.294,91.294,0,0,1,36.493-35.235q28.044-15.457,70.289-15.459,42.066,0,70.29,15.459,22.112,11.867,36.493,35.235C892.46,125.02,896.569,151.688,896.569,190.276Zm-121.2,93.48q33.437-.54,42.426-13.3,10.246-8.267,10.246-47.818V180.748q0-46.2-11.5-53.391-10.968-11.144-41.168-12.224-30.2,1.079-41.167,12.224-12.943,8.09-12.943,51.773v42.426q0,39.73,11.325,48.9Q741.574,283.219,775.371,283.756Z"/><path class="cls-1" d="M1494.208,337.427l.3-110.663-79.5-165.1h77.3l40.33,90.421,47.084-90.421h76.941l-82.854,165.1.055,110.663Z"/><path class="cls-1" d="M615.43,278.268v53.624a569.6,569.6,0,0,1-72.987,4.626c-19.524,0-66.581,4.512-95.408-36.2-15.1-21.324-23.913-56.075-23.913-108.189,0-53.524,13.482-86.6,32.968-105.259,29.789-28.531,71.777-25.334,86.7-25.334,19.222,0,44.352.45,72.635,2.96v54.216c-26.283-2.307-51.01-2.145-66.13-2.145q-36.045,0-47.822,11.956c-3.649,2.972-14.975,14.851-14.975,58.963,0,70.346,11.635,79.231,13.392,80.989C514.363,285.461,587.843,279.715,615.43,278.268Z"/><path class="cls-1" d="M1005.439,252.786v84.972H936.4V60.619l94.092-1.17h25.6q56.057,0,77.87,36.591a121.369,121.369,0,0,1,7.749,23.072,165.1,165.1,0,0,1,3.246,34.429V160.3a110.515,110.515,0,0,1-3.425,28.841,75.758,75.758,0,0,1-7.932,18.745q-10.1,17.306-32.265,26.858,13.88,5.23,25.055,18.205a111.508,111.508,0,0,1,7.572,10.455c14.323,21.424,13.179,74.354,13.179,74.354h-64.971c-1.8-5.526-2.585-62.974-21.657-78.825C1050.4,250.525,1006.639,252.668,1005.439,252.786Zm0-48.57c1.322.121,54.479,4.453,69.036-12.913,6.734-8.033,8.472-14.78,8.472-27.4V149.936q0-22.53-6.308-30.283-6.851-7.029-21.81-9.012-16.405-2.163-49.39.9Z"/><path class="cls-2" d="M1291.233,61.538h-104.67V335.609h104.67c66.681-.029,120.742-45.174,120.742-100.871V162.432C1411.975,106.721,1357.914,61.583,1291.233,61.538Zm53.5,175.558c0,24.706-23.933,44.727-53.5,44.756h-34.951V115.3h34.951c29.571.028,53.5,20.064,53.5,44.756Z"/><path class="cls-1" d="M1743.674,338.109a428.1,428.1,0,0,1-45.017-2.607q-9.384-1.042-19.293-2.433l-25.573-2.424.547-65.807,40.08,6.267s15.756,2.259,22.943,2.955q12.859,1.216,23.291,1.216,37.89,0,43.8-17.206a14.78,14.78,0,0,0-.348-13.906q-3.651-7.47-15.47-12.862a123.928,123.928,0,0,0-12.688-4.693L1741,222.089q-9.909-2.43-17.73-4.866-10.083-3.127-18.424-6.605-20.685-8.69-32.154-20.161a55.357,55.357,0,0,1-14.08-28.506,91.9,91.9,0,0,1-.521-27.288q4.694-44.147,37.718-60.66,12.338-6.6,29.72-9.56,6.78-1.043,15.471-1.738l14.947-1.043h10.081q17.208,0,37.89,2.086l16.861,1.912,19.608,2.589.381,57.724a269.76,269.76,0,0,0-28.506-5.041,287.274,287.274,0,0,0-39.977-3.129c-26.419,0-35.548,5.615-40.182,17.548a33.722,33.722,0,0,0-1.348,14.892c.613,5.821.245,7.353,11.982,13.446q5.386,2.438,13.557,5.214l34.415,10.255q9.908,3.131,17.729,6.431,18.942,8,28.679,18.425,11.472,11.47,14.774,28.678a89.318,89.318,0,0,1,.522,26.768c-3.13,29.2-17.72,55.419-39.736,66.656q-12.168,6.608-29.72,9.386-6.78,1.042-15.471,1.738l-13.383.869Z"/><path class="cls-3" d="M6.878,139.205V259.547a64.675,64.675,0,0,0,32.337,56.009l104.219,60.171a64.672,64.672,0,0,0,64.674,0l104.218-60.171a64.668,64.668,0,0,0,32.337-56.009V139.205A64.671,64.671,0,0,0,312.326,83.2L208.108,23.025a64.678,64.678,0,0,0-64.674,0L39.215,83.2A64.675,64.675,0,0,0,6.878,139.205Z"/><path class="cls-4" d="M238.648,124.318V98.672A15.673,15.673,0,0,0,222.976,83h-96a15.672,15.672,0,0,0-15.672,15.672v21.362a15.671,15.671,0,0,1-15.672,15.672H74.273A15.67,15.67,0,0,0,58.6,151.378v96a15.671,15.671,0,0,0,15.672,15.672H95.635a15.668,15.668,0,0,1,15.672,15.672V300.08a15.671,15.671,0,0,0,15.672,15.672h96a15.666,15.666,0,0,0,15.672-15.672V274.435a15.672,15.672,0,0,0-15.672-15.672H126.948a11.353,11.353,0,0,1-11.357-11.357V151.09a11.1,11.1,0,0,1,11.1-11.1h96.285a15.673,15.673,0,0,0,15.672-15.672Z"/><path class="cls-5" d="M264.445,199.376h0a28.494,28.494,0,0,1,28.5,28.5h0a28.494,28.494,0,0,1-28.5,28.495h0a28.494,28.494,0,0,1-28.5-28.495h0a28.493,28.493,0,0,1,28.5-28.5Z"/></svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -0,0 +1,9 @@
<svg width="24" height="18" viewBox="0 0 24 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M14.8379 16.9922C14.9165 17.0708 14.9704 17.1712 14.9922 17.2803C15.0139 17.3894 15.0025 17.5027 14.96 17.6055C14.9174 17.7083 14.8455 17.7966 14.7529 17.8584C14.6604 17.9202 14.5517 17.9531 14.4404 17.9531H8.92383C8.8126 17.9531 8.70381 17.9202 8.61133 17.8584C8.51878 17.7966 8.44689 17.7083 8.4043 17.6055C8.36175 17.5027 8.35037 17.3894 8.37207 17.2803C8.39382 17.1712 8.44773 17.0708 8.52637 16.9922L9.87012 15.6484H13.4951L14.8379 16.9922ZM18.1836 0C19.2755 0.00130758 20.3227 0.435944 21.0947 1.20801C21.8667 1.98012 22.3005 3.02731 22.3018 4.11914V11.0908C22.3004 12.1824 21.8665 13.229 21.0947 14.001C20.3227 14.7731 19.2755 15.2077 18.1836 15.209H5.81738C4.7254 15.2077 3.67839 14.7731 2.90625 14.001C2.13439 13.229 1.69959 12.1825 1.69824 11.0908V4.11914C1.69947 3.02724 2.13421 1.98013 2.90625 1.20801C3.67839 0.435866 4.72541 0.00123215 5.81738 0H18.1836ZM6.21387 2.91602C6.0171 2.91602 5.82761 2.99466 5.68848 3.13379C5.54952 3.27288 5.47169 3.46158 5.47168 3.6582V11.0488C5.47169 11.2454 5.54953 11.4341 5.68848 11.5732C5.82761 11.7124 6.0171 11.791 6.21387 11.791H7.12598V13.6074L9.14941 12.4717C9.94529 12.0251 10.8432 11.791 11.7559 11.791H17.7871C17.9838 11.791 18.1724 11.7123 18.3115 11.5732C18.4506 11.4341 18.5293 11.2456 18.5293 11.0488V3.6582C18.5293 3.46146 18.4506 3.27291 18.3115 3.13379C18.1724 2.99468 17.9839 2.91602 17.7871 2.91602H6.21387ZM1.25879 10.1338H0.543945C0.472634 10.1337 0.401823 10.1201 0.335938 10.0928C0.269982 10.0654 0.209666 10.0251 0.15918 9.97461C0.108794 9.92415 0.0692811 9.86374 0.0419922 9.79785C0.0147087 9.7319 -1.60252e-06 9.66122 0 9.58984V5.65137C0 5.50721 0.0573281 5.36861 0.15918 5.2666C0.261115 5.16466 0.399796 5.10753 0.543945 5.10742H1.25879V10.1338ZM23.4561 5.10742C23.6003 5.10743 23.7388 5.1646 23.8408 5.2666C23.9429 5.36863 24 5.50707 24 5.65137V9.58984C24 9.66117 23.9862 9.73193 23.959 9.79785C23.9316 9.86386 23.8913 9.92409 23.8408 9.97461C23.7903 10.0251 23.7301 10.0654 23.6641 10.0928C23.5982 10.12 23.5273 10.1338 23.4561 10.1338H22.7412V5.10742H23.4561ZM9.45215 5.77246C9.58575 5.77245 9.71836 5.79851 9.8418 5.84961C9.9652 5.90071 10.0774 5.97589 10.1719 6.07031C10.2663 6.16474 10.3414 6.27703 10.3926 6.40039C10.4437 6.52381 10.4697 6.65645 10.4697 6.79004V7.51953C10.4697 7.78942 10.3627 8.04842 10.1719 8.23926C9.98103 8.4301 9.72204 8.53711 9.45215 8.53711C9.18234 8.53705 8.92321 8.43005 8.73242 8.23926C8.54172 8.04844 8.43457 7.78932 8.43457 7.51953V6.79004C8.4346 6.52021 8.54163 6.26112 8.73242 6.07031C8.92321 5.87952 9.18233 5.77251 9.45215 5.77246ZM14.7598 5.77246C14.8934 5.77246 15.026 5.79849 15.1494 5.84961C15.2728 5.90074 15.385 5.97586 15.4795 6.07031C15.5739 6.16476 15.6491 6.277 15.7002 6.40039C15.7513 6.52381 15.7773 6.65645 15.7773 6.79004V7.51953C15.7773 7.78936 15.6702 8.04843 15.4795 8.23926C15.2887 8.43009 15.0296 8.53709 14.7598 8.53711C14.4899 8.53711 14.2309 8.4301 14.04 8.23926C13.8492 8.04842 13.7422 7.78938 13.7422 7.51953V6.79004C13.7422 6.5202 13.8492 6.26112 14.04 6.07031C14.2309 5.87955 14.4899 5.77246 14.7598 5.77246Z" fill="url(#paint0_linear_10137_9866)"/>
<defs>
<linearGradient id="paint0_linear_10137_9866" x1="12.0003" y1="9.63688e-05" x2="12.0003" y2="15.209" gradientUnits="userSpaceOnUse">
<stop stop-color="#3370FF"/>
<stop offset="1" stop-color="#7F3BF5"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

View File

@@ -0,0 +1,38 @@
<svg width="33" height="33" viewBox="0 0 33 33" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="9.5" cy="9.5" r="8.5" fill="#FFA200"/>
<g filter="url(#filter0_i_4792_17467)">
<circle cx="18.5" cy="18.5" r="10.5" fill="#FFFCF6"/>
</g>
<g filter="url(#filter1_f_4792_17467)">
<circle cx="17" cy="17" r="8" fill="#FFA200"/>
</g>
<g filter="url(#filter2_d_4792_17467)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M20 14.75C20 13.5074 21.0074 12.5 22.25 12.5C23.4926 12.5 24.5 13.5074 24.5 14.75C24.5 15.6334 23.9909 16.3979 23.25 16.7661V20.876C23.25 22.3252 22.0752 23.5 20.626 23.5C19.1769 23.5 18.0021 22.3252 18.0021 20.876V15.126C18.0021 14.7803 17.7218 14.5 17.376 14.5C17.0303 14.5 16.75 14.7803 16.75 15.126V19.2339C17.4909 19.6021 18 20.3666 18 21.25C18 22.4926 16.9926 23.5 15.75 23.5C14.5074 23.5 13.5 22.4926 13.5 21.25C13.5 20.3666 14.0091 19.6021 14.75 19.2339V15.126C14.75 13.6757 15.9257 12.5 17.376 12.5C18.8264 12.5 20.0021 13.6757 20.0021 15.126V20.876C20.0021 21.2206 20.2814 21.5 20.626 21.5C20.9706 21.5 21.25 21.2206 21.25 20.876V16.7661C20.5091 16.3979 20 15.6334 20 14.75ZM15.75 21C15.6119 21 15.5 21.1119 15.5 21.25C15.5 21.3881 15.6119 21.5 15.75 21.5C15.8881 21.5 16 21.3881 16 21.25C16 21.1119 15.8881 21 15.75 21ZM22.25 15C22.3881 15 22.5 14.8881 22.5 14.75C22.5 14.6119 22.3881 14.5 22.25 14.5C22.1119 14.5 22 14.6119 22 14.75C22 14.8881 22.1119 15 22.25 15Z" fill="white"/>
</g>
<defs>
<filter id="filter0_i_4792_17467" x="8" y="8" width="21" height="22" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="1"/>
<feGaussianBlur stdDeviation="1"/>
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 1 0 0 0 0 0.756863 0 0 0 0 0.305882 0 0 0 0.1 0"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_4792_17467"/>
</filter>
<filter id="filter1_f_4792_17467" x="1" y="1" width="32" height="32" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feGaussianBlur stdDeviation="4" result="effect1_foregroundBlur_4792_17467"/>
</filter>
<filter id="filter2_d_4792_17467" x="13.5" y="12.5" width="11" height="11.1" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="0.1"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.00986111 0 0 0 0 0.0953724 0 0 0 0 0.295833 0 0 0 0.22 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_4792_17467"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_4792_17467" result="shape"/>
</filter>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -0,0 +1,39 @@
<svg width="31" height="30" viewBox="0 0 31 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M17.85 14.0533C16.35 15.3733 14.4 16.2533 12.15 16.2533C9.89998 16.2533 7.94999 15.3733 6.29999 14.0533C2.54999 15.96 0 18.4533 0 23H24C24 18.4533 21.45 16.1066 17.85 14.0533ZM12 14.4933C15.75 14.4933 18.75 11.4133 18.75 7.74667C18.75 4.08 15.75 1 12 1C8.25 1 5.24999 4.08 5.24999 7.74667C5.24999 11.56 8.39999 14.4933 12 14.4933Z" fill="#3370FF"/>
<g filter="url(#filter0_i_4792_17445)">
<circle cx="22" cy="20" r="8" fill="#F2F7FF"/>
</g>
<circle cx="22" cy="20" r="8" stroke="white" stroke-width="0.2"/>
<g filter="url(#filter1_f_4792_17445)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M13.703 16.1098C15.3024 15.8097 16.7069 15.0592 17.85 14.0533C21.45 16.1066 24 18.4533 24 23H13.7517C13.2688 21.9326 13 20.7477 13 19.5C13 18.2949 13.2508 17.1484 13.703 16.1098ZM15.4269 13.5529C15.9931 13.2164 16.5056 12.7996 16.9493 12.3195C16.395 12.6715 15.8842 13.086 15.4269 13.5529Z" fill="#3370FF"/>
</g>
<g filter="url(#filter2_d_4792_17445)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M23.4307 16.25C23.4307 15.5596 22.8711 15 22.1807 15C21.4904 15 20.9307 15.5596 20.9307 16.25V18.9085H18.25C17.5596 18.9085 17 19.4682 17 20.1585C17 20.8489 17.5596 21.4085 18.25 21.4085H20.9307V24.067C20.9307 24.7573 21.4904 25.317 22.1807 25.317C22.8711 25.317 23.4307 24.7573 23.4307 24.067V21.4085H26.1115C26.8018 21.4085 27.3615 20.8489 27.3615 20.1585C27.3615 19.4682 26.8018 18.9085 26.1115 18.9085H23.4307V16.25Z" fill="white"/>
</g>
<defs>
<filter id="filter0_i_4792_17445" x="13.9" y="11.9" width="16.2" height="16.2" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset/>
<feGaussianBlur stdDeviation="1.5"/>
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.2 0 0 0 0 0.439216 0 0 0 0 1 0 0 0 0.1 0"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_4792_17445"/>
</filter>
<filter id="filter1_f_4792_17445" x="10" y="9.31946" width="17" height="16.6805" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feGaussianBlur stdDeviation="1.5" result="effect1_foregroundBlur_4792_17445"/>
</filter>
<filter id="filter2_d_4792_17445" x="17" y="15" width="10.3615" height="10.417" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="0.1"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.00986111 0 0 0 0 0.0953724 0 0 0 0 0.295833 0 0 0 0.22 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_4792_17445"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_4792_17445" result="shape"/>
</filter>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -0,0 +1,39 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M19 3C20.1046 3 21 3.89543 21 5V22C21 23.1046 20.1046 24 19 24H4C2.89543 24 2 23.1046 2 22V5C2 3.89543 2.89543 3 4 3H19ZM6.66699 18.333C6.2988 18.333 6 18.6318 6 19C6 19.3682 6.2988 19.667 6.66699 19.667H17.333C17.7012 19.667 18 19.3682 18 19C18 18.6318 17.7012 18.333 17.333 18.333H6.66699ZM12.1064 6C9.96327 6.00008 8.34101 7.22617 8.34082 9.61719C8.34082 10.7649 8.68336 11.6205 9.30664 12.3877C9.43288 12.5431 9.84644 12.9952 9.85645 13.0039L9.87695 13.0283C9.92698 13.0863 9.95747 13.1253 9.97363 13.1465L9.97461 13.2041C9.9745 13.2354 9.97384 13.2649 9.97363 13.292L9.97266 13.3477H7.00195C6.44973 13.3483 6.00285 13.7952 6.00195 14.3467L6 17C6 17.3682 6.29878 17.667 6.66699 17.667H17.333C17.7012 17.667 18 17.3682 18 17V14.3477L17.9951 14.251C17.9465 13.744 17.5197 13.3477 17 13.3477H14.0869V13.0928C14.0875 13.0898 14.0953 13.0713 14.1318 13.0186C14.1992 12.9215 14.6654 12.4186 14.7412 12.3291C15.3737 11.5823 15.7119 10.7661 15.7119 9.61719C15.7117 7.21949 14.2061 6 12.1064 6ZM12.1064 7.33301C13.5243 7.33301 14.3788 8.02511 14.3789 9.61719C14.3789 10.4289 14.1642 10.9487 13.7246 11.4678C13.7035 11.4927 13.1684 12.0688 13.0371 12.2578C12.8558 12.5189 12.754 12.788 12.7539 13.0928V13.332C12.7556 13.755 12.765 13.8668 12.8076 14.0322L12.8359 14.125C12.9728 14.5111 13.2914 14.6807 13.6807 14.6807H16.667V16.333H7.33301L7.33496 14.6807H10.3359C10.7978 14.6806 11.1349 14.4031 11.248 13.9658C11.2969 13.7767 11.3064 13.6385 11.3076 13.2236V13.0928C11.3076 12.9979 11.2949 12.9046 11.2705 12.8135C11.2014 12.5549 11.0677 12.3587 10.8301 12.0928C10.7767 12.0331 10.5761 11.8167 10.583 11.8242C10.4861 11.7186 10.4123 11.6336 10.3418 11.5469C9.90117 11.0046 9.67383 10.4378 9.67383 9.61719C9.674 8.05672 10.6313 7.33308 12.1064 7.33301Z" fill="#3370FF"/>
<g filter="url(#filter0_i_11697_20729)">
<circle cx="21" cy="21" r="7" fill="#D6E2FD"/>
</g>
<circle cx="21" cy="21" r="7" stroke="white" stroke-width="0.2"/>
<g filter="url(#filter1_f_11697_20729)">
<path d="M21 14C21.3396 14 21.6733 14.0255 22 14.0723V21C22 22.1046 21.1046 23 20 23H14.291C14.1024 22.3662 14 21.6951 14 21C14 17.134 17.134 14 21 14Z" fill="#3370FF"/>
</g>
<g filter="url(#filter2_d_11697_20729)">
<path d="M21.2852 17C21.9754 17.0001 22.5352 17.5597 22.5352 18.25V20.0176H24.3193C25.0096 20.0176 25.5693 20.5773 25.5693 21.2676C25.5693 21.9579 25.0097 22.5176 24.3193 22.5176H22.5352V24.2852C22.5352 24.9754 21.9754 25.535 21.2852 25.5352C20.5948 25.5352 20.0352 24.9755 20.0352 24.2852V22.5176H18.25C17.5596 22.5176 17 21.9579 17 21.2676C17.0001 20.5773 17.5597 20.0176 18.25 20.0176H20.0352V18.25C20.0352 17.5596 20.5948 17 21.2852 17Z" fill="white"/>
</g>
<defs>
<filter id="filter0_i_11697_20729" x="13.9" y="13.9" width="14.2" height="14.2" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset/>
<feGaussianBlur stdDeviation="1.5"/>
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.2 0 0 0 0 0.439216 0 0 0 0 1 0 0 0 1 0"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_11697_20729"/>
</filter>
<filter id="filter1_f_11697_20729" x="10" y="10" width="16" height="17" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feGaussianBlur stdDeviation="2" result="effect1_foregroundBlur_11697_20729"/>
</filter>
<filter id="filter2_d_11697_20729" x="17" y="17" width="8.56934" height="8.63516" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="0.1"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0.0779277 0 0 0 0 0.260611 0 0 0 1 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_11697_20729"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_11697_20729" result="shape"/>
</filter>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 4.4 KiB

View File

@@ -0,0 +1,39 @@
<svg width="31" height="37" viewBox="0 0 31 37" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="20.1244" height="25.6048" rx="2" transform="matrix(0.966291 0.257452 -0.260192 0.965557 11.5281 3)" fill="#00C261"/>
<g filter="url(#filter0_i_4792_17432)">
<rect x="1" y="5.86414" width="21.619" height="24.4281" rx="2" fill="#F2FCF7"/>
</g>
<rect x="1" y="5.86414" width="21.619" height="24.4281" rx="2" stroke="white" stroke-width="0.2"/>
<g filter="url(#filter1_f_4792_17432)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.2727 5.86418C11.2604 5.89907 11.2491 5.93445 11.2387 5.97031L5.41364 26.0427C5.10579 27.1035 5.72546 28.1785 6.7977 28.4438L18.2187 31.2694H20.6056C21.7102 31.2694 22.6056 30.374 22.6056 29.2694V7.86418C22.6056 7.39187 22.4419 6.95779 22.1681 6.61562L19.1308 5.86418H11.2727Z" fill="#00C261"/>
</g>
<g filter="url(#filter2_d_4792_17432)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M13.0595 13.6812C13.0595 12.9908 12.4999 12.4312 11.8095 12.4312C11.1192 12.4312 10.5595 12.9908 10.5595 13.6812V16.3397H7.87878C7.18843 16.3397 6.62878 16.8993 6.62878 17.5897C6.62878 18.28 7.18843 18.8397 7.87878 18.8397H10.5595V21.4982C10.5595 22.1885 11.1192 22.7482 11.8095 22.7482C12.4999 22.7482 13.0595 22.1885 13.0595 21.4982V18.8397H15.7402C16.4306 18.8397 16.9902 18.28 16.9902 17.5897C16.9902 16.8993 16.4306 16.3397 15.7402 16.3397H13.0595V13.6812Z" fill="white"/>
</g>
<defs>
<filter id="filter0_i_4792_17432" x="0.899994" y="5.76413" width="21.819" height="24.6281" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset/>
<feGaussianBlur stdDeviation="1.5"/>
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0.760784 0 0 0 0 0.380392 0 0 0 0.1 0"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_4792_17432"/>
</filter>
<filter id="filter1_f_4792_17432" x="0.334686" y="0.864182" width="27.2709" height="35.4052" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feGaussianBlur stdDeviation="2.5" result="effect1_foregroundBlur_4792_17432"/>
</filter>
<filter id="filter2_d_4792_17432" x="6.62878" y="12.4312" width="10.3615" height="10.417" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="0.1"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.00986111 0 0 0 0 0.0953724 0 0 0 0 0.295833 0 0 0 0.22 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_4792_17432"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_4792_17432" result="shape"/>
</filter>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@@ -0,0 +1,39 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M16.3149 0C16.7448 0 17.1073 0.294284 17.3784 0.62793C17.4206 0.67981 17.4658 0.729996 17.5142 0.77832L21.8071 5.07129C21.9946 5.25879 22.1001 5.51316 22.1001 5.77832V22C22.1001 23.1046 21.2047 24 20.1001 24H6.1001C4.99553 24 4.1001 23.1046 4.1001 22V2C4.1001 0.895431 4.99553 8.05319e-09 6.1001 0H16.3149ZM8.1001 7C7.54781 7 7.1001 7.44772 7.1001 8C7.1001 8.55229 7.54781 9 8.1001 9H15.1001C15.6524 9 16.1001 8.55229 16.1001 8C16.1001 7.44772 15.6524 7 15.1001 7H8.1001ZM8.1001 4C7.54781 4 7.1001 4.44772 7.1001 5C7.1001 5.55228 7.54781 6 8.1001 6H12.1001C12.6524 6 13.1001 5.55228 13.1001 5C13.1001 4.44772 12.6524 4 12.1001 4H8.1001Z" fill="#3370FF"/>
<g filter="url(#filter0_i_13498_7004)">
<rect x="0.100098" y="11" width="26" height="13" rx="2" fill="#EAF0FF"/>
</g>
<rect x="0.100098" y="11" width="26" height="13" rx="2" stroke="white" stroke-width="0.2"/>
<g opacity="0.5" filter="url(#filter1_f_13498_7004)">
<path d="M20.7671 12.7333C20.8807 12.7333 20.9917 12.7453 21.1001 12.7635V21.4003H6.1001V12.7333H20.7671Z" fill="#3470FF"/>
</g>
<g filter="url(#filter2_d_13498_7004)">
<path d="M16.2456 13.3182C16.6697 12.8941 17.3576 12.8941 17.7817 13.3182C18.2057 13.7423 18.2057 14.4293 17.7817 14.8534L12.5601 20.0751C12.136 20.4992 11.448 20.4992 11.0239 20.0751C10.9952 20.0463 10.9687 20.0162 10.9438 19.9852L8.41748 17.4598C7.99369 17.0357 7.99349 16.3477 8.41748 15.9237C8.84147 15.4997 9.52949 15.4999 9.95361 15.9237L11.7964 17.7665L16.2456 13.3182Z" fill="white"/>
</g>
<defs>
<filter id="filter0_i_13498_7004" x="0" y="10.9" width="26.2002" height="13.2" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset/>
<feGaussianBlur stdDeviation="1.5"/>
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.2 0 0 0 0 0.439216 0 0 0 0 1 0 0 0 1 0"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_13498_7004"/>
</filter>
<filter id="filter1_f_13498_7004" x="0.100098" y="6.73328" width="27" height="20.667" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feGaussianBlur stdDeviation="3" result="effect1_foregroundBlur_13498_7004"/>
</filter>
<filter id="filter2_d_13498_7004" x="8.09961" y="13.0001" width="10.0002" height="7.49307" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="0.1"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.00986111 0 0 0 0 0.0953724 0 0 0 0 0.295833 0 0 0 0.22 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_13498_7004"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_13498_7004" result="shape"/>
</filter>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.3 KiB

View File

@@ -0,0 +1,39 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4 3C3.44772 3 3 3.44772 3 4C3 4.55228 3.44772 5 4 5H20C20.5523 5 21 4.55228 21 4C21 3.44772 20.5523 3 20 3H4ZM3 6C1.89544 6 1 6.89541 1 8V21C1 22.1046 1.89544 23 3 23H21C22.1046 23 23 22.1046 23 21V8C23 6.89542 22.1046 6 21 6H3ZM10.2071 9.79289C9.81658 9.40237 9.18342 9.40237 8.79289 9.79289C8.40237 10.1834 8.40237 10.8166 8.79289 11.2071L10.0858 12.5H9C8.44772 12.5 8 12.9477 8 13.5C8 14.0523 8.44772 14.5 9 14.5H11V15.5H9C8.44772 15.5 8 15.9477 8 16.5C8 17.0523 8.44772 17.5 9 17.5H11V18.5C11 19.0523 11.4477 19.5 12 19.5C12.5523 19.5 13 19.0523 13 18.5V17.5H15C15.5523 17.5 16 17.0523 16 16.5C16 15.9477 15.5523 15.5 15 15.5H13V14.5H15C15.5523 14.5 16 14.0523 16 13.5C16 12.9477 15.5523 12.5 15 12.5H13.9142L15.2071 11.2071C15.5976 10.8166 15.5976 10.1834 15.2071 9.79289C14.8166 9.40237 14.1834 9.40237 13.7929 9.79289L12 11.5858L10.2071 9.79289Z" fill="#00A6AB"/>
<g filter="url(#filter0_i_4792_17498)">
<circle cx="22" cy="21" r="7" fill="#F2FBFB"/>
</g>
<circle cx="22" cy="21" r="7" stroke="white" stroke-width="0.2"/>
<g filter="url(#filter1_f_4792_17498)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M23 14.0709C22.6734 14.0242 22.3395 14 22 14C18.134 14 15 17.134 15 21C15 21.695 15.1013 22.3663 15.2899 23H21C22.1046 23 23 22.1046 23 21V14.0709Z" fill="#00A6AB"/>
</g>
<g filter="url(#filter2_d_4792_17498)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M23.5349 18.25C23.5349 17.5596 22.9752 17 22.2849 17C21.5945 17 21.0349 17.5596 21.0349 18.25V20.0177H19.25C18.5596 20.0177 18 20.5774 18 21.2677C18 21.9581 18.5596 22.5177 19.25 22.5177H21.0349V24.2854C21.0349 24.9758 21.5945 25.5354 22.2849 25.5354C22.9752 25.5354 23.5349 24.9758 23.5349 24.2854V22.5177H25.3198C26.0101 22.5177 26.5698 21.9581 26.5698 21.2677C26.5698 20.5774 26.0101 20.0177 25.3198 20.0177H23.5349V18.25Z" fill="white"/>
</g>
<defs>
<filter id="filter0_i_4792_17498" x="14.9" y="13.9" width="14.2" height="14.2" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset/>
<feGaussianBlur stdDeviation="1.5"/>
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.2 0 0 0 0 0.439216 0 0 0 0 1 0 0 0 0.1 0"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_4792_17498"/>
</filter>
<filter id="filter1_f_4792_17498" x="11" y="10" width="16" height="17" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feGaussianBlur stdDeviation="2" result="effect1_foregroundBlur_4792_17498"/>
</filter>
<filter id="filter2_d_4792_17498" x="18" y="17" width="8.56976" height="8.63543" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="0.1"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.00986111 0 0 0 0 0.0953724 0 0 0 0 0.295833 0 0 0 0.22 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_4792_17498"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_4792_17498" result="shape"/>
</filter>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@@ -0,0 +1,50 @@
<svg width="44" height="44" viewBox="0 0 44 44" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M4 4C4 2.89543 4.89543 2 6 2H27C28.1046 2 29 2.89543 29 4V30.8215C29 32.2942 27.4622 33.2619 26.1345 32.6246L17.3655 28.4154C16.8184 28.1528 16.1816 28.1528 15.6345 28.4154L6.86546 32.6246C5.53779 33.2619 4 32.2942 4 30.8215V4Z" fill="#FE9847"/>
<mask id="mask0_16326_1511" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="11" y="6" width="29" height="36">
<path d="M11 8C11 6.89543 11.8954 6 13 6H38C39.1046 6 40 6.89543 40 8V39.0079C40 40.433 38.5521 41.4009 37.2353 40.856L26.2647 36.3164C25.775 36.1138 25.225 36.1138 24.7353 36.3164L13.7647 40.856C12.4479 41.4009 11 40.433 11 39.0079V8Z" fill="#D68383"/>
</mask>
<g mask="url(#mask0_16326_1511)">
<path d="M4 4C4 2.89543 4.89543 2 6 2H27C28.1046 2 29 2.89543 29 4V30.8215C29 32.2942 27.4622 33.2619 26.1345 32.6246L17.3655 28.4154C16.8184 28.1528 16.1816 28.1528 15.6345 28.4154L6.86546 32.6246C5.53779 33.2619 4 32.2942 4 30.8215V4Z" fill="#00C261"/>
</g>
<g filter="url(#filter0_i_16326_1511)">
<path d="M11 8C11 6.89543 11.8954 6 13 6H38C39.1046 6 40 6.89543 40 8V39.0079C40 40.433 38.5521 41.4009 37.2353 40.856L26.2647 36.3164C25.775 36.1138 25.225 36.1138 24.7353 36.3164L13.7647 40.856C12.4479 41.4009 11 40.433 11 39.0079V8Z" fill="#FFFAF2"/>
</g>
<path d="M11 8C11 6.89543 11.8954 6 13 6H38C39.1046 6 40 6.89543 40 8V39.0079C40 40.433 38.5521 41.4009 37.2353 40.856L26.2647 36.3164C25.775 36.1138 25.225 36.1138 24.7353 36.3164L13.7647 40.856C12.4479 41.4009 11 40.433 11 39.0079V8Z" stroke="white" stroke-opacity="0.8" stroke-width="0.2"/>
<g filter="url(#filter1_f_16326_1511)">
<mask id="mask1_16326_1511" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="12" y="7" width="29" height="30">
<path d="M12 9C12 7.89543 12.8954 7 14 7H38.8957C40.0402 7 40.9513 7.95858 40.8931 9.10156L39.6278 33.9873C39.5624 35.2724 38.3181 36.1623 37.0809 35.8088L29.4431 33.6266C29.1515 33.5433 28.8448 33.5274 28.5461 33.5801L14.3476 36.0857C13.1229 36.3018 12 35.3598 12 34.1162V9Z" fill="#FE9847"/>
</mask>
<g mask="url(#mask1_16326_1511)">
<path d="M3.3103 4.77783C3.3103 3.67326 4.20573 2.77783 5.3103 2.77783H34.3448C35.4494 2.77783 36.3448 3.67326 36.3448 4.77783V33.4254C36.3448 34.8861 34.8298 35.8541 33.5044 35.2403L25.725 31.6379C25.1594 31.3759 24.504 31.3927 23.9525 31.6832L6.24234 41.0113C4.9105 41.7128 3.3103 40.747 3.3103 39.2417V4.77783Z" fill="#FE9847"/>
</g>
</g>
<g filter="url(#filter2_d_16326_1511)">
<path d="M23.8677 12.4664C24.558 12.4664 25.1177 13.0261 25.1177 13.7164V18.2174H29.6372C30.3276 18.2174 30.8882 18.7771 30.8882 19.4674C30.888 20.1574 30.3282 20.7171 29.6382 20.7174H25.1177V25.2184C25.1174 25.9085 24.5579 26.4684 23.8677 26.4684C23.1775 26.4684 22.6179 25.9085 22.6177 25.2184V20.7174H18.0981C17.4079 20.7174 16.8474 20.1576 16.8472 19.4674C16.8472 18.7772 17.407 18.2177 18.0972 18.2174H22.6177V13.7164C22.6177 13.0261 23.1773 12.4664 23.8677 12.4664Z" fill="white"/>
</g>
<defs>
<filter id="filter0_i_16326_1511" x="10.9" y="5.90002" width="29.2" height="35.2101" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset/>
<feGaussianBlur stdDeviation="1.5"/>
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.996078 0 0 0 0 0.596078 0 0 0 0 0.278431 0 0 0 0.1 0"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_16326_1511"/>
</filter>
<filter id="filter1_f_16326_1511" x="7" y="2" width="34.3448" height="39.1167" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feGaussianBlur stdDeviation="2.5" result="effect1_foregroundBlur_16326_1511"/>
</filter>
<filter id="filter2_d_16326_1511" x="16.8472" y="12.4664" width="14.041" height="14.102" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="0.1"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.00986111 0 0 0 0 0.0953724 0 0 0 0 0.295833 0 0 0 0.22 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_16326_1511"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_16326_1511" result="shape"/>
</filter>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 4.7 KiB

View File

@@ -0,0 +1,40 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M1 10.3684C1 9.81612 1.44772 9.36841 2 9.36841H22C22.5523 9.36841 23 9.81612 23 10.3684V21.9474C23 23.081 22.081 24 20.9474 24H3.05263C1.919 24 1 23.081 1 21.9474V10.3684ZM3 11.3684V21.9474C3 21.9764 3.02355 22 3.05263 22H20.9474C20.9765 22 21 21.9764 21 21.9474V11.3684H3Z" fill="#9170FD"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.78949 3C8.78949 2.44772 8.34177 2 7.78949 2C7.23721 2 6.78949 2.44772 6.78949 3V3.57892H3.05263C1.91899 3.57892 1 4.49791 1 5.63155V10.3684C1 10.9207 1.44772 11.3684 2 11.3684V21.9474C2 22.5287 2.47128 23 3.05263 23H20.9474C21.5287 23 22 22.5287 22 21.9474V11.3684C22.5523 11.3684 23 10.9207 23 10.3684V5.63155C23 4.49792 22.081 3.57892 20.9474 3.57892H17.2105V3C17.2105 2.44772 16.7628 2 16.2105 2C15.6582 2 15.2105 2.44772 15.2105 3V3.57892H8.78949V3ZM15.2105 7.21053V5.57892H8.78949V7.21053C8.78949 7.76281 8.34177 8.21053 7.78949 8.21053C7.23721 8.21053 6.78949 7.76281 6.78949 7.21053V5.57892H3.05263C3.02356 5.57892 3 5.60248 3 5.63155V9.36839H21V5.63155C21 5.60247 20.9764 5.57892 20.9474 5.57892H17.2105V7.21053C17.2105 7.76281 16.7628 8.21053 16.2105 8.21053C15.6582 8.21053 15.2105 7.76281 15.2105 7.21053ZM17.9703 14.2334C18.3608 13.8429 18.3608 13.2097 17.9703 12.8192C17.5798 12.4287 16.9466 12.4287 16.5561 12.8192L10.9474 18.4279L8.4966 15.9771C8.10607 15.5866 7.47291 15.5866 7.08238 15.9771C6.69186 16.3676 6.69186 17.0008 7.08238 17.3913L10.2403 20.5492C10.6308 20.9397 11.264 20.9397 11.6545 20.5492L17.9703 14.2334Z" fill="#9170FD"/>
<g filter="url(#filter0_i_4792_17631)">
<circle cx="22" cy="21" r="7" fill="#F5F2FF"/>
</g>
<circle cx="22" cy="21" r="7" stroke="white" stroke-width="0.2"/>
<g filter="url(#filter1_f_4792_17631)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M23 14.0709C22.6734 14.0242 22.3395 14 22 14C18.134 14 15 17.134 15 21C15 21.695 15.1013 22.3663 15.2899 23H21C22.1046 23 23 22.1046 23 21V14.0709Z" fill="#9170FD"/>
</g>
<g filter="url(#filter2_d_4792_17631)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M23.5349 18.25C23.5349 17.5596 22.9752 17 22.2849 17C21.5945 17 21.0349 17.5596 21.0349 18.25V20.0177H19.25C18.5596 20.0177 18 20.5774 18 21.2677C18 21.9581 18.5596 22.5177 19.25 22.5177H21.0349V24.2854C21.0349 24.9758 21.5945 25.5354 22.2849 25.5354C22.9752 25.5354 23.5349 24.9758 23.5349 24.2854V22.5177H25.3198C26.0101 22.5177 26.5698 21.9581 26.5698 21.2677C26.5698 20.5774 26.0101 20.0177 25.3198 20.0177H23.5349V18.25Z" fill="white"/>
</g>
<defs>
<filter id="filter0_i_4792_17631" x="14.9" y="13.9" width="14.2" height="14.2" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset/>
<feGaussianBlur stdDeviation="1.5"/>
<feComposite in2="hardAlpha" operator="arithmetic" k2="-1" k3="1"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.705882 0 0 0 0 0.639216 0 0 0 0 0.984314 0 0 0 1 0"/>
<feBlend mode="normal" in2="shape" result="effect1_innerShadow_4792_17631"/>
</filter>
<filter id="filter1_f_4792_17631" x="11" y="10" width="16" height="17" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feGaussianBlur stdDeviation="2" result="effect1_foregroundBlur_4792_17631"/>
</filter>
<filter id="filter2_d_4792_17631" x="18" y="17" width="8.56976" height="8.63543" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="0.1"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.00986111 0 0 0 0 0.0953724 0 0 0 0 0.295833 0 0 0 0.22 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_4792_17631"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_4792_17631" result="shape"/>
</filter>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 4.3 KiB

View File

@@ -0,0 +1,26 @@
<svg width="30" height="30" viewBox="0 0 30 30" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 3C6.89543 3 6 3.89543 6 5V18C6 19.1046 6.89543 20 8 20H22C23.1046 20 24 19.1046 24 18V5C24 3.89543 23.1046 3 22 3H8ZM12 7C12 6.44772 12.4477 6 13 6H17C17.5523 6 18 6.44772 18 7C18 7.55228 17.5523 8 17 8H13C12.4477 8 12 7.55228 12 7ZM12 10C12 9.44772 12.4477 9 13 9H17C17.5523 9 18 9.44772 18 10C18 10.5523 17.5523 11 17 11H13C12.4477 11 12 10.5523 12 10Z" fill="#FE9847"/>
<path d="M4 13.25H26C26.9665 13.25 27.75 14.0335 27.75 15V26C27.75 26.9665 26.9665 27.75 26 27.75H4C3.0335 27.75 2.25 26.9665 2.25 26V15C2.25 14.0335 3.0335 13.25 4 13.25Z" fill="#FFF5EC" stroke="white" stroke-width="0.5"/>
<g filter="url(#filter0_f_4792_17570)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M24 13V22C24 23.1046 23.1046 24 22 24H8C6.89543 24 6 23.1046 6 22V13H24Z" fill="#FE9847"/>
</g>
<g filter="url(#filter1_d_4792_17570)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M12.2748 24.0425C12.303 24.0777 12.3335 24.1117 12.3661 24.1443C12.8543 24.6324 13.6457 24.6324 14.1339 24.1443L20.1443 18.1339C20.6325 17.6457 20.6325 16.8543 20.1443 16.3661C19.6561 15.878 18.8647 15.878 18.3765 16.3661L13.2552 21.4874L11.1339 19.3661C10.6457 18.8779 9.85427 18.8779 9.36612 19.3661C8.87796 19.8542 8.87796 20.6457 9.36612 21.1339L12.2748 24.0425Z" fill="white"/>
</g>
<defs>
<filter id="filter0_f_4792_17570" x="0" y="7" width="30" height="23" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feBlend mode="normal" in="SourceGraphic" in2="BackgroundImageFix" result="shape"/>
<feGaussianBlur stdDeviation="3" result="effect1_foregroundBlur_4792_17570"/>
</filter>
<filter id="filter1_d_4792_17570" x="9" y="16" width="11.5104" height="8.61041" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="0.1"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.00986111 0 0 0 0 0.0953724 0 0 0 0 0.295833 0 0 0 0.22 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_4792_17570"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_4792_17570" result="shape"/>
</filter>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1767000678212" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="27071" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M512 42.666667a469.077333 469.077333 0 0 1 427.52 662.613333l-84.437333-47.872A372.693333 372.693333 0 0 0 188.8 326.698667a372.693333 372.693333 0 0 0 623.061333 406.357333l160.213334 98.261333-46.805334 81.152-95.701333-55.168A469.077333 469.077333 0 0 1 60.544 384.042667 469.162667 469.162667 0 0 1 512 42.666667z m0 187.562666c58.538667 0 112.981333 17.92 157.994667 48.512L614.826667 357.973333a185.002667 185.002667 0 1 0 45.696 264.362667l79.104 55.466667a281.557333 281.557333 0 0 1-502.869334-224.512A281.557333 281.557333 0 0 1 512 230.229333z m0 176.426667c24.32 0 46.72 8.234667 64.554667 22.101333l-37.12 53.930667a40.106667 40.106667 0 1 0 7.594666 48.64l53.333334 37.802667a105.258667 105.258667 0 1 1-88.32-162.56v0.085333z" fill="#1890FF" p-id="27072"></path></svg>

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

@@ -0,0 +1,5 @@
<svg width="32" height="32" viewBox="0 0 32 32" fill="none" xmlns="http://www.w3.org/2000/svg">
<circle cx="16" cy="16" r="16" fill="#E5F9EF"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M2.31104 15.9999C2.31104 23.5609 8.43895 29.6888 15.9999 29.6888C23.5609 29.6888 29.6888 23.5609 29.6888 15.9999C29.6888 8.43895 23.5609 2.31104 15.9999 2.31104C8.43895 2.31104 2.31104 8.43895 2.31104 15.9999Z" fill="#00C261"/>
<path d="M22.716 13.2866C23.0501 12.9524 23.0501 12.4107 22.716 12.0766L22.1111 11.4717C21.7769 11.1375 21.2352 11.1375 20.9011 11.4717L14.0997 18.2724L11.576 15.7494C11.2419 15.4153 10.7002 15.4153 10.3661 15.7494L9.76108 16.3544C9.42697 16.6885 9.42697 17.2302 9.76108 17.5643L13.3909 21.1942C13.6278 21.4311 13.9691 21.5 14.2671 21.4015C14.4791 21.3964 14.6896 21.313 14.8514 21.1512L22.716 13.2866Z" fill="white"/>
</svg>

After

Width:  |  Height:  |  Size: 847 B

View File

@@ -0,0 +1,105 @@
<svg width="32" height="33" viewBox="0 0 32 33" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M1.33333 3.33349C1.33333 2.22892 2.22876 1.3335 3.33333 1.3335H22.6667C23.7712 1.3335 24.6667 2.22893 24.6667 3.3335V26.0002C24.6667 27.1047 23.7712 28.0002 22.6667 28.0002H3.33333C2.22876 28.0002 1.33333 27.1047 1.33333 26.0002V3.33349Z" fill="url(#paint0_linear_730_58943)"/>
<g filter="url(#filter0_d_730_58943)">
<path d="M2.66667 4.6665C2.66667 3.56193 3.5621 2.6665 4.66667 2.6665H21.3333C22.4379 2.6665 23.3333 3.56193 23.3333 4.6665V24.6665C23.3333 25.7711 22.4379 26.6665 21.3333 26.6665H4.66667C3.5621 26.6665 2.66667 25.7711 2.66667 24.6665V4.6665Z" fill="url(#paint1_linear_730_58943)"/>
<path d="M4.66667 2.7665H21.3333C22.3827 2.7665 23.2333 3.61716 23.2333 4.6665V24.6665C23.2333 25.7158 22.3827 26.5665 21.3333 26.5665H4.66667C3.61733 26.5665 2.76667 25.7158 2.76667 24.6665V4.6665C2.76667 3.61716 3.61733 2.7665 4.66667 2.7665Z" stroke="url(#paint2_linear_730_58943)" stroke-width="0.2"/>
</g>
<g filter="url(#filter1_d_730_58943)">
<rect x="15.3333" y="7.3335" width="6.66667" height="2" rx="1" fill="white"/>
</g>
<g filter="url(#filter2_d_730_58943)">
<rect x="15.3333" y="12" width="6.66667" height="2" rx="1" fill="white"/>
</g>
<g filter="url(#filter3_d_730_58943)">
<path d="M4 8.37196V21.0029L13.6164 22.6665V6.6665L4 8.37741V8.37196Z" fill="white"/>
</g>
<g filter="url(#filter4_d_730_58943)">
<circle cx="22.6667" cy="22.6665" r="8" fill="url(#paint3_linear_730_58943)"/>
<circle cx="22.6667" cy="22.6665" r="7.9" stroke="url(#paint4_linear_730_58943)" stroke-width="0.2"/>
</g>
<g filter="url(#filter5_d_730_58943)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M23.5473 18.9694C23.1422 18.5652 22.4862 18.5656 22.0815 18.9702L18.9704 22.0814C18.5654 22.4863 18.5654 23.143 18.9704 23.5479C19.3754 23.9529 20.032 23.9529 20.437 23.5479L21.7778 22.2072V27.1933C21.7778 27.6387 22.2421 27.9998 22.8148 27.9998C23.3876 27.9998 23.8519 27.6387 23.8519 27.1933V22.2032L25.1934 23.5419C25.5989 23.9464 26.2555 23.9457 26.66 23.5402C27.0646 23.1348 27.0639 22.4782 26.6584 22.0736L23.5473 18.9694Z" fill="#008D91"/>
</g>
<defs>
<filter id="filter0_d_730_58943" x="1.66667" y="2.6665" width="22.6667" height="26" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="1"/>
<feGaussianBlur stdDeviation="0.5"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.00513634 0 0 0 0 0.454093 0 0 0 0 0.466829 0 0 0 1 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_730_58943"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_730_58943" result="shape"/>
</filter>
<filter id="filter1_d_730_58943" x="15.1333" y="7.3335" width="7.06667" height="2.4" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="0.2"/>
<feGaussianBlur stdDeviation="0.1"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.00392157 0 0 0 0 0.360784 0 0 0 0 0.368627 0 0 0 0.1 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_730_58943"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_730_58943" result="shape"/>
</filter>
<filter id="filter2_d_730_58943" x="15.1333" y="12" width="7.06667" height="2.4" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="0.2"/>
<feGaussianBlur stdDeviation="0.1"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.00392157 0 0 0 0 0.360784 0 0 0 0 0.368627 0 0 0 0.1 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_730_58943"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_730_58943" result="shape"/>
</filter>
<filter id="filter3_d_730_58943" x="3.8" y="6.6665" width="10.0164" height="16.4" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="0.2"/>
<feGaussianBlur stdDeviation="0.1"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.00392157 0 0 0 0 0.376471 0 0 0 0 0.388235 0 0 0 0.26 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_730_58943"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_730_58943" result="shape"/>
</filter>
<filter id="filter4_d_730_58943" x="13.6667" y="14.6665" width="18" height="18" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="1"/>
<feGaussianBlur stdDeviation="0.5"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0 0 0 0 0 0.352089 0 0 0 0 0.362077 0 0 0 0.1 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_730_58943"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_730_58943" result="shape"/>
</filter>
<filter id="filter5_d_730_58943" x="18.4667" y="18.6665" width="8.6963" height="9.7335" filterUnits="userSpaceOnUse" color-interpolation-filters="sRGB">
<feFlood flood-opacity="0" result="BackgroundImageFix"/>
<feColorMatrix in="SourceAlpha" type="matrix" values="0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 127 0" result="hardAlpha"/>
<feOffset dy="0.2"/>
<feGaussianBlur stdDeviation="0.1"/>
<feComposite in2="hardAlpha" operator="out"/>
<feColorMatrix type="matrix" values="0 0 0 0 0.00392157 0 0 0 0 0.388235 0 0 0 0 0.396078 0 0 0 0.26 0"/>
<feBlend mode="normal" in2="BackgroundImageFix" result="effect1_dropShadow_730_58943"/>
<feBlend mode="normal" in="SourceGraphic" in2="effect1_dropShadow_730_58943" result="shape"/>
</filter>
<linearGradient id="paint0_linear_730_58943" x1="12" y1="25.3335" x2="12" y2="1.3335" gradientUnits="userSpaceOnUse">
<stop stop-color="#008D91"/>
<stop offset="1" stop-color="#F2FBFB"/>
</linearGradient>
<linearGradient id="paint1_linear_730_58943" x1="12" y1="2.6665" x2="12" y2="23.9998" gradientUnits="userSpaceOnUse">
<stop stop-color="#F1FBFB"/>
<stop offset="1" stop-color="#B2E4E6"/>
</linearGradient>
<linearGradient id="paint2_linear_730_58943" x1="12" y1="2.6665" x2="12" y2="23.9998" gradientUnits="userSpaceOnUse">
<stop stop-color="#F7FFFF"/>
<stop offset="1" stop-color="#63C6CA"/>
</linearGradient>
<linearGradient id="paint3_linear_730_58943" x1="21.8925" y1="14.6665" x2="21.8925" y2="28.8887" gradientUnits="userSpaceOnUse">
<stop stop-color="#F1FBFB"/>
<stop offset="1" stop-color="#B2E4E6"/>
</linearGradient>
<linearGradient id="paint4_linear_730_58943" x1="21.8925" y1="14.6665" x2="21.8925" y2="28.8887" gradientUnits="userSpaceOnUse">
<stop stop-color="#F7FFFF"/>
<stop offset="1" stop-color="#63C6CA"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 7.4 KiB

View File

@@ -0,0 +1,3 @@
<svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
<path fill-rule="evenodd" clip-rule="evenodd" d="M19.1663 10C19.1663 15.0627 15.0623 19.1667 9.99967 19.1667C4.93706 19.1667 0.833008 15.0627 0.833008 10C0.833008 4.93743 4.93706 0.833374 9.99967 0.833374C15.0623 0.833374 19.1663 4.93743 19.1663 10ZM13.333 7.50004C13.333 9.34097 11.8406 10.8334 9.99967 10.8334C8.15874 10.8334 6.66634 9.34097 6.66634 7.50004C6.66634 5.65911 8.15874 4.16671 9.99967 4.16671C11.8406 4.16671 13.333 5.65911 13.333 7.50004ZM16.5818 16.38C14.9157 18.0986 12.5824 19.1667 9.99965 19.1667C7.41662 19.1667 5.08311 18.0983 3.41693 16.3794C4.40968 14.2666 6.0481 12.0834 7.49964 12.0834H12.4996C13.9504 12.0834 15.5889 14.2682 16.5818 16.38Z" fill="#D9BCE3"/>
</svg>

After

Width:  |  Height:  |  Size: 788 B

View File

@@ -0,0 +1,70 @@
/* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
// noinspection JSUnusedGlobalSymbols
// Generated by unplugin-auto-import
export {}
declare global {
const EffectScope: typeof import('vue')['EffectScope']
const computed: typeof import('vue')['computed']
const createApp: typeof import('vue')['createApp']
const customRef: typeof import('vue')['customRef']
const defineAsyncComponent: typeof import('vue')['defineAsyncComponent']
const defineComponent: typeof import('vue')['defineComponent']
const effectScope: typeof import('vue')['effectScope']
const getCurrentInstance: typeof import('vue')['getCurrentInstance']
const getCurrentScope: typeof import('vue')['getCurrentScope']
const h: typeof import('vue')['h']
const inject: typeof import('vue')['inject']
const isProxy: typeof import('vue')['isProxy']
const isReactive: typeof import('vue')['isReactive']
const isReadonly: typeof import('vue')['isReadonly']
const isRef: typeof import('vue')['isRef']
const markRaw: typeof import('vue')['markRaw']
const nextTick: typeof import('vue')['nextTick']
const onActivated: typeof import('vue')['onActivated']
const onBeforeMount: typeof import('vue')['onBeforeMount']
const onBeforeUnmount: typeof import('vue')['onBeforeUnmount']
const onBeforeUpdate: typeof import('vue')['onBeforeUpdate']
const onDeactivated: typeof import('vue')['onDeactivated']
const onErrorCaptured: typeof import('vue')['onErrorCaptured']
const onMounted: typeof import('vue')['onMounted']
const onRenderTracked: typeof import('vue')['onRenderTracked']
const onRenderTriggered: typeof import('vue')['onRenderTriggered']
const onScopeDispose: typeof import('vue')['onScopeDispose']
const onServerPrefetch: typeof import('vue')['onServerPrefetch']
const onUnmounted: typeof import('vue')['onUnmounted']
const onUpdated: typeof import('vue')['onUpdated']
const onWatcherCleanup: typeof import('vue')['onWatcherCleanup']
const provide: typeof import('vue')['provide']
const reactive: typeof import('vue')['reactive']
const readonly: typeof import('vue')['readonly']
const ref: typeof import('vue')['ref']
const resolveComponent: typeof import('vue')['resolveComponent']
const shallowReactive: typeof import('vue')['shallowReactive']
const shallowReadonly: typeof import('vue')['shallowReadonly']
const shallowRef: typeof import('vue')['shallowRef']
const toRaw: typeof import('vue')['toRaw']
const toRef: typeof import('vue')['toRef']
const toRefs: typeof import('vue')['toRefs']
const toValue: typeof import('vue')['toValue']
const triggerRef: typeof import('vue')['triggerRef']
const unref: typeof import('vue')['unref']
const useAttrs: typeof import('vue')['useAttrs']
const useCssModule: typeof import('vue')['useCssModule']
const useCssVars: typeof import('vue')['useCssVars']
const useId: typeof import('vue')['useId']
const useModel: typeof import('vue')['useModel']
const useSlots: typeof import('vue')['useSlots']
const useTemplateRef: typeof import('vue')['useTemplateRef']
const watch: typeof import('vue')['watch']
const watchEffect: typeof import('vue')['watchEffect']
const watchPostEffect: typeof import('vue')['watchPostEffect']
const watchSyncEffect: typeof import('vue')['watchSyncEffect']
}
// for type re-export
declare global {
// @ts-ignore
export type { Component, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue'
import('vue')
}

View File

@@ -0,0 +1,120 @@
<template>
<CrmDrawer v-model:show="visible" :footer="false" width="80vw">
<template #titleLeft>
<n-tooltip trigger="hover" :disabled="agentList.length > 0">
<template #trigger>
<n-select
v-model:value="activeAgent"
:options="agentList"
:placeholder="t('common.pleaseSelect')"
class="w-[200px]"
:disabled="agentList.length === 0"
:loading="loading"
label-field="name"
value-field="id"
@update-value="handleAgentChange"
/>
</template>
{{ t('agentDrawer.unAddedAgent') }}
</n-tooltip>
</template>
<div class="h-full">
<n-empty v-if="agentList.length === 0" :show-icon="false">
<div class="flex h-[200px] items-center justify-between gap-[8px]">
{{ t('agentDrawer.noAgent') }}
<n-button v-permission="['AGENT:READ']" type="primary" text @click="jump">
{{ t('agentDrawer.addAgent') }}
</n-button>
</div>
</n-empty>
<div v-else class="h-full" v-html="activeAgentScript"></div>
</div>
</CrmDrawer>
</template>
<script setup lang="ts">
import { useRouter } from 'vue-router';
import { NButton, NEmpty, NSelect, NTooltip } from 'naive-ui';
import { useI18n } from '@lib/shared/hooks/useI18n';
import CrmDrawer from '@/components/pure/crm-drawer/index.vue';
import { getAgentOptions } from '@/api/modules';
import useUserStore from '@/store/modules/user';
import { AgentRouteEnum } from '@/enums/routeEnum';
const router = useRouter();
const { t } = useI18n();
const userStore = useUserStore();
const visible = defineModel<boolean>('visible', {
required: true,
});
const activeAgent = ref<string | null>(localStorage.getItem('crm-agent-drawer-active-agent') || null);
const agentList = ref<Record<string, any>[]>([]);
const firstValidApiKey = computed(() => userStore.apiKeyList.find((key) => !key.isExpire && key.enable));
const activeAgentScript = computed(() => {
const script = (agentList.value.find((agent) => agent.id === activeAgent.value)?.script as string) || '';
let result = script.replace(/\$\{ak\}/g, firstValidApiKey.value?.accessKey || '');
result = result.replace(/\$\{sk\}/g, firstValidApiKey.value?.secretKey || '');
result = result.replace(/\$\{username\}/g, userStore.userInfo.name);
return result;
});
function jump() {
visible.value = false;
if (router.currentRoute.value.name === AgentRouteEnum.AGENT_INDEX) {
router.replace({ name: AgentRouteEnum.AGENT_INDEX, query: { showAdd: 'Y', t: Date.now() } });
} else {
router.push({ name: AgentRouteEnum.AGENT_INDEX, query: { showAdd: 'Y' } });
}
}
const loading = ref(false);
async function initAgentList() {
try {
loading.value = true;
agentList.value = await getAgentOptions();
const hasAgentId = agentList.value.find((agent) => agent.id === activeAgent.value);
if ((!activeAgent.value && agentList.value.length > 0) || (activeAgent.value && !hasAgentId)) {
activeAgent.value = agentList.value[0]?.id ?? null;
if (activeAgent.value) {
localStorage.setItem('crm-agent-drawer-active-agent', activeAgent.value);
} else {
localStorage.removeItem('crm-agent-drawer-active-agent');
}
} else if (agentList.value.length === 0) {
localStorage.removeItem('crm-agent-drawer-active-agent');
activeAgent.value = null;
}
} catch (error) {
// eslint-disable-next-line no-console
console.log(error);
} finally {
loading.value = false;
}
}
function handleAgentChange(val: string) {
localStorage.setItem('crm-agent-drawer-active-agent', val);
}
watch(
() => visible.value,
(val) => {
if (val) {
userStore.initApiKeyList();
initAgentList();
}
},
{
immediate: true,
}
);
</script>
<style lang="less" scoped></style>

View File

@@ -0,0 +1,5 @@
export default {
'agentDrawer.unAddedAgent': 'No agent added',
'agentDrawer.noAgent': 'No agent available',
'agentDrawer.addAgent': 'Add agent',
};

View File

@@ -0,0 +1,5 @@
export default {
'agentDrawer.unAddedAgent': '未添加智能体',
'agentDrawer.noAgent': '暂无智能体',
'agentDrawer.addAgent': '添加智能体',
};

View File

@@ -0,0 +1,182 @@
<template>
<div class="crm-approval-approver-content">
<div v-if="approvers.length" class="crm-approver-avatar-list">
<div
v-for="approver in approvers"
:key="approver.id"
class="crm-approver-avatar-list__item"
:class="{ 'crm-approver-avatar-list__item--active': approver.id === activeApproverId }"
>
<CrmApprovalAvatar
:approver="approver"
:size="props.size"
:activeApproverId="activeApproverId"
@toggleActive="toggleActive(approver)"
/>
<n-tooltip :delay="300" trigger="hover">
<template #trigger>
<div
class="one-line-text crm-approver-avatar-list__name cursor-pointer"
:class="{
'crm-approver-avatar-list__name--active-approval': isActiveApproval(approver),
'crm-approver-avatar-list__name--active-rejected': isActiveRejected(approver),
'crm-approver-avatar-list__name--active': approver.id === activeApproverId,
}"
@click="toggleActive(approver)"
>
{{ approver.name }}
</div>
</template>
{{ approver.name }}
</n-tooltip>
</div>
</div>
<div v-if="currentApproverReason" class="crm-approval-approver-content__reasons">
<div class="crm-approval-approver-content__reason">
{{ currentApproverReason }}
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { NTooltip } from 'naive-ui';
import { ProcessStatusEnum } from '@lib/shared/enums/process';
import { useI18n } from '@lib/shared/hooks/useI18n';
import { ApproverItem } from '@lib/shared/models/system/process';
import CrmApprovalAvatar from './crm-approval-avatar.vue';
const props = withDefaults(
defineProps<{
approvers?: ApproverItem[];
size?: number;
}>(),
{
approvers: () => [],
size: 24,
}
);
const { t } = useI18n();
const approvers = computed(() => props.approvers || []);
const activeApproverId = defineModel<string | number>('activeId', {
default: '',
});
const currentApproverMap = computed(() => new Map(approvers.value.map((item) => [String(item.id), item])));
const currentApproverReason = computed(() => {
const currentApprover = currentApproverMap.value.get(String(activeApproverId.value));
if (!currentApprover) {
return '';
}
if (currentApprover.approveResult === ProcessStatusEnum.AUTO_UNAPPROVED) {
return t('crm.approval.autoReject');
}
return currentApprover.approveReason ?? '';
});
function isActiveApproval(approver: ApproverItem) {
return approver.approveResult === ProcessStatusEnum.APPROVED && approver.id === activeApproverId.value;
}
function isActiveRejected(approver: ApproverItem) {
return approver.approveResult === ProcessStatusEnum.UNAPPROVED && approver.id === activeApproverId.value;
}
function toggleActive(approver: ApproverItem) {
activeApproverId.value = approver.id;
}
watch(
approvers,
(list) => {
if (!list.length) {
activeApproverId.value = '';
return;
}
const hasCurrentActive = list.some((item) => item.id === activeApproverId.value);
if (!hasCurrentActive) {
activeApproverId.value = list[0]?.id ?? '';
}
},
{ immediate: true }
);
</script>
<style scoped lang="less">
.crm-approval-approver-content {
.crm-approver-avatar-list {
display: flex;
padding: 8px;
flex-wrap: wrap;
gap: 4px;
}
.crm-approver-avatar-list__item {
display: flex;
align-items: center;
min-width: 0;
max-width: 100%;
column-gap: 8px;
row-gap: 4px;
cursor: pointer;
}
.crm-approver-avatar-list__avatar-wrap {
position: relative;
display: flex;
justify-content: center;
align-items: center;
width: v-bind('`${props.size}px`');
height: v-bind('`${props.size}px`');
border-radius: 50%;
transition: box-shadow 0.18s ease;
@apply flex flex-shrink-0 items-center justify-between;
&--active {
box-shadow: 0 0 0 1px var(--primary-8);
}
}
.crm-approver-avatar-list__item:hover {
.crm-approver-avatar-list__name {
color: var(--primary-8);
}
}
.crm-approver-avatar-list__name {
color: var(--text-n1);
&--active-approval {
color: var(--primary-0);
}
&--active-rejected {
color: var(--primary-1);
}
&--active {
color: var(--primary-8);
}
}
.crm-approval-approver-content__reasons {
display: flex;
border-radius: 4px;
background: var(--text-n9);
flex-direction: column;
gap: 8px;
.crm-approval-approver-content__reason {
display: box;
overflow: hidden;
padding: 8px;
font-size: 14px;
border-radius: 4px;
text-overflow: ellipsis;
color: var(--text-n2);
line-height: 22px;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
}
}
</style>

View File

@@ -0,0 +1,109 @@
<template>
<div
class="crm-approver-avatar-list__avatar-wrap"
:class="{ 'crm-approver-avatar-list__avatar-wrap--active': props.approver?.id === activeApproverId }"
>
<n-avatar v-if="isShowAutoBot" round :size="props.size" class="cursor-pointer" @click="emit('toggleActive')">
<CrmIcon type="iconicon_bot" :size="18" class="text-[var(--text-n10)]" />
</n-avatar>
<CrmAvatar
v-else
:avatar="props.approver?.avatar"
:word="props.approver?.name"
:is-user="false"
:size="props.size"
class="cursor-pointer"
@click="emit('toggleActive')"
/>
<div
v-if="props.approver?.approveResult"
:class="getStatusClass(props.approver.approveResult)"
class="crm-approver-avatar-list__status"
>
<CrmIcon :type="getStatusIcon(props.approver.approveResult)" :size="14" />
</div>
</div>
</template>
<script setup lang="ts">
import { NAvatar } from 'naive-ui';
import { ProcessStatusEnum } from '@lib/shared/enums/process';
import type { ApproverItem } from '@lib/shared/models/system/process';
import CrmIcon from '@/components/pure/crm-icon-font/index.vue';
import CrmAvatar from '@/components/business/crm-avatar/index.vue';
const props = withDefaults(
defineProps<{
approver?: ApproverItem;
size?: number;
activeApproverId?: string | number;
signNode?: boolean;
}>(),
{
approvers: () => [],
size: 24,
}
);
const emit = defineEmits<{
(e: 'toggleActive'): void;
}>();
const isShowAutoBot = computed(() => props.approver?.id === 'Cbot');
function getStatusIcon(status: ProcessStatusEnum) {
if (props.signNode) {
return 'iconicon_add_one';
}
if ([ProcessStatusEnum.UNAPPROVED, ProcessStatusEnum.AUTO_UNAPPROVED].includes(status)) {
return 'iconicon_close_circle_filled';
}
return 'iconicon_succeed_filled';
}
function getStatusClass(status: ProcessStatusEnum) {
if (props.signNode) {
return 'text-[var(--info-blue)]';
}
switch (status) {
case ProcessStatusEnum.UNAPPROVED:
case ProcessStatusEnum.AUTO_UNAPPROVED:
return 'text-[var(--error-red)]';
case ProcessStatusEnum.APPROVED:
case ProcessStatusEnum.AUTO_APPROVED:
return 'text-[var(--success-green)]';
default:
return 'text-[var(--text-n4)]';
}
}
</script>
<style lang="less" scoped>
.crm-approver-avatar-list__avatar-wrap {
position: relative;
display: flex;
justify-content: center;
align-items: center;
width: v-bind('`${props.size}px`');
height: v-bind('`${props.size}px`');
border-radius: 50%;
transition: box-shadow 0.18s ease;
@apply flex flex-shrink-0 items-center justify-between;
&--active {
box-shadow: 0 0 0 1px var(--primary-8);
}
}
.crm-approver-avatar-list__status {
position: absolute;
top: -3px;
right: -3px;
display: flex;
justify-content: center;
align-items: center;
width: 12px;
height: 12px;
border-radius: 50%;
background-color: var(--text-n10);
}
</style>

View File

@@ -0,0 +1,740 @@
<template>
<CrmCard hide-footer no-content-padding>
<CrmSplitPanel
v-if="props.approvalStatus && ![ProcessStatusEnum.PENDING, ProcessStatusEnum.NONE].includes(props.approvalStatus)"
:size="0.7"
:max="1"
:min="0.7"
:default-size="0.7"
collapse-side="right"
disabled
>
<template #1>
<div class="flex h-full w-full p-[24px_8px_24px_24px]">
<n-scrollbar :content-style="{ paddingRight: '8px' }" x-scrollable>
<slot name="left" :fieldPermissions="filedPermission"></slot>
</n-scrollbar>
</div>
</template>
<template #2>
<div
v-if="noApproval"
class="h-full w-full flex-1 border-l border-[var(--text-n8)] px-[16px] py-[24px] pb-[32px]"
>
<div class="mb-[8px] text-[16px] font-semibold">{{ t('crm.approval.record') }}</div>
{{ t('crm.approval.historyTip') }}
</div>
<div v-else class="flex h-full w-full flex-col overflow-hidden border-l border-[var(--text-n8)]">
<div class="flex-1 overflow-hidden px-[16px] py-[24px] pb-[32px]">
<div class="mb-[8px] text-[16px] font-semibold">{{ t('crm.approval.record') }}</div>
<CrmApprovalLine
:nodes="approvalInfo?.nodes || []"
:submitter="{
submitAvatar: approvalInfo?.submitAvatar,
submitter: approvalInfo?.submitter,
submitTime: approvalInfo?.submitTime,
submitterId: approvalInfo?.submitterId,
comment: approvalInfo?.comment,
}"
:currentApprovalNode="currentApprovalNode"
:currentApprovalNodeIndex="currentApprovalNodeIndex"
:finally-result="approvalInfo?.approvalStatus"
class="pr-[8px]"
/>
</div>
<div
v-if="
approvalInfo?.approvalStatus === ProcessStatusEnum.APPROVING &&
(isApprover || canCancelApply || canCancelApproval)
"
class="sticky bottom-0 border-t border-[var(--text-n8)] bg-[var(--text-n10)] p-[16px]"
>
<template v-if="isApprover">
<div class="flex items-center gap-[4px]">
<div class="mb-[8px] font-semibold">{{ t('crm.approval.opinion') }}</div>
<span v-if="approvalConfig?.requireComment" class="text-[var(--error-red)]">*</span>
</div>
<CrmFileInput
ref="CrmFileInputRef"
v-model:value="approvalOpinion"
v-model:file-list="fileList"
:required="approvalConfig?.requireComment"
:name="t('crm.approval.opinion')"
/>
<div class="mt-[12px] flex gap-[12px]">
<n-button type="primary" class="flex-1" :loading="approvalLoading" @click="handleApprove">
{{ t('common.approve') }}
</n-button>
<n-button type="error" ghost @click="handleReject">{{ t('common.reject') }}</n-button>
<CrmMoreAction :options="moreActions" trigger="click" size="medium" @select="handleMoreActionSelect" />
</div>
</template>
<n-button
v-if="canCancelApply"
type="primary"
class="mt-[16px]"
ghost
block
@click="cancelApproval('apply')"
>
<template #icon>
<CrmIcon type="iconicon_rollfront" :size="16" />
</template>
{{ t('common.revoke') }}
</n-button>
<n-button
v-if="canCancelApproval"
type="primary"
class="mt-[16px]"
ghost
block
@click="() => cancelApproval()"
>
<template #icon>
<CrmIcon type="iconicon_rollfront" :size="16" />
</template>
{{ t('crm.approval.cancelApproval') }}
</n-button>
</div>
</div>
</template>
</CrmSplitPanel>
<div v-else class="flex h-full w-full p-[24px_16px_24px_24px]">
<n-scrollbar x-scrollable>
<slot name="left" :fieldPermissions="[]"></slot>
</n-scrollbar>
</div>
</CrmCard>
<CrmModal
v-model:show="addSignModalVisible"
:title="t('common.COUNTERSIGNATURE')"
:ok-loading="addSignLoading"
:positive-text="addSignForm.type === 'AFTER' ? t('crm.approval.agreeAndAddSign') : t('crm.approval.confirmAddSign')"
@confirm="handleAddSign"
>
<n-form
ref="addSignFormRef"
:model="addSignForm"
label-placement="left"
label-width="auto"
require-mark-placement="right"
>
<n-form-item path="type" :label="t('crm.approval.addSignMethod')">
<n-radio-group v-model:value="addSignForm.type" name="radiogroup">
<n-radio key="BEFORE" value="BEFORE">
{{ t('crm.approval.beforeMethod') }}
</n-radio>
<n-radio key="AFTER" value="AFTER">
{{ t('crm.approval.afterMethod') }}
</n-radio>
</n-radio-group>
</n-form-item>
<n-form-item
path="reviewer"
:label="t('crm.approval.addSignApprover')"
:rule="[
{
required: true,
message: t('common.notNull', {
value: t('crm.approval.addSignApprover'),
}),
},
]"
>
<CrmMemberSelect
v-model:value="addSignForm.reviewer"
:multiple="false"
:apiTypeKey="MemberApiTypeEnum.FORM_FIELD"
:member-types="[
{
label: t('menu.settings.org'),
value: MemberSelectTypeEnum.ORG,
},
]"
/>
</n-form-item>
<n-form-item path="reason" :label="t('crm.approval.addSignOpinion')">
<CrmFileInput v-model:value="addSignForm.reason" v-model:file-list="addSignForm.fileList" />
</n-form-item>
</n-form>
</CrmModal>
<CrmModal
v-model:show="fallbackModalVisible"
:title="t('taskDrawer.operation.BACK')"
:ok-loading="fallbackLoading"
:positive-text="t('crm.approval.confirmFallback')"
@confirm="handleFallback"
>
<n-form
ref="fallbackFormRef"
:model="fallbackForm"
label-placement="left"
label-width="auto"
require-mark-placement="right"
>
<n-form-item path="node" :label="t('crm.approval.fallbackTo')" required>
<n-select v-model:value="fallbackForm.node" :options="fallbackOptions" clearable />
</n-form-item>
<n-form-item path="reason" :label="t('crm.approval.fallbackReason')">
<CrmFileInput v-model:value="fallbackForm.reason" v-model:file-list="fallbackForm.fileList" />
</n-form-item>
</n-form>
</CrmModal>
</template>
<script setup lang="ts">
import {
type FormInst,
NButton,
NForm,
NFormItem,
NRadio,
NRadioGroup,
NScrollbar,
NSelect,
type UploadFileInfo,
useMessage,
} from 'naive-ui';
import { FormDesignKeyEnum } from '@lib/shared/enums/formDesignEnum';
import { MemberApiTypeEnum, MemberSelectTypeEnum } from '@lib/shared/enums/moduleEnum';
import { MultiApproverModeEnum, ProcessStatusEnum } from '@lib/shared/enums/process';
import { useI18n } from '@lib/shared/hooks/useI18n';
import type { CollaborationType } from '@lib/shared/models/customer';
import type { FormConfig } from '@lib/shared/models/system/module';
import type {
ApprovalDetail,
ApprovalFieldPermission,
ApprovalNode,
ApprovalProcessDetail,
} from '@lib/shared/models/system/process';
import CrmCard from '@/components/pure/crm-card/index.vue';
import CrmIcon from '@/components/pure/crm-icon-font/index.vue';
import CrmModal from '@/components/pure/crm-modal/index.vue';
import CrmMoreAction from '@/components/pure/crm-more-action/index.vue';
import type { ActionsItem } from '@/components/pure/crm-more-action/type';
import CrmSplitPanel from '@/components/pure/crm-split-panel/index.vue';
import CrmFileInput from '@/components/business/crm-file-input/index.vue';
import CrmMemberSelect from '@/components/business/crm-user-tag-selector/index.vue';
import CrmApprovalLine from './crm-approval-line.vue';
import {
addSignApproval,
agreeApproval,
backApproval,
getApprovalConfigDetail,
getApprovalResourceDetail,
rejectApproval,
revokeApproval,
revokeResource,
} from '@/api/modules';
import useModal from '@/hooks/useModal';
import useUserStore from '@/store/modules/user';
import type { SelectMixedOption } from 'naive-ui/es/select/src/interface';
const props = defineProps<{
sourceId: string;
formKey: FormDesignKeyEnum;
refreshKey?: number;
layout?: 'horizontal' | 'vertical';
approvalStatus: ProcessStatusEnum;
}>();
const emit = defineEmits<{
(
e: 'descriptionInit',
collaborationType?: CollaborationType,
sourceName?: string,
detail?: Record<string, any>,
config?: FormConfig
): void;
(e: 'saveApproval', callback: () => Promise<any>, hasFieldPermission: boolean): void;
(e: 'refresh'): void;
}>();
const { t } = useI18n();
const { openModal } = useModal();
const message = useMessage();
const userStore = useUserStore();
const approvalInfo = ref<ApprovalDetail>();
const approvalConfig = ref<ApprovalProcessDetail>(); // 审批配置详情
async function initApprovalConfig() {
try {
if (props.formKey) {
approvalConfig.value = await getApprovalConfigDetail(props.formKey);
}
} catch (error) {
// eslint-disable-next-line no-console
console.log(error);
}
}
const approvalOpinion = ref('');
const fileList = ref<UploadFileInfo[]>([]);
const CrmFileInputRef = ref<InstanceType<typeof CrmFileInput>>();
const currentApprovalNode = ref<ApprovalNode>();
const currentApprovalNodeIndex = ref(0);
const hasApprovalStatus = [ProcessStatusEnum.APPROVED, ProcessStatusEnum.UNAPPROVED, ProcessStatusEnum.NONE];
// 我审批的上一个节点
const prevMineApprovalNode = computed(() => {
if (!currentApprovalNode.value) {
return undefined;
}
const prevMineApprovalIndex = currentApprovalNode.value.taskNodes?.findIndex(
(e) => hasApprovalStatus.includes(e.approvalStatus) && e.approverId === userStore.userInfo.id
);
if (prevMineApprovalIndex !== -1) {
return currentApprovalNode.value?.taskNodes?.[prevMineApprovalIndex];
}
const prevApprovalNode = approvalInfo.value?.nodes[currentApprovalNodeIndex.value - 1];
if (prevApprovalNode) {
return prevApprovalNode.taskNodes.find(
(e) => hasApprovalStatus.includes(e.approvalStatus) && e.approverId === userStore.userInfo.id
);
}
});
const currentTaskNode = computed(() => {
if (!currentApprovalNode.value) {
return undefined;
}
return currentApprovalNode.value.taskNodes?.find(
(e) => e.approvalStatus === ProcessStatusEnum.APPROVING && e.approverId === userStore.userInfo.id
);
});
// 只有当前审批中的人才展示编辑权限,其他节点展示只读权限
const filedPermission = computed(() => {
if (currentTaskNode.value && approvalInfo.value?.currentNodeFieldPermissions) {
return (JSON.parse(approvalInfo.value?.currentNodeFieldPermissions || '[]') as ApprovalFieldPermission[]) || [];
}
return [];
});
// 是否是审批人
const isApprover = computed(() => {
if (currentApprovalNode.value?.multiApproverMode === MultiApproverModeEnum.SEQUENTIAL) {
// 顺序审批,只有当前审批人可以操作
return (
currentApprovalNode.value?.taskNodes?.find((e) => e.approvalStatus === ProcessStatusEnum.APPROVING)
?.approverId === userStore.userInfo.id
);
}
return currentApprovalNode.value?.taskNodes?.some(
(taskNode) =>
taskNode.approvalStatus === ProcessStatusEnum.APPROVING && taskNode.approverId === userStore.userInfo.id
); // 会签/或签/单人审批
});
// 是否可以撤销审批申请
const canCancelApply = computed(() => {
// 未配置撤销申请
if (!approvalConfig.value?.submitterCanRevoke) {
return false;
}
// 流程结束不允许撤销
if (currentApprovalNode.value?.endNode) {
return false;
}
// 只有提交人可以撤销审批申请,已撤销状态不显示撤销按钮
if (
approvalInfo.value?.submitterId !== userStore.userInfo.id ||
props.approvalStatus === ProcessStatusEnum.REVOKED
) {
return false;
}
// 当前没有审批完成节点时可撤销
if (
!approvalInfo.value?.nodes.some(
(node) =>
node.approvalStatus === ProcessStatusEnum.APPROVED || node.approvalStatus === ProcessStatusEnum.UNAPPROVED
)
) {
return true;
}
// 第一个节点完成审批,且配置了可撤销配置,允许撤销
if (
approvalInfo.value?.nodes[0].approvalStatus === ProcessStatusEnum.APPROVED &&
approvalConfig.value?.submitterCanRevoke
) {
return true;
}
});
// 是否可以撤销审批
const canCancelApproval = computed(() => {
// 未配置撤销
if (!approvalConfig.value?.allowWithdraw) {
return false;
}
// 流程结束不允许撤销
if (currentApprovalNode.value?.endNode) {
return false;
}
// 当前节点包含自己审批的任务节点,则说明是多人审批节点且节点未结束,判断当前节点情况即可
if (
currentApprovalNode.value &&
currentApprovalNode.value.taskNodes?.findIndex(
(e) => hasApprovalStatus.includes(e.approvalStatus) && e.approverId === userStore.userInfo.id
) !== -1
) {
// 当前是顺序审批节点,上一个审批节点是自己,并且下一个节点未审批,允许撤销自己的审批
if (currentApprovalNode.value?.multiApproverMode === MultiApproverModeEnum.SEQUENTIAL) {
const currentTaskNodeIndex = currentApprovalNode.value?.taskNodes?.findIndex(
(e) => e.approvalStatus === ProcessStatusEnum.APPROVING
);
return currentApprovalNode.value?.taskNodes[currentTaskNodeIndex - 1]?.approverId === userStore.userInfo.id;
}
// 当前是会签节点,且自己已经审批时允许撤回
if (
currentApprovalNode.value.taskNodes?.findIndex(
(e) => hasApprovalStatus.includes(e.approvalStatus) && e.approverId === userStore.userInfo.id
) !== -1
) {
return true;
}
}
// 当前节点未包含自己审批的任务节点,则判断上一个节点情况
// 上一个节点非多人审批,是自己审批的,且当前节点下所有人都未审批
if (approvalInfo.value?.nodes[currentApprovalNodeIndex.value - 1]?.taskNodes?.length === 1) {
return (
approvalInfo.value?.nodes[currentApprovalNodeIndex.value - 1].taskNodes[0].approverId ===
userStore.userInfo.id &&
currentApprovalNode.value?.taskNodes?.every((e) => e.approvalStatus === ProcessStatusEnum.APPROVING)
);
}
// 上一个节点是多人审批且是或签,且是自己审批通过的,且当前节点下所有人都未审批
if (
approvalInfo.value?.nodes[currentApprovalNodeIndex.value - 1]?.multiApproverMode === MultiApproverModeEnum.ANY
) {
return (
approvalInfo.value?.nodes[currentApprovalNodeIndex.value - 1].taskNodes.some(
(e) => hasApprovalStatus.includes(e.approvalStatus) && e.approverId === userStore.userInfo.id
) && currentApprovalNode.value?.taskNodes?.every((e) => e.approvalStatus === ProcessStatusEnum.APPROVING)
);
}
});
const moduleKeyMap: Partial<Record<FormDesignKeyEnum, string>> = {
[FormDesignKeyEnum.CONTACT]: 'CONTRACT_INDEX',
[FormDesignKeyEnum.INVOICE]: 'CONTRACT_INVOICE',
[FormDesignKeyEnum.OPPORTUNITY_QUOTATION]: 'OPPORTUNITY_QUOTATION',
[FormDesignKeyEnum.ORDER]: 'ORDER_INDEX',
};
const noApproval = ref(false);
async function initApprovalDetail() {
try {
approvalInfo.value = await getApprovalResourceDetail(props.sourceId);
if (!approvalInfo.value) {
noApproval.value = true;
}
currentApprovalNodeIndex.value = approvalInfo.value?.nodes.findIndex(
(node) => node.nodeId === approvalInfo.value?.currentNodeId
);
currentApprovalNode.value = approvalInfo.value?.nodes[currentApprovalNodeIndex.value];
} catch (error) {
// eslint-disable-next-line no-console
console.log(error);
}
}
const approvalLoading = ref(false);
async function approvalAgree() {
if (!CrmFileInputRef.value?.validate() || !currentTaskNode.value || !currentApprovalNode.value) {
return;
}
try {
approvalLoading.value = true;
await agreeApproval({
id: currentTaskNode.value.taskId,
nodeId: currentApprovalNode.value.nodeId,
instanceId: approvalConfig.value?.id || '',
attachmentIds: fileList.value.map((e) => e.id),
approverId: currentTaskNode.value.approverId,
comment: approvalOpinion.value,
module: moduleKeyMap[props.formKey]!,
});
message.success(t('common.approved'));
initApprovalDetail();
approvalOpinion.value = '';
fileList.value = [];
emit('refresh');
} catch (error) {
// eslint-disable-next-line no-console
console.log(error);
} finally {
approvalLoading.value = false;
}
}
async function handleApprove() {
if (!CrmFileInputRef.value?.validate() || !currentTaskNode.value || !currentApprovalNode.value) {
return;
}
emit(
'saveApproval',
approvalAgree,
filedPermission.value.some((e) => e.permissionType === 'EDIT')
);
}
function handleReject() {
if (!CrmFileInputRef.value?.validate()) {
return;
}
// 审批驳回
openModal({
title: t('crm.approval.rejectConfirm'),
content: t('crm.approval.rejectTip'),
type: 'error',
positiveText: t('crm.approval.confirmReject'),
negativeText: t('common.cancel'),
onPositiveClick: async () => {
if (!currentApprovalNode.value || !currentTaskNode.value) {
return;
}
emit(
'saveApproval',
async () => {
if (!currentApprovalNode.value || !currentTaskNode.value) {
return;
}
try {
await rejectApproval({
id: currentTaskNode.value.taskId,
nodeId: currentApprovalNode.value.nodeId,
instanceId: approvalConfig.value?.id || '',
attachmentIds: fileList.value.map((e) => e.id),
approverId: currentTaskNode.value.approverId,
comment: approvalOpinion.value,
module: moduleKeyMap[props.formKey]!,
});
message.success(t('common.rejected'));
initApprovalDetail();
approvalOpinion.value = '';
fileList.value = [];
emit('refresh');
} catch (error) {
// eslint-disable-next-line no-console
console.log(error);
}
},
filedPermission.value.some((e) => e.permissionType === 'EDIT')
);
},
});
}
const addSignModalVisible = ref(false);
const addSignLoading = ref(false);
const addSignForm = ref({
type: 'BEFORE',
reviewer: undefined,
reason: '',
fileList: [] as UploadFileInfo[],
});
const addSignFormRef = ref<FormInst>();
function handleAddSign() {
addSignFormRef.value?.validate(async (errors) => {
if (!errors && currentApprovalNode.value && currentTaskNode.value) {
emit(
'saveApproval',
async () => {
if (!errors && currentApprovalNode.value && currentTaskNode.value) {
try {
addSignLoading.value = true;
await addSignApproval({
id: currentTaskNode.value.taskId,
nodeId: currentApprovalNode.value.nodeId,
instanceId: approvalInfo.value?.id || '',
approverId: currentTaskNode.value?.approverId || '',
comment: addSignForm.value.reason,
attachmentIds: addSignForm.value.fileList.map((e) => e.id),
type: addSignForm.value.type,
module: moduleKeyMap[props.formKey]!,
signApprover: addSignForm.value.reviewer?.[0] || '',
});
addSignModalVisible.value = false;
message.success(t('crm.approval.addSignSuccess'));
addSignForm.value = {
type: 'BEFORE',
reviewer: undefined,
reason: '',
fileList: [],
};
initApprovalDetail();
emit('refresh');
} catch (error) {
// eslint-disable-next-line no-console
console.log(error);
} finally {
addSignLoading.value = false;
}
}
},
filedPermission.value.some((e) => e.permissionType === 'EDIT')
);
}
});
}
const fallbackModalVisible = ref(false);
const fallbackLoading = ref(false);
const fallbackForm = ref({
node: undefined,
reason: '',
fileList: [] as UploadFileInfo[],
});
const fallbackOptions = computed(() => {
const options: SelectMixedOption[] = [];
for (let i = currentApprovalNodeIndex.value - 1; i >= 0; i--) {
options.push({
label: t('crm.approval.preNode', { index: currentApprovalNodeIndex.value - i }),
value: approvalInfo.value?.nodes[i].nodeId || '',
});
}
return options;
});
const fallbackFormRef = ref<FormInst>();
function handleFallback() {
fallbackFormRef.value?.validate(async (errors) => {
if (!errors && currentApprovalNode.value && currentTaskNode.value) {
emit(
'saveApproval',
async () => {
if (!errors && currentApprovalNode.value && currentTaskNode.value) {
try {
fallbackLoading.value = true;
await backApproval({
id: currentTaskNode.value.taskId,
nodeId: currentApprovalNode.value.nodeId,
instanceId: approvalInfo.value?.id || '',
approverId: currentTaskNode.value?.approverId || '',
comment: fallbackForm.value.reason,
attachmentIds: fallbackForm.value.fileList.map((e) => e.id),
module: moduleKeyMap[props.formKey]!,
returnToNodeId: fallbackForm.value.node || '',
});
fallbackModalVisible.value = false;
message.success(t('crm.approval.fallbackSuccess'));
initApprovalDetail();
fallbackForm.value = {
node: undefined,
reason: '',
fileList: [],
};
emit('refresh');
} catch (error) {
// eslint-disable-next-line no-console
console.log(error);
} finally {
fallbackLoading.value = false;
}
}
},
filedPermission.value.some((e) => e.permissionType === 'EDIT')
);
}
});
}
const moreActions = computed(() => {
const fullActions: ActionsItem[] = [];
if (approvalConfig.value?.allowAddSign) {
fullActions.push({
key: 'addSign',
label: t('common.COUNTERSIGNATURE'),
});
}
if (fallbackOptions.value.length) {
fullActions.push({
key: 'fallback',
label: t('taskDrawer.operation.BACK'),
});
}
return fullActions;
});
function handleMoreActionSelect(item: ActionsItem) {
if (item.key === 'addSign') {
// 添加会签
addSignModalVisible.value = true;
} else if (item.key === 'fallback') {
// 退回
fallbackModalVisible.value = true;
}
}
function cancelApproval(type?: 'apply' | 'approval') {
if (type === 'apply') {
openModal({
title: t('crm.approval.cancelApprovalApplyConfirm'),
content: t('crm.approval.cancelApprovalApplyTip'),
type: 'error',
positiveText: t('crm.approval.confirmCancelApprovalApply'),
negativeText: t('common.cancel'),
onPositiveClick: async () => {
emit(
'saveApproval',
async () => {
await revokeResource({
resourceId: props.sourceId,
formKey: props.formKey,
});
message.success(t('common.revokeSuccess'));
initApprovalDetail();
emit('refresh');
},
filedPermission.value.some((e) => e.permissionType === 'EDIT')
);
},
});
} else {
openModal({
title: t('crm.approval.cancelApprovalConfirm'),
content: t('crm.approval.cancelApprovalTip'),
type: 'error',
positiveText: t('crm.approval.confirmCancelApproval'),
negativeText: t('common.cancel'),
onPositiveClick: async () => {
emit(
'saveApproval',
async () => {
await revokeApproval({
id: prevMineApprovalNode.value?.taskId || '',
});
message.success(t('crm.approval.cancelApprovalSuccess'));
initApprovalDetail();
emit('refresh');
},
filedPermission.value.some((e) => e.permissionType === 'EDIT')
);
},
});
}
}
watch(
() => props.approvalStatus,
() => {
if (props.approvalStatus && ![ProcessStatusEnum.PENDING, ProcessStatusEnum.NONE].includes(props.approvalStatus)) {
initApprovalDetail();
initApprovalConfig();
}
},
{
immediate: true,
}
);
watch(
() => props.refreshKey,
() => {
if (props.approvalStatus && ![ProcessStatusEnum.PENDING, ProcessStatusEnum.NONE].includes(props.approvalStatus)) {
initApprovalDetail();
}
}
);
</script>
<style lang="less" scoped></style>

View File

@@ -0,0 +1,313 @@
<template>
<n-scrollbar x-scrollable>
<n-timeline :icon-size="20" class="w-full min-w-[300px] gap-[4px]">
<n-timeline-item>
<template #icon>
<div class="timeline-icon-wrapper bg-[var(--primary-8)]">
<CrmIcon type="iconicon_add" :size="14" color="var(--text-n10)" />
</div>
</template>
<template #header>
<div class="mb-[16px] flex items-center justify-between">
<div class="font-semibold leading-[22px]">{{ t('crm.approval.submit') }}</div>
<div class="text-[var(--text-n4)]">
{{ dayjs(props.submitter.submitTime).format('YYYY-MM-DD HH:mm') }}
</div>
</div>
</template>
<div class="flex items-center gap-[8px] bg-[var(--text-n9)] p-[8px]">
<div class="h-[24px] w-[24px]">
<CrmAvatar
:avatar="props.submitter.submitAvatar"
:word="props.submitter.submitter"
:is-user="false"
:size="24"
/>
</div>
<n-tooltip trigger="hover">
<template #trigger>
<div class="one-line-text">{{ props.submitter.submitter }}</div>
</template>
{{ props.submitter.submitter }}
</n-tooltip>
</div>
<div v-if="props.submitter.comment" class="mt-[8px] bg-[var(--text-n9)] p-[8px]">
<div class="text-[var(--text-n4)]">{{ props.submitter.comment }}</div>
</div>
</n-timeline-item>
<n-timeline-item v-for="(node, index) in props.nodes" :key="node.nodeId">
<template #icon>
<div v-if="node.endNode" class="timeline-icon-wrapper" :class="getIconClass(node)">
<CrmIcon type="iconicon_end" :size="14" color="var(--text-n10)" />
</div>
<div v-else class="timeline-icon-wrapper" :class="getIconClass(node)">
<CrmIcon type="iconicon_contract" :size="14" color="var(--text-n10)" />
</div>
</template>
<template #header>
<n-collapse :default-expanded-names="node.taskNodes?.length && !node.endNode ? [node.nodeId] : []">
<template #arrow>
<div></div>
</template>
<n-collapse-item :name="node.nodeId" :disabled="!node.taskNodes?.length || node.endNode">
<template #header>
<div class="mb-[8px] flex w-full items-center justify-between gap-[8px]">
<div class="flex flex-1 items-center gap-[8px] overflow-hidden">
<n-tooltip trigger="hover">
<template #trigger>
<div class="one-line-text font-semibold !leading-[22px] text-[var(--text-n1)]">
{{ node.nodeName }}
</div>
</template>
{{ node.nodeName }}
</n-tooltip>
<CrmTag v-if="!node.endNode && node.taskNodes?.length > 1" type="info" theme="outline">
{{ MultiApproverModeMap[node.multiApproverMode] }}
</CrmTag>
<CrmApprovalStatus
v-if="!node.endNode"
:status="
index > props.currentApprovalNodeIndex && props.currentApprovalNodeIndex !== -1
? ProcessStatusEnum.PENDING
: node.approvalStatus
"
isTag
scene="approvalRecord"
class="font-normal"
/>
<n-popover v-if="node.backNode" trigger="hover" placement="left-start">
<template #trigger>
<CrmIcon type="iconicon_info_circle_filled" color="var(--warning-yellow)" :size="16" />
</template>
<div class="flex max-w-[400px] flex-col items-center gap-[8px]">
<div class="mr-auto flex items-center gap-[8px]">
<CrmIcon type="iconicon_info_circle_filled" color="var(--warning-yellow)" :size="16" />
<div>{{ t('crm.approval.fallbackReason') }}</div>
</div>
<div class="text-[var(--text-n4)]">{{ node.backReason }}</div>
<n-scrollbar :content-style="{ maxHeight: '400px' }" class="mt-[8px]">
<CrmFileList
v-if="node.backAttachments?.length > 0"
:files="node.backAttachments"
class="mt-[8px]"
readonly
/>
</n-scrollbar>
</div>
</n-popover>
</div>
</div>
</template>
<template v-if="node.taskNodes?.length && !node.endNode" #header-extra="{ collapsed }">
<CrmIcon :type="collapsed ? 'iconicon_chevron_right' : 'iconicon_chevron_down'" :size="16" />
</template>
<div class="mb-[16px] mt-[2px] py-[8px] pl-0">
<n-collapse
v-if="node.taskNodes?.length"
:default-expanded-names="
node.taskNodes.filter((e) => e.comment || e.attachments?.length).map((e) => e.taskId)
"
>
<template #arrow>
<div></div>
</template>
<n-collapse-item v-for="task in node.taskNodes" :name="task.taskId" class="!ml-0">
<template #header>
<div class="flex items-center gap-[8px]">
<div class="relative h-[24px] w-[30px]">
<CrmApprovalAvatar
:size="24"
:approver="{
avatar: task.approverAvatar,
name: task.approver,
id: task.approverId,
approveResult: task.approvalStatus,
} as any"
:sign-node="task.signAction"
/>
</div>
<n-tooltip trigger="hover">
<template #trigger>
<div class="one-line-text max-w-[60px]">{{ task.approver }}</div>
</template>
{{ task.approver }}
</n-tooltip>
<n-popover v-if="task.sign" trigger="hover" placement="left-start">
<template #trigger>
<CrmTag type="info" theme="outline" tooltipDisabled>
{{ t('common.COUNTERSIGNATURE') }}
</CrmTag>
</template>
<div class="max-w-[400px] flex-col items-center gap-[8px]">
<div class="mr-auto flex items-center gap-[8px]">
<CrmIcon type="iconicon_info_circle_filled" color="var(--warning-yellow)" :size="16" />
<div>{{ t('crm.approval.addSign') }}</div>
</div>
<div class="text-[var(--text-n4)]">{{ task.signComment }}</div>
<n-scrollbar :content-style="{ maxHeight: '400px' }" class="mt-[8px]">
<CrmFileList
v-if="task.signAttachments?.length > 0"
:files="task.signAttachments"
class="mt-[8px]"
readonly
/>
</n-scrollbar>
</div>
</n-popover>
</div>
</template>
<template #header-extra>
<div class="text-[var(--text-n4)]">
{{ task.approvalTime ? dayjs(task.approvalTime).format('YYYY-MM-DD HH:mm') : '-' }}
</div>
</template>
<div
v-if="
[
ProcessStatusEnum.APPROVED,
ProcessStatusEnum.AUTO_APPROVED,
ProcessStatusEnum.UNAPPROVED,
ProcessStatusEnum.AUTO_UNAPPROVED,
].includes(task.approvalStatus) && task.comment
"
class="flex flex-wrap gap-[8px] bg-[var(--text-n9)] p-[8px]"
>
<div class="text-[var(--text-n4)]">{{ task.comment }}</div>
</div>
<CrmFileList
v-if="task.attachments?.length > 0"
:files="task.attachments"
class="mt-[8px]"
readonly
/>
</n-collapse-item>
</n-collapse>
</div>
<CrmFileList v-if="node.attachments?.length > 0" :files="node.attachments" class="mt-[8px]" readonly />
<n-collapse v-if="node.ccNodes?.length">
<template #arrow>
<div></div>
</template>
<n-collapse-item :title="t('common.copyTo')" name="copyTo" class="!ml-0">
<template #header>
<div class="flex items-center gap-[8px]">
<CrmIcon type="iconicon_send" color="var(--text-n4)" />
<div>{{ t('common.copyTo') }}</div>
</div>
</template>
<template #header-extra="{ collapsed }">
<div class="flex items-center gap-[16px]">
<div class="text-[var(--text-n4)]">
{{ t('crm.approval.copyToTip', { count: node.ccNodes.length }) }}
</div>
<CrmIcon :type="collapsed ? 'iconicon_chevron_right' : 'iconicon_chevron_down'" :size="16" />
</div>
</template>
<div class="flex flex-wrap gap-[8px] bg-[var(--text-n9)] p-[8px]">
<div v-for="cc in node.ccNodes" :key="cc.ccUserId" class="flex items-center gap-[8px]">
<div class="h-[24px] w-[24px]">
<CrmAvatar :avatar="cc.ccUserAvatar" :word="cc.ccUserName" :is-user="false" :size="24" />
</div>
<n-tooltip trigger="hover">
<template #trigger>
<div class="one-line-text font-normal">{{ cc.ccUserName }}</div>
</template>
{{ cc.ccUserName }}
</n-tooltip>
</div>
</div>
</n-collapse-item>
</n-collapse>
</n-collapse-item>
</n-collapse>
</template>
</n-timeline-item>
</n-timeline>
</n-scrollbar>
</template>
<script setup lang="ts">
import { NCollapse, NCollapseItem, NPopover, NScrollbar, NTimeline, NTimelineItem, NTooltip } from 'naive-ui';
import dayjs from 'dayjs';
import { MultiApproverModeEnum, ProcessStatusEnum } from '@lib/shared/enums/process';
import { useI18n } from '@lib/shared/hooks/useI18n';
import type { ApprovalNode } from '@lib/shared/models/system/process';
import CrmIcon from '@/components/pure/crm-icon-font/index.vue';
import CrmTag from '@/components/pure/crm-tag/index.vue';
import CrmApprovalStatus from '@/components/business/crm-approval/components/crm-approval-status.vue';
import CrmAvatar from '@/components/business/crm-avatar/index.vue';
import CrmFileList from '@/components/business/crm-file-list/index.vue';
import CrmApprovalAvatar from './crm-approval-avatar.vue';
const props = defineProps<{
nodes: ApprovalNode[];
submitter: {
submitterId?: string;
submitAvatar?: string;
submitter?: string;
submitTime?: number;
comment?: string;
};
currentApprovalNode?: ApprovalNode;
currentApprovalNodeIndex: number;
finallyResult?: ProcessStatusEnum;
}>();
const { t } = useI18n();
const MultiApproverModeMap = {
[MultiApproverModeEnum.ALL]: t('process.process.flow.multiApprovalType.all'),
[MultiApproverModeEnum.ANY]: t('process.process.flow.multiApprovalType.majority'),
[MultiApproverModeEnum.SEQUENTIAL]: t('process.process.flow.multiApprovalType.sequential'),
};
function getIconClass(node: ApprovalNode) {
const { approvalStatus, endNode, nodeId } = node;
if (endNode) {
if (
props.currentApprovalNode?.nodeId === nodeId ||
(props.finallyResult && [ProcessStatusEnum.REVOKED, ProcessStatusEnum.UNAPPROVED].includes(props.finallyResult))
) {
return 'bg-[var(--success-green)]';
}
return 'bg-[var(--text-n4)]';
}
if (!approvalStatus && props.currentApprovalNode?.nodeId === nodeId) {
return 'bg-[var(--info-blue)]';
}
switch (approvalStatus) {
case ProcessStatusEnum.APPROVED:
case ProcessStatusEnum.AUTO_APPROVED:
return 'bg-[var(--success-green)]';
case ProcessStatusEnum.UNAPPROVED:
case ProcessStatusEnum.AUTO_UNAPPROVED:
return 'bg-[var(--error-red)]';
case ProcessStatusEnum.APPROVING:
return 'bg-[var(--info-blue)]';
default:
return 'bg-[var(--text-n4)]';
}
}
</script>
<style lang="less" scoped>
.timeline-icon-wrapper {
@apply flex items-center justify-center;
width: 20px;
height: 20px;
border-radius: 4px;
}
:deep(.n-timeline-item-timeline__icon) {
margin-top: 4px;
}
:deep(.n-timeline-item-timeline__line) {
top: calc(var(--n-icon-size) + 10px) !important;
background-color: var(--text-n8) !important;
}
:deep(.n-timeline-item-content__title) {
margin-bottom: 16px;
}
</style>

View File

@@ -0,0 +1,145 @@
<template>
<n-popover class="!p-0" :show-arrow="false" :disabled="popoverDisabled" @update:show="handlePopoverShow">
<template #trigger>
<slot>
<CrmApprovalStatus :status="props.status" :class="{ 'cursor-pointer': !popoverDisabled }" />
</slot>
</template>
<div class="crm-approval-popover">
<div class="crm-approval-popover__header">
<div class="crm-approval-popover__title">{{ displayTitle }}</div>
<n-button v-if="props.showMore" text type="primary" class="!text-[14px]" @click="emit('more', props.sourceId)">
{{ t('common.more') }}
</n-button>
</div>
<n-spin :show="loading">
<n-scrollbar class="max-h-[40vh]">
<CrmApprovalApproverContent
v-if="approvers.length"
v-model:active-id="activeApproverId"
:approvers="approvers"
/>
<div v-else class="crm-approval-popover__empty">
{{ t('common.noData') }}
</div>
</n-scrollbar>
</n-spin>
</div>
</n-popover>
</template>
<script setup lang="ts">
import { NButton, NPopover, NScrollbar, NSpin } from 'naive-ui';
import { FormDesignKeyEnum } from '@lib/shared/enums/formDesignEnum';
import { ProcessStatusEnum } from '@lib/shared/enums/process';
import { useI18n } from '@lib/shared/hooks/useI18n';
import { ApprovalPopoverDetail, ApproverItem } from '@lib/shared/models/system/process';
import CrmApprovalApproverContent from '@/components/business/crm-approval/components/crm-approval-approver-content.vue';
import CrmApprovalStatus from '@/components/business/crm-approval/components/crm-approval-status.vue';
import { getResourceApprovingDetail } from '@/api/modules';
export type ApprovalPopoverFormKeyType =
| FormDesignKeyEnum.CONTRACT
| FormDesignKeyEnum.INVOICE
| FormDesignKeyEnum.OPPORTUNITY_QUOTATION
| FormDesignKeyEnum.ORDER;
const props = withDefaults(
defineProps<{
status: ProcessStatusEnum;
formKey: ApprovalPopoverFormKeyType;
sourceId?: string;
title?: string;
showMore?: boolean;
disabled?: boolean;
transformData?: (detail: ApprovalPopoverDetail) => ApproverItem[];
}>(),
{
title: '',
showMore: true,
disabled: false,
}
);
const emit = defineEmits<{
(e: 'more', sourceId?: string): void;
}>();
const { t } = useI18n();
const loading = ref(false);
const approvers = ref<ApproverItem[]>([]);
const activeApproverId = ref('');
const displayTitle = computed(() => props.title || t('common.approver'));
const popoverDisabled = computed(() => props.disabled || !props.sourceId);
function getApprovers(detail: ApprovalPopoverDetail) {
return props.transformData ? props.transformData(detail) : detail.approveUserList;
}
async function initDetail() {
if (!props.sourceId || loading.value) return;
loading.value = true;
try {
const detail = await getResourceApprovingDetail(props.sourceId);
approvers.value = getApprovers(detail);
activeApproverId.value = approvers.value[0]?.id ?? '';
} catch (error) {
approvers.value = [];
activeApproverId.value = '';
// eslint-disable-next-line no-console
console.log(error);
} finally {
loading.value = false;
}
}
function handlePopoverShow(show: boolean) {
if (!show) return;
initDetail();
}
watch(
() => props.sourceId,
() => {
approvers.value = [];
activeApproverId.value = '';
}
);
</script>
<style scoped lang="less">
.crm-approval-popover {
padding: 16px;
width: 344px;
border-radius: 12px;
background: var(--text-n10);
}
.crm-approval-popover__header {
display: flex;
justify-content: space-between;
align-items: center;
}
.crm-approval-popover__title {
font-size: 14px;
font-weight: 600;
color: var(--text-n1);
line-height: 20px;
}
.crm-approval-popover__empty {
padding-top: 12px;
font-size: 14px;
color: var(--text-n4);
line-height: 20px;
}
</style>

View File

@@ -0,0 +1,39 @@
<template>
<CrmTag
v-if="props.isTag && currentStatus?.label"
:color="{
textColor: currentStatus.tagColor,
color: currentStatus.tagBgColor,
}"
>
{{ currentStatus.label }}
</CrmTag>
<div v-else-if="currentStatus?.label" class="flex items-center gap-[8px]">
<CrmIcon :type="currentStatus.icon" :size="16" :class="`text-[${currentStatus.color}]`" />
{{ currentStatus.label }}
</div>
<div v-else>-</div>
</template>
<script setup lang="ts">
import { ProcessStatusEnum } from '@lib/shared/enums/process';
import CrmTag from '@/components/pure/crm-tag/index.vue';
import { approvalRecordStatusMap, processStatusMap } from '@/config/process';
const props = defineProps<{
status: ProcessStatusEnum;
isTag?: boolean;
scene?: 'process' | 'approvalRecord';
}>();
export type StatusInfo = { label: string; icon: string; color: string; tagBgColor: string; tagColor: string };
const currentStatus = computed<StatusInfo | undefined>(() => {
const currentMap = props.scene === 'approvalRecord' ? approvalRecordStatusMap : processStatusMap;
return currentMap[props.status as keyof typeof currentMap];
});
</script>
<style scoped></style>

View File

@@ -0,0 +1,47 @@
export default {
'crm.approval.record': 'Approval Record',
'crm.approval.opinion': 'Approval Opinion',
'crm.approval.rejectConfirm': 'Confirm Rejection?',
'crm.approval.rejectTip': 'After rejection, the approval process will be terminated. Please proceed with caution!',
'crm.approval.confirmReject': 'Confirm Rejection',
'crm.approval.addSignTip1':
'Before Me: After adding a signature, the process will first go through the additional approver, then to me',
'crm.approval.addSignTip2': 'After Me: After my approval, the process will continue to the additional approver',
'crm.approval.addSignOpinion': 'Additional Approval Opinion',
'crm.approval.addSignMethod': 'Add Method',
'crm.approval.beforeMethod': 'Before Me',
'crm.approval.afterMethod': 'After Me',
'crm.approval.addSignApprover': 'Additional Approver',
'crm.approval.confirmAddSign': 'Confirm Additional Approval',
'crm.approval.agreeAndAddSign': 'Agree and Add Signature',
'crm.approval.fallbackTo': 'Fallback To',
'crm.approval.fallbackReason': 'Fallback Reason',
'crm.approval.confirmFallback': 'Confirm Fallback',
'crm.approval.cancelApprovalApply': 'Cancel Approval',
'crm.approval.cancelApprovalApplyConfirm': 'Confirm Cancel Approval?',
'crm.approval.cancelApprovalApplyTip':
'After cancellation, the approval process will be terminated. Please proceed with caution!',
'crm.approval.confirmCancelApprovalApply': 'Confirm Cancel',
'crm.approval.cancelApprovalApplySuccess': 'Approval Canceled',
'crm.approval.cancelApproval': 'Withdraw Approval',
'crm.approval.cancelApprovalConfirm': 'Confirm Withdraw Approval?',
'crm.approval.cancelApprovalTip':
'After the withdrawal, the approval process will be terminated. Please proceed with caution!',
'crm.approval.confirmCancelApproval': 'Confirm Withdraw',
'crm.approval.cancelApprovalSuccess': 'Approval Withdrawn',
'crm.approval.submit': 'Submit Application',
'crm.approval.change': 'Change',
'crm.approval.changeDescription': 'Change Description',
'crm.approval.confirmChange': 'Save and submit for review',
'crm.approval.confirmAndSubmitReview': 'Confirm and Submit',
'crm.approval.approver': 'Approver',
'crm.approval.addSign': 'Add Signature',
'crm.approval.addSignSuccess': 'Add Signature Successful',
'crm.approval.preNode': 'Previous {index} Node',
'crm.approval.fallbackSuccess': 'Fallback Successful',
'crm.approval.autoReject': 'Cbot Auto Reject',
'crm.approval.fileLimitTip': 'You can add up to 10 attachments',
'crm.approval.reviewDisabledTip': 'No active approval workflow was matched. Please contact the administrator.',
'crm.approval.copyToTip': 'Copy to {count} people',
'crm.approval.historyTip': 'This resource is historical data; only the final approval status is retained.',
};

View File

@@ -0,0 +1,44 @@
export default {
'crm.approval.record': '审批记录',
'crm.approval.opinion': '审批意见',
'crm.approval.rejectConfirm': '确认驳回吗?',
'crm.approval.rejectTip': '驳回后,审批流将终止,请谨慎操作!',
'crm.approval.confirmReject': '确认驳回',
'crm.approval.addSignTip1': '在我之前:加签后,流程先经过加签审批人,再由我审批',
'crm.approval.addSignTip2': '在我之后:我审批后,流程再到加签审批人',
'crm.approval.addSignOpinion': '加签意见',
'crm.approval.addSignMethod': '添加方式',
'crm.approval.beforeMethod': '在我之前',
'crm.approval.afterMethod': '在我之后',
'crm.approval.addSignApprover': '加签审批人',
'crm.approval.confirmAddSign': '确认加签',
'crm.approval.agreeAndAddSign': '同意并加签',
'crm.approval.fallbackTo': '退回至',
'crm.approval.fallbackReason': '退回原因',
'crm.approval.confirmFallback': '确认退回',
'crm.approval.cancelApprovalApply': '撤销审批',
'crm.approval.cancelApprovalApplyConfirm': '确认撤销审批吗?',
'crm.approval.cancelApprovalApplyTip': '撤销后,审批流将终止,请谨慎操作!',
'crm.approval.confirmCancelApprovalApply': '确认撤销',
'crm.approval.cancelApprovalApplySuccess': '已撤销',
'crm.approval.cancelApproval': '撤回审批',
'crm.approval.cancelApprovalConfirm': '确认撤回审批吗?',
'crm.approval.cancelApprovalTip': '撤回后,审批流将终止审批,请谨慎操作!',
'crm.approval.confirmCancelApproval': '确认撤回',
'crm.approval.cancelApprovalSuccess': '已撤回',
'crm.approval.submit': '提交申请',
'crm.approval.change': '变更',
'crm.approval.changeDescription': '变更说明',
'crm.approval.confirmChange': '保存并提审',
'crm.approval.confirmAndSubmitReview': '确认并提审',
'crm.approval.approver': '审批人',
'crm.approval.addSign': '加签',
'crm.approval.addSignSuccess': '加签成功',
'crm.approval.preNode': '前{index}节点',
'crm.approval.fallbackSuccess': '已退回',
'crm.approval.autoReject': 'Cbot 自动拒绝',
'crm.approval.fileLimitTip': '附件最多可添加 10 个',
'crm.approval.reviewDisabledTip': '未匹配到生效审批流,请联系管理员',
'crm.approval.copyToTip': '抄送 {count} 人',
'crm.approval.historyTip': '该资源为历史数据,仅保留最终审批状态',
};

View File

@@ -0,0 +1,125 @@
<template>
<n-auto-complete
v-model:value="value"
:input-props="{ autocomplete: 'disabled' }"
:clear-after-select="false"
:options="options"
:loading="loading"
show-empty
clearable
:placeholder="props.placeholder ?? t('common.pleaseSelect')"
@scroll="handleScroll"
@select="handleSelect"
@update:value="handleUpdateValue"
/>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { NAutoComplete } from 'naive-ui';
import { debounce } from 'lodash-es';
import { useI18n } from '@lib/shared/hooks/useI18n';
import type { CommonList, TableQueryParams } from '@lib/shared/models/common';
import { AutoCompleteOption } from 'naive-ui/es/auto-complete/src/interface';
const { t } = useI18n();
const props = withDefaults(
defineProps<{
fetch: (params: TableQueryParams) => Promise<CommonList<Record<string, any>>>;
placeholder?: string;
pageSize?: number;
labelKey?: string;
valueKey?: string;
}>(),
{
labelKey: 'label',
valueKey: 'value',
}
);
const emit = defineEmits<{
(e: 'select', item: any): void;
}>();
const value = defineModel<string | undefined>('value', {
default: undefined,
});
const options = ref<AutoCompleteOption[]>([]);
const loading = ref(false);
const keyword = ref('');
const current = ref(1);
const defaultPageSize = 5;
const hasMore = ref(true);
async function loadData() {
if (loading.value || !hasMore.value) return;
loading.value = true;
const res = await props.fetch({
keyword: keyword.value,
current: current.value,
pageSize: props.pageSize ?? defaultPageSize,
});
const list = res.list || [];
options.value.push(
...list.map((item) => ({
label: typeof item === 'string' ? item : item[props.labelKey],
value: typeof item === 'string' ? item : item[props.valueKey],
raw: item,
}))
);
if (options.value.length >= res.total) {
hasMore.value = false;
} else {
current.value++;
}
loading.value = false;
}
const handleSearch = debounce(async (val: string) => {
keyword.value = val.trim();
options.value = [];
current.value = 1;
hasMore.value = true;
if (keyword.value.length <= 2) {
return;
}
await loadData();
}, 300);
function handleScroll(e: Event) {
if (loading.value || !hasMore.value) return;
const currentTarget = e.currentTarget as HTMLElement;
const reachBottom = currentTarget.scrollTop + currentTarget.offsetHeight >= currentTarget.scrollHeight;
if (reachBottom) {
loadData();
}
}
function handleSelect(val: string) {
value.value = val;
const selectedItem = options.value.find((option) => option.value === val);
if (selectedItem && selectedItem.raw) {
emit('select', selectedItem.raw);
}
}
function handleUpdateValue(val?: string) {
value.value = val;
handleSearch(val ?? '');
}
</script>
<style scoped></style>

View File

@@ -0,0 +1,46 @@
<template>
<n-avatar v-if="innerAvatar" round :size="props.size" :src="innerAvatar" />
<n-avatar v-else round :size="props.size">
<div class="flex items-center justify-center font-medium">
<div
v-if="avatarText?.length"
:style="{
fontSize: `${avatarTextSize}px`,
}"
>
{{ avatarText?.substring(0, 1) }}
</div>
<CrmIcon v-else type="iconicon_user" :size="defaultUserAvatarSize" class="text-[var(--text-n10)]" />
</div>
</n-avatar>
</template>
<script setup lang="ts">
import { NAvatar } from 'naive-ui';
import useUserStore from '@/store/modules/user';
const userStore = useUserStore();
const props = withDefaults(
defineProps<{
avatar?: string;
size?: number;
word?: string; // 用于显示文字头像
isUser?: boolean;
}>(),
{
size: 40,
isUser: true, // 当前登录用户还是其他用户
}
);
const innerAvatar = computed(() => (props.isUser ? userStore.userInfo.avatar : props.avatar));
const avatarText = computed(() => (props.isUser ? userStore.userInfo.name : props?.word));
const avatarTextSize = computed(() => Math.floor(props.size * 0.52));
const defaultUserAvatarSize = computed(() => Math.floor(props.size * 0.6));
</script>
<style lang="less" scoped></style>

View File

@@ -0,0 +1,109 @@
<template>
<CrmModal
v-model:show="visible"
size="small"
:title="
t('opportunity.operationResult', {
name: props.name,
})
"
>
<div class="flex flex-col items-center gap-[8px]">
<CrmIcon :size="32" :type="getTipType?.icon" :class="`${getTipType?.color}`" />
<div class="text-[16px] font-medium text-[var(--text-n1)]">{{ t(getTipType?.message ?? '') }}</div>
<div class="text-[var(--text-n4)]">
<span>
{{ t('common.success') }}
<span class="mx-1 text-[var(--success-green)]"> {{ props.result.success }} </span>
{{ t('crmImportButton.countNumber') }}
</span>
<span v-if="props.result.fail">
{{ t('common.fail') }}
<span class="mx-1 font-medium text-[var(--error-red)]">{{ props.result.fail }}</span>
{{ t('crmImportButton.countNumber') }}
</span>
<span v-if="props.result.skip">
{{ t('common.skipped') }}
<span class="mx-1 text-[var(--info-blue)]"> {{ props.result?.skip ?? 0 }} </span>
{{ t('crmImportButton.countNumber') }}
</span>
</div>
<div v-if="props.result.fail" class="text-[var(--text-n4)]">
<span>{{ t('opportunity.failureReason') }}</span> <span>{{ t(props.result?.errorMessages ?? '') }}</span>
</div>
</div>
<template #footer>
<n-button quaternary type="primary" class="text-btn-primary" @click="handleCancel">
{{ t('crmImportButton.backList') }}
</n-button>
</template>
</CrmModal>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { NButton } from 'naive-ui';
import { useI18n } from '@lib/shared/hooks/useI18n';
import { BatchOperationResult } from '@lib/shared/models/opportunity';
import CrmModal from '@/components/pure/crm-modal/index.vue';
const { t } = useI18n();
interface ResultStatus {
type: string;
icon: string;
color: string;
message: string;
}
const props = defineProps<{
result: BatchOperationResult;
name?: string;
}>();
const visible = defineModel<boolean>('visible', {
required: true,
});
const resultStatusMap = ref<Record<'partial' | 'success' | 'error', ResultStatus>>({
partial: {
type: 'warning',
icon: 'iconicon_info_circle_filled',
color: 'text-[var(--warning-yellow)]',
message: 'opportunity.partialFailed',
},
success: {
type: 'success',
icon: 'iconicon_check_circle_filled',
color: 'text-[var(--success-green)]',
message: 'opportunity.allSuccessful',
},
error: {
type: 'error',
icon: 'iconicon_close_circle_filled',
color: 'text-[var(--error-red)]',
message: 'opportunity.allError',
},
});
const getTipType = computed(() => {
const { success, fail } = props.result;
if (fail && success) {
return resultStatusMap.value.partial;
}
if (!fail) {
return resultStatusMap.value.success;
}
if (!success) {
return resultStatusMap.value.error;
}
});
function handleCancel() {
visible.value = false;
}
</script>
<style scoped></style>

View File

@@ -0,0 +1,446 @@
<template>
<CrmModal
v-model:show="visible"
:title="t('common.batchEdit')"
siz="small"
:positive-text="t('common.update')"
:negative-text="t('common.cancel')"
:ok-loading="loading"
@confirm="handleSave"
@cancel="handleCancel"
>
<n-alert v-if="props.showApprovalTip" type="warning" class="mb-[16px] mr-[8px]">
<template #icon>
<CrmIcon type="iconicon_info_circle_filled" :size="20" />
</template>
{{ props.showApprovalTip }}
</n-alert>
<n-scrollbar class="max-h-[60vh] pr-[8px]">
<n-form
ref="formRef"
require-mark-placement="left"
:model="form"
class="crm-batch-edit-form"
label-placement="left"
label-align="right"
:label-width="100"
>
<n-form-item
path="fieldId"
:label="t('common.updateField')"
:rule="[{ required: true, message: t('common.notNull', { value: `${t('org.attributes')}` }) }]"
>
<n-select
v-model:value="form.fieldId"
:options="fieldOptions"
:placeholder="t('common.pleaseSelect')"
label-field="name"
filterable
value-field="id"
clearable
/>
</n-form-item>
<Select
v-if="form.fieldId && [FieldTypeEnum.SELECT, FieldTypeEnum.SELECT_MULTIPLE].includes(currentForm.type)"
v-model:value="form.fieldValue"
path="fieldValue"
:field-config="currentForm"
:form-detail="form"
/>
<InputNumber
v-else-if="form.fieldId && [FieldTypeEnum.INPUT_NUMBER].includes(currentForm.type)"
v-model:value="form.fieldValue"
path="fieldValue"
:field-config="currentForm"
:form-detail="form"
/>
<MemberSelect
v-else-if="
form.fieldId &&
[
FieldTypeEnum.MEMBER,
FieldTypeEnum.MEMBER_MULTIPLE,
FieldTypeEnum.DEPARTMENT,
FieldTypeEnum.DEPARTMENT_MULTIPLE,
].includes(currentForm.type)
"
v-model:value="form.fieldValue"
path="fieldValue"
:form-detail="form"
:field-config="currentForm"
/>
<Radio
v-else-if="form.fieldId && [FieldTypeEnum.RADIO].includes(currentForm.type)"
v-model:value="form.fieldValue"
path="fieldValue"
class="crm-batch-edit-form-item"
:form-detail="form"
:field-config="currentForm"
/>
<Checkbox
v-else-if="form.fieldId && [FieldTypeEnum.CHECKBOX].includes(currentForm.type)"
v-model:value="form.fieldValue"
path="fieldValue"
class="crm-batch-edit-form-item"
:field-config="currentForm"
:form-detail="form"
/>
<Textarea
v-else-if="form.fieldId && [FieldTypeEnum.TEXTAREA].includes(currentForm.type)"
v-model:value="form.fieldValue"
path="fieldValue"
:field-config="currentForm"
:form-detail="form"
/>
<DateTime
v-else-if="form.fieldId && [FieldTypeEnum.DATE_TIME].includes(currentForm.type)"
v-model:value="form.fieldValue"
path="fieldValue"
:field-config="currentForm"
:form-detail="form"
/>
<SingleText
v-else-if="form.fieldId && [FieldTypeEnum.INPUT].includes(currentForm.type)"
v-model:value="form.fieldValue"
path="fieldValue"
:field-config="currentForm"
:form-detail="form"
/>
<TagInput
v-else-if="form.fieldId && [FieldTypeEnum.INPUT_MULTIPLE].includes(currentForm.type)"
v-model:value="form.fieldValue"
path="fieldValue"
:field-config="currentForm"
:form-detail="form"
/>
<dataSource
v-else-if="
form.fieldId && [FieldTypeEnum.DATA_SOURCE, FieldTypeEnum.DATA_SOURCE_MULTIPLE].includes(currentForm.type)
"
v-model:value="form.fieldValue"
path="fieldValue"
:field-config="currentForm"
:form-detail="form"
/>
<Location
v-else-if="form.fieldId && [FieldTypeEnum.LOCATION].includes(currentForm.type)"
v-model:value="form.fieldValue"
path="fieldValue"
:field-config="currentForm"
:form-detail="form"
/>
<Phone
v-else-if="form.fieldId && [FieldTypeEnum.PHONE].includes(currentForm.type)"
:id="currentForm.id"
v-model:value="form.fieldValue"
path="fieldValue"
:field-config="currentForm"
:form-detail="form"
/>
<Industry
v-else-if="form.fieldId && [FieldTypeEnum.INDUSTRY].includes(currentForm.type)"
:id="currentForm.id"
v-model:value="form.fieldValue"
path="fieldValue"
:field-config="currentForm"
:form-detail="form"
/>
<Link
v-else-if="form.fieldId && [FieldTypeEnum.LINK].includes(currentForm.type)"
v-model:value="form.fieldValue"
path="fieldValue"
:field-config="currentForm"
:form-detail="form"
/>
<n-form-item v-else path="fieldValue" :label="t('common.batchUpdate')">
<n-input disabled type="text" :placeholder="t('common.pleaseInput')" :maxlength="255" />
</n-form-item>
</n-form>
</n-scrollbar>
</CrmModal>
<batchOperationResultModal v-model:visible="resultVisible" :result="batchResult" :name="batchOperationName" />
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { FormInst, NAlert, NForm, NFormItem, NInput, NScrollbar, NSelect, useMessage } from 'naive-ui';
import { cloneDeep } from 'lodash-es';
import { FieldTypeEnum, FormDesignKeyEnum } from '@lib/shared/enums/formDesignEnum';
import { useI18n } from '@lib/shared/hooks/useI18n';
import { getNormalFieldValue, getRuleType } from '@lib/shared/method/formCreate';
import { BatchOperationResult } from '@lib/shared/models/opportunity';
import CrmIcon from '@/components/pure/crm-icon-font/index.vue';
import CrmModal from '@/components/pure/crm-modal/index.vue';
import batchOperationResultModal from '@/components/business/crm-batch-edit-modal/components/batchOperationResultModal.vue';
// 高级组件
import dataSource from '@/components/business/crm-form-create/components/advanced/dataSource.vue';
import Industry from '@/components/business/crm-form-create/components/advanced/industry.vue';
import Link from '@/components/business/crm-form-create/components/advanced/link.vue';
import Location from '@/components/business/crm-form-create/components/advanced/location.vue';
import Phone from '@/components/business/crm-form-create/components/advanced/phone.vue';
// 基础组件
import Checkbox from '@/components/business/crm-form-create/components/basic/checkbox.vue';
import DateTime from '@/components/business/crm-form-create/components/basic/dateTime.vue';
import InputNumber from '@/components/business/crm-form-create/components/basic/inputNumber.vue';
import MemberSelect from '@/components/business/crm-form-create/components/basic/memberSelect.vue';
import Radio from '@/components/business/crm-form-create/components/basic/radio.vue';
import Select from '@/components/business/crm-form-create/components/basic/select.vue';
import SingleText from '@/components/business/crm-form-create/components/basic/singleText.vue';
import TagInput from '@/components/business/crm-form-create/components/basic/tagInput.vue';
import Textarea from '@/components/business/crm-form-create/components/basic/textarea.vue';
import { FormCreateField, FormCreateFieldRule } from '@/components/business/crm-form-create/types';
import {
batchUpdateAccount,
batchUpdateCluePool,
batchUpdateContact,
batchUpdateContract,
batchUpdateCustomFormData,
batchUpdateLead,
batchUpdateOpenSeaCustomer,
batchUpdateOpportunity,
batchUpdateOrder,
batchUpdateProduct,
batchUpdateProductPrice,
batchUpdateQuotation,
} from '@/api/modules';
import { useUserStore } from '@/store';
import { rules } from '../crm-form-create/config';
import { SelectMixedOption } from 'naive-ui/es/select/src/interface';
const { t } = useI18n();
const Message = useMessage();
const props = defineProps<{
ids: (number | string)[];
formKey:
| FormDesignKeyEnum.CLUE_POOL
| FormDesignKeyEnum.CUSTOMER_OPEN_SEA
| FormDesignKeyEnum.BUSINESS
| FormDesignKeyEnum.CLUE
| FormDesignKeyEnum.CUSTOMER
| FormDesignKeyEnum.PRODUCT
| FormDesignKeyEnum.CUSTOMER_CONTACT
| FormDesignKeyEnum.PRICE
| FormDesignKeyEnum.CONTRACT
| FormDesignKeyEnum.OPPORTUNITY_QUOTATION
| FormDesignKeyEnum.ORDER
| FormDesignKeyEnum.CUSTOM_FORM;
showApprovalTip?: string;
otherSaveParams?: Record<string, any>;
}>();
const emit = defineEmits<{
(e: 'refresh'): void;
}>();
const visible = defineModel<boolean>('visible', { required: true });
const userStore = useUserStore();
const list = defineModel<FormCreateField[]>('fieldList', {
required: true,
});
const resultVisible = ref(false);
const initBatchResult = {
success: 0,
fail: 0,
errorMessages: '',
};
const batchResult = ref<BatchOperationResult>({
...initBatchResult,
});
const batchOperationName = ref(t('common.batchEdit'));
const saveApiMap: Record<string, (params: any) => Promise<any>> = {
[FormDesignKeyEnum.CLUE_POOL]: batchUpdateCluePool,
[FormDesignKeyEnum.CUSTOMER_OPEN_SEA]: batchUpdateOpenSeaCustomer,
[FormDesignKeyEnum.BUSINESS]: batchUpdateOpportunity,
[FormDesignKeyEnum.CLUE]: batchUpdateLead,
[FormDesignKeyEnum.PRODUCT]: batchUpdateProduct,
[FormDesignKeyEnum.CUSTOMER]: batchUpdateAccount,
[FormDesignKeyEnum.CUSTOMER_CONTACT]: batchUpdateContact,
[FormDesignKeyEnum.PRICE]: batchUpdateProductPrice,
[FormDesignKeyEnum.CONTRACT]: batchUpdateContract,
[FormDesignKeyEnum.OPPORTUNITY_QUOTATION]: batchUpdateQuotation,
[FormDesignKeyEnum.ORDER]: batchUpdateOrder,
[FormDesignKeyEnum.CUSTOM_FORM]: batchUpdateCustomFormData,
};
const initForm = {
fieldId: null,
fieldValue: undefined,
};
const form = ref<{
fieldId: string | null;
fieldValue: any;
}>({
...initForm,
});
const fieldOptions = computed(
() =>
list.value.filter((e) => {
const baseCondition =
![
FieldTypeEnum.DIVIDER,
FieldTypeEnum.PICTURE,
FieldTypeEnum.SERIAL_NUMBER,
FieldTypeEnum.ATTACHMENT,
FieldTypeEnum.SUB_PRICE,
FieldTypeEnum.SUB_PRODUCT,
FieldTypeEnum.FORMULA,
].includes(e.type) &&
!e.resourceFieldId?.length &&
e.defaultValueType !== 'formula';
if (props.formKey === FormDesignKeyEnum.CLUE_POOL || props.formKey === FormDesignKeyEnum.CUSTOMER_OPEN_SEA) {
return baseCondition && e.businessKey !== 'owner';
}
return baseCondition;
}) as unknown as SelectMixedOption[]
);
const formRef = ref<FormInst>();
const currentForm = ref();
watch(
() => form.value.fieldId,
(val) => {
if (val) {
formRef.value?.restoreValidation();
const currentFormVal = list.value.find((e) => e.id === val);
if (currentFormVal) {
let defaultValue = currentFormVal.defaultValue || '';
if ([FieldTypeEnum.DATE_TIME, FieldTypeEnum.INPUT_NUMBER].includes(currentFormVal.type)) {
defaultValue = Number.isNaN(Number(defaultValue)) || defaultValue === '' ? null : Number(defaultValue);
} else if (getRuleType(currentFormVal) === 'array') {
defaultValue =
[FieldTypeEnum.DEPARTMENT, FieldTypeEnum.DATA_SOURCE, FieldTypeEnum.MEMBER].includes(
currentFormVal.type
) && typeof currentFormVal.defaultValue === 'string'
? [defaultValue]
: defaultValue || [];
}
form.value.fieldValue = defaultValue;
currentForm.value = {
...currentFormVal,
name: t('common.batchUpdate'),
description: '',
};
const fullRules: FormCreateFieldRule[] = [];
if (currentFormVal?.rules) {
(currentFormVal.rules || []).forEach((rule) => {
const staticRule = cloneDeep(rules.find((e) => e.key === rule.key));
if (staticRule) {
staticRule.message = t(staticRule.message as string, { value: t(currentFormVal.name) });
staticRule.type = getRuleType(currentFormVal);
staticRule.regex = rule.regex;
if ([FieldTypeEnum.DATA_SOURCE, FieldTypeEnum.DATA_SOURCE_MULTIPLE].includes(currentFormVal.type)) {
staticRule.trigger = 'none';
}
fullRules.push(staticRule);
}
});
currentForm.value.rules = fullRules;
}
if (
[FieldTypeEnum.MEMBER, FieldTypeEnum.MEMBER_MULTIPLE].includes(currentFormVal.type) &&
currentFormVal.hasCurrentUser
) {
currentForm.value.defaultValue = userStore.userInfo.id;
currentForm.value.initialOptions = [
...(currentFormVal.initialOptions || []),
{
id: userStore.userInfo.id,
name: userStore.userInfo.name,
},
].filter((option, index, self) => self.findIndex((o) => o.id === option.id) === index);
} else if (
[FieldTypeEnum.DEPARTMENT, FieldTypeEnum.DEPARTMENT_MULTIPLE].includes(currentFormVal.type) &&
currentFormVal.hasCurrentUserDept
) {
currentForm.value.defaultValue = userStore.userInfo.departmentId;
currentForm.value.initialOptions = [
...(currentFormVal.initialOptions || []),
{
id: userStore.userInfo.departmentId,
name: userStore.userInfo.departmentName,
},
].filter((option, index, self) => self.findIndex((o) => o.id === option.id) === index);
}
}
}
}
);
function handleCancel() {
visible.value = false;
form.value = { ...initForm };
}
const loading = ref(false);
function handleSave() {
formRef.value?.validate(async (errors) => {
if (!errors) {
try {
loading.value = true;
const result = { ...form.value };
if (currentForm.value.type === FieldTypeEnum.DATA_SOURCE && Array.isArray(result.fieldValue)) {
// 处理数据源字段,单选传单个值
result.fieldValue = result.fieldValue?.[0];
}
if (currentForm.value.type === FieldTypeEnum.PHONE) {
// 去空格
result.fieldValue = result.fieldValue.replace(/[\s\uFEFF\xA0]+/g, '');
}
const res = await saveApiMap[props.formKey]({
ids: props.ids,
...result,
...props.otherSaveParams,
fieldValue: !currentForm.value.businessKey
? getNormalFieldValue(currentForm.value, result.fieldValue)
: result.fieldValue ?? '',
});
batchResult.value = { ...initBatchResult };
if (props.showApprovalTip) {
batchResult.value = res;
resultVisible.value = true;
} else {
Message.success(t('common.updateSuccess'));
}
handleCancel();
emit('refresh');
} catch (error) {
// eslint-disable-next-line no-console
console.log(error);
} finally {
loading.value = false;
}
}
});
}
</script>
<style scoped lang="less">
.crm-batch-edit-form {
:deep(.crm-batch-edit-form-item) {
.n-checkbox-group,
.n-radio-group {
margin-top: 4px !important;
}
}
}
</style>

View File

@@ -0,0 +1,624 @@
<template>
<div class="flex rounded-[var(--border-radius-small)] bg-[var(--text-n9)] p-[16px]">
<div v-if="showAllOr" class="all-or">
<CrmTag
type="primary"
theme="light"
:color="{ color: 'var(--primary-6)' }"
class="z-[1] w-[34px]"
@click="changeAllOr"
>
{{ form.allOr === 'AND' ? 'all' : 'or' }}
</CrmTag>
</div>
<div class="flex-1 overflow-hidden">
<n-form ref="formRef" :model="form">
<n-scrollbar :style="{ 'max-height': props.maxHeight }">
<VueDraggable
v-model="form.list"
ghost-class="ghost"
drag-class="drag-item-class"
:disabled="disabledDraggable"
:animation="150"
handle=".handle"
@move="handleMove"
@end="(e) => emit('drag', e)"
>
<div
v-for="(element, index) in form.list"
:key="element.id ?? element._key"
:class="`${!element.editing ? 'read-only-row' : ''} flex gap-[8px]`"
>
<CrmIcon
v-if="props.draggable || element.draggable === false"
type="iconicon_move"
:size="12"
:class="
element.draggable === false
? 'pointer-events-none invisible'
: `handle ${
disabledDraggable
? 'cursor-not-allowed text-[var(--text-n6)]'
: 'cursor-move text-[var(--text-n4)]'
}`
"
:style="{ marginTop: index === 0 && props.models.some((item) => item.label) ? '40px' : '14px' }"
/>
<n-form-item
v-for="model of props.models"
:key="`${model.path}${index}`"
:ref="(el) => handleFormItemRef(el, model.path, index as number)"
:label="index === 0 && model.label ? model.label : ''"
:path="`list[${index}].${model.path}`"
:rule="
model.rule?.map((e) => {
if (e.notRepeat) {
return {
validator: (rule: FormItemRule, value: string) => fieldNotRepeat(value, index as number, model.path, e.message as string),
};
}
if (typeof e.validator === 'function') {
return {
validator: (rule, value, callback) =>
(e.validator as any)?.(rule, value, callback, element),
};
}
return e;
})
"
class="block flex-1 overflow-hidden py-[4px]"
:class="model.formItemClass"
@mousedown.stop
>
<template v-if="index === 0 && model.label && model.labelTooltip" #label>
<span class="inline-flex items-center gap-[8px]">
{{ model.label }}
<n-tooltip trigger="hover" placement="right">
<template #trigger>
<CrmIcon
type="iconicon_help_circle"
:size="16"
class="cursor-pointer text-[var(--text-n4)] hover:text-[var(--primary-1)]"
/>
</template>
{{ model.labelTooltip }}
</n-tooltip>
</span>
</template>
<n-input
v-if="model.type === FieldTypeEnum.INPUT"
v-model:value="element[model.path]"
allow-clear
:maxlength="255"
:placeholder="t('common.pleaseInput')"
:disabled="!element.editing"
v-bind="model.inputProps"
/>
<CrmInputNumber
v-if="model.type === FieldTypeEnum.INPUT_NUMBER"
v-model:value="element[model.path]"
class="w-full"
clearable
:disabled="!element.editing || model.numberProps?.disabledFunction?.(element)"
:placeholder="model.numberProps?.placeholder ?? t('common.pleaseInput')"
v-bind="{
min: model.numberProps?.min,
max: model.numberProps?.max,
precision: model.numberProps?.precision,
}"
/>
<CrmInputNumberWithUnit
v-if="model.type === FieldTypeEnum.INPUT_NUMBER_WITH_UNIT"
v-model:value="element[model.path]"
class="w-full"
clearable
:disabled="!element.editing || model.numberProps?.disabledFunction?.(element)"
:placeholder="model.numberProps?.placeholder ?? t('common.pleaseInput')"
v-bind="{
min: model.numberProps?.min,
max: model.numberProps?.max,
precision: model.numberProps?.precision,
showArrow: model.selectProps?.showArrow,
}"
/>
<n-tooltip
v-if="[FieldTypeEnum.SELECT, FieldTypeEnum.SELECT_MULTIPLE].includes(model.type)"
:disabled="!model.selectProps?.disabledFunction?.(element)"
trigger="hover"
placement="bottom"
>
<template #trigger>
<n-select
v-model:value="element[model.path]"
clearable
:placeholder="!element.editing ? '-' : t('common.pleaseSelect')"
:disabled="!element.editing || model.selectProps?.disabledFunction?.(element)"
:show-arrow="element.editing"
v-bind="model.selectProps"
:options="getSelectOptions(element, model)"
:multiple="model.type === FieldTypeEnum.SELECT_MULTIPLE"
/>
</template>
{{ model.selectProps?.disabledTooltipFunction?.(element) }}
</n-tooltip>
<CrmUserTagSelector
v-if="model.type === FieldTypeEnum.USER_TAG_SELECTOR"
v-model:selected-list="element[model.path]"
:user-error-tag-ids="userErrorTagIds"
:disabled="!element.editing"
v-bind="model.userTagSelectorProps"
@delete-tag="handleUserTagSelectValidate"
/>
</n-form-item>
<div
class="flex gap-[8px]"
:style="{ 'margin-top': index === 0 && props.models.some((item) => item.label) ? '30px' : '4px' }"
>
<template v-if="element.editing">
<n-button type="success" ghost class="px-[7px]" @click="handleSaveRow(element, index as number)">
<template #icon>
<CrmIcon type="iconicon_check" :size="16" />
</template>
</n-button>
<n-button ghost type="error" class="px-[7px]" @click="handleCancelEdit(index as number)">
<template #icon>
<CrmIcon type="iconicon_close" :size="16" />
</template>
</n-button>
</template>
<template v-else>
<n-button ghost class="px-[7px]" @click="handleEditRow(index as number)">
<template #icon>
<CrmIcon type="iconicon_edit" :size="16" />
</template>
</n-button>
<CrmPopConfirm
v-if="props.popConfirmProps"
:show="popShow[element.id]"
:disabled="!props.popConfirmProps || !element.id"
placement="bottom-end"
class="w-[260px]"
v-bind="getPopConfirmProps(element,index as number) as CrmPopConfirmProps"
@confirm="handlePopDeleteListItem(index as number, element.id)"
@cancel="popShow[element.id] = false"
>
<n-button
v-if="!getPopConfirmProps(element, index as number)?.disabled"
ghost
class="px-[7px]"
@click.stop="handleDeleteListItem(index as number, element.id)"
>
<template #icon>
<CrmIcon type="iconicon_delete" :size="16" />
</template>
</n-button>
<span v-else></span>
</CrmPopConfirm>
<slot v-else-if="$slots.extra" name="extra" :element="element"></slot>
<n-button v-else ghost class="px-[7px]" @click="handleDeleteListItem(index as number, element.id)">
<template #icon>
<CrmIcon type="iconicon_delete" :size="16" />
</template>
</n-button>
</template>
</div>
</div>
</VueDraggable>
</n-scrollbar>
</n-form>
<n-tooltip v-if="props.addText" placement="bottom" :disabled="getAddDisabled ? !props.disabledAddTooltip : true">
<template #trigger>
<n-button
type="primary"
:disabled="getAddDisabled"
text
class="mt-[5px] w-[fit-content]"
@click="handleAddListItem"
>
<template #icon>
<n-icon><Add /></n-icon>
</template>
{{ props.addText }}
</n-button>
</template>
{{ props.disabledAddTooltip }}
</n-tooltip>
</div>
</div>
</template>
<script setup lang="ts">
import {
FormInst,
FormItemRule,
NButton,
NForm,
NFormItem,
NIcon,
NInput,
NScrollbar,
NSelect,
NTooltip,
} from 'naive-ui';
import { Add } from '@vicons/ionicons5';
import { cloneDeep } from 'lodash-es';
import { VueDraggable } from 'vue-draggable-plus';
import { FieldTypeEnum } from '@lib/shared/enums/formDesignEnum';
import { useI18n } from '@lib/shared/hooks/useI18n';
import { getGenerateId } from '@lib/shared/method';
import { scrollIntoView } from '@lib/shared/method/dom';
import { SelectedUsersItem } from '@lib/shared/models/system/module';
import CrmIcon from '@/components/pure/crm-icon-font/index.vue';
import CrmInputNumber from '@/components/pure/crm-input-number/index.vue';
import CrmPopConfirm, { CrmPopConfirmProps } from '@/components/pure/crm-pop-confirm/index.vue';
import CrmTag from '@/components/pure/crm-tag/index.vue';
import CrmInputNumberWithUnit from '@/components/business/crm-input-number-with-unit/index.vue';
import CrmUserTagSelector from '@/components/business/crm-user-tag-selector/index.vue';
import { FormItemModel } from './types';
const { t } = useI18n();
const props = withDefaults(
defineProps<{
models: FormItemModel[];
addText?: string;
maxHeight?: string;
defaultList?: any[]; // 当外层是编辑状态时,可传入已填充的数据
disabledAdd?: boolean; // 是否禁用添加按钮
validateWhenAdd?: boolean; // 增加一行的时候是否进行校验
showAllOr?: boolean;
draggable?: boolean;
popConfirmProps?: (ele: Record<string, any>, i: number) => CrmPopConfirmProps | CrmPopConfirmProps;
move?: (evt: any) => boolean;
disabledAddTooltip?: string;
maxLimitLength?: number;
needInitFormRow?: boolean; // 是否需要初始化一行数据
}>(),
{
maxHeight: '100%',
disabledAdd: false,
showAllOr: false,
draggable: false,
needInitFormRow: true,
}
);
const emit = defineEmits<{
(e: 'deleteRow', index: number, id: string, done: () => void): void;
(e: 'saveRow', element: Record<string, any>, done: () => void, index: number): void;
(e: 'drag', event: any): void;
(e: 'cancelRow', index: number): void;
}>();
const formRef = ref<FormInst | null>(null);
const form = ref<Record<string, any>>({ list: [], allOr: 'AND' });
const formItemRefs = ref<Record<string, Map<string, any>>>({});
const formItem: Record<string, any> = {};
const popShow = ref<Record<string, boolean>>({});
const getAddDisabled = computed(() =>
props.maxLimitLength && form.value.list.length >= props.maxLimitLength ? true : props.disabledAdd
);
const handleFormItemRef = (el: Element | ComponentPublicInstance | null, path: string, index: number) => {
if (!formItemRefs.value[path]) {
formItemRefs.value[path] = new Map();
}
if (el) {
formItemRefs.value[path].set(`${index}`, el);
} else {
formItemRefs.value[path].delete(`${index}`);
}
};
const userErrorTagIds = ref<string[]>([]); // 对于CrmUserTagSelector列上下行里重复的id
function valueIsArray(listItem: FormItemModel) {
return listItem.selectProps?.multiple || listItem.type === FieldTypeEnum.USER_TAG_SELECTOR;
}
// 初始化表单数据
function initForm() {
props.models.forEach((e) => {
if (e.defaultValue) {
formItem[e.path] = e.defaultValue;
} else {
formItem[e.path] = valueIsArray(e) ? [] : null;
}
});
const initFormRow = props.needInitFormRow ? [{ ...formItem, editing: true }] : [];
form.value.list = props.defaultList?.length
? cloneDeep(props.defaultList).map((item) => ({
editing: false,
...item,
}))
: initFormRow;
}
watchEffect(() => {
initForm();
});
function changeAllOr() {
form.value.allOr = form.value.allOr === 'AND' ? 'OR' : 'AND';
}
function fieldNotRepeat(value: any[] | string | undefined, index: number, field: string, msg?: string) {
if (!value || value === '') return;
const fieldConfig = props.models.find((model) => model.path === field);
if (!fieldConfig) return;
const otherItems = form.value.list.filter((_: Record<string, any>, i: number) => i !== index);
// 非数组类型的重复检查
if (!valueIsArray(fieldConfig)) {
if (otherItems.some((item: Record<string, any>) => item[field] === value)) {
return new Error(t(msg || ''));
}
return;
}
// USER_TAG_SELECTOR 类型的重复检查
if (fieldConfig.type === FieldTypeEnum.USER_TAG_SELECTOR) {
const currentIds = (value as SelectedUsersItem[]).map((item) => item.id);
const duplicateIds: string[] = otherItems.reduce((duplicates: string[], item: Record<string, any>) => {
const compareIds = item[field].map((tagItem: any) => tagItem.id);
const newDuplicates = currentIds.filter((id) => compareIds.includes(id));
return [...duplicates, ...newDuplicates];
}, []);
if (duplicateIds.length > 0) {
userErrorTagIds.value = [...new Set(duplicateIds)]; // 去重
return new Error(t(msg || ''));
}
userErrorTagIds.value = [];
}
}
// 重新校验所有 USER_TAG_SELECTOR 类型的表单项
function handleUserTagSelectValidate() {
const userTagSelectorPath = props.models.find((item) => item.type === FieldTypeEnum.USER_TAG_SELECTOR)?.path ?? '';
form.value.list.forEach((_: Record<string, any>, index: number) => {
const userTagSelectItem = formItemRefs.value[userTagSelectorPath].get(`${index}`);
if (userTagSelectItem) {
userTagSelectItem.validate();
}
});
}
// 排除已选择的
function getSelectOptions(element: Record<string, any>, model: FormItemModel) {
if (model.selectProps?.filterRepeat) {
const selectedValues = new Set<string>();
form.value.list.forEach((item: any) => {
if (item[model.path] && item !== element) {
selectedValues.add(item[model.path]);
}
});
const valueField = model.selectProps?.valueField || 'value';
return (model.selectProps?.options || []).filter((item: any) => !selectedValues.has(item[valueField]));
}
return model.selectProps?.options || [];
}
function getFormResult() {
return unref(form.value);
}
function getPopConfirmProps(element: Record<string, any>, i: number) {
return props.popConfirmProps && typeof props.popConfirmProps === 'function'
? props.popConfirmProps(element, i)
: props.popConfirmProps;
}
/**
* 触发表单校验
* @param cb 校验通过后执行回调
* @param isSubmit 是否需要将表单值拼接后传入回调函数
*/
function formValidate(cb: (res?: Record<string, any>) => void, isSubmit = true) {
formRef.value?.validate(async (errors) => {
if (errors) {
scrollIntoView(document.querySelector('.n-form-item-blank--error'), { block: 'center' });
return;
}
if (typeof cb === 'function') {
if (isSubmit) {
cb(getFormResult());
} else {
cb();
}
}
});
}
function handleDelete(i: number, id?: string) {
if (id) {
emit('deleteRow', i, id, () => {
form.value.list.splice(i, 1);
});
} else {
form.value.list.splice(i, 1);
}
}
// 删除一行
async function handleDeleteListItem(i: number, id?: string) {
if (id && props.popConfirmProps) {
popShow.value[id] = true;
} else {
handleDelete(i, id);
}
}
function handlePopDeleteListItem(i: number, id?: string) {
if (props.popConfirmProps) {
handleDelete(i, id);
}
}
const rowBackups = ref<Record<number, any>>({});
// 编辑一行
function handleEditRow(index: number) {
rowBackups.value[index] = cloneDeep(form.value.list[index]);
form.value.list[index].editing = true;
}
// 单行校验
async function validateRowFields(index: number): Promise<boolean> {
const fieldRefs = props.models.map((model) => formItemRefs.value[model.path]?.get(`${index}`)).filter(Boolean);
const results = await Promise.allSettled(fieldRefs.map((ref) => ref?.validate?.()));
const hasError = results.some((r) => r.status === 'rejected');
if (hasError) {
scrollIntoView(document.querySelector('.n-form-item-blank--error'), { block: 'center' });
return false;
}
return true;
}
// 单行还原到未校验的状态
async function restoreValidationRowFields(index: number) {
const fieldRefs = props.models.map((model) => formItemRefs.value[model.path]?.get(`${index}`)).filter(Boolean);
await Promise.allSettled(fieldRefs.map((ref) => ref?.restoreValidation?.()));
}
function handleMove(evt: any) {
return props?.move && typeof props.move === 'function' ? props?.move(evt) : true;
}
// 取消编辑
function handleCancelEdit(index: number) {
if (rowBackups.value[index]) {
form.value.list[index] = cloneDeep(rowBackups.value[index]);
restoreValidationRowFields(index);
form.value.list[index].editing = false;
delete rowBackups.value[index];
} else {
form.value.list.splice(index, 1);
emit('cancelRow', index);
}
formValidate(() => {});
}
// 保存编辑
async function handleSaveRow(element: Record<string, any>, index: number) {
const isValid = await validateRowFields(index);
formValidate(() => {
if (!isValid) return;
emit(
'saveRow',
element,
() => {
form.value.list[index].editing = false;
delete rowBackups.value[index];
},
index
);
}, false);
}
const disabledDraggable = computed(() =>
props.validateWhenAdd ? !props.draggable || form.value.list.some((e: any) => e.editing) : !props.draggable
);
// 增加一行
function handleAddListItem() {
const item = {
...formItem,
editing: true,
_key: getGenerateId(),
};
if (props.validateWhenAdd) {
formValidate(() => {
form.value.list.push(item);
}, false);
} else {
form.value.list.push(item);
}
}
// 初始化
watch(
() => form.value.list,
(newList) => {
if (props.popConfirmProps) {
newList.forEach((item: any) => {
if (item.popConfirmProps) {
popShow.value[item.id as string] = false;
}
});
}
},
{ immediate: true }
);
defineExpose({
formValidate,
});
</script>
<style lang="less" scoped>
.all-or {
position: relative;
display: flex;
justify-content: center;
align-items: center;
margin-right: 16px;
height: auto;
&::after {
content: '';
position: absolute;
top: 0;
left: 50%;
width: 1px;
height: 100%;
background-color: var(--text-n8);
transform: translateX(-50%);
}
:deep(.n-tag__content) {
margin: 0 auto;
}
}
:deep(.n-form-item-feedback-wrapper) {
min-height: 0;
}
.read-only-row {
:deep(.n-form-item) {
.n-base-selection.n-base-selection--disabled .n-base-selection-label .n-base-selection-input,
.n-input.n-input--disabled .n-input__input-el,
.n-input.n-input--disabled .n-input__placeholder,
.n-base-selection.n-base-selection--disabled .n-base-selection-placeholder {
color: var(--text-n1);
}
.n-tag {
&.n-tag--disabled {
opacity: 1;
}
.n-tag__close {
display: none;
}
}
}
}
.ghost {
border: 1px dashed var(--primary-4);
background-color: var(--primary-7);
@apply rounded;
}
.drag-item-class {
background: var(--text-n10);
opacity: 1 !important;
@apply rounded;
}
</style>

View File

@@ -0,0 +1,34 @@
import { FormItemRule, InputNumberProps, InputProps, SelectProps } from 'naive-ui';
import { FieldTypeEnum } from '@lib/shared/enums/formDesignEnum';
import { UserTagSelectorProps } from '@/components/business/crm-user-tag-selector/index.vue';
// 自定义检验器,为了传入动态渲染的表单项下标
export interface CustomValidator {
notRepeat?: boolean;
}
export interface customSelectedProps {
filterRepeat?: boolean;
disabledFunction?: (row: any) => boolean;
disabledTooltipFunction?: (row: any) => string;
}
export interface FormItemModel {
path: string;
label?: string;
rule?: (FormItemRule & CustomValidator)[];
type: FieldTypeEnum;
formItemClass?: string;
labelTooltip?: string;
defaultValue?: string | string[] | number | number[] | boolean; // 默认值
inputProps?: Partial<InputProps>;
numberProps?: Partial<
InputNumberProps & {
disabledFunction?: (row: any) => boolean;
}
>;
selectProps?: Partial<SelectProps & customSelectedProps>;
userTagSelectorProps?: Partial<UserTagSelectorProps>;
}

View File

@@ -0,0 +1,20 @@
<template>
<div class="flex flex-shrink-0 items-center">
<roleTreeNodePrefix v-if="props.type === 'CUSTOM'" :text="t('contract.businessTitle.dataSourceSelf')" />
<CrmIcon v-else class="text-[var(--primary-8)]" type="iconicon_enterprise" :size="16" />
</div>
</template>
<script setup lang="ts">
import { useI18n } from '@lib/shared/hooks/useI18n';
import roleTreeNodePrefix from '@/components/business/crm-select-user-drawer/roleTreeNodePrefix.vue';
const { t } = useI18n();
const props = defineProps<{
type: 'THIRD_PARTY' | 'CUSTOM';
}>();
</script>
<style scoped></style>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,64 @@
<template>
<n-cascader
v-model:value="innerValue"
:options="workingCityOptions"
clearable
v-bind="{
filterable: true,
showPath: true,
checkStrategy: props.checkStrategy || 'child',
...$attrs,
}"
max-tag-count="responsive"
:placeholder="props.placeholder"
@update:value="handleChange"
/>
</template>
<script setup lang="ts">
import { CascaderOption, NCascader } from 'naive-ui';
import { getCountriesByLevel } from './config';
export type DataItem<T = Record<string, any>> = CascaderOption & T;
const props = withDefaults(
defineProps<{
placeholder?: string;
checkStrategy?: 'all' | 'child' | 'parent';
range?: 'PCD' | 'PC' | 'detail' | 'C' | 'P';
scope?: 'CN' | 'ALL';
}>(),
{
range: 'PCD',
}
);
const emit = defineEmits<{
(
e: 'change',
value: string | number | Array<string | number> | null,
option: CascaderOption | Array<CascaderOption | null> | null,
pathValues: Array<CascaderOption | null> | Array<CascaderOption[] | null> | null
): void;
}>();
const innerValue = defineModel<string | number | Array<string | number> | null>('value', {
required: true,
default: null,
});
const workingCityOptions = computed<DataItem[]>(() => {
return getCountriesByLevel(props.range, props.scope) as DataItem[];
});
function handleChange(
value: string | number | Array<string | number> | null,
option: CascaderOption | Array<CascaderOption | null> | null,
pathValues: Array<CascaderOption | null> | Array<CascaderOption[] | null> | null
) {
emit('change', value, option, pathValues);
}
</script>
<style scoped></style>

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,61 @@
import pc from './json/pc.json';
import pcC from './json/pc-code.json';
import pca from './json/pca.json';
import pcaC from './json/pca-code.json';
interface DataItem {
value: string;
label: string;
children?: DataItem[];
}
const formatData = (data: any[]): DataItem[] => {
return data.map((item) => {
const children = item.children ? formatData(item.children) : undefined;
return {
value: item.code,
label: item.name,
children,
};
});
};
const provinceAndCityData: DataItem[] = formatData(pcC);
const regionData: DataItem[] = formatData(pcaC);
// code转汉字大对象
const codeToText: { [key: string]: string } = {};
pcaC.forEach((province) => {
codeToText[province.code] = province.name;
province.children.forEach((city) => {
codeToText[city.code] = city.name;
city.children?.forEach((area) => {
codeToText[area.code] = area.name;
});
});
});
const pcTextArr: DataItem[] = Object.entries(pc).map(([province, cities]) => ({
label: province,
value: province,
children: cities.map((city: string) => ({
label: city,
value: city,
})),
}));
const pcaTextArr: DataItem[] = Object.entries(pca).map(([province, cities]) => ({
label: province,
value: province,
children: Object.entries(cities).map(([city, areas]) => ({
label: city,
value: city,
children: areas.map((area: string) => ({
label: area,
value: area,
})),
})),
}));
export { codeToText, pcaTextArr, pcTextArr, provinceAndCityData, regionData };

View File

@@ -0,0 +1,54 @@
import { FieldDataSourceTypeEnum, FormDesignKeyEnum } from '@lib/shared/enums/formDesignEnum';
import { CommonList } from '@lib/shared/models/common';
import {
getCustomerOptions,
getFieldBusinessTitleList,
getFieldClueList,
getFieldContactList,
getFieldContractList,
getFieldContractPaymentPlanList,
getFieldContractPaymentRecordList,
getFieldCustomerList,
getFieldInvoiceList,
getFieldOpportunityList,
getFieldOrderList,
getFieldPriceList,
getFieldProductList,
getFieldQuotationList,
getUserOptions,
} from '@/api/modules';
export const sourceApi: Record<FieldDataSourceTypeEnum, (data: any) => Promise<CommonList<any>>> = {
[FieldDataSourceTypeEnum.BUSINESS]: getFieldOpportunityList,
[FieldDataSourceTypeEnum.CLUE]: getFieldClueList,
[FieldDataSourceTypeEnum.CONTACT]: getFieldContactList,
[FieldDataSourceTypeEnum.CUSTOMER]: getFieldCustomerList,
[FieldDataSourceTypeEnum.PRODUCT]: getFieldProductList,
[FieldDataSourceTypeEnum.CUSTOMER_OPTIONS]: getCustomerOptions,
[FieldDataSourceTypeEnum.USER_OPTIONS]: getUserOptions,
[FieldDataSourceTypeEnum.CONTRACT]: getFieldContractList,
[FieldDataSourceTypeEnum.CONTRACT_PAYMENT]: getFieldContractPaymentPlanList,
[FieldDataSourceTypeEnum.CONTRACT_PAYMENT_RECORD]: getFieldContractPaymentRecordList,
[FieldDataSourceTypeEnum.PRICE]: getFieldPriceList,
[FieldDataSourceTypeEnum.QUOTATION]: getFieldQuotationList,
[FieldDataSourceTypeEnum.BUSINESS_TITLE]: getFieldBusinessTitleList,
[FieldDataSourceTypeEnum.ORDER]: getFieldOrderList,
[FieldDataSourceTypeEnum.INVOICE]: getFieldInvoiceList,
};
export const formKeyMap: Partial<Record<FieldDataSourceTypeEnum, FormDesignKeyEnum>> = {
[FieldDataSourceTypeEnum.BUSINESS]: FormDesignKeyEnum.BUSINESS,
[FieldDataSourceTypeEnum.CLUE]: FormDesignKeyEnum.CLUE,
[FieldDataSourceTypeEnum.CONTACT]: FormDesignKeyEnum.CONTACT,
[FieldDataSourceTypeEnum.CUSTOMER]: FormDesignKeyEnum.CUSTOMER,
[FieldDataSourceTypeEnum.PRODUCT]: FormDesignKeyEnum.PRODUCT,
[FieldDataSourceTypeEnum.CONTRACT]: FormDesignKeyEnum.CONTRACT,
[FieldDataSourceTypeEnum.CONTRACT_PAYMENT]: FormDesignKeyEnum.CONTRACT_PAYMENT,
[FieldDataSourceTypeEnum.CONTRACT_PAYMENT_RECORD]: FormDesignKeyEnum.CONTRACT_PAYMENT_RECORD,
[FieldDataSourceTypeEnum.PRICE]: FormDesignKeyEnum.PRICE,
[FieldDataSourceTypeEnum.QUOTATION]: FormDesignKeyEnum.OPPORTUNITY_QUOTATION,
[FieldDataSourceTypeEnum.BUSINESS_TITLE]: FormDesignKeyEnum.BUSINESS_TITLE,
[FieldDataSourceTypeEnum.ORDER]: FormDesignKeyEnum.ORDER,
[FieldDataSourceTypeEnum.CUSTOMER_OPTIONS]: FormDesignKeyEnum.CUSTOMER,
[FieldDataSourceTypeEnum.INVOICE]: FormDesignKeyEnum.INVOICE,
};

View File

@@ -0,0 +1,677 @@
<template>
<div
class="crm-data-source-table relative bg-[var(--text-n10)]"
:style="{
height: isFullScreen ? 'calc(100vh - 138px)' : '60vh',
}"
>
<CrmTable
ref="crmTableRef"
v-model:checked-row-keys="selectedKeys"
v-bind="propsRes"
:fullscreen-target-ref="props.fullscreenTargetRef"
:childrenKey="subFieldKey"
:columns="columns"
:class="subFieldKey ? 'crm-datasource-table--hasSubField' : ''"
@page-change="propsEvent.pageChange"
@page-size-change="propsEvent.pageSizeChange"
@sorter-change="propsEvent.sorterChange"
@filter-change="propsEvent.filterChange"
@row-key-change="handleRowKeyChange"
@refresh="searchData"
>
<template #tableTop>
<CrmSearchInput
v-model:value="keyword"
class="crm-data-source-search-input !w-[240px]"
:placeholder="searchPlaceholder"
@search="searchData"
/>
</template>
</CrmTable>
</div>
</template>
<script setup lang="ts">
import { DataTableRowKey, NImage, NImageGroup, NSwitch } from 'naive-ui';
import { PreviewPictureUrl } from '@lib/shared/api/requrls/system/module';
import { ContractPaymentPlanEnum } from '@lib/shared/enums/contractEnum';
import { FieldDataSourceTypeEnum, FieldTypeEnum, FormDesignKeyEnum } from '@lib/shared/enums/formDesignEnum';
import { ProcessStatusEnum } from '@lib/shared/enums/process';
import { useI18n } from '@lib/shared/hooks/useI18n';
import { transformData } from '@lib/shared/method/formCreate';
import type { ContractItem, PaymentPlanItem } from '@lib/shared/models/contract';
import { CustomerContractListItem } from '@lib/shared/models/customer';
import { OpportunityItem, OpportunityStageConfig, QuotationItem } from '@lib/shared/models/opportunity';
import { OrderItem } from '@lib/shared/models/order';
import { FilterResult } from '@/components/pure/crm-advance-filter/type';
import CrmNameTooltip from '@/components/pure/crm-name-tooltip/index.vue';
import CrmSearchInput from '@/components/pure/crm-search-input/index.vue';
import CrmTable from '@/components/pure/crm-table/index.vue';
import { CrmDataTableColumn } from '@/components/pure/crm-table/type';
import useTable from '@/components/pure/crm-table/useTable';
import CrmTag from '@/components/pure/crm-tag/index.vue';
import CrmApprovalPopover, {
ApprovalPopoverFormKeyType,
} from '@/components/business/crm-approval/components/crm-approval-popover.vue';
import CrmBusinessNamePrefix from '@/components/business/crm-business-name-prefix/index.vue';
import StatusTagSelect from '@/components/business/crm-follow-detail/statusTagSelect.vue';
import ContractStatus from '@/views/contract/contractPaymentPlan/components/contractPaymentStatus.vue';
import { getFieldCustomFormList, getOpportunityStageConfig, getOrderStatusConfig } from '@/api/modules';
import { contractPaymentPlanStatusOptions } from '@/config/contract';
import useFormCreateApi from '@/hooks/useFormCreateApi';
import useFormCreateSystemColumns from '@/hooks/useFormCreateSystemColumns';
import { FormKey } from '@/hooks/useFormCreateTable';
import useUserStore from '@/store/modules/user';
import type { DataSourceType, FormCreateField } from '../crm-form-create/types';
import { formKeyMap, sourceApi } from './config';
import { getDataSourceFormKey, isCustomDataSourceType } from './utils';
import type { InternalRowData, RowData } from 'naive-ui/es/data-table/src/interface';
const props = withDefaults(
defineProps<{
sourceType: DataSourceType;
multiple?: boolean;
disabledSelection?: (row: RowData) => boolean;
filterParams?: FilterResult;
fullscreenTargetRef?: HTMLElement | null;
fieldConfig?: FormCreateField;
isSubTableRender?: boolean;
}>(),
{
multiple: true,
}
);
const emit = defineEmits<{
(e: 'initForm', fields: FormCreateField[]): void;
(e: 'toggleFullScreen', value: boolean): void;
}>();
const { t } = useI18n();
const userStore = useUserStore();
const selectedKeys = defineModel<DataTableRowKey[]>('selectedKeys', {
required: true,
});
const selectedRows = defineModel<InternalRowData[]>('selectedRows', {
default: [],
});
const isCustomForm = computed(() => isCustomDataSourceType(props.sourceType));
const formKey = computed<FormDesignKeyEnum>(
() => getDataSourceFormKey(props.sourceType, formKeyMap) as FormDesignKeyEnum
);
const searchPlaceholder = computed(() => {
if (isCustomForm.value) {
return t('crmDataSourceSelect.customForm.searchPlaceholder');
}
return props.sourceType === FieldDataSourceTypeEnum.CONTACT
? t('common.searchByNamePhone')
: t('common.searchByName');
});
const crmTableRef = ref<InstanceType<typeof CrmTable>>();
const isDatasourceFormConfig = computed(() => props.sourceType !== FieldDataSourceTypeEnum.BUSINESS_TITLE);
const { fieldList, initFormConfig } = useFormCreateApi({
formKey,
customFormId: computed(() => (isCustomForm.value ? (props.sourceType as string | undefined) : undefined)),
isDatasource: isDatasourceFormConfig.value,
});
const subField = computed(() =>
fieldList.value.find((field) => [FieldTypeEnum.SUB_PRICE, FieldTypeEnum.SUB_PRODUCT].includes(field.type))
);
// 计算子表格字段的key
const subFieldKey = computed(() => {
if (formKey.value === FormDesignKeyEnum.PRICE && props.isSubTableRender) {
const field = fieldList.value.find((e) => e.type === FieldTypeEnum.SUB_PRODUCT);
return field?.businessKey || field?.id;
}
return undefined;
});
const dataSourceSpecialRenderMap: Record<FieldDataSourceTypeEnum, Record<string, (row: any) => any>> = {
[FieldDataSourceTypeEnum.CUSTOMER]: {},
[FieldDataSourceTypeEnum.CONTACT]: {
status: (row: CustomerContractListItem) => {
return h(NSwitch, {
value: row.enable,
disabled: true,
});
},
},
[FieldDataSourceTypeEnum.BUSINESS]: {
stage: (row: OpportunityItem) => {
return row.stageName || '-';
},
},
[FieldDataSourceTypeEnum.PRODUCT]: {},
[FieldDataSourceTypeEnum.CLUE]: {},
[FieldDataSourceTypeEnum.PRICE]: {},
[FieldDataSourceTypeEnum.QUOTATION]: {
approvalStatus: (row: QuotationItem) =>
h(CrmApprovalPopover, {
status: row.approvalStatus,
formKey: formKey.value as ApprovalPopoverFormKeyType,
disabled: row.approvalStatus !== ProcessStatusEnum.UNAPPROVED,
showMore: false,
}),
invalid: (row: QuotationItem) =>
h(
CrmTag,
{
type: row.invalid ? 'default' : 'info',
theme: 'light',
},
{
default: () => (row.invalid ? t('common.voided') : t('common.normal')),
}
),
},
[FieldDataSourceTypeEnum.CONTRACT]: {
stage: (row: ContractItem) => {
return row.stageName || '-';
},
approvalStatus: (row: ContractItem) =>
h(CrmApprovalPopover, {
status: row.approvalStatus,
formKey: formKey.value as ApprovalPopoverFormKeyType,
disabled: row.approvalStatus !== ProcessStatusEnum.UNAPPROVED,
showMore: false,
}),
},
[FieldDataSourceTypeEnum.CONTRACT_PAYMENT]: {
status: (row: PaymentPlanItem) =>
h(StatusTagSelect, {
'status': row.planStatus as ContractPaymentPlanEnum,
'disabled': true,
'statusTagComponent': ContractStatus,
'onUpdate:status': (val) => {
row.planStatus = val;
},
'statusOptions': contractPaymentPlanStatusOptions,
}),
},
[FieldDataSourceTypeEnum.CONTRACT_PAYMENT_RECORD]: {
status: (row: PaymentPlanItem) =>
h(StatusTagSelect, {
'status': row.planStatus as ContractPaymentPlanEnum,
'disabled': true,
'statusTagComponent': ContractStatus,
'onUpdate:status': (val) => {
row.planStatus = val;
},
'statusOptions': contractPaymentPlanStatusOptions,
}),
},
[FieldDataSourceTypeEnum.ORDER]: {
stage: (row: OrderItem) => {
return row.stageName || '-';
},
approvalStatus: (row: ContractItem) =>
h(CrmApprovalPopover, {
status: row.approvalStatus,
formKey: formKey.value as ApprovalPopoverFormKeyType,
disabled: row.approvalStatus !== ProcessStatusEnum.UNAPPROVED,
showMore: false,
}),
},
[FieldDataSourceTypeEnum.CUSTOMER_OPTIONS]: {},
[FieldDataSourceTypeEnum.USER_OPTIONS]: {},
[FieldDataSourceTypeEnum.BUSINESS_TITLE]: {},
[FieldDataSourceTypeEnum.INVOICE]: {
approvalStatus: (row: ContractItem) =>
h(CrmApprovalPopover, {
status: row.approvalStatus,
formKey: formKey.value as ApprovalPopoverFormKeyType,
disabled: row.approvalStatus !== ProcessStatusEnum.UNAPPROVED,
showMore: false,
}),
},
};
const stageConfig = ref<OpportunityStageConfig>();
async function initStageConfig() {
if (isCustomForm.value) return;
try {
if (props.sourceType === FieldDataSourceTypeEnum.ORDER) {
stageConfig.value = await getOrderStatusConfig();
} else if (props.sourceType === FieldDataSourceTypeEnum.BUSINESS) {
stageConfig.value = await getOpportunityStageConfig();
}
} catch (error) {
// eslint-disable-next-line no-console
console.log(error);
}
}
const stageColumnConfig = computed(() => {
if (isCustomForm.value) {
return {};
}
if (props.sourceType === FieldDataSourceTypeEnum.ORDER) {
return {
orderStage: stageConfig.value?.stageConfigList || [],
};
}
if (props.sourceType === FieldDataSourceTypeEnum.BUSINESS) {
return {
opportunityStage: stageConfig.value?.stageConfigList || [],
};
}
return {};
});
await initStageConfig();
const { internalColumnMap, staticColumns, noSorterType } = await useFormCreateSystemColumns({
formKey: formKey.value as FormKey,
containerClass: '',
specialRender: {
...(!isCustomForm.value ? dataSourceSpecialRenderMap[props.sourceType as FieldDataSourceTypeEnum] || {} : {}),
},
...stageColumnConfig.value,
});
const defaultInternalNameKeyMap: Record<string, string> = {
[FormDesignKeyEnum.CUSTOMER]: 'customerName',
[FormDesignKeyEnum.CLUE]: 'clueName',
[FormDesignKeyEnum.BUSINESS]: 'opportunityName',
[FormDesignKeyEnum.CONTACT]: 'contactName',
[FormDesignKeyEnum.PRODUCT]: 'productName',
[FormDesignKeyEnum.OPPORTUNITY_QUOTATION]: 'quotationName',
[FormDesignKeyEnum.ORDER]: 'orderName',
[FormDesignKeyEnum.CONTRACT]: 'contractName',
[FormDesignKeyEnum.CONTRACT_PAYMENT]: 'contractPaymentPlanName',
[FormDesignKeyEnum.CONTRACT_PAYMENT_RECORD]: 'contractPaymentRecordName',
[FormDesignKeyEnum.PRICE]: 'priceName',
[FormDesignKeyEnum.BUSINESS_TITLE]: 'name',
[FormDesignKeyEnum.CUSTOM_FORM]: 'customFormDataName',
};
function mapColumnKey(columnKey: string): string {
const keyMap: Record<string, string> = {
customerId: 'customerName',
owner: 'ownerName',
stage: 'stageName',
contactId: 'contactName',
contractId: 'contractName',
paymentPlanId: 'paymentPlanName',
opportunityId: 'opportunityName',
businessTitleId: 'businessTitleName',
};
return keyMap[columnKey] || columnKey;
}
function getFieldColumnKey(field: FormCreateField) {
let key = field.businessKey || field.id;
if (field.resourceFieldId) {
key = field.id;
}
return mapColumnKey(key);
}
const defaultInternalKey = computed(() => {
return defaultInternalNameKeyMap[formKey.value as FormDesignKeyEnum];
});
const defaultDisplayField = computed<FormCreateField | undefined>(() => {
return fieldList.value.find((field) => field.internalKey === defaultInternalKey.value);
});
const selectedDisplayFields = computed<string[]>(() => {
const defaultFormColumn =
props.fieldConfig?.dataSourceType === FieldDataSourceTypeEnum.BUSINESS_TITLE
? []
: internalColumnMap[formKey.value] || [];
const fixedFieldIds = [...defaultFormColumn, ...staticColumns].map((column) => String(column.key));
const allFields = [...fieldList.value.map((e) => e.id), ...fixedFieldIds];
const savedFieldIds = props.fieldConfig?.listDisplayFields || [];
const matchedFieldsIds = savedFieldIds
.map((fieldId) => allFields.find((id) => id === fieldId))
.filter((field): field is string => !!field);
if (matchedFieldsIds.length === 0) {
return defaultDisplayField.value ? [defaultDisplayField.value.id] : [];
}
if (!defaultDisplayField.value) {
return matchedFieldsIds;
}
return [
defaultDisplayField.value.id,
...matchedFieldsIds.filter((fieldId) => fieldId !== defaultDisplayField.value?.id),
];
});
function buildFieldColumn(field: FormCreateField): CrmDataTableColumn {
const isTag = [
FieldTypeEnum.DATA_SOURCE_MULTIPLE,
FieldTypeEnum.MEMBER_MULTIPLE,
FieldTypeEnum.DEPARTMENT_MULTIPLE,
FieldTypeEnum.INPUT_MULTIPLE,
FieldTypeEnum.SELECT_MULTIPLE,
FieldTypeEnum.CHECKBOX,
].includes(field.type);
const hasFilter = [
FieldTypeEnum.RADIO,
FieldTypeEnum.CHECKBOX,
FieldTypeEnum.SELECT,
FieldTypeEnum.SELECT_MULTIPLE,
];
const columnKey = getFieldColumnKey(field);
const baseColumn: CrmDataTableColumn = {
title: field.name,
key: columnKey,
ellipsis: {
tooltip: true,
},
resizable: true,
width: field.internalKey === defaultInternalKey.value ? 220 : 150,
isTag,
fixed: defaultDisplayField.value?.id === field.id && selectedDisplayFields.value.length > 2 ? 'left' : undefined,
sortOrder: false,
filter: !field.resourceFieldId && hasFilter.includes(field.type),
filterOptions: field.options || field.initialOptions?.map((e: any) => ({ label: e.name, value: e.id })),
sorter: !noSorterType.includes(field.type) && !field.resourceFieldId,
filedType: field.type,
resourceFieldId: field.resourceFieldId,
};
if (field.type === FieldTypeEnum.PICTURE) {
return {
...baseColumn,
render: (row: any) =>
h(
'div',
{
class: 'flex items-center',
},
[
h(
NImageGroup,
{},
{
default: () =>
row[columnKey]?.length
? (row[columnKey] || []).map((_key: string) =>
h(NImage, {
class: 'h-[40px] w-[40px] mr-[4px]',
src: `${PreviewPictureUrl}/${_key}?userId=${userStore.userInfo.id}`,
})
)
: '-',
}
),
]
),
};
}
if (props.sourceType === FieldDataSourceTypeEnum.BUSINESS_TITLE && field.businessKey === 'name') {
return {
...baseColumn,
render: (row: RowData) =>
h(
CrmNameTooltip,
{ text: row[columnKey] as string },
{
prefix: () => h(CrmBusinessNamePrefix, { type: row.type }),
}
),
};
}
return baseColumn;
}
function buildSubFieldColumn(field: FormCreateField): CrmDataTableColumn {
const columnKey = field.businessKey || field.id;
return {
title: field.name,
key: field.id,
width: 120,
ellipsis: {
tooltip: true,
},
resizable: true,
render:
field.type === FieldTypeEnum.PICTURE
? (row: any) =>
h(
'div',
{
class: 'flex items-center',
},
[
h(
NImageGroup,
{},
{
default: () =>
row[columnKey]?.length
? (Array.isArray(row[columnKey]) ? row[columnKey] : []).map((_key: string) =>
h(NImage, {
class: 'h-[40px] w-[40px] mr-[4px]',
src: `${PreviewPictureUrl}/${_key}?userId=${userStore.userInfo.id}`,
})
)
: '-',
}
),
]
)
: undefined,
};
}
const visibleColumns = computed<CrmDataTableColumn[]>(() => {
const allFields = fieldList.value || [];
const savedFieldKeys = props.fieldConfig?.listDisplayFields || [];
const resolvedColumns: CrmDataTableColumn[] = [];
const appendedKeys = new Set<string>();
const defaultFieldId = defaultDisplayField.value?.id;
const defaultColumn = defaultDisplayField.value ? buildFieldColumn(defaultDisplayField.value) : undefined;
if (defaultColumn && defaultFieldId) {
resolvedColumns.push(defaultColumn);
appendedKeys.add(defaultFieldId);
}
const allSystemColumns = [...(internalColumnMap[formKey.value] || []), ...staticColumns];
const systemColumnMap = new Map(allSystemColumns.map((column) => [String(column.key), column] as const));
savedFieldKeys.forEach((fieldKey) => {
const matchedField = allFields.find((field) => field.id === fieldKey);
if (matchedField) {
if (!appendedKeys.has(matchedField.id)) {
resolvedColumns.push(buildFieldColumn(matchedField));
appendedKeys.add(matchedField.id);
}
return;
}
const matchedSystemColumn = systemColumnMap.get(String(fieldKey));
if (matchedSystemColumn && !appendedKeys.has(String(matchedSystemColumn.key))) {
resolvedColumns.push(matchedSystemColumn);
appendedKeys.add(String(matchedSystemColumn.key));
}
});
if (resolvedColumns.length === 0 && defaultColumn) {
return [defaultColumn];
}
return resolvedColumns;
});
const columns = computed<CrmDataTableColumn[]>(() => {
const selectionColumn: CrmDataTableColumn = {
type: 'selection',
multiple: subFieldKey.value ? true : props.multiple,
width: 46,
disabled(row: RowData) {
if (subFieldKey.value) {
return (!row[subFieldKey.value] || row[subFieldKey.value]?.length === 0) && !row.parentId;
}
return props.disabledSelection ? props.disabledSelection(row) : false;
},
resizable: false,
fixed: 'left',
};
const subColumns = subFieldKey.value
? (subField.value?.subFields || []).map((field) => buildSubFieldColumn(field))
: [];
return [selectionColumn, ...visibleColumns.value, ...subColumns];
});
const listApi = computed(() => {
return isCustomForm.value ? getFieldCustomFormList : sourceApi[props.sourceType as FieldDataSourceTypeEnum];
});
const { propsRes, propsEvent, loadList, setAdvanceFilter, setLoadListParams } = useTable(
listApi.value,
{
columns: columns.value,
showSetting: false,
crmPagination: {
showSizePicker: false,
},
containerClass: '.crm-data-source-table',
childrenKey: subFieldKey.value,
cascade: false,
rowClassName: (row) => {
if (subFieldKey.value && row[subFieldKey.value]?.length) {
return 'crm-data-source-has-subfields';
}
return '';
},
},
(item, originalData) => {
const transformItem = transformData({
item,
originalData,
fields: fieldList.value,
needParseSubTable: true,
});
if (subFieldKey.value) {
transformItem[subFieldKey.value] = transformItem[subFieldKey.value]?.map((subItem: any) => ({
...subItem,
parentId: item.id,
parentName: item.name,
}));
}
return transformItem;
}
);
const keyword = ref('');
function searchData(_keyword?: string) {
if (props.filterParams) {
setAdvanceFilter(props.filterParams);
}
setLoadListParams({
keyword: _keyword !== undefined ? _keyword : keyword.value,
customFormId: isCustomForm.value ? (props.sourceType as string | undefined) : undefined,
});
loadList();
crmTableRef.value?.scrollTo({ top: 0 });
}
function handleRowKeyChange(keys: DataTableRowKey[], _rows: InternalRowData[]) {
if (subFieldKey.value) {
const parentIds = _rows.map((r) => r.parentId as DataTableRowKey);
selectedKeys.value = Array.from(new Set(keys.concat(parentIds)));
const parentRows =
propsRes.value.data.filter(
(r) => parentIds.includes(r.id as DataTableRowKey) && !_rows.some((row) => row.id === r.id)
) || [];
selectedRows.value = _rows.concat(parentRows);
} else {
selectedKeys.value = keys;
selectedRows.value = _rows;
}
}
const isFullScreen = computed(() => crmTableRef.value?.isFullScreen);
onBeforeMount(async () => {
await initFormConfig();
emit('initForm', fieldList.value);
searchData();
});
watch(
() => isFullScreen.value,
(val) => {
emit('toggleFullScreen', val ?? false);
}
);
</script>
<style lang="less">
.crm-data-source-table {
.n-checkbox--disabled .n-checkbox--checked {
.check-icon {
opacity: 1 !important;
transform: scale(1) !important;
}
}
.n-radio--disabled .n-checkbox--checked {
.n-radio__dot::before {
opacity: 1 !important;
transform: scale(1) !important;
}
}
.crm-data-source-has-subfields {
.n-data-table-td--selection {
.n-checkbox,
.n-radio {
@apply hidden;
}
}
}
.n-data-table-td {
@apply whitespace-nowrap;
.n-ellipsis {
width: calc(100% - 24px);
}
}
}
.crm-data-source-search-input {
--n-box-shadow-focus-error: 0 0 0 2px rgb(var(--primary-8) 0.2) !important;
&.n-input {
.n-input__border {
&:focus {
border: 1px solid var(--primary-8) !important;
}
}
.n-input__state-border {
border: 1px solid var(--primary-8) !important;
}
&:not(.n-input--disabled) .n-input__input-el {
caret-color: var(--primary-8) !important;
}
}
}
.crm-datasource-table--hasSubField {
.n-data-table-thead {
.n-checkbox {
@apply hidden;
}
}
}
</style>

View File

@@ -0,0 +1,278 @@
<template>
<n-select
v-model:value="value"
filterable
multiple
tag
:placeholder="t('common.pleaseSelect')"
:render-tag="renderTag"
:show-arrow="false"
:show="false"
:disabled="props.disabled"
:max-tag-count="props.maxTagCount"
:status="props.status"
@click="showDataSourcesModal"
/>
<CrmModal
v-model:show="dataSourcesModalVisible"
:title="t('crmFormDesign.selectDataSource', { type: dataSourceTitle })"
:positive-text="t('common.confirm')"
:class="`crm-data-source-select-modal ${fullScreenModal ? 'crm-full-modal' : ''}`"
@confirm="handleDataSourceConfirm"
@cancel="handleDataSourceCancel"
>
<dataSourceTable
v-model:selected-keys="selectedKeys"
v-model:selected-rows="selectedRows"
:multiple="props.multiple"
:source-type="props.dataSourceType"
:disabled-selection="props.disabledSelection ? props.disabledSelection : undefined"
:filter-params="filterParams"
:fullscreen-target-ref="fullscreenTargetRef"
:fieldConfig="props.fieldConfig"
:isSubTableRender="props.hideChildTag"
@init-form="handleFormInit"
@toggle-full-screen="(val) => (fullScreenModal = val)"
/>
</CrmModal>
</template>
<script setup lang="ts">
import { DataTableRowKey, NSelect, SelectOption } from 'naive-ui';
import { cloneDeep } from 'lodash-es';
import { FieldDataSourceTypeEnum } from '@lib/shared/enums/formDesignEnum';
import { useI18n } from '@lib/shared/hooks/useI18n';
import { CustomFormItem } from '@lib/shared/models/customForm';
import { FilterResult } from '@/components/pure/crm-advance-filter/type';
import CrmModal from '@/components/pure/crm-modal/index.vue';
import CrmTag from '@/components/pure/crm-tag/index.vue';
import dataSourceTable from './dataSourceTable.vue';
import { getCustomFormOptions } from '@/api/modules';
import type { DataSourceType, FormCreateField } from '../crm-form-create/types';
import { getCustomDataSourceName, isCustomDataSourceType } from './utils';
import type { InternalRowData, RowKey } from 'naive-ui/es/data-table/src/interface';
interface DataSourceTableProps {
dataSourceType: DataSourceType;
multiple?: boolean;
disabled?: boolean;
disabledSelection?: (row: any) => boolean;
maxTagCount?: number | 'responsive';
filterParams?: FilterResult;
fieldConfig?: FormCreateField;
hideChildTag?: boolean;
status?: 'error' | 'success' | 'warning';
}
const props = withDefaults(defineProps<DataSourceTableProps>(), {
multiple: true,
});
const emit = defineEmits<{
(
e: 'change',
value: (string | number)[],
source: Record<string, any>[],
dataSourceFormFields: FormCreateField[]
): void;
(e: 'delete', id?: string | number): void;
}>();
const { t } = useI18n();
const typeLocaleMap = {
[FieldDataSourceTypeEnum.CUSTOMER]: 'crmFormDesign.customer',
[FieldDataSourceTypeEnum.CONTACT]: 'crmFormDesign.contact',
[FieldDataSourceTypeEnum.BUSINESS]: 'crmFormDesign.opportunity',
[FieldDataSourceTypeEnum.PRODUCT]: 'crmFormDesign.product',
[FieldDataSourceTypeEnum.CLUE]: 'crmFormDesign.clue',
[FieldDataSourceTypeEnum.CUSTOMER_OPTIONS]: 'crmFormDesign.customer',
[FieldDataSourceTypeEnum.USER_OPTIONS]: '',
[FieldDataSourceTypeEnum.PRICE]: 'crmFormCreate.drawer.price',
[FieldDataSourceTypeEnum.CONTRACT]: 'crmFormCreate.drawer.contract',
[FieldDataSourceTypeEnum.QUOTATION]: 'crmFormCreate.drawer.quotation',
[FieldDataSourceTypeEnum.CONTRACT_PAYMENT]: 'crmFormCreate.drawer.contractPaymentPlan',
[FieldDataSourceTypeEnum.CONTRACT_PAYMENT_RECORD]: 'crmFormCreate.drawer.contractPaymentRecord',
[FieldDataSourceTypeEnum.BUSINESS_TITLE]: 'crmFormCreate.drawer.businessTitle',
[FieldDataSourceTypeEnum.ORDER]: 'crmFormCreate.drawer.order',
[FieldDataSourceTypeEnum.INVOICE]: 'crmFormCreate.drawer.invoice',
};
const customDataSourceForms = ref<CustomFormItem[]>([]);
async function initCustomDataSourceForms() {
try {
const res = await getCustomFormOptions();
customDataSourceForms.value = res || [];
} catch (error) {
customDataSourceForms.value = [];
// eslint-disable-next-line no-console
console.log(error);
}
}
const dataSourceTitle = computed(() => {
if (isCustomDataSourceType(props.fieldConfig?.dataSourceType)) {
return (
getCustomDataSourceName(props.fieldConfig?.dataSourceType as string | undefined, customDataSourceForms.value) ||
t('module.customForm') // todo name 等待替换
);
}
const localeKey = typeLocaleMap[props.dataSourceType as FieldDataSourceTypeEnum];
if (localeKey) {
return t(localeKey);
}
return (
getCustomDataSourceName(props.dataSourceType as string | undefined, customDataSourceForms.value) ||
t('module.customForm')
);
});
const value = defineModel<DataTableRowKey[]>('value', {
required: true,
default: [],
});
const rows = defineModel<InternalRowData[]>('rows', {
default: [],
});
const selectedRows = ref<InternalRowData[]>(cloneDeep(rows.value));
const selectedKeys = ref<DataTableRowKey[]>(value.value.map((e) => e));
const dataSourcesModalVisible = ref(false);
const dataSourceFormFields = ref<FormCreateField[]>([]);
const initialRows = ref<InternalRowData[]>([]);
function handleFormInit(fields: FormCreateField[]) {
dataSourceFormFields.value = fields;
}
function handleDataSourceConfirm() {
const newRows = selectedRows.value;
if (rows.value.length !== newRows.length || rows.value.some((item, index) => item.id !== newRows[index].id)) {
rows.value = cloneDeep(newRows);
value.value = newRows.map((e) => e.id) as RowKey[];
nextTick(() => {
emit('change', value.value, newRows, dataSourceFormFields.value);
});
}
dataSourcesModalVisible.value = false;
}
function handleDataSourceCancel() {
selectedKeys.value = [];
dataSourcesModalVisible.value = false;
}
const renderTag = ({ option, handleClose }: { option: SelectOption; handleClose: () => void }) => {
const _row = (rows.value || []).find((item) => item?.id === option.value);
return props.hideChildTag && _row?.parentId
? null
: h(
CrmTag,
{
type: 'default',
theme: 'light',
closable: !props.disabled,
onClose: () => {
handleClose();
if (props.hideChildTag) {
// 价格表关闭标签需要清理子项和父项
rows.value = [];
value.value = [];
} else {
rows.value = rows.value.filter((item) => item.id !== option.value);
value.value = value.value.filter((key) => key !== option.value);
}
emit('delete', option.value);
nextTick(() => {
emit('change', value.value, rows.value, dataSourceFormFields.value);
});
},
},
{
default: () => {
return _row?.name || t('common.optionNotExist');
},
}
);
};
function showDataSourcesModal() {
if (!props.disabled) {
selectedKeys.value = value.value;
dataSourcesModalVisible.value = true;
}
}
watch(
() => value.value,
() => {
selectedKeys.value = value.value;
selectedRows.value = initialRows.value
.concat(rows.value)
.filter((item) => value.value.includes(item.id as DataTableRowKey));
rows.value = cloneDeep(selectedRows.value);
}
);
const fullscreenTargetRef = ref();
const fullScreenModal = ref(false);
function setFullWrapperFullScreenRef() {
nextTick(() => {
const wrapper = document.querySelector('.n-modal-body-wrapper .crm-data-source-select-modal');
fullscreenTargetRef.value = wrapper;
});
}
watch(
() => dataSourcesModalVisible.value,
(v) => {
initCustomDataSourceForms();
if (v) {
setFullWrapperFullScreenRef();
} else {
fullScreenModal.value = false;
}
}
);
watch(
() => fullScreenModal.value,
() => {
setFullWrapperFullScreenRef();
}
);
onBeforeMount(() => {
if (value.value.length === 0) {
initialRows.value = cloneDeep(rows.value);
}
rows.value = rows.value.filter((item) => value.value.includes(item.id as DataTableRowKey));
});
</script>
<style lang="less">
.crm-data-source-select-modal {
.n-dialog__title {
@apply justify-between;
}
}
.crm-full-modal {
width: 100% !important;
max-width: 100vw !important;
.n-dialog__content {
height: calc(100vh - 136px);
.n-scrollbar {
height: 100% !important;
max-height: none !important;
.n-scrollbar-content {
height: 100%;
}
}
}
}
</style>

View File

@@ -0,0 +1,3 @@
export default {
'crmDataSourceSelect.customForm.searchPlaceholder': 'Search data',
};

View File

@@ -0,0 +1,3 @@
export default {
'crmDataSourceSelect.customForm.searchPlaceholder': '搜索数据',
};

View File

@@ -0,0 +1,12 @@
import type { FilterResult } from '../../pure/crm-advance-filter/type';
import { DataSourceType } from '../crm-form-create/types';
import type { RowData } from 'naive-ui/es/data-table/src/interface';
export interface DataSourceProps {
dataSourceType: DataSourceType;
multiple?: boolean;
disabled?: boolean;
disabledSelection?: (row: RowData) => boolean;
maxTagCount?: number | 'responsive';
filterParams?: FilterResult;
}

View File

@@ -0,0 +1,41 @@
import { type SelectOption } from 'naive-ui';
import { FieldDataSourceTypeEnum, FormDesignKeyEnum } from '@lib/shared/enums/formDesignEnum';
import { CustomFormItem } from '@lib/shared/models/customForm';
export interface DataSourceOption extends SelectOption {
formKey?: FormDesignKeyEnum;
dataSourceType?: FieldDataSourceTypeEnum | string;
}
export function isCustomDataSourceType(dataSourceType?: FieldDataSourceTypeEnum | string) {
if (!dataSourceType) {
return false;
}
return !Object.values(FieldDataSourceTypeEnum).includes(dataSourceType as FieldDataSourceTypeEnum);
}
export function getCustomDataSourceName(dataSourceType: string | undefined, customDataSourceForms: CustomFormItem[]) {
if (!dataSourceType) {
return '';
}
return customDataSourceForms.find((item) => item.id === dataSourceType)?.name || '';
}
export function getDataSourceFormKey(
dataSourceType: FieldDataSourceTypeEnum | string | undefined,
map: Partial<Record<FieldDataSourceTypeEnum, FormDesignKeyEnum>>,
fallback?: FormDesignKeyEnum
) {
if (isCustomDataSourceType(dataSourceType)) {
return FormDesignKeyEnum.CUSTOM_FORM;
}
if (!dataSourceType) {
return fallback;
}
return map[dataSourceType as FieldDataSourceTypeEnum] || fallback;
}

View File

@@ -0,0 +1,382 @@
<template>
<CrmDrawer
v-model:show="visible"
width="100%"
:title="t('workbench.duplicateCheck.advanced')"
:footer="false"
no-padding
:show-back="true"
@cancel="handleCancel"
>
<div class="global-search-wrapper">
<div class="global-search">
<CrmCard hide-footer auto-height class="mb-[16px]">
<div class="w-full bg-[var(--text-n10)]">
<div class="mb-[16px] flex w-full items-center gap-[12px]">
<div class="flex flex-nowrap">{{ t('workbench.duplicateCheck.searchScoped') }}</div>
<div>
<CrmTab
v-model:active-tab="activeTab"
no-content
:tab-list="tabList"
type="segment"
@change="() => handleReset()"
/>
</div>
</div>
<div class="w-[50%] min-w-[800px]">
<FilterContent
ref="filterContentRef"
v-model:form-model="formModel"
no-filter-option
:config-list="configList"
:custom-list="customList"
:max-filter-field-number="5"
keep-one-line
:max-filter-field-add-tooltip="t('workbench.duplicateCheck.maxConditionTooltip')"
>
<template #addButtonRight>
<div class="flex items-center gap-[12px]">
<n-button size="small" type="default" class="outline--secondary" @click="clearFilter">
{{ t('common.reset') }}
</n-button>
<n-button size="small" type="primary" @click="handleFilter">
{{ t('advanceFilter.filter') }}
</n-button>
</div>
</template>
</FilterContent>
</div>
</div>
</CrmCard>
<CrmCard hide-footer :special-height="totalCount > 0 ? 0 : 228">
<Suspense>
<opportunityTable
v-if="activeTab === FormDesignKeyEnum.SEARCH_ADVANCED_OPPORTUNITY"
ref="opportunityTableRef"
readonly
is-limit-show-detail
hidden-advance-filter
:form-key="FormDesignKeyEnum.SEARCH_ADVANCED_OPPORTUNITY"
@open-customer-drawer="handleOpenCustomerDrawer"
@init="setFilterConfigList"
>
<template #searchTableTotal="{ total }">
<globalSearchResult :title="currentTitle" :total="total" @init-total="initTotal" />
</template>
</opportunityTable>
<customerTable
v-else-if="activeTab === FormDesignKeyEnum.SEARCH_ADVANCED_CUSTOMER"
ref="customerTableRef"
readonly
is-limit-show-detail
hidden-advance-filter
:form-key="FormDesignKeyEnum.SEARCH_ADVANCED_CUSTOMER"
@init="setFilterConfigList"
@show-count-detail="(row, type) => emit('showCountDetail', row, type)"
>
<template #searchTableTotal="{ total }">
<globalSearchResult :title="currentTitle" :total="total" @init-total="initTotal" />
</template>
</customerTable>
<ContactTable
v-else-if="activeTab === FormDesignKeyEnum.SEARCH_ADVANCED_CONTACT"
ref="contactTableRef"
readonly
hidden-advance-filter
:form-key="FormDesignKeyEnum.SEARCH_ADVANCED_CONTACT"
@init="setFilterConfigList"
>
<template #searchTableTotal="{ total }">
<globalSearchResult :title="currentTitle" :total="total" @init-total="initTotal" />
</template>
</ContactTable>
<openSeaTable
v-else-if="activeTab === FormDesignKeyEnum.SEARCH_ADVANCED_PUBLIC"
ref="openSeaTableRef"
readonly
hidden-pool-select
hidden-advance-filter
is-limit-show-detail
:form-key="FormDesignKeyEnum.SEARCH_ADVANCED_PUBLIC"
@init="setFilterConfigList"
>
<template #searchTableTotal="{ total }">
<globalSearchResult :title="currentTitle" :total="total" @init-total="initTotal" />
</template>
</openSeaTable>
<clueTable
v-else-if="activeTab === FormDesignKeyEnum.SEARCH_ADVANCED_CLUE"
ref="clueTableRef"
readonly
is-limit-show-detail
hidden-advance-filter
:table-form-key="FormDesignKeyEnum.SEARCH_ADVANCED_CLUE"
@init="setFilterConfigList"
>
<template #searchTableTotal="{ total }">
<globalSearchResult :title="currentTitle" :total="total" @init-total="initTotal" />
</template>
</clueTable>
<cluePoolTable
v-else-if="activeTab === FormDesignKeyEnum.SEARCH_ADVANCED_CLUE_POOL"
ref="cluePoolTableRef"
readonly
hidden-pool-select
hidden-advance-filter
is-limit-show-detail
:form-key="FormDesignKeyEnum.SEARCH_ADVANCED_CLUE_POOL"
@init="setFilterConfigList"
>
<template #searchTableTotal="{ total }">
<globalSearchResult :title="currentTitle" :total="total" @init-total="initTotal" />
</template>
</cluePoolTable>
</Suspense>
</CrmCard>
</div>
</div>
<customerOverviewDrawer
v-model:show="showCustomerOverviewDrawer"
:source-id="activeSourceId"
:readonly="isCustomerReadonly"
/>
</CrmDrawer>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { NButton } from 'naive-ui';
import { cloneDeep } from 'lodash-es';
import { FieldTypeEnum, FormDesignKeyEnum } from '@lib/shared/enums/formDesignEnum';
import { useI18n } from '@lib/shared/hooks/useI18n';
import FilterContent from '@/components/pure/crm-advance-filter/components/filterContent.vue';
import { ConditionsItem, FilterForm, FilterFormItem, FilterResult } from '@/components/pure/crm-advance-filter/type';
import CrmCard from '@/components/pure/crm-card/index.vue';
import CrmDrawer from '@/components/pure/crm-drawer/index.vue';
import CrmTab from '@/components/pure/crm-tab/index.vue';
import { multipleValueTypeList } from '@/components/business/crm-form-create/config';
import ContactTable from '@/components/business/crm-form-create-table/contactTable.vue';
import globalSearchResult from './globalSearchResult.vue';
import clueTable from '@/views/clueManagement/clue/components/clueTable.vue';
import cluePoolTable from '@/views/clueManagement/cluePool/components/cluePoolTable.vue';
import customerOverviewDrawer from '@/views/customer/components/customerOverviewDrawer.vue';
import customerTable from '@/views/customer/components/customerTable.vue';
import openSeaTable from '@/views/customer/components/openSeaTable.vue';
import opportunityTable from '@/views/opportunity/components/opportunityTable.vue';
import { lastScopedOptions } from '../config';
const { t } = useI18n();
const props = defineProps<{
formKey?: FormDesignKeyEnum | null;
keyword: string;
}>();
const emit = defineEmits<{
(e: 'showCountDetail', row: Record<string, any>, type: 'opportunity' | 'clue'): void;
(e: 'close'): void;
}>();
const visible = defineModel<boolean>('visible', {
required: true,
});
const defaultFormModel: FilterForm = {
searchMode: 'AND',
list: [{ dataIndex: null, operator: undefined, value: null, type: FieldTypeEnum.INPUT }],
};
const formModel = ref<FilterForm>(cloneDeep(defaultFormModel));
const savedFormModel = ref(cloneDeep(formModel.value));
const filterContentRef = ref<InstanceType<typeof FilterContent>>();
const globalKeyword = ref('');
const isAdvancedSearchMode = ref(false);
const filterResult = ref<FilterResult>({ searchMode: 'AND', conditions: [] });
const activeTab = ref(FormDesignKeyEnum.SEARCH_ADVANCED_CUSTOMER);
function getParams(): FilterResult {
const conditions: ConditionsItem[] = formModel.value.list.map((item: any) => ({
value: item.value,
operator: item.operator,
name: item.dataIndex ?? '',
multipleValue: multipleValueTypeList.includes(item.type),
type: item.type,
}));
return {
searchMode: formModel.value.searchMode,
conditions,
};
}
const getIsValidValue = (item: ConditionsItem) => {
if (typeof item.value === 'boolean') return String(item.value).length;
if (typeof item.value === 'number') return item.value;
return item.value?.length;
};
const opportunityTableRef = ref<InstanceType<typeof opportunityTable>>();
const customerTableRef = ref<InstanceType<typeof customerTable>>();
const contactTableRef = ref<InstanceType<typeof ContactTable>>();
const openSeaTableRef = ref<InstanceType<typeof openSeaTable>>();
const clueTableRef = ref<InstanceType<typeof clueTable>>();
const cluePoolTableRef = ref<InstanceType<typeof cluePoolTable>>();
function loadList(filter: FilterResult) {
switch (activeTab.value) {
case FormDesignKeyEnum.SEARCH_ADVANCED_OPPORTUNITY:
opportunityTableRef.value?.handleAdvanceFilter?.(filter, isAdvancedSearchMode.value, globalKeyword.value);
break;
case FormDesignKeyEnum.SEARCH_ADVANCED_CUSTOMER:
customerTableRef.value?.handleAdvanceFilter?.(filter, isAdvancedSearchMode.value, globalKeyword.value);
break;
case FormDesignKeyEnum.SEARCH_ADVANCED_CONTACT:
contactTableRef.value?.handleAdvanceFilter?.(filter, isAdvancedSearchMode.value, globalKeyword.value);
break;
case FormDesignKeyEnum.SEARCH_ADVANCED_PUBLIC:
openSeaTableRef.value?.handleAdvanceFilter?.(filter, isAdvancedSearchMode.value, globalKeyword.value);
break;
case FormDesignKeyEnum.SEARCH_ADVANCED_CLUE:
clueTableRef.value?.handleAdvanceFilter?.(filter, isAdvancedSearchMode.value, globalKeyword.value);
break;
case FormDesignKeyEnum.SEARCH_ADVANCED_CLUE_POOL:
cluePoolTableRef.value?.handleAdvanceFilter?.(filter, isAdvancedSearchMode.value, globalKeyword.value);
break;
default:
break;
}
}
function initSearchData() {
switch (activeTab.value) {
case FormDesignKeyEnum.SEARCH_ADVANCED_OPPORTUNITY:
opportunityTableRef.value?.handleSearchData?.(globalKeyword.value);
break;
case FormDesignKeyEnum.SEARCH_ADVANCED_CUSTOMER:
customerTableRef.value?.handleSearchData?.(globalKeyword.value);
break;
case FormDesignKeyEnum.SEARCH_ADVANCED_CONTACT:
contactTableRef.value?.handleSearchData?.(globalKeyword.value);
break;
case FormDesignKeyEnum.SEARCH_ADVANCED_PUBLIC:
openSeaTableRef.value?.handleSearchData?.(globalKeyword.value);
break;
case FormDesignKeyEnum.SEARCH_ADVANCED_CLUE:
clueTableRef.value?.handleSearchData?.(globalKeyword.value);
break;
case FormDesignKeyEnum.SEARCH_ADVANCED_CLUE_POOL:
cluePoolTableRef.value?.handleSearchData?.(globalKeyword.value);
break;
default:
break;
}
}
const handleFilterConditions = (filter: FilterResult) => {
const haveConditions: boolean =
filter.conditions?.some((item) => {
const valueCanEmpty = ['EMPTY', 'NOT_EMPTY'].includes(item.operator as string);
return valueCanEmpty || getIsValidValue(item);
}) ?? false;
isAdvancedSearchMode.value = haveConditions;
filterResult.value = filter;
loadList(filter);
};
function handleFilter() {
filterContentRef.value?.formRef?.validate((errors) => {
if (!errors) {
handleFilterConditions(getParams());
}
});
}
function handleReset() {
filterContentRef.value?.formRef?.restoreValidation();
formModel.value = JSON.parse(JSON.stringify(savedFormModel.value));
}
function clearFilter() {
handleReset();
handleFilterConditions({ searchMode: 'AND', conditions: [] });
}
const configList = ref<FilterFormItem[]>([]);
const customList = ref<FilterFormItem[]>([]);
function setFilterConfigList(params: Record<string, any>) {
const { filterConfigList, customFieldsFilterConfig } = params;
configList.value = filterConfigList;
customList.value = customFieldsFilterConfig;
initSearchData();
}
const activeSourceId = ref<string>('');
const isCustomerReadonly = ref(false);
const showCustomerOverviewDrawer = ref(false);
function handleOpenCustomerDrawer(
params: { customerId: string; inCustomerPool: boolean; poolId: string },
readonly = false
) {
activeSourceId.value = params.customerId;
showCustomerOverviewDrawer.value = true;
isCustomerReadonly.value = readonly;
}
watch(
() => props.formKey,
(val) => {
globalKeyword.value = '';
if (val) {
globalKeyword.value = props.keyword;
activeTab.value = val as FormDesignKeyEnum;
}
},
{
immediate: true,
}
);
const tabList = computed(() => lastScopedOptions.value.map((e) => ({ name: e.value, tab: e.label })));
const currentTitle = computed(() => lastScopedOptions.value.find((e) => e.value === activeTab.value)?.label ?? '');
const totalCount = ref(0);
function initTotal(val: number) {
totalCount.value = val;
}
function handleCancel() {
clearFilter();
emit('close');
}
watch(
() => visible.value,
(val) => {
if (val) {
activeTab.value = props.formKey ?? lastScopedOptions.value[0]?.value;
}
}
);
</script>
<style scoped lang="less">
.global-search-wrapper {
padding: 16px;
background: var(--text-n9);
@apply h-full w-full;
.global-search {
@apply h-full w-full overflow-y-auto;
.crm-scroll-bar();
}
}
</style>

View File

@@ -0,0 +1,33 @@
<template>
<div class="flex items-center font-semibold">
{{ t('workbench.duplicateCheck.searchInAdvancedResult', { name: props.title }) }}
<div class="text-[var(--text-n4)]"> {{ props.total }} </div>
</div>
</template>
<script setup lang="ts">
import { useI18n } from '@lib/shared/hooks/useI18n';
const { t } = useI18n();
const props = defineProps<{
total: number;
title: string;
}>();
const emit = defineEmits<{
(e: 'initTotal', val: number): void;
}>();
watch(
() => props.total,
() => {
emit('initTotal', props.total);
},
{
immediate: true,
}
);
</script>
<style scoped></style>

View File

@@ -0,0 +1,57 @@
<template>
<div :class="props.class">
<div class="flex items-center font-semibold">
{{ props.title }}
<div class="text-[var(--text-n4)]"> {{ propsRes.crmPagination?.itemCount || 0 }} </div>
</div>
<div class="mt-[8px] rounded-[var(--border-radius-small)] bg-[var(--text-n9)] p-[16px]">
<CrmTable
ref="crmTableRef"
v-bind="propsRes"
class="!min-h-[548px]"
@page-change="propsEvent.pageChange"
@page-size-change="propsEvent.pageSizeChange"
@sorter-change="propsEvent.sorterChange"
@filter-change="propsEvent.filterChange"
/>
</div>
</div>
</template>
<script setup lang="ts">
import type { CommonList } from '@lib/shared/models/common';
import CrmTable from '@/components/pure/crm-table/index.vue';
import type { CrmDataTableColumn } from '@/components/pure/crm-table/type';
import useTable from '@/components/pure/crm-table/useTable';
const props = defineProps<{
api: (data: any) => Promise<CommonList<any>>;
columns: CrmDataTableColumn[];
title: string;
class: string;
}>();
const crmTableRef = ref<InstanceType<typeof CrmTable>>();
const { propsRes, propsEvent, loadList, setLoadListParams } = useTable(props.api, {
showSetting: false,
columns: props.columns,
crmPagination: {
size: 'small',
},
hiddenRefresh: true,
hiddenTotal: ref(true),
containerClass: props.class,
});
async function searchData(val: string, id?: string) {
setLoadListParams({ name: val, ...(id ? { id } : {}) });
await loadList();
crmTableRef.value?.scrollTo({ top: 0 });
}
defineExpose({
searchData,
propsRes,
});
</script>

View File

@@ -0,0 +1,71 @@
import { FormDesignKeyEnum } from '@lib/shared/enums/formDesignEnum';
import { ModuleConfigEnum } from '@lib/shared/enums/moduleEnum';
import { useI18n } from '@lib/shared/hooks/useI18n';
import { DefaultSearchSetFormModel, ModuleNavBaseInfoItem } from '@lib/shared/models/system/module';
import useAppStore from '@/store/modules/app';
import { hasAnyPermission } from '@/utils/permission';
const { t } = useI18n();
const appStore = useAppStore();
export interface ScopedOptions {
label: string;
value: FormDesignKeyEnum;
moduleKey: ModuleConfigEnum;
permission: string[];
}
export const scopedOptions = [
{
label: t('crmFormDesign.clue'),
value: FormDesignKeyEnum.SEARCH_ADVANCED_CLUE,
moduleKey: ModuleConfigEnum.CLUE_MANAGEMENT,
permission: ['CLUE_MANAGEMENT:READ'],
},
{
label: t('module.cluePool'),
value: FormDesignKeyEnum.SEARCH_ADVANCED_CLUE_POOL,
moduleKey: ModuleConfigEnum.CLUE_MANAGEMENT,
permission: ['CLUE_MANAGEMENT_POOL:READ'],
},
{
label: t('crmFormDesign.customer'),
value: FormDesignKeyEnum.SEARCH_ADVANCED_CUSTOMER,
moduleKey: ModuleConfigEnum.CUSTOMER_MANAGEMENT,
permission: ['CUSTOMER_MANAGEMENT:READ'],
},
{
label: t('module.openSea'),
value: FormDesignKeyEnum.SEARCH_ADVANCED_PUBLIC,
moduleKey: ModuleConfigEnum.CUSTOMER_MANAGEMENT,
permission: ['CUSTOMER_MANAGEMENT_POOL:READ'],
},
{
label: t('module.businessManagement'),
value: FormDesignKeyEnum.SEARCH_ADVANCED_OPPORTUNITY,
moduleKey: ModuleConfigEnum.BUSINESS_MANAGEMENT,
permission: ['OPPORTUNITY_MANAGEMENT:READ'],
},
{
label: t('crmFormDesign.contact'),
value: FormDesignKeyEnum.SEARCH_ADVANCED_CONTACT,
moduleKey: ModuleConfigEnum.CUSTOMER_MANAGEMENT,
permission: ['CUSTOMER_MANAGEMENT_CONTACT:READ'],
},
];
export const lastScopedOptions = computed<ScopedOptions[]>(() =>
scopedOptions.filter((e: ScopedOptions) =>
appStore.moduleConfigList.find(
(m: ModuleNavBaseInfoItem) => m.moduleKey === e.moduleKey && m.enable && hasAnyPermission(e.permission)
)
)
);
export const defaultSearchSetFormModel: DefaultSearchSetFormModel = {
searchFields: {}, // 字段map
resultDisplay: false, // 是否开启
sortSetting: [], // 排序列表
};

Some files were not shown because too many files have changed in this diff Show More