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>
This commit is contained in:
Kagol 2023-03-28 20:37:18 +08:00 committed by GitHub
parent 4d34fe3788
commit df4a5d1296
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9201 changed files with 281891 additions and 161700 deletions

10
.depcheckrc.yaml Normal file
View File

@ -0,0 +1,10 @@
ignores:
# Unused dependencies
# Unused devDependencies
# Missing dependencies
ignore-patterns:
- "node_modules"

View File

@ -1,2 +1,6 @@
dist dist
runtime runtime
dist-vue2/
dist-vue3/
node_modules
examples/docs/public/assets/map/js

View File

@ -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"
}
}

42
.eslintrc.js Normal file
View File

@ -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',
},
}

6
.gitattributes vendored Normal file
View File

@ -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

33
.gitignore vendored
View File

@ -1,16 +1,27 @@
.DS_Store .DS_Store
node_modules node_modules
dist/ dist/
dist2/
dist2.7/
dist3/
allDist/ allDist/
packages/**/runtime/ packages/**/runtime
coverage/ coverage/
/packages/base.js /packages/vue-icon-saas/src
/packages/chart.js /packages/vue-icon-saas/index.ts
/packages/core.js /packages/vue/index.ts
/packages/index.js /packages/vue/pc.ts
/packages/pc.js /packages/vue/mobile.ts
/packages/mobile.js /packages/vue/app.ts
/packages/vue-icon/src/index.ts
/examples/**/playwright-report
/examples/docs/.vuepress/.cache/
/examples/docs/.vuepress/.temp/
/examples/docs/.vitepress/cache
vite.config.ts.timestamp*
vitest.config.ts.timestamp*
# local env # local env
.env.local .env.local
@ -20,12 +31,11 @@ coverage/
npm-debug.log* npm-debug.log*
yarn-debug.log* yarn-debug.log*
yarn-error.log* yarn-error.log*
pnpm-lock.yaml
# Editor directories and files # Editor directories and files
.idea .idea
.history .history
.vscode
.cloudbuild
*.suo *.suo
*.ntvs* *.ntvs*
*.njsproj *.njsproj
@ -34,8 +44,7 @@ yarn-error.log*
*.log *.log
*.stackdump *.stackdump
yarn.lock
package-lock.json
tgzs tgzs
*.tgz *.tgz

16
.hintrc Normal file
View File

@ -0,0 +1,16 @@
{
"extends": [
"development"
],
"hints": {
"compat-api/html": [
"default",
{
"ignore": [
"script[type=module]"
]
}
],
"axe/language": "off"
}
}

4
.npmrc Normal file
View File

@ -0,0 +1,4 @@
shell-emulator=true
auto-install-peers=true
strict-peer-dependencies=false
enable-pre-post-scripts=true

View File

@ -1,3 +1,8 @@
# Except myapp folder: dist
dist/ dist-vue2
public/ dist-vue3
node_modules
internal/template
internal/runtime
examples/docs/public/static
pnpm-lock.yaml

View File

@ -1,4 +1,22 @@
semi: false {
singleQuote: true "semi": false,
printWidth: 160 "singleQuote": true,
trailingComma: none "printWidth": 120,
"trailingComma": "none",
"quoteProps": "preserve",
"endOfLine": "auto",
"bracketSpacing": true,
"jsxBracketSameLine": true,
"jsxSingleQuote": false,
"useTabs": false,
"tabWidth": 2,
"proseWrap": "preserve",
"overrides": [
{
"files": ".prettierrc",
"options": {
"parser": "json"
}
}
]
}

14
.vscode/extensions.json vendored Normal file
View File

@ -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"
]
}

72
.vscode/settings.json vendored Normal file
View File

@ -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
}
]
}

View File

@ -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 组件:解决点击已选中选项无法关闭选择器的问题

View File

@ -19,4 +19,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE. SOFTWARE.

View File

@ -75,4 +75,4 @@ If you don't know how to start, please read our [contributing guide](CONTRIBUTIN
## License ## License
[MIT](LICENSE) [MIT](LICENSE)

View File

@ -1,6 +0,0 @@
{
"rules": {
"no-empty": "off",
"no-console": "off"
}
}

View File

@ -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)

View File

@ -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]`)

View File

@ -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.')
}

View File

@ -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)
}

View File

@ -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.')
}

View File

@ -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
}

View File

@ -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.')
}

View File

@ -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
}

View File

@ -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()

View File

@ -1,6 +0,0 @@
{
"rules": {
"no-console": "off",
"no-unused-vars": "off"
}
}

View File

@ -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.')
}

View File

@ -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

View File

@ -1 +0,0 @@
export * from '@opentiny/vue-icon'

View File

@ -1,5 +0,0 @@
export * from '@opentiny/vue'
import locale from '@opentiny/vue-locale'
// 这里需要在运行时导出国际化方法
export { locale }

View File

@ -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>

View File

@ -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"
]
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.6 KiB

View File

@ -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>

File diff suppressed because it is too large Load Diff

View File

@ -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"
}
]
}

View File

@ -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"
}
]
}
}

View File

@ -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"
}
]
}

View File

@ -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"
}
]
}

View File

@ -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"
}
]
}

View File

@ -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"
}
]

View File

@ -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
}
]

View File

@ -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
}
]

View File

@ -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"
}
]
}

View File

@ -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应用交付部"
}
]

View File

@ -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"
}
]
}
]

View File

@ -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"
}
]

View File

@ -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
}
]

View File

@ -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"
}
]

View File

@ -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"
}
]

View File

@ -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"
}
]
}

View File

@ -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"
}
]
}

View File

@ -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云"
}
]

View File

@ -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
}
]

View File

@ -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"
}
]

View File

@ -1,10 +0,0 @@
[
{
"id": "ee2dcdfb6dc94b33b997db2fff25a1bf",
"module": "hae.saas.i18n",
"code": "pmallmng.exception.code.",
"type": "1",
"value": "sdfeeee",
"language": "zhCN"
}
]

View File

@ -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": ""
}
]

View File

@ -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
}
]

Binary file not shown.

Before

Width:  |  Height:  |  Size: 488 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 716 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 635 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 702 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 564 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 391 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 424 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 515 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 60 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 430 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 350 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 529 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 550 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 795 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 137 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 496 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 112 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 311 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 67 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 690 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 8.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 231 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 22 KiB

View File

@ -1,8 +0,0 @@
<template>
<router-view />
</template>
<style>
body {
background-color: var(--ti-base-color-bg-1);
}
</style>

View File

@ -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>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.7 KiB

View File

@ -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;
}

View File

@ -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>

View File

@ -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
}

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