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
|
||||
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
|
||||
node_modules
|
||||
dist/
|
||||
dist2/
|
||||
dist2.7/
|
||||
dist3/
|
||||
allDist/
|
||||
packages/**/runtime/
|
||||
packages/**/runtime
|
||||
coverage/
|
||||
|
||||
/packages/base.js
|
||||
/packages/chart.js
|
||||
/packages/core.js
|
||||
/packages/index.js
|
||||
/packages/pc.js
|
||||
/packages/mobile.js
|
||||
/packages/vue-icon-saas/src
|
||||
/packages/vue-icon-saas/index.ts
|
||||
/packages/vue/index.ts
|
||||
/packages/vue/pc.ts
|
||||
/packages/vue/mobile.ts
|
||||
/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
|
||||
.env.local
|
||||
|
@ -20,12 +31,11 @@ coverage/
|
|||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-lock.yaml
|
||||
|
||||
# Editor directories and files
|
||||
.idea
|
||||
.history
|
||||
.vscode
|
||||
.cloudbuild
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
|
@ -34,8 +44,7 @@ yarn-error.log*
|
|||
*.log
|
||||
*.stackdump
|
||||
|
||||
yarn.lock
|
||||
package-lock.json
|
||||
|
||||
tgzs
|
||||
*.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/
|
||||
public/
|
||||
dist
|
||||
dist-vue2
|
||||
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
|
||||
printWidth: 160
|
||||
trailingComma: none
|
||||
{
|
||||
"semi": false,
|
||||
"singleQuote": true,
|
||||
"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 组件:解决点击已选中选项无法关闭选择器的问题
|
|
@ -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
|
||||
}
|
|
@ -1,90 +0,0 @@
|
|||
<template>
|
||||
<div class="tiny-mobile-action-sheet-demo action-sheet-wrap">
|
||||
<div class="page__hd">
|
||||
<h1 class="page__title">上滑列表</h1>
|
||||
<p class="page__desc">弹出式菜单</p>
|
||||
</div>
|
||||
<tiny-button _mode="mobile" @click="fn" type="primary" size="large">上滑列表</tiny-button>
|
||||
<tiny-action-sheet
|
||||
_mode="mobile"
|
||||
v-model="activeName"
|
||||
:menus="menus"
|
||||
:visible="boxVisibility"
|
||||
@update:visible="boxVisibility = $event"
|
||||
content-position
|
||||
></tiny-action-sheet>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ActionSheet, Button } from '@opentiny/vue'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
TinyActionSheet: ActionSheet,
|
||||
TinyButton: Button
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: 1,
|
||||
boxVisibility: false,
|
||||
menus: [
|
||||
{
|
||||
id: 1,
|
||||
label: '我是小花,我是小花,我是小花,我是小花,我是小花,我是小花,我是小花'
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
label: '我是小树'
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
label: '我是小草'
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
label: '我是小叶',
|
||||
warn: true
|
||||
},
|
||||
{
|
||||
id: 5,
|
||||
label: '我是小茎'
|
||||
},
|
||||
{
|
||||
id: 6,
|
||||
label: '我是小根'
|
||||
},
|
||||
{
|
||||
id: 7,
|
||||
label: '我是小枝'
|
||||
},
|
||||
{
|
||||
id: 8,
|
||||
label: '我是小木'
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
fn() {
|
||||
this.boxVisibility = true
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
.page__hd {
|
||||
padding: 40px;
|
||||
}
|
||||
.page__title {
|
||||
font-weight: 400;
|
||||
font-size: 21px;
|
||||
text-align: left;
|
||||
}
|
||||
.page__desc {
|
||||
margin-top: 5px;
|
||||
color: #888;
|
||||
font-size: 14px;
|
||||
text-align: left;
|
||||
}
|
||||
</style>
|
|
@ -1,74 +0,0 @@
|
|||
<template>
|
||||
<div class="tiny-mobile-action-sheet-demo action-sheet-wrap">
|
||||
<div class="page__hd">
|
||||
<h1 class="page__title">上滑列表</h1>
|
||||
<p class="page__desc">弹出式菜单</p>
|
||||
</div>
|
||||
<tiny-button @click="fn" type="primary" size="large">上滑列表</tiny-button>
|
||||
<tiny-action-sheet v-model="activeName" ref="action" :menus="menus" :visible="boxVisibility" @update:visible="boxVisibility = $event">
|
||||
<template #action>
|
||||
<tiny-button @click="visibleHandle" type="primary" size="large">取消</tiny-button>
|
||||
</template>
|
||||
</tiny-action-sheet>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { ActionSheet, Button } from '@opentiny/vue'
|
||||
|
||||
export default {
|
||||
components: {
|
||||
TinyActionSheet: ActionSheet,
|
||||
TinyButton: Button
|
||||
},
|
||||
data() {
|
||||
return {
|
||||
activeName: 1,
|
||||
boxVisibility: false,
|
||||
menus: [
|
||||
{
|
||||
id: 1,
|
||||
label: '我是小花,我是小花,我是小花,我是小花,我是小花,我是小花,我是小花'
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
label: '我是小树'
|
||||
},
|
||||
{
|
||||
id: 3,
|
||||
label: '我是小草'
|
||||
},
|
||||
{
|
||||
id: 4,
|
||||
label: '我是小叶',
|
||||
warn: true
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
visibleHandle() {
|
||||
this.$refs.action.visibleHandle()
|
||||
},
|
||||
fn() {
|
||||
this.boxVisibility = true
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
<style>
|
||||
.page__hd {
|
||||
padding: 40px;
|
||||
}
|
||||
.page__title {
|
||||
font-weight: 400;
|
||||
font-size: 21px;
|
||||
text-align: left;
|
||||
}
|
||||
.page__desc {
|
||||
margin-top: 5px;
|
||||
color: #888;
|
||||
font-size: 14px;
|
||||
text-align: left;
|
||||
}
|
||||
</style>
|