feat: 代码提交
@ -0,0 +1,5 @@
|
||||
[*.{js,jsx,ts,tsx,vue}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = true
|
@ -0,0 +1,9 @@
|
||||
build/*.js
|
||||
src/assets
|
||||
public
|
||||
dist
|
||||
|
||||
.env.development
|
||||
.env.production
|
||||
|
||||
package-lock.json
|
@ -0,0 +1,200 @@
|
||||
module.exports = {
|
||||
root: true,
|
||||
parserOptions: {
|
||||
parser: 'babel-eslint',
|
||||
sourceType: 'module'
|
||||
},
|
||||
env: {
|
||||
browser: true,
|
||||
node: true,
|
||||
es6: true,
|
||||
},
|
||||
extends: ['plugin:vue/recommended', 'eslint:recommended'],
|
||||
|
||||
// add your Customize rules here
|
||||
//it is base on https://github.com/vuejs/eslint-config-vue
|
||||
rules: {
|
||||
"vue/max-attributes-per-line": [2, {
|
||||
"singleline": 10,
|
||||
"multiline": {
|
||||
"max": 1,
|
||||
"allowFirstLine": false
|
||||
}
|
||||
}],
|
||||
"vue/singleline-html-element-content-newline": "off",
|
||||
'vue/no-unused-components': 'off',
|
||||
"vue/multiline-html-element-content-newline":"off",
|
||||
"vue/multi-word-component-name": 0,
|
||||
"vue/name-property-casing": ["error", "PascalCase"],
|
||||
"vue/no-v-html": "off",
|
||||
'accessor-pairs': 2,
|
||||
'arrow-spacing': [2, {
|
||||
'before': true,
|
||||
'after': true
|
||||
}],
|
||||
'block-spacing': [2, 'always'],
|
||||
'brace-style': [2, '1tbs', {
|
||||
'allowSingleLine': true
|
||||
}],
|
||||
'camelcase': [0, {
|
||||
'properties': 'always'
|
||||
}],
|
||||
'comma-dangle': [2, 'never'],
|
||||
'comma-spacing': [2, {
|
||||
'before': false,
|
||||
'after': true
|
||||
}],
|
||||
'comma-style': [2, 'last'],
|
||||
'constructor-super': 2,
|
||||
'curly': [2, 'multi-line'],
|
||||
'dot-location': [2, 'property'],
|
||||
'eol-last': 2,
|
||||
'eqeqeq': ["error", "always", {"null": "ignore"}],
|
||||
'generator-star-spacing': [2, {
|
||||
'before': true,
|
||||
'after': true
|
||||
}],
|
||||
'handle-callback-err': [2, '^(err|error)$'],
|
||||
'indent': [2, 2, {
|
||||
'SwitchCase': 1
|
||||
}],
|
||||
'jsx-quotes': [2, 'prefer-single'],
|
||||
'key-spacing': [2, {
|
||||
'beforeColon': false,
|
||||
'afterColon': true
|
||||
}],
|
||||
'keyword-spacing': [2, {
|
||||
'before': true,
|
||||
'after': true
|
||||
}],
|
||||
'new-cap': [2, {
|
||||
'newIsCap': true,
|
||||
'capIsNew': false
|
||||
}],
|
||||
'new-parens': 2,
|
||||
'no-array-constructor': 2,
|
||||
'no-caller': 2,
|
||||
'no-console': 'off',
|
||||
'no-class-assign': 2,
|
||||
'no-cond-assign': 2,
|
||||
'no-const-assign': 2,
|
||||
'no-control-regex': 0,
|
||||
'no-delete-var': 2,
|
||||
'no-dupe-args': 2,
|
||||
'no-dupe-class-members': 2,
|
||||
'no-dupe-keys': 2,
|
||||
'no-duplicate-case': 2,
|
||||
'no-empty-character-class': 2,
|
||||
'no-empty-pattern': 2,
|
||||
'no-eval': 2,
|
||||
'no-ex-assign': 2,
|
||||
'no-extend-native': 2,
|
||||
'no-extra-bind': 2,
|
||||
'no-extra-boolean-cast': 2,
|
||||
'no-extra-parens': [2, 'functions'],
|
||||
'no-fallthrough': 2,
|
||||
'no-floating-decimal': 2,
|
||||
'no-func-assign': 2,
|
||||
'no-implied-eval': 2,
|
||||
'no-inner-declarations': [2, 'functions'],
|
||||
'no-invalid-regexp': 2,
|
||||
'no-irregular-whitespace': 2,
|
||||
'no-iterator': 2,
|
||||
'no-label-var': 2,
|
||||
'no-labels': [2, {
|
||||
'allowLoop': false,
|
||||
'allowSwitch': false
|
||||
}],
|
||||
'no-lone-blocks': 2,
|
||||
'no-mixed-spaces-and-tabs': 2,
|
||||
'no-multi-spaces': 2,
|
||||
'no-multi-str': 2,
|
||||
'no-multiple-empty-lines': [2, {
|
||||
'max': 1
|
||||
}],
|
||||
'no-native-reassign': 2,
|
||||
'no-negated-in-lhs': 2,
|
||||
'no-new-object': 2,
|
||||
'no-new-require': 2,
|
||||
'no-new-symbol': 2,
|
||||
'no-new-wrappers': 2,
|
||||
'no-obj-calls': 2,
|
||||
'no-octal': 2,
|
||||
'no-octal-escape': 2,
|
||||
'no-path-concat': 2,
|
||||
'no-proto': 2,
|
||||
'no-redeclare': 2,
|
||||
'no-regex-spaces': 2,
|
||||
'no-return-assign': [2, 'except-parens'],
|
||||
'no-self-assign': 2,
|
||||
'no-self-compare': 2,
|
||||
'no-sequences': 2,
|
||||
'no-shadow-restricted-names': 2,
|
||||
'no-spaced-func': 2,
|
||||
'no-sparse-arrays': 2,
|
||||
'no-this-before-super': 2,
|
||||
'no-throw-literal': 2,
|
||||
'no-trailing-spaces': 2,
|
||||
'no-undef': 2,
|
||||
'no-undef-init': 2,
|
||||
'no-unexpected-multiline': 2,
|
||||
'no-unmodified-loop-condition': 2,
|
||||
'no-unneeded-ternary': [2, {
|
||||
'defaultAssignment': false
|
||||
}],
|
||||
'no-unreachable': 2,
|
||||
'no-unsafe-finally': 2,
|
||||
'no-unused-vars': [2, {
|
||||
'vars': 'all',
|
||||
'args': 'none'
|
||||
}],
|
||||
'no-useless-call': 2,
|
||||
'no-useless-computed-key': 2,
|
||||
'no-useless-constructor': 2,
|
||||
'no-useless-escape': 0,
|
||||
'no-whitespace-before-property': 2,
|
||||
'no-with': 2,
|
||||
'one-var': [2, {
|
||||
'initialized': 'never'
|
||||
}],
|
||||
'operator-linebreak': [2, 'after', {
|
||||
'overrides': {
|
||||
'?': 'before',
|
||||
':': 'before'
|
||||
}
|
||||
}],
|
||||
'padded-blocks': [2, 'never'],
|
||||
'quotes': [2, 'single', {
|
||||
'avoidEscape': true,
|
||||
'allowTemplateLiterals': true
|
||||
}],
|
||||
'semi': [2, 'never'],
|
||||
'semi-spacing': [2, {
|
||||
'before': false,
|
||||
'after': true
|
||||
}],
|
||||
'space-before-blocks': [2, 'always'],
|
||||
'space-before-function-paren': [2, 'never'],
|
||||
'space-in-parens': [2, 'never'],
|
||||
'space-infix-ops': 2,
|
||||
'space-unary-ops': [2, {
|
||||
'words': true,
|
||||
'nonwords': false
|
||||
}],
|
||||
'spaced-comment': [2, 'always', {
|
||||
'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']
|
||||
}],
|
||||
'template-curly-spacing': [2, 'never'],
|
||||
'use-isnan': 2,
|
||||
'valid-typeof': 2,
|
||||
'wrap-iife': [2, 'any'],
|
||||
'yield-star-spacing': [2, 'both'],
|
||||
'yoda': [2, 'never'],
|
||||
'prefer-const': 2,
|
||||
'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,
|
||||
'object-curly-spacing': [2, 'always', {
|
||||
objectsInObjects: false
|
||||
}],
|
||||
'array-bracket-spacing': [2, 'never']
|
||||
}
|
||||
}
|
@ -1,11 +1,22 @@
|
||||
# ---> Vue
|
||||
# gitignore template for Vue.js projects
|
||||
#
|
||||
# Recommended template: Node.gitignore
|
||||
|
||||
# TODO: where does this rule come from?
|
||||
docs/_book
|
||||
|
||||
# TODO: where does this rule come from?
|
||||
test/
|
||||
.DS_Store
|
||||
node_modules
|
||||
dist
|
||||
dist.zip
|
||||
# local env files
|
||||
.env.local
|
||||
.env.*.local
|
||||
package-lock.json
|
||||
# Log files
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
|
||||
# Editor directories and files
|
||||
.idea
|
||||
.vscode
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
|
@ -1,3 +1,24 @@
|
||||
# fu-hsi-web
|
||||
|
||||
伏羲大模型前端地址
|
||||
## Project setup
|
||||
```
|
||||
npm install
|
||||
```
|
||||
|
||||
### Compiles and hot-reloads for development
|
||||
```
|
||||
npm run serve
|
||||
```
|
||||
|
||||
### Compiles and minifies for production
|
||||
```
|
||||
npm run build
|
||||
```
|
||||
|
||||
### Lints and fixes files
|
||||
```
|
||||
npm run lint
|
||||
```
|
||||
|
||||
### Customize configuration
|
||||
See [Configuration Reference](https://cli.vuejs.org/config/).
|
||||
|
@ -0,0 +1,5 @@
|
||||
module.exports = {
|
||||
presets: [
|
||||
'@vue/cli-plugin-babel/preset'
|
||||
]
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
{
|
||||
"compilerOptions": {
|
||||
"target": "es5",
|
||||
"module": "esnext",
|
||||
"baseUrl": "./",
|
||||
"moduleResolution": "node",
|
||||
"paths": {
|
||||
"@/*": [
|
||||
"src/*"
|
||||
]
|
||||
},
|
||||
"lib": [
|
||||
"esnext",
|
||||
"dom",
|
||||
"dom.iterable",
|
||||
"scripthost"
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,85 @@
|
||||
{
|
||||
"name": "fu-hsi-web",
|
||||
"version": "0.1.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"serve": "vue-cli-service serve",
|
||||
"build": "vue-cli-service build",
|
||||
"lint": "vue-cli-service lint"
|
||||
},
|
||||
"dependencies": {
|
||||
"@riophae/vue-treeselect": "0.4.0",
|
||||
"@vue/composition-api": "1.7.1",
|
||||
"axios": "1.6.0",
|
||||
"core-js": "3.30.1",
|
||||
"countup.js": "^2.8.0",
|
||||
"crypto-js": "4.2.0",
|
||||
"docx-preview": "^0.3.2",
|
||||
"echarts": "5.4.2",
|
||||
"element-ui": "2.15.13",
|
||||
"exceljs": "4.3.0",
|
||||
"file-saver": "2.0.5",
|
||||
"js-md5": "0.7.3",
|
||||
"jszip": "3.10.1",
|
||||
"moment": "2.29.4",
|
||||
"node-polyfill-webpack-plugin": "2.0.1",
|
||||
"nprogress": "0.2.0",
|
||||
"qs": "6.11.1",
|
||||
"screenfull": "6.0.2",
|
||||
"vue": "2.6.14",
|
||||
"vue-avatar": "2.3.3",
|
||||
"vue-countup-v2": "^4.0.0",
|
||||
"vue-echarts": "6.5.5",
|
||||
"vue-router": "3.6.5",
|
||||
"vuedraggable": "2.24.3",
|
||||
"vuex": "3.6.2",
|
||||
"vxe-table": "3.6.13",
|
||||
"vxe-table-plugin-element": "3.0.6",
|
||||
"vxe-table-plugin-export-xlsx": "2.2.2",
|
||||
"xe-utils": "3.5.7",
|
||||
"xgplayer": "^3.0.18",
|
||||
"xlsx": "^0.18.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@babel/core": "7.21.4",
|
||||
"@babel/eslint-parser": "7.21.3",
|
||||
"@vue/cli-plugin-babel": "5.0.8",
|
||||
"@vue/cli-plugin-eslint": "5.0.8",
|
||||
"@vue/cli-plugin-vuex": "5.0.8",
|
||||
"@vue/cli-service": "5.0.8",
|
||||
"@vue/eslint-config-standard": "6.1.0",
|
||||
"ace-builds": "^1.17.0",
|
||||
"babel-eslint": "10.1.0",
|
||||
"compression-webpack-plugin": "10.0.0",
|
||||
"dayjs": "1.11.7",
|
||||
"eslint": "6.8.0",
|
||||
"eslint-plugin-vue": "6.2.2",
|
||||
"image-webpack-loader": "^8.1.0",
|
||||
"lodash": "4.17.21",
|
||||
"sass": "1.62.0",
|
||||
"sass-loader": "12.6.0",
|
||||
"svg-sprite-loader": "6.0.11",
|
||||
"vue-template-compiler": "2.6.14",
|
||||
"webpack-cli": "5.0.2",
|
||||
"webpackbar": "5.0.2"
|
||||
},
|
||||
"eslintConfig": {
|
||||
"root": true,
|
||||
"env": {
|
||||
"node": true
|
||||
},
|
||||
"extends": [
|
||||
"plugin:vue/essential",
|
||||
"eslint:recommended"
|
||||
],
|
||||
"parserOptions": {
|
||||
"parser": "babel-eslint"
|
||||
},
|
||||
"rules": {}
|
||||
},
|
||||
"browserslist": [
|
||||
"> 1%",
|
||||
"last 2 versions",
|
||||
"not dead"
|
||||
]
|
||||
}
|
After Width: | Height: | Size: 2.1 KiB |
@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
|
||||
<meta name="referrer" content="no-referrer" />
|
||||
<link rel="icon" href="<%= BASE_URL %>favicon.ico" />
|
||||
<title><%= htmlWebpackPlugin.options.title %></title>
|
||||
</head>
|
||||
<body>
|
||||
<noscript>
|
||||
<strong
|
||||
>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work
|
||||
properly without JavaScript enabled. Please enable it to
|
||||
continue.</strong
|
||||
>
|
||||
</noscript>
|
||||
<div id="app"></div>
|
||||
<!-- built files will be auto injected -->
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,32 @@
|
||||
/**
|
||||
* @description: 原子指标相关接口
|
||||
* @fileName: index
|
||||
* @author: 17076
|
||||
* @date: 2024/7/5-下午7:25
|
||||
* @version: V1.0.0
|
||||
**/
|
||||
import request from '@/utils/request'
|
||||
import routes from '../gateway-routes'
|
||||
/** 查看原子指标列表 */
|
||||
export function queryAtomicIndex(data, page, size) {
|
||||
return request({
|
||||
url: `${routes.modelIndex}/selectAllAtomic?page=${page}&size=${size}`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/** 删除原子指标 */
|
||||
export function delAtomicIndex(id) {
|
||||
return request({
|
||||
url: `${routes.modelIndex}/delAtomic?id=${id}`,
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
/** 新增/编辑原子指标 */
|
||||
export function addOrUpdAtomicIndex(data) {
|
||||
return request({
|
||||
url: `${routes.modelIndex}/addOrUpdAtomic`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
@ -0,0 +1,50 @@
|
||||
/**
|
||||
* @description:
|
||||
* @fileName: menu
|
||||
* @author: xsz
|
||||
* @date: 2022/9/30-10:36
|
||||
* @version: V1.0.0
|
||||
**/
|
||||
import request from '@/utils/request'
|
||||
import routes from '../gateway-routes'
|
||||
// 查询菜单列表
|
||||
export function getSysMenu(data) {
|
||||
return request({
|
||||
url: `${routes.auth}/sysMenu`,
|
||||
method: 'get',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
// 添加菜单信息
|
||||
export function addSysMenu(data) {
|
||||
return request({
|
||||
url: `${routes.auth}/sysMenu`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
// 修改菜单信息
|
||||
export function chgSysMenu(data) {
|
||||
return request({
|
||||
url: `${routes.auth}/sysMenu/upd`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
// 查询菜单列表(id,title)
|
||||
export function getSysMenuOption() {
|
||||
return request({
|
||||
url: `${routes.auth}/sysMenu/option`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
// 删除菜单
|
||||
export function delSysMenu(data) {
|
||||
return request({
|
||||
url: `${routes.auth}/sysMenu/del`,
|
||||
method: 'post',
|
||||
params: data
|
||||
})
|
||||
}
|
@ -0,0 +1,49 @@
|
||||
/**
|
||||
* @description: 角色相关接口
|
||||
* @fileName: user
|
||||
* @author: xsz
|
||||
* @date: 2022/9/20-13:46
|
||||
* @version: V1.0.0
|
||||
**/
|
||||
import request from '@/utils/request'
|
||||
import routes from '../gateway-routes'
|
||||
/**
|
||||
* 查询角色列表
|
||||
*/
|
||||
export function getRoleList(params) {
|
||||
return request({
|
||||
url: `${routes.auth}/sysRole`,
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 查询角色option
|
||||
*/
|
||||
export function getRoleOption() {
|
||||
return request({
|
||||
url: `${routes.auth}/sysRole/option`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 修改-新增角色信息
|
||||
*/
|
||||
export function putAddRoleInfo(data) {
|
||||
return request({
|
||||
url: `${routes.auth}/sysRole/save`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/**
|
||||
* 删除角色
|
||||
*/
|
||||
export function delRole(id) {
|
||||
return request({
|
||||
url: `${routes.auth}/sysRole/del`,
|
||||
method: 'post',
|
||||
params: { id: id }
|
||||
})
|
||||
}
|
||||
|
@ -0,0 +1,26 @@
|
||||
/**
|
||||
* @description: 单位相关
|
||||
* @fileName: unit
|
||||
* @author: luhuixu
|
||||
* @date: 2023/6/6-13:10
|
||||
* @version: V1.0.0
|
||||
**/
|
||||
import request from '@/utils/request'
|
||||
import routes from '@/api/gateway-routes'
|
||||
|
||||
/** 查询单位树 */
|
||||
export function getUnitInfoTree() {
|
||||
return request({
|
||||
url: `${routes.auth}/unitInfo/getUnitInfoTree`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
/** 查询一个单位的子级单位 */
|
||||
export function queryChildrenUnit(unitId) {
|
||||
return request({
|
||||
url: `${routes.auth}/unitInfo/queryChildrenUnit`,
|
||||
method: 'get',
|
||||
params: { unitId }
|
||||
})
|
||||
}
|
@ -0,0 +1,97 @@
|
||||
/**
|
||||
* @description: 用户相关接口
|
||||
* @fileName: user
|
||||
* @author: xsz
|
||||
* @date: 2022/9/20-13:46
|
||||
* @version: V1.0.0
|
||||
**/
|
||||
|
||||
import request from '@/utils/request'
|
||||
import routes from '../gateway-routes'
|
||||
/** 获取验证码 */
|
||||
export function getVerifyCode() {
|
||||
return request({
|
||||
url: `${routes.auth}/api/user/verifyCode`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
/** 登录接口 */
|
||||
export function login(data) {
|
||||
return request({
|
||||
url: `${routes.auth}/api/user/admin/login`,
|
||||
method: 'post',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
/** 管理员用户修改密码 */
|
||||
export function changePassword(params) {
|
||||
return request({
|
||||
url: `${routes.auth}/api/user/admin/pass`,
|
||||
method: 'post',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
/** 管理员用户修改个人信息 */
|
||||
export function changeSelfInfo(data) {
|
||||
return request({
|
||||
url: `${routes.auth}/api/user/updateSelfInfo`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/** 登录后获取登录用户信息 */
|
||||
export function getUserInfo() {
|
||||
return request({
|
||||
url: `${routes.auth}/api/user/admin/info`,
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
/** 获取权限菜单 */
|
||||
export function getRouterList() {
|
||||
return request({
|
||||
url: `${routes.auth}/api/user/admin/menu`,
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
/** 重置密码 */
|
||||
export function resetPass(data) {
|
||||
return request({
|
||||
url: `${routes.auth}/adminInfo/resetPass`,
|
||||
method: 'post',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
/** 检查邮件验证码是否正确 */
|
||||
|
||||
export function checkVerificationCode(params) {
|
||||
return request({
|
||||
url: `${routes.auth}/api/user/checkVerificationCode`,
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
}
|
||||
/** 发送找回密码邮件 */
|
||||
|
||||
export function sendMail(params) {
|
||||
return request({
|
||||
url: `${routes.auth}/api/user/sendMail`,
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 字典相关
|
||||
* */
|
||||
|
||||
export function queryByType(data) {
|
||||
return request({
|
||||
url: `${routes.auth}/comDictionary/queryByType`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
@ -0,0 +1,100 @@
|
||||
/**
|
||||
* @description: 案件详情
|
||||
* @fileName: index
|
||||
* @author: 17076
|
||||
* @date: 2024/7/1-下午5:06
|
||||
* @version: V1.0.0
|
||||
**/
|
||||
import request from '@/utils/request'
|
||||
import routes from '../gateway-routes'
|
||||
import axios from 'axios'
|
||||
import { baseURL, requestTimeout } from '@/config/net.config'
|
||||
/** 获取模型分析笔录信息 */
|
||||
export function queryTripletInfo(data) {
|
||||
return request({
|
||||
url: `${routes.record}/getThreeInfo`,
|
||||
method: 'get',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
/** 保存入库 */
|
||||
export function saveTripletInfo(data) {
|
||||
return request({
|
||||
url: `${routes.record}/addNeo4j`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/** 查询图谱信息 */
|
||||
export function queryAtlasInfo(data) {
|
||||
return request({
|
||||
url: `${routes.neo4j}/getNode`,
|
||||
method: 'get',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
/** 获取人员列表 */
|
||||
export function queryUserList(data) {
|
||||
return request({
|
||||
url: `${routes.modelCase}/getPerson`,
|
||||
method: 'get',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
/** 新增人员 */
|
||||
export function addUser(data) {
|
||||
return request({
|
||||
url: `${routes.modelCase}/addPerson`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/** 上传笔录 */
|
||||
export function addOrUpdRecords(formData) {
|
||||
return axios.request({
|
||||
baseURL,
|
||||
timeout: requestTimeout,
|
||||
url: `${routes.record}/addOrUpdRecords`,
|
||||
method: 'post',
|
||||
headers: {
|
||||
'Content-Type': 'multipart/form-data'
|
||||
},
|
||||
data: formData
|
||||
}).then(response => {
|
||||
return Promise.resolve(response.data)
|
||||
}).catch(error => {
|
||||
return Promise.reject(error)
|
||||
})
|
||||
}
|
||||
/** 删除笔录 */
|
||||
export function delRecords(id) {
|
||||
return request({
|
||||
url: `${routes.record}/delRecords?id=${id}`,
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
|
||||
/** 获取上传笔录列表 */
|
||||
export function queryRecordList(data, page, size) {
|
||||
return request({
|
||||
url: `${routes.record}/queryRecords?page=${page}&size=${size}`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/** 查询案件详情 */
|
||||
export function queryCaseDetails(data) {
|
||||
return request({
|
||||
url: `${routes.record}/queryCaseDetails`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/** 获取案件指标详情 */
|
||||
export function queryIndexDetail(data, page, size) {
|
||||
return request({
|
||||
url: `${routes.modelCase}/getIndexDetail?page=${page}&size=${size}`,
|
||||
method: 'post',
|
||||
params: data
|
||||
})
|
||||
}
|
@ -0,0 +1,67 @@
|
||||
/**
|
||||
* @description: 案件管理相关
|
||||
* @fileName: index
|
||||
* @author: 17076
|
||||
* @date: 2024/7/2-下午4:46
|
||||
* @version: V1.0.0
|
||||
**/
|
||||
import request from '@/utils/request'
|
||||
import routes from '../gateway-routes'
|
||||
import axios from 'axios'
|
||||
import { baseURL, requestTimeout } from '@/config/net.config'
|
||||
/** 查询案件列表 */
|
||||
export function queryCaseList(data, page, size) {
|
||||
return request({
|
||||
url: `${routes.modelCase}/queryList?page=${page}&size=${size}`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/** 新增案件信息 */
|
||||
export function addCaseInfo(data) {
|
||||
return request({
|
||||
url: `${routes.modelCase}/addOrUpd`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/** 删除案件信息 */
|
||||
export function delCaseInfo(id) {
|
||||
return request({
|
||||
url: `${routes.modelCase}/del?id=${id}`,
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
/** 检验案件编号是否存在 */
|
||||
export function checkCaseNo(data) {
|
||||
return request({
|
||||
url: `${routes.modelCase}/checkCaseNo`,
|
||||
method: 'get',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
/** 导入案件 */
|
||||
export function uploadCase(data) {
|
||||
return axios.request({
|
||||
baseURL,
|
||||
timeout: requestTimeout,
|
||||
url: `${routes.modelCase}/uploadCase`,
|
||||
method: 'post',
|
||||
headers: {
|
||||
'Content-Type': 'multipart/form-data'
|
||||
},
|
||||
data
|
||||
}).then(response => {
|
||||
return Promise.resolve(response.data)
|
||||
}).catch(error => {
|
||||
return Promise.reject(error)
|
||||
})
|
||||
}
|
||||
/** 执行模型分析 */
|
||||
export function executeModelAnalyse(data) {
|
||||
return request({
|
||||
url: `${routes.model}/analyseCase`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
@ -0,0 +1,24 @@
|
||||
/**
|
||||
* @Description:各类文件上传地址
|
||||
* @fileName: upload
|
||||
* @Author:WXM
|
||||
* @Date: 2023/05/10 10:53:54
|
||||
*/
|
||||
import routes from '../gateway-routes'
|
||||
import request from '@/utils/request'
|
||||
/**
|
||||
* 各类文件上传地址
|
||||
*/
|
||||
|
||||
/** 下载文件 */
|
||||
export const commonDownloadFile = `${routes.minio}/downloadFile?fileId=`
|
||||
/** 删除文件 */
|
||||
export const commonDeleteFile = `${routes.minio}/delFile?fileId=`
|
||||
|
||||
/** 删除文件 */
|
||||
export function deleteFile(id) {
|
||||
return request({
|
||||
url: `${commonDeleteFile}${id}`,
|
||||
method: 'post'
|
||||
})
|
||||
}
|
@ -0,0 +1,17 @@
|
||||
/**
|
||||
* @description:
|
||||
* @fileName: getway
|
||||
* @author: luhuixu
|
||||
* @date: 2023/4/24-14:27
|
||||
* @version: V1.0.0
|
||||
**/
|
||||
export default {
|
||||
auth: '/auth',
|
||||
minio: '/minio',
|
||||
comDictionary: '/comDictionary',
|
||||
model: '/model',
|
||||
modelCase: '/modelCase',
|
||||
modelIndex: '/modelIndex',
|
||||
record: '/record',
|
||||
neo4j: '/neo4j'
|
||||
}
|
@ -0,0 +1,18 @@
|
||||
/**
|
||||
* @description: 首页相关
|
||||
* @fileName: index
|
||||
* @author: luhuixu
|
||||
* @date: 2023/6/27-09:17
|
||||
* @version: V1.0.0
|
||||
**/
|
||||
import request from '@/utils/request'
|
||||
import routes from '@/api/gateway-routes'
|
||||
|
||||
/** 查询首页数据 */
|
||||
export function queryHome(data) {
|
||||
return request({
|
||||
url: `${routes.auth}/home/home`,
|
||||
method: 'get',
|
||||
params: data
|
||||
})
|
||||
}
|
@ -0,0 +1,32 @@
|
||||
/**
|
||||
* @description: 指标规则相关
|
||||
* @fileName: index
|
||||
* @author: 17076
|
||||
* @date: 2024/7/5-上午9:44
|
||||
* @version: V1.0.0
|
||||
**/
|
||||
import request from '@/utils/request'
|
||||
import routes from '../gateway-routes'
|
||||
/** 查看指标规则列表 */
|
||||
export function queryIndexData(data, page, size) {
|
||||
return request({
|
||||
url: `${routes.modelIndex}/selectAll?page=${page}&size=${size}`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/** 删除指标规则 */
|
||||
export function deleteModelIndex(id) {
|
||||
return request({
|
||||
url: `${routes.modelIndex}/del?id=${id}`,
|
||||
method: 'post'
|
||||
})
|
||||
}
|
||||
/** 新增/编辑指标 */
|
||||
export function addOrUpdIndex(data) {
|
||||
return request({
|
||||
url: `${routes.modelIndex}/addOrUpd`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
/**
|
||||
* @description: 提示词模板设置相关接口
|
||||
* @fileName: index
|
||||
* @author: 17076
|
||||
* @date: 2024/6/24-上午9:24
|
||||
* @version: V1.0.0
|
||||
**/
|
||||
import request from '@/utils/request'
|
||||
import routes from '../gateway-routes'
|
||||
/** 获取分类列表 */
|
||||
export function getChunkClassify(data) {
|
||||
return request({
|
||||
url: `${routes.record}/queryType`,
|
||||
method: 'get',
|
||||
data
|
||||
})
|
||||
}
|
||||
/** 保存分类列表 */
|
||||
export function saveChunkClassify(data) {
|
||||
return request({
|
||||
url: `${routes.record}/saveType`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/** 保存提示词 */
|
||||
export function addOrUpdPrompt(data) {
|
||||
return request({
|
||||
url: `${routes.record}/addOrUpdPrompt`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/** 删除提示词 */
|
||||
export function delPrompt(data) {
|
||||
return request({
|
||||
url: `${routes.record}/delPrompt`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
@ -0,0 +1,112 @@
|
||||
/**
|
||||
* @description: 组管理
|
||||
* @fileName: group
|
||||
* @author: xsz
|
||||
* @date: 2023/2/9-13:04
|
||||
* @version: V1.0.0
|
||||
**/
|
||||
import request from '@/utils/request'
|
||||
import routes from '../gateway-routes'
|
||||
|
||||
/** 查询单位管理表 */
|
||||
export function getGroupList(page, size, params) {
|
||||
return request({
|
||||
url: `${routes.auth}/unitInfo/getUnitInfo?page=${page}&size=${size}`,
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
/** 查询单位树 */
|
||||
export function findAdminInfoList() {
|
||||
return request({
|
||||
url: `${routes.auth}/unitInfo/findAdminInfoList`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
/** 查询单位树 */
|
||||
export function getGroupTree() {
|
||||
return request({
|
||||
url: `${routes.auth}/unitInfo/getUnitInfoTree`,
|
||||
method: 'get'
|
||||
})
|
||||
}
|
||||
|
||||
/** 根据组id查询组成员 */
|
||||
export function findAdminInfoByUnit(params) {
|
||||
return request({
|
||||
url: `${routes.auth}/unitInfo/findAdminInfoByUnit`,
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
/** 查询一个单位的子级单位 */
|
||||
export function getChildrenGroup(params) {
|
||||
return request({
|
||||
url: `${routes.auth}/unitInfo/queryChildrenUnit`,
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
/** 查询一个单位的子级单位 */
|
||||
export function getChildrenGroups(params) {
|
||||
return request({
|
||||
url: `${routes.auth}/unitInfo/queryChildrenUnit`,
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
/** 根据id新增或修改单位管理*/
|
||||
export function changeGroupInfo(data) {
|
||||
return request({
|
||||
url: `${routes.auth}/unitInfo/saveUnit`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/** 添加小组成员*/
|
||||
export function addGroupUser(data) {
|
||||
return request({
|
||||
url: `${routes.auth}/unitInfo/moveAdd`,
|
||||
method: 'post',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
/** 删除小组成员*/
|
||||
export function delGroupUser(data) {
|
||||
return request({
|
||||
url: `${routes.auth}/unitInfo/moveDelete`,
|
||||
method: 'post',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
/** 根据id新增或修改单位管理*/
|
||||
export function addGroupInfo(data) {
|
||||
return request({
|
||||
url: `${routes.auth}/unitInfo/saveUnit`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/** 删除单位管理表表中信息*/
|
||||
export function deleteGroupInfo(params) {
|
||||
return request({
|
||||
url: `${routes.auth}/unitInfo/deleteUnit`,
|
||||
method: 'post',
|
||||
params
|
||||
})
|
||||
}
|
||||
/** 查询考点*/
|
||||
export function selectUnit(params) {
|
||||
return request({
|
||||
url: `${routes.auth}/unitInfo/selectUnit`,
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
@ -0,0 +1,159 @@
|
||||
/**
|
||||
* @description: 用户管理
|
||||
* @fileName: index
|
||||
* @author: xsz
|
||||
* @date: 2023/2/9-13:04
|
||||
* @version: V1.0.0
|
||||
**/
|
||||
import request from '@/utils/request'
|
||||
import routes from '../gateway-routes'
|
||||
|
||||
/** 查询管理员列表 三级阅卷人 */
|
||||
export function getAdminInfo(page, size, params) {
|
||||
return request({
|
||||
url: `${routes.auth}/adminInfo/select?page=${page}&size=${size}`,
|
||||
method: 'get',
|
||||
params
|
||||
})
|
||||
}
|
||||
|
||||
/** 创建账号*/
|
||||
export function createAccount(data) {
|
||||
return request({
|
||||
url: `${routes.auth}/adminInfo/createAccounts`,
|
||||
method: 'post',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
/** 新增考生账户*/
|
||||
export function saveExaminee(data) {
|
||||
return request({
|
||||
url: `${routes.auth}/adminInfo/saveExaminee`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/** 批量导入考生账号*/
|
||||
export function importExaminee(data) {
|
||||
return request({
|
||||
url: `${routes.auth}/adminInfo/upload/excel`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/** 修改-新增管理员信息*/
|
||||
export function changeAdminInfo(data) {
|
||||
return request({
|
||||
url: `${routes.auth}/adminInfo/save`,
|
||||
method: 'post',
|
||||
data: data
|
||||
})
|
||||
}
|
||||
|
||||
/** 删除管理员*/
|
||||
export function deleteAdminInfo(id) {
|
||||
return request({
|
||||
url: `${routes.auth}/adminInfo/del`,
|
||||
method: 'post',
|
||||
params: { id: id }
|
||||
})
|
||||
}
|
||||
|
||||
/** 导入用户文件 */
|
||||
export function importUser(data) {
|
||||
return request({
|
||||
url: `${routes.auth}/adminInfo/import`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/** 导出用户文件 */
|
||||
export function exportUser(data) {
|
||||
return request({
|
||||
url: `${routes.auth}/adminInfo/exportAdminList`,
|
||||
method: 'post',
|
||||
responseType: 'blob',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
/** 获取操作日志数据*/
|
||||
export function querySystemLog(data, page, size) {
|
||||
return request({
|
||||
url: `${routes.auth}/sysLog/find?page=${page}&size=${size}`,
|
||||
method: 'get',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
/** 考生登录记录导出 */
|
||||
export function exportLastLogin(data) {
|
||||
return request({
|
||||
url: `${routes.auth}/sysLog/exportLastLogin`,
|
||||
method: 'get',
|
||||
responseType: 'blob',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
/** 获取字典数据*/
|
||||
export function queryDictionary(data) {
|
||||
return request({
|
||||
url: `${routes.comDictionary}/queryByType`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/** 删除字典数据*/
|
||||
export function deleteDictionary(data) {
|
||||
return request({
|
||||
url: `${routes.comDictionary}/del`,
|
||||
method: 'post',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
/** 新增字典数据*/
|
||||
export function addDictionary(data) {
|
||||
return request({
|
||||
url: `${routes.comDictionary}/add`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/** 修改字典数据*/
|
||||
export function updateDictionary(data) {
|
||||
return request({
|
||||
url: `${routes.comDictionary}/upd`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
/** 查询个人信息*/
|
||||
export function queryExamineeInfo(data) {
|
||||
return request({
|
||||
url: `${routes.csexam}/info/query`,
|
||||
method: 'get',
|
||||
params: data
|
||||
})
|
||||
}
|
||||
|
||||
/** 导入鉴定点要素 */
|
||||
export function importChapter(data) {
|
||||
return request({
|
||||
url: `${routes.csexam}/qbChapter/importChapter`,
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
||||
/** 查询题库字典(无方法) */
|
||||
export function selectComExceptMethod(data) {
|
||||
return request({
|
||||
url: `${routes.auth}/comDictionary/selectComExceptMethod`,
|
||||
method: 'get',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
After Width: | Height: | Size: 2.7 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 7.2 KiB |
After Width: | Height: | Size: 842 B |
After Width: | Height: | Size: 2.8 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 64 KiB |
After Width: | Height: | Size: 77 KiB |
After Width: | Height: | Size: 609 B |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 382 KiB |
After Width: | Height: | Size: 817 B |
After Width: | Height: | Size: 11 KiB |
After Width: | Height: | Size: 801 B |
After Width: | Height: | Size: 146 KiB |
After Width: | Height: | Size: 70 KiB |
After Width: | Height: | Size: 2.0 KiB |
@ -0,0 +1,237 @@
|
||||
<?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>
|
||||
This is a custom SVG webfont generated by Font Squirrel.
|
||||
</metadata>
|
||||
<defs>
|
||||
<font id="webfontrOia6SZf" horiz-adv-x="743" >
|
||||
<font-face units-per-em="1000" ascent="800" descent="-200" />
|
||||
<missing-glyph horiz-adv-x="435" />
|
||||
<glyph unicode=" " horiz-adv-x="435" />
|
||||
<glyph unicode="	" horiz-adv-x="435" />
|
||||
<glyph unicode=" " horiz-adv-x="435" />
|
||||
<glyph unicode="!" horiz-adv-x="255" d="M194 212l-129 65v357l129 86v-508zM194 0h-129v155h129v-155z" />
|
||||
<glyph unicode=""" horiz-adv-x="429" d="M356 720l-30 -225h-95l30 225h95zM200 720l-30 -225h-95l30 225h95z" />
|
||||
<glyph unicode="#" horiz-adv-x="875" d="M801 491l-15 -45h-172l-54 -172h172l-15 -45h-172l-68 -213h-67l67 213h-162l-67 -213h-68l68 213h-173l15 45h173l54 172h-173l14 45h174l66 213h67l-66 -213h162l66 213h68l-66 -213h172zM546 446h-162l-54 -172h162z" />
|
||||
<glyph unicode="$" d="M441 736l-67 -41l-62 41v66l63 43l66 -40v-69zM618 720l-51 -86h-349l-62 44l62 42h84l73 -49l77 49h166zM680 101l-65 -43l-64 43v205l129 43v-248zM651 360l-121 -40h-314l-121 40l121 47h314zM194 421l-129 -50v248l64 43l65 -43v-198zM597 45l-63 -45h-78l-81 47 l-73 -47h-227l141 86h317zM441 -84l-64 -36l-66 41v68l64 35l66 -36v-72z" />
|
||||
<glyph unicode="%" horiz-adv-x="1362" d="M1085 720l-345 -379l-72 87l265 292h152zM1331 104l-66 -43l-63 43v169l61 44l68 -43v-170zM1244 329l-66 -47h-257l-66 46l66 41h258zM509 675l-65 -41h-258l-64 41l64 45h260zM596 451l-66 -44l-63 43v170l63 43l66 -42v-170zM902 103l-66 -43l-68 44v169l68 43l66 -43 v-170zM1244 45l-65 -45h-259l-65 45l66 41h257zM509 392l-65 -39h-258l-66 39l68 46h256zM167 450l-66 -43l-68 43v170l68 42l66 -43v-169zM722 320l-291 -320h-152l293 320h150z" />
|
||||
<glyph unicode="&" horiz-adv-x="861" d="M596 676l-66 -42h-314l-66 42l66 44h314zM686 420l-68 -47l-63 48v91l65 45l66 -45v-92zM896 360l-108 -40h-81l-66 39l69 48h61zM599 360l-66 -40h-111l-129 41l109 46h131zM684 100l-67 -41l-63 42v204l64 40l66 -41v-204zM194 421l-129 -50v248l64 43l65 -43v-198z M194 101l-65 -43l-64 43v248l129 -43v-205zM596 44l-66 -44h-314l-66 44l66 42h314z" />
|
||||
<glyph unicode="'" horiz-adv-x="273" d="M200 720l-30 -225h-95l30 225h95z" />
|
||||
<glyph unicode="(" horiz-adv-x="402" d="M383 720l-96 -86h-71l-66 42l66 44h167zM194 421l-129 -50v248l64 43l65 -43v-198zM194 101l-65 -43l-64 43v248l129 -43v-205zM383 0h-167l-66 44l66 42h71z" />
|
||||
<glyph unicode=")" horiz-adv-x="402" d="M255 676l-66 -42h-70l-98 86h168zM339 371l-129 43v205l65 43l64 -43v-248zM339 101l-64 -43l-65 43v198l129 50v-248zM255 44l-66 -44h-168l98 86h70z" />
|
||||
<glyph unicode="*" horiz-adv-x="600" d="M369 583l-66 -32l-66 34v130l66 33l66 -34v-131zM570 442l-66 -26l-186 69v51l62 24l180 -66zM284 486l-176 -70l-75 21l9 55l183 71l59 -29v-48z" />
|
||||
<glyph unicode="+" horiz-adv-x="744" d="M683 403l-59 -86h-166l-59 43l63 43h221zM435 418l-63 -44l-67 45v107l130 39v-147zM353 361l-69 -44h-221l60 86h162zM435 195l-129 -39v146l66 44l63 -44v-107z" />
|
||||
<glyph unicode="," horiz-adv-x="215" d="M183 155l-70 -249h-134l71 249h133z" />
|
||||
<glyph unicode="-" horiz-adv-x="513" d="M482 302l-87 -86h-362l87 86h362z" />
|
||||
<glyph unicode="." horiz-adv-x="194" d="M162 0h-129v155h129v-155z" />
|
||||
<glyph unicode="/" horiz-adv-x="870" d="M839 720l-345 -379l-74 87l266 292h153zM474 320l-289 -320h-152l291 320h150z" />
|
||||
<glyph unicode="0" d="M680 371l-129 50v198l64 43l65 -43v-248zM596 676l-66 -42h-314l-66 42l66 44h314zM680 101l-65 -43l-64 43v205l129 43v-248zM194 421l-129 -50v248l64 43l65 -43v-198zM194 101l-65 -43l-64 43v248l129 -43v-205zM596 44l-66 -44h-314l-66 44l66 42h314z" />
|
||||
<glyph unicode="1" d="M437 371l-129 50v213l129 86v-349zM437 0l-129 86v220l129 43v-349z" />
|
||||
<glyph unicode="2" d="M680 371l-129 50v198l64 43l65 -43v-248zM596 676l-66 -42h-465l151 86h314zM651 360l-121 -40h-314l-121 40l121 47h314zM680 0h-464l-66 44l66 42h341zM194 101l-65 -43l-64 43v248l129 -43v-205z" />
|
||||
<glyph unicode="3" d="M626 371l-129 50v198l64 43l65 -43v-248zM542 676l-66 -42h-314l-124 86h438zM626 101l-65 -43l-64 43v205l129 43v-248zM597 360l-121 -40h-314l-121 40l121 47h314zM542 44l-66 -44h-438l124 86h314z" />
|
||||
<glyph unicode="4" d="M680 371l-129 50v213l129 86v-349zM194 421l-129 -50v349l129 -86v-213zM651 360l-121 -40h-314l-121 40l121 47h314zM680 0l-129 86v220l129 43v-349z" />
|
||||
<glyph unicode="5" d="M653 720l-123 -86h-314l-66 42l66 44h437zM680 101l-65 -43l-64 43v205l129 43v-248zM651 360l-121 -40h-314l-121 40l121 47h314zM194 421l-129 -50v248l64 43l65 -43v-198zM596 44l-66 -44h-465l124 86h341z" />
|
||||
<glyph unicode="6" d="M653 720l-123 -86h-314l-66 42l66 44h437zM680 101l-65 -43l-64 43v205l129 43v-248zM651 360l-121 -40h-314l-121 40l121 47h314zM194 421l-129 -50v248l64 43l65 -43v-198zM194 101l-65 -43l-64 43v248l129 -43v-205zM596 44l-66 -44h-314l-66 44l66 42h314z" />
|
||||
<glyph unicode="7" d="M594 371l-129 50v198l129 87v-335zM573 720l-130 -86h-314l-129 86h573zM594 0l-129 86v220l129 43v-349z" />
|
||||
<glyph unicode="8" d="M680 371l-129 50v198l64 43l65 -43v-248zM596 676l-66 -42h-314l-66 42l66 44h314zM680 101l-65 -43l-64 43v205l129 43v-248zM651 360l-121 -40h-314l-121 40l121 47h314zM194 421l-129 -50v248l64 43l65 -43v-198zM194 101l-65 -43l-64 43v248l129 -43v-205zM596 44 l-66 -44h-314l-66 44l66 42h314z" />
|
||||
<glyph unicode="9" d="M680 371l-129 43v205l64 43l65 -43v-248zM596 676l-66 -42h-314l-66 42l66 44h314zM680 101l-65 -43l-64 43v198l129 50v-248zM651 360l-121 -40h-314l-121 40l121 47h314zM194 414l-129 -43v248l64 43l65 -43v-205zM596 44l-66 -44h-438l124 86h314z" />
|
||||
<glyph unicode=":" horiz-adv-x="204" d="M173 320h-129v148h129v-148zM173 0h-129v155h129v-155z" />
|
||||
<glyph unicode=";" horiz-adv-x="215" d="M177 320h-129v148h129v-148zM183 155l-70 -249h-134l71 249h133z" />
|
||||
<glyph unicode="<" horiz-adv-x="780" d="M707 122l-632 238l632 238v-71l-455 -167l455 -167v-71z" />
|
||||
<glyph unicode="=" d="M680 473l-63 -86h-552l63 86h552zM680 336l-63 -87h-552l63 87h552z" />
|
||||
<glyph unicode=">" horiz-adv-x="780" d="M707 360l-632 -238v71l455 167l-455 167v71z" />
|
||||
<glyph unicode="?" horiz-adv-x="627" d="M479 676l-66 -42h-314l-66 42l66 44h314zM564 371l-130 50v198l64 43l66 -43v-248zM534 362l-121 -42h-92l-130 87h222zM294 203h-129v190l129 -83v-107zM294 0h-130v155h130v-155z" />
|
||||
<glyph unicode="@" horiz-adv-x="1160" d="M830 145q-6 -1 -12 -1h-12q-58 0 -96 26q-33 22 -33 52q0 4 1 8q-16 -36 -61.5 -55t-98.5 -19q-75 0 -124 45q-55 51 -55 141q13 104 100 177q81 68 169 68q45 0 82 -16.5t51 -43.5l15 59h72l-67 -217l-16 -52q-9 -30 -9 -48q0 -28 17 -52q11 -15 27.5 -23.5t37.5 -8.5 q10 0 21 3q59 15 107 69q62 70 62 169q0 118 -107 189.5t-275 71.5q-176 0 -311 -92q-142 -97 -142 -234q0 -127 131.5 -229t303.5 -102q111 0 222 38t178 98l33 -31q-89 -75 -198.5 -111.5t-234.5 -36.5q-222 0 -371.5 106.5t-149.5 267.5q0 157 182 268q171 104 379 104 q188 0 307 -86t119 -217q0 -105 -75 -191t-169 -94zM708 426q6 26 6 44q0 46 -34 65q-25 14 -72 14q-57 0 -119 -72q-66 -77 -66 -165q0 -64 25 -92q22 -25 70 -25q50 0 79 17q36 21 71 84q6 14 24 75q5 19 16 55z" />
|
||||
<glyph unicode="A" d="M680 371l-129 50v198l129 87v-335zM659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM680 0l-129 86v220l129 43v-349zM194 86l-129 -86v349l129 -43v-220z" />
|
||||
<glyph unicode="B" d="M680 371l-129 50v198l64 43l65 -43v-248zM596 676l-66 -42h-314l-130 86h444zM194 421l-129 -50v335l129 -87v-198zM680 101l-65 -43l-64 43v205l129 43v-248zM651 360l-121 -40h-314l-121 40l121 47h314zM194 101l-129 -87v335l129 -43v-205zM596 44l-66 -44h-444 l130 86h314z" />
|
||||
<glyph unicode="C" horiz-adv-x="668" d="M659 720l-129 -86h-314l-66 42l66 44h443zM194 414l-129 -43v248l64 43l65 -43v-205zM659 0h-443l-66 44l66 42h314zM194 101l-65 -43l-64 43v248l129 -50v-198z" />
|
||||
<glyph unicode="D" d="M680 371l-129 50v198l64 43l65 -43v-248zM596 676l-66 -42h-314l-130 86h444zM194 421l-129 -50v335l129 -87v-198zM680 101l-65 -43l-64 43v205l129 43v-248zM194 101l-129 -87v335l129 -43v-205zM596 44l-66 -44h-444l130 86h314z" />
|
||||
<glyph unicode="E" horiz-adv-x="668" d="M659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM659 0h-573l130 86h314zM194 101l-129 -87v335l129 -43v-205z" />
|
||||
<glyph unicode="F" horiz-adv-x="657" d="M659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM194 86l-129 -86v349l129 -43v-220z" />
|
||||
<glyph unicode="G" d="M653 720l-123 -86h-314l-66 42l66 44h437zM651 360l-121 -40h-120l-122 40l122 47h120zM680 101l-65 -43l-64 43v205l129 43v-248zM194 421l-129 -50v248l64 43l65 -43v-198zM194 101l-65 -43l-64 43v248l129 -43v-205zM596 44l-66 -44h-314l-66 44l66 42h314z" />
|
||||
<glyph unicode="H" d="M680 371l-129 50v213l129 86v-349zM194 421l-129 -50v349l129 -86v-213zM651 360l-121 -40h-314l-121 40l121 47h314zM680 0l-129 86v220l129 43v-349zM194 86l-129 -86v349l129 -43v-220z" />
|
||||
<glyph unicode="I" horiz-adv-x="255" d="M194 371l-129 50v213l129 86v-349zM194 0l-129 86v220l129 43v-349z" />
|
||||
<glyph unicode="J" d="M680 371l-129 50v213l129 86v-349zM680 14l-129 87v205l129 43v-335zM659 0h-573l130 86h314zM194 101l-129 -87v335l129 -43v-205z" />
|
||||
<glyph unicode="K" d="M680 661l-368 -237h-91v62l364 234h95v-59zM194 421l-129 -50v349l129 -86v-213zM651 360l-121 -40h-314l-121 40l121 47h314zM680 0l-129 86v220l129 43v-349zM194 86l-129 -86v349l129 -43v-220z" />
|
||||
<glyph unicode="L" horiz-adv-x="720" d="M194 421l-129 -50v349l129 -86v-213zM680 14l-129 87v205l129 43v-335zM659 0h-573l130 86h314zM194 101l-129 -87v335l129 -43v-205z" />
|
||||
<glyph unicode="M" horiz-adv-x="1230" d="M1166 371l-129 50v198l129 86v-334zM1145 720l-131 -86h-313l-86 56l-85 -56h-317l-127 86h1059zM680 398l-65 -33l-64 33v223l64 44l65 -46v-221zM1166 0l-129 86v220l129 43v-349zM194 421l-129 -50v335l129 -87v-198zM680 72l-65 -72l-64 72v238l64 39l65 -39v-238z M194 86l-129 -86v349l129 -43v-220z" />
|
||||
<glyph unicode="N" d="M680 371l-129 50v198l129 87v-335zM659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM680 0l-129 86v220l129 43v-349zM194 86l-129 -86v349l129 -43v-220z" />
|
||||
<glyph unicode="O" d="M680 371l-129 50v198l64 43l65 -43v-248zM596 676l-66 -42h-314l-66 42l66 44h314zM680 101l-65 -43l-64 43v205l129 43v-248zM194 421l-129 -50v248l64 43l65 -43v-198zM194 101l-65 -43l-64 43v248l129 -43v-205zM596 44l-66 -44h-314l-66 44l66 42h314z" />
|
||||
<glyph unicode="P" d="M680 371l-129 50v198l64 43l65 -43v-248zM596 676l-66 -42h-314l-130 86h444zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM194 86l-129 -86v349l129 -43v-220z" />
|
||||
<glyph unicode="Q" horiz-adv-x="746" d="M680 371l-129 50v198l64 43l65 -43v-248zM596 676l-66 -42h-314l-66 42l66 44h314zM680 101l-65 -43l-64 43v205l129 43v-248zM194 421l-129 -50v248l64 43l65 -43v-198zM683 -128l-335 214h179l156 -98v-116zM194 101l-65 -43l-64 43v248l129 -43v-205zM441 0h-225 l-64 47l64 39h92z" />
|
||||
<glyph unicode="R" horiz-adv-x="746" d="M680 371l-129 50v198l64 43l65 -43v-248zM596 676l-66 -42h-314l-130 86h444zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM774 -1l-225 101l-156 206h146zM194 101l-129 -87v335l129 -43v-205z" />
|
||||
<glyph unicode="S" d="M680 720l-140 -86h-324l-66 42l66 44h464zM680 101l-65 -43l-64 43v205l129 43v-248zM651 360l-121 -40h-314l-121 40l121 47h314zM194 421l-129 -50v248l64 43l65 -43v-198zM596 44l-66 -44h-465l141 86h324z" />
|
||||
<glyph unicode="T" horiz-adv-x="615" d="M627 720l-103 -86h-140l-73 50l-78 -50h-141l-103 86h638zM374 404l-65 -42l-66 42v212l66 47l65 -47v-212zM374 47l-66 -47l-66 47v258l67 46l65 -46v-258z" />
|
||||
<glyph unicode="U" d="M680 371l-129 50v216l129 83v-349zM194 421l-129 -50v349l129 -83v-216zM680 101l-65 -43l-64 43v205l129 43v-248zM194 101l-65 -43l-64 43v248l129 -43v-205zM596 44l-66 -44h-314l-66 44l66 42h314z" />
|
||||
<glyph unicode="V" horiz-adv-x="746" d="M680 371l-129 50v198l129 87v-335zM194 421l-129 -50v335l129 -87v-198zM683 358l-293 -358v180l123 149zM357 -1l-292 360l169 -30l123 -149v-181z" />
|
||||
<glyph unicode="W" horiz-adv-x="1230" d="M1167 371l-130 43v220l130 86v-349zM681 410l-66 -39l-64 39v238l64 72l66 -72v-238zM1167 99l-61 -42l-68 42v200l129 53v-253zM195 414l-130 -43v349l130 -86v-220zM681 99l-64 -44l-66 46v221l64 33l66 -33v-223zM1083 43l-64 -43h-804l-63 41l64 45h314l85 -58l87 58 h315zM194 99l-65 -43l-64 43v253l129 -54v-199z" />
|
||||
<glyph unicode="X" horiz-adv-x="654" d="M623 649l-212 -279h-67v100l189 250h90v-71zM314 370h-68l-213 282v68h93l188 -250v-100zM623 0h-93l-186 248v102h67l212 -279v-71zM314 248l-189 -248h-92v73l213 277h68v-102z" />
|
||||
<glyph unicode="Y" d="M680 371l-129 50v213l129 86v-349zM194 421l-129 -50v349l129 -86v-213zM651 360l-121 -40h-314l-121 40l121 47h314zM441 50l-69 -50l-63 50v251h132v-251z" />
|
||||
<glyph unicode="Z" horiz-adv-x="633" d="M624 720l-231 -355l-84 91l174 264h141zM455 720l-56 -86h-235l-129 86h420zM384 350l-232 -350h-141l220 330zM599 0h-422l63 86h228z" />
|
||||
<glyph unicode="[" horiz-adv-x="398" d="M389 720l-129 -86h-44l-130 86h303zM194 421l-129 -50v335l129 -87v-198zM194 101l-129 -87v335l129 -43v-205zM389 0h-303l130 86h44z" />
|
||||
<glyph unicode="\" horiz-adv-x="432" d="M359 0h-95l-189 720h95z" />
|
||||
<glyph unicode="]" horiz-adv-x="398" d="M314 720l-131 -86h-43l-129 86h303zM335 371l-129 43v205l129 87v-335zM335 14l-129 87v198l129 50v-335zM314 0h-303l129 86h43z" />
|
||||
<glyph unicode="^" horiz-adv-x="863" d="M791 174h-108l-251 303l-249 -303h-108l357 421z" />
|
||||
<glyph unicode="_" horiz-adv-x="689" d="M615 -27h-540v27h540v-27z" />
|
||||
<glyph unicode="`" horiz-adv-x="237" d="M239 362h-141l-98 144h141z" />
|
||||
<glyph unicode="a" d="M680 371l-129 50v198l129 87v-335zM659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM680 0l-129 86v220l129 43v-349zM194 86l-129 -86v349l129 -43v-220z" />
|
||||
<glyph unicode="b" d="M680 371l-129 50v198l64 43l65 -43v-248zM596 676l-66 -42h-314l-130 86h444zM194 421l-129 -50v335l129 -87v-198zM680 101l-65 -43l-64 43v205l129 43v-248zM651 360l-121 -40h-314l-121 40l121 47h314zM194 101l-129 -87v335l129 -43v-205zM596 44l-66 -44h-444 l130 86h314z" />
|
||||
<glyph unicode="c" horiz-adv-x="668" d="M659 720l-129 -86h-314l-66 42l66 44h443zM194 414l-129 -43v248l64 43l65 -43v-205zM659 0h-443l-66 44l66 42h314zM194 101l-65 -43l-64 43v248l129 -50v-198z" />
|
||||
<glyph unicode="d" d="M680 371l-129 50v198l64 43l65 -43v-248zM596 676l-66 -42h-314l-130 86h444zM194 421l-129 -50v335l129 -87v-198zM680 101l-65 -43l-64 43v205l129 43v-248zM194 101l-129 -87v335l129 -43v-205zM596 44l-66 -44h-444l130 86h314z" />
|
||||
<glyph unicode="e" horiz-adv-x="668" d="M659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM659 0h-573l130 86h314zM194 101l-129 -87v335l129 -43v-205z" />
|
||||
<glyph unicode="f" horiz-adv-x="657" d="M659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM194 86l-129 -86v349l129 -43v-220z" />
|
||||
<glyph unicode="g" d="M653 720l-123 -86h-314l-66 42l66 44h437zM651 360l-121 -40h-120l-122 40l122 47h120zM680 101l-65 -43l-64 43v205l129 43v-248zM194 421l-129 -50v248l64 43l65 -43v-198zM194 101l-65 -43l-64 43v248l129 -43v-205zM596 44l-66 -44h-314l-66 44l66 42h314z" />
|
||||
<glyph unicode="h" d="M680 371l-129 50v213l129 86v-349zM194 421l-129 -50v349l129 -86v-213zM651 360l-121 -40h-314l-121 40l121 47h314zM680 0l-129 86v220l129 43v-349zM194 86l-129 -86v349l129 -43v-220z" />
|
||||
<glyph unicode="i" horiz-adv-x="255" d="M194 371l-129 50v213l129 86v-349zM194 0l-129 86v220l129 43v-349z" />
|
||||
<glyph unicode="j" d="M680 371l-129 50v213l129 86v-349zM680 14l-129 87v205l129 43v-335zM659 0h-573l130 86h314zM194 101l-129 -87v335l129 -43v-205z" />
|
||||
<glyph unicode="k" d="M680 661l-368 -237h-91v62l364 234h95v-59zM194 421l-129 -50v349l129 -86v-213zM651 360l-121 -40h-314l-121 40l121 47h314zM680 0l-129 86v220l129 43v-349zM194 86l-129 -86v349l129 -43v-220z" />
|
||||
<glyph unicode="l" horiz-adv-x="720" d="M194 421l-129 -50v349l129 -86v-213zM680 14l-129 87v205l129 43v-335zM659 0h-573l130 86h314zM194 101l-129 -87v335l129 -43v-205z" />
|
||||
<glyph unicode="m" horiz-adv-x="1230" d="M1166 371l-129 50v198l129 86v-334zM1145 720l-131 -86h-313l-86 56l-85 -56h-317l-127 86h1059zM680 398l-65 -33l-64 33v223l64 44l65 -46v-221zM1166 0l-129 86v220l129 43v-349zM194 421l-129 -50v335l129 -87v-198zM680 72l-65 -72l-64 72v238l64 39l65 -39v-238z M194 86l-129 -86v349l129 -43v-220z" />
|
||||
<glyph unicode="n" d="M680 371l-129 50v198l129 87v-335zM659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM680 0l-129 86v220l129 43v-349zM194 86l-129 -86v349l129 -43v-220z" />
|
||||
<glyph unicode="o" d="M680 371l-129 50v198l64 43l65 -43v-248zM596 676l-66 -42h-314l-66 42l66 44h314zM680 101l-65 -43l-64 43v205l129 43v-248zM194 421l-129 -50v248l64 43l65 -43v-198zM194 101l-65 -43l-64 43v248l129 -43v-205zM596 44l-66 -44h-314l-66 44l66 42h314z" />
|
||||
<glyph unicode="p" d="M680 371l-129 50v198l64 43l65 -43v-248zM596 676l-66 -42h-314l-130 86h444zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM194 86l-129 -86v349l129 -43v-220z" />
|
||||
<glyph unicode="q" horiz-adv-x="746" d="M680 371l-129 50v198l64 43l65 -43v-248zM596 676l-66 -42h-314l-66 42l66 44h314zM680 101l-65 -43l-64 43v205l129 43v-248zM194 421l-129 -50v248l64 43l65 -43v-198zM683 -128l-335 214h179l156 -98v-116zM194 101l-65 -43l-64 43v248l129 -43v-205zM441 0h-225 l-64 47l64 39h92z" />
|
||||
<glyph unicode="r" horiz-adv-x="746" d="M680 371l-129 50v198l64 43l65 -43v-248zM596 676l-66 -42h-314l-130 86h444zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM774 -1l-225 101l-156 206h146zM194 101l-129 -87v335l129 -43v-205z" />
|
||||
<glyph unicode="s" d="M680 720l-140 -86h-324l-66 42l66 44h464zM680 101l-65 -43l-64 43v205l129 43v-248zM651 360l-121 -40h-314l-121 40l121 47h314zM194 421l-129 -50v248l64 43l65 -43v-198zM596 44l-66 -44h-465l141 86h324z" />
|
||||
<glyph unicode="t" horiz-adv-x="615" d="M627 720l-103 -86h-140l-73 50l-78 -50h-141l-103 86h638zM374 404l-65 -42l-66 42v212l66 47l65 -47v-212zM374 47l-66 -47l-66 47v258l67 46l65 -46v-258z" />
|
||||
<glyph unicode="u" d="M680 371l-129 50v216l129 83v-349zM194 421l-129 -50v349l129 -83v-216zM680 101l-65 -43l-64 43v205l129 43v-248zM194 101l-65 -43l-64 43v248l129 -43v-205zM596 44l-66 -44h-314l-66 44l66 42h314z" />
|
||||
<glyph unicode="v" horiz-adv-x="746" d="M680 371l-129 50v198l129 87v-335zM194 421l-129 -50v335l129 -87v-198zM683 358l-293 -358v180l123 149zM357 -1l-292 360l169 -30l123 -149v-181z" />
|
||||
<glyph unicode="w" horiz-adv-x="1230" d="M1167 371l-130 43v220l130 86v-349zM681 410l-66 -39l-64 39v238l64 72l66 -72v-238zM1167 99l-61 -42l-68 42v200l129 53v-253zM195 414l-130 -43v349l130 -86v-220zM681 99l-64 -44l-66 46v221l64 33l66 -33v-223zM1083 43l-64 -43h-804l-63 41l64 45h314l85 -58l87 58 h315zM194 99l-65 -43l-64 43v253l129 -54v-199z" />
|
||||
<glyph unicode="x" horiz-adv-x="654" d="M623 649l-212 -279h-67v100l189 250h90v-71zM314 370h-68l-213 282v68h93l188 -250v-100zM623 0h-93l-186 248v102h67l212 -279v-71zM314 248l-189 -248h-92v73l213 277h68v-102z" />
|
||||
<glyph unicode="y" d="M680 371l-129 50v213l129 86v-349zM194 421l-129 -50v349l129 -86v-213zM651 360l-121 -40h-314l-121 40l121 47h314zM441 50l-69 -50l-63 50v251h132v-251z" />
|
||||
<glyph unicode="z" horiz-adv-x="633" d="M624 720l-231 -355l-84 91l174 264h141zM455 720l-56 -86h-235l-129 86h420zM384 350l-232 -350h-141l220 330zM599 0h-422l63 86h228z" />
|
||||
<glyph unicode="{" horiz-adv-x="455" d="M381 -112h-96q-117 0 -117 66v335q0 48 -58 65q-17 6 -35 6q41 0 67 20t26 51v335q0 66 117 66h96v-37h-16q-53 0 -71 -12t-18 -49v-296q0 -31 -28.5 -54.5t-71.5 -23.5q43 0 71.5 -23t28.5 -55v-296q0 -37 17 -49t72 -12h16v-37z" />
|
||||
<glyph unicode="|" horiz-adv-x="243" d="M170 0h-95v720h95v-720z" />
|
||||
<glyph unicode="}" horiz-adv-x="455" d="M381 360q-19 0 -34 -6q-59 -18 -59 -65v-335q0 -66 -115 -66h-98v37h17q54 0 71 12t17 49v296q0 31 29.5 54.5t72.5 23.5q-8 0 -18 1.5t-21 5.5q-63 21 -63 71v296q0 38 -16.5 49.5t-71.5 11.5h-17v37h98q115 0 115 -66v-335q0 -23 15.5 -40t43.5 -25q15 -6 34 -6z" />
|
||||
<glyph unicode="~" horiz-adv-x="687" d="M614 402q-6 -53 -42 -81t-95 -28q-19 0 -40 3t-47 10l-115 32l-20 4q-29 6 -48 6q-24 0 -36 -10t-19 -36l-2 -10h-75v17q6 53 42 81t95 28q19 0 40 -3t47 -10l115 -32l18 -5q29 -6 48 -6q25 0 37.5 10.5t19.5 36.5l2 9h75v-16z" />
|
||||
<glyph unicode="¡" horiz-adv-x="255" d="M194 565h-129v155h129v-155zM194 86l-129 -86v508l129 -65v-357z" />
|
||||
<glyph unicode="¢" horiz-adv-x="696" d="M434 736l-69 -47l-62 47v72l63 47l68 -50v-69zM665 720l-129 -86h-318l-62 41l63 45h74l73 -53l80 53h219zM194 414l-129 -43v248l64 43l65 -43v-205zM663 0h-223l-77 57l-76 -57h-71l-63 42l65 44h316zM194 101l-65 -43l-64 43v248l129 -50v-198zM429 -84l-64 -57 l-68 55v72l66 43l66 -44v-69z" />
|
||||
<glyph unicode="£" horiz-adv-x="801" d="M770 720l-131 -86h-313l-65 42l65 44h444zM306 413l-67 -40l-63 42v204l66 45l64 -45v-206zM573 358l-64 -38h-182l-66 38l69 49h179zM221 358l-71 -38h-118l-65 39l68 48h112zM770 0h-593l149 86h313zM305 102l-132 -72v271l69 40l63 -40v-199z" />
|
||||
<glyph unicode="¤" horiz-adv-x="683" d="M609 505l-94 -60q40 -37 40 -83q0 -47 -42 -86l95 -63l-11 -8l-10 -7l-26 -15l-93 63q-55 -28 -126 -28q-72 0 -126 29l-97 -63q-12 5 -23 13t-21 17l96 63q-43 37 -43 84t42 83l-93 60l19 17l12 8l11 7l96 -62q56 28 128 28q71 0 127 -28l93 63q25 -12 46 -32zM443 292 q43 28 43 68t-43 68q-21 14 -46.5 21t-54.5 7q-58 0 -101.5 -28.5t-43.5 -67.5t43 -68q20 -14 46.5 -21t55.5 -7q60 0 101 28z" />
|
||||
<glyph unicode="¥" horiz-adv-x="762" d="M683 371l-129 50v213l129 86v-349zM731 253l-30 -26h-213v59h217zM197 421l-129 -50v349l129 -86v-213zM653 360l-122 -40h-313l-122 40l122 47h313zM731 158l-32 -29h-211v60h213zM444 50l-69 -50l-63 50v251h132v-251zM279 226h-214l-32 28l36 32h210v-60zM279 128 h-217l-27 27l28 32h216v-59z" />
|
||||
<glyph unicode="¦" horiz-adv-x="255" d="M194 371l-129 50v213l129 86v-349zM194 0l-129 86v220l129 43v-349z" />
|
||||
<glyph unicode="§" horiz-adv-x="734" d="M671 469l-66 -43l-63 43v151l61 43l68 -42v-152zM584 675l-66 -41h-300l-65 41l65 45h301zM584 409l-74 -47h-280l-77 47l54 40h324zM671 150l-66 -43l-63 43v198l61 43l68 -42v-199zM198 149l-66 -43l-67 44v198l67 43l66 -43v-199zM584 86l-54 -34h-324l-54 34l78 51 h277zM584 -181l-65 -38h-301l-66 38l67 47h299zM198 -122l-66 -43l-67 43v150l67 42l66 -43v-149z" />
|
||||
<glyph unicode="¨" horiz-adv-x="368" d="M369 761h-129v130h129v-130zM129 761h-129v130h129v-130z" />
|
||||
<glyph unicode="©" horiz-adv-x="1292" d="M1197 363q0 -154 -163 -263t-395 -109q-230 0 -394 109t-164 263t163.5 263t394.5 109q230 0 394 -109t164 -263zM1134 363q0 136 -145 233t-350 97q-206 0 -350.5 -96t-144.5 -234q0 -136 145 -233t350 -97q206 0 350.5 96t144.5 234zM795 578l-81 -55h-201l-42 27 l42 28h282zM498 382l-81 -27v158l41 28l40 -28v-131zM795 117h-282l-42 28l42 28h201zM498 182l-40 -28l-41 28v159l81 -32v-127z" />
|
||||
<glyph unicode="ª" horiz-adv-x="663" d="M590 394h-87v76l-5 -8q-22 -34 -73 -55t-113 -21q-45 0 -90 12q-56 16 -93 47.5t-49 76.5q-4 15 -4 35v17q0 3 4 18q18 63 84.5 101t150.5 38q21 0 44 -3q88 -13 132 -64l7 -8l5 -7v71h87v-326zM590 290h-498v54h498v-54zM500 533q5 13 5 25q0 11 -5 26q-9 30 -33.5 51.5 t-60 32.5t-72.5 11q-61 0 -107.5 -27t-58.5 -72l-3 -22q0 -11 1 -15l4 -8q13 -51 72 -77q45 -20 93 -20q51 0 96 21q25 12 44 31.5t25 42.5z" />
|
||||
<glyph unicode="«" horiz-adv-x="596" d="M564 468l-153 -223h-139l151 223h141zM327 468l-154 -223h-140l152 223h142zM563 0h-141l-150 221h139zM324 0h-141l-150 221h140z" />
|
||||
<glyph unicode="¬" horiz-adv-x="1200" d="M1162 -83h-1123v765h1123v-765zM1067 255v18h-16q-21 0 -29 5t-8 27v250q0 10 -0.5 20t-0.5 19q0 24 9.5 31.5t44.5 7.5v18h-160v-18q37 0 45 -7t8 -37v-24v-258q0 -22 -9.5 -28t-29.5 -6h-14v-18h160zM1141 27q0 50 -78 66t-78 50q0 21 15.5 33.5t37.5 12.5 q16 0 31 -7.5t27 -21.5q3 -14 4 -17q1 -6 1 -18l16 -1q0 17 3 37.5t4 31.5q-42 13 -80 13q-44 0 -71 -18q-32 -22 -32 -64q0 -53 77.5 -68t77.5 -51q0 -25 -18 -38.5t-44 -13.5q-42 0 -57 15t-15 56h-16q0 -11 -2 -37.5t-2 -29.5q0 -10 22.5 -16.5t59.5 -6.5q47 0 79 22 q38 26 38 71zM941 184h-86q0 24 1 48.5t4 46.5q28 23 42 44q18 27 18 58q0 88 -115 98t-115 74q0 38 27 59t67 21q19 0 44 -7.5t38 -18.5q5 -11 5 -34v-20h18q0 30 1.5 43t7.5 37q-53 21 -111 21q-62 0 -102 -29q-45 -33 -45 -93q0 -87 115.5 -98t115.5 -75q0 -42 -32 -64 t-76 -22q-26 0 -52 8q-35 11 -42 29l-1 48h-19v-33v-14q0 -20 -3 -40q51 -21 106 -21q27 0 51 6q5 -40 5 -72q-19 -11 -45 -19v-12h45v-157q0 -62 64 -62q8 0 18 2t18 4l27 34l-8 11q-13 -15 -32 -15t-29.5 14t-10.5 53v13v108q8 0 25.5 1t25.5 1q15 0 29 -3zM802 -60v17 q-29 0 -37 5t-8 23q1 20 1 33v92q0 96 -93 96q-25 0 -50 -15t-43 -38q1 18 1 27q0 16 -5 26q-23 -10 -46 -16t-47 -6v-17q11 1 17 1q13 0 21.5 -3.5t8.5 -13.5v-172q0 -11 -5 -17t-21 -6q-14 1 -21 1v-17h144l-1 17q-30 0 -39.5 8.5t-9.5 31.5q0 6 1 23.5t1 29.5v28 q0 46 10 64q16 28 63 28q38 0 53 -23q12 -19 12 -62v-54v-12q0 -44 -4 -79h97zM680 633v18h-119v-18q14 0 32 -2.5t18 -10.5q0 -25 -38 -154l-40 -130l-116 318h-14l-122 -315l-32 138q-16 71 -28 131q-4 6 -3 10q0 10 15 12.5t22 2.5h12v18h-143v-18q26 0 32.5 -6.5 t12.5 -35.5q10 -43 22 -88q28 -105 32 -149q-23 0 -58.5 -32.5t-46.5 -57.5q-4 -10 -5.5 -21t-1.5 -30v-30l-40 -20v-10l40 4l1 -153q0 -32 -8.5 -39.5t-41.5 -7.5v-17h155v17h-17q-19 0 -25 2q-16 6 -16 39l1 160q17 0 35 -0.5t36 -0.5l5 25l-2 2h-74v36v25q0 32 8.5 50 t35.5 18q17 0 29 -9l11 -54h29q27 80 57 156q22 57 65 155q9 -26 58 -154q37 -98 54 -157h30q15 61 54 198q46 160 60 181q7 4 29 4zM487 80q0 56 -36 91t-93 35q-61 0 -102 -36t-41 -97q0 -59 34 -99t92 -40q64 0 105 41t41 105zM434 56q0 -41 -16 -69q-20 -34 -59 -34 q-46 0 -70 49q-19 38 -19 90q0 39 19 68t56 29q48 0 71 -45q18 -35 18 -88z" />
|
||||
<glyph unicode="­" horiz-adv-x="447" d="M449 306l-87 -86h-362l87 86h362z" />
|
||||
<glyph unicode="®" horiz-adv-x="1292" d="M1197 363q0 -154 -163 -263t-395 -109q-230 0 -394 109t-164 263t163.5 263t394.5 109q230 0 394 -109t164 -263zM1134 363q0 136 -145 233t-350 97q-206 0 -350.5 -96t-144.5 -234q0 -136 145 -233t350 -97q206 0 350.5 96t144.5 234zM828 367l-82 32v126l42 28l40 -28 v-158zM776 562l-44 -27h-199l-84 55h283zM518 399l-83 -32v214l83 -56v-126zM810 360l-78 -26h-199l-78 26l78 30h199zM890 129l-144 64l-101 132h93zM518 194l-83 -56v215l83 -28v-131z" />
|
||||
<glyph unicode="¯" horiz-adv-x="447" d="M458 880l-87 -86h-362l87 86h362z" />
|
||||
<glyph unicode="°" horiz-adv-x="548" d="M474 601q0 -55 -58 -94t-141 -39q-82 0 -141 39t-59 94q0 56 58.5 94.5t141.5 38.5q84 0 141.5 -38.5t57.5 -94.5zM410 601q0 38 -39 64t-96 26t-96 -26t-39 -64t39 -64t96 -26t96 26t39 64z" />
|
||||
<glyph unicode="±" horiz-adv-x="822" d="M759 263h-295v-122h-102v122h-296v68h296v122h102v-122h295v-68zM759 19h-693v68h693v-68z" />
|
||||
<glyph unicode="²" horiz-adv-x="371" d="M341 696l-65 25v99l32 21l33 -21v-124zM299 848l-33 -21h-233l75 43h158zM326 690l-60 -20h-158l-60 20l60 24h158zM341 510h-233l-33 22l33 21h171zM98 561l-33 -22l-32 22v124l65 -22v-102z" />
|
||||
<glyph unicode="³" horiz-adv-x="371" d="M332 696l-65 25v99l32 21l33 -21v-124zM290 848l-33 -21h-158l-61 43h219zM332 561l-33 -22l-32 22v102l65 22v-124zM317 690l-60 -20h-158l-60 20l60 24h158zM290 532l-33 -22h-219l61 43h158z" />
|
||||
<glyph unicode="´" horiz-adv-x="237" d="M239 507l-99 -144h-140l98 144h141z" />
|
||||
<glyph unicode="¶" horiz-adv-x="792" d="M686 421l-129 -50v335l129 -87v-198zM500 720l-131 -86h-148l-66 42l66 44h279zM521 371l-129 50v198l129 87v-335zM200 421l-129 -50v248l64 43l65 -43v-198zM686 86l-129 -86v349l129 -43v-220zM491 360l-122 -40h-148l-122 40l122 47h148zM521 0l-129 86v220l129 43 v-349z" />
|
||||
<glyph unicode="·" horiz-adv-x="194" d="M162 285h-129v155h129v-155z" />
|
||||
<glyph unicode="∙" horiz-adv-x="194" d="M162 285h-129v155h129v-155z" />
|
||||
<glyph unicode="¸" horiz-adv-x="276" d="M278 -25l-81 -73h-138l82 73h137z" />
|
||||
<glyph unicode="¹" horiz-adv-x="371" d="M219 702l-64 25v106l64 43v-174zM219 516l-64 43v110l64 22v-175z" />
|
||||
<glyph unicode="º" horiz-adv-x="665" d="M587 525q-16 -54 -69 -90t-132 -47q-23 -4 -53 -4h-32q-14 3 -20 4q-79 11 -132 47t-69 90q-3 14 -4 17q-1 6 -1 18q0 16 5 34q19 63 89.5 102.5t160.5 39.5q53 0 107 -15q123 -35 150 -127q5 -18 5 -34t-2 -24zM584 290h-500v54h500v-54zM503 560q0 15 -3 23 q-10 44 -58 71t-109 27q-36 0 -69 -10q-46 -14 -73 -44t-27 -67q0 -15 3 -22q9 -38 43.5 -63.5t86.5 -33.5q18 -3 36 -3q70 0 120 34.5t50 87.5z" />
|
||||
<glyph unicode="»" horiz-adv-x="596" d="M564 247h-138l-153 221h143zM327 247h-139l-153 221h142zM564 223l-150 -223h-142l154 223h138zM326 223l-150 -223h-143l155 223h138z" />
|
||||
<glyph unicode="¼" horiz-adv-x="935" d="M219 702l-64 25v106l64 43v-174zM219 516l-64 43v110l64 22v-175zM885 195l-64 25v106l64 43v-174zM642 220l-64 -25v174l64 -43v-106zM870 189l-60 -20h-157l-60 20l60 24h157zM885 9l-64 43v110l64 22v-175zM603 720l-204 -379l-43 87l157 292h90zM389 320l-173 -320 h-90l173 320h90z" />
|
||||
<glyph unicode="½" horiz-adv-x="845" d="M786 192l-64 25v99l31 21l33 -21v-124zM744 344l-33 -21h-232l75 43h157zM771 186l-60 -20h-157l-60 20l60 24h157zM786 6h-232l-33 22l33 21h171zM543 57l-33 -22l-31 22v124l64 -22v-102zM219 702l-64 25v106l64 43v-174zM219 516l-64 43v110l64 22v-175zM558 720 l-204 -379l-43 87l157 292h90zM344 320l-173 -320h-90l173 320h90z" />
|
||||
<glyph unicode="¾" horiz-adv-x="935" d="M332 696l-65 25v99l32 21l33 -21v-124zM290 848l-33 -21h-158l-61 43h219zM332 561l-33 -22l-32 22v102l65 22v-124zM317 690l-60 -20h-158l-60 20l60 24h158zM290 532l-33 -22h-219l61 43h158zM885 195l-64 25v106l64 43v-174zM642 220l-64 -25v174l64 -43v-106z M870 189l-60 -20h-157l-60 20l60 24h157zM885 9l-64 43v110l64 22v-175zM633 720l-204 -379l-43 87l157 292h90zM419 320l-173 -320h-90l173 320h90z" />
|
||||
<glyph unicode="¿" horiz-adv-x="627" d="M464 565h-129v155h129v-155zM464 327l-131 83v107h131v-190zM437 313h-222l-120 45l121 42h90zM194 101l-65 -43l-64 43v248l129 -50v-198zM596 44l-66 -44h-314l-66 44l66 42h314z" />
|
||||
<glyph unicode="À" d="M680 371l-129 50v198l129 87v-335zM659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM680 0l-129 86v220l129 43v-349zM194 86l-129 -86v349l129 -43v-220zM408 754h-141l-98 144h141z" />
|
||||
<glyph unicode="Á" d="M680 371l-129 50v198l129 87v-335zM659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM680 0l-129 86v220l129 43v-349zM194 86l-129 -86v349l129 -43v-220zM531 903l-99 -144h-140l98 144h141z" />
|
||||
<glyph unicode="Â" d="M680 371l-129 50v198l129 87v-335zM659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM680 0l-129 86v220l129 43v-349zM194 86l-129 -86v349l129 -43v-220zM666 772h-190l-93 59l40 99zM350 831 l-93 -59h-179l236 159z" />
|
||||
<glyph unicode="Ã" d="M680 371l-129 50v198l129 87v-335zM659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM680 0l-129 86v220l129 43v-349zM194 86l-129 -86v349l129 -43v-220zM609 908l-54 -115l-87 107l15 31zM524 781 l-210 43l-90 107l217 -45zM278 812l-15 -31l-125 24l53 115z" />
|
||||
<glyph unicode="Ä" d="M680 371l-129 50v198l129 87v-335zM659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM680 0l-129 86v220l129 43v-349zM194 86l-129 -86v349l129 -43v-220zM549 768h-129v130h129v-130zM309 768h-129 v130h129v-130z" />
|
||||
<glyph unicode="Å" d="M680 371l-129 50v198l129 87v-335zM659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM680 0l-129 86v220l129 43v-349zM194 86l-129 -86v349l129 -43v-220zM574 825l-59 -37l-51 35v84l51 36l59 -37 v-81zM497 953l-54 -34h-127l-56 34l57 39h125zM497 774l-45 -28h-147l-45 28l66 43h107zM298 823l-54 -35l-59 37v80l59 37l54 -36v-83z" />
|
||||
<glyph unicode="Æ" horiz-adv-x="1188" d="M1157 720l-129 -86h-323l-82 55l-90 -55h-315l-129 86h1068zM1136 361l-125 -41h-306l-58 44l63 43h306zM683 422l-63 -44l-68 45v198l68 44l63 -44v-199zM197 422l-132 -50v334l132 -87v-197zM1157 0h-575l131 86h316zM599 364l-68 -44h-315l-121 41l123 46h315zM683 93 l-129 -86v299l66 43l63 -43v-213zM195 85l-130 -85v350l130 -45v-220z" />
|
||||
<glyph unicode="Ç" horiz-adv-x="690" d="M659 720l-129 -86h-314l-66 42l66 44h443zM194 414l-129 -43v248l64 43l65 -43v-205zM659 0h-443l-66 44l66 42h314zM194 101l-65 -43l-64 43v248l129 -50v-198zM455 -25l-87 -73h-138l87 73h138z" />
|
||||
<glyph unicode="È" horiz-adv-x="668" d="M659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM659 0h-573l130 86h314zM194 101l-129 -87v335l129 -43v-205zM401 754h-141l-98 144h141z" />
|
||||
<glyph unicode="É" horiz-adv-x="668" d="M659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM659 0h-573l130 86h314zM194 101l-129 -87v335l129 -43v-205zM540 899l-99 -144h-140l98 144h141z" />
|
||||
<glyph unicode="Ê" horiz-adv-x="668" d="M659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM659 0h-573l130 86h314zM194 101l-129 -87v335l129 -43v-205zM661 772h-190l-93 59l40 99zM345 831l-93 -59h-179l236 159z" />
|
||||
<glyph unicode="Ë" horiz-adv-x="668" d="M659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM659 0h-573l130 86h314zM194 101l-129 -87v335l129 -43v-205zM552 768h-129v130h129v-130zM312 768h-129v130h129v-130z" />
|
||||
<glyph unicode="Ì" horiz-adv-x="255" d="M194 371l-129 50v213l129 86v-349zM194 0l-129 86v220l129 43v-349zM204 754h-141l-98 144h141z" />
|
||||
<glyph unicode="Í" horiz-adv-x="255" d="M194 371l-129 50v213l129 86v-349zM194 0l-129 86v220l129 43v-349zM294 898l-99 -144h-140l98 144h141z" />
|
||||
<glyph unicode="Î" horiz-adv-x="255" d="M194 371l-129 50v213l129 86v-349zM194 0l-129 86v220l129 43v-349zM460 770h-190l-93 59l40 99zM144 829l-93 -59h-179l236 159z" />
|
||||
<glyph unicode="Ï" horiz-adv-x="255" d="M194 371l-129 50v213l129 86v-349zM194 0l-129 86v220l129 43v-349zM332 770h-129v130h129v-130zM92 770h-129v130h129v-130z" />
|
||||
<glyph unicode="Ð" horiz-adv-x="899" d="M845 371l-129 50v198l64 43l65 -43v-248zM761 676l-66 -42h-314l-130 86h444zM359 421l-129 -50v335l129 -87v-198zM845 101l-65 -43l-64 43v205l129 43v-248zM359 101l-129 -87v335l129 -43v-205zM761 44l-66 -44h-444l130 86h314zM200 403l-63 -86h-148l64 86h147z" />
|
||||
<glyph unicode="Ñ" d="M680 371l-129 50v198l129 87v-335zM659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM680 0l-129 86v220l129 43v-349zM194 86l-129 -86v349l129 -43v-220zM615 902l-54 -115l-87 107l15 31zM530 775l-210 43l-90 107l217 -45zM284 806l-15 -31 l-125 24l53 115z" />
|
||||
<glyph unicode="Ò" d="M680 371l-129 50v198l64 43l65 -43v-248zM596 676l-66 -42h-314l-66 42l66 44h314zM680 101l-65 -43l-64 43v205l129 43v-248zM194 421l-129 -50v248l64 43l65 -43v-198zM194 101l-65 -43l-64 43v248l129 -43v-205zM596 44l-66 -44h-314l-66 44l66 42h314zM440 752h-141 l-98 144h141z" />
|
||||
<glyph unicode="Ó" d="M680 371l-129 50v198l64 43l65 -43v-248zM596 676l-66 -42h-314l-66 42l66 44h314zM680 101l-65 -43l-64 43v205l129 43v-248zM194 421l-129 -50v248l64 43l65 -43v-198zM194 101l-65 -43l-64 43v248l129 -43v-205zM596 44l-66 -44h-314l-66 44l66 42h314zM533 898 l-99 -144h-140l98 144h141z" />
|
||||
<glyph unicode="Ô" d="M680 371l-129 50v198l64 43l65 -43v-248zM596 676l-66 -42h-314l-66 42l66 44h314zM680 101l-65 -43l-64 43v205l129 43v-248zM194 421l-129 -50v248l64 43l65 -43v-198zM194 101l-65 -43l-64 43v248l129 -43v-205zM596 44l-66 -44h-314l-66 44l66 42h314zM678 773h-190 l-93 59l40 99zM362 832l-93 -59h-179l236 159z" />
|
||||
<glyph unicode="Õ" d="M680 371l-129 50v198l64 43l65 -43v-248zM596 676l-66 -42h-314l-66 42l66 44h314zM680 101l-65 -43l-64 43v205l129 43v-248zM194 421l-129 -50v248l64 43l65 -43v-198zM194 101l-65 -43l-64 43v248l129 -43v-205zM596 44l-66 -44h-314l-66 44l66 42h314zM590 902 l-54 -115l-87 107l15 31zM505 775l-210 43l-90 107l217 -45zM259 806l-15 -31l-125 24l53 115z" />
|
||||
<glyph unicode="Ö" d="M680 371l-129 50v198l64 43l65 -43v-248zM596 676l-66 -42h-314l-66 42l66 44h314zM680 101l-65 -43l-64 43v205l129 43v-248zM194 421l-129 -50v248l64 43l65 -43v-198zM194 101l-65 -43l-64 43v248l129 -43v-205zM596 44l-66 -44h-314l-66 44l66 42h314zM552 769h-129 v130h129v-130zM312 769h-129v130h129v-130z" />
|
||||
<glyph unicode="×" horiz-adv-x="744" d="M546 537l50 -88l-119 -78l-87 2v61zM354 431l3 -60h-96l-112 75l49 89zM357 352l-3 -63l-156 -104l-48 89l114 76zM591 274l-49 -89l-155 104v62l90 -2z" />
|
||||
<glyph unicode="Ø" horiz-adv-x="750" d="M572 694l-51 -60h-300l-65 42l65 44h318zM689 372l-132 49v36l132 149v-234zM681 101l-64 -43l-65 43v205l129 43v-248zM689 649l-558 -649h-66v73l561 647h63v-71zM195 421l-129 -50v248l65 43l64 -43v-198zM198 263l-132 -151v236l132 -41v-44zM597 43l-63 -43h-315 l-36 25l57 61l296 -1z" />
|
||||
<glyph unicode="Ù" d="M680 371l-129 50v216l129 83v-349zM194 421l-129 -50v349l129 -83v-216zM680 101l-65 -43l-64 43v205l129 43v-248zM194 101l-65 -43l-64 43v248l129 -43v-205zM596 44l-66 -44h-314l-66 44l66 42h314zM430 755h-141l-98 144h141z" />
|
||||
<glyph unicode="Ú" d="M680 371l-129 50v216l129 83v-349zM194 421l-129 -50v349l129 -83v-216zM680 101l-65 -43l-64 43v205l129 43v-248zM194 101l-65 -43l-64 43v248l129 -43v-205zM596 44l-66 -44h-314l-66 44l66 42h314zM546 898l-99 -144h-140l98 144h141z" />
|
||||
<glyph unicode="Û" d="M680 371l-129 50v216l129 83v-349zM194 421l-129 -50v349l129 -83v-216zM680 101l-65 -43l-64 43v205l129 43v-248zM194 101l-65 -43l-64 43v248l129 -43v-205zM596 44l-66 -44h-314l-66 44l66 42h314zM668 769h-190l-93 59l40 99zM352 828l-93 -59h-179l236 159z" />
|
||||
<glyph unicode="Ü" d="M680 371l-129 50v216l129 83v-349zM194 421l-129 -50v349l129 -83v-216zM680 101l-65 -43l-64 43v205l129 43v-248zM194 101l-65 -43l-64 43v248l129 -43v-205zM596 44l-66 -44h-314l-66 44l66 42h314zM549 769h-129v130h129v-130zM309 769h-129v130h129v-130z" />
|
||||
<glyph unicode="Ý" d="M680 371l-129 50v213l129 86v-349zM194 421l-129 -50v349l129 -86v-213zM651 360l-121 -40h-314l-121 40l121 47h314zM441 50l-69 -50l-63 50v251h132v-251zM544 898l-99 -144h-140l98 144h141z" />
|
||||
<glyph unicode="Þ" horiz-adv-x="1000" />
|
||||
<glyph unicode="à" d="M680 371l-129 50v198l129 87v-335zM659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM680 0l-129 86v220l129 43v-349zM194 86l-129 -86v349l129 -43v-220zM438 754h-141l-98 144h141z" />
|
||||
<glyph unicode="á" d="M680 371l-129 50v198l129 87v-335zM659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM680 0l-129 86v220l129 43v-349zM194 86l-129 -86v349l129 -43v-220zM546 898l-99 -144h-140l98 144h141z" />
|
||||
<glyph unicode="â" d="M680 371l-129 50v198l129 87v-335zM659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM680 0l-129 86v220l129 43v-349zM194 86l-129 -86v349l129 -43v-220zM671 767h-190l-93 59l40 99zM355 826 l-93 -59h-179l236 159z" />
|
||||
<glyph unicode="ã" d="M680 371l-129 50v198l129 87v-335zM659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM680 0l-129 86v220l129 43v-349zM194 86l-129 -86v349l129 -43v-220zM594 908l-54 -115l-87 107l15 31zM509 781 l-210 43l-90 107l217 -45zM263 812l-15 -31l-125 24l53 115z" />
|
||||
<glyph unicode="ä" d="M680 371l-129 50v198l129 87v-335zM659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM680 0l-129 86v220l129 43v-349zM194 86l-129 -86v349l129 -43v-220zM549 768h-129v130h129v-130zM309 768h-129 v130h129v-130z" />
|
||||
<glyph unicode="å" d="M680 371l-129 50v198l129 87v-335zM659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM680 0l-129 86v220l129 43v-349zM194 86l-129 -86v349l129 -43v-220zM574 825l-59 -37l-51 35v84l51 36l59 -37 v-81zM497 953l-54 -34h-127l-56 34l57 39h125zM497 774l-45 -28h-147l-45 28l66 43h107zM298 823l-54 -35l-59 37v80l59 37l54 -36v-83z" />
|
||||
<glyph unicode="æ" horiz-adv-x="1188" d="M1157 720l-129 -86h-323l-82 55l-90 -55h-315l-129 86h1068zM1136 361l-125 -41h-306l-58 44l63 43h306zM683 422l-63 -44l-68 45v198l68 44l63 -44v-199zM197 422l-132 -50v334l132 -87v-197zM1157 0h-575l131 86h316zM599 364l-68 -44h-315l-121 41l123 46h315zM683 93 l-129 -86v299l66 43l63 -43v-213zM195 85l-130 -85v350l130 -45v-220z" />
|
||||
<glyph unicode="ç" horiz-adv-x="690" d="M659 720l-129 -86h-314l-66 42l66 44h443zM194 414l-129 -43v248l64 43l65 -43v-205zM659 0h-443l-66 44l66 42h314zM194 101l-65 -43l-64 43v248l129 -50v-198zM455 -25l-87 -73h-138l87 73h138z" />
|
||||
<glyph unicode="è" horiz-adv-x="668" d="M659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM659 0h-573l130 86h314zM194 101l-129 -87v335l129 -43v-205zM401 754h-141l-98 144h141z" />
|
||||
<glyph unicode="é" horiz-adv-x="668" d="M659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM659 0h-573l130 86h314zM194 101l-129 -87v335l129 -43v-205zM530 899l-99 -144h-140l98 144h141z" />
|
||||
<glyph unicode="ê" horiz-adv-x="668" d="M659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM659 0h-573l130 86h314zM194 101l-129 -87v335l129 -43v-205zM656 772h-190l-93 59l40 99zM340 831l-93 -59h-179l236 159z" />
|
||||
<glyph unicode="ë" horiz-adv-x="668" d="M659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM651 360l-121 -40h-314l-121 40l121 47h314zM659 0h-573l130 86h314zM194 101l-129 -87v335l129 -43v-205zM542 768h-129v130h129v-130zM302 768h-129v130h129v-130z" />
|
||||
<glyph unicode="ì" horiz-adv-x="255" d="M194 371l-129 50v213l129 86v-349zM194 0l-129 86v220l129 43v-349zM204 754h-141l-98 144h141z" />
|
||||
<glyph unicode="í" horiz-adv-x="255" d="M194 371l-129 50v213l129 86v-349zM194 0l-129 86v220l129 43v-349zM289 898l-99 -144h-140l98 144h141z" />
|
||||
<glyph unicode="î" horiz-adv-x="255" d="M194 371l-129 50v213l129 86v-349zM194 0l-129 86v220l129 43v-349zM440 770h-190l-93 59l40 99zM124 829l-93 -59h-179l236 159z" />
|
||||
<glyph unicode="ï" horiz-adv-x="255" d="M194 371l-129 50v213l129 86v-349zM194 0l-129 86v220l129 43v-349zM332 770h-129v130h129v-130zM92 770h-129v130h129v-130z" />
|
||||
<glyph unicode="ð" horiz-adv-x="899" d="M845 371l-129 50v198l64 43l65 -43v-248zM761 676l-66 -42h-314l-130 86h444zM359 421l-129 -50v335l129 -87v-198zM845 101l-65 -43l-64 43v205l129 43v-248zM359 101l-129 -87v335l129 -43v-205zM761 44l-66 -44h-444l130 86h314zM200 403l-63 -86h-148l64 86h147z" />
|
||||
<glyph unicode="ñ" d="M680 371l-129 50v198l129 87v-335zM659 720l-129 -86h-314l-130 86h573zM194 421l-129 -50v335l129 -87v-198zM680 0l-129 86v220l129 43v-349zM194 86l-129 -86v349l129 -43v-220zM595 902l-54 -115l-87 107l15 31zM510 775l-210 43l-90 107l217 -45zM264 806l-15 -31 l-125 24l53 115z" />
|
||||
<glyph unicode="ò" d="M680 371l-129 50v198l64 43l65 -43v-248zM596 676l-66 -42h-314l-66 42l66 44h314zM680 101l-65 -43l-64 43v205l129 43v-248zM194 421l-129 -50v248l64 43l65 -43v-198zM194 101l-65 -43l-64 43v248l129 -43v-205zM596 44l-66 -44h-314l-66 44l66 42h314zM440 752h-141 l-98 144h141z" />
|
||||
<glyph unicode="ó" d="M680 371l-129 50v198l64 43l65 -43v-248zM596 676l-66 -42h-314l-66 42l66 44h314zM680 101l-65 -43l-64 43v205l129 43v-248zM194 421l-129 -50v248l64 43l65 -43v-198zM194 101l-65 -43l-64 43v248l129 -43v-205zM596 44l-66 -44h-314l-66 44l66 42h314zM543 898 l-99 -144h-140l98 144h141z" />
|
||||
<glyph unicode="ô" d="M680 371l-129 50v198l64 43l65 -43v-248zM596 676l-66 -42h-314l-66 42l66 44h314zM680 101l-65 -43l-64 43v205l129 43v-248zM194 421l-129 -50v248l64 43l65 -43v-198zM194 101l-65 -43l-64 43v248l129 -43v-205zM596 44l-66 -44h-314l-66 44l66 42h314zM673 773h-190 l-93 59l40 99zM357 832l-93 -59h-179l236 159z" />
|
||||
<glyph unicode="õ" d="M680 371l-129 50v198l64 43l65 -43v-248zM596 676l-66 -42h-314l-66 42l66 44h314zM680 101l-65 -43l-64 43v205l129 43v-248zM194 421l-129 -50v248l64 43l65 -43v-198zM194 101l-65 -43l-64 43v248l129 -43v-205zM596 44l-66 -44h-314l-66 44l66 42h314zM610 892 l-54 -115l-87 107l15 31zM525 765l-210 43l-90 107l217 -45zM279 796l-15 -31l-125 24l53 115z" />
|
||||
<glyph unicode="ö" d="M680 371l-129 50v198l64 43l65 -43v-248zM596 676l-66 -42h-314l-66 42l66 44h314zM680 101l-65 -43l-64 43v205l129 43v-248zM194 421l-129 -50v248l64 43l65 -43v-198zM194 101l-65 -43l-64 43v248l129 -43v-205zM596 44l-66 -44h-314l-66 44l66 42h314zM557 769h-129 v130h129v-130zM317 769h-129v130h129v-130z" />
|
||||
<glyph unicode="÷" horiz-adv-x="513" d="M482 302l-87 -86h-362l87 86h362zM326 341h-129v148h129v-148zM326 21h-129v155h129v-155z" />
|
||||
<glyph unicode="ø" horiz-adv-x="750" d="M572 694l-51 -60h-300l-65 42l65 44h318zM689 372l-132 49v36l132 149v-234zM681 101l-64 -43l-65 43v205l129 43v-248zM689 649l-558 -649h-66v73l561 647h63v-71zM195 421l-129 -50v248l65 43l64 -43v-198zM198 263l-132 -151v236l132 -41v-44zM597 43l-63 -43h-315 l-36 25l57 61l296 -1z" />
|
||||
<glyph unicode="ù" d="M680 371l-129 50v216l129 83v-349zM194 421l-129 -50v349l129 -83v-216zM680 101l-65 -43l-64 43v205l129 43v-248zM194 101l-65 -43l-64 43v248l129 -43v-205zM596 44l-66 -44h-314l-66 44l66 42h314zM440 755h-141l-98 144h141z" />
|
||||
<glyph unicode="ú" d="M680 371l-129 50v216l129 83v-349zM194 421l-129 -50v349l129 -83v-216zM680 101l-65 -43l-64 43v205l129 43v-248zM194 101l-65 -43l-64 43v248l129 -43v-205zM596 44l-66 -44h-314l-66 44l66 42h314zM561 898l-99 -144h-140l98 144h141z" />
|
||||
<glyph unicode="û" d="M680 371l-129 50v216l129 83v-349zM194 421l-129 -50v349l129 -83v-216zM680 101l-65 -43l-64 43v205l129 43v-248zM194 101l-65 -43l-64 43v248l129 -43v-205zM596 44l-66 -44h-314l-66 44l66 42h314zM663 769h-190l-93 59l40 99zM347 828l-93 -59h-179l236 159z" />
|
||||
<glyph unicode="ü" d="M680 371l-129 50v216l129 83v-349zM194 421l-129 -50v349l129 -83v-216zM680 101l-65 -43l-64 43v205l129 43v-248zM194 101l-65 -43l-64 43v248l129 -43v-205zM596 44l-66 -44h-314l-66 44l66 42h314zM544 769h-129v130h129v-130zM304 769h-129v130h129v-130z" />
|
||||
<glyph unicode="ý" d="M680 371l-129 50v213l129 86v-349zM194 421l-129 -50v349l129 -86v-213zM651 360l-121 -40h-314l-121 40l121 47h314zM441 50l-69 -50l-63 50v251h132v-251zM534 898l-99 -144h-140l98 144h141z" />
|
||||
<glyph unicode="þ" horiz-adv-x="1000" />
|
||||
<glyph unicode="ÿ" d="M680 371l-129 50v213l129 86v-349zM194 421l-129 -50v349l129 -86v-213zM651 360l-121 -40h-314l-121 40l121 47h314zM441 50l-69 -50l-63 50v251h132v-251zM543 770h-129v130h129v-130zM303 770h-129v130h129v-130z" />
|
||||
<glyph unicode="Œ" horiz-adv-x="1193" d="M1161 720l-130 -86h-329l-78 58l-91 -58h-314l-66 45l68 41h940zM1136 361l-125 -41h-306l-58 44l63 43h306zM683 422l-63 -44l-68 45v198l68 44l63 -44v-199zM681 92l-61 -43l-69 44v216l70 44l60 -45v-216zM197 425l-132 -51v249l66 40l66 -41v-197zM1160 0h-945 l-65 36l81 50h299l88 -62l93 62h321zM197 86l-66 -39l-66 39v267l132 -46v-221z" />
|
||||
<glyph unicode="œ" horiz-adv-x="1193" d="M1161 720l-130 -86h-329l-78 58l-91 -58h-314l-66 45l68 41h940zM1136 361l-125 -41h-306l-58 44l63 43h306zM683 422l-63 -44l-68 45v198l68 44l63 -44v-199zM681 92l-61 -43l-69 44v216l70 44l60 -45v-216zM197 425l-132 -51v249l66 40l66 -41v-197zM1160 0h-945 l-65 36l81 50h299l88 -62l93 62h321zM197 86l-66 -39l-66 39v267l132 -46v-221z" />
|
||||
<glyph unicode="Ÿ" d="M680 371l-129 50v213l129 86v-349zM194 421l-129 -50v349l129 -86v-213zM651 360l-121 -40h-314l-121 40l121 47h314zM441 50l-69 -50l-63 50v251h132v-251zM568 770h-129v130h129v-130zM328 770h-129v130h129v-130z" />
|
||||
<glyph unicode="ˆ" horiz-adv-x="585" d="M588 730h-190l-93 59l40 99zM272 789l-93 -59h-179l236 159z" />
|
||||
<glyph unicode="˚" d="M575 834l-59 -37l-51 35v84l51 36l59 -37v-81zM498 962l-54 -34h-127l-56 34l57 39h125zM498 783l-45 -28h-147l-45 28l66 43h107zM299 832l-54 -35l-59 37v80l59 37l54 -36v-83z" />
|
||||
<glyph unicode="˜" horiz-adv-x="470" d="M471 869l-54 -115l-87 107l15 31zM386 742l-210 43l-90 107l217 -45zM140 773l-15 -31l-125 24l53 115z" />
|
||||
<glyph unicode=" " horiz-adv-x="500" />
|
||||
<glyph unicode=" " horiz-adv-x="1001" />
|
||||
<glyph unicode=" " horiz-adv-x="500" />
|
||||
<glyph unicode=" " horiz-adv-x="1001" />
|
||||
<glyph unicode=" " horiz-adv-x="333" />
|
||||
<glyph unicode=" " horiz-adv-x="250" />
|
||||
<glyph unicode=" " horiz-adv-x="166" />
|
||||
<glyph unicode=" " horiz-adv-x="166" />
|
||||
<glyph unicode=" " horiz-adv-x="125" />
|
||||
<glyph unicode=" " horiz-adv-x="200" />
|
||||
<glyph unicode=" " horiz-adv-x="55" />
|
||||
<glyph unicode="‐" horiz-adv-x="513" d="M482 302l-87 -86h-362l87 86h362z" />
|
||||
<glyph unicode="‑" horiz-adv-x="513" d="M482 302l-87 -86h-362l87 86h362z" />
|
||||
<glyph unicode="–" d="M680 403l-63 -86h-552l63 86h552z" />
|
||||
<glyph unicode="—" horiz-adv-x="1328" d="M680 403l-63 -86h-552l63 86h552zM1295 403l-63 -86h-552l63 86h552z" />
|
||||
<glyph unicode="‘" horiz-adv-x="270" d="M237 720l-70 -248h-134l71 248h133z" />
|
||||
<glyph unicode="’" horiz-adv-x="270" d="M237 720l-70 -248h-134l71 248h133z" />
|
||||
<glyph unicode="‚" horiz-adv-x="215" d="M183 155l-70 -249h-134l71 249h133z" />
|
||||
<glyph unicode="“" horiz-adv-x="495" d="M464 720l-71 -248h-133l70 248h134zM237 720l-70 -248h-134l71 248h133z" />
|
||||
<glyph unicode="”" horiz-adv-x="495" d="M464 720l-71 -248h-133l70 248h134zM237 720l-70 -248h-134l71 248h133z" />
|
||||
<glyph unicode="„" horiz-adv-x="441" d="M410 155l-71 -249h-133l70 249h134zM183 155l-70 -249h-134l71 249h133z" />
|
||||
<glyph unicode="•" horiz-adv-x="548" d="M474 360q0 -55 -58 -94t-141 -39t-141.5 38.5t-58.5 94.5t58.5 94.5t141.5 38.5q84 0 141.5 -38.5t57.5 -94.5z" />
|
||||
<glyph unicode="…" horiz-adv-x="857" d="M797 45q0 -22 -24 -38t-57 -16q-34 0 -57.5 15.5t-23.5 38.5t23.5 38.5t57.5 15.5t57.5 -15t23.5 -39zM510 45q0 -23 -23.5 -38.5t-57.5 -15.5t-57.5 15.5t-23.5 38.5t23.5 38.5t57.5 15.5t57.5 -15.5t23.5 -38.5zM224 45q0 -23 -23.5 -38.5t-57.5 -15.5t-57.5 15.5 t-23.5 38.5t23.5 38.5t57.5 15.5t57.5 -15.5t23.5 -38.5z" />
|
||||
<glyph unicode=" " horiz-adv-x="200" />
|
||||
<glyph unicode="‹" horiz-adv-x="360" d="M327 468l-154 -223h-140l152 223h142zM324 0h-141l-150 221h140z" />
|
||||
<glyph unicode="›" horiz-adv-x="360" d="M327 247h-139l-153 221h142zM326 223l-150 -223h-143l155 223h138z" />
|
||||
<glyph unicode=" " horiz-adv-x="250" />
|
||||
<glyph unicode="™" horiz-adv-x="1098" d="M1025 360h-80l-55 214l-3 12l-2 6q-1 8 -1 12q0 10 3 22l-14 -33l-7 -12l-2 -5l-150 -225h-22l-150 225l-3 6l-6 11l-14 33q3 -12 3 -22q-1 -8 -1 -12l-2 -6l-3 -12l-55 -214h-80l107 371h31l161 -239l9 -14l4 -8q3 -7 6 -17.5t3 -18.5q4 29 23 58l162 239h31zM399 673 h-123v-313h-79v313h-122v47h324v-47z" />
|
||||
</font>
|
||||
</defs></svg>
|
After Width: | Height: | Size: 49 KiB |
After Width: | Height: | Size: 8.8 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 6.6 KiB |
After Width: | Height: | Size: 6.6 KiB |
After Width: | Height: | Size: 6.6 KiB |
After Width: | Height: | Size: 6.7 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 2.4 KiB |
After Width: | Height: | Size: 8.3 KiB |
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 146 KiB |
After Width: | Height: | Size: 162 KiB |
After Width: | Height: | Size: 3.0 KiB |
After Width: | Height: | Size: 9.1 KiB |
After Width: | Height: | Size: 466 B |
After Width: | Height: | Size: 392 B |
After Width: | Height: | Size: 303 B |
After Width: | Height: | Size: 360 B |
After Width: | Height: | Size: 9.4 KiB |
After Width: | Height: | Size: 2.2 KiB |
After Width: | Height: | Size: 8.5 KiB |
After Width: | Height: | Size: 8.6 KiB |
After Width: | Height: | Size: 657 B |
After Width: | Height: | Size: 813 B |
After Width: | Height: | Size: 69 KiB |
@ -0,0 +1,79 @@
|
||||
<!--
|
||||
* @description:
|
||||
* @fileName: index
|
||||
* @author: luhuixu
|
||||
* @date: 2023/5/29-12:17
|
||||
* @version: V1.0.0
|
||||
-->
|
||||
<template>
|
||||
<span :endTime="endTime" :endText="endText">
|
||||
<slot>{{ content }}</slot>
|
||||
</span>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'CountDown',
|
||||
props: { // 接收父组件的数据
|
||||
endTime: { type: String, default: '' },
|
||||
endText: { type: String, default: '报名已截止' }
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
content: '',
|
||||
timer: null
|
||||
}
|
||||
},
|
||||
watch: { // 监听时间的变化
|
||||
endTime() {
|
||||
this.countdowm(this.endTime)
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.countdowm(this.endTime)
|
||||
},
|
||||
beforeDestroy() {
|
||||
clearInterval(this.timer)
|
||||
this.timer = null
|
||||
},
|
||||
methods: {
|
||||
countdowm(timestamp) {
|
||||
const self = this
|
||||
if (this.timer) {
|
||||
clearInterval(this.timer)
|
||||
}
|
||||
this.timer = setInterval(function() {
|
||||
const nowTime = new Date()
|
||||
const endTime = new Date(timestamp).getTime()
|
||||
const t = endTime - nowTime.getTime()
|
||||
|
||||
if (t > 0) {
|
||||
const day = Math.floor(t / 86400000)
|
||||
let hour = Math.floor((t / 3600000) % 24)
|
||||
let min = Math.floor((t / 60000) % 60)
|
||||
let sec = Math.floor((t / 1000) % 60)
|
||||
hour = hour < 10 ? '0' + hour : hour
|
||||
min = min < 10 ? '0' + min : min
|
||||
sec = sec < 10 ? '0' + sec : sec
|
||||
let format = ''
|
||||
if (day > 0) {
|
||||
format = `${day}天${hour}小时${min}分${sec}秒`
|
||||
}
|
||||
if (day <= 0 && hour > 0) {
|
||||
format = `${hour}小时${min}分${sec}秒`
|
||||
}
|
||||
if (day <= 0 && hour <= 0) {
|
||||
format = `${min}分${sec}秒`
|
||||
}
|
||||
self.content = format
|
||||
} else {
|
||||
clearInterval(this.timer)
|
||||
this.timer = null
|
||||
self.content = self.endText
|
||||
}
|
||||
}, 1000)
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
@ -0,0 +1,144 @@
|
||||
<template>
|
||||
<el-dialog
|
||||
v-if="dialogOption.show"
|
||||
:fullscreen="dialogOption.fullscreen"
|
||||
:width="dialogOption.width"
|
||||
:top="dialogOption.top"
|
||||
:append-to-body="dialogOption.appendToBody"
|
||||
:close-on-click-modal="dialogOption.closeOnClickModal || false"
|
||||
destroy-on-close
|
||||
:visible.sync="dialogOption.show"
|
||||
>
|
||||
<template #title>
|
||||
<span>
|
||||
<dialog-title
|
||||
:icon="dialogOption.title && dialogOption.title.icon"
|
||||
:title="dialogOption.title.title"
|
||||
:is-close="close"
|
||||
/>
|
||||
</span>
|
||||
</template>
|
||||
|
||||
<el-scrollbar
|
||||
:style="{height: dialogOption.height + 'px'}"
|
||||
class="scroll-container"
|
||||
:native="false"
|
||||
:noresize="true"
|
||||
>
|
||||
<div
|
||||
class="dialog-content"
|
||||
>
|
||||
<slot name="content" />
|
||||
</div>
|
||||
</el-scrollbar>
|
||||
<span
|
||||
v-if="!dialogOption.hiddenFooter"
|
||||
class="dialog-footer"
|
||||
>
|
||||
<el-button
|
||||
size="mini"
|
||||
@click="close"
|
||||
plain
|
||||
type="primary"
|
||||
style="width: 120px"
|
||||
>取 消</el-button>
|
||||
<el-button
|
||||
size="mini"
|
||||
type="primary"
|
||||
@click="submit"
|
||||
style="width: 120px"
|
||||
>确 定</el-button>
|
||||
</span>
|
||||
</el-dialog>
|
||||
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import DialogTitle from './title'
|
||||
export default {
|
||||
name: 'Index',
|
||||
components: {
|
||||
DialogTitle
|
||||
},
|
||||
props: {
|
||||
dialog: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {}
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
centerDialogVisible: true,
|
||||
height: null
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
dialogOption: {
|
||||
get() {
|
||||
return this.dialog
|
||||
},
|
||||
set(val) {
|
||||
this.$emit('update:dialog', val)
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.height = document.body.offsetHeight -
|
||||
(this.dialogOption.hiddenFooter
|
||||
? this.dialogOption.fullscreen ? 110 : 250
|
||||
: this.dialogOption.fullscreen ? 113 : 250)
|
||||
window.addEventListener('resize', (e) => {
|
||||
this.height = document.body.offsetHeight -
|
||||
(this.dialogOption.hiddenFooter
|
||||
? this.dialogOption.fullscreen
|
||||
? 63 : 250 : this.dialogOption.fullscreen
|
||||
? 113 : 250)
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
close() {
|
||||
this.$emit('onClose')
|
||||
this.dialogOption.show = false
|
||||
},
|
||||
submit() {
|
||||
this.$emit('onSubmit', status => {
|
||||
if (status) this.close()
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.dialog-content {
|
||||
border-radius: 5px;
|
||||
padding: 20px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
::v-deep .el-dialog__header {
|
||||
padding: 10px;
|
||||
border-bottom: 1px solid #5B8BFF;
|
||||
}
|
||||
::v-deep .el-dialog__body {
|
||||
padding: 10px 0 0;
|
||||
}
|
||||
::v-deep .el-dialog__footer {
|
||||
padding: 0;
|
||||
text-align: right;
|
||||
}
|
||||
::v-deep .dialog-footer {
|
||||
//background-color: #eff4f9;
|
||||
text-align: center;
|
||||
padding: 10px;
|
||||
display: block;
|
||||
border-top: 1px solid #dcdfe6;
|
||||
}
|
||||
::v-deep .el-dialog {
|
||||
background: linear-gradient(to bottom, #E1ECFE, #FFFFFF);
|
||||
}
|
||||
.el-dialog__wrapper {
|
||||
height: 1000px;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,59 @@
|
||||
<template>
|
||||
<div class="flex-row" style="align-items: center">
|
||||
<i v-if="icon.includes('el-icon')" :class="[icon, 'sub-el-icon']" />
|
||||
<svg-icon v-else :icon-class="icon" />
|
||||
<i class="border-left"/>
|
||||
<span v-if="title" slot="title">{{ title }}</span>
|
||||
<el-button v-if="false" type="primary" class="dialog-close" icon="el-icon-close" @click="isClose" />
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
name: 'DialogTitle',
|
||||
// functional: true,
|
||||
props: {
|
||||
icon: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
title: {
|
||||
type: String,
|
||||
default: ''
|
||||
},
|
||||
isClose: {
|
||||
type: Function,
|
||||
default: () => {}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.sub-el-icon {
|
||||
color: $base-color-default;
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
}
|
||||
span {
|
||||
padding-left: 10px;
|
||||
font-size: 18px;
|
||||
line-height: 1.67;
|
||||
font-weight: 600;
|
||||
color: #242e42;
|
||||
}
|
||||
.border-left {
|
||||
display: inline-block;
|
||||
width: 5px;
|
||||
border-radius: 2.5px;
|
||||
height: 15px;
|
||||
background: #0052D9;
|
||||
}
|
||||
.dialog-close {
|
||||
position: absolute;
|
||||
right: 20px;
|
||||
}
|
||||
.el-button {
|
||||
padding: 8px;
|
||||
box-shadow: 0 8px 16px 0 rgb(35 45 65 / 28%);
|
||||
}
|
||||
</style>
|
@ -0,0 +1,114 @@
|
||||
<!--
|
||||
* @description: 自定义抽屉视图
|
||||
* @fileName: index
|
||||
* @author: 17076
|
||||
* @date: 2024/6/13-上午9:10
|
||||
* @version: V1.0.0
|
||||
-->
|
||||
|
||||
<template>
|
||||
<el-drawer
|
||||
:visible.sync="drawerOption['show']"
|
||||
:append-to-body="drawerOption['appendToBody']"
|
||||
:show-close="drawerOption['showClose'] || true"
|
||||
:modal="drawerOption['modal']"
|
||||
:direction="drawerOption['direction'] || 'rtl'"
|
||||
:wrapper-closable="drawerOption['wrapperClosable'] || false"
|
||||
:size="drawerOption['width'] || '35%'"
|
||||
destroy-on-close
|
||||
>
|
||||
<template slot="title">
|
||||
<span class="title">{{ drawerOption['title'] }}</span>
|
||||
</template>
|
||||
<el-scrollbar
|
||||
:style="{height: drawerOption['height'] || height + 'px'}"
|
||||
class="scroll-container"
|
||||
:native="false"
|
||||
:noresize="true"
|
||||
>
|
||||
<div class="drawer-content">
|
||||
<slot name="content" />
|
||||
</div>
|
||||
</el-scrollbar>
|
||||
<div
|
||||
v-if="!drawerOption['hiddenFooter']"
|
||||
class="drawer-footer"
|
||||
>
|
||||
<slot name="footer">
|
||||
<el-button type="primary" plain @click="reset" style="width: 150px">重 置</el-button>
|
||||
<el-button type="primary" @click="submit" style="width: 150px">确 定</el-button>
|
||||
</slot>
|
||||
</div>
|
||||
<div
|
||||
v-else
|
||||
class="drawer-footer"
|
||||
>
|
||||
<slot name="footer" />
|
||||
</div>
|
||||
</el-drawer>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'Index',
|
||||
props: {
|
||||
drawerOption: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {}
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
height: null
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.height = document.body.offsetHeight -
|
||||
(this.drawerOption['hiddenFooter'] ? 80 : 130)
|
||||
window.addEventListener('resize', (e) => {
|
||||
this.height = document.body.offsetHeight -
|
||||
(this.drawerOption['hiddenFooter'] ? 80 : 130)
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
// 重置按钮
|
||||
reset() {
|
||||
this.$emit('onReset')
|
||||
},
|
||||
// 确定按钮
|
||||
submit() {
|
||||
this.$emit('onSubmit', status => {
|
||||
if (status) this.drawerOption.show = false
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.title {
|
||||
font-weight: bold;
|
||||
font-size: 18px;
|
||||
color: #333333;
|
||||
padding-left: 10px;
|
||||
border-left: 5px solid #005AA8;
|
||||
}
|
||||
.drawer-content {
|
||||
padding: 20px;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.drawer-footer {
|
||||
text-align: right;
|
||||
padding: 0 20px;
|
||||
margin-top: 10px;
|
||||
}
|
||||
::v-deep {
|
||||
.el-drawer__header {
|
||||
border-bottom: 1px solid #E9E9E9;
|
||||
margin-bottom: 0;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,196 @@
|
||||
<!--
|
||||
* @description:
|
||||
* @fileName: bottomBtn
|
||||
* @author: xsz
|
||||
* @date: 2023/4/13-10:52
|
||||
* @version: V1.0.0
|
||||
-->
|
||||
<template>
|
||||
<div class="image-nav-bottom">
|
||||
<div class="image-nav-bottom__icon-wrap">
|
||||
<div class="__image_view__nav-bottom-button-block">
|
||||
<el-tooltip placement="top">
|
||||
<div slot="content">缩小<br>👇</div>
|
||||
<div class="__image_view__nav-bottom-icon-button image-viewer__actions__inner">
|
||||
<i class="el-icon-zoom-out" @click="handleActions('zoomOut')" />
|
||||
</div>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div class="__image_view__nav-bottom-button-block">
|
||||
<el-tooltip placement="top">
|
||||
<div slot="content">放大<br>👆</div>
|
||||
<div class="__image_view__nav-bottom-icon-button image-viewer__actions__inner">
|
||||
<i class="el-icon-zoom-in" @click="handleActions('zoomIn')" />
|
||||
</div>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div class="__image_view__nav-bottom-icon-button image-viewer__actions__vertical">
|
||||
<el-divider direction="vertical" />
|
||||
</div>
|
||||
<div class="__image_view__nav-bottom-button-block">
|
||||
<el-tooltip placement="top">
|
||||
<div slot="content">还原<br>SPACE</div>
|
||||
<div class="__image_view__nav-bottom-icon-button image-viewer__actions__inner">
|
||||
<i :class="mode.icon" @click="toggleMode" />
|
||||
</div>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div class="__image_view__nav-bottom-button-block">
|
||||
<el-tooltip placement="top">
|
||||
<div slot="content">打印</div>
|
||||
<div class="__image_view__nav-bottom-icon-button image-viewer__actions__inner">
|
||||
<i title="打印" class="el-icon-printer" />
|
||||
</div>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div class="__image_view__nav-bottom-button-block">
|
||||
<el-tooltip placement="top">
|
||||
<div slot="content">详细信息</div>
|
||||
<div class="__image_view__nav-bottom-icon-button image-viewer__actions__inner">
|
||||
<i title="详细信息" class="el-icon-info" @click="handleActions('drawer')" />
|
||||
</div>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div class="__image_view__nav-bottom-icon-button image-viewer__actions__vertical">
|
||||
<el-divider direction="vertical" />
|
||||
</div>
|
||||
<div class="__image_view__nav-bottom-button-block">
|
||||
<el-tooltip placement="top">
|
||||
<div slot="content">左转</div>
|
||||
<div class="__image_view__nav-bottom-icon-button image-viewer__actions__inner">
|
||||
<i class="el-icon-refresh-left" @click="handleActions('anticlocelise')" />
|
||||
</div>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
<div class="__image_view__nav-bottom-button-block">
|
||||
<el-tooltip placement="top">
|
||||
<div slot="content">右转</div>
|
||||
<div class="__image_view__nav-bottom-icon-button image-viewer__actions__inner">
|
||||
<i class="el-icon-refresh-right" @click="handleActions('clocelise')" />
|
||||
</div>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
const Mode = {
|
||||
CONTAIN: {
|
||||
name: 'contain',
|
||||
icon: 'el-icon-full-screen'
|
||||
},
|
||||
ORIGINAL: {
|
||||
name: 'original',
|
||||
icon: 'el-icon-c-scale-to-original'
|
||||
}
|
||||
}
|
||||
export default {
|
||||
name: 'BottomBtn',
|
||||
props: {
|
||||
transform: {
|
||||
type: Object,
|
||||
default: () => {
|
||||
return {
|
||||
scale: 1,
|
||||
deg: 0,
|
||||
offsetX: 0,
|
||||
offsetY: 0,
|
||||
enableTransition: false
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
mode: Mode.CONTAIN
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
imgTransform: {
|
||||
get() {
|
||||
return this.transform
|
||||
},
|
||||
set(val) {
|
||||
this.$emit('update:transform', val)
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
toggleMode() {
|
||||
if (this.loading) return
|
||||
|
||||
const modeNames = Object.keys(Mode)
|
||||
const modeValues = Object.values(Mode)
|
||||
const index = modeValues.indexOf(this.mode)
|
||||
const nextIndex = (index + 1) % modeNames.length
|
||||
this.mode = Mode[modeNames[nextIndex]]
|
||||
this.reset()
|
||||
},
|
||||
reset() {
|
||||
this.transform = {
|
||||
scale: 1,
|
||||
deg: 0,
|
||||
offsetX: 0,
|
||||
offsetY: 0,
|
||||
enableTransition: false
|
||||
}
|
||||
},
|
||||
handleActions(action, options = {}) {
|
||||
this.$baseEventBus.$emit('handleActions', { action, ...options })
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@mixin image-viewer {
|
||||
position: absolute;
|
||||
height: 60px;
|
||||
width: 100%;
|
||||
background-repeat: repeat-x;
|
||||
background-size: auto 100%;
|
||||
z-index: 1006;
|
||||
}
|
||||
@mixin image-viewer__actions {
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
text-align: center;
|
||||
font-size: 23px;
|
||||
color: #fff;
|
||||
line-height: 40px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
.image-nav-bottom {
|
||||
@include image-viewer;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
background-image: url(https://staticsns.cdn.bcebos.com/amis/2022-6/1656311284898/nav-bottom-bg.png);
|
||||
}
|
||||
.image-nav-bottom__icon-wrap {
|
||||
text-align: center;
|
||||
padding: 10px 0;
|
||||
box-sizing: border-box;
|
||||
font-size: 0;
|
||||
}
|
||||
.image-viewer__actions__inner {
|
||||
cursor: pointer;
|
||||
@include image-viewer__actions
|
||||
}
|
||||
.image-viewer__actions__vertical {
|
||||
@include image-viewer__actions
|
||||
}
|
||||
.__image_view__nav-bottom-button-block {
|
||||
display: inline-block;
|
||||
padding: 0 20px;
|
||||
position: relative;
|
||||
}
|
||||
.__image_view__nav-bottom-icon-button {
|
||||
display: inline-block;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
overflow: hidden;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,81 @@
|
||||
<!--
|
||||
* @description:
|
||||
* @fileName: excel
|
||||
* @author: xsz
|
||||
* @date: 2023/4/14-9:11
|
||||
* @version: V1.0.0
|
||||
-->
|
||||
<template>
|
||||
<div>
|
||||
<input
|
||||
id="inputFile"
|
||||
type="file"
|
||||
accept=".xlsx,.xls,.csv"
|
||||
style="margin-top: 80px;z-index: 99999"
|
||||
@change="change"
|
||||
>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import * as XLSX from 'xlsx'
|
||||
|
||||
export default {
|
||||
name: 'ExcelViewer',
|
||||
props: {
|
||||
docxUrl: {
|
||||
require: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
excel: null
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
docxUrl: {
|
||||
handler: function(val) {
|
||||
// this.excelRender(val)
|
||||
},
|
||||
immediate: true
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
},
|
||||
methods: {
|
||||
change(e) {
|
||||
const file = e.target.files[0]
|
||||
const reader = new FileReader()
|
||||
reader.readAsBinaryString(file)
|
||||
reader.onload = re => {
|
||||
const data = re.target.result
|
||||
this.$emit('sucess', data)
|
||||
const zzexcel = XLSX.read(data, {
|
||||
type: 'binary'
|
||||
})
|
||||
console.log(zzexcel)
|
||||
this.$emit('update:sheetsContent', zzexcel)
|
||||
// 将表中的数据以json格式输出
|
||||
// 常见的有 sheet_to_html 、sheet_to_csv等
|
||||
const content = XLSX.utils.sheet_to_json(zzexcel.Sheets.Sheet1)
|
||||
console.log(content)
|
||||
this.context = content
|
||||
}
|
||||
},
|
||||
excelRender(buffer) {
|
||||
setTimeout(() => {
|
||||
const bodyContainer = document.getElementById('bodyContainer')
|
||||
const workbook = XLSX.read(buffer)
|
||||
const wsname = workbook.SheetNames[0] // 取第一张表
|
||||
const ws = XLSX.utils.sheet_to_json(workbook.Sheets[wsname]) // 生成json表格内容
|
||||
console.log(ws)
|
||||
// console.log(XLSX.utils.sheet_to_html(this.excel))
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
</style>
|
@ -0,0 +1,201 @@
|
||||
<!--
|
||||
* @description:
|
||||
* @fileName: image
|
||||
* @author: xsz
|
||||
* @date: 2023/4/13-10:50
|
||||
* @version: V1.0.0
|
||||
-->
|
||||
<template>
|
||||
<div class="el-image-viewer__canvas">
|
||||
<template v-for="(url, i) in urlList">
|
||||
<img
|
||||
v-if="i === index"
|
||||
id="img"
|
||||
ref="img"
|
||||
:key="url.id"
|
||||
class="el-image-viewer__img"
|
||||
:src="url.image"
|
||||
:style="imgStyle"
|
||||
@mousedown="handleMouseDown"
|
||||
>
|
||||
</template>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { isFirefox, rafThrottle } from '../utils'
|
||||
import { off, on } from '../utils'
|
||||
const mousewheelEventName = isFirefox() ? 'DOMMouseScroll' : 'mousewheel'
|
||||
const Mode = {
|
||||
CONTAIN: {
|
||||
name: 'contain',
|
||||
icon: 'el-icon-full-screen'
|
||||
},
|
||||
ORIGINAL: {
|
||||
name: 'original',
|
||||
icon: 'el-icon-c-scale-to-original'
|
||||
}
|
||||
}
|
||||
export default {
|
||||
name: 'ImageViewer',
|
||||
props: {
|
||||
urlList: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
index: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
initialIndex: {
|
||||
type: Number,
|
||||
default: 0
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
mode: Mode.CONTAIN,
|
||||
transform: {
|
||||
scale: 1,
|
||||
deg: 0,
|
||||
offsetX: 0,
|
||||
offsetY: 0,
|
||||
enableTransition: false
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
imgStyle() {
|
||||
const { scale, deg, offsetX, offsetY, enableTransition } = this.transform
|
||||
const style = {
|
||||
transform: `scale(${scale}) rotate(${deg}deg)`,
|
||||
transition: enableTransition ? 'transform .3s' : '',
|
||||
'margin-left': `${offsetX}px`,
|
||||
'margin-top': `${offsetY}px`
|
||||
}
|
||||
if (this.mode === Mode.CONTAIN) {
|
||||
style.maxWidth = '100%'
|
||||
style.maxHeight = '100%'
|
||||
}
|
||||
return style
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.deviceSupportInstall()
|
||||
this.handleActions()
|
||||
},
|
||||
destroyed() {
|
||||
this.deviceSupportUninstall()
|
||||
},
|
||||
methods: {
|
||||
deviceSupportInstall() {
|
||||
this._keyDownHandler = rafThrottle(e => {
|
||||
const keyCode = e.keyCode
|
||||
switch (keyCode) {
|
||||
// ESC
|
||||
case 27:
|
||||
this.hide()
|
||||
break
|
||||
// SPACE
|
||||
case 32:
|
||||
this.toggleMode()
|
||||
break
|
||||
// LEFT_ARROW
|
||||
case 37:
|
||||
this.$emit('prev')
|
||||
break
|
||||
// UP_ARROW
|
||||
case 38:
|
||||
this.performAction({ action: 'zoomIn' })
|
||||
break
|
||||
// RIGHT_ARROW
|
||||
case 39:
|
||||
this.$emit('next')
|
||||
break
|
||||
// DOWN_ARROW
|
||||
case 40:
|
||||
this.performAction({ action: 'zoomOut' })
|
||||
break
|
||||
}
|
||||
})
|
||||
this._mouseWheelHandler = rafThrottle(e => {
|
||||
const delta = e.wheelDelta ? e.wheelDelta : -e.detail
|
||||
if (delta > 0) {
|
||||
this.performAction({ action: 'zoomIn', options: {
|
||||
zoomRate: 0.015,
|
||||
enableTransition: false
|
||||
}})
|
||||
} else {
|
||||
this.performAction({ action: 'zoomOut', options: {
|
||||
zoomRate: 0.015,
|
||||
enableTransition: false
|
||||
}})
|
||||
}
|
||||
})
|
||||
on(document, 'keydown', this._keyDownHandler)
|
||||
on(document, mousewheelEventName, this._mouseWheelHandler)
|
||||
},
|
||||
deviceSupportUninstall() {
|
||||
off(document, 'keydown', this._keyDownHandler)
|
||||
off(document, mousewheelEventName, this._mouseWheelHandler)
|
||||
this._keyDownHandler = null
|
||||
this._mouseWheelHandler = null
|
||||
},
|
||||
handleActions() {
|
||||
this.$baseEventBus.$on('handleActions', (options) => {
|
||||
this.performAction(options)
|
||||
})
|
||||
},
|
||||
performAction({ action, options }) {
|
||||
const { transform } = this
|
||||
const { zoomRate, rotateDeg, enableTransition } = {
|
||||
zoomRate: 0.2,
|
||||
rotateDeg: 90,
|
||||
enableTransition: true,
|
||||
...options
|
||||
}
|
||||
switch (action) {
|
||||
case 'zoomOut':
|
||||
if (transform.scale > 0.2) {
|
||||
transform.scale = parseFloat((transform.scale - zoomRate).toFixed(3))
|
||||
}
|
||||
break
|
||||
case 'zoomIn':
|
||||
transform.scale = parseFloat((transform.scale + zoomRate).toFixed(3))
|
||||
break
|
||||
case 'clocelise':
|
||||
transform.deg += rotateDeg
|
||||
break
|
||||
case 'drawer':
|
||||
this.$emit('drawer')
|
||||
break
|
||||
case 'anticlocelise':
|
||||
transform.deg -= rotateDeg
|
||||
break
|
||||
}
|
||||
transform.enableTransition = enableTransition
|
||||
},
|
||||
handleMouseDown(e) {
|
||||
if (this.loading || e.button !== 0) return
|
||||
|
||||
const { offsetX, offsetY } = this.transform
|
||||
const startX = e.pageX
|
||||
const startY = e.pageY
|
||||
this._dragHandler = rafThrottle(ev => {
|
||||
this.transform.offsetX = offsetX + ev.pageX - startX
|
||||
this.transform.offsetY = offsetY + ev.pageY - startY
|
||||
})
|
||||
on(document, 'mousemove', this._dragHandler)
|
||||
on(document, 'mouseup', ev => {
|
||||
off(document, 'mousemove', this._dragHandler)
|
||||
})
|
||||
|
||||
e.preventDefault()
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
</style>
|
@ -0,0 +1,46 @@
|
||||
<!--
|
||||
* @description:
|
||||
* @fileName: pdf
|
||||
* @author: xsz
|
||||
* @date: 2023/4/21-11:24
|
||||
* @version: V1.0.0
|
||||
-->
|
||||
<template>
|
||||
<div style="position: absolute;width: 100%;height: 100%;top: 45px">
|
||||
<iframe :src="docxUrl" width="100%" height="100%" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'PdfViewer',
|
||||
props: {
|
||||
docxUrl: {
|
||||
require: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {}
|
||||
},
|
||||
watch: {
|
||||
docxUrl: {
|
||||
handler: function(val) {
|
||||
this.docxRender(val)
|
||||
},
|
||||
immediate: true
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
docxRender(url) {
|
||||
setTimeout(() => {
|
||||
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
|
||||
</style>
|
@ -0,0 +1,80 @@
|
||||
<!--
|
||||
* @description:
|
||||
* @fileName: word
|
||||
* @author: xsz
|
||||
* @date: 2023/4/13-16:41
|
||||
* @version: V1.0.0
|
||||
-->
|
||||
<template>
|
||||
<div>
|
||||
<div ref="ace" class="txt-viewer" />
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import ace from 'ace-builds'
|
||||
import 'ace-builds/src-noconflict/snippets/javascript'
|
||||
import 'ace-builds/src-noconflict/snippets/text'
|
||||
export default {
|
||||
name: 'TxtViewer',
|
||||
props: {
|
||||
docxUrl: {
|
||||
require: true
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
aceEditor: null,
|
||||
toggle: true,
|
||||
wrap: true,
|
||||
themePath: 'ace/theme/monokai',
|
||||
modePath: 'ace/mode/text',
|
||||
resultDa: '',
|
||||
inputDa: '',
|
||||
modelAce: '\nfunction hanlde(data){\n\t//请输入处理脚本\n\t\n\treturn data;\n}',
|
||||
isValidate: true
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
docxUrl: {
|
||||
handler: function(val) {
|
||||
this.txtRender(val)
|
||||
},
|
||||
immediate: true
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.aceEditor = ace.edit(this.$refs.ace, {
|
||||
maxLines: 90,
|
||||
minLines: 50,
|
||||
fontSize: 14,
|
||||
value: this.value ? this.value : '',
|
||||
theme: this.themePath,
|
||||
mode: this.modePath,
|
||||
tabSize: 4
|
||||
})
|
||||
},
|
||||
methods: {
|
||||
txtRender(buffer) {
|
||||
const blob = new Blob([buffer], { type: 'text/html' })
|
||||
setTimeout(() => {
|
||||
const reader = new FileReader()
|
||||
reader.onload = (ev) => {
|
||||
const content = ev.target.result || '空文件'
|
||||
this.aceEditor.getSession().setValue(content)
|
||||
}
|
||||
reader.readAsText(blob)
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.txt-viewer {
|
||||
// color: white;
|
||||
width: 80%;
|
||||
margin: 30px auto;
|
||||
vertical-align: center;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,10 @@
|
||||
/**
|
||||
* @description:
|
||||
* @fileName: eventBuss
|
||||
* @author: xsz
|
||||
* @date: 2023/4/13-13:32
|
||||
* @version: V1.0.0
|
||||
**/
|
||||
import Vue from 'vue'
|
||||
|
||||
Vue.prototype.$baseEventBus = new Vue()
|
@ -0,0 +1,20 @@
|
||||
import Vue from 'vue'
|
||||
|
||||
const requireComponents = require.context('./components', true, /\.vue$/)
|
||||
requireComponents.keys().forEach((fileName) => {
|
||||
const componentConfig = requireComponents(fileName)
|
||||
const componentName = componentConfig.default.name
|
||||
Vue.component(componentName, componentConfig.default || componentConfig)
|
||||
})
|
||||
|
||||
/* const requireZxLayouts = require.context('zx-layouts', true, /\.vue$/)
|
||||
requireZxLayouts.keys().forEach((fileName) => {
|
||||
const componentConfig = requireZxLayouts(fileName)
|
||||
const componentName = componentConfig.default.name
|
||||
Vue.component(componentName, componentConfig.default || componentConfig)
|
||||
})*/
|
||||
|
||||
/* const requireThemes = require.context('@/styles/themes', true, /\.scss$/)
|
||||
requireThemes.keys().forEach((fileName) => {
|
||||
require(`@/styles/themes/${fileName.slice(2)}`)
|
||||
}) */
|
@ -0,0 +1,208 @@
|
||||
<!--
|
||||
* @description:
|
||||
* @fileName: index
|
||||
* @author: xsz
|
||||
* @date: 2023/4/13-10:15
|
||||
* @version: V1.0.0
|
||||
-->
|
||||
<template>
|
||||
<div>
|
||||
<transition name="viewer-fade">
|
||||
<div ref="el-image-viewer__wrapper" tabindex="-1" class="el-image-viewer__wrapper" :style="{ 'z-index': zIndex,'right': drawer ?'310px': 0 }">
|
||||
<div class="el-image-viewer__mask" />
|
||||
<!-- CLOSE -->
|
||||
<div class="image-nav-top">
|
||||
<el-tooltip placement="top">
|
||||
<div slot="content">退出<br>ESC</div>
|
||||
<span class="image-viewer__btn image-viewer__close" @click="hide">
|
||||
<i class="el-icon-close" />
|
||||
</span>
|
||||
</el-tooltip>
|
||||
</div>
|
||||
|
||||
<!-- ARROW -->
|
||||
<template v-if="!isSingle">
|
||||
<span
|
||||
class="el-image-viewer__btn el-image-viewer__prev"
|
||||
:class="{ 'is-disabled': !infinite && isFirst }"
|
||||
@click="prev"
|
||||
>
|
||||
<i class="el-icon-arrow-left" />
|
||||
</span>
|
||||
<span
|
||||
class="el-image-viewer__btn el-image-viewer__next"
|
||||
:class="{ 'is-disabled': !infinite && isLast }"
|
||||
@click="next"
|
||||
>
|
||||
<i class="el-icon-arrow-right" />
|
||||
</span>
|
||||
</template>
|
||||
<!-- ACTIONS -->
|
||||
<bottom-btn v-if="fileType === 'image'" />
|
||||
<!-- CANVAS -->
|
||||
<template>
|
||||
<component
|
||||
:is="currenComponent"
|
||||
:url-list="urlList"
|
||||
:docx-url="docxUrl"
|
||||
:index="index"
|
||||
@prev="prev"
|
||||
@next="next"
|
||||
@drawer="drawer = !drawer"
|
||||
/>
|
||||
</template>
|
||||
</div>
|
||||
</transition>
|
||||
<right-drawer
|
||||
v-if="drawer"
|
||||
@close-drawer="drawer = false"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import './export'
|
||||
import RightDrawer from '@/components/FileViewer/rightDrawer'
|
||||
import BottomBtn from '@/components/FileViewer/bottomBtn'
|
||||
|
||||
export default {
|
||||
name: 'FileViewer',
|
||||
components: { BottomBtn, RightDrawer },
|
||||
props: {
|
||||
urlList: {
|
||||
type: Array,
|
||||
default: () => []
|
||||
},
|
||||
docxUrl: {
|
||||
},
|
||||
zIndex: {
|
||||
type: Number,
|
||||
default: 2000
|
||||
},
|
||||
fileType: {
|
||||
type: String,
|
||||
default: 'image'
|
||||
},
|
||||
onClose: {
|
||||
type: Function,
|
||||
default: () => {
|
||||
}
|
||||
},
|
||||
initialIndex: {
|
||||
type: Number,
|
||||
default: 0
|
||||
}
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
drawer: false,
|
||||
infinite: true,
|
||||
index: this.initialIndex
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
isSingle() {
|
||||
return this.urlList.length <= 1
|
||||
},
|
||||
isFirst() {
|
||||
return this.index === 0
|
||||
},
|
||||
isLast() {
|
||||
return this.index === this.urlList.length - 1
|
||||
},
|
||||
currenComponent() {
|
||||
let rander = 'ImageViewer'
|
||||
switch (this.fileType) {
|
||||
case 'image':
|
||||
rander = 'ImageViewer'
|
||||
break
|
||||
case 'video':
|
||||
rander = 'VideoViewer'
|
||||
break
|
||||
case 'word':
|
||||
rander = 'WordViewer'
|
||||
break
|
||||
case 'pdf':
|
||||
rander = 'PdfViewer'
|
||||
break
|
||||
case 'txt':
|
||||
rander = 'TxtViewer'
|
||||
break
|
||||
case 'js':
|
||||
rander = 'TxtViewer'
|
||||
break
|
||||
case 'excel':
|
||||
rander = 'ExcelViewer'
|
||||
break
|
||||
}
|
||||
return rander
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.$refs['el-image-viewer__wrapper'].focus()
|
||||
},
|
||||
methods: {
|
||||
hide() {
|
||||
this.onClose()
|
||||
},
|
||||
prev() {
|
||||
if (this.isFirst && !this.infinite) return
|
||||
const len = this.urlList.length
|
||||
this.index = (this.index - 1 + len) % len
|
||||
},
|
||||
next() {
|
||||
if (this.isLast && !this.infinite) return
|
||||
const len = this.urlList.length
|
||||
this.index = (this.index + 1) % len
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
@mixin image-viewer {
|
||||
position: absolute;
|
||||
height: 60px;
|
||||
width: 100%;
|
||||
background-repeat: repeat-x;
|
||||
background-size: auto 100%;
|
||||
z-index: 1006;
|
||||
}
|
||||
@mixin hover {
|
||||
border-radius: 50%;
|
||||
opacity: 0.8;
|
||||
background-color: #606266;
|
||||
}
|
||||
.el-image-viewer__wrapper {
|
||||
background-color: rgba(0,0,0,0.95);
|
||||
}
|
||||
.image-viewer__btn {
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
//cursor: pointer;
|
||||
box-sizing: border-box;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
.image-viewer__btn:hover {
|
||||
@include hover;
|
||||
}
|
||||
.image-nav-top {
|
||||
@include image-viewer;
|
||||
top: 0;
|
||||
left: 0;
|
||||
background-image: url(https://staticsns.cdn.bcebos.com/amis/2022-6/1656311285406/nav-top-bg.png);
|
||||
.image-viewer__close {
|
||||
top: 5px;
|
||||
right: 40px;
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
font-size: 24px;
|
||||
color: #fff;
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,103 @@
|
||||
<!--
|
||||
* @description:
|
||||
* @fileName: rightDrawer
|
||||
* @author: xsz
|
||||
* @date: 2023/4/13-10:43
|
||||
* @version: V1.0.0
|
||||
-->
|
||||
<template>
|
||||
<transition>
|
||||
<div class="image-viewer-info">
|
||||
<div class="aside-wrap__title">
|
||||
详情
|
||||
</div>
|
||||
<div class="aside-wrap__icon-close" @click="$emit('close-drawer')" />
|
||||
<div class="aside-wrap__image-info">
|
||||
<div class="picture-block__title title-block__top">
|
||||
文件名
|
||||
</div>
|
||||
<div class="title-block__value title-block__top">
|
||||
QQ截图
|
||||
</div>
|
||||
</div>
|
||||
<div class="aside-wrap__image-info">
|
||||
<div class="picture-block__title title-block__top">
|
||||
文件名
|
||||
</div>
|
||||
<div class="title-block__value title-block__top">
|
||||
QQ截图
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</transition>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
export default {
|
||||
name: 'RightDrawer',
|
||||
data() {
|
||||
return {}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.image-viewer-info {
|
||||
position:fixed;
|
||||
top:0;
|
||||
right: 0;
|
||||
width: 310px;
|
||||
height: 100vh;
|
||||
background-color: #191919;
|
||||
padding: 20px 0 20px 40px;
|
||||
z-index: 3100;
|
||||
box-sizing: border-box;
|
||||
overflow: hidden;
|
||||
}
|
||||
.aside-wrap__title {
|
||||
font-size: 16px;
|
||||
color: #FFFFFF;
|
||||
letter-spacing: 0;
|
||||
font-weight: 600;
|
||||
min-width: 50px;
|
||||
}
|
||||
.aside-wrap__icon-close {
|
||||
width: 18px;
|
||||
height: 70px;
|
||||
background: #D8D8D8;
|
||||
background: url(https://staticsns.cdn.bcebos.com/amis/2022-6/1656310487139/aside-close.png) no-repeat center;
|
||||
background-size: 100%;
|
||||
position: absolute;
|
||||
left: 0;
|
||||
margin-top: -35px;
|
||||
top: 50%;
|
||||
cursor: pointer;
|
||||
transition: margin .2s ease-in-out;
|
||||
}
|
||||
.aside-wrap__image-info {
|
||||
margin-top: 30px;
|
||||
}
|
||||
.picture-block__title {
|
||||
font-size: 12px;
|
||||
color: #FFFFFF;
|
||||
letter-spacing: 0;
|
||||
font-weight: 600;
|
||||
margin-right: 10px;
|
||||
min-width: 50px;
|
||||
display: inline-block;
|
||||
}
|
||||
.title-block__top {
|
||||
vertical-align: text-top;
|
||||
}
|
||||
.title-block__value {
|
||||
font-size: 12px;
|
||||
color: #999999;
|
||||
letter-spacing: 0;
|
||||
font-weight: 400;
|
||||
display: inline-block;
|
||||
width: 155px;
|
||||
word-wrap: break-word;
|
||||
word-break: normal;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,59 @@
|
||||
/**
|
||||
* @description:
|
||||
* @fileName: index
|
||||
* @author: xsz
|
||||
* @date: 2023/4/13-10:19
|
||||
* @version: V1.0.0
|
||||
**/
|
||||
import Vue from 'vue'
|
||||
const isServer = Vue.prototype.$isServer
|
||||
|
||||
export const isFirefox = function() {
|
||||
return !isServer && !!window.navigator.userAgent.match(/firefox/i)
|
||||
}
|
||||
|
||||
export function rafThrottle(fn) {
|
||||
let locked = false
|
||||
return function(...args) {
|
||||
if (locked) return
|
||||
locked = true
|
||||
window.requestAnimationFrame(_ => {
|
||||
fn.apply(this, args)
|
||||
locked = false
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
/* istanbul ignore next */
|
||||
export const on = (function() {
|
||||
if (!isServer && document.addEventListener) {
|
||||
return function(element, event, handler) {
|
||||
if (element && event && handler) {
|
||||
element.addEventListener(event, handler, false)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return function(element, event, handler) {
|
||||
if (element && event && handler) {
|
||||
element.attachEvent('on' + event, handler)
|
||||
}
|
||||
}
|
||||
}
|
||||
})()
|
||||
|
||||
/* istanbul ignore next */
|
||||
export const off = (function() {
|
||||
if (!isServer && document.removeEventListener) {
|
||||
return function(element, event, handler) {
|
||||
if (element && event) {
|
||||
element.removeEventListener(event, handler, false)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return function(element, event, handler) {
|
||||
if (element && event) {
|
||||
element.detachEvent('on' + event, handler)
|
||||
}
|
||||
}
|
||||
}
|
||||
})()
|
@ -0,0 +1,3 @@
|
||||
const elementIcons = ['platform-eleme', 'eleme', 'delete-solid', 'delete', 's-tools', 'setting', 'user-solid', 'user', 'phone', 'phone-outline', 'more', 'more-outline', 'star-on', 'star-off', 's-goods', 'goods', 'warning', 'warning-outline', 'question', 'info', 'remove', 'circle-plus', 'success', 'error', 'zoom-in', 'zoom-out', 'remove-outline', 'circle-plus-outline', 'circle-check', 'circle-close', 's-help', 'help', 'minus', 'plus', 'check', 'close', 'picture', 'picture-outline', 'picture-outline-round', 'upload', 'upload2', 'download', 'camera-solid', 'camera', 'video-camera-solid', 'video-camera', 'message-solid', 'bell', 's-cooperation', 's-order', 's-platform', 's-fold', 's-unfold', 's-operation', 's-promotion', 's-home', 's-release', 's-ticket', 's-management', 's-open', 's-shop', 's-marketing', 's-flag', 's-comment', 's-finance', 's-claim', 's-custom', 's-opportunity', 's-data', 's-check', 's-grid', 'menu', 'share', 'd-caret', 'caret-left', 'caret-right', 'caret-bottom', 'caret-top', 'bottom-left', 'bottom-right', 'back', 'right', 'bottom', 'top', 'top-left', 'top-right', 'arrow-left', 'arrow-right', 'arrow-down', 'arrow-up', 'd-arrow-left', 'd-arrow-right', 'video-pause', 'video-play', 'refresh', 'refresh-right', 'refresh-left', 'finished', 'sort', 'sort-up', 'sort-down', 'rank', 'loading', 'view', 'c-scale-to-original', 'date', 'edit', 'edit-outline', 'folder', 'folder-opened', 'folder-add', 'folder-remove', 'folder-delete', 'folder-checked', 'tickets', 'document-remove', 'document-delete', 'document-copy', 'document-checked', 'document', 'document-add', 'printer', 'paperclip', 'takeaway-box', 'search', 'monitor', 'attract', 'mobile', 'scissors', 'umbrella', 'headset', 'brush', 'mouse', 'coordinate', 'magic-stick', 'reading', 'data-line', 'data-board', 'pie-chart', 'data-analysis', 'collection-tag', 'film', 'suitcase', 'suitcase-1', 'receiving', 'collection', 'files', 'notebook-1', 'notebook-2', 'toilet-paper', 'office-building', 'school', 'table-lamp', 'house', 'no-smoking', 'smoking', 'shopping-cart-full', 'shopping-cart-1', 'shopping-cart-2', 'shopping-bag-1', 'shopping-bag-2', 'sold-out', 'sell', 'present', 'box', 'bank-card', 'money', 'coin', 'wallet', 'discount', 'price-tag', 'news', 'guide', 'male', 'female', 'thumb', 'cpu', 'link', 'connection', 'open', 'turn-off', 'set-up', 'chat-round', 'chat-line-round', 'chat-square', 'chat-dot-round', 'chat-dot-square', 'chat-line-square', 'message', 'postcard', 'position', 'turn-off-microphone', 'microphone', 'close-notification', 'bangzhu', 'time', 'odometer', 'crop', 'aim', 'switch-button', 'full-screen', 'copy-document', 'mic', 'stopwatch', 'medal-1', 'medal', 'trophy', 'trophy-1', 'first-aid-kit', 'discover', 'place', 'location', 'location-outline', 'location-information', 'add-location', 'delete-location', 'map-location', 'alarm-clock', 'timer', 'watch-1', 'watch', 'lock', 'unlock', 'key', 'service', 'mobile-phone', 'bicycle', 'truck', 'ship', 'basketball', 'football', 'soccer', 'baseball', 'wind-power', 'light-rain', 'lightning', 'heavy-rain', 'sunrise', 'sunrise-1', 'sunset', 'sunny', 'cloudy', 'partly-cloudy', 'cloudy-and-sunny', 'moon', 'moon-night', 'dish', 'dish-1', 'food', 'chicken', 'fork-spoon', 'knife-fork', 'burger', 'tableware', 'sugar', 'dessert', 'ice-cream', 'hot-water', 'water-cup', 'coffee-cup', 'cold-drink', 'goblet', 'goblet-full', 'goblet-square', 'goblet-square-full', 'refrigerator', 'grape', 'watermelon', 'cherry', 'apple', 'pear', 'orange', 'coffee', 'ice-tea', 'ice-drink', 'milk-tea', 'potato-strips', 'lollipop', 'ice-cream-square', 'ice-cream-round']
|
||||
|
||||
export default elementIcons
|
@ -0,0 +1,80 @@
|
||||
<template>
|
||||
<div class="icon-body">
|
||||
<el-input v-model="name" style="position: relative;" clearable placeholder="请输入图标名称" @clear="filterIcons" @input.native="filterIcons">
|
||||
<i slot="suffix" class="el-icon-search el-input__icon" />
|
||||
</el-input>
|
||||
<div class="icon-list">
|
||||
<div v-for="(item, index) in iconList" :key="index" style="display: flex" @click="selectedIcon(item)">
|
||||
<svg-icon :icon-class="item" style="height: 30px;width: 16px;padding-right: 8px" />
|
||||
<span>{{ item }}</span>
|
||||
</div>
|
||||
<div v-for="item in elementList" :key="item" style="display: flex;align-items: baseline;" @click="selectedIcon('el-icon-' + item)">
|
||||
<i :class="'el-icon-' + item" style="height: 30px;width: 16px;padding-right: 8px" />
|
||||
<span>el-icon-{{ item }}</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import icons from './requireIcons'
|
||||
import elementIcons from './element-icons'
|
||||
export default {
|
||||
name: 'IconSelect',
|
||||
data() {
|
||||
return {
|
||||
name: '',
|
||||
iconList: icons,
|
||||
elementList: elementIcons
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
filterIcons() {
|
||||
this.iconList = icons
|
||||
this.elementList = elementIcons
|
||||
if (this.name && this.name.indexOf('el-icon') !== -1) {
|
||||
const query = this.name.split('el-icon-')
|
||||
this.iconList = null
|
||||
this.elementList = this.elementList.filter(item => item.includes(query[1]))
|
||||
} else {
|
||||
this.elementList = null
|
||||
this.iconList = this.iconList.filter(item => item.includes(this.name))
|
||||
}
|
||||
},
|
||||
selectedIcon(name) {
|
||||
this.$emit('selected', name)
|
||||
document.body.click()
|
||||
},
|
||||
reset() {
|
||||
this.name = ''
|
||||
this.iconList = icons
|
||||
this.elementList = elementIcons
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style rel="stylesheet/scss" lang="scss" scoped>
|
||||
.icon-body {
|
||||
width: 100%;
|
||||
padding: 10px;
|
||||
.icon-list {
|
||||
height: 200px;
|
||||
overflow-y: scroll;
|
||||
div {
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
margin-bottom: -5px;
|
||||
cursor: pointer;
|
||||
width: 33%;
|
||||
float: left;
|
||||
}
|
||||
span {
|
||||
display: inline-block;
|
||||
vertical-align: -0.15em;
|
||||
fill: currentColor;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
@ -0,0 +1,11 @@
|
||||
|
||||
const req = require.context('../../icons/svg', false, /\.svg$/)
|
||||
const requireAll = requireContext => requireContext.keys()
|
||||
|
||||
const re = /\.\/(.*)\.svg/
|
||||
|
||||
const icons = requireAll(req).map(i => {
|
||||
return i.match(re)[1]
|
||||
})
|
||||
|
||||
export default icons
|
@ -0,0 +1,364 @@
|
||||
<template>
|
||||
<transition name="viewer-fade">
|
||||
<div ref="el-image-viewer__wrapper" tabindex="-1" class="el-image-viewer__wrapper" :style="{ 'z-index': zIndex }">
|
||||
<div class="el-image-viewer__mask" :class="imgShow ? '' : 'el-pdf-viewer__mask'" />
|
||||
<!-- CLOSE -->
|
||||
<span class="el-image-viewer__btn el-image-viewer__close" @click="hide">
|
||||
<i class="el-icon-circle-close" />
|
||||
</span>
|
||||
<!-- ARROW -->
|
||||
<template v-if="!isSingle">
|
||||
<span
|
||||
class="el-image-viewer__btn el-image-viewer__prev"
|
||||
:class="{ 'is-disabled': !infinite && isFirst }"
|
||||
@click="prev"
|
||||
>
|
||||
<i class="el-icon-arrow-left" />
|
||||
</span>
|
||||
<span
|
||||
class="el-image-viewer__btn el-image-viewer__next"
|
||||
:class="{ 'is-disabled': !infinite && isLast }"
|
||||
@click="next"
|
||||
>
|
||||
<i class="el-icon-arrow-right" />
|
||||
</span>
|
||||
</template>
|
||||
<!-- ACTIONS -->
|
||||
<div v-if="imgShow" class="el-image-viewer__btn el-image-viewer__actions">
|
||||
<div class="el-image-viewer__actions__inner">
|
||||
<i class="el-icon-zoom-out" @click="handleActions('zoomOut')" />
|
||||
<i class="el-icon-zoom-in" @click="handleActions('zoomIn')" />
|
||||
<i class="el-image-viewer__actions__divider" />
|
||||
<i :class="mode.icon" @click="toggleMode" />
|
||||
<i class="el-image-viewer__actions__divider" />
|
||||
<i title="打印" class="el-icon-printer" @click="handlePrinter" />
|
||||
<i class="el-image-viewer__actions__divider" />
|
||||
<i class="el-icon-refresh-left" @click="handleActions('anticlocelise')" />
|
||||
<i class="el-icon-refresh-right" @click="handleActions('clocelise')" />
|
||||
</div>
|
||||
</div>
|
||||
<!-- CANVAS -->
|
||||
<div v-if="imgShow" class="el-image-viewer__canvas">
|
||||
<div v-for="(url, i) in urlList" :key="i">
|
||||
<img
|
||||
v-if="i === index"
|
||||
id="img"
|
||||
ref="img"
|
||||
:key="i"
|
||||
class="el-image-viewer__img"
|
||||
:src="currentImg"
|
||||
:style="imgStyle"
|
||||
@load="handleImgLoad"
|
||||
@error="handleImgError"
|
||||
@mousedown="handleMouseDown"
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
<div v-if="!imgShow" class="el-image-viewer__canvas">
|
||||
<iframe id="iframeref" :src="currentImg" frameborder="0" width="100%" height="100%" />
|
||||
</div>
|
||||
<canvas id="test" />
|
||||
</div>
|
||||
</transition>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { on, off } from 'element-ui/src/utils/dom'
|
||||
import { rafThrottle, isFirefox } from 'element-ui/src/utils/util'
|
||||
const Mode = {
|
||||
CONTAIN: {
|
||||
name: 'contain',
|
||||
icon: 'el-icon-full-screen'
|
||||
},
|
||||
ORIGINAL: {
|
||||
name: 'original',
|
||||
icon: 'el-icon-c-scale-to-original'
|
||||
}
|
||||
}
|
||||
|
||||
const mousewheelEventName = isFirefox() ? 'DOMMouseScroll' : 'mousewheel'
|
||||
export default {
|
||||
name: 'ElImageViewer',
|
||||
components: { },
|
||||
|
||||
props: {
|
||||
urlList: {
|
||||
type: [Array, String],
|
||||
default: () => []
|
||||
},
|
||||
zIndex: {
|
||||
type: Number,
|
||||
default: 3000
|
||||
},
|
||||
onSwitch: {
|
||||
type: Function,
|
||||
default: () => {}
|
||||
},
|
||||
onClose: {
|
||||
type: Function,
|
||||
default: () => {}
|
||||
},
|
||||
initialIndex: {
|
||||
type: Number,
|
||||
default: 0
|
||||
},
|
||||
watermark: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
imgUrl: '',
|
||||
index: this.initialIndex,
|
||||
isShow: false,
|
||||
infinite: true,
|
||||
loading: false,
|
||||
imgShow: true,
|
||||
mode: Mode.CONTAIN,
|
||||
transform: {
|
||||
scale: 1,
|
||||
deg: 0,
|
||||
offsetX: 0,
|
||||
offsetY: 0,
|
||||
enableTransition: false
|
||||
}
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
isSingle() {
|
||||
return this.urlList?.length <= 1
|
||||
},
|
||||
isFirst() {
|
||||
return this.index === 0
|
||||
},
|
||||
isLast() {
|
||||
return this.index === this.urlList?.length - 1
|
||||
},
|
||||
currentImg() {
|
||||
const fileUrl = (typeof this.urlList[this.index] === 'object') ? this.urlList[this.index]?.url : this.urlList
|
||||
return fileUrl
|
||||
/* if (this.urlList[this.index]?.name.includes('pdf')) {
|
||||
// return './pdfjs/web/viewer.html?file=' + fileUrl + '&keyword=' + encodeURIComponent(this.watermark)
|
||||
return '/graduate/api/graduateInfo/showFile?id=' + fileUrl
|
||||
} else {
|
||||
return fileUrl
|
||||
}*/
|
||||
},
|
||||
imgStyle() {
|
||||
const { scale, deg, offsetX, offsetY, enableTransition } = this.transform
|
||||
const style = {
|
||||
transform: `scale(${scale}) rotate(${deg}deg)`,
|
||||
transition: enableTransition ? 'transform .3s' : '',
|
||||
'margin-left': `${offsetX}px`,
|
||||
'margin-top': `${offsetY}px`
|
||||
}
|
||||
if (this.mode === Mode.CONTAIN) {
|
||||
style.maxWidth = '100%'
|
||||
style.maxHeight = '100%'
|
||||
}
|
||||
return style
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
index: {
|
||||
handler: function(val) {
|
||||
this.reset()
|
||||
this.onSwitch(val)
|
||||
}
|
||||
},
|
||||
currentImg: {
|
||||
handler(val) {
|
||||
this.imgShow = this.urlList[this.index].indexOf('pdf') === -1
|
||||
},
|
||||
immediate: true
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.deviceSupportInstall()
|
||||
// add tabindex then wrapper can be focusable via Javascript
|
||||
// focus wrapper so arrow key can't cause inner scroll behavior underneath
|
||||
this.$refs['el-image-viewer__wrapper'].focus()
|
||||
},
|
||||
methods: {
|
||||
hide() {
|
||||
this.deviceSupportUninstall()
|
||||
this.onClose()
|
||||
},
|
||||
deviceSupportInstall() {
|
||||
this._keyDownHandler = rafThrottle(e => {
|
||||
const keyCode = e.keyCode
|
||||
switch (keyCode) {
|
||||
// ESC
|
||||
case 27:
|
||||
this.hide()
|
||||
break
|
||||
// SPACE
|
||||
case 32:
|
||||
this.toggleMode()
|
||||
break
|
||||
// LEFT_ARROW
|
||||
case 37:
|
||||
this.prev()
|
||||
break
|
||||
// UP_ARROW
|
||||
case 38:
|
||||
this.handleActions('zoomIn')
|
||||
break
|
||||
// RIGHT_ARROW
|
||||
case 39:
|
||||
this.next()
|
||||
break
|
||||
// DOWN_ARROW
|
||||
case 40:
|
||||
this.handleActions('zoomOut')
|
||||
break
|
||||
}
|
||||
})
|
||||
this._mouseWheelHandler = rafThrottle(e => {
|
||||
const delta = e.wheelDelta ? e.wheelDelta : -e.detail
|
||||
if (delta > 0) {
|
||||
this.handleActions('zoomIn', {
|
||||
zoomRate: 0.015,
|
||||
enableTransition: false
|
||||
})
|
||||
} else {
|
||||
this.handleActions('zoomOut', {
|
||||
zoomRate: 0.015,
|
||||
enableTransition: false
|
||||
})
|
||||
}
|
||||
})
|
||||
on(document, 'keydown', this._keyDownHandler)
|
||||
on(document, mousewheelEventName, this._mouseWheelHandler)
|
||||
},
|
||||
deviceSupportUninstall() {
|
||||
off(document, 'keydown', this._keyDownHandler)
|
||||
off(document, mousewheelEventName, this._mouseWheelHandler)
|
||||
this._keyDownHandler = null
|
||||
this._mouseWheelHandler = null
|
||||
},
|
||||
handleImgLoad(e) {
|
||||
this.loading = false
|
||||
},
|
||||
handleImgError(e) {
|
||||
this.loading = false
|
||||
e.target.alt = '加载失败'
|
||||
},
|
||||
handleMouseDown(e) {
|
||||
if (this.loading || e.button !== 0) return
|
||||
|
||||
const { offsetX, offsetY } = this.transform
|
||||
const startX = e.pageX
|
||||
const startY = e.pageY
|
||||
this._dragHandler = rafThrottle(ev => {
|
||||
this.transform.offsetX = offsetX + ev.pageX - startX
|
||||
this.transform.offsetY = offsetY + ev.pageY - startY
|
||||
})
|
||||
on(document, 'mousemove', this._dragHandler)
|
||||
on(document, 'mouseup', ev => {
|
||||
off(document, 'mousemove', this._dragHandler)
|
||||
})
|
||||
|
||||
e.preventDefault()
|
||||
},
|
||||
reset() {
|
||||
this.transform = {
|
||||
scale: 1,
|
||||
deg: 0,
|
||||
offsetX: 0,
|
||||
offsetY: 0,
|
||||
enableTransition: false
|
||||
}
|
||||
},
|
||||
toggleMode() {
|
||||
if (this.loading) return
|
||||
|
||||
const modeNames = Object.keys(Mode)
|
||||
const modeValues = Object.values(Mode)
|
||||
const index = modeValues.indexOf(this.mode)
|
||||
const nextIndex = (index + 1) % modeNames.length
|
||||
this.mode = Mode[modeNames[nextIndex]]
|
||||
this.reset()
|
||||
},
|
||||
prev() {
|
||||
if (this.isFirst && !this.infinite) return
|
||||
const len = this.urlList.length
|
||||
this.index = (this.index - 1 + len) % len
|
||||
},
|
||||
next() {
|
||||
if (this.isLast && !this.infinite) return
|
||||
const len = this.urlList.length
|
||||
this.index = (this.index + 1) % len
|
||||
},
|
||||
handleActions(action, options = {}) {
|
||||
if (this.loading) return
|
||||
const { zoomRate, rotateDeg, enableTransition } = {
|
||||
zoomRate: 0.2,
|
||||
rotateDeg: 90,
|
||||
enableTransition: true,
|
||||
...options
|
||||
}
|
||||
const { transform } = this
|
||||
switch (action) {
|
||||
case 'zoomOut':
|
||||
if (transform.scale > 0.2) {
|
||||
transform.scale = parseFloat((transform.scale - zoomRate).toFixed(3))
|
||||
}
|
||||
break
|
||||
case 'zoomIn':
|
||||
transform.scale = parseFloat((transform.scale + zoomRate).toFixed(3))
|
||||
break
|
||||
case 'clocelise':
|
||||
transform.deg += rotateDeg
|
||||
break
|
||||
case 'anticlocelise':
|
||||
transform.deg -= rotateDeg
|
||||
break
|
||||
}
|
||||
transform.enableTransition = enableTransition
|
||||
},
|
||||
handlePrinter() {
|
||||
const img = document.getElementById('img')
|
||||
|
||||
img.style.maxHeight = 'none'
|
||||
img.style.maxWidth = 'none'
|
||||
|
||||
let imgData = null
|
||||
const canvas = document.createElement('canvas')
|
||||
const context = canvas.getContext('2d')
|
||||
const w = img.width
|
||||
const h = img.height
|
||||
|
||||
canvas.width = w
|
||||
canvas.height = h
|
||||
context.drawImage(img, 0, 0)
|
||||
imgData = context.getImageData(0, 0, w, h)
|
||||
context.putImageData(imgData, 0, 0)
|
||||
const newBase64 = canvas.toDataURL('image/png')
|
||||
// 打印
|
||||
this.$refs['img-printer'].handlePrinterImg(newBase64)
|
||||
|
||||
img.style.maxHeight = '100%'
|
||||
img.style.maxWidth = '100%'
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.el-image-viewer__actions__inner {
|
||||
i:hover {
|
||||
cursor: pointer;
|
||||
}
|
||||
}
|
||||
.el-pdf-viewer__mask {
|
||||
pointer-events: none;
|
||||
background-color: unset;
|
||||
}
|
||||
|
||||
#img {
|
||||
}
|
||||
|
||||
</style>
|
@ -0,0 +1,21 @@
|
||||
import { Message } from 'element-ui'
|
||||
let messageInstance = null
|
||||
const resetMessage = (options) => {
|
||||
if (messageInstance) {
|
||||
messageInstance.close()
|
||||
}
|
||||
messageInstance = Message(options)
|
||||
}
|
||||
|
||||
['error', 'success', 'info', 'warning'].forEach(type => {
|
||||
resetMessage[type] = options => {
|
||||
if (typeof options === 'string') {
|
||||
options = {
|
||||
message: options
|
||||
}
|
||||
}
|
||||
options.type = type
|
||||
return resetMessage(options)
|
||||
}
|
||||
})
|
||||
export default resetMessage
|
@ -0,0 +1,107 @@
|
||||
<template>
|
||||
<div :class="{'hidden':hidden}" class="pagination-container">
|
||||
<el-pagination
|
||||
:background="background"
|
||||
:current-page.sync="currentPage"
|
||||
:page-size.sync="pageSize"
|
||||
:layout="layout"
|
||||
:page-sizes="pageSizes"
|
||||
:total="total"
|
||||
v-bind="$attrs"
|
||||
@size-change="handleSizeChange"
|
||||
@current-change="handleCurrentChange"
|
||||
>
|
||||
<span key="1" class="total">总共{{ total }}项数据</span>
|
||||
</el-pagination>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { scrollTo } from '@/utils/scroll-to'
|
||||
|
||||
export default {
|
||||
name: 'Pagination',
|
||||
props: {
|
||||
total: {
|
||||
required: true,
|
||||
type: Number
|
||||
},
|
||||
page: {
|
||||
type: Number,
|
||||
default: 1
|
||||
},
|
||||
limit: {
|
||||
type: Number,
|
||||
default: 20
|
||||
},
|
||||
pageSizes: {
|
||||
type: Array,
|
||||
default() {
|
||||
return [20, 40, 50, 100, 200]
|
||||
}
|
||||
},
|
||||
layout: {
|
||||
type: String,
|
||||
default: 'slot, sizes, prev, pager, next, jumper'
|
||||
},
|
||||
background: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
autoScroll: {
|
||||
type: Boolean,
|
||||
default: true
|
||||
},
|
||||
hidden: {
|
||||
type: Boolean,
|
||||
default: false
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
currentPage: {
|
||||
get() {
|
||||
return this.page
|
||||
},
|
||||
set(val) {
|
||||
this.$emit('update:page', val)
|
||||
}
|
||||
},
|
||||
pageSize: {
|
||||
get() {
|
||||
return this.limit
|
||||
},
|
||||
set(val) {
|
||||
this.$emit('update:limit', val)
|
||||
}
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
handleSizeChange(val) {
|
||||
this.$emit('pagination', { page: this.currentPage, limit: val })
|
||||
if (this.autoScroll) {
|
||||
scrollTo(0, 800)
|
||||
}
|
||||
},
|
||||
handleCurrentChange(val) {
|
||||
this.$emit('pagination', { page: val, limit: this.pageSize })
|
||||
if (this.autoScroll) {
|
||||
scrollTo(0, 800)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped lang="scss">
|
||||
.pagination-container {
|
||||
background: #fff;
|
||||
padding: 0 16px;
|
||||
.total {
|
||||
color: $base-color-default;
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
.pagination-container.hidden {
|
||||
display: none;
|
||||
}
|
||||
</style>
|
@ -0,0 +1,67 @@
|
||||
<template>
|
||||
<el-dialog :visible.sync="dialogVisible" width="68%" top="0" height="100%" :before-close="handleClose">
|
||||
<!-- <object width="100%" height="800px" :data="contractURL" /> -->
|
||||
<!-- <iframe width="100%" height="800px" :src="contractURL" frameborder="0" /> -->
|
||||
<el-image width="100%" height="800px" :src="contractURL" />
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script>
|
||||
export default {
|
||||
props: {
|
||||
url: {
|
||||
type: String,
|
||||
default: ''
|
||||
}
|
||||
},
|
||||
|
||||
data() {
|
||||
return {
|
||||
dialogVisible: false,
|
||||
contractURL: ''
|
||||
|
||||
}
|
||||
},
|
||||
|
||||
watch: {
|
||||
URL(val) {
|
||||
this.contractURL = val
|
||||
// console.log(val,'val')
|
||||
}
|
||||
},
|
||||
|
||||
mounted() {
|
||||
// console.log('this.URL',this.URL)
|
||||
},
|
||||
|
||||
methods: {
|
||||
|
||||
handleClose() {
|
||||
this.dialogVisible = false
|
||||
this.contractURL = ''
|
||||
},
|
||||
|
||||
openPDF(val) {
|
||||
this.contractURL = val
|
||||
// console.log('66', this.contractURL)
|
||||
|
||||
this.dialogVisible = true
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style lang="scss" scoped>
|
||||
::v-deep .el-dialog {
|
||||
background: none;
|
||||
}
|
||||
::v-deep .el-dialog__close {
|
||||
color: #fff;
|
||||
font-size: 35px;
|
||||
border: 2px solid #fff;
|
||||
border-radius: 50%;
|
||||
position: absolute;
|
||||
}
|
||||
::v-deep .el-dialog__body {
|
||||
border-top:0
|
||||
}
|
||||
</style>
|
||||
|