creat:新建仓库
3
.browserslistrc
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
> 1%
|
||||||
|
last 2 versions
|
||||||
|
not ie <= 9
|
||||||
62
.cz-config.js
Normal file
@ -0,0 +1,62 @@
|
|||||||
|
/*
|
||||||
|
* @Author: DevinShi
|
||||||
|
* @Date: 2020-02-03 09:01:16
|
||||||
|
* @LastEditors: DevinShi
|
||||||
|
* @LastEditTime: 2020-02-03 09:08:38
|
||||||
|
* @Description: file content description
|
||||||
|
*/
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
types: [
|
||||||
|
{ value: "feat", name: "功能: 一个新的功能" },
|
||||||
|
{ value: "fix", name: "修复: 修复一个Bug" },
|
||||||
|
{ value: "docs", name: "文档: 变更的只有文档" },
|
||||||
|
{ value: "style", name: "格式: 空格, 分号等格式修复" },
|
||||||
|
{ value: "refactor", name: "重构: 代码重构,注意和特性、修复区分开" },
|
||||||
|
{ value: "perf", name: "性能: 提升性能" },
|
||||||
|
{ value: "test", name: "测试: 添加一个测试" },
|
||||||
|
{ value: "chore", name: "工具: 开发工具变动(构建、脚手架工具等)" },
|
||||||
|
{ value: "revert", name: "回滚: 代码回退" }
|
||||||
|
],
|
||||||
|
|
||||||
|
// scopes: [
|
||||||
|
// {name: '模块1'},
|
||||||
|
// {name: '模块2'},
|
||||||
|
// {name: '模块3'},
|
||||||
|
// {name: '模块4'}
|
||||||
|
// ],
|
||||||
|
|
||||||
|
// it needs to match the value for field type. Eg.: 'fix'
|
||||||
|
scopeOverrides: {
|
||||||
|
fix: [
|
||||||
|
{ name: "功能" },
|
||||||
|
{ name: "样式" },
|
||||||
|
{ name: "e2e测试" },
|
||||||
|
{ name: "单元测试" }
|
||||||
|
],
|
||||||
|
chore: [{
|
||||||
|
name: '依赖修改',
|
||||||
|
}, {
|
||||||
|
name: '打包工具'
|
||||||
|
}]
|
||||||
|
},
|
||||||
|
// override the messages, defaults are as follows
|
||||||
|
messages: {
|
||||||
|
type: "选择一种你的提交类型:",
|
||||||
|
scope: "选择一个scope (可选):",
|
||||||
|
// used if allowCustomScopes is true
|
||||||
|
customScope: "自定义一个scope用于这次提交:",
|
||||||
|
subject: "短说明:\n",
|
||||||
|
body: '长说明,使用"|"换行(可选):\n',
|
||||||
|
breaking: "非兼容性说明 (可选):\n",
|
||||||
|
footer: "关联关闭的issue,例如:#31, #34(可选):\n",
|
||||||
|
confirmCommit: "确定提交说明?"
|
||||||
|
},
|
||||||
|
|
||||||
|
allowCustomScopes: true,
|
||||||
|
allowBreakingChanges: ["feat", "fix"],
|
||||||
|
|
||||||
|
// limit subject length
|
||||||
|
subjectLimit: 100
|
||||||
|
};
|
||||||
20
.editorconfig
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
root = true
|
||||||
|
|
||||||
|
[*]
|
||||||
|
charset=utf-8
|
||||||
|
end_of_line=lf
|
||||||
|
insert_final_newline=false
|
||||||
|
indent_style=space
|
||||||
|
indent_size=2
|
||||||
|
|
||||||
|
[{.eslintrc,.babelrc,.stylelintrc,*.json}]
|
||||||
|
indent_style=space
|
||||||
|
indent_size=2
|
||||||
|
|
||||||
|
[*.less]
|
||||||
|
indent_style=space
|
||||||
|
indent_size=2
|
||||||
|
|
||||||
|
[*.{js,jsx,ts,tsx,vue,html}]
|
||||||
|
indent_style=space
|
||||||
|
indent_size=2
|
||||||
3
.env
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
VUE_APP_BASE_DOMAIN=http://dcloud-demo.definesys.cn:31213
|
||||||
|
VUE_APP_TENANT_ID=254638499280453633
|
||||||
|
VUE_APP_PUBLIC_PATH=/app/
|
||||||
17
.eslintignore
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
|
||||||
|
*.sh
|
||||||
|
node_modules
|
||||||
|
lib
|
||||||
|
*.md
|
||||||
|
*.scss
|
||||||
|
*.woff
|
||||||
|
*.ttf
|
||||||
|
.vscode
|
||||||
|
.idea
|
||||||
|
/build/
|
||||||
|
/dist/
|
||||||
|
/public/
|
||||||
|
/script/
|
||||||
|
/config/
|
||||||
|
/docs
|
||||||
|
.vscode
|
||||||
31
.eslintrc.js
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
module.exports = {
|
||||||
|
root: true,
|
||||||
|
env: {
|
||||||
|
node: true
|
||||||
|
},
|
||||||
|
extends: ['plugin:vue/recommended', '@vue/standard'],
|
||||||
|
rules: {
|
||||||
|
// 'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',
|
||||||
|
// 'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off',
|
||||||
|
'space-before-function-paren': 'off',
|
||||||
|
// 禁止在计算属性中对属性修改
|
||||||
|
'vue/no-side-effects-in-computed-properties': 'off',
|
||||||
|
// 属性空格
|
||||||
|
'vue/attribute-hyphenation': 'off',
|
||||||
|
'vue/html-closing-bracket-newline': 'off',
|
||||||
|
'vue/html-self-closing': 'off',
|
||||||
|
'vue/require-default-prop': 'off',
|
||||||
|
'vue/max-attributes-per-line': 'off'
|
||||||
|
},
|
||||||
|
parserOptions: {
|
||||||
|
parser: 'babel-eslint'
|
||||||
|
},
|
||||||
|
overrides: [
|
||||||
|
{
|
||||||
|
files: ['**/__tests__/*.{j,t}s?(x)'],
|
||||||
|
env: {
|
||||||
|
jest: true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
26
.gitignore
vendored
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
.DS_Store
|
||||||
|
node_modules
|
||||||
|
/dist
|
||||||
|
|
||||||
|
/tests/e2e/reports/
|
||||||
|
selenium-debug.log
|
||||||
|
chromedriver.log
|
||||||
|
geckodriver.log
|
||||||
|
|
||||||
|
# local env files
|
||||||
|
.env.local
|
||||||
|
.env.*.local
|
||||||
|
|
||||||
|
# Log files
|
||||||
|
npm-debug.log*
|
||||||
|
yarn-debug.log*
|
||||||
|
yarn-error.log*
|
||||||
|
|
||||||
|
# Editor directories and files
|
||||||
|
.idea
|
||||||
|
.vscode
|
||||||
|
*.suo
|
||||||
|
*.ntvs*
|
||||||
|
*.njsproj
|
||||||
|
*.sln
|
||||||
|
*.sw?
|
||||||
1
.npmrc
Normal file
@ -0,0 +1 @@
|
|||||||
|
sass_binary_site=https://registry.npmmirror.com/-/binary/node-sass
|
||||||
10
.stylelintignore
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
*.js
|
||||||
|
*.png
|
||||||
|
*.eot
|
||||||
|
*.ttf
|
||||||
|
*.woff
|
||||||
|
|
||||||
|
/dist/
|
||||||
|
/lib/
|
||||||
|
/public/
|
||||||
|
.output.js
|
||||||
BIN
apaas-custom-mydemo.zip
Normal file
135830
apaas-custom-mydemo/apaas-custom-mydemo.common.js
Normal file
1
apaas-custom-mydemo/apaas-custom-mydemo.css
Normal file
135840
apaas-custom-mydemo/apaas-custom-mydemo.umd.js
Normal file
19
apaas-custom-mydemo/apaas-custom-mydemo.umd.min.js
vendored
Normal file
139
apaas-custom-mydemo/apaas.json
Normal file
@ -0,0 +1,139 @@
|
|||||||
|
{
|
||||||
|
"entry": "index.js",
|
||||||
|
"copyAssets": ["public/custom/apaas-custom-mydemo"],
|
||||||
|
"router": {
|
||||||
|
"apaas-custom-modalContorl":{
|
||||||
|
"name": "apaas-custom-modalContorl",
|
||||||
|
"path": "apaas-custom-modalContorl",
|
||||||
|
"meta": {
|
||||||
|
"title": "模板管理"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"apaas-custom-selfEnginedata":{
|
||||||
|
"name": "apaas-custom-selfEnginedata",
|
||||||
|
"path": "apaas-custom-selfEnginedata",
|
||||||
|
"meta": {
|
||||||
|
"title": "玉柴发动机数据"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"apaas-custom-otherEnginedata":{
|
||||||
|
"name": "apaas-custom-otherEnginedata",
|
||||||
|
"path": "apaas-custom-otherEnginedata",
|
||||||
|
"meta": {
|
||||||
|
"title": "竞品发动机数据"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"apaas-custom-checkData":{
|
||||||
|
"name": "apaas-custom-checkData",
|
||||||
|
"path": "apaas-custom-checkData",
|
||||||
|
"meta": {
|
||||||
|
"title": "数据检查"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"apaas-custom-report":{
|
||||||
|
"name": "apaas-custom-report",
|
||||||
|
"path": "apaas-custom-report",
|
||||||
|
"meta": {
|
||||||
|
"title": "对标报告"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"apaas-custom-reportDetail":{
|
||||||
|
"name": "apaas-custom-reportDetail",
|
||||||
|
"path": "apaas-custom-reportDetail",
|
||||||
|
"meta": {
|
||||||
|
"title": "报告详情"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"apaas-custom-reportCheck":{
|
||||||
|
"name": "apaas-custom-reportCheck",
|
||||||
|
"path": "apaas-custom-reportCheck",
|
||||||
|
"meta": {
|
||||||
|
"title": "报告检查"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"apaas-custom-modelDetail":{
|
||||||
|
"name": "apaas-custom-modelDetail",
|
||||||
|
"path": "apaas-custom-modelDetail",
|
||||||
|
"meta": {
|
||||||
|
"title": "系统参数管理"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"apaas-custom-engineDetail":{
|
||||||
|
"name": "apaas-custom-engineDetail",
|
||||||
|
"path": "apaas-custom-engineDetail",
|
||||||
|
"meta": {
|
||||||
|
"title": "发动机参数详情"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"apaas-custom-approvalManagement":{
|
||||||
|
"name": "apaas-custom-approvalManagement",
|
||||||
|
"path": "apaas-custom-approvalManagement",
|
||||||
|
"meta": {
|
||||||
|
"title": "模板审批管理"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"apaas-custom-toDoList":{
|
||||||
|
"name": "apaas-custom-toDoList",
|
||||||
|
"path": "apaas-custom-toDoList",
|
||||||
|
"meta": {
|
||||||
|
"title": "数据待办"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"apaas-custom-myDone":{
|
||||||
|
"name": "apaas-custom-myDone",
|
||||||
|
"path": "apaas-custom-myDone",
|
||||||
|
"meta": {
|
||||||
|
"title": "我的已办"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"apaas-custom-mySend":{
|
||||||
|
"name": "apaas-custom-mySend",
|
||||||
|
"path": "apaas-custom-mySend",
|
||||||
|
"meta": {
|
||||||
|
"title": "我发起的"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"apaas-custom-selfEngineCheck":{
|
||||||
|
"name": "apaas-custom-selfEngineCheck",
|
||||||
|
"path": "apaas-custom-selfEngineCheck",
|
||||||
|
"meta": {
|
||||||
|
"title": "玉柴发动机审核"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"apaas-custom-otherEngineCheck":{
|
||||||
|
"name": "apaas-custom-otherEngineCheck",
|
||||||
|
"path": "apaas-custom-otherEngineCheck",
|
||||||
|
"meta": {
|
||||||
|
"title": "竞品发动机审核"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"apaas-custom-managerData":{
|
||||||
|
"name": "apaas-custom-managerData",
|
||||||
|
"path": "apaas-custom-managerData",
|
||||||
|
"meta": {
|
||||||
|
"title": "责任人管理"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"apaas-custom-fillerData":{
|
||||||
|
"name": "apaas-custom-fillerData",
|
||||||
|
"path": "apaas-custom-fillerData",
|
||||||
|
"meta": {
|
||||||
|
"title": "填写人管理"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"apaas-custom-permissionManagement":{
|
||||||
|
"name": "apaas-custom-permissionManagement",
|
||||||
|
"path": "apaas-custom-permissionManagement",
|
||||||
|
"meta": {
|
||||||
|
"title": "权限管理"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"customWidgetList": [
|
||||||
|
{
|
||||||
|
"code": "mydemo",
|
||||||
|
"text": "mydemo"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"outputName": "apaas-custom-mydemo"
|
||||||
|
}
|
||||||
10
apaas-custom-mydemo/demo.html
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<meta charset="utf-8">
|
||||||
|
<title>apaas-custom-mydemo demo</title>
|
||||||
|
<script src="./apaas-custom-mydemo.umd.js"></script>
|
||||||
|
|
||||||
|
<link rel="stylesheet" href="./apaas-custom-mydemo.css">
|
||||||
|
|
||||||
|
|
||||||
|
<script>
|
||||||
|
console.log(apaas-custom-mydemo)
|
||||||
|
</script>
|
||||||
BIN
apaas-custom-mydemo/static/custom/apaas-custom-mydemo/1.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
55
babel.config.js
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
/**
|
||||||
|
* Element UI 懒加载插件,由于我们需要使用懒加载scss动态编译主题,所以不使用
|
||||||
|
*/
|
||||||
|
// eslint-disable-next-line no-unused-vars
|
||||||
|
const elementUIComponentPlugin = [
|
||||||
|
'component',
|
||||||
|
{
|
||||||
|
libraryName: 'element-ui',
|
||||||
|
styleLibraryName: '../packages/theme-chalk/src',
|
||||||
|
ext: '.scss'
|
||||||
|
},
|
||||||
|
'element-ui'
|
||||||
|
]
|
||||||
|
|
||||||
|
const XLibComponentPlugin = [
|
||||||
|
'component',
|
||||||
|
{
|
||||||
|
libraryName: '@x-ui/x-dcloud-ui',
|
||||||
|
styleLibrary: {
|
||||||
|
base: false,
|
||||||
|
name: 'theme-chalk/theme'
|
||||||
|
},
|
||||||
|
ext: '.scss'
|
||||||
|
},
|
||||||
|
'@x-ui/x-dcloud-ui'
|
||||||
|
]
|
||||||
|
|
||||||
|
const XDcloudPageWebPlugin = [
|
||||||
|
'component',
|
||||||
|
{
|
||||||
|
libraryName: '@x-apaas/x-dcloud-page-web',
|
||||||
|
styleLibrary: {
|
||||||
|
base: false,
|
||||||
|
name: 'theme-chalk/theme'
|
||||||
|
},
|
||||||
|
ext: '.scss'
|
||||||
|
},
|
||||||
|
'@x-apaas/x-dcloud-page-web'
|
||||||
|
]
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
presets: [
|
||||||
|
[
|
||||||
|
'@vue/cli-plugin-babel/preset',
|
||||||
|
{
|
||||||
|
useBuiltIns: 'entry'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
],
|
||||||
|
plugins: [
|
||||||
|
elementUIComponentPlugin,
|
||||||
|
XLibComponentPlugin,
|
||||||
|
XDcloudPageWebPlugin
|
||||||
|
]
|
||||||
|
}
|
||||||
125
build/build-all.js
Normal file
@ -0,0 +1,125 @@
|
|||||||
|
const shell = require('shelljs')
|
||||||
|
const path = require('path')
|
||||||
|
const fs = require('fs')
|
||||||
|
const rimraf = require('rimraf')
|
||||||
|
|
||||||
|
const customs = fs.readdirSync(path.resolve(process.cwd(), 'src/custom'))
|
||||||
|
const all = customs.reduce((result, dir) => {
|
||||||
|
// ignore directories whose name starts without `apaas-custom-plugin-`
|
||||||
|
if (dir.indexOf('apaas-custom-plugin-')) return result
|
||||||
|
try {
|
||||||
|
const apaasJson = JSON.parse(fs.readFileSync(path.resolve(process.cwd(), 'src', 'custom', dir, 'apaas.json')))
|
||||||
|
// match every plugins except those whose local.notAll is true
|
||||||
|
if (apaasJson && (!apaasJson.local || !apaasJson.local.notAll)) result.push(dir.slice(20))
|
||||||
|
} catch (e) {
|
||||||
|
} finally {
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
}, [])
|
||||||
|
|
||||||
|
const help = `
|
||||||
|
插件打包入口
|
||||||
|
|
||||||
|
格式:
|
||||||
|
1. node thisJs xx <params> <value> 用指定的参数和值打包xx插件
|
||||||
|
2. node thisJs xx 打包xx插件
|
||||||
|
3. node thisJs <params> <value> 用指定的参数和值打包xx插件,notes: 必须要包含 -i 或者 -a 参数
|
||||||
|
|
||||||
|
参数:
|
||||||
|
-i <plugin_name> 指定插件名,优先级高于格式1和格式2指定的插件名
|
||||||
|
-b 采用批量打包模式,批量打包默认的插件为上文中的 all 变量值指定的插件集合,此参数将忽略 -i 指定的具体插件名
|
||||||
|
批量打包默认的插件: ${all.join(',')}
|
||||||
|
-c 加密命名,插件打包后的文件夹或压缩文件使用 md5 加密插件 code 后的字符串命名
|
||||||
|
-Z 取消压缩。默认会给每一个插件打包,使用此命令则取消打包这一步
|
||||||
|
-A <plugins_str> 声明参与批量打包的所有插件,用英文逗号分隔多个插件,如 oo,aa 表示打包oo和aa这两个插件,需要 -b 参数才会实际生效
|
||||||
|
-a 使用异步打包模式
|
||||||
|
-h, --help 查看打包命令帮助
|
||||||
|
--clean, --rm 清除所有打包产生的文件
|
||||||
|
|
||||||
|
支持缩略形式的参数,如 -cZ 相当于 -c -Z,其后需要跟变量的参数,写在省略形式前的会读取其后的变量值并生效
|
||||||
|
如 -iA oo 表示指定打包oo插件;-Ai oo,aa表示指定需要批量打包的插件为 oo 和 aa
|
||||||
|
`
|
||||||
|
|
||||||
|
let crypto = 'noc'
|
||||||
|
let noZip = 'noz'
|
||||||
|
let batchMode = false
|
||||||
|
let plugin = ''
|
||||||
|
let async = false
|
||||||
|
|
||||||
|
const pickValue = function(a, i) {
|
||||||
|
return a && a[i] && !a[i].startsWith('-') && a[i]
|
||||||
|
}
|
||||||
|
|
||||||
|
const parseArgv = function(argv) {
|
||||||
|
const localArgv = [...argv]
|
||||||
|
for (let i = 0; i < localArgv.length; i++) {
|
||||||
|
if (localArgv[i].startsWith('--')) {
|
||||||
|
switch (localArgv[i]) {
|
||||||
|
case '--clean':
|
||||||
|
case '--rm':
|
||||||
|
rimraf(path.resolve(process.cwd(), 'crypto'))
|
||||||
|
rimraf(path.resolve(process.cwd(), 'PLUGIN_*'))
|
||||||
|
rimraf(path.resolve(process.cwd(), 'PLUGIN_*.zip'))
|
||||||
|
process.exit(0)
|
||||||
|
case '--help':
|
||||||
|
console.log(help)
|
||||||
|
process.exit(0)
|
||||||
|
default:
|
||||||
|
break
|
||||||
|
}
|
||||||
|
} else if (localArgv[i].startsWith('-')) {
|
||||||
|
const flag = localArgv[i].slice(0)
|
||||||
|
const flags = (flag && flag.split('')) || []
|
||||||
|
flags.forEach((f) => {
|
||||||
|
let a
|
||||||
|
switch (f) {
|
||||||
|
case 'c':
|
||||||
|
crypto = '-c'
|
||||||
|
break
|
||||||
|
case 'b':
|
||||||
|
batchMode = true
|
||||||
|
break
|
||||||
|
case 'a':
|
||||||
|
async = true
|
||||||
|
break
|
||||||
|
case 'A':
|
||||||
|
;(a = pickValue(localArgv, i + 1)) && a && ((all = a.split(',')), i++)
|
||||||
|
break
|
||||||
|
case 'Z':
|
||||||
|
noZip = '-Z'
|
||||||
|
break
|
||||||
|
case 'i':
|
||||||
|
;(a = pickValue(localArgv, i + 1)) && a && ((plugin = a), i++)
|
||||||
|
break
|
||||||
|
case 'h':
|
||||||
|
console.log(help)
|
||||||
|
process.exit(0)
|
||||||
|
default:
|
||||||
|
break
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!batchMode && !plugin) {
|
||||||
|
val = process.argv.slice(2, 3)[0]
|
||||||
|
val && !val.startsWith('-') && (plugin = val)
|
||||||
|
if (!plugin) {
|
||||||
|
console.error('未指定插件名')
|
||||||
|
process.exit(0)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
parseArgv(process.argv.slice(2))
|
||||||
|
|
||||||
|
const scriptPath = path.resolve(process.cwd(), 'build/build-plugins.js')
|
||||||
|
|
||||||
|
const doBuild = (item) => {
|
||||||
|
shell.exec(`node ${scriptPath} ${item} ${crypto} ${noZip}`, { async: async })
|
||||||
|
}
|
||||||
|
|
||||||
|
if (batchMode) {
|
||||||
|
all.forEach(doBuild)
|
||||||
|
} else {
|
||||||
|
doBuild(plugin)
|
||||||
|
}
|
||||||
1
build/build-en-define.json
Normal file
@ -0,0 +1 @@
|
|||||||
|
["admin", "app", "mobile", "workbench", "workbenchm"]
|
||||||
181
build/build-plugins.js
Normal file
@ -0,0 +1,181 @@
|
|||||||
|
const shell = require('shelljs')
|
||||||
|
const fs = require('fs')
|
||||||
|
const path = require('path')
|
||||||
|
const zipper = require('zip-local')
|
||||||
|
const colors = require('colors')
|
||||||
|
const envDefine = require('./build-en-define.json')
|
||||||
|
const md5 = require('md5')
|
||||||
|
|
||||||
|
const lib = async (cmd, program) => {
|
||||||
|
const customModule = cmd.custom
|
||||||
|
const crypto = cmd.crypto === '-c'
|
||||||
|
const noZip = cmd.noZip === '-Z'
|
||||||
|
// 获取指定 custom 目录下的apaas.json
|
||||||
|
const customModulePath = path.resolve(process.cwd(), 'src/custom', customModule)
|
||||||
|
|
||||||
|
const customModuleConfigPath = path.resolve(customModulePath, 'apaas.json')
|
||||||
|
if (!fs.existsSync(customModuleConfigPath)) {
|
||||||
|
console.log(`Error: 自开发模块 ${customModule} 下不存在需要的 apaas.json 文件`['red'])
|
||||||
|
console.log(`exit`['red'])
|
||||||
|
process.exit(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
const apaasConfig = JSON.parse(fs.readFileSync(customModuleConfigPath))
|
||||||
|
|
||||||
|
const buildArray = envDefine
|
||||||
|
.map((_) => {
|
||||||
|
if (!apaasConfig[_]) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const newConfig = { ...apaasConfig }
|
||||||
|
delete newConfig[_]
|
||||||
|
newConfig.outputName = md5(apaasConfig.code)
|
||||||
|
return {
|
||||||
|
// 排第一,且不会被覆盖
|
||||||
|
entry: apaasConfig[_],
|
||||||
|
...newConfig,
|
||||||
|
entry: apaasConfig[_],
|
||||||
|
type: _
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.filter((item) => item)
|
||||||
|
|
||||||
|
const result = buildArray.map((config) => doLib(config, customModulePath, crypto))
|
||||||
|
if (result === [-1, -1]) {
|
||||||
|
process.exit(0)
|
||||||
|
}
|
||||||
|
const cryptoPath = crypto ? 'crypto/' + md5(apaasConfig.code) : apaasConfig.code
|
||||||
|
writeApaasJson(cryptoPath, apaasConfig)
|
||||||
|
if (!noZip) {
|
||||||
|
zip(cryptoPath, cryptoPath)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @params apaasModuleConfig 源配置信息
|
||||||
|
* @params customModulePath 打包入口
|
||||||
|
*/
|
||||||
|
const doLib = (apaasModuleConfig, customModulePath, crypto) => {
|
||||||
|
const customModuleEntryPath = path.resolve(customModulePath, apaasModuleConfig.entry)
|
||||||
|
|
||||||
|
const moduleType = apaasModuleConfig.type
|
||||||
|
|
||||||
|
const outputName = (crypto ? 'crypto/' + md5(apaasModuleConfig.code) : apaasModuleConfig.code) + '/' + moduleType
|
||||||
|
|
||||||
|
if (!fs.existsSync(customModuleEntryPath)) {
|
||||||
|
console.log(`Error: apaas.json 指定的entry: ${apaasModuleConfig.entry} 的路径错误 `['red'])
|
||||||
|
console.log(`error path is ${customModuleEntryPath}`['red'])
|
||||||
|
return -1
|
||||||
|
}
|
||||||
|
|
||||||
|
const customCliPath = path.resolve(
|
||||||
|
process.cwd(),
|
||||||
|
'./node_modules/@vue/cli-service/bin/vue-cli-service.js'
|
||||||
|
)
|
||||||
|
|
||||||
|
// 使用vue build 打包,并生成文件
|
||||||
|
shell.exec(
|
||||||
|
`node ${customCliPath} build --target lib --name ${apaasModuleConfig.outputName} --dest ${outputName} ${customModuleEntryPath}`
|
||||||
|
)
|
||||||
|
|
||||||
|
const suffix = ['umd.js', 'umd.min.js', 'common.js', 'css']
|
||||||
|
suffix.forEach((item => {
|
||||||
|
shell.mv(path.resolve(process.cwd(), `${outputName}/${apaasModuleConfig.outputName}.${item}`), path.resolve(process.cwd(), `${outputName}/index.${item}`))
|
||||||
|
}))
|
||||||
|
// shell.cp('-R', customModuleConfigPath, `${outputPath}/`)
|
||||||
|
|
||||||
|
const newOutputConfig = { ...apaasModuleConfig }
|
||||||
|
|
||||||
|
envDefine.forEach((_) => {
|
||||||
|
delete newOutputConfig[_]
|
||||||
|
})
|
||||||
|
|
||||||
|
const outputPath = path.resolve(process.cwd(), outputName)
|
||||||
|
|
||||||
|
// 拷贝public文件到指定目录
|
||||||
|
apaasModuleConfig.copyAssets.forEach((copyAsset) => {
|
||||||
|
copyAssetSource = copyAsset + copyAsset.endsWith('/') ? moduleType : '/' + moduleType
|
||||||
|
const assetPath = path.resolve(process.cwd(), copyAssetSource)
|
||||||
|
if (fs.existsSync(assetPath)) {
|
||||||
|
const outputAsset = path.resolve(outputPath, copyAsset.replace('public/', 'static/'))
|
||||||
|
shell.mkdir('-p', outputAsset)
|
||||||
|
shell.cp('-R', `${assetPath}/*`, `${outputAsset}/`)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @params outputPath 目标文件夹命
|
||||||
|
* @params originJson 源配置信息
|
||||||
|
*/
|
||||||
|
const writeApaasJson = function (outputPath, originJson) {
|
||||||
|
const newOutputConfig = { ...originJson }
|
||||||
|
delete newOutputConfig.type
|
||||||
|
delete newOutputConfig.outputName
|
||||||
|
delete newOutputConfig.local
|
||||||
|
newOutputConfig.extraConfig = { ...newOutputConfig.extraConfig }
|
||||||
|
envDefine.forEach(item => {
|
||||||
|
if (newOutputConfig[item]) {
|
||||||
|
newOutputConfig.extraConfig[item] = true
|
||||||
|
delete newOutputConfig[item]
|
||||||
|
newOutputConfig.extraConfig[item + 'Css'] = fs.existsSync(path.resolve(process.cwd(), outputPath, item, 'index.css'))
|
||||||
|
}
|
||||||
|
})
|
||||||
|
fs.writeFile(`${outputPath}/apaas.json`, JSON.stringify(newOutputConfig, null, ' '), function (
|
||||||
|
error
|
||||||
|
) {
|
||||||
|
if (error) {
|
||||||
|
console.log(`配置信息写入失败\n${error}`['red'])
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @params originPath 源文件夹名
|
||||||
|
* @params outputName 目标文件名
|
||||||
|
*/
|
||||||
|
const zip = function (originName, outputName) {
|
||||||
|
const originPath = path.resolve(process.cwd(), originName)
|
||||||
|
const outputZipPath = path.resolve(process.cwd(), `${outputName}.zip`)
|
||||||
|
if (fs.existsSync(outputZipPath)) {
|
||||||
|
shell.rm(outputZipPath)
|
||||||
|
}
|
||||||
|
// 生成zip并压缩
|
||||||
|
zipper.zip(originPath, function (error, zipped) {
|
||||||
|
if (!error) {
|
||||||
|
zipped.compress() // compress before exporting
|
||||||
|
|
||||||
|
var buff = zipped.memory() // get the zipped file as a Buffer
|
||||||
|
|
||||||
|
zipped.save(outputZipPath, function (error) {
|
||||||
|
if (!error) {
|
||||||
|
console.log(`zipped successfully !`['green'])
|
||||||
|
|
||||||
|
// 删除指定生成目录
|
||||||
|
// shell.rm('-r',originPath)
|
||||||
|
} else {
|
||||||
|
console.log(`write error: ${error}`['red'])
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
console.log(`read error: ${error}`['red'])
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
const argv = process.argv.splice(2, 1)[0]
|
||||||
|
if (!argv) {
|
||||||
|
console.log(`未指定插件名`['red'])
|
||||||
|
process.exit(0)
|
||||||
|
}
|
||||||
|
const crypto = process.argv.splice(2, 1)[0]
|
||||||
|
const noZip = process.argv.splice(2, 1)[0]
|
||||||
|
|
||||||
|
module.exports = lib(
|
||||||
|
{
|
||||||
|
custom: `apaas-custom-plugin-${argv}`,
|
||||||
|
crypto,
|
||||||
|
noZip,
|
||||||
|
},
|
||||||
|
{}
|
||||||
|
)
|
||||||
73
build/build.js
Normal file
@ -0,0 +1,73 @@
|
|||||||
|
const shell = require('shelljs');
|
||||||
|
const fs = require('fs')
|
||||||
|
const path = require('path')
|
||||||
|
const zipper = require("zip-local");
|
||||||
|
const colors = require('colors');
|
||||||
|
|
||||||
|
const lib = async (cmd, program) => {
|
||||||
|
const customModule = cmd.custom
|
||||||
|
// 获取指定 custom 目录下的apaas.json
|
||||||
|
const customModulePath = path.resolve(`${process.cwd()}`, 'src/custom', customModule)
|
||||||
|
|
||||||
|
const customModuleConfigPath = path.resolve(customModulePath, 'apaas.json')
|
||||||
|
if (!fs.existsSync(customModuleConfigPath)) {
|
||||||
|
console.log(`Error: 自开发模块 ${customModule} 下不存在需要的 apass.json 文件`['red'])
|
||||||
|
console.log(`exit`['red'])
|
||||||
|
process.exit(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
const apaasConfig = JSON.parse(fs.readFileSync(customModuleConfigPath))
|
||||||
|
const customModuleEntryPath = path.resolve(customModulePath, apaasConfig.entry)
|
||||||
|
|
||||||
|
if (!fs.existsSync(customModuleEntryPath)) {
|
||||||
|
console.log(`Error: apaas.json 指定的entry: ${apaasConfig.entry} 的路径错误 `['red'])
|
||||||
|
console.log(`error path is ${customModuleEntryPath}`['red'])
|
||||||
|
console.log(`exit`['red'])
|
||||||
|
process.exit(0)
|
||||||
|
}
|
||||||
|
|
||||||
|
const customCliPath = path.resolve(`${process.cwd()}`, './node_modules/.bin/vue-cli-service')
|
||||||
|
|
||||||
|
const outputPath = path.resolve(`${process.cwd()}`, `${apaasConfig.outputName}`)
|
||||||
|
const outputZipPath = path.resolve(`${process.cwd()}`, `${apaasConfig.outputName}.zip`)
|
||||||
|
|
||||||
|
|
||||||
|
// 使用vue build 打包,并生成文件
|
||||||
|
shell.exec(`node ${customCliPath} build --target lib --name ${apaasConfig.outputName} --dest ${apaasConfig.outputName} ${customModuleEntryPath}`)
|
||||||
|
shell.cp('-R', customModuleConfigPath, `${outputPath}/`)
|
||||||
|
|
||||||
|
// 拷贝public文件到指定目录
|
||||||
|
apaasConfig.copyAssets.forEach(copyAsset => {
|
||||||
|
const assetPath = path.resolve(`${process.cwd()}`, copyAsset)
|
||||||
|
|
||||||
|
const outputAsset = path.resolve(outputPath, copyAsset.replace('public/', 'static/'))
|
||||||
|
shell.mkdir('-p', outputAsset)
|
||||||
|
shell.cp('-R', `${assetPath}/*`, `${outputAsset}/`)
|
||||||
|
});
|
||||||
|
|
||||||
|
if (fs.existsSync(outputZipPath)) {
|
||||||
|
shell.rm(outputZipPath)
|
||||||
|
}
|
||||||
|
// 生成zip并压缩
|
||||||
|
zipper.zip(outputPath, function(error, zipped) {
|
||||||
|
if(!error) {
|
||||||
|
zipped.compress(); // compress before exporting
|
||||||
|
|
||||||
|
var buff = zipped.memory(); // get the zipped file as a Buffer
|
||||||
|
|
||||||
|
zipped.save(`${outputZipPath}`, function(error) {
|
||||||
|
if(!error) {
|
||||||
|
console.log("saved successfully !");
|
||||||
|
|
||||||
|
// 删除指定生成目录
|
||||||
|
// shell.rm('-r',outputPath)
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
module.exports = lib({
|
||||||
|
custom: 'apaas-custom-{{moduleName}}'
|
||||||
|
}, {})
|
||||||
75
build/init.js
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
const program = require('commander');
|
||||||
|
const shelljs = require('shelljs');
|
||||||
|
const userHome = require('user-home');
|
||||||
|
const fs = require('fs')
|
||||||
|
const path = require('path')
|
||||||
|
const colors = require('colors');
|
||||||
|
|
||||||
|
const init = (cmd, program) => {
|
||||||
|
|
||||||
|
const moduleName = cmd.moduleName
|
||||||
|
|
||||||
|
const projectPath = path.resolve(`${process.cwd()}`, `apaas-custom-${moduleName}`)
|
||||||
|
const customPath = path.resolve(projectPath, 'src/custom');
|
||||||
|
const staticPath = path.resolve(projectPath, 'public/custom');
|
||||||
|
|
||||||
|
//检查控制台是否以运行`git `开头的命令
|
||||||
|
if (!shelljs.which('git')) {
|
||||||
|
//在控制台输出内容
|
||||||
|
console.log('error 本机上没有git,请检查git是否安装或相关环境变量是否正确'['red']);
|
||||||
|
shelljs.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
const version = 'v0.0.1'
|
||||||
|
|
||||||
|
const gitTemplateRepo = `${userHome}/.apaasCliRepo`
|
||||||
|
|
||||||
|
shelljs.rm('-rf', gitTemplateRepo)
|
||||||
|
|
||||||
|
shelljs.mkdir('-p', gitTemplateRepo)
|
||||||
|
|
||||||
|
|
||||||
|
shelljs.exec(`git clone --branch ${version} https://gitee.com/shiyutian/apaas-custom-vue-starter.git --depth=1 ${gitTemplateRepo}`);
|
||||||
|
|
||||||
|
shelljs.rm('-rf', path.resolve(`${gitTemplateRepo}`, '.git'))
|
||||||
|
|
||||||
|
if (fs.existsSync(projectPath)) {
|
||||||
|
// 当前路径已经在相关工程
|
||||||
|
console.log('error 当前路径已经存在工程,请检查相关目录设置'['red'])
|
||||||
|
shelljs.exit(1);
|
||||||
|
} else {
|
||||||
|
shelljs.mkdir('-p', `${process.cwd()}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
shelljs.cp('-R', `${gitTemplateRepo}/.`, projectPath)
|
||||||
|
|
||||||
|
const demoCustomModuleName = 'hello'
|
||||||
|
const demoCustomModulePath = path.resolve(customPath, `apaas-custom-${demoCustomModuleName}`)
|
||||||
|
|
||||||
|
const writeAndReplaceFileSync = (filePath) => {
|
||||||
|
const stat = fs.lstatSync(filePath)
|
||||||
|
if (stat.isDirectory()) {
|
||||||
|
const customModuleFileNames = fs.readdirSync(filePath)
|
||||||
|
customModuleFileNames.forEach(fileName => {
|
||||||
|
const tempFilePath = path.join(filePath, fileName)
|
||||||
|
writeAndReplaceFileSync(tempFilePath)
|
||||||
|
})
|
||||||
|
} else {
|
||||||
|
let fileContent = fs.readFileSync(filePath, 'utf-8')
|
||||||
|
fileContent = fileContent.replace(/{{moduleName}}/g, moduleName)
|
||||||
|
fileContent = fileContent.replace(/{{ModuleName}}/g, moduleName.charAt(0).toUpperCase() + moduleName.slice(1))
|
||||||
|
fs.writeFileSync(filePath, fileContent)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
writeAndReplaceFileSync(demoCustomModulePath)
|
||||||
|
|
||||||
|
fs.renameSync(demoCustomModulePath, path.resolve(customPath, `apaas-custom-${moduleName}`))
|
||||||
|
fs.renameSync(path.resolve(staticPath, `apaas-custom-${demoCustomModuleName}`), path.resolve(staticPath, `apaas-custom-${moduleName}`))
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
module.exports = init
|
||||||
|
|
||||||
|
init({ moduleName : 'nice' }, program)
|
||||||
3
commitlint.config.js
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
module.exports = {
|
||||||
|
extends: ['@commitlint/config-conventional']
|
||||||
|
}
|
||||||
9
jest.config.js
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
module.exports = {
|
||||||
|
preset: '@vue/cli-plugin-unit-jest',
|
||||||
|
moduleNameMapper: {
|
||||||
|
'^@/(.*)$': '<rootDir>/src/$1',
|
||||||
|
'^@examples/(.*)$': '<rootDir>/examples/$1',
|
||||||
|
'^@packages/(.*)$': '<rootDir>/packages/$1',
|
||||||
|
'\\.(css|less|sass)$': 'identity-obj-proxy'
|
||||||
|
}
|
||||||
|
}
|
||||||
88
package.json
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
{
|
||||||
|
"name": "x-project-app",
|
||||||
|
"version": "0.0.1",
|
||||||
|
"private": true,
|
||||||
|
"scripts": {
|
||||||
|
"serve": "vue-cli-service serve",
|
||||||
|
"inspect": "vue-cli-service inspect",
|
||||||
|
"build": "vue-cli-service build",
|
||||||
|
"test:unit": "vue-cli-service test:unit",
|
||||||
|
"test:e2e": "vue-cli-service test:e2e",
|
||||||
|
"lint": "vue-cli-service lint --fix",
|
||||||
|
"build-rule": "node ./build/build-plugins.js rule-functions -c",
|
||||||
|
"cm": "git-cz"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"@x-ui/x-dcloud-ui": "^0.2.1",
|
||||||
|
"@x-apaas/x-dcloud-page-web": "rc",
|
||||||
|
"@x-apaas/x-dcloud-page-engine": "rc",
|
||||||
|
"@x-apaas/x-apaas-frontend-i18n": "rc",
|
||||||
|
"core-js": "^3.6.4",
|
||||||
|
"dayjs": "^1.8.27",
|
||||||
|
"element-ui": "^2.13.2",
|
||||||
|
"js-file-download": "^0.4.12",
|
||||||
|
"lodash-es": "^4.17.21",
|
||||||
|
"md5": "^2.3.0",
|
||||||
|
"normalize.css": "^8.0.1",
|
||||||
|
"register-service-worker": "^1.7.1",
|
||||||
|
"vue": "^2.6.11",
|
||||||
|
"vue-router": "^3.1.6",
|
||||||
|
"vuex": "^3.1.3",
|
||||||
|
"vuex-persist": "^2.2.0",
|
||||||
|
"x-extension": "^0.2.2"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@babel/polyfill": "^7.8.7",
|
||||||
|
"@commitlint/cli": "^8.3.5",
|
||||||
|
"@commitlint/config-conventional": "^8.3.4",
|
||||||
|
"@vue/cli-plugin-babel": "^4.3.0",
|
||||||
|
"@vue/cli-plugin-e2e-nightwatch": "^4.3.0",
|
||||||
|
"@vue/cli-plugin-eslint": "^4.3.0",
|
||||||
|
"@vue/cli-plugin-pwa": "^4.3.0",
|
||||||
|
"@vue/cli-plugin-router": "^4.3.0",
|
||||||
|
"@vue/cli-plugin-unit-jest": "^4.3.0",
|
||||||
|
"@vue/cli-plugin-vuex": "^4.3.0",
|
||||||
|
"@vue/cli-service": "^4.3.0",
|
||||||
|
"@vue/eslint-config-prettier": "^6.0.0",
|
||||||
|
"@vue/eslint-config-standard": "^4.0.0",
|
||||||
|
"@vue/test-utils": "1.0.0-beta.31",
|
||||||
|
"babel-eslint": "^10.1.0",
|
||||||
|
"babel-plugin-component": "^1.1.1",
|
||||||
|
"colors": "^1.4.0",
|
||||||
|
"commitizen": "^4.1.2",
|
||||||
|
"commitlint-config-cz": "^0.13.1",
|
||||||
|
"conventional-changelog-cli": "^2.0.34",
|
||||||
|
"cz-conventional-changelog": "^3.2.0",
|
||||||
|
"cz-customizable": "^6.2.0",
|
||||||
|
"eslint": "^6.7.2",
|
||||||
|
"eslint-plugin-prettier": "^3.1.1",
|
||||||
|
"eslint-plugin-vue": "^6.2.2",
|
||||||
|
"husky": "^4.2.5",
|
||||||
|
"lint-staged": "^9.5.0",
|
||||||
|
"node-sass": "^4.12.0",
|
||||||
|
"path": "^0.12.7",
|
||||||
|
"prettier": "^1.19.1",
|
||||||
|
"progress-bar-webpack-plugin": "^2.1.0",
|
||||||
|
"sass-loader": "^8.0.2",
|
||||||
|
"sass-resources-loader": "^2.0.3",
|
||||||
|
"shelljs": "^0.8.4",
|
||||||
|
"svg-sprite-loader": "^5.0.0",
|
||||||
|
"vue-i18n": "^8.17.7",
|
||||||
|
"vue-template-compiler": "^2.6.11",
|
||||||
|
"webpack-bundle-analyzer": "^3.8.0",
|
||||||
|
"webpack-theme-color-replacer": "^1.3.13",
|
||||||
|
"zip-local": "^0.3.4"
|
||||||
|
},
|
||||||
|
"husky": {
|
||||||
|
"hooks": {
|
||||||
|
"pre-commit": "lint-staged",
|
||||||
|
"commit-msg": "commitlint -E HUSKY_GIT_PARAMS"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"lint-staged": {
|
||||||
|
"*.{js,jsx,vue}": [
|
||||||
|
"vue-cli-service lint --fix",
|
||||||
|
"git add"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
5
postcss.config.js
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
module.exports = {
|
||||||
|
plugins: {
|
||||||
|
autoprefixer: {}
|
||||||
|
}
|
||||||
|
}
|
||||||
13
prettier.config.js
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
module.exports = {
|
||||||
|
printWidth: 100,
|
||||||
|
tabWidth: 2,
|
||||||
|
useTabs: false,
|
||||||
|
semi: false,
|
||||||
|
singleQuote: true,
|
||||||
|
bracketSpacing: true,
|
||||||
|
jsxBracketSameLine: false,
|
||||||
|
arrowParens: 'always',
|
||||||
|
proseWrap: 'never',
|
||||||
|
htmlWhitespaceSensitivity: 'strict',
|
||||||
|
endOfLine: 'lf'
|
||||||
|
}
|
||||||
BIN
public/custom/apaas-custom-mydemo/1.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/favicon.ico
Normal file
|
After Width: | Height: | Size: 13 KiB |
BIN
public/img/slide-block/10@2x.jpg
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
public/img/slide-block/11@2x.jpg
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
public/img/slide-block/12@2x.jpg
Normal file
|
After Width: | Height: | Size: 15 KiB |
BIN
public/img/slide-block/13@2x.jpg
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
public/img/slide-block/14@2x.jpg
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
public/img/slide-block/15@2x.jpg
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
public/img/slide-block/16@2x.jpg
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
public/img/slide-block/17@2x.jpg
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
public/img/slide-block/18@2x.jpg
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
public/img/slide-block/19@2x.jpg
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
public/img/slide-block/20@2x.jpg
Normal file
|
After Width: | Height: | Size: 18 KiB |
BIN
public/img/slide-block/2@2x.jpg
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
public/img/slide-block/3@2x.jpg
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
public/img/slide-block/4@2x.jpg
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
public/img/slide-block/5@2x.jpg
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
public/img/slide-block/6@2x.jpg
Normal file
|
After Width: | Height: | Size: 9.6 KiB |
BIN
public/img/slide-block/7@2x.jpg
Normal file
|
After Width: | Height: | Size: 22 KiB |
BIN
public/img/slide-block/8@2x.jpg
Normal file
|
After Width: | Height: | Size: 9.7 KiB |
BIN
public/img/slide-block/9@2x.jpg
Normal file
|
After Width: | Height: | Size: 31 KiB |
17
public/index.html
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
<!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="<%= BASE_URL %>favicon.ico">
|
||||||
|
<title><%= htmlWebpackPlugin.options.title %></title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<noscript>
|
||||||
|
<strong>We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.</strong>
|
||||||
|
</noscript>
|
||||||
|
<div id="app"></div>
|
||||||
|
<!-- built files will be auto injected -->
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
2
public/robots.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
User-agent: *
|
||||||
|
Disallow:
|
||||||
77
src/App.vue
Normal file
@ -0,0 +1,77 @@
|
|||||||
|
<!--
|
||||||
|
* @Author: your name
|
||||||
|
* @Date: 2020-05-26 10:06:34
|
||||||
|
* @LastEditTime: 2020-05-26 17:05:42
|
||||||
|
* @LastEditors: Please set LastEditors
|
||||||
|
* @Description: In User Settings Edit
|
||||||
|
* @FilePath: /x-product-workspace/packages/x-project-app/src/App.vue
|
||||||
|
-->
|
||||||
|
<template>
|
||||||
|
<div id="app">
|
||||||
|
<component :is="layout">
|
||||||
|
<router-view />
|
||||||
|
</component>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { mapMutations } from 'vuex'
|
||||||
|
import { SET_USER_INFO } from '@/store/auth.store'
|
||||||
|
import { initUserRole } from '@/utils/userRole'
|
||||||
|
|
||||||
|
import BlackLayout from '@/layouts/black.layout'
|
||||||
|
import DefaultLayout from '@/layouts/default.layout'
|
||||||
|
import NoSidebarLayout from '@/layouts/no-sidebar.layout'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
components: {
|
||||||
|
BlackLayout,
|
||||||
|
DefaultLayout,
|
||||||
|
NoSidebarLayout
|
||||||
|
},
|
||||||
|
data() {
|
||||||
|
return {
|
||||||
|
}
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
layout() {
|
||||||
|
return this.$route.meta.layout || 'DefaultLayout'
|
||||||
|
}
|
||||||
|
},
|
||||||
|
created() {
|
||||||
|
this.setUserInfo({
|
||||||
|
'loginName': 'admin',
|
||||||
|
'id': '1',
|
||||||
|
'phone': '17729389320',
|
||||||
|
'email': '17728389320@163.com',
|
||||||
|
'enableStatus': 'ENABLED',
|
||||||
|
'headPortrait': null,
|
||||||
|
'userName': '赵站洋',
|
||||||
|
'credentialNo': '110101199003076675',
|
||||||
|
'gender': 'male'
|
||||||
|
})
|
||||||
|
},
|
||||||
|
mounted() {
|
||||||
|
// 页面加载时初始化用户角色信息
|
||||||
|
this.$nextTick(() => {
|
||||||
|
initUserRole(this).catch((err) => {
|
||||||
|
console.error('初始化用户角色信息失败:', err)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
},
|
||||||
|
methods: {
|
||||||
|
...mapMutations('authModule', {
|
||||||
|
setUserInfo: SET_USER_INFO
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="scss">
|
||||||
|
#app {
|
||||||
|
-webkit-font-smoothing: antialiased;
|
||||||
|
-moz-osx-font-smoothing: grayscale;
|
||||||
|
color: $--app-font-color;
|
||||||
|
background-color: $--app-bg-Color;
|
||||||
|
}
|
||||||
|
</style>
|
||||||
46
src/api/account/index.js
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
/*
|
||||||
|
* @Author: your name
|
||||||
|
* @Date: 2020-05-30 16:05:14
|
||||||
|
* @LastEditTime: 2020-05-30 19:20:52
|
||||||
|
* @LastEditors: Please set LastEditors
|
||||||
|
* @Description: In User Settings Edit
|
||||||
|
* @FilePath: /x-product-workspace/packages/x-project-app/src/api/account/index.js
|
||||||
|
*/
|
||||||
|
export default {
|
||||||
|
'USER_LOGIN': { // 用户登录
|
||||||
|
url: '/xdap-admin/user/login',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
'USER_REGISTER': { // 用户注册
|
||||||
|
url: '/xdap-admin/user/register',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
'USER_MODIFY_PASSWORD_BY_PHONE': { // 通过手机号修改密码
|
||||||
|
url: '/xdap-admin/user/find/password',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
'CREATE_ORG': { // 创建组织
|
||||||
|
url: '/xdap-admin/tenant/add/newTenant',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
'JOIN_ORG': {
|
||||||
|
url: '/xdap-admin/tenant/join/tenant',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
'SING_OUT': {
|
||||||
|
url: '/xdap-admin/user/signOut',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
'UPDATE_USER_PHONE': {
|
||||||
|
url: '/xdap-admin/user/update/userPhone',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
'UPDATE_USER_EMAIL': {
|
||||||
|
url: '/xdap-admin/user/update/userEmail',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
'IS_BELONG_TO_TENANT': {
|
||||||
|
url: '/xdap-admin/tenant/query/isBelongToTenant',
|
||||||
|
method: 'get'
|
||||||
|
}
|
||||||
|
}
|
||||||
167
src/api/admin/index.js
Normal file
@ -0,0 +1,167 @@
|
|||||||
|
export default {
|
||||||
|
// 获取组织列表
|
||||||
|
QUERY_ORG_LIST_BY_NAME: {
|
||||||
|
url: '/xdap-app/department/query/departmentListByName',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
// 组织树
|
||||||
|
QUERY_ORG_TREE: {
|
||||||
|
url: '/xdap-app/department/query/departmentTree',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
// 新增部门
|
||||||
|
ADD_AND_EDIT_ORG: {
|
||||||
|
url: '/xdap-app/department/edit/department',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
// 删除部门
|
||||||
|
DELETE_ORG: {
|
||||||
|
url: '/xdap-app/department/remove/department',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
// 根据节点查询成员
|
||||||
|
QUERY_MEMBER_BY_ORG_ID: {
|
||||||
|
url: '/xdap-app/department/query/departmentMembers',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
QUERY_ALL_MEMBER_BY_ORG_ID: {
|
||||||
|
url: '/xdap-app/department/queryAll/departmentMembers',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
// 上级部门值列表
|
||||||
|
QUERY_DEPARTMENT_LIST: {
|
||||||
|
url: '/xdap-app/department/query/departmentList',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
// 人员移出部门
|
||||||
|
REMOVE_USER_FORM_ORG: {
|
||||||
|
url: '/xdap-app/department/remove/departmentMember',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
// 批量移出zu
|
||||||
|
ALL_REMOVE_USER_FORM_ORG: {
|
||||||
|
url: '/xdap-app/department/batchRemove/departmentMember',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
// 人员移出组织
|
||||||
|
REMOVE_USER_FORM_TENANT: {
|
||||||
|
url: '/xdap-app/department/remove/tenantMember',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
// 批量移出组织
|
||||||
|
ALL_REMOVE_USER_FORM_TENANT: {
|
||||||
|
url: '/xdap-app/department/batchRemove/tenantMember',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
// 修改在职/离职
|
||||||
|
CHANGE_WORK_STATUS: {
|
||||||
|
url: '/xdap-app/department/update/memberWorkStatus',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
// 批量修改在职/离职
|
||||||
|
ALL_CHANGE_WORK_STATUS: {
|
||||||
|
url: '/xdap-app/department/batchUpdate/memberWorkStatus',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
// 邀请部分接口
|
||||||
|
QUERY_DATA_INVITE: {
|
||||||
|
url: '/xdap-app/invitation/get/invitationCodeInfo',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
// 重新生成邀请码
|
||||||
|
RELOAD_DATA_INVITE: {
|
||||||
|
url: '/xdap-app/invitation/generate/invitationCode',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
SAVE_INVITE_CONFIG: {
|
||||||
|
url: '/xdap-app/invitation/modify/invitationCode',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
// 设置是否启用邀请码
|
||||||
|
SHOW_INVITE_BY_STATUS: {
|
||||||
|
url: '/xdap-app/invitation/update/invitationCodeStatus',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
// 组织树拖拽
|
||||||
|
TREE_NODE_MOVE: {
|
||||||
|
url: '/xdap-app/department/queue/departmentTree',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
// 获取待审核条数
|
||||||
|
GET_AUDIT_COUNT: {
|
||||||
|
url: '/xdap-app/invitation/count/approvingUsers',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
// 获取待审核成员信息
|
||||||
|
QUERY_AUDIT_TABLE_DATA: {
|
||||||
|
url: '/xdap-app/invitation/query/approvingUsers',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
// 拒绝
|
||||||
|
REFUSE_ADD_USER: {
|
||||||
|
url: '/xdap-app/invitation/refuse/approvingUser',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
// 同意
|
||||||
|
AGREE_ADD_USER: {
|
||||||
|
url: '/xdap-app/invitation/agree/approvingUser',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
// 批量同意
|
||||||
|
ALL_AGREE_ADD_USER: {
|
||||||
|
url: '/xdap-app/invitation/batchAgree/approvingUser',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
// 批量拒绝
|
||||||
|
ALL_REFUSE_ADD_USER: {
|
||||||
|
url: '/xdap-app/invitation/batchRefuse/approvingUser',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
// 编辑成员信息
|
||||||
|
EDIT_USER_DATA: {
|
||||||
|
url: '/xdap-app/department/update/memberInfo',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
DEPARTMENT_ADD_USERS: {
|
||||||
|
url: '/xdap-app/department/add/departmentMember',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
// 查询短信条数
|
||||||
|
QUERY_SMS_DATA_LIST: {
|
||||||
|
url: '/xdap-app/noticeHistory/query/smsLogHistoryList',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
// 查询邮件发送记录
|
||||||
|
QUERY_EMAIL_DATA_LIST: {
|
||||||
|
url: '/xdap-app/noticeHistory/query/emailLogHistoryList',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
// 导出短信发送记录
|
||||||
|
EXPORT_LIST_SMS_DATA: {
|
||||||
|
url: '/xdap-app/noticeHistory/export/smsLogHistory',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
// 导出邮件发送记录
|
||||||
|
EXPORT_LIST_EMAIL_DATA: {
|
||||||
|
url: '/xdap-app/noticeHistory/export/emailLogHistory',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
// 员工工作的转交
|
||||||
|
TRANSFER_USER_WORK: {
|
||||||
|
url: '/xdap-app/work/update/workTransfer',
|
||||||
|
method: 'post'
|
||||||
|
}
|
||||||
|
}
|
||||||
151
src/api/app-page/index.js
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
/**
|
||||||
|
* @Author: your name
|
||||||
|
* @Date: 2020-06-12 12:19:21
|
||||||
|
* @LastEditTime: 2020-06-13 17:19:01
|
||||||
|
* @LastEditors: Please set LastEditors
|
||||||
|
* @Description: In User Settings Edit
|
||||||
|
* @FilePath: /x-project-app/src/api/app-page/index.js
|
||||||
|
*/
|
||||||
|
export default {
|
||||||
|
QUERY_LIST_PAGE_CONFIG_BY_ID: {
|
||||||
|
url: '/xdap-app/form/query/listPageConfigById',
|
||||||
|
method: 'get',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
QUERY_LIST_PAGE_CONFIG_BY_TAB_ID: {
|
||||||
|
url: '/xdap-app/form/query/listPageViewDetail',
|
||||||
|
method: 'get',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
QUERY_LIST_BUSINESS_DATA: {
|
||||||
|
url: '/xdap-app/business/query/listPageBusinessData',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
QUERY_CALC_LIST_BUSINESS_DATA: {
|
||||||
|
url: '/xdap-app/business/query/virtualBusinessData',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
QUERY_LIST_PAGE_BUTTON: {
|
||||||
|
url: '/xdap-app/form/query/listPageButton',
|
||||||
|
method: 'get',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
// 数据导出
|
||||||
|
EXPORT_LIST_TO_EXCEL: {
|
||||||
|
url: 'xdap-app/excel/export/excelData',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
// 统计接口
|
||||||
|
STATISTICAL_TABLE: {
|
||||||
|
url: '/xdap-app/business/query/calAggregate',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
// 数据导入下载模板接口
|
||||||
|
EXPORT_TEMPLATE_TO_EXCEL: {
|
||||||
|
url: '/xdap-app/excel/export/excelTemplate',
|
||||||
|
method: 'get',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
// 数据导入上传接口
|
||||||
|
IMPORT_EXCEL_DATA: {
|
||||||
|
url: '/xdap-app/excel/importExcelData',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
// 异常数据查询
|
||||||
|
EXCEL_IMPORT_LOGS: {
|
||||||
|
url: '/xdap-app/excel/query/excelImportLogs',
|
||||||
|
method: 'get',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
ADD_MENU_COLLECT: {
|
||||||
|
url: '/xdap-app/menu/add/star',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
REMOVE_MENU_COLLECT: {
|
||||||
|
url: '/xdap-app/menu/remove/star',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
HAS_MENU_COLLECT: {
|
||||||
|
url: '/xdap-app/menu/has/menuStar',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
// 批量删除接口
|
||||||
|
BATCH_DELETE_DATA: {
|
||||||
|
url: '/xdap-app/business/delete/batchDocument',
|
||||||
|
method: 'post',
|
||||||
|
timeout: 1000 * 60 * 1
|
||||||
|
},
|
||||||
|
// 批量同意接口
|
||||||
|
BATCH_AGREE_DATA: {
|
||||||
|
url: '/xdap-app/process/batch/approve',
|
||||||
|
method: 'post',
|
||||||
|
timeout: 1000 * 600 * 1
|
||||||
|
},
|
||||||
|
// 批量拒绝接口
|
||||||
|
BATCH_REJECT_DATA: {
|
||||||
|
url: '/xdap-app/process/batch/reject',
|
||||||
|
method: 'post',
|
||||||
|
timeout: 1000 * 600 * 1
|
||||||
|
},
|
||||||
|
QUERY_STATISTICS_VALUE_COLUME: {
|
||||||
|
url: '/xdap-app/business/query/dataStatisticValue',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
QUERY_TREE_VIEW_TREE_NODE: {
|
||||||
|
url: '/xdap-app/business/query/treeNodeBusinessData',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
QUERY_TREE_VIEW_TREE_TABLE_DATA: {
|
||||||
|
url: '/xdap-app/business/query/childNodeListBusinessData',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
QUERY_OPERATION_COLUMN: {
|
||||||
|
url: '/xdap-app/form/query/listButton',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
// 查询聚合表列表配置
|
||||||
|
QUERY_COMBINE_LIST_PAGE_VIEW: {
|
||||||
|
url: '/xdap-app/query/combineListPageView',
|
||||||
|
method: 'get',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
// 聚合表查询数据接口
|
||||||
|
QUERY_COMBINE_LIST_BUSINESSDATA: {
|
||||||
|
url: '/xdap-app/query/queryCombineListBusinessData',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
// 查询聚合表组件
|
||||||
|
QUERY_COMBINE_COMPONENT: {
|
||||||
|
url: '/xdap-app/query/combineComponent',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
// 聚合表按钮查询
|
||||||
|
QUERY_COMBINE_LISTBUTTON: {
|
||||||
|
url: '/xdap-app/query/combineListButton',
|
||||||
|
method: 'get',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
QUERY_ADVANCE_SEARCH: {
|
||||||
|
url: '/xdap-app/dataFilter/query/dataFilter',
|
||||||
|
method: 'get',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
// * 新的表单字段查询接口
|
||||||
|
QUERY_FORM_FIELD_ALL_IN_ONE: {
|
||||||
|
url: '/xdap-app/form/query/formComponent',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
}
|
||||||
24
src/api/common.js
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
/*
|
||||||
|
* @Author: your name
|
||||||
|
* @Date: 2020-05-30 16:05:14
|
||||||
|
* @LastEditTime: 2020-05-30 20:13:11
|
||||||
|
* @LastEditors: Please set LastEditors
|
||||||
|
* @Description: In User Settings Edit
|
||||||
|
* @FilePath: /x-product-workspace/packages/x-project-app/src/api/common.js
|
||||||
|
*/
|
||||||
|
export default {
|
||||||
|
'SEND_PHONE_CODE': { // 发送手机验证码
|
||||||
|
url: '/xdap-admin/user/send/smsCode',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
'SEND_EMAIL_CODE': { // 发送邮箱验证码
|
||||||
|
url: '/xdap-admin/user/send/emailCode',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
// 切换租户保存租户信息
|
||||||
|
'SAVE_ORG_ID_BY_CHANGE': {
|
||||||
|
url: '/xdap-admin/tenant/switch/tenant',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
}
|
||||||
|
}
|
||||||
420
src/api/demo/index.js
Normal file
@ -0,0 +1,420 @@
|
|||||||
|
export default {
|
||||||
|
// 导出邮件发送记录
|
||||||
|
DEMO_GET: {
|
||||||
|
url: '/custom/delete/getUserId',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
SUBMIT_FORM: {
|
||||||
|
url: '/xdap-app/process/submit',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
|
||||||
|
DOWNLOAD_FILE: {
|
||||||
|
url: '/xdap-app/attachments/downloadFile',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
// 测试获取人员
|
||||||
|
DEMO_GET_PERSON: {
|
||||||
|
url: '/custom/support/demo/getPerson',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
//添加模板
|
||||||
|
ADD_MODEL: {
|
||||||
|
url: '/custom/template/insertTemplate',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
//模板管理列表
|
||||||
|
GET_MODEL_LIST: {
|
||||||
|
url: '/custom/template/getTemplateByCondition',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
//导入模板
|
||||||
|
IMPORT_MODEL: {
|
||||||
|
url: '/custom/template/import',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
//修改模板
|
||||||
|
EDIT_MODEL: {
|
||||||
|
url: '/custom/template/updateTemplate',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
//查看版本
|
||||||
|
CHECK_MODEL_VERISON: {
|
||||||
|
url: '/custom/template/getTemplateVersion',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
//下载
|
||||||
|
DOWNLODE_MODEL: {
|
||||||
|
url: '/custom/template/export',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
//获取部门
|
||||||
|
GET_DEPARTMENT: {
|
||||||
|
url: '/custom/template/getDept',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
//查询详情
|
||||||
|
GET_MODEL_DETAIL: {
|
||||||
|
url: '/custom/parameter/getParameterByCondition',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
//测试文件上传
|
||||||
|
TEST_FILE_UPLOAD: {
|
||||||
|
url: '/custom/benchmark/uploadFile',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
//添加参数
|
||||||
|
ADD_MODEL_PARAM: {
|
||||||
|
url: '/custom/parameter/insertParameter',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
//维护参数
|
||||||
|
EDIT_MODEL_PARAM: {
|
||||||
|
url: '/custom/parameter/maintenanceParameters',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
DELETE_MODEL_PARAM: {
|
||||||
|
url: '/custom/parameter/deleteParameter',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
START_APPROVAL: {
|
||||||
|
url: '/custom/approval/startApproval',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
GET_APPROVAL_LIST: {
|
||||||
|
url: '/custom/approval/getApprovalList',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
HANDLE_APPROVAL: {
|
||||||
|
url: '/custom/approval/handleApproval',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
//获取审批详情
|
||||||
|
// GET_APPROVAL_DETAIL: {
|
||||||
|
// url: '/custom/approval/getApprovalDetail',
|
||||||
|
// method: 'get'
|
||||||
|
// },
|
||||||
|
//获取所有人
|
||||||
|
GET_ALLUSERS: {
|
||||||
|
url: '/custom/approval/getUsersByCondition',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
//获取审批变更
|
||||||
|
GET_APPROVAL_CHANGE: {
|
||||||
|
url: '/custom/approval/getTemplateChanges',
|
||||||
|
method: 'get'
|
||||||
|
}, //获取审批所有
|
||||||
|
GET_PPROVAL_ALL: {
|
||||||
|
url: '/custom/approval/getApprovalProcess',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
GET_SUB_DEPT: {
|
||||||
|
url: '/custom/responsible/getSubDepartmentById',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
//处理模板审批撤回
|
||||||
|
RETURN_APPROVAL: {
|
||||||
|
url: '/custom/approval/handleReturn',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
//获取用户列表
|
||||||
|
SELECT_USER_BY_DEPT: {
|
||||||
|
url: '/custom/responsible/getUserByDepartmentId',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
//保存责任管理
|
||||||
|
SAVE_MANAGER_DATA: {
|
||||||
|
url: '/custom/responsible/saveResponsiblePerson',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
//判断是否是责任人
|
||||||
|
IS_RESPONSIBLE: {
|
||||||
|
url: '/custom/responsible/isResponsiblePerson',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
//获取责任人
|
||||||
|
GET_MANAGER_DATA: {
|
||||||
|
url: '/custom/responsible/getDeptResponsible',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
EDIT_MANAGER_DATA: {
|
||||||
|
url: '/custom/responsible/updateResponsiblePerson',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
DELETE_MANAGER_DATA: {
|
||||||
|
url: '/custom/responsible/deleteResponsiblePerson',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
//新增填写人管理
|
||||||
|
SAVE_FILLER_DATA: {
|
||||||
|
url: '/custom/responsible/saveFilledPerson',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
GET_SUBSYSTEM_LIST: {
|
||||||
|
url: '/custom/responsible/getAllSubsystem',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
//判断是否是填写人
|
||||||
|
IS_FILLER: {
|
||||||
|
url: '/custom/filler/isFillerPerson',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
//获取填写人
|
||||||
|
GET_FILLER_DATA: {
|
||||||
|
url: '/custom/responsible/getDeptFilled',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
GET_REPORT_LIST: {
|
||||||
|
url: '/custom/benchmark/getReportAndTodoByCondition',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
ADD_REPORT: {
|
||||||
|
url: '/custom/benchmark/startReportApproval',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
SAVE_REPORT: {
|
||||||
|
url: '/custom/benchmark/insertReport',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
EDIT_REPORT: {
|
||||||
|
url: '/custom/benchmark/updateReport',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
RESTART_REPORT_APPROVAL: {
|
||||||
|
url: '/custom/benchmark/restartReportApproval',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
START_REPORT_APPROVAL: {
|
||||||
|
url: '/custom/benchmark/handleReportApproval',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
GET_REPORT_DETAIL: {
|
||||||
|
url: '/custom/benchmark/getReportDetail',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
GET_REPORT_DETAIL_PROCESS: {
|
||||||
|
url: '/custom/benchmark/getReportProcess',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
DOWNLOAD_REPORT: {
|
||||||
|
url: '/custom/benchmark/downloadReport',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
//权限管理相关接口
|
||||||
|
//获取权限管理列表
|
||||||
|
GET_PERMISSION_DATA: {
|
||||||
|
url: '/custom/permission/getUserRoleAndPermission',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
//保存权限管理
|
||||||
|
SAVE_PERMISSION_DATA: {
|
||||||
|
url: '/custom/permission/insertRole',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
//修改权限管理
|
||||||
|
EDIT_PERMISSION_DATA: {
|
||||||
|
url: '/custom/permission/updatePermission',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
//删除权限管理
|
||||||
|
DELETE_PERMISSION_DATA: {
|
||||||
|
url: '/custom/permission/deletePermission',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
//获取所有权限表
|
||||||
|
GET_ALL_PERMISSION_LIST: {
|
||||||
|
url: '/custom/permission/getAllPermission',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
|
||||||
|
DELETE_PERMISSION_DATA: {
|
||||||
|
url: '/custom/permission/deleteRole',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
GET_ALL_DATA_SYSTEAM_LIST: {
|
||||||
|
url: '/custom/common/getSystemAndPara',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
GET_ALL_SYSTEM_ROLE_LIST: {
|
||||||
|
url: '/custom/responsible/getAllSubsystem',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
GET_USER_COMMONLY_USED: {
|
||||||
|
url: '/custom/common/getModelCommon',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
UPDATE_USER_COMMONLY_USED: {
|
||||||
|
url: '/custom/common/updateModelCommon',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
ADD_USER_COMMONLY_USED: {
|
||||||
|
url: '/custom/common/insertModelCommon',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
//亚松
|
||||||
|
GET_USER_SELF_ROLE: {
|
||||||
|
url: '/custom/permission/selectPersByUser',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
EDIT_PERMISSION_DATA_ROLE: {
|
||||||
|
url: '/custom/permission/updateRole?userID=',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
//获取引擎列表
|
||||||
|
GET_ENGINE_LIST_SELF: {
|
||||||
|
url: '/custom/dataEntryEngineModel/selectByPage',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
DOWNLOAD_ENGINE_DEMO: {
|
||||||
|
url: '/custom/dataEntryEngineModel/excelExport',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
//添加引擎
|
||||||
|
ADD_ENGINE_MODEL: {
|
||||||
|
url: '/custom/dataEntryEngineModel/insert',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
//导入引擎
|
||||||
|
IMPORT_ENGINE_MODEL: {
|
||||||
|
url: '/custom/dataEntryEngineModel/import',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
//获取参数列表
|
||||||
|
GET_PARAM_LIST: {
|
||||||
|
url: '/custom/engineParamDetailPojo/selectParamList',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
IMPORT_ENGINE_MODEL_PARAM: {
|
||||||
|
url: '/custom/dataEntryEngineModel/excelImport',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
//获取引擎详情
|
||||||
|
GET_ENGINE_DETAIL: {
|
||||||
|
url: '/custom/engineParamDetailPojo/selectValueByMoreParam',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
GET_ENGINE_TABLE_DETAIL: {
|
||||||
|
url: '/custom/engineParamDetailPojo/selectParamListAndModel',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
GET_ENGINE_DETAIL_QUERY: {
|
||||||
|
url: '/custom/engineParamDetailPojo/selectParamList',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
//获取待办列表
|
||||||
|
GET_TODO_LIST: {
|
||||||
|
url: '/custom/todoTaskPojo/selectByresPersonPage',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
//获取创建人待办
|
||||||
|
GET_TODO_LIST_BY_CREATOR: {
|
||||||
|
url: '/custom/todoTaskPojo/selectByPage',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
//更新参数
|
||||||
|
UPDATE_PARAM: {
|
||||||
|
url: '/custom/engineParamDetailPojo/updateParamValue?userID=',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
//导出模板
|
||||||
|
EXPORT_TEMPLATE: {
|
||||||
|
url: '/custom/engineParamDetailPojo/excelExport',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
//导入
|
||||||
|
IMPORT_ENGINE_MODEL: {
|
||||||
|
url: '/custom/engineParamDetailPojo/excelImport',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
//责任人分发
|
||||||
|
HANDLE_RESPONSIBLE_DISPATCH: {
|
||||||
|
url: '/custom/engineParamDetailPojo/updateToInsertFiledBy?userID=',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
//分发给责任人
|
||||||
|
HANDLE_TODO_DISPATCH: {
|
||||||
|
url: '/custom/todoTaskPojo/createResPerson?userID=',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
ENGINE_CHECK_LIST: {
|
||||||
|
url: '/custom/activiti/showEngReview',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
START_ENGINE_CHECK: {
|
||||||
|
url: '/custom/activiti/startActiviti',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
HANDLE_ENGINE_CHECK: {
|
||||||
|
url: '/custom/activiti/handleApproval',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
//撤回
|
||||||
|
RETURN_ENGINE_CHECK: {
|
||||||
|
url: '/custom/activiti/returnApproval',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
GET_ENGINE_CHECK_DETAIL: {
|
||||||
|
url: '/custom/activiti/showActiviti',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
CHANGE_ENGINE_DATA: {
|
||||||
|
url: '/custom/activiti/initiateApproval',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
CHECK_ROLE_USER_DEPT:{
|
||||||
|
url: '/custom/permission/selectUserOrDeptByRole',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
GET_ENGINE_VERSIONS: {
|
||||||
|
url: '/custom/engineParamDetailPojo/selectVersionList',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
GET_NOW_USER_ROLE: {
|
||||||
|
url: '/custom/permission/selectPermByUserId',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
ADD_ROLE_PERMISSION: {
|
||||||
|
url: '/custom/permission/addRoles',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
GET_ROLE_PERMISSION: {
|
||||||
|
url: '/custom/permission/selectRoles',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
DELETE_ROLE_PERMISSION: {
|
||||||
|
url: '/custom/permission/removeRoles',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
GET_ROLE_PERMISSION_BING: {
|
||||||
|
url: '/custom/permission/userRoleBinding',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
GET_SUB_SYSTEM_DATA_LIST: {
|
||||||
|
url: '/custom/permission/getAllParameters',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
EDIT_ROLE_CONTROL_LIST: {
|
||||||
|
url: '/custom/permission/updatePerForRole',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
GET_ROLE_CONTROL_LIST: {
|
||||||
|
url: '/custom/permission/selectPersByRole',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
TEXT_DEMO: {
|
||||||
|
url: '/custom/delete/submitApproval',
|
||||||
|
method: 'get'
|
||||||
|
},
|
||||||
|
GET_CHECK_DATA_CHARTS: {
|
||||||
|
url: '/custom/analysis/showReport',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
GET_MODEL_QUERY: {
|
||||||
|
url: '/custom/tcDataQuery/tcDataSelectByPartsNames',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
GET_MY_SEND_LIST: {
|
||||||
|
url: '/custom/todoTaskPojo/selectByPageByCreate',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
}
|
||||||
25
src/api/index.js
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
/*
|
||||||
|
* @Author: your name
|
||||||
|
* @Date: 2020-05-30 09:41:36
|
||||||
|
* LastEditTime: 2020-09-18 10:10:08
|
||||||
|
* LastEditors: Mosuzi
|
||||||
|
* @Description: In User Settings Edit
|
||||||
|
* @FilePath: /x-product-workspace/packages/x-project-app/src/api/index.js
|
||||||
|
*/
|
||||||
|
import CommonApi from './common'
|
||||||
|
import AccountApi from './account'
|
||||||
|
import AdminApi from './admin'
|
||||||
|
import PersonalApi from './personal'
|
||||||
|
import WorkbenchApi from './workbench'
|
||||||
|
import AppPage from './app-page'
|
||||||
|
import demoApi from './demo'
|
||||||
|
|
||||||
|
export default {
|
||||||
|
...CommonApi,
|
||||||
|
...AccountApi,
|
||||||
|
...AdminApi,
|
||||||
|
...PersonalApi,
|
||||||
|
...WorkbenchApi,
|
||||||
|
...AppPage,
|
||||||
|
...demoApi
|
||||||
|
}
|
||||||
53
src/api/personal/index.js
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
/*
|
||||||
|
* @Author: your name
|
||||||
|
* @Date: 2020-05-30 10:07:21
|
||||||
|
* @LastEditTime: 2020-06-06 12:27:21
|
||||||
|
* @LastEditors: Please set LastEditors
|
||||||
|
* @Description: In User Settings Edit
|
||||||
|
* @FilePath: /x-product-workspace/packages/x-project-app/src/api/personal-center/index.js
|
||||||
|
*/
|
||||||
|
export default {
|
||||||
|
QUERY_USER_INFO: {
|
||||||
|
url: '/xdap-admin/user/query/userInfo',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
UPDATE_USER_INFO: {
|
||||||
|
url: '/xdap-admin/user/update/userInfo',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
QUERY_ACCOUNT_INFO: {
|
||||||
|
url: '/xdap-admin/user/query/accountInfo',
|
||||||
|
method: 'get',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
// 查询用户绑定第三方账号信息
|
||||||
|
QUERY_ACCOUNT_BIND: {
|
||||||
|
url: '/xdap-admin/user/query/userBind',
|
||||||
|
method: 'get',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
QUIT_TENANT: {
|
||||||
|
url: '/xdap-admin/tenant/quit/tenant',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
UPDATE_USER_PASSWORD: {
|
||||||
|
url: '/xdap-admin/user/update/userPassword',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
UPLOAD_USER_AVATAR: {
|
||||||
|
url: '/xdap-admin/user/upload/userAvatar',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
// 绑定微信
|
||||||
|
BIND_OPNE_WECHAT: {
|
||||||
|
url: '/xdap-admin/user/bind/openWechat',
|
||||||
|
method: 'post'
|
||||||
|
},
|
||||||
|
// 解绑第三方账号
|
||||||
|
UNBIND_THIRD_PLATFORM: {
|
||||||
|
url: '/xdap-admin/user/unbind/userThirdPlatform',
|
||||||
|
method: 'post'
|
||||||
|
}
|
||||||
|
}
|
||||||
36
src/api/workbench/index.js
Normal file
@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* @Author: your name
|
||||||
|
* @Date: 2020-05-30 16:15:05
|
||||||
|
* LastEditTime: 2020-09-22 11:11:01
|
||||||
|
* LastEditors: Mosuzi
|
||||||
|
* @Description: In User Settings Edit
|
||||||
|
* @FilePath: /x-product-workspace/packages/x-project-app/src/api/workbench/index.js
|
||||||
|
*/
|
||||||
|
export default {
|
||||||
|
QUERY_MY_TENANT_LIST: {
|
||||||
|
url: '/xdap-admin/tenant/query/myTenantList',
|
||||||
|
method: 'get',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
// 查询首页应用
|
||||||
|
QUERY_HOME_LIST: {
|
||||||
|
url: '/xdap-app/app/query/workspaceHome',
|
||||||
|
method: 'get',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
QUERY_TENANT_LIST_BY_USER: {
|
||||||
|
url: '/xdap-admin/tenant/query/tenantListByUser',
|
||||||
|
method: 'get',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
QUERY_USER_TENANT_INFO: {
|
||||||
|
url: '/xdap-admin/tenant/query/userTenantInfo',
|
||||||
|
method: 'get',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
},
|
||||||
|
USER_APP_CONFIG_UPDATE: {
|
||||||
|
url: '/xdap-app/user/config/update',
|
||||||
|
method: 'post',
|
||||||
|
disableSuccessMsg: true
|
||||||
|
}
|
||||||
|
}
|
||||||
17
src/assets-loader.js
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
export default {
|
||||||
|
requireAllSvg: function() {
|
||||||
|
const requireAll = (requireContext) => requireContext.keys().map(requireContext)
|
||||||
|
const req = require.context('./assets/icon', true, /\.svg$/)
|
||||||
|
requireAll(req)
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支持App应用动态导入图标
|
||||||
|
* @param { require.context('./assets/icon', true, /\.svg$/) }
|
||||||
|
*/
|
||||||
|
requireAppSvg: function(reqContext) {
|
||||||
|
const requireAll = (requireContext) => requireContext.keys().map(requireContext)
|
||||||
|
const req = reqContext
|
||||||
|
requireAll(req)
|
||||||
|
}
|
||||||
|
}
|
||||||
1
src/assets/icon/account-security.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg t="1590552052885" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2626" width="200" height="200"><path d="M780.757333 248.149333l-254.634666-74.666666a47.104 47.104 0 0 0-30.549334 0l-258.048 74.666666c-13.568 3.413333-23.765333 16.981333-23.765333 33.962667v339.498667c13.568 40.746667 37.333333 78.08 67.882667 105.258666 40.746667 37.333333 139.221333 88.32 193.536 115.456l13.568 6.784c3.413333 3.413333 10.24 3.413333 16.981333 3.413334 6.826667 0 13.610667 0 20.394667-3.413334 47.530667-23.765333 162.986667-81.493333 207.104-122.24 30.549333-30.549333 54.314667-64.512 67.882666-105.258666l3.413334-339.498667c0-13.568-10.197333-27.178667-23.765334-33.962667z m-27.178666 363.306667a181.888 181.888 0 0 1-54.314667 81.493333c-37.333333 37.333333-146.005333 88.234667-193.536 112l-10.154667-3.413333c-47.530667-23.722667-146.005333-74.666667-183.338666-108.629333-23.765333-23.765333-44.16-50.901333-54.357334-81.493334V292.266667l251.264-74.666667 247.850667 74.666667-3.413333 319.146666z" fill="currentColor" p-id="2627"></path><path d="M512.725333 529.109333c-64.853333 0-116.053333-51.2-116.053333-116.053333 0-64.853333 51.2-116.053333 116.053333-116.053333 64.853333 0 116.053333 51.2 116.053334 116.053333 0 64.853333-51.2 116.053333-116.053334 116.053333z m0-193.962666c-42.24 0-77.909333 35.712-77.909333 77.909333 0 42.24 35.712 77.909333 77.909333 77.909333 42.24 0 77.909333-35.712 77.909334-77.909333 0-42.24-35.712-77.909333-77.909334-77.909333z" fill="currentColor" p-id="2628"></path><path d="M512.725333 695.68c-12.245333 0-20.394667-5.12-20.394666-12.714667v-172.629333c0-7.637333 8.149333-12.714667 20.394666-12.714667s20.394667 5.12 20.394667 12.714667v172.629333c0 7.637333-8.149333 12.714667-20.394667 12.714667z" fill="currentColor" p-id="2629"></path><path d="M515.882667 662.613333h-75.093334c-10.24 0-17.066667-7.978667-17.066666-19.925333s6.826667-19.882667 17.066666-19.882667h75.093334c10.24 0 17.066667 7.936 17.066666 19.882667s-6.826667 19.882667-17.066666 19.882667z" fill="currentColor" p-id="2630"></path></svg>
|
||||||
|
After Width: | Height: | Size: 2.1 KiB |
1
src/assets/icon/admin-icon.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg t="1590477302758" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2141" width="200" height="200"><path d="M810.666667 770.56a21.333333 21.333333 0 0 1-21.205334 21.461333H234.922667A21.674667 21.674667 0 0 1 213.333333 770.56c0-11.861333 9.813333-16.512 21.589334-16.512h41.472V277.504c0-23.466667 19.328-42.837333 42.837333-42.837333h235.818667c23.509333 0 42.88 19.242667 42.88 42.837333v107.221333h107.178666c23.552 0 42.837333 19.2 42.837334 42.837334v326.485333h41.514666c11.818667 0 21.205333 4.693333 21.205334 16.512z m-250.794667-342.997333V274.517333H314.197333v479.530667h245.717334V427.52h-0.042667z m149.248 326.485333V427.52h-111.232v326.485333h111.232zM383.616 400.597333c-11.861333 0-21.418667-8.405333-21.504-18.688 0-10.24 9.685333-18.688 21.504-18.688h107.178667c11.818667 0 21.461333 8.405333 21.461333 18.688 0 10.24-9.642667 18.688-21.461333 18.688H383.616z m0 257.152c-11.861333 0-21.504-8.405333-21.504-18.645333 0-10.282667 9.685333-18.688 21.504-18.688h107.178667c11.818667 0 21.461333 8.405333 21.461333 18.688 0 10.24-9.642667 18.645333-21.461333 18.645333H383.616z m257.194667-107.136c-11.776 0-21.461333-8.362667-21.461334-18.645333 0-10.24 9.685333-18.688 21.461334-18.688h21.504c11.776 0 21.461333 8.405333 21.461333 18.688 0 10.24-9.685333 18.645333-21.461333 18.645333h-21.504z m0 107.136c-11.776 0-21.461333-8.405333-21.461334-18.645333 0-10.282667 9.685333-18.688 21.461334-18.688h21.504c11.776 0 21.461333 8.405333 21.461333 18.688 0 10.24-9.685333 18.645333-21.461333 18.645333h-21.504z m-257.194667-128.597333c-11.861333 0-21.504-8.362667-21.504-18.645333 0-10.24 9.685333-18.645333 21.504-18.645334h107.178667c11.818667 0 21.461333 8.362667 21.461333 18.645334 0 10.24-9.642667 18.645333-21.461333 18.645333H383.616z" fill="currentColor" p-id="2142"></path></svg>
|
||||||
|
After Width: | Height: | Size: 1.8 KiB |
1
src/assets/icon/arrow-left-icon.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg t="1591263911723" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6540" width="200" height="200"><path d="M590.165333 337.706667a21.333333 21.333333 0 0 0-1.493333-32.768 29.397333 29.397333 0 0 0-37.461333 0.938666l-202.709334 190.037334a21.077333 21.077333 0 0 0-1.365333 30.421333c0.341333 0.426667 204.117333 191.573333 204.117333 191.573333 10.026667 9.429333 26.88 9.941333 37.632 1.152a21.333333 21.333333 0 0 0 1.28-32.938666l-185.813333-174.293334 185.813333-174.122666z" fill="currentColor" p-id="6541"></path></svg>
|
||||||
|
After Width: | Height: | Size: 575 B |
1
src/assets/icon/arrow-right-icon.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg t="1590488917054" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2447" width="200" height="200"><path d="M433.834667 337.706667a21.333333 21.333333 0 0 1 1.493333-32.768 29.397333 29.397333 0 0 1 37.461333 0.938666l202.709334 190.037334a21.077333 21.077333 0 0 1 1.365333 30.421333c-0.341333 0.426667-204.117333 191.573333-204.117333 191.573333a29.354667 29.354667 0 0 1-37.632 1.152 21.333333 21.333333 0 0 1-1.28-32.938666l185.813333-174.293334-185.813333-174.122666z" fill="currentColor" p-id="2448"></path></svg>
|
||||||
|
After Width: | Height: | Size: 566 B |
1
src/assets/icon/arrow-top-icon.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg t="1590740427585" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3045" width="200" height="200"><path d="M337.706667 590.165333a21.333333 21.333333 0 0 1-32.768-1.493333 29.397333 29.397333 0 0 1 0.938666-37.461333l190.037334-202.709334a21.077333 21.077333 0 0 1 30.421333-1.365333c0.426667 0.341333 191.573333 204.117333 191.573333 204.117333 9.429333 10.026667 9.941333 26.88 1.152 37.632a21.333333 21.333333 0 0 1-32.938666 1.28l-174.293334-185.813333-174.122666 185.813333z" fill="currentColor" p-id="3046"></path></svg>
|
||||||
|
After Width: | Height: | Size: 574 B |
1
src/assets/icon/create-org.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1590563130922" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2748" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M122.517333 130.474667c24.213333-7.872 39.850667-0.853333 46.976 21.034666l236.586667 774.186667c7.125333 21.888-1.408 36.778667-25.6 44.629333-24.213333 7.872-39.872 0.853333-46.976-21.034666L96.917333 175.104c-7.125333-21.888 1.408-36.778667 25.6-44.629333z" fill="#D7D7D7" p-id="2749"></path><path d="M512 597.333333l448-53.333333-149.333333-202.666667 74.666666-256-383.829333 40.298667z" fill="#2B8FFF" p-id="2750"></path><path d="M512 602.432l165.568-81.493333L512 362.666667z" fill="#027AFF" p-id="2751"></path><path d="M170.666667 170.666667l384-85.333334 117.333333 426.666667L298.666667 597.333333z" fill="#66AEFF" p-id="2752"></path></svg>
|
||||||
|
After Width: | Height: | Size: 1.0 KiB |
1
src/assets/icon/date.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1592965424758" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6516" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M797.909333 219.818667h-91.306666v-21.333334a27.392 27.392 0 0 0-54.784 0v21.333334H371.754667v-21.333334a27.392 27.392 0 1 0-54.784 0v21.333334H225.621333c-30.293333 0-54.784 24.490667-54.784 54.784v523.605333c0 30.293333 24.490667 54.784 54.826667 54.784H797.866667c30.293333 0 54.826667-24.618667 54.826666-54.784V274.602667c0-30.293333-24.490667-54.784-54.826666-54.784zM317.013333 270.805333v19.029334a27.392 27.392 0 0 0 54.784 0v-19.029334h280.064v19.029334a27.392 27.392 0 0 0 54.784 0v-19.029334h95.146667v95.146667H221.866667v-95.146667h95.104z m487.04 533.205334H219.989333V414.592h584.021334v389.418667zM341.333333 512.042667h48.64a24.362667 24.362667 0 0 1 0 48.725333H341.333333a24.32 24.32 0 1 1 0-48.682667V512z m146.090667 0h48.682667a24.362667 24.362667 0 0 1 0 48.725333h-48.64a24.32 24.32 0 0 1 0-48.682667L487.424 512z m146.090667 0h48.768a24.362667 24.362667 0 0 1 0 48.725333h-48.768a24.32 24.32 0 1 1 0-48.682667V512zM341.333333 659.626667h48.768a24.362667 24.362667 0 0 1 0 48.682666H341.333333a24.32 24.32 0 0 1 0-48.682666z m146.176 0h48.682667a24.362667 24.362667 0 0 1 0 48.682666h-48.725333a24.32 24.32 0 0 1 0-48.682666z" fill="#B2B2B2" p-id="6517"></path></svg>
|
||||||
|
After Width: | Height: | Size: 1.5 KiB |
1
src/assets/icon/feishu.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1590495671939" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6498" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M896 135.68l-188.714667 203.946667a6.016 6.016 0 0 0-1.493333 5.333333 36.906667 36.906667 0 0 1-62.72 33.066667l-150.442667 150.4 14.848 198.698666L676.352 896 896 135.68z" fill="#007FFF" p-id="6499"></path><path d="M893.952 140.8l-186.709333 201.813333a6.016 6.016 0 0 0-1.493334 5.333334 36.394667 36.394667 0 0 1-62.08 32.682666l-147.84 147.84a2.986667 2.986667 0 0 0-0.853333 2.304l14.592 195.114667 376.490667-567.936 8.106666-17.066667-0.213333-0.085333z" fill="#0069FF" p-id="6500"></path><path d="M888.32 128l-203.946667 188.714667a6.016 6.016 0 0 1-5.333333 1.536 36.906667 36.906667 0 0 0-33.024 62.72l-150.442667 150.442666-198.613333-14.933333L128 347.605333l760.32-219.605333z" fill="#00EED4" p-id="6501"></path><path d="M883.2 130.304L681.386667 317.013333a6.016 6.016 0 0 1-5.290667 1.493334 36.394667 36.394667 0 0 0-32.682667 62.08l-147.882666 147.84a2.986667 2.986667 0 0 1-2.346667 0.853333l-195.114667-14.592 567.978667-376.490667 17.066667-8.106666 0.128 0.213333z" fill="#00D3B4" p-id="6502"></path></svg>
|
||||||
|
After Width: | Height: | Size: 1.4 KiB |
1
src/assets/icon/jiaoseguanli.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M293.12 810.666667a39.68 39.68 0 0 1-39.68-39.68V674.133333H298.666667v85.333334h466.346666V260.266667H298.666667v85.333333H253.44V253.013333A39.68 39.68 0 0 1 293.12 213.333333h477.866667a39.68 39.68 0 0 1 39.68 39.68v517.546667a40.106667 40.106667 0 0 1-39.68 40.106667z m213.333333-98.133334l-73.386666-55.893333a40.106667 40.106667 0 0 1-14.08-42.666667l54.186666-180.053333-18.773333-45.653333a39.68 39.68 0 0 1 21.333333-52.053334 36.693333 36.693333 0 0 1 15.36-2.986666h80.64a39.68 39.68 0 0 1 39.68 39.68 36.693333 36.693333 0 0 1-2.986666 15.36l-18.773334 45.653333 53.76 180.053333a42.666667 42.666667 0 0 1-13.653333 42.666667L554.666667 712.533333a42.666667 42.666667 0 0 1-48.64 0z m-49.066666-85.333333l74.666666 55.466667 73.386667-55.893334L554.666667 452.266667h-42.666667z m50.346666-213.333333H554.666667l16.64-39.68h-78.933334z m-274.346666 230.4a23.466667 23.466667 0 0 1-20.053334-27.306667 23.04 23.04 0 0 1 20.053334-19.626667h91.306666a23.893333 23.893333 0 0 1 0 46.933334zM298.666667 548.693333H253.44v-73.813333H298.666667v73.813333zM233.386667 426.666667a23.893333 23.893333 0 0 1 0-46.933334h91.306666a21.333333 21.333333 0 0 1 19.626667 23.466667 21.76 21.76 0 0 1-19.626667 23.466667z" /></svg>
|
||||||
|
After Width: | Height: | Size: 1.5 KiB |
1
src/assets/icon/join-org.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1590563124043" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2624" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M64 902.613333h896V960H64v-57.386667z m92.693333-79.445333h715.029334v35.306667H156.693333v-35.306667z" fill="#B3D7FF" p-id="2625"></path><path d="M600.32 222.890667l251.605333 119.168v485.546666H603.584z" fill="#2B8FFF" p-id="2626"></path><path d="M165.525333 187.584L604.629333 64v763.584H165.546667z" fill="#66AEFF" p-id="2627"></path><path d="M396.501333 306.773333h141.226667v15.530667h-141.226667v-15.552z m-164.778666 0h141.226666v15.530667h-141.226666v-15.552z m164.778666 82.368h141.226667v15.552h-141.226667v-15.552z m-164.778666 0h141.226666v15.552h-141.226666v-15.552z m164.778666 82.389334h141.226667v15.552h-141.226667v-15.552z m-164.778666 0h141.226666v15.552h-141.226666v-15.552z m164.778666 82.410666h141.226667v15.530667h-141.226667v-15.530667z m-164.778666 0h141.226666v15.530667h-141.226666v-15.530667z m164.778666 82.389334h141.226667v15.530666h-141.226667v-15.530666z m-164.778666 0h141.226666v15.530666h-141.226666v-15.530666z" fill="#FFFFFF" p-id="2628"></path><path d="M852.608 452.416v23.530667h-129.493333v-23.530667zM852.608 553.941333v23.530667h-129.493333v-23.530667z" fill="#FFFFFF" p-id="2629"></path><path d="M130.197333 849.664h768v52.949333h-768z" fill="#95C5FA" p-id="2630"></path></svg>
|
||||||
|
After Width: | Height: | Size: 1.6 KiB |
1
src/assets/icon/logout-icon.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg t="1590477404744" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2380" width="200" height="200"><path d="M759.978667 497.493333a17.152 17.152 0 0 1 2.304 25.728c-2.261333 0-2.261333 2.133333-2.261334 2.133334l-111.189333 109.226666a20.693333 20.693333 0 0 1-15.573333 6.4 20.565333 20.565333 0 0 1-15.616-6.4 20.138667 20.138667 0 0 1 0-29.994666l73.386666-70.656h-213.504c-13.354667 0-22.272-8.576-22.272-21.418667 0-12.885333 8.917333-21.418667 22.272-21.418667h213.546667l-73.386667-70.656a20.138667 20.138667 0 0 1 0-29.994666 22.016 22.016 0 0 1 31.146667 0l111.146667 107.093333z m-17.749334 193.365334c13.354667 0 22.272 8.533333 22.272 21.418666v14.933334c0 36.437333-28.970667 64.256-66.773333 64.256H322.901333c-37.845333 0-66.730667-27.818667-66.730666-64.256V298.922667c0-36.394667 28.928-64.256 66.730666-64.256h374.826667c37.845333 0 66.773333 27.861333 66.773333 64.256v14.933333c0 12.885333-8.96 21.461333-22.314666 21.461333-13.354667 0-22.186667-8.576-22.186667-21.461333v-14.933333c0-12.842667-8.96-21.418667-22.272-21.418667H322.901333c-13.397333 0-22.229333 8.533333-22.229333 21.418667v428.330666c0 12.842667 8.874667 21.418667 22.229333 21.418667h374.826667c13.397333 0 22.272-8.533333 22.272-21.418667v-14.933333c0-12.885333 8.874667-21.461333 22.229333-21.461333z" fill="currentColor" p-id="2381"></path></svg>
|
||||||
|
After Width: | Height: | Size: 1.4 KiB |
2
src/assets/icon/more-operations.svg
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
|
||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1590564441419" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3571" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M448.170667 273.706667a59.477333 59.477333 0 1 0 118.954666 0 59.477333 59.477333 0 0 0-118.954666 0zM448.170667 510.293333a59.221333 59.221333 0 1 0 118.442666 0 59.221333 59.221333 0 0 0-118.442666 0zM448.682667 747.221333a59.221333 59.221333 0 1 0 118.442666 0 59.221333 59.221333 0 0 0-118.442666 0z" p-id="3572"></path></svg>
|
||||||
|
After Width: | Height: | Size: 708 B |
1
src/assets/icon/password-hide.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1590559458705" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2505" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M583.722667 498.133333l38.272-38.272a122.026667 122.026667 0 0 1-162.56 162.56l38.272-38.229333a73.130667 73.130667 0 0 0 86.058666-86.058667z m-62.421334-58.24a73.130667 73.130667 0 0 0-81.877333 81.877334l-39.253333 39.253333a122.026667 122.026667 0 0 1 160.384-160.384l-39.253334 39.253333z m181.76-61.098666l34.688-34.688C808.533333 408.021333 853.333333 484.053333 853.333333 512.426667c0 52.565333-153.344 268.202667-341.333333 268.202666-57.941333 0-112.554667-20.48-160.426667-50.346666l35.456-35.456c37.888 22.101333 80.256 37.034667 124.970667 37.034666 161.578667 0 292.565333-195.029333 292.565333-219.434666 0-13.354667-39.338667-77.952-101.504-133.632z m-69.802666-50.858667c-36.949333-20.949333-77.994667-34.944-121.258667-34.944-161.578667 0-292.565333 195.072-292.565333 219.434667 0 13.141333 38.058667 75.861333 98.432 130.901333l-34.645334 34.645333C214.144 614.656 170.666667 540.416 170.666667 512.426667c0-52.565333 153.344-268.202667 341.333333-268.202667 56.490667 0 109.824 19.456 156.842667 48.128l-35.584 35.584z m169.6-109.866667a23.466667 23.466667 0 0 1 0 33.194667l-552.533334 552.533333a23.466667 23.466667 0 1 1-33.194666-33.194666l552.533333-552.533334a23.466667 23.466667 0 0 1 33.194667 0z" fill="#B2B2B2" p-id="2506"></path></svg>
|
||||||
|
After Width: | Height: | Size: 1.6 KiB |
1
src/assets/icon/password-show.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1590559452407" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2386" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M512 585.386667a73.130667 73.130667 0 1 0 0-146.304 73.130667 73.130667 0 0 0 0 146.304z m0-195.029334a122.026667 122.026667 0 0 1 121.898667 121.898667A122.026667 122.026667 0 0 1 512 634.154667a122.026667 122.026667 0 0 1-121.898667-121.898667A122.026667 122.026667 0 0 1 512 390.357333z m0 341.333334c161.578667 0 292.565333-195.072 292.565333-219.434667 0-24.405333-130.986667-219.434667-292.565333-219.434667-161.578667 0-292.565333 195.029333-292.565333 219.434667 0 24.362667 130.986667 219.434667 292.565333 219.434667zM512 244.053333c187.989333 0 341.333333 215.637333 341.333333 268.202667 0 52.565333-153.344 268.16-341.333333 268.16-187.989333 0-341.333333-215.594667-341.333333-268.16 0-52.565333 153.344-268.202667 341.333333-268.202667z" fill="#B2B2B2" p-id="2387"></path></svg>
|
||||||
|
After Width: | Height: | Size: 1.1 KiB |
1
src/assets/icon/peizhiguanli.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M749.226667 325.546667l-205.653334-102.4a68.693333 68.693333 0 0 0-63.146666 0L274.773333 325.973333a70.4 70.4 0 0 0-39.68 63.573334v244.48a72.106667 72.106667 0 0 0 39.253334 64l205.653333 102.826666a72.106667 72.106667 0 0 0 63.573333 0l205.653334-102.826666a70.4 70.4 0 0 0 39.68-63.573334V389.546667a71.68 71.68 0 0 0-39.68-64z m-256 436.906666l-200.96-99.84a32.426667 32.426667 0 0 1-17.493334-28.586666V393.386667h7.68l209.493334 104.96z m19.2-298.666666L298.666667 357.546667h3.84l194.56-97.28a32.426667 32.426667 0 0 1 28.16 0L725.333333 357.546667h-3.84L512 463.786667zM748.8 640a31.146667 31.146667 0 0 1-17.066667 23.893333l-199.68 99.84v-265.386666l209.066667-104.106667h6.826667z" /></svg>
|
||||||
|
After Width: | Height: | Size: 990 B |
1
src/assets/icon/personal-icon.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg t="1590477172452" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="1903" width="200" height="200"><path d="M511.274667 213.589333a297.813333 297.813333 0 0 0-297.685334 297.685334 297.813333 297.813333 0 0 0 297.685334 297.728 297.856 297.856 0 0 0 297.728-297.728 297.898667 297.898667 0 0 0-297.728-297.685334z m0 553.301334a255.573333 255.573333 0 1 1 0-511.146667 255.573333 255.573333 0 1 1 0 511.146667z m152.405333-120.490667a154.453333 154.453333 0 0 0-87.296-102.144 114.176 114.176 0 0 0 52.992-96.426667 114.474667 114.474667 0 0 0-114.389333-114.346666c-63.146667 0-114.346667 51.2-114.432 114.346666 0 40.746667 21.034667 76.373333 52.906666 96.426667a153.344 153.344 0 0 0-87.552 102.144 20.394667 20.394667 0 0 0 29.994667 22.656 20.309333 20.309333 0 0 0 9.386667-12.458667 112.938667 112.938667 0 0 1 218.666666 0 20.48 20.48 0 0 0 24.832 14.506667 20.053333 20.053333 0 0 0 14.890667-24.746667z m-148.608-272.213333a73.6 73.6 0 1 1 0 147.2 73.6 73.6 0 0 1 0-147.2z" fill="currentColor" p-id="1904"></path></svg>
|
||||||
|
After Width: | Height: | Size: 1.1 KiB |
1
src/assets/icon/personal-info.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg t="1590551997856" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2507" width="200" height="200"><path d="M244.608 213.333333C204.8 213.333333 170.666667 256.042667 170.666667 295.850667V728.32c0 39.808 34.133333 82.346667 73.941333 82.346667h534.784C819.2 810.666667 853.333333 768.128 853.333333 728.32V295.850667C853.333333 256.042667 819.2 213.333333 779.392 213.333333H244.608zM775.253333 763.093333H248.746667c-19.925333 0-29.866667-20.693333-29.866667-37.76V295.850667c0-19.882667 12.8-34.133333 29.866667-34.133334h526.506666c19.925333 0 34.133333 17.066667 34.133334 34.133334V725.333333c0 19.925333-17.066667 37.76-34.133334 37.76zM742.4 388.266667h-153.6c-8.533333 0-14.208 8.533333-14.208 19.925333 0 11.349333 5.674667 19.882667 14.208 19.882667h153.6c8.533333 0 14.208-8.533333 14.208-19.882667 0-11.392-5.674667-19.925333-14.208-19.925333z m0 98.133333h-153.6c-8.533333 0-14.208 8.533333-14.208 19.925333 0 11.349333 5.674667 19.882667 14.208 19.882667h153.6c8.533333 0 14.208-8.533333 14.208-19.882667 0-11.392-5.674667-19.925333-14.208-19.925333z m0 102.4h-128c-8.533333 0-14.208 8.533333-14.208 19.925333 0 11.349333 5.674667 19.882667 14.208 19.882667h128c8.533333 0 14.208-8.533333 14.208-19.882667 0-11.392-5.674667-19.925333-14.208-19.925333z m-290.133333-48.64c22.741333-17.066667 34.133333-45.525333 34.133333-73.941333 0-54.058667-42.666667-96.725333-96.725333-96.725334-54.016 0-96.682667 42.666667-96.682667 96.725334 0 31.274667 14.208 56.874667 34.133333 73.941333-36.992 17.066667-68.266667 51.2-82.517333 93.866667-2.816 8.533333 2.858667 19.925333 11.392 22.741333 11.392 2.858667 19.925333-2.816 22.741333-11.349333 14.250667-48.384 56.917333-79.658667 108.117334-79.658667 48.341333 0 93.866667 31.274667 108.074666 79.658667 2.858667 8.533333 11.392 14.208 17.066667 14.208h5.674667a19.328 19.328 0 0 0 11.392-22.741334c-8.533333-45.525333-36.992-79.658667-76.8-96.725333zM389.674667 401.109333c34.133333 0 59.733333 25.6 59.733333 59.733334 0 34.133333-25.6 59.733333-59.733333 59.733333-34.133333 0-59.733333-25.6-59.733334-59.733333 0-34.133333 28.458667-59.733333 59.733334-59.733334z" fill="currentColor" p-id="2508"></path></svg>
|
||||||
|
After Width: | Height: | Size: 2.2 KiB |
1
src/assets/icon/qiyeweixin.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1590495765910" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6740" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M668.330667 756.266667a12.672 12.672 0 0 0 2.688 2.474666 162.901333 162.901333 0 0 1 48.384 87.04 52.778667 52.778667 0 0 0 15.402666 34.218667 52.992 52.992 0 1 0 43.050667-90.154667 162.901333 162.901333 0 0 1-90.709333-50.474666 12.672 12.672 0 0 0-18.773334 16.896" fill="#FB6500" p-id="6741"></path><path d="M835.925333 797.013333a12.672 12.672 0 0 0 2.432-2.688 162.901333 162.901333 0 0 1 87.04-48.384 52.778667 52.778667 0 0 0 34.261334-15.402666 52.992 52.992 0 1 0-90.197334-43.050667 162.901333 162.901333 0 0 1-50.474666 90.709333 12.672 12.672 0 0 0 16.938666 18.773334" fill="#0082EF" p-id="6742"></path><path d="M876.629333 629.418667a12.672 12.672 0 0 0-2.645333-2.432 162.901333 162.901333 0 0 1-48.426667-87.04 52.778667 52.778667 0 0 0-15.402666-34.261334 52.992 52.992 0 1 0-43.050667 90.197334 162.901333 162.901333 0 0 1 90.709333 50.474666 12.672 12.672 0 0 0 18.816-16.938666" fill="#2DBC00" p-id="6743"></path><path d="M709.077333 588.714667a12.672 12.672 0 0 0-2.474666 2.645333 162.901333 162.901333 0 0 1-87.04 48.426667 52.778667 52.778667 0 0 0-34.218667 15.402666 53.034667 53.034667 0 1 0 90.154667 43.050667 162.901333 162.901333 0 0 1 50.474666-90.709333 12.672 12.672 0 0 0-16.896-18.816" fill="#FFCC00" p-id="6744"></path><path d="M787.882667 329.770667a325.12 325.12 0 0 0-58.88-83.584c-61.44-63.573333-147.498667-104.533333-242.261334-115.285334-16.64-1.92-33.408-2.858667-50.133333-2.901333-15.488 0-31.616 0.896-48 2.688-95.146667 10.325333-181.717333 51.072-243.626667 114.688a325.290667 325.290667 0 0 0-59.178666 83.328 291.242667 291.242667 0 0 0-30.336 129.365333c0 57.728 17.578667 114.602667 50.773333 164.565334 18.773333 28.245333 50.944 64.768 78.421333 87.168l-15.232 62.976-4.352 17.749333a28.501333 28.501333 0 0 0-1.792 5.504c-0.256 1.152-0.341333 2.346667-0.469333 3.584-0.085333 0.896-0.256 1.792-0.256 2.730667 0 16.213333 13.098667 29.354667 29.312 29.354666a29.013333 29.013333 0 0 0 14.506667-3.968l0.384-0.256c0.64-0.341333 1.28-0.682667 1.877333-1.109333l108.8-54.613333a422.058667 422.058667 0 0 0 71.125333 13.738666 440.490667 440.490667 0 0 0 98.133334-0.256 426.410667 426.410667 0 0 0 96.085333-22.485333 52.821333 52.821333 0 0 1-36.096-55.381333c-22.186667 7.04-44.970667 11.946667-68.096 14.549333a369.109333 369.109333 0 0 1-82.218667 0.256c-2.773333-0.298667-5.546667-0.725333-8.277333-1.109333a362.581333 362.581333 0 0 1-53.930667-11.306667 36.778667 36.778667 0 0 0-29.013333 2.986667l-2.304 1.152-69.76 41.173333H232.96c-1.450667 0.853333-2.261333 1.194667-3.029333 1.194667a4.522667 4.522667 0 0 1-4.437334-4.650667l2.56-10.410667 2.986667-11.306666 10.325333-39.338667a28.16 28.16 0 0 0-10.112-31.232 296.106667 296.106667 0 0 1-27.946666-23.466667 273.493333 273.493333 0 0 1-39.68-46.933333 234.24 234.24 0 0 1-40.192-129.792c0-35.2 8.064-69.461333 23.893333-101.76a260.949333 260.949333 0 0 1 47.530667-66.858667C245.76 238.250667 317.354667 204.8 396.373333 196.138667c13.354667-1.493333 26.794667-2.218667 40.234667-2.261334 13.568 0 27.733333 0.853333 41.984 2.432 78.677333 8.96 149.845333 42.666667 200.362667 94.890667 19.541333 20.224 35.413333 42.752 47.232 66.986667a229.12 229.12 0 0 1 23.509333 100.949333c0 3.626667-0.213333 7.253333-0.426667 10.837333a52.906667 52.906667 0 0 1 65.066667 7.637334c0.896 0.853333 1.664 1.877333 2.474667 2.816a290.986667 290.986667 0 0 0-28.970667-150.656" fill="#0079DE" p-id="6745"></path></svg>
|
||||||
|
After Width: | Height: | Size: 3.7 KiB |
1
src/assets/icon/search-icon.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg t="1590737166026" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2926" width="200" height="200"><path d="M731.733333 675.584a28.885333 28.885333 0 0 1 11.093334 6.954667l164.010666 163.968a29.013333 29.013333 0 0 1-40.96 41.002666l-164.010666-163.968a28.928 28.928 0 0 1-6.144-9.045333 338.176 338.176 0 1 1 35.968-38.912z m-265.557333 70.826667a280.192 280.192 0 1 0 0-560.426667 280.192 280.192 0 0 0 0 560.384z" fill="currentColor" p-id="2927"></path></svg>
|
||||||
|
After Width: | Height: | Size: 510 B |
1
src/assets/icon/weixin.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1590495761583" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="6620" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><defs><style type="text/css"></style></defs><path d="M676.522667 359.296c10.666667 0 21.376 0.725333 31.872 1.962667-28.672-133.376-171.349333-232.576-334.293334-232.576-182.186667 0-331.264 124.16-331.264 281.770666 0 91.008 49.664 165.802667 132.693334 223.701334L142.336 733.866667l115.754667-58.026667c41.514667 8.149333 74.837333 16.554667 116.138666 16.554667 10.325333 0 20.650667-0.554667 30.976-1.28a249.045333 249.045333 0 0 1-10.154666-69.461334c-0.170667-144.768 123.989333-262.357333 281.429333-262.357333z m-178.090667-89.728c24.917333 0 41.472 16.384 41.472 41.301333 0 24.746667-16.554667 41.514667-41.472 41.514667-24.746667 0-49.706667-16.597333-49.706667-41.514667s24.746667-41.301333 49.706667-41.301333z m-231.893333 82.773333c-24.746667 0-49.92-16.554667-49.92-41.472s25.173333-41.301333 49.92-41.301333 41.301333 16.384 41.301333 41.301333-16.554667 41.514667-41.301333 41.514667z" fill="#1AAC18" p-id="6621"></path><path d="M978.944 617.557333c0-132.48-132.522667-240.426667-281.386667-240.426666-157.653333 0-281.770667 107.946667-281.770666 240.426666 0 132.693333 124.16 240.469333 281.770666 240.469334 32.938667 0 66.218667-8.362667 99.370667-16.554667l90.837333 49.664-24.96-82.773333c66.645333-49.749333 116.138667-115.968 116.138667-190.805334z m-372.778667-41.301333c-16.554667 0-33.109333-16.384-33.109333-33.152 0-16.554667 16.725333-33.109333 33.109333-33.109333 25.130667 0 41.514667 16.554667 41.514667 33.109333 0 16.768-16.384 33.152-41.514667 33.152z m182.186667 0c-16.341333 0-32.938667-16.384-32.938667-33.152 0-16.554667 16.597333-33.109333 32.981334-33.109333 24.746667 0 41.472 16.554667 41.472 33.109333 0 16.768-16.554667 33.152-41.472 33.152z" fill="#1AAC18" p-id="6622"></path></svg>
|
||||||
|
After Width: | Height: | Size: 2.0 KiB |
1
src/assets/icon/workbench-icon.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<svg t="1590478942182" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2618" width="200" height="200"><path d="M842.026667 727.594667H181.248V245.632h660.778667v481.962667z m-713.642667 0a52.906667 52.906667 0 0 0 52.864 52.906666h660.693333c29.269333 0 52.864-23.68 52.864-52.906666V245.632a52.906667 52.906667 0 0 0-52.906666-52.864H181.290667c-29.269333 0-52.906667 23.68-52.906667 52.906667v481.92z m629.333333 176.597333a26.368 26.368 0 0 0 26.368-26.410667v-1.194666a26.453333 26.453333 0 0 0-26.368-26.453334H265.557333a26.368 26.368 0 0 0-26.410666 26.453334v1.194666c0 14.592 11.818667 26.410667 26.410666 26.410667h492.16z m-273.109333-53.546667h52.864v-70.144h-51.626667l-1.28 70.144z" fill="currentColor" p-id="2619"></path><path d="M323.754667 530.773333a25.088 25.088 0 0 0 0 50.176h143.061333a25.088 25.088 0 0 0 0-50.133333H323.754667z m0-125.44a25.088 25.088 0 0 0 0 50.133334h353.749333a25.088 25.088 0 0 0 0.128-50.133334H323.754667z" fill="currentColor" p-id="2620"></path></svg>
|
||||||
|
After Width: | Height: | Size: 1.0 KiB |
1
src/assets/icon/yonghuguanli.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M702.293333 669.013333a54.613333 54.613333 0 0 0 0-23.466666A58.88 58.88 0 0 0 655.786667 597.333333h-2.56a58.026667 58.026667 0 0 0-66.133334 46.08 58.453333 58.453333 0 0 0 0 24.32 59.306667 59.306667 0 0 0 46.506667 46.933334h11.946667a57.6 57.6 0 0 0 56.746666-45.653334z m-57.173333 9.813334a24.32 24.32 0 0 1-24.32-24.32 24.32 24.32 0 1 1 24.32 24.32z" /><path fill="currentColor" d="M802.56 651.52a122.88 122.88 0 0 1-5.546667-27.733333 23.466667 23.466667 0 0 0-20.053333-18.346667h-2.56a30.293333 30.293333 0 0 1-30.293333-29.866667 53.333333 53.333333 0 0 1 0-8.106666 10.666667 10.666667 0 0 0 0-3.413334 27.306667 27.306667 0 0 0-9.386667-31.146666l-36.693333-20.906667h-10.666667a23.466667 23.466667 0 0 0-20.48 8.96 47.786667 47.786667 0 0 1-23.04 13.653333 49.066667 49.066667 0 0 1-21.76-11.52h-2.986667a29.013333 29.013333 0 0 0-20.48-8.96c-4.266667 0-6.826667 0-8.96 2.133334l-39.253333 20.48a28.16 28.16 0 0 0-8.96 31.146666 53.76 53.76 0 0 1 0 11.52 30.293333 30.293333 0 0 1-29.44 30.72 24.32 24.32 0 0 0-20.48 20.053334 188.586667 188.586667 0 0 0-4.266667 31.146666 82.346667 82.346667 0 0 0 4.266667 30.72 23.466667 23.466667 0 0 0 20.48 20.48 29.013333 29.013333 0 0 1 20.906667 8.533334 30.72 30.72 0 0 1 9.386666 20.906666 48.213333 48.213333 0 0 1 0 7.68 14.506667 14.506667 0 0 0 0 3.84 27.733333 27.733333 0 0 0 9.386667 31.146667l36.693333 20.48a17.493333 17.493333 0 0 1 9.386667 0 23.04 23.04 0 0 0 20.053333-8.96c3.84-3.84 15.786667-15.36 24.746667-15.36a45.653333 45.653333 0 0 1 25.173333 15.36 28.16 28.16 0 0 0 20.053334 8.96 22.186667 22.186667 0 0 0 11.52 0l37.12-20.48a28.16 28.16 0 0 0 8.96-31.146667 35.84 35.84 0 0 1 0-11.52 30.293333 30.293333 0 0 1 29.44-30.72h3.413333a24.32 24.32 0 0 0 20.48-20.053333 188.586667 188.586667 0 0 0 4.266667-31.146667z m-197.973333 109.653333a29.013333 29.013333 0 0 0-5.12 5.12l-21.333334-12.373333a61.013333 61.013333 0 0 0 3.84-17.92 64 64 0 0 0-53.76-62.72 26.453333 26.453333 0 0 0 0-5.546667 116.053333 116.053333 0 0 1 0-13.226666 90.453333 90.453333 0 0 1 0-10.24v-8.533334a62.72 62.72 0 0 0 53.333334-63.573333 49.493333 49.493333 0 0 0-3.84-17.493333l23.466666-12.8a30.72 30.72 0 0 0 9.386667 7.253333 57.6 57.6 0 0 0 34.133333 12.373333 60.586667 60.586667 0 0 0 34.133334-12.373333 34.56 34.56 0 0 1 6.4-5.546667h2.56l23.466666 12.8a61.013333 61.013333 0 0 0-3.84 17.493334 64.426667 64.426667 0 0 0 53.76 63.573333v5.12a114.346667 114.346667 0 0 1 0 14.08 52.906667 52.906667 0 0 1 0 18.346667 61.866667 61.866667 0 0 0-53.333333 63.146666 49.066667 49.066667 0 0 0 3.413333 17.493334l-23.466666 12.8-5.12-11.093334a61.013333 61.013333 0 0 0-35.84-12.8 71.68 71.68 0 0 0-36.266667 12.8 34.56 34.56 0 0 1-5.973333 3.84z" /><path fill="currentColor" d="M480.853333 754.773333H290.986667a30.72 30.72 0 0 1-29.013334-29.866666 209.066667 209.066667 0 0 1 188.586667-206.933334h22.613333a142.08 142.08 0 0 0 78.933334-25.173333l8.106666-5.973333a149.333333 149.333333 0 0 0 56.32-116.48 144.64 144.64 0 0 0-42.666666-104.533334A146.346667 146.346667 0 0 0 469.333333 221.866667a148.053333 148.053333 0 0 0-145.92 147.626666 150.613333 150.613333 0 0 0 56.746667 116.906667l6.4 3.84-6.4 2.56A250.026667 250.026667 0 0 0 221.013333 725.333333a70.826667 70.826667 0 0 0 70.4 71.68h187.733334a19.626667 19.626667 0 0 0 18.346666-20.053333 19.2 19.2 0 0 0-16.64-22.186667z m-116.48-384A106.666667 106.666667 0 1 1 469.333333 476.16a107.946667 107.946667 0 0 1-104.96-106.24z" /></svg>
|
||||||
|
After Width: | Height: | Size: 3.7 KiB |
1
src/assets/icon/yonghujiaose.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M695.466667 488.106667h-60.586667a20.053333 20.053333 0 1 0 0 40.106666h60.586667a20.053333 20.053333 0 0 0 0-40.106666zM480.853333 494.08v-2.56a148.053333 148.053333 0 0 0-85.333333-267.946667 148.053333 148.053333 0 0 0-85.333333 267.946667l3.413333 2.56h-3.84a262.826667 262.826667 0 0 0-174.506667 247.04 20.48 20.48 0 0 0 40.533334 0 221.866667 221.866667 0 0 1 443.306666 0 20.053333 20.053333 0 0 0 40.106667 0 262.826667 262.826667 0 0 0-178.346667-247.04z m-85.333333-15.36a107.946667 107.946667 0 1 1 0-215.893333 107.946667 107.946667 0 0 1 107.946667 107.946666 107.946667 107.946667 0 0 1-110.08 107.946667zM819.2 307.626667h-184.32a20.053333 20.053333 0 0 0 0 40.106666h184.32a20.053333 20.053333 0 0 0 0-40.106666zM755.2 396.8h-120.32a20.053333 20.053333 0 0 0 0 40.106667h120.32a20.053333 20.053333 0 1 0 0-40.106667z" /></svg>
|
||||||
|
After Width: | Height: | Size: 1.1 KiB |
1
src/assets/icon/zhushujuyuguanli.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M502.613333 269.226667h-20.053333a265.386667 265.386667 0 0 0-105.813333 21.76 273.92 273.92 0 0 0-144.64 144.213333 270.506667 270.506667 0 0 0 58.453333 298.666667 269.226667 269.226667 0 0 0 85.333333 58.026666 264.96 264.96 0 0 0 105.386667 21.76h3.413333a271.36 271.36 0 0 0 102.4-21.333333 276.48 276.48 0 0 0 144.64-144.64 272.213333 272.213333 0 0 0 21.333334-105.386667v-20.053333h-250.453334z m210.773334 291.84a229.12 229.12 0 0 1-66.986667 144.213333 232.96 232.96 0 0 1-163.413333 67.84 232.96 232.96 0 0 1-163.413334-67.84 232.106667 232.106667 0 0 1 145.066667-395.52v251.306667z" /><path fill="#ffffff" d="M792.746667 369.493333a250.453333 250.453333 0 0 0-55.466667-82.346666 259.413333 259.413333 0 0 0-82.346667-55.466667A256 256 0 0 0 554.666667 213.333333h-19.626667v279.04H810.666667V469.333333a256 256 0 0 0-17.92-99.84z m-218.88 81.066667V251.733333a219.306667 219.306667 0 0 1 198.4 198.826667z" /></svg>
|
||||||
|
After Width: | Height: | Size: 1.2 KiB |
1
src/assets/icon/zuzhifangwen.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M608.426667 258.986667A117.333333 117.333333 0 0 0 512 308.48a116.906667 116.906667 0 0 0-96-49.493333H219.306667V733.866667h182.186666c33.28 0 85.333333 9.813333 92.16 28.586666v2.56h37.546667v-2.986666c5.973333-17.92 58.453333-28.16 92.16-28.16h179.626667V258.986667zM423.253333 298.666667a70.826667 70.826667 0 0 1 69.973334 61.44v349.013333a162.133333 162.133333 0 0 0-91.733334-17.066667H261.546667V298.666667h161.706666z m341.333334 0v390.826666h-139.52a163.413333 163.413333 0 0 0-92.16 17.066667V359.68A69.546667 69.546667 0 0 1 602.026667 298.666667h162.986666z" /></svg>
|
||||||
|
After Width: | Height: | Size: 868 B |
1
src/assets/icon/zuzhiguanli.svg
Normal file
@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg class="icon" width="200px" height="200.00px" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg"><path fill="currentColor" d="M745.386667 631.466667v-42.666667A62.72 62.72 0 0 0 682.666667 526.08h-151.466667v-49.493333h47.36a59.733333 59.733333 0 0 0 58.88-61.013334v-128a62.72 62.72 0 0 0-61.44-60.16h-128a63.146667 63.146667 0 0 0-61.44 61.44v128a62.72 62.72 0 0 0 61.866667 61.013334h42.666666v49.493333H341.333333a62.72 62.72 0 0 0-61.44 61.44v42.666667a62.293333 62.293333 0 0 0-61.44 61.013333v42.666667a62.72 62.72 0 0 0 61.44 61.44h42.666667a61.013333 61.013333 0 0 0 42.666667-18.346667 59.733333 59.733333 0 0 0 16.64-42.666667v-42.666666a62.72 62.72 0 0 0-61.013334-61.44v-46.933334a22.613333 22.613333 0 0 1 20.48-20.48h150.186667v67.413334h-0.853333a63.146667 63.146667 0 0 0-61.44 61.013333v42.666667a63.146667 63.146667 0 0 0 61.44 61.44h45.226666a60.16 60.16 0 0 0 58.88-61.44v-42.666667a62.72 62.72 0 0 0-61.44-61.013333h-2.133333v-67.413334H682.666667a22.186667 22.186667 0 0 1 20.906666 23.466667v42.666667h-2.133333A63.146667 63.146667 0 0 0 640 692.906667v42.666666a63.146667 63.146667 0 0 0 61.44 61.44h44.8a61.013333 61.013333 0 0 0 42.666667-18.346666 59.733333 59.733333 0 0 0 16.64-42.666667v-42.666667a63.146667 63.146667 0 0 0-60.16-61.866666z m-423.68 38.4h2.986666a22.613333 22.613333 0 0 1 14.933334 7.253333 20.48 20.48 0 0 1 5.546666 16.213333v44.8a21.76 21.76 0 0 1-21.76 20.48h-46.933333a23.893333 23.893333 0 0 1-15.36-7.253333 24.746667 24.746667 0 0 1-5.12-16.213333v-42.666667a22.186667 22.186667 0 0 1 6.4-16.64 20.48 20.48 0 0 1 16.64-5.973333z m213.333333 0h2.56a22.613333 22.613333 0 0 1 15.36 7.253333 20.48 20.48 0 0 1 5.546667 16.213333v42.666667a2.56 2.56 0 0 1 0 2.56 22.613333 22.613333 0 0 1-7.253334 15.36 23.466667 23.466667 0 0 1-14.506666 5.546667h-46.933334a22.613333 22.613333 0 0 1-20.906666-23.466667v-45.653333a22.186667 22.186667 0 0 1 7.68-14.933334 20.906667 20.906667 0 0 1 16.213333-5.546666z m-85.333333-231.253334h-2.56a22.186667 22.186667 0 0 1-20.48-23.466666v-128a22.186667 22.186667 0 0 1 22.186666-20.48h131.413334a22.613333 22.613333 0 0 1 20.906666 23.466666v128a22.186667 22.186667 0 0 1-22.186666 20.48h-128z m320.426666 298.666667v2.56a21.333333 21.333333 0 0 1-7.68 15.36 21.76 21.76 0 0 1-14.506666 5.546667h-47.36a22.186667 22.186667 0 0 1-20.906667-23.466667v-46.933333a22.186667 22.186667 0 0 1 23.466667-20.48h42.666666a21.76 21.76 0 0 1 15.36 6.4l2.133334 2.133333a20.906667 20.906667 0 0 1 4.693333 14.933333z" /></svg>
|
||||||
|
After Width: | Height: | Size: 2.6 KiB |
BIN
src/assets/img/account-bg.png
Normal file
|
After Width: | Height: | Size: 173 KiB |
BIN
src/assets/img/close.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
src/assets/img/loading-small.gif
Normal file
|
After Width: | Height: | Size: 118 KiB |
BIN
src/assets/img/loading.gif
Normal file
|
After Width: | Height: | Size: 133 KiB |
BIN
src/assets/img/logo.png
Normal file
|
After Width: | Height: | Size: 28 KiB |
BIN
src/assets/img/refresh.png
Normal file
|
After Width: | Height: | Size: 1.0 KiB |
BIN
src/assets/img/slider.png
Normal file
|
After Width: | Height: | Size: 470 B |
322
src/assets/js/captcha.js
Normal file
@ -0,0 +1,322 @@
|
|||||||
|
'use strict'
|
||||||
|
|
||||||
|
var _typeof = typeof Symbol === 'function' && typeof Symbol.iterator === 'symbol' ? function (obj) { return typeof obj } : function (obj) { return obj && typeof Symbol === 'function' && obj.constructor === Symbol ? 'symbol' : typeof obj };
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
// var canvasRef = ''
|
||||||
|
var opts = {
|
||||||
|
imgurl: '',
|
||||||
|
cw: 60,
|
||||||
|
ch: 60,
|
||||||
|
precision: 5,
|
||||||
|
onSuccess: null,
|
||||||
|
onError: null,
|
||||||
|
successText: '',
|
||||||
|
failText: '',
|
||||||
|
eventinfo: {
|
||||||
|
flag: false,
|
||||||
|
left: 0,
|
||||||
|
clipleft: 0,
|
||||||
|
currentX: 0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function isArray(obj) {
|
||||||
|
return Object.prototype.toString.call(obj) === '[object Array]'
|
||||||
|
}
|
||||||
|
|
||||||
|
function createCaptchaBox(canvas) {
|
||||||
|
var captchaBox = document.createElement('div')
|
||||||
|
captchaBox.className = 'captcha-box'
|
||||||
|
captchaBox.style.width = canvas.width + 'px'
|
||||||
|
|
||||||
|
var dragBox = document.createElement('div')
|
||||||
|
dragBox.className = 'drag-box'
|
||||||
|
dragBox.id = 'drag-box'
|
||||||
|
|
||||||
|
var canvasBox = document.createElement('div')
|
||||||
|
canvasBox.className = 'canvas-box'
|
||||||
|
canvasBox.appendChild(canvas.cloneNode(true))
|
||||||
|
canvasBox.appendChild(createResult())
|
||||||
|
|
||||||
|
captchaBox.appendChild(canvasBox)
|
||||||
|
captchaBox.appendChild(createDragBar())
|
||||||
|
canvas.parentNode.replaceChild(captchaBox, canvas)
|
||||||
|
|
||||||
|
captchaBox.appendChild(dragBox)
|
||||||
|
|
||||||
|
return captchaBox
|
||||||
|
}
|
||||||
|
|
||||||
|
function createDragBar() {
|
||||||
|
var dragbar = document.createElement('div')
|
||||||
|
dragbar.className = 'captcha-dragbar'
|
||||||
|
dragbar.innerHTML = '\n <div class="drag-option-bg">\n <div class="drag-option">\n <div class="drag-track"></div>\n <div id="drag-slider" class="drag-slider"></div>\n <div class="drag-btn">\n <i id="drag-btn-refresh" class="refresh"></i>\n </div>\n </div>\n </div>\n '
|
||||||
|
return dragbar
|
||||||
|
}
|
||||||
|
|
||||||
|
function createResult() {
|
||||||
|
var result = document.createElement('div')
|
||||||
|
result.id = 'captcha-result'
|
||||||
|
result.className = 'captcha-result'
|
||||||
|
return result
|
||||||
|
}
|
||||||
|
|
||||||
|
function createCanvas(w, h) {
|
||||||
|
var canvas = document.createElement('canvas')
|
||||||
|
canvas.width = w
|
||||||
|
canvas.height = h
|
||||||
|
return canvas
|
||||||
|
}
|
||||||
|
|
||||||
|
function clipPath(ctx, startx, starty) {
|
||||||
|
startx = startx + 0.2
|
||||||
|
starty = starty + 0.2
|
||||||
|
|
||||||
|
var subw = parseInt((opts.cw - 1) / 6)
|
||||||
|
var subh = parseInt((opts.ch - 1) / 6)
|
||||||
|
var radius = Math.min(subw, subh)
|
||||||
|
var clipw = subw * 5 + 0.5
|
||||||
|
var cliph = subh * 5 + 0.5
|
||||||
|
|
||||||
|
ctx.beginPath()
|
||||||
|
ctx.moveTo(startx, starty)
|
||||||
|
ctx.lineTo(startx + clipw, starty)
|
||||||
|
ctx.lineTo(startx + clipw, starty + parseInt(cliph / 2) - radius)
|
||||||
|
ctx.arc(startx + clipw, starty + parseInt(cliph / 2), radius, -Math.PI / 2, Math.PI / 2, false)
|
||||||
|
ctx.lineTo(startx + clipw, starty + cliph)
|
||||||
|
ctx.lineTo(startx + clipw - (parseInt(clipw / 2) - radius), starty + cliph)
|
||||||
|
ctx.arc(startx + parseInt(clipw / 2), starty + cliph, radius, 0, Math.PI, false)
|
||||||
|
ctx.lineTo(startx, starty + cliph)
|
||||||
|
ctx.lineTo(startx, starty)
|
||||||
|
ctx.closePath()
|
||||||
|
}
|
||||||
|
|
||||||
|
function fillClip(canvas, startx, starty, alpha) {
|
||||||
|
var ctx = canvas.getContext('2d')
|
||||||
|
clipPath(ctx, startx, starty)
|
||||||
|
|
||||||
|
ctx.fillStyle = 'rgba(0,0,0, ' + alpha + ')'
|
||||||
|
ctx.fill()
|
||||||
|
}
|
||||||
|
|
||||||
|
function strokeClip(canvas, startx, starty) {
|
||||||
|
var ctx = canvas.getContext('2d')
|
||||||
|
clipPath(ctx, startx, starty)
|
||||||
|
|
||||||
|
ctx.strokeStyle = '#fff'
|
||||||
|
ctx.stroke()
|
||||||
|
}
|
||||||
|
|
||||||
|
function randomNum(min, max) {
|
||||||
|
var rangeNum = max - min
|
||||||
|
var num = min + Math.round(Math.random() * rangeNum)
|
||||||
|
return num
|
||||||
|
}
|
||||||
|
|
||||||
|
function getStartPoint(w, h) {
|
||||||
|
var padding = 10
|
||||||
|
var startw = opts.cw + padding
|
||||||
|
var starth = opts.ch + padding
|
||||||
|
if (w < startw * 2 || h < starth) return
|
||||||
|
|
||||||
|
var startPoint = {
|
||||||
|
startx: randomNum(startw, w - startw),
|
||||||
|
starty: randomNum(padding, h - starth)
|
||||||
|
}
|
||||||
|
return startPoint
|
||||||
|
}
|
||||||
|
|
||||||
|
function eventInit(startx, refreshMethod) {
|
||||||
|
var dragBox = document.getElementById('drag-box')
|
||||||
|
var slider = document.getElementById('drag-slider')
|
||||||
|
var clipcanvas = document.getElementById('captcha-clipcanvas')
|
||||||
|
var result = document.getElementById('captcha-result')
|
||||||
|
var refreshBtn = document.getElementById('drag-btn-refresh')
|
||||||
|
var resultClass = result.className
|
||||||
|
|
||||||
|
opts.eventinfo.left = parseFloat(getComputedStyle(slider, null).getPropertyValue('left'))
|
||||||
|
opts.eventinfo.clipleft = parseFloat(getComputedStyle(clipcanvas, null).getPropertyValue('left'))
|
||||||
|
|
||||||
|
// var close = function close() {}
|
||||||
|
var reset = function reset() {
|
||||||
|
var boxClassName = window.captchaBox.className
|
||||||
|
|
||||||
|
// window.captchaBox.className += ' shake';
|
||||||
|
|
||||||
|
setTimeout(function () {
|
||||||
|
slider.style.left = '10px'
|
||||||
|
clipcanvas.style.left = '20px'
|
||||||
|
|
||||||
|
opts.eventinfo.left = 10
|
||||||
|
opts.eventinfo.clipleft = 20
|
||||||
|
}, 500)
|
||||||
|
setTimeout(function () {
|
||||||
|
result.className = resultClass
|
||||||
|
window.captchaBox.className = boxClassName
|
||||||
|
}, 1000)
|
||||||
|
}
|
||||||
|
|
||||||
|
var moveStart = function moveStart(e) {
|
||||||
|
opts.eventinfo.flag = true
|
||||||
|
if (e.touches) {
|
||||||
|
opts.eventinfo.currentX = e.touches[0].clientX
|
||||||
|
} else {
|
||||||
|
opts.eventinfo.currentX = e.clientX
|
||||||
|
}
|
||||||
|
dragBox.className = dragBox.className + ' drag-box-over'
|
||||||
|
}
|
||||||
|
var move = function move(e) {
|
||||||
|
if (opts.eventinfo.flag) {
|
||||||
|
if (e.touches) {
|
||||||
|
var disX = e.touches[0].clientX - opts.eventinfo.currentX
|
||||||
|
} else {
|
||||||
|
disX = e.clientX - opts.eventinfo.currentX
|
||||||
|
}
|
||||||
|
if (disX >= -10 && disX <= (dragBox.clientWidth - opts.cw - 10)) {
|
||||||
|
slider.style.left = opts.eventinfo.left + disX + 'px'
|
||||||
|
clipcanvas.style.left = opts.eventinfo.clipleft + disX + 'px'
|
||||||
|
} else {
|
||||||
|
e.preventDefault()
|
||||||
|
}
|
||||||
|
|
||||||
|
if (e.preventDefault) {}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var moveEnd = function moveEnd(e) {
|
||||||
|
dragBox.className = 'drag-box'
|
||||||
|
if (opts.eventinfo.flag) {
|
||||||
|
opts.eventinfo.flag = false
|
||||||
|
opts.eventinfo.left = parseFloat(getComputedStyle(slider, null).getPropertyValue('left'))
|
||||||
|
opts.eventinfo.clipleft = parseFloat(getComputedStyle(clipcanvas, null).getPropertyValue('left'))
|
||||||
|
|
||||||
|
if (Math.abs(startx - opts.eventinfo.left) <= opts.precision) {
|
||||||
|
result.innerHTML = opts.successText
|
||||||
|
result.className = resultClass + ' success'
|
||||||
|
opts.onSuccess && opts.onSuccess()
|
||||||
|
} else {
|
||||||
|
result.innerHTML = opts.failText
|
||||||
|
result.className = resultClass + ' fail'
|
||||||
|
|
||||||
|
reset()
|
||||||
|
opts.onError && opts.onError()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
window.captchaMoveEnd = moveEnd
|
||||||
|
|
||||||
|
slider.addEventListener('touchstart', moveStart)
|
||||||
|
slider.addEventListener('mousedown', moveStart)
|
||||||
|
slider.addEventListener('touchmove', move)
|
||||||
|
slider.addEventListener('mousemove', move)
|
||||||
|
document.addEventListener('touchend', moveEnd)
|
||||||
|
document.addEventListener('mouseup', moveEnd)
|
||||||
|
|
||||||
|
dragBox.addEventListener('touchmove', move)
|
||||||
|
dragBox.addEventListener('mousemove', move)
|
||||||
|
|
||||||
|
refreshBtn.addEventListener('click', refreshMethod)
|
||||||
|
}
|
||||||
|
|
||||||
|
var imgCaptcha = function imgCaptcha(canvas, options) {
|
||||||
|
if (window.captchaMoveEnd) {
|
||||||
|
document.removeEventListener('touchend', window.captchaMoveEnd)
|
||||||
|
document.removeEventListener('mouseup', window.captchaMoveEnd)
|
||||||
|
window.captchaMoveEnd = undefined
|
||||||
|
}
|
||||||
|
|
||||||
|
for (var k in options) {
|
||||||
|
if (options.hasOwnProperty(k)) {
|
||||||
|
opts[k] = options[k]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!canvas || !opts.imgurl) {
|
||||||
|
console.error('verify params is error')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if (canvas.tagName !== 'CANVAS') {
|
||||||
|
console.error('param canvas must be canvas')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
const resetCanvas = canvas.cloneNode()
|
||||||
|
|
||||||
|
window.captchaBox = createCaptchaBox(canvas)
|
||||||
|
|
||||||
|
var refresh = function refresh() {
|
||||||
|
if (options.container) {
|
||||||
|
options.container.innerHTML = ''
|
||||||
|
const innerCanvas = resetCanvas.cloneNode()
|
||||||
|
options.container.appendChild(innerCanvas)
|
||||||
|
imgCaptcha(innerCanvas, options)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
readerCaptcha(refresh)
|
||||||
|
|
||||||
|
return {
|
||||||
|
refresh
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var readerCaptcha = function readerCaptcha(refresh) {
|
||||||
|
let canvas = window.captchaBox.children[0].children[0]
|
||||||
|
canvas.className += canvas.className + ' captcha-bg'
|
||||||
|
var img = new Image()
|
||||||
|
img.onload = function () {
|
||||||
|
var w = canvas.width
|
||||||
|
var h = canvas.height
|
||||||
|
|
||||||
|
var startPoint = getStartPoint(w, h)
|
||||||
|
if (!startPoint) {
|
||||||
|
console.error('can not get the start point')
|
||||||
|
return
|
||||||
|
}
|
||||||
|
var startx = startPoint.startx
|
||||||
|
var starty = startPoint.starty
|
||||||
|
|
||||||
|
canvas.getContext('2d').drawImage(img, 0, 0, w, h)
|
||||||
|
fillClip(canvas, startx, starty, 0.7)
|
||||||
|
|
||||||
|
var sourceCanvas = createCanvas(w, h)
|
||||||
|
var sctx = sourceCanvas.getContext('2d')
|
||||||
|
sctx.drawImage(img, 0, 0, w, h)
|
||||||
|
sctx.globalCompositeOperation = 'destination-in'
|
||||||
|
|
||||||
|
var destCanvas = createCanvas(opts.cw, opts.ch)
|
||||||
|
fillClip(destCanvas, 0, 0, 1)
|
||||||
|
|
||||||
|
sctx.drawImage(destCanvas, startx, starty)
|
||||||
|
|
||||||
|
var clipCanvas = createCanvas(opts.cw, opts.ch)
|
||||||
|
clipCanvas.id = 'captcha-clipcanvas'
|
||||||
|
clipCanvas.className = 'captcha-clipcanvas'
|
||||||
|
clipCanvas.getContext('2d').putImageData(sctx.getImageData(startx, starty, opts.cw, opts.ch), 0, 0)
|
||||||
|
|
||||||
|
strokeClip(clipCanvas, 0, 0)
|
||||||
|
|
||||||
|
clipCanvas.style.top = starty + 'px'
|
||||||
|
// captchaBox.appendChild(clipCanvas)
|
||||||
|
|
||||||
|
eventInit(startx, refresh)
|
||||||
|
}
|
||||||
|
|
||||||
|
opts.imgurl = isArray(opts.imgurl) ? opts.imgurl : [opts.imgurl]
|
||||||
|
|
||||||
|
var urlIndex = Math.floor(Math.random() * opts.imgurl.length)
|
||||||
|
img.src = opts.imgurl[urlIndex]
|
||||||
|
}
|
||||||
|
|
||||||
|
// if ((typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) === 'object') {
|
||||||
|
// module.exports = imgCaptcha
|
||||||
|
// } else if (typeof define === 'function' && define.amd) {
|
||||||
|
// define([], function () {
|
||||||
|
// return imgCaptcha
|
||||||
|
// })
|
||||||
|
// } else if (window) {
|
||||||
|
// window.imgCaptcha = imgCaptcha
|
||||||
|
// }
|
||||||
|
})()
|
||||||
33
src/assets/js/personDemo.json
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"id":"123",
|
||||||
|
"userName":"张嘉豪",
|
||||||
|
"department":"结构开发部"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id":"2131",
|
||||||
|
"userName":"李四",
|
||||||
|
"department":"结构开发部"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id":"3214",
|
||||||
|
"userName":"杜学凯",
|
||||||
|
"department":"平台部"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id":"1231",
|
||||||
|
"userName":"李亚松",
|
||||||
|
"department":"平台部"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id":"1232",
|
||||||
|
"userName":"王五",
|
||||||
|
"department":"结构开发部"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id":"1233",
|
||||||
|
"userName":"张三",
|
||||||
|
"department":"平台部"
|
||||||
|
},
|
||||||
|
|
||||||
|
]
|
||||||
32
src/assets/scss/app-variable.scss
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
// 主题色
|
||||||
|
$--app-primary-color: #027AFF;
|
||||||
|
$--app-sky-color: #1296db;
|
||||||
|
$--app-danger-color: #F56C6C;
|
||||||
|
$--app-info-color: #F5F7FA;
|
||||||
|
$--app-notice-color: #B2B2B2;
|
||||||
|
$--app-selected-color: #E6F2FF;
|
||||||
|
$--app-active-color: #7ED321;
|
||||||
|
$--app-success-color: #5ebf70;
|
||||||
|
$--app-fail-color: #de715b;
|
||||||
|
$--app-light-color: #ffffff;
|
||||||
|
$--app-opacity-color: #eeeeee;
|
||||||
|
$--app-warning-color: #F5A623;
|
||||||
|
$--app-description-color: #929292;
|
||||||
|
// 标准盒子边框色
|
||||||
|
$--app-border-color: #DCDFE6;
|
||||||
|
// 分割线颜色
|
||||||
|
$--app-split-color: #EBEEF5;
|
||||||
|
// 标准字体颜色
|
||||||
|
$--app-font-color: #303133;
|
||||||
|
// 标准背景色
|
||||||
|
$--app-bg-Color: #F7F7F7;
|
||||||
|
// 标准盒子阴影
|
||||||
|
$--app-box-shadow: 0 0 8px 0 $--app-split-color;
|
||||||
|
// 标准圆角
|
||||||
|
$--app-border-radius: 2px;
|
||||||
|
// 标准加粗字体
|
||||||
|
$--app-font-weight: bold;
|
||||||
|
// 标准字体大小
|
||||||
|
$--app-font-size: 12px;
|
||||||
|
// 标题字体大小
|
||||||
|
$--app-title-fontSize: 14px;
|
||||||