Browse Source

update

main
wangshaoping 11 months ago
parent
commit
cab681bc9e
  1. 2
      build.gradle
  2. 2
      erm.frontend/.browserslistrc
  3. 2
      erm.frontend/.npmrc
  4. 2
      erm.frontend/.prettierrc.json
  5. 2
      erm.frontend/frontend-register.json
  6. 2
      erm.frontend/nodemon.json
  7. 204
      erm.frontend/package.json
  8. 2
      erm.frontend/public/configure.js
  9. 2
      erm.frontend/public/favicon.svg
  10. 2
      erm.frontend/public/index.html
  11. 2
      erm.frontend/public/logo.svg
  12. 670
      erm.frontend/public/webjars/luckysheet/2.1.13/assets/iconfont/demo_index.html
  13. 2
      erm.frontend/public/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.js
  14. 222
      erm.frontend/public/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.svg
  15. 2
      erm.frontend/public/webjars/luckysheet/2.1.13/css/luckysheet.css
  16. 2
      erm.frontend/public/webjars/luckysheet/2.1.13/css/menuSprite.svg
  17. 2
      erm.frontend/public/webjars/luckysheet/2.1.13/css/sprite38.svg
  18. 10
      erm.frontend/public/webjars/luckysheet/2.1.13/demoData/demoFeature.js
  19. 2
      erm.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetCell.js
  20. 2
      erm.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetChart.js
  21. 2
      erm.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetComment.js
  22. 2
      erm.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetConditionFormat.js
  23. 2
      erm.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetDataVerification.js
  24. 2
      erm.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetFormula.js
  25. 2
      erm.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetPicture.js
  26. 2
      erm.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetPivotTable.js
  27. 2
      erm.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetPivotTableData.js
  28. 2
      erm.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetSparkline.js
  29. 2
      erm.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetTable.js
  30. 2
      erm.frontend/public/webjars/luckysheet/2.1.13/expendPlugins/chart/chartmix.css
  31. 2
      erm.frontend/public/webjars/luckysheet/2.1.13/expendPlugins/chart/chartmix.umd.min.js
  32. 1418
      erm.frontend/public/webjars/luckysheet/2.1.13/fonts/fontawesome-webfont.svg
  33. 18
      erm.frontend/public/webjars/luckysheet/2.1.13/index.html
  34. 300
      erm.frontend/public/webjars/luckysheet/2.1.13/luckysheet.umd.js
  35. 2
      erm.frontend/public/webjars/luckysheet/2.1.13/plugins/css/pluginsCss.css
  36. 2
      erm.frontend/public/webjars/luckysheet/2.1.13/plugins/js/plugin.js
  37. 2
      erm.frontend/public/webjars/luckysheet/2.1.13/plugins/plugins.css
  38. 4
      erm.frontend/tailwind.config.cjs
  39. 2
      erm.frontend/tsconfig.json
  40. 2
      erm.frontend/webpack.config.common.cjs
  41. 1
      erm.frontend/webpack.config.mf.cjs
  42. 4
      erm.frontend/webpack.env.build.cjs
  43. 4
      gradle.properties
  44. 204
      io.sc.engine.mv.frontend/package.json
  45. 44
      io.sc.engine.mv.frontend/src/components/index.ts
  46. 6
      io.sc.engine.mv.frontend/util-components-generator.cjs
  47. 2
      io.sc.engine.mv.frontend/webpack.config.common.cjs
  48. 3
      io.sc.engine.mv.frontend/webpack.config.mf.cjs
  49. 4
      io.sc.engine.mv.frontend/webpack.env.build.cjs
  50. 2
      io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/enums/ProcessorType.java
  51. 204
      io.sc.engine.rule.frontend/package.json
  52. 28
      io.sc.engine.rule.frontend/src/components/index.ts
  53. 39
      io.sc.engine.rule.frontend/src/i18n/messages.json
  54. 40
      io.sc.engine.rule.frontend/src/i18n/messages_tw_CN.json
  55. 42
      io.sc.engine.rule.frontend/src/i18n/messages_zh_CN.json
  56. 26
      io.sc.engine.rule.frontend/src/views/resources/Resources.vue
  57. 122
      io.sc.engine.rule.frontend/src/views/resources/designer/DesignerDialog.vue
  58. 18
      io.sc.engine.rule.frontend/src/views/resources/designer/Model.vue
  59. 106
      io.sc.engine.rule.frontend/src/views/resources/designer/Option.vue
  60. 33
      io.sc.engine.rule.frontend/src/views/resources/designer/Parameter.vue
  61. 495
      io.sc.engine.rule.frontend/src/views/resources/designer/Processor.vue
  62. 171
      io.sc.engine.rule.frontend/src/views/resources/designer/TestCaseParameter.vue
  63. 157
      io.sc.engine.rule.frontend/src/views/resources/designer/Testcase.vue
  64. 10
      io.sc.engine.rule.frontend/src/views/resources/designer/Validator.vue
  65. 6
      io.sc.engine.rule.frontend/util-components-generator.cjs
  66. 2
      io.sc.engine.rule.frontend/webpack.config.common.cjs
  67. 3
      io.sc.engine.rule.frontend/webpack.config.mf.cjs
  68. 4
      io.sc.engine.rule.frontend/webpack.env.build.cjs
  69. 20
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/controller/ParameterInOptionItemWebController.java
  70. 13
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/controller/ParameterProcessorWebController.java
  71. 4
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/controller/ParameterValidatorWebController.java
  72. 2
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/controller/ParameterWebController.java
  73. 1
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ModelEntity.java
  74. 6
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/repository/ParameterInOptionItemRepository.java
  75. 4
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/repository/ParameterProcessorRepository.java
  76. 10
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/ParameterInOptionItemService.java
  77. 10
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/ParameterProcessorService.java
  78. 8
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/impl/ParameterInOptionItemServiceImpl.java
  79. 6
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/impl/ParameterProcessorServiceImpl.java
  80. 4
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/bean/ModelTestCaseParameterBuilder.java
  81. 14
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/controller/TestCaseParameterWebController.java
  82. 21
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/controller/TestCaseWebController.java
  83. 10
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/entity/ResourceTestCaseEntity.java
  84. 15
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/entity/TestCaseEntity.java
  85. 1
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/repository/TestCaseParameterRepository.java
  86. 8
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/repository/TestCaseRepository.java
  87. 12
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/service/TestCaseService.java
  88. 13
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/service/impl/TestCaseServiceImpl.java
  89. 6
      io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/wrapper/TestCaseParameterWrapper.java
  90. 11
      io.sc.engine.rule.server/src/main/resources/liquibase/RE_1.0.0_20220515__Rule Engine Database Schema DDL.xml
  91. 4
      io.sc.platform.core.frontend/template-project/package.json
  92. 2
      io.sc.platform.core.frontend/template-project/webpack.config.common.cjs
  93. 2
      io.sc.platform.core.frontend/webpack.config.common.cjs
  94. 4
      io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words.properties
  95. 4
      io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_tw_CN.properties
  96. 4
      io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_zh_CN.properties
  97. 204
      io.sc.platform.developer.frontend/package.json
  98. 104
      io.sc.platform.developer.frontend/src/components/index.ts
  99. 6
      io.sc.platform.developer.frontend/util-components-generator.cjs
  100. 2
      io.sc.platform.developer.frontend/webpack.config.common.cjs

2
build.gradle

@ -636,7 +636,7 @@ subprojects {
frontendNpmInstall.dependsOn(frontendUpdatePackageJson) frontendNpmInstall.dependsOn(frontendUpdatePackageJson)
frontendNpmSync.dependsOn(frontendNpmInstall) frontendNpmSync.dependsOn(frontendNpmInstall)
frontendNpmBuild.dependsOn(frontendNpmSync) frontendNpmBuild.dependsOn(frontendNpmSync)
frontendNpmProd.dependsOn(frontendNpmInstall) frontendNpmProd.dependsOn(frontendNpmSync)
// //
// : -D // : -D

2
erm.frontend/.browserslistrc

@ -2,4 +2,4 @@ chrome >=89
edge >=88 edge >=88
firefox >=89 firefox >=89
safari >=15 safari >=15
ios_saf >=15 ios_saf >=15

2
erm.frontend/.npmrc

@ -8,4 +8,4 @@ email=
# 登录 npm 仓库的用户认证信息, 在 npm publish 时使用, publish 的 npm registry 在 package.json 文件中 publishConfig 部分配置 # 登录 npm 仓库的用户认证信息, 在 npm publish 时使用, publish 的 npm registry 在 package.json 文件中 publishConfig 部分配置
# _authToken 可通过以下命令获取 # _authToken 可通过以下命令获取
# curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin # curl -X PUT -H "Content-Type:application/json" -d '{"_id":"org.couchdb.user:admin","name":"admin","password":"admin"}' http://nexus.sc.io:8000/repository/npm-releases/-/user/org.couchdb.user:admin
//nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.193db44c-7ca5-3cb6-a990-d24b93fb0d10 //nexus.sc.io:8000/repository/npm-releases/:_authToken=NpmToken.193db44c-7ca5-3cb6-a990-d24b93fb0d10

2
erm.frontend/.prettierrc.json

@ -5,4 +5,4 @@
"singleQuote": true, "singleQuote": true,
"printWidth": 160, "printWidth": 160,
"trailingComma": "all" "trailingComma": "all"
} }

2
erm.frontend/frontend-register.json

@ -4,4 +4,4 @@
"host": "localhost", "host": "localhost",
"port": 8080, "port": 8080,
"path": "/api/mvc/frontend/regist" "path": "/api/mvc/frontend/regist"
} }

2
erm.frontend/nodemon.json

@ -3,4 +3,4 @@
"./src/routes/routes.json" "./src/routes/routes.json"
], ],
"exec": "pnpm serve" "exec": "pnpm serve"
} }

204
erm.frontend/package.json

@ -1,105 +1,103 @@
{ {
"name": "erm.frontend", "name": "erm.frontend",
"version": "8.1.28", "version": "8.1.29",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [ "keywords": [],
"author": "",
], "license": "ISC",
"author": "", "scripts": {
"license": "ISC", "dev": "nodemon",
"scripts": { "serve": "node ./util-components-generator.cjs && cross-env NODE_ENV=development webpack serve --config webpack.env.serve.cjs",
"dev": "nodemon", "build": "node ./util-components-generator.cjs && cross-env NODE_ENV=development webpack --config webpack.env.build.cjs",
"serve": "node ./util-components-generator.cjs && cross-env NODE_ENV=development webpack serve --config webpack.env.serve.cjs", "prod": "node ./util-components-generator.cjs && cross-env NODE_ENV=production webpack --config webpack.env.prod.cjs",
"build": "node ./util-components-generator.cjs && cross-env NODE_ENV=development webpack --config webpack.env.build.cjs", "sync": "platform sync",
"prod": "node ./util-components-generator.cjs && cross-env NODE_ENV=production webpack --config webpack.env.prod.cjs", "clean": "rm -rf ./node_modules && rm -rf pnpm-lock.yaml"
"sync": "platform sync", },
"clean": "rm -rf ./node_modules && rm -rf pnpm-lock.yaml" "engines": {
}, "node": ">=18",
"engines": { "pnpm": ">=7"
"node": ">=18", },
"pnpm": ">=7" "publishConfig": {
}, "registry": "http://nexus.sc.io:8000/repository/npm-releases/",
"publishConfig": { "access": "public"
"registry": "http://nexus.sc.io:8000/repository/npm-releases/", },
"access": "public" "devDependencies": {
}, "@babel/core": "7.23.7",
"devDependencies": { "@babel/preset-env": "7.23.7",
"@babel/core": "7.23.7", "@babel/preset-typescript": "7.23.3",
"@babel/preset-env": "7.23.7", "@babel/plugin-transform-class-properties": "7.23.3",
"@babel/preset-typescript": "7.23.3", "@babel/plugin-transform-object-rest-spread": "7.23.4",
"@babel/plugin-transform-class-properties": "7.23.3", "@quasar/app-webpack": "3.12.1",
"@babel/plugin-transform-object-rest-spread": "7.23.4", "@quasar/cli": "2.3.0",
"@quasar/app-webpack": "3.12.1", "@types/mockjs": "1.0.10",
"@quasar/cli": "2.3.0", "@types/node": "20.10.6",
"@types/mockjs": "1.0.10", "@typescript-eslint/eslint-plugin": "6.17.0",
"@types/node": "20.10.6", "@typescript-eslint/parser": "6.17.0",
"@typescript-eslint/eslint-plugin": "6.17.0", "@vue/compiler-sfc": "3.4.3",
"@typescript-eslint/parser": "6.17.0", "@webpack-cli/serve": "2.0.5",
"@vue/compiler-sfc": "3.4.3", "autoprefixer": "10.4.16",
"@webpack-cli/serve": "2.0.5", "babel-loader": "9.1.3",
"autoprefixer": "10.4.16", "clean-webpack-plugin": "4.0.0",
"babel-loader": "9.1.3", "copy-webpack-plugin": "11.0.0",
"clean-webpack-plugin": "4.0.0", "cross-env": "7.0.3",
"copy-webpack-plugin": "11.0.0", "css-loader": "6.8.1",
"cross-env": "7.0.3", "eslint": "8.56.0",
"css-loader": "6.8.1", "eslint-config-prettier": "9.1.0",
"eslint": "8.56.0", "eslint-plugin-prettier": "5.1.2",
"eslint-config-prettier": "9.1.0", "eslint-plugin-vue": "9.19.2",
"eslint-plugin-prettier": "5.1.2", "eslint-webpack-plugin": "4.0.1",
"eslint-plugin-vue": "9.19.2", "html-webpack-plugin": "5.6.0",
"eslint-webpack-plugin": "4.0.1", "json5": "2.2.3",
"html-webpack-plugin": "5.6.0", "mini-css-extract-plugin": "2.7.6",
"json5": "2.2.3", "nodemon": "3.0.2",
"mini-css-extract-plugin": "2.7.6", "postcss": "8.4.32",
"nodemon": "3.0.2", "postcss-import": "16.0.0",
"postcss": "8.4.32", "postcss-loader": "7.3.4",
"postcss-import": "16.0.0", "postcss-preset-env": "9.3.0",
"postcss-loader": "7.3.4", "prettier": "3.1.1",
"postcss-preset-env": "9.3.0", "sass": "1.69.7",
"prettier": "3.1.1", "sass-loader": "13.3.3",
"sass": "1.69.7", "typescript": "5.3.3",
"sass-loader": "13.3.3", "vue-loader": "17.4.2",
"typescript": "5.3.3", "webpack": "5.89.0",
"vue-loader": "17.4.2", "webpack-bundle-analyzer": "4.10.1",
"webpack": "5.89.0", "webpack-cli": "5.1.4",
"webpack-bundle-analyzer": "4.10.1", "webpack-dev-server": "4.15.1",
"webpack-cli": "5.1.4", "webpack-merge": "5.10.0",
"webpack-dev-server": "4.15.1", "@vue/babel-plugin-jsx": "1.1.5"
"webpack-merge": "5.10.0", },
"@vue/babel-plugin-jsx": "1.1.5" "dependencies": {
}, "@quasar/extras": "1.16.9",
"dependencies": { "@vueuse/core": "10.7.1",
"@quasar/extras": "1.16.9", "axios": "1.6.3",
"@vueuse/core": "10.7.1", "dayjs": "1.11.10",
"axios": "1.6.3", "echarts": "5.4.3",
"dayjs": "1.11.10", "exceljs": "4.4.0",
"echarts": "5.4.3", "file-saver": "2.0.5",
"exceljs": "4.4.0", "luckyexcel": "1.0.1",
"file-saver": "2.0.5", "mockjs": "1.1.0",
"luckyexcel": "1.0.1", "pinia": "2.1.7",
"mockjs": "1.1.0", "platform-core": "8.1.152",
"pinia": "2.1.7", "quasar": "2.14.5",
"platform-core": "8.1.149", "tailwindcss": "3.4.0",
"quasar": "2.14.2", "vue": "3.4.3",
"tailwindcss": "3.4.0", "vue-dompurify-html": "5.0.1",
"vue": "3.4.3", "vue-i18n": "9.8.0",
"vue-dompurify-html": "5.0.1", "vue-router": "4.2.5",
"vue-i18n": "9.8.0", "@codemirror/autocomplete": "6.11.1",
"vue-router": "4.2.5", "@codemirror/commands": "6.3.3",
"@codemirror/autocomplete": "6.11.1", "@codemirror/lang-html": "6.4.7",
"@codemirror/commands": "6.3.3", "@codemirror/lang-java": "6.0.1",
"@codemirror/lang-html": "6.4.7", "@codemirror/lang-javascript": "6.2.1",
"@codemirror/lang-java": "6.0.1", "@codemirror/lang-json": "6.0.1",
"@codemirror/lang-javascript": "6.2.1", "@codemirror/lang-sql": "6.5.4",
"@codemirror/lang-json": "6.0.1", "@codemirror/lang-xml": "6.0.2",
"@codemirror/lang-sql": "6.5.4", "@codemirror/language": "6.10.0",
"@codemirror/lang-xml": "6.0.2", "@codemirror/search": "6.5.5",
"@codemirror/language": "6.10.0", "@codemirror/state": "6.4.0",
"@codemirror/search": "6.5.5", "@codemirror/view": "6.23.0",
"@codemirror/state": "6.4.0", "codemirror": "6.0.1",
"@codemirror/view": "6.23.0", "vue-codemirror6": "1.2.0"
"codemirror": "6.0.1", }
"vue-codemirror6": "1.2.0"
}
} }

2
erm.frontend/public/configure.js

@ -27,4 +27,4 @@ window.APP.configure ={
password: 'admin', password: 'admin',
} }
} }
} }

2
erm.frontend/public/favicon.svg

@ -2,4 +2,4 @@
<path d="M9.482 9.341c-.069.062-.17.153-.17.309 0 .162.107.325.3.456.877.613 2.521.54 2.592.538h.002c.667 0 1.32-.18 1.894-.519A3.838 3.838 0 0 0 16 6.819c.018-1.316-.44-2.218-.666-2.664l-.04-.08C13.963 1.487 11.106 0 8 0A8 8 0 0 0 .473 5.29C1.488 4.048 3.183 3.262 5 3.262c2.83 0 5.01 1.885 5.01 4.797h-.004v.002c0 .338-.168.832-.487 1.244l.006-.006a.594.594 0 0 1-.043.041Z"/> <path d="M9.482 9.341c-.069.062-.17.153-.17.309 0 .162.107.325.3.456.877.613 2.521.54 2.592.538h.002c.667 0 1.32-.18 1.894-.519A3.838 3.838 0 0 0 16 6.819c.018-1.316-.44-2.218-.666-2.664l-.04-.08C13.963 1.487 11.106 0 8 0A8 8 0 0 0 .473 5.29C1.488 4.048 3.183 3.262 5 3.262c2.83 0 5.01 1.885 5.01 4.797h-.004v.002c0 .338-.168.832-.487 1.244l.006-.006a.594.594 0 0 1-.043.041Z"/>
<path d="M.01 7.753a8.137 8.137 0 0 0 .753 3.641 8 8 0 0 0 6.495 4.564 5.21 5.21 0 0 1-.785-.377h-.01l-.12-.075a5.45 5.45 0 0 1-1.56-1.463A5.543 5.543 0 0 1 6.81 5.8l.01-.004.025-.012c.208-.098.62-.292 1.167-.285.129.001.257.012.384.033a4.037 4.037 0 0 0-.993-.698l-.01-.005C6.348 4.282 5.199 4.263 5 4.263c-2.44 0-4.824 1.634-4.99 3.49Zm10.263 7.912c.088-.027.177-.054.265-.084-.102.032-.204.06-.307.086l.042-.002Z"/> <path d="M.01 7.753a8.137 8.137 0 0 0 .753 3.641 8 8 0 0 0 6.495 4.564 5.21 5.21 0 0 1-.785-.377h-.01l-.12-.075a5.45 5.45 0 0 1-1.56-1.463A5.543 5.543 0 0 1 6.81 5.8l.01-.004.025-.012c.208-.098.62-.292 1.167-.285.129.001.257.012.384.033a4.037 4.037 0 0 0-.993-.698l-.01-.005C6.348 4.282 5.199 4.263 5 4.263c-2.44 0-4.824 1.634-4.99 3.49Zm10.263 7.912c.088-.027.177-.054.265-.084-.102.032-.204.06-.307.086l.042-.002Z"/>
<path d="M10.228 15.667a5.21 5.21 0 0 0 .303-.086l.082-.025a8.019 8.019 0 0 0 4.162-3.3.25.25 0 0 0-.331-.35c-.215.112-.436.21-.663.294a6.367 6.367 0 0 1-2.243.4c-2.957 0-5.532-2.031-5.532-4.644.002-.135.017-.268.046-.399a4.543 4.543 0 0 0-.46 5.898l.003.005c.315.441.707.821 1.158 1.121h.003l.144.09c.877.55 1.721 1.078 3.328.996Z"/> <path d="M10.228 15.667a5.21 5.21 0 0 0 .303-.086l.082-.025a8.019 8.019 0 0 0 4.162-3.3.25.25 0 0 0-.331-.35c-.215.112-.436.21-.663.294a6.367 6.367 0 0 1-2.243.4c-2.957 0-5.532-2.031-5.532-4.644.002-.135.017-.268.046-.399a4.543 4.543 0 0 0-.46 5.898l.003.005c.315.441.707.821 1.158 1.121h.003l.144.09c.877.55 1.721 1.078 3.328.996Z"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

2
erm.frontend/public/index.html

@ -14,7 +14,7 @@
<!-- luckysheet js --> <!-- luckysheet js -->
<script src="/webjars/luckysheet/2.1.13/plugins/js/plugin.js" th:src="@{/webjars/luckysheet/2.1.13/plugins/js/plugin.js}"></script> <script src="/webjars/luckysheet/2.1.13/plugins/js/plugin.js" th:src="@{/webjars/luckysheet/2.1.13/plugins/js/plugin.js}"></script>
<script src="/webjars/luckysheet/2.1.13/luckysheet.umd.js" th:src="@{/webjars/luckysheet/2.1.13/luckysheet.umd.js}"></script> <script src="/webjars/luckysheet/2.1.13/luckysheet.umd.js" th:src="@{/webjars/luckysheet/2.1.13/luckysheet.umd.js}"></script>
<!-- tailwindcss js --> <!-- tailwindcss js -->
<script src="/webjars/tailwindcss/3.3.5/tailwindcss.js" th:src="@{/webjars/tailwindcss/3.3.5/tailwindcss.js}"></script> <script src="/webjars/tailwindcss/3.3.5/tailwindcss.js" th:src="@{/webjars/tailwindcss/3.3.5/tailwindcss.js}"></script>

2
erm.frontend/public/logo.svg

@ -2,4 +2,4 @@
<path d="M9.482 9.341c-.069.062-.17.153-.17.309 0 .162.107.325.3.456.877.613 2.521.54 2.592.538h.002c.667 0 1.32-.18 1.894-.519A3.838 3.838 0 0 0 16 6.819c.018-1.316-.44-2.218-.666-2.664l-.04-.08C13.963 1.487 11.106 0 8 0A8 8 0 0 0 .473 5.29C1.488 4.048 3.183 3.262 5 3.262c2.83 0 5.01 1.885 5.01 4.797h-.004v.002c0 .338-.168.832-.487 1.244l.006-.006a.594.594 0 0 1-.043.041Z"/> <path d="M9.482 9.341c-.069.062-.17.153-.17.309 0 .162.107.325.3.456.877.613 2.521.54 2.592.538h.002c.667 0 1.32-.18 1.894-.519A3.838 3.838 0 0 0 16 6.819c.018-1.316-.44-2.218-.666-2.664l-.04-.08C13.963 1.487 11.106 0 8 0A8 8 0 0 0 .473 5.29C1.488 4.048 3.183 3.262 5 3.262c2.83 0 5.01 1.885 5.01 4.797h-.004v.002c0 .338-.168.832-.487 1.244l.006-.006a.594.594 0 0 1-.043.041Z"/>
<path d="M.01 7.753a8.137 8.137 0 0 0 .753 3.641 8 8 0 0 0 6.495 4.564 5.21 5.21 0 0 1-.785-.377h-.01l-.12-.075a5.45 5.45 0 0 1-1.56-1.463A5.543 5.543 0 0 1 6.81 5.8l.01-.004.025-.012c.208-.098.62-.292 1.167-.285.129.001.257.012.384.033a4.037 4.037 0 0 0-.993-.698l-.01-.005C6.348 4.282 5.199 4.263 5 4.263c-2.44 0-4.824 1.634-4.99 3.49Zm10.263 7.912c.088-.027.177-.054.265-.084-.102.032-.204.06-.307.086l.042-.002Z"/> <path d="M.01 7.753a8.137 8.137 0 0 0 .753 3.641 8 8 0 0 0 6.495 4.564 5.21 5.21 0 0 1-.785-.377h-.01l-.12-.075a5.45 5.45 0 0 1-1.56-1.463A5.543 5.543 0 0 1 6.81 5.8l.01-.004.025-.012c.208-.098.62-.292 1.167-.285.129.001.257.012.384.033a4.037 4.037 0 0 0-.993-.698l-.01-.005C6.348 4.282 5.199 4.263 5 4.263c-2.44 0-4.824 1.634-4.99 3.49Zm10.263 7.912c.088-.027.177-.054.265-.084-.102.032-.204.06-.307.086l.042-.002Z"/>
<path d="M10.228 15.667a5.21 5.21 0 0 0 .303-.086l.082-.025a8.019 8.019 0 0 0 4.162-3.3.25.25 0 0 0-.331-.35c-.215.112-.436.21-.663.294a6.367 6.367 0 0 1-2.243.4c-2.957 0-5.532-2.031-5.532-4.644.002-.135.017-.268.046-.399a4.543 4.543 0 0 0-.46 5.898l.003.005c.315.441.707.821 1.158 1.121h.003l.144.09c.877.55 1.721 1.078 3.328.996Z"/> <path d="M10.228 15.667a5.21 5.21 0 0 0 .303-.086l.082-.025a8.019 8.019 0 0 0 4.162-3.3.25.25 0 0 0-.331-.35c-.215.112-.436.21-.663.294a6.367 6.367 0 0 1-2.243.4c-2.957 0-5.532-2.031-5.532-4.644.002-.135.017-.268.046-.399a4.543 4.543 0 0 0-.46 5.898l.003.005c.315.441.707.821 1.158 1.121h.003l.144.09c.877.55 1.721 1.078 3.328.996Z"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 1.2 KiB

After

Width:  |  Height:  |  Size: 1.2 KiB

670
erm.frontend/public/webjars/luckysheet/2.1.13/assets/iconfont/demo_index.html

File diff suppressed because it is too large

2
erm.frontend/public/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.js

File diff suppressed because one or more lines are too long

222
erm.frontend/public/webjars/luckysheet/2.1.13/assets/iconfont/iconfont.svg

@ -19,337 +19,337 @@ Created by iconfont
descent="-128" descent="-128"
/> />
<missing-glyph /> <missing-glyph />
<glyph glyph-name="lianjie" unicode="&#59384;" d="M771.584 644.266667c-49.066667 51.2-132.266667 51.2-181.333333 0l-74.666667-76.8c-8.533333-8.533333-8.533333-23.466667 0-32 8.533333-8.533333 21.333333-8.533333 29.866667 0l74.666666 76.8c34.133333 34.133333 87.466667 34.133333 121.6 0 34.133333-34.133333 34.133333-89.6 0-123.733334l-121.6-123.733333c-34.133333-34.133333-87.466667-34.133333-121.6 0-8.533333 8.533333-21.333333 8.533333-29.866666 0-8.533333-8.533333-8.533333-23.466667 0-32 49.066667-51.2 132.266667-51.2 181.333333 0l121.6 123.733333c51.2 53.333333 51.2 136.533333 0 187.733334zM477.184 232.533333l-74.666667-76.8c-34.133333-34.133333-87.466667-34.133333-121.6 0-34.133333 34.133333-34.133333 89.6 0 123.733334l121.6 123.733333c34.133333 34.133333 87.466667 34.133333 121.6 0 8.533333-8.533333 21.333333-8.533333 29.866667 0 8.533333 8.533333 8.533333 23.466667 0 32-49.066667 51.2-132.266667 51.2-181.333333 0l-121.6-123.733333c-51.2-51.2-49.066667-134.4 0-185.6 49.066667-51.2 132.266667-51.2 181.333333 0l74.666667 76.8c8.533333 8.533333 8.533333 23.466667 0 32-8.533333 6.4-21.333333 6.4-29.866667-2.133334z" horiz-adv-x="1024" /> <glyph glyph-name="lianjie" unicode="&#59384;" d="M771.584 644.266667c-49.066667 51.2-132.266667 51.2-181.333333 0l-74.666667-76.8c-8.533333-8.533333-8.533333-23.466667 0-32 8.533333-8.533333 21.333333-8.533333 29.866667 0l74.666666 76.8c34.133333 34.133333 87.466667 34.133333 121.6 0 34.133333-34.133333 34.133333-89.6 0-123.733334l-121.6-123.733333c-34.133333-34.133333-87.466667-34.133333-121.6 0-8.533333 8.533333-21.333333 8.533333-29.866666 0-8.533333-8.533333-8.533333-23.466667 0-32 49.066667-51.2 132.266667-51.2 181.333333 0l121.6 123.733333c51.2 53.333333 51.2 136.533333 0 187.733334zM477.184 232.533333l-74.666667-76.8c-34.133333-34.133333-87.466667-34.133333-121.6 0-34.133333 34.133333-34.133333 89.6 0 123.733334l121.6 123.733333c34.133333 34.133333 87.466667 34.133333 121.6 0 8.533333-8.533333 21.333333-8.533333 29.866667 0 8.533333 8.533333 8.533333 23.466667 0 32-49.066667 51.2-132.266667 51.2-181.333333 0l-121.6-123.733333c-51.2-51.2-49.066667-134.4 0-185.6 49.066667-51.2 132.266667-51.2 181.333333 0l74.666667 76.8c8.533333 8.533333 8.533333 23.466667 0 32-8.533333 6.4-21.333333 6.4-29.866667-2.133334z" horiz-adv-x="1024" />
<glyph glyph-name="dayinquyu" unicode="&#59381;" d="M727.04 189.781333a11.946667 11.946667 0 0 0 8.704-3.754666 13.312 13.312 0 0 0 3.626667-9.130667V85.333333H583.253333v91.52c0 3.413333 1.28 6.741333 3.626667 9.173334a11.946667 11.946667 0 0 0 8.661333 3.754666zM362.666667 170.666667v-42.666667h-128v42.666667h128z m128 0v-42.666667h-42.666667v42.666667h42.666667z m301.696 143.957333a18.773333 18.773333 0 0 0 18.304-19.2v-117.205333c0-10.581333-8.277333-19.2-18.346667-19.2h-28.458667v11.434666c-0.128 21.333333-16.554667 38.570667-36.778666 38.570667h-131.498667c-20.224 0-36.693333-17.237333-36.778667-38.570667v-11.477333h-28.458666a18.858667 18.858667 0 0 0-18.346667 19.2v117.248c0 10.581333 8.277333 19.2 18.346667 19.2zM256 362.666667v-128H213.333333v128h42.666667z m411.477333-85.845334H567.04a12.586667 12.586667 0 0 1-12.245333-12.8c0.042667-7.125333 5.546667-12.885333 12.245333-12.842666h100.394667a12.586667 12.586667 0 0 1 12.202666 12.8c0 7.082667-5.504 12.8-12.202666 12.8zM723.072 384a14.506667 14.506667 0 0 0 14.165333-14.805333v-35.84H585.386667v35.84a14.506667 14.506667 0 0 0 14.165333 14.805333zM768 533.333333v-128h-42.666667v128h42.666667z m-512 42.666667v-128H213.333333v128h42.666667zM768 682.666667v-64h-42.666667V640h-64V682.666667H768zM362.666667 682.666667v-42.666667H256v-21.333333H213.333333V682.666667h149.333334z m213.333333 0v-42.666667h-128V682.666667h128z" horiz-adv-x="1024" /> <glyph glyph-name="dayinquyu" unicode="&#59381;" d="M727.04 189.781333a11.946667 11.946667 0 0 0 8.704-3.754666 13.312 13.312 0 0 0 3.626667-9.130667V85.333333H583.253333v91.52c0 3.413333 1.28 6.741333 3.626667 9.173334a11.946667 11.946667 0 0 0 8.661333 3.754666zM362.666667 170.666667v-42.666667h-128v42.666667h128z m128 0v-42.666667h-42.666667v42.666667h42.666667z m301.696 143.957333a18.773333 18.773333 0 0 0 18.304-19.2v-117.205333c0-10.581333-8.277333-19.2-18.346667-19.2h-28.458667v11.434666c-0.128 21.333333-16.554667 38.570667-36.778666 38.570667h-131.498667c-20.224 0-36.693333-17.237333-36.778667-38.570667v-11.477333h-28.458666a18.858667 18.858667 0 0 0-18.346667 19.2v117.248c0 10.581333 8.277333 19.2 18.346667 19.2zM256 362.666667v-128H213.333333v128h42.666667z m411.477333-85.845334H567.04a12.586667 12.586667 0 0 1-12.245333-12.8c0.042667-7.125333 5.546667-12.885333 12.245333-12.842666h100.394667a12.586667 12.586667 0 0 1 12.202666 12.8c0 7.082667-5.504 12.8-12.202666 12.8zM723.072 384a14.506667 14.506667 0 0 0 14.165333-14.805333v-35.84H585.386667v35.84a14.506667 14.506667 0 0 0 14.165333 14.805333zM768 533.333333v-128h-42.666667v128h42.666667z m-512 42.666667v-128H213.333333v128h42.666667zM768 682.666667v-64h-42.666667V640h-64V682.666667H768zM362.666667 682.666667v-42.666667H256v-21.333333H213.333333V682.666667h149.333334z m213.333333 0v-42.666667h-128V682.666667h128z" horiz-adv-x="1024" />
<glyph glyph-name="dayinyemianpeizhi" unicode="&#59382;" d="M635.477333 682.666667H388.522667c-15.530667 0-28.16-13.226667-28.288-29.610667v-71.68h303.530666v71.68c0 16.298667-12.586667 29.568-28.288 29.568V682.666667z m7.978667-388.48H380.586667a23.893333 23.893333 0 0 1-17.365334-7.509334 26.581333 26.581333 0 0 1-7.253333-18.261333V85.333333h312.149333v183.125334a26.581333 26.581333 0 0 1-7.253333 18.218666 23.893333 23.893333 0 0 1-17.365333 7.509334z m130.602667 249.728H250.069333c-20.224 0-36.736-17.28-36.736-38.4v-234.410667c0-21.162667 16.512-38.442667 36.693334-38.442667h56.96v22.912c0.213333 42.666667 33.109333 77.184 73.557333 77.098667h262.912c40.448 0.085333 73.386667-34.389333 73.557333-77.098667v-22.912h56.917334c20.224 0 36.736 17.28 36.736 38.4V505.514667c-0.042667 21.290667-16.426667 38.485333-36.608 38.442666z m-249.813334-126.933334H323.498667c-13.44 0-24.405333 11.434667-24.490667 25.642667a25.173333 25.173333 0 0 0 24.490667 25.685333h200.746666c13.44 0 24.490667-11.52 24.490667-25.685333 0-14.08-11.050667-25.6-24.490667-25.6v-0.042667z" horiz-adv-x="1024" /> <glyph glyph-name="dayinyemianpeizhi" unicode="&#59382;" d="M635.477333 682.666667H388.522667c-15.530667 0-28.16-13.226667-28.288-29.610667v-71.68h303.530666v71.68c0 16.298667-12.586667 29.568-28.288 29.568V682.666667z m7.978667-388.48H380.586667a23.893333 23.893333 0 0 1-17.365334-7.509334 26.581333 26.581333 0 0 1-7.253333-18.261333V85.333333h312.149333v183.125334a26.581333 26.581333 0 0 1-7.253333 18.218666 23.893333 23.893333 0 0 1-17.365333 7.509334z m130.602667 249.728H250.069333c-20.224 0-36.736-17.28-36.736-38.4v-234.410667c0-21.162667 16.512-38.442667 36.693334-38.442667h56.96v22.912c0.213333 42.666667 33.109333 77.184 73.557333 77.098667h262.912c40.448 0.085333 73.386667-34.389333 73.557333-77.098667v-22.912h56.917334c20.224 0 36.736 17.28 36.736 38.4V505.514667c-0.042667 21.290667-16.426667 38.485333-36.608 38.442666z m-249.813334-126.933334H323.498667c-13.44 0-24.405333 11.434667-24.490667 25.642667a25.173333 25.173333 0 0 0 24.490667 25.685333h200.746666c13.44 0 24.490667-11.52 24.490667-25.685333 0-14.08-11.050667-25.6-24.490667-25.6v-0.042667z" horiz-adv-x="1024" />
<glyph glyph-name="dayinbiaoti" unicode="&#59383;" d="M727.04 189.781333a11.946667 11.946667 0 0 0 8.704-3.754666 13.312 13.312 0 0 0 3.626667-9.130667V85.333333H583.253333v91.52c0 3.413333 1.28 6.741333 3.626667 9.173334a11.946667 11.946667 0 0 0 8.661333 3.754666zM768 682.666667v-277.333334h-42.666667V640H256v-469.333333h234.666667v-42.666667H213.333333V682.666667h554.666667z m24.362667-368.042667a18.773333 18.773333 0 0 0 18.304-19.2v-117.205333c0-10.581333-8.277333-19.2-18.346667-19.2h-28.458667v11.434666c-0.128 21.333333-16.554667 38.570667-36.778666 38.570667h-131.498667c-20.224 0-36.693333-17.237333-36.778667-38.570667v-11.477333h-28.458666a18.858667 18.858667 0 0 0-18.346667 19.2v117.248c0 10.581333 8.277333 19.2 18.346667 19.2z m-124.885334-37.802667H567.04a12.586667 12.586667 0 0 1-12.245333-12.8c0.042667-7.125333 5.546667-12.885333 12.245333-12.842666h100.394667a12.586667 12.586667 0 0 1 12.202666 12.8c0 7.082667-5.504 12.8-12.202666 12.8zM723.072 384a14.506667 14.506667 0 0 0 14.165333-14.805333v-35.84H585.386667v35.84a14.506667 14.506667 0 0 0 14.165333 14.805333zM341.333333 554.666667h298.666667v-42.666667H341.333333zM341.333333 469.333333h170.666667v-42.666666H341.333333z" horiz-adv-x="1024" /> <glyph glyph-name="dayinbiaoti" unicode="&#59383;" d="M727.04 189.781333a11.946667 11.946667 0 0 0 8.704-3.754666 13.312 13.312 0 0 0 3.626667-9.130667V85.333333H583.253333v91.52c0 3.413333 1.28 6.741333 3.626667 9.173334a11.946667 11.946667 0 0 0 8.661333 3.754666zM768 682.666667v-277.333334h-42.666667V640H256v-469.333333h234.666667v-42.666667H213.333333V682.666667h554.666667z m24.362667-368.042667a18.773333 18.773333 0 0 0 18.304-19.2v-117.205333c0-10.581333-8.277333-19.2-18.346667-19.2h-28.458667v11.434666c-0.128 21.333333-16.554667 38.570667-36.778666 38.570667h-131.498667c-20.224 0-36.693333-17.237333-36.778667-38.570667v-11.477333h-28.458666a18.858667 18.858667 0 0 0-18.346667 19.2v117.248c0 10.581333 8.277333 19.2 18.346667 19.2z m-124.885334-37.802667H567.04a12.586667 12.586667 0 0 1-12.245333-12.8c0.042667-7.125333 5.546667-12.885333 12.245333-12.842666h100.394667a12.586667 12.586667 0 0 1 12.202666 12.8c0 7.082667-5.504 12.8-12.202666 12.8zM723.072 384a14.506667 14.506667 0 0 0 14.165333-14.805333v-35.84H585.386667v35.84a14.506667 14.506667 0 0 0 14.165333 14.805333zM341.333333 554.666667h298.666667v-42.666667H341.333333zM341.333333 469.333333h170.666667v-42.666666H341.333333z" horiz-adv-x="1024" />
<glyph glyph-name="fenyeyulan" unicode="&#59378;" d="M810.666667 682.666667v-597.333334H213.333333V682.666667h597.333334z m-42.666667-42.666667H256v-512h512V640zM256 384h256v-42.666667H256zM554.666667 640v-298.666667h-42.666667V640zM405.333333 640v-298.666667h-42.666666V640z" horiz-adv-x="1024" /> <glyph glyph-name="fenyeyulan" unicode="&#59378;" d="M810.666667 682.666667v-597.333334H213.333333V682.666667h597.333334z m-42.666667-42.666667H256v-512h512V640zM256 384h256v-42.666667H256zM554.666667 640v-298.666667h-42.666667V640zM405.333333 640v-298.666667h-42.666666V640z" horiz-adv-x="1024" />
<glyph glyph-name="putong" unicode="&#59379;" d="M256 640h554.666667v-42.666667H256zM298.666667 640v-554.666667H256V640zM810.666667 640v-554.666667h-42.666667V640zM469.333333 640v-554.666667h-42.666666V640zM640 640v-554.666667h-42.666667V640zM256 469.333333h554.666667v-42.666666H256zM256 298.666667h554.666667v-42.666667H256zM256 128h554.666667v-42.666667H256z" horiz-adv-x="1024" /> <glyph glyph-name="putong" unicode="&#59379;" d="M256 640h554.666667v-42.666667H256zM298.666667 640v-554.666667H256V640zM810.666667 640v-554.666667h-42.666667V640zM469.333333 640v-554.666667h-42.666666V640zM640 640v-554.666667h-42.666667V640zM256 469.333333h554.666667v-42.666666H256zM256 298.666667h554.666667v-42.666667H256zM256 128h554.666667v-42.666667H256z" horiz-adv-x="1024" />
<glyph glyph-name="yemianbuju" unicode="&#59380;" d="M810.666667 682.666667v-42.666667h-170.709334L640 128h170.666667v-42.666667h-213.333334V682.666667h213.333334z m-384 0l-0.042667-554.666667H426.666667v-42.666667H213.333333v42.666667h170.624L384 640H213.333333V682.666667h213.333334z m106.666666-512v-85.333334h-42.666666v85.333334h42.666666z m0 170.666666v-85.333333h-42.666666v85.333333h42.666666z m0 170.666667v-85.333333h-42.666666V512h42.666666z m0 170.666667v-85.333334h-42.666666V682.666667h42.666666z" horiz-adv-x="1024" /> <glyph glyph-name="yemianbuju" unicode="&#59380;" d="M810.666667 682.666667v-42.666667h-170.709334L640 128h170.666667v-42.666667h-213.333334V682.666667h213.333334z m-384 0l-0.042667-554.666667H426.666667v-42.666667H213.333333v42.666667h170.624L384 640H213.333333V682.666667h213.333334z m106.666666-512v-85.333334h-42.666666v85.333334h42.666666z m0 170.666666v-85.333333h-42.666666v85.333333h42.666666z m0 170.666667v-85.333333h-42.666666V512h42.666666z m0 170.666667v-85.333334h-42.666666V682.666667h42.666666z" horiz-adv-x="1024" />
<glyph glyph-name="biaogesuoding" unicode="&#59374;" d="M810.666667 682.666667v-597.333334H213.333333V682.666667h597.333334zM341.333333 512.128H256V128h85.333333V512.128z m426.666667 0H383.872V128H768V512.128z m-149.333333-21.461333a64 64 0 0 0 63.701333-57.856L682.666667 426.666667v-64h42.666666v-213.333334h-298.666666v213.333334h42.666666V426.666667a64 64 0 0 0 57.856 63.701333L533.333333 490.666667h85.333334z m64-170.666667h-213.333334v-128h213.333334v128z m-106.666667-21.333333a21.333333 21.333333 0 0 0 21.333333-21.333334v-42.666666a21.333333 21.333333 0 1 0-42.666666 0v42.666666a21.333333 21.333333 0 0 0 21.333333 21.333334z m42.666667 149.333333h-85.333334a21.333333 21.333333 0 0 1-20.992-17.493333L512 426.666667v-64h128V426.666667a21.333333 21.333333 0 0 1-13.909333 20.010666l-3.584 0.981334-3.84 0.341333zM768 640H383.872v-85.290667L768 554.666667V640zM341.333333 640H256v-85.333333l85.333333 0.042666V640z" horiz-adv-x="1024" /> <glyph glyph-name="biaogesuoding" unicode="&#59374;" d="M810.666667 682.666667v-597.333334H213.333333V682.666667h597.333334zM341.333333 512.128H256V128h85.333333V512.128z m426.666667 0H383.872V128H768V512.128z m-149.333333-21.461333a64 64 0 0 0 63.701333-57.856L682.666667 426.666667v-64h42.666666v-213.333334h-298.666666v213.333334h42.666666V426.666667a64 64 0 0 0 57.856 63.701333L533.333333 490.666667h85.333334z m64-170.666667h-213.333334v-128h213.333334v128z m-106.666667-21.333333a21.333333 21.333333 0 0 0 21.333333-21.333334v-42.666666a21.333333 21.333333 0 1 0-42.666666 0v42.666666a21.333333 21.333333 0 0 0 21.333333 21.333334z m42.666667 149.333333h-85.333334a21.333333 21.333333 0 0 1-20.992-17.493333L512 426.666667v-64h128V426.666667a21.333333 21.333333 0 0 1-13.909333 20.010666l-3.584 0.981334-3.84 0.341333zM768 640H383.872v-85.290667L768 554.666667V640zM341.333333 640H256v-85.333333l85.333333 0.042666V640z" horiz-adv-x="1024" />
<glyph glyph-name="zhuandao1" unicode="&#59377;" d="M804.992 201.941333l-84.650667 84.224c-7.552 7.509333-21.930667 8.448-26.026666-1.365333-1.066667-2.602667-1.365333-10.026667-1.365334-10.026667v-56.874666H406.442667a69.034667 69.034667 0 0 0-69.205334 68.778666 69.034667 69.034667 0 0 0 69.205334 68.821334h259.84a128.341333 128.341333 0 0 1 128.597333 127.829333 128.384 128.384 0 0 1-128.554667 127.914667H411.946667A101.632 101.632 0 0 1 213.333333 581.674667a101.632 101.632 0 1 1 198.613334-29.525334h254.378666a69.034667 69.034667 0 0 0 69.162667-68.821333 69.034667 69.034667 0 0 0-69.162667-68.778667H406.442667a128.341333 128.341333 0 0 1-128.597334-127.872 128.341333 128.341333 0 0 1 128.597334-127.872h286.506666v-54.016s0-8.277333 1.408-11.52c4.053333-9.813333 18.432-10.24 25.984-2.730666l84.650667 84.181333a19.2 19.2 0 0 1 0 27.221333zM314.88 539.776a42.069333 42.069333 0 0 0-42.112 41.898667c0 23.082667 18.858667 41.856 42.112 41.856 23.210667 0 42.112-18.773333 42.112-41.856a42.069333 42.069333 0 0 0-42.112-41.898667z" horiz-adv-x="1024" /> <glyph glyph-name="zhuandao1" unicode="&#59377;" d="M804.992 201.941333l-84.650667 84.224c-7.552 7.509333-21.930667 8.448-26.026666-1.365333-1.066667-2.602667-1.365333-10.026667-1.365334-10.026667v-56.874666H406.442667a69.034667 69.034667 0 0 0-69.205334 68.778666 69.034667 69.034667 0 0 0 69.205334 68.821334h259.84a128.341333 128.341333 0 0 1 128.597333 127.829333 128.384 128.384 0 0 1-128.554667 127.914667H411.946667A101.632 101.632 0 0 1 213.333333 581.674667a101.632 101.632 0 1 1 198.613334-29.525334h254.378666a69.034667 69.034667 0 0 0 69.162667-68.821333 69.034667 69.034667 0 0 0-69.162667-68.778667H406.442667a128.341333 128.341333 0 0 1-128.597334-127.872 128.341333 128.341333 0 0 1 128.597334-127.872h286.506666v-54.016s0-8.277333 1.408-11.52c4.053333-9.813333 18.432-10.24 25.984-2.730666l84.650667 84.181333a19.2 19.2 0 0 1 0 27.221333zM314.88 539.776a42.069333 42.069333 0 0 0-42.112 41.898667c0 23.082667 18.858667 41.856 42.112 41.856 23.210667 0 42.112-18.773333 42.112-41.856a42.069333 42.069333 0 0 0-42.112-41.898667z" horiz-adv-x="1024" />
<glyph glyph-name="youjiantou" unicode="&#59373;" d="M682.666667 384l-341.333334-341.333333V725.333333z" horiz-adv-x="1024" /> <glyph glyph-name="youjiantou" unicode="&#59373;" d="M682.666667 384l-341.333334-341.333333V725.333333z" horiz-adv-x="1024" />
<glyph glyph-name="caidan2" unicode="&#59375;" d="M213.333333 426.666667h597.333334v-85.333334H213.333333zM213.333333 682.666667h597.333334v-85.333334H213.333333zM213.333333 170.666667h597.333334v-85.333334H213.333333z" horiz-adv-x="1024" /> <glyph glyph-name="caidan2" unicode="&#59375;" d="M213.333333 426.666667h597.333334v-85.333334H213.333333zM213.333333 682.666667h597.333334v-85.333334H213.333333zM213.333333 170.666667h597.333334v-85.333334H213.333333z" horiz-adv-x="1024" />
<glyph glyph-name="tihuan" unicode="&#59376;" d="M768 465.066667H280.405333l-4.394666 0.554666c-5.461333 0.853333-6.570667 1.749333-12.885334 6.528l-2.986666 5.376c-6.4 11.946667-5.376 13.738667 2.986666 28.885334L440.618667 682.666667l34.218666-34.048-136.362666-135.424H768v-48.170667z m-7.594667-163.242667L585.472 128l-34.261333 34.048 136.362666 135.424H258.048v48.170667h484.096c10.453333 0 19.882667-6.272 23.893333-15.872a25.6 25.6 0 0 0-5.632-27.989334z" horiz-adv-x="1024" /> <glyph glyph-name="tihuan" unicode="&#59376;" d="M768 465.066667H280.405333l-4.394666 0.554666c-5.461333 0.853333-6.570667 1.749333-12.885334 6.528l-2.986666 5.376c-6.4 11.946667-5.376 13.738667 2.986666 28.885334L440.618667 682.666667l34.218666-34.048-136.362666-135.424H768v-48.170667z m-7.594667-163.242667L585.472 128l-34.261333 34.048 136.362666 135.424H258.048v48.170667h484.096c10.453333 0 19.882667-6.272 23.893333-15.872a25.6 25.6 0 0 0-5.632-27.989334z" horiz-adv-x="1024" />
<glyph glyph-name="dongjie1" unicode="&#59361;" d="M809.557333 682.069333v-595.626666H213.930667V682.069333h595.626666zM256.426667 322.389333v-193.408l193.365333 0.042667-193.365333 193.365333z m510.549333 40.618667h-234.026667v-234.026667h234.026667v234.026667z m-276.565333 0H276.053333l214.357334-214.4v214.4z m276.565333 276.522667h-234.026667v-233.984h234.026667V639.530667zM256.426667 609.450667v-203.946667l203.904 0.042667-203.946667 203.946666z m233.984 30.08H286.592l203.861333-203.861334V639.573333z" horiz-adv-x="1024" /> <glyph glyph-name="dongjie1" unicode="&#59361;" d="M809.557333 682.069333v-595.626666H213.930667V682.069333h595.626666zM256.426667 322.389333v-193.408l193.365333 0.042667-193.365333 193.365333z m510.549333 40.618667h-234.026667v-234.026667h234.026667v234.026667z m-276.565333 0H276.053333l214.357334-214.4v214.4z m276.565333 276.522667h-234.026667v-233.984h234.026667V639.530667zM256.426667 609.450667v-203.946667l203.904 0.042667-203.946667 203.946666z m233.984 30.08H286.592l203.861333-203.861334V639.573333z" horiz-adv-x="1024" />
<glyph glyph-name="jian1" unicode="&#59362;" d="M213.333333 426.666667h597.333334v-85.333334H213.333333z" horiz-adv-x="1024" /> <glyph glyph-name="jian1" unicode="&#59362;" d="M213.333333 426.666667h597.333334v-85.333334H213.333333z" horiz-adv-x="1024" />
<glyph glyph-name="jia1" unicode="&#59363;" d="M213.333333 426.666667h597.333334v-85.333334H213.333333zM554.666667 682.666667v-597.333334h-85.333334V682.666667z" horiz-adv-x="1024" /> <glyph glyph-name="jia1" unicode="&#59363;" d="M213.333333 426.666667h597.333334v-85.333334H213.333333zM554.666667 682.666667v-597.333334h-85.333334V682.666667z" horiz-adv-x="1024" />
<glyph glyph-name="yichu1" unicode="&#59364;" d="M300.288 85.333333H213.333333V682.666667h86.954667v-279.978667h441.898667l-91.306667 85.845333 26.624 26.112L810.666667 384l-133.162667-130.688-26.624 26.154667 91.306667 85.845333-441.898667 0.042667zM530.688 682.666667h42.666667v-242.688h-42.666667V682.666667z m0-354.688h42.666667V85.333333h-42.666667v242.688z" horiz-adv-x="1024" /> <glyph glyph-name="yichu1" unicode="&#59364;" d="M300.288 85.333333H213.333333V682.666667h86.954667v-279.978667h441.898667l-91.306667 85.845333 26.624 26.112L810.666667 384l-133.162667-130.688-26.624 26.154667 91.306667 85.845333-441.898667 0.042667zM530.688 682.666667h42.666667v-242.688h-42.666667V682.666667z m0-354.688h42.666667V85.333333h-42.666667v242.688z" horiz-adv-x="1024" />
<glyph glyph-name="shengxu1" unicode="&#59365;" d="M684.757333 482.944v-290.645333a20.650667 20.650667 0 0 0-6.4-15.274667 23.04 23.04 0 0 0-16-6.357333 22.229333 22.229333 0 0 0-22.4 21.632V482.944L550.4 398.08a22.528 22.528 0 0 0-15.872-6.442667 22.613333 22.613333 0 0 0-15.914667 6.442667 20.650667 20.650667 0 0 0-6.613333 15.061333c0 5.674667 2.389333 11.093333 6.613333 15.061334l126.72 120.064a22.485333 22.485333 0 0 0 15.658667 6.4 23.594667 23.594667 0 0 0 16.128-5.546667l126.72-120.064c4.309333-3.84 6.826667-9.301333 6.826667-15.061333a20.266667 20.266667 0 0 0-6.826667-15.061334 23.04 23.04 0 0 0-15.914667-6.272 23.04 23.04 0 0 0-15.872 6.272l-87.296 84.010667zM229.930667 213.333333h265.472c9.173333 0 16.597333-9.472 16.597333-21.12s-7.424-21.12-16.597333-21.12H229.930667c-9.173333 0-16.597333 9.472-16.597334 21.12 0 11.690667 7.424 21.12 16.597334 21.12z m1.152 170.666667h177.792c9.813333 0 17.792-9.429333 17.792-21.12s-7.936-21.12-17.792-21.12H231.168c-9.813333 0-17.792 9.429333-17.792 21.12 0 11.648 7.978667 21.12 17.792 21.12z m264.362666 170.666667H229.845333C220.757333 554.666667 213.333333 545.194667 213.333333 533.546667s7.424-21.12 16.597334-21.12h265.472c9.173333 0 16.597333 9.472 16.597333 21.12S504.576 554.666667 495.402667 554.666667z" horiz-adv-x="1024" /> <glyph glyph-name="shengxu1" unicode="&#59365;" d="M684.757333 482.944v-290.645333a20.650667 20.650667 0 0 0-6.4-15.274667 23.04 23.04 0 0 0-16-6.357333 22.229333 22.229333 0 0 0-22.4 21.632V482.944L550.4 398.08a22.528 22.528 0 0 0-15.872-6.442667 22.613333 22.613333 0 0 0-15.914667 6.442667 20.650667 20.650667 0 0 0-6.613333 15.061333c0 5.674667 2.389333 11.093333 6.613333 15.061334l126.72 120.064a22.485333 22.485333 0 0 0 15.658667 6.4 23.594667 23.594667 0 0 0 16.128-5.546667l126.72-120.064c4.309333-3.84 6.826667-9.301333 6.826667-15.061333a20.266667 20.266667 0 0 0-6.826667-15.061334 23.04 23.04 0 0 0-15.914667-6.272 23.04 23.04 0 0 0-15.872 6.272l-87.296 84.010667zM229.930667 213.333333h265.472c9.173333 0 16.597333-9.472 16.597333-21.12s-7.424-21.12-16.597333-21.12H229.930667c-9.173333 0-16.597333 9.472-16.597334 21.12 0 11.690667 7.424 21.12 16.597334 21.12z m1.152 170.666667h177.792c9.813333 0 17.792-9.429333 17.792-21.12s-7.936-21.12-17.792-21.12H231.168c-9.813333 0-17.792 9.429333-17.792 21.12 0 11.648 7.978667 21.12 17.792 21.12z m264.362666 170.666667H229.845333C220.757333 554.666667 213.333333 545.194667 213.333333 533.546667s7.424-21.12 16.597334-21.12h265.472c9.173333 0 16.597333 9.472 16.597333 21.12S504.576 554.666667 495.402667 554.666667z" horiz-adv-x="1024" />
<glyph glyph-name="neikuangxian" unicode="&#59366;" d="M213.333333 384h554.666667v-42.666667H213.333333zM512 640v-554.666667h-42.666667V640zM213.333333 469.333333h42.666667v-42.666666H213.333333zM213.333333 298.666667h42.666667v-42.666667H213.333333zM213.333333 554.666667h42.666667v-42.666667H213.333333zM213.333333 213.333333h42.666667v-42.666666H213.333333zM725.333333 469.333333h42.666667v-42.666666h-42.666667zM725.333333 298.666667h42.666667v-42.666667h-42.666667zM725.333333 554.666667h42.666667v-42.666667h-42.666667zM725.333333 213.333333h42.666667v-42.666666h-42.666667zM725.333333 128h42.666667v-42.666667h-42.666667zM725.333333 640h42.666667v-42.666667h-42.666667zM213.333333 128h42.666667v-42.666667H213.333333zM213.333333 640h42.666667v-42.666667H213.333333zM384 128h42.666667v-42.666667H384zM384 640h42.666667v-42.666667H384zM554.666667 128h42.666666v-42.666667h-42.666666zM554.666667 640h42.666666v-42.666667h-42.666666zM298.666667 128h42.666666v-42.666667H298.666667zM298.666667 640h42.666666v-42.666667H298.666667zM640 128h42.666667v-42.666667h-42.666667zM640 640h42.666667v-42.666667h-42.666667z" horiz-adv-x="1024" /> <glyph glyph-name="neikuangxian" unicode="&#59366;" d="M213.333333 384h554.666667v-42.666667H213.333333zM512 640v-554.666667h-42.666667V640zM213.333333 469.333333h42.666667v-42.666666H213.333333zM213.333333 298.666667h42.666667v-42.666667H213.333333zM213.333333 554.666667h42.666667v-42.666667H213.333333zM213.333333 213.333333h42.666667v-42.666666H213.333333zM725.333333 469.333333h42.666667v-42.666666h-42.666667zM725.333333 298.666667h42.666667v-42.666667h-42.666667zM725.333333 554.666667h42.666667v-42.666667h-42.666667zM725.333333 213.333333h42.666667v-42.666666h-42.666667zM725.333333 128h42.666667v-42.666667h-42.666667zM725.333333 640h42.666667v-42.666667h-42.666667zM213.333333 128h42.666667v-42.666667H213.333333zM213.333333 640h42.666667v-42.666667H213.333333zM384 128h42.666667v-42.666667H384zM384 640h42.666667v-42.666667H384zM554.666667 128h42.666666v-42.666667h-42.666666zM554.666667 640h42.666666v-42.666667h-42.666666zM298.666667 128h42.666666v-42.666667H298.666667zM298.666667 640h42.666666v-42.666667H298.666667zM640 128h42.666667v-42.666667h-42.666667zM640 640h42.666667v-42.666667h-42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="qingchushaixuan" unicode="&#59367;" d="M214.016 173.568h593.92v-42.410667H214.016v42.410667z m578.048 312.106667l-180.693333 181.077333A53.376 53.376 0 0 1 573.738667 682.666667a45.653333 45.653333 0 0 1-32.64-13.226667l-313.941334-314.965333c-18.56-18.602667-17.322667-50.261333 2.688-70.4l68.010667-68.096h298.24l198.698667 199.338666c18.56 18.602667 17.322667 50.261333-2.730667 70.357334z m-213.546667-227.242667H315.434667L259.84 314.112c-3.968 4.010667-4.053333 9.088-2.730667 10.453333L430.08 497.92l193.92-193.92-45.44-45.568z" horiz-adv-x="1024" /> <glyph glyph-name="qingchushaixuan" unicode="&#59367;" d="M214.016 173.568h593.92v-42.410667H214.016v42.410667z m578.048 312.106667l-180.693333 181.077333A53.376 53.376 0 0 1 573.738667 682.666667a45.653333 45.653333 0 0 1-32.64-13.226667l-313.941334-314.965333c-18.56-18.602667-17.322667-50.261333 2.688-70.4l68.010667-68.096h298.24l198.698667 199.338666c18.56 18.602667 17.322667 50.261333-2.730667 70.357334z m-213.546667-227.242667H315.434667L259.84 314.112c-3.968 4.010667-4.053333 9.088-2.730667 10.453333L430.08 497.92l193.92-193.92-45.44-45.568z" horiz-adv-x="1024" />
<glyph glyph-name="wenbenxiangshang" unicode="&#59368;" d="M192 400.213333l213.333333 77.653334v0.64l1.621334-0.042667L554.666667 532.224v-45.354667l-106.666667-38.826666v-152.405334l106.666667-38.826666v-45.354667l-147.498667 53.674667-1.834667 0.042666v0.64l-213.333333 77.610667V400.213333z m46.634667-28.416L405.333333 311.125333v121.386667l-166.698666-60.714667zM597.333333 559.829333l90.496 90.538667 90.538667-90.538667-30.165333-30.165333-37.802667 37.76V106.666667h-42.666667V569.898667l-40.234666-40.234667L597.333333 559.829333z" horiz-adv-x="1024" /> <glyph glyph-name="wenbenxiangshang" unicode="&#59368;" d="M192 400.213333l213.333333 77.653334v0.64l1.621334-0.042667L554.666667 532.224v-45.354667l-106.666667-38.826666v-152.405334l106.666667-38.826666v-45.354667l-147.498667 53.674667-1.834667 0.042666v0.64l-213.333333 77.610667V400.213333z m46.634667-28.416L405.333333 311.125333v121.386667l-166.698666-60.714667zM597.333333 559.829333l90.496 90.538667 90.538667-90.538667-30.165333-30.165333-37.802667 37.76V106.666667h-42.666667V569.898667l-40.234666-40.234667L597.333333 559.829333z" horiz-adv-x="1024" />
<glyph glyph-name="jiangxu1" unicode="&#59369;" d="M684.757333 242.389333V533.034667a20.650667 20.650667 0 0 1-6.4 15.274666 23.04 23.04 0 0 1-16 6.357334 22.229333 22.229333 0 0 1-22.4-21.632v-290.645334L550.4 327.253333a22.528 22.528 0 0 1-15.872 6.442667 22.613333 22.613333 0 0 1-15.914667-6.442667 20.650667 20.650667 0 0 1-6.613333-15.061333c0-5.674667 2.389333-11.093333 6.613333-15.061333l126.72-120.064a22.485333 22.485333 0 0 1 15.658667-6.4 23.594667 23.594667 0 0 1 16.128 5.546666l126.72 120.064c4.309333 3.84 6.826667 9.301333 6.826667 15.061334a20.266667 20.266667 0 0 1-6.826667 15.061333 23.04 23.04 0 0 1-15.914667 6.272 23.04 23.04 0 0 1-15.872-6.272l-87.296-84.010667zM229.930667 213.333333h265.472c9.173333 0 16.597333-9.472 16.597333-21.12s-7.424-21.12-16.597333-21.12H229.930667c-9.173333 0-16.597333 9.472-16.597334 21.12 0 11.690667 7.424 21.12 16.597334 21.12z m1.152 170.666667h177.792c9.813333 0 17.792-9.429333 17.792-21.12s-7.936-21.12-17.792-21.12H231.168c-9.813333 0-17.792 9.429333-17.792 21.12 0 11.648 7.978667 21.12 17.792 21.12z m264.362666 170.666667H229.845333C220.757333 554.666667 213.333333 545.237333 213.333333 533.546667c0-11.648 7.424-21.12 16.597334-21.12h265.472c9.173333 0 16.597333 9.472 16.597333 21.12S504.576 554.666667 495.402667 554.666667z" horiz-adv-x="1024" /> <glyph glyph-name="jiangxu1" unicode="&#59369;" d="M684.757333 242.389333V533.034667a20.650667 20.650667 0 0 1-6.4 15.274666 23.04 23.04 0 0 1-16 6.357334 22.229333 22.229333 0 0 1-22.4-21.632v-290.645334L550.4 327.253333a22.528 22.528 0 0 1-15.872 6.442667 22.613333 22.613333 0 0 1-15.914667-6.442667 20.650667 20.650667 0 0 1-6.613333-15.061333c0-5.674667 2.389333-11.093333 6.613333-15.061333l126.72-120.064a22.485333 22.485333 0 0 1 15.658667-6.4 23.594667 23.594667 0 0 1 16.128 5.546666l126.72 120.064c4.309333 3.84 6.826667 9.301333 6.826667 15.061334a20.266667 20.266667 0 0 1-6.826667 15.061333 23.04 23.04 0 0 1-15.914667 6.272 23.04 23.04 0 0 1-15.872-6.272l-87.296-84.010667zM229.930667 213.333333h265.472c9.173333 0 16.597333-9.472 16.597333-21.12s-7.424-21.12-16.597333-21.12H229.930667c-9.173333 0-16.597333 9.472-16.597334 21.12 0 11.690667 7.424 21.12 16.597334 21.12z m1.152 170.666667h177.792c9.813333 0 17.792-9.429333 17.792-21.12s-7.936-21.12-17.792-21.12H231.168c-9.813333 0-17.792 9.429333-17.792 21.12 0 11.648 7.978667 21.12 17.792 21.12z m264.362666 170.666667H229.845333C220.757333 554.666667 213.333333 545.237333 213.333333 533.546667c0-11.648 7.424-21.12 16.597334-21.12h265.472c9.173333 0 16.597333 9.472 16.597333 21.12S504.576 554.666667 495.402667 554.666667z" horiz-adv-x="1024" />
<glyph glyph-name="neikuanghengxian" unicode="&#59370;" d="M213.333333 384h554.666667v-42.666667H213.333333zM213.333333 469.333333h42.666667v-42.666666H213.333333zM213.333333 298.666667h42.666667v-42.666667H213.333333zM213.333333 554.666667h42.666667v-42.666667H213.333333zM213.333333 213.333333h42.666667v-42.666666H213.333333zM725.333333 469.333333h42.666667v-42.666666h-42.666667zM469.333333 469.333333h42.666667v-42.666666h-42.666667zM725.333333 298.666667h42.666667v-42.666667h-42.666667zM469.333333 298.666667h42.666667v-42.666667h-42.666667zM725.333333 554.666667h42.666667v-42.666667h-42.666667zM469.333333 554.666667h42.666667v-42.666667h-42.666667zM725.333333 213.333333h42.666667v-42.666666h-42.666667zM469.333333 213.333333h42.666667v-42.666666h-42.666667zM725.333333 128h42.666667v-42.666667h-42.666667zM725.333333 640h42.666667v-42.666667h-42.666667zM213.333333 128h42.666667v-42.666667H213.333333zM213.333333 640h42.666667v-42.666667H213.333333zM384 128h42.666667v-42.666667H384zM384 640h42.666667v-42.666667H384zM554.666667 128h42.666666v-42.666667h-42.666666zM554.666667 640h42.666666v-42.666667h-42.666666zM298.666667 128h42.666666v-42.666667H298.666667zM298.666667 640h42.666666v-42.666667H298.666667zM469.333333 128h42.666667v-42.666667h-42.666667zM469.333333 640h42.666667v-42.666667h-42.666667zM640 128h42.666667v-42.666667h-42.666667zM640 640h42.666667v-42.666667h-42.666667z" horiz-adv-x="1024" /> <glyph glyph-name="neikuanghengxian" unicode="&#59370;" d="M213.333333 384h554.666667v-42.666667H213.333333zM213.333333 469.333333h42.666667v-42.666666H213.333333zM213.333333 298.666667h42.666667v-42.666667H213.333333zM213.333333 554.666667h42.666667v-42.666667H213.333333zM213.333333 213.333333h42.666667v-42.666666H213.333333zM725.333333 469.333333h42.666667v-42.666666h-42.666667zM469.333333 469.333333h42.666667v-42.666666h-42.666667zM725.333333 298.666667h42.666667v-42.666667h-42.666667zM469.333333 298.666667h42.666667v-42.666667h-42.666667zM725.333333 554.666667h42.666667v-42.666667h-42.666667zM469.333333 554.666667h42.666667v-42.666667h-42.666667zM725.333333 213.333333h42.666667v-42.666666h-42.666667zM469.333333 213.333333h42.666667v-42.666666h-42.666667zM725.333333 128h42.666667v-42.666667h-42.666667zM725.333333 640h42.666667v-42.666667h-42.666667zM213.333333 128h42.666667v-42.666667H213.333333zM213.333333 640h42.666667v-42.666667H213.333333zM384 128h42.666667v-42.666667H384zM384 640h42.666667v-42.666667H384zM554.666667 128h42.666666v-42.666667h-42.666666zM554.666667 640h42.666666v-42.666667h-42.666666zM298.666667 128h42.666666v-42.666667H298.666667zM298.666667 640h42.666666v-42.666667H298.666667zM469.333333 128h42.666667v-42.666667h-42.666667zM469.333333 640h42.666667v-42.666667h-42.666667zM640 128h42.666667v-42.666667h-42.666667zM640 640h42.666667v-42.666667h-42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="neikuangshuxian" unicode="&#59371;" d="M213.333333 469.333333h42.666667v-42.666666H213.333333zM213.333333 298.666667h42.666667v-42.666667H213.333333zM213.333333 554.666667h42.666667v-42.666667H213.333333zM213.333333 213.333333h42.666667v-42.666666H213.333333zM725.333333 469.333333h42.666667v-42.666666h-42.666667zM725.333333 298.666667h42.666667v-42.666667h-42.666667zM725.333333 554.666667h42.666667v-42.666667h-42.666667zM725.333333 213.333333h42.666667v-42.666666h-42.666667zM725.333333 128h42.666667v-42.666667h-42.666667zM725.333333 640h42.666667v-42.666667h-42.666667zM725.333333 384h42.666667v-42.666667h-42.666667zM213.333333 128h42.666667v-42.666667H213.333333zM213.333333 640h42.666667v-42.666667H213.333333zM213.333333 384h42.666667v-42.666667H213.333333zM384 128h42.666667v-42.666667H384zM384 640h42.666667v-42.666667H384zM384 384h42.666667v-42.666667H384zM554.666667 128h42.666666v-42.666667h-42.666666zM554.666667 640h42.666666v-42.666667h-42.666666zM554.666667 384h42.666666v-42.666667h-42.666666zM298.666667 128h42.666666v-42.666667H298.666667zM298.666667 640h42.666666v-42.666667H298.666667zM298.666667 384h42.666666v-42.666667H298.666667zM469.333333 128h42.666667v-42.666667h-42.666667zM469.333333 640h42.666667v-42.666667h-42.666667zM469.333333 384h42.666667v-42.666667h-42.666667zM640 128h42.666667v-42.666667h-42.666667zM640 640h42.666667v-42.666667h-42.666667zM640 384h42.666667v-42.666667h-42.666667zM512 640v-554.666667h-42.666667V640z" horiz-adv-x="1024" /> <glyph glyph-name="neikuangshuxian" unicode="&#59371;" d="M213.333333 469.333333h42.666667v-42.666666H213.333333zM213.333333 298.666667h42.666667v-42.666667H213.333333zM213.333333 554.666667h42.666667v-42.666667H213.333333zM213.333333 213.333333h42.666667v-42.666666H213.333333zM725.333333 469.333333h42.666667v-42.666666h-42.666667zM725.333333 298.666667h42.666667v-42.666667h-42.666667zM725.333333 554.666667h42.666667v-42.666667h-42.666667zM725.333333 213.333333h42.666667v-42.666666h-42.666667zM725.333333 128h42.666667v-42.666667h-42.666667zM725.333333 640h42.666667v-42.666667h-42.666667zM725.333333 384h42.666667v-42.666667h-42.666667zM213.333333 128h42.666667v-42.666667H213.333333zM213.333333 640h42.666667v-42.666667H213.333333zM213.333333 384h42.666667v-42.666667H213.333333zM384 128h42.666667v-42.666667H384zM384 640h42.666667v-42.666667H384zM384 384h42.666667v-42.666667H384zM554.666667 128h42.666666v-42.666667h-42.666666zM554.666667 640h42.666666v-42.666667h-42.666666zM554.666667 384h42.666666v-42.666667h-42.666666zM298.666667 128h42.666666v-42.666667H298.666667zM298.666667 640h42.666666v-42.666667H298.666667zM298.666667 384h42.666666v-42.666667H298.666667zM469.333333 128h42.666667v-42.666667h-42.666667zM469.333333 640h42.666667v-42.666667h-42.666667zM469.333333 384h42.666667v-42.666667h-42.666667zM640 128h42.666667v-42.666667h-42.666667zM640 640h42.666667v-42.666667h-42.666667zM640 384h42.666667v-42.666667h-42.666667zM512 640v-554.666667h-42.666667V640z" horiz-adv-x="1024" />
<glyph glyph-name="zidingyipaixu" unicode="&#59372;" d="M704 640a21.333333 21.333333 0 0 0 21.333333-21.333333v-469.333334a21.333333 21.333333 0 1 0-42.666666 0v469.333334c0 11.776 9.472 21.333333 21.333333 21.333333zM512 512c11.776 0 21.333333-7.68 21.333333-17.194667v-221.610666c0-9.514667-9.472-17.194667-21.333333-17.194667-11.776 0-21.333333 7.68-21.333333 17.194667V494.805333c0 4.565333 2.218667 8.96 6.186666 12.16A24.32 24.32 0 0 0 512 512zM320 640a21.333333 21.333333 0 0 0 21.333333-21.333333v-469.333334a21.333333 21.333333 0 1 0-42.666666 0v469.333334c0 11.776 9.472 21.333333 21.333333 21.333333z m283.562667-368.896a21.333333 21.333333 0 0 0 30.165333-30.165333l-106.666667-106.666667a21.333333 21.333333 0 0 0-30.165333 0l-106.666667 106.666667a21.333333 21.333333 0 0 0 30.165334 30.165333L512 179.498667l91.605333 91.562666z m0.298666 225.834667a21.333333 21.333333 0 0 1 30.165334 30.165333l-106.666667 106.666667a21.333333 21.333333 0 0 1-30.165333 0l-106.666667-106.666667a21.333333 21.333333 0 0 1 30.165333-30.165333l91.562667 91.562666 91.605333-91.562666z" horiz-adv-x="1024" /> <glyph glyph-name="zidingyipaixu" unicode="&#59372;" d="M704 640a21.333333 21.333333 0 0 0 21.333333-21.333333v-469.333334a21.333333 21.333333 0 1 0-42.666666 0v469.333334c0 11.776 9.472 21.333333 21.333333 21.333333zM512 512c11.776 0 21.333333-7.68 21.333333-17.194667v-221.610666c0-9.514667-9.472-17.194667-21.333333-17.194667-11.776 0-21.333333 7.68-21.333333 17.194667V494.805333c0 4.565333 2.218667 8.96 6.186666 12.16A24.32 24.32 0 0 0 512 512zM320 640a21.333333 21.333333 0 0 0 21.333333-21.333333v-469.333334a21.333333 21.333333 0 1 0-42.666666 0v469.333334c0 11.776 9.472 21.333333 21.333333 21.333333z m283.562667-368.896a21.333333 21.333333 0 0 0 30.165333-30.165333l-106.666667-106.666667a21.333333 21.333333 0 0 0-30.165333 0l-106.666667 106.666667a21.333333 21.333333 0 0 0 30.165334 30.165333L512 179.498667l91.605333 91.562666z m0.298666 225.834667a21.333333 21.333333 0 0 1 30.165334 30.165333l-106.666667 106.666667a21.333333 21.333333 0 0 1-30.165333 0l-106.666667-106.666667a21.333333 21.333333 0 0 1 30.165333-30.165333l91.562667 91.562666 91.605333-91.562666z" horiz-adv-x="1024" />
<glyph glyph-name="logo2" unicode="&#59359;" d="M1023.168 764.64c0-234.4-190.016-424.416-424.416-424.416 0 234.4 190.016 424.416 424.416 424.416zM131.36-127.168c0 234.4 190.016 424.416 424.416 424.416 0-234.4-190.016-424.416-424.416-424.416zM929.696-33.696c-182.784 0-330.944 148.16-330.944 330.944 182.752 0 330.944-148.16 330.944-330.944zM494.848 896H0v-494.848h494.848zM558.016 814.624H81.376v-476.64h476.64zM558.304 731.584H164.384v-393.92h393.92z" horiz-adv-x="1024" /> <glyph glyph-name="logo2" unicode="&#59359;" d="M1023.168 764.64c0-234.4-190.016-424.416-424.416-424.416 0 234.4 190.016 424.416 424.416 424.416zM131.36-127.168c0 234.4 190.016 424.416 424.416 424.416 0-234.4-190.016-424.416-424.416-424.416zM929.696-33.696c-182.784 0-330.944 148.16-330.944 330.944 182.752 0 330.944-148.16 330.944-330.944zM494.848 896H0v-494.848h494.848zM558.016 814.624H81.376v-476.64h476.64zM558.304 731.584H164.384v-393.92h393.92z" horiz-adv-x="1024" />
<glyph glyph-name="logo" unicode="&#59360;" d="M1023.168 764.64c0-234.4-190.016-424.416-424.416-424.416 0 234.4 190.016 424.416 424.416 424.416zM131.36-127.168c0 234.4 190.016 424.416 424.416 424.416 0-234.4-190.016-424.416-424.416-424.416zM929.696-33.696c-182.784 0-330.944 148.16-330.944 330.944 182.752 0 330.944-148.16 330.944-330.944zM494.848 896H0v-494.848h494.848zM558.016 814.624H81.376v-476.64h476.64zM558.304 731.584H164.384v-393.92h393.92zM1678.08 160v64h-247.04V616.96H1356.8V160h321.28z m177.568-8.96c40.96 0 75.52 17.28 103.68 51.84V160h72.96V490.88h-72.96v-202.24c-6.4-23.68-17.28-42.24-32-56.32-14.72-13.44-30.08-20.48-46.08-20.48-25.6 0-43.52 6.4-55.04 18.56-11.52 12.8-16.64 32-16.64 58.88v201.6h-72.96v-206.08c0-88.96 39.68-133.76 119.04-133.76z m407.936 0c42.88 0 77.44 10.88 103.04 32 26.24 21.76 43.52 55.04 51.2 99.84h-72.32c-5.76-48-32.64-72.32-81.28-72.32-28.16 0-49.28 10.24-63.36 30.08-15.36 20.48-22.4 49.28-22.4 85.76 0 35.84 7.68 64 23.04 83.84 15.36 20.48 36.48 30.08 63.36 30.08 21.76 0 39.68-5.12 53.12-15.36 12.8-10.24 21.76-25.6 26.24-46.72h72.32c-6.4 41.6-23.04 72.32-49.28 92.8-25.6 19.2-59.52 28.8-102.4 28.8-51.84 0-92.16-17.28-120.96-51.84-26.88-31.36-40.32-72.32-40.32-122.24 0-51.2 13.44-92.8 40.96-124.8 28.16-33.28 67.84-49.92 119.04-49.92z m292.128 8.96v115.84l33.28 31.36 115.84-147.2h93.44l-159.36 193.92 146.56 136.96h-94.08l-135.68-131.2V625.92h-72.96V160h72.96z m404.096-126.72l179.2 457.6h-79.36l-83.84-235.52-87.68 235.52h-79.36l131.2-323.2-58.24-134.4h78.08z m357.408 117.76c99.2 0 149.12 35.2 149.12 105.6 0 29.44-13.44 53.12-39.68 69.76-17.92 12.16-46.08 22.4-83.2 31.36-33.28 8.32-55.04 14.72-65.92 19.2-17.92 7.68-26.24 17.28-26.24 27.52 0 12.8 5.12 21.76 16.64 27.52 9.6 5.76 24.32 8.32 43.52 8.32 22.4 0 39.04-3.2 49.92-10.24 10.24-6.4 17.92-18.56 23.04-35.2h71.04c-7.68 70.4-55.68 104.96-142.72 104.96-40.96 0-73.6-8.32-98.56-26.24-25.6-16.64-37.76-40.32-37.76-71.04 0-28.8 12.8-51.2 38.4-67.2 16-10.24 43.52-19.84 82.56-28.8 33.28-7.68 55.04-13.44 65.28-18.56 19.2-8.96 28.8-21.12 28.8-36.48 0-26.88-25.6-40.96-76.8-40.96-24.32 0-41.6 4.48-52.48 12.16-10.88 8.96-18.56 23.68-22.4 44.8h-71.04c7.04-77.44 56.32-116.48 148.48-116.48z m286.976 8.96v184.96c0 28.16 6.4 50.56 19.84 68.48 12.8 17.92 30.72 26.88 53.76 26.88 24.96 0 43.52-7.68 56.32-23.68 10.88-14.72 16.64-36.48 16.64-64.64v-192h72.96v204.8c0 44.16-9.6 77.44-28.16 99.84-19.84 23.68-49.92 35.2-90.24 35.2-21.12 0-39.68-3.84-55.68-12.16-17.92-8.96-33.28-22.4-45.44-40.96v179.2h-72.96V160h72.96z m447.648-8.96c44.16 0 80.64 12.8 110.08 37.76 23.04 20.48 38.4 46.72 46.08 77.44h-72.96c-8.96-18.56-18.56-32-29.44-40.32-14.08-10.24-32-15.36-54.4-15.36-26.24 0-46.72 8.32-60.8 24.32-14.08 16-22.4 39.68-24.96 70.4h247.68c0 59.52-13.44 106.24-39.68 139.52-28.8 37.12-70.4 55.04-124.8 55.04-49.28 0-88.32-16.64-116.48-50.56-29.44-33.28-43.52-74.24-43.52-123.52 0-55.04 15.36-97.92 46.08-129.28 28.8-30.08 67.84-45.44 117.12-45.44z m85.12 209.28h-170.24c4.48 26.24 13.44 46.08 26.88 59.52 14.08 14.08 32.64 20.48 56.96 20.48 51.2 0 80-26.24 86.4-80z m285.088-209.28c44.16 0 80.64 12.8 110.08 37.76 23.04 20.48 38.4 46.72 46.08 77.44h-72.96c-8.96-18.56-18.56-32-29.44-40.32-14.08-10.24-32-15.36-54.4-15.36-26.24 0-46.72 8.32-60.8 24.32-14.08 16-22.4 39.68-24.96 70.4h247.68c0 59.52-13.44 106.24-39.68 139.52-28.8 37.12-70.4 55.04-124.8 55.04-49.28 0-88.32-16.64-116.48-50.56-29.44-33.28-43.52-74.24-43.52-123.52 0-55.04 15.36-97.92 46.08-129.28 28.8-30.08 67.84-45.44 117.12-45.44z m85.12 209.28h-170.24c4.48 26.24 13.44 46.08 26.88 59.52 14.08 14.08 32.64 20.48 56.96 20.48 51.2 0 80-26.24 86.4-80z m310.016-200.32v60.16h-43.52c-7.68 0-12.8 1.92-16.64 5.76-3.84 4.48-5.12 10.24-5.12 17.92v186.88h73.6v60.16h-73.6V597.76l-72.96-30.08v-76.8h-59.52v-60.16h59.52v-186.88c0-26.88 6.4-46.72 19.2-60.8 13.44-15.36 34.56-23.04 63.36-23.04h55.68z" horiz-adv-x="4864" /> <glyph glyph-name="logo" unicode="&#59360;" d="M1023.168 764.64c0-234.4-190.016-424.416-424.416-424.416 0 234.4 190.016 424.416 424.416 424.416zM131.36-127.168c0 234.4 190.016 424.416 424.416 424.416 0-234.4-190.016-424.416-424.416-424.416zM929.696-33.696c-182.784 0-330.944 148.16-330.944 330.944 182.752 0 330.944-148.16 330.944-330.944zM494.848 896H0v-494.848h494.848zM558.016 814.624H81.376v-476.64h476.64zM558.304 731.584H164.384v-393.92h393.92zM1678.08 160v64h-247.04V616.96H1356.8V160h321.28z m177.568-8.96c40.96 0 75.52 17.28 103.68 51.84V160h72.96V490.88h-72.96v-202.24c-6.4-23.68-17.28-42.24-32-56.32-14.72-13.44-30.08-20.48-46.08-20.48-25.6 0-43.52 6.4-55.04 18.56-11.52 12.8-16.64 32-16.64 58.88v201.6h-72.96v-206.08c0-88.96 39.68-133.76 119.04-133.76z m407.936 0c42.88 0 77.44 10.88 103.04 32 26.24 21.76 43.52 55.04 51.2 99.84h-72.32c-5.76-48-32.64-72.32-81.28-72.32-28.16 0-49.28 10.24-63.36 30.08-15.36 20.48-22.4 49.28-22.4 85.76 0 35.84 7.68 64 23.04 83.84 15.36 20.48 36.48 30.08 63.36 30.08 21.76 0 39.68-5.12 53.12-15.36 12.8-10.24 21.76-25.6 26.24-46.72h72.32c-6.4 41.6-23.04 72.32-49.28 92.8-25.6 19.2-59.52 28.8-102.4 28.8-51.84 0-92.16-17.28-120.96-51.84-26.88-31.36-40.32-72.32-40.32-122.24 0-51.2 13.44-92.8 40.96-124.8 28.16-33.28 67.84-49.92 119.04-49.92z m292.128 8.96v115.84l33.28 31.36 115.84-147.2h93.44l-159.36 193.92 146.56 136.96h-94.08l-135.68-131.2V625.92h-72.96V160h72.96z m404.096-126.72l179.2 457.6h-79.36l-83.84-235.52-87.68 235.52h-79.36l131.2-323.2-58.24-134.4h78.08z m357.408 117.76c99.2 0 149.12 35.2 149.12 105.6 0 29.44-13.44 53.12-39.68 69.76-17.92 12.16-46.08 22.4-83.2 31.36-33.28 8.32-55.04 14.72-65.92 19.2-17.92 7.68-26.24 17.28-26.24 27.52 0 12.8 5.12 21.76 16.64 27.52 9.6 5.76 24.32 8.32 43.52 8.32 22.4 0 39.04-3.2 49.92-10.24 10.24-6.4 17.92-18.56 23.04-35.2h71.04c-7.68 70.4-55.68 104.96-142.72 104.96-40.96 0-73.6-8.32-98.56-26.24-25.6-16.64-37.76-40.32-37.76-71.04 0-28.8 12.8-51.2 38.4-67.2 16-10.24 43.52-19.84 82.56-28.8 33.28-7.68 55.04-13.44 65.28-18.56 19.2-8.96 28.8-21.12 28.8-36.48 0-26.88-25.6-40.96-76.8-40.96-24.32 0-41.6 4.48-52.48 12.16-10.88 8.96-18.56 23.68-22.4 44.8h-71.04c7.04-77.44 56.32-116.48 148.48-116.48z m286.976 8.96v184.96c0 28.16 6.4 50.56 19.84 68.48 12.8 17.92 30.72 26.88 53.76 26.88 24.96 0 43.52-7.68 56.32-23.68 10.88-14.72 16.64-36.48 16.64-64.64v-192h72.96v204.8c0 44.16-9.6 77.44-28.16 99.84-19.84 23.68-49.92 35.2-90.24 35.2-21.12 0-39.68-3.84-55.68-12.16-17.92-8.96-33.28-22.4-45.44-40.96v179.2h-72.96V160h72.96z m447.648-8.96c44.16 0 80.64 12.8 110.08 37.76 23.04 20.48 38.4 46.72 46.08 77.44h-72.96c-8.96-18.56-18.56-32-29.44-40.32-14.08-10.24-32-15.36-54.4-15.36-26.24 0-46.72 8.32-60.8 24.32-14.08 16-22.4 39.68-24.96 70.4h247.68c0 59.52-13.44 106.24-39.68 139.52-28.8 37.12-70.4 55.04-124.8 55.04-49.28 0-88.32-16.64-116.48-50.56-29.44-33.28-43.52-74.24-43.52-123.52 0-55.04 15.36-97.92 46.08-129.28 28.8-30.08 67.84-45.44 117.12-45.44z m85.12 209.28h-170.24c4.48 26.24 13.44 46.08 26.88 59.52 14.08 14.08 32.64 20.48 56.96 20.48 51.2 0 80-26.24 86.4-80z m285.088-209.28c44.16 0 80.64 12.8 110.08 37.76 23.04 20.48 38.4 46.72 46.08 77.44h-72.96c-8.96-18.56-18.56-32-29.44-40.32-14.08-10.24-32-15.36-54.4-15.36-26.24 0-46.72 8.32-60.8 24.32-14.08 16-22.4 39.68-24.96 70.4h247.68c0 59.52-13.44 106.24-39.68 139.52-28.8 37.12-70.4 55.04-124.8 55.04-49.28 0-88.32-16.64-116.48-50.56-29.44-33.28-43.52-74.24-43.52-123.52 0-55.04 15.36-97.92 46.08-129.28 28.8-30.08 67.84-45.44 117.12-45.44z m85.12 209.28h-170.24c4.48 26.24 13.44 46.08 26.88 59.52 14.08 14.08 32.64 20.48 56.96 20.48 51.2 0 80-26.24 86.4-80z m310.016-200.32v60.16h-43.52c-7.68 0-12.8 1.92-16.64 5.76-3.84 4.48-5.12 10.24-5.12 17.92v186.88h73.6v60.16h-73.6V597.76l-72.96-30.08v-76.8h-59.52v-60.16h59.52v-186.88c0-26.88 6.4-46.72 19.2-60.8 13.44-15.36 34.56-23.04 63.36-23.04h55.68z" horiz-adv-x="4864" />
<glyph glyph-name="wenbenqingxie1" unicode="&#59358;" d="M469.333333 640h170.666667v-42.666667h-170.666667zM573.738667 611.413333l-81.493334-462.208-41.984 7.381334 81.493334 462.208zM384 170.666667h170.666667v-42.666667H384z" horiz-adv-x="1024" /> <glyph glyph-name="wenbenqingxie1" unicode="&#59358;" d="M469.333333 640h170.666667v-42.666667h-170.666667zM573.738667 611.413333l-81.493334-462.208-41.984 7.381334 81.493334 462.208zM384 170.666667h170.666667v-42.666667H384z" horiz-adv-x="1024" />
<glyph glyph-name="jiacu" unicode="&#59353;" d="M298.666667 682.666667h224a174.208 174.208 0 0 0 141.952-275.242667A174.208 174.208 0 0 0 572.458667 85.333333H298.666667V682.666667z m273.792-348.458667l-174.250667 0.042667v-149.333334h174.250667a74.666667 74.666667 0 0 1 6.101333 149.077334l-6.101333 0.213333zM398.208 583.125333v-149.333333h124.458667a74.666667 74.666667 0 0 1 6.144 149.077333l-6.144 0.256H398.208z" horiz-adv-x="1024" /> <glyph glyph-name="jiacu" unicode="&#59353;" d="M298.666667 682.666667h224a174.208 174.208 0 0 0 141.952-275.242667A174.208 174.208 0 0 0 572.458667 85.333333H298.666667V682.666667z m273.792-348.458667l-174.250667 0.042667v-149.333334h174.250667a74.666667 74.666667 0 0 1 6.101333 149.077334l-6.101333 0.213333zM398.208 583.125333v-149.333333h124.458667a74.666667 74.666667 0 0 1 6.144 149.077333l-6.144 0.256H398.208z" horiz-adv-x="1024" />
<glyph glyph-name="sousuo" unicode="&#59274;" d="M664.832 261.376l128.554667-128.597333a21.333333 21.333333 0 1 0-30.165334-30.165334l-128.597333 128.597334a256 256 0 1 0 30.165333 30.165333zM469.333333 213.333333a213.333333 213.333333 0 1 1 0 426.666667 213.333333 213.333333 0 0 1 0-426.666667z" horiz-adv-x="1024" /> <glyph glyph-name="sousuo" unicode="&#59274;" d="M664.832 261.376l128.554667-128.597333a21.333333 21.333333 0 1 0-30.165334-30.165334l-128.597333 128.597334a256 256 0 1 0 30.165333 30.165333zM469.333333 213.333333a213.333333 213.333333 0 1 1 0 426.666667 213.333333 213.333333 0 0 1 0-426.666667z" horiz-adv-x="1024" />
<glyph glyph-name="guanbi" unicode="&#59275;" d="M119.808 715.946667l60.330667 60.245333 724.053333-724.053333-60.330667-60.330667zM843.946667 776.192l60.245333-60.330667-724.053333-724.053333-60.330667 60.330667z" horiz-adv-x="1024" /> <glyph glyph-name="guanbi" unicode="&#59275;" d="M119.808 715.946667l60.330667 60.245333 724.053333-724.053333-60.330667-60.330667zM843.946667 776.192l60.245333-60.330667-724.053333-724.053333-60.330667 60.330667z" horiz-adv-x="1024" />
<glyph glyph-name="xiayige" unicode="&#59276;" d="M512 213.333333L170.666667 554.666667h682.666666z" horiz-adv-x="1024" /> <glyph glyph-name="xiayige" unicode="&#59276;" d="M512 213.333333L170.666667 554.666667h682.666666z" horiz-adv-x="1024" />
<glyph glyph-name="xiala" unicode="&#59277;" d="M149.930667 451.669333l60.330666 60.330667 362.069334-362.069333L512 89.6zM813.738667 512l60.330666-60.330667L512 89.6l-60.330667 60.330667z" horiz-adv-x="1024" /> <glyph glyph-name="xiala" unicode="&#59277;" d="M149.930667 451.669333l60.330666 60.330667 362.069334-362.069333L512 89.6zM813.738667 512l60.330666-60.330667L512 89.6l-60.330667 60.330667z" horiz-adv-x="1024" />
<glyph glyph-name="wenbenyanse" unicode="&#59278;" d="M549.546667 640l194.133333-533.333333h-45.354667l-77.653333 213.333333H421.632l-77.653333-213.333333H298.666667L492.757333 640h56.789334z m-28.416-46.634667L437.162667 362.666667h167.978666l-84.010666 230.698666z" horiz-adv-x="1024" /> <glyph glyph-name="wenbenyanse" unicode="&#59278;" d="M549.546667 640l194.133333-533.333333h-45.354667l-77.653333 213.333333H421.632l-77.653333-213.333333H298.666667L492.757333 640h56.789334z m-28.416-46.634667L437.162667 362.666667h167.978666l-84.010666 230.698666z" horiz-adv-x="1024" />
<glyph glyph-name="shangyige" unicode="&#59279;" d="M512 554.666667l341.333333-341.333334H170.666667z" horiz-adv-x="1024" /> <glyph glyph-name="shangyige" unicode="&#59279;" d="M512 554.666667l341.333333-341.333334H170.666667z" horiz-adv-x="1024" />
<glyph glyph-name="shujutoushi" unicode="&#59280;" d="M256 533.333333v-298.666666l256-149.333334 256 149.333334v298.666666L512 682.666667 256 533.333333zM725.333333 256l-213.333333-128-213.333333 128V512l213.333333 128 213.333333-128v-256z m-189.354666-40.021333a18.645333 18.645333 0 0 0-18.645334-18.645334 18.304 18.304 0 0 0-18.688 18.645334V360.533333l-130.645333 75.349334a18.645333 18.645333 0 0 0 4.565333 34.133333 18.304 18.304 0 0 0 14.08-2.005333l130.688-74.666667 129.578667 74.666667a18.304 18.304 0 0 0 25.386667-6.698667 18.645333 18.645333 0 0 0-6.784-25.386667l-129.536-74.666666v-145.237334z" horiz-adv-x="1024" /> <glyph glyph-name="shujutoushi" unicode="&#59280;" d="M256 533.333333v-298.666666l256-149.333334 256 149.333334v298.666666L512 682.666667 256 533.333333zM725.333333 256l-213.333333-128-213.333333 128V512l213.333333 128 213.333333-128v-256z m-189.354666-40.021333a18.645333 18.645333 0 0 0-18.645334-18.645334 18.304 18.304 0 0 0-18.688 18.645334V360.533333l-130.645333 75.349334a18.645333 18.645333 0 0 0 4.565333 34.133333 18.304 18.304 0 0 0 14.08-2.005333l130.688-74.666667 129.578667 74.666667a18.304 18.304 0 0 0 25.386667-6.698667 18.645333 18.645333 0 0 0-6.784-25.386667l-129.536-74.666666v-145.237334z" horiz-adv-x="1024" />
<glyph glyph-name="tianchong" unicode="&#59281;" d="M730.24 333.824l-253.44-253.44-217.173333 217.258667 253.44 253.44 217.173333-217.258667z m-72.405333 0.042667L512.981333 478.72l-180.992-180.992 144.810667-144.853333 181.034667 181.034666zM520.533333 597.333333v-230.4H469.333333V546.176H392.533333v-179.626667H341.333333V597.333333zM699.733333 341.333333c48.768 0 88.32-37.802667 88.32-84.48 0-46.634667-39.552-84.48-88.32-84.48" horiz-adv-x="1024" /> <glyph glyph-name="tianchong" unicode="&#59281;" d="M730.24 333.824l-253.44-253.44-217.173333 217.258667 253.44 253.44 217.173333-217.258667z m-72.405333 0.042667L512.981333 478.72l-180.992-180.992 144.810667-144.853333 181.034667 181.034666zM520.533333 597.333333v-230.4H469.333333V546.176H392.533333v-179.626667H341.333333V597.333333zM699.733333 341.333333c48.768 0 88.32-37.802667 88.32-84.48 0-46.634667-39.552-84.48-88.32-84.48" horiz-adv-x="1024" />
<glyph glyph-name="zengjiaxiaoshuwei" unicode="&#59282;" d="M533.333333 106.666667m-42.666666 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0ZM682.666667 341.333333a85.333333 85.333333 0 0 1-85.333334-85.333333v-85.333333a85.333333 85.333333 0 1 1 170.666667 0V256a85.333333 85.333333 0 0 1-85.333333 85.333333z m0-42.666666a42.666667 42.666667 0 0 0 42.666666-42.666667v-85.333333a42.666667 42.666667 0 1 0-85.333333 0V256a42.666667 42.666667 0 0 0 42.666667 42.666667zM367.829333 96.298667l90.538667 90.538666L367.786667 277.333333l-30.165334-30.165333 37.76-37.802667H256v-42.666666h121.898667l-40.234667-40.234667 30.165333-30.165333zM490.666667 682.666667a85.333333 85.333333 0 0 1-85.333334-85.333334v-85.333333a85.333333 85.333333 0 1 1 170.666667 0V597.333333a85.333333 85.333333 0 0 1-85.333333 85.333334z m0-42.666667a42.666667 42.666667 0 0 0 42.666666-42.666667v-85.333333a42.666667 42.666667 0 1 0-85.333333 0V597.333333a42.666667 42.666667 0 0 0 42.666667 42.666667zM682.666667 682.666667a85.333333 85.333333 0 0 1-85.333334-85.333334v-85.333333a85.333333 85.333333 0 1 1 170.666667 0V597.333333a85.333333 85.333333 0 0 1-85.333333 85.333334z m0-42.666667a42.666667 42.666667 0 0 0 42.666666-42.666667v-85.333333a42.666667 42.666667 0 0 0-85.333333 0V597.333333a42.666667 42.666667 0 0 0 42.666667 42.666667zM341.333333 448m-42.666666 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0Z" horiz-adv-x="1024" /> <glyph glyph-name="zengjiaxiaoshuwei" unicode="&#59282;" d="M533.333333 106.666667m-42.666666 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0ZM682.666667 341.333333a85.333333 85.333333 0 0 1-85.333334-85.333333v-85.333333a85.333333 85.333333 0 1 1 170.666667 0V256a85.333333 85.333333 0 0 1-85.333333 85.333333z m0-42.666666a42.666667 42.666667 0 0 0 42.666666-42.666667v-85.333333a42.666667 42.666667 0 1 0-85.333333 0V256a42.666667 42.666667 0 0 0 42.666667 42.666667zM367.829333 96.298667l90.538667 90.538666L367.786667 277.333333l-30.165334-30.165333 37.76-37.802667H256v-42.666666h121.898667l-40.234667-40.234667 30.165333-30.165333zM490.666667 682.666667a85.333333 85.333333 0 0 1-85.333334-85.333334v-85.333333a85.333333 85.333333 0 1 1 170.666667 0V597.333333a85.333333 85.333333 0 0 1-85.333333 85.333334z m0-42.666667a42.666667 42.666667 0 0 0 42.666666-42.666667v-85.333333a42.666667 42.666667 0 1 0-85.333333 0V597.333333a42.666667 42.666667 0 0 0 42.666667 42.666667zM682.666667 682.666667a85.333333 85.333333 0 0 1-85.333334-85.333334v-85.333333a85.333333 85.333333 0 1 1 170.666667 0V597.333333a85.333333 85.333333 0 0 1-85.333333 85.333334z m0-42.666667a42.666667 42.666667 0 0 0 42.666666-42.666667v-85.333333a42.666667 42.666667 0 0 0-85.333333 0V597.333333a42.666667 42.666667 0 0 0 42.666667 42.666667zM341.333333 448m-42.666666 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0Z" horiz-adv-x="1024" />
<glyph glyph-name="bianji2" unicode="&#59283;" d="M810.581333 382.634667V128a42.666667 42.666667 0 0 0-42.666666-42.666667H298.666667a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667h234.624v-42.666667H320a21.333333 21.333333 0 0 1-21.333333-21.333333v-469.333334a21.333333 21.333333 0 0 1 21.333333-21.333333h426.581333a21.333333 21.333333 0 0 1 21.333334 21.333333V384h0.042666a21.333333 21.333333 0 1 0 42.581334-1.365333z m-285.056 2.432l241.365334 241.365333a21.333333 21.333333 0 0 0 30.165333-30.165333l-241.365333-241.365334a21.333333 21.333333 0 0 0-30.165334 30.165334zM533.290667 640V682.666667a21.333333 21.333333 0 0 0 21.333333-21.333334c0-11.776-10.069333-21.333333-21.333333-21.333333z" horiz-adv-x="1024" /> <glyph glyph-name="bianji2" unicode="&#59283;" d="M810.581333 382.634667V128a42.666667 42.666667 0 0 0-42.666666-42.666667H298.666667a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667h234.624v-42.666667H320a21.333333 21.333333 0 0 1-21.333333-21.333333v-469.333334a21.333333 21.333333 0 0 1 21.333333-21.333333h426.581333a21.333333 21.333333 0 0 1 21.333334 21.333333V384h0.042666a21.333333 21.333333 0 1 0 42.581334-1.365333z m-285.056 2.432l241.365334 241.365333a21.333333 21.333333 0 0 0 30.165333-30.165333l-241.365333-241.365334a21.333333 21.333333 0 0 0-30.165334 30.165334zM533.290667 640V682.666667a21.333333 21.333333 0 0 0 21.333333-21.333334c0-11.776-10.069333-21.333333-21.333333-21.333333z" horiz-adv-x="1024" />
<glyph glyph-name="jieping" unicode="&#59284;" d="M590.848 328.96l-265.386667 306.645333a28.245333 28.245333 0 0 0 3.2 40.149334 29.141333 29.141333 0 0 0 40.789334-3.242667l267.946666-309.674667a124.885333 124.885333 0 0 0 144.213334-34.474666 125.141333 125.141333 0 0 0-16.042667-176.256 125.141333 125.141333 0 0 0-176.341333 14.805333 125.013333 125.013333 0 0 0 1.621333 162.048z m40.149333-18.133333c-18.602667-15.701333-29.312-38.826667-29.312-63.189334 0-45.909333 37.461333-83.157333 83.754667-83.157333a83.413333 83.413333 0 0 1 83.712 83.157333 83.413333 83.413333 0 0 1-83.712 83.114667c-15.189333 0-29.44-4.010667-41.685333-11.008a28.458667 28.458667 0 0 0-12.757334-8.96v0.042667z m-150.698666 52.565333l-38.229334-44.16a29.653333 29.653333 0 0 0-0.768-0.810667 124.885333 124.885333 0 0 0-6.528-151.509333 125.141333 125.141333 0 0 0-176.341333-14.805333C205.226667 196.693333 198.101333 275.626667 242.346667 328.362667a124.928 124.928 0 0 0 156.416 28.544l38.528 44.501333c9.514667-17.237333 24.746667-30.634667 43.008-37.973333z m105.6 122.026667a85.632 85.632 0 0 1-43.818667 37.12l129.749333 150.016a29.141333 29.141333 0 0 0 40.789334 3.242666 28.245333 28.245333 0 0 0 3.2-40.149333l-129.92-150.186667z m-300.8-301.44c35.413333-29.738667 88.064-25.301333 117.546666 9.813333a83.413333 83.413333 0 0 1-10.666666 117.546667 83.456 83.456 0 0 1-117.589334-9.856 83.456 83.456 0 0 1 10.709334-117.504z" horiz-adv-x="1024" /> <glyph glyph-name="jieping" unicode="&#59284;" d="M590.848 328.96l-265.386667 306.645333a28.245333 28.245333 0 0 0 3.2 40.149334 29.141333 29.141333 0 0 0 40.789334-3.242667l267.946666-309.674667a124.885333 124.885333 0 0 0 144.213334-34.474666 125.141333 125.141333 0 0 0-16.042667-176.256 125.141333 125.141333 0 0 0-176.341333 14.805333 125.013333 125.013333 0 0 0 1.621333 162.048z m40.149333-18.133333c-18.602667-15.701333-29.312-38.826667-29.312-63.189334 0-45.909333 37.461333-83.157333 83.754667-83.157333a83.413333 83.413333 0 0 1 83.712 83.157333 83.413333 83.413333 0 0 1-83.712 83.114667c-15.189333 0-29.44-4.010667-41.685333-11.008a28.458667 28.458667 0 0 0-12.757334-8.96v0.042667z m-150.698666 52.565333l-38.229334-44.16a29.653333 29.653333 0 0 0-0.768-0.810667 124.885333 124.885333 0 0 0-6.528-151.509333 125.141333 125.141333 0 0 0-176.341333-14.805333C205.226667 196.693333 198.101333 275.626667 242.346667 328.362667a124.928 124.928 0 0 0 156.416 28.544l38.528 44.501333c9.514667-17.237333 24.746667-30.634667 43.008-37.973333z m105.6 122.026667a85.632 85.632 0 0 1-43.818667 37.12l129.749333 150.016a29.141333 29.141333 0 0 0 40.789334 3.242666 28.245333 28.245333 0 0 0 3.2-40.149333l-129.92-150.186667z m-300.8-301.44c35.413333-29.738667 88.064-25.301333 117.546666 9.813333a83.413333 83.413333 0 0 1-10.666666 117.546667 83.456 83.456 0 0 1-117.589334-9.856 83.456 83.456 0 0 1 10.709334-117.504z" horiz-adv-x="1024" />
<glyph glyph-name="jianxiaoxiaoshuwei" unicode="&#59286;" d="M533.333333 448m-42.666666 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0ZM341.333333 106.666667m-42.666666 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0ZM346.496 501.632L256 592.213333 346.496 682.666667l30.165333-30.165334-37.717333-37.802666h119.424v-42.666667H336.469333l40.192-40.234667-30.165333-30.165333zM682.666667 682.666667a85.333333 85.333333 0 0 1-85.333334-85.333334v-85.333333a85.333333 85.333333 0 1 1 170.666667 0V597.333333a85.333333 85.333333 0 0 1-85.333333 85.333334z m0-42.666667a42.666667 42.666667 0 0 0 42.666666-42.666667v-85.333333a42.666667 42.666667 0 0 0-85.333333 0V597.333333a42.666667 42.666667 0 0 0 42.666667 42.666667zM490.666667 341.333333a85.333333 85.333333 0 0 1-85.333334-85.333333v-85.333333a85.333333 85.333333 0 1 1 170.666667 0v85.333333a85.333333 85.333333 0 0 1-85.333333 85.333333z m0-42.666666a42.666667 42.666667 0 0 0 42.666666-42.666667v-85.333333a42.666667 42.666667 0 0 0-85.333333 0v85.333333a42.666667 42.666667 0 0 0 42.666667 42.666667zM682.666667 341.333333a85.333333 85.333333 0 0 1-85.333334-85.333333v-85.333333a85.333333 85.333333 0 1 1 170.666667 0v85.333333a85.333333 85.333333 0 0 1-85.333333 85.333333z m0-42.666666a42.666667 42.666667 0 0 0 42.666666-42.666667v-85.333333a42.666667 42.666667 0 0 0-85.333333 0v85.333333a42.666667 42.666667 0 0 0 42.666667 42.666667z" horiz-adv-x="1024" /> <glyph glyph-name="jianxiaoxiaoshuwei" unicode="&#59286;" d="M533.333333 448m-42.666666 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0ZM341.333333 106.666667m-42.666666 0a42.666667 42.666667 0 1 1 85.333333 0 42.666667 42.666667 0 1 1-85.333333 0ZM346.496 501.632L256 592.213333 346.496 682.666667l30.165333-30.165334-37.717333-37.802666h119.424v-42.666667H336.469333l40.192-40.234667-30.165333-30.165333zM682.666667 682.666667a85.333333 85.333333 0 0 1-85.333334-85.333334v-85.333333a85.333333 85.333333 0 1 1 170.666667 0V597.333333a85.333333 85.333333 0 0 1-85.333333 85.333334z m0-42.666667a42.666667 42.666667 0 0 0 42.666666-42.666667v-85.333333a42.666667 42.666667 0 0 0-85.333333 0V597.333333a42.666667 42.666667 0 0 0 42.666667 42.666667zM490.666667 341.333333a85.333333 85.333333 0 0 1-85.333334-85.333333v-85.333333a85.333333 85.333333 0 1 1 170.666667 0v85.333333a85.333333 85.333333 0 0 1-85.333333 85.333333z m0-42.666666a42.666667 42.666667 0 0 0 42.666666-42.666667v-85.333333a42.666667 42.666667 0 0 0-85.333333 0v85.333333a42.666667 42.666667 0 0 0 42.666667 42.666667zM682.666667 341.333333a85.333333 85.333333 0 0 1-85.333334-85.333333v-85.333333a85.333333 85.333333 0 1 1 170.666667 0v85.333333a85.333333 85.333333 0 0 1-85.333333 85.333333z m0-42.666666a42.666667 42.666667 0 0 0 42.666666-42.666667v-85.333333a42.666667 42.666667 0 0 0-85.333333 0v85.333333a42.666667 42.666667 0 0 0 42.666667 42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="caidan" unicode="&#59287;" d="M256 682.666667h192a42.666667 42.666667 0 0 0 42.666667-42.666667v-192a42.666667 42.666667 0 0 0-42.666667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333V469.333333a21.333333 21.333333 0 0 1 21.333333-21.333333H426.666667a21.333333 21.333333 0 0 1 21.333333 21.333333V618.666667A21.333333 21.333333 0 0 1 426.666667 640H277.333333z m298.666667 42.666667H768a42.666667 42.666667 0 0 0 42.666667-42.666667v-192a42.666667 42.666667 0 0 0-42.666667-42.666667h-192a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333V469.333333a21.333333 21.333333 0 0 1 21.333333-21.333333h149.333334a21.333333 21.333333 0 0 1 21.333333 21.333333V618.666667a21.333333 21.333333 0 0 1-21.333333 21.333333H597.333333z m-21.333333-277.333333H768a42.666667 42.666667 0 0 0 42.666667-42.666667V128a42.666667 42.666667 0 0 0-42.666667-42.666667h-192a42.666667 42.666667 0 0 0-42.666667 42.666667v192a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-149.333334a21.333333 21.333333 0 0 1 21.333333-21.333333h149.333334a21.333333 21.333333 0 0 1 21.333333 21.333333V298.666667a21.333333 21.333333 0 0 1-21.333333 21.333333H597.333333z m-341.333333 42.666667h192a42.666667 42.666667 0 0 0 42.666667-42.666667V128a42.666667 42.666667 0 0 0-42.666667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667v192a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-149.333334a21.333333 21.333333 0 0 1 21.333333-21.333333H426.666667a21.333333 21.333333 0 0 1 21.333333 21.333333V298.666667a21.333333 21.333333 0 0 1-21.333333 21.333333H277.333333z" horiz-adv-x="1024" /> <glyph glyph-name="caidan" unicode="&#59287;" d="M256 682.666667h192a42.666667 42.666667 0 0 0 42.666667-42.666667v-192a42.666667 42.666667 0 0 0-42.666667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333V469.333333a21.333333 21.333333 0 0 1 21.333333-21.333333H426.666667a21.333333 21.333333 0 0 1 21.333333 21.333333V618.666667A21.333333 21.333333 0 0 1 426.666667 640H277.333333z m298.666667 42.666667H768a42.666667 42.666667 0 0 0 42.666667-42.666667v-192a42.666667 42.666667 0 0 0-42.666667-42.666667h-192a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333V469.333333a21.333333 21.333333 0 0 1 21.333333-21.333333h149.333334a21.333333 21.333333 0 0 1 21.333333 21.333333V618.666667a21.333333 21.333333 0 0 1-21.333333 21.333333H597.333333z m-21.333333-277.333333H768a42.666667 42.666667 0 0 0 42.666667-42.666667V128a42.666667 42.666667 0 0 0-42.666667-42.666667h-192a42.666667 42.666667 0 0 0-42.666667 42.666667v192a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-149.333334a21.333333 21.333333 0 0 1 21.333333-21.333333h149.333334a21.333333 21.333333 0 0 1 21.333333 21.333333V298.666667a21.333333 21.333333 0 0 1-21.333333 21.333333H597.333333z m-341.333333 42.666667h192a42.666667 42.666667 0 0 0 42.666667-42.666667V128a42.666667 42.666667 0 0 0-42.666667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667v192a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-149.333334a21.333333 21.333333 0 0 1 21.333333-21.333333H426.666667a21.333333 21.333333 0 0 1 21.333333 21.333333V298.666667a21.333333 21.333333 0 0 1-21.333333 21.333333H277.333333z" horiz-adv-x="1024" />
<glyph glyph-name="shujuku" unicode="&#59288;" d="M256 682.666667h512a42.666667 42.666667 0 0 0 42.666667-42.666667v-85.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333333-21.333333h469.333334a21.333333 21.333333 0 0 1 21.333333 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333333 21.333333h-469.333334zM256 490.666667h512a42.666667 42.666667 0 0 0 42.666667-42.666667v-85.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667v85.333333a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333333-21.333333h469.333334a21.333333 21.333333 0 0 1 21.333333 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333333 21.333333h-469.333334z m405.333334-21.333333h21.333333a21.333333 21.333333 0 1 0 0-42.666667H682.666667a21.333333 21.333333 0 1 0 0 42.666667zM256 298.666667h512a42.666667 42.666667 0 0 0 42.666667-42.666667v-85.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667v85.333333a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333333-21.333333h469.333334a21.333333 21.333333 0 0 1 21.333333 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333333 21.333333h-469.333334z m405.333334-21.333333h21.333333a21.333333 21.333333 0 1 0 0-42.666667H682.666667a21.333333 21.333333 0 1 0 0 42.666667z m0 384h21.333333a21.333333 21.333333 0 1 0 0-42.666667H682.666667a21.333333 21.333333 0 1 0 0 42.666667z" horiz-adv-x="1024" /> <glyph glyph-name="shujuku" unicode="&#59288;" d="M256 682.666667h512a42.666667 42.666667 0 0 0 42.666667-42.666667v-85.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333333-21.333333h469.333334a21.333333 21.333333 0 0 1 21.333333 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333333 21.333333h-469.333334zM256 490.666667h512a42.666667 42.666667 0 0 0 42.666667-42.666667v-85.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667v85.333333a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333333-21.333333h469.333334a21.333333 21.333333 0 0 1 21.333333 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333333 21.333333h-469.333334z m405.333334-21.333333h21.333333a21.333333 21.333333 0 1 0 0-42.666667H682.666667a21.333333 21.333333 0 1 0 0 42.666667zM256 298.666667h512a42.666667 42.666667 0 0 0 42.666667-42.666667v-85.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667v85.333333a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333333-21.333333h469.333334a21.333333 21.333333 0 0 1 21.333333 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333333 21.333333h-469.333334z m405.333334-21.333333h21.333333a21.333333 21.333333 0 1 0 0-42.666667H682.666667a21.333333 21.333333 0 1 0 0 42.666667z m0 384h21.333333a21.333333 21.333333 0 1 0 0-42.666667H682.666667a21.333333 21.333333 0 1 0 0 42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="wubiankuang" unicode="&#59289;" d="M384 85.333333v42.666667h42.666667v-42.666667zM554.666667 85.333333v42.666667h42.666666v-42.666667zM298.666667 85.333333v42.666667h42.666666v-42.666667zM469.333333 85.333333v42.666667h42.666667v-42.666667zM640 85.333333v42.666667h42.666667v-42.666667zM384 341.333333v42.666667h42.666667v-42.666667zM384 597.333333V640h42.666667v-42.666667zM554.666667 597.333333V640h42.666666v-42.666667zM298.666667 597.333333V640h42.666666v-42.666667zM469.333333 597.333333V640h42.666667v-42.666667zM640 597.333333V640h42.666667v-42.666667zM725.333333 597.333333V640h42.666667v-42.666667zM213.333333 597.333333V640h42.666667v-42.666667zM554.666667 341.333333v42.666667h42.666666v-42.666667zM298.666667 341.333333v42.666667h42.666666v-42.666667zM469.333333 341.333333v42.666667h42.666667v-42.666667zM640 341.333333v42.666667h42.666667v-42.666667zM725.333333 85.333333v42.666667h42.666667v-42.666667zM213.333333 85.333333v42.666667h42.666667v-42.666667zM725.333333 256v42.666667h42.666667v-42.666667zM213.333333 256v42.666667h42.666667v-42.666667zM725.333333 426.666667v42.666666h42.666667v-42.666666zM213.333333 426.666667v42.666666h42.666667v-42.666666zM725.333333 170.666667v42.666666h42.666667v-42.666666zM213.333333 170.666667v42.666666h42.666667v-42.666666zM725.333333 341.333333v42.666667h42.666667v-42.666667zM213.333333 341.333333v42.666667h42.666667v-42.666667zM725.333333 512V554.666667h42.666667v-42.666667zM213.333333 512V554.666667h42.666667v-42.666667zM469.333333 256v42.666667h42.666667v-42.666667zM469.333333 426.666667v42.666666h42.666667v-42.666666zM469.333333 170.666667v42.666666h42.666667v-42.666666zM469.333333 341.333333v42.666667h42.666667v-42.666667zM469.333333 512V554.666667h42.666667v-42.666667z" horiz-adv-x="1024" /> <glyph glyph-name="wubiankuang" unicode="&#59289;" d="M384 85.333333v42.666667h42.666667v-42.666667zM554.666667 85.333333v42.666667h42.666666v-42.666667zM298.666667 85.333333v42.666667h42.666666v-42.666667zM469.333333 85.333333v42.666667h42.666667v-42.666667zM640 85.333333v42.666667h42.666667v-42.666667zM384 341.333333v42.666667h42.666667v-42.666667zM384 597.333333V640h42.666667v-42.666667zM554.666667 597.333333V640h42.666666v-42.666667zM298.666667 597.333333V640h42.666666v-42.666667zM469.333333 597.333333V640h42.666667v-42.666667zM640 597.333333V640h42.666667v-42.666667zM725.333333 597.333333V640h42.666667v-42.666667zM213.333333 597.333333V640h42.666667v-42.666667zM554.666667 341.333333v42.666667h42.666666v-42.666667zM298.666667 341.333333v42.666667h42.666666v-42.666667zM469.333333 341.333333v42.666667h42.666667v-42.666667zM640 341.333333v42.666667h42.666667v-42.666667zM725.333333 85.333333v42.666667h42.666667v-42.666667zM213.333333 85.333333v42.666667h42.666667v-42.666667zM725.333333 256v42.666667h42.666667v-42.666667zM213.333333 256v42.666667h42.666667v-42.666667zM725.333333 426.666667v42.666666h42.666667v-42.666666zM213.333333 426.666667v42.666666h42.666667v-42.666666zM725.333333 170.666667v42.666666h42.666667v-42.666666zM213.333333 170.666667v42.666666h42.666667v-42.666666zM725.333333 341.333333v42.666667h42.666667v-42.666667zM213.333333 341.333333v42.666667h42.666667v-42.666667zM725.333333 512V554.666667h42.666667v-42.666667zM213.333333 512V554.666667h42.666667v-42.666667zM469.333333 256v42.666667h42.666667v-42.666667zM469.333333 426.666667v42.666666h42.666667v-42.666666zM469.333333 170.666667v42.666666h42.666667v-42.666666zM469.333333 341.333333v42.666667h42.666667v-42.666667zM469.333333 512V554.666667h42.666667v-42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="bianji" unicode="&#59290;" d="M642.56 532.266667l-170.88-170.88 37.76-22.613334 22.613333-37.717333 170.88 170.88-60.373333 60.330667z m30.208 30.165333l60.330667-60.330667 15.104 15.061334a21.333333 21.333333 0 0 1 0 30.165333l-30.165334 30.165333a21.333333 21.333333 0 0 1-30.165333 0l-15.104-15.104v0.042667z m-231.253333-231.253333l-10.112-10.112v-60.330667h60.330666l10.112 10.112-22.613333 37.717333-37.717333 22.613334z m291.584 291.584l60.373333-60.330667a42.666667 42.666667 0 0 0 0-60.330667l-284.032-284.032H388.736V338.773333l284.032 283.989334a42.666667 42.666667 0 0 0 60.330667 0zM554.666667 661.333333a21.333333 21.333333 0 0 0-21.333334-21.333333h-256c-11.818667 0-21.333333-9.472-21.333333-21.162667v-469.674666c0-11.434667 9.557333-21.162667 21.333333-21.162667h469.333334c11.818667 0 21.333333 9.472 21.333333 21.162667V320a21.333333 21.333333 0 1 0 42.666667 0v-191.872c0-23.637333-19.2-42.794667-42.453334-42.794667H255.786667A42.624 42.624 0 0 0 213.333333 128.085333V639.872C213.333333 663.509333 232.533333 682.666667 255.829333 682.666667H533.333333a21.333333 21.333333 0 0 0 21.333334-21.333334z" horiz-adv-x="1024" /> <glyph glyph-name="bianji" unicode="&#59290;" d="M642.56 532.266667l-170.88-170.88 37.76-22.613334 22.613333-37.717333 170.88 170.88-60.373333 60.330667z m30.208 30.165333l60.330667-60.330667 15.104 15.061334a21.333333 21.333333 0 0 1 0 30.165333l-30.165334 30.165333a21.333333 21.333333 0 0 1-30.165333 0l-15.104-15.104v0.042667z m-231.253333-231.253333l-10.112-10.112v-60.330667h60.330666l10.112 10.112-22.613333 37.717333-37.717333 22.613334z m291.584 291.584l60.373333-60.330667a42.666667 42.666667 0 0 0 0-60.330667l-284.032-284.032H388.736V338.773333l284.032 283.989334a42.666667 42.666667 0 0 0 60.330667 0zM554.666667 661.333333a21.333333 21.333333 0 0 0-21.333334-21.333333h-256c-11.818667 0-21.333333-9.472-21.333333-21.162667v-469.674666c0-11.434667 9.557333-21.162667 21.333333-21.162667h469.333334c11.818667 0 21.333333 9.472 21.333333 21.162667V320a21.333333 21.333333 0 1 0 42.666667 0v-191.872c0-23.637333-19.2-42.794667-42.453334-42.794667H255.786667A42.624 42.624 0 0 0 213.333333 128.085333V639.872C213.333333 663.509333 232.533333 682.666667 255.829333 682.666667H533.333333a21.333333 21.333333 0 0 0 21.333334-21.333334z" horiz-adv-x="1024" />
<glyph glyph-name="qingchuyangshi" unicode="&#59291;" d="M214.016 173.568h593.92v-42.410667H214.016v42.410667z m578.048 312.106667l-180.693333 181.077333A53.376 53.376 0 0 1 573.738667 682.666667a45.653333 45.653333 0 0 1-32.64-13.226667l-313.941334-314.965333c-18.56-18.602667-17.322667-50.261333 2.688-70.4l68.010667-68.096h298.24l198.698667 199.338666c18.56 18.602667 17.322667 50.261333-2.730667 70.357334z m-213.546667-227.242667H315.434667L259.84 314.112c-3.968 4.010667-4.053333 9.088-2.730667 10.453333L430.08 497.92l193.92-193.92-45.44-45.568z" horiz-adv-x="1024" /> <glyph glyph-name="qingchuyangshi" unicode="&#59291;" d="M214.016 173.568h593.92v-42.410667H214.016v42.410667z m578.048 312.106667l-180.693333 181.077333A53.376 53.376 0 0 1 573.738667 682.666667a45.653333 45.653333 0 0 1-32.64-13.226667l-313.941334-314.965333c-18.56-18.602667-17.322667-50.261333 2.688-70.4l68.010667-68.096h298.24l198.698667 199.338666c18.56 18.602667 17.322667 50.261333-2.730667 70.357334z m-213.546667-227.242667H315.434667L259.84 314.112c-3.968 4.010667-4.053333 9.088-2.730667 10.453333L430.08 497.92l193.92-193.92-45.44-45.568z" horiz-adv-x="1024" />
<glyph glyph-name="shanchu" unicode="&#59292;" d="M320 554.666667v-426.581334A42.666667 42.666667 0 0 1 362.581333 85.333333h298.88a42.666667 42.666667 0 0 1 42.538667 42.794667V554.666667h42.666667a21.333333 21.333333 0 1 1 0 42.666666h-469.333334a21.333333 21.333333 0 0 1 0-42.666666h42.666667zM426.666667 661.333333c0 11.776 9.642667 21.333333 21.248 21.333334h128.170666c11.690667 0 21.248-9.472 21.248-21.333334 0-11.776-9.642667-21.333333-21.248-21.333333h-128.170666A21.248 21.248 0 0 0 426.666667 661.333333zM362.666667 533.504A21.333333 21.333333 0 0 0 384.128 554.666667h255.701333c11.904 0 21.504-9.728 21.504-21.162667v-384.341333a21.333333 21.333333 0 0 0-21.504-21.162667H384.128c-11.733333 0-21.290667 9.386667-21.461333 21.162667V533.504z m42.666666-42.837333a21.290667 21.290667 0 1 0 42.666667 0v-298.666667a21.290667 21.290667 0 1 0-42.666667 0v298.666667z m85.333334 0a21.290667 21.290667 0 1 0 42.666666 0v-298.666667a21.290667 21.290667 0 1 0-42.666666 0v298.666667z m85.333333 0a21.290667 21.290667 0 1 0 42.666667 0v-298.666667a21.290667 21.290667 0 1 0-42.666667 0v298.666667z" horiz-adv-x="1024" /> <glyph glyph-name="shanchu" unicode="&#59292;" d="M320 554.666667v-426.581334A42.666667 42.666667 0 0 1 362.581333 85.333333h298.88a42.666667 42.666667 0 0 1 42.538667 42.794667V554.666667h42.666667a21.333333 21.333333 0 1 1 0 42.666666h-469.333334a21.333333 21.333333 0 0 1 0-42.666666h42.666667zM426.666667 661.333333c0 11.776 9.642667 21.333333 21.248 21.333334h128.170666c11.690667 0 21.248-9.472 21.248-21.333334 0-11.776-9.642667-21.333333-21.248-21.333333h-128.170666A21.248 21.248 0 0 0 426.666667 661.333333zM362.666667 533.504A21.333333 21.333333 0 0 0 384.128 554.666667h255.701333c11.904 0 21.504-9.728 21.504-21.162667v-384.341333a21.333333 21.333333 0 0 0-21.504-21.162667H384.128c-11.733333 0-21.290667 9.386667-21.461333 21.162667V533.504z m42.666666-42.837333a21.290667 21.290667 0 1 0 42.666667 0v-298.666667a21.290667 21.290667 0 1 0-42.666667 0v298.666667z m85.333334 0a21.290667 21.290667 0 1 0 42.666666 0v-298.666667a21.290667 21.290667 0 1 0-42.666666 0v298.666667z m85.333333 0a21.290667 21.290667 0 1 0 42.666667 0v-298.666667a21.290667 21.290667 0 1 0-42.666667 0v298.666667z" horiz-adv-x="1024" />
<glyph glyph-name="wenbenjuzhongduiqi" unicode="&#59293;" d="M234.666667 597.333333h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 1 0 0 42.666666zM341.333333 469.333333h341.333334a21.333333 21.333333 0 1 0 0-42.666666H341.333333a21.333333 21.333333 0 0 0 0 42.666666z m-106.666666-128h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 0 0 0 42.666666zM341.333333 213.333333h341.333334a21.333333 21.333333 0 1 0 0-42.666666H341.333333a21.333333 21.333333 0 0 0 0 42.666666z" horiz-adv-x="1024" /> <glyph glyph-name="wenbenjuzhongduiqi" unicode="&#59293;" d="M234.666667 597.333333h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 1 0 0 42.666666zM341.333333 469.333333h341.333334a21.333333 21.333333 0 1 0 0-42.666666H341.333333a21.333333 21.333333 0 0 0 0 42.666666z m-106.666666-128h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 0 0 0 42.666666zM341.333333 213.333333h341.333334a21.333333 21.333333 0 1 0 0-42.666666H341.333333a21.333333 21.333333 0 0 0 0 42.666666z" horiz-adv-x="1024" />
<glyph glyph-name="dayin" unicode="&#59294;" d="M743.125333 554.666667c35.669333 0 64.384-28.885333 67.285334-65.024l0.256-6.101334V213.333333h-149.76v42.666667H768V483.541333c0 14.592-9.514667 26.154667-21.333333 28.16L743.168 512H280.874667c-12.16 0-22.784-10.24-24.576-24.149333l-0.298667-4.266667V256h127.36v-42.666667H213.333333V483.541333c0 36.906667 26.794667 67.712 61.653334 70.826667L280.874667 554.666667h462.250666zM682.666667 682.666667H341.333333v-170.666667h341.333334V682.666667z m-42.666667-42.666667v-85.333333H384V640h256zM682.666667 341.333333v-256H341.333333v256h341.333334z m-42.666667-42.666666H384v-170.666667h256v170.666667zM341.333333 469.333333h128v-42.666666H341.333333z" horiz-adv-x="1024" /> <glyph glyph-name="dayin" unicode="&#59294;" d="M743.125333 554.666667c35.669333 0 64.384-28.885333 67.285334-65.024l0.256-6.101334V213.333333h-149.76v42.666667H768V483.541333c0 14.592-9.514667 26.154667-21.333333 28.16L743.168 512H280.874667c-12.16 0-22.784-10.24-24.576-24.149333l-0.298667-4.266667V256h127.36v-42.666667H213.333333V483.541333c0 36.906667 26.794667 67.712 61.653334 70.826667L280.874667 554.666667h462.250666zM682.666667 682.666667H341.333333v-170.666667h341.333334V682.666667z m-42.666667-42.666667v-85.333333H384V640h256zM682.666667 341.333333v-256H341.333333v256h341.333334z m-42.666667-42.666666H384v-170.666667h256v170.666667zM341.333333 469.333333h128v-42.666666H341.333333z" horiz-adv-x="1024" />
<glyph glyph-name="wenbenfenge" unicode="&#59295;" d="M544.896 506.282667h110.762667v-46.933334c6.698667-6.613333 15.658667-6.613333 22.357333 0l84.949333 55.125334c6.698667 4.437333 6.698667 13.226667 0 19.84l-84.906666 57.386666c-6.741333 6.613333-15.701333 6.613333-22.4 0v-41.258666h-133.12l-89.429334-154.453334H343.722667v-0.128h-22.698667c-11.178667 0-22.357333-11.050667-22.357333-22.058666 0-11.050667 11.178667-22.058667 22.357333-22.058667h134.101333l-0.085333 0.128h0.426667l89.386666 154.453333h0.042667z m133.12-198.954667a15.061333 15.061333 0 0 1-22.314667 0v-43.690667h-66.133333l-67.029333 110.293334-22.357334-44.117334s62.592-103.68 67.072-110.293333h88.448V174.933333a15.061333 15.061333 0 0 1 22.314667 0l84.949333 55.168c6.698667 4.437333 6.698667 13.226667 0 19.84l-84.906666 57.386667h-0.042667z" horiz-adv-x="1024" /> <glyph glyph-name="wenbenfenge" unicode="&#59295;" d="M544.896 506.282667h110.762667v-46.933334c6.698667-6.613333 15.658667-6.613333 22.357333 0l84.949333 55.125334c6.698667 4.437333 6.698667 13.226667 0 19.84l-84.906666 57.386666c-6.741333 6.613333-15.701333 6.613333-22.4 0v-41.258666h-133.12l-89.429334-154.453334H343.722667v-0.128h-22.698667c-11.178667 0-22.357333-11.050667-22.357333-22.058666 0-11.050667 11.178667-22.058667 22.357333-22.058667h134.101333l-0.085333 0.128h0.426667l89.386666 154.453333h0.042667z m133.12-198.954667a15.061333 15.061333 0 0 1-22.314667 0v-43.690667h-66.133333l-67.029333 110.293334-22.357334-44.117334s62.592-103.68 67.072-110.293333h88.448V174.933333a15.061333 15.061333 0 0 1 22.314667 0l84.949333 55.168c6.698667 4.437333 6.698667 13.226667 0 19.84l-84.906666 57.386667h-0.042667z" horiz-adv-x="1024" />
<glyph glyph-name="hanshu" unicode="&#59296;" d="M771.072 504.746667a6.698667 6.698667 0 0 1-0.512 9.514666 6.997333 6.997333 0 0 1-4.48 1.749334h-61.354667c-1.962667 0-3.84-0.853333-5.12-2.346667l-103.893333-122.709333a6.698667 6.698667 0 0 0-11.392 1.621333l-53.674667 119.381333a6.656 6.656 0 0 1-6.144 4.010667H381.866667l0.853333 3.968 6.741333 35.712c8.874667 46.933333 32.085333 68.864 72.533334 68.864 15.658667 0 29.994667-1.450667 41.258666-4.010667l11.861334 56.490667a197.888 197.888 0 0 1-46.464 5.12c-87.296 0-132.224-37.418667-148.650667-124.458667l-7.978667-41.813333H229.632a6.698667 6.698667 0 0 1-6.613333-5.376l-9.130667-43.818667a6.826667 6.826667 0 0 1 6.570667-8.106666h79.786666l-75.264-363.52a6.826667 6.826667 0 0 1 6.570667-8.234667H287.573333c3.242667 0 5.973333 2.346667 6.570667 5.418667l75.861333 366.165333h114.773334l57.685333-117.546667a6.570667 6.570667 0 0 0-1.024-7.381333l-152.746667-171.690667a6.826667 6.826667 0 0 1 5.12-11.264h61.44c2.005333 0 3.882667 0.853333 5.162667 2.389334l104.576 123.989333a6.826667 6.826667 0 0 0 11.392-1.493333l55.594667-120.661334a6.741333 6.741333 0 0 1 6.186666-3.968h54.613334a6.784 6.784 0 0 1 6.101333 9.770667L618.325333 328.533333a6.698667 6.698667 0 0 0 1.066667 7.466667l151.722667 168.661333-0.042667 0.042667z" horiz-adv-x="1024" /> <glyph glyph-name="hanshu" unicode="&#59296;" d="M771.072 504.746667a6.698667 6.698667 0 0 1-0.512 9.514666 6.997333 6.997333 0 0 1-4.48 1.749334h-61.354667c-1.962667 0-3.84-0.853333-5.12-2.346667l-103.893333-122.709333a6.698667 6.698667 0 0 0-11.392 1.621333l-53.674667 119.381333a6.656 6.656 0 0 1-6.144 4.010667H381.866667l0.853333 3.968 6.741333 35.712c8.874667 46.933333 32.085333 68.864 72.533334 68.864 15.658667 0 29.994667-1.450667 41.258666-4.010667l11.861334 56.490667a197.888 197.888 0 0 1-46.464 5.12c-87.296 0-132.224-37.418667-148.650667-124.458667l-7.978667-41.813333H229.632a6.698667 6.698667 0 0 1-6.613333-5.376l-9.130667-43.818667a6.826667 6.826667 0 0 1 6.570667-8.106666h79.786666l-75.264-363.52a6.826667 6.826667 0 0 1 6.570667-8.234667H287.573333c3.242667 0 5.973333 2.346667 6.570667 5.418667l75.861333 366.165333h114.773334l57.685333-117.546667a6.570667 6.570667 0 0 0-1.024-7.381333l-152.746667-171.690667a6.826667 6.826667 0 0 1 5.12-11.264h61.44c2.005333 0 3.882667 0.853333 5.162667 2.389334l104.576 123.989333a6.826667 6.826667 0 0 0 11.392-1.493333l55.594667-120.661334a6.741333 6.741333 0 0 1 6.186666-3.968h54.613334a6.784 6.784 0 0 1 6.101333 9.770667L618.325333 328.533333a6.698667 6.698667 0 0 0 1.066667 7.466667l151.722667 168.661333-0.042667 0.042667z" horiz-adv-x="1024" />
<glyph glyph-name="jiangxu" unicode="&#59297;" d="M430.848 229.802667H366.592V659.925333a6.656 6.656 0 0 1-6.741333 6.528h-47.36a6.656 6.656 0 0 1-6.741334-6.528v-430.122666H241.493333c-5.674667 0-8.874667-6.314667-5.333333-10.538667l94.72-115.2a6.912 6.912 0 0 1 10.624 0l94.72 115.2c3.413333 4.224 0.298667 10.538667-5.376 10.538667zM582.442667 89.301333l20.992 61.098667h103.68l21.205333-61.098667h43.690667L672.64 362.666667h-34.688l-99.370667-273.365334h43.861334z m112.896 97.877334h-79.872l39.552 119.424h0.768l39.552-119.466667zM742.570667 409.301333v39.168h-124.288l124.288 203.093334V682.666667h-169.685334v-36.949334h119.04l-123.904-201.941333v-34.474667z" horiz-adv-x="1024" /> <glyph glyph-name="jiangxu" unicode="&#59297;" d="M430.848 229.802667H366.592V659.925333a6.656 6.656 0 0 1-6.741333 6.528h-47.36a6.656 6.656 0 0 1-6.741334-6.528v-430.122666H241.493333c-5.674667 0-8.874667-6.314667-5.333333-10.538667l94.72-115.2a6.912 6.912 0 0 1 10.624 0l94.72 115.2c3.413333 4.224 0.298667 10.538667-5.376 10.538667zM582.442667 89.301333l20.992 61.098667h103.68l21.205333-61.098667h43.690667L672.64 362.666667h-34.688l-99.370667-273.365334h43.861334z m112.896 97.877334h-79.872l39.552 119.424h0.768l39.552-119.466667zM742.570667 409.301333v39.168h-124.288l124.288 203.093334V682.666667h-169.685334v-36.949334h119.04l-123.904-201.941333v-34.474667z" horiz-adv-x="1024" />
<glyph glyph-name="dingbuduiqi" unicode="&#59298;" d="M298.666667 512h426.666666v-42.666667H298.666667zM416 368.170667l90.496 90.496 90.538667-90.496-30.165334-30.165334-37.802666 37.717334v-290.090667h-42.666667v292.565333l-40.234667-40.192-30.165333 30.165334z" horiz-adv-x="1024" /> <glyph glyph-name="dingbuduiqi" unicode="&#59298;" d="M298.666667 512h426.666666v-42.666667H298.666667zM416 368.170667l90.496 90.496 90.538667-90.496-30.165334-30.165334-37.802666 37.717334v-290.090667h-42.666667v292.565333l-40.234667-40.192-30.165333 30.165334z" horiz-adv-x="1024" />
<glyph glyph-name="tupian" unicode="&#59299;" d="M810.666667 682.666667v-597.333334H213.333333V682.666667h597.333334z m-42.666667-263.381334l-233.984-190.890666-118.613333 98.218666L256 191.36V128h512v291.285333zM768 640H256v-392.704l159.146667 134.954667 119.04-98.602667L768 474.325333V640zM384 554.666667a42.666667 42.666667 0 1 0 0-85.333334 42.666667 42.666667 0 0 0 0 85.333334z" horiz-adv-x="1024" /> <glyph glyph-name="tupian" unicode="&#59299;" d="M810.666667 682.666667v-597.333334H213.333333V682.666667h597.333334z m-42.666667-263.381334l-233.984-190.890666-118.613333 98.218666L256 191.36V128h512v291.285333zM768 640H256v-392.704l159.146667 134.954667 119.04-98.602667L768 474.325333V640zM384 554.666667a42.666667 42.666667 0 1 0 0-85.333334 42.666667 42.666667 0 0 0 0 85.333334z" horiz-adv-x="1024" />
<glyph glyph-name="xiangxia90" unicode="&#59300;" d="M789.333333 367.786667l-213.333333-77.653334v-0.64l-1.621333 0.042667L426.666667 235.776v45.354667l106.666666 38.826666V472.362667l-106.666666 38.826666V556.544l147.498666-53.674667 1.834667-0.042666v-0.64l213.333333-77.610667v-56.789333z m-46.634666 28.416L576 456.874667v-121.386667l166.698667 60.714667zM384 208.170667l-90.496-90.538667-90.538667 90.538667 30.165334 30.165333 37.802666-37.76V661.333333h42.666667v-463.232l40.234667 40.234667 30.165333-30.165333z" horiz-adv-x="1024" /> <glyph glyph-name="xiangxia90" unicode="&#59300;" d="M789.333333 367.786667l-213.333333-77.653334v-0.64l-1.621333 0.042667L426.666667 235.776v45.354667l106.666666 38.826666V472.362667l-106.666666 38.826666V556.544l147.498666-53.674667 1.834667-0.042666v-0.64l213.333333-77.610667v-56.789333z m-46.634666 28.416L576 456.874667v-121.386667l166.698667 60.714667zM384 208.170667l-90.496-90.538667-90.538667 90.538667 30.165334 30.165333 37.802666-37.76V661.333333h42.666667v-463.232l40.234667 40.234667 30.165333-30.165333z" horiz-adv-x="1024" />
<glyph glyph-name="shupaiwenzi" unicode="&#59301;" d="M636.757333 597.333333l77.653334-213.333333h0.64l-0.042667-1.621333 53.76-147.712h-45.354667l-38.826666 106.666666h-152.405334l-38.826666-106.666666H448l53.674667 147.498666 0.042666 1.834667h0.64l77.610667 213.333333h56.789333z m-28.416-46.634666L547.669333 384h121.386667l-60.714667 166.698667zM394.368 197.504L303.786667 106.965333 213.333333 197.546667l30.165334 30.165333 37.802666-37.76V650.666667h42.666667v-463.232l40.234667 40.234666 30.165333-30.165333z" horiz-adv-x="1024" /> <glyph glyph-name="shupaiwenzi" unicode="&#59301;" d="M636.757333 597.333333l77.653334-213.333333h0.64l-0.042667-1.621333 53.76-147.712h-45.354667l-38.826666 106.666666h-152.405334l-38.826666-106.666666H448l53.674667 147.498666 0.042666 1.834667h0.64l77.610667 213.333333h56.789333z m-28.416-46.634666L547.669333 384h121.386667l-60.714667 166.698667zM394.368 197.504L303.786667 106.965333 213.333333 197.546667l30.165334 30.165333 37.802666-37.76V650.666667h42.666667v-463.232l40.234667 40.234666 30.165333-30.165333z" horiz-adv-x="1024" />
<glyph glyph-name="quanjiabiankuang" unicode="&#59302;" d="M213.333333 85.333333V640h42.666667v-554.666667zM725.333333 85.333333V640h42.666667v-554.666667zM469.333333 85.333333V640h42.666667v-554.666667zM213.333333 640h554.666667v-42.666667H213.333333zM213.333333 384h554.666667v-42.666667H213.333333zM213.333333 128h554.666667v-42.666667H213.333333z" horiz-adv-x="1024" /> <glyph glyph-name="quanjiabiankuang" unicode="&#59302;" d="M213.333333 85.333333V640h42.666667v-554.666667zM725.333333 85.333333V640h42.666667v-554.666667zM469.333333 85.333333V640h42.666667v-554.666667zM213.333333 640h554.666667v-42.666667H213.333333zM213.333333 384h554.666667v-42.666667H213.333333zM213.333333 128h554.666667v-42.666667H213.333333z" horiz-adv-x="1024" />
<glyph glyph-name="shengxu" unicode="&#59303;" d="M430.848 538.24H366.592v-430.165333a6.656 6.656 0 0 0-6.741333-6.485334h-47.36a6.656 6.656 0 0 0-6.741334 6.485334V538.24H241.493333c-5.674667 0-8.874667 6.314667-5.333333 10.538667l94.72 115.2a6.912 6.912 0 0 0 10.624 0l94.72-115.2c3.413333-4.224 0.298667-10.538667-5.376-10.538667zM582.442667 409.301333l20.992 61.098667h103.68l21.205333-61.098667h43.690667L672.64 682.666667h-34.688l-99.370667-273.365334h43.861334z m112.896 97.877334h-79.872l39.552 119.424h0.768l39.552-119.466667zM742.570667 89.301333v39.168h-124.288l124.288 203.093334V362.666667h-169.685334v-36.949334h119.04l-123.904-201.941333v-34.474667z" horiz-adv-x="1024" /> <glyph glyph-name="shengxu" unicode="&#59303;" d="M430.848 538.24H366.592v-430.165333a6.656 6.656 0 0 0-6.741333-6.485334h-47.36a6.656 6.656 0 0 0-6.741334 6.485334V538.24H241.493333c-5.674667 0-8.874667 6.314667-5.333333 10.538667l94.72 115.2a6.912 6.912 0 0 0 10.624 0l94.72-115.2c3.413333-4.224 0.298667-10.538667-5.376-10.538667zM582.442667 409.301333l20.992 61.098667h103.68l21.205333-61.098667h43.690667L672.64 682.666667h-34.688l-99.370667-273.365334h43.861334z m112.896 97.877334h-79.872l39.552 119.424h0.768l39.552-119.466667zM742.570667 89.301333v39.168h-124.288l124.288 203.093334V362.666667h-169.685334v-36.949334h119.04l-123.904-201.941333v-34.474667z" horiz-adv-x="1024" />
<glyph glyph-name="caijian" unicode="&#59304;" d="M341.333333 682.666667h42.666667v-469.333334H341.333333zM810.666667 256v-42.666667H341.333333v42.666667zM682.666667 85.333333h-42.666667V554.666667h42.666667zM213.333333 512V554.666667h469.333334v-42.666667z" horiz-adv-x="1024" /> <glyph glyph-name="caijian" unicode="&#59304;" d="M341.333333 682.666667h42.666667v-469.333334H341.333333zM810.666667 256v-42.666667H341.333333v42.666667zM682.666667 85.333333h-42.666667V554.666667h42.666667zM213.333333 512V554.666667h469.333334v-42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="jine" unicode="&#59305;" d="M658.816 640l34.986667-24.490667-124.629334-177.92h119.04v-42.666666h-149.333333v-85.333334h149.333333v-42.666666h-149.333333v-128h-42.666667v128h-149.333333v42.666666h149.333333v85.333334h-149.333333v42.666666h119.04L341.333333 615.509333 376.32 640l141.226667-201.728L658.816 640z" horiz-adv-x="1024" /> <glyph glyph-name="jine" unicode="&#59305;" d="M658.816 640l34.986667-24.490667-124.629334-177.92h119.04v-42.666666h-149.333333v-85.333334h149.333333v-42.666666h-149.333333v-128h-42.666667v128h-149.333333v42.666666h149.333333v85.333334h-149.333333v42.666666h119.04L341.333333 615.509333 376.32 640l141.226667-201.728L658.816 640z" horiz-adv-x="1024" />
<glyph glyph-name="caidan1" unicode="&#59306;" d="M256 256h85.333333a42.666667 42.666667 0 0 0 42.666667-42.666667v-85.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667v85.333333a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333333-21.333333h42.666667a21.333333 21.333333 0 0 1 21.333333 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333333 21.333333h-42.666667zM682.666667 682.666667h85.333333a42.666667 42.666667 0 0 0 42.666667-42.666667v-85.333333a42.666667 42.666667 0 0 0-42.666667-42.666667h-85.333333a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333333-21.333333h42.666667a21.333333 21.333333 0 0 1 21.333333 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333333 21.333333h-42.666667zM469.333333 256h85.333334a42.666667 42.666667 0 0 0 42.666666-42.666667v-85.333333a42.666667 42.666667 0 0 0-42.666666-42.666667h-85.333334a42.666667 42.666667 0 0 0-42.666666 42.666667v85.333333a42.666667 42.666667 0 0 0 42.666666 42.666667z m21.333334-42.666667a21.333333 21.333333 0 0 1-21.333334-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333334-21.333333h42.666666a21.333333 21.333333 0 0 1 21.333334 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333334 21.333333h-42.666666zM469.333333 682.666667h85.333334a42.666667 42.666667 0 0 0 42.666666-42.666667v-85.333333a42.666667 42.666667 0 0 0-42.666666-42.666667h-85.333334a42.666667 42.666667 0 0 0-42.666666 42.666667V640a42.666667 42.666667 0 0 0 42.666666 42.666667z m21.333334-42.666667a21.333333 21.333333 0 0 1-21.333334-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333334-21.333333h42.666666a21.333333 21.333333 0 0 1 21.333334 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333334 21.333333h-42.666666z m192-384h85.333333a42.666667 42.666667 0 0 0 42.666667-42.666667v-85.333333a42.666667 42.666667 0 0 0-42.666667-42.666667h-85.333333a42.666667 42.666667 0 0 0-42.666667 42.666667v85.333333a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333333-21.333333h42.666667a21.333333 21.333333 0 0 1 21.333333 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333333 21.333333h-42.666667zM469.333333 469.333333h85.333334a42.666667 42.666667 0 0 0 42.666666-42.666666v-85.333334a42.666667 42.666667 0 0 0-42.666666-42.666666h-85.333334a42.666667 42.666667 0 0 0-42.666666 42.666666v85.333334a42.666667 42.666667 0 0 0 42.666666 42.666666z m21.333334-42.666666a21.333333 21.333333 0 0 1-21.333334-21.333334v-42.666666a21.333333 21.333333 0 0 1 21.333334-21.333334h42.666666a21.333333 21.333333 0 0 1 21.333334 21.333334v42.666666a21.333333 21.333333 0 0 1-21.333334 21.333334h-42.666666zM256 469.333333h85.333333a42.666667 42.666667 0 0 0 42.666667-42.666666v-85.333334a42.666667 42.666667 0 0 0-42.666667-42.666666H256a42.666667 42.666667 0 0 0-42.666667 42.666666v85.333334a42.666667 42.666667 0 0 0 42.666667 42.666666z m426.666667 0h85.333333a42.666667 42.666667 0 0 0 42.666667-42.666666v-85.333334a42.666667 42.666667 0 0 0-42.666667-42.666666h-85.333333a42.666667 42.666667 0 0 0-42.666667 42.666666v85.333334a42.666667 42.666667 0 0 0 42.666667 42.666666z m21.333333-42.666666a21.333333 21.333333 0 0 1-21.333333-21.333334v-42.666666a21.333333 21.333333 0 0 1 21.333333-21.333334h42.666667a21.333333 21.333333 0 0 1 21.333333 21.333334v42.666666a21.333333 21.333333 0 0 1-21.333333 21.333334h-42.666667z m-426.666667 0a21.333333 21.333333 0 0 1-21.333333-21.333334v-42.666666a21.333333 21.333333 0 0 1 21.333333-21.333334h42.666667a21.333333 21.333333 0 0 1 21.333333 21.333334v42.666666a21.333333 21.333333 0 0 1-21.333333 21.333334h-42.666667zM256 682.666667h85.333333a42.666667 42.666667 0 0 0 42.666667-42.666667v-85.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333333-21.333333h42.666667a21.333333 21.333333 0 0 1 21.333333 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333333 21.333333h-42.666667z" horiz-adv-x="1024" /> <glyph glyph-name="caidan1" unicode="&#59306;" d="M256 256h85.333333a42.666667 42.666667 0 0 0 42.666667-42.666667v-85.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667v85.333333a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333333-21.333333h42.666667a21.333333 21.333333 0 0 1 21.333333 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333333 21.333333h-42.666667zM682.666667 682.666667h85.333333a42.666667 42.666667 0 0 0 42.666667-42.666667v-85.333333a42.666667 42.666667 0 0 0-42.666667-42.666667h-85.333333a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333333-21.333333h42.666667a21.333333 21.333333 0 0 1 21.333333 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333333 21.333333h-42.666667zM469.333333 256h85.333334a42.666667 42.666667 0 0 0 42.666666-42.666667v-85.333333a42.666667 42.666667 0 0 0-42.666666-42.666667h-85.333334a42.666667 42.666667 0 0 0-42.666666 42.666667v85.333333a42.666667 42.666667 0 0 0 42.666666 42.666667z m21.333334-42.666667a21.333333 21.333333 0 0 1-21.333334-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333334-21.333333h42.666666a21.333333 21.333333 0 0 1 21.333334 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333334 21.333333h-42.666666zM469.333333 682.666667h85.333334a42.666667 42.666667 0 0 0 42.666666-42.666667v-85.333333a42.666667 42.666667 0 0 0-42.666666-42.666667h-85.333334a42.666667 42.666667 0 0 0-42.666666 42.666667V640a42.666667 42.666667 0 0 0 42.666666 42.666667z m21.333334-42.666667a21.333333 21.333333 0 0 1-21.333334-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333334-21.333333h42.666666a21.333333 21.333333 0 0 1 21.333334 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333334 21.333333h-42.666666z m192-384h85.333333a42.666667 42.666667 0 0 0 42.666667-42.666667v-85.333333a42.666667 42.666667 0 0 0-42.666667-42.666667h-85.333333a42.666667 42.666667 0 0 0-42.666667 42.666667v85.333333a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333333-21.333333h42.666667a21.333333 21.333333 0 0 1 21.333333 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333333 21.333333h-42.666667zM469.333333 469.333333h85.333334a42.666667 42.666667 0 0 0 42.666666-42.666666v-85.333334a42.666667 42.666667 0 0 0-42.666666-42.666666h-85.333334a42.666667 42.666667 0 0 0-42.666666 42.666666v85.333334a42.666667 42.666667 0 0 0 42.666666 42.666666z m21.333334-42.666666a21.333333 21.333333 0 0 1-21.333334-21.333334v-42.666666a21.333333 21.333333 0 0 1 21.333334-21.333334h42.666666a21.333333 21.333333 0 0 1 21.333334 21.333334v42.666666a21.333333 21.333333 0 0 1-21.333334 21.333334h-42.666666zM256 469.333333h85.333333a42.666667 42.666667 0 0 0 42.666667-42.666666v-85.333334a42.666667 42.666667 0 0 0-42.666667-42.666666H256a42.666667 42.666667 0 0 0-42.666667 42.666666v85.333334a42.666667 42.666667 0 0 0 42.666667 42.666666z m426.666667 0h85.333333a42.666667 42.666667 0 0 0 42.666667-42.666666v-85.333334a42.666667 42.666667 0 0 0-42.666667-42.666666h-85.333333a42.666667 42.666667 0 0 0-42.666667 42.666666v85.333334a42.666667 42.666667 0 0 0 42.666667 42.666666z m21.333333-42.666666a21.333333 21.333333 0 0 1-21.333333-21.333334v-42.666666a21.333333 21.333333 0 0 1 21.333333-21.333334h42.666667a21.333333 21.333333 0 0 1 21.333333 21.333334v42.666666a21.333333 21.333333 0 0 1-21.333333 21.333334h-42.666667z m-426.666667 0a21.333333 21.333333 0 0 1-21.333333-21.333334v-42.666666a21.333333 21.333333 0 0 1 21.333333-21.333334h42.666667a21.333333 21.333333 0 0 1 21.333333 21.333334v42.666666a21.333333 21.333333 0 0 1-21.333333 21.333334h-42.666667zM256 682.666667h85.333333a42.666667 42.666667 0 0 0 42.666667-42.666667v-85.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667z m21.333333-42.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-42.666667a21.333333 21.333333 0 0 1 21.333333-21.333333h42.666667a21.333333 21.333333 0 0 1 21.333333 21.333333v42.666667a21.333333 21.333333 0 0 1-21.333333 21.333333h-42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="quxiaohebing" unicode="&#59307;" d="M810.666667 682.666667v-597.333334H213.333333V682.666667h597.333334z m-42.666667-42.666667H256v-512h512V640zM533.333333 682.666667v-170.666667h-42.666666V682.666667zM405.333333 469.333333v-213.333333h-42.666666v213.333333zM533.333333 490.666667v-213.333334h-42.666666v213.333334zM661.333333 490.666667v-213.333334h-42.666666v213.333334zM533.333333 298.666667v-170.666667h-42.666666v170.666667zM810.666667 512v-256H213.333333V512h597.333334z m-42.666667-42.666667H256v-170.666666h512v170.666666z" horiz-adv-x="1024" /> <glyph glyph-name="quxiaohebing" unicode="&#59307;" d="M810.666667 682.666667v-597.333334H213.333333V682.666667h597.333334z m-42.666667-42.666667H256v-512h512V640zM533.333333 682.666667v-170.666667h-42.666666V682.666667zM405.333333 469.333333v-213.333333h-42.666666v213.333333zM533.333333 490.666667v-213.333334h-42.666666v213.333334zM661.333333 490.666667v-213.333334h-42.666666v213.333334zM533.333333 298.666667v-170.666667h-42.666666v170.666667zM810.666667 512v-256H213.333333V512h597.333334z m-42.666667-42.666667H256v-170.666666h512v170.666666z" horiz-adv-x="1024" />
<glyph glyph-name="wenbenxiahuaxian" unicode="&#59308;" d="M362.666667 640v-298.666667a149.333333 149.333333 0 0 1 298.453333-8.192L661.333333 341.333333V640h42.666667v-298.666667a192 192 0 0 0-383.786667-9.045333L320 341.333333V640h42.666667zM256 128m21.333333 0l469.333334 0q21.333333 0 21.333333-21.333333l0 0q0-21.333333-21.333333-21.333334l-469.333334 0q-21.333333 0-21.333333 21.333334l0 0q0 21.333333 21.333333 21.333333ZM256 640m21.333333 0l128 0q21.333333 0 21.333334-21.333333l0 0q0-21.333333-21.333334-21.333334l-128 0q-21.333333 0-21.333333 21.333334l0 0q0 21.333333 21.333333 21.333333ZM597.333333 640m21.333334 0l128 0q21.333333 0 21.333333-21.333333l0 0q0-21.333333-21.333333-21.333334l-128 0q-21.333333 0-21.333334 21.333334l0 0q0 21.333333 21.333334 21.333333Z" horiz-adv-x="1024" /> <glyph glyph-name="wenbenxiahuaxian" unicode="&#59308;" d="M362.666667 640v-298.666667a149.333333 149.333333 0 0 1 298.453333-8.192L661.333333 341.333333V640h42.666667v-298.666667a192 192 0 0 0-383.786667-9.045333L320 341.333333V640h42.666667zM256 128m21.333333 0l469.333334 0q21.333333 0 21.333333-21.333333l0 0q0-21.333333-21.333333-21.333334l-469.333334 0q-21.333333 0-21.333333 21.333334l0 0q0 21.333333 21.333333 21.333333ZM256 640m21.333333 0l128 0q21.333333 0 21.333334-21.333333l0 0q0-21.333333-21.333334-21.333334l-128 0q-21.333333 0-21.333333 21.333334l0 0q0 21.333333 21.333333 21.333333ZM597.333333 640m21.333334 0l128 0q21.333333 0 21.333333-21.333333l0 0q0-21.333333-21.333333-21.333334l-128 0q-21.333333 0-21.333334 21.333334l0 0q0 21.333333 21.333334 21.333333Z" horiz-adv-x="1024" />
<glyph glyph-name="shangbiankuang" unicode="&#59309;" d="M213.333333 640h554.666667v-42.666667H213.333333zM213.333333 469.333333h42.666667v-42.666666H213.333333zM213.333333 298.666667h42.666667v-42.666667H213.333333zM213.333333 554.666667h42.666667v-42.666667H213.333333zM213.333333 384h42.666667v-42.666667H213.333333zM213.333333 213.333333h42.666667v-42.666666H213.333333zM469.333333 469.333333h42.666667v-42.666666h-42.666667zM725.333333 469.333333h42.666667v-42.666666h-42.666667zM725.333333 298.666667h42.666667v-42.666667h-42.666667zM725.333333 554.666667h42.666667v-42.666667h-42.666667zM725.333333 384h42.666667v-42.666667h-42.666667zM725.333333 213.333333h42.666667v-42.666666h-42.666667zM725.333333 128h42.666667v-42.666667h-42.666667zM469.333333 298.666667h42.666667v-42.666667h-42.666667zM469.333333 554.666667h42.666667v-42.666667h-42.666667zM469.333333 384h42.666667v-42.666667h-42.666667zM469.333333 213.333333h42.666667v-42.666666h-42.666667zM213.333333 128h42.666667v-42.666667H213.333333zM384 128h42.666667v-42.666667H384zM554.666667 128h42.666666v-42.666667h-42.666666zM298.666667 128h42.666666v-42.666667H298.666667zM469.333333 128h42.666667v-42.666667h-42.666667zM640 128h42.666667v-42.666667h-42.666667zM384 384h42.666667v-42.666667H384zM554.666667 384h42.666666v-42.666667h-42.666666zM298.666667 384h42.666666v-42.666667H298.666667zM469.333333 384h42.666667v-42.666667h-42.666667zM640 384h42.666667v-42.666667h-42.666667z" horiz-adv-x="1024" /> <glyph glyph-name="shangbiankuang" unicode="&#59309;" d="M213.333333 640h554.666667v-42.666667H213.333333zM213.333333 469.333333h42.666667v-42.666666H213.333333zM213.333333 298.666667h42.666667v-42.666667H213.333333zM213.333333 554.666667h42.666667v-42.666667H213.333333zM213.333333 384h42.666667v-42.666667H213.333333zM213.333333 213.333333h42.666667v-42.666666H213.333333zM469.333333 469.333333h42.666667v-42.666666h-42.666667zM725.333333 469.333333h42.666667v-42.666666h-42.666667zM725.333333 298.666667h42.666667v-42.666667h-42.666667zM725.333333 554.666667h42.666667v-42.666667h-42.666667zM725.333333 384h42.666667v-42.666667h-42.666667zM725.333333 213.333333h42.666667v-42.666666h-42.666667zM725.333333 128h42.666667v-42.666667h-42.666667zM469.333333 298.666667h42.666667v-42.666667h-42.666667zM469.333333 554.666667h42.666667v-42.666667h-42.666667zM469.333333 384h42.666667v-42.666667h-42.666667zM469.333333 213.333333h42.666667v-42.666666h-42.666667zM213.333333 128h42.666667v-42.666667H213.333333zM384 128h42.666667v-42.666667H384zM554.666667 128h42.666666v-42.666667h-42.666666zM298.666667 128h42.666666v-42.666667H298.666667zM469.333333 128h42.666667v-42.666667h-42.666667zM640 128h42.666667v-42.666667h-42.666667zM384 384h42.666667v-42.666667H384zM554.666667 384h42.666666v-42.666667h-42.666666zM298.666667 384h42.666666v-42.666667H298.666667zM469.333333 384h42.666667v-42.666667h-42.666667zM640 384h42.666667v-42.666667h-42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="dingwei" unicode="&#59310;" d="M618.666667 172.416V234.666667a21.333333 21.333333 0 1 0 42.666666 0v-62.250667a128.128 128.128 0 0 1 104.917334 104.917333H704a21.333333 21.333333 0 1 0 0 42.666667h62.250667a128.128 128.128 0 0 1-104.917334 104.874667V362.666667a21.333333 21.333333 0 1 0-42.666666 0v62.208a128.085333 128.085333 0 0 1-104.874667-104.874667H576a21.333333 21.333333 0 0 0 0-42.666667h-62.208a128.128 128.128 0 0 1 104.874667-104.917333z m149.333333 296.96a213.12 213.12 0 0 1-42.666667 24.874667V618.666667a21.333333 21.333333 0 0 1-21.333333 21.333333h-426.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-341.333334a21.333333 21.333333 0 0 1 21.333333-21.333333h153.6c2.986667-14.848 7.594667-29.098667 13.482667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667h469.333333a42.666667 42.666667 0 0 0 42.666667-42.666667v-170.666667zM640 128a170.666667 170.666667 0 1 0 0 341.333333 170.666667 170.666667 0 0 0 0-341.333333z" horiz-adv-x="1024" /> <glyph glyph-name="dingwei" unicode="&#59310;" d="M618.666667 172.416V234.666667a21.333333 21.333333 0 1 0 42.666666 0v-62.250667a128.128 128.128 0 0 1 104.917334 104.917333H704a21.333333 21.333333 0 1 0 0 42.666667h62.250667a128.128 128.128 0 0 1-104.917334 104.874667V362.666667a21.333333 21.333333 0 1 0-42.666666 0v62.208a128.085333 128.085333 0 0 1-104.874667-104.874667H576a21.333333 21.333333 0 0 0 0-42.666667h-62.208a128.128 128.128 0 0 1 104.874667-104.917333z m149.333333 296.96a213.12 213.12 0 0 1-42.666667 24.874667V618.666667a21.333333 21.333333 0 0 1-21.333333 21.333333h-426.666667a21.333333 21.333333 0 0 1-21.333333-21.333333v-341.333334a21.333333 21.333333 0 0 1 21.333333-21.333333h153.6c2.986667-14.848 7.594667-29.098667 13.482667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667h469.333333a42.666667 42.666667 0 0 0 42.666667-42.666667v-170.666667zM640 128a170.666667 170.666667 0 1 0 0 341.333333 170.666667 170.666667 0 0 0 0-341.333333z" horiz-adv-x="1024" />
<glyph glyph-name="sizhoujiabiankuang" unicode="&#59311;" d="M213.333333 85.333333V640h42.666667v-554.666667zM725.333333 85.333333V640h42.666667v-554.666667zM213.333333 640h554.666667v-42.666667H213.333333zM213.333333 128h554.666667v-42.666667H213.333333zM384 341.333333v42.666667h42.666667v-42.666667zM554.666667 341.333333v42.666667h42.666666v-42.666667zM298.666667 341.333333v42.666667h42.666666v-42.666667zM469.333333 341.333333v42.666667h42.666667v-42.666667zM640 341.333333v42.666667h42.666667v-42.666667zM469.333333 256v42.666667h42.666667v-42.666667zM469.333333 426.666667v42.666666h42.666667v-42.666666zM469.333333 170.666667v42.666666h42.666667v-42.666666zM469.333333 341.333333v42.666667h42.666667v-42.666667zM469.333333 512V554.666667h42.666667v-42.666667z" horiz-adv-x="1024" /> <glyph glyph-name="sizhoujiabiankuang" unicode="&#59311;" d="M213.333333 85.333333V640h42.666667v-554.666667zM725.333333 85.333333V640h42.666667v-554.666667zM213.333333 640h554.666667v-42.666667H213.333333zM213.333333 128h554.666667v-42.666667H213.333333zM384 341.333333v42.666667h42.666667v-42.666667zM554.666667 341.333333v42.666667h42.666666v-42.666667zM298.666667 341.333333v42.666667h42.666666v-42.666667zM469.333333 341.333333v42.666667h42.666667v-42.666667zM640 341.333333v42.666667h42.666667v-42.666667zM469.333333 256v42.666667h42.666667v-42.666667zM469.333333 426.666667v42.666666h42.666667v-42.666666zM469.333333 170.666667v42.666666h42.666667v-42.666666zM469.333333 341.333333v42.666667h42.666667v-42.666667zM469.333333 512V554.666667h42.666667v-42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="cebianlanshouqi" unicode="&#59312;" d="M256 576a21.333333 21.333333 0 0 0 21.333333 21.333333h469.333334a21.333333 21.333333 0 1 0 0-42.666666h-469.333334a21.290667 21.290667 0 0 0-21.333333 21.333333zM256 384c0 11.776 9.6 21.333333 21.461333 21.333333h277.077334a21.333333 21.333333 0 1 0 0-42.666666H277.504A21.333333 21.333333 0 0 0 256 384z m0-192a21.333333 21.333333 0 0 0 21.333333 21.333333h469.333334a21.333333 21.333333 0 1 0 0-42.666666h-469.333334a21.290667 21.290667 0 0 0-21.333333 21.333333z m368.896 283.562667a21.333333 21.333333 0 0 0 30.165333 30.165333l106.666667-106.666667a21.333333 21.333333 0 0 0 0-30.165333l-106.666667-106.666667a21.333333 21.333333 0 0 0-30.165333 30.165334L716.501333 384l-91.562666 91.605333z" horiz-adv-x="1024" /> <glyph glyph-name="cebianlanshouqi" unicode="&#59312;" d="M256 576a21.333333 21.333333 0 0 0 21.333333 21.333333h469.333334a21.333333 21.333333 0 1 0 0-42.666666h-469.333334a21.290667 21.290667 0 0 0-21.333333 21.333333zM256 384c0 11.776 9.6 21.333333 21.461333 21.333333h277.077334a21.333333 21.333333 0 1 0 0-42.666666H277.504A21.333333 21.333333 0 0 0 256 384z m0-192a21.333333 21.333333 0 0 0 21.333333 21.333333h469.333334a21.333333 21.333333 0 1 0 0-42.666666h-469.333334a21.290667 21.290667 0 0 0-21.333333 21.333333z m368.896 283.562667a21.333333 21.333333 0 0 0 30.165333 30.165333l106.666667-106.666667a21.333333 21.333333 0 0 0 0-30.165333l-106.666667-106.666667a21.333333 21.333333 0 0 0-30.165333 30.165334L716.501333 384l-91.562666 91.605333z" horiz-adv-x="1024" />
<glyph glyph-name="hebing" unicode="&#59313;" d="M810.666667 682.666667v-597.333334H213.333333V682.666667h597.333334z m-42.666667-42.666667H256v-512h512V640zM389.162667 469.333333l90.538666-90.496-90.538666-90.538666-30.165334 30.165333 37.802667 37.845333-119.466667-0.042666v42.666666l121.856 0.042667-40.192 40.192 30.165334 30.165333zM645.162667 469.333333L554.666667 378.837333l90.496-90.538666 30.165333 30.165333-37.76 37.845333 119.466667-0.042666v42.666666l-121.856 0.042667 40.149333 40.192-30.165333 30.165333z" horiz-adv-x="1024" /> <glyph glyph-name="hebing" unicode="&#59313;" d="M810.666667 682.666667v-597.333334H213.333333V682.666667h597.333334z m-42.666667-42.666667H256v-512h512V640zM389.162667 469.333333l90.538666-90.496-90.538666-90.538666-30.165334 30.165333 37.802667 37.845333-119.466667-0.042666v42.666666l121.856 0.042667-40.192 40.192 30.165334 30.165333zM645.162667 469.333333L554.666667 378.837333l90.496-90.538666 30.165333 30.165333-37.76 37.845333 119.466667-0.042666v42.666666l-121.856 0.042667 40.149333 40.192-30.165333 30.165333z" horiz-adv-x="1024" />
<glyph glyph-name="xiangshangqingxie" unicode="&#59314;" d="M290.944 606.634667l205.738667-95.914667 0.469333 0.426667 1.109333-1.152 142.506667-66.432-32.128-32.085334-102.826667 47.957334-107.818666-107.733334 48-102.912-32.085334-32.042666-66.346666 142.250666-1.28 1.28 0.469333 0.512-96 205.696 40.192 40.149334z m12.885333-53.034667l74.965334-160.810667 85.845333 85.845334L303.786667 553.6zM690.432 432.896h128v-128h-42.666667v53.418667l-325.845333-325.802667-30.165333 30.165333 327.552 327.552h-56.874667v42.666667z" horiz-adv-x="1024" /> <glyph glyph-name="xiangshangqingxie" unicode="&#59314;" d="M290.944 606.634667l205.738667-95.914667 0.469333 0.426667 1.109333-1.152 142.506667-66.432-32.128-32.085334-102.826667 47.957334-107.818666-107.733334 48-102.912-32.085334-32.042666-66.346666 142.250666-1.28 1.28 0.469333 0.512-96 205.696 40.192 40.149334z m12.885333-53.034667l74.965334-160.810667 85.845333 85.845334L303.786667 553.6zM690.432 432.896h128v-128h-42.666667v53.418667l-325.845333-325.802667-30.165333 30.165333 327.552 327.552h-56.874667v42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="shuipingduiqi" unicode="&#59315;" d="M725.333333 362.666667H298.666667v42.666666h426.666666zM426.666667 261.504l90.496 90.496 90.538666-90.496-30.165333-30.165333-39.936 39.850666v-121.557333h-42.666667v119.765333l-38.101333-38.058666-30.165333 30.165333zM426.666667 506.837333l90.496-90.538666 90.538666 90.538666-30.165333 30.165334-39.936-39.893334V618.666667h-42.666667v-119.765334l-38.101333 38.101334-30.165333-30.165334z" horiz-adv-x="1024" /> <glyph glyph-name="shuipingduiqi" unicode="&#59315;" d="M725.333333 362.666667H298.666667v42.666666h426.666666zM426.666667 261.504l90.496 90.496 90.538666-90.496-30.165333-30.165333-39.936 39.850666v-121.557333h-42.666667v119.765333l-38.101333-38.058666-30.165333 30.165333zM426.666667 506.837333l90.496-90.538666 90.538666 90.538666-30.165333 30.165334-39.936-39.893334V618.666667h-42.666667v-119.765334l-38.101333 38.101334-30.165333-30.165334z" horiz-adv-x="1024" />
<glyph glyph-name="wenbenshanchuxian" unicode="&#59316;" d="M298.666667 640h426.666666v-42.666667H298.666667zM533.290667 341.333333l0.042666-192h-42.666666l-0.042667 192h42.666667z m0.042666 277.333334l-0.042666-234.666667h-42.666667l0.042667 234.666667h42.666666zM320 640v-85.333333h-42.666667V640zM746.666667 640v-85.333333h-42.666667V640zM256 426.666667h512v-42.666667H256zM426.666667 170.666667h170.666666v-42.666667h-170.666666z" horiz-adv-x="1024" /> <glyph glyph-name="wenbenshanchuxian" unicode="&#59316;" d="M298.666667 640h426.666666v-42.666667H298.666667zM533.290667 341.333333l0.042666-192h-42.666666l-0.042667 192h42.666667z m0.042666 277.333334l-0.042666-234.666667h-42.666667l0.042667 234.666667h42.666666zM320 640v-85.333333h-42.666667V640zM746.666667 640v-85.333333h-42.666667V640zM256 426.666667h512v-42.666667H256zM426.666667 170.666667h170.666666v-42.666667h-170.666666z" horiz-adv-x="1024" />
<glyph glyph-name="wenbenyouduiqi" unicode="&#59317;" d="M234.666667 597.333333h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 1 0 0 42.666666z m213.333333-128h341.333333a21.333333 21.333333 0 1 0 0-42.666666h-341.333333a21.333333 21.333333 0 0 0 0 42.666666z m-213.333333-128h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 0 0 0 42.666666z m213.333333-128h341.333333a21.333333 21.333333 0 1 0 0-42.666666h-341.333333a21.333333 21.333333 0 0 0 0 42.666666z" horiz-adv-x="1024" /> <glyph glyph-name="wenbenyouduiqi" unicode="&#59317;" d="M234.666667 597.333333h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 1 0 0 42.666666z m213.333333-128h341.333333a21.333333 21.333333 0 1 0 0-42.666666h-341.333333a21.333333 21.333333 0 0 0 0 42.666666z m-213.333333-128h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 0 0 0 42.666666z m213.333333-128h341.333333a21.333333 21.333333 0 1 0 0-42.666666h-341.333333a21.333333 21.333333 0 0 0 0 42.666666z" horiz-adv-x="1024" />
<glyph glyph-name="qianjin" unicode="&#59318;" d="M287.018667 476.672h310.997333v-42.666667H286.72l84.48-84.437333a21.333333 21.333333 0 1 0-30.208-30.165333l-120.746667 120.704a21.248 21.248 0 0 0 0 30.165333l120.746667 120.661333a21.333333 21.333333 0 0 0 30.165333-30.165333L287.018667 476.672z m524.330666-213.333333a213.333333 213.333333 0 0 1-213.333333 213.333333v-42.666667a170.666667 170.666667 0 0 0 170.666667-170.666666h42.666666z m0 0h-42.666666v-64a21.333333 21.333333 0 1 1 42.666666 0v64z" horiz-adv-x="1024" /> <glyph glyph-name="qianjin" unicode="&#59318;" d="M287.018667 476.672h310.997333v-42.666667H286.72l84.48-84.437333a21.333333 21.333333 0 1 0-30.208-30.165333l-120.746667 120.704a21.248 21.248 0 0 0 0 30.165333l120.746667 120.661333a21.333333 21.333333 0 0 0 30.165333-30.165333L287.018667 476.672z m524.330666-213.333333a213.333333 213.333333 0 0 1-213.333333 213.333333v-42.666667a170.666667 170.666667 0 0 0 170.666667-170.666666h42.666666z m0 0h-42.666666v-64a21.333333 21.333333 0 1 1 42.666666 0v64z" horiz-adv-x="1024" />
<glyph glyph-name="tubiao" unicode="&#59319;" d="M256 682.666667H213.333333v-597.333334h597.333334v42.666667H256zM490.666667 552.533333V341.333333h185.6c-19.2-72.533333-85.333333-128-164.266667-128-93.866667 0-170.666667 76.8-170.666667 170.666667 0 87.466667 66.133333 157.866667 149.333334 168.533333M512 597.333333c-117.333333 0-213.333333-96-213.333333-213.333333s96-213.333333 213.333333-213.333333 213.333333 96 213.333333 213.333333h-192V597.333333H512zM618.666667 635.733333c83.2-14.933333 134.4-74.666667 147.2-166.4H618.666667V635.733333m-42.666667 46.933334v-256H810.666667c0 149.333333-85.333333 256-234.666667 256z" horiz-adv-x="1024" /> <glyph glyph-name="tubiao" unicode="&#59319;" d="M256 682.666667H213.333333v-597.333334h597.333334v42.666667H256zM490.666667 552.533333V341.333333h185.6c-19.2-72.533333-85.333333-128-164.266667-128-93.866667 0-170.666667 76.8-170.666667 170.666667 0 87.466667 66.133333 157.866667 149.333334 168.533333M512 597.333333c-117.333333 0-213.333333-96-213.333333-213.333333s96-213.333333 213.333333-213.333333 213.333333 96 213.333333 213.333333h-192V597.333333H512zM618.666667 635.733333c83.2-14.933333 134.4-74.666667 147.2-166.4H618.666667V635.733333m-42.666667 46.933334v-256H810.666667c0 149.333333-85.333333 256-234.666667 256z" horiz-adv-x="1024" />
<glyph glyph-name="youbiankuang" unicode="&#59320;" d="M768 640v-554.666667h-42.666667V640zM597.333333 640v-42.666667h-42.666666V640zM426.666667 640v-42.666667H384V640zM682.666667 640v-42.666667h-42.666667V640zM512 640v-42.666667h-42.666667V640zM341.333333 640v-42.666667H298.666667V640zM597.333333 384v-42.666667h-42.666666v42.666667zM597.333333 128v-42.666667h-42.666666v42.666667zM426.666667 128v-42.666667H384v42.666667zM682.666667 128v-42.666667h-42.666667v42.666667zM512 128v-42.666667h-42.666667v42.666667zM341.333333 128v-42.666667H298.666667v42.666667zM256 128v-42.666667H213.333333v42.666667zM426.666667 384v-42.666667H384v42.666667zM682.666667 384v-42.666667h-42.666667v42.666667zM512 384v-42.666667h-42.666667v42.666667zM341.333333 384v-42.666667H298.666667v42.666667zM256 640v-42.666667H213.333333V640zM256 469.333333v-42.666666H213.333333v42.666666zM256 298.666667v-42.666667H213.333333v42.666667zM256 554.666667v-42.666667H213.333333V554.666667zM256 384v-42.666667H213.333333v42.666667zM256 213.333333v-42.666666H213.333333v42.666666zM512 469.333333v-42.666666h-42.666667v42.666666zM512 298.666667v-42.666667h-42.666667v42.666667zM512 554.666667v-42.666667h-42.666667V554.666667zM512 384v-42.666667h-42.666667v42.666667zM512 213.333333v-42.666666h-42.666667v42.666666z" horiz-adv-x="1024" /> <glyph glyph-name="youbiankuang" unicode="&#59320;" d="M768 640v-554.666667h-42.666667V640zM597.333333 640v-42.666667h-42.666666V640zM426.666667 640v-42.666667H384V640zM682.666667 640v-42.666667h-42.666667V640zM512 640v-42.666667h-42.666667V640zM341.333333 640v-42.666667H298.666667V640zM597.333333 384v-42.666667h-42.666666v42.666667zM597.333333 128v-42.666667h-42.666666v42.666667zM426.666667 128v-42.666667H384v42.666667zM682.666667 128v-42.666667h-42.666667v42.666667zM512 128v-42.666667h-42.666667v42.666667zM341.333333 128v-42.666667H298.666667v42.666667zM256 128v-42.666667H213.333333v42.666667zM426.666667 384v-42.666667H384v42.666667zM682.666667 384v-42.666667h-42.666667v42.666667zM512 384v-42.666667h-42.666667v42.666667zM341.333333 384v-42.666667H298.666667v42.666667zM256 640v-42.666667H213.333333V640zM256 469.333333v-42.666666H213.333333v42.666666zM256 298.666667v-42.666667H213.333333v42.666667zM256 554.666667v-42.666667H213.333333V554.666667zM256 384v-42.666667H213.333333v42.666667zM256 213.333333v-42.666666H213.333333v42.666666zM512 469.333333v-42.666666h-42.666667v42.666666zM512 298.666667v-42.666667h-42.666667v42.666667zM512 554.666667v-42.666667h-42.666667V554.666667zM512 384v-42.666667h-42.666667v42.666667zM512 213.333333v-42.666666h-42.666667v42.666666z" horiz-adv-x="1024" />
<glyph glyph-name="baifenhao" unicode="&#59321;" d="M653.525333 682.666667l36.949334-21.333334-320-554.24-36.949334 21.333334L653.525333 682.666667zM682.666667 426.666667c71.68 0 128-67.626667 128-149.333334S754.346667 128 682.666667 128s-128 67.626667-128 149.333333 56.32 149.333333 128 149.333334z m0-42.666667c-46.165333 0-85.333333-46.976-85.333334-106.666667s39.168-106.666667 85.333334-106.666666c46.165333 0 85.333333 46.976 85.333333 106.666666s-39.168 106.666667-85.333333 106.666667zM341.333333 661.333333c71.68 0 128-67.626667 128-149.333333s-56.32-149.333333-128-149.333333S213.333333 430.293333 213.333333 512s56.32 149.333333 128 149.333333z m0-42.666666C295.168 618.666667 256 571.690667 256 512s39.168-106.666667 85.333333-106.666667c46.165333 0 85.333333 46.976 85.333334 106.666667s-39.168 106.666667-85.333334 106.666667z" horiz-adv-x="1024" /> <glyph glyph-name="baifenhao" unicode="&#59321;" d="M653.525333 682.666667l36.949334-21.333334-320-554.24-36.949334 21.333334L653.525333 682.666667zM682.666667 426.666667c71.68 0 128-67.626667 128-149.333334S754.346667 128 682.666667 128s-128 67.626667-128 149.333333 56.32 149.333333 128 149.333334z m0-42.666667c-46.165333 0-85.333333-46.976-85.333334-106.666667s39.168-106.666667 85.333334-106.666666c46.165333 0 85.333333 46.976 85.333333 106.666666s-39.168 106.666667-85.333333 106.666667zM341.333333 661.333333c71.68 0 128-67.626667 128-149.333333s-56.32-149.333333-128-149.333333S213.333333 430.293333 213.333333 512s56.32 149.333333 128 149.333333z m0-42.666666C295.168 618.666667 256 571.690667 256 512s39.168-106.666667 85.333333-106.666667c46.165333 0 85.333333 46.976 85.333334 106.666667s-39.168 106.666667-85.333334 106.666667z" horiz-adv-x="1024" />
<glyph glyph-name="geshishua" unicode="&#59322;" d="M725.333333 682.666667v-85.333334h85.333334v-234.666666h-298.666667V298.666667h21.333333v-213.333334h-85.333333v213.333334h21.333333v106.666666h298.666667V554.666667h-42.666667v-85.333334H213.333333V682.666667h512z m-42.666666-42.666667H256v-128h426.666667V640z" horiz-adv-x="1024" /> <glyph glyph-name="geshishua" unicode="&#59322;" d="M725.333333 682.666667v-85.333334h85.333334v-234.666666h-298.666667V298.666667h21.333333v-213.333334h-85.333333v213.333334h21.333333v106.666666h298.666667V554.666667h-42.666667v-85.333334H213.333333V682.666667h512z m-42.666666-42.666667H256v-128h426.666667V640z" horiz-adv-x="1024" />
<glyph glyph-name="baocun" unicode="&#59323;" d="M341.333333 640H277.333333a21.333333 21.333333 0 0 1-21.333333-21.333333v-469.333334a21.333333 21.333333 0 0 1 21.333333-21.333333h469.333334a21.333333 21.333333 0 0 1 21.333333 21.333333v469.333334a21.333333 21.333333 0 0 1-21.333333 21.333333H682.666667v-213.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H384a42.666667 42.666667 0 0 0-42.666667 42.666667V640zM256 682.666667h512a42.666667 42.666667 0 0 0 42.666667-42.666667v-512a42.666667 42.666667 0 0 0-42.666667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667z m128-42.666667v-192a21.333333 21.333333 0 0 1 21.333333-21.333333h213.333334a21.333333 21.333333 0 0 1 21.333333 21.333333V640H384z m192-42.666667a21.333333 21.333333 0 0 0 21.333333-21.333333v-85.333333a21.333333 21.333333 0 0 0-42.666666 0v85.333333a21.333333 21.333333 0 0 0 21.333333 21.333333z" horiz-adv-x="1024" /> <glyph glyph-name="baocun" unicode="&#59323;" d="M341.333333 640H277.333333a21.333333 21.333333 0 0 1-21.333333-21.333333v-469.333334a21.333333 21.333333 0 0 1 21.333333-21.333333h469.333334a21.333333 21.333333 0 0 1 21.333333 21.333333v469.333334a21.333333 21.333333 0 0 1-21.333333 21.333333H682.666667v-213.333333a42.666667 42.666667 0 0 0-42.666667-42.666667H384a42.666667 42.666667 0 0 0-42.666667 42.666667V640zM256 682.666667h512a42.666667 42.666667 0 0 0 42.666667-42.666667v-512a42.666667 42.666667 0 0 0-42.666667-42.666667H256a42.666667 42.666667 0 0 0-42.666667 42.666667V640a42.666667 42.666667 0 0 0 42.666667 42.666667z m128-42.666667v-192a21.333333 21.333333 0 0 1 21.333333-21.333333h213.333334a21.333333 21.333333 0 0 1 21.333333 21.333333V640H384z m192-42.666667a21.333333 21.333333 0 0 0 21.333333-21.333333v-85.333333a21.333333 21.333333 0 0 0-42.666666 0v85.333333a21.333333 21.333333 0 0 0 21.333333 21.333333z" horiz-adv-x="1024" />
<glyph glyph-name="shujuyanzheng" unicode="&#59324;" d="M764.330667 303.829333l30.165333-30.165333L734.165333 213.333333l60.330667-60.330666-30.165333-30.165334-60.330667 60.330667-60.330667-60.330667-30.165333 30.165334L673.834667 213.333333l-60.330667 60.330667 30.165333 30.165333 60.330667-60.330666 60.330667 60.330666zM725.333333 384v-42.666667H256v-128h256v-42.666666H213.333333v213.333333h512z m47.829334 209.664l30.165333-30.165333L682.666667 442.88l-30.165334-30.165333-90.496 90.453333 30.165334 30.208 60.330666-60.330667 120.661334 120.661334zM725.333333 640v-42.666667H256v-128h256v-42.666666H213.333333V640h512z" horiz-adv-x="1024" /> <glyph glyph-name="shujuyanzheng" unicode="&#59324;" d="M764.330667 303.829333l30.165333-30.165333L734.165333 213.333333l60.330667-60.330666-30.165333-30.165334-60.330667 60.330667-60.330667-60.330667-30.165333 30.165334L673.834667 213.333333l-60.330667 60.330667 30.165333 30.165333 60.330667-60.330666 60.330667 60.330666zM725.333333 384v-42.666667H256v-128h256v-42.666666H213.333333v213.333333h512z m47.829334 209.664l30.165333-30.165333L682.666667 442.88l-30.165334-30.165333-90.496 90.453333 30.165334 30.208 60.330666-60.330667 120.661334 120.661334zM725.333333 640v-42.666667H256v-128h256v-42.666666H213.333333V640h512z" horiz-adv-x="1024" />
<glyph glyph-name="jieduan" unicode="&#59325;" d="M767.829333 682.666667h42.496v-597.333334h-42.496zM767.146667 342.784h-384v42.496h384v-42.496zM213.333333 682.666667h84.992v-597.333334H213.333333V682.666667z" horiz-adv-x="1024" /> <glyph glyph-name="jieduan" unicode="&#59325;" d="M767.829333 682.666667h42.496v-597.333334h-42.496zM767.146667 342.784h-384v42.496h384v-42.496zM213.333333 682.666667h84.992v-597.333334H213.333333V682.666667z" horiz-adv-x="1024" />
<glyph glyph-name="geshitiaojian" unicode="&#59326;" d="M810.666667 682.666667v-597.333334H213.333333V682.666667h597.333334z m-42.666667-320h-106.666667V128H768v234.666667z m-405.376 0h-106.666667V128h106.666667v234.666667z m256.042667-86.784L445.482667 128H618.666667v147.882667z m0 162.346666l-213.376-179.968v-108.885333l213.376 179.072v109.781333z m0 163.669334l-213.333334-179.029334v-108.885333l213.333334 179.072V601.898667zM768 640h-103.936l-2.730667-2.304V405.333333H768V640zM362.666667 640H256v-234.666667h106.666667V640z m235.008 0H405.333333v-161.408L597.674667 640z" horiz-adv-x="1024" /> <glyph glyph-name="geshitiaojian" unicode="&#59326;" d="M810.666667 682.666667v-597.333334H213.333333V682.666667h597.333334z m-42.666667-320h-106.666667V128H768v234.666667z m-405.376 0h-106.666667V128h106.666667v234.666667z m256.042667-86.784L445.482667 128H618.666667v147.882667z m0 162.346666l-213.376-179.968v-108.885333l213.376 179.072v109.781333z m0 163.669334l-213.333334-179.029334v-108.885333l213.333334 179.072V601.898667zM768 640h-103.936l-2.730667-2.304V405.333333H768V640zM362.666667 640H256v-234.666667h106.666667V640z m235.008 0H405.333333v-161.408L597.674667 640z" horiz-adv-x="1024" />
<glyph glyph-name="zidonghuanhang" unicode="&#59327;" d="M213.333333 682.666667h85.12v-597.333334H213.333333V682.666667z m225.450667-477.44l25.557333 21.333333-72.362666 63.786667 72.362666 63.872-25.557333 21.248-93.610667-80.853334h4.266667-4.266667l93.610667-89.386666zM768 682.666667h42.581333v-597.333334H768zM540.928 528.725333H391.978667v-42.581333h148.949333c59.605333 0 106.410667-38.314667 106.410667-85.12s-46.805333-85.12-106.410667-85.12H391.978667v-42.581333h148.949333c85.12 0 157.482667 55.338667 157.482667 127.701333s-72.362667 127.701333-157.44 127.701333z" horiz-adv-x="1024" /> <glyph glyph-name="zidonghuanhang" unicode="&#59327;" d="M213.333333 682.666667h85.12v-597.333334H213.333333V682.666667z m225.450667-477.44l25.557333 21.333333-72.362666 63.786667 72.362666 63.872-25.557333 21.248-93.610667-80.853334h4.266667-4.266667l93.610667-89.386666zM768 682.666667h42.581333v-597.333334H768zM540.928 528.725333H391.978667v-42.581333h148.949333c59.605333 0 106.410667-38.314667 106.410667-85.12s-46.805333-85.12-106.410667-85.12H391.978667v-42.581333h148.949333c85.12 0 157.482667 55.338667 157.482667 127.701333s-72.362667 127.701333-157.44 127.701333z" horiz-adv-x="1024" />
<glyph glyph-name="cebianlanzhankai" unicode="&#59328;" d="M256 576a21.333333 21.333333 0 0 0 21.333333 21.333333h469.333334a21.333333 21.333333 0 1 0 0-42.666666h-469.333334a21.290667 21.290667 0 0 0-21.333333 21.333333z m192-192c0 11.776 9.557333 21.333333 21.461333 21.333333h277.034667a21.333333 21.333333 0 1 0 0-42.666666h-277.034667a21.333333 21.333333 0 0 0-21.461333 21.333333zM256 192a21.333333 21.333333 0 0 0 21.333333 21.333333h469.333334a21.333333 21.333333 0 1 0 0-42.666666h-469.333334a21.290667 21.290667 0 0 0-21.333333 21.333333z m143.061333 283.562667L307.541333 384l91.605334-91.562667a21.333333 21.333333 0 0 0-30.165334-30.165333l-106.666666 106.666667a21.333333 21.333333 0 0 0 0 30.165333l106.666666 106.666667a21.333333 21.333333 0 0 0 30.165334-30.165334z" horiz-adv-x="1024" /> <glyph glyph-name="cebianlanzhankai" unicode="&#59328;" d="M256 576a21.333333 21.333333 0 0 0 21.333333 21.333333h469.333334a21.333333 21.333333 0 1 0 0-42.666666h-469.333334a21.290667 21.290667 0 0 0-21.333333 21.333333z m192-192c0 11.776 9.557333 21.333333 21.461333 21.333333h277.034667a21.333333 21.333333 0 1 0 0-42.666666h-277.034667a21.333333 21.333333 0 0 0-21.461333 21.333333zM256 192a21.333333 21.333333 0 0 0 21.333333 21.333333h469.333334a21.333333 21.333333 0 1 0 0-42.666666h-469.333334a21.290667 21.290667 0 0 0-21.333333 21.333333z m143.061333 283.562667L307.541333 384l91.605334-91.562667a21.333333 21.333333 0 0 0-30.165334-30.165333l-106.666666 106.666667a21.333333 21.333333 0 0 0 0 30.165333l106.666666 106.666667a21.333333 21.333333 0 0 0 30.165334-30.165334z" horiz-adv-x="1024" />
<glyph glyph-name="shaixuan2" unicode="&#59329;" d="M736 682.666667H328.533333C288 682.666667 256 650.666667 256 610.133333c0-17.066667 6.4-34.133333 17.066667-46.933333 0-2.133333 2.133333-2.133333 2.133333-4.266667l160-160v-168.533333c0-6.4 2.133333-10.666667 6.4-14.933333l145.066667-123.733334c4.266667-2.133333 8.533333-4.266667 12.8-4.266666 6.4 0 10.666667 2.133333 14.933333 6.4 4.266667 4.266667 4.266667 10.666667 4.266667 14.933333V392.533333l170.666666 166.4 2.133334 2.133334c10.666667 12.8 17.066667 29.866667 17.066666 46.933333 0 42.666667-32 74.666667-72.533333 74.666667z m23.466667-93.866667s-2.133333-2.133333 0 0l-172.8-172.8c-4.266667-4.266667-6.4-8.533333-6.4-14.933333v-251.733334l-104.533334 87.466667V405.333333c0 6.4-2.133333 10.666667-6.4 14.933334l-162.133333 166.4-2.133333 2.133333c-6.4 6.4-8.533333 12.8-8.533334 21.333333 0 17.066667 14.933333 32 32 32h407.466667c17.066667 0 32-14.933333 32-32 0-8.533333-4.266667-14.933333-8.533333-21.333333z" horiz-adv-x="1024" /> <glyph glyph-name="shaixuan2" unicode="&#59329;" d="M736 682.666667H328.533333C288 682.666667 256 650.666667 256 610.133333c0-17.066667 6.4-34.133333 17.066667-46.933333 0-2.133333 2.133333-2.133333 2.133333-4.266667l160-160v-168.533333c0-6.4 2.133333-10.666667 6.4-14.933333l145.066667-123.733334c4.266667-2.133333 8.533333-4.266667 12.8-4.266666 6.4 0 10.666667 2.133333 14.933333 6.4 4.266667 4.266667 4.266667 10.666667 4.266667 14.933333V392.533333l170.666666 166.4 2.133334 2.133334c10.666667 12.8 17.066667 29.866667 17.066666 46.933333 0 42.666667-32 74.666667-72.533333 74.666667z m23.466667-93.866667s-2.133333-2.133333 0 0l-172.8-172.8c-4.266667-4.266667-6.4-8.533333-6.4-14.933333v-251.733334l-104.533334 87.466667V405.333333c0 6.4-2.133333 10.666667-6.4 14.933334l-162.133333 166.4-2.133333 2.133333c-6.4 6.4-8.533333 12.8-8.533334 21.333333 0 17.066667 14.933333 32 32 32h407.466667c17.066667 0 32-14.933333 32-32 0-8.533333-4.266667-14.933333-8.533333-21.333333z" horiz-adv-x="1024" />
<glyph glyph-name="xiangxiaqingxie" unicode="&#59330;" d="M755.968 583.722667l-95.914667-205.738667 0.426667-0.469333-1.152-1.109334-66.432-142.506666-32.085333 32.128 47.957333 102.826666-107.733333 107.818667-102.912-48-32.042667 32.085333 142.250667 66.346667 1.28 1.28 0.512-0.469333 205.696 96 40.149333-40.192z m-53.034667-12.885334l-160.810666-74.965333 85.845333-85.845333 74.965333 160.810666zM582.229333 184.234667v-128h-128v42.666666h53.418667l-325.802667 325.845334 30.165334 30.165333 327.552-327.552v56.874667h42.666666z" horiz-adv-x="1024" /> <glyph glyph-name="xiangxiaqingxie" unicode="&#59330;" d="M755.968 583.722667l-95.914667-205.738667 0.426667-0.469333-1.152-1.109334-66.432-142.506666-32.085333 32.128 47.957333 102.826666-107.733333 107.818667-102.912-48-32.042667 32.085333 142.250667 66.346667 1.28 1.28 0.512-0.469333 205.696 96 40.149333-40.192z m-53.034667-12.885334l-160.810666-74.965333 85.845333-85.845333 74.965333 160.810666zM582.229333 184.234667v-128h-128v42.666666h53.418667l-325.802667 325.845334 30.165334 30.165333 327.552-327.552v56.874667h42.666666z" horiz-adv-x="1024" />
<glyph glyph-name="yichu" unicode="&#59331;" d="M256 682.666667h85.333333v-597.333334H256zM711.466667 253.312l-26.154667 26.154667 89.6 85.845333H256v37.376h518.954667l-89.6 85.845333 26.112 26.112L842.154667 384zM573.354667 682.666667h42.666666v-242.688h-42.666666V682.666667z m0-354.688h42.666666V85.333333h-42.666666v242.688z" horiz-adv-x="1024" /> <glyph glyph-name="yichu" unicode="&#59331;" d="M256 682.666667h85.333333v-597.333334H256zM711.466667 253.312l-26.154667 26.154667 89.6 85.845333H256v37.376h518.954667l-89.6 85.845333 26.112 26.112L842.154667 384zM573.354667 682.666667h42.666666v-242.688h-42.666666V682.666667z m0-354.688h42.666666V85.333333h-42.666666v242.688z" horiz-adv-x="1024" />
<glyph glyph-name="chuizhihebing" unicode="&#59332;" d="M810.666667 682.666667v-597.333334H213.333333V682.666667h597.333334z m-42.666667-42.666667H256v-512h512V640zM640 682.666667v-597.333334h-42.666667V682.666667zM426.666667 682.666667v-597.333334H384V682.666667zM597.034667 304.170667l-90.538667-90.538667L416 304.213333l30.165333 30.165334 37.802667-37.76V544h42.666667v-249.898667l40.234666 40.234667 30.165334-30.165333z" horiz-adv-x="1024" /> <glyph glyph-name="chuizhihebing" unicode="&#59332;" d="M810.666667 682.666667v-597.333334H213.333333V682.666667h597.333334z m-42.666667-42.666667H256v-512h512V640zM640 682.666667v-597.333334h-42.666667V682.666667zM426.666667 682.666667v-597.333334H384V682.666667zM597.034667 304.170667l-90.538667-90.538667L416 304.213333l30.165333 30.165334 37.802667-37.76V544h42.666667v-249.898667l40.234666 40.234667 30.165334-30.165333z" horiz-adv-x="1024" />
<glyph glyph-name="wenbenfensanduiqi" unicode="&#59333;" d="M234.666667 597.333333h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 1 0 0 42.666666z m0-128h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 0 0 0 42.666666z m0-128h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 0 0 0 42.666666z m0-128h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 0 0 0 42.666666z" horiz-adv-x="1024" /> <glyph glyph-name="wenbenfensanduiqi" unicode="&#59333;" d="M234.666667 597.333333h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 1 0 0 42.666666z m0-128h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 0 0 0 42.666666z m0-128h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 0 0 0 42.666666z m0-128h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 0 0 0 42.666666z" horiz-adv-x="1024" />
<glyph glyph-name="zuobiankuang" unicode="&#59334;" d="M213.333333 85.333333V640h42.666667v-554.666667zM384 85.333333v42.666667h42.666667v-42.666667zM554.666667 85.333333v42.666667h42.666666v-42.666667zM298.666667 85.333333v42.666667h42.666666v-42.666667zM469.333333 85.333333v42.666667h42.666667v-42.666667zM640 85.333333v42.666667h42.666667v-42.666667zM384 341.333333v42.666667h42.666667v-42.666667zM554.666667 341.333333v42.666667h42.666666v-42.666667zM298.666667 341.333333v42.666667h42.666666v-42.666667zM469.333333 341.333333v42.666667h42.666667v-42.666667zM640 341.333333v42.666667h42.666667v-42.666667zM469.333333 256v42.666667h42.666667v-42.666667zM469.333333 426.666667v42.666666h42.666667v-42.666666zM469.333333 170.666667v42.666666h42.666667v-42.666666zM469.333333 341.333333v42.666667h42.666667v-42.666667zM469.333333 512V554.666667h42.666667v-42.666667zM384 597.333333V640h42.666667v-42.666667zM554.666667 597.333333V640h42.666666v-42.666667zM298.666667 597.333333V640h42.666666v-42.666667zM469.333333 597.333333V640h42.666667v-42.666667zM640 597.333333V640h42.666667v-42.666667zM725.333333 597.333333V640h42.666667v-42.666667zM725.333333 85.333333v42.666667h42.666667v-42.666667zM725.333333 256v42.666667h42.666667v-42.666667zM725.333333 426.666667v42.666666h42.666667v-42.666666zM725.333333 170.666667v42.666666h42.666667v-42.666666zM725.333333 341.333333v42.666667h42.666667v-42.666667zM725.333333 512V554.666667h42.666667v-42.666667z" horiz-adv-x="1024" /> <glyph glyph-name="zuobiankuang" unicode="&#59334;" d="M213.333333 85.333333V640h42.666667v-554.666667zM384 85.333333v42.666667h42.666667v-42.666667zM554.666667 85.333333v42.666667h42.666666v-42.666667zM298.666667 85.333333v42.666667h42.666666v-42.666667zM469.333333 85.333333v42.666667h42.666667v-42.666667zM640 85.333333v42.666667h42.666667v-42.666667zM384 341.333333v42.666667h42.666667v-42.666667zM554.666667 341.333333v42.666667h42.666666v-42.666667zM298.666667 341.333333v42.666667h42.666666v-42.666667zM469.333333 341.333333v42.666667h42.666667v-42.666667zM640 341.333333v42.666667h42.666667v-42.666667zM469.333333 256v42.666667h42.666667v-42.666667zM469.333333 426.666667v42.666666h42.666667v-42.666666zM469.333333 170.666667v42.666666h42.666667v-42.666666zM469.333333 341.333333v42.666667h42.666667v-42.666667zM469.333333 512V554.666667h42.666667v-42.666667zM384 597.333333V640h42.666667v-42.666667zM554.666667 597.333333V640h42.666666v-42.666667zM298.666667 597.333333V640h42.666666v-42.666667zM469.333333 597.333333V640h42.666667v-42.666667zM640 597.333333V640h42.666667v-42.666667zM725.333333 597.333333V640h42.666667v-42.666667zM725.333333 85.333333v42.666667h42.666667v-42.666667zM725.333333 256v42.666667h42.666667v-42.666667zM725.333333 426.666667v42.666666h42.666667v-42.666666zM725.333333 170.666667v42.666666h42.666667v-42.666666zM725.333333 341.333333v42.666667h42.666667v-42.666667zM725.333333 512V554.666667h42.666667v-42.666667z" horiz-adv-x="1024" />
<glyph glyph-name="fenyechakan" unicode="&#59335;" d="M810.666667 682.666667v-42.666667h-170.709334L640 128h170.666667v-42.666667h-213.333334V682.666667h213.333334z m-384 0l-0.042667-554.666667H426.666667v-42.666667H213.333333v42.666667h170.624L384 640H213.333333V682.666667h213.333334z m106.666666-512v-85.333334h-42.666666v85.333334h42.666666z m0 170.666666v-85.333333h-42.666666v85.333333h42.666666z m0 170.666667v-85.333333h-42.666666V512h42.666666z m0 170.666667v-85.333334h-42.666666V682.666667h42.666666z" horiz-adv-x="1024" /> <glyph glyph-name="fenyechakan" unicode="&#59335;" d="M810.666667 682.666667v-42.666667h-170.709334L640 128h170.666667v-42.666667h-213.333334V682.666667h213.333334z m-384 0l-0.042667-554.666667H426.666667v-42.666667H213.333333v42.666667h170.624L384 640H213.333333V682.666667h213.333334z m106.666666-512v-85.333334h-42.666666v85.333334h42.666666z m0 170.666666v-85.333333h-42.666666v85.333333h42.666666z m0 170.666667v-85.333333h-42.666666V512h42.666666z m0 170.666667v-85.333334h-42.666666V682.666667h42.666666z" horiz-adv-x="1024" />
<glyph glyph-name="yunhang" unicode="&#59336;" d="M268.032 372.565333l60.373333 60.330667 211.2-211.2-60.373333-60.330667zM780.928 583.765333l60.373333-60.330666-331.904-331.861334-60.330666 60.330667z" horiz-adv-x="1024" /> <glyph glyph-name="yunhang" unicode="&#59336;" d="M268.032 372.565333l60.373333 60.330667 211.2-211.2-60.373333-60.330667zM780.928 583.765333l60.373333-60.330666-331.904-331.861334-60.330666 60.330667z" horiz-adv-x="1024" />
<glyph glyph-name="lie" unicode="&#59337;" d="M234.666667 64v597.333333h42.666666v-597.333333zM405.333333 64v597.333333h42.666667v-597.333333zM576 64v597.333333h42.666667v-597.333333zM746.666667 64v597.333333h42.666666v-597.333333z" horiz-adv-x="1024" /> <glyph glyph-name="lie" unicode="&#59337;" d="M234.666667 64v597.333333h42.666666v-597.333333zM405.333333 64v597.333333h42.666667v-597.333333zM576 64v597.333333h42.666667v-597.333333zM746.666667 64v597.333333h42.666666v-597.333333z" horiz-adv-x="1024" />
<glyph glyph-name="quanping" unicode="&#59338;" d="M810.666667 682.666667v-597.333334H213.333333V682.666667h597.333334z m-42.666667-42.666667H256v-512h512V640zM341.333333 298.666667v-85.376L426.666667 213.333333v-42.666666H298.666667v128h42.666666z m384 0v-128h-128v42.666666h85.376L682.666667 298.666667h42.666666z m-298.666666 298.666666v-42.666666l-85.333334 0.042666V469.333333H298.666667V597.333333h128z m298.666666 0v-128h-42.666666l0.042666 85.333334H597.333333V597.333333h128z" horiz-adv-x="1024" /> <glyph glyph-name="quanping" unicode="&#59338;" d="M810.666667 682.666667v-597.333334H213.333333V682.666667h597.333334z m-42.666667-42.666667H256v-512h512V640zM341.333333 298.666667v-85.376L426.666667 213.333333v-42.666666H298.666667v128h42.666666z m384 0v-128h-128v42.666666h85.376L682.666667 298.666667h42.666666z m-298.666666 298.666666v-42.666666l-85.333334 0.042666V469.333333H298.666667V597.333333h128z m298.666666 0v-128h-42.666666l0.042666 85.333334H597.333333V597.333333h128z" horiz-adv-x="1024" />
<glyph glyph-name="shaixuan" unicode="&#59339;" d="M736 682.666667H328.533333C288 682.666667 256 650.666667 256 610.133333c0-17.066667 6.4-34.133333 17.066667-46.933333 0-2.133333 2.133333-2.133333 2.133333-4.266667l160-160v-168.533333c0-6.4 2.133333-10.666667 6.4-14.933333l145.066667-123.733334c4.266667-2.133333 8.533333-4.266667 12.8-4.266666 6.4 0 10.666667 2.133333 14.933333 6.4 4.266667 4.266667 4.266667 10.666667 4.266667 14.933333V392.533333l170.666666 166.4 2.133334 2.133334c10.666667 12.8 17.066667 29.866667 17.066666 46.933333 0 42.666667-32 74.666667-72.533333 74.666667z m23.466667-93.866667s-2.133333-2.133333 0 0l-172.8-172.8c-4.266667-4.266667-6.4-8.533333-6.4-14.933333v-251.733334l-104.533334 87.466667V405.333333c0 6.4-2.133333 10.666667-6.4 14.933334l-162.133333 166.4-2.133333 2.133333c-6.4 6.4-8.533333 12.8-8.533334 21.333333 0 17.066667 14.933333 32 32 32h407.466667c17.066667 0 32-14.933333 32-32 0-8.533333-4.266667-14.933333-8.533333-21.333333zM688.213333 517.589333l-101.546666-101.589333c-4.266667-4.266667-6.4-8.533333-6.4-14.933333v-251.733334l-104.533334 87.466667V405.333333c0 6.4-2.133333 10.666667-6.4 14.933334L403.626667 487.68l284.586666 29.909333z" horiz-adv-x="1024" /> <glyph glyph-name="shaixuan" unicode="&#59339;" d="M736 682.666667H328.533333C288 682.666667 256 650.666667 256 610.133333c0-17.066667 6.4-34.133333 17.066667-46.933333 0-2.133333 2.133333-2.133333 2.133333-4.266667l160-160v-168.533333c0-6.4 2.133333-10.666667 6.4-14.933333l145.066667-123.733334c4.266667-2.133333 8.533333-4.266667 12.8-4.266666 6.4 0 10.666667 2.133333 14.933333 6.4 4.266667 4.266667 4.266667 10.666667 4.266667 14.933333V392.533333l170.666666 166.4 2.133334 2.133334c10.666667 12.8 17.066667 29.866667 17.066666 46.933333 0 42.666667-32 74.666667-72.533333 74.666667z m23.466667-93.866667s-2.133333-2.133333 0 0l-172.8-172.8c-4.266667-4.266667-6.4-8.533333-6.4-14.933333v-251.733334l-104.533334 87.466667V405.333333c0 6.4-2.133333 10.666667-6.4 14.933334l-162.133333 166.4-2.133333 2.133333c-6.4 6.4-8.533333 12.8-8.533334 21.333333 0 17.066667 14.933333 32 32 32h407.466667c17.066667 0 32-14.933333 32-32 0-8.533333-4.266667-14.933333-8.533333-21.333333zM688.213333 517.589333l-101.546666-101.589333c-4.266667-4.266667-6.4-8.533333-6.4-14.933333v-251.733334l-104.533334 87.466667V405.333333c0 6.4-2.133333 10.666667-6.4 14.933334L403.626667 487.68l284.586666 29.909333z" horiz-adv-x="1024" />
<glyph glyph-name="gengxin" unicode="&#59340;" d="M358.101333 640A298.666667 298.666667 0 0 1 512 85.333333a21.333333 21.333333 0 1 1 0 42.666667A256 256 0 0 0 405.333333 616.789333V532.906667A21.333333 21.333333 0 0 1 426.666667 512c11.776 0 21.333333 9.130667 21.333333 20.906667V661.76a20.565333 20.565333 0 0 1-6.229333 14.634667l0.042666 0.128A20.650667 20.650667 0 0 1 427.050667 682.666667H298.24a21.333333 21.333333 0 0 1-20.906667-21.333334c0-11.776 9.173333-21.333333 20.906667-21.333333h59.818667z m307.797334-512A298.666667 298.666667 0 0 1 512 682.666667a21.333333 21.333333 0 0 1 0-42.666667 256 256 0 0 0 106.666667-488.789333V235.093333A21.333333 21.333333 0 0 1 597.333333 256c-11.776 0-21.333333-9.130667-21.333333-20.906667v-128.810666a20.48 20.48 0 0 1 6.229333-14.634667l-0.042666-0.170667a20.650667 20.650667 0 0 1 14.762666-6.144h128.768a21.333333 21.333333 0 0 1 20.949334 21.333334c0 11.776-9.173333 21.333333-20.906667 21.333333h-59.861333z" horiz-adv-x="1024" /> <glyph glyph-name="gengxin" unicode="&#59340;" d="M358.101333 640A298.666667 298.666667 0 0 1 512 85.333333a21.333333 21.333333 0 1 1 0 42.666667A256 256 0 0 0 405.333333 616.789333V532.906667A21.333333 21.333333 0 0 1 426.666667 512c11.776 0 21.333333 9.130667 21.333333 20.906667V661.76a20.565333 20.565333 0 0 1-6.229333 14.634667l0.042666 0.128A20.650667 20.650667 0 0 1 427.050667 682.666667H298.24a21.333333 21.333333 0 0 1-20.906667-21.333334c0-11.776 9.173333-21.333333 20.906667-21.333333h59.818667z m307.797334-512A298.666667 298.666667 0 0 1 512 682.666667a21.333333 21.333333 0 0 1 0-42.666667 256 256 0 0 0 106.666667-488.789333V235.093333A21.333333 21.333333 0 0 1 597.333333 256c-11.776 0-21.333333-9.130667-21.333333-20.906667v-128.810666a20.48 20.48 0 0 1 6.229333-14.634667l-0.042666-0.170667a20.650667 20.650667 0 0 1 14.762666-6.144h128.768a21.333333 21.333333 0 0 1 20.949334 21.333334c0 11.776-9.173333 21.333333-20.906667 21.333333h-59.861333z" horiz-adv-x="1024" />
<glyph glyph-name="qingchu" unicode="&#59341;" d="M330.965333 625.365333l422.4-422.4-60.330666-60.330666-422.4 422.4zM753.365333 565.034667l-422.4-422.4-60.330666 60.330666 422.4 422.4z" horiz-adv-x="1024" /> <glyph glyph-name="qingchu" unicode="&#59341;" d="M330.965333 625.365333l422.4-422.4-60.330666-60.330666-422.4 422.4zM753.365333 565.034667l-422.4-422.4-60.330666 60.330666 422.4 422.4z" horiz-adv-x="1024" />
<glyph glyph-name="hang" unicode="&#59342;" d="M213.333333 640h597.333334v-42.666667H213.333333zM213.333333 469.333333h597.333334v-42.666666H213.333333zM213.333333 298.666667h597.333334v-42.666667H213.333333zM213.333333 128h597.333334v-42.666667H213.333333z" horiz-adv-x="1024" /> <glyph glyph-name="hang" unicode="&#59342;" d="M213.333333 640h597.333334v-42.666667H213.333333zM213.333333 469.333333h597.333334v-42.666666H213.333333zM213.333333 298.666667h597.333334v-42.666667H213.333333zM213.333333 128h597.333334v-42.666667H213.333333z" horiz-adv-x="1024" />
<glyph glyph-name="zhushi" unicode="&#59343;" d="M352 405.333333a32 32 0 1 1 64 0 32 32 0 0 1-64 0z m128 0a32 32 0 1 1 64 0 32 32 0 0 1-64 0z m128 0a32 32 0 1 1 64 0 32 32 0 0 1-64 0zM768 597.333333H256c-23.466667 0-42.666667-19.2-42.666667-42.666666v-298.666667c0-23.466667 19.2-42.666667 42.666667-42.666667h106.666667v-128l128 128H768c23.466667 0 42.666667 19.2 42.666667 42.666667V554.666667c0 23.466667-19.2 42.666667-42.666667 42.666666z m0-320c0-12.8-8.533333-21.333333-21.333333-21.333333H469.333333l-64-64V256h-128c-12.8 0-21.333333 8.533333-21.333333 21.333333v256c0 12.8 8.533333 21.333333 21.333333 21.333334h469.333334c12.8 0 21.333333-8.533333 21.333333-21.333334v-256z" horiz-adv-x="1024" /> <glyph glyph-name="zhushi" unicode="&#59343;" d="M352 405.333333a32 32 0 1 1 64 0 32 32 0 0 1-64 0z m128 0a32 32 0 1 1 64 0 32 32 0 0 1-64 0z m128 0a32 32 0 1 1 64 0 32 32 0 0 1-64 0zM768 597.333333H256c-23.466667 0-42.666667-19.2-42.666667-42.666666v-298.666667c0-23.466667 19.2-42.666667 42.666667-42.666667h106.666667v-128l128 128H768c23.466667 0 42.666667 19.2 42.666667 42.666667V554.666667c0 23.466667-19.2 42.666667-42.666667 42.666666z m0-320c0-12.8-8.533333-21.333333-21.333333-21.333333H469.333333l-64-64V256h-128c-12.8 0-21.333333 8.533333-21.333333 21.333333v256c0 12.8 8.533333 21.333333 21.333333 21.333334h469.333334c12.8 0 21.333333-8.533333 21.333333-21.333334v-256z" horiz-adv-x="1024" />
<glyph glyph-name="jian" unicode="&#59344;" d="M213.333333 426.666667h597.333334v-85.333334H213.333333z" horiz-adv-x="1024" /> <glyph glyph-name="jian" unicode="&#59344;" d="M213.333333 426.666667h597.333334v-85.333334H213.333333z" horiz-adv-x="1024" />
<glyph glyph-name="jisuan" unicode="&#59345;" d="M774.058667 682.666667v-42.666667H310.784l236.288-256-236.330667-256h463.317334v-42.666667H213.333333l275.669334 298.666667L213.333333 682.666667z" horiz-adv-x="1024" /> <glyph glyph-name="jisuan" unicode="&#59345;" d="M774.058667 682.666667v-42.666667H310.784l236.288-256-236.330667-256h463.317334v-42.666667H213.333333l275.669334 298.666667L213.333333 682.666667z" horiz-adv-x="1024" />
<glyph glyph-name="jia" unicode="&#59346;" d="M213.333333 426.666667h597.333334v-85.333334H213.333333zM554.666667 682.666667v-597.333334h-85.333334V682.666667z" horiz-adv-x="1024" /> <glyph glyph-name="jia" unicode="&#59346;" d="M213.333333 426.666667h597.333334v-85.333334H213.333333zM554.666667 682.666667v-597.333334h-85.333334V682.666667z" horiz-adv-x="1024" />
<glyph glyph-name="dibuduiqi" unicode="&#59347;" d="M725.333333 170.666667H298.666667v42.666666h426.666666zM608 314.496l-90.496-90.496-90.538667 90.496 30.165334 30.165333 37.802666-37.717333V597.034667h42.666667v-292.565334l40.234667 40.192 30.165333-30.165333z" horiz-adv-x="1024" /> <glyph glyph-name="dibuduiqi" unicode="&#59347;" d="M725.333333 170.666667H298.666667v42.666666h426.666666zM608 314.496l-90.496-90.496-90.538667 90.496 30.165334 30.165333 37.802666-37.717333V597.034667h42.666667v-292.565334l40.234667 40.192 30.165333-30.165333z" horiz-adv-x="1024" />
<glyph glyph-name="xiangshang90" unicode="&#59348;" d="M789.333333 400.213333l-213.333333 77.653334v0.64l-1.621333-0.042667L426.666667 532.224v-45.354667l106.666666-38.826666v-152.405334l-106.666666-38.826666v-45.354667l147.498666 53.674667 1.834667 0.042666v0.64l213.333333 77.610667V400.213333z m-46.634666-28.416L576 311.125333v121.386667l166.698667-60.714667zM384 559.829333L293.504 650.368 202.965333 559.786667l30.165334-30.165334 37.802666 37.76V106.666667h42.666667V569.898667l40.234667-40.234667L384 559.829333z" horiz-adv-x="1024" /> <glyph glyph-name="xiangshang90" unicode="&#59348;" d="M789.333333 400.213333l-213.333333 77.653334v0.64l-1.621333-0.042667L426.666667 532.224v-45.354667l106.666666-38.826666v-152.405334l-106.666666-38.826666v-45.354667l147.498666 53.674667 1.834667 0.042666v0.64l213.333333 77.610667V400.213333z m-46.634666-28.416L576 311.125333v121.386667l166.698667-60.714667zM384 559.829333L293.504 650.368 202.965333 559.786667l30.165334-30.165334 37.802666 37.76V106.666667h42.666667V569.898667l40.234667-40.234667L384 559.829333z" horiz-adv-x="1024" />
<glyph glyph-name="wuxuanzhuang" unicode="&#59349;" d="M549.546667 682.666667l77.653333-213.333334h0.64l-0.042667-1.621333 53.76-147.712h-45.354666l-38.826667 106.666667h-152.405333l-38.826667-106.666667H360.789333l53.674667 147.498667 0.042667 1.834666h0.64l77.610666 213.333334h56.789334z m-28.416-46.634667L460.458667 469.333333h121.386666l-60.714666 166.698667zM709.162667 277.333333l90.538666-90.496-90.538666-90.538666-30.165334 30.165333 37.76 37.802667H256v42.666666h463.232l-40.234667 40.234667 30.165334 30.165333z" horiz-adv-x="1024" /> <glyph glyph-name="wuxuanzhuang" unicode="&#59349;" d="M549.546667 682.666667l77.653333-213.333334h0.64l-0.042667-1.621333 53.76-147.712h-45.354666l-38.826667 106.666667h-152.405333l-38.826667-106.666667H360.789333l53.674667 147.498667 0.042667 1.834666h0.64l77.610666 213.333334h56.789334z m-28.416-46.634667L460.458667 469.333333h121.386666l-60.714666 166.698667zM709.162667 277.333333l90.538666-90.496-90.538666-90.538666-30.165334 30.165333 37.76 37.802667H256v42.666666h463.232l-40.234667 40.234667 30.165334 30.165333z" horiz-adv-x="1024" />
<glyph glyph-name="xianshiyincangwangge" unicode="&#59350;" d="M256 640h554.666667v-42.666667H256zM298.666667 640v-554.666667H256V640zM810.666667 640v-554.666667h-42.666667V640zM469.333333 640v-554.666667h-42.666666V640zM640 640v-554.666667h-42.666667V640zM256 469.333333h554.666667v-42.666666H256zM256 298.666667h554.666667v-42.666667H256zM256 128h554.666667v-42.666667H256z" horiz-adv-x="1024" /> <glyph glyph-name="xianshiyincangwangge" unicode="&#59350;" d="M256 640h554.666667v-42.666667H256zM298.666667 640v-554.666667H256V640zM810.666667 640v-554.666667h-42.666667V640zM469.333333 640v-554.666667h-42.666666V640zM640 640v-554.666667h-42.666667V640zM256 469.333333h554.666667v-42.666666H256zM256 298.666667h554.666667v-42.666667H256zM256 128h554.666667v-42.666667H256z" horiz-adv-x="1024" />
<glyph glyph-name="dongjie" unicode="&#59351;" d="M256.426667 639.573333h255.317333v-553.130666H256.426667zM809.557333 682.069333v-595.626666H213.930667V682.069333h595.626666z m-42.538666-42.538666H256.426667v-510.549334h510.549333V639.573333zM490.453333 639.573333h42.538667v-510.592h-42.538667zM256.426667 363.008v42.538667h510.592v-42.538667zM256.384 669.738667l264.192-264.192-30.122667-30.08-264.192 264.192 30.122667 30.08z m-30.122667-317.184l30.122667 30.122666 264.192-264.192-30.122667-30.08-264.192 264.149334z" horiz-adv-x="1024" /> <glyph glyph-name="dongjie" unicode="&#59351;" d="M256.426667 639.573333h255.317333v-553.130666H256.426667zM809.557333 682.069333v-595.626666H213.930667V682.069333h595.626666z m-42.538666-42.538666H256.426667v-510.549334h510.549333V639.573333zM490.453333 639.573333h42.538667v-510.592h-42.538667zM256.426667 363.008v42.538667h510.592v-42.538667zM256.384 669.738667l264.192-264.192-30.122667-30.08-264.192 264.192 30.122667 30.08z m-30.122667-317.184l30.122667 30.122666 264.192-264.192-30.122667-30.08-264.192 264.149334z" horiz-adv-x="1024" />
<glyph glyph-name="wenbenzuoduiqi" unicode="&#59352;" d="M234.666667 597.333333h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 1 0 0 42.666666z m0-128h341.333333a21.333333 21.333333 0 0 0 0-42.666666h-341.333333a21.333333 21.333333 0 0 0 0 42.666666z m0-128h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 0 0 0 42.666666z m0-128h341.333333a21.333333 21.333333 0 0 0 0-42.666666h-341.333333a21.333333 21.333333 0 0 0 0 42.666666z" horiz-adv-x="1024" /> <glyph glyph-name="wenbenzuoduiqi" unicode="&#59352;" d="M234.666667 597.333333h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 1 0 0 42.666666z m0-128h341.333333a21.333333 21.333333 0 0 0 0-42.666666h-341.333333a21.333333 21.333333 0 0 0 0 42.666666z m0-128h554.666666a21.333333 21.333333 0 1 0 0-42.666666h-554.666666a21.333333 21.333333 0 0 0 0 42.666666z m0-128h341.333333a21.333333 21.333333 0 0 0 0-42.666666h-341.333333a21.333333 21.333333 0 0 0 0 42.666666z" horiz-adv-x="1024" />
<glyph glyph-name="houtui" unicode="&#59354;" d="M737.664 476.672H426.666667v-42.666667h311.296l-84.48-84.437333a21.333333 21.333333 0 0 1 30.208-30.165333l120.746666 120.704a21.290667 21.290667 0 0 1 0 30.165333l-120.746666 120.661333a21.333333 21.333333 0 0 1-30.165334-30.165333l84.138667-84.096zM213.333333 263.338667a213.333333 213.333333 0 0 0 213.333334 213.333333v-42.666667a170.666667 170.666667 0 0 1-170.666667-170.666666H213.333333z m0 0h42.666667v-64a21.333333 21.333333 0 0 0-42.666667 0v64z" horiz-adv-x="1024" /> <glyph glyph-name="houtui" unicode="&#59354;" d="M737.664 476.672H426.666667v-42.666667h311.296l-84.48-84.437333a21.333333 21.333333 0 0 1 30.208-30.165333l120.746666 120.704a21.290667 21.290667 0 0 1 0 30.165333l-120.746666 120.661333a21.333333 21.333333 0 0 1-30.165334-30.165333l84.138667-84.096zM213.333333 263.338667a213.333333 213.333333 0 0 0 213.333334 213.333333v-42.666667a170.666667 170.666667 0 0 1-170.666667-170.666666H213.333333z m0 0h42.666667v-64a21.333333 21.333333 0 0 0-42.666667 0v64z" horiz-adv-x="1024" />
<glyph glyph-name="shuipinghebing" unicode="&#59355;" d="M810.666667 682.666667v-597.333334H213.333333V682.666667h597.333334z m-42.666667-42.666667H256v-512h512V640zM810.666667 512v-256H213.333333V512h597.333334z m-42.666667-42.666667H256v-170.666666h512v170.666666zM581.162667 469.333333l90.538666-90.496-90.538666-90.538666-30.165334 30.165333 37.76 37.802667H341.333333v42.666666h249.898667l-40.234667 40.234667 30.165334 30.165333z" horiz-adv-x="1024" /> <glyph glyph-name="shuipinghebing" unicode="&#59355;" d="M810.666667 682.666667v-597.333334H213.333333V682.666667h597.333334z m-42.666667-42.666667H256v-512h512V640zM810.666667 512v-256H213.333333V512h597.333334z m-42.666667-42.666667H256v-170.666666h512v170.666666zM581.162667 469.333333l90.538666-90.496-90.538666-90.538666-30.165334 30.165333 37.76 37.802667H341.333333v42.666666h249.898667l-40.234667 40.234667 30.165334 30.165333z" horiz-adv-x="1024" />
<glyph glyph-name="xiabiankuang" unicode="&#59356;" d="M768 85.333333H213.333333v42.666667h554.666667zM768 256h-42.666667v42.666667h42.666667zM768 426.666667h-42.666667v42.666666h42.666667zM768 170.666667h-42.666667v42.666666h42.666667zM768 341.333333h-42.666667v42.666667h42.666667zM768 512h-42.666667V554.666667h42.666667zM512 256h-42.666667v42.666667h42.666667zM256 256H213.333333v42.666667h42.666667zM256 426.666667H213.333333v42.666666h42.666667zM256 170.666667H213.333333v42.666666h42.666667zM256 341.333333H213.333333v42.666667h42.666667zM256 512H213.333333V554.666667h42.666667zM256 597.333333H213.333333V640h42.666667zM512 426.666667h-42.666667v42.666666h42.666667zM512 170.666667h-42.666667v42.666666h42.666667zM512 341.333333h-42.666667v42.666667h42.666667zM512 512h-42.666667V554.666667h42.666667zM768 597.333333h-42.666667V640h42.666667zM597.333333 597.333333h-42.666666V640h42.666666zM426.666667 597.333333H384V640h42.666667zM682.666667 597.333333h-42.666667V640h42.666667zM512 597.333333h-42.666667V640h42.666667zM341.333333 597.333333H298.666667V640h42.666666zM597.333333 341.333333h-42.666666v42.666667h42.666666zM426.666667 341.333333H384v42.666667h42.666667zM682.666667 341.333333h-42.666667v42.666667h42.666667zM512 341.333333h-42.666667v42.666667h42.666667zM341.333333 341.333333H298.666667v42.666667h42.666666z" horiz-adv-x="1024" /> <glyph glyph-name="xiabiankuang" unicode="&#59356;" d="M768 85.333333H213.333333v42.666667h554.666667zM768 256h-42.666667v42.666667h42.666667zM768 426.666667h-42.666667v42.666666h42.666667zM768 170.666667h-42.666667v42.666666h42.666667zM768 341.333333h-42.666667v42.666667h42.666667zM768 512h-42.666667V554.666667h42.666667zM512 256h-42.666667v42.666667h42.666667zM256 256H213.333333v42.666667h42.666667zM256 426.666667H213.333333v42.666666h42.666667zM256 170.666667H213.333333v42.666666h42.666667zM256 341.333333H213.333333v42.666667h42.666667zM256 512H213.333333V554.666667h42.666667zM256 597.333333H213.333333V640h42.666667zM512 426.666667h-42.666667v42.666666h42.666667zM512 170.666667h-42.666667v42.666666h42.666667zM512 341.333333h-42.666667v42.666667h42.666667zM512 512h-42.666667V554.666667h42.666667zM768 597.333333h-42.666667V640h42.666667zM597.333333 597.333333h-42.666666V640h42.666666zM426.666667 597.333333H384V640h42.666667zM682.666667 597.333333h-42.666667V640h42.666667zM512 597.333333h-42.666667V640h42.666667zM341.333333 597.333333H298.666667V640h42.666666zM597.333333 341.333333h-42.666666v42.666667h42.666666zM426.666667 341.333333H384v42.666667h42.666667zM682.666667 341.333333h-42.666667v42.666667h42.666667zM512 341.333333h-42.666667v42.666667h42.666667zM341.333333 341.333333H298.666667v42.666667h42.666666z" horiz-adv-x="1024" />
<glyph glyph-name="shezhi" unicode="&#59357;" d="M794.496 470.314667a112.341333 112.341333 0 0 0-72.917333 53.034666 108.074667 108.074667 0 0 0-9.941334 88.234667 13.781333 13.781333 0 0 1-4.394666 14.592 299.392 299.392 0 0 1-95.616 55.424 14.421333 14.421333 0 0 1-15.146667-3.584 113.578667 113.578667 0 0 0-84.48-35.968 113.578667 113.578667 0 0 0-82.858667 35.157333 14.421333 14.421333 0 0 1-16.768 4.394667 298.154667 298.154667 0 0 1-95.573333-55.808 13.781333 13.781333 0 0 1-4.394667-14.634667c9.344-29.354667 5.717333-61.269333-9.984-87.808a112.341333 112.341333 0 0 0-72.96-53.034666 13.909333 13.909333 0 0 1-10.752-11.050667 281.856 281.856 0 0 1 0-109.610667c1.024-5.504 5.290667-9.813333 10.752-11.008a112.341333 112.341333 0 0 0 72.96-52.650666c15.786667-26.666667 19.413333-58.709333 9.941334-88.192a13.781333 13.781333 0 0 1 4.352-14.634667 299.392 299.392 0 0 1 95.658666-55.424h4.778667c3.882667 0 7.637333 1.578667 10.325333 4.394667a114.773333 114.773333 0 0 0 166.229334 0c4.096-5.546667 11.648-7.424 17.92-4.394667a298.666667 298.666667 0 0 1 97.194666 55.04c4.266667 3.541333 6.016 9.301333 4.394667 14.592a108.074667 108.074667 0 0 0 8.362667 88.618667 112.341333 112.341333 0 0 0 72.96 52.650666 13.909333 13.909333 0 0 1 10.709333 11.008 280.32 280.32 0 0 1 0 109.653334 14.336 14.336 0 0 1-10.752 11.008z m-26.709333-105.173334a136.106667 136.106667 0 0 1-79.658667-60.928 131.285333 131.285333 0 0 1-13.568-97.322666 259.114667 259.114667 0 0 0-69.717333-39.552A135.552 135.552 0 0 1 512 206.890667a137.941333 137.941333 0 0 1-92.842667-39.552 258.304 258.304 0 0 0-69.717333 39.552 129.664 129.664 0 0 1-14.762667 96.938666 136.106667 136.106667 0 0 1-78.506666 61.312 239.189333 239.189333 0 0 0 0 79.061334A136.106667 136.106667 0 0 1 335.872 505.173333c16.896 29.525333 21.76 64.426667 13.525333 97.365334a258.730667 258.730667 0 0 0 69.717334 39.552c25.386667-23.125333 58.453333-35.968 92.842666-36.010667a136.064 136.064 0 0 1 92.842667 36.010667c25.173333-9.472 48.682667-22.826667 69.717333-39.594667a131.285333 131.285333 0 0 1 14.336-96.896 136.106667 136.106667 0 0 1 79.701334-60.928c4.394667-26.197333 4.394667-52.906667 0-79.104l-0.810667-0.426667h0.042667zM513.706667 525.653333a119.466667 119.466667 0 1 1 0-238.933333 119.466667 119.466667 0 0 1 0 238.933333z m0-199.125333a79.658667 79.658667 0 1 0 0 159.36 79.658667 79.658667 0 0 0 0-159.36z" horiz-adv-x="1024" /> <glyph glyph-name="shezhi" unicode="&#59357;" d="M794.496 470.314667a112.341333 112.341333 0 0 0-72.917333 53.034666 108.074667 108.074667 0 0 0-9.941334 88.234667 13.781333 13.781333 0 0 1-4.394666 14.592 299.392 299.392 0 0 1-95.616 55.424 14.421333 14.421333 0 0 1-15.146667-3.584 113.578667 113.578667 0 0 0-84.48-35.968 113.578667 113.578667 0 0 0-82.858667 35.157333 14.421333 14.421333 0 0 1-16.768 4.394667 298.154667 298.154667 0 0 1-95.573333-55.808 13.781333 13.781333 0 0 1-4.394667-14.634667c9.344-29.354667 5.717333-61.269333-9.984-87.808a112.341333 112.341333 0 0 0-72.96-53.034666 13.909333 13.909333 0 0 1-10.752-11.050667 281.856 281.856 0 0 1 0-109.610667c1.024-5.504 5.290667-9.813333 10.752-11.008a112.341333 112.341333 0 0 0 72.96-52.650666c15.786667-26.666667 19.413333-58.709333 9.941334-88.192a13.781333 13.781333 0 0 1 4.352-14.634667 299.392 299.392 0 0 1 95.658666-55.424h4.778667c3.882667 0 7.637333 1.578667 10.325333 4.394667a114.773333 114.773333 0 0 0 166.229334 0c4.096-5.546667 11.648-7.424 17.92-4.394667a298.666667 298.666667 0 0 1 97.194666 55.04c4.266667 3.541333 6.016 9.301333 4.394667 14.592a108.074667 108.074667 0 0 0 8.362667 88.618667 112.341333 112.341333 0 0 0 72.96 52.650666 13.909333 13.909333 0 0 1 10.709333 11.008 280.32 280.32 0 0 1 0 109.653334 14.336 14.336 0 0 1-10.752 11.008z m-26.709333-105.173334a136.106667 136.106667 0 0 1-79.658667-60.928 131.285333 131.285333 0 0 1-13.568-97.322666 259.114667 259.114667 0 0 0-69.717333-39.552A135.552 135.552 0 0 1 512 206.890667a137.941333 137.941333 0 0 1-92.842667-39.552 258.304 258.304 0 0 0-69.717333 39.552 129.664 129.664 0 0 1-14.762667 96.938666 136.106667 136.106667 0 0 1-78.506666 61.312 239.189333 239.189333 0 0 0 0 79.061334A136.106667 136.106667 0 0 1 335.872 505.173333c16.896 29.525333 21.76 64.426667 13.525333 97.365334a258.730667 258.730667 0 0 0 69.717334 39.552c25.386667-23.125333 58.453333-35.968 92.842666-36.010667a136.064 136.064 0 0 1 92.842667 36.010667c25.173333-9.472 48.682667-22.826667 69.717333-39.594667a131.285333 131.285333 0 0 1 14.336-96.896 136.106667 136.106667 0 0 1 79.701334-60.928c4.394667-26.197333 4.394667-52.906667 0-79.104l-0.810667-0.426667h0.042667zM513.706667 525.653333a119.466667 119.466667 0 1 1 0-238.933333 119.466667 119.466667 0 0 1 0 238.933333z m0-199.125333a79.658667 79.658667 0 1 0 0 159.36 79.658667 79.658667 0 0 0 0-159.36z" horiz-adv-x="1024" />
</font> </font>

Before

Width:  |  Height:  |  Size: 84 KiB

After

Width:  |  Height:  |  Size: 85 KiB

2
erm.frontend/public/webjars/luckysheet/2.1.13/css/luckysheet.css

File diff suppressed because one or more lines are too long

2
erm.frontend/public/webjars/luckysheet/2.1.13/css/menuSprite.svg

@ -502,4 +502,4 @@
</g><g transform="translate(536,94)"><path fill="#000000" fill-rule="evenodd" d="M11.1984243,12.7314433 C10.1705378,13.2376004 9.01347324,13.51339 7.81008922,13.51339 C3.76079474,13.51339 0.486938477,10.4180495 0.486938477,6.60969321 C0.486938477,5.38242903 0.829564562,4.20636592 1.45265328,3.18078427 C1.16977004,2.84491791 1,2.41529191 1,1.94706351 C1,0.871730025 1.8954305,-1.42108547e-14 3,-1.42108547e-14 C4.1045695,-1.42108547e-14 5,0.871730025 5,1.94706351 C5,3.0129437 4.12024382,3.87878446 3.02908196,3.89392536 C2.52395643,4.68714001 2.23341168,5.61633656 2.23341168,6.60969321 C2.23341168,9.52166659 4.73017526,11.8822874 7.81008922,11.8822874 C8.61187491,11.8822874 9.37414032,11.7223074 10.0631246,11.4342674 C10.0219176,11.2785555 10,11.1153013 10,10.9470635 C10,9.87173003 10.8954305,9 12,9 C13.1045695,9 14,9.87173003 14,10.9470635 C14,12.022397 13.1045695,12.894127 12,12.894127 C11.7149481,12.894127 11.4438245,12.8360715 11.1984243,12.7314433 Z" transform="translate(2 2)"/> </g><g transform="translate(536,94)"><path fill="#000000" fill-rule="evenodd" d="M11.1984243,12.7314433 C10.1705378,13.2376004 9.01347324,13.51339 7.81008922,13.51339 C3.76079474,13.51339 0.486938477,10.4180495 0.486938477,6.60969321 C0.486938477,5.38242903 0.829564562,4.20636592 1.45265328,3.18078427 C1.16977004,2.84491791 1,2.41529191 1,1.94706351 C1,0.871730025 1.8954305,-1.42108547e-14 3,-1.42108547e-14 C4.1045695,-1.42108547e-14 5,0.871730025 5,1.94706351 C5,3.0129437 4.12024382,3.87878446 3.02908196,3.89392536 C2.52395643,4.68714001 2.23341168,5.61633656 2.23341168,6.60969321 C2.23341168,9.52166659 4.73017526,11.8822874 7.81008922,11.8822874 C8.61187491,11.8822874 9.37414032,11.7223074 10.0631246,11.4342674 C10.0219176,11.2785555 10,11.1153013 10,10.9470635 C10,9.87173003 10.8954305,9 12,9 C13.1045695,9 14,9.87173003 14,10.9470635 C14,12.022397 13.1045695,12.894127 12,12.894127 C11.7149481,12.894127 11.4438245,12.8360715 11.1984243,12.7314433 Z" transform="translate(2 2)"/>
</g><g transform="translate(108,144)"><path fill="#000000" fill-rule="evenodd" d="M0,0 L0,1 L6,7 L6,12 L8,11 L8,7 L14,1 L14,0 L0,0 Z M4,3 L10,3 L7,6 L4,3 Z" transform="translate(2 3)"/> </g><g transform="translate(108,144)"><path fill="#000000" fill-rule="evenodd" d="M0,0 L0,1 L6,7 L6,12 L8,11 L8,7 L14,1 L14,0 L0,0 Z M4,3 L10,3 L7,6 L4,3 Z" transform="translate(2 3)"/>
</g><g transform="translate(446,238)"><polygon fill="#000000" fill-rule="evenodd" points="4.75 8.127 1.623 5 .561 6.061 4.75 10.25 13.75 1.25 12.689 .189" transform="translate(2 4)"/> </g><g transform="translate(446,238)"><polygon fill="#000000" fill-rule="evenodd" points="4.75 8.127 1.623 5 .561 6.061 4.75 10.25 13.75 1.25 12.689 .189" transform="translate(2 4)"/>
</g></svg> </g></svg>

Before

Width:  |  Height:  |  Size: 145 KiB

After

Width:  |  Height:  |  Size: 145 KiB

2
erm.frontend/public/webjars/luckysheet/2.1.13/css/sprite38.svg

@ -525,4 +525,4 @@
</g><g transform="translate(18,640)"><path fill="#000000" fill-rule="evenodd" d="M9.01902793,9.72705177 C8.06535219,10.5218555 6.83851442,11 5.5,11 C2.46243388,11 0,8.53756612 0,5.5 C0,2.46243388 2.46243388,0 5.5,0 C8.53756612,0 11,2.46243388 11,5.5 C11,6.83851442 10.5218555,8.06535219 9.72705177,9.01902793 L9.98,9.27 L10.77,9.27 L14.76,13.27 L13.27,14.76 L9.27,10.77 L9.27,9.98 L9.01902793,9.72705177 Z M5.5,9.5 C7.709139,9.5 9.5,7.709139 9.5,5.5 C9.5,3.290861 7.709139,1.5 5.5,1.5 C3.290861,1.5 1.5,3.290861 1.5,5.5 C1.5,7.709139 3.290861,9.5 5.5,9.5 Z M8,6 L6,6 L6,8 L5,8 L5,6 L3,6 L3,5 L5,5 L5,3 L6,3 L6,5 L8,5 L8,6" transform="translate(2 2)"/> </g><g transform="translate(18,640)"><path fill="#000000" fill-rule="evenodd" d="M9.01902793,9.72705177 C8.06535219,10.5218555 6.83851442,11 5.5,11 C2.46243388,11 0,8.53756612 0,5.5 C0,2.46243388 2.46243388,0 5.5,0 C8.53756612,0 11,2.46243388 11,5.5 C11,6.83851442 10.5218555,8.06535219 9.72705177,9.01902793 L9.98,9.27 L10.77,9.27 L14.76,13.27 L13.27,14.76 L9.27,10.77 L9.27,9.98 L9.01902793,9.72705177 Z M5.5,9.5 C7.709139,9.5 9.5,7.709139 9.5,5.5 C9.5,3.290861 7.709139,1.5 5.5,1.5 C3.290861,1.5 1.5,3.290861 1.5,5.5 C1.5,7.709139 3.290861,9.5 5.5,9.5 Z M8,6 L6,6 L6,8 L5,8 L5,6 L3,6 L3,5 L5,5 L5,3 L6,3 L6,5 L8,5 L8,6" transform="translate(2 2)"/>
</g><g transform="translate(58,1038)"><path fill="#000000" fill-rule="evenodd" d="M9.01902793,9.72705177 C8.06535219,10.5218555 6.83851442,11 5.5,11 C2.46243388,11 0,8.53756612 0,5.5 C0,2.46243388 2.46243388,0 5.5,0 C8.53756612,0 11,2.46243388 11,5.5 C11,6.83851442 10.5218555,8.06535219 9.72705177,9.01902793 L9.98,9.27 L10.77,9.27 L14.76,13.27 L13.27,14.76 L9.27,10.77 L9.27,9.98 L9.01902793,9.72705177 Z M5.5,9.5 C7.709139,9.5 9.5,7.709139 9.5,5.5 C9.5,3.290861 7.709139,1.5 5.5,1.5 C3.290861,1.5 1.5,3.290861 1.5,5.5 C1.5,7.709139 3.290861,9.5 5.5,9.5 Z M3,6 L3,5 L8,5 L8,6 L3,6 Z" transform="translate(2 2)"/> </g><g transform="translate(58,1038)"><path fill="#000000" fill-rule="evenodd" d="M9.01902793,9.72705177 C8.06535219,10.5218555 6.83851442,11 5.5,11 C2.46243388,11 0,8.53756612 0,5.5 C0,2.46243388 2.46243388,0 5.5,0 C8.53756612,0 11,2.46243388 11,5.5 C11,6.83851442 10.5218555,8.06535219 9.72705177,9.01902793 L9.98,9.27 L10.77,9.27 L14.76,13.27 L13.27,14.76 L9.27,10.77 L9.27,9.98 L9.01902793,9.72705177 Z M5.5,9.5 C7.709139,9.5 9.5,7.709139 9.5,5.5 C9.5,3.290861 7.709139,1.5 5.5,1.5 C3.290861,1.5 1.5,3.290861 1.5,5.5 C1.5,7.709139 3.290861,9.5 5.5,9.5 Z M3,6 L3,5 L8,5 L8,6 L3,6 Z" transform="translate(2 2)"/>
</g><g transform="translate(58,1020)"><path fill="#000000" fill-rule="evenodd" d="M9.01902793,9.72705177 C8.06535219,10.5218555 6.83851442,11 5.5,11 C2.46243388,11 0,8.53756612 0,5.5 C0,2.46243388 2.46243388,0 5.5,0 C8.53756612,0 11,2.46243388 11,5.5 C11,6.83851442 10.5218555,8.06535219 9.72705177,9.01902793 L9.98,9.27 L10.77,9.27 L14.76,13.27 L13.27,14.76 L9.27,10.77 L9.27,9.98 L9.01902793,9.72705177 Z M5.5,9.5 C7.709139,9.5 9.5,7.709139 9.5,5.5 C9.5,3.290861 7.709139,1.5 5.5,1.5 C3.290861,1.5 1.5,3.290861 1.5,5.5 C1.5,7.709139 3.290861,9.5 5.5,9.5 Z M8,6 L6,6 L6,8 L5,8 L5,6 L3,6 L3,5 L5,5 L5,3 L6,3 L6,5 L8,5 L8,6" transform="translate(2 2)"/> </g><g transform="translate(58,1020)"><path fill="#000000" fill-rule="evenodd" d="M9.01902793,9.72705177 C8.06535219,10.5218555 6.83851442,11 5.5,11 C2.46243388,11 0,8.53756612 0,5.5 C0,2.46243388 2.46243388,0 5.5,0 C8.53756612,0 11,2.46243388 11,5.5 C11,6.83851442 10.5218555,8.06535219 9.72705177,9.01902793 L9.98,9.27 L10.77,9.27 L14.76,13.27 L13.27,14.76 L9.27,10.77 L9.27,9.98 L9.01902793,9.72705177 Z M5.5,9.5 C7.709139,9.5 9.5,7.709139 9.5,5.5 C9.5,3.290861 7.709139,1.5 5.5,1.5 C3.290861,1.5 1.5,3.290861 1.5,5.5 C1.5,7.709139 3.290861,9.5 5.5,9.5 Z M8,6 L6,6 L6,8 L5,8 L5,6 L3,6 L3,5 L5,5 L5,3 L6,3 L6,5 L8,5 L8,6" transform="translate(2 2)"/>
</g></svg> </g></svg>

Before

Width:  |  Height:  |  Size: 150 KiB

After

Width:  |  Height:  |  Size: 150 KiB

10
erm.frontend/public/webjars/luckysheet/2.1.13/demoData/demoFeature.js

@ -5,7 +5,7 @@
// language // language
function language(params) { function language(params) {
var lang = navigator.language||navigator.userLanguage;//常规浏览器语言和IE浏览器 var lang = navigator.language||navigator.userLanguage;//常规浏览器语言和IE浏览器
lang = lang.substr(0, 2);//截取lang前2位字符 lang = lang.substr(0, 2);//截取lang前2位字符
@ -19,7 +19,7 @@
document.querySelector("body").insertAdjacentHTML('beforeend', '<a id="container" href="'+ link +'" target="_blank" style="z-index:2;width:50px;height:50px;line-height:50px;position:fixed;right:40px;bottom:86px;border-radius:50px;cursor:pointer;background:rgb(71,133,249);color:#fff;text-align:center;text-decoration:none;">'+ text +'</a>'); document.querySelector("body").insertAdjacentHTML('beforeend', '<a id="container" href="'+ link +'" target="_blank" style="z-index:2;width:50px;height:50px;line-height:50px;position:fixed;right:40px;bottom:86px;border-radius:50px;cursor:pointer;background:rgb(71,133,249);color:#fff;text-align:center;text-decoration:none;">'+ text +'</a>');
} }
supportButton() supportButton()
/** /**
@ -27,7 +27,7 @@
*/ */
function getRequest() { function getRequest() {
var vars = {}; var vars = {};
var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi,
function(m,key,value) { function(m,key,value) {
vars[key] = value; vars[key] = value;
}); });
@ -38,5 +38,5 @@
language:language, language:language,
getRequest:getRequest getRequest:getRequest
} }
})() })()

2
erm.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetCell.js

@ -1575,4 +1575,4 @@ window.sheetCell = {
"scrollLeft": 0, "scrollLeft": 0,
"scrollTop": 0 "scrollTop": 0
} }
// export default sheetCell // export default sheetCell

2
erm.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetChart.js

@ -4915,4 +4915,4 @@ window.sheetChart = {
}] }]
} }
// export default sheetChart // export default sheetChart

2
erm.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetComment.js

@ -64,4 +64,4 @@ window.sheetComment = {
"scrollTop": 0 "scrollTop": 0
} }
// export default sheetComment; // export default sheetComment;

2
erm.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetConditionFormat.js

@ -6538,4 +6538,4 @@ window.sheetConditionFormat = {
}] }]
} }
// export default sheetConditionFormat; // export default sheetConditionFormat;

2
erm.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetDataVerification.js

@ -576,4 +576,4 @@ window.sheetDataVerification = {
} }
} }
} }
// export default sheetDataVerification; // export default sheetDataVerification;

2
erm.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetFormula.js

@ -6597,4 +6597,4 @@
"frozen": {"type":"row"} "frozen": {"type":"row"}
} }
// export default sheetFormula // export default sheetFormula

2
erm.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetPicture.js

@ -156,4 +156,4 @@ window.sheetPicture = {
} }
} }
// export default sheetPicture; // export default sheetPicture;

2
erm.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetPivotTable.js

@ -186,4 +186,4 @@ window.sheetPivotTable = {
} }
} }
// export default sheetPivotTable; // export default sheetPivotTable;

2
erm.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetPivotTableData.js

@ -738,4 +738,4 @@ window.sheetPivotTableData = {
"scrollTop": 0 "scrollTop": 0
} }
// export default sheetPivotTableData; // export default sheetPivotTableData;

2
erm.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetSparkline.js

@ -7063,4 +7063,4 @@ window.sheetSparkline = {
"luckysheet_alternateformat_save": [] "luckysheet_alternateformat_save": []
} }
// export default sheetSparkline; // export default sheetSparkline;

2
erm.frontend/public/webjars/luckysheet/2.1.13/demoData/sheetTable.js

@ -1065,4 +1065,4 @@ window.sheetTable = {
}] }]
} }
// export default sheetTable; // export default sheetTable;

2
erm.frontend/public/webjars/luckysheet/2.1.13/expendPlugins/chart/chartmix.css

@ -1 +1 @@
.luckysheet-datavisual-quick-menu{width:120px;overflow:auto;margin-top:15px}.luckysheet-datavisual-quick-menu::-webkit-scrollbar{display:none}.luckysheet-datavisual-quick-menu>div{text-align:left;padding:4px 4px;border-right:3px solid #fff;color:#777;cursor:pointer;line-height:1.4em;word-wrap:break-word}.luckysheet-datavisual-quick-menu>div:hover{color:#000}.luckysheet-datavisual-quick-menu>div i{width:15px}.luckysheet-datavisual-quick-menu>div:hover i{color:#ff7e7e}.luckysheet-datavisual-quick-menu>div.luckysheet-datavisual-quick-menu-active{border-right:3px solid #ff7e7e;color:#000;font-weight:700}.luckysheet-datavisual-quick-menu>div.luckysheet-datavisual-quick-menu-active:hover i{color:#000}.luckysheet-datavisual-quick-range{padding:5px 0}.luckysheet-datavisual-range-container{background:#fff;border:1px solid #d9d9d9;border-top:1px solid silver;min-width:20px;width:100%;max-width:200px;display:inline-block}.luckysheet-datavisual-range-container-focus{border:1px solid #4d90fe;box-shadow:inset 0 1px 2px rgba(0,0,0,.3);outline:none}.luckysheet-datavisual-range-input,.luckysheet-datavisual-range-input:focus{background:transparent!important;border:none!important;box-sizing:border-box;box-shadow:none;height:25px;margin:0;outline:none!important;padding:1px 8px!important;width:100%}.luckysheet-datavisual-range-button-container{overflow:hidden;padding:0 0 0 8px;text-align:right;width:21px}.luckysheet-datavisual-range-button-container div{padding:2px 10px 0 10px;font-size:18px;cursor:pointer;color:#6598f3}.luckysheet-datavisual-range-button-container div:hover{color:#ff7e7e}.luckysheet-datavisual-quick-m{margin-top:5px;min-height:500px;top:50px;font-size:12px}.luckysheet-datavisual-quick-list{left:110px;right:0;bottom:0;top:80px;position:absolute;overflow:auto;border-top:1px solid #e5e5e5;padding:5px 3px 35px 3px}.luckysheet-datavisual-quick-list-title{padding:4px 6px;background:#e5e5e5;margin-top:10px}.luckysheet-datavisual-quick-list-ul{overflow:hidden}.luckysheet-datavisual-quick-list-item{display:inline-block;margin:5px 8px;border:1px solid #dadada;width:100px;height:80px}.luckysheet-datavisual-quick-list-item:hover{border:1px solid #ff7e7e;box-shadow:0 0 20px #ff7e7e}.luckysheet-datavisual-quick-list-item img{display:inline-block;width:100px;height:80px}.luckysheet-datavisual-quick-list-item-active{border:1px solid #6598f3;box-shadow:0 0 20px #6598f3}.chart-base-slider .el-slider__runway.show-input{margin-right:72px}.chart-base-slider .el-slider__input.el-input-number--mini{width:56px}.chart-base-slider .input_content{margin:6px 0 0 5px}.title{font-weight:700}.el-row{font-size:12px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chartSetting{width:100%;height:100%} .luckysheet-datavisual-quick-menu{width:120px;overflow:auto;margin-top:15px}.luckysheet-datavisual-quick-menu::-webkit-scrollbar{display:none}.luckysheet-datavisual-quick-menu>div{text-align:left;padding:4px 4px;border-right:3px solid #fff;color:#777;cursor:pointer;line-height:1.4em;word-wrap:break-word}.luckysheet-datavisual-quick-menu>div:hover{color:#000}.luckysheet-datavisual-quick-menu>div i{width:15px}.luckysheet-datavisual-quick-menu>div:hover i{color:#ff7e7e}.luckysheet-datavisual-quick-menu>div.luckysheet-datavisual-quick-menu-active{border-right:3px solid #ff7e7e;color:#000;font-weight:700}.luckysheet-datavisual-quick-menu>div.luckysheet-datavisual-quick-menu-active:hover i{color:#000}.luckysheet-datavisual-quick-range{padding:5px 0}.luckysheet-datavisual-range-container{background:#fff;border:1px solid #d9d9d9;border-top:1px solid silver;min-width:20px;width:100%;max-width:200px;display:inline-block}.luckysheet-datavisual-range-container-focus{border:1px solid #4d90fe;box-shadow:inset 0 1px 2px rgba(0,0,0,.3);outline:none}.luckysheet-datavisual-range-input,.luckysheet-datavisual-range-input:focus{background:transparent!important;border:none!important;box-sizing:border-box;box-shadow:none;height:25px;margin:0;outline:none!important;padding:1px 8px!important;width:100%}.luckysheet-datavisual-range-button-container{overflow:hidden;padding:0 0 0 8px;text-align:right;width:21px}.luckysheet-datavisual-range-button-container div{padding:2px 10px 0 10px;font-size:18px;cursor:pointer;color:#6598f3}.luckysheet-datavisual-range-button-container div:hover{color:#ff7e7e}.luckysheet-datavisual-quick-m{margin-top:5px;min-height:500px;top:50px;font-size:12px}.luckysheet-datavisual-quick-list{left:110px;right:0;bottom:0;top:80px;position:absolute;overflow:auto;border-top:1px solid #e5e5e5;padding:5px 3px 35px 3px}.luckysheet-datavisual-quick-list-title{padding:4px 6px;background:#e5e5e5;margin-top:10px}.luckysheet-datavisual-quick-list-ul{overflow:hidden}.luckysheet-datavisual-quick-list-item{display:inline-block;margin:5px 8px;border:1px solid #dadada;width:100px;height:80px}.luckysheet-datavisual-quick-list-item:hover{border:1px solid #ff7e7e;box-shadow:0 0 20px #ff7e7e}.luckysheet-datavisual-quick-list-item img{display:inline-block;width:100px;height:80px}.luckysheet-datavisual-quick-list-item-active{border:1px solid #6598f3;box-shadow:0 0 20px #6598f3}.chart-base-slider .el-slider__runway.show-input{margin-right:72px}.chart-base-slider .el-slider__input.el-input-number--mini{width:56px}.chart-base-slider .input_content{margin:6px 0 0 5px}.title{font-weight:700}.el-row{font-size:12px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.chartSetting{width:100%;height:100%}

2
erm.frontend/public/webjars/luckysheet/2.1.13/expendPlugins/chart/chartmix.umd.min.js

File diff suppressed because one or more lines are too long

1418
erm.frontend/public/webjars/luckysheet/2.1.13/fonts/fontawesome-webfont.svg

File diff suppressed because it is too large

Before

Width:  |  Height:  |  Size: 433 KiB

After

Width:  |  Height:  |  Size: 434 KiB

18
erm.frontend/public/webjars/luckysheet/2.1.13/index.html

File diff suppressed because one or more lines are too long

300
erm.frontend/public/webjars/luckysheet/2.1.13/luckysheet.umd.js

File diff suppressed because one or more lines are too long

2
erm.frontend/public/webjars/luckysheet/2.1.13/plugins/css/pluginsCss.css

File diff suppressed because one or more lines are too long

2
erm.frontend/public/webjars/luckysheet/2.1.13/plugins/js/plugin.js

File diff suppressed because one or more lines are too long

2
erm.frontend/public/webjars/luckysheet/2.1.13/plugins/plugins.css

File diff suppressed because one or more lines are too long

4
erm.frontend/tailwind.config.cjs

@ -5,7 +5,7 @@ module.exports = {
], ],
theme: { theme: {
extend: { extend: {
}, },
screens: { screens: {
"xs": {"min": "0px", "max": "599px"}, "xs": {"min": "0px", "max": "599px"},
@ -16,4 +16,4 @@ module.exports = {
}, },
}, },
plugins: [], plugins: [],
} }

2
erm.frontend/tsconfig.json

@ -18,4 +18,4 @@
}, },
"jsxImportSource": "vue" "jsxImportSource": "vue"
} }
} }

2
erm.frontend/webpack.config.common.cjs

@ -123,7 +123,7 @@ module.exports = {
toType: 'dir', toType: 'dir',
filter: async (resourcePath) => { filter: async (resourcePath) => {
// 不复制 index.html 因为 index.html 已经由 HtmlWebpackPlugin 插件生成了 // 不复制 index.html 因为 index.html 已经由 HtmlWebpackPlugin 插件生成了
if (resourcePath.endsWith('index.html') || resourcePath.endsWith('.DS_Store')) { if (resourcePath.endsWith('/public/index.html') || resourcePath.endsWith('.DS_Store')) {
return false; return false;
} }
return true; return true;

1
erm.frontend/webpack.config.mf.cjs

@ -56,7 +56,6 @@ module.exports = {
'platform-core': { requiredVersion: deps['platform-core'], singleton: true }, 'platform-core': { requiredVersion: deps['platform-core'], singleton: true },
'quasar': { requiredVersion: deps['quasar'], singleton: true }, 'quasar': { requiredVersion: deps['quasar'], singleton: true },
'vue': { requiredVersion: deps['vue'], singleton: true }, 'vue': { requiredVersion: deps['vue'], singleton: true },
'vue-codemirror6': { requiredVersion: deps['vue-codemirror6'], singleton: true },
'vue-dompurify-html':{ requiredVersion: deps['vue-dompurify-html'], singleton: true }, 'vue-dompurify-html':{ requiredVersion: deps['vue-dompurify-html'], singleton: true },
'vue-i18n': { requiredVersion: deps['vue-i18n'], singleton: true }, 'vue-i18n': { requiredVersion: deps['vue-i18n'], singleton: true },
'vue-router': { requiredVersion: deps['vue-router'], singleton: true }, 'vue-router': { requiredVersion: deps['vue-router'], singleton: true },

4
erm.frontend/webpack.env.build.cjs

@ -38,7 +38,7 @@ module.exports = merge(common, mf, {
}, },
'codemirror':{ 'codemirror':{
name: 'codemirror', name: 'codemirror',
test: /[\\/]node_modules[\\/](codemirror|vue-codemirror6|@codemirror[\\/]autocomplete|@codemirror[\\/]commands|@codemirror[\\/]lang-html|@codemirror[\\/]lang-java|@codemirror[\\/]lang-javascript|@codemirror[\\/]lang-json|@codemirror[\\/]lang-sql|@codemirror[\\/]lang-xml|@codemirror[\\/]language|@codemirror[\\/]search|@codemirror[\\/]state|@codemirror[\\/]view)[\\/]/, test: /[\\/]node_modules[\\/](codemirror|@codemirror[\\/]autocomplete|@codemirror[\\/]commands|@codemirror[\\/]lang-html|@codemirror[\\/]lang-java|@codemirror[\\/]lang-javascript|@codemirror[\\/]lang-json|@codemirror[\\/]lang-sql|@codemirror[\\/]lang-xml|@codemirror[\\/]language|@codemirror[\\/]search|@codemirror[\\/]state|@codemirror[\\/]view)[\\/]/,
priority: 20, priority: 20,
chunks: 'all', chunks: 'all',
enforce: true enforce: true
@ -80,4 +80,4 @@ module.exports = merge(common, mf, {
} }
} }
}, },
}); });

4
gradle.properties

@ -36,9 +36,9 @@ application_version=1.0.0
# platform # platform
########################################################### ###########################################################
platform_group=io.sc platform_group=io.sc
platform_version=8.1.28 platform_version=8.1.29
platform_plugin_version=8.1.13 platform_plugin_version=8.1.13
platform_core_frontend_version=8.1.149 platform_core_frontend_version=8.1.152
########################################################### ###########################################################
# dependencies version # dependencies version

204
io.sc.engine.mv.frontend/package.json

@ -1,105 +1,103 @@
{ {
"name": "io.sc.engine.mv.frontend", "name": "io.sc.engine.mv.frontend",
"version": "8.1.28", "version": "8.1.29",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [ "keywords": [],
"author": "",
], "license": "ISC",
"author": "", "scripts": {
"license": "ISC", "dev": "nodemon",
"scripts": { "serve": "node ./util-components-generator.cjs && cross-env NODE_ENV=development webpack serve --config webpack.env.serve.cjs",
"dev": "nodemon", "build": "node ./util-components-generator.cjs && cross-env NODE_ENV=development webpack --config webpack.env.build.cjs",
"serve": "node ./util-components-generator.cjs && cross-env NODE_ENV=development webpack serve --config webpack.env.serve.cjs", "prod": "node ./util-components-generator.cjs && cross-env NODE_ENV=production webpack --config webpack.env.prod.cjs",
"build": "node ./util-components-generator.cjs && cross-env NODE_ENV=development webpack --config webpack.env.build.cjs", "sync": "platform sync",
"prod": "node ./util-components-generator.cjs && cross-env NODE_ENV=production webpack --config webpack.env.prod.cjs", "clean": "rm -rf ./node_modules && rm -rf pnpm-lock.yaml"
"sync": "platform sync", },
"clean": "rm -rf ./node_modules && rm -rf pnpm-lock.yaml" "engines": {
}, "node": ">=18",
"engines": { "pnpm": ">=7"
"node": ">=18", },
"pnpm": ">=7" "publishConfig": {
}, "registry": "http://nexus.sc.io:8000/repository/npm-releases/",
"publishConfig": { "access": "public"
"registry": "http://nexus.sc.io:8000/repository/npm-releases/", },
"access": "public" "devDependencies": {
}, "@babel/core": "7.23.7",
"devDependencies": { "@babel/preset-env": "7.23.7",
"@babel/core": "7.23.7", "@babel/preset-typescript": "7.23.3",
"@babel/preset-env": "7.23.7", "@babel/plugin-transform-class-properties": "7.23.3",
"@babel/preset-typescript": "7.23.3", "@babel/plugin-transform-object-rest-spread": "7.23.4",
"@babel/plugin-transform-class-properties": "7.23.3", "@quasar/app-webpack": "3.12.1",
"@babel/plugin-transform-object-rest-spread": "7.23.4", "@quasar/cli": "2.3.0",
"@quasar/app-webpack": "3.12.1", "@types/mockjs": "1.0.10",
"@quasar/cli": "2.3.0", "@types/node": "20.10.6",
"@types/mockjs": "1.0.10", "@typescript-eslint/eslint-plugin": "6.17.0",
"@types/node": "20.10.6", "@typescript-eslint/parser": "6.17.0",
"@typescript-eslint/eslint-plugin": "6.17.0", "@vue/compiler-sfc": "3.4.3",
"@typescript-eslint/parser": "6.17.0", "@webpack-cli/serve": "2.0.5",
"@vue/compiler-sfc": "3.4.3", "autoprefixer": "10.4.16",
"@webpack-cli/serve": "2.0.5", "babel-loader": "9.1.3",
"autoprefixer": "10.4.16", "clean-webpack-plugin": "4.0.0",
"babel-loader": "9.1.3", "copy-webpack-plugin": "11.0.0",
"clean-webpack-plugin": "4.0.0", "cross-env": "7.0.3",
"copy-webpack-plugin": "11.0.0", "css-loader": "6.8.1",
"cross-env": "7.0.3", "eslint": "8.56.0",
"css-loader": "6.8.1", "eslint-config-prettier": "9.1.0",
"eslint": "8.56.0", "eslint-plugin-prettier": "5.1.2",
"eslint-config-prettier": "9.1.0", "eslint-plugin-vue": "9.19.2",
"eslint-plugin-prettier": "5.1.2", "eslint-webpack-plugin": "4.0.1",
"eslint-plugin-vue": "9.19.2", "html-webpack-plugin": "5.6.0",
"eslint-webpack-plugin": "4.0.1", "json5": "2.2.3",
"html-webpack-plugin": "5.6.0", "mini-css-extract-plugin": "2.7.6",
"json5": "2.2.3", "nodemon": "3.0.2",
"mini-css-extract-plugin": "2.7.6", "postcss": "8.4.32",
"nodemon": "3.0.2", "postcss-import": "16.0.0",
"postcss": "8.4.32", "postcss-loader": "7.3.4",
"postcss-import": "16.0.0", "postcss-preset-env": "9.3.0",
"postcss-loader": "7.3.4", "prettier": "3.1.1",
"postcss-preset-env": "9.3.0", "sass": "1.69.7",
"prettier": "3.1.1", "sass-loader": "13.3.3",
"sass": "1.69.7", "typescript": "5.3.3",
"sass-loader": "13.3.3", "vue-loader": "17.4.2",
"typescript": "5.3.3", "webpack": "5.89.0",
"vue-loader": "17.4.2", "webpack-bundle-analyzer": "4.10.1",
"webpack": "5.89.0", "webpack-cli": "5.1.4",
"webpack-bundle-analyzer": "4.10.1", "webpack-dev-server": "4.15.1",
"webpack-cli": "5.1.4", "webpack-merge": "5.10.0",
"webpack-dev-server": "4.15.1", "@vue/babel-plugin-jsx": "1.1.5"
"webpack-merge": "5.10.0", },
"@vue/babel-plugin-jsx": "1.1.5" "dependencies": {
}, "@quasar/extras": "1.16.9",
"dependencies": { "@vueuse/core": "10.7.1",
"@quasar/extras": "1.16.9", "axios": "1.6.3",
"@vueuse/core": "10.7.1", "dayjs": "1.11.10",
"axios": "1.6.3", "echarts": "5.4.3",
"dayjs": "1.11.10", "exceljs": "4.4.0",
"echarts": "5.4.3", "file-saver": "2.0.5",
"exceljs": "4.4.0", "luckyexcel": "1.0.1",
"file-saver": "2.0.5", "mockjs": "1.1.0",
"luckyexcel": "1.0.1", "pinia": "2.1.7",
"mockjs": "1.1.0", "platform-core": "8.1.152",
"pinia": "2.1.7", "quasar": "2.14.5",
"platform-core": "8.1.149", "tailwindcss": "3.4.0",
"quasar": "2.14.2", "vue": "3.4.3",
"tailwindcss": "3.4.0", "vue-dompurify-html": "5.0.1",
"vue": "3.4.3", "vue-i18n": "9.8.0",
"vue-dompurify-html": "5.0.1", "vue-router": "4.2.5",
"vue-i18n": "9.8.0", "@codemirror/autocomplete": "6.11.1",
"vue-router": "4.2.5", "@codemirror/commands": "6.3.3",
"@codemirror/autocomplete": "6.11.1", "@codemirror/lang-html": "6.4.7",
"@codemirror/commands": "6.3.3", "@codemirror/lang-java": "6.0.1",
"@codemirror/lang-html": "6.4.7", "@codemirror/lang-javascript": "6.2.1",
"@codemirror/lang-java": "6.0.1", "@codemirror/lang-json": "6.0.1",
"@codemirror/lang-javascript": "6.2.1", "@codemirror/lang-sql": "6.5.4",
"@codemirror/lang-json": "6.0.1", "@codemirror/lang-xml": "6.0.2",
"@codemirror/lang-sql": "6.5.4", "@codemirror/language": "6.10.0",
"@codemirror/lang-xml": "6.0.2", "@codemirror/search": "6.5.5",
"@codemirror/language": "6.10.0", "@codemirror/state": "6.4.0",
"@codemirror/search": "6.5.5", "@codemirror/view": "6.23.0",
"@codemirror/state": "6.4.0", "codemirror": "6.0.1",
"@codemirror/view": "6.23.0", "vue-codemirror6": "1.2.0"
"codemirror": "6.0.1", }
"vue-codemirror6": "1.2.0"
}
} }

44
io.sc.engine.mv.frontend/src/components/index.ts

@ -2,30 +2,30 @@
* , * ,
*/ */
import result from '@/views/result/Result.vue'; import component_engine_mv_result from '@/views/result/Result.vue';
import sample from '@/views/sample/Sample.vue'; import component_engine_mv_sample from '@/views/sample/Sample.vue';
import cutOffPoint from '@/views/config/cutOffPoint.vue'; import component_engine_mv_config_cutOffPoint from '@/views/config/cutOffPoint.vue';
import threshold from '@/views/config/threshold.vue'; import component_engine_mv_config_threshold from '@/views/config/threshold.vue';
import binomial from '@/views/config/binomial.vue'; import component_engine_mv_config_binomial from '@/views/config/binomial.vue';
import chiSquare from '@/views/config/chiSquare.vue'; import component_engine_mv_config_chiSquare from '@/views/config/chiSquare.vue';
import model from '@/views/config/model.vue'; import component_engine_mv_config_model from '@/views/config/model.vue';
import distribution from '@/views/config/distribution.vue'; import component_engine_mv_config_distribution from '@/views/config/distribution.vue';
import scale from '@/views/config/scale.vue'; import component_engine_mv_config_scale from '@/views/config/scale.vue';
import dataExtractor from '@/views/config/dataExtractor.vue'; import component_engine_mv_config_dataExtractor from '@/views/config/dataExtractor.vue';
import executor from '@/views/config/executor.vue'; import component_engine_mv_config_executor from '@/views/config/executor.vue';
const localComponents = { const localComponents = {
'component.engine.mv.result': result, 'component.engine.mv.result': component_engine_mv_result,
'component.engine.mv.sample': sample, 'component.engine.mv.sample': component_engine_mv_sample,
'component.engine.mv.config.cutOffPoint': cutOffPoint, 'component.engine.mv.config.cutOffPoint': component_engine_mv_config_cutOffPoint,
'component.engine.mv.config.threshold': threshold, 'component.engine.mv.config.threshold': component_engine_mv_config_threshold,
'component.engine.mv.config.binomial': binomial, 'component.engine.mv.config.binomial': component_engine_mv_config_binomial,
'component.engine.mv.config.chiSquare': chiSquare, 'component.engine.mv.config.chiSquare': component_engine_mv_config_chiSquare,
'component.engine.mv.config.model': model, 'component.engine.mv.config.model': component_engine_mv_config_model,
'component.engine.mv.config.distribution': distribution, 'component.engine.mv.config.distribution': component_engine_mv_config_distribution,
'component.engine.mv.config.scale': scale, 'component.engine.mv.config.scale': component_engine_mv_config_scale,
'component.engine.mv.config.dataExtractor': dataExtractor, 'component.engine.mv.config.dataExtractor': component_engine_mv_config_dataExtractor,
'component.engine.mv.config.executor': executor, 'component.engine.mv.config.executor': component_engine_mv_config_executor,
}; };
export default localComponents; export default localComponents;

6
io.sc.engine.mv.frontend/util-components-generator.cjs

@ -13,7 +13,7 @@ content +='/**\n';
content +=' * 此文件为自动生成文件,请勿修改\n'; content +=' * 此文件为自动生成文件,请勿修改\n';
content +=' */\n\n'; content +=' */\n\n';
for(const route of routesJson){ for(const route of routesJson){
const componentName =route.component.substring(route.component.lastIndexOf('.')+1); const componentName =route.component.replaceAll('.','_');
const componentPath =route.componentPath; const componentPath =route.componentPath;
content +=`import ${componentName} from '${componentPath}';\n`; content +=`import ${componentName} from '${componentPath}';\n`;
} }
@ -21,7 +21,7 @@ for(const route of routesJson){
content +='\n'; content +='\n';
content +='const localComponents = { \n'; content +='const localComponents = { \n';
for(const route of routesJson){ for(const route of routesJson){
const componentName =route.component.substring(route.component.lastIndexOf('.')+1); const componentName =route.component.replaceAll('.','_');
content +=`'${route.component}': ${componentName},\n`; content +=`'${route.component}': ${componentName},\n`;
} }
content +='}\n\n'; content +='}\n\n';
@ -29,4 +29,4 @@ content +='export default localComponents;\n';
fs.writeFileSync('./src/components/index.ts', content); fs.writeFileSync('./src/components/index.ts', content);
console.info('components generated!'); console.info('components generated!');

2
io.sc.engine.mv.frontend/webpack.config.common.cjs

@ -123,7 +123,7 @@ module.exports = {
toType: 'dir', toType: 'dir',
filter: async (resourcePath) => { filter: async (resourcePath) => {
// 不复制 index.html 因为 index.html 已经由 HtmlWebpackPlugin 插件生成了 // 不复制 index.html 因为 index.html 已经由 HtmlWebpackPlugin 插件生成了
if (resourcePath.endsWith('index.html') || resourcePath.endsWith('.DS_Store')) { if (resourcePath.endsWith('/public/index.html') || resourcePath.endsWith('.DS_Store')) {
return false; return false;
} }
return true; return true;

3
io.sc.engine.mv.frontend/webpack.config.mf.cjs

@ -2,7 +2,7 @@
* webpack module federation 配置 * webpack module federation 配置
*/ */
const fs = require('fs'); // 文件读取 const fs = require('fs'); // 文件读取
const Json5 =require('json5'); // json5 const Json5 =require('json5'); // json5
const { ModuleFederationPlugin } = require('webpack').container; // webpack 模块联邦插件 const { ModuleFederationPlugin } = require('webpack').container; // webpack 模块联邦插件
const packageJson = require('./package.json'); // package.json const packageJson = require('./package.json'); // package.json
const projectName =packageJson.name; // 项目名称 const projectName =packageJson.name; // 项目名称
@ -56,7 +56,6 @@ module.exports = {
'platform-core': { requiredVersion: deps['platform-core'], singleton: true }, 'platform-core': { requiredVersion: deps['platform-core'], singleton: true },
'quasar': { requiredVersion: deps['quasar'], singleton: true }, 'quasar': { requiredVersion: deps['quasar'], singleton: true },
'vue': { requiredVersion: deps['vue'], singleton: true }, 'vue': { requiredVersion: deps['vue'], singleton: true },
'vue-codemirror6': { requiredVersion: deps['vue-codemirror6'], singleton: true },
'vue-dompurify-html':{ requiredVersion: deps['vue-dompurify-html'], singleton: true }, 'vue-dompurify-html':{ requiredVersion: deps['vue-dompurify-html'], singleton: true },
'vue-i18n': { requiredVersion: deps['vue-i18n'], singleton: true }, 'vue-i18n': { requiredVersion: deps['vue-i18n'], singleton: true },
'vue-router': { requiredVersion: deps['vue-router'], singleton: true }, 'vue-router': { requiredVersion: deps['vue-router'], singleton: true },

4
io.sc.engine.mv.frontend/webpack.env.build.cjs

@ -38,7 +38,7 @@ module.exports = merge(common, mf, {
}, },
'codemirror':{ 'codemirror':{
name: 'codemirror', name: 'codemirror',
test: /[\\/]node_modules[\\/](codemirror|vue-codemirror6|@codemirror[\\/]autocomplete|@codemirror[\\/]commands|@codemirror[\\/]lang-html|@codemirror[\\/]lang-java|@codemirror[\\/]lang-javascript|@codemirror[\\/]lang-json|@codemirror[\\/]lang-sql|@codemirror[\\/]lang-xml|@codemirror[\\/]language|@codemirror[\\/]search|@codemirror[\\/]state|@codemirror[\\/]view)[\\/]/, test: /[\\/]node_modules[\\/](codemirror|@codemirror[\\/]autocomplete|@codemirror[\\/]commands|@codemirror[\\/]lang-html|@codemirror[\\/]lang-java|@codemirror[\\/]lang-javascript|@codemirror[\\/]lang-json|@codemirror[\\/]lang-sql|@codemirror[\\/]lang-xml|@codemirror[\\/]language|@codemirror[\\/]search|@codemirror[\\/]state|@codemirror[\\/]view)[\\/]/,
priority: 20, priority: 20,
chunks: 'all', chunks: 'all',
enforce: true enforce: true
@ -80,4 +80,4 @@ module.exports = merge(common, mf, {
} }
} }
}, },
}); });

2
io.sc.engine.rule.core/src/main/java/io/sc/engine/rule/core/enums/ProcessorType.java

@ -2,8 +2,6 @@ package io.sc.engine.rule.core.enums;
/** /**
* 处理器类型 * 处理器类型
* @author wangshaoping
*
*/ */
public enum ProcessorType { public enum ProcessorType {
EMPTY, //空操作 EMPTY, //空操作

204
io.sc.engine.rule.frontend/package.json

@ -1,105 +1,103 @@
{ {
"name": "io.sc.engine.rule.frontend", "name": "io.sc.engine.rule.frontend",
"version": "8.1.28", "version": "8.1.29",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [ "keywords": [],
"author": "",
], "license": "ISC",
"author": "", "scripts": {
"license": "ISC", "dev": "nodemon",
"scripts": { "serve": "node ./util-components-generator.cjs && cross-env NODE_ENV=development webpack serve --config webpack.env.serve.cjs",
"dev": "nodemon", "build": "node ./util-components-generator.cjs && cross-env NODE_ENV=development webpack --config webpack.env.build.cjs",
"serve": "node ./util-components-generator.cjs && cross-env NODE_ENV=development webpack serve --config webpack.env.serve.cjs", "prod": "node ./util-components-generator.cjs && cross-env NODE_ENV=production webpack --config webpack.env.prod.cjs",
"build": "node ./util-components-generator.cjs && cross-env NODE_ENV=development webpack --config webpack.env.build.cjs", "sync": "platform sync",
"prod": "node ./util-components-generator.cjs && cross-env NODE_ENV=production webpack --config webpack.env.prod.cjs", "clean": "rm -rf ./node_modules && rm -rf pnpm-lock.yaml"
"sync": "platform sync", },
"clean": "rm -rf ./node_modules && rm -rf pnpm-lock.yaml" "engines": {
}, "node": ">=18",
"engines": { "pnpm": ">=7"
"node": ">=18", },
"pnpm": ">=7" "publishConfig": {
}, "registry": "http://nexus.sc.io:8000/repository/npm-releases/",
"publishConfig": { "access": "public"
"registry": "http://nexus.sc.io:8000/repository/npm-releases/", },
"access": "public" "devDependencies": {
}, "@babel/core": "7.23.7",
"devDependencies": { "@babel/preset-env": "7.23.7",
"@babel/core": "7.23.7", "@babel/preset-typescript": "7.23.3",
"@babel/preset-env": "7.23.7", "@babel/plugin-transform-class-properties": "7.23.3",
"@babel/preset-typescript": "7.23.3", "@babel/plugin-transform-object-rest-spread": "7.23.4",
"@babel/plugin-transform-class-properties": "7.23.3", "@quasar/app-webpack": "3.12.1",
"@babel/plugin-transform-object-rest-spread": "7.23.4", "@quasar/cli": "2.3.0",
"@quasar/app-webpack": "3.12.1", "@types/mockjs": "1.0.10",
"@quasar/cli": "2.3.0", "@types/node": "20.10.6",
"@types/mockjs": "1.0.10", "@typescript-eslint/eslint-plugin": "6.17.0",
"@types/node": "20.10.6", "@typescript-eslint/parser": "6.17.0",
"@typescript-eslint/eslint-plugin": "6.17.0", "@vue/compiler-sfc": "3.4.3",
"@typescript-eslint/parser": "6.17.0", "@webpack-cli/serve": "2.0.5",
"@vue/compiler-sfc": "3.4.3", "autoprefixer": "10.4.16",
"@webpack-cli/serve": "2.0.5", "babel-loader": "9.1.3",
"autoprefixer": "10.4.16", "clean-webpack-plugin": "4.0.0",
"babel-loader": "9.1.3", "copy-webpack-plugin": "11.0.0",
"clean-webpack-plugin": "4.0.0", "cross-env": "7.0.3",
"copy-webpack-plugin": "11.0.0", "css-loader": "6.8.1",
"cross-env": "7.0.3", "eslint": "8.56.0",
"css-loader": "6.8.1", "eslint-config-prettier": "9.1.0",
"eslint": "8.56.0", "eslint-plugin-prettier": "5.1.2",
"eslint-config-prettier": "9.1.0", "eslint-plugin-vue": "9.19.2",
"eslint-plugin-prettier": "5.1.2", "eslint-webpack-plugin": "4.0.1",
"eslint-plugin-vue": "9.19.2", "html-webpack-plugin": "5.6.0",
"eslint-webpack-plugin": "4.0.1", "json5": "2.2.3",
"html-webpack-plugin": "5.6.0", "mini-css-extract-plugin": "2.7.6",
"json5": "2.2.3", "nodemon": "3.0.2",
"mini-css-extract-plugin": "2.7.6", "postcss": "8.4.32",
"nodemon": "3.0.2", "postcss-import": "16.0.0",
"postcss": "8.4.32", "postcss-loader": "7.3.4",
"postcss-import": "16.0.0", "postcss-preset-env": "9.3.0",
"postcss-loader": "7.3.4", "prettier": "3.1.1",
"postcss-preset-env": "9.3.0", "sass": "1.69.7",
"prettier": "3.1.1", "sass-loader": "13.3.3",
"sass": "1.69.7", "typescript": "5.3.3",
"sass-loader": "13.3.3", "vue-loader": "17.4.2",
"typescript": "5.3.3", "webpack": "5.89.0",
"vue-loader": "17.4.2", "webpack-bundle-analyzer": "4.10.1",
"webpack": "5.89.0", "webpack-cli": "5.1.4",
"webpack-bundle-analyzer": "4.10.1", "webpack-dev-server": "4.15.1",
"webpack-cli": "5.1.4", "webpack-merge": "5.10.0",
"webpack-dev-server": "4.15.1", "@vue/babel-plugin-jsx": "1.1.5"
"webpack-merge": "5.10.0", },
"@vue/babel-plugin-jsx": "1.1.5" "dependencies": {
}, "@quasar/extras": "1.16.9",
"dependencies": { "@vueuse/core": "10.7.1",
"@quasar/extras": "1.16.9", "axios": "1.6.3",
"@vueuse/core": "10.7.1", "dayjs": "1.11.10",
"axios": "1.6.3", "echarts": "5.4.3",
"dayjs": "1.11.10", "exceljs": "4.4.0",
"echarts": "5.4.3", "file-saver": "2.0.5",
"exceljs": "4.4.0", "luckyexcel": "1.0.1",
"file-saver": "2.0.5", "mockjs": "1.1.0",
"luckyexcel": "1.0.1", "pinia": "2.1.7",
"mockjs": "1.1.0", "platform-core": "8.1.152",
"pinia": "2.1.7", "quasar": "2.14.5",
"platform-core": "8.1.149", "tailwindcss": "3.4.0",
"quasar": "2.14.2", "vue": "3.4.3",
"tailwindcss": "3.4.0", "vue-dompurify-html": "5.0.1",
"vue": "3.4.3", "vue-i18n": "9.8.0",
"vue-dompurify-html": "5.0.1", "vue-router": "4.2.5",
"vue-i18n": "9.8.0", "@codemirror/autocomplete": "6.11.1",
"vue-router": "4.2.5", "@codemirror/commands": "6.3.3",
"@codemirror/autocomplete": "6.11.1", "@codemirror/lang-html": "6.4.7",
"@codemirror/commands": "6.3.3", "@codemirror/lang-java": "6.0.1",
"@codemirror/lang-html": "6.4.7", "@codemirror/lang-javascript": "6.2.1",
"@codemirror/lang-java": "6.0.1", "@codemirror/lang-json": "6.0.1",
"@codemirror/lang-javascript": "6.2.1", "@codemirror/lang-sql": "6.5.4",
"@codemirror/lang-json": "6.0.1", "@codemirror/lang-xml": "6.0.2",
"@codemirror/lang-sql": "6.5.4", "@codemirror/language": "6.10.0",
"@codemirror/lang-xml": "6.0.2", "@codemirror/search": "6.5.5",
"@codemirror/language": "6.10.0", "@codemirror/state": "6.4.0",
"@codemirror/search": "6.5.5", "@codemirror/view": "6.23.0",
"@codemirror/state": "6.4.0", "codemirror": "6.0.1",
"@codemirror/view": "6.23.0", "vue-codemirror6": "1.2.0"
"codemirror": "6.0.1", }
"vue-codemirror6": "1.2.0"
}
} }

28
io.sc.engine.rule.frontend/src/components/index.ts

@ -2,22 +2,22 @@
* , * ,
*/ */
import resources from '@/views/resources/Resources.vue'; import component_engine_rule_resources from '@/views/resources/Resources.vue';
import authorization from '@/views/authorization/Authorization.vue'; import component_engine_rule_authorization from '@/views/authorization/Authorization.vue';
import workflow from '@/views/workflow/Workflow.vue'; import component_engine_rule_workflow from '@/views/workflow/Workflow.vue';
import dictionary from '@/views/dictionary/Dictionary.vue'; import component_engine_rule_dictionary from '@/views/dictionary/Dictionary.vue';
import lib from '@/views/lib/Lib.vue'; import component_engine_rule_lib from '@/views/lib/Lib.vue';
import testcase from '@/views/testcase/Testcase.vue'; import component_engine_rule_testcase from '@/views/testcase/Testcase.vue';
import migration from '@/views/migration/Migration.vue'; import component_engine_rule_migration from '@/views/migration/Migration.vue';
const localComponents = { const localComponents = {
'component.engine.rule.resources': resources, 'component.engine.rule.resources': component_engine_rule_resources,
'component.engine.rule.authorization': authorization, 'component.engine.rule.authorization': component_engine_rule_authorization,
'component.engine.rule.workflow': workflow, 'component.engine.rule.workflow': component_engine_rule_workflow,
'component.engine.rule.dictionary': dictionary, 'component.engine.rule.dictionary': component_engine_rule_dictionary,
'component.engine.rule.lib': lib, 'component.engine.rule.lib': component_engine_rule_lib,
'component.engine.rule.testcase': testcase, 'component.engine.rule.testcase': component_engine_rule_testcase,
'component.engine.rule.migration': migration, 'component.engine.rule.migration': component_engine_rule_migration,
}; };
export default localComponents; export default localComponents;

39
io.sc.engine.rule.frontend/src/i18n/messages.json

@ -67,4 +67,43 @@
"re.resources.designer.validator.grid.title": "Validator", "re.resources.designer.validator.grid.title": "Validator",
"re.resources.designer.validator.grid.entity.content": "Content", "re.resources.designer.validator.grid.entity.content": "Content",
"re.resources.designer.validator.grid.entity.tip": "Error Tip", "re.resources.designer.validator.grid.entity.tip": "Error Tip",
"re.resources.designer.option.grid.title": "Options",
"re.resources.designer.option.grid.entity.inputValue": "Input Value",
"re.resources.designer.option.grid.entity.value": "Value",
"re.resources.designer.option.grid.entity.title": "Title",
"re.resources.designer.processor.grid.title": "Processor",
"re.resources.designer.processor.grid.entity.content": "Content",
"re.resources.designer.processor.grid.entity.optionCode": "Option",
"re.resources.designer.processor.grid.entity.arithmetic": "Arithmetic",
"re.resources.designer.processor.grid.entity.ternaryCondition": "Ternary Condition",
"re.resources.designer.processor.grid.entity.ternaryTrue": "Ternary True",
"re.resources.designer.processor.grid.entity.ternaryFalse": "Ternary False",
"re.resources.designer.processor.grid.entity.when": "When Expression",
"re.resources.designer.processor.grid.entity.then": "Then Expression",
"re.resources.designer.processor.grid.entity.isWhenThenShorted": "Shorted",
"re.resources.designer.processor.grid.entity.numberRangeVar": "Number Range",
"re.resources.designer.processor.grid.entity.numberRange": "Number Range",
"re.resources.designer.processor.grid.entity.conditionRangeVar": "Condition Range",
"re.resources.designer.processor.grid.entity.conditionRange": "Condition Range",
"re.resources.designer.processor.grid.entity.decisionTable2C": "Simple Decision Table",
"re.resources.designer.processor.grid.entity.decisionTable": "Decision Table",
"re.resources.designer.processor.grid.entity.groovyScript": "Groovy Script",
"re.resources.designer.processor.grid.entity.sqlDatasourceName": "Datasource Name",
"re.resources.designer.processor.grid.entity.sql": "SQL",
"re.resources.designer.processor.grid.entity.sqlParameterValues": "Parameter Values",
"re.resources.designer.processor.grid.entity.sqlFieldMapping": "Field Mapping",
"re.resources.designer.processor.grid.entity.rule": "Rule",
"re.resources.designer.processor.grid.entity.singleRule": "Single Rule",
"re.resources.designer.testCase.grid.title": "Test Case List",
"re.resources.designer.testCase.grid.entity.testResult": "Result",
"re.resources.designer.testCase.grid.entity.lastTestDate": "Test Date",
"re.resources.designer.testCaseParameter.grid.title": "Test Case Parameter List",
"re.resources.designer.testCaseParameter.grid.entity.inputValue": "Input Value",
"re.resources.designer.testCaseParameter.grid.entity.expectValue": "Expect Value",
"re.resources.designer.testCaseParameter.grid.entity.resultValue": "Result Value",
"re.resources.designer.testCaseParameter.grid.entity.skipCheck": "Skip Check",
} }

40
io.sc.engine.rule.frontend/src/i18n/messages_tw_CN.json

@ -67,4 +67,44 @@
"re.resources.designer.validator.grid.title": "驗證器", "re.resources.designer.validator.grid.title": "驗證器",
"re.resources.designer.validator.grid.entity.content": "內容", "re.resources.designer.validator.grid.entity.content": "內容",
"re.resources.designer.validator.grid.entity.tip": "錯誤提示", "re.resources.designer.validator.grid.entity.tip": "錯誤提示",
"re.resources.designer.option.grid.title": "選項",
"re.resources.designer.option.grid.entity.inputValue": "輸入值",
"re.resources.designer.option.grid.entity.value": "計算值",
"re.resources.designer.option.grid.entity.title": "顯示文本",
"re.resources.designer.processor.grid.title": "處理器",
"re.resources.designer.processor.grid.entity.content": "內容",
"re.resources.designer.processor.grid.entity.optionCode": "選項",
"re.resources.designer.processor.grid.entity.arithmetic": "算數表達式",
"re.resources.designer.processor.grid.entity.ternaryCondition": "條件",
"re.resources.designer.processor.grid.entity.ternaryTrue": "條件滿足時",
"re.resources.designer.processor.grid.entity.ternaryFalse": "條件不滿足時",
"re.resources.designer.processor.grid.entity.when": "When 表達式",
"re.resources.designer.processor.grid.entity.then": "Then 表達式",
"re.resources.designer.processor.grid.entity.isWhenThenShorted": "短路操作",
"re.resources.designer.processor.grid.entity.numberRangeVar": "數值分段",
"re.resources.designer.processor.grid.entity.numberRange": "數值分段",
"re.resources.designer.processor.grid.entity.conditionRangeVar": "條件分段",
"re.resources.designer.processor.grid.entity.conditionRange": "條件分段",
"re.resources.designer.processor.grid.entity.decisionTable2C": "簡單決策表",
"re.resources.designer.processor.grid.entity.decisionTable": "決策表",
"re.resources.designer.processor.grid.entity.groovyScript": "腳本代碼",
"re.resources.designer.processor.grid.entity.sqlDatasourceName": "數據源名稱",
"re.resources.designer.processor.grid.entity.sql": "SQL 語句",
"re.resources.designer.processor.grid.entity.sqlParameterValues": "參數測試值",
"re.resources.designer.processor.grid.entity.sqlFieldMapping": "查詢結果字段映射",
"re.resources.designer.processor.grid.entity.rule": "規則",
"re.resources.designer.processor.grid.entity.singleRule": "單規則",
"re.resources.designer.testCase.grid.title": "測試用例列表",
"re.resources.designer.testCase.grid.entity.testResult": "測試結果",
"re.resources.designer.testCase.grid.entity.lastTestDate": "測試日期",
"re.resources.designer.testCaseParameter.grid.title": "測試用例參數列表",
"re.resources.designer.testCaseParameter.grid.entity.inputValue": "輸入值",
"re.resources.designer.testCaseParameter.grid.entity.expectValue": "期望值",
"re.resources.designer.testCaseParameter.grid.entity.resultValue": "結果值",
"re.resources.designer.testCaseParameter.grid.entity.skipCheck": "跳過檢查",
"re.resources.designer.testCaseParameter.grid.entity.testResult": "測試結果",
} }

42
io.sc.engine.rule.frontend/src/i18n/messages_zh_CN.json

@ -67,5 +67,45 @@
"re.resources.designer.validator.grid.title": "验证器", "re.resources.designer.validator.grid.title": "验证器",
"re.resources.designer.validator.grid.entity.content": "内容", "re.resources.designer.validator.grid.entity.content": "内容",
"re.resources.designer.validator.grid.entity.tip": "错误提示", "re.resources.designer.validator.grid.entity.tip": "错误提示",
"re.resources.designer.option.grid.title": "选项",
"re.resources.designer.option.grid.entity.inputValue": "输入值",
"re.resources.designer.option.grid.entity.value": "计算值",
"re.resources.designer.option.grid.entity.title": "显示文本",
"re.resources.designer.processor.grid.title": "处理器",
"re.resources.designer.processor.grid.entity.content": "内容",
"re.resources.designer.processor.grid.entity.optionCode": "选项",
"re.resources.designer.processor.grid.entity.arithmetic": "算数表达式",
"re.resources.designer.processor.grid.entity.ternaryCondition": "条件",
"re.resources.designer.processor.grid.entity.ternaryTrue": "条件满足时",
"re.resources.designer.processor.grid.entity.ternaryFalse": "条件不满足时",
"re.resources.designer.processor.grid.entity.when": "When 表达式",
"re.resources.designer.processor.grid.entity.then": "Then 表达式",
"re.resources.designer.processor.grid.entity.isWhenThenShorted": "短路操作",
"re.resources.designer.processor.grid.entity.numberRangeVar": "数值分段",
"re.resources.designer.processor.grid.entity.numberRange": "数值分段",
"re.resources.designer.processor.grid.entity.conditionRangeVar": "条件分段",
"re.resources.designer.processor.grid.entity.conditionRange": "条件分段",
"re.resources.designer.processor.grid.entity.decisionTable2C": "简单决策表",
"re.resources.designer.processor.grid.entity.decisionTable": "决策表",
"re.resources.designer.processor.grid.entity.groovyScript": "脚本代码",
"re.resources.designer.processor.grid.entity.sqlDatasourceName": "数据源名称",
"re.resources.designer.processor.grid.entity.sql": "SQL 语句",
"re.resources.designer.processor.grid.entity.sqlParameterValues": "参数测试值",
"re.resources.designer.processor.grid.entity.sqlFieldMapping": "查询结果字段映射",
"re.resources.designer.processor.grid.entity.rule": "规则",
"re.resources.designer.processor.grid.entity.singleRule": "单规则",
"re.resources.designer.testCase.grid.title": "测试用例列表",
"re.resources.designer.testCase.grid.entity.testResult": "测试结果",
"re.resources.designer.testCase.grid.entity.lastTestDate": "测试日期",
"re.resources.designer.testCaseParameter.grid.title": "测试用例参数列表",
"re.resources.designer.testCaseParameter.grid.entity.inputValue": "输入值",
"re.resources.designer.testCaseParameter.grid.entity.expectValue": "期望值",
"re.resources.designer.testCaseParameter.grid.entity.resultValue": "结果值",
"re.resources.designer.testCaseParameter.grid.entity.skipCheck": "跳过检查",
"re.resources.designer.testCaseParameter.grid.entity.testResult": "测试结果",
} }

26
io.sc.engine.rule.frontend/src/views/resources/Resources.vue

@ -216,7 +216,7 @@
{ {
width: 200, width: 200,
name: 'attachmentHtml', name: 'attachmentHtml',
label: $t('re.resources.grid.entity.attachmentHtml'), label: $t('attachment'),
format: (value) => { format: (value) => {
return value; return value;
}, },
@ -230,20 +230,20 @@
form: { form: {
colsNum: 1, colsNum: 1,
fields: [ fields: [
{ name: 'type', label: $t('re.resources.grid.entity.type'), type: 'text', hidden: true }, { name: 'type', label: $t('type'), type: 'text', hidden: true },
{ name: 'status', label: $t('re.resources.grid.entity.status'), type: 'text', hidden: true }, { name: 'status', label: $t('status'), type: 'text', hidden: true },
{ name: 'version', label: $t('re.resources.grid.entity.version'), type: 'number', hidden: true }, { name: 'version', label: $t('version'), type: 'number', hidden: true },
{ {
name: 'code', name: 'code',
label: $t('re.resources.grid.entity.code'), label: $t('code'),
type: 'text', type: 'text',
showIf: (arg) => { showIf: (arg) => {
const type = arg.form.getFieldValue('type'); const type = arg.form.getFieldValue('type');
return type === 'MODEL' || type === 'SCORE_CARD'; return type === 'MODEL' || type === 'SCORE_CARD';
}, },
}, },
{ name: 'name', label: $t('re.resources.grid.entity.name'), type: 'text', required: true }, { name: 'name', label: $t('name'), type: 'text', required: true },
{ name: 'description', label: $t('re.resources.grid.entity.description'), type: 'text' }, { name: 'description', label: $t('description'), type: 'text' },
{ {
name: 'imports', name: 'imports',
label: $t('re.resources.grid.entity.imports'), label: $t('re.resources.grid.entity.imports'),
@ -262,16 +262,16 @@
columnNum: 1, columnNum: 1,
fields: [ fields: [
{ name: 'id', label: $t('id') }, { name: 'id', label: $t('id') },
{ name: 'name', label: $t('re.resources.grid.entity.name') }, { name: 'name', label: $t('name') },
{ name: 'type', label: $t('re.resources.grid.entity.type'), format: Formater.none() }, { name: 'type', label: $t('type'), format: Formater.none() },
{ name: 'code', label: $t('re.resources.grid.entity.code') }, { name: 'code', label: $t('code') },
{ name: 'version', label: $t('re.resources.grid.entity.version') }, { name: 'version', label: $t('version') },
{ name: 'status', label: $t('re.resources.grid.entity.status'), format: Formater.none() }, { name: 'status', label: $t('status'), format: Formater.none() },
{ name: 'taskName', label: $t('re.resources.grid.entity.taskName') }, { name: 'taskName', label: $t('re.resources.grid.entity.taskName') },
{ name: 'taskAssignee', label: $t('re.resources.grid.entity.taskAssignee') }, { name: 'taskAssignee', label: $t('re.resources.grid.entity.taskAssignee') },
{ {
name: 'attachmentHtml', name: 'attachmentHtml',
label: $t('re.resources.grid.entity.attachmentHtml'), label: $t('attachment'),
format: (value) => { format: (value) => {
return value; return value;
}, },

122
io.sc.engine.rule.frontend/src/views/resources/designer/DesignerDialog.vue

@ -3,9 +3,9 @@
ref="dialogRef" ref="dialogRef"
:title=" :title="
$t('re.resources.designer.dialog.title', { $t('re.resources.designer.dialog.title', {
name: resourceRef?.name, name: currentSelectedResourceRef?.name,
status: Formater.enum(Enums.DeployStatus)(resourceRef?.status), status: Formater.enum(Enums.DeployStatus)(currentSelectedResourceRef?.status),
version: resourceRef?.version, version: currentSelectedResourceRef?.version,
}) })
" "
:can-maximize="false" :can-maximize="false"
@ -14,26 +14,27 @@
<q-splitter v-model="verticalSplitterRef" unit="px" separator-style="width: 3px"> <q-splitter v-model="verticalSplitterRef" unit="px" separator-style="width: 3px">
<template #before> <template #before>
<Model <Model
:resource="resourceRef" :resource="currentSelectedResourceRef"
@row-click=" @row-click="
(evt, row, index) => { (evt, row, index) => {
modelRef = row; currentSelectedModelRef = row;
if (row.parent) { if (row.parent) {
statusReactive.parameterAndTestcaseTab = 'parameter'; statusReactive.parameterAndTestcaseTab = 'parameter';
statusReactive.isShowParameter = true; statusReactive.isShowParameter = true;
statusReactive.isShowTestCase = false; statusReactive.isShowTestCase = false;
statusReactive.validatorAndProcessorAndOptionTab = 'validator';
statusReactive.isShowValidator = false; statusReactive.isShowValidator = false;
statusReactive.isShowProcessor = false; statusReactive.isShowProcessor = false;
statusReactive.isShowOption = false; statusReactive.isShowOption = false;
statusReactive.isShowTestCaseParameter = false;
} else { } else {
statusReactive.parameterAndTestcaseTab = 'parameter'; statusReactive.parameterAndTestcaseTab = 'parameter';
statusReactive.isShowParameter = true; statusReactive.isShowParameter = true;
statusReactive.isShowTestCase = true; statusReactive.isShowTestCase = true;
statusReactive.validatorAndProcessorAndOptionTab = 'validator';
statusReactive.isShowValidator = false; statusReactive.isShowValidator = false;
statusReactive.isShowProcessor = false; statusReactive.isShowProcessor = false;
statusReactive.isShowOption = false; statusReactive.isShowOption = false;
statusReactive.isShowTestCaseParameter = false;
testCaseGridRef?.refresh();
} }
parameterGridRef?.refresh(); parameterGridRef?.refresh();
} }
@ -43,10 +44,10 @@
statusReactive.parameterAndTestcaseTab = 'parameter'; statusReactive.parameterAndTestcaseTab = 'parameter';
statusReactive.isShowParameter = false; statusReactive.isShowParameter = false;
statusReactive.isShowTestCase = false; statusReactive.isShowTestCase = false;
statusReactive.validatorAndProcessorAndOptionTab = 'validator';
statusReactive.isShowValidator = false; statusReactive.isShowValidator = false;
statusReactive.isShowProcessor = false; statusReactive.isShowProcessor = false;
statusReactive.isShowOption = false; statusReactive.isShowOption = false;
statusReactive.isShowTestCaseParameter = false;
} }
" "
></Model> ></Model>
@ -56,78 +57,106 @@
<div> <div>
<q-splitter v-model="horizontalSplitterRef" unit="px" separator-style="height: 3px" horizontal> <q-splitter v-model="horizontalSplitterRef" unit="px" separator-style="height: 3px" horizontal>
<template #before> <template #before>
<q-tabs v-model="statusReactive.parameterAndTestcaseTab" no-caps inline-label align="left"> <q-tabs
v-model="statusReactive.parameterAndTestcaseTab"
no-caps
inline-label
align="left"
@update:model-value="
(value) => {
if (value === 'testcase') {
horizontalSplitterRef = 300;
} else {
horizontalSplitterRef = 500;
}
}
"
>
<q-tab v-if="statusReactive.isShowParameter" name="parameter" icon="bi-p-square" :label="$t('re.resources.designer.parameter.tab.title')" /> <q-tab v-if="statusReactive.isShowParameter" name="parameter" icon="bi-p-square" :label="$t('re.resources.designer.parameter.tab.title')" />
<q-tab v-if="statusReactive.isShowTestCase" name="testcase" icon="bi-receipt" :label="$t('re.resources.designer.testcase.tab.title')" /> <q-tab v-if="statusReactive.isShowTestCase" name="testcase" icon="bi-receipt" :label="$t('re.resources.designer.testcase.tab.title')" />
</q-tabs> </q-tabs>
<q-tab-panels v-model="statusReactive.parameterAndTestcaseTab" animated> <q-tab-panels v-model="statusReactive.parameterAndTestcaseTab" animated>
<q-tab-panel v-if="statusReactive.isShowParameter" name="parameter" class="px-0"> <q-tab-panel v-if="statusReactive.isShowParameter" name="parameter" class="px-0">
<Parameter <Parameter
:model="modelRef" ref="parameterGridRef"
:model="currentSelectedModelRef"
@row-click=" @row-click="
(evt, row, index) => { (evt, row, index) => {
parameterRef = row; currentSelectedParameterRef = row;
if (row.type === 'IN') { if (row.type === 'IN') {
statusReactive.parameterAndTestcaseTab = 'parameter';
statusReactive.isShowParameter = true;
statusReactive.isShowTestCase = false;
statusReactive.validatorAndProcessorAndOptionTab = 'validator';
statusReactive.isShowValidator = true; statusReactive.isShowValidator = true;
statusReactive.isShowProcessor = false; statusReactive.isShowProcessor = false;
statusReactive.isShowOption = false; statusReactive.isShowOption = false;
statusReactive.isShowTestCaseParameter = false;
validatorGridRef?.refresh();
} else if (row.type === 'IN_OPTION') { } else if (row.type === 'IN_OPTION') {
statusReactive.parameterAndTestcaseTab = 'parameter';
statusReactive.isShowParameter = true;
statusReactive.isShowTestCase = false;
statusReactive.validatorAndProcessorAndOptionTab = 'validator';
statusReactive.isShowValidator = false; statusReactive.isShowValidator = false;
statusReactive.isShowProcessor = false; statusReactive.isShowProcessor = false;
statusReactive.isShowOption = true; statusReactive.isShowOption = true;
statusReactive.isShowTestCaseParameter = false;
optionGridRef?.refresh();
} else if (row.type == 'OUT' || row.type == 'INTERMEDIATE' || row.type == 'RULE_RESULT' || row.type == 'SINGLE_RULE_RESULT') { } else if (row.type == 'OUT' || row.type == 'INTERMEDIATE' || row.type == 'RULE_RESULT' || row.type == 'SINGLE_RULE_RESULT') {
statusReactive.parameterAndTestcaseTab = 'parameter';
statusReactive.isShowParameter = true;
statusReactive.isShowTestCase = false;
statusReactive.validatorAndProcessorAndOptionTab = 'validator';
statusReactive.isShowValidator = false; statusReactive.isShowValidator = false;
statusReactive.isShowProcessor = true; statusReactive.isShowProcessor = true;
statusReactive.isShowOption = false; statusReactive.isShowOption = false;
statusReactive.isShowTestCaseParameter = false;
processorGridRef?.refresh();
} else { } else {
statusReactive.parameterAndTestcaseTab = 'parameter';
statusReactive.isShowParameter = true;
statusReactive.isShowTestCase = false;
statusReactive.validatorAndProcessorAndOptionTab = 'validator';
statusReactive.isShowValidator = false; statusReactive.isShowValidator = false;
statusReactive.isShowProcessor = false; statusReactive.isShowProcessor = false;
statusReactive.isShowOption = false; statusReactive.isShowOption = false;
statusReactive.isShowTestCaseParameter = false;
} }
// parameterGridRef?.refresh();
} }
" "
@before-request-data=" @before-request-data="
() => { () => {
statusReactive.parameterAndTestcaseTab = 'parameter';
statusReactive.isShowParameter = true;
statusReactive.isShowTestCase = false;
statusReactive.validatorAndProcessorAndOptionTab = 'validator';
statusReactive.isShowValidator = false; statusReactive.isShowValidator = false;
statusReactive.isShowProcessor = false; statusReactive.isShowProcessor = false;
statusReactive.isShowOption = false; statusReactive.isShowOption = false;
statusReactive.isShowTestCaseParameter = false;
} }
" "
></Parameter> ></Parameter>
</q-tab-panel> </q-tab-panel>
<q-tab-panel v-if="statusReactive.isShowTestCase" name="testcase"> testCase</q-tab-panel> <q-tab-panel v-if="statusReactive.isShowTestCase" name="testcase" class="px-0">
<TestCase
ref="testCaseGridRef"
:model="currentSelectedModelRef"
@row-click="
(evt, row, index) => {
currentSelectedTestCaseRef = row;
statusReactive.isShowValidator = false;
statusReactive.isShowProcessor = false;
statusReactive.isShowOption = false;
statusReactive.isShowTestCaseParameter = true;
testCaseParameterGridRef?.refresh();
}
"
@before-request-data="
() => {
statusReactive.isShowValidator = false;
statusReactive.isShowProcessor = false;
statusReactive.isShowOption = false;
statusReactive.isShowTestCaseParameter = false;
}
"
></TestCase>
</q-tab-panel>
</q-tab-panels> </q-tab-panels>
</template> </template>
<template #after> <template #after>
<div v-if="statusReactive.isShowValidator"> <div v-if="statusReactive.isShowValidator">
<Validator :parameter="parameterRef"></Validator> <Validator ref="validatorGridRef" :parameter="currentSelectedParameterRef"></Validator>
</div> </div>
<div v-if="statusReactive.isShowProcessor"> <div v-if="statusReactive.isShowProcessor">
<Processor :parameter="parameterRef"></Processor> <Processor ref="processorGridRef" :parameter="currentSelectedParameterRef"></Processor>
</div> </div>
<div v-if="statusReactive.isShowOption"> <div v-if="statusReactive.isShowOption">
<Option :parameter="parameterRef"></Option> <Option ref="optionGridRef" :parameter="currentSelectedParameterRef"></Option>
</div>
<div v-if="statusReactive.isShowTestCaseParameter">
<TestCaseParameter ref="testCaseParameterGridRef" :test-case="currentSelectedTestCaseRef"></TestCaseParameter>
</div> </div>
</template> </template>
</q-splitter> </q-splitter>
@ -141,7 +170,8 @@ import { ref, nextTick, reactive } from 'vue';
import { Environment, Tools, EnumTools, Options, Formater } from 'platform-core'; import { Environment, Tools, EnumTools, Options, Formater } from 'platform-core';
import Model from './Model.vue'; import Model from './Model.vue';
import Parameter from './Parameter.vue'; import Parameter from './Parameter.vue';
import Testcase from './Testcase.vue'; import TestCase from './TestCase.vue';
import TestCaseParameter from './TestCaseParameter.vue';
import Validator from './Validator.vue'; import Validator from './Validator.vue';
import Processor from './Processor.vue'; import Processor from './Processor.vue';
import Option from './Option.vue'; import Option from './Option.vue';
@ -155,24 +185,32 @@ const props = defineProps({
}); });
const dialogRef = ref(); const dialogRef = ref();
const resourceRef = ref();
const modelRef = ref({});
const parameterRef = ref({});
const horizontalSplitterRef = ref(500); const horizontalSplitterRef = ref(500);
const verticalSplitterRef = ref(400); const verticalSplitterRef = ref(400);
const currentSelectedResourceRef = ref();
const currentSelectedModelRef = ref({});
const currentSelectedParameterRef = ref({});
const currentSelectedTestCaseRef = ref({});
const parameterGridRef = ref(); const parameterGridRef = ref();
const validatorGridRef = ref();
const processorGridRef = ref();
const optionGridRef = ref();
const testCaseGridRef = ref();
const testCaseParameterGridRef = ref();
const statusReactive = reactive({ const statusReactive = reactive({
parameterAndTestcaseTab: 'parameter', parameterAndTestcaseTab: 'parameter',
isShowParameter: false, isShowParameter: false,
isShowTestCase: false, isShowTestCase: false,
validatorAndProcessorAndOptionTab: 'validator',
isShowValidator: false, isShowValidator: false,
isShowProcessor: false, isShowProcessor: false,
isShowOption: false, isShowOption: false,
isShowTestCaseParameter: false,
}); });
const open = (resource) => { const open = (resource) => {
resourceRef.value = resource; currentSelectedResourceRef.value = resource;
dialogRef.value.show(); dialogRef.value.show();
}; };

18
io.sc.engine.rule.frontend/src/views/resources/designer/Model.vue

@ -125,7 +125,23 @@
:viewer="{ :viewer="{
panel: { panel: {
columnNum: 1, columnNum: 1,
fields: [], fields: [
{ name: 'order', label: $t('order') },
{ name: 'id', label: $t('id') },
{ name: 'code', label: $t('code') },
{ name: 'name', label: $t('name') },
{ name: 'description', label: $t('description') },
{ name: 'enable', label: $t('enable') },
{ name: 'category', label: $t('category'), format: Formater.none() },
{ name: 'executeMode', label: $t('re.resources.designer.model.grid.entity.executeMode'), format: Formater.none() },
{ name: 'dataComeFrom', label: $t('dataComeFrom') },
{ name: 'creator', label: $t('creator') },
{ name: 'createDate', label: $t('createDate') },
{ name: 'lastModifier', label: $t('lastModifier') },
{ name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.none() },
{ name: 'corporationCode', label: $t('corporationCode') },
],
}, },
}" }"
@row-click=" @row-click="

106
io.sc.engine.rule.frontend/src/views/resources/designer/Option.vue

@ -1,6 +1,108 @@
<template> <template>
<div>option</div> <w-grid
ref="gridRef"
:height="200"
:title="$t('re.resources.designer.option.grid.title')"
dense-body
class="px-1"
hide-bottom
:config-button="false"
selection="multiple"
:checkbox-selection="false"
:tree="false"
:fetch-data-url="Environment.apiContextPath('/api/re/model/parameter/option/findByParameterId?parameterId=' + parameter.id)"
:data-url="Environment.apiContextPath('/api/re/model/parameter/option')"
:pageable="false"
:toolbar-configure="{ noIcon: false }"
:toolbar-actions="['refresh', 'separator', 'add', 'edit', 'remove', 'separator', 'view', 'separator', 'export']"
:columns="[
{ width: 60, name: 'order', label: $t('order'), sortable: false, align: 'right' },
{ width: 100, name: 'inputValue', label: $t('re.resources.designer.option.grid.entity.inputValue'), sortable: false },
{ width: 100, name: 'value', label: $t('re.resources.designer.option.grid.entity.value'), sortable: false },
{ width: 400, name: 'title', label: $t('re.resources.designer.option.grid.entity.title'), sortable: false },
{ width: '100%', name: 'description', label: $t('description'), sortable: false },
]"
:editor="{
dialog: {
width: '600px',
height: '400px',
},
form: {
colsNum: 1,
fields: [
{ name: 'parameter', label: 'parameter', type: 'text', defaultValue: parameter.id, hidden: true },
{ name: 'id', label: $t('id'), type: 'text', hidden: true },
{
name: 'inputValue',
label: $t('re.resources.designer.option.grid.entity.inputValue'),
type: 'text',
},
{
name: 'value',
label: $t('re.resources.designer.option.grid.entity.value'),
type: 'text',
},
{
name: 'title',
label: $t('re.resources.designer.option.grid.entity.title'),
type: 'text',
},
{
name: 'description',
label: $t('description'),
type: 'text',
},
{ name: 'order', label: $t('order'), type: 'number', hidden: false },
],
},
}"
:viewer="{
panel: {
columnNum: 1,
fields: [
{ name: 'id', label: $t('id') },
{ name: 'order', label: $t('order') },
{ name: 'inputValue', label: $t('re.resources.designer.option.grid.entity.inputValue') },
{ name: 'value', label: $t('re.resources.designer.option.grid.entity.value') },
{ name: 'title', label: $t('re.resources.designer.option.grid.entity.title') },
{ name: 'description', label: $t('description') },
{ name: 'dataComeFrom', label: $t('dataComeFrom') },
{ name: 'creator', label: $t('creator') },
{ name: 'createDate', label: $t('createDate') },
{ name: 'lastModifier', label: $t('lastModifier') },
{ name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.none() },
{ name: 'corporationCode', label: $t('corporationCode') },
],
},
}"
></w-grid>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue'; import { ref, onMounted } from 'vue';
import { Environment, Formater } from 'platform-core';
const props = defineProps({
fetchDataUrl: { type: String, default: '' },
dataUrl: { type: String, default: '' },
parameter: { type: Object, default: undefined },
});
const emit = defineEmits<{
(e: 'rowClick', evt: Event, row: any, index: number): void;
(e: 'beforeRequestData', requestParams: URLSearchParams | any, callback: any): void;
}>();
const gridRef = ref();
const refresh = () => {
gridRef.value.refresh();
};
onMounted(() => {
gridRef.value.refresh();
});
defineExpose({
refresh,
});
</script> </script>

33
io.sc.engine.rule.frontend/src/views/resources/designer/Parameter.vue

@ -10,7 +10,7 @@
selection="multiple" selection="multiple"
:checkbox-selection="false" :checkbox-selection="false"
:tree="false" :tree="false"
:fetch-data-url="Environment.apiContextPath('/api/re/model/parameter/findParameterByModelId?modelId=' + model.id)" :fetch-data-url="Environment.apiContextPath('/api/re/model/parameter/findByModelId?modelId=' + model.id)"
:data-url="Environment.apiContextPath('/api/re/model/parameter')" :data-url="Environment.apiContextPath('/api/re/model/parameter')"
:pageable="false" :pageable="false"
:toolbar-configure="{ noIcon: false }" :toolbar-configure="{ noIcon: false }"
@ -302,7 +302,30 @@
:viewer="{ :viewer="{
panel: { panel: {
columnNum: 1, columnNum: 1,
fields: [], fields: [
{ name: 'order', label: $t('order') },
{ name: 'id', label: $t('id') },
{ name: 'code', label: $t('code') },
{ name: 'name', label: $t('name') },
{ name: 'description', label: $t('description') },
{ name: 'type', label: $t('type') },
{ name: 'valueType', label: $t('re.resources.designer.parameter.grid.entity.valueType') },
{ name: 'valueTypeVersion', label: $t('re.resources.designer.parameter.grid.entity.valueTypeVersion') },
{ name: 'valueScale', label: $t('re.resources.designer.parameter.grid.entity.valueScale') },
{ name: 'valueRoundingMode', label: $t('re.resources.designer.parameter.grid.entity.valueRoundingMode') },
{ name: 'valueTypeIsList', label: $t('re.resources.designer.parameter.grid.entity.valueTypeIsList') },
{ name: 'defaultValue', label: $t('defaultValue') },
{ name: 'libCode', label: $t('re.resources.designer.parameter.grid.entity.libCode') },
{ name: 'libVersion', label: $t('re.resources.designer.parameter.grid.entity.libVersion') },
{ name: 'indicatorCode', label: $t('re.resources.designer.parameter.grid.entity.indicatorCode') },
{ name: 'dataComeFrom', label: $t('dataComeFrom') },
{ name: 'creator', label: $t('creator') },
{ name: 'createDate', label: $t('createDate') },
{ name: 'lastModifier', label: $t('lastModifier') },
{ name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.none() },
{ name: 'corporationCode', label: $t('corporationCode') },
],
}, },
}" }"
@row-click=" @row-click="
@ -318,7 +341,7 @@
></w-grid> ></w-grid>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue'; import { onMounted, ref } from 'vue';
import { axios, Environment, EnumTools, Formater, Options, Tools } from 'platform-core'; import { axios, Environment, EnumTools, Formater, Options, Tools } from 'platform-core';
const props = defineProps({ const props = defineProps({
@ -356,4 +379,8 @@ if (response && response.data) {
ValueTypeList.push({ value: item.key, label: item.value }); ValueTypeList.push({ value: item.key, label: item.value });
} }
} }
onMounted(() => {
gridRef.value.refresh();
});
</script> </script>

495
io.sc.engine.rule.frontend/src/views/resources/designer/Processor.vue

@ -1,6 +1,497 @@
<template> <template>
<div>processor</div> <w-grid
ref="gridRef"
:height="200"
:title="$t('re.resources.designer.processor.grid.title')"
dense-body
class="px-1"
hide-bottom
:config-button="false"
selection="multiple"
:checkbox-selection="false"
:tree="false"
:fetch-data-url="Environment.apiContextPath('/api/re/model/parameter/processor/findByParameterId?parameterId=' + parameter.id)"
:data-url="Environment.apiContextPath('/api/re/model/parameter/processor')"
:pageable="false"
:toolbar-configure="{ noIcon: false }"
:toolbar-actions="[
'refresh',
'separator',
[
{
extend: 'add',
click: undefined,
},
{
extend: 'add',
name: 'optionValue',
label: Formater.enum(Enums.ProcessorType)('OPTION_VALUE'),
icon: 'bi-card-list',
enableIf: (arg) => {
return parameter.type !== 'RULE_RESULT' && parameter.type !== 'SINGLE_RULE_RESULT';
},
afterClick: (arg) => {
arg.grid.getEditorForm().setFieldValue('type', 'OPTION_VALUE');
},
},
{
extend: 'add',
name: 'arithmetic',
label: Formater.enum(Enums.ProcessorType)('ARITHMETIC'),
icon: 'bi-calculator',
enableIf: (arg) => {
return parameter.type !== 'RULE_RESULT' && parameter.type !== 'SINGLE_RULE_RESULT';
},
afterClick: (arg) => {
arg.grid.getEditorForm().setFieldValue('type', 'ARITHMETIC');
},
},
{
extend: 'add',
name: 'ternary',
label: Formater.enum(Enums.ProcessorType)('TERNARY'),
icon: 'bi-question',
enableIf: (arg) => {
return parameter.type !== 'RULE_RESULT' && parameter.type !== 'SINGLE_RULE_RESULT';
},
afterClick: (arg) => {
arg.grid.getEditorForm().setFieldValue('type', 'TERNARY');
},
},
{
extend: 'add',
name: 'whenThen',
label: Formater.enum(Enums.ProcessorType)('WHEN_THEN'),
icon: 'bi-sliders',
enableIf: (arg) => {
return parameter.type !== 'RULE_RESULT' && parameter.type !== 'SINGLE_RULE_RESULT';
},
afterClick: (arg) => {
arg.grid.getEditorForm().setFieldValue('type', 'WHEN_THEN');
},
},
{
extend: 'add',
name: 'numberRange',
label: Formater.enum(Enums.ProcessorType)('NUMBER_RANGE'),
icon: 'bi-justify',
enableIf: (arg) => {
return parameter.type !== 'RULE_RESULT' && parameter.type !== 'SINGLE_RULE_RESULT';
},
afterClick: (arg) => {
arg.grid.getEditorForm().setFieldValue('type', 'NUMBER_RANGE');
},
},
{
extend: 'add',
name: 'conditionRange',
label: Formater.enum(Enums.ProcessorType)('CONDITION_RANGE'),
icon: 'bi-rainbow',
enableIf: (arg) => {
return parameter.type !== 'RULE_RESULT' && parameter.type !== 'SINGLE_RULE_RESULT';
},
afterClick: (arg) => {
arg.grid.getEditorForm().setFieldValue('type', 'CONDITION_RANGE');
},
},
{
extend: 'add',
name: 'decisionTable2c',
label: Formater.enum(Enums.ProcessorType)('DECISION_TABLE_2C'),
icon: 'bi-grid-3x2',
enableIf: (arg) => {
return parameter.type !== 'RULE_RESULT' && parameter.type !== 'SINGLE_RULE_RESULT';
},
afterClick: (arg) => {
arg.grid.getEditorForm().setFieldValue('type', 'DECISION_TABLE_2C');
},
},
{
extend: 'add',
name: 'decisionTable',
label: Formater.enum(Enums.ProcessorType)('DECISION_TABLE'),
icon: 'bi-grid-3x3',
enableIf: (arg) => {
return parameter.type !== 'RULE_RESULT' && parameter.type !== 'SINGLE_RULE_RESULT';
},
afterClick: (arg) => {
arg.grid.getEditorForm().setFieldValue('type', 'DECISION_TABLE');
},
},
{
extend: 'add',
name: 'decisionTree',
label: Formater.enum(Enums.ProcessorType)('DECISION_TREE'),
icon: 'bi-tree',
enableIf: (arg) => {
return parameter.type !== 'RULE_RESULT' && parameter.type !== 'SINGLE_RULE_RESULT';
},
afterClick: (arg) => {
arg.grid.getEditorForm().setFieldValue('type', 'DECISION_TREE');
},
},
{
extend: 'add',
name: 'executionFlow',
label: Formater.enum(Enums.ProcessorType)('EXECUTION_FLOW'),
icon: 'bi-bounding-box-circles',
enableIf: (arg) => {
return parameter.type !== 'RULE_RESULT' && parameter.type !== 'SINGLE_RULE_RESULT';
},
afterClick: (arg) => {
arg.grid.getEditorForm().setFieldValue('type', 'EXECUTION_FLOW');
},
},
{
extend: 'add',
name: 'pmml',
label: Formater.enum(Enums.ProcessorType)('PMML'),
icon: 'bi-filetype-xml',
enableIf: (arg) => {
return parameter.type !== 'RULE_RESULT' && parameter.type !== 'SINGLE_RULE_RESULT';
},
afterClick: (arg) => {
arg.grid.getEditorForm().setFieldValue('type', 'PMML');
},
},
{
extend: 'add',
name: 'groovyScript',
label: Formater.enum(Enums.ProcessorType)('GROOVY_SCRIPT'),
icon: 'bi-code',
enableIf: (arg) => {
return parameter.type !== 'RULE_RESULT' && parameter.type !== 'SINGLE_RULE_RESULT';
},
afterClick: (arg) => {
arg.grid.getEditorForm().setFieldValue('type', 'GROOVY_SCRIPT');
},
},
{
extend: 'add',
name: 'sql',
label: Formater.enum(Enums.ProcessorType)('SQL'),
icon: 'bi-filetype-sql',
enableIf: (arg) => {
return parameter.type !== 'RULE_RESULT' && parameter.type !== 'SINGLE_RULE_RESULT';
},
afterClick: (arg) => {
arg.grid.getEditorForm().setFieldValue('type', 'SQL');
},
},
{
extend: 'add',
name: 'rule',
label: Formater.enum(Enums.ProcessorType)('RULE'),
icon: 'bi-shadows',
enableIf: (arg) => {
return parameter.type !== 'RULE_RESULT' && parameter.type !== 'SINGLE_RULE_RESULT';
},
afterClick: (arg) => {
arg.grid.getEditorForm().setFieldValue('type', 'RULE');
},
},
{
extend: 'add',
name: 'singleRule',
label: Formater.enum(Enums.ProcessorType)('SINGLE_RULE'),
icon: 'bi-noise-reduction',
enableIf: (arg) => {
return parameter.type !== 'RULE_RESULT' && parameter.type !== 'SINGLE_RULE_RESULT';
},
afterClick: (arg) => {
arg.grid.getEditorForm().setFieldValue('type', 'SINGLE_RULE');
},
},
],
'edit',
'remove',
'separator',
'view',
'separator',
'export',
]"
:columns="[
{ width: 60, name: 'order', label: $t('order'), sortable: false, align: 'right' },
{ width: 100, name: 'type', label: $t('type'), sortable: false, format: Formater.enum(Enums.ProcessorType) },
{ width: 100, name: 'enable', label: $t('isEnable'), sortable: false },
{
width: '100%',
name: 'content',
label: $t('re.resources.designer.processor.grid.entity.content'),
sortable: false,
format: (value, row) => {
const type = row.type;
return '';
},
},
]"
:editor="{
dialog: {
width: '600px',
height: '400px',
},
form: {
colsNum: 1,
fields: [
{ name: 'parameter', label: 'parameter', type: 'text', defaultValue: parameter.id, hidden: true },
{ name: 'id', label: $t('id'), type: 'text', hidden: true },
{ name: 'order', label: $t('order'), type: 'number', hidden: true },
{ name: 'type', label: $t('type'), type: 'text', hidden: true },
{ name: 'description', label: $t('description'), type: 'text' },
{ name: 'enable', label: $t('enable'), type: 'checkbox', defaultValue: true },
{
name: 'optionCode',
label: $t('re.resources.designer.processor.grid.entity.optionCode'),
type: 'select',
options: [],
showIf: (arg) => {
return 'OPTION_VALUE' === arg.form.getFieldValue('type');
},
},
{
name: 'arithmetic',
label: $t('re.resources.designer.processor.grid.entity.arithmetic'),
type: 'code-mirror',
showIf: (arg) => {
return 'ARITHMETIC' === arg.form.getFieldValue('type');
},
},
{
name: 'ternaryCondition',
label: $t('re.resources.designer.processor.grid.entity.ternaryCondition'),
type: 'code-mirror',
rows: 1,
showIf: (arg) => {
return 'TERNARY' === arg.form.getFieldValue('type');
},
},
{
name: 'ternaryTrue',
label: $t('re.resources.designer.processor.grid.entity.ternaryTrue'),
type: 'code-mirror',
rows: 1,
showIf: (arg) => {
return 'TERNARY' === arg.form.getFieldValue('type');
},
},
{
name: 'ternaryFalse',
label: $t('re.resources.designer.processor.grid.entity.ternaryFalse'),
type: 'code-mirror',
rows: 1,
showIf: (arg) => {
return 'TERNARY' === arg.form.getFieldValue('type');
},
},
{
name: 'when',
label: $t('re.resources.designer.processor.grid.entity.when'),
type: 'code-mirror',
rows: 1,
showIf: (arg) => {
return 'WHEN_THEN' === arg.form.getFieldValue('type');
},
},
{
name: 'then',
label: $t('re.resources.designer.processor.grid.entity.then'),
type: 'code-mirror',
rows: 1,
showIf: (arg) => {
return 'WHEN_THEN' === arg.form.getFieldValue('type');
},
},
{
name: 'isWhenThenShorted',
label: $t('re.resources.designer.processor.grid.entity.isWhenThenShorted'),
type: 'code-mirror',
rows: 1,
showIf: (arg) => {
return 'WHEN_THEN' === arg.form.getFieldValue('type');
},
},
{
name: 'numberRange',
label: $t('re.resources.designer.processor.grid.entity.numberRange'),
type: 'code-mirror',
rows: 1,
showIf: (arg) => {
return 'NUMBER_RANGE' === arg.form.getFieldValue('type');
},
},
{
name: 'conditionRange',
label: $t('re.resources.designer.processor.grid.entity.conditionRange'),
type: 'code-mirror',
rows: 1,
showIf: (arg) => {
return 'CONDITION_RANGE' === arg.form.getFieldValue('type');
},
},
{
name: 'decisionTable2C',
label: $t('re.resources.designer.processor.grid.entity.decisionTable2C'),
type: 'code-mirror',
rows: 1,
showIf: (arg) => {
return 'DECISION_TABLE_2C' === arg.form.getFieldValue('type');
},
},
{
name: 'decisionTable',
label: $t('re.resources.designer.processor.grid.entity.decisionTable'),
type: 'code-mirror',
rows: 1,
showIf: (arg) => {
return 'DECISION_TABLE' === arg.form.getFieldValue('type');
},
},
{
name: 'decisionTree',
label: $t('re.resources.designer.processor.grid.entity.decisionTree'),
type: 'code-mirror',
rows: 1,
showIf: (arg) => {
return 'DECISION_TREE' === arg.form.getFieldValue('type');
},
},
{
name: 'executionFlow',
label: $t('re.resources.designer.processor.grid.entity.executionFlow'),
type: 'code-mirror',
rows: 1,
showIf: (arg) => {
return 'EXECUTION_FLOW' === arg.form.getFieldValue('type');
},
},
{
name: 'pmml',
label: $t('re.resources.designer.processor.grid.entity.pmml'),
type: 'code-mirror',
rows: 1,
showIf: (arg) => {
return 'PMML' === arg.form.getFieldValue('type');
},
},
{
name: 'groovyScript',
label: $t('re.resources.designer.processor.grid.entity.groovyScript'),
type: 'code-mirror',
rows: 1,
showIf: (arg) => {
return 'GROOVY_SCRIPT' === arg.form.getFieldValue('type');
},
},
{
name: 'sqlDatasourceName',
label: $t('re.resources.designer.processor.grid.entity.sqlDatasourceName'),
type: 'select',
rows: 1,
showIf: (arg) => {
return 'SQL' === arg.form.getFieldValue('type');
},
},
{
name: 'sql',
label: $t('re.resources.designer.processor.grid.entity.sql'),
type: 'select',
rows: 1,
showIf: (arg) => {
return 'SQL' === arg.form.getFieldValue('type');
},
},
{
name: 'sqlParameterValues',
label: $t('re.resources.designer.processor.grid.entity.sqlParameterValues'),
type: 'select',
rows: 1,
showIf: (arg) => {
return 'SQL' === arg.form.getFieldValue('type');
},
},
{
name: 'sqlFieldMapping',
label: $t('re.resources.designer.processor.grid.entity.sqlFieldMapping'),
type: 'select',
rows: 1,
showIf: (arg) => {
return 'SQL' === arg.form.getFieldValue('type');
},
},
],
},
}"
:viewer="{
panel: {
columnNum: 1,
fields: [
{ name: 'id', label: $t(''), primaryKey: true },
{ name: 'parameter', label: $t('') },
{ name: 'description', label: $t('') },
{ name: 'order', label: $t('') },
{ name: 'enable', label: $t('') },
{ name: 'type', label: $t('') },
{ name: 'optionCode', label: $t('re.resources.designer.processor.grid.entity.optionCode') },
{ name: 'arithmetic', label: $t('re.resources.designer.processor.grid.entity.arithmetic') },
{ name: 'ternaryCondition', label: $t('re.resources.designer.processor.grid.entity.ternaryCondition') },
{ name: 'ternaryTrue', label: $t('re.resources.designer.processor.grid.entity.ternaryTrue') },
{ name: 'ternaryFalse', label: $t('re.resources.designer.processor.grid.entity.ternaryFalse') },
{ name: 'when', label: $t('re.resources.designer.processor.grid.entity.when') },
{ name: 'then', label: $t('re.resources.designer.processor.grid.entity.then') },
{ name: 'isWhenThenShorted', label: $t('re.resources.designer.processor.grid.entity.isWhenThenShorted') },
{ name: 'rule', label: $t('re.resources.designer.processor.grid.entity.rule') },
{ name: 'singleRule', label: $t('re.resources.designer.processor.grid.entity.singleRule') },
{ name: 'numberRange', label: $t('re.resources.designer.processor.grid.entity.numberRange') },
{ name: 'conditionRange', label: $t('re.resources.designer.processor.grid.entity.conditionRange') },
{ name: 'decisionTable2C', label: $t('re.resources.designer.processor.grid.entity.decisionTable2C') },
{ name: 'decisionTable', label: $t('re.resources.designer.processor.grid.entity.decisionTable') },
{ name: 'groovyScript', label: $t('re.resources.designer.processor.grid.entity.groovyScript') },
{ name: 'sqlDatasourceName', label: $t('re.resources.designer.processor.grid.entity.sqlDatasourceName') },
{ name: 'sql', label: $t('re.resources.designer.processor.grid.entity.sql') },
{ name: 'sqlParameterValues', label: $t('re.resources.designer.processor.grid.entity.sqlParameterValues') },
{ name: 'sqlFieldMapping', label: $t('re.resources.designer.processor.grid.entity.sqlFieldMapping') },
{ name: 'dataComeFrom', label: $t('dataComeFrom') },
{ name: 'creator', label: $t('creator') },
{ name: 'createDate', label: $t('createDate') },
{ name: 'lastModifier', label: $t('lastModifier') },
{ name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.none() },
{ name: 'corporationCode', label: $t('corporationCode') },
],
},
}"
></w-grid>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue'; import { ref, onMounted } from 'vue';
import { Environment, Formater, EnumTools, Options } from 'platform-core';
const props = defineProps({
fetchDataUrl: { type: String, default: '' },
dataUrl: { type: String, default: '' },
parameter: { type: Object, default: undefined },
});
const emit = defineEmits<{
(e: 'rowClick', evt: Event, row: any, index: number): void;
(e: 'beforeRequestData', requestParams: URLSearchParams | any, callback: any): void;
}>();
const gridRef = ref();
const refresh = () => {
gridRef.value.refresh();
};
onMounted(() => {
gridRef.value.refresh();
});
defineExpose({
refresh,
});
const Enums = await EnumTools.fetch(['io.sc.engine.rule.core.enums.ProcessorType']);
</script> </script>

171
io.sc.engine.rule.frontend/src/views/resources/designer/TestCaseParameter.vue

@ -0,0 +1,171 @@
<template>
<w-grid
ref="gridRef"
:height="200"
:title="$t('re.resources.designer.testCase.grid.title')"
dense-body
class="px-1"
hide-bottom
:config-button="false"
selection="multiple"
:checkbox-selection="false"
:tree="true"
:tree-icon="
(row) => {
if (row.category === 'M') {
return { name: 'folder', color: 'amber' };
} else {
return { name: 'bi-p-circle' };
}
}
"
:fetch-data-url="Environment.apiContextPath('/api/re/testCaseParameter/findByTestCase?testCaseId=' + testCase.id)"
:data-url="Environment.apiContextPath('/api/re/testCaseParameter')"
:pageable="false"
:toolbar-configure="{ noIcon: false }"
:toolbar-actions="[
'refresh',
'separator',
'expand',
'separator',
{
extend: 'edit',
},
'separator',
{
name: 'execute',
label: $t('execute'),
icon: 'bi-caret-right',
},
'separator',
'view',
'separator',
'export',
]"
:columns="[
{ width: 300, name: 'name', label: $t('name') },
{ width: 100, name: 'parameterType', label: $t('type'), format: Formater.enum(Enums.ParameterType) },
{
width: 100,
name: 'valueType',
label: $t('re.resources.designer.parameter.grid.entity.valueType'),
format: (value) => {
return ValueTypeMap[value];
},
},
{ width: 100, name: 'defaultValue', label: $t('defaultValue') },
{ width: 100, name: 'inputValue', label: $t('re.resources.designer.testCaseParameter.grid.entity.inputValue') },
{ width: 100, name: 'expectValue', label: $t('re.resources.designer.testCaseParameter.grid.entity.expectValue') },
{ width: 100, name: 'resultValue', label: $t('re.resources.designer.testCaseParameter.grid.entity.resultValue') },
{ width: 100, name: 'skipCheck', label: $t('re.resources.designer.testCaseParameter.grid.entity.skipCheck') },
{ width: 100, name: 'testResult', label: $t('re.resources.designer.testCaseParameter.grid.entity.testResult'), format: passOrNotFormater },
]"
:editor="{
dialog: {
width: '600px',
height: '550px',
},
form: {
colsNum: 1,
fields: [
{ name: 'testCaseId', label: $t(''), type: 'text', defaultValue: testCase.id },
{ name: 'parent', label: $t(''), type: 'text' },
{ name: 'id', label: $t(''), type: 'text' },
{ name: 'category', label: $t('') },
{ name: 'code', label: $t('') },
{ name: 'name', label: $t('') },
{ name: 'skipCheck', label: $t('') },
{ name: 'source', label: $t('') },
{ name: 'type', label: $t('') },
{ name: 'parameterType', label: $t('') },
{ name: 'scoreCardVarType', label: $t('') },
{ name: 'valueType', label: $t('') },
{ name: 'defaultValue', label: $t('') },
{ name: 'inputValue', label: $t('') },
{ name: 'expectValue', label: $t('') },
{ name: 'resultValue', label: $t('') },
{ name: 'testResult', label: $t('') },
{ name: 'order', label: $t('') },
],
},
}"
:viewer="{
panel: {
columnNum: 1,
fields: [
{ name: 'dataComeFrom', label: $t('dataComeFrom') },
{ name: 'creator', label: $t('creator') },
{ name: 'createDate', label: $t('createDate') },
{ name: 'lastModifier', label: $t('lastModifier') },
{ name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.none() },
{ name: 'corporationCode', label: $t('corporationCode') },
],
},
}"
@row-click="
(evt, row, index) => {
emit('rowClick', evt, row, index);
}
"
@before-request-data="
() => {
emit('beforeRequestData');
}
"
></w-grid>
</template>
<script setup lang="ts">
import { onMounted, ref } from 'vue';
import { axios, Environment, EnumTools, Formater, Options, Tools } from 'platform-core';
const props = defineProps({
testCase: { type: Object, default: undefined },
});
const emit = defineEmits<{
(e: 'rowClick', evt: Event, row: any, index: number): void;
(e: 'beforeRequestData', requestParams: URLSearchParams | any, callback: any): void;
}>();
const gridRef = ref();
const refresh = () => {
gridRef.value.refresh();
};
defineExpose({
refresh,
});
const Enums = await EnumTools.fetch(['io.sc.engine.rule.core.enums.ParameterType']);
let ValueTypeMap = {};
const response = await axios.get(Environment.apiContextPath('/api/re/dictionary/getAllDictionaryMap'));
if (response && response.data) {
ValueTypeMap = {};
for (const item of response.data) {
ValueTypeMap[item.key] = item.value;
}
}
const passOrNotFormater = (value) => {
if (Tools.isUndefinedOrNull(value)) {
return '';
}
if (value === 'PASSED') {
return {
componentType: 'QIcon',
attrs: { name: 'bi-check-circle', size: '20px', color: 'green' },
};
} else if (value === 'UN_PASSED') {
return {
componentType: 'QIcon',
attrs: { name: 'bi-x-circle', size: '20px', color: 'red' },
};
} else if (value === 'ERROR') {
return {
componentType: 'QIcon',
attrs: { name: 'bi-x-circle', size: '20px', color: 'red' },
};
}
};
</script>

157
io.sc.engine.rule.frontend/src/views/resources/designer/Testcase.vue

@ -1,7 +1,160 @@
<template> <template>
<div>test case</div> <w-grid
ref="gridRef"
:height="200"
:title="$t('re.resources.designer.testCase.grid.title')"
dense-body
class="px-1"
hide-bottom
:config-button="false"
selection="multiple"
:checkbox-selection="false"
:tree="false"
:fetch-data-url="Environment.apiContextPath('/api/re/testCase/findByOwnerId?ownerId=' + model.resource)"
:data-url="Environment.apiContextPath('/api/re/testCase')"
:pageable="true"
:toolbar-configure="{ noIcon: false }"
:toolbar-actions="[
'refresh',
'separator',
'add',
'clone',
{
extend: 'clone',
name: 'deepClone',
label: $t('deepClone'),
icon: 'bi-copy',
click: (arg) => {},
},
'edit',
'remove',
'separator',
{
name: 'execute',
label: $t('execute'),
icon: 'bi-caret-right',
},
{
name: 'executeAll',
label: $t('executeAll'),
icon: 'bi-caret-right-fill',
},
'view',
'separator',
'export',
]"
:columns="[
{ width: 50, name: 'order', label: $t('order'), hidden: true },
{ width: 100, name: 'id', label: $t('id'), hidden: true },
{
width: 100,
name: 'testResult',
label: $t('re.resources.designer.testCase.grid.entity.testResult'),
align: 'center',
format: (value, row) => {
if (row.testResult) {
if (row.testResult === 'PASSED') {
return {};
} else {
return {};
}
}
return '';
},
},
{ width: 120, name: 'lastTestDate', label: $t('re.resources.designer.testCase.grid.entity.lastTestDate') },
{ width: 400, name: 'name', label: $t('name') },
{ width: '100%', name: 'description', label: $t('description') },
]"
:editor="{
dialog: {
width: '600px',
height: '250px',
},
form: {
colsNum: 1,
fields: [
{ name: 'order', label: $t('order'), type: 'text', hidden: true },
{ name: 'id', label: $t('id'), type: 'text', hidden: true },
{ name: 'ownerType', label: $t('ownerType'), type: 'text', defaultValue: 'MODEL', hidden: true },
{ name: 'owner', label: $t('owner'), type: 'text', defaultValue: model.resource, hidden: true },
{ name: 'ownerId', label: $t('ownerId'), type: 'text', defaultValue: model.resource, hidden: true },
{ name: 'name', label: $t('name'), type: 'text', required: true },
{ name: 'description', label: $t('description'), type: 'text' },
],
},
}"
:viewer="{
panel: {
columnNum: 1,
fields: [
{ name: 'order', label: $t('order') },
{ name: 'id', label: $t('id') },
{ name: 'name', label: $t('name') },
{ name: 'description', label: $t('description') },
{ name: 'dataComeFrom', label: $t('dataComeFrom') },
{ name: 'creator', label: $t('creator') },
{ name: 'createDate', label: $t('createDate') },
{ name: 'lastModifier', label: $t('lastModifier') },
{ name: 'lastModifyDate', label: $t('lastModifyDate'), format: Formater.none() },
{ name: 'corporationCode', label: $t('corporationCode') },
],
},
}"
@row-click="
(evt, row, index) => {
emit('rowClick', evt, row, index);
}
"
@before-request-data="
() => {
emit('beforeRequestData');
}
"
></w-grid>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue'; import { onMounted, ref } from 'vue';
import { axios, Environment, EnumTools, Formater, Options, Tools } from 'platform-core';
const props = defineProps({
model: { type: Object, default: undefined },
});
const emit = defineEmits<{
(e: 'rowClick', evt: Event, row: any, index: number): void;
(e: 'beforeRequestData', requestParams: URLSearchParams | any, callback: any): void;
}>();
const gridRef = ref();
const refresh = () => {
gridRef.value.refresh();
};
defineExpose({
refresh,
});
const Enums = await EnumTools.fetch([
'io.sc.platform.core.enums.RoundingMode',
'io.sc.engine.rule.core.enums.ParameterType',
'io.sc.engine.rule.core.enums.DeployStatus',
]);
let ValueTypeMap = {};
const ValueTypeList = [];
const response = await axios.get(Environment.apiContextPath('/api/re/dictionary/getAllDictionaryMap'));
if (response && response.data) {
ValueTypeMap = {};
ValueTypeList.splice(0, ValueTypeList.length);
for (const item of response.data) {
ValueTypeMap[item.key] = item.value;
ValueTypeList.push({ value: item.key, label: item.value });
}
}
onMounted(() => {
gridRef.value.refresh();
});
</script> </script>

10
io.sc.engine.rule.frontend/src/views/resources/designer/Validator.vue

@ -10,7 +10,7 @@
selection="multiple" selection="multiple"
:checkbox-selection="false" :checkbox-selection="false"
:tree="false" :tree="false"
:fetch-data-url="Environment.apiContextPath('/api/re/model/parameter/validator/findValidatorByParameterId?parameterId=' + parameter.id)" :fetch-data-url="Environment.apiContextPath('/api/re/model/parameter/validator/findByParameterId?parameterId=' + parameter.id)"
:data-url="Environment.apiContextPath('/api/re/model/parameter/validator')" :data-url="Environment.apiContextPath('/api/re/model/parameter/validator')"
:pageable="false" :pageable="false"
:toolbar-configure="{ noIcon: false }" :toolbar-configure="{ noIcon: false }"
@ -149,9 +149,9 @@
></w-grid> ></w-grid>
</template> </template>
<script setup lang="ts"> <script setup lang="ts">
import { ref } from 'vue'; import { ref, onMounted } from 'vue';
import { useI18n } from 'vue-i18n'; import { useI18n } from 'vue-i18n';
import { axios, Environment, EnumTools, Formater, Options, Tools } from 'platform-core'; import { Environment, EnumTools, Formater, Tools } from 'platform-core';
const props = defineProps({ const props = defineProps({
fetchDataUrl: { type: String, default: '' }, fetchDataUrl: { type: String, default: '' },
@ -205,6 +205,10 @@ const refresh = () => {
gridRef.value.refresh(); gridRef.value.refresh();
}; };
onMounted(() => {
gridRef.value.refresh();
});
defineExpose({ defineExpose({
refresh, refresh,
}); });

6
io.sc.engine.rule.frontend/util-components-generator.cjs

@ -13,7 +13,7 @@ content +='/**\n';
content +=' * 此文件为自动生成文件,请勿修改\n'; content +=' * 此文件为自动生成文件,请勿修改\n';
content +=' */\n\n'; content +=' */\n\n';
for(const route of routesJson){ for(const route of routesJson){
const componentName =route.component.substring(route.component.lastIndexOf('.')+1); const componentName =route.component.replaceAll('.','_');
const componentPath =route.componentPath; const componentPath =route.componentPath;
content +=`import ${componentName} from '${componentPath}';\n`; content +=`import ${componentName} from '${componentPath}';\n`;
} }
@ -21,7 +21,7 @@ for(const route of routesJson){
content +='\n'; content +='\n';
content +='const localComponents = { \n'; content +='const localComponents = { \n';
for(const route of routesJson){ for(const route of routesJson){
const componentName =route.component.substring(route.component.lastIndexOf('.')+1); const componentName =route.component.replaceAll('.','_');
content +=`'${route.component}': ${componentName},\n`; content +=`'${route.component}': ${componentName},\n`;
} }
content +='}\n\n'; content +='}\n\n';
@ -29,4 +29,4 @@ content +='export default localComponents;\n';
fs.writeFileSync('./src/components/index.ts', content); fs.writeFileSync('./src/components/index.ts', content);
console.info('components generated!'); console.info('components generated!');

2
io.sc.engine.rule.frontend/webpack.config.common.cjs

@ -123,7 +123,7 @@ module.exports = {
toType: 'dir', toType: 'dir',
filter: async (resourcePath) => { filter: async (resourcePath) => {
// 不复制 index.html 因为 index.html 已经由 HtmlWebpackPlugin 插件生成了 // 不复制 index.html 因为 index.html 已经由 HtmlWebpackPlugin 插件生成了
if (resourcePath.endsWith('index.html') || resourcePath.endsWith('.DS_Store')) { if (resourcePath.endsWith('/public/index.html') || resourcePath.endsWith('.DS_Store')) {
return false; return false;
} }
return true; return true;

3
io.sc.engine.rule.frontend/webpack.config.mf.cjs

@ -2,7 +2,7 @@
* webpack module federation 配置 * webpack module federation 配置
*/ */
const fs = require('fs'); // 文件读取 const fs = require('fs'); // 文件读取
const Json5 =require('json5'); // json5 const Json5 =require('json5'); // json5
const { ModuleFederationPlugin } = require('webpack').container; // webpack 模块联邦插件 const { ModuleFederationPlugin } = require('webpack').container; // webpack 模块联邦插件
const packageJson = require('./package.json'); // package.json const packageJson = require('./package.json'); // package.json
const projectName =packageJson.name; // 项目名称 const projectName =packageJson.name; // 项目名称
@ -56,7 +56,6 @@ module.exports = {
'platform-core': { requiredVersion: deps['platform-core'], singleton: true }, 'platform-core': { requiredVersion: deps['platform-core'], singleton: true },
'quasar': { requiredVersion: deps['quasar'], singleton: true }, 'quasar': { requiredVersion: deps['quasar'], singleton: true },
'vue': { requiredVersion: deps['vue'], singleton: true }, 'vue': { requiredVersion: deps['vue'], singleton: true },
'vue-codemirror6': { requiredVersion: deps['vue-codemirror6'], singleton: true },
'vue-dompurify-html':{ requiredVersion: deps['vue-dompurify-html'], singleton: true }, 'vue-dompurify-html':{ requiredVersion: deps['vue-dompurify-html'], singleton: true },
'vue-i18n': { requiredVersion: deps['vue-i18n'], singleton: true }, 'vue-i18n': { requiredVersion: deps['vue-i18n'], singleton: true },
'vue-router': { requiredVersion: deps['vue-router'], singleton: true }, 'vue-router': { requiredVersion: deps['vue-router'], singleton: true },

4
io.sc.engine.rule.frontend/webpack.env.build.cjs

@ -38,7 +38,7 @@ module.exports = merge(common, mf, {
}, },
'codemirror':{ 'codemirror':{
name: 'codemirror', name: 'codemirror',
test: /[\\/]node_modules[\\/](codemirror|vue-codemirror6|@codemirror[\\/]autocomplete|@codemirror[\\/]commands|@codemirror[\\/]lang-html|@codemirror[\\/]lang-java|@codemirror[\\/]lang-javascript|@codemirror[\\/]lang-json|@codemirror[\\/]lang-sql|@codemirror[\\/]lang-xml|@codemirror[\\/]language|@codemirror[\\/]search|@codemirror[\\/]state|@codemirror[\\/]view)[\\/]/, test: /[\\/]node_modules[\\/](codemirror|@codemirror[\\/]autocomplete|@codemirror[\\/]commands|@codemirror[\\/]lang-html|@codemirror[\\/]lang-java|@codemirror[\\/]lang-javascript|@codemirror[\\/]lang-json|@codemirror[\\/]lang-sql|@codemirror[\\/]lang-xml|@codemirror[\\/]language|@codemirror[\\/]search|@codemirror[\\/]state|@codemirror[\\/]view)[\\/]/,
priority: 20, priority: 20,
chunks: 'all', chunks: 'all',
enforce: true enforce: true
@ -80,4 +80,4 @@ module.exports = merge(common, mf, {
} }
} }
}, },
}); });

20
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/controller/ParameterInOptionItemWebController.java

@ -4,15 +4,31 @@ import io.sc.engine.rule.server.model.entity.ParameterInOptionItemEntity;
import io.sc.engine.rule.server.model.repository.ParameterInOptionItemRepository; import io.sc.engine.rule.server.model.repository.ParameterInOptionItemRepository;
import io.sc.engine.rule.server.model.service.ParameterInOptionItemService; import io.sc.engine.rule.server.model.service.ParameterInOptionItemService;
import io.sc.engine.rule.server.model.vo.ParameterInOptionItemVo; import io.sc.engine.rule.server.model.vo.ParameterInOptionItemVo;
import io.sc.engine.rule.server.model.vo.ParameterValidatorVo;
import io.sc.platform.mvc.controller.support.RestCrudController; import io.sc.platform.mvc.controller.support.RestCrudController;
import io.sc.platform.orm.util.EntityVoUtil;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.Collections;
import java.util.List;
/** /**
* 模型参数选项 Controller * 模型参数选项 Controller
*/ */
@Controller @Controller
@RequestMapping("/api/re/model/parameter/item") @RequestMapping("/api/re/model/parameter/option")
public class ParameterInOptionItemWebController extends RestCrudController<ParameterInOptionItemVo,ParameterInOptionItemEntity,String,ParameterInOptionItemRepository,ParameterInOptionItemService> { public class ParameterInOptionItemWebController extends RestCrudController<ParameterInOptionItemVo,ParameterInOptionItemEntity,String,ParameterInOptionItemRepository,ParameterInOptionItemService> {
@GetMapping("findByParameterId")
@ResponseBody
public List<ParameterValidatorVo> findByParameterId(@RequestParam(name="parameterId",required = false)String parameterId) throws Exception {
if(!StringUtils.hasText(parameterId)){
return Collections.emptyList();
}
return EntityVoUtil.toVo(service.findByParameterId(parameterId));
}
} }

13
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/controller/ParameterProcessorWebController.java

@ -9,9 +9,11 @@ import io.sc.engine.rule.server.model.service.ParameterService;
import io.sc.engine.rule.server.model.support.processor.SqlQueryRequest; import io.sc.engine.rule.server.model.support.processor.SqlQueryRequest;
import io.sc.engine.rule.server.model.support.processor.SqlQueryResult; import io.sc.engine.rule.server.model.support.processor.SqlQueryResult;
import io.sc.engine.rule.server.model.vo.ParameterProcessorVo; import io.sc.engine.rule.server.model.vo.ParameterProcessorVo;
import io.sc.engine.rule.server.model.vo.ParameterValidatorVo;
import io.sc.engine.rule.server.util.CodeAndNameMapping; import io.sc.engine.rule.server.util.CodeAndNameMapping;
import io.sc.engine.rule.server.util.VariableCodeAndNameReplacer; import io.sc.engine.rule.server.util.VariableCodeAndNameReplacer;
import io.sc.platform.mvc.controller.support.RestCrudController; import io.sc.platform.mvc.controller.support.RestCrudController;
import io.sc.platform.orm.util.EntityVoUtil;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
@ -21,6 +23,8 @@ import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.io.BufferedOutputStream; import java.io.BufferedOutputStream;
import java.util.Collections;
import java.util.List;
import java.util.Map; import java.util.Map;
/** /**
@ -30,6 +34,15 @@ import java.util.Map;
@RequestMapping("/api/re/model/parameter/processor") @RequestMapping("/api/re/model/parameter/processor")
public class ParameterProcessorWebController extends RestCrudController<ParameterProcessorVo,ParameterProcessorEntity,String,ParameterProcessorRepository,ParameterProcessorService> { public class ParameterProcessorWebController extends RestCrudController<ParameterProcessorVo,ParameterProcessorEntity,String,ParameterProcessorRepository,ParameterProcessorService> {
@Autowired private ParameterService parameterService; @Autowired private ParameterService parameterService;
@GetMapping("findByParameterId")
@ResponseBody
public List<ParameterProcessorVo> findByParameterId(@RequestParam(name="parameterId",required = false)String parameterId) throws Exception {
if(!StringUtils.hasText(parameterId)){
return Collections.emptyList();
}
return EntityVoUtil.toVo(service.findByParameterId(parameterId));
}
//决策树========================================================================================================== //决策树==========================================================================================================
@RequestMapping(value="editDecisionTreeById/{processorId}",method=RequestMethod.GET) @RequestMapping(value="editDecisionTreeById/{processorId}",method=RequestMethod.GET)

4
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/controller/ParameterValidatorWebController.java

@ -27,9 +27,9 @@ import java.util.List;
@Controller @Controller
@RequestMapping("/api/re/model/parameter/validator") @RequestMapping("/api/re/model/parameter/validator")
public class ParameterValidatorWebController extends RestCrudController<ParameterValidatorVo,ParameterValidatorEntity,String,ParameterValidatorRepository,ParameterValidatorService> { public class ParameterValidatorWebController extends RestCrudController<ParameterValidatorVo,ParameterValidatorEntity,String,ParameterValidatorRepository,ParameterValidatorService> {
@GetMapping("findValidatorByParameterId") @GetMapping("findByParameterId")
@ResponseBody @ResponseBody
public List<ParameterValidatorVo> findValidatorByParameterId(@RequestParam(name="parameterId",required = false)String parameterId) throws Exception { public List<ParameterValidatorVo> findByParameterId(@RequestParam(name="parameterId",required = false)String parameterId) throws Exception {
if(!StringUtils.hasText(parameterId)){ if(!StringUtils.hasText(parameterId)){
return Collections.emptyList(); return Collections.emptyList();
} }

2
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/controller/ParameterWebController.java

@ -31,7 +31,7 @@ import java.util.Locale;
public class ParameterWebController extends RestCrudController<ParameterVo,ParameterEntity,String,ParameterRepository,ParameterService> { public class ParameterWebController extends RestCrudController<ParameterVo,ParameterEntity,String,ParameterRepository,ParameterService> {
private static final Logger log =LoggerFactory.getLogger(ParameterWebController.class); private static final Logger log =LoggerFactory.getLogger(ParameterWebController.class);
@GetMapping("findParameterByModelId") @GetMapping("findByModelId")
@ResponseBody @ResponseBody
public List<ParameterVo> findParameterByModelId(@RequestParam(name="modelId",required = false)String modelId) throws Exception { public List<ParameterVo> findParameterByModelId(@RequestParam(name="modelId",required = false)String modelId) throws Exception {
if(!StringUtils.hasText(modelId)){ if(!StringUtils.hasText(modelId)){

1
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/entity/ModelEntity.java

@ -98,6 +98,7 @@ public class ModelEntity extends AuditorEntity<ModelVo> implements DeepClone, Id
vo.setCategory(this.getCategory()); vo.setCategory(this.getCategory());
vo.setExecuteMode(this.getExecuteMode()); vo.setExecuteMode(this.getExecuteMode());
vo.setParent(this.getParent()==null?null:this.getParent().getId()); vo.setParent(this.getParent()==null?null:this.getParent().getId());
vo.setResource(this.getResource()==null?null:this.getResource().getId());
return vo; return vo;
} }

6
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/repository/ParameterInOptionItemRepository.java

@ -1,11 +1,17 @@
package io.sc.engine.rule.server.model.repository; package io.sc.engine.rule.server.model.repository;
import io.sc.engine.rule.server.model.entity.ParameterValidatorEntity;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
import io.sc.engine.rule.server.model.entity.ParameterInOptionItemEntity; import io.sc.engine.rule.server.model.entity.ParameterInOptionItemEntity;
import io.sc.platform.orm.repository.DaoRepository; import io.sc.platform.orm.repository.DaoRepository;
import java.util.List;
public interface ParameterInOptionItemRepository extends DaoRepository<ParameterInOptionItemEntity,String>{ public interface ParameterInOptionItemRepository extends DaoRepository<ParameterInOptionItemEntity,String>{
@Query("select max(e.order)+1 from ParameterInOptionItemEntity e where e.parameter.id=:parameterId") @Query("select max(e.order)+1 from ParameterInOptionItemEntity e where e.parameter.id=:parameterId")
public Integer getNextOrder(@Param("parameterId") String parameterId); public Integer getNextOrder(@Param("parameterId") String parameterId);
@Query("select e from ParameterInOptionItemEntity e where e.parameter.id=:parameterId order by e.order")
public List<ParameterInOptionItemEntity> findByParameterId(@Param("parameterId") String parameterId);
} }

4
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/repository/ParameterProcessorRepository.java

@ -3,6 +3,7 @@ package io.sc.engine.rule.server.model.repository;
import java.util.List; import java.util.List;
import java.util.Set; import java.util.Set;
import io.sc.engine.rule.server.model.entity.ParameterValidatorEntity;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity; import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity;
@ -24,6 +25,9 @@ import io.sc.engine.rule.server.model.entity.processor.WhenThenParameterProcesso
import io.sc.platform.orm.repository.DaoRepository; import io.sc.platform.orm.repository.DaoRepository;
public interface ParameterProcessorRepository extends DaoRepository<ParameterProcessorEntity,String>{ public interface ParameterProcessorRepository extends DaoRepository<ParameterProcessorEntity,String>{
@Query("select e from ParameterProcessorEntity e where e.parameter.id=:parameterId order by e.order")
public List<ParameterProcessorEntity> findByParameterId(@Param("parameterId") String parameterId);
@Query("select max(e.order)+1 from ParameterProcessorEntity e where e.parameter.id=:parameterId") @Query("select max(e.order)+1 from ParameterProcessorEntity e where e.parameter.id=:parameterId")
public Integer getNextOrder(@Param("parameterId") String parameterId); public Integer getNextOrder(@Param("parameterId") String parameterId);

10
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/ParameterInOptionItemService.java

@ -4,9 +4,17 @@ import io.sc.engine.rule.server.model.entity.ParameterInOptionItemEntity;
import io.sc.engine.rule.server.model.repository.ParameterInOptionItemRepository; import io.sc.engine.rule.server.model.repository.ParameterInOptionItemRepository;
import io.sc.platform.orm.service.DaoService; import io.sc.platform.orm.service.DaoService;
import java.util.List;
/** /**
* 输入参数选项服务接口 * 输入参数选项服务接口
*/ */
public interface ParameterInOptionItemService extends DaoService<ParameterInOptionItemEntity, String, ParameterInOptionItemRepository>{ public interface ParameterInOptionItemService extends DaoService<ParameterInOptionItemEntity, String, ParameterInOptionItemRepository>{
/**
* 通过参数ID查找选项
* @param parameterId 参数ID
* @return 选项列表
* @throws Exception 违例
*/
public List<ParameterInOptionItemEntity> findByParameterId(String parameterId) throws Exception;
} }

10
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/ParameterProcessorService.java

@ -1,8 +1,10 @@
package io.sc.engine.rule.server.model.service; package io.sc.engine.rule.server.model.service;
import java.io.OutputStream; import java.io.OutputStream;
import java.util.List;
import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity; import io.sc.engine.rule.server.model.entity.ParameterProcessorEntity;
import io.sc.engine.rule.server.model.entity.ParameterValidatorEntity;
import io.sc.engine.rule.server.model.repository.ParameterProcessorRepository; import io.sc.engine.rule.server.model.repository.ParameterProcessorRepository;
import io.sc.engine.rule.server.model.support.processor.SqlQueryRequest; import io.sc.engine.rule.server.model.support.processor.SqlQueryRequest;
import io.sc.engine.rule.server.model.support.processor.SqlQueryResult; import io.sc.engine.rule.server.model.support.processor.SqlQueryResult;
@ -12,6 +14,14 @@ import io.sc.platform.orm.service.DaoService;
* 模型参数处理器服务接口 * 模型参数处理器服务接口
*/ */
public interface ParameterProcessorService extends DaoService<ParameterProcessorEntity, String, ParameterProcessorRepository>{ public interface ParameterProcessorService extends DaoService<ParameterProcessorEntity, String, ParameterProcessorRepository>{
/**
* 通过参数ID查找参数处理器
* @param parameterId 参数ID
* @return 参数处理器列表
* @throws Exception 违例
*/
public List<ParameterProcessorEntity> findByParameterId(String parameterId) throws Exception;
public void importFromCsv(String parameterId,String csvContent, String splitChar) throws Exception; public void importFromCsv(String parameterId,String csvContent, String splitChar) throws Exception;
public SqlQueryResult executeSql(SqlQueryRequest request); public SqlQueryResult executeSql(SqlQueryRequest request);
public void generateImage(String parameterProcessorId,OutputStream outputStream,String format) throws Exception; public void generateImage(String parameterProcessorId,OutputStream outputStream,String format) throws Exception;

8
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/impl/ParameterInOptionItemServiceImpl.java

@ -6,8 +6,16 @@ import io.sc.engine.rule.server.model.service.ParameterInOptionItemService;
import io.sc.platform.orm.service.impl.DaoServiceImpl; import io.sc.platform.orm.service.impl.DaoServiceImpl;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import java.util.List;
@Service("reInputParameterOptionService") @Service("reInputParameterOptionService")
public class ParameterInOptionItemServiceImpl extends DaoServiceImpl<ParameterInOptionItemEntity, String, ParameterInOptionItemRepository> implements ParameterInOptionItemService{ public class ParameterInOptionItemServiceImpl extends DaoServiceImpl<ParameterInOptionItemEntity, String, ParameterInOptionItemRepository> implements ParameterInOptionItemService{
@Override
public List<ParameterInOptionItemEntity> findByParameterId(String parameterId) throws Exception {
return repository.findByParameterId(parameterId);
}
@Override @Override
public ParameterInOptionItemEntity add(ParameterInOptionItemEntity entity) throws Exception { public ParameterInOptionItemEntity add(ParameterInOptionItemEntity entity) throws Exception {
Integer nextOrder =repository.getNextOrder(entity.getParameter().getId()); Integer nextOrder =repository.getNextOrder(entity.getParameter().getId());

6
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/model/service/impl/ParameterProcessorServiceImpl.java

@ -49,7 +49,11 @@ public class ParameterProcessorServiceImpl
@Autowired private ApplicationContext applicationContext; @Autowired private ApplicationContext applicationContext;
@Autowired private ParameterService parameterService; @Autowired private ParameterService parameterService;
@Autowired private JdbcTemplate jdbcTemplate; @Autowired private JdbcTemplate jdbcTemplate;
@Override
public List<ParameterProcessorEntity> findByParameterId(String parameterId) throws Exception {
return repository.findByParameterId(parameterId);
}
@Override @Override
public ParameterProcessorEntity add(ParameterProcessorEntity entity) throws Exception { public ParameterProcessorEntity add(ParameterProcessorEntity entity) throws Exception {

4
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/bean/ModelTestCaseParameterBuilder.java

@ -45,7 +45,7 @@ public class ModelTestCaseParameterBuilder implements TestCaseParameterBuilder{
if(tree!=null && modelEntity!=null) { if(tree!=null && modelEntity!=null) {
//添加模型 //添加模型
TestCaseParameterWrapper modelNode =modelEntity.toTestCaseParameterWrapper(); TestCaseParameterWrapper modelNode =modelEntity.toTestCaseParameterWrapper();
modelNode.setParent(parentNode); modelNode.setParent(parentNode==null?null:parentNode.getId());
tree.add(modelNode); tree.add(modelNode);
//添加模型包含的子模型 //添加模型包含的子模型
List<ModelEntity> children =modelEntity.getChildren(); List<ModelEntity> children =modelEntity.getChildren();
@ -59,7 +59,7 @@ public class ModelTestCaseParameterBuilder implements TestCaseParameterBuilder{
if(parameters!=null && parameters.size()>0) { if(parameters!=null && parameters.size()>0) {
for(ParameterEntity parameter : parameters) { for(ParameterEntity parameter : parameters) {
TestCaseParameterWrapper wrapper =parameter.toTestCaseParameterWrapper(); TestCaseParameterWrapper wrapper =parameter.toTestCaseParameterWrapper();
wrapper.setParent(modelNode); wrapper.setParent(modelNode==null?null:modelNode.getId());
tree.add(wrapper); tree.add(wrapper);
/* /*
if(ParameterType.INDICATOR.equals(parameter.getType())){ if(ParameterType.INDICATOR.equals(parameter.getType())){

14
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/controller/TestCaseParameterWebController.java

@ -1,5 +1,6 @@
package io.sc.engine.rule.server.testcase.controller; package io.sc.engine.rule.server.testcase.controller;
import io.sc.engine.rule.server.model.vo.ParameterValidatorVo;
import io.sc.engine.rule.server.testcase.entity.TestCaseEntity; import io.sc.engine.rule.server.testcase.entity.TestCaseEntity;
import io.sc.engine.rule.server.testcase.entity.TestCaseParameterEntity; import io.sc.engine.rule.server.testcase.entity.TestCaseParameterEntity;
import io.sc.engine.rule.server.testcase.repository.TestCaseParameterRepository; import io.sc.engine.rule.server.testcase.repository.TestCaseParameterRepository;
@ -7,7 +8,9 @@ import io.sc.engine.rule.server.testcase.service.TestCaseParameterService;
import io.sc.engine.rule.server.testcase.vo.TestCaseParameterVo; import io.sc.engine.rule.server.testcase.vo.TestCaseParameterVo;
import io.sc.engine.rule.server.testcase.wrapper.TestCaseParameterWrapper; import io.sc.engine.rule.server.testcase.wrapper.TestCaseParameterWrapper;
import io.sc.platform.mvc.controller.support.RestCrudController; import io.sc.platform.mvc.controller.support.RestCrudController;
import io.sc.platform.orm.util.EntityVoUtil;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.validation.BindingResult; import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
@ -20,14 +23,13 @@ import java.util.List;
@Controller @Controller
@RequestMapping("/api/re/testCaseParameter") @RequestMapping("/api/re/testCaseParameter")
public class TestCaseParameterWebController extends RestCrudController<TestCaseParameterVo,TestCaseParameterEntity,String,TestCaseParameterRepository,TestCaseParameterService> { public class TestCaseParameterWebController extends RestCrudController<TestCaseParameterVo,TestCaseParameterEntity,String,TestCaseParameterRepository,TestCaseParameterService> {
@RequestMapping(value="isc/fetchData", method=RequestMethod.GET) @GetMapping("findByTestCase")
@ResponseBody @ResponseBody
public List<TestCaseParameterWrapper> fetchData(HttpServletRequest request,HttpServletResponse response, TestCaseParameterEntity queryExampleEntity) throws Exception { public List<TestCaseParameterWrapper> findByTestCase(@RequestParam(name="testCaseId",required = false)String testCaseId) throws Exception {
TestCaseEntity testCase =queryExampleEntity.getTestCase(); if(!StringUtils.hasText(testCaseId)){
if(testCase!=null) { return Collections.emptyList();
return service.buildTestCaseParameterWrappers(testCase.getId());
} }
return Collections.emptyList(); return service.buildTestCaseParameterWrappers(testCaseId);
} }
@RequestMapping(value="isc/updateData", method=RequestMethod.POST) @RequestMapping(value="isc/updateData", method=RequestMethod.POST)

21
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/controller/TestCaseWebController.java

@ -1,26 +1,37 @@
package io.sc.engine.rule.server.testcase.controller; package io.sc.engine.rule.server.testcase.controller;
import io.sc.engine.rule.server.model.vo.ParameterVo;
import io.sc.engine.rule.server.testcase.entity.TestCaseEntity; import io.sc.engine.rule.server.testcase.entity.TestCaseEntity;
import io.sc.engine.rule.server.testcase.repository.TestCaseRepository; import io.sc.engine.rule.server.testcase.repository.TestCaseRepository;
import io.sc.engine.rule.server.testcase.service.TestCaseService; import io.sc.engine.rule.server.testcase.service.TestCaseService;
import io.sc.engine.rule.server.testcase.vo.TestCaseVo; import io.sc.engine.rule.server.testcase.vo.TestCaseVo;
import io.sc.engine.rule.server.testcase.wrapper.TestCaseWrapper; import io.sc.engine.rule.server.testcase.wrapper.TestCaseWrapper;
import io.sc.platform.mvc.controller.support.RestCrudController; import io.sc.platform.mvc.controller.support.RestCrudController;
import io.sc.platform.orm.service.support.QueryParameter;
import io.sc.platform.orm.service.support.QueryResult; import io.sc.platform.orm.service.support.QueryResult;
import io.sc.platform.orm.util.EntityVoUtil;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.stereotype.Controller; import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils; import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.*;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.Collections;
import java.util.List;
@Controller @Controller
@RequestMapping("/re/testCase") @RequestMapping("/api/re/testCase")
public class TestCaseWebController extends RestCrudController<TestCaseVo,TestCaseEntity,String,TestCaseRepository,TestCaseService> { public class TestCaseWebController extends RestCrudController<TestCaseVo,TestCaseEntity,String,TestCaseRepository,TestCaseService> {
@RequestMapping(value="findByOwnerId", method=RequestMethod.GET)
@ResponseBody
public Page<TestCaseVo> findByOwnerId(@RequestParam(name="ownerId",required = false)String ownerId, QueryParameter queryParameter) throws Exception {
if(!StringUtils.hasText(ownerId)){
return QueryResult.emptyPage();
}
return EntityVoUtil.toVo(service.findByOwnerId(ownerId,queryParameter));
}
@RequestMapping(value="isc/fetchAll", method=RequestMethod.GET) @RequestMapping(value="isc/fetchAll", method=RequestMethod.GET)
@ResponseBody @ResponseBody
public Page<TestCaseWrapper> fetchAll(HttpServletRequest request,HttpServletResponse response,TestCaseEntity queryExampleEntity) throws Exception{ public Page<TestCaseWrapper> fetchAll(HttpServletRequest request,HttpServletResponse response,TestCaseEntity queryExampleEntity) throws Exception{

10
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/entity/ResourceTestCaseEntity.java

@ -4,6 +4,7 @@ import com.fasterxml.jackson.annotation.JsonTypeName;
import io.sc.engine.rule.core.enums.TestCaseOwnerType; import io.sc.engine.rule.core.enums.TestCaseOwnerType;
import io.sc.engine.rule.server.resource.entity.ResourceEntity; import io.sc.engine.rule.server.resource.entity.ResourceEntity;
import io.sc.engine.rule.server.testcase.vo.ResourceTestCaseVo; import io.sc.engine.rule.server.testcase.vo.ResourceTestCaseVo;
import io.sc.engine.rule.server.testcase.vo.TestCaseVo;
import io.sc.platform.orm.DeepClone; import io.sc.platform.orm.DeepClone;
import io.sc.platform.orm.IdClearable; import io.sc.platform.orm.IdClearable;
@ -23,6 +24,15 @@ public class ResourceTestCaseEntity extends TestCaseEntity implements DeepClone,
@JoinColumn(name="OWNER_ID_") @JoinColumn(name="OWNER_ID_")
protected ResourceEntity owner; protected ResourceEntity owner;
@Override
public void toVo(TestCaseVo vo) {
if(vo!=null && vo instanceof ResourceTestCaseVo){
super.toVo(vo);
ResourceTestCaseVo resourceTestCaseVo =(ResourceTestCaseVo)vo;
resourceTestCaseVo.setOwner(this.getOwner()==null?null:this.getOwner().getId());
}
}
@Override @Override
public ResourceTestCaseVo toVo() { public ResourceTestCaseVo toVo() {
ResourceTestCaseVo vo =new ResourceTestCaseVo(); ResourceTestCaseVo vo =new ResourceTestCaseVo();

15
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/entity/TestCaseEntity.java

@ -77,6 +77,21 @@ public class TestCaseEntity extends AuditorEntity<TestCaseVo> implements DeepClo
@OneToMany(mappedBy="testCase",cascade= {CascadeType.PERSIST}) @OneToMany(mappedBy="testCase",cascade= {CascadeType.PERSIST})
protected List<TestCaseParameterEntity> parameters =new ArrayList<TestCaseParameterEntity>(); protected List<TestCaseParameterEntity> parameters =new ArrayList<TestCaseParameterEntity>();
@Override
public void toVo(TestCaseVo vo) {
if(vo!=null) {
super.toVo(vo);
vo.setOwnerType(this.getOwnerType());
vo.setOwnerId(this.getOwnerId());
vo.setId(this.getId());
vo.setName(this.getName());
vo.setDescription(this.getDescription());
vo.setOrder(this.getOrder());
vo.setLastTestDate(this.getLastTestDate());
vo.setTestResult(this.getTestResult());
}
}
@Override @Override
public TestCaseVo toVo() { public TestCaseVo toVo() {
TestCaseVo vo =new TestCaseVo(); TestCaseVo vo =new TestCaseVo();

1
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/repository/TestCaseParameterRepository.java

@ -2,6 +2,7 @@ package io.sc.engine.rule.server.testcase.repository;
import java.util.List; import java.util.List;
import io.sc.engine.rule.server.model.entity.ParameterValidatorEntity;
import org.springframework.data.jpa.repository.Query; import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param; import org.springframework.data.repository.query.Param;
import io.sc.engine.rule.server.testcase.entity.TestCaseParameterEntity; import io.sc.engine.rule.server.testcase.entity.TestCaseParameterEntity;

8
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/repository/TestCaseRepository.java

@ -1,8 +1,14 @@
package io.sc.engine.rule.server.testcase.repository; package io.sc.engine.rule.server.testcase.repository;
import io.sc.engine.rule.server.model.entity.ParameterEntity;
import io.sc.engine.rule.server.testcase.entity.TestCaseEntity; import io.sc.engine.rule.server.testcase.entity.TestCaseEntity;
import io.sc.platform.orm.repository.DaoRepository; import io.sc.platform.orm.repository.DaoRepository;
import org.springframework.data.domain.Page;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.query.Param;
import java.util.List;
public interface TestCaseRepository extends DaoRepository<TestCaseEntity,String>{ public interface TestCaseRepository extends DaoRepository<TestCaseEntity,String>{
} }

12
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/service/TestCaseService.java

@ -1,5 +1,6 @@
package io.sc.engine.rule.server.testcase.service; package io.sc.engine.rule.server.testcase.service;
import io.sc.engine.rule.server.model.entity.ParameterEntity;
import io.sc.platform.orm.service.support.QueryParameter; import io.sc.platform.orm.service.support.QueryParameter;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import io.sc.engine.rule.server.testcase.entity.TestCaseEntity; import io.sc.engine.rule.server.testcase.entity.TestCaseEntity;
@ -7,7 +8,18 @@ import io.sc.engine.rule.server.testcase.repository.TestCaseRepository;
import io.sc.engine.rule.server.testcase.wrapper.TestCaseWrapper; import io.sc.engine.rule.server.testcase.wrapper.TestCaseWrapper;
import io.sc.platform.orm.service.DaoService; import io.sc.platform.orm.service.DaoService;
import java.util.List;
public interface TestCaseService extends DaoService<TestCaseEntity, String, TestCaseRepository>{ public interface TestCaseService extends DaoService<TestCaseEntity, String, TestCaseRepository>{
/**
* 通过所有者ID查找测试用例
* @param ownerId 所有者ID
* @param queryParameter 查询参数
* @return 测试用例列表
* @throws Exception 违例
*/
public Page<TestCaseEntity> findByOwnerId(String ownerId,QueryParameter queryParameter) throws Exception;
/** /**
* 深度克隆测试用例实体 * 深度克隆测试用例实体
* @param testCaseId 试用例实体ID * @param testCaseId 试用例实体ID

13
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/service/impl/TestCaseServiceImpl.java

@ -9,6 +9,7 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import io.sc.platform.orm.service.support.CriteriaBuilder;
import io.sc.platform.orm.service.support.QueryParameter; import io.sc.platform.orm.service.support.QueryParameter;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
@ -62,7 +63,17 @@ public class TestCaseServiceImpl extends DaoServiceImpl<TestCaseEntity, String,
@Autowired private ScoreCardTestCaseRepository scoreCardTestCaseRepository; @Autowired private ScoreCardTestCaseRepository scoreCardTestCaseRepository;
@Autowired private LibTestCaseRepository libTestCaseRepository; @Autowired private LibTestCaseRepository libTestCaseRepository;
@Autowired private JdbcTemplate jdbcTemplate; @Autowired private JdbcTemplate jdbcTemplate;
@Override
public Page<TestCaseEntity> findByOwnerId(String ownerId,QueryParameter queryParameter) throws Exception {
CriteriaBuilder<TestCaseEntity> cb =new CriteriaBuilder();
queryParameter.addCriteria(cb.and(
cb.equals("ownerId",ownerId)
));
//queryParameter.addCriterias(new CriteriaBuilder().equals("ownerId",ownerId).getCriteria());
return this.query(queryParameter);
}
@Override @Override
public TestCaseEntity add(TestCaseEntity entity) throws Exception { public TestCaseEntity add(TestCaseEntity entity) throws Exception {
Integer nextOrder =1; Integer nextOrder =1;

6
io.sc.engine.rule.server/src/main/java/io/sc/engine/rule/server/testcase/wrapper/TestCaseParameterWrapper.java

@ -14,7 +14,7 @@ import io.sc.engine.rule.server.testcase.entity.TestCaseParameterEntity;
*/ */
public class TestCaseParameterWrapper extends TestCaseParameter{ public class TestCaseParameterWrapper extends TestCaseParameter{
private String testCaseId; //测试用例ID private String testCaseId; //测试用例ID
private TestCaseParameterWrapper parent; //父 private String parent; //父ID
private String category; //分类(M:模型;P:参数) private String category; //分类(M:模型;P:参数)
private String name; //参数名称 private String name; //参数名称
private ParameterType parameterType; //参数类型(当测试的是模型时) private ParameterType parameterType; //参数类型(当测试的是模型时)
@ -45,11 +45,11 @@ public class TestCaseParameterWrapper extends TestCaseParameter{
return entity; return entity;
} }
public TestCaseParameterWrapper getParent() { public String getParent() {
return parent; return parent;
} }
public void setParent(TestCaseParameterWrapper parent) { public void setParent(String parent) {
this.parent = parent; this.parent = parent;
} }

11
io.sc.engine.rule.server/src/main/resources/liquibase/RE_1.0.0_20220515__Rule Engine Database Schema DDL.xml

@ -589,6 +589,9 @@
<!-- 测试用例表 --> <!-- 测试用例表 -->
<createTable tableName="RE_TEST_CASE" remarks="测试用例表"> <createTable tableName="RE_TEST_CASE" remarks="测试用例表">
<column name="ID_" type="NVARCHAR(36)" remarks="ID_">
<constraints primaryKey="true"/>
</column>
<column name="OWNER_TYPE_" type="NVARCHAR(20)" remarks="归属者类型"/> <column name="OWNER_TYPE_" type="NVARCHAR(20)" remarks="归属者类型"/>
<column name="OWNER_ID_" type="NVARCHAR(36)" remarks="归属者ID"> <column name="OWNER_ID_" type="NVARCHAR(36)" remarks="归属者ID">
<constraints nullable="false"/> <constraints nullable="false"/>
@ -596,10 +599,6 @@
<column name="OWNER_CODE_" type="NVARCHAR(255)" remarks="归属者代码"/> <column name="OWNER_CODE_" type="NVARCHAR(255)" remarks="归属者代码"/>
<column name="OWNER_NAME_" type="NVARCHAR(255)" remarks="归属者名称"/> <column name="OWNER_NAME_" type="NVARCHAR(255)" remarks="归属者名称"/>
<column name="OWNER_VERSION_" type="INTEGER" remarks="归属者版本"/> <column name="OWNER_VERSION_" type="INTEGER" remarks="归属者版本"/>
<column name="ID_" type="NVARCHAR(36)" remarks="ID_">
<constraints primaryKey="true"/>
</column>
<column name="NAME_" type="NVARCHAR(255)" remarks="名称"/> <column name="NAME_" type="NVARCHAR(255)" remarks="名称"/>
<column name="DESCRIPTION_" type="NVARCHAR(255)" remarks="描述"/> <column name="DESCRIPTION_" type="NVARCHAR(255)" remarks="描述"/>
<column name="ORDER_" type="INTEGER" remarks="排序"/> <column name="ORDER_" type="INTEGER" remarks="排序"/>
@ -631,8 +630,8 @@
<column name="CODE_" type="NVARCHAR(255)" remarks="引用的参数代码"/> <column name="CODE_" type="NVARCHAR(255)" remarks="引用的参数代码"/>
<column name="IS_SKIP_CHECK_" type="SMALLINT" remarks="是否跳过检查"/> <column name="IS_SKIP_CHECK_" type="SMALLINT" remarks="是否跳过检查"/>
<column name="INPUT_VALUE_" type="CLOB" remarks="输入值"/> <column name="INPUT_VALUE_" type="CLOB" remarks="输入值"/>
<column name="EXPECT_VALUE" type="CLOB" remarks="期望值"/> <column name="EXPECT_VALUE_" type="CLOB" remarks="期望值"/>
<column name="RESULT_VALUE" type="CLOB" remarks="结果值"/> <column name="RESULT_VALUE_" type="CLOB" remarks="结果值"/>
<column name="TEST_RESULT_" type="CLOB" remarks="测试结果"/> <column name="TEST_RESULT_" type="CLOB" remarks="测试结果"/>
<!-- 审计字段 --> <!-- 审计字段 -->

4
io.sc.platform.core.frontend/template-project/package.json

@ -1,6 +1,6 @@
{ {
"name": "platform-core", "name": "platform-core",
"version": "8.1.149", "version": "8.1.152",
"description": "前端核心包,用于快速构建前端的脚手架", "description": "前端核心包,用于快速构建前端的脚手架",
"private": false, "private": false,
"keywords": [], "keywords": [],
@ -92,7 +92,7 @@
"luckyexcel": "1.0.1", "luckyexcel": "1.0.1",
"mockjs": "1.1.0", "mockjs": "1.1.0",
"pinia": "2.1.7", "pinia": "2.1.7",
"platform-core": "8.1.149", "platform-core": "8.1.152",
"quasar": "2.14.5", "quasar": "2.14.5",
"tailwindcss": "3.4.0", "tailwindcss": "3.4.0",
"vue": "3.4.3", "vue": "3.4.3",

2
io.sc.platform.core.frontend/template-project/webpack.config.common.cjs

@ -123,7 +123,7 @@ module.exports = {
toType: 'dir', toType: 'dir',
filter: async (resourcePath) => { filter: async (resourcePath) => {
// 不复制 index.html 因为 index.html 已经由 HtmlWebpackPlugin 插件生成了 // 不复制 index.html 因为 index.html 已经由 HtmlWebpackPlugin 插件生成了
if (resourcePath.endsWith('index.html') || resourcePath.endsWith('.DS_Store')) { if (resourcePath.endsWith('/public/index.html') || resourcePath.endsWith('.DS_Store')) {
return false; return false;
} }
return true; return true;

2
io.sc.platform.core.frontend/webpack.config.common.cjs

@ -123,7 +123,7 @@ module.exports = {
toType: 'dir', toType: 'dir',
filter: async (resourcePath) => { filter: async (resourcePath) => {
// 不复制 index.html 因为 index.html 已经由 HtmlWebpackPlugin 插件生成了 // 不复制 index.html 因为 index.html 已经由 HtmlWebpackPlugin 插件生成了
if (resourcePath.endsWith('index.html') || resourcePath.endsWith('.DS_Store')) { if (resourcePath.endsWith('/public/index.html') || resourcePath.endsWith('.DS_Store')) {
return false; return false;
} }
return true; return true;

4
io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words.properties

@ -203,4 +203,6 @@ minValue=Minimum Value
isMinValueInclude=Is Minimum Value Include isMinValueInclude=Is Minimum Value Include
maxValue=Maximum Value maxValue=Maximum Value
isMaxValueInclude=Is Maximum Value Include isMaxValueInclude=Is Maximum Value Include
RegExp=Regular Expression RegExp=Regular Expression
execute=Execute
executeAll=Execute All

4
io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_tw_CN.properties

@ -203,4 +203,6 @@ minValue=\u6700\u5C0F\u503C
isMinValueInclude=\u662F\u5426\u5305\u542B\u6700\u5C0F\u503C isMinValueInclude=\u662F\u5426\u5305\u542B\u6700\u5C0F\u503C
maxValue=\u6700\u5927\u503C maxValue=\u6700\u5927\u503C
isMaxValueInclude=\u662F\u5426\u5305\u542B\u6700\u5927\u503C isMaxValueInclude=\u662F\u5426\u5305\u542B\u6700\u5927\u503C
RegExp=\u6B63\u5247\u8868\u9054\u5F0F RegExp=\u6B63\u5247\u8868\u9054\u5F0F
execute=\u57F7\u884C
executeAll=\u57F7\u884C\u6240\u6709

4
io.sc.platform.core/src/main/resources/io/sc/platform/core/i18n/words_zh_CN.properties

@ -203,4 +203,6 @@ minValue=\u6700\u5C0F\u503C
isMinValueInclude=\u662F\u5426\u5305\u542B\u6700\u5C0F\u503C isMinValueInclude=\u662F\u5426\u5305\u542B\u6700\u5C0F\u503C
maxValue=\u6700\u5927\u503C maxValue=\u6700\u5927\u503C
isMaxValueInclude=\u662F\u5426\u5305\u542B\u6700\u5927\u503C isMaxValueInclude=\u662F\u5426\u5305\u542B\u6700\u5927\u503C
RegExp=\u6B63\u5219\u8868\u8FBE\u5F0F RegExp=\u6B63\u5219\u8868\u8FBE\u5F0F
execute=\u6267\u884C
executeAll=\u6267\u884C\u6240\u6709

204
io.sc.platform.developer.frontend/package.json

@ -1,105 +1,103 @@
{ {
"name": "io.sc.platform.developer.frontend", "name": "io.sc.platform.developer.frontend",
"version": "8.1.28", "version": "8.1.29",
"description": "", "description": "",
"private": false, "private": false,
"keywords": [ "keywords": [],
"author": "",
], "license": "ISC",
"author": "", "scripts": {
"license": "ISC", "clean": "rm -rf ./node_modules && rm -rf pnpm-lock.yaml",
"scripts": { "dev": "nodemon",
"clean": "rm -rf ./node_modules && rm -rf pnpm-lock.yaml", "serve": "node ./util-components-generator.cjs && cross-env NODE_ENV=development webpack serve --config webpack.env.serve.cjs",
"dev": "nodemon", "build": "node ./util-components-generator.cjs && cross-env NODE_ENV=development webpack --config webpack.env.build.cjs",
"serve": "node ./util-components-generator.cjs && cross-env NODE_ENV=development webpack serve --config webpack.env.serve.cjs", "prod": "node ./util-components-generator.cjs && cross-env NODE_ENV=production webpack --config webpack.env.prod.cjs",
"build": "node ./util-components-generator.cjs && cross-env NODE_ENV=development webpack --config webpack.env.build.cjs", "sync": "platform sync"
"prod": "node ./util-components-generator.cjs && cross-env NODE_ENV=production webpack --config webpack.env.prod.cjs", },
"sync": "platform sync" "engines": {
}, "node": ">=18",
"engines": { "pnpm": ">=7"
"node": ">=18", },
"pnpm": ">=7" "publishConfig": {
}, "registry": "http://nexus.sc.io:8000/repository/npm-releases/",
"publishConfig": { "access": "public"
"registry": "http://nexus.sc.io:8000/repository/npm-releases/", },
"access": "public" "devDependencies": {
}, "@babel/core": "7.23.7",
"devDependencies": { "@babel/preset-env": "7.23.7",
"@babel/core": "7.23.7", "@babel/preset-typescript": "7.23.3",
"@babel/preset-env": "7.23.7", "@babel/plugin-transform-class-properties": "7.23.3",
"@babel/preset-typescript": "7.23.3", "@babel/plugin-transform-object-rest-spread": "7.23.4",
"@babel/plugin-transform-class-properties": "7.23.3", "@quasar/app-webpack": "3.12.1",
"@babel/plugin-transform-object-rest-spread": "7.23.4", "@quasar/cli": "2.3.0",
"@quasar/app-webpack": "3.12.1", "@types/mockjs": "1.0.10",
"@quasar/cli": "2.3.0", "@types/node": "20.10.6",
"@types/mockjs": "1.0.10", "@typescript-eslint/eslint-plugin": "6.17.0",
"@types/node": "20.10.6", "@typescript-eslint/parser": "6.17.0",
"@typescript-eslint/eslint-plugin": "6.17.0", "@vue/compiler-sfc": "3.4.3",
"@typescript-eslint/parser": "6.17.0", "@webpack-cli/serve": "2.0.5",
"@vue/compiler-sfc": "3.4.3", "autoprefixer": "10.4.16",
"@webpack-cli/serve": "2.0.5", "babel-loader": "9.1.3",
"autoprefixer": "10.4.16", "clean-webpack-plugin": "4.0.0",
"babel-loader": "9.1.3", "copy-webpack-plugin": "11.0.0",
"clean-webpack-plugin": "4.0.0", "cross-env": "7.0.3",
"copy-webpack-plugin": "11.0.0", "css-loader": "6.8.1",
"cross-env": "7.0.3", "eslint": "8.56.0",
"css-loader": "6.8.1", "eslint-config-prettier": "9.1.0",
"eslint": "8.56.0", "eslint-plugin-prettier": "5.1.2",
"eslint-config-prettier": "9.1.0", "eslint-plugin-vue": "9.19.2",
"eslint-plugin-prettier": "5.1.2", "eslint-webpack-plugin": "4.0.1",
"eslint-plugin-vue": "9.19.2", "html-webpack-plugin": "5.6.0",
"eslint-webpack-plugin": "4.0.1", "json5": "2.2.3",
"html-webpack-plugin": "5.6.0", "mini-css-extract-plugin": "2.7.6",
"json5": "2.2.3", "nodemon": "3.0.2",
"mini-css-extract-plugin": "2.7.6", "postcss": "8.4.32",
"nodemon": "3.0.2", "postcss-import": "16.0.0",
"postcss": "8.4.32", "postcss-loader": "7.3.4",
"postcss-import": "16.0.0", "postcss-preset-env": "9.3.0",
"postcss-loader": "7.3.4", "prettier": "3.1.1",
"postcss-preset-env": "9.3.0", "sass": "1.69.7",
"prettier": "3.1.1", "sass-loader": "13.3.3",
"sass": "1.69.7", "typescript": "5.3.3",
"sass-loader": "13.3.3", "vue-loader": "17.4.2",
"typescript": "5.3.3", "webpack": "5.89.0",
"vue-loader": "17.4.2", "webpack-bundle-analyzer": "4.10.1",
"webpack": "5.89.0", "webpack-cli": "5.1.4",
"webpack-bundle-analyzer": "4.10.1", "webpack-dev-server": "4.15.1",
"webpack-cli": "5.1.4", "webpack-merge": "5.10.0",
"webpack-dev-server": "4.15.1", "@vue/babel-plugin-jsx": "1.1.5"
"webpack-merge": "5.10.0", },
"@vue/babel-plugin-jsx": "1.1.5" "dependencies": {
}, "@quasar/extras": "1.16.9",
"dependencies": { "@vueuse/core": "10.7.1",
"@quasar/extras": "1.16.9", "axios": "1.6.3",
"@vueuse/core": "10.7.1", "dayjs": "1.11.10",
"axios": "1.6.3", "echarts": "5.4.3",
"dayjs": "1.11.10", "exceljs": "4.4.0",
"echarts": "5.4.3", "file-saver": "2.0.5",
"exceljs": "4.4.0", "luckyexcel": "1.0.1",
"file-saver": "2.0.5", "mockjs": "1.1.0",
"luckyexcel": "1.0.1", "pinia": "2.1.7",
"mockjs": "1.1.0", "platform-core": "8.1.152",
"pinia": "2.1.7", "quasar": "2.14.5",
"platform-core": "8.1.149", "tailwindcss": "3.4.0",
"quasar": "2.14.2", "vue": "3.4.3",
"tailwindcss": "3.4.0", "vue-dompurify-html": "5.0.1",
"vue": "3.4.3", "vue-i18n": "9.8.0",
"vue-dompurify-html": "5.0.1", "vue-router": "4.2.5",
"vue-i18n": "9.8.0", "@codemirror/autocomplete": "6.11.1",
"vue-router": "4.2.5", "@codemirror/commands": "6.3.3",
"@codemirror/autocomplete": "6.11.1", "@codemirror/lang-html": "6.4.7",
"@codemirror/commands": "6.3.3", "@codemirror/lang-java": "6.0.1",
"@codemirror/lang-html": "6.4.7", "@codemirror/lang-javascript": "6.2.1",
"@codemirror/lang-java": "6.0.1", "@codemirror/lang-json": "6.0.1",
"@codemirror/lang-javascript": "6.2.1", "@codemirror/lang-sql": "6.5.4",
"@codemirror/lang-json": "6.0.1", "@codemirror/lang-xml": "6.0.2",
"@codemirror/lang-sql": "6.5.4", "@codemirror/language": "6.10.0",
"@codemirror/lang-xml": "6.0.2", "@codemirror/search": "6.5.5",
"@codemirror/language": "6.10.0", "@codemirror/state": "6.4.0",
"@codemirror/search": "6.5.5", "@codemirror/view": "6.23.0",
"@codemirror/state": "6.4.0", "codemirror": "6.0.1",
"@codemirror/view": "6.23.0", "vue-codemirror6": "1.2.0"
"codemirror": "6.0.1", }
"vue-codemirror6": "1.2.0"
}
} }

104
io.sc.platform.developer.frontend/src/components/index.ts

@ -2,60 +2,60 @@
* , * ,
*/ */
import Help from '@/views/Help.vue'; import component_developer_Help from '@/views/Help.vue';
import Autoconfigure from '@/views/springboot/Autoconfigure.vue'; import component_developer_springboot_Autoconfigure from '@/views/springboot/Autoconfigure.vue';
import Bean from '@/views/springboot/Bean.vue'; import component_developer_springboot_Bean from '@/views/springboot/Bean.vue';
import Environment from '@/views/springboot/Environment.vue'; import component_developer_springboot_Environment from '@/views/springboot/Environment.vue';
import Mapping from '@/views/springboot/Mapping.vue'; import component_developer_springboot_Mapping from '@/views/springboot/Mapping.vue';
import ApplicationProperties from '@/views/plugin/ApplicationProperties.vue'; import component_developer_plugin_ApplicationProperties from '@/views/plugin/ApplicationProperties.vue';
import Components from '@/views/plugin/Components.vue'; import component_developer_plugin_Components from '@/views/plugin/Components.vue';
import Directories from '@/views/plugin/Directories.vue'; import component_developer_plugin_Directories from '@/views/plugin/Directories.vue';
import FrontendModule from '@/views/plugin/FrontendModule.vue'; import component_developer_plugin_FrontendModule from '@/views/plugin/FrontendModule.vue';
import FrontendRoutes from '@/views/plugin/FrontendRoutes.vue'; import component_developer_plugin_FrontendRoutes from '@/views/plugin/FrontendRoutes.vue';
import Initializer from '@/views/plugin/Initializer.vue'; import component_developer_plugin_Initializer from '@/views/plugin/Initializer.vue';
import JsonSerializers from '@/views/plugin/JsonSerializers.vue'; import component_developer_plugin_JsonSerializers from '@/views/plugin/JsonSerializers.vue';
import Menus from '@/views/plugin/Menus.vue'; import component_developer_plugin_Menus from '@/views/plugin/Menus.vue';
import Messages from '@/views/plugin/Messages.vue'; import component_developer_plugin_Messages from '@/views/plugin/Messages.vue';
import P6spy from '@/views/plugin/P6spy.vue'; import component_developer_plugin_P6spy from '@/views/plugin/P6spy.vue';
import Parameters from '@/views/plugin/Parameters.vue'; import component_developer_plugin_Parameters from '@/views/plugin/Parameters.vue';
import Repositories from '@/views/plugin/Repositories.vue'; import component_developer_plugin_Repositories from '@/views/plugin/Repositories.vue';
import Liquibase from '@/views/plugin/Liquibase.vue'; import component_developer_plugin_Liquibase from '@/views/plugin/Liquibase.vue';
import RestartProperties from '@/views/plugin/RestartProperties.vue'; import component_developer_plugin_RestartProperties from '@/views/plugin/RestartProperties.vue';
import Security from '@/views/plugin/Security.vue'; import component_developer_plugin_Security from '@/views/plugin/Security.vue';
import Ws from '@/views/plugin/Ws.vue'; import component_developer_plugin_Ws from '@/views/plugin/Ws.vue';
import Swagger from '@/views/plugin/Swagger.vue'; import component_developer_plugin_Swagger from '@/views/plugin/Swagger.vue';
import SystemProperties from '@/views/plugin/SystemProperties.vue'; import component_developer_plugin_SystemProperties from '@/views/plugin/SystemProperties.vue';
import importLiquibase from '@/views/backend/ImportLiquibase.vue'; import component_developer_backend_importLiquibase from '@/views/backend/ImportLiquibase.vue';
import exportLiquibase from '@/views/backend/ExportLiquibase.vue'; import component_developer_backend_exportLiquibase from '@/views/backend/ExportLiquibase.vue';
import Icons from '@/views/frontend/Icons.vue'; import component_developer_frontend_Icons from '@/views/frontend/Icons.vue';
const localComponents = { const localComponents = {
'component.developer.Help': Help, 'component.developer.Help': component_developer_Help,
'component.developer.springboot.Autoconfigure': Autoconfigure, 'component.developer.springboot.Autoconfigure': component_developer_springboot_Autoconfigure,
'component.developer.springboot.Bean': Bean, 'component.developer.springboot.Bean': component_developer_springboot_Bean,
'component.developer.springboot.Environment': Environment, 'component.developer.springboot.Environment': component_developer_springboot_Environment,
'component.developer.springboot.Mapping': Mapping, 'component.developer.springboot.Mapping': component_developer_springboot_Mapping,
'component.developer.plugin.ApplicationProperties': ApplicationProperties, 'component.developer.plugin.ApplicationProperties': component_developer_plugin_ApplicationProperties,
'component.developer.plugin.Components': Components, 'component.developer.plugin.Components': component_developer_plugin_Components,
'component.developer.plugin.Directories': Directories, 'component.developer.plugin.Directories': component_developer_plugin_Directories,
'component.developer.plugin.FrontendModule': FrontendModule, 'component.developer.plugin.FrontendModule': component_developer_plugin_FrontendModule,
'component.developer.plugin.FrontendRoutes': FrontendRoutes, 'component.developer.plugin.FrontendRoutes': component_developer_plugin_FrontendRoutes,
'component.developer.plugin.Initializer': Initializer, 'component.developer.plugin.Initializer': component_developer_plugin_Initializer,
'component.developer.plugin.JsonSerializers': JsonSerializers, 'component.developer.plugin.JsonSerializers': component_developer_plugin_JsonSerializers,
'component.developer.plugin.Menus': Menus, 'component.developer.plugin.Menus': component_developer_plugin_Menus,
'component.developer.plugin.Messages': Messages, 'component.developer.plugin.Messages': component_developer_plugin_Messages,
'component.developer.plugin.P6spy': P6spy, 'component.developer.plugin.P6spy': component_developer_plugin_P6spy,
'component.developer.plugin.Parameters': Parameters, 'component.developer.plugin.Parameters': component_developer_plugin_Parameters,
'component.developer.plugin.Repositories': Repositories, 'component.developer.plugin.Repositories': component_developer_plugin_Repositories,
'component.developer.plugin.Liquibase': Liquibase, 'component.developer.plugin.Liquibase': component_developer_plugin_Liquibase,
'component.developer.plugin.RestartProperties': RestartProperties, 'component.developer.plugin.RestartProperties': component_developer_plugin_RestartProperties,
'component.developer.plugin.Security': Security, 'component.developer.plugin.Security': component_developer_plugin_Security,
'component.developer.plugin.Ws': Ws, 'component.developer.plugin.Ws': component_developer_plugin_Ws,
'component.developer.plugin.Swagger': Swagger, 'component.developer.plugin.Swagger': component_developer_plugin_Swagger,
'component.developer.plugin.SystemProperties': SystemProperties, 'component.developer.plugin.SystemProperties': component_developer_plugin_SystemProperties,
'component.developer.backend.importLiquibase': importLiquibase, 'component.developer.backend.importLiquibase': component_developer_backend_importLiquibase,
'component.developer.backend.exportLiquibase': exportLiquibase, 'component.developer.backend.exportLiquibase': component_developer_backend_exportLiquibase,
'component.developer.frontend.Icons': Icons, 'component.developer.frontend.Icons': component_developer_frontend_Icons,
}; };
export default localComponents; export default localComponents;

6
io.sc.platform.developer.frontend/util-components-generator.cjs

@ -13,7 +13,7 @@ content +='/**\n';
content +=' * 此文件为自动生成文件,请勿修改\n'; content +=' * 此文件为自动生成文件,请勿修改\n';
content +=' */\n\n'; content +=' */\n\n';
for(const route of routesJson){ for(const route of routesJson){
const componentName =route.component.substring(route.component.lastIndexOf('.')+1); const componentName =route.component.replaceAll('.','_');
const componentPath =route.componentPath; const componentPath =route.componentPath;
content +=`import ${componentName} from '${componentPath}';\n`; content +=`import ${componentName} from '${componentPath}';\n`;
} }
@ -21,7 +21,7 @@ for(const route of routesJson){
content +='\n'; content +='\n';
content +='const localComponents = { \n'; content +='const localComponents = { \n';
for(const route of routesJson){ for(const route of routesJson){
const componentName =route.component.substring(route.component.lastIndexOf('.')+1); const componentName =route.component.replaceAll('.','_');
content +=`'${route.component}': ${componentName},\n`; content +=`'${route.component}': ${componentName},\n`;
} }
content +='}\n\n'; content +='}\n\n';
@ -29,4 +29,4 @@ content +='export default localComponents;\n';
fs.writeFileSync('./src/components/index.ts', content); fs.writeFileSync('./src/components/index.ts', content);
console.info('components generated!'); console.info('components generated!');

2
io.sc.platform.developer.frontend/webpack.config.common.cjs

@ -123,7 +123,7 @@ module.exports = {
toType: 'dir', toType: 'dir',
filter: async (resourcePath) => { filter: async (resourcePath) => {
// 不复制 index.html 因为 index.html 已经由 HtmlWebpackPlugin 插件生成了 // 不复制 index.html 因为 index.html 已经由 HtmlWebpackPlugin 插件生成了
if (resourcePath.endsWith('index.html') || resourcePath.endsWith('.DS_Store')) { if (resourcePath.endsWith('/public/index.html') || resourcePath.endsWith('.DS_Store')) {
return false; return false;
} }
return true; return true;

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

Loading…
Cancel
Save