Refactor project to Monorepo and TypeScript (#90)
* fix(tiny-vue): TinyVue工程momorepo改造[WI2029] Match-id-2e9669527b4f9d10ba441ea7a204dc1627ab0420 * fix(tiny-vue): TinyVue工程momorepo改造[WI2029] Match-id-a3c037ae0147e6ef27df417b09fff18d548a5fa7 * fix(tiny-vue): 修改license[WI2029] Match-id-646d905fcfedf0b9ceb147d9ce288916e3c78c45 * fix(tiny-vue): 修改package.json[WI2029] Match-id-8e0d6161964178ca68ee111f3bb0c60e27d9f3e0 * fix: fix conflict --------- Co-authored-by: OpenTiny <opentiny@sina.com>
|
@ -0,0 +1,10 @@
|
||||||
|
ignores:
|
||||||
|
# Unused dependencies
|
||||||
|
|
||||||
|
# Unused devDependencies
|
||||||
|
|
||||||
|
# Missing dependencies
|
||||||
|
|
||||||
|
|
||||||
|
ignore-patterns:
|
||||||
|
- "node_modules"
|
|
@ -1,2 +1,6 @@
|
||||||
dist
|
dist
|
||||||
runtime
|
runtime
|
||||||
|
dist-vue2/
|
||||||
|
dist-vue3/
|
||||||
|
node_modules
|
||||||
|
examples/docs/public/assets/map/js
|
94
.eslintrc
|
@ -1,94 +0,0 @@
|
||||||
{
|
|
||||||
"root": true,
|
|
||||||
"env": {
|
|
||||||
"es6": true,
|
|
||||||
"browser": true,
|
|
||||||
"node": true,
|
|
||||||
"jest": true
|
|
||||||
},
|
|
||||||
"extends": ["eslint:recommended", "plugin:vue/vue3-essential"],
|
|
||||||
"parserOptions": {
|
|
||||||
"parser": ["vue-eslint-parser", "@babel/eslint-parser"],
|
|
||||||
"requireConfigFile": false,
|
|
||||||
"sourceType": "module",
|
|
||||||
"ecmaVersion": "latest",
|
|
||||||
"ecmaFeatures": {
|
|
||||||
"jsx": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"rules": {
|
|
||||||
"no-debugger": "off",
|
|
||||||
"no-var": "error",
|
|
||||||
"no-tabs": "error",
|
|
||||||
"no-trailing-spaces": "error",
|
|
||||||
"no-mixed-spaces-and-tabs": "error",
|
|
||||||
"no-undef": "error",
|
|
||||||
"no-extra-semi": "error",
|
|
||||||
"no-empty": "error",
|
|
||||||
"no-console": "off",
|
|
||||||
"semi": [2, "never"],
|
|
||||||
"max-len": [
|
|
||||||
"warn",
|
|
||||||
{
|
|
||||||
"code": 160
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"function-paren-newline": ["off"],
|
|
||||||
"object-property-newline": [
|
|
||||||
"warn",
|
|
||||||
{
|
|
||||||
"allowAllPropertiesOnSameLine": true
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"newline-per-chained-call": [
|
|
||||||
"warn",
|
|
||||||
{
|
|
||||||
"ignoreChainWithDepth": 4
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"comma-dangle": "off",
|
|
||||||
"semi-style": ["warn", "last"],
|
|
||||||
"max-lines": ["error", 2400],
|
|
||||||
"max-lines-per-function": ["error", 200],
|
|
||||||
"complexity": ["error", 26],
|
|
||||||
"max-depth": ["warn", 4],
|
|
||||||
"max-nested-callbacks": ["error", 4],
|
|
||||||
"no-multi-assign": "off",
|
|
||||||
"no-undef-init": "warn",
|
|
||||||
"no-shadow": "off",
|
|
||||||
"max-params": ["warn", 5],
|
|
||||||
"no-param-reassign": "off",
|
|
||||||
"prefer-rest-params": "off",
|
|
||||||
"prefer-arrow-callback": "error",
|
|
||||||
"arrow-body-style": ["warn", "as-needed"],
|
|
||||||
"no-this-before-super": "error",
|
|
||||||
"quotes": ["warn", "single"],
|
|
||||||
"prefer-template": "off",
|
|
||||||
"no-multi-str": "warn",
|
|
||||||
"object-shorthand": "warn",
|
|
||||||
"dot-notation": "error",
|
|
||||||
"accessor-pairs": "error",
|
|
||||||
"no-prototype-builtins": "error",
|
|
||||||
"guard-for-in": "error",
|
|
||||||
"eqeqeq": "off",
|
|
||||||
"no-fallthrough": "error",
|
|
||||||
"no-case-declarations": "error",
|
|
||||||
"no-unsafe-finally": "error",
|
|
||||||
"no-eval": "error",
|
|
||||||
"no-with": "error",
|
|
||||||
"no-implicit-coercion": [
|
|
||||||
"error",
|
|
||||||
{
|
|
||||||
"allow": ["!!", "~"]
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"vue/multi-word-component-names": "off",
|
|
||||||
"vue/valid-v-slot": "off",
|
|
||||||
"vue/no-deprecated-v-on-native-modifier": "off",
|
|
||||||
"vue/no-reserved-component-names": "off",
|
|
||||||
"vue/no-deprecated-dollar-listeners-api": "off",
|
|
||||||
"vue/no-deprecated-slot-attribute": "off",
|
|
||||||
"vue/no-use-computed-property-like-method": "off",
|
|
||||||
"vue/no-mutating-props": "off"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,42 @@
|
||||||
|
/* eslint-env node */
|
||||||
|
|
||||||
|
/** @type {import('eslint').Linter.Config} */
|
||||||
|
module.exports = {
|
||||||
|
extends: '@antfu',
|
||||||
|
rules: {
|
||||||
|
'vue/component-tags-order': ['error', {
|
||||||
|
order: [['script', 'template'], 'style'],
|
||||||
|
}],
|
||||||
|
'vue/order-in-components': 'off',
|
||||||
|
'vue/component-name-in-template-casing': 'off',
|
||||||
|
'vue/custom-event-name-casing': 'off',
|
||||||
|
'vue/quote-props': 'off',
|
||||||
|
'vue/attributes-order': 'off',
|
||||||
|
'vue/prop-name-casing': 'off',
|
||||||
|
'vue/html-self-closing': 'off',
|
||||||
|
'vue/prefer-separate-static-class': 'off',
|
||||||
|
'vue/comma-dangle': 'off',
|
||||||
|
'vue/prefer-template': 'off',
|
||||||
|
'curly': 'off',
|
||||||
|
'sort-imports': 'off',
|
||||||
|
'prefer-template': 'off',
|
||||||
|
'arrow-parens': 'off',
|
||||||
|
'operator-linebreak': 'off',
|
||||||
|
'antfu/if-newline': 'off',
|
||||||
|
'import/order': 'off',
|
||||||
|
'import/no-duplicates': 'off',
|
||||||
|
'quote-props': 'off',
|
||||||
|
'prefer-const': 'off',
|
||||||
|
'@typescript-eslint/comma-dangle': 'off',
|
||||||
|
// '@typescript-eslint/indent': 'off',
|
||||||
|
'@typescript-eslint/no-unsafe-assignment': 'off',
|
||||||
|
'@typescript-eslint/no-unsafe-call': 'off',
|
||||||
|
'@typescript-eslint/no-unsafe-member-access': 'off',
|
||||||
|
'@typescript-eslint/no-unsafe-argument': 'off',
|
||||||
|
'@typescript-eslint/no-unsafe-return': 'off',
|
||||||
|
'@typescript-eslint/brace-style': 'off',
|
||||||
|
'@typescript-eslint/restrict-plus-operands': 'off',
|
||||||
|
'@typescript-eslint/no-use-before-define': 'off',
|
||||||
|
'@typescript-eslint/restrict-template-expressions': 'off',
|
||||||
|
},
|
||||||
|
}
|
|
@ -0,0 +1,6 @@
|
||||||
|
* text=auto eol=lf
|
||||||
|
*.ts linguist-detectable=false
|
||||||
|
*.css linguist-detectable=false
|
||||||
|
*.scss linguist-detectable=false
|
||||||
|
*.js linguist-detectable=true
|
||||||
|
*.vue linguist-detectable=true
|
|
@ -1,16 +1,27 @@
|
||||||
.DS_Store
|
.DS_Store
|
||||||
node_modules
|
node_modules
|
||||||
dist/
|
dist/
|
||||||
|
dist2/
|
||||||
|
dist2.7/
|
||||||
|
dist3/
|
||||||
allDist/
|
allDist/
|
||||||
packages/**/runtime/
|
packages/**/runtime
|
||||||
coverage/
|
coverage/
|
||||||
|
|
||||||
/packages/base.js
|
/packages/vue-icon-saas/src
|
||||||
/packages/chart.js
|
/packages/vue-icon-saas/index.ts
|
||||||
/packages/core.js
|
/packages/vue/index.ts
|
||||||
/packages/index.js
|
/packages/vue/pc.ts
|
||||||
/packages/pc.js
|
/packages/vue/mobile.ts
|
||||||
/packages/mobile.js
|
/packages/vue/app.ts
|
||||||
|
/packages/vue-icon/src/index.ts
|
||||||
|
|
||||||
|
/examples/**/playwright-report
|
||||||
|
/examples/docs/.vuepress/.cache/
|
||||||
|
/examples/docs/.vuepress/.temp/
|
||||||
|
/examples/docs/.vitepress/cache
|
||||||
|
vite.config.ts.timestamp*
|
||||||
|
vitest.config.ts.timestamp*
|
||||||
|
|
||||||
# local env
|
# local env
|
||||||
.env.local
|
.env.local
|
||||||
|
@ -20,12 +31,11 @@ coverage/
|
||||||
npm-debug.log*
|
npm-debug.log*
|
||||||
yarn-debug.log*
|
yarn-debug.log*
|
||||||
yarn-error.log*
|
yarn-error.log*
|
||||||
|
pnpm-lock.yaml
|
||||||
|
|
||||||
# Editor directories and files
|
# Editor directories and files
|
||||||
.idea
|
.idea
|
||||||
.history
|
.history
|
||||||
.vscode
|
|
||||||
.cloudbuild
|
|
||||||
*.suo
|
*.suo
|
||||||
*.ntvs*
|
*.ntvs*
|
||||||
*.njsproj
|
*.njsproj
|
||||||
|
@ -34,8 +44,7 @@ yarn-error.log*
|
||||||
*.log
|
*.log
|
||||||
*.stackdump
|
*.stackdump
|
||||||
|
|
||||||
yarn.lock
|
|
||||||
package-lock.json
|
|
||||||
|
|
||||||
tgzs
|
tgzs
|
||||||
*.tgz
|
*.tgz
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
{
|
||||||
|
"extends": [
|
||||||
|
"development"
|
||||||
|
],
|
||||||
|
"hints": {
|
||||||
|
"compat-api/html": [
|
||||||
|
"default",
|
||||||
|
{
|
||||||
|
"ignore": [
|
||||||
|
"script[type=module]"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"axe/language": "off"
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,4 @@
|
||||||
|
shell-emulator=true
|
||||||
|
auto-install-peers=true
|
||||||
|
strict-peer-dependencies=false
|
||||||
|
enable-pre-post-scripts=true
|
|
@ -1,3 +1,8 @@
|
||||||
# Except myapp folder:
|
dist
|
||||||
dist/
|
dist-vue2
|
||||||
public/
|
dist-vue3
|
||||||
|
node_modules
|
||||||
|
internal/template
|
||||||
|
internal/runtime
|
||||||
|
examples/docs/public/static
|
||||||
|
pnpm-lock.yaml
|
||||||
|
|
26
.prettierrc
|
@ -1,4 +1,22 @@
|
||||||
semi: false
|
{
|
||||||
singleQuote: true
|
"semi": false,
|
||||||
printWidth: 160
|
"singleQuote": true,
|
||||||
trailingComma: none
|
"printWidth": 120,
|
||||||
|
"trailingComma": "none",
|
||||||
|
"quoteProps": "preserve",
|
||||||
|
"endOfLine": "auto",
|
||||||
|
"bracketSpacing": true,
|
||||||
|
"jsxBracketSameLine": true,
|
||||||
|
"jsxSingleQuote": false,
|
||||||
|
"useTabs": false,
|
||||||
|
"tabWidth": 2,
|
||||||
|
"proseWrap": "preserve",
|
||||||
|
"overrides": [
|
||||||
|
{
|
||||||
|
"files": ".prettierrc",
|
||||||
|
"options": {
|
||||||
|
"parser": "json"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
{
|
||||||
|
"recommendations": [
|
||||||
|
"vue.volar",
|
||||||
|
"vue.vscode-typescript-vue-plugin",
|
||||||
|
"davidanson.vscode-markdownlint",
|
||||||
|
"dbaeumer.vscode-eslint",
|
||||||
|
"stylelint.vscode-stylelint",
|
||||||
|
"ms-playwright.playwright"
|
||||||
|
],
|
||||||
|
"unwantedRecommendations": [
|
||||||
|
"esbenp.prettier-vscode",
|
||||||
|
"octref.vetur"
|
||||||
|
]
|
||||||
|
}
|
|
@ -0,0 +1,72 @@
|
||||||
|
{
|
||||||
|
"editor.quickSuggestions": {
|
||||||
|
"strings": true
|
||||||
|
},
|
||||||
|
"markdownlint.config": {
|
||||||
|
"no-inline-html": true,
|
||||||
|
"first-line-heading": true
|
||||||
|
},
|
||||||
|
"typescript.tsdk": "node_modules/typescript/lib",
|
||||||
|
"prettier.enable": true,
|
||||||
|
"editor.formatOnSave": true,
|
||||||
|
"editor.codeActionsOnSave": {
|
||||||
|
"source.fixAll.eslint": true
|
||||||
|
},
|
||||||
|
"better-comments.highlightPlainText": true,
|
||||||
|
"better-comments.tags": [
|
||||||
|
{
|
||||||
|
"tag": "#v",
|
||||||
|
"color": "#FF8C00",
|
||||||
|
"strikethrough": false,
|
||||||
|
"underline": false,
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"bold": false,
|
||||||
|
"italic": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tag": "!",
|
||||||
|
"color": "#FF2D00",
|
||||||
|
"strikethrough": false,
|
||||||
|
"underline": false,
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"bold": false,
|
||||||
|
"italic": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tag": "?",
|
||||||
|
"color": "#3498DB",
|
||||||
|
"strikethrough": false,
|
||||||
|
"underline": false,
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"bold": false,
|
||||||
|
"italic": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tag": "//",
|
||||||
|
"color": "#474747",
|
||||||
|
"strikethrough": true,
|
||||||
|
"underline": false,
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"bold": false,
|
||||||
|
"italic": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tag": "todo",
|
||||||
|
"color": "#FF8C00",
|
||||||
|
"strikethrough": false,
|
||||||
|
"underline": false,
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"bold": false,
|
||||||
|
"italic": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"tag": "*",
|
||||||
|
"color": "#98C379",
|
||||||
|
"strikethrough": false,
|
||||||
|
"underline": false,
|
||||||
|
"backgroundColor": "transparent",
|
||||||
|
"bold": false,
|
||||||
|
"italic": false
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
20
CHANGELOG.md
|
@ -1,20 +0,0 @@
|
||||||
# 更新日志
|
|
||||||
|
|
||||||
## v2.0.0/v3.0.0
|
|
||||||
|
|
||||||
`2022/09/15`
|
|
||||||
|
|
||||||
### 📢破坏性变更
|
|
||||||
|
|
||||||
无
|
|
||||||
|
|
||||||
### ✨新特性
|
|
||||||
|
|
||||||
- Search 组件:增加 input 事件
|
|
||||||
- Select 组件:增加 scroll 事件
|
|
||||||
|
|
||||||
### 🐞缺陷修复
|
|
||||||
|
|
||||||
- Tabs 组件:修复 tab 组件套 tab 组件,内部的 tab 项会显示在外部 tab 上的bug
|
|
||||||
- PopEditor 组件:解决弹出框里的查询条件不能输入的问题
|
|
||||||
- Cascader 组件:解决点击已选中选项无法关闭选择器的问题
|
|
2
LICENSE
|
@ -19,4 +19,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||||
SOFTWARE.
|
SOFTWARE.
|
|
@ -75,4 +75,4 @@ If you don't know how to start, please read our [contributing guide](CONTRIBUTIN
|
||||||
|
|
||||||
## License
|
## License
|
||||||
|
|
||||||
[MIT](LICENSE)
|
[MIT](LICENSE)
|
|
@ -1,6 +0,0 @@
|
||||||
{
|
|
||||||
"rules": {
|
|
||||||
"no-empty": "off",
|
|
||||||
"no-console": "off"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,54 +0,0 @@
|
||||||
/**
|
|
||||||
* 生成全量运行时入口文件
|
|
||||||
*/
|
|
||||||
const fs = require('fs-extra')
|
|
||||||
const endOfLine = require('os').EOL
|
|
||||||
const utils = require('./utils')
|
|
||||||
const runtimeUtils = require('./runtime-utils')
|
|
||||||
|
|
||||||
const version = utils.getTinyVersion()
|
|
||||||
const outputDir = 'packages'
|
|
||||||
const IMPORT_TEMPLATE = 'import {{name}} from "@opentiny/vue-{{package}}"'
|
|
||||||
const MAIN_TEMPLATE = `{{include}}
|
|
||||||
|
|
||||||
const version = '${version}'
|
|
||||||
|
|
||||||
export {
|
|
||||||
version,
|
|
||||||
{{components}}
|
|
||||||
}
|
|
||||||
`
|
|
||||||
|
|
||||||
const buildFullRuntime = (buildType) => {
|
|
||||||
const outputPath = utils.pathJoin('..', outputDir, buildType + '.js')
|
|
||||||
const includeTemplate = []
|
|
||||||
const componentsTemplate = []
|
|
||||||
const render = utils.renderTemplate()
|
|
||||||
let coreLibs = []
|
|
||||||
|
|
||||||
coreLibs = runtimeUtils.getFullRuntime(buildType === 'base' ? ['base', 'business'] : buildType)
|
|
||||||
|
|
||||||
coreLibs.forEach((name) => {
|
|
||||||
includeTemplate.push(
|
|
||||||
render(IMPORT_TEMPLATE, {
|
|
||||||
name,
|
|
||||||
package: utils.kebabCase({ str: name })
|
|
||||||
})
|
|
||||||
)
|
|
||||||
componentsTemplate.push(name)
|
|
||||||
})
|
|
||||||
|
|
||||||
const template = render(MAIN_TEMPLATE, {
|
|
||||||
include: includeTemplate.join(endOfLine),
|
|
||||||
components: componentsTemplate.join(',' + endOfLine)
|
|
||||||
})
|
|
||||||
|
|
||||||
const output = utils.prettierFormat({
|
|
||||||
str: template
|
|
||||||
})
|
|
||||||
|
|
||||||
fs.writeFileSync(outputPath, output)
|
|
||||||
|
|
||||||
utils.logGreen(`npm run build:entry done. [${outputDir}/${buildType}.js]`)
|
|
||||||
};
|
|
||||||
['core', 'base', 'chart'].forEach(buildFullRuntime)
|
|
|
@ -1,144 +0,0 @@
|
||||||
/**
|
|
||||||
* 生成入口文件,包括 pc.js / mobile.js / index.js
|
|
||||||
*/
|
|
||||||
const fs = require('fs-extra')
|
|
||||||
const endOfLine = require('os').EOL
|
|
||||||
const utils = require('./utils')
|
|
||||||
const moduleUtils = require('./module-utils')
|
|
||||||
|
|
||||||
const version = utils.getTinyVersion()
|
|
||||||
const outputDir = 'packages'
|
|
||||||
|
|
||||||
const fileNames = {
|
|
||||||
all: 'index.js',
|
|
||||||
pc: 'pc.js',
|
|
||||||
mobile: 'mobile.js'
|
|
||||||
}
|
|
||||||
|
|
||||||
const getMainTemplate = (mode) => {
|
|
||||||
const template = `{{include}}
|
|
||||||
import { $prefix } from '@opentiny/vue-common'
|
|
||||||
const components = [{{components}}]
|
|
||||||
|
|
||||||
export const install = (app, opts = {}) => {
|
|
||||||
const regex = new RegExp('^' + $prefix)
|
|
||||||
${
|
|
||||||
mode === 'all'
|
|
||||||
? ''
|
|
||||||
: `
|
|
||||||
if (typeof app.unmount === 'function') {
|
|
||||||
app.config.globalProperties.tiny_mode = { value: '${mode}' }
|
|
||||||
} else {
|
|
||||||
app.prototype.tiny_mode = { value: '${mode}' }
|
|
||||||
}
|
|
||||||
`
|
|
||||||
}
|
|
||||||
components.filter(component=> component.name !== 'TinyPicker').forEach((component) => {
|
|
||||||
let name = component.name
|
|
||||||
let alias = opts.alias || opts.prefix
|
|
||||||
if (typeof component.install !== 'function') { return }
|
|
||||||
if (name && alias) {
|
|
||||||
app.component(name.replace(regex, alias), component)
|
|
||||||
} else {
|
|
||||||
component.install(app)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
const version = '${version}'
|
|
||||||
export {
|
|
||||||
version,
|
|
||||||
{{components}}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default {
|
|
||||||
version,
|
|
||||||
{{components}},
|
|
||||||
install
|
|
||||||
}
|
|
||||||
`
|
|
||||||
return template
|
|
||||||
}
|
|
||||||
|
|
||||||
const forEachCompoents = ({ components, componentsTemplate, render, INSTALL_COMPONENT_TEMPLATE, includeTemplate, IMPORT_TEMPLATE }) => {
|
|
||||||
components.forEach((item) => {
|
|
||||||
let exportsComponents = ''
|
|
||||||
const childrenComponents = []
|
|
||||||
|
|
||||||
// 增加组件内部抛出子组件,针对父子组件不能拆分的情况
|
|
||||||
if (Array.isArray(item.exports) && item.exports.length > 0) {
|
|
||||||
item.exports.indexOf(item.name) === -1 && item.exports.push(item.name)
|
|
||||||
} else {
|
|
||||||
item.exports = [item.name]
|
|
||||||
}
|
|
||||||
|
|
||||||
item.exports.forEach((component) => {
|
|
||||||
if (component !== item.name) {
|
|
||||||
component = utils.capitalizeKebabCase(component)
|
|
||||||
|
|
||||||
childrenComponents.push(component)
|
|
||||||
}
|
|
||||||
|
|
||||||
componentsTemplate.push(
|
|
||||||
render(INSTALL_COMPONENT_TEMPLATE, {
|
|
||||||
name: component
|
|
||||||
})
|
|
||||||
)
|
|
||||||
})
|
|
||||||
|
|
||||||
if (childrenComponents.length) {
|
|
||||||
exportsComponents = `,{${childrenComponents.join(',')}}`
|
|
||||||
}
|
|
||||||
|
|
||||||
includeTemplate.push(
|
|
||||||
render(IMPORT_TEMPLATE, {
|
|
||||||
name: item.name,
|
|
||||||
exports: exportsComponents,
|
|
||||||
package: item.importName
|
|
||||||
})
|
|
||||||
)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
const createEntry = (mode) => {
|
|
||||||
const OUTPUT_PATH = utils.pathJoin('..', outputDir, fileNames[mode])
|
|
||||||
const IMPORT_TEMPLATE = 'import {{name}} {{exports}} from "{{package}}"'
|
|
||||||
const INSTALL_COMPONENT_TEMPLATE = ' {{name}}'
|
|
||||||
|
|
||||||
const MAIN_TEMPLATE = getMainTemplate(mode)
|
|
||||||
|
|
||||||
const includeTemplate = []
|
|
||||||
const componentsTemplate = []
|
|
||||||
const render = utils.renderTemplate()
|
|
||||||
let components
|
|
||||||
|
|
||||||
if (mode === 'pc') {
|
|
||||||
components = moduleUtils.getPcComponents()
|
|
||||||
} else if (mode === 'mobile') {
|
|
||||||
components = moduleUtils.getMobileComponents()
|
|
||||||
} else {
|
|
||||||
components = moduleUtils.getComponents()
|
|
||||||
}
|
|
||||||
|
|
||||||
forEachCompoents({
|
|
||||||
components,
|
|
||||||
componentsTemplate,
|
|
||||||
render,
|
|
||||||
INSTALL_COMPONENT_TEMPLATE,
|
|
||||||
includeTemplate,
|
|
||||||
IMPORT_TEMPLATE
|
|
||||||
})
|
|
||||||
|
|
||||||
const template = render(MAIN_TEMPLATE, {
|
|
||||||
include: includeTemplate.join(endOfLine),
|
|
||||||
components: componentsTemplate.join(`,${endOfLine}`)
|
|
||||||
})
|
|
||||||
|
|
||||||
const output = utils.prettierFormat({
|
|
||||||
str: template
|
|
||||||
})
|
|
||||||
|
|
||||||
fs.writeFileSync(OUTPUT_PATH, output)
|
|
||||||
};
|
|
||||||
['all', 'pc', 'mobile'].forEach(createEntry)
|
|
||||||
|
|
||||||
utils.logGreen(`npm run build:entry done. [${outputDir}/index.js,${outputDir}/pc.js,${outputDir}/mobile.js]`)
|
|
|
@ -1,115 +0,0 @@
|
||||||
const rollup = require('rollup')
|
|
||||||
const utils = require('./utils')
|
|
||||||
const replace = require('@rollup/plugin-replace')
|
|
||||||
const moduleUtils = require('./module-utils')
|
|
||||||
const fs = require('fs-extra')
|
|
||||||
const isSingle = process.env.BUILD_TARGET === 'single'
|
|
||||||
const config = require('./config')
|
|
||||||
|
|
||||||
const outputOptions = {
|
|
||||||
format: 'es',
|
|
||||||
globals: config.globals,
|
|
||||||
exports: 'named'
|
|
||||||
}
|
|
||||||
|
|
||||||
const inputOptions = {
|
|
||||||
plugins: config.plugins,
|
|
||||||
external: config.external
|
|
||||||
}
|
|
||||||
|
|
||||||
const replaceConstant = {
|
|
||||||
'process.env.BUILD_TARGET': JSON.stringify(process.env.BUILD_TARGET),
|
|
||||||
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (process.env.TINY_MODE === 'pc') {
|
|
||||||
outputOptions.format = 'umd'
|
|
||||||
replaceConstant['process.env.TINY_MODE'] = JSON.stringify(process.env.TINY_MODE)
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 编译单个组件
|
|
||||||
* @param {Object} component 组件 module 信息 (modules.json)
|
|
||||||
* @param {Function} 回调函数
|
|
||||||
*/
|
|
||||||
const build = ({ component, callback }) => {
|
|
||||||
inputOptions.input = utils.pathJoin('..', component.path)
|
|
||||||
|
|
||||||
inputOptions.plugins.push(replace(replaceConstant))
|
|
||||||
rollup
|
|
||||||
.rollup(inputOptions)
|
|
||||||
.then((bundle) => {
|
|
||||||
outputOptions.file = utils.pathJoin('..', component.libPath)
|
|
||||||
if (outputOptions.format === 'umd') {
|
|
||||||
outputOptions.name = component.global
|
|
||||||
}
|
|
||||||
bundle.write(outputOptions).finally(() => {
|
|
||||||
const filePath = utils.pathJoin('..', component.libPath)
|
|
||||||
if (filePath.endsWith('index.js')) {
|
|
||||||
const indexStr = fs.readFileSync(filePath).toString('UTF-8')
|
|
||||||
const resStr = indexStr.replace('./src/pc', './pc').replace('./src/mobile', './mobile')
|
|
||||||
fs.writeFileSync(filePath, resStr)
|
|
||||||
}
|
|
||||||
callback()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.catch((e) => {
|
|
||||||
utils.logRed(e)
|
|
||||||
callback()
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
let components = []
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 递归执行 Rollup 编译
|
|
||||||
* @param {Number} count 起始索引
|
|
||||||
*/
|
|
||||||
const buildAll = (count = 0) => {
|
|
||||||
let component = components[count++]
|
|
||||||
if (component) {
|
|
||||||
if (!isSingle) {
|
|
||||||
component.libPath = 'dist/' + component.libName.replace('@opentiny/vue/', '')
|
|
||||||
component.libPath += (component.type === 'component' ? '/index' : '') + '.js'
|
|
||||||
}
|
|
||||||
build({
|
|
||||||
component,
|
|
||||||
callback() {
|
|
||||||
buildAll(count)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
utils.logGreen(`npm run build:ui${isSingle ? '-single' : ''} done.`)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isSingle) {
|
|
||||||
const inputName = utils.getInputCmd()
|
|
||||||
if (inputName.length > 0) {
|
|
||||||
inputName.forEach((input) => {
|
|
||||||
const activeComponentName = utils.kebabCase({ str: input })
|
|
||||||
|
|
||||||
if (activeComponentName) {
|
|
||||||
components.push(
|
|
||||||
...moduleUtils.getByName({
|
|
||||||
name: activeComponentName,
|
|
||||||
isSort: false
|
|
||||||
})
|
|
||||||
)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
const activeComponentName = utils.getComponentName()
|
|
||||||
components = moduleUtils.getByName({
|
|
||||||
name: activeComponentName,
|
|
||||||
isSort: false
|
|
||||||
})
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
components = moduleUtils.getAllModules(false)
|
|
||||||
}
|
|
||||||
if (components.length > 0) {
|
|
||||||
buildAll()
|
|
||||||
} else {
|
|
||||||
utils.logYellow('please enter the component name after command.')
|
|
||||||
}
|
|
|
@ -1,68 +0,0 @@
|
||||||
const { sep } = require('path')
|
|
||||||
const utils = require('./utils')
|
|
||||||
const { addModule, writeModuleMap, quickSort, readModuleMap } = require('./module-utils')
|
|
||||||
|
|
||||||
const isDeepFn = (file, dirs, subPath) =>
|
|
||||||
// 如果底层文件夹内没有找到 vue 文件,找到 src//index.js 文件也被认可为组件
|
|
||||||
(file.endsWith('.vue') && (dirs.includes('index.js') || dirs.includes('index.vue'))) || ~subPath.indexOf(['src', 'index.js'].join(sep))
|
|
||||||
|
|
||||||
const getTemplateName = (currentPaths) => currentPaths.slice(2).map(utils.capitalize).join('/').split('.')[0].replace('/', '')
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 扫描指定目录下面的组件目录,查找非 index.vue 文件(模板)生成 modules.json 中的对象
|
|
||||||
*/
|
|
||||||
const makeModules = () => {
|
|
||||||
const templates = {}
|
|
||||||
const oldModules = readModuleMap()
|
|
||||||
const packagesStr = 'packages'
|
|
||||||
utils.walkFileTree({
|
|
||||||
isDeep: true,
|
|
||||||
dirPath: utils.pathJoin('..', packagesStr),
|
|
||||||
fileFilter({ file }) {
|
|
||||||
return !/node_modules|helper|common|assets/.test(file)
|
|
||||||
},
|
|
||||||
callback({ file, subPath, dirs }) {
|
|
||||||
const isDeep = isDeepFn(file, dirs, subPath)
|
|
||||||
// NEXT: 针对 option 的模板做特殊处理
|
|
||||||
if (isDeep && ['template.vue'].indexOf(file) === -1) {
|
|
||||||
const isEntry = file.startsWith('index')
|
|
||||||
const subPaths = subPath.split(sep)
|
|
||||||
const currentPaths = subPaths.slice(subPaths.indexOf(packagesStr) + 1)
|
|
||||||
const templateName = getTemplateName(currentPaths)
|
|
||||||
const templatePath = currentPaths[currentPaths.length - 1].split('.')[0]
|
|
||||||
const componentName = []
|
|
||||||
currentPaths.every((dirName) => {
|
|
||||||
if (dirName === 'src') {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
componentName.push(dirName)
|
|
||||||
return true
|
|
||||||
})
|
|
||||||
const globalName = componentName[componentName.length - 1].split('-').map(utils.capitalize).join('')
|
|
||||||
const moduleName = globalName + (isEntry ? '' : templateName)
|
|
||||||
const oldModuleItem = oldModules[moduleName] || {}
|
|
||||||
const oldKeys = Object.keys(oldModuleItem)
|
|
||||||
const newModuleItem = addModule({
|
|
||||||
componentName: componentName.join('/'),
|
|
||||||
templateName: templatePath
|
|
||||||
})
|
|
||||||
oldKeys.forEach((key) => {
|
|
||||||
if (typeof newModuleItem[key] === 'undefined' || key === 'onlyMode') {
|
|
||||||
newModuleItem[key] = oldModuleItem[key]
|
|
||||||
}
|
|
||||||
})
|
|
||||||
newModuleItem.exclude = oldModuleItem.exclude || false
|
|
||||||
templates[moduleName] = newModuleItem
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
writeModuleMap(quickSort({ sortData: templates, returnType: 'object' }))
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
|
||||||
makeModules()
|
|
||||||
|
|
||||||
utils.logGreen('npm run create:mapping done.')
|
|
||||||
} catch (e) {
|
|
||||||
utils.logRed('npm run create:mapping failed.', e)
|
|
||||||
}
|
|
|
@ -1,229 +0,0 @@
|
||||||
/**
|
|
||||||
* yarn create:ui 新建组件,支持格式如下:
|
|
||||||
* yarn create:ui img-preview
|
|
||||||
* yarn create:ui img-preview -single 输出纯净模板(没有 pc 等模板/单层组件)
|
|
||||||
* yarn create:ui img-preview -mobile 创建纯移动组件
|
|
||||||
*/
|
|
||||||
const path = require('path')
|
|
||||||
const fs = require('fs-extra')
|
|
||||||
const semver = require('semver')
|
|
||||||
const utils = require('./utils')
|
|
||||||
const { createModuleMapping } = require('./module-utils')
|
|
||||||
|
|
||||||
const args = utils.getInputCmd()
|
|
||||||
|
|
||||||
const getTemplate = (upperComponentName) => `<template>
|
|
||||||
<div>
|
|
||||||
<tiny-[[NAME]] _mode="mobile"></tiny-[[NAME]]>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { [[UNAME]] } from '@opentiny/vue'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: '[[UNAME]]',
|
|
||||||
components: {
|
|
||||||
Tiny${upperComponentName}:${upperComponentName}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>`
|
|
||||||
|
|
||||||
const getDcoTemplate = () => `<div class="demo-header">
|
|
||||||
<p class="overviewicon">
|
|
||||||
<span class="wapi-ui-[[NAME]]"/>
|
|
||||||
</p>
|
|
||||||
|
|
||||||
## [[UNAME]]
|
|
||||||
|
|
||||||
<mobile-uxlink widget-name="[[UNAME]]"></mobile-uxlink>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
### [[UNAME]]
|
|
||||||
|
|
||||||
<mobile-view link="[[NAME]]/base"></mobile-view>`
|
|
||||||
|
|
||||||
const getTemp = (componentName) => `const router = [
|
|
||||||
{
|
|
||||||
path: '${componentName}',
|
|
||||||
meta: {
|
|
||||||
title: 'test',
|
|
||||||
lang: 'zh-CN',
|
|
||||||
sign: 'component'
|
|
||||||
},
|
|
||||||
component: () =>
|
|
||||||
import(
|
|
||||||
/* webpackChunkName: 'v3-${componentName}' */ './docs/mobile/${componentName}/base.md'
|
|
||||||
)
|
|
||||||
},`
|
|
||||||
|
|
||||||
const doWorkTreeFn = ({ templateDir, componentPath, componetDir, componentName, isSingle, render, version, isMobile }) => {
|
|
||||||
utils.walkFileTree({
|
|
||||||
isDeep: true,
|
|
||||||
dirPath: templateDir,
|
|
||||||
callback({ file, subPath }) {
|
|
||||||
let fileName = file
|
|
||||||
const isSingleTemplate = file === 'single.vue'
|
|
||||||
const isSrcDir = path.basename(path.dirname(subPath)) === 'src'
|
|
||||||
|
|
||||||
componentPath = path.join(componetDir, componentName)
|
|
||||||
|
|
||||||
// 单层组件处理逻辑
|
|
||||||
if (isSrcDir) {
|
|
||||||
componentPath = path.join(componentPath, 'src')
|
|
||||||
|
|
||||||
if (isSingle) {
|
|
||||||
if (!isSingleTemplate) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
fileName = 'index.vue'
|
|
||||||
} else {
|
|
||||||
if (isSingleTemplate) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!fs.existsSync(componentPath)) {
|
|
||||||
fs.mkdirSync(componentPath)
|
|
||||||
}
|
|
||||||
|
|
||||||
componentPath = path.join(componentPath, fileName)
|
|
||||||
|
|
||||||
let fileContent = fs.readFileSync(subPath, { encoding: 'utf8' })
|
|
||||||
const upperComponentName = utils.capitalizeKebabCase(componentName)
|
|
||||||
|
|
||||||
// 编译模板
|
|
||||||
fileContent = render(fileContent, {
|
|
||||||
NAME: componentName,
|
|
||||||
UNAME: upperComponentName,
|
|
||||||
MINOR: semver.minor(version),
|
|
||||||
SUFFIX: isSingle ? '.vue' : '',
|
|
||||||
THEME: isMobile ? 'theme-mobile' : 'theme'
|
|
||||||
})
|
|
||||||
|
|
||||||
fs.writeFileSync(componentPath, fileContent)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
const createRouter = (json, componentName, navPath, router) => {
|
|
||||||
const Navs = JSON.parse(json)
|
|
||||||
Navs.component.push({
|
|
||||||
name: 'New Component',
|
|
||||||
children: [
|
|
||||||
{
|
|
||||||
path: `/${componentName}`,
|
|
||||||
name: `${componentName}`
|
|
||||||
}
|
|
||||||
]
|
|
||||||
})
|
|
||||||
|
|
||||||
fs.writeFileSync(path.join(navPath, 'nav.config.comp.mobile.json'), JSON.stringify(Navs, null, 2), { encoding: 'utf-8' })
|
|
||||||
|
|
||||||
fs.writeFileSync(path.join(navPath, 'route.config.comp.mobile.js'), router, {
|
|
||||||
encoding: 'utf8'
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
if (args.length > 0) {
|
|
||||||
const commands = []
|
|
||||||
const components = []
|
|
||||||
const render = utils.renderTemplate({ leftChar: '[[', rightChar: ']]' })
|
|
||||||
const templateDir = utils.pathJoin('..', 'template', 'component')
|
|
||||||
const componetDir = utils.pathJoin('..', 'packages')
|
|
||||||
const demoDir = utils.pathJoin('..', 'example', 'src', 'demo', 'mobile')
|
|
||||||
const docDir = utils.pathJoin('..', 'example', 'src', 'docs', 'mobile')
|
|
||||||
const { version } = fs.readJSONSync(utils.pathJoin('..', 'package.json'))
|
|
||||||
const navPath = utils.pathJoin('..', 'example', 'src')
|
|
||||||
|
|
||||||
args.forEach((item) => {
|
|
||||||
if (item.indexOf('-') === 0) {
|
|
||||||
commands.push(item.replace(/-/g, '').toLowerCase())
|
|
||||||
} else {
|
|
||||||
components.push(item)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
const isSingle = commands.includes('single')
|
|
||||||
const isMobile = commands.includes('mobile')
|
|
||||||
|
|
||||||
const createDemo = (filePath, componentName, fileName, template) => {
|
|
||||||
if (!fs.existsSync(filePath)) {
|
|
||||||
fs.mkdirSync(filePath)
|
|
||||||
}
|
|
||||||
|
|
||||||
const upperComponentName = utils.capitalizeKebabCase(componentName)
|
|
||||||
|
|
||||||
// 生成测试demo
|
|
||||||
filePath = path.join(filePath, fileName)
|
|
||||||
|
|
||||||
const outString = render(template, {
|
|
||||||
NAME: componentName,
|
|
||||||
UNAME: upperComponentName
|
|
||||||
})
|
|
||||||
|
|
||||||
const outputDemo = require('prettier').format(outString, {
|
|
||||||
printWidth: 160,
|
|
||||||
jsxBracketSameLine: false,
|
|
||||||
tabWidth: 2,
|
|
||||||
useTabs: false,
|
|
||||||
singleQuote: true,
|
|
||||||
semi: false,
|
|
||||||
trailingComma: 'none',
|
|
||||||
bracketSpacing: true,
|
|
||||||
parser: 'vue'
|
|
||||||
})
|
|
||||||
|
|
||||||
fs.writeFileSync(filePath, outputDemo)
|
|
||||||
}
|
|
||||||
|
|
||||||
components.forEach((componentName) => {
|
|
||||||
let componentPath = path.join(componetDir, componentName)
|
|
||||||
let demoPath = path.join(demoDir, componentName)
|
|
||||||
let docPath = path.join(docDir, componentName)
|
|
||||||
const upperComponentName = utils.capitalizeKebabCase(componentName)
|
|
||||||
|
|
||||||
if (fs.existsSync(componentPath)) {
|
|
||||||
utils.logYellow(`The component name : ${componentName} is exist , please enter other name.`)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
const json = fs.readFileSync(path.join(navPath, 'nav.config.comp.mobile.json'), { encoding: 'utf8' })
|
|
||||||
|
|
||||||
let router = fs.readFileSync(path.join(navPath, 'route.config.comp.mobile.js'), { encoding: 'utf8' })
|
|
||||||
|
|
||||||
const templ = getTemp(componentName)
|
|
||||||
router = router.replace('const router = [', templ)
|
|
||||||
|
|
||||||
createRouter(json, componentName, navPath, router)
|
|
||||||
|
|
||||||
doWorkTreeFn({
|
|
||||||
templateDir,
|
|
||||||
componentPath,
|
|
||||||
componetDir,
|
|
||||||
componentName,
|
|
||||||
isSingle,
|
|
||||||
render,
|
|
||||||
version,
|
|
||||||
isMobile
|
|
||||||
})
|
|
||||||
|
|
||||||
// 生成测试demo
|
|
||||||
const template = getTemplate(upperComponentName)
|
|
||||||
createDemo(demoPath, componentName, 'base.vue', template)
|
|
||||||
|
|
||||||
// 生成doc
|
|
||||||
const dcoTemplate = getDcoTemplate()
|
|
||||||
|
|
||||||
createDemo(docPath, componentName, 'base.md', dcoTemplate)
|
|
||||||
|
|
||||||
componentName && createModuleMapping(componentName, componentPath, isMobile)
|
|
||||||
})
|
|
||||||
|
|
||||||
utils.logYellow('npm run create:ui done.')
|
|
||||||
} else {
|
|
||||||
utils.logYellow('please enter the component name after command.')
|
|
||||||
}
|
|
|
@ -1,304 +0,0 @@
|
||||||
/**
|
|
||||||
* 打包运行时通用配置
|
|
||||||
*
|
|
||||||
* 全量运行时(组件分组)
|
|
||||||
* 运行时版本号
|
|
||||||
* 运行时外部依赖路径
|
|
||||||
*/
|
|
||||||
const fs = require('fs-extra')
|
|
||||||
const { getVersion, pathJoin, logRed } = require('./utils')
|
|
||||||
const moduleUtils = require('./module-utils')
|
|
||||||
|
|
||||||
const runtimeComponents = {
|
|
||||||
core: [
|
|
||||||
'Common',
|
|
||||||
'Icon',
|
|
||||||
'Locale',
|
|
||||||
'Alert',
|
|
||||||
'Col',
|
|
||||||
'Container',
|
|
||||||
'DialogBox',
|
|
||||||
'Layout',
|
|
||||||
'Loading',
|
|
||||||
'Popover',
|
|
||||||
'Row',
|
|
||||||
'Tooltip',
|
|
||||||
'Carousel',
|
|
||||||
'CarouselItem',
|
|
||||||
'Collapse',
|
|
||||||
'CollapseItem',
|
|
||||||
'Split',
|
|
||||||
'TimeLine',
|
|
||||||
'Milestone',
|
|
||||||
'Floatbar',
|
|
||||||
'Steps',
|
|
||||||
'TabItem',
|
|
||||||
'Tabs',
|
|
||||||
'Breadcrumb',
|
|
||||||
'BreadcrumbItem',
|
|
||||||
'FallMenu',
|
|
||||||
'NavMenu',
|
|
||||||
'Rate',
|
|
||||||
'Tag',
|
|
||||||
'TopBox',
|
|
||||||
'Notify',
|
|
||||||
'Image',
|
|
||||||
'ImageViewer',
|
|
||||||
'ScrollText',
|
|
||||||
'Scrollbar',
|
|
||||||
'UserHead',
|
|
||||||
'SlideBar',
|
|
||||||
'Slider',
|
|
||||||
'Link',
|
|
||||||
'Progress',
|
|
||||||
'Crop'
|
|
||||||
],
|
|
||||||
base: [
|
|
||||||
'Autocomplete',
|
|
||||||
'BulletinBoard',
|
|
||||||
'Button',
|
|
||||||
'ButtonGroup',
|
|
||||||
'Calendar',
|
|
||||||
'Cascader',
|
|
||||||
'CascaderMenu',
|
|
||||||
'CascaderNode',
|
|
||||||
'CascaderPanel',
|
|
||||||
'Checkbox',
|
|
||||||
'CheckboxButton',
|
|
||||||
'CheckboxGroup',
|
|
||||||
'DatePanel',
|
|
||||||
'DatePicker',
|
|
||||||
'DateRange',
|
|
||||||
'DateTable',
|
|
||||||
'DetailPage',
|
|
||||||
'DropTimes',
|
|
||||||
'FileUpload',
|
|
||||||
'Form',
|
|
||||||
'FormItem',
|
|
||||||
'Grid',
|
|
||||||
'GridColumn',
|
|
||||||
'GridManager',
|
|
||||||
'GridToolbar',
|
|
||||||
'Input',
|
|
||||||
'IpAddress',
|
|
||||||
'LinkMenu',
|
|
||||||
'Modal',
|
|
||||||
'MonthRange',
|
|
||||||
'MonthTable',
|
|
||||||
'Numeric',
|
|
||||||
'Option',
|
|
||||||
'OptionGroup',
|
|
||||||
'Pager',
|
|
||||||
'PagerItem',
|
|
||||||
'Picker',
|
|
||||||
'PopUpload',
|
|
||||||
'Popeditor',
|
|
||||||
'Radio',
|
|
||||||
'RadioButton',
|
|
||||||
'RadioGroup',
|
|
||||||
'Search',
|
|
||||||
'Select',
|
|
||||||
'SelectDropdown',
|
|
||||||
'Switch',
|
|
||||||
'Table',
|
|
||||||
'TextPopup',
|
|
||||||
'Time',
|
|
||||||
'TimePanel',
|
|
||||||
'TimePicker',
|
|
||||||
'TimeRange',
|
|
||||||
'TimeSelect',
|
|
||||||
'TimeSpinner',
|
|
||||||
'ToggleMenu',
|
|
||||||
'Transfer',
|
|
||||||
'TransferPanel',
|
|
||||||
'Tree',
|
|
||||||
'TreeMenu',
|
|
||||||
'Upload',
|
|
||||||
'UploadDragger',
|
|
||||||
'UploadList',
|
|
||||||
'YearTable'
|
|
||||||
],
|
|
||||||
business: ['UserContact', 'Wizard'],
|
|
||||||
chart: [
|
|
||||||
'BaiduMap',
|
|
||||||
'ChartBar',
|
|
||||||
'ChartCandle',
|
|
||||||
'ChartCore',
|
|
||||||
'ChartFunnel',
|
|
||||||
'ChartGauge',
|
|
||||||
'ChartWaterfall',
|
|
||||||
'ChartGraph',
|
|
||||||
'ChartHeatmap',
|
|
||||||
'ChartHistogram',
|
|
||||||
'ChartLine',
|
|
||||||
'ChartMap',
|
|
||||||
'ChartPie',
|
|
||||||
'ChartRadar',
|
|
||||||
'ChartRing',
|
|
||||||
'ChartSankey',
|
|
||||||
'ChartScatter',
|
|
||||||
'ChartSunburst',
|
|
||||||
'ChartTree',
|
|
||||||
'Chart',
|
|
||||||
'ChartBoxplot'
|
|
||||||
],
|
|
||||||
external: ['CardTemplate', 'CreditCard', 'CreditCardForm', 'SvgIcon', 'AutonaviMap', 'ChartWordcloud', 'ChartLiquidfill']
|
|
||||||
}
|
|
||||||
|
|
||||||
const echartsVersion = getVersion('echarts')
|
|
||||||
const auroraVueVersion = getVersion('@opentiny/vue')
|
|
||||||
const echartsSource = 'lib/echarts.min.js' + echartsVersion
|
|
||||||
const dependencies = {
|
|
||||||
vue: 'node_modules/vue/dist/vue.min.js',
|
|
||||||
'vue-i18n': 'node_modules/vue-i18n/dist/vue-i18n.min.js',
|
|
||||||
axios: 'node_modules/axios/dist/axios.min.js',
|
|
||||||
'axios-mock-adapter': 'node_modules/axios-mock-adapter/dist/axios-mock-adapter.min.js',
|
|
||||||
'@vue/composition-api': 'node_modules/@vue/composition-api/dist/vue-composition-api.prod.js',
|
|
||||||
'@opentiny/core': 'node_modules/@opentiny/core/dist/aurora.min.js',
|
|
||||||
'@opentiny/service': 'node_modules/@opentiny/service/dist/aurora.service.min.js',
|
|
||||||
cropperjs: 'node_modules/cropperjs/dist/cropper.min.js',
|
|
||||||
vue3: 'example/node_modules/vue/dist/vue.global.prod.js',
|
|
||||||
'vue3-i18n': 'example/node_modules/vue-i18n/dist/vue-i18n.global.js'
|
|
||||||
}
|
|
||||||
|
|
||||||
const runtimeDeps = {
|
|
||||||
base: {
|
|
||||||
vue: 'lib/vue.min.js' + getVersion('vue'),
|
|
||||||
axios: 'lib/axios.min.js' + getVersion('axios'),
|
|
||||||
'vue-i18n': 'lib/vue-i18n.min.js' + getVersion('vue-i18n'),
|
|
||||||
'axios-mock-adapter': 'lib/axios-mock-adapter.min.js' + getVersion('axios-mock-adapter')
|
|
||||||
},
|
|
||||||
aurora: {
|
|
||||||
'@opentiny/core': 'lib/aurora.min.js' + getVersion('@opentiny/core'),
|
|
||||||
'@opentiny/service': 'lib/aurora.service.min.js' + getVersion('@opentiny/service')
|
|
||||||
},
|
|
||||||
tiny3Lib: {
|
|
||||||
'@vue/composition-api': 'lib/vue-composition-api.prod.js' + getVersion('@vue/composition-api'),
|
|
||||||
echarts: echartsSource,
|
|
||||||
'echarts/lib/echarts': echartsSource,
|
|
||||||
'echarts/lib/chart/bar': echartsSource,
|
|
||||||
'echarts/lib/chart/boxplot': echartsSource,
|
|
||||||
'echarts/lib/chart/candlestick': echartsSource,
|
|
||||||
'echarts/lib/chart/chord': echartsSource,
|
|
||||||
'echarts/lib/chart/custom': echartsSource,
|
|
||||||
'echarts/lib/chart/effectScatter': echartsSource,
|
|
||||||
'echarts/lib/chart/funnel': echartsSource,
|
|
||||||
'echarts/lib/chart/gauge': echartsSource,
|
|
||||||
'echarts/lib/chart/graph': echartsSource,
|
|
||||||
'echarts/lib/chart/heatmap': echartsSource,
|
|
||||||
'echarts/lib/chart/line': echartsSource,
|
|
||||||
'echarts/lib/chart/lines': echartsSource,
|
|
||||||
'echarts/lib/chart/map': echartsSource,
|
|
||||||
'echarts/lib/chart/parallel': echartsSource,
|
|
||||||
'echarts/lib/chart/pictorialBar': echartsSource,
|
|
||||||
'echarts/lib/chart/pie': echartsSource,
|
|
||||||
'echarts/lib/chart/radar': echartsSource,
|
|
||||||
'echarts/lib/chart/sankey': echartsSource,
|
|
||||||
'echarts/lib/chart/scatter': echartsSource,
|
|
||||||
'echarts/lib/chart/sunburst': echartsSource,
|
|
||||||
'echarts/lib/chart/themeRiver': echartsSource,
|
|
||||||
'echarts/lib/chart/tree': echartsSource,
|
|
||||||
'echarts/lib/chart/treemap': echartsSource,
|
|
||||||
'echarts/lib/component/legend': echartsSource,
|
|
||||||
'echarts/lib/component/tooltip': echartsSource,
|
|
||||||
'echarts/lib/component/dataZoom': echartsSource,
|
|
||||||
'echarts/lib/component/visualMap': echartsSource,
|
|
||||||
cropperjs: 'lib/cropper.min.js' + getVersion('cropperjs'),
|
|
||||||
'@opentiny/vue-renderless-common': 'tiny/common/renderless.js' + getVersion('@opentiny/vue-renderless')
|
|
||||||
},
|
|
||||||
tiny3Component: {
|
|
||||||
'@opentiny/vue-locale': 'COMPONENT_DIR/locale.js' + auroraVueVersion,
|
|
||||||
'@opentiny/vue-icon': 'COMPONENT_DIR/icon.js' + auroraVueVersion,
|
|
||||||
'@opentiny/vue-common': 'COMPONENT_DIR/common.js' + auroraVueVersion
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const getPartDeps = (keys = []) => {
|
|
||||||
const tempDeps = {}
|
|
||||||
|
|
||||||
for (let key in runtimeDeps) {
|
|
||||||
if (Object.prototype.hasOwnProperty.call(runtimeDeps, key)) {
|
|
||||||
keys.includes(key) && Object.assign(tempDeps, runtimeDeps[key])
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return tempDeps
|
|
||||||
}
|
|
||||||
|
|
||||||
const getAllDeps = () => getPartDeps(Object.keys(runtimeDeps))
|
|
||||||
|
|
||||||
const getAllComponents = () => {
|
|
||||||
const componentMap = moduleUtils.getPcComponents(true)
|
|
||||||
const systemMap = {}
|
|
||||||
|
|
||||||
for (let i = 0, len = componentMap.length; i < len; i++) {
|
|
||||||
const libName = componentMap[i].LowerName
|
|
||||||
const libEntry = componentMap[i].path
|
|
||||||
let version = auroraVueVersion
|
|
||||||
|
|
||||||
try {
|
|
||||||
version = '?v=' + require('../' + libEntry.replace('index.js', 'package.json')).version.replace(/[\^|~]/g, '')
|
|
||||||
} catch (e) {
|
|
||||||
logRed(e)
|
|
||||||
}
|
|
||||||
|
|
||||||
systemMap[componentMap[i].importName] = 'COMPONENT_DIR/' + libName + '.js' + version
|
|
||||||
}
|
|
||||||
|
|
||||||
return systemMap
|
|
||||||
}
|
|
||||||
|
|
||||||
const getFullRuntimeDeps = () => ({ ...getAllDeps(), ...getAllComponents() })
|
|
||||||
|
|
||||||
const getComponentRuntimeDeps = () => ({
|
|
||||||
...getPartDeps(['theme', 'tiny3Lib', 'tiny3Component']),
|
|
||||||
...getAllComponents()
|
|
||||||
})
|
|
||||||
|
|
||||||
const getFullRuntime = (name) => {
|
|
||||||
const arr = typeof name === 'string' ? [name] : name || Object.keys(runtimeComponents)
|
|
||||||
|
|
||||||
return [].concat(...arr.map((key) => runtimeComponents[key]))
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 提取 @opentiny/vue-renderless 中的公共代码,打成独立包(避免组件运行不正常)
|
|
||||||
*/
|
|
||||||
const getRenderlessExports = () => {
|
|
||||||
const RENDERLESS_PATH = pathJoin('..', 'node_modules', '@opentiny', 'renderless', 'common', 'runtime.js')
|
|
||||||
|
|
||||||
let EXTERNAL_RENDERLESS = []
|
|
||||||
|
|
||||||
// 获取需要排除的依赖
|
|
||||||
if (fs.existsSync(RENDERLESS_PATH)) {
|
|
||||||
const runtimeExport = fs.readFileSync(RENDERLESS_PATH).toString('UTF-8')
|
|
||||||
|
|
||||||
EXTERNAL_RENDERLESS = runtimeExport.match(/import(.*)from(.*)/g) || []
|
|
||||||
|
|
||||||
EXTERNAL_RENDERLESS = EXTERNAL_RENDERLESS.map((item) => {
|
|
||||||
let moduleLine = item.replace(/^import\s+/g, '').split(/\s+from\s+/)
|
|
||||||
|
|
||||||
return {
|
|
||||||
libraryName: moduleLine.pop().replace(/'/g, '').replace(';', ''),
|
|
||||||
exportName: moduleLine.pop().split(/\s/).pop()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
EXTERNAL_RENDERLESS,
|
|
||||||
RENDERLESS_PATH
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
dependencies,
|
|
||||||
getAllDeps,
|
|
||||||
getPartDeps,
|
|
||||||
getFullRuntime,
|
|
||||||
getAllComponents,
|
|
||||||
getFullRuntimeDeps,
|
|
||||||
getRenderlessExports,
|
|
||||||
getComponentRuntimeDeps,
|
|
||||||
getExternalComponents: () => runtimeComponents.external
|
|
||||||
}
|
|
|
@ -1,88 +0,0 @@
|
||||||
/**
|
|
||||||
* 初始化/创建 ICON 组件,从 @opentiny/vue-theme/svgs 中提取 SVG 图标创建对应的 ICON 组件
|
|
||||||
*/
|
|
||||||
const path = require('path')
|
|
||||||
const fs = require('fs-extra')
|
|
||||||
const utils = require('./utils')
|
|
||||||
const semver = require('semver')
|
|
||||||
const { EOL } = require('os')
|
|
||||||
|
|
||||||
const svgRE = /\.svg$/
|
|
||||||
const svgDir = utils.pathJoin('../../', 'vue-theme', 'theme', 'svgs')
|
|
||||||
const iconDir = utils.pathJoin('..', 'packages', 'icon')
|
|
||||||
const packageJson = 'package.json'
|
|
||||||
const templatePath = utils.pathJoin('..', 'template')
|
|
||||||
const render = utils.renderTemplate({ leftChar: '[[', rightChar: ']]' })
|
|
||||||
|
|
||||||
// 检查是否按照依赖包
|
|
||||||
if (!fs.existsSync(svgDir)) {
|
|
||||||
utils.logYellow('The @opentiny/vue-theme is not exist , please npm install @opentiny/vue-theme.')
|
|
||||||
}
|
|
||||||
|
|
||||||
// 是否包含 package/icon 目录
|
|
||||||
if (!fs.existsSync(iconDir)) {
|
|
||||||
fs.mkdirSync(iconDir)
|
|
||||||
|
|
||||||
const version = utils.getTinyVersion()
|
|
||||||
const iconTemplate = fs.readJSONSync(path.join(templatePath, 'component', packageJson))
|
|
||||||
|
|
||||||
// 删除多余的依赖
|
|
||||||
if (iconTemplate.dependencies) {
|
|
||||||
delete iconTemplate.dependencies['@opentiny/vue-renderless']
|
|
||||||
}
|
|
||||||
|
|
||||||
const packageContent = render(JSON.stringify(iconTemplate), {
|
|
||||||
NAME: 'icon',
|
|
||||||
MINOR: semver.minor(version)
|
|
||||||
})
|
|
||||||
|
|
||||||
fs.writeFileSync(path.join(iconDir, packageJson), packageContent)
|
|
||||||
}
|
|
||||||
|
|
||||||
const exportComponents = []
|
|
||||||
const exportIcons = []
|
|
||||||
const componentTemplate = fs.readFileSync(path.join(templatePath, 'icon', 'index.js'), { encoding: 'utf8' })
|
|
||||||
|
|
||||||
// 根据 @opentiny/vue-theme/svgs 中的 svg 图片创建对应的 icon 组件
|
|
||||||
fs.readdirSync(svgDir).forEach((fileName) => {
|
|
||||||
if (svgRE.test(fileName)) {
|
|
||||||
const svgName = fileName.replace(svgRE, '')
|
|
||||||
const iconPath = path.join(iconDir, svgName)
|
|
||||||
const iconName = utils.capitalizeKebabCase(svgName)
|
|
||||||
const fullIconName = `Icon${iconName}`
|
|
||||||
|
|
||||||
if (!fs.existsSync(iconPath)) {
|
|
||||||
fs.mkdirSync(iconPath)
|
|
||||||
const iconEntryContent = render(componentTemplate, {
|
|
||||||
CNAME: iconName,
|
|
||||||
SNAME: fileName
|
|
||||||
})
|
|
||||||
|
|
||||||
fs.writeFileSync(path.join(iconPath, 'index.js'), utils.prettierFormat({ str: iconEntryContent }))
|
|
||||||
}
|
|
||||||
exportComponents.push(`import ${fullIconName} from './${svgName}'`)
|
|
||||||
exportIcons.push(fullIconName)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
if (exportComponents.length) {
|
|
||||||
fs.writeFileSync(
|
|
||||||
path.join(iconDir, 'index.js'),
|
|
||||||
utils.prettierFormat({
|
|
||||||
str: `${exportComponents.join(EOL)}
|
|
||||||
|
|
||||||
export {
|
|
||||||
${exportIcons.join(',' + EOL)}
|
|
||||||
}
|
|
||||||
|
|
||||||
export default {
|
|
||||||
${exportIcons.join(',' + EOL)}
|
|
||||||
}
|
|
||||||
`
|
|
||||||
})
|
|
||||||
)
|
|
||||||
|
|
||||||
utils.logGreen('npm run create:icon done.')
|
|
||||||
} else {
|
|
||||||
utils.logRed('npm run create:icon fail.')
|
|
||||||
}
|
|
309
build/utils.js
|
@ -1,309 +0,0 @@
|
||||||
const fs = require('fs-extra')
|
|
||||||
const path = require('path')
|
|
||||||
const chalk = require('chalk')
|
|
||||||
const { execSync } = require('child_process')
|
|
||||||
const log = global.console
|
|
||||||
|
|
||||||
const logger = log.log
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据运行上下文获取路径(运行时打包用)
|
|
||||||
* @returns 文件绝对路径
|
|
||||||
*/
|
|
||||||
const resolveCwd = (...args) => path.join(process.cwd(), ...args)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取模板替换路径(动态)
|
|
||||||
* @param {String} posixPath 路径
|
|
||||||
* @returns 文件绝对路径
|
|
||||||
*/
|
|
||||||
const assetsPath = (posixPath) => path.posix.join('static', posixPath)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 根据运行上下文获取,当前运行组件的名称
|
|
||||||
* @returns 当前运行组件目录名称
|
|
||||||
*/
|
|
||||||
const getComponentName = () => process.cwd().split(path.sep).pop()
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取当前上下文的路径
|
|
||||||
* @returns 文件绝对路径
|
|
||||||
*/
|
|
||||||
const pathJoin = (...args) => path.join(__dirname, ...args)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取用户输入命令参数
|
|
||||||
* @returns 参数数组
|
|
||||||
*/
|
|
||||||
const getInputCmd = () => {
|
|
||||||
const args = []
|
|
||||||
const argv = process.argv || []
|
|
||||||
|
|
||||||
argv.forEach((item) => {
|
|
||||||
if (item.indexOf(path.sep) === -1) {
|
|
||||||
args.push(item)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
return args
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取当前执行 cli 命令的工具:node\npm\yarn
|
|
||||||
* @returns node\npm\yarn
|
|
||||||
*/
|
|
||||||
const getCurrentCliTool = () => {
|
|
||||||
const npmExecpaths = process.env.npm_execpaths
|
|
||||||
|
|
||||||
if (!npmExecpaths) {
|
|
||||||
return 'node'
|
|
||||||
}
|
|
||||||
|
|
||||||
return npmExecpaths.substring(npmExecpaths.lastIndexOf(path.sep) + 1).replace(/.js|-cli/g, '')
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 执行 node 命令
|
|
||||||
* @param {String} cmdStr 命令字符串
|
|
||||||
*/
|
|
||||||
const execCmd = (cmdStr) => {
|
|
||||||
cmdStr && execSync(cmdStr, { stdio: 'inherit' })
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 首字母大写
|
|
||||||
* @param {String} str 字符串
|
|
||||||
* @returns 字符串
|
|
||||||
*/
|
|
||||||
const capitalize = (str) => (typeof str === 'string' ? str.slice(0, 1).toUpperCase() + str.slice(1) : str)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 首字母大写
|
|
||||||
* @param {String} str 字符串
|
|
||||||
* @returns 字符串
|
|
||||||
*/
|
|
||||||
const capitalizeKebabCase = (str, splitChar = '-') => (typeof str === 'string' ? str.split(splitChar).map(capitalize).join('') : str)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @description 将驼峰字符串转化为以指定字符分割的小写字符串
|
|
||||||
* @example kebabCase({ str : 'ImgPreviewItem' } )
|
|
||||||
* @example 输出结果:img-preview-item
|
|
||||||
*
|
|
||||||
* @param str 字符串
|
|
||||||
* @param splitChar 分隔符
|
|
||||||
*/
|
|
||||||
const kebabCase = ({ str, splitChar = '-' }) => {
|
|
||||||
if (!str || typeof str !== 'string') {
|
|
||||||
return str
|
|
||||||
}
|
|
||||||
|
|
||||||
return str
|
|
||||||
.split('')
|
|
||||||
.map((char, index) => {
|
|
||||||
const charCod = char.charCodeAt(0)
|
|
||||||
|
|
||||||
if (charCod < 65 || charCod > 122) {
|
|
||||||
return char
|
|
||||||
}
|
|
||||||
|
|
||||||
return (charCod >= 65 && charCod) <= 90 ? (index === 0 ? '' : splitChar) + char.toLowerCase() : char
|
|
||||||
})
|
|
||||||
.join('')
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 采用 prettier 美化字符串
|
|
||||||
* @param {String} str 格式字符
|
|
||||||
* @param {Object} options 格式字符
|
|
||||||
*/
|
|
||||||
const prettierFormat = ({ str, options = {} }) =>
|
|
||||||
require('prettier').format(str, {
|
|
||||||
printWidth: 100,
|
|
||||||
jsxBracketSameLine: false,
|
|
||||||
tabWidth: 2,
|
|
||||||
useTabs: false,
|
|
||||||
singleQuote: true,
|
|
||||||
semi: false,
|
|
||||||
trailingComma: 'none',
|
|
||||||
bracketSpacing: true,
|
|
||||||
parser: 'babel',
|
|
||||||
...options
|
|
||||||
})
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @private
|
|
||||||
* @param {String} path dotted to indicate levels in an object.
|
|
||||||
* @param {Object} view for the data.
|
|
||||||
*/
|
|
||||||
function extractValue(path, view) {
|
|
||||||
if (view && view[path]) {
|
|
||||||
return view[path]
|
|
||||||
}
|
|
||||||
|
|
||||||
const parts = path.split('.')
|
|
||||||
let part = ''
|
|
||||||
|
|
||||||
while (view && (part = parts.shift())) {
|
|
||||||
view = typeof view === 'object' && part in view ? view[part] : undefined
|
|
||||||
}
|
|
||||||
|
|
||||||
return view
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 渲染字符串模板
|
|
||||||
* @param {String} leftChar 匹配左边字符
|
|
||||||
* @param {String} rightChar 匹配右边字符
|
|
||||||
*/
|
|
||||||
const renderTemplate = ({ leftChar = '{{', rightChar = '}}' } = {}) => {
|
|
||||||
const specialChar = ['[', ']']
|
|
||||||
const _leftChar = leftChar.split('').map((item) => (specialChar.includes(item) ? '\\' : '') + item)
|
|
||||||
|
|
||||||
const _rightChar = rightChar.split('').map((item) => (specialChar.includes(item) ? '\\' : '') + item)
|
|
||||||
|
|
||||||
const REGEX = new RegExp(`${_leftChar.join('')}([a-zA-Z.-_0-9]+)${_rightChar.join('')}`, 'g')
|
|
||||||
|
|
||||||
return (input, view) => {
|
|
||||||
if (input.indexOf(leftChar) === -1) {
|
|
||||||
return input
|
|
||||||
}
|
|
||||||
|
|
||||||
let result
|
|
||||||
const replaced = input.replace(REGEX, (original, path) => {
|
|
||||||
const value = extractValue(path, view)
|
|
||||||
|
|
||||||
if (undefined === value || value === null) {
|
|
||||||
return original
|
|
||||||
}
|
|
||||||
|
|
||||||
if (typeof value === 'object') {
|
|
||||||
result = value
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
return value
|
|
||||||
})
|
|
||||||
|
|
||||||
return undefined === result ? replaced : result
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 扫描指定目录下面的组件目录
|
|
||||||
* @param {String} dirPath 绝对路径
|
|
||||||
* @param {Boolean} isDeep 是否深度遍历
|
|
||||||
* @param {Function} fileFilter 文件筛选拦截函数
|
|
||||||
* @param {Function} callback 遍历回调
|
|
||||||
*/
|
|
||||||
const walkFileTree = ({ dirPath, isDeep = false, fileFilter, callback }) => {
|
|
||||||
if (!dirPath || typeof callback !== 'function') {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
const dirs = fs.readdirSync(path.isAbsolute(dirPath) ? dirPath : path.join(__dirname, dirPath))
|
|
||||||
|
|
||||||
if (Array.isArray(dirs) && dirs.length > 0) {
|
|
||||||
dirs.forEach((file) => {
|
|
||||||
let isFind = true
|
|
||||||
const subPath = path.join(dirPath, file)
|
|
||||||
const isDirectory = fs.statSync(subPath).isDirectory()
|
|
||||||
|
|
||||||
if (typeof fileFilter === 'function') {
|
|
||||||
isFind = fileFilter({ file, subPath, dirs, isDirectory }) === true
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isFind && isDirectory) {
|
|
||||||
if (isDeep) {
|
|
||||||
walkFileTree({ isDeep, dirPath: subPath, fileFilter, callback })
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
callback({ file, subPath, dirs, isDirectory })
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取根目录 package.json 中的 version
|
|
||||||
* @param {String} 对象的 Key
|
|
||||||
*/
|
|
||||||
const getTinyVersion = (key = 'version') => {
|
|
||||||
const packageJson = fs.readJsonSync(pathJoin('..', 'package.json'))
|
|
||||||
|
|
||||||
return packageJson[key] || packageJson
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 获取指定包名的版本号
|
|
||||||
*
|
|
||||||
* @param {String} name NPM 包名
|
|
||||||
* @param {String} context 上下文
|
|
||||||
* @returns
|
|
||||||
*/
|
|
||||||
const getVersion = (name, context = '..') => {
|
|
||||||
let version
|
|
||||||
const packageJSON = getTinyVersion('full')
|
|
||||||
|
|
||||||
try {
|
|
||||||
version = fs.readJsonSync(pathJoin(context, 'node_modules', name, 'package.json')).version
|
|
||||||
} catch (e) {
|
|
||||||
version = (packageJSON.devDependencies || packageJSON.dependencies || {})[name] || packageJSON.version
|
|
||||||
}
|
|
||||||
|
|
||||||
return '?v=' + version.replace(/[\^|~]/g, '')
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 在控制台显示绿色提示
|
|
||||||
* @param {String} 提示内容
|
|
||||||
*/
|
|
||||||
const logGreen = (str) => {
|
|
||||||
logger(chalk.green('### ' + str))
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 在控制台显示黄色提示
|
|
||||||
* @param {String} 提示内容
|
|
||||||
*/
|
|
||||||
const logYellow = (str) => {
|
|
||||||
logger(chalk.yellow('### ' + str))
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 在控制台显示青色提示
|
|
||||||
* @param {String} 提示内容
|
|
||||||
*/
|
|
||||||
const logCyan = (str) => {
|
|
||||||
logger(chalk.cyan('### ' + str))
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* 在控制台显示红色提示
|
|
||||||
* @param {String} 提示内容
|
|
||||||
*/
|
|
||||||
const logRed = (str) => {
|
|
||||||
logger(chalk.red('### ' + str))
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = {
|
|
||||||
logRed,
|
|
||||||
execCmd,
|
|
||||||
logCyan,
|
|
||||||
pathJoin,
|
|
||||||
logGreen,
|
|
||||||
logYellow,
|
|
||||||
kebabCase,
|
|
||||||
assetsPath,
|
|
||||||
capitalize,
|
|
||||||
getVersion,
|
|
||||||
resolveCwd,
|
|
||||||
getInputCmd,
|
|
||||||
walkFileTree,
|
|
||||||
renderTemplate,
|
|
||||||
prettierFormat,
|
|
||||||
getTinyVersion,
|
|
||||||
getComponentName,
|
|
||||||
getCurrentCliTool,
|
|
||||||
capitalizeKebabCase
|
|
||||||
}
|
|
|
@ -1,33 +0,0 @@
|
||||||
const path = require('path')
|
|
||||||
const fs = require('fs-extra')
|
|
||||||
|
|
||||||
const ROOTPATH = path.join(__dirname, './')
|
|
||||||
|
|
||||||
const publish = () => {
|
|
||||||
const publishDir = path.join(ROOTPATH, 'packages')
|
|
||||||
fs.readdirSync(publishDir).forEach((item) => {
|
|
||||||
const childPath = path.join(publishDir, item)
|
|
||||||
const stat = fs.statSync(childPath)
|
|
||||||
|
|
||||||
if (stat.isDirectory()) {
|
|
||||||
const distPath = path.join(childPath, './dist')
|
|
||||||
if (fs.existsSync(distPath) && fs.statSync(distPath).isDirectory()) {
|
|
||||||
fs.removeSync(distPath)
|
|
||||||
}
|
|
||||||
if (item.startsWith('chart')) {
|
|
||||||
fs.readdirSync(childPath).forEach((value) => {
|
|
||||||
const chartChildPath = path.join(childPath, value)
|
|
||||||
const chartStat = fs.statSync(chartChildPath)
|
|
||||||
if (value.includes('-') && chartStat.isDirectory()) {
|
|
||||||
const distPath = path.join(chartChildPath, './dist')
|
|
||||||
fs.existsSync(distPath) &&
|
|
||||||
fs.statSync(distPath).isDirectory() &&
|
|
||||||
fs.removeSync(distPath)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
publish()
|
|
|
@ -1,6 +0,0 @@
|
||||||
{
|
|
||||||
"rules": {
|
|
||||||
"no-console": "off",
|
|
||||||
"no-unused-vars": "off"
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,107 +0,0 @@
|
||||||
const rollup = require('rollup')
|
|
||||||
const replace = require('@rollup/plugin-replace')
|
|
||||||
const { readJSONSync } = require('fs-extra')
|
|
||||||
const utils = require('../../build/utils')
|
|
||||||
const config = require('./config')
|
|
||||||
const moduleUtils = require('../../build/module-utils')
|
|
||||||
const fs = require('fs-extra')
|
|
||||||
const isSingle = process.env.BUILD_TARGET === 'single'
|
|
||||||
|
|
||||||
const inputOptions = {
|
|
||||||
plugins: config.plugins,
|
|
||||||
external: config.external
|
|
||||||
}
|
|
||||||
|
|
||||||
const outputOptions = {
|
|
||||||
format: 'es',
|
|
||||||
globals: config.globals,
|
|
||||||
exports: 'named'
|
|
||||||
}
|
|
||||||
|
|
||||||
const replaceConstant = {
|
|
||||||
'process.env.BUILD_TARGET': JSON.stringify(process.env.BUILD_TARGET),
|
|
||||||
'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)
|
|
||||||
}
|
|
||||||
|
|
||||||
if (process.env.TINY_MODE === 'pc') {
|
|
||||||
outputOptions.format = 'umd'
|
|
||||||
replaceConstant['process.env.TINY_MODE'] = JSON.stringify(process.env.TINY_MODE)
|
|
||||||
}
|
|
||||||
|
|
||||||
const build = ({ comp, callbackFn }) => {
|
|
||||||
inputOptions.input = utils.pathJoin('..', comp.path)
|
|
||||||
|
|
||||||
inputOptions.plugins.push(replace(replaceConstant))
|
|
||||||
rollup
|
|
||||||
.rollup(inputOptions)
|
|
||||||
.then((bundle) => {
|
|
||||||
outputOptions.file = utils.pathJoin('..', comp.libPath)
|
|
||||||
if (outputOptions.format === 'umd') {
|
|
||||||
outputOptions.name = comp.global
|
|
||||||
}
|
|
||||||
bundle.write(outputOptions).finally(() => {
|
|
||||||
const filePath = utils.pathJoin('..', comp.libPath)
|
|
||||||
if (filePath.endsWith('index.js')) {
|
|
||||||
const indexStr = fs.readFileSync(filePath).toString('UTF-8')
|
|
||||||
const resStr = indexStr.replace('./src/pc', './pc').replace('./src/mobile', './mobile')
|
|
||||||
fs.writeFileSync(filePath, resStr)
|
|
||||||
}
|
|
||||||
callbackFn()
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.catch((e) => {
|
|
||||||
utils.logRed(e)
|
|
||||||
callbackFn()
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
let componentsArr = []
|
|
||||||
|
|
||||||
const buildAll = (count = 0) => {
|
|
||||||
let comp = componentsArr[count++]
|
|
||||||
if (comp) {
|
|
||||||
if (!isSingle) {
|
|
||||||
comp.libPath = 'dist/' + comp.libName.replace('@opentiny/vue/', '')
|
|
||||||
comp.libPath += (comp.type === 'component' ? '/index' : '') + '.js'
|
|
||||||
}
|
|
||||||
build({
|
|
||||||
comp,
|
|
||||||
callbackFn() {
|
|
||||||
buildAll(count)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
utils.logGreen(`npm run build:ui${isSingle ? '-single' : ''} done.`)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isSingle) {
|
|
||||||
const inputNameArr = utils.getInputCmd()
|
|
||||||
if (inputNameArr.length > 0) {
|
|
||||||
inputNameArr.forEach((input) => {
|
|
||||||
const activeComName = utils.kebabCase({ str: input })
|
|
||||||
|
|
||||||
if (activeComName) {
|
|
||||||
componentsArr.push(
|
|
||||||
...moduleUtils.getByName({
|
|
||||||
name: activeComName,
|
|
||||||
isSort: false
|
|
||||||
})
|
|
||||||
)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
const activeCompName = utils.getComponentName()
|
|
||||||
componentsArr = moduleUtils.getByName({
|
|
||||||
name: activeCompName,
|
|
||||||
isSort: false
|
|
||||||
})
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
componentsArr = moduleUtils.getAllModules(false)
|
|
||||||
}
|
|
||||||
if (componentsArr.length > 0) {
|
|
||||||
buildAll()
|
|
||||||
} else {
|
|
||||||
utils.logYellow('please enter the component name after command.')
|
|
||||||
}
|
|
|
@ -1,25 +0,0 @@
|
||||||
let compilerDom = require('@vue/compiler-dom')
|
|
||||||
|
|
||||||
function vue3SvgInline() {
|
|
||||||
return {
|
|
||||||
name: 'vue3SvgInline',
|
|
||||||
|
|
||||||
transform(source, id) {
|
|
||||||
if (id.indexOf('vue-theme') === -1) {
|
|
||||||
return null
|
|
||||||
}
|
|
||||||
const parsedSvg = source.match(/<svg([\s\S]*?)<\/svg>/)[0]
|
|
||||||
const { code } = compilerDom.compile(parsedSvg, {
|
|
||||||
mode: 'module'
|
|
||||||
})
|
|
||||||
|
|
||||||
return `
|
|
||||||
${code}
|
|
||||||
export default {
|
|
||||||
render
|
|
||||||
}`
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
module.exports = vue3SvgInline
|
|
|
@ -1 +0,0 @@
|
||||||
export * from '@opentiny/vue-icon'
|
|
|
@ -1,5 +0,0 @@
|
||||||
export * from '@opentiny/vue'
|
|
||||||
import locale from '@opentiny/vue-locale'
|
|
||||||
|
|
||||||
// 这里需要在运行时导出国际化方法
|
|
||||||
export { locale }
|
|
|
@ -1,13 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="UTF-8" />
|
|
||||||
<link rel="icon" href="/favicon.ico" />
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>Tiny Vue</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="app"></div>
|
|
||||||
<script type="module" src="/src/main3.js"></script>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,48 +0,0 @@
|
||||||
{
|
|
||||||
"name": "vue-example",
|
|
||||||
"version": "0.1.0",
|
|
||||||
"scripts": {
|
|
||||||
"dev": "vite",
|
|
||||||
"test": "vitest test",
|
|
||||||
"build:runtime-pc": "vite build --mode pc",
|
|
||||||
"build:runtime-icon": "vite build --mode icon",
|
|
||||||
"build:icon3": "cross-env NODE_ENV=production node build/build-icon.js",
|
|
||||||
"coverage": "vitest run --coverage"
|
|
||||||
},
|
|
||||||
"devDependencies": {
|
|
||||||
"@vitejs/plugin-vue": "^3.0.3",
|
|
||||||
"@vitejs/plugin-vue-jsx": "^2.0.0",
|
|
||||||
"@vue/babel-plugin-jsx": "^1.1.0",
|
|
||||||
"@vue/test-utils": "^2.0.0",
|
|
||||||
"esbuild-register": "^3.3.3",
|
|
||||||
"jsdom": "16.4.0",
|
|
||||||
"rollup-plugin-postcss": "^2.0.3",
|
|
||||||
"rollup-plugin-vue": "^6.0.0",
|
|
||||||
"vite-plugin-markdown-vue": "^0.1.2",
|
|
||||||
"vitest": "^0.22.1",
|
|
||||||
"vue": "^3.2.25",
|
|
||||||
"vue-i18n": "^9.1.7",
|
|
||||||
"vue-router": "^4.0.11"
|
|
||||||
},
|
|
||||||
"eslintConfig": {
|
|
||||||
"root": true,
|
|
||||||
"env": {
|
|
||||||
"node": true
|
|
||||||
},
|
|
||||||
"extends": [
|
|
||||||
"plugin:vue/essential",
|
|
||||||
"eslint:recommended"
|
|
||||||
],
|
|
||||||
"parserOptions": {
|
|
||||||
"parser": "babel-eslint"
|
|
||||||
},
|
|
||||||
"rules": {
|
|
||||||
"no-debugger": "off"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"browserslist": [
|
|
||||||
"> 1%",
|
|
||||||
"last 2 versions",
|
|
||||||
"not dead"
|
|
||||||
]
|
|
||||||
}
|
|
Before Width: | Height: | Size: 6.6 KiB |
|
@ -1,21 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html lang="en">
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8" />
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
|
||||||
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
|
|
||||||
<link rel="icon" href="./favicon.ico" />
|
|
||||||
<title>
|
|
||||||
TinyUI for Vue ( <%= htmlWebpackPlugin.options.vueVersion %> )
|
|
||||||
</title>
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<noscript>
|
|
||||||
<strong>We're sorry but TINY next - Originjs doesn't work properly without
|
|
||||||
JavaScript enabled. Please enable it to continue.</strong>
|
|
||||||
</noscript>
|
|
||||||
<div id="head"></div>
|
|
||||||
<div id="app"></div>
|
|
||||||
<!-- built files will be auto injected -->
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,56 +0,0 @@
|
||||||
{
|
|
||||||
"area": [
|
|
||||||
{
|
|
||||||
"org_id": "3623",
|
|
||||||
"id_and_type": "3623JCR",
|
|
||||||
"parent_and_type": null,
|
|
||||||
"name_cn": "A公司 Marketing与销售服务部",
|
|
||||||
"date_from": "2005/06/21 00:00:00",
|
|
||||||
"name_en": "Consumer BG Marketing and Sales Service Dept",
|
|
||||||
"parent_type": null,
|
|
||||||
"dept_code": "024206",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": null,
|
|
||||||
"area_label": "JCR"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "650561",
|
|
||||||
"id_and_type": "650561JCR",
|
|
||||||
"parent_and_type": null,
|
|
||||||
"name_cn": "A公司 Marketing与销售服务部(东莞)",
|
|
||||||
"date_from": "2012/09/27 00:00:00",
|
|
||||||
"name_en": "Consumer BG Marketing and Sales Service Dept (Dongguan)",
|
|
||||||
"parent_type": null,
|
|
||||||
"dept_code": "036068",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": null,
|
|
||||||
"area_label": "JCR"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "654434",
|
|
||||||
"id_and_type": "654434JCR",
|
|
||||||
"parent_and_type": null,
|
|
||||||
"name_cn": "区域管理部",
|
|
||||||
"date_from": "2014/06/18 00:00:00",
|
|
||||||
"name_en": "Regions Mgmt Dept",
|
|
||||||
"parent_type": null,
|
|
||||||
"dept_code": "038368",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": null,
|
|
||||||
"area_label": "JCR"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "653159",
|
|
||||||
"id_and_type": "037852JCR",
|
|
||||||
"parent_and_type": null,
|
|
||||||
"name_cn": "A公司业务部",
|
|
||||||
"date_from": "2014/01/20 00:00:00",
|
|
||||||
"name_en": "Consumer BG Business Unit",
|
|
||||||
"parent_type": null,
|
|
||||||
"dept_code": "037852",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": null,
|
|
||||||
"area_label": "JCR"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -1,343 +0,0 @@
|
||||||
{
|
|
||||||
"JCR": {
|
|
||||||
"area": [
|
|
||||||
{
|
|
||||||
"org_id": "3623",
|
|
||||||
"id_and_type": "3623JCR",
|
|
||||||
"parent_and_type": null,
|
|
||||||
"name_cn": "A公司 Marketing与销售服务部",
|
|
||||||
"date_from": "2005/06/21 00:00:00",
|
|
||||||
"name_en": "Consumer BG Marketing and Sales Service Dept",
|
|
||||||
"parent_type": null,
|
|
||||||
"dept_code": "024206",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": null,
|
|
||||||
"area_label": "JCR"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "650561",
|
|
||||||
"id_and_type": "650561JCR",
|
|
||||||
"parent_and_type": null,
|
|
||||||
"name_cn": "A公司 Marketing与销售服务部(东莞)",
|
|
||||||
"date_from": "2012/09/27 00:00:00",
|
|
||||||
"name_en": "Consumer BG Marketing and Sales Service Dept (Dongguan)",
|
|
||||||
"parent_type": null,
|
|
||||||
"dept_code": "036068",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": null,
|
|
||||||
"area_label": "JCR"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "654434",
|
|
||||||
"id_and_type": "654434JCR",
|
|
||||||
"parent_and_type": null,
|
|
||||||
"name_cn": "区域管理部",
|
|
||||||
"date_from": "2014/06/18 00:00:00",
|
|
||||||
"name_en": "Regions Mgmt Dept",
|
|
||||||
"parent_type": null,
|
|
||||||
"dept_code": "038368",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": null,
|
|
||||||
"area_label": "JCR"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "653159",
|
|
||||||
"id_and_type": "037852JCR",
|
|
||||||
"parent_and_type": null,
|
|
||||||
"name_cn": "A公司业务部",
|
|
||||||
"date_from": "2014/01/20 00:00:00",
|
|
||||||
"name_en": "Consumer BG Business Unit",
|
|
||||||
"parent_type": null,
|
|
||||||
"dept_code": "037852",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": null,
|
|
||||||
"area_label": "JCR"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Region": {
|
|
||||||
"area": [
|
|
||||||
{
|
|
||||||
"org_id": "608076",
|
|
||||||
"id_and_type": "608076Region",
|
|
||||||
"parent_and_type": "650561JCR",
|
|
||||||
"name_cn": "火星终端子公司",
|
|
||||||
"date_from": "2007/08/06 00:00:00",
|
|
||||||
"name_en": "SZ Device USA",
|
|
||||||
"parent_type": "JCR",
|
|
||||||
"dept_code": "024387",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "650561",
|
|
||||||
"area_label": "Region"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "606661",
|
|
||||||
"id_and_type": "606661Region",
|
|
||||||
"parent_and_type": "654434JCR",
|
|
||||||
"name_cn": "中东测试数据",
|
|
||||||
"date_from": "2007/04/06 00:00:00",
|
|
||||||
"name_en": "Middle East Region",
|
|
||||||
"parent_type": "JCR",
|
|
||||||
"dept_code": "026699",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "654434",
|
|
||||||
"area_label": "Region"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "611900",
|
|
||||||
"id_and_type": "611900Region",
|
|
||||||
"parent_and_type": "654434JCR",
|
|
||||||
"name_cn": "加拿大代表处",
|
|
||||||
"date_from": "2008/04/09 00:00:00",
|
|
||||||
"name_en": "Canada Rep Office",
|
|
||||||
"parent_type": "JCR",
|
|
||||||
"dept_code": "027339",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "654434",
|
|
||||||
"area_label": "Region"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "1079",
|
|
||||||
"id_and_type": "1079Region",
|
|
||||||
"parent_and_type": "654434JCR",
|
|
||||||
"name_cn": "中国测试数据",
|
|
||||||
"date_from": "1980/01/01 00:00:00",
|
|
||||||
"name_en": "China Region",
|
|
||||||
"parent_type": "JCR",
|
|
||||||
"dept_code": "027425",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "654434",
|
|
||||||
"area_label": "Region"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "4199",
|
|
||||||
"id_and_type": "4199Region",
|
|
||||||
"parent_and_type": "3623JCR",
|
|
||||||
"name_cn": "测试数据",
|
|
||||||
"date_from": "2005/06/29 00:00:00",
|
|
||||||
"name_en": "test data China Region",
|
|
||||||
"parent_type": "JCR",
|
|
||||||
"dept_code": "024207",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "3623",
|
|
||||||
"area_label": "Region"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "653596",
|
|
||||||
"id_and_type": "653596Region",
|
|
||||||
"parent_and_type": "037852JCR",
|
|
||||||
"name_cn": "国内销售与服务部",
|
|
||||||
"date_from": "2014/03/18 00:00:00",
|
|
||||||
"name_en": "Domestic Sales & Service Dept",
|
|
||||||
"parent_type": "JCR",
|
|
||||||
"dept_code": "037985",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "037852",
|
|
||||||
"area_label": "Region"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "606804",
|
|
||||||
"id_and_type": "606804Region",
|
|
||||||
"parent_and_type": "654434JCR",
|
|
||||||
"name_cn": "西欧测试数据",
|
|
||||||
"date_from": "2007/04/19 00:00:00",
|
|
||||||
"name_en": "West European Region",
|
|
||||||
"parent_type": "JCR",
|
|
||||||
"dept_code": "024931",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "654434",
|
|
||||||
"area_label": "Region"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Rep. Office": {
|
|
||||||
"area": [
|
|
||||||
{
|
|
||||||
"org_id": "1112",
|
|
||||||
"id_and_type": "1112Rep.Office",
|
|
||||||
"parent_and_type": "1079Region",
|
|
||||||
"name_cn": "北京代表处",
|
|
||||||
"date_from": "1980/ 01 / 01 00:00:00",
|
|
||||||
"name_en": "Beijing Rep Office, CN",
|
|
||||||
"parent_type": "Region",
|
|
||||||
"dept_code": "027848",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "1079",
|
|
||||||
"area_label": "Rep.Office"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "1114",
|
|
||||||
"id_and_type": "1114Rep.Office",
|
|
||||||
"parent_and_type": "1079Region",
|
|
||||||
"name_cn": "天津代表处",
|
|
||||||
"date_from": "1980/ 01 / 01 00:00:00",
|
|
||||||
"name_en": "Tianjin Rep Office, CN",
|
|
||||||
"parent_type": "Region",
|
|
||||||
"dept_code": "027862",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "1079",
|
|
||||||
"area_label": "Rep.Office"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "1115",
|
|
||||||
"id_and_type": "1115Rep.Office",
|
|
||||||
"parent_and_type": "1079Region",
|
|
||||||
"name_cn": "太原代表处",
|
|
||||||
"date_from": "1980/ 01 / 01 00:00:00",
|
|
||||||
"name_en": "Taiyuan Rep Office, CN",
|
|
||||||
"parent_type": "Region",
|
|
||||||
"dept_code": "027876",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "1079",
|
|
||||||
"area_label": "Rep.Office"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "649991",
|
|
||||||
"id_and_type": "649991Rep.Office",
|
|
||||||
"parent_and_type": "4199Region",
|
|
||||||
"name_cn": "测试数据广东代表处",
|
|
||||||
"date_from": "2012/ 07 / 28 00:00:00",
|
|
||||||
"name_en": "test data China Region Guangdong Rep Office",
|
|
||||||
"parent_type": "Region",
|
|
||||||
"dept_code": "035628",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "4199",
|
|
||||||
"area_label": "Rep.Office"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "100000",
|
|
||||||
"id_and_type": "100000Rep.Office",
|
|
||||||
"parent_and_type": "606804Region",
|
|
||||||
"name_cn": "加勒比海代表处",
|
|
||||||
"date_from": "2013/ 09 / 29 00:00:00",
|
|
||||||
"name_en": "Caribbean Rep Office",
|
|
||||||
"parent_type": "Region",
|
|
||||||
"dept_code": "037549",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "606804",
|
|
||||||
"area_label": "Rep.Office"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "1125",
|
|
||||||
"id_and_type": "1125Rep.Office",
|
|
||||||
"parent_and_type": "1079Region",
|
|
||||||
"name_cn": "兰州代表处",
|
|
||||||
"date_from": "1980/ 01 / 01 00:00:00",
|
|
||||||
"name_en": "Lanzhou Rep Office, CN",
|
|
||||||
"parent_type": "Region",
|
|
||||||
"dept_code": "028017",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "1079",
|
|
||||||
"area_label": "Rep.Office"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"Office": {
|
|
||||||
"area": [
|
|
||||||
{
|
|
||||||
"org_id": "610453",
|
|
||||||
"id_and_type": "610453Office",
|
|
||||||
"parent_and_type": "100000Rep. Office",
|
|
||||||
"name_cn": "牙买加工作室",
|
|
||||||
"date_from": "2007/11/26 00:00:00",
|
|
||||||
"name_en": "Jamaica Office",
|
|
||||||
"parent_type": "Rep. Office",
|
|
||||||
"dept_code": "025641",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "100000",
|
|
||||||
"area_label": "Office"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "615077",
|
|
||||||
"id_and_type": "615077Office",
|
|
||||||
"parent_and_type": "100000Rep. Office",
|
|
||||||
"name_cn": "巴拿马工作室",
|
|
||||||
"date_from": "2008/07/08 00:00:00",
|
|
||||||
"name_en": "Panama Office",
|
|
||||||
"parent_type": "Rep. Office",
|
|
||||||
"dept_code": "025656",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "100000",
|
|
||||||
"area_label": "Office"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "620058",
|
|
||||||
"id_and_type": "620058Office",
|
|
||||||
"parent_and_type": "100000Rep. Office",
|
|
||||||
"name_cn": "多米尼加工作室",
|
|
||||||
"date_from": "2009/05/21 00:00:00",
|
|
||||||
"name_en": "Dominica Office",
|
|
||||||
"parent_type": "Rep. Office",
|
|
||||||
"dept_code": "025659",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "100000",
|
|
||||||
"area_label": "Office"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "649896",
|
|
||||||
"id_and_type": "649896Office",
|
|
||||||
"parent_and_type": "1125Rep. Office",
|
|
||||||
"name_cn": "西宁工作室",
|
|
||||||
"date_from": "2012/07/12 00:00:00",
|
|
||||||
"name_en": "Xining Office, CN",
|
|
||||||
"parent_type": "Rep. Office",
|
|
||||||
"dept_code": "035560",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "1125",
|
|
||||||
"area_label": "Office"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "661414",
|
|
||||||
"id_and_type": "661414Office",
|
|
||||||
"parent_and_type": "649991Rep. Office",
|
|
||||||
"name_cn": "测试数据广州工作室",
|
|
||||||
"date_from": "2016/03/28 00:00:00",
|
|
||||||
"name_en": "test data China Region Guangzhou Office",
|
|
||||||
"parent_type": "Rep. Office",
|
|
||||||
"dept_code": "041626",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "649991",
|
|
||||||
"area_label": "Office"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "661415",
|
|
||||||
"id_and_type": "661415Office",
|
|
||||||
"parent_and_type": "649991Rep. Office",
|
|
||||||
"name_cn": "测试数据深圳工作室",
|
|
||||||
"date_from": "2016/03/28 00:00:00",
|
|
||||||
"name_en": "test data China Region Shenzhen Office",
|
|
||||||
"parent_type": "Rep. Office",
|
|
||||||
"dept_code": "041627",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "649991",
|
|
||||||
"area_label": "Office"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "661416",
|
|
||||||
"id_and_type": "661416Office",
|
|
||||||
"parent_and_type": "649991Rep. Office",
|
|
||||||
"name_cn": "测试数据东莞工作室",
|
|
||||||
"date_from": "2016/03/28 00:00:00",
|
|
||||||
"name_en": "test data China Region Dongguan Office",
|
|
||||||
"parent_type": "Rep. Office",
|
|
||||||
"dept_code": "041628",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "649991",
|
|
||||||
"area_label": "Office"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "661417",
|
|
||||||
"id_and_type": "661417Office",
|
|
||||||
"parent_and_type": "649991Rep. Office",
|
|
||||||
"name_cn": "测试数据佛山工作室",
|
|
||||||
"date_from": "2016/03/28 00:00:00",
|
|
||||||
"name_en": "test data China Region Foshan Office",
|
|
||||||
"parent_type": "Rep. Office",
|
|
||||||
"dept_code": "041629",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "649991",
|
|
||||||
"area_label": "Office"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,108 +0,0 @@
|
||||||
{
|
|
||||||
"area": [
|
|
||||||
{
|
|
||||||
"org_id": "610453",
|
|
||||||
"id_and_type": "610453Office",
|
|
||||||
"parent_and_type": "652495Rep. Office",
|
|
||||||
"name_cn": "牙买加办事处",
|
|
||||||
"date_from": "2007/11/26 00:00:00",
|
|
||||||
"name_en": "Jamaica Office",
|
|
||||||
"parent_type": "Rep. Office",
|
|
||||||
"dept_code": "025641",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "652495",
|
|
||||||
"area_label": "Office"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "615077",
|
|
||||||
"id_and_type": "615077Office",
|
|
||||||
"parent_and_type": "652495Rep. Office",
|
|
||||||
"name_cn": "巴拿马办事处",
|
|
||||||
"date_from": "2008/07/08 00:00:00",
|
|
||||||
"name_en": "Panama Office",
|
|
||||||
"parent_type": "Rep. Office",
|
|
||||||
"dept_code": "025656",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "652495",
|
|
||||||
"area_label": "Office"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "620058",
|
|
||||||
"id_and_type": "620058Office",
|
|
||||||
"parent_and_type": "652495Rep. Office",
|
|
||||||
"name_cn": "多米尼加办事处",
|
|
||||||
"date_from": "2009/05/21 00:00:00",
|
|
||||||
"name_en": "Dominica Office",
|
|
||||||
"parent_type": "Rep. Office",
|
|
||||||
"dept_code": "025659",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "652495",
|
|
||||||
"area_label": "Office"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "649896",
|
|
||||||
"id_and_type": "649896Office",
|
|
||||||
"parent_and_type": "1125Rep. Office",
|
|
||||||
"name_cn": "西宁办事处",
|
|
||||||
"date_from": "2012/07/12 00:00:00",
|
|
||||||
"name_en": "Xining Office, CN",
|
|
||||||
"parent_type": "Rep. Office",
|
|
||||||
"dept_code": "035560",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "1125",
|
|
||||||
"area_label": "Office"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "661414",
|
|
||||||
"id_and_type": "661414Office",
|
|
||||||
"parent_and_type": "649991Rep. Office",
|
|
||||||
"name_cn": "A公司XX地区部广州办事处",
|
|
||||||
"date_from": "2016/03/28 00:00:00",
|
|
||||||
"name_en": "Consumer BG Greater China Region Guangzhou Office",
|
|
||||||
"parent_type": "Rep. Office",
|
|
||||||
"dept_code": "041626",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "649991",
|
|
||||||
"area_label": "Office"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "661415",
|
|
||||||
"id_and_type": "661415Office",
|
|
||||||
"parent_and_type": "649991Rep. Office",
|
|
||||||
"name_cn": "A公司XX地区部深圳办事处",
|
|
||||||
"date_from": "2016/03/28 00:00:00",
|
|
||||||
"name_en": "Consumer BG Greater China Region Shenzhen Office",
|
|
||||||
"parent_type": "Rep. Office",
|
|
||||||
"dept_code": "041627",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "649991",
|
|
||||||
"area_label": "Office"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "661416",
|
|
||||||
"id_and_type": "661416Office",
|
|
||||||
"parent_and_type": "649991Rep. Office",
|
|
||||||
"name_cn": "A公司XX地区部东莞办事处",
|
|
||||||
"date_from": "2016/03/28 00:00:00",
|
|
||||||
"name_en": "Consumer BG Greater China Region Dongguan Office",
|
|
||||||
"parent_type": "Rep. Office",
|
|
||||||
"dept_code": "041628",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "649991",
|
|
||||||
"area_label": "Office"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "661417",
|
|
||||||
"id_and_type": "661417Office",
|
|
||||||
"parent_and_type": "649991Rep. Office",
|
|
||||||
"name_cn": "A公司XX地区部佛山办事处",
|
|
||||||
"date_from": "2016/03/28 00:00:00",
|
|
||||||
"name_en": "Consumer BG Greater China Region Foshan Office",
|
|
||||||
"parent_type": "Rep. Office",
|
|
||||||
"dept_code": "041629",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "649991",
|
|
||||||
"area_label": "Office"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -1,95 +0,0 @@
|
||||||
{
|
|
||||||
"area": [
|
|
||||||
{
|
|
||||||
"org_id": "608076",
|
|
||||||
"id_and_type": "608076Region",
|
|
||||||
"parent_and_type": "650561JCR",
|
|
||||||
"name_cn": "火星终端子公司",
|
|
||||||
"date_from": "2007/08/06 00:00:00",
|
|
||||||
"name_en": "SZ Device USA",
|
|
||||||
"parent_type": "JCR",
|
|
||||||
"dept_code": "024387",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "650561",
|
|
||||||
"area_label": "Region"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "606661",
|
|
||||||
"id_and_type": "606661Region",
|
|
||||||
"parent_and_type": "654434JCR",
|
|
||||||
"name_cn": "中东地区部",
|
|
||||||
"date_from": "2007/04/06 00:00:00",
|
|
||||||
"name_en": "Middle East Region",
|
|
||||||
"parent_type": "JCR",
|
|
||||||
"dept_code": "026699",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "654434",
|
|
||||||
"area_label": "Region"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "611900",
|
|
||||||
"id_and_type": "611900Region",
|
|
||||||
"parent_and_type": "654434JCR",
|
|
||||||
"name_cn": "加拿大代表处",
|
|
||||||
"date_from": "2008/04/09 00:00:00",
|
|
||||||
"name_en": "Canada Rep Office",
|
|
||||||
"parent_type": "JCR",
|
|
||||||
"dept_code": "027339",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "654434",
|
|
||||||
"area_label": "Region"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "1079",
|
|
||||||
"id_and_type": "1079Region",
|
|
||||||
"parent_and_type": "654434JCR",
|
|
||||||
"name_cn": "中国地区部",
|
|
||||||
"date_from": "1980/01/01 00:00:00",
|
|
||||||
"name_en": "China Region",
|
|
||||||
"parent_type": "JCR",
|
|
||||||
"dept_code": "027425",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "654434",
|
|
||||||
"area_label": "Region"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "4199",
|
|
||||||
"id_and_type": "4199Region",
|
|
||||||
"parent_and_type": "3623JCR",
|
|
||||||
"name_cn": "A公司XX地区部",
|
|
||||||
"date_from": "2005/06/29 00:00:00",
|
|
||||||
"name_en": "Consumer BG Greater China Region",
|
|
||||||
"parent_type": "JCR",
|
|
||||||
"dept_code": "024207",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "3623",
|
|
||||||
"area_label": "Region"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "653596",
|
|
||||||
"id_and_type": "653596Region",
|
|
||||||
"parent_and_type": "037852JCR",
|
|
||||||
"name_cn": "国内销售与服务部",
|
|
||||||
"date_from": "2014/03/18 00:00:00",
|
|
||||||
"name_en": "Domestic Sales & Service Dept",
|
|
||||||
"parent_type": "JCR",
|
|
||||||
"dept_code": "037985",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "037852",
|
|
||||||
"area_label": "Region"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "606804",
|
|
||||||
"id_and_type": "606804Region",
|
|
||||||
"parent_and_type": "654434JCR",
|
|
||||||
"name_cn": "西欧地区部",
|
|
||||||
"date_from": "2007/04/19 00:00:00",
|
|
||||||
"name_en": "West European Region",
|
|
||||||
"parent_type": "JCR",
|
|
||||||
"dept_code": "024931",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "654434",
|
|
||||||
"area_label": "Region"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -1,82 +0,0 @@
|
||||||
{
|
|
||||||
"area": [
|
|
||||||
{
|
|
||||||
"org_id": "1112",
|
|
||||||
"id_and_type": "1112Rep.Office",
|
|
||||||
"parent_and_type": "1079Region",
|
|
||||||
"name_cn": "北京代表处",
|
|
||||||
"date_from": "1980/ 01 / 01 00:00:00",
|
|
||||||
"name_en": "Beijing Rep Office, CN",
|
|
||||||
"parent_type": "Region",
|
|
||||||
"dept_code": "027848",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "1079",
|
|
||||||
"area_label": "Rep.Office"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "1114",
|
|
||||||
"id_and_type": "1114Rep.Office",
|
|
||||||
"parent_and_type": "1079Region",
|
|
||||||
"name_cn": "天津代表处",
|
|
||||||
"date_from": "1980/ 01 / 01 00:00:00",
|
|
||||||
"name_en": "Tianjin Rep Office, CN",
|
|
||||||
"parent_type": "Region",
|
|
||||||
"dept_code": "027862",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "1079",
|
|
||||||
"area_label": "Rep.Office"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "1115",
|
|
||||||
"id_and_type": "1115Rep.Office",
|
|
||||||
"parent_and_type": "1079Region",
|
|
||||||
"name_cn": "太原代表处",
|
|
||||||
"date_from": "1980/ 01 / 01 00:00:00",
|
|
||||||
"name_en": "Taiyuan Rep Office, CN",
|
|
||||||
"parent_type": "Region",
|
|
||||||
"dept_code": "027876",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "1079",
|
|
||||||
"area_label": "Rep.Office"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "649991",
|
|
||||||
"id_and_type": "649991Rep.Office",
|
|
||||||
"parent_and_type": "4199Region",
|
|
||||||
"name_cn": "A公司XX地区部广东代表处",
|
|
||||||
"date_from": "2012/ 07 / 28 00:00:00",
|
|
||||||
"name_en": "Consumer BG Greater China Region Guangdong Rep Office",
|
|
||||||
"parent_type": "Region",
|
|
||||||
"dept_code": "035628",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "4199",
|
|
||||||
"area_label": "Rep.Office"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "652495",
|
|
||||||
"id_and_type": "652495Rep.Office",
|
|
||||||
"parent_and_type": "606804Region",
|
|
||||||
"name_cn": "加勒比海代表处",
|
|
||||||
"date_from": "2013/ 09 / 29 00:00:00",
|
|
||||||
"name_en": "Caribbean Rep Office",
|
|
||||||
"parent_type": "Region",
|
|
||||||
"dept_code": "037549",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "606804",
|
|
||||||
"area_label": "Rep.Office"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"org_id": "1125",
|
|
||||||
"id_and_type": "1125Rep.Office",
|
|
||||||
"parent_and_type": "1079Region",
|
|
||||||
"name_cn": "兰州代表处",
|
|
||||||
"date_from": "1980/ 01 / 01 00:00:00",
|
|
||||||
"name_en": "Lanzhou Rep Office, CN",
|
|
||||||
"parent_type": "Region",
|
|
||||||
"dept_code": "028017",
|
|
||||||
"date_to": null,
|
|
||||||
"parent": "1079",
|
|
||||||
"area_label": "Rep.Office"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -1,103 +0,0 @@
|
||||||
[
|
|
||||||
{
|
|
||||||
"parent_instance_name": null,
|
|
||||||
"value": 5,
|
|
||||||
"assigneeColumn": null,
|
|
||||||
"remark": null,
|
|
||||||
"task_create_by": "uuid~dGVzdDE=",
|
|
||||||
"task_id": "E92_test1_467679ee0f424db98e2c2d673c6009df",
|
|
||||||
"appid": "app_000000040141",
|
|
||||||
"instance_end_time": "",
|
|
||||||
"ext": {},
|
|
||||||
"node_id": "managerId",
|
|
||||||
"task_admin": [],
|
|
||||||
"instance_status": "1",
|
|
||||||
"instance_extend": {},
|
|
||||||
"_id": "56552e1fa0957029ffcce971",
|
|
||||||
"hw_hae_paging": {
|
|
||||||
"startIndex": 1,
|
|
||||||
"totalRows": 2,
|
|
||||||
"curPage": 1,
|
|
||||||
"pageSize": 15,
|
|
||||||
"endIndex": 15,
|
|
||||||
"totalPages": 1
|
|
||||||
},
|
|
||||||
"process_key": "processMobile",
|
|
||||||
"instance_starter": "uuid~dGVzdDE=",
|
|
||||||
"instance_create_time": "2015-11-25 11:42:23",
|
|
||||||
"instance_id": "E92_test1_d6b728c58fbf428b95dba1457d254bc2",
|
|
||||||
"task_due_time": "",
|
|
||||||
"task_candidate": [],
|
|
||||||
"last_update_time": "2015-11-25 11:42:23",
|
|
||||||
"attach_id": "A76bd0ebf664b42ab8ae76e4968ba95d6",
|
|
||||||
"task_reader": [
|
|
||||||
"uuid~dGVzdDE="
|
|
||||||
],
|
|
||||||
"process_name": "手机话费报销申请",
|
|
||||||
"approver": [],
|
|
||||||
"task_name": "主管审批",
|
|
||||||
"modification_num": "1",
|
|
||||||
"task_status": "1",
|
|
||||||
"process_version": "9",
|
|
||||||
"task_assignee": [
|
|
||||||
"uuid~dGVzdDE="
|
|
||||||
],
|
|
||||||
"reader": [
|
|
||||||
"uuid~dGVzdDE="
|
|
||||||
],
|
|
||||||
"business_key": "50f7f96d-9808-431f-99bc-e4593002318f",
|
|
||||||
"task_end_time": "",
|
|
||||||
"last_update_by": "uuid~dGVzdDE=",
|
|
||||||
"parent_instance_id": null,
|
|
||||||
"node_name": "主管审批",
|
|
||||||
"task_url": "toApprove",
|
|
||||||
"engine_name": "E92",
|
|
||||||
"task_create_time": "2015-11-25 11:42:23.000168"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"parent_instance_name": null,
|
|
||||||
"assigneeColumn": null,
|
|
||||||
"remark": null,
|
|
||||||
"task_create_by": "uuid~dGVzdDE=",
|
|
||||||
"task_id": "E4_test2_1616635ea8e8452481545f585dbd5979",
|
|
||||||
"appid": "app_000000040141",
|
|
||||||
"instance_end_time": "",
|
|
||||||
"ext": {},
|
|
||||||
"node_id": "managerId",
|
|
||||||
"task_admin": [],
|
|
||||||
"instance_status": "1",
|
|
||||||
"instance_extend": {},
|
|
||||||
"_id": "56551c55a0957029ffcce94d",
|
|
||||||
"process_key": "processMobile",
|
|
||||||
"instance_starter": "uuid~dGVzdDE=",
|
|
||||||
"instance_create_time": "2015-11-25 10:26:28",
|
|
||||||
"instance_id": "E4_test2_d5ad0716628e48cbad3bb9828d998109",
|
|
||||||
"task_due_time": "",
|
|
||||||
"task_candidate": [],
|
|
||||||
"last_update_time": "2015-11-25 10:26:28",
|
|
||||||
"attach_id": "A76bd0ebf664b42ab8ae76e4968ba95d6",
|
|
||||||
"task_reader": [
|
|
||||||
"uuid~dGVzdDE="
|
|
||||||
],
|
|
||||||
"process_name": "手机话费报销申请",
|
|
||||||
"approver": [],
|
|
||||||
"task_name": "主管审批",
|
|
||||||
"modification_num": "1",
|
|
||||||
"task_status": "1",
|
|
||||||
"process_version": "9",
|
|
||||||
"task_assignee": [
|
|
||||||
"uuid~dGVzdDE="
|
|
||||||
],
|
|
||||||
"reader": [
|
|
||||||
"uuid~dGVzdDE="
|
|
||||||
],
|
|
||||||
"business_key": "1a5bf156-6a09-4526-b015-340e6cea7488",
|
|
||||||
"task_end_time": "",
|
|
||||||
"last_update_by": "uuid~dGVzdDE=",
|
|
||||||
"parent_instance_id": null,
|
|
||||||
"node_name": "主管审批",
|
|
||||||
"task_url": "toApprove",
|
|
||||||
"engine_name": "E4",
|
|
||||||
"task_create_time": "2015-11-25 10:26:28.000966"
|
|
||||||
}
|
|
||||||
]
|
|
|
@ -1,86 +0,0 @@
|
||||||
[
|
|
||||||
{
|
|
||||||
"programValidity": null,
|
|
||||||
"employeeNumber": "12345678",
|
|
||||||
"userType": "HWE",
|
|
||||||
"currentRole": null,
|
|
||||||
"currentProgramIds": null,
|
|
||||||
"validRoles": null,
|
|
||||||
"defaultRole": "otc:2749;",
|
|
||||||
"coalitionPermission": false,
|
|
||||||
"endDate": "2017-11-13T14:26:06.000+0800",
|
|
||||||
"dept": null,
|
|
||||||
"userId": 421000103624183,
|
|
||||||
"userAccount": "test1",
|
|
||||||
"userCN": "test1",
|
|
||||||
"email": "test1@test1.com",
|
|
||||||
"creationDate": "2012-08-17T11:26:18.000+0800",
|
|
||||||
"lastUpdateDate": "2015-03-30T14:27:34.000+0800",
|
|
||||||
"rowIdx": -1,
|
|
||||||
"creationUserCN": null,
|
|
||||||
"lastUpdateUserCN": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"programValidity": null,
|
|
||||||
"employeeNumber": "12345678",
|
|
||||||
"userType": "WX",
|
|
||||||
"currentRole": null,
|
|
||||||
"currentProgramIds": null,
|
|
||||||
"validRoles": null,
|
|
||||||
"defaultRole": null,
|
|
||||||
"coalitionPermission": false,
|
|
||||||
"endDate": null,
|
|
||||||
"dept": null,
|
|
||||||
"userId": 435259704104388,
|
|
||||||
"userAccount": "test2",
|
|
||||||
"userCN": "test2",
|
|
||||||
"email": "test2@test2.com",
|
|
||||||
"creationDate": "2017-10-23T11:16:59.000+0800",
|
|
||||||
"lastUpdateDate": "2017-10-23T11:16:59.000+0800",
|
|
||||||
"rowIdx": -1,
|
|
||||||
"creationUserCN": null,
|
|
||||||
"lastUpdateUserCN": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"programValidity": null,
|
|
||||||
"employeeNumber": "12345678",
|
|
||||||
"userType": "HWE",
|
|
||||||
"currentRole": null,
|
|
||||||
"currentProgramIds": null,
|
|
||||||
"validRoles": null,
|
|
||||||
"defaultRole": null,
|
|
||||||
"coalitionPermission": false,
|
|
||||||
"endDate": "2017-10-26T11:48:56.000+0800",
|
|
||||||
"dept": null,
|
|
||||||
"userId": 441047913162396,
|
|
||||||
"userAccount": "test3",
|
|
||||||
"userCN": "test3",
|
|
||||||
"email": "test3@test3.com",
|
|
||||||
"creationDate": "2015-01-06T09:38:41.000+0800",
|
|
||||||
"lastUpdateDate": "2017-10-10T15:13:28.000+0800",
|
|
||||||
"rowIdx": -1,
|
|
||||||
"creationUserCN": null,
|
|
||||||
"lastUpdateUserCN": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"programValidity": null,
|
|
||||||
"employeeNumber": "12345678",
|
|
||||||
"userType": "WX",
|
|
||||||
"currentRole": null,
|
|
||||||
"currentProgramIds": null,
|
|
||||||
"validRoles": null,
|
|
||||||
"defaultRole": null,
|
|
||||||
"coalitionPermission": false,
|
|
||||||
"endDate": "2017-11-10T08:50:56.000+0800",
|
|
||||||
"dept": null,
|
|
||||||
"userId": 655783272594485,
|
|
||||||
"userAccount": "test4",
|
|
||||||
"userCN": "test4",
|
|
||||||
"email": "test4@test4.com",
|
|
||||||
"creationDate": "2017-10-10T18:22:33.000+0800",
|
|
||||||
"lastUpdateDate": "2017-10-10T18:22:33.000+0800",
|
|
||||||
"rowIdx": -1,
|
|
||||||
"creationUserCN": null,
|
|
||||||
"lastUpdateUserCN": null
|
|
||||||
}
|
|
||||||
]
|
|
|
@ -1,86 +0,0 @@
|
||||||
[
|
|
||||||
{
|
|
||||||
"programValidity": null,
|
|
||||||
"employeeNumber": "test1",
|
|
||||||
"userType": "HWE",
|
|
||||||
"currentRole": null,
|
|
||||||
"currentProgramIds": null,
|
|
||||||
"validRoles": null,
|
|
||||||
"defaultRole": "otc:2749;",
|
|
||||||
"coalitionPermission": false,
|
|
||||||
"endDate": "2017-11-13T14:26:06.000+0800",
|
|
||||||
"dept": null,
|
|
||||||
"userId": 421000103624183,
|
|
||||||
"userAccount": "test1",
|
|
||||||
"userCN": "test1",
|
|
||||||
"email": "",
|
|
||||||
"creationDate": "2012-08-17T11:26:18.000+0800",
|
|
||||||
"lastUpdateDate": "2015-03-30T14:27:34.000+0800",
|
|
||||||
"rowIdx": -1,
|
|
||||||
"creationUserCN": null,
|
|
||||||
"lastUpdateUserCN": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"programValidity": null,
|
|
||||||
"employeeNumber": "test10",
|
|
||||||
"userType": "WX",
|
|
||||||
"currentRole": null,
|
|
||||||
"currentProgramIds": null,
|
|
||||||
"validRoles": null,
|
|
||||||
"defaultRole": null,
|
|
||||||
"coalitionPermission": false,
|
|
||||||
"endDate": null,
|
|
||||||
"dept": null,
|
|
||||||
"userId": 435259704104388,
|
|
||||||
"userAccount": "test10",
|
|
||||||
"userCN": "test10",
|
|
||||||
"email": "",
|
|
||||||
"creationDate": "2017-10-23T11:16:59.000+0800",
|
|
||||||
"lastUpdateDate": "2017-10-23T11:16:59.000+0800",
|
|
||||||
"rowIdx": -1,
|
|
||||||
"creationUserCN": null,
|
|
||||||
"lastUpdateUserCN": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"programValidity": null,
|
|
||||||
"employeeNumber": "test2",
|
|
||||||
"userType": "HWE",
|
|
||||||
"currentRole": null,
|
|
||||||
"currentProgramIds": null,
|
|
||||||
"validRoles": null,
|
|
||||||
"defaultRole": null,
|
|
||||||
"coalitionPermission": false,
|
|
||||||
"endDate": "2017-10-26T11:48:56.000+0800",
|
|
||||||
"dept": null,
|
|
||||||
"userId": 441047913162396,
|
|
||||||
"userAccount": "test2",
|
|
||||||
"userCN": "test2",
|
|
||||||
"email": "",
|
|
||||||
"creationDate": "2015-01-06T09:38:41.000+0800",
|
|
||||||
"lastUpdateDate": "2017-10-10T15:13:28.000+0800",
|
|
||||||
"rowIdx": -1,
|
|
||||||
"creationUserCN": null,
|
|
||||||
"lastUpdateUserCN": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"programValidity": null,
|
|
||||||
"employeeNumber": "test3",
|
|
||||||
"userType": "WX",
|
|
||||||
"currentRole": null,
|
|
||||||
"currentProgramIds": null,
|
|
||||||
"validRoles": null,
|
|
||||||
"defaultRole": null,
|
|
||||||
"coalitionPermission": false,
|
|
||||||
"endDate": "2017-11-10T08:50:56.000+0800",
|
|
||||||
"dept": null,
|
|
||||||
"userId": 655783272594485,
|
|
||||||
"userAccount": "test3",
|
|
||||||
"userCN": "test3",
|
|
||||||
"email": "",
|
|
||||||
"creationDate": "2017-10-10T18:22:33.000+0800",
|
|
||||||
"lastUpdateDate": "2017-10-10T18:22:33.000+0800",
|
|
||||||
"rowIdx": -1,
|
|
||||||
"creationUserCN": null,
|
|
||||||
"lastUpdateUserCN": null
|
|
||||||
}
|
|
||||||
]
|
|
|
@ -1,52 +0,0 @@
|
||||||
{
|
|
||||||
"currency": [
|
|
||||||
{
|
|
||||||
"symbol": "$",
|
|
||||||
"currency_code": "MZN"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"symbol": null,
|
|
||||||
"currency_code": "CNY"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"symbol": "*NULL*",
|
|
||||||
"currency_code": "CHE"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"symbol": "$",
|
|
||||||
"currency_code": "USD"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"symbol": null,
|
|
||||||
"currency_code": "VND"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"symbol": null,
|
|
||||||
"currency_code": "VUV"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"symbol": null,
|
|
||||||
"currency_code": "WST"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"symbol": null,
|
|
||||||
"currency_code": "XAF"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"symbol": null,
|
|
||||||
"currency_code": "IRU"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"symbol": null,
|
|
||||||
"currency_code": "IRE"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"symbol": null,
|
|
||||||
"currency_code": "BYN"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"symbol": null,
|
|
||||||
"currency_code": "HKD"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -1,80 +0,0 @@
|
||||||
[
|
|
||||||
{
|
|
||||||
"l5_Organization_Id": null,
|
|
||||||
"errorInfo": null,
|
|
||||||
"l5_Dept_Code": null,
|
|
||||||
"l0_Name": "SZ技术",
|
|
||||||
"l3_Dept_Code": "041963",
|
|
||||||
"l2_Name": "测试数据XX人力资源部",
|
|
||||||
"date_From": "2016/04/2900: 00: 00",
|
|
||||||
"l6_Organization_Id": null,
|
|
||||||
"name": "BPIT&QM HRBP管理部",
|
|
||||||
"l1_Organization_Id": "1385",
|
|
||||||
"upper_Organization_Id": "1389",
|
|
||||||
"l0_Organization_Id": "1072",
|
|
||||||
"upper_Name": "测试数据XX人力资源部",
|
|
||||||
"business_Group_Id": "443",
|
|
||||||
"l3_Organization_Id": "662093",
|
|
||||||
"l6_Name": null,
|
|
||||||
"coa_Combination": "0021.000.0001.041963",
|
|
||||||
"l4_Name": null,
|
|
||||||
"l4_Organization_Id": null,
|
|
||||||
"dept_Code": "041963",
|
|
||||||
"dept_Level": "3",
|
|
||||||
"organization_Id": "662093",
|
|
||||||
"l0_Dept_Code": "022471",
|
|
||||||
"l2_Dept_Code": "023114",
|
|
||||||
"upper_Dept_Code": "023114",
|
|
||||||
"l1_Name": "测试数据XX管理部",
|
|
||||||
"l4_Dept_Code": null,
|
|
||||||
"last_Update_Date": "2017/05/2015: 14: 18",
|
|
||||||
"l2_Organization_Id": "1389",
|
|
||||||
"l5_Name": null,
|
|
||||||
"l1_Dept_Code": "023093",
|
|
||||||
"date_To": null,
|
|
||||||
"language": "CHN",
|
|
||||||
"region_Code": "0001",
|
|
||||||
"l6_Dept_Code": null,
|
|
||||||
"cost_Allocation_Keyflex_Id": "1563274",
|
|
||||||
"l3_Name": "BPIT&QM HRBP管理部"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"l5_Organization_Id": null,
|
|
||||||
"errorInfo": null,
|
|
||||||
"l5_Dept_Code": null,
|
|
||||||
"l0_Name": "SZ技术",
|
|
||||||
"l3_Dept_Code": "023286",
|
|
||||||
"l2_Name": "中央XX测试数据部",
|
|
||||||
"date_From": "2011/03/30 00:00:00",
|
|
||||||
"l6_Organization_Id": null,
|
|
||||||
"name": "XX应用实施部",
|
|
||||||
"l1_Organization_Id": "1404",
|
|
||||||
"upper_Organization_Id": "627453",
|
|
||||||
"l0_Organization_Id": "1072",
|
|
||||||
"upper_Name": "XX应用交付部",
|
|
||||||
"business_Group_Id": "443",
|
|
||||||
"l3_Organization_Id": "627453",
|
|
||||||
"l6_Name": null,
|
|
||||||
"coa_Combination": "0021.000.0001.022471",
|
|
||||||
"l4_Name": "XX应用实施部",
|
|
||||||
"l4_Organization_Id": "627409",
|
|
||||||
"dept_Code": "022471",
|
|
||||||
"dept_Level": "4",
|
|
||||||
"organization_Id": "627409",
|
|
||||||
"l0_Dept_Code": "022471",
|
|
||||||
"l2_Dept_Code": "023489",
|
|
||||||
"upper_Dept_Code": "023286",
|
|
||||||
"l1_Name": "测试数据室XX",
|
|
||||||
"l4_Dept_Code": "022471",
|
|
||||||
"last_Update_Date": "2017/11/14 12:32:32",
|
|
||||||
"l2_Organization_Id": "3864",
|
|
||||||
"l5_Name": null,
|
|
||||||
"l1_Dept_Code": "023338",
|
|
||||||
"date_To": null,
|
|
||||||
"language": "CHN",
|
|
||||||
"region_Code": "0001",
|
|
||||||
"l6_Dept_Code": null,
|
|
||||||
"cost_Allocation_Keyflex_Id": "1082225",
|
|
||||||
"l3_Name": "XX应用交付部"
|
|
||||||
}
|
|
||||||
]
|
|
|
@ -1,168 +0,0 @@
|
||||||
[
|
|
||||||
{
|
|
||||||
"upperCode": "000001",
|
|
||||||
"list": [
|
|
||||||
{
|
|
||||||
"coa_Combination": null,
|
|
||||||
"hrCode": "022471",
|
|
||||||
"dept_Code": null,
|
|
||||||
"hrName": "SZ技术",
|
|
||||||
"coaCode": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"coa_Combination": null,
|
|
||||||
"hrCode": "030055",
|
|
||||||
"dept_Code": null,
|
|
||||||
"hrName": "SZ海洋网络",
|
|
||||||
"coaCode": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"coa_Combination": null,
|
|
||||||
"hrCode": "035021",
|
|
||||||
"dept_Code": null,
|
|
||||||
"hrName": "天闻数媒",
|
|
||||||
"coaCode": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"coa_Combination": null,
|
|
||||||
"hrCode": "022279",
|
|
||||||
"dept_Code": null,
|
|
||||||
"hrName": "贝托SZ",
|
|
||||||
"coaCode": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"coa_Combination": null,
|
|
||||||
"hrCode": "030736",
|
|
||||||
"dept_Code": null,
|
|
||||||
"hrName": "鼎桥通信",
|
|
||||||
"coaCode": null
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"upperCode": "023114",
|
|
||||||
"list": [
|
|
||||||
{
|
|
||||||
"coa_Combination": null,
|
|
||||||
"hrCode": "041963",
|
|
||||||
"dept_Code": null,
|
|
||||||
"hrName": "BPIT&QM HRBP管理部",
|
|
||||||
"coaCode": "0021.000.0001.041963"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"upperCode": "038384",
|
|
||||||
"list": [
|
|
||||||
{
|
|
||||||
"coa_Combination": null,
|
|
||||||
"hrCode": "038759",
|
|
||||||
"dept_Code": null,
|
|
||||||
"hrName": "公共技术平台部",
|
|
||||||
"coaCode": "0021.000.0001.038759"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"upperCode": "022471",
|
|
||||||
"list": [
|
|
||||||
{
|
|
||||||
"coa_Combination": null,
|
|
||||||
"hrCode": "023338",
|
|
||||||
"dept_Code": null,
|
|
||||||
"hrName": "测试数据室XX",
|
|
||||||
"coaCode": "0021.000.0001.023338"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"coa_Combination": null,
|
|
||||||
"hrCode": "027425",
|
|
||||||
"dept_Code": null,
|
|
||||||
"hrName": "中国XX测试数据部",
|
|
||||||
"coaCode": "0021.000.0002.027425"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"coa_Combination": null,
|
|
||||||
"hrCode": "023093",
|
|
||||||
"dept_Code": null,
|
|
||||||
"hrName": "测试数据XX管理部",
|
|
||||||
"coaCode": "0021.000.0001.023093"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"upperCode": "023093",
|
|
||||||
"list": [
|
|
||||||
{
|
|
||||||
"coa_Combination": null,
|
|
||||||
"hrCode": "038370",
|
|
||||||
"dept_Code": null,
|
|
||||||
"hrName": "业务应用与XX测试数据部",
|
|
||||||
"coaCode": "0021.000.0001.038370"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"coa_Combination": null,
|
|
||||||
"hrCode": "038371",
|
|
||||||
"dept_Code": null,
|
|
||||||
"hrName": "企业架构与流程管理部",
|
|
||||||
"coaCode": "0021.000.0001.038371"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"coa_Combination": null,
|
|
||||||
"hrCode": "023114",
|
|
||||||
"dept_Code": null,
|
|
||||||
"hrName": "测试数据XX人力资源部",
|
|
||||||
"coaCode": "0021.000.0001.023114"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"coa_Combination": null,
|
|
||||||
"hrCode": "034899",
|
|
||||||
"dept_Code": null,
|
|
||||||
"hrName": "测试数据XX财经管理部",
|
|
||||||
"coaCode": "0021.000.0001.034899"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"coa_Combination": null,
|
|
||||||
"hrCode": "023221",
|
|
||||||
"dept_Code": null,
|
|
||||||
"hrName": "测试数据XX质量与运营部",
|
|
||||||
"coaCode": "0021.000.0001.023221"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"upperCode": "023338",
|
|
||||||
"list": [
|
|
||||||
{
|
|
||||||
"coa_Combination": null,
|
|
||||||
"hrCode": "023489",
|
|
||||||
"dept_Code": null,
|
|
||||||
"hrName": "中央XX测试数据部",
|
|
||||||
"coaCode": "0021.000.0001.023489"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"upperCode": "023489",
|
|
||||||
"list": [
|
|
||||||
{
|
|
||||||
"coa_Combination": null,
|
|
||||||
"hrCode": "023286",
|
|
||||||
"dept_Code": null,
|
|
||||||
"hrName": "XX应用交付部",
|
|
||||||
"coaCode": "0021.000.0001.023286"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"upperCode": "023286",
|
|
||||||
"list": [
|
|
||||||
{
|
|
||||||
"coa_Combination": null,
|
|
||||||
"hrCode": "022471",
|
|
||||||
"dept_Code": null,
|
|
||||||
"hrName": "XX应用实施部",
|
|
||||||
"coaCode": "0021.000.0001.022471"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
|
@ -1,32 +0,0 @@
|
||||||
[
|
|
||||||
{
|
|
||||||
"coaCode": "0021.000.0001.037106",
|
|
||||||
"hrCode": "037106",
|
|
||||||
"hrName": "无线网络业务架构与设计部",
|
|
||||||
"coaStatus": "1-有效-VALID"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"coaCode": "0021.000.0001.037271",
|
|
||||||
"hrCode": "037271",
|
|
||||||
"hrName": "服务架构与技术规划部",
|
|
||||||
"coaStatus": "1-有效-VALID"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"coaCode": "0021.000.0001.023475",
|
|
||||||
"hrCode": "023475",
|
|
||||||
"hrName": "测试数据室XX质量与运营部",
|
|
||||||
"coaStatus": "1-有效-VALID"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"coaCode": "0021.000.0001.023114",
|
|
||||||
"hrCode": "023114",
|
|
||||||
"hrName": "测试数据XX人力资源部",
|
|
||||||
"coaStatus": "1-有效-VALID"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"coaCode": "0021.000.0001.023093",
|
|
||||||
"hrCode": "023093",
|
|
||||||
"hrName": "测试数据XX管理部",
|
|
||||||
"coaStatus": "1-有效-VALID"
|
|
||||||
}
|
|
||||||
]
|
|
|
@ -1,342 +0,0 @@
|
||||||
[
|
|
||||||
{
|
|
||||||
"id": "1",
|
|
||||||
"name": "GFD科技有限公司",
|
|
||||||
"userId": 421000103624183,
|
|
||||||
"area": "华东区",
|
|
||||||
"province": "福建省",
|
|
||||||
"city": "福州",
|
|
||||||
"contact": "许生",
|
|
||||||
"telephone": "13620211175",
|
|
||||||
"address": "福州",
|
|
||||||
"introduction": "公司技术和研发实力雄厚,是国家863项目的参与者,并被政府认定为“高新技术企业”。",
|
|
||||||
"employees": 800,
|
|
||||||
"created_date": "2014-04-30 00:56:00",
|
|
||||||
"boole": false,
|
|
||||||
"assets": "1000000",
|
|
||||||
"rate": 0.9
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "2",
|
|
||||||
"name": "WWW科技有限公司",
|
|
||||||
"userId": 421000103624183,
|
|
||||||
"area": "华南区",
|
|
||||||
"province": "广东省",
|
|
||||||
"city": "深圳",
|
|
||||||
"contact": "朱生",
|
|
||||||
"telephone": "16549849651",
|
|
||||||
"address": "深圳福田区",
|
|
||||||
"introduction": "公司技术和研发实力雄厚,是国家863项目的参与者,并被政府认定为“高新技术企业”。",
|
|
||||||
"employees": 300,
|
|
||||||
"created_date": "2016-07-08 12:36:22",
|
|
||||||
"boole": true,
|
|
||||||
"assets": "1500000",
|
|
||||||
"rate": 0.7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "3",
|
|
||||||
"name": "RFV有限责任公司",
|
|
||||||
"userId": 441047913162396,
|
|
||||||
"area": "华南区",
|
|
||||||
"province": "广东省",
|
|
||||||
"city": "中山",
|
|
||||||
"contact": "秦生",
|
|
||||||
"telephone": "13145351232",
|
|
||||||
"address": "中山市",
|
|
||||||
"introduction": "公司技术和研发实力雄厚,是国家863项目的参与者,并被政府认定为“高新技术企业”。",
|
|
||||||
"employees": 1300,
|
|
||||||
"created_date": "2014-02-14 14:14:14",
|
|
||||||
"boole": false,
|
|
||||||
"assets": "1500000",
|
|
||||||
"rate": 0.6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "4",
|
|
||||||
"name": "TGB科技有限公司",
|
|
||||||
"userId": 655783272594485,
|
|
||||||
"area": "华东区",
|
|
||||||
"province": "福建省",
|
|
||||||
"city": "龙岩",
|
|
||||||
"contact": "周生",
|
|
||||||
"telephone": "18920211175",
|
|
||||||
"address": "龙岩",
|
|
||||||
"introduction": "公司技术和研发实力雄厚,是国家863项目的参与者,并被政府认定为“高新技术企业”。",
|
|
||||||
"employees": 360,
|
|
||||||
"created_date": "2013-01-13 13:13:13",
|
|
||||||
"boole": true,
|
|
||||||
"assets": "1200000",
|
|
||||||
"rate": 0.5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "5",
|
|
||||||
"name": "YHN科技有限公司",
|
|
||||||
"userId": 655783272594485,
|
|
||||||
"area": "华南区",
|
|
||||||
"province": "广东省",
|
|
||||||
"city": "韶关",
|
|
||||||
"contact": "郑生",
|
|
||||||
"telephone": "18920211175",
|
|
||||||
"address": "韶关",
|
|
||||||
"introduction": "公司技术和研发实力雄厚,是国家863项目的参与者,并被政府认定为“高新技术企业”。",
|
|
||||||
"employees": 810,
|
|
||||||
"created_date": "2012-12-12 12:12:12",
|
|
||||||
"boole": true,
|
|
||||||
"assets": "1500000",
|
|
||||||
"rate": 0.6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "6",
|
|
||||||
"name": "WSX科技有限公司",
|
|
||||||
"userId": 441047913162396,
|
|
||||||
"area": "华中区",
|
|
||||||
"province": "湖北省",
|
|
||||||
"city": "黄冈",
|
|
||||||
"contact": "陈生",
|
|
||||||
"telephone": "13120211175",
|
|
||||||
"address": "黄冈",
|
|
||||||
"introduction": "公司技术和研发实力雄厚,是国家863项目的参与者,并被政府认定为“高新技术企业”。",
|
|
||||||
"employees": 800,
|
|
||||||
"created_date": "2011-11-11 11:11:11",
|
|
||||||
"boole": true,
|
|
||||||
"assets": "1500000",
|
|
||||||
"rate": 0.6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "7",
|
|
||||||
"name": "KBG物业有限公司",
|
|
||||||
"userId": 421000103624183,
|
|
||||||
"area": "华中区",
|
|
||||||
"province": "湖北省",
|
|
||||||
"city": "赤壁",
|
|
||||||
"contact": "王二",
|
|
||||||
"telephone": "13066932564",
|
|
||||||
"address": "赤壁",
|
|
||||||
"introduction": "公司治理结构严格按现代企业制度设计,管理机构设置合理,制度完善,各部门分工明确、协作顺畅。拥有中、高级职称或大学本科以上学历的人员占职工总人数的80%以上,具有雄厚的资金实力和高度专业化的项目开发管理能力,是一支具有强烈的社会责任感和引领房地产业科技创新的地产新军。",
|
|
||||||
"employees": 400,
|
|
||||||
"created_date": "2016-04-30 23:56:00",
|
|
||||||
"boole": false,
|
|
||||||
"assets": "2000000",
|
|
||||||
"rate": 0.7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "8",
|
|
||||||
"name": "深圳市福德宝网络技术有限公司",
|
|
||||||
"userId": 421000103624183,
|
|
||||||
"address": "厦门岛内",
|
|
||||||
"area": "华东区",
|
|
||||||
"assets": "2000000",
|
|
||||||
"boole": true,
|
|
||||||
"city": "厦门",
|
|
||||||
"contact": "李四",
|
|
||||||
"created_date": "2016-06-03 13:53:25",
|
|
||||||
"employees": 540,
|
|
||||||
"introduction": "公司技术和研发实力雄厚,是国家863项目的参与者,并被政府认定为“高新技术企业”。",
|
|
||||||
"province": "福建省",
|
|
||||||
"rate": 0.6,
|
|
||||||
"telephone": "15875599279"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "9",
|
|
||||||
"name": "UJM有限责任公司",
|
|
||||||
"userId": 421000103624183,
|
|
||||||
"area": "华南区",
|
|
||||||
"province": "广西省",
|
|
||||||
"city": "南宁",
|
|
||||||
"contact": "段生",
|
|
||||||
"telephone": "15920211175",
|
|
||||||
"address": "南宁",
|
|
||||||
"introduction": "公司技术和研发实力雄厚,是国家863项目的参与者,并被政府认定为“高新技术企业”。",
|
|
||||||
"employees": 750,
|
|
||||||
"created_date": "2014-04-21 11:56:00",
|
|
||||||
"boole": true,
|
|
||||||
"assets": "1500000",
|
|
||||||
"rate": 0.6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "10",
|
|
||||||
"name": "IKA有限责任公司",
|
|
||||||
"userId": 421000103624183,
|
|
||||||
"area": "华南区",
|
|
||||||
"province": "广西省",
|
|
||||||
"city": "北海",
|
|
||||||
"contact": "谭生",
|
|
||||||
"telephone": "15820211175",
|
|
||||||
"address": "北海",
|
|
||||||
"introduction": "公司技术和研发实力雄厚,是国家863项目的参与者,并被政府认定为“高新技术企业”。",
|
|
||||||
"employees": 400,
|
|
||||||
"created_date": "2014-09-30 00:56:00",
|
|
||||||
"boole": false,
|
|
||||||
"assets": "110000",
|
|
||||||
"rate": 0.11
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "11",
|
|
||||||
"name": "TIG管理有限公司",
|
|
||||||
"userId": 421000103624183,
|
|
||||||
"area": "华南区",
|
|
||||||
"province": "广西省",
|
|
||||||
"city": "桂林",
|
|
||||||
"contact": "陈生",
|
|
||||||
"telephone": "13120211175",
|
|
||||||
"address": "桂林",
|
|
||||||
"introduction": "公司技术和研发实力雄厚,是国家863项目的参与者,并被政府认定为“高新技术企业”。",
|
|
||||||
"employees": 900,
|
|
||||||
"created_date": "2014-11-30 00:56:00",
|
|
||||||
"boole": true,
|
|
||||||
"assets": "120000",
|
|
||||||
"rate": 0.13
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "12",
|
|
||||||
"name": "GGT科技有限公司",
|
|
||||||
"userId": 441047913162396,
|
|
||||||
"area": "西南区",
|
|
||||||
"province": "云南省",
|
|
||||||
"city": "昆明",
|
|
||||||
"contact": "周生",
|
|
||||||
"telephone": "13120211175",
|
|
||||||
"address": "昆明",
|
|
||||||
"introduction": "公司技术和研发实力雄厚,是国家863项目的参与者,并被政府认定为“高新技术企业”。",
|
|
||||||
"employees": 500,
|
|
||||||
"created_date": "2014-03-20 02:50:00",
|
|
||||||
"boole": false,
|
|
||||||
"assets": "100000",
|
|
||||||
"rate": 0.1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "13",
|
|
||||||
"name": "YYS有限公司",
|
|
||||||
"userId": 441047913162396,
|
|
||||||
"area": "西南区",
|
|
||||||
"province": "云南省",
|
|
||||||
"city": "西双版纳",
|
|
||||||
"contact": "廖生",
|
|
||||||
"telephone": "13120211175",
|
|
||||||
"address": "西双版纳",
|
|
||||||
"introduction": "公司技术和研发实力雄厚,是国家863项目的参与者,并被政府认定为“高新技术企业”。",
|
|
||||||
"employees": 985,
|
|
||||||
"created_date": "2015-07-28 11:37:00",
|
|
||||||
"boole": true,
|
|
||||||
"assets": "120000",
|
|
||||||
"rate": 0.12
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "14",
|
|
||||||
"name": "VBN有限责任公司",
|
|
||||||
"userId": 421000103624183,
|
|
||||||
"area": "西南区",
|
|
||||||
"province": "云南省",
|
|
||||||
"city": "大理",
|
|
||||||
"contact": "欧生",
|
|
||||||
"telephone": "15820211175",
|
|
||||||
"address": "大理",
|
|
||||||
"introduction": "公司技术和研发实力雄厚,是国家863项目的参与者,并被政府认定为“高新技术企业”。",
|
|
||||||
"employees": 598,
|
|
||||||
"created_date": "2014-04-30 00:56:00",
|
|
||||||
"boole": false,
|
|
||||||
"assets": "220000",
|
|
||||||
"rate": 0.22
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "15",
|
|
||||||
"name": "深圳XX科技有限公司",
|
|
||||||
"userId": 441047913162396,
|
|
||||||
"area": "华中区",
|
|
||||||
"province": "湖北省",
|
|
||||||
"city": "武汉",
|
|
||||||
"contact": "阮生",
|
|
||||||
"telephone": "18920211175",
|
|
||||||
"address": "武汉",
|
|
||||||
"introduction": "公司技术和研发实力雄厚,是国家863项目的参与者,并被政府认定为“高新技术企业”。",
|
|
||||||
"employees": 725,
|
|
||||||
"created_date": "2014-04-30 00:56:00",
|
|
||||||
"boole": true,
|
|
||||||
"assets": "2500000",
|
|
||||||
"rate": 0.8
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "16",
|
|
||||||
"name": "深圳XX信息技术有限公司",
|
|
||||||
"userId": 421000103624183,
|
|
||||||
"area": "华中区",
|
|
||||||
"province": "湖北省",
|
|
||||||
"city": "十堰",
|
|
||||||
"contact": "邓生",
|
|
||||||
"telephone": "13120211175",
|
|
||||||
"address": "十堰",
|
|
||||||
"introduction": "公司技术和研发实力雄厚,是国家863项目的参与者,并被政府认定为“高新技术企业”。",
|
|
||||||
"employees": 632,
|
|
||||||
"created_date": "2014-07-30 02:44:00",
|
|
||||||
"boole": true,
|
|
||||||
"assets": "3000000",
|
|
||||||
"rate": 0.85
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "17",
|
|
||||||
"name": "深圳XX餐饮管理有限公司",
|
|
||||||
"userId": 441047913162396,
|
|
||||||
"area": "华中区",
|
|
||||||
"province": "湖北省",
|
|
||||||
"city": "潜江",
|
|
||||||
"contact": "罗生",
|
|
||||||
"telephone": "13520211175",
|
|
||||||
"address": "潜江",
|
|
||||||
"introduction": "公司技术和研发实力雄厚,是国家863项目的参与者,并被政府认定为“高新技术企业”。",
|
|
||||||
"employees": 246,
|
|
||||||
"created_date": "2013-04-30 00:56:00",
|
|
||||||
"boole": false,
|
|
||||||
"assets": "2000000",
|
|
||||||
"rate": 0.7
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "18",
|
|
||||||
"name": "珠海XX科技有限公司",
|
|
||||||
"userId": 441047913162396,
|
|
||||||
"area": "华南区",
|
|
||||||
"province": "广东省",
|
|
||||||
"city": "珠海",
|
|
||||||
"contact": "黄生",
|
|
||||||
"telephone": "13120211175",
|
|
||||||
"address": "珠海香洲区",
|
|
||||||
"introduction": "公司技术和研发实力雄厚,是国家863项目的参与者,并被政府认定为“高新技术企业”。",
|
|
||||||
"employees": 592,
|
|
||||||
"created_date": "2014-05-30 01:00:00",
|
|
||||||
"boole": false,
|
|
||||||
"assets": "1800000",
|
|
||||||
"rate": 0.66
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "19",
|
|
||||||
"name": "珠海XX医疗科技有限公司",
|
|
||||||
"userId": 441047913162396,
|
|
||||||
"area": "华南区",
|
|
||||||
"province": "广东省",
|
|
||||||
"city": "广州",
|
|
||||||
"contact": "刘生",
|
|
||||||
"telephone": "13820211175",
|
|
||||||
"address": "广州天河区",
|
|
||||||
"introduction": "公司技术和研发实力雄厚,是国家863项目的参与者,并被政府认定为“高新技术企业”。",
|
|
||||||
"employees": 851,
|
|
||||||
"created_date": "2014-04-29 08:56:00",
|
|
||||||
"boole": false,
|
|
||||||
"assets": "100000",
|
|
||||||
"rate": 0.1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "20",
|
|
||||||
"name": "东莞XX礼品有限公司",
|
|
||||||
"userId": 421000103624183,
|
|
||||||
"area": "华中区",
|
|
||||||
"province": "湖北省",
|
|
||||||
"city": "襄阳",
|
|
||||||
"contact": "范生",
|
|
||||||
"telephone": "13120211175",
|
|
||||||
"address": "襄阳",
|
|
||||||
"introduction": "公司技术和研发实力雄厚,是国家863项目的参与者,并被政府认定为“高新技术企业”。",
|
|
||||||
"employees": 394,
|
|
||||||
"created_date": "2014-04-28 10:56:00",
|
|
||||||
"boole": true,
|
|
||||||
"assets": "400000",
|
|
||||||
"rate": 0.4
|
|
||||||
}
|
|
||||||
]
|
|
|
@ -1,93 +0,0 @@
|
||||||
[
|
|
||||||
{
|
|
||||||
"id": "1",
|
|
||||||
"pid": "0",
|
|
||||||
"name": "GFD科技有限公司",
|
|
||||||
"area": "华东区",
|
|
||||||
"employees": "800"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "15",
|
|
||||||
"pid": "1",
|
|
||||||
"name": "GFD科技股份有限子公司",
|
|
||||||
"area": "华东区",
|
|
||||||
"employees": "700"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "2",
|
|
||||||
"pid": "0",
|
|
||||||
"name": "WWWW科技有限公司",
|
|
||||||
"area": "华南区",
|
|
||||||
"employees": "500"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "22",
|
|
||||||
"pid": "2",
|
|
||||||
"name": "WWWW科技股份有限子公司",
|
|
||||||
"area": "华南区",
|
|
||||||
"employees": "720"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "3",
|
|
||||||
"pid": "4",
|
|
||||||
"name": "RFV有限责任公司",
|
|
||||||
"area": "华南区",
|
|
||||||
"employees": "300"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "4",
|
|
||||||
"pid": "0",
|
|
||||||
"name": "TGB有限公司",
|
|
||||||
"area": "华南区",
|
|
||||||
"employees": "360"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "5",
|
|
||||||
"pid": "4",
|
|
||||||
"name": "YHN科技有限公司",
|
|
||||||
"area": "华南区",
|
|
||||||
"employees": "810"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "6",
|
|
||||||
"pid": "5",
|
|
||||||
"name": "WSX科技有限公司",
|
|
||||||
"area": "华南区",
|
|
||||||
"employees": "800"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "7",
|
|
||||||
"pid": "0",
|
|
||||||
"name": "XX物业有限公司",
|
|
||||||
"area": "华南区",
|
|
||||||
"employees": "400"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "8",
|
|
||||||
"pid": "7",
|
|
||||||
"name": "深圳市XX网络技术有限公司",
|
|
||||||
"area": "华南区",
|
|
||||||
"employees": "540"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "9",
|
|
||||||
"pid": "5",
|
|
||||||
"name": "UJM有限责任公司",
|
|
||||||
"area": "华南区",
|
|
||||||
"employees": "750"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "10",
|
|
||||||
"pid": "7",
|
|
||||||
"name": "IK有限责任公司",
|
|
||||||
"area": "华南区",
|
|
||||||
"employees": "400"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "23",
|
|
||||||
"pid": "10",
|
|
||||||
"name": "IK有限责任股份有限公司",
|
|
||||||
"area": "华南区",
|
|
||||||
"employees": "455"
|
|
||||||
}
|
|
||||||
]
|
|
|
@ -1,20 +0,0 @@
|
||||||
[
|
|
||||||
{
|
|
||||||
"dept_Code": "022471",
|
|
||||||
"remarks": null,
|
|
||||||
"approval_Person": "test1",
|
|
||||||
"approval_Category": "0303"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"dept_Code": "041963",
|
|
||||||
"remarks": "权限申请",
|
|
||||||
"approval_Person": "test2",
|
|
||||||
"approval_Category": "0303"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"dept_Code": "041963",
|
|
||||||
"remarks": "资产申请",
|
|
||||||
"approval_Person": "test3",
|
|
||||||
"approval_Category": "0303"
|
|
||||||
}
|
|
||||||
]
|
|
|
@ -1,87 +0,0 @@
|
||||||
{
|
|
||||||
"more": [
|
|
||||||
1
|
|
||||||
],
|
|
||||||
"company": [
|
|
||||||
{
|
|
||||||
"kw_control_status": "Branches/分公司",
|
|
||||||
"tx_delegate": "test1 95270007/SZ,",
|
|
||||||
"kw_in_group": "Y",
|
|
||||||
"tx_type_en": "Domestic",
|
|
||||||
"tx_corporation": "SZ Technologies Co., Ltd. Guangzhou Branch",
|
|
||||||
"tx_person": null,
|
|
||||||
"tx_country_code": "CN",
|
|
||||||
"tx_corporation_cn": "SZ技术有限公司广州分公司",
|
|
||||||
"last_modified_date": "2016/05/03 14:04:48",
|
|
||||||
"kwregion": "China Region",
|
|
||||||
"txcity": "广州/Guangzhou",
|
|
||||||
"tx_country": "中国/China",
|
|
||||||
"tx_entity_type": "in operation",
|
|
||||||
"tx_corporation_local": "SZ技术有限公司广州分公司",
|
|
||||||
"tx_type_cn": "国内",
|
|
||||||
"dtincorporation": "2009-08-24",
|
|
||||||
"txaddress": "广州市越秀区环市东路",
|
|
||||||
"tx_coa": "0231"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"kw_control_status": "Subsidiaries/子公司",
|
|
||||||
"tx_delegate": "test2 95270008/SZ,",
|
|
||||||
"kw_in_group": "Y",
|
|
||||||
"tx_type_en": "Overseas",
|
|
||||||
"tx_corporation": "SZ Network USA, Inc.",
|
|
||||||
"tx_person": null,
|
|
||||||
"tx_country_code": "US",
|
|
||||||
"tx_corporation_cn": "SZ网络MG有限公司",
|
|
||||||
"last_modified_date": "2016/10/29 11:18:30",
|
|
||||||
"kwregion": "America Rep Office",
|
|
||||||
"txcity": "Dallas, Texas",
|
|
||||||
"tx_country": "MG/United States",
|
|
||||||
"tx_entity_type": "closed",
|
|
||||||
"tx_corporation_local": "SZ Network USA, Inc.",
|
|
||||||
"tx_type_cn": "海外",
|
|
||||||
"dtincorporation": "2010-03-12",
|
|
||||||
"txaddress": "\"350 North St. Paul StreetDallas\"",
|
|
||||||
"tx_coa": "0741"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"kw_control_status": "Controlled Entities/合营公司",
|
|
||||||
"tx_delegate": "张三,",
|
|
||||||
"kw_in_group": "Y",
|
|
||||||
"tx_type_en": "Overseas",
|
|
||||||
"tx_corporation": "H.S. USA,INC.",
|
|
||||||
"tx_person": "张三,李四,",
|
|
||||||
"tx_country_code": "US",
|
|
||||||
"tx_corporation_cn": "MG有限公司(美研所)",
|
|
||||||
"last_modified_date": "2016/05/03 14:04:48",
|
|
||||||
"kwregion": "America Rep Office",
|
|
||||||
"txcity": "Cupertino",
|
|
||||||
"tx_country": "MG/United States",
|
|
||||||
"tx_entity_type": "closed",
|
|
||||||
"tx_corporation_local": "HS USA.,Inc",
|
|
||||||
"tx_type_cn": "海外",
|
|
||||||
"dtincorporation": "2008-09-03",
|
|
||||||
"txaddress": "1209 Orange Street,City of Wilmington,County of New Castle",
|
|
||||||
"tx_coa": "7061"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"kw_control_status": "Subsidiaries/子公司",
|
|
||||||
"tx_delegate": null,
|
|
||||||
"kw_in_group": "Y",
|
|
||||||
"tx_type_en": "Domestic",
|
|
||||||
"tx_corporation": "shenzhenSZ",
|
|
||||||
"tx_person": null,
|
|
||||||
"tx_country_code": "CN",
|
|
||||||
"tx_corporation_cn": "SZ技术有限公司",
|
|
||||||
"last_modified_date": "2016/11/15 14:41:24",
|
|
||||||
"kwregion": "China Region",
|
|
||||||
"txcity": "深圳市",
|
|
||||||
"tx_country": "中国/China",
|
|
||||||
"tx_entity_type": "setting up",
|
|
||||||
"tx_corporation_local": "深圳坂田SZ",
|
|
||||||
"tx_type_cn": "国内",
|
|
||||||
"dtincorporation": "2016-08-01",
|
|
||||||
"txaddress": "SZ技术有限公司",
|
|
||||||
"tx_coa": "0021"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -1,94 +0,0 @@
|
||||||
{
|
|
||||||
"country": [
|
|
||||||
{
|
|
||||||
"territory_short_name": "China",
|
|
||||||
"description": "the People's Republic of China",
|
|
||||||
"language": "US",
|
|
||||||
"territory_code": "CN"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"territory_short_name": "France",
|
|
||||||
"description": "the French Republic",
|
|
||||||
"language": "US",
|
|
||||||
"territory_code": "FR"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"territory_short_name": "Finland",
|
|
||||||
"description": "the Republic of Finland",
|
|
||||||
"language": "US",
|
|
||||||
"territory_code": "FI"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"territory_short_name": "Kuwait",
|
|
||||||
"description": "the State of Kuwait",
|
|
||||||
"language": "US",
|
|
||||||
"territory_code": "KW"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"territory_short_name": "Moldova (the Republic of)",
|
|
||||||
"description": "the Republic of Moldova",
|
|
||||||
"language": "US",
|
|
||||||
"territory_code": "MD"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"territory_short_name": "Mozambique",
|
|
||||||
"description": "the Republic of Mozambique",
|
|
||||||
"language": "US",
|
|
||||||
"territory_code": "MZ"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"territory_short_name": "Niger",
|
|
||||||
"description": "the Republic of the Niger",
|
|
||||||
"language": "US",
|
|
||||||
"territory_code": "NE"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"territory_short_name": "Oman",
|
|
||||||
"description": "the Sultanate of Oman",
|
|
||||||
"language": "US",
|
|
||||||
"territory_code": "OM"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"territory_short_name": "Panama",
|
|
||||||
"description": "the Republic of Panama",
|
|
||||||
"language": "US",
|
|
||||||
"territory_code": "PA"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"territory_short_name": "Papua New Guinea",
|
|
||||||
"description": "the Independent State of Papua New Guinea",
|
|
||||||
"language": "US",
|
|
||||||
"territory_code": "PG"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"territory_short_name": "Serbia",
|
|
||||||
"description": "the Republic of Serbia",
|
|
||||||
"language": "US",
|
|
||||||
"territory_code": "RS"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"territory_short_name": "Senegal",
|
|
||||||
"description": "the Republic of Senegal",
|
|
||||||
"language": "US",
|
|
||||||
"territory_code": "SN"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"territory_short_name": "Tonga",
|
|
||||||
"description": "the Kingdom of Tonga",
|
|
||||||
"language": "US",
|
|
||||||
"territory_code": "TO"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"territory_short_name": "Uganda",
|
|
||||||
"description": "the Republic of Uganda",
|
|
||||||
"language": "US",
|
|
||||||
"territory_code": "UG"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"territory_short_name": "United States",
|
|
||||||
"description": "the United States of America",
|
|
||||||
"language": "US",
|
|
||||||
"territory_code": "US"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
|
@ -1,79 +0,0 @@
|
||||||
[
|
|
||||||
{
|
|
||||||
"sex": "M",
|
|
||||||
"l0_Name": "SZ技术",
|
|
||||||
"effective_Start_Date": "2011/10/14 00:00:00",
|
|
||||||
"l3_Dept_Code": "038384",
|
|
||||||
"person_Notes_Cn": "test1 12345678",
|
|
||||||
"l2_Name": "信息技术工程部",
|
|
||||||
"short_Name": "l12345678",
|
|
||||||
"effective_End_Date": "4712/12/31 00:00:00",
|
|
||||||
"person_Mail": "",
|
|
||||||
"name": "公共技术测试数据部门",
|
|
||||||
"location_second_area": "Shenzhen",
|
|
||||||
"upper_Name": "IT技术架构与测试数据部",
|
|
||||||
"coa_Combination": "0021.000.0001.038759",
|
|
||||||
"l4_Name": "公共技术测试数据部门",
|
|
||||||
"english_Name": "zhang san",
|
|
||||||
"dept_Code": "038759",
|
|
||||||
"employee_Number": "12345678",
|
|
||||||
"l0_Dept_Code": "022471",
|
|
||||||
"l2_Dept_Code": "023268",
|
|
||||||
"upper_Dept_Code": "038384",
|
|
||||||
"l1_Name": "测试数据部",
|
|
||||||
"location_country": "China",
|
|
||||||
"l4_Dept_Code": "038759",
|
|
||||||
"start_Date": "2011/08/01 00:00:00",
|
|
||||||
"contract_Location_Code": "010400",
|
|
||||||
"l1_Dept_Code": "023093",
|
|
||||||
"contract_Location_Name": "China\\Guangdong-Shenzhen",
|
|
||||||
"location_first_area": "Guangdong",
|
|
||||||
"last_Name": "张三",
|
|
||||||
"language": "CHN",
|
|
||||||
"l3_Name": "测试与测试数据部"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"contract_Location_Name": "China\\Guangdong-Shenzhen",
|
|
||||||
"location_second_area": "Shenzhen",
|
|
||||||
"effective_End_Date": "4712/12/31 00:00:00",
|
|
||||||
"l4_Name": "公共技术测试数据部门",
|
|
||||||
"l0_Dept_Code": "022471",
|
|
||||||
"l0_Name": "SZ技术",
|
|
||||||
"coa_Combination": "0021.000.0001.038759",
|
|
||||||
"last_Name": "李四",
|
|
||||||
"language": "CHN",
|
|
||||||
"l1_Name": "测试数据部",
|
|
||||||
"l3_Dept_Code": "038384",
|
|
||||||
"l4_Dept_Code": "038759",
|
|
||||||
"location_first_area": "Guangdong",
|
|
||||||
"l2_Name": "信息技术工程部",
|
|
||||||
"start_Date": "2014/04/21 00:00:00",
|
|
||||||
"l2_Dept_Code": "023268",
|
|
||||||
"effective_Start_Date": "2014/04/21 00:00:00",
|
|
||||||
"upper_Dept_Code": "038384",
|
|
||||||
"employee_Number": "12345678",
|
|
||||||
"dept_Code": "038759",
|
|
||||||
"contract_Location_Code": "010400",
|
|
||||||
"short_Name": "12345678",
|
|
||||||
"person_Mail": "",
|
|
||||||
"l3_Name": "IT技术架构与测试数据部",
|
|
||||||
"sex": "M",
|
|
||||||
"name": "公共技术测试数据部门",
|
|
||||||
"person_Notes_Cn": "test2 12345678",
|
|
||||||
"location_country": "China",
|
|
||||||
"upper_Name": "IT技术架构与测试数据部",
|
|
||||||
"l1_Dept_Code": "023093",
|
|
||||||
"english_Name": "li si"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"language": "CHN",
|
|
||||||
"employee_Number": "12345678",
|
|
||||||
"short_Name": "12345678",
|
|
||||||
"person_Mail": "",
|
|
||||||
"person_Notes_Cn": "wangwu 12345678",
|
|
||||||
"last_Name": "王五",
|
|
||||||
"english_Name": "wang wu",
|
|
||||||
"l0_Name": "SZ技术",
|
|
||||||
"l1_Name": "SZIT云"
|
|
||||||
}
|
|
||||||
]
|
|
|
@ -1,18 +0,0 @@
|
||||||
[
|
|
||||||
{
|
|
||||||
"id": "b49cf1a5326b4ce797541064e48302d5",
|
|
||||||
"app_id": "app_common777777",
|
|
||||||
"code": "zhCN",
|
|
||||||
"name": "中文",
|
|
||||||
"i18n$$name": "中文",
|
|
||||||
"order_number": null
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "bdaedfe15dfd4ad8aa30bc05567de629",
|
|
||||||
"app_id": "app_common777777",
|
|
||||||
"code": "enUS",
|
|
||||||
"name": "English",
|
|
||||||
"i18n$$name": "English",
|
|
||||||
"order_number": null
|
|
||||||
}
|
|
||||||
]
|
|
|
@ -1,265 +0,0 @@
|
||||||
[
|
|
||||||
{
|
|
||||||
"id": "ced3f89e313d4bbea1821a9942196d0d",
|
|
||||||
"app_id": "app_common666666",
|
|
||||||
"sub_app_id": null,
|
|
||||||
"code": "a",
|
|
||||||
"value": "b",
|
|
||||||
"language": "enUS",
|
|
||||||
"module": "hae.manager.catalog",
|
|
||||||
"memo": null,
|
|
||||||
"extend": null,
|
|
||||||
"created_by": "uuid~eldYMjc2MDg0",
|
|
||||||
"created_date": "2016-03-01 09:59:50.000000",
|
|
||||||
"last_updated_by": "uuid~eldYMjc2MDg0",
|
|
||||||
"last_updated_date": "2016-03-01 09:59:50.000000",
|
|
||||||
"modification_num": 1,
|
|
||||||
"type": "2",
|
|
||||||
"hw_hae_paging": {
|
|
||||||
"startIndex": 1,
|
|
||||||
"totalRows": 652,
|
|
||||||
"curPage": 1,
|
|
||||||
"pageSize": 15,
|
|
||||||
"endIndex": 15,
|
|
||||||
"totalPages": 44
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "70cdecbd47714568812433ac99895c9e",
|
|
||||||
"app_id": "app_common666666",
|
|
||||||
"sub_app_id": null,
|
|
||||||
"code": "a",
|
|
||||||
"value": "a",
|
|
||||||
"language": "zhCN",
|
|
||||||
"module": "hae.manager.catalog",
|
|
||||||
"memo": null,
|
|
||||||
"extend": null,
|
|
||||||
"created_by": "uuid~eldYMjc2MDg0",
|
|
||||||
"created_date": "2016-03-01 09:59:50.000000",
|
|
||||||
"last_updated_by": "uuid~eldYMjc2MDg0",
|
|
||||||
"last_updated_date": "2016-03-01 09:59:50.000000",
|
|
||||||
"modification_num": 1,
|
|
||||||
"type": "2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "830cbe73d92f41fdaf11647fd70c7313",
|
|
||||||
"app_id": "app_common666666",
|
|
||||||
"sub_app_id": null,
|
|
||||||
"code": "hae.developer.Guideline.Environment",
|
|
||||||
"value": "环境及运维手册",
|
|
||||||
"language": "zhCN",
|
|
||||||
"module": "hae.manager.catalog",
|
|
||||||
"memo": null,
|
|
||||||
"extend": null,
|
|
||||||
"created_by": "uuid~dGVzdDE=",
|
|
||||||
"created_date": "2015-05-28 09:41:51.000000",
|
|
||||||
"last_updated_by": "uuid~dzAwMTk2MTgx",
|
|
||||||
"last_updated_date": "2015-09-01 10:55:50.000000",
|
|
||||||
"modification_num": 2,
|
|
||||||
"type": "2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "2c3d8b59b68948caa637fa857cfe2a17",
|
|
||||||
"app_id": "app_common666666",
|
|
||||||
"sub_app_id": null,
|
|
||||||
"code": "hae.developer.Guideline.FrontWebDocuments",
|
|
||||||
"value": "Web Development Docs",
|
|
||||||
"language": "enUS",
|
|
||||||
"module": "hae.manager.catalog",
|
|
||||||
"memo": null,
|
|
||||||
"extend": null,
|
|
||||||
"created_by": "uuid~dGVzdDE=",
|
|
||||||
"created_date": "2015-05-28 09:40:02.000000",
|
|
||||||
"last_updated_by": "uuid~dzAwMTk2MTgx",
|
|
||||||
"last_updated_date": "2015-09-01 10:55:50.000000",
|
|
||||||
"modification_num": 3,
|
|
||||||
"type": "2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "b1143eb90e224153b27c60bacf027ea8",
|
|
||||||
"app_id": "app_common666666",
|
|
||||||
"sub_app_id": null,
|
|
||||||
"code": "hae.developer.Guideline.FrontWebDocuments",
|
|
||||||
"value": "Web开发手册",
|
|
||||||
"language": "zhCN",
|
|
||||||
"module": "hae.manager.catalog",
|
|
||||||
"memo": null,
|
|
||||||
"extend": null,
|
|
||||||
"created_by": "uuid~dGVzdDE=",
|
|
||||||
"created_date": "2015-05-28 09:40:02.000000",
|
|
||||||
"last_updated_by": "uuid~dzAwMTk2MTgx",
|
|
||||||
"last_updated_date": "2015-09-01 10:55:50.000000",
|
|
||||||
"modification_num": 2,
|
|
||||||
"type": "2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "1477ebb28ad645d699dac39eae3ff945",
|
|
||||||
"app_id": "app_common666666",
|
|
||||||
"sub_app_id": null,
|
|
||||||
"code": "hae.developer.Guideline.WebDoc",
|
|
||||||
"value": "Web Document",
|
|
||||||
"language": "enUS",
|
|
||||||
"module": "hae.saas.i18n",
|
|
||||||
"memo": null,
|
|
||||||
"extend": null,
|
|
||||||
"created_by": "uuid~eFdYMjMzODM5",
|
|
||||||
"created_date": "2015-04-10 10:16:29.000000",
|
|
||||||
"last_updated_by": "uuid~dzAwMTk2MTgx",
|
|
||||||
"last_updated_date": "2015-09-01 10:55:49.000000",
|
|
||||||
"modification_num": 1,
|
|
||||||
"type": "1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "721f546b95ac484e9711033cb0613747",
|
|
||||||
"app_id": "app_common666666",
|
|
||||||
"sub_app_id": null,
|
|
||||||
"code": "hae.developer.Guideline.WebDoc",
|
|
||||||
"value": "前端WEB文档",
|
|
||||||
"language": "zhCN",
|
|
||||||
"module": "hae.saas.i18n",
|
|
||||||
"memo": null,
|
|
||||||
"extend": null,
|
|
||||||
"created_by": "uuid~eFdYMjMzODM5",
|
|
||||||
"created_date": "2015-04-10 10:16:29.000000",
|
|
||||||
"last_updated_by": "uuid~dzAwMTk2MTgx",
|
|
||||||
"last_updated_date": "2015-09-01 10:55:49.000000",
|
|
||||||
"modification_num": 1,
|
|
||||||
"type": "1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "af6c514babec4b33b980b026a516e217",
|
|
||||||
"app_id": "app_common666666",
|
|
||||||
"sub_app_id": null,
|
|
||||||
"code": "hae.developer.Guideline.webDoc",
|
|
||||||
"value": "WEB Document",
|
|
||||||
"language": "enUS",
|
|
||||||
"module": "hae.saas.i18n",
|
|
||||||
"memo": null,
|
|
||||||
"extend": null,
|
|
||||||
"created_by": "uuid~eFdYMjMzODM5",
|
|
||||||
"created_date": "2015-04-10 10:09:46.000000",
|
|
||||||
"last_updated_by": "uuid~dzAwMTk2MTgx",
|
|
||||||
"last_updated_date": "2015-09-01 10:55:49.000000",
|
|
||||||
"modification_num": 1,
|
|
||||||
"type": "1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "e71ada77514d4417b118e4d8fc9ec708",
|
|
||||||
"app_id": "app_common666666",
|
|
||||||
"sub_app_id": null,
|
|
||||||
"code": "hae.developer.Guideline.webDoc",
|
|
||||||
"value": "前端WEB文档",
|
|
||||||
"language": "zhCN",
|
|
||||||
"module": "hae.saas.i18n",
|
|
||||||
"memo": null,
|
|
||||||
"extend": null,
|
|
||||||
"created_by": "uuid~eFdYMjMzODM5",
|
|
||||||
"created_date": "2015-04-10 10:09:46.000000",
|
|
||||||
"last_updated_by": "uuid~dzAwMTk2MTgx",
|
|
||||||
"last_updated_date": "2015-09-01 10:55:49.000000",
|
|
||||||
"modification_num": 1,
|
|
||||||
"type": "1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "cf188cfc93e94d05bbbfc25f4d628550",
|
|
||||||
"app_id": "app_common666666",
|
|
||||||
"sub_app_id": null,
|
|
||||||
"code": "hae.developer.HelpTopic",
|
|
||||||
"value": "Help",
|
|
||||||
"language": "enUS",
|
|
||||||
"module": "hae.saas.i18n",
|
|
||||||
"memo": null,
|
|
||||||
"extend": null,
|
|
||||||
"created_by": "uuid~d1dYMjAzNDY3",
|
|
||||||
"created_date": "2015-04-07 15:56:15.000000",
|
|
||||||
"last_updated_by": "uuid~dzAwMTk2MTgx",
|
|
||||||
"last_updated_date": "2015-09-01 10:55:49.000000",
|
|
||||||
"modification_num": 19,
|
|
||||||
"type": "1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "4472e69546f4489b98772d5f4eaf5abf",
|
|
||||||
"app_id": "app_common666666",
|
|
||||||
"sub_app_id": null,
|
|
||||||
"code": "hae.developer.HelpTopic",
|
|
||||||
"value": "帮助",
|
|
||||||
"language": "zhCN",
|
|
||||||
"module": "hae.saas.i18n",
|
|
||||||
"memo": null,
|
|
||||||
"extend": null,
|
|
||||||
"created_by": "uuid~d1dYMjAzNDY3",
|
|
||||||
"created_date": "2015-04-07 15:56:15.000000",
|
|
||||||
"last_updated_by": "uuid~dzAwMTk2MTgx",
|
|
||||||
"last_updated_date": "2015-09-01 10:55:49.000000",
|
|
||||||
"modification_num": 1,
|
|
||||||
"type": "1"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "a5ad6b57e7954fbfb9a19a295d924ce5",
|
|
||||||
"app_id": "app_common666666",
|
|
||||||
"sub_app_id": null,
|
|
||||||
"code": "hae.developer.HelpTopic.ConfigurePlatform",
|
|
||||||
"value": "Configuration Platform",
|
|
||||||
"language": "enUS",
|
|
||||||
"module": "hae.manager.catalog",
|
|
||||||
"memo": null,
|
|
||||||
"extend": null,
|
|
||||||
"created_by": "uuid~dGVzdDE=",
|
|
||||||
"created_date": "2015-05-28 10:19:41.000000",
|
|
||||||
"last_updated_by": "uuid~dzAwMTk2MTgx",
|
|
||||||
"last_updated_date": "2015-09-01 10:55:50.000000",
|
|
||||||
"modification_num": 2,
|
|
||||||
"type": "2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "bfb4547487b24321a6991bc65a8c5d8e",
|
|
||||||
"app_id": "app_common666666",
|
|
||||||
"sub_app_id": null,
|
|
||||||
"code": "hae.developer.HelpTopic.ConfigurePlatform",
|
|
||||||
"value": "配置平台",
|
|
||||||
"language": "zhCN",
|
|
||||||
"module": "hae.manager.catalog",
|
|
||||||
"memo": null,
|
|
||||||
"extend": null,
|
|
||||||
"created_by": "uuid~dGVzdDE=",
|
|
||||||
"created_date": "2015-05-28 10:19:41.000000",
|
|
||||||
"last_updated_by": "uuid~dzAwMTk2MTgx",
|
|
||||||
"last_updated_date": "2015-09-01 10:55:50.000000",
|
|
||||||
"modification_num": 1,
|
|
||||||
"type": "2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "960d6aadbe3b43a8932b5ca95ff18cf8",
|
|
||||||
"app_id": "app_common666666",
|
|
||||||
"sub_app_id": null,
|
|
||||||
"code": "hae.developer.HelpTopic.Expert",
|
|
||||||
"value": "Online Expert",
|
|
||||||
"language": "enUS",
|
|
||||||
"module": "hae.manager.catalog",
|
|
||||||
"memo": null,
|
|
||||||
"extend": null,
|
|
||||||
"created_by": "uuid~eDAwMTkyMDAw",
|
|
||||||
"created_date": "2015-06-01 14:33:52.000000",
|
|
||||||
"last_updated_by": "uuid~dzAwMTk2MTgx",
|
|
||||||
"last_updated_date": "2015-09-01 10:55:49.000000",
|
|
||||||
"modification_num": 2,
|
|
||||||
"type": "2"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": "d95f2707549e42e6a9cd75de4d429025",
|
|
||||||
"app_id": "app_common666666",
|
|
||||||
"sub_app_id": null,
|
|
||||||
"code": "hae.developer.HelpTopic.Expert",
|
|
||||||
"value": "专家在线",
|
|
||||||
"language": "zhCN",
|
|
||||||
"module": "hae.manager.catalog",
|
|
||||||
"memo": null,
|
|
||||||
"extend": null,
|
|
||||||
"created_by": "uuid~eDAwMTkyMDAw",
|
|
||||||
"created_date": "2015-06-01 14:33:52.000000",
|
|
||||||
"last_updated_by": "uuid~dzAwMTk2MTgx",
|
|
||||||
"last_updated_date": "2015-09-01 10:55:49.000000",
|
|
||||||
"modification_num": 1,
|
|
||||||
"type": "2"
|
|
||||||
}
|
|
||||||
]
|
|
|
@ -1,10 +0,0 @@
|
||||||
[
|
|
||||||
{
|
|
||||||
"id": "ee2dcdfb6dc94b33b997db2fff25a1bf",
|
|
||||||
"module": "hae.saas.i18n",
|
|
||||||
"code": "pmallmng.exception.code.",
|
|
||||||
"type": "1",
|
|
||||||
"value": "sdfeeee",
|
|
||||||
"language": "zhCN"
|
|
||||||
}
|
|
||||||
]
|
|
|
@ -1,92 +0,0 @@
|
||||||
[
|
|
||||||
{
|
|
||||||
"id": 1,
|
|
||||||
"pid": -1,
|
|
||||||
"name": "湖南",
|
|
||||||
"memo": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 2,
|
|
||||||
"pid": -1,
|
|
||||||
"name": "湖北",
|
|
||||||
"memo": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 3,
|
|
||||||
"pid": -1,
|
|
||||||
"name": "广东",
|
|
||||||
"memo": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 4,
|
|
||||||
"pid": -1,
|
|
||||||
"name": "广西",
|
|
||||||
"memo": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 5,
|
|
||||||
"pid": -1,
|
|
||||||
"name": "浙江",
|
|
||||||
"memo": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 6,
|
|
||||||
"pid": -1,
|
|
||||||
"name": "西藏",
|
|
||||||
"memo": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 7,
|
|
||||||
"pid": -1,
|
|
||||||
"name": "四川",
|
|
||||||
"memo": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 8,
|
|
||||||
"pid": -1,
|
|
||||||
"name": "云南",
|
|
||||||
"memo": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 9,
|
|
||||||
"pid": 1,
|
|
||||||
"name": "长沙",
|
|
||||||
"memo": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 10,
|
|
||||||
"pid": 2,
|
|
||||||
"name": "武汉",
|
|
||||||
"memo": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 11,
|
|
||||||
"pid": 3,
|
|
||||||
"name": "广州",
|
|
||||||
"memo": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 12,
|
|
||||||
"pid": 3,
|
|
||||||
"name": "深圳",
|
|
||||||
"memo": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 13,
|
|
||||||
"pid": 3,
|
|
||||||
"name": "东莞",
|
|
||||||
"memo": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 14,
|
|
||||||
"pid": 3,
|
|
||||||
"name": "惠州",
|
|
||||||
"memo": ""
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 15,
|
|
||||||
"pid": 1,
|
|
||||||
"name": "岳阳",
|
|
||||||
"memo": ""
|
|
||||||
}
|
|
||||||
]
|
|
|
@ -1,98 +0,0 @@
|
||||||
[
|
|
||||||
{
|
|
||||||
"id": 100,
|
|
||||||
"pId": 0,
|
|
||||||
"label": "node1",
|
|
||||||
"isParent": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 1,
|
|
||||||
"pId": 100,
|
|
||||||
"label": "node1.1",
|
|
||||||
"isParent": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 2,
|
|
||||||
"pId": 100,
|
|
||||||
"label": "node1.2",
|
|
||||||
"isParent": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 3,
|
|
||||||
"pId": 100,
|
|
||||||
"label": "node1.3",
|
|
||||||
"isParent": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 4,
|
|
||||||
"pId": 100,
|
|
||||||
"label": "node1.4",
|
|
||||||
"isParent": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 41,
|
|
||||||
"pId": 4,
|
|
||||||
"label": "node1.4.1",
|
|
||||||
"isParent": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 411,
|
|
||||||
"pId": 41,
|
|
||||||
"label": "node1.4.1.1",
|
|
||||||
"isParent": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 42,
|
|
||||||
"pId": 4,
|
|
||||||
"label": "node1.4.2",
|
|
||||||
"isParent": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 421,
|
|
||||||
"pId": 42,
|
|
||||||
"label": "node1.4.2.1",
|
|
||||||
"isParent": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 5,
|
|
||||||
"pId": 100,
|
|
||||||
"label": "node1.5",
|
|
||||||
"isParent": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 51,
|
|
||||||
"pId": 5,
|
|
||||||
"label": "node1.5.1",
|
|
||||||
"isParent": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 101,
|
|
||||||
"pId": 0,
|
|
||||||
"label": "node2",
|
|
||||||
"isParent": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 1011,
|
|
||||||
"pId": 101,
|
|
||||||
"label": "node2.1",
|
|
||||||
"isParent": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 102,
|
|
||||||
"pId": 0,
|
|
||||||
"label": "node3",
|
|
||||||
"isParent": true
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 1021,
|
|
||||||
"pId": 102,
|
|
||||||
"label": "node3.1",
|
|
||||||
"isParent": false
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"id": 103,
|
|
||||||
"pId": 0,
|
|
||||||
"label": "node4",
|
|
||||||
"isParent": false
|
|
||||||
}
|
|
||||||
]
|
|
Before Width: | Height: | Size: 488 KiB |
Before Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 716 KiB |
Before Width: | Height: | Size: 635 KiB |
Before Width: | Height: | Size: 702 KiB |
Before Width: | Height: | Size: 564 KiB |
Before Width: | Height: | Size: 391 KiB |
Before Width: | Height: | Size: 131 KiB |
Before Width: | Height: | Size: 424 KiB |
Before Width: | Height: | Size: 22 KiB |
Before Width: | Height: | Size: 515 KiB |
Before Width: | Height: | Size: 60 KiB |
Before Width: | Height: | Size: 430 KiB |
Before Width: | Height: | Size: 350 KiB |
Before Width: | Height: | Size: 529 KiB |
Before Width: | Height: | Size: 4.0 KiB |
Before Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 550 KiB |
Before Width: | Height: | Size: 795 KiB |
Before Width: | Height: | Size: 137 KiB |
Before Width: | Height: | Size: 105 KiB |
Before Width: | Height: | Size: 496 KiB |
Before Width: | Height: | Size: 112 KiB |
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 20 KiB |
Before Width: | Height: | Size: 311 B |
Before Width: | Height: | Size: 68 KiB |
Before Width: | Height: | Size: 67 KiB |
Before Width: | Height: | Size: 690 KiB |
Before Width: | Height: | Size: 8.9 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 27 KiB |
Before Width: | Height: | Size: 63 KiB |
Before Width: | Height: | Size: 8.2 KiB |
Before Width: | Height: | Size: 231 KiB |
Before Width: | Height: | Size: 22 KiB |
|
@ -1,8 +0,0 @@
|
||||||
<template>
|
|
||||||
<router-view />
|
|
||||||
</template>
|
|
||||||
<style>
|
|
||||||
body {
|
|
||||||
background-color: var(--ti-base-color-bg-1);
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -1,21 +0,0 @@
|
||||||
<template>
|
|
||||||
<div style="width: 870px">
|
|
||||||
<component :is="template"></component>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { defineAsyncComponent } from '@opentiny/vue-common'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
props: {
|
|
||||||
link: String
|
|
||||||
},
|
|
||||||
setup(props) {
|
|
||||||
const mode = localStorage.getItem('vue-example-mode') || 'pc'
|
|
||||||
return {
|
|
||||||
template: defineAsyncComponent(() => import(/* @vite-ignore */ `./demo/${mode}/${props.link}`))
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
Before Width: | Height: | Size: 6.7 KiB |
|
@ -1,559 +0,0 @@
|
||||||
.hljs {
|
|
||||||
margin: 12px 0 25px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.highlight .hljs {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
code {
|
|
||||||
background-color: #faffff;
|
|
||||||
border-radius: 4px;
|
|
||||||
padding: 1px 3px;
|
|
||||||
font-family: Menlo, YaHei Consolas Hybrid, Consolas, Courier New, monospace;
|
|
||||||
font-size: 13px;
|
|
||||||
}
|
|
||||||
|
|
||||||
button,
|
|
||||||
input,
|
|
||||||
select,
|
|
||||||
textarea {
|
|
||||||
font-family: inherit;
|
|
||||||
font-size: inherit;
|
|
||||||
line-height: inherit;
|
|
||||||
color: inherit;
|
|
||||||
}
|
|
||||||
a {
|
|
||||||
display: inline-block;
|
|
||||||
white-space: nowrap;
|
|
||||||
cursor: pointer;
|
|
||||||
background-image: none;
|
|
||||||
text-decoration: none;
|
|
||||||
outline: 0;
|
|
||||||
color: var(--ti-common-color-line-active);
|
|
||||||
}
|
|
||||||
|
|
||||||
input::-ms-clear,
|
|
||||||
input::-ms-reveal {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.main-cnt {
|
|
||||||
padding: 80px 0 40px;
|
|
||||||
box-sizing: border-box;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container {
|
|
||||||
width: 1140px;
|
|
||||||
padding: 0;
|
|
||||||
margin: 0 auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container {
|
|
||||||
padding-top: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container h2 {
|
|
||||||
font-size: 28px;
|
|
||||||
color: #1f2d3d;
|
|
||||||
margin: 0;
|
|
||||||
padding-bottom: 10px;
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container h2 + p {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.displaywrap .page-container h2 + p {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container h3 {
|
|
||||||
font-size: 22px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container h2,
|
|
||||||
.page-container h3,
|
|
||||||
.page-container h4,
|
|
||||||
.page-container h5 {
|
|
||||||
font-weight: 400;
|
|
||||||
color: #1f2f3d;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container h2 a,
|
|
||||||
.page-container h3 a,
|
|
||||||
.page-container h4 a,
|
|
||||||
.page-container h5 a {
|
|
||||||
float: left;
|
|
||||||
margin-left: -20px;
|
|
||||||
opacity: 0;
|
|
||||||
cursor: pointer;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container h2 a:hover,
|
|
||||||
.page-container h2:hover a,
|
|
||||||
.page-container h3 a:hover,
|
|
||||||
.page-container h3:hover a,
|
|
||||||
.page-container h4 a:hover,
|
|
||||||
.page-container h4:hover a,
|
|
||||||
.page-container h5 a:hover,
|
|
||||||
.page-container h5:hover a {
|
|
||||||
opacity: 0.4;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container p {
|
|
||||||
font-size: 16px;
|
|
||||||
color: #5e6d82;
|
|
||||||
line-height: 1.7em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container .tip {
|
|
||||||
padding: 8px 16px;
|
|
||||||
background-color: #ecf8ff;
|
|
||||||
border-radius: 4px;
|
|
||||||
border-left: 5px solid #50bfff;
|
|
||||||
margin: 20px 0;
|
|
||||||
font-size: 14px;
|
|
||||||
color: #5e6d82;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container .tip .highlight-lines,
|
|
||||||
.page-container .tip .line-numbers-wrapper {
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container .tip code {
|
|
||||||
font-size: 14px;
|
|
||||||
line-height: 2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container .warn {
|
|
||||||
padding: 8px 16px;
|
|
||||||
background-color: #fffbe6;
|
|
||||||
border-radius: 4px;
|
|
||||||
border-left: 5px solid #ffd666;
|
|
||||||
margin: 20px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container .warn code {
|
|
||||||
background-color: hsla(0, 0%, 100%, 0.7);
|
|
||||||
color: #445368;
|
|
||||||
}
|
|
||||||
.page-container .error {
|
|
||||||
padding: 8px 16px;
|
|
||||||
background-color: #fff1f0;
|
|
||||||
border-radius: 4px;
|
|
||||||
border-left: 5px solid #ff7875;
|
|
||||||
margin: 20px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container .attach-icon .hae-icon.error,
|
|
||||||
.page-container .attach-icon .hae-icon.warn {
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
border: 0;
|
|
||||||
border-radius: 0;
|
|
||||||
background: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container .error code {
|
|
||||||
background-color: hsla(0, 0%, 100%, 0.7);
|
|
||||||
color: #445368;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container.academy-container {
|
|
||||||
width: 100%;
|
|
||||||
padding: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container.academy-container .main-left h2,
|
|
||||||
.page-container.academy-container .main-left h2 + p {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container.academy-container .main-left h2 {
|
|
||||||
padding: 10px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container.academy-container .main-left h3 {
|
|
||||||
margin: 40px 0 20px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container.academy-container .main-left p > img,
|
|
||||||
.page-container.academy-container .main-left img {
|
|
||||||
max-width: 1200px;
|
|
||||||
margin: 10px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container.academy-container .main-left code.hljs {
|
|
||||||
max-width: 720px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container.academy-container .main-left hr {
|
|
||||||
max-width: 1200px;
|
|
||||||
margin-left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container.academy-container .main-left ul {
|
|
||||||
list-style: disc inside;
|
|
||||||
padding-left: 12px;
|
|
||||||
margin: 12px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container.academy-container .main-left ul > li {
|
|
||||||
font-size: 14px;
|
|
||||||
line-height: 36px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container.academy-container .main-left ul > li > p {
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container.academy-container .main-left ul > li > ul {
|
|
||||||
padding-left: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* vue-press */
|
|
||||||
.content code {
|
|
||||||
color: #476582;
|
|
||||||
padding: 0.25rem 0.5rem;
|
|
||||||
margin: 0;
|
|
||||||
font-size: 0.85em;
|
|
||||||
background-color: rgba(27, 31, 35, 0.05);
|
|
||||||
border-radius: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content code,
|
|
||||||
.content pre,
|
|
||||||
.content kbd,
|
|
||||||
.content samp {
|
|
||||||
font-family: 'source-code-pro', 'Menlo', 'Monaco', 'Consolas', 'Courier New',
|
|
||||||
'monospace';
|
|
||||||
}
|
|
||||||
.custom-block .custom-block-title {
|
|
||||||
font-weight: 600;
|
|
||||||
margin-bottom: -0.4rem;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-container .content .table {
|
|
||||||
width: 100%;
|
|
||||||
text-align: left;
|
|
||||||
font-size: 14px;
|
|
||||||
margin: 10px 0;
|
|
||||||
border-collapse: collapse;
|
|
||||||
}
|
|
||||||
.page-container .content .table th,
|
|
||||||
.page-container .content .table td {
|
|
||||||
color: #333;
|
|
||||||
padding: 12px;
|
|
||||||
border: 1px solid #ddd;
|
|
||||||
vertical-align: top;
|
|
||||||
}
|
|
||||||
.page-container .content .table th {
|
|
||||||
background-color: #eee;
|
|
||||||
}
|
|
||||||
.page-container .content .table td:first-child {
|
|
||||||
width: 15%;
|
|
||||||
}
|
|
||||||
.page-container .content blockquote {
|
|
||||||
border-left: 4px solid var(--theme-color, #42b983);
|
|
||||||
color: #858585;
|
|
||||||
margin: 2em 0;
|
|
||||||
padding-left: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.demo-popover-class1 {
|
|
||||||
background: #eee !important;
|
|
||||||
}
|
|
||||||
.demo-popover-class2 {
|
|
||||||
background: #999 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* hightline */
|
|
||||||
.page-main.noborder .content > h2:first-of-type {
|
|
||||||
border-bottom: 0;
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-main.noborder .content > p.overviewicon {
|
|
||||||
margin-right: 20px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.page-main:not(.noborder) .content > h2 {
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content > h2:not(:first-of-type) {
|
|
||||||
margin-top: 36px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content .badge.warn {
|
|
||||||
border-left: 0;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content > h2 {
|
|
||||||
font-size: 1.65rem;
|
|
||||||
padding-bottom: 0.3rem;
|
|
||||||
margin-bottom: 16px;
|
|
||||||
text-indent: -1px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content > h3 {
|
|
||||||
margin: 40px 0 20px 0;
|
|
||||||
padding-bottom: 0.3rem;
|
|
||||||
border-bottom: 1px solid #eaecef;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content > h4 {
|
|
||||||
font-size: 20px;
|
|
||||||
padding-top: 24px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content > p > code {
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content > p > strong {
|
|
||||||
color: #2c3e50;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content pre code {
|
|
||||||
font-size: 14px;
|
|
||||||
font-family: 'source-code-pro', 'Menlo', 'Monaco', 'Consolas', 'Courier New',
|
|
||||||
'monospace';
|
|
||||||
}
|
|
||||||
|
|
||||||
.content pre code.hljs {
|
|
||||||
padding: 18px;
|
|
||||||
border-radius: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content .apiBox pre.preview-code {
|
|
||||||
background-color: transparent;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content .visual-editor pre {
|
|
||||||
background-color: transparent;
|
|
||||||
padding: 0;
|
|
||||||
font-size: 14px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content > ul > li {
|
|
||||||
color: #5e6d82;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content .apiContainer ul,
|
|
||||||
.content .visual-editor ul,
|
|
||||||
.content .attrContainer ul {
|
|
||||||
list-style: none;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content .float-css ul {
|
|
||||||
font-size: 14px;
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content .box_all ul {
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content .logBox ul {
|
|
||||||
list-style: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content ul ul {
|
|
||||||
list-style-type: circle;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content .visual-editor ul {
|
|
||||||
font-size: 12px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content .hae-carousel ul {
|
|
||||||
padding: 0 4px;
|
|
||||||
line-height: 1.42857143;
|
|
||||||
font-family: Helvetica, Arial, 'microsoft yahei';
|
|
||||||
}
|
|
||||||
|
|
||||||
.content a.hae-icon.outer-link:hover,
|
|
||||||
.content p a:hover {
|
|
||||||
text-decoration: underline;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content a.hae-icon.outer-link::after {
|
|
||||||
content: '\E840';
|
|
||||||
font-size: 12px;
|
|
||||||
color: #999;
|
|
||||||
position: relative;
|
|
||||||
top: -6px;
|
|
||||||
left: 2px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content > .custom-block > p {
|
|
||||||
margin: 16px 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content div[class*='language-'] {
|
|
||||||
position: relative;
|
|
||||||
background-color: #282c34;
|
|
||||||
border-radius: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.custom-block.danger,
|
|
||||||
.custom-block.tip,
|
|
||||||
.custom-block.warning {
|
|
||||||
padding: 0.1rem 1.5rem;
|
|
||||||
border-left-width: 0.5rem;
|
|
||||||
border-left-style: solid;
|
|
||||||
margin: 1rem 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content .custom-block.tip {
|
|
||||||
background-color: #f3f5f7;
|
|
||||||
border-color: #42b983;
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content .custom-block.warning {
|
|
||||||
background-color: rgba(255, 229, 100, 0.3);
|
|
||||||
border-color: #e7c000;
|
|
||||||
color: #6b5900;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content .custom-block.warning .custom-block-title {
|
|
||||||
color: #b29400;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content .custom-block.danger {
|
|
||||||
background-color: #ffe6e6;
|
|
||||||
border-color: #c00;
|
|
||||||
color: #4d0000;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content .custom-block.danger .custom-block-title {
|
|
||||||
color: #900;
|
|
||||||
}
|
|
||||||
|
|
||||||
div[class*='language-'] .highlight-lines {
|
|
||||||
-webkit-user-select: none;
|
|
||||||
-moz-user-select: none;
|
|
||||||
-ms-user-select: none;
|
|
||||||
user-select: none;
|
|
||||||
padding-top: 1.3rem;
|
|
||||||
position: absolute;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
width: 100%;
|
|
||||||
line-height: 1.7;
|
|
||||||
}
|
|
||||||
|
|
||||||
div[class*='language-'] .highlight-lines .highlighted {
|
|
||||||
background-color: rgba(0, 0, 0, 0.66);
|
|
||||||
}
|
|
||||||
|
|
||||||
div[class*='language-'] pre,
|
|
||||||
div[class*='language-'] pre[class*='language-'] {
|
|
||||||
background: transparent;
|
|
||||||
position: relative;
|
|
||||||
z-index: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content pre,
|
|
||||||
.content pre[class*='language-'] {
|
|
||||||
line-height: 1.4;
|
|
||||||
padding: 1.25rem 1.5rem;
|
|
||||||
margin: 0.85rem 0;
|
|
||||||
background-color: #282c34;
|
|
||||||
border-radius: 6px;
|
|
||||||
overflow: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.content pre[class*='language-'] code,
|
|
||||||
.content pre code {
|
|
||||||
color: #fff;
|
|
||||||
padding: 0;
|
|
||||||
background-color: transparent;
|
|
||||||
border-radius: 0;
|
|
||||||
line-height: 1.42857143;
|
|
||||||
}
|
|
||||||
|
|
||||||
.token.atrule,
|
|
||||||
.token.builtin,
|
|
||||||
.token.important,
|
|
||||||
.token.keyword,
|
|
||||||
.token.selector {
|
|
||||||
color: #cc99cd;
|
|
||||||
}
|
|
||||||
|
|
||||||
.token.punctuation {
|
|
||||||
color: #ccc;
|
|
||||||
}
|
|
||||||
|
|
||||||
.token.boolean,
|
|
||||||
.token.function,
|
|
||||||
.token.number {
|
|
||||||
color: #f08d49;
|
|
||||||
}
|
|
||||||
|
|
||||||
.token.attr-value,
|
|
||||||
.token.char,
|
|
||||||
.token.regex,
|
|
||||||
.token.string,
|
|
||||||
.token.variable {
|
|
||||||
color: #7ec699;
|
|
||||||
}
|
|
||||||
|
|
||||||
.token.entity,
|
|
||||||
.token.operator,
|
|
||||||
.token.url {
|
|
||||||
color: #67cdcc;
|
|
||||||
}
|
|
||||||
|
|
||||||
.token.block-comment,
|
|
||||||
.token.cdata,
|
|
||||||
.token.comment,
|
|
||||||
.token.doctype,
|
|
||||||
.token.prolog {
|
|
||||||
color: #999;
|
|
||||||
}
|
|
||||||
|
|
||||||
.token.attr-name,
|
|
||||||
.token.deleted,
|
|
||||||
.token.namespace,
|
|
||||||
.token.tag {
|
|
||||||
color: #e2777a;
|
|
||||||
}
|
|
||||||
|
|
||||||
.token.function-name {
|
|
||||||
color: #6196cc;
|
|
||||||
}
|
|
||||||
|
|
||||||
.token.class-name,
|
|
||||||
.token.constant,
|
|
||||||
.token.property,
|
|
||||||
.token.symbol {
|
|
||||||
color: #f8c555;
|
|
||||||
}
|
|
||||||
|
|
||||||
.token.bold,
|
|
||||||
.token.important {
|
|
||||||
font-weight: 700;
|
|
||||||
}
|
|
||||||
|
|
||||||
.token.italic {
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
|
|
||||||
.token.entity {
|
|
||||||
cursor: help;
|
|
||||||
}
|
|
||||||
|
|
||||||
.token.inserted {
|
|
||||||
color: green;
|
|
||||||
}
|
|
|
@ -1,177 +0,0 @@
|
||||||
<template>
|
|
||||||
<div class="panel page-container">
|
|
||||||
<div class="top-nav">
|
|
||||||
<tiny-select class="theme-picker" v-model="currentTheme" placeholder="请选择主题">
|
|
||||||
<tiny-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> </tiny-option>
|
|
||||||
</tiny-select>
|
|
||||||
<div @click="switchMode" class="switch-mode">切换到 {{ isPc ? 'Mobile' : 'PC' }} 示例</div>
|
|
||||||
</div>
|
|
||||||
<div class="left">
|
|
||||||
<tiny-tree-menu
|
|
||||||
_mode="pc"
|
|
||||||
:data="MenuData.component"
|
|
||||||
node-key="path"
|
|
||||||
accordion
|
|
||||||
:show-filter="false"
|
|
||||||
@node-click="nodeClick"
|
|
||||||
:default-expanded-keys="[defaultexpandedkeys]"
|
|
||||||
:current-node-key="defaultexpandedkeys"
|
|
||||||
>
|
|
||||||
<template #default="{ data }">
|
|
||||||
<span>{{ data.name }}</span>
|
|
||||||
</template>
|
|
||||||
</tiny-tree-menu>
|
|
||||||
</div>
|
|
||||||
<div class="right">
|
|
||||||
<router-view class="content"></router-view>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
import { TreeMenu, Select, Option } from '@opentiny/vue'
|
|
||||||
import { CURRENT_THEME_KEY, THEME_MAP } from '../const'
|
|
||||||
import MenuDataMob from '@/nav.config.comp.mobile.json'
|
|
||||||
import MenuData from '@/nav.config.comp.json'
|
|
||||||
import '@/assets/markdown.css'
|
|
||||||
import '@/assets/tiny-mobile-demo.css'
|
|
||||||
|
|
||||||
export default {
|
|
||||||
components: {
|
|
||||||
TinyTreeMenu: TreeMenu,
|
|
||||||
TinySelect: Select,
|
|
||||||
TinyOption: Option
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
nodeClick(node) {
|
|
||||||
node.path && this.$route.path !== node.path && this.$router.push(node.path)
|
|
||||||
},
|
|
||||||
switchMode() {
|
|
||||||
localStorage.setItem('vue-example-mode', this.isPc ? 'mobile' : 'pc')
|
|
||||||
location.hash = '#/'
|
|
||||||
location.reload()
|
|
||||||
}
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
defaultexpandedkeys() {
|
|
||||||
return this.$route.path
|
|
||||||
},
|
|
||||||
isPc() {
|
|
||||||
return this.$root.tiny_mode.value !== 'mobile'
|
|
||||||
},
|
|
||||||
MenuData() {
|
|
||||||
return this.isPc ? MenuData : MenuDataMob
|
|
||||||
}
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
currentTheme: localStorage.getItem(CURRENT_THEME_KEY) || 'tiny-default-theme',
|
|
||||||
options: [
|
|
||||||
{
|
|
||||||
value: 'tiny-default-theme',
|
|
||||||
label: '默认'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'tiny-impression-theme',
|
|
||||||
label: '印象'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'tiny-infinity-theme',
|
|
||||||
label: '无限'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'tiny-deep-theme',
|
|
||||||
label: '深邃夜空'
|
|
||||||
},
|
|
||||||
{
|
|
||||||
value: 'tiny-galaxy-theme',
|
|
||||||
label: '追光'
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
},
|
|
||||||
watch: {
|
|
||||||
currentTheme(newVal) {
|
|
||||||
this.theme.changeTheme(THEME_MAP[newVal])
|
|
||||||
localStorage.setItem(CURRENT_THEME_KEY, this.theme.currentTheme.id)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style scoped>
|
|
||||||
.panel {
|
|
||||||
min-width: 800px;
|
|
||||||
width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.left {
|
|
||||||
width: 250px;
|
|
||||||
float: left;
|
|
||||||
text-align: left;
|
|
||||||
font-size: 14px;
|
|
||||||
white-space: nowrap;
|
|
||||||
overflow-x: hidden;
|
|
||||||
background: #fff;
|
|
||||||
}
|
|
||||||
|
|
||||||
.left > div {
|
|
||||||
width: 250px;
|
|
||||||
position: fixed;
|
|
||||||
font-size: 12px;
|
|
||||||
overflow-y: scroll;
|
|
||||||
height: 100vh;
|
|
||||||
}
|
|
||||||
|
|
||||||
.right {
|
|
||||||
float: right;
|
|
||||||
text-align: left;
|
|
||||||
margin: 20px auto;
|
|
||||||
width: calc(100% - 260px);
|
|
||||||
}
|
|
||||||
.content {
|
|
||||||
width: 900px;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
.top-nav {
|
|
||||||
display: flex;
|
|
||||||
justify-content: flex-end;
|
|
||||||
align-items: center;
|
|
||||||
height: 40px;
|
|
||||||
position: fixed;
|
|
||||||
top: 0;
|
|
||||||
right: 0;
|
|
||||||
padding-right: 20px;
|
|
||||||
width: 100%;
|
|
||||||
background-color: var(--ti-base-color-bg-1);
|
|
||||||
box-shadow: 0 4px 8px 0 rgba(37, 43, 58, 0.1);
|
|
||||||
z-index: 2001;
|
|
||||||
}
|
|
||||||
|
|
||||||
.theme-picker {
|
|
||||||
width: 100px;
|
|
||||||
margin-right: 12px;
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
.right section .demo-header > h2 {
|
|
||||||
font-weight: 400;
|
|
||||||
color: var(--ti-base-color-common-7);
|
|
||||||
}
|
|
||||||
|
|
||||||
.right section > h3 {
|
|
||||||
margin: 40px 0 20px 0;
|
|
||||||
padding-bottom: 0.3rem;
|
|
||||||
border-bottom: 1px solid var(--ti-base-color-border);
|
|
||||||
font-weight: 400;
|
|
||||||
color: var(--ti-base-color-common-7);
|
|
||||||
}
|
|
||||||
|
|
||||||
.switch-mode {
|
|
||||||
color: var(--ti-common-color-line-active);
|
|
||||||
cursor: pointer;
|
|
||||||
margin-left: 20px;
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -1,16 +0,0 @@
|
||||||
import { tinyImpressionTheme, tinyInfinityTheme, tinyDeepTheme, tinyGalaxyTheme } from '@opentiny/vue-theme/theme'
|
|
||||||
|
|
||||||
export const CURRENT_THEME_KEY = 'tiny-current-theme'
|
|
||||||
export const DEFAULT_THEME = 'tiny-default-theme'
|
|
||||||
export const IMPRESSION_THEME = 'tiny-impression-theme'
|
|
||||||
export const INFINITY_THEME = 'tiny-infinity-theme'
|
|
||||||
export const DEEP_THEME = 'tiny-deep-theme'
|
|
||||||
export const GALAXY_THEME = 'tiny-galaxy-theme'
|
|
||||||
|
|
||||||
export const THEME_MAP = {
|
|
||||||
[DEFAULT_THEME]: null,
|
|
||||||
[IMPRESSION_THEME]: tinyImpressionTheme,
|
|
||||||
[INFINITY_THEME]: tinyInfinityTheme,
|
|
||||||
[DEEP_THEME]: tinyDeepTheme,
|
|
||||||
[GALAXY_THEME]: tinyGalaxyTheme
|
|
||||||
}
|
|