parent
76d9a8bf86
commit
e08e65995f
@ -0,0 +1,19 @@
|
||||
root = true
|
||||
|
||||
[*]
|
||||
charset=utf-8
|
||||
end_of_line=lf
|
||||
insert_final_newline=true
|
||||
indent_style=space
|
||||
indent_size=2
|
||||
max_line_length = 100
|
||||
|
||||
[*.{yml,yaml,json}]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
||||
|
||||
[Makefile]
|
||||
indent_style = tab
|
@ -0,0 +1,17 @@
|
||||
# 端口号
|
||||
VITE_PORT = 8090
|
||||
|
||||
# 网站标题
|
||||
VITE_GLOB_APP_TITLE = 云息Saas平台
|
||||
|
||||
# 简称,用于配置文件名字 不要出现空格、数字开头等特殊字符
|
||||
VITE_GLOB_APP_SHORT_NAME = Yunxi_Saas_Admin
|
||||
|
||||
# 租户开关
|
||||
VITE_GLOB_APP_TENANT_ENABLE = true
|
||||
|
||||
# 验证码的开关
|
||||
VITE_GLOB_APP_CAPTCHA_ENABLE = true
|
||||
|
||||
# 百度统计
|
||||
VITE_APP_BAIDU_CODE = eb21166668bf766b9d059a6fd1c10777
|
@ -0,0 +1,13 @@
|
||||
*.sh
|
||||
node_modules
|
||||
*.md
|
||||
*.woff
|
||||
*.ttf
|
||||
.vscode
|
||||
.idea
|
||||
dist
|
||||
/public
|
||||
/docs
|
||||
.local
|
||||
/bin
|
||||
Dockerfile
|
@ -0,0 +1,10 @@
|
||||
const process = require('node:process')
|
||||
|
||||
process.env.ESLINT_TSCONFIG = 'tsconfig.json'
|
||||
|
||||
module.exports = {
|
||||
extends: ['@xingyuv', '@unocss'],
|
||||
rules: {
|
||||
'no-console': 'off',
|
||||
},
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
# https://docs.github.com/cn/get-started/getting-started-with-git/configuring-git-to-handle-line-endings
|
||||
|
||||
# Automatically normalize line endings (to LF) for all text-based files.
|
||||
* text=auto eol=lf
|
||||
|
||||
# Declare files that will always have CRLF line endings on checkout.
|
||||
*.{cmd,[cC][mM][dD]} text eol=crlf
|
||||
*.{bat,[bB][aA][tT]} text eol=crlf
|
||||
|
||||
# Denote all files that are truly binary and should not be modified.
|
||||
*.{ico,png,jpg,jpeg,gif,webp,svg,woff,woff2} binary
|
@ -0,0 +1,39 @@
|
||||
node_modules
|
||||
.DS_Store
|
||||
dist
|
||||
.npmrc
|
||||
.cache
|
||||
|
||||
tests/server/static
|
||||
tests/server/static/upload
|
||||
|
||||
*.local
|
||||
# local env files
|
||||
.env.local
|
||||
.env.*.local
|
||||
.env.development
|
||||
.eslintcache
|
||||
|
||||
# Log files
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
pnpm-debug.log*
|
||||
|
||||
# Editor directories and files
|
||||
.idea
|
||||
# .vscode
|
||||
*.suo
|
||||
*.ntvs*
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
|
||||
package-lock.json
|
||||
|
||||
.history
|
||||
.vscode
|
||||
.vite
|
||||
|
||||
|
||||
|
@ -0,0 +1,6 @@
|
||||
ports:
|
||||
- port: 3344
|
||||
onOpen: open-preview
|
||||
tasks:
|
||||
- init: pnpm install
|
||||
command: pnpm run dev
|
@ -0,0 +1,16 @@
|
||||
{
|
||||
"extends": [
|
||||
"development"
|
||||
],
|
||||
"hints": {
|
||||
"compat-api/css": [
|
||||
"default",
|
||||
{
|
||||
"ignore": [
|
||||
"-webkit-tap-highlight-color",
|
||||
"text-size-adjust"
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
/dist/*
|
||||
.local
|
||||
.output.js
|
||||
/node_modules/**
|
||||
|
||||
**/*.svg
|
||||
**/*.sh
|
||||
|
||||
/public/*
|
@ -0,0 +1,3 @@
|
||||
/dist/*
|
||||
/public/*
|
||||
public/*
|
@ -0,0 +1,21 @@
|
||||
MIT License
|
||||
|
||||
Copyright (c) 2023-present, xingyuv
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
@ -0,0 +1,91 @@
|
||||
const fs = require('node:fs')
|
||||
const path = require('node:path')
|
||||
const { execSync } = require('node:child_process')
|
||||
|
||||
const scopes = fs
|
||||
.readdirSync(path.resolve(__dirname, 'src'), { withFileTypes: true })
|
||||
.filter(dirent => dirent.isDirectory())
|
||||
.map(dirent => dirent.name.replace(/s$/, ''))
|
||||
|
||||
// precomputed scope
|
||||
const scopeComplete = execSync('git status --porcelain || true')
|
||||
.toString()
|
||||
.trim()
|
||||
.split('\n')
|
||||
.find(r => ~r.indexOf('M src'))
|
||||
?.replace(/(\/)/g, '%%')
|
||||
?.match(/src%%((\w|-)*)/)?.[1]
|
||||
?.replace(/s$/, '')
|
||||
|
||||
/** @type {import('cz-git').UserConfig} */
|
||||
module.exports = {
|
||||
ignores: [commit => commit.includes('init')],
|
||||
extends: ['@commitlint/config-conventional'],
|
||||
rules: {
|
||||
'body-leading-blank': [2, 'always'],
|
||||
'footer-leading-blank': [1, 'always'],
|
||||
'header-max-length': [2, 'always', 108],
|
||||
'subject-empty': [2, 'never'],
|
||||
'type-empty': [2, 'never'],
|
||||
'subject-case': [0],
|
||||
'type-enum': [
|
||||
2,
|
||||
'always',
|
||||
['feat', 'fix', 'perf', 'style', 'docs', 'test', 'refactor', 'build', 'ci', 'chore', 'revert', 'wip', 'workflow', 'types', 'release'],
|
||||
],
|
||||
},
|
||||
prompt: {
|
||||
/** @use `yarn commit :f` */
|
||||
alias: {
|
||||
f: 'docs: fix typos',
|
||||
r: 'docs: update README',
|
||||
s: 'style: update code format',
|
||||
b: 'build: bump dependencies',
|
||||
c: 'chore: update config',
|
||||
},
|
||||
customScopesAlign: !scopeComplete ? 'top' : 'bottom',
|
||||
defaultScope: scopeComplete,
|
||||
scopes: [...scopes, 'mock'],
|
||||
allowEmptyIssuePrefixs: false,
|
||||
allowCustomIssuePrefixs: false,
|
||||
|
||||
// English
|
||||
typesAppend: [
|
||||
{ value: 'wip', name: 'wip: work in process' },
|
||||
{ value: 'workflow', name: 'workflow: workflow improvements' },
|
||||
{ value: 'types', name: 'types: type definition file changes' },
|
||||
],
|
||||
|
||||
// 中英文对照版
|
||||
messages: {
|
||||
type: '选择你要提交的类型 :',
|
||||
scope: '选择一个提交范围 (可选):',
|
||||
customScope: '请输入自定义的提交范围 :',
|
||||
subject: '填写简短精炼的变更描述 :\n',
|
||||
body: '填写更加详细的变更描述 (可选)。使用 "|" 换行 :\n',
|
||||
breaking: '列举非兼容性重大的变更 (可选)。使用 "|" 换行 :\n',
|
||||
footerPrefixsSelect: '选择关联issue前缀 (可选):',
|
||||
customFooterPrefixs: '输入自定义issue前缀 :',
|
||||
footer: '列举关联issue (可选) 例如: #31, #I3244 :\n',
|
||||
confirmCommit: '是否提交或修改commit ?',
|
||||
},
|
||||
types: [
|
||||
{ value: 'feat', name: 'feat: 新增功能' },
|
||||
{ value: 'fix', name: 'fix: 修复缺陷' },
|
||||
{ value: 'docs', name: 'docs: 文档变更' },
|
||||
{ value: 'style', name: 'style: 代码格式' },
|
||||
{ value: 'refactor', name: 'refactor: 代码重构' },
|
||||
{ value: 'perf', name: 'perf: 性能优化' },
|
||||
{ value: 'test', name: 'test: 添加疏漏测试或已有测试改动' },
|
||||
{ value: 'build', name: 'build: 构建流程、外部依赖变更 (如升级 npm 包、修改打包配置等)' },
|
||||
{ value: 'ci', name: 'ci: 修改 CI 配置、脚本' },
|
||||
{ value: 'revert', name: 'revert: 回滚 commit' },
|
||||
{ value: 'chore', name: 'chore: 对构建过程或辅助工具和库的更改 (不影响源文件、测试用例)' },
|
||||
{ value: 'wip', name: 'wip: 正在开发中' },
|
||||
{ value: 'workflow', name: 'workflow: 工作流程改进' },
|
||||
{ value: 'types', name: 'types: 类型定义文件修改' },
|
||||
],
|
||||
emptyScopesAlias: 'empty: 不填写',
|
||||
customScopesAlias: 'custom: 自定义',
|
||||
},
|
||||
}
|
@ -0,0 +1,161 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en" id="htmlRoot">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
|
||||
<meta name="renderer" content="webkit" />
|
||||
<meta
|
||||
name="viewport"
|
||||
content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=0"
|
||||
/>
|
||||
<title>%VITE_GLOB_APP_TITLE%</title>
|
||||
<link rel="icon" href="/favicon.ico" />
|
||||
</head>
|
||||
<body>
|
||||
<script>
|
||||
(() => {
|
||||
let htmlRoot = document.getElementById('htmlRoot')
|
||||
let theme = window.localStorage.getItem('__APP__DARK__MODE__')
|
||||
if (htmlRoot && theme) {
|
||||
htmlRoot.setAttribute('data-theme', theme)
|
||||
theme = htmlRoot = null
|
||||
}
|
||||
})()
|
||||
</script>
|
||||
<div id="app">
|
||||
<style>
|
||||
html[data-theme="dark"] {
|
||||
.app-loading {
|
||||
background-color: #2c344a;
|
||||
|
||||
.app-loading-title {
|
||||
color: rgb(255 255 255 / 85%);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.app-loading {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
background-color: #f4f7f9;
|
||||
}
|
||||
|
||||
.app-loading .app-loading-wrap {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
display: flex;
|
||||
transform: translate3d(-50%, -50%, 0);
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.app-loading .dots {
|
||||
display: flex;
|
||||
padding: 98px;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.app-loading .app-loading-title {
|
||||
display: flex;
|
||||
margin-top: 30px;
|
||||
font-size: 30px;
|
||||
color: rgb(0 0 0 / 85%);
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.app-loading .app-loading-logo {
|
||||
display: block;
|
||||
width: 90px;
|
||||
margin: 0 auto;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.dot {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
margin-top: 30px;
|
||||
font-size: 32px;
|
||||
transform: rotate(45deg);
|
||||
box-sizing: border-box;
|
||||
animation: antRotate 1.2s infinite linear;
|
||||
}
|
||||
|
||||
.dot i {
|
||||
position: absolute;
|
||||
display: block;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
background-color: #0065cc;
|
||||
border-radius: 100%;
|
||||
opacity: 30%;
|
||||
transform: scale(0.75);
|
||||
animation: antSpinMove 1s infinite linear alternate;
|
||||
transform-origin: 50% 50%;
|
||||
}
|
||||
|
||||
.dot i:nth-child(1) {
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.dot i:nth-child(2) {
|
||||
top: 0;
|
||||
right: 0;
|
||||
animation-delay: 0.4s;
|
||||
}
|
||||
|
||||
.dot i:nth-child(3) {
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
animation-delay: 0.8s;
|
||||
}
|
||||
|
||||
.dot i:nth-child(4) {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
animation-delay: 1.2s;
|
||||
}
|
||||
@keyframes antRotate {
|
||||
to {
|
||||
transform: rotate(405deg);
|
||||
}
|
||||
}
|
||||
@keyframes antRotate {
|
||||
to {
|
||||
transform: rotate(405deg);
|
||||
}
|
||||
}
|
||||
@keyframes antSpinMove {
|
||||
to {
|
||||
opacity: 100%;
|
||||
}
|
||||
}
|
||||
@keyframes antSpinMove {
|
||||
to {
|
||||
opacity: 100%;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
<div class="app-loading">
|
||||
<div class="app-loading-wrap">
|
||||
<img src="/resource/img/logo.png" class="app-loading-logo" alt="Logo" />
|
||||
<div class="app-loading-dots">
|
||||
<span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
|
||||
</div>
|
||||
<div class="app-loading-title">%VITE_GLOB_APP_TITLE%</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="module" src="/src/main.ts"></script>
|
||||
</body>
|
||||
</html>
|
@ -0,0 +1,169 @@
|
||||
{
|
||||
"name": "yudao-ui-admin-vben",
|
||||
"version": "1.8.1-snapshot",
|
||||
"packageManager": "pnpm@8.6.0",
|
||||
"author": {
|
||||
"name": "xingyuv",
|
||||
"email": "xingyu4j@vip.qq.com",
|
||||
"url": "https://gitee.com/xingyuv"
|
||||
},
|
||||
"license": "MIT",
|
||||
"homepage": "https://gitee.com/xingyuv",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://gitee.com/xingyuv/vue-vben-admin.git"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://gitee.com/xingyuv/issues"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">= 18.0.0",
|
||||
"pnpm": ">=8.6.0"
|
||||
},
|
||||
"scripts": {
|
||||
"commit": "czg",
|
||||
"bootstrap": "pnpm install",
|
||||
"serve": "pnpm dev",
|
||||
"dev": "vite",
|
||||
"front": "vite --mode front",
|
||||
"build": "cross-env NODE_ENV=production NODE_OPTIONS=--max-old-space-size=8192 vite build && esno ./build/script/postBuild.ts",
|
||||
"build:test": "cross-env NODE_OPTIONS=--max-old-space-size=8192 vite build --mode test && esno ./build/script/postBuild.ts",
|
||||
"build:static": "cross-env NODE_OPTIONS=--max-old-space-size=8192 vite build --mode static && esno ./build/script/postBuild.ts",
|
||||
"build:no-cache": "pnpm clean:cache && pnpm build",
|
||||
"report": "cross-env REPORT=true pnpm build",
|
||||
"type:check": "vue-tsc --noEmit --skipLibCheck",
|
||||
"preview": "pnpm build && vite preview",
|
||||
"preview:dist": "vite preview",
|
||||
"clean:cache": "rimraf node_modules/.cache/ && rimraf node_modules/.vite",
|
||||
"clean:lib": "rimraf node_modules",
|
||||
"lint": "eslint \"src/**/*.{vue,ts,tsx}\"",
|
||||
"lint:fix": "eslint \"src/**/*.{vue,ts,tsx}\" --fix",
|
||||
"lint:stylelint": "stylelint \"src/**/*.{vue,css,less,scss}\" --fix --cache --cache-location node_modules/.cache/stylelint/",
|
||||
"lint:lint-staged": "lint-staged",
|
||||
"npm:check": "npx npm-check-updates",
|
||||
"reinstall": "rimraf pnpm-lock.yaml && rimraf package.lock.json && rimraf node_modules && pnpm bootstrap",
|
||||
"prepare": "husky install",
|
||||
"gen:icon": "esno ./build/generate/icon/index.ts"
|
||||
},
|
||||
"dependencies": {
|
||||
"@ant-design/colors": "^7.0.0",
|
||||
"@ant-design/icons-vue": "^7.0.0",
|
||||
"@iconify/iconify": "^3.1.1",
|
||||
"@videojs-player/vue": "^1.0.0",
|
||||
"@vue/runtime-core": "^3.3.4",
|
||||
"@vueuse/core": "^10.4.1",
|
||||
"@zxcvbn-ts/core": "^3.0.4",
|
||||
"ant-design-vue": "^4.0.3",
|
||||
"axios": "^1.5.0",
|
||||
"benz-amr-recorder": "^1.1.5",
|
||||
"codemirror": "^5.65.3",
|
||||
"cron-parser": "^4.9.0",
|
||||
"cropperjs": "^1.6.1",
|
||||
"crypto-js": "^4.1.1",
|
||||
"dayjs": "^1.11.10",
|
||||
"echarts": "^5.4.3",
|
||||
"lodash-es": "^4.17.21",
|
||||
"nprogress": "^0.2.0",
|
||||
"path-to-regexp": "^6.2.1",
|
||||
"pinia": "^2.1.6",
|
||||
"print-js": "^1.6.0",
|
||||
"qs": "^6.11.2",
|
||||
"resize-observer-polyfill": "^1.5.1",
|
||||
"sortablejs": "^1.15.0",
|
||||
"tinymce": "^5.10.7",
|
||||
"vditor": "^3.9.5",
|
||||
"video-js": "^0.7.0",
|
||||
"vue": "^3.3.4",
|
||||
"vue-i18n": "^9.4.1",
|
||||
"vue-json-pretty": "^2.2.4",
|
||||
"vue-router": "^4.2.5",
|
||||
"vue-types": "^5.1.1",
|
||||
"vuedraggable": "^4.1.0",
|
||||
"xlsx": "^0.18.5"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@commitlint/cli": "^17.7.1",
|
||||
"@commitlint/config-conventional": "^17.7.0",
|
||||
"@iconify/json": "^2.2.119",
|
||||
"@purge-icons/generated": "^0.9.0",
|
||||
"@types/codemirror": "^5.60.10",
|
||||
"@types/crypto-js": "^4.1.2",
|
||||
"@types/fs-extra": "^11.0.2",
|
||||
"@types/inquirer": "^9.0.3",
|
||||
"@types/lodash-es": "^4.17.9",
|
||||
"@types/node": "^20.6.0",
|
||||
"@types/nprogress": "^0.2.1",
|
||||
"@types/qs": "^6.9.8",
|
||||
"@types/sortablejs": "^1.15.2",
|
||||
"@unocss/eslint-config": "^0.56.1",
|
||||
"@vitejs/plugin-vue": "4.3.4",
|
||||
"@vitejs/plugin-vue-jsx": "^3.0.2",
|
||||
"@vue/compiler-sfc": "^3.3.4",
|
||||
"@xingyuv/eslint-config": "^0.1.6",
|
||||
"cross-env": "^7.0.3",
|
||||
"cz-git": "^1.7.1",
|
||||
"czg": "^1.7.1",
|
||||
"dotenv": "^16.3.1",
|
||||
"eslint": "^8.50.0",
|
||||
"esno": "^0.17.0",
|
||||
"fs-extra": "^11.1.1",
|
||||
"husky": "^8.0.3",
|
||||
"inquirer": "^9.2.11",
|
||||
"less": "^4.2.0",
|
||||
"lint-staged": "^14.0.1",
|
||||
"picocolors": "^1.0.0",
|
||||
"postcss": "^8.4.30",
|
||||
"postcss-html": "^1.5.0",
|
||||
"postcss-less": "^6.0.0",
|
||||
"prettier": "^3.0.3",
|
||||
"rimraf": "^5.0.1",
|
||||
"rollup": "^3.29.3",
|
||||
"rollup-plugin-visualizer": "^5.9.2",
|
||||
"stylelint": "^15.10.3",
|
||||
"stylelint-config-recess-order": "^4.3.0",
|
||||
"stylelint-config-recommended": "^13.0.0",
|
||||
"stylelint-config-recommended-vue": "^1.5.0",
|
||||
"stylelint-config-standard": "^34.0.0",
|
||||
"stylelint-order": "^6.0.3",
|
||||
"stylelint-prettier": "^4.0.2",
|
||||
"terser": "^5.20.0",
|
||||
"typescript": "^5.2.2",
|
||||
"unocss": "^0.56.1",
|
||||
"vite": "^4.4.9",
|
||||
"vite-plugin-compression": "^0.5.1",
|
||||
"vite-plugin-mkcert": "^1.16.0",
|
||||
"vite-plugin-progress": "^0.0.7",
|
||||
"vite-plugin-purge-icons": "^0.9.2",
|
||||
"vite-plugin-pwa": "^0.16.5",
|
||||
"vite-plugin-svg-icons": "^2.0.1",
|
||||
"vite-vue-plugin-html": "^1.0.2",
|
||||
"vue-eslint-parser": "^9.3.1",
|
||||
"vue-tsc": "^1.8.13"
|
||||
},
|
||||
"lint-staged": {
|
||||
"*.{js,jsx,ts,tsx}": [
|
||||
"eslint --fix"
|
||||
],
|
||||
"{!(package)*.json,*.code-snippets,.!(browserslist)*rc}": [
|
||||
"prettier --write--parser json"
|
||||
],
|
||||
"package.json": [
|
||||
"prettier --write"
|
||||
],
|
||||
"*.vue": [
|
||||
"eslint --fix",
|
||||
"stylelint --fix"
|
||||
],
|
||||
"*.{scss,less,styl,html}": [
|
||||
"stylelint --fix"
|
||||
],
|
||||
"*.md": [
|
||||
"prettier --write"
|
||||
]
|
||||
},
|
||||
"config": {
|
||||
"commitizen": {
|
||||
"path": "node_modules/cz-git"
|
||||
}
|
||||
}
|
||||
}
|
File diff suppressed because it is too large
Load Diff
After Width: | Height: | Size: 4.2 KiB |
After Width: | Height: | Size: 9.1 KiB |
After Width: | Height: | Size: 13 KiB |
After Width: | Height: | Size: 58 KiB |
After Width: | Height: | Size: 174 KiB |
After Width: | Height: | Size: 135 KiB |
@ -0,0 +1,419 @@
|
||||
tinymce.addI18n('es', {
|
||||
Redo: 'Rehacer',
|
||||
Undo: 'Deshacer',
|
||||
Cut: 'Cortar',
|
||||
Copy: 'Copiar',
|
||||
Paste: 'Pegar',
|
||||
'Select all': 'Seleccionar todo',
|
||||
'New document': 'Nuevo documento',
|
||||
Ok: 'Ok',
|
||||
Cancel: 'Cancelar',
|
||||
'Visual aids': 'Ayudas visuales',
|
||||
Bold: 'Negrita',
|
||||
Italic: 'Cursiva',
|
||||
Underline: 'Subrayado',
|
||||
Strikethrough: 'Tachado',
|
||||
Superscript: 'Super\u00edndice',
|
||||
Subscript: 'Sub\u00edndice',
|
||||
'Clear formatting': 'Limpiar formato',
|
||||
'Align left': 'Alinear a la izquierda',
|
||||
'Align center': 'Alinear al centro',
|
||||
'Align right': 'Alinear a la derecha',
|
||||
Justify: 'Justificar',
|
||||
'Bullet list': 'Lista de vi\u00f1etas',
|
||||
'Numbered list': 'Lista numerada',
|
||||
'Decrease indent': 'Disminuir sangr\u00eda',
|
||||
'Increase indent': 'Incrementar sangr\u00eda',
|
||||
Close: 'Cerrar',
|
||||
Formats: 'Formatos',
|
||||
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": 'Su navegador no es compatible con el acceso directo al portapapeles. Use las teclas Crtl+X\/C\/V de su teclado.',
|
||||
Headers: 'Encabezados',
|
||||
'Header 1': 'Encabezado 1',
|
||||
'Header 2': 'Encabezado 2',
|
||||
'Header 3': 'Encabezado 3',
|
||||
'Header 4': 'Encabezado 4',
|
||||
'Header 5': 'Encabezado 5',
|
||||
'Header 6': 'Encabezado 6',
|
||||
Headings: 'Encabezados',
|
||||
'Heading 1': 'Encabezado 1',
|
||||
'Heading 2': 'Encabezado 2',
|
||||
'Heading 3': 'Encabezado 3',
|
||||
'Heading 4': 'Encabezado 4',
|
||||
'Heading 5': 'Encabezado 5',
|
||||
'Heading 6': 'Encabezado 6',
|
||||
Preformatted: 'Con formato previo',
|
||||
Div: 'Div',
|
||||
Pre: 'Pre',
|
||||
Code: 'C\u00f3digo',
|
||||
Paragraph: 'P\u00e1rrafo',
|
||||
Blockquote: 'Blockquote',
|
||||
Inline: 'Alineado',
|
||||
Blocks: 'Bloques',
|
||||
'Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.': 'Pegar est\u00e1 ahora en modo de texto plano. El contenido se pegar\u00e1 como texto plano hasta que desactive esta opci\u00f3n.',
|
||||
Fonts: 'Fuentes',
|
||||
'Font Sizes': 'Tama\u00f1os de fuente',
|
||||
Class: 'Clase',
|
||||
'Browse for an image': 'Buscar una imagen',
|
||||
OR: 'OR',
|
||||
'Drop an image here': 'Arrastre una imagen aqu\u00ed',
|
||||
Upload: 'Cargar',
|
||||
Block: 'Bloque',
|
||||
Align: 'Alinear',
|
||||
Default: 'Por defecto',
|
||||
Circle: 'C\u00edrculo',
|
||||
Disc: 'Disco',
|
||||
Square: 'Cuadrado',
|
||||
'Lower Alpha': 'Inferior Alfa',
|
||||
'Lower Greek': 'Inferior Griega',
|
||||
'Lower Roman': 'Inferior Romana',
|
||||
'Upper Alpha': 'Superior Alfa',
|
||||
'Upper Roman': 'Superior Romana',
|
||||
'Anchor...': 'Anclaje...',
|
||||
Name: 'Nombre',
|
||||
Id: 'Id',
|
||||
'Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.': 'Deber\u00eda comenzar por una letra, seguida solo de letras, n\u00fameros, guiones, puntos, dos puntos o guiones bajos.',
|
||||
'You have unsaved changes are you sure you want to navigate away?': 'Tiene cambios sin guardar. \u00bfEst\u00e1 seguro de que quiere salir?',
|
||||
'Restore last draft': 'Restaurar el \u00faltimo borrador',
|
||||
'Special character...': 'Car\u00e1cter especial...',
|
||||
'Source code': 'C\u00f3digo fuente',
|
||||
'Insert\/Edit code sample': 'Insertar\/editar c\u00f3digo de prueba',
|
||||
Language: 'Idioma',
|
||||
'Code sample...': 'Ejemplo de c\u00f3digo...',
|
||||
'Color Picker': 'Selector de colores',
|
||||
R: 'R',
|
||||
G: 'V',
|
||||
B: 'A',
|
||||
'Left to right': 'De izquierda a derecha',
|
||||
'Right to left': 'De derecha a izquierda',
|
||||
'Emoticons...': 'Emoticones...',
|
||||
'Metadata and Document Properties': 'Metadatos y propiedades del documento',
|
||||
Title: 'T\u00edtulo',
|
||||
Keywords: 'Palabras clave',
|
||||
Description: 'Descripci\u00f3n',
|
||||
Robots: 'Robots',
|
||||
Author: 'Autor',
|
||||
Encoding: 'Codificaci\u00f3n',
|
||||
Fullscreen: 'Pantalla completa',
|
||||
Action: 'Acci\u00f3n',
|
||||
Shortcut: 'Atajo',
|
||||
Help: 'Ayuda',
|
||||
Address: 'Direcci\u00f3n',
|
||||
'Focus to menubar': 'Enfocar la barra del men\u00fa',
|
||||
'Focus to toolbar': 'Enfocar la barra de herramientas',
|
||||
'Focus to element path': 'Enfocar la ruta del elemento',
|
||||
'Focus to contextual toolbar': 'Enfocar la barra de herramientas contextual',
|
||||
'Insert link (if link plugin activated)': 'Insertar enlace (si el complemento de enlace est\u00e1 activado)',
|
||||
'Save (if save plugin activated)': 'Guardar (si el componente de salvar est\u00e1 activado)',
|
||||
'Find (if searchreplace plugin activated)': 'Buscar (si el complemento buscar-remplazar est\u00e1 activado)',
|
||||
'Plugins installed ({0}):': 'Plugins instalados ({0}):',
|
||||
'Premium plugins:': 'Complementos premium:',
|
||||
'Learn more...': 'Aprende m\u00e1s...',
|
||||
'You are using {0}': 'Estas usando {0}',
|
||||
Plugins: 'Complementos',
|
||||
'Handy Shortcuts': 'Accesos directos',
|
||||
'Horizontal line': 'L\u00ednea horizontal',
|
||||
'Insert\/edit image': 'Insertar\/editar imagen',
|
||||
'Image description': 'Descripci\u00f3n de la imagen',
|
||||
Source: 'Enlace',
|
||||
Dimensions: 'Dimensiones',
|
||||
'Constrain proportions': 'Restringir proporciones',
|
||||
General: 'General',
|
||||
Advanced: 'Avanzado',
|
||||
Style: 'Estilo',
|
||||
'Vertical space': 'Espacio vertical',
|
||||
'Horizontal space': 'Espacio horizontal',
|
||||
Border: 'Borde',
|
||||
'Insert image': 'Insertar imagen',
|
||||
'Image...': 'Imagen...',
|
||||
'Image list': 'Lista de im\u00e1genes',
|
||||
'Rotate counterclockwise': 'Girar a la izquierda',
|
||||
'Rotate clockwise': 'Girar a la derecha',
|
||||
'Flip vertically': 'Invertir verticalmente',
|
||||
'Flip horizontally': 'Invertir horizontalmente',
|
||||
'Edit image': 'Editar imagen',
|
||||
'Image options': 'Opciones de imagen',
|
||||
'Zoom in': 'Acercar',
|
||||
'Zoom out': 'Alejar',
|
||||
Crop: 'Recortar',
|
||||
Resize: 'Redimensionar',
|
||||
Orientation: 'Orientaci\u00f3n',
|
||||
Brightness: 'Brillo',
|
||||
Sharpen: 'Forma',
|
||||
Contrast: 'Contraste',
|
||||
'Color levels': 'Niveles de color',
|
||||
Gamma: 'Gamma',
|
||||
Invert: 'Invertir',
|
||||
Apply: 'Aplicar',
|
||||
Back: 'Atr\u00e1s',
|
||||
'Insert date\/time': 'Insertar fecha\/hora',
|
||||
'Date\/time': 'Fecha\/hora',
|
||||
'Insert\/Edit Link': 'Insertar\/editar enlace',
|
||||
'Insert\/edit link': 'Insertar\/editar enlace',
|
||||
'Text to display': 'Texto para mostrar',
|
||||
Url: 'URL',
|
||||
'Open link in...': 'Abrir enlace en...',
|
||||
'Current window': 'Ventana actual',
|
||||
None: 'Ninguno',
|
||||
'New window': 'Nueva ventana',
|
||||
'Remove link': 'Quitar enlace',
|
||||
Anchors: 'Anclas',
|
||||
'Link...': 'Enlace...',
|
||||
'Paste or type a link': 'Pega o introduce un enlace',
|
||||
'The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?': 'El enlace que has introducido no parece ser una direcci\u00f3n de correo electr\u00f3nico. Quieres a\u00f1adir el prefijo necesario mailto: ?',
|
||||
'The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?': 'El enlace que has introducido no parece ser una enlace externo. Quieres a\u00f1adir el prefijo necesario http:\/\/ ?',
|
||||
'Link list': 'Lista de enlaces',
|
||||
'Insert video': 'Insertar video',
|
||||
'Insert\/edit video': 'Insertar\/editar video',
|
||||
'Insert\/edit media': 'Insertar\/editar medio',
|
||||
'Alternative source': 'Enlace alternativo',
|
||||
'Alternative source URL': 'Origen de URL alternativo',
|
||||
'Media poster (Image URL)': 'P\u00f3ster de medio (URL de imagen)',
|
||||
'Paste your embed code below:': 'Pega tu c\u00f3digo embebido debajo',
|
||||
Embed: 'Incrustado',
|
||||
'Media...': 'Medios...',
|
||||
'Nonbreaking space': 'Espacio fijo',
|
||||
'Page break': 'Salto de p\u00e1gina',
|
||||
'Paste as text': 'Pegar como texto',
|
||||
Preview: 'Previsualizar',
|
||||
'Print...': 'Imprimir...',
|
||||
Save: 'Guardar',
|
||||
Find: 'Buscar',
|
||||
'Replace with': 'Reemplazar con',
|
||||
Replace: 'Reemplazar',
|
||||
'Replace all': 'Reemplazar todo',
|
||||
Previous: 'Anterior',
|
||||
Next: 'Siguiente',
|
||||
'Find and replace...': 'Buscar y reemplazar...',
|
||||
'Could not find the specified string.': 'No se encuentra la cadena de texto especificada',
|
||||
'Match case': 'Coincidencia exacta',
|
||||
'Find whole words only': 'Solo palabras completas',
|
||||
'Spell check': 'Revisar ortograf\u00eda',
|
||||
Ignore: 'Ignorar',
|
||||
'Ignore all': 'Ignorar todos',
|
||||
Finish: 'Finalizar',
|
||||
'Add to Dictionary': 'A\u00f1adir al Diccionario',
|
||||
'Insert table': 'Insertar tabla',
|
||||
'Table properties': 'Propiedades de la tabla',
|
||||
'Delete table': 'Eliminar tabla',
|
||||
Cell: 'Celda',
|
||||
Row: 'Fila',
|
||||
Column: 'Columna',
|
||||
'Cell properties': 'Propiedades de la celda',
|
||||
'Merge cells': 'Combinar celdas',
|
||||
'Split cell': 'Dividir celdas',
|
||||
'Insert row before': 'Insertar fila antes',
|
||||
'Insert row after': 'Insertar fila despu\u00e9s ',
|
||||
'Delete row': 'Eliminar fila',
|
||||
'Row properties': 'Propiedades de la fila',
|
||||
'Cut row': 'Cortar fila',
|
||||
'Copy row': 'Copiar fila',
|
||||
'Paste row before': 'Pegar la fila antes',
|
||||
'Paste row after': 'Pegar la fila despu\u00e9s',
|
||||
'Insert column before': 'Insertar columna antes',
|
||||
'Insert column after': 'Insertar columna despu\u00e9s',
|
||||
'Delete column': 'Eliminar columna',
|
||||
Cols: 'Columnas',
|
||||
Rows: 'Filas',
|
||||
Width: 'Ancho',
|
||||
Height: 'Alto',
|
||||
'Cell spacing': 'Espacio entre celdas',
|
||||
'Cell padding': 'Relleno de celda',
|
||||
'Show caption': 'Mostrar t\u00edtulo',
|
||||
Left: 'Izquierda',
|
||||
Center: 'Centrado',
|
||||
Right: 'Derecha',
|
||||
'Cell type': 'Tipo de celda',
|
||||
Scope: '\u00c1mbito',
|
||||
Alignment: 'Alineaci\u00f3n',
|
||||
'H Align': 'Alineamiento Horizontal',
|
||||
'V Align': 'Alineamiento Vertical',
|
||||
Top: 'Arriba',
|
||||
Middle: 'Centro',
|
||||
Bottom: 'Abajo',
|
||||
'Header cell': 'Celda de la cebecera',
|
||||
'Row group': 'Grupo de filas',
|
||||
'Column group': 'Grupo de columnas',
|
||||
'Row type': 'Tipo de fila',
|
||||
Header: 'Cabecera',
|
||||
Body: 'Cuerpo',
|
||||
Footer: 'Pie de p\u00e1gina',
|
||||
'Border color': 'Color del borde',
|
||||
'Insert template...': 'Insertar plantilla...',
|
||||
Templates: 'Plantillas',
|
||||
Template: 'Plantilla',
|
||||
'Text color': 'Color del texto',
|
||||
'Background color': 'Color de fondo',
|
||||
'Custom...': 'Personalizar...',
|
||||
'Custom color': 'Color personalizado',
|
||||
'No color': 'Sin color',
|
||||
'Remove color': 'Quitar color',
|
||||
'Table of Contents': 'Tabla de contenidos',
|
||||
'Show blocks': 'Mostrar bloques',
|
||||
'Show invisible characters': 'Mostrar caracteres invisibles',
|
||||
'Word count': 'Contar palabras',
|
||||
Count: 'Recuento',
|
||||
Document: 'Documento',
|
||||
Selection: 'Selecci\u00f3n',
|
||||
Words: 'Palabras',
|
||||
'Words: {0}': 'Palabras: {0}',
|
||||
'{0} words': '{0} palabras',
|
||||
File: 'Archivo',
|
||||
Edit: 'Editar',
|
||||
Insert: 'Insertar',
|
||||
View: 'Ver',
|
||||
Format: 'Formato',
|
||||
Table: 'Tabla',
|
||||
Tools: 'Herramientas',
|
||||
'Powered by {0}': 'Desarrollado por {0}',
|
||||
'Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help': '\u00c1rea de texto enriquecido. Pulse ALT-F9 para el menu. Pulse ALT-F10 para la barra de herramientas. Pulse ALT-0 para ayuda',
|
||||
'Image title': 'Titulo de imagen',
|
||||
'Border width': 'Ancho de borde',
|
||||
'Border style': 'Estilo de borde',
|
||||
Error: 'Error',
|
||||
Warn: 'Advertencia',
|
||||
Valid: 'V\u00e1lido',
|
||||
'To open the popup, press Shift+Enter': 'Para abrir el elemento emergente, pulse May\u00fas+Intro',
|
||||
'Rich Text Area. Press ALT-0 for help.': '\u00c1rea de texto enriquecido. Pulse ALT-0 para abrir la ayuda.',
|
||||
'System Font': 'Fuente de sistema',
|
||||
'Failed to upload image: {0}': 'Fallo al cargar imagen: {0}',
|
||||
'Failed to load plugin: {0} from url {1}': 'Fallo al cargar complemento: {0} desde URL {1}',
|
||||
'Failed to load plugin url: {0}': 'Fallo al cargar URL del complemento: {0}',
|
||||
'Failed to initialize plugin: {0}': 'Fallo al iniciar el complemento: {0}',
|
||||
example: 'ejemplo',
|
||||
Search: 'Buscar',
|
||||
All: 'Todo',
|
||||
Currency: 'Divisa',
|
||||
Text: 'Texto',
|
||||
Quotations: 'Comillas',
|
||||
Mathematical: 'S\u00edmbolo matem\u00e1tico',
|
||||
'Extended Latin': 'Latino extendido A',
|
||||
Symbols: 'S\u00edmbolos',
|
||||
Arrows: 'Flechas',
|
||||
'User Defined': 'Definido por el usuario',
|
||||
'dollar sign': 'signo de d\u00f3lar',
|
||||
'currency sign': 'signo de divisa',
|
||||
'euro-currency sign': 'signo de euro',
|
||||
'colon sign': 'signo de dos puntos',
|
||||
'cruzeiro sign': 'signo de cruceiro',
|
||||
'french franc sign': 'signo de franco franc\u00e9s',
|
||||
'lira sign': 'signo de lira',
|
||||
'mill sign': 'signo de mill',
|
||||
'naira sign': 'signo de naira',
|
||||
'peseta sign': 'signo de peseta',
|
||||
'rupee sign': 'signo de rupia',
|
||||
'won sign': 'signo de won',
|
||||
'new sheqel sign': 'signo de nuevo s\u00e9quel',
|
||||
'dong sign': 'signo de dong',
|
||||
'kip sign': 'signo de kip',
|
||||
'tugrik sign': 'signo de tugrik',
|
||||
'drachma sign': 'signo de dracma',
|
||||
'german penny symbol': 'signo de penique alem\u00e1n',
|
||||
'peso sign': 'signo de peso',
|
||||
'guarani sign': 'signo de guaran\u00ed',
|
||||
'austral sign': 'signo de austral',
|
||||
'hryvnia sign': 'signo de grivna',
|
||||
'cedi sign': 'signo de cedi',
|
||||
'livre tournois sign': 'signo de libra tornesa',
|
||||
'spesmilo sign': 'signo de spesmilo',
|
||||
'tenge sign': 'signo de tenge',
|
||||
'indian rupee sign': 'signo de rupia india',
|
||||
'turkish lira sign': 'signo de lira turca',
|
||||
'nordic mark sign': 'signo de marco n\u00f3rdico',
|
||||
'manat sign': 'signo de manat',
|
||||
'ruble sign': 'signo de rublo',
|
||||
'yen character': 'car\u00e1cter de yen',
|
||||
'yuan character': 'car\u00e1cter de yuan',
|
||||
'yuan character, in hong kong and taiwan': 'car\u00e1cter de yuan en Hong Kong y Taiw\u00e1n',
|
||||
'yen\/yuan character variant one': 'Variante uno de car\u00e1cter de yen\/yuan',
|
||||
'Loading emoticons...': 'Cargando emoticonos...',
|
||||
'Could not load emoticons': 'No se han podido cargar los emoticonos',
|
||||
People: 'Personas',
|
||||
'Animals and Nature': 'Animales y naturaleza',
|
||||
'Food and Drink': 'Comida y bebida',
|
||||
Activity: 'Actividad',
|
||||
'Travel and Places': 'Viajes y lugares',
|
||||
Objects: 'Objetos',
|
||||
Flags: 'Banderas',
|
||||
Characters: 'Caracteres',
|
||||
'Characters (no spaces)': 'Caracteres (sin espacios)',
|
||||
'{0} characters': '{0} caracteres',
|
||||
'Error: Form submit field collision.': 'Error: Colisi\u00f3n de campo al enviar formulario.',
|
||||
'Error: No form element found.': 'Error: No se encuentra ning\u00fan elemento de formulario.',
|
||||
Update: 'Actualizar',
|
||||
'Color swatch': 'Muestrario de colores',
|
||||
Turquoise: 'Turquesa',
|
||||
Green: 'Verde',
|
||||
Blue: 'Azul',
|
||||
Purple: 'P\u00farpura',
|
||||
'Navy Blue': 'Azul marino',
|
||||
'Dark Turquoise': 'Turquesa oscuro',
|
||||
'Dark Green': 'Verde oscuro',
|
||||
'Medium Blue': 'Azul medio',
|
||||
'Medium Purple': 'P\u00farpura medio',
|
||||
'Midnight Blue': 'Azul medio',
|
||||
Yellow: 'Amarillo',
|
||||
Orange: 'Naranja',
|
||||
Red: 'Rojo',
|
||||
'Light Gray': 'Gris claro',
|
||||
Gray: 'Gris',
|
||||
'Dark Yellow': 'Amarillo oscuro',
|
||||
'Dark Orange': 'Naranja oscuro',
|
||||
'Dark Red': 'Rojo oscuro',
|
||||
'Medium Gray': 'Gris medio',
|
||||
'Dark Gray': 'Gris oscuro',
|
||||
'Light Green': 'Verde claro',
|
||||
'Light Yellow': 'Amarillo claro',
|
||||
'Light Red': 'Rojo claro',
|
||||
'Light Purple': 'Morado claro',
|
||||
'Light Blue': 'Azul claro',
|
||||
'Dark Purple': 'Morado oscuro',
|
||||
'Dark Blue': 'Azul oscuro',
|
||||
Black: 'Negro',
|
||||
White: 'Blanco',
|
||||
'Switch to or from fullscreen mode': 'Activar o desactivar modo pantalla completa',
|
||||
'Open help dialog': 'Abrir di\u00e1logo de ayuda',
|
||||
history: 'historial',
|
||||
styles: 'estilos',
|
||||
formatting: 'formato',
|
||||
alignment: 'alineaci\u00f3n',
|
||||
indentation: 'sangr\u00eda',
|
||||
'permanent pen': 'bol\u00edgrafo permanente',
|
||||
comments: 'comentarios',
|
||||
'Format Painter': 'Copiar formato',
|
||||
'Insert\/edit iframe': 'Insertar\/editar iframe',
|
||||
Capitalization: 'Uso de may\u00fasculas',
|
||||
lowercase: 'min\u00fasculas',
|
||||
UPPERCASE: 'MAY\u00daSCULAS',
|
||||
'Title Case': 'Tipo T\u00edtulo',
|
||||
'Permanent Pen Properties': 'Propiedades del bol\u00edgrafo permanente',
|
||||
'Permanent pen properties...': 'Propiedades del bol\u00edgrafo permanente...',
|
||||
Font: 'Fuente',
|
||||
Size: 'Tama\u00f1o',
|
||||
'More...': 'M\u00e1s...',
|
||||
'Spellcheck Language': 'Corrector',
|
||||
'Select...': 'Seleccionar...',
|
||||
Preferences: 'Preferencias',
|
||||
Yes: 'S\u00ed',
|
||||
No: 'No',
|
||||
'Keyboard Navigation': 'Navegaci\u00f3n con el teclado',
|
||||
Version: 'Versi\u00f3n',
|
||||
Anchor: 'Ancla',
|
||||
'Special character': 'Car\u00e1cter especial',
|
||||
'Code sample': 'Ejemplo de c\u00f3digo',
|
||||
Color: 'Color',
|
||||
Emoticons: 'Emoticonos',
|
||||
'Document properties': 'Propiedades del documento',
|
||||
Image: 'Imagen',
|
||||
'Insert link': 'Insertar enlace',
|
||||
Target: 'Destino',
|
||||
Link: 'Enlace',
|
||||
Poster: 'Miniatura',
|
||||
Media: 'Media',
|
||||
Print: 'Imprimir',
|
||||
Prev: 'Anterior',
|
||||
'Find and replace': 'Buscar y reemplazar',
|
||||
'Whole words': 'Palabras completas',
|
||||
Spellcheck: 'Corrector ortogr\u00e1fico',
|
||||
Caption: 'Subt\u00edtulo',
|
||||
'Insert template': 'Insertar plantilla'
|
||||
})
|
@ -0,0 +1,389 @@
|
||||
tinymce.addI18n('zh_CN',{
|
||||
"Redo": "\u91cd\u505a",
|
||||
"Undo": "\u64a4\u9500",
|
||||
"Cut": "\u526a\u5207",
|
||||
"Copy": "\u590d\u5236",
|
||||
"Paste": "\u7c98\u8d34",
|
||||
"Select all": "\u5168\u9009",
|
||||
"New document": "\u65b0\u6587\u4ef6",
|
||||
"Ok": "\u786e\u5b9a",
|
||||
"Cancel": "\u53d6\u6d88",
|
||||
"Visual aids": "\u7f51\u683c\u7ebf",
|
||||
"Bold": "\u7c97\u4f53",
|
||||
"Italic": "\u659c\u4f53",
|
||||
"Underline": "\u4e0b\u5212\u7ebf",
|
||||
"Strikethrough": "\u5220\u9664\u7ebf",
|
||||
"Superscript": "\u4e0a\u6807",
|
||||
"Subscript": "\u4e0b\u6807",
|
||||
"Clear formatting": "\u6e05\u9664\u683c\u5f0f",
|
||||
"Align left": "\u5de6\u8fb9\u5bf9\u9f50",
|
||||
"Align center": "\u4e2d\u95f4\u5bf9\u9f50",
|
||||
"Align right": "\u53f3\u8fb9\u5bf9\u9f50",
|
||||
"Justify": "\u4e24\u7aef\u5bf9\u9f50",
|
||||
"Bullet list": "\u9879\u76ee\u7b26\u53f7",
|
||||
"Numbered list": "\u7f16\u53f7\u5217\u8868",
|
||||
"Decrease indent": "\u51cf\u5c11\u7f29\u8fdb",
|
||||
"Increase indent": "\u589e\u52a0\u7f29\u8fdb",
|
||||
"Close": "\u5173\u95ed",
|
||||
"Formats": "\u683c\u5f0f",
|
||||
"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\/C\/V keyboard shortcuts instead.": "\u4f60\u7684\u6d4f\u89c8\u5668\u4e0d\u652f\u6301\u6253\u5f00\u526a\u8d34\u677f\uff0c\u8bf7\u4f7f\u7528Ctrl+X\/C\/V\u7b49\u5feb\u6377\u952e\u3002",
|
||||
"Headers": "\u6807\u9898",
|
||||
"Header 1": "\u6807\u98981",
|
||||
"Header 2": "\u6807\u98982",
|
||||
"Header 3": "\u6807\u98983",
|
||||
"Header 4": "\u6807\u98984",
|
||||
"Header 5": "\u6807\u98985",
|
||||
"Header 6": "\u6807\u98986",
|
||||
"Headings": "\u6807\u9898",
|
||||
"Heading 1": "\u6807\u98981",
|
||||
"Heading 2": "\u6807\u98982",
|
||||
"Heading 3": "\u6807\u98983",
|
||||
"Heading 4": "\u6807\u98984",
|
||||
"Heading 5": "\u6807\u98985",
|
||||
"Heading 6": "\u6807\u98986",
|
||||
"Preformatted": "\u9884\u5148\u683c\u5f0f\u5316\u7684",
|
||||
"Div": "Div",
|
||||
"Pre": "Pre",
|
||||
"Code": "\u4ee3\u7801",
|
||||
"Paragraph": "\u6bb5\u843d",
|
||||
"Blockquote": "\u5f15\u6587\u533a\u5757",
|
||||
"Inline": "\u6587\u672c",
|
||||
"Blocks": "\u57fa\u5757",
|
||||
"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.": "\u5f53\u524d\u4e3a\u7eaf\u6587\u672c\u7c98\u8d34\u6a21\u5f0f\uff0c\u518d\u6b21\u70b9\u51fb\u53ef\u4ee5\u56de\u5230\u666e\u901a\u7c98\u8d34\u6a21\u5f0f\u3002",
|
||||
"Fonts": "\u5b57\u4f53",
|
||||
"Font Sizes": "\u5b57\u53f7",
|
||||
"Class": "\u7c7b\u578b",
|
||||
"Browse for an image": "\u6d4f\u89c8\u56fe\u50cf",
|
||||
"OR": "\u6216",
|
||||
"Drop an image here": "\u62d6\u653e\u4e00\u5f20\u56fe\u50cf\u81f3\u6b64",
|
||||
"Upload": "\u4e0a\u4f20",
|
||||
"Block": "\u5757",
|
||||
"Align": "\u5bf9\u9f50",
|
||||
"Default": "\u9ed8\u8ba4",
|
||||
"Circle": "\u7a7a\u5fc3\u5706",
|
||||
"Disc": "\u5b9e\u5fc3\u5706",
|
||||
"Square": "\u65b9\u5757",
|
||||
"Lower Alpha": "\u5c0f\u5199\u82f1\u6587\u5b57\u6bcd",
|
||||
"Lower Greek": "\u5c0f\u5199\u5e0c\u814a\u5b57\u6bcd",
|
||||
"Lower Roman": "\u5c0f\u5199\u7f57\u9a6c\u5b57\u6bcd",
|
||||
"Upper Alpha": "\u5927\u5199\u82f1\u6587\u5b57\u6bcd",
|
||||
"Upper Roman": "\u5927\u5199\u7f57\u9a6c\u5b57\u6bcd",
|
||||
"Anchor...": "\u951a\u70b9...",
|
||||
"Name": "\u540d\u79f0",
|
||||
"Id": "\u6807\u8bc6\u7b26",
|
||||
"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.": "\u6807\u8bc6\u7b26\u5e94\u8be5\u4ee5\u5b57\u6bcd\u5f00\u5934\uff0c\u540e\u8ddf\u5b57\u6bcd\u3001\u6570\u5b57\u3001\u7834\u6298\u53f7\u3001\u70b9\u3001\u5192\u53f7\u6216\u4e0b\u5212\u7ebf\u3002",
|
||||
"You have unsaved changes are you sure you want to navigate away?": "\u4f60\u8fd8\u6709\u6587\u6863\u5c1a\u672a\u4fdd\u5b58\uff0c\u786e\u5b9a\u8981\u79bb\u5f00\uff1f",
|
||||
"Restore last draft": "\u6062\u590d\u4e0a\u6b21\u7684\u8349\u7a3f",
|
||||
"Special characters...": "\u7279\u6b8a\u5b57\u7b26...",
|
||||
"Source code": "\u6e90\u4ee3\u7801",
|
||||
"Insert\/Edit code sample": "\u63d2\u5165\/\u7f16\u8f91\u4ee3\u7801\u793a\u4f8b",
|
||||
"Language": "\u8bed\u8a00",
|
||||
"Code sample...": "\u793a\u4f8b\u4ee3\u7801...",
|
||||
"Color Picker": "\u9009\u8272\u5668",
|
||||
"R": "R",
|
||||
"G": "G",
|
||||
"B": "B",
|
||||
"Left to right": "\u4ece\u5de6\u5230\u53f3",
|
||||
"Right to left": "\u4ece\u53f3\u5230\u5de6",
|
||||
"Emoticons...": "\u8868\u60c5\u7b26\u53f7...",
|
||||
"Metadata and Document Properties": "\u5143\u6570\u636e\u548c\u6587\u6863\u5c5e\u6027",
|
||||
"Title": "\u6807\u9898",
|
||||
"Keywords": "\u5173\u952e\u8bcd",
|
||||
"Description": "\u63cf\u8ff0",
|
||||
"Robots": "\u673a\u5668\u4eba",
|
||||
"Author": "\u4f5c\u8005",
|
||||
"Encoding": "\u7f16\u7801",
|
||||
"Fullscreen": "\u5168\u5c4f",
|
||||
"Action": "\u64cd\u4f5c",
|
||||
"Shortcut": "\u5feb\u6377\u952e",
|
||||
"Help": "\u5e2e\u52a9",
|
||||
"Address": "\u5730\u5740",
|
||||
"Focus to menubar": "\u79fb\u52a8\u7126\u70b9\u5230\u83dc\u5355\u680f",
|
||||
"Focus to toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u5de5\u5177\u680f",
|
||||
"Focus to element path": "\u79fb\u52a8\u7126\u70b9\u5230\u5143\u7d20\u8def\u5f84",
|
||||
"Focus to contextual toolbar": "\u79fb\u52a8\u7126\u70b9\u5230\u4e0a\u4e0b\u6587\u83dc\u5355",
|
||||
"Insert link (if link plugin activated)": "\u63d2\u5165\u94fe\u63a5 (\u5982\u679c\u94fe\u63a5\u63d2\u4ef6\u5df2\u6fc0\u6d3b)",
|
||||
"Save (if save plugin activated)": "\u4fdd\u5b58(\u5982\u679c\u4fdd\u5b58\u63d2\u4ef6\u5df2\u6fc0\u6d3b)",
|
||||
"Find (if searchreplace plugin activated)": "\u67e5\u627e(\u5982\u679c\u67e5\u627e\u66ff\u6362\u63d2\u4ef6\u5df2\u6fc0\u6d3b)",
|
||||
"Plugins installed ({0}):": "\u5df2\u5b89\u88c5\u63d2\u4ef6 ({0}):",
|
||||
"Premium plugins:": "\u4f18\u79c0\u63d2\u4ef6\uff1a",
|
||||
"Learn more...": "\u4e86\u89e3\u66f4\u591a...",
|
||||
"You are using {0}": "\u4f60\u6b63\u5728\u4f7f\u7528 {0}",
|
||||
"Plugins": "\u63d2\u4ef6",
|
||||
"Handy Shortcuts": "\u5feb\u6377\u952e",
|
||||
"Horizontal line": "\u6c34\u5e73\u5206\u5272\u7ebf",
|
||||
"Insert\/edit image": "\u63d2\u5165\/\u7f16\u8f91\u56fe\u7247",
|
||||
"Image description": "\u56fe\u7247\u63cf\u8ff0",
|
||||
"Source": "\u5730\u5740",
|
||||
"Dimensions": "\u5927\u5c0f",
|
||||
"Constrain proportions": "\u4fdd\u6301\u7eb5\u6a2a\u6bd4",
|
||||
"General": "\u666e\u901a",
|
||||
"Advanced": "\u9ad8\u7ea7",
|
||||
"Style": "\u6837\u5f0f",
|
||||
"Vertical space": "\u5782\u76f4\u8fb9\u8ddd",
|
||||
"Horizontal space": "\u6c34\u5e73\u8fb9\u8ddd",
|
||||
"Border": "\u8fb9\u6846",
|
||||
"Insert image": "\u63d2\u5165\u56fe\u7247",
|
||||
"Image...": "\u56fe\u7247...",
|
||||
"Image list": "\u56fe\u7247\u5217\u8868",
|
||||
"Rotate counterclockwise": "\u9006\u65f6\u9488\u65cb\u8f6c",
|
||||
"Rotate clockwise": "\u987a\u65f6\u9488\u65cb\u8f6c",
|
||||
"Flip vertically": "\u5782\u76f4\u7ffb\u8f6c",
|
||||
"Flip horizontally": "\u6c34\u5e73\u7ffb\u8f6c",
|
||||
"Edit image": "\u7f16\u8f91\u56fe\u7247",
|
||||
"Image options": "\u56fe\u7247\u9009\u9879",
|
||||
"Zoom in": "\u653e\u5927",
|
||||
"Zoom out": "\u7f29\u5c0f",
|
||||
"Crop": "\u88c1\u526a",
|
||||
"Resize": "\u8c03\u6574\u5927\u5c0f",
|
||||
"Orientation": "\u65b9\u5411",
|
||||
"Brightness": "\u4eae\u5ea6",
|
||||
"Sharpen": "\u9510\u5316",
|
||||
"Contrast": "\u5bf9\u6bd4\u5ea6",
|
||||
"Color levels": "\u989c\u8272\u5c42\u6b21",
|
||||
"Gamma": "\u4f3d\u9a6c\u503c",
|
||||
"Invert": "\u53cd\u8f6c",
|
||||
"Apply": "\u5e94\u7528",
|
||||
"Back": "\u540e\u9000",
|
||||
"Insert date\/time": "\u63d2\u5165\u65e5\u671f\/\u65f6\u95f4",
|
||||
"Date\/time": "\u65e5\u671f\/\u65f6\u95f4",
|
||||
"Insert\/Edit Link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5",
|
||||
"Insert\/edit link": "\u63d2\u5165\/\u7f16\u8f91\u94fe\u63a5",
|
||||
"Text to display": "\u663e\u793a\u6587\u5b57",
|
||||
"Url": "\u5730\u5740",
|
||||
"Open link in...": "\u94fe\u63a5\u6253\u5f00\u4f4d\u7f6e...",
|
||||
"Current window": "\u5f53\u524d\u7a97\u53e3",
|
||||
"None": "\u65e0",
|
||||
"New window": "\u5728\u65b0\u7a97\u53e3\u6253\u5f00",
|
||||
"Remove link": "\u5220\u9664\u94fe\u63a5",
|
||||
"Anchors": "\u951a\u70b9",
|
||||
"Link...": "\u94fe\u63a5...",
|
||||
"Paste or type a link": "\u7c98\u8d34\u6216\u8f93\u5165\u94fe\u63a5",
|
||||
"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u4e3a\u90ae\u4ef6\u5730\u5740\uff0c\u9700\u8981\u52a0\u4e0amailto:\u524d\u7f00\u5417\uff1f",
|
||||
"The URL you entered seems to be an external link. Do you want to add the required http:\/\/ prefix?": "\u4f60\u6240\u586b\u5199\u7684URL\u5730\u5740\u5c5e\u4e8e\u5916\u90e8\u94fe\u63a5\uff0c\u9700\u8981\u52a0\u4e0ahttp:\/\/:\u524d\u7f00\u5417\uff1f",
|
||||
"Link list": "\u94fe\u63a5\u5217\u8868",
|
||||
"Insert video": "\u63d2\u5165\u89c6\u9891",
|
||||
"Insert\/edit video": "\u63d2\u5165\/\u7f16\u8f91\u89c6\u9891",
|
||||
"Insert\/edit media": "\u63d2\u5165\/\u7f16\u8f91\u5a92\u4f53",
|
||||
"Alternative source": "\u955c\u50cf",
|
||||
"Alternative source URL": "\u66ff\u4ee3\u6765\u6e90\u7f51\u5740",
|
||||
"Media poster (Image URL)": "\u5c01\u9762(\u56fe\u7247\u5730\u5740)",
|
||||
"Paste your embed code below:": "\u5c06\u5185\u5d4c\u4ee3\u7801\u7c98\u8d34\u5728\u4e0b\u9762:",
|
||||
"Embed": "\u5185\u5d4c",
|
||||
"Media...": "\u591a\u5a92\u4f53...",
|
||||
"Nonbreaking space": "\u4e0d\u95f4\u65ad\u7a7a\u683c",
|
||||
"Page break": "\u5206\u9875\u7b26",
|
||||
"Paste as text": "\u7c98\u8d34\u4e3a\u6587\u672c",
|
||||
"Preview": "\u9884\u89c8",
|
||||
"Print...": "\u6253\u5370...",
|
||||
"Save": "\u4fdd\u5b58",
|
||||
"Find": "\u67e5\u627e",
|
||||
"Replace with": "\u66ff\u6362\u4e3a",
|
||||
"Replace": "\u66ff\u6362",
|
||||
"Replace all": "\u5168\u90e8\u66ff\u6362",
|
||||
"Previous": "\u4e0a\u4e00\u4e2a",
|
||||
"Next": "\u4e0b\u4e00\u4e2a",
|
||||
"Find and replace...": "\u67e5\u627e\u5e76\u66ff\u6362...",
|
||||
"Could not find the specified string.": "\u672a\u627e\u5230\u641c\u7d22\u5185\u5bb9.",
|
||||
"Match case": "\u533a\u5206\u5927\u5c0f\u5199",
|
||||
"Find whole words only": "\u5168\u5b57\u5339\u914d",
|
||||
"Spell check": "\u62fc\u5199\u68c0\u67e5",
|
||||
"Ignore": "\u5ffd\u7565",
|
||||
"Ignore all": "\u5168\u90e8\u5ffd\u7565",
|
||||
"Finish": "\u5b8c\u6210",
|
||||
"Add to Dictionary": "\u6dfb\u52a0\u5230\u5b57\u5178",
|
||||
"Insert table": "\u63d2\u5165\u8868\u683c",
|
||||
"Table properties": "\u8868\u683c\u5c5e\u6027",
|
||||
"Delete table": "\u5220\u9664\u8868\u683c",
|
||||
"Cell": "\u5355\u5143\u683c",
|
||||
"Row": "\u884c",
|
||||
"Column": "\u5217",
|
||||
"Cell properties": "\u5355\u5143\u683c\u5c5e\u6027",
|
||||
"Merge cells": "\u5408\u5e76\u5355\u5143\u683c",
|
||||
"Split cell": "\u62c6\u5206\u5355\u5143\u683c",
|
||||
"Insert row before": "\u5728\u4e0a\u65b9\u63d2\u5165",
|
||||
"Insert row after": "\u5728\u4e0b\u65b9\u63d2\u5165",
|
||||
"Delete row": "\u5220\u9664\u884c",
|
||||
"Row properties": "\u884c\u5c5e\u6027",
|
||||
"Cut row": "\u526a\u5207\u884c",
|
||||
"Copy row": "\u590d\u5236\u884c",
|
||||
"Paste row before": "\u7c98\u8d34\u5230\u4e0a\u65b9",
|
||||
"Paste row after": "\u7c98\u8d34\u5230\u4e0b\u65b9",
|
||||
"Insert column before": "\u5728\u5de6\u4fa7\u63d2\u5165",
|
||||
"Insert column after": "\u5728\u53f3\u4fa7\u63d2\u5165",
|
||||
"Delete column": "\u5220\u9664\u5217",
|
||||
"Cols": "\u5217",
|
||||
"Rows": "\u884c",
|
||||
"Width": "\u5bbd",
|
||||
"Height": "\u9ad8",
|
||||
"Cell spacing": "\u5355\u5143\u683c\u5916\u95f4\u8ddd",
|
||||
"Cell padding": "\u5355\u5143\u683c\u5185\u8fb9\u8ddd",
|
||||
"Show caption": "\u663e\u793a\u6807\u9898",
|
||||
"Left": "\u5de6\u5bf9\u9f50",
|
||||
"Center": "\u5c45\u4e2d",
|
||||
"Right": "\u53f3\u5bf9\u9f50",
|
||||
"Cell type": "\u5355\u5143\u683c\u7c7b\u578b",
|
||||
"Scope": "\u8303\u56f4",
|
||||
"Alignment": "\u5bf9\u9f50\u65b9\u5f0f",
|
||||
"H Align": "\u6c34\u5e73\u5bf9\u9f50",
|
||||
"V Align": "\u5782\u76f4\u5bf9\u9f50",
|
||||
"Top": "\u9876\u90e8\u5bf9\u9f50",
|
||||
"Middle": "\u5782\u76f4\u5c45\u4e2d",
|
||||
"Bottom": "\u5e95\u90e8\u5bf9\u9f50",
|
||||
"Header cell": "\u8868\u5934\u5355\u5143\u683c",
|
||||
"Row group": "\u884c\u7ec4",
|
||||
"Column group": "\u5217\u7ec4",
|
||||
"Row type": "\u884c\u7c7b\u578b",
|
||||
"Header": "\u8868\u5934",
|
||||
"Body": "\u8868\u4f53",
|
||||
"Footer": "\u8868\u5c3e",
|
||||
"Border color": "\u8fb9\u6846\u989c\u8272",
|
||||
"Insert template...": "\u63d2\u5165\u6a21\u677f...",
|
||||
"Templates": "\u6a21\u677f",
|
||||
"Template": "\u6a21\u677f",
|
||||
"Text color": "\u6587\u5b57\u989c\u8272",
|
||||
"Background color": "\u80cc\u666f\u8272",
|
||||
"Custom...": "\u81ea\u5b9a\u4e49...",
|
||||
"Custom color": "\u81ea\u5b9a\u4e49\u989c\u8272",
|
||||
"No color": "\u65e0",
|
||||
"Remove color": "\u79fb\u9664\u989c\u8272",
|
||||
"Table of Contents": "\u5185\u5bb9\u5217\u8868",
|
||||
"Show blocks": "\u663e\u793a\u533a\u5757\u8fb9\u6846",
|
||||
"Show invisible characters": "\u663e\u793a\u4e0d\u53ef\u89c1\u5b57\u7b26",
|
||||
"Word count": "\u5b57\u6570",
|
||||
"Words: {0}": "\u5b57\u6570\uff1a{0}",
|
||||
"{0} words": "{0} \u5b57",
|
||||
"File": "\u6587\u4ef6",
|
||||
"Edit": "\u7f16\u8f91",
|
||||
"Insert": "\u63d2\u5165",
|
||||
"View": "\u89c6\u56fe",
|
||||
"Format": "\u683c\u5f0f",
|
||||
"Table": "\u8868\u683c",
|
||||
"Tools": "\u5de5\u5177",
|
||||
"Powered by {0}": "\u7531{0}\u9a71\u52a8",
|
||||
"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help": "\u5728\u7f16\u8f91\u533a\u6309ALT-F9\u6253\u5f00\u83dc\u5355\uff0c\u6309ALT-F10\u6253\u5f00\u5de5\u5177\u680f\uff0c\u6309ALT-0\u67e5\u770b\u5e2e\u52a9",
|
||||
"Image title": "\u56fe\u7247\u6807\u9898",
|
||||
"Border width": "\u8fb9\u6846\u5bbd\u5ea6",
|
||||
"Border style": "\u8fb9\u6846\u6837\u5f0f",
|
||||
"Error": "\u9519\u8bef",
|
||||
"Warn": "\u8b66\u544a",
|
||||
"Valid": "\u6709\u6548",
|
||||
"To open the popup, press Shift+Enter": "\u6309Shitf+Enter\u952e\u6253\u5f00\u5bf9\u8bdd\u6846",
|
||||
"Rich Text Area. Press ALT-0 for help.": "\u7f16\u8f91\u533a\u3002\u6309Alt+0\u952e\u6253\u5f00\u5e2e\u52a9\u3002",
|
||||
"System Font": "\u7cfb\u7edf\u5b57\u4f53",
|
||||
"Failed to upload image: {0}": "\u56fe\u7247\u4e0a\u4f20\u5931\u8d25: {0}",
|
||||
"Failed to load plugin: {0} from url {1}": "\u63d2\u4ef6\u52a0\u8f7d\u5931\u8d25: {0} \u6765\u81ea\u94fe\u63a5 {1}",
|
||||
"Failed to load plugin url: {0}": "\u63d2\u4ef6\u52a0\u8f7d\u5931\u8d25 \u94fe\u63a5: {0}",
|
||||
"Failed to initialize plugin: {0}": "\u63d2\u4ef6\u521d\u59cb\u5316\u5931\u8d25: {0}",
|
||||
"example": "\u793a\u4f8b",
|
||||
"Search": "\u641c\u7d22",
|
||||
"All": "\u5168\u90e8",
|
||||
"Currency": "\u8d27\u5e01",
|
||||
"Text": "\u6587\u5b57",
|
||||
"Quotations": "\u5f15\u7528",
|
||||
"Mathematical": "\u6570\u5b66",
|
||||
"Extended Latin": "\u62c9\u4e01\u8bed\u6269\u5145",
|
||||
"Symbols": "\u7b26\u53f7",
|
||||
"Arrows": "\u7bad\u5934",
|
||||
"User Defined": "\u81ea\u5b9a\u4e49",
|
||||
"dollar sign": "\u7f8e\u5143\u7b26\u53f7",
|
||||
"currency sign": "\u8d27\u5e01\u7b26\u53f7",
|
||||
"euro-currency sign": "\u6b27\u5143\u7b26\u53f7",
|
||||
"colon sign": "\u5192\u53f7",
|
||||
"cruzeiro sign": "\u514b\u9c81\u8d5b\u7f57\u5e01\u7b26\u53f7",
|
||||
"french franc sign": "\u6cd5\u90ce\u7b26\u53f7",
|
||||
"lira sign": "\u91cc\u62c9\u7b26\u53f7",
|
||||
"mill sign": "\u5bc6\u5c14\u7b26\u53f7",
|
||||
"naira sign": "\u5948\u62c9\u7b26\u53f7",
|
||||
"peseta sign": "\u6bd4\u585e\u5854\u7b26\u53f7",
|
||||
"rupee sign": "\u5362\u6bd4\u7b26\u53f7",
|
||||
"won sign": "\u97e9\u5143\u7b26\u53f7",
|
||||
"new sheqel sign": "\u65b0\u8c22\u514b\u5c14\u7b26\u53f7",
|
||||
"dong sign": "\u8d8a\u5357\u76fe\u7b26\u53f7",
|
||||
"kip sign": "\u8001\u631d\u57fa\u666e\u7b26\u53f7",
|
||||
"tugrik sign": "\u56fe\u683c\u91cc\u514b\u7b26\u53f7",
|
||||
"drachma sign": "\u5fb7\u62c9\u514b\u9a6c\u7b26\u53f7",
|
||||
"german penny symbol": "\u5fb7\u56fd\u4fbf\u58eb\u7b26\u53f7",
|
||||
"peso sign": "\u6bd4\u7d22\u7b26\u53f7",
|
||||
"guarani sign": "\u74dc\u62c9\u5c3c\u7b26\u53f7",
|
||||
"austral sign": "\u6fb3\u5143\u7b26\u53f7",
|
||||
"hryvnia sign": "\u683c\u91cc\u592b\u5c3c\u4e9a\u7b26\u53f7",
|
||||
"cedi sign": "\u585e\u5730\u7b26\u53f7",
|
||||
"livre tournois sign": "\u91cc\u5f17\u5f17\u5c14\u7b26\u53f7",
|
||||
"spesmilo sign": "spesmilo\u7b26\u53f7",
|
||||
"tenge sign": "\u575a\u6208\u7b26\u53f7",
|
||||
"indian rupee sign": "\u5370\u5ea6\u5362\u6bd4",
|
||||
"turkish lira sign": "\u571f\u8033\u5176\u91cc\u62c9",
|
||||
"nordic mark sign": "\u5317\u6b27\u9a6c\u514b",
|
||||
"manat sign": "\u9a6c\u7eb3\u7279\u7b26\u53f7",
|
||||
"ruble sign": "\u5362\u5e03\u7b26\u53f7",
|
||||
"yen character": "\u65e5\u5143\u5b57\u6837",
|
||||
"yuan character": "\u4eba\u6c11\u5e01\u5143\u5b57\u6837",
|
||||
"yuan character, in hong kong and taiwan": "\u5143\u5b57\u6837\uff08\u6e2f\u53f0\u5730\u533a\uff09",
|
||||
"yen\/yuan character variant one": "\u5143\u5b57\u6837\uff08\u5927\u5199\uff09",
|
||||
"Loading emoticons...": "\u52a0\u8f7d\u8868\u60c5\u7b26\u53f7...",
|
||||
"Could not load emoticons": "\u4e0d\u80fd\u52a0\u8f7d\u8868\u60c5\u7b26\u53f7",
|
||||
"People": "\u4eba\u7c7b",
|
||||
"Animals and Nature": "\u52a8\u7269\u548c\u81ea\u7136",
|
||||
"Food and Drink": "\u98df\u7269\u548c\u996e\u54c1",
|
||||
"Activity": "\u6d3b\u52a8",
|
||||
"Travel and Places": "\u65c5\u6e38\u548c\u5730\u70b9",
|
||||
"Objects": "\u7269\u4ef6",
|
||||
"Flags": "\u65d7\u5e1c",
|
||||
"Characters": "\u5b57\u7b26",
|
||||
"Characters (no spaces)": "\u5b57\u7b26(\u65e0\u7a7a\u683c)",
|
||||
"Error: Form submit field collision.": "\u9519\u8bef: \u8868\u5355\u63d0\u4ea4\u5b57\u6bb5\u51b2\u7a81\u3002",
|
||||
"Error: No form element found.": "\u9519\u8bef: \u6ca1\u6709\u8868\u5355\u63a7\u4ef6\u3002",
|
||||
"Update": "\u66f4\u65b0",
|
||||
"Color swatch": "\u989c\u8272\u6837\u672c",
|
||||
"Turquoise": "\u9752\u7eff\u8272",
|
||||
"Green": "\u7eff\u8272",
|
||||
"Blue": "\u84dd\u8272",
|
||||
"Purple": "\u7d2b\u8272",
|
||||
"Navy Blue": "\u6d77\u519b\u84dd",
|
||||
"Dark Turquoise": "\u6df1\u84dd\u7eff\u8272",
|
||||
"Dark Green": "\u6df1\u7eff\u8272",
|
||||
"Medium Blue": "\u4e2d\u84dd\u8272",
|
||||
"Medium Purple": "\u4e2d\u7d2b\u8272",
|
||||
"Midnight Blue": "\u6df1\u84dd\u8272",
|
||||
"Yellow": "\u9ec4\u8272",
|
||||
"Orange": "\u6a59\u8272",
|
||||
"Red": "\u7ea2\u8272",
|
||||
"Light Gray": "\u6d45\u7070\u8272",
|
||||
"Gray": "\u7070\u8272",
|
||||
"Dark Yellow": "\u6697\u9ec4\u8272",
|
||||
"Dark Orange": "\u6df1\u6a59\u8272",
|
||||
"Dark Red": "\u6df1\u7ea2\u8272",
|
||||
"Medium Gray": "\u4e2d\u7070\u8272",
|
||||
"Dark Gray": "\u6df1\u7070\u8272",
|
||||
"Black": "\u9ed1\u8272",
|
||||
"White": "\u767d\u8272",
|
||||
"Switch to or from fullscreen mode": "\u5207\u6362\u5168\u5c4f\u6a21\u5f0f",
|
||||
"Open help dialog": "\u6253\u5f00\u5e2e\u52a9\u5bf9\u8bdd\u6846",
|
||||
"history": "\u5386\u53f2",
|
||||
"styles": "\u6837\u5f0f",
|
||||
"formatting": "\u683c\u5f0f\u5316",
|
||||
"alignment": "\u5bf9\u9f50",
|
||||
"indentation": "\u7f29\u8fdb",
|
||||
"permanent pen": "\u8bb0\u53f7\u7b14",
|
||||
"comments": "\u5907\u6ce8",
|
||||
"Anchor": "\u951a\u70b9",
|
||||
"Special character": "\u7279\u6b8a\u7b26\u53f7",
|
||||
"Code sample": "\u4ee3\u7801\u793a\u4f8b",
|
||||
"Color": "\u989c\u8272",
|
||||
"Emoticons": "\u8868\u60c5",
|
||||
"Document properties": "\u6587\u6863\u5c5e\u6027",
|
||||
"Image": "\u56fe\u7247",
|
||||
"Insert link": "\u63d2\u5165\u94fe\u63a5",
|
||||
"Target": "\u6253\u5f00\u65b9\u5f0f",
|
||||
"Link": "\u94fe\u63a5",
|
||||
"Poster": "\u5c01\u9762",
|
||||
"Media": "\u5a92\u4f53",
|
||||
"Print": "\u6253\u5370",
|
||||
"Prev": "\u4e0a\u4e00\u4e2a",
|
||||
"Find and replace": "\u67e5\u627e\u548c\u66ff\u6362",
|
||||
"Whole words": "\u5168\u5b57\u5339\u914d",
|
||||
"Spellcheck": "\u62fc\u5199\u68c0\u67e5",
|
||||
"Caption": "\u6807\u9898",
|
||||
"Insert template": "\u63d2\u5165\u6a21\u677f"
|
||||
});
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
|
||||
* Licensed under the LGPL or a commercial license.
|
||||
* For LGPL see License.txt in the project root for license information.
|
||||
* For commercial licenses see https://www.tiny.cloud/
|
||||
*/
|
||||
.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
|
||||
* Licensed under the LGPL or a commercial license.
|
||||
* For LGPL see License.txt in the project root for license information.
|
||||
* For commercial licenses see https://www.tiny.cloud/
|
||||
*/
|
||||
body.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
|
||||
* Licensed under the LGPL or a commercial license.
|
||||
* For LGPL see License.txt in the project root for license information.
|
||||
* For commercial licenses see https://www.tiny.cloud/
|
||||
*/
|
||||
.tinymce-mobile-unfocused-selections .tinymce-mobile-unfocused-selection{background-color:green;display:inline-block;opacity:.5;position:absolute}body{-webkit-text-size-adjust:none}body img{max-width:96vw}body table img{max-width:95%}body{font-family:sans-serif}table{border-collapse:collapse}
|
Binary file not shown.
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@ -0,0 +1,7 @@
|
||||
/**
|
||||
* Copyright (c) Tiny Technologies, Inc. All rights reserved.
|
||||
* Licensed under the LGPL or a commercial license.
|
||||
* For LGPL see License.txt in the project root for license information.
|
||||
* For commercial licenses see https://www.tiny.cloud/
|
||||
*/
|
||||
body.tox-dialog__disable-scroll{overflow:hidden}.tox-fullscreen{border:0;height:100%;margin:0;overflow:hidden;-ms-scroll-chaining:none;overscroll-behavior:none;padding:0;touch-action:pinch-zoom;width:100%}.tox.tox-tinymce.tox-fullscreen .tox-statusbar__resize-handle{display:none}.tox-shadowhost.tox-fullscreen,.tox.tox-tinymce.tox-fullscreen{left:0;position:fixed;top:0;z-index:1200}.tox.tox-tinymce.tox-fullscreen{background-color:transparent}.tox-fullscreen .tox.tox-tinymce-aux,.tox-fullscreen~.tox.tox-tinymce-aux{z-index:1201}
|
@ -0,0 +1,31 @@
|
||||
<script lang="ts" setup>
|
||||
import 'dayjs/locale/zh-cn'
|
||||
|
||||
import { App, ConfigProvider } from 'ant-design-vue'
|
||||
import { storeToRefs } from 'pinia'
|
||||
|
||||
import { computed } from 'vue'
|
||||
import { AppProvider } from '@/components/Application'
|
||||
import { useTitle } from '@/hooks/web/useTitle'
|
||||
import { useLocale } from '@/locales/useLocale'
|
||||
import { useAppStore } from '@/store/modules/app'
|
||||
|
||||
// support Multi-language
|
||||
const { getAntdLocale } = useLocale()
|
||||
const appStore = useAppStore()
|
||||
const { themeConfig } = storeToRefs(appStore)
|
||||
|
||||
const componentSize = computed(() => appStore.getComponentSize)
|
||||
// Listening to page changes and dynamically changing site titles
|
||||
useTitle()
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<ConfigProvider :locale="getAntdLocale" :theme="themeConfig" :component-size="componentSize">
|
||||
<App class="h-full w-full">
|
||||
<AppProvider>
|
||||
<RouterView />
|
||||
</AppProvider>
|
||||
</App>
|
||||
</ConfigProvider>
|
||||
</template>
|
@ -0,0 +1,91 @@
|
||||
import type { TentantNameVO } from './model/loginModel'
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
import { getRefreshToken } from '@/utils/auth'
|
||||
|
||||
enum Api {
|
||||
Login = '/system/auth/login',
|
||||
RefreshToken = '/system/auth/refresh-token?refreshToken=',
|
||||
GetTenantIdByName = '/system/tenant/get-id-by-name?name=',
|
||||
GetTenantIdByUserName = '/system/tenant/get-tenantId-by-userName?name=',
|
||||
LoginOut = '/system/auth/logout',
|
||||
GetUserInfo = '/system/auth/get-permission-info',
|
||||
GetCaptcha = '/system/captcha/get',
|
||||
CheckCaptcha = '/system/captcha/check',
|
||||
}
|
||||
|
||||
// 刷新访问令牌
|
||||
export function refreshToken() {
|
||||
const refreshToken: string = getRefreshToken()
|
||||
return defHttp.post({ url: Api.RefreshToken + refreshToken })
|
||||
}
|
||||
|
||||
// 使用租户名,获得租户编号
|
||||
export function getTenantIdByName(name: string) {
|
||||
return defHttp.get<TentantNameVO>({ url: Api.GetTenantIdByName + name })
|
||||
}
|
||||
// 使用租户名,获得租户编号
|
||||
export function getTenantIdByUserName(name: string) {
|
||||
return defHttp.get<TentantNameVO>({ url: Api.GetTenantIdByUserName + name })
|
||||
}
|
||||
// 登出
|
||||
export function loginOut() {
|
||||
return defHttp.delete({ url: Api.LoginOut })
|
||||
}
|
||||
|
||||
// 获取用户权限信息
|
||||
export function getUserInfo() {
|
||||
return defHttp.get({ url: Api.GetUserInfo })
|
||||
}
|
||||
|
||||
// 获取登录验证码
|
||||
export function sendSmsCode(mobile, scene) {
|
||||
return defHttp.post({
|
||||
url: '/system/auth/send-sms-code',
|
||||
data: {
|
||||
mobile,
|
||||
scene,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
// 获取验证图片 以及token
|
||||
export function getCaptcha(data) {
|
||||
return defHttp.post({ url: Api.GetCaptcha, data }, { isReturnNativeResponse: true })
|
||||
}
|
||||
|
||||
// 滑动或者点选验证
|
||||
export function checkCaptcha(data) {
|
||||
return defHttp.post({ url: Api.CheckCaptcha, data }, { isReturnNativeResponse: true })
|
||||
}
|
||||
|
||||
// ========== OAUTH 2.0 相关 ==========
|
||||
|
||||
export function getAuthorize(clientId) {
|
||||
return defHttp.get({ url: `/system/oauth2/authorize?clientId=${clientId}` })
|
||||
}
|
||||
|
||||
export function authorize(responseType, clientId, redirectUri, state, autoApprove, checkedScopes, uncheckedScopes) {
|
||||
// 构建 scopes
|
||||
const scopes = {}
|
||||
for (const scope of checkedScopes)
|
||||
scopes[scope] = true
|
||||
|
||||
for (const scope of uncheckedScopes)
|
||||
scopes[scope] = false
|
||||
|
||||
// 发起请求
|
||||
return defHttp.post({
|
||||
url: '/system/oauth2/authorize',
|
||||
headers: {
|
||||
'Content-type': 'application/x-www-form-urlencoded',
|
||||
},
|
||||
params: {
|
||||
response_type: responseType,
|
||||
client_id: clientId,
|
||||
redirect_uri: redirectUri,
|
||||
state,
|
||||
auto_approve: autoApprove,
|
||||
scope: JSON.stringify(scopes),
|
||||
},
|
||||
})
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
export interface UserLoginVO {
|
||||
username: string
|
||||
password: string
|
||||
captchaVerification: string
|
||||
}
|
||||
|
||||
export interface TentantNameVO {
|
||||
id: number
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
import type { RouteMeta } from 'vue-router'
|
||||
|
||||
export interface RouteItem {
|
||||
path: string
|
||||
component: any
|
||||
meta: RouteMeta
|
||||
name?: string
|
||||
alias?: string | string[]
|
||||
redirect?: string
|
||||
caseSensitive?: boolean
|
||||
children?: RouteItem[]
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
export interface UploadApiResult {
|
||||
message: string
|
||||
code: number
|
||||
url: string
|
||||
}
|
@ -0,0 +1,45 @@
|
||||
import type { RouteItem } from './menuModel'
|
||||
|
||||
/**
|
||||
* @description: Login interface parameters
|
||||
*/
|
||||
export interface LoginParams {
|
||||
username: string
|
||||
password: string
|
||||
captchaVerification: string
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: SmsLogin interface parameters
|
||||
*/
|
||||
export interface SmsLoginParams {
|
||||
mobile: number
|
||||
code: number
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: Login interface return value
|
||||
*/
|
||||
export interface LoginResultModel {
|
||||
userId: string | number
|
||||
accessToken: string
|
||||
refreshToken: string
|
||||
expiresTime: number
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: Get user information return value
|
||||
*/
|
||||
export interface GetUserInfoModel {
|
||||
roles: string[]
|
||||
permissions: string[]
|
||||
menus: RouteItem[]
|
||||
// 用户id
|
||||
user: userModel
|
||||
}
|
||||
|
||||
export interface userModel {
|
||||
id: string | number
|
||||
avatar: string
|
||||
nickname: string
|
||||
}
|
@ -0,0 +1,128 @@
|
||||
import { ContentTypeEnum } from '@/enums/httpEnum'
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface ProfileDept {
|
||||
id: number
|
||||
name: string
|
||||
}
|
||||
export interface ProfileRole {
|
||||
id: number
|
||||
name: string
|
||||
}
|
||||
export interface ProfilePost {
|
||||
id: number
|
||||
name: string
|
||||
}
|
||||
export interface SocialUser {
|
||||
id: number
|
||||
type: number
|
||||
openid: string
|
||||
token: string
|
||||
rawTokenInfo: string
|
||||
nickname: string
|
||||
avatar: string
|
||||
rawUserInfo: string
|
||||
code: string
|
||||
state: string
|
||||
}
|
||||
export interface ProfileVO {
|
||||
id: number
|
||||
username: string
|
||||
nickname: string
|
||||
dept: ProfileDept
|
||||
roles: ProfileRole[]
|
||||
posts: ProfilePost[]
|
||||
socialUsers: SocialUser[]
|
||||
email: string
|
||||
mobile: string
|
||||
sex: number
|
||||
avatar: string
|
||||
status: number
|
||||
remark: string
|
||||
loginIp: string
|
||||
loginDate: Date
|
||||
createTime: Date
|
||||
}
|
||||
|
||||
export interface UserProfileUpdateReqVO {
|
||||
nickname: string
|
||||
email: string
|
||||
mobile: string
|
||||
sex: number
|
||||
}
|
||||
|
||||
enum Api {
|
||||
getUserProfileApi = '/system/user/profile/get',
|
||||
putUserProfileApi = '/system/user/profile/update',
|
||||
uploadAvatarApi = '/system/user/profile/update-avatar',
|
||||
updateUserPwdApi = '/system/user/profile/update-password',
|
||||
socialBindApi = '/system/social-user/bind',
|
||||
socialUnbindApi = '/system/social-user/unbind',
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: getUserProfileApi
|
||||
*/
|
||||
export function getUserProfileApi() {
|
||||
return defHttp.get({ url: Api.getUserProfileApi })
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: updateUserProfileApi
|
||||
*/
|
||||
export function updateUserProfileApi(data: UserProfileUpdateReqVO) {
|
||||
return defHttp.put({ url: Api.putUserProfileApi, data })
|
||||
}
|
||||
|
||||
// 用户密码重置
|
||||
export function updateUserPwdApi(oldPassword: string, newPassword: string) {
|
||||
return defHttp.put({
|
||||
url: Api.updateUserPwdApi,
|
||||
data: {
|
||||
oldPassword,
|
||||
newPassword,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
// 用户头像上传
|
||||
export function uploadAvatarApi(data) {
|
||||
return defHttp.put({
|
||||
url: Api.uploadAvatarApi,
|
||||
headers: {
|
||||
'Content-type': ContentTypeEnum.FORM_DATA,
|
||||
'ignoreCancelToken': true,
|
||||
},
|
||||
data,
|
||||
})
|
||||
}
|
||||
|
||||
// 社交绑定,使用 code 授权码
|
||||
export function socialBind(type, code, state) {
|
||||
return defHttp.post({
|
||||
url: Api.socialBindApi,
|
||||
data: {
|
||||
type,
|
||||
code,
|
||||
state,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
// 取消社交绑定
|
||||
export function socialUnbind(type, openid) {
|
||||
return defHttp.delete({
|
||||
url: Api.socialUnbindApi,
|
||||
data: {
|
||||
type,
|
||||
openid,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
// 社交授权的跳转
|
||||
export function socialAuthRedirect(type, redirectUri) {
|
||||
return defHttp.get({
|
||||
url: `/system/auth/social-auth-redirect?type=${type}&redirectUri=${redirectUri}`,
|
||||
})
|
||||
}
|
@ -0,0 +1,20 @@
|
||||
import type { AxiosProgressEvent } from 'axios'
|
||||
import type { UploadApiResult } from './model/uploadModel'
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
import type { UploadFileParams } from '@/types/axios'
|
||||
import { useGlobSetting } from '@/hooks/setting'
|
||||
|
||||
const { uploadUrl = '' } = useGlobSetting()
|
||||
|
||||
/**
|
||||
* @description: Upload interface
|
||||
*/
|
||||
export function uploadApi(params: UploadFileParams, onUploadProgress: (progressEvent: AxiosProgressEvent) => void) {
|
||||
return defHttp.uploadFile<UploadApiResult>(
|
||||
{
|
||||
url: uploadUrl,
|
||||
onUploadProgress,
|
||||
},
|
||||
params,
|
||||
)
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
import type { GetUserInfoModel, LoginParams, LoginResultModel, SmsLoginParams } from './model/userModel'
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
import type { ErrorMessageMode } from '@/types/axios'
|
||||
|
||||
enum Api {
|
||||
Login = '/system/auth/login',
|
||||
Logout = '/system/auth/logout',
|
||||
SmsLogin = '/system/auth/sms-login',
|
||||
GetUserInfo = '/system/auth/get-permission-info',
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: user login api
|
||||
*/
|
||||
export function loginApi(params: LoginParams, mode: ErrorMessageMode = 'modal') {
|
||||
return defHttp.post<LoginResultModel>({ url: Api.Login, params }, { errorMessageMode: mode })
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: user smslogin api
|
||||
*/
|
||||
export function smsLogin(params: SmsLoginParams, mode: ErrorMessageMode = 'modal') {
|
||||
return defHttp.post<LoginResultModel>({ url: Api.SmsLogin, params }, { errorMessageMode: mode })
|
||||
}
|
||||
|
||||
/**
|
||||
* @description: getUserInfo
|
||||
*/
|
||||
export function getUserInfo() {
|
||||
return defHttp.get<GetUserInfoModel>({ url: Api.GetUserInfo }, { errorMessageMode: 'none' })
|
||||
}
|
||||
|
||||
export function doLogout() {
|
||||
return defHttp.post({ url: Api.Logout })
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export function getActivityList(params) {
|
||||
return defHttp.get({ url: '/bpm/activity/list', params })
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export function getProcessDefinitionPage(params) {
|
||||
return defHttp.get({ url: '/bpm/process-definition/page', params })
|
||||
}
|
||||
|
||||
export function getProcessDefinitionList(params) {
|
||||
return defHttp.get({ url: '/bpm/process-definition/list', params })
|
||||
}
|
||||
|
||||
export function getProcessDefinitionBpmnXML(id) {
|
||||
return defHttp.get({ url: `/bpm/process-definition/get-bpmn-xml?id=${id}` })
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface FormVO {
|
||||
id: number
|
||||
name: string
|
||||
conf: string
|
||||
fields: string[]
|
||||
status: number
|
||||
remark: string
|
||||
createTime: string
|
||||
}
|
||||
|
||||
// 创建工作流的表单定义
|
||||
export function createForm(data: FormVO) {
|
||||
return defHttp.post({ url: '/bpm/form/create', data })
|
||||
}
|
||||
|
||||
// 更新工作流的表单定义
|
||||
export function updateForm(data: FormVO) {
|
||||
return defHttp.put({ url: '/bpm/form/update', data })
|
||||
}
|
||||
|
||||
// 删除工作流的表单定义
|
||||
export function deleteForm(id: number) {
|
||||
return defHttp.delete({ url: `/bpm/form/delete?id=${id}` })
|
||||
}
|
||||
|
||||
// 获得工作流的表单定义
|
||||
export function getForm(id: number) {
|
||||
return defHttp.get({ url: `/bpm/form/get?id=${id}` })
|
||||
}
|
||||
|
||||
// 获得工作流的表单定义分页
|
||||
export function getFormPage(params) {
|
||||
return defHttp.get({ url: '/bpm/form/page', params })
|
||||
}
|
||||
|
||||
// 获得动态表单的精简列表
|
||||
export function getSimpleForms() {
|
||||
return defHttp.get({ url: '/bpm/form/list-all-simple' })
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface LeaveVO {
|
||||
id: number
|
||||
result: number
|
||||
type: number
|
||||
reason: string
|
||||
processInstanceId: string
|
||||
startTime: string
|
||||
endTime: string
|
||||
createTime: string
|
||||
}
|
||||
|
||||
// 创建请假申请
|
||||
export function createLeave(data: LeaveVO) {
|
||||
return defHttp.post({ url: '/bpm/oa/leave/create', data })
|
||||
}
|
||||
|
||||
// 获得请假申请
|
||||
export function getLeave(id: number) {
|
||||
return defHttp.get({ url: `/bpm/oa/leave/get?id=${id}` })
|
||||
}
|
||||
|
||||
// 获得请假申请分页
|
||||
export function getLeavePage(params) {
|
||||
return defHttp.get({ url: '/bpm/oa/leave/page', params })
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface ProcessDefinitionVO {
|
||||
id: string
|
||||
version: number
|
||||
deploymentTIme: string
|
||||
suspensionState: number
|
||||
}
|
||||
|
||||
export interface ModelVO {
|
||||
id: number
|
||||
formName: string
|
||||
key: string
|
||||
name: string
|
||||
description: string
|
||||
category: string
|
||||
formType: number
|
||||
formId: number
|
||||
formCustomCreatePath: string
|
||||
formCustomViewPath: string
|
||||
processDefinition: ProcessDefinitionVO
|
||||
status: number
|
||||
remark: string
|
||||
createTime: string
|
||||
}
|
||||
|
||||
export function getModelPage(params) {
|
||||
return defHttp.get({ url: '/bpm/model/page', params })
|
||||
}
|
||||
|
||||
export function getModel(id: number) {
|
||||
return defHttp.get({ url: `/bpm/model/get?id=${id}` })
|
||||
}
|
||||
|
||||
export function updateModel(data: ModelVO) {
|
||||
return defHttp.put({ url: '/bpm/model/update', data })
|
||||
}
|
||||
|
||||
// 任务状态修改
|
||||
export function updateModelState(id: number, state: number) {
|
||||
const data = {
|
||||
id,
|
||||
state,
|
||||
}
|
||||
return defHttp.put({ url: '/bpm/model/update-state', data })
|
||||
}
|
||||
|
||||
export function createModel(data: ModelVO) {
|
||||
return defHttp.post({ url: '/bpm/model/create', data })
|
||||
}
|
||||
|
||||
export function deleteModel(id: number) {
|
||||
return defHttp.delete({ url: `/bpm/model/delete?id=${id}` })
|
||||
}
|
||||
|
||||
export function deployModel(id: number) {
|
||||
return defHttp.post({ url: `/bpm/model/deploy?id=${id}` })
|
||||
}
|
||||
|
||||
export function importModel(data) {
|
||||
return defHttp.post({ url: '/bpm/model/import', data })
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export function getMyProcessInstancePage(params) {
|
||||
return defHttp.get({ url: '/bpm/process-instance/my-page', params })
|
||||
}
|
||||
|
||||
export function createProcessInstance(data) {
|
||||
return defHttp.post({ url: '/bpm/process-instance/create', data })
|
||||
}
|
||||
|
||||
export function cancelProcessInstance(id: number, reason: string) {
|
||||
const data = {
|
||||
id,
|
||||
reason,
|
||||
}
|
||||
return defHttp.delete({ url: '/bpm/process-instance/cancel', data })
|
||||
}
|
||||
|
||||
export function getProcessInstance(id: number) {
|
||||
return defHttp.get({ url: `/bpm/process-instance/get?id=${id}` })
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export function getTodoTaskPage(params) {
|
||||
return defHttp.get({ url: '/bpm/task/todo-page', params })
|
||||
}
|
||||
|
||||
export function getDoneTaskPage(params) {
|
||||
return defHttp.get({ url: '/bpm/task/done-page', params })
|
||||
}
|
||||
|
||||
export function completeTask(data) {
|
||||
return defHttp.put({ url: '/bpm/task/complete', data })
|
||||
}
|
||||
|
||||
export function approveTask(data) {
|
||||
return defHttp.put({ url: '/bpm/task/approve', data })
|
||||
}
|
||||
|
||||
export function rejectTask(data) {
|
||||
return defHttp.put({ url: '/bpm/task/reject', data })
|
||||
}
|
||||
export function backTask(data) {
|
||||
return defHttp.put({ url: '/bpm/task/back', data })
|
||||
}
|
||||
|
||||
export function updateTaskAssignee(data) {
|
||||
return defHttp.put({ url: '/bpm/task/update-assignee', data })
|
||||
}
|
||||
|
||||
export function getTaskListByProcessInstanceId(processInstanceId) {
|
||||
return defHttp.get({
|
||||
url: `/bpm/task/list-by-process-instance-id?processInstanceId=${processInstanceId}`,
|
||||
})
|
||||
}
|
||||
|
||||
// 导出任务
|
||||
export async function exportTask(params) {
|
||||
return await defHttp.download({ url: '/bpm/task/export', params })
|
||||
}
|
@ -0,0 +1,23 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface TaskAssignVO {
|
||||
id: number
|
||||
modelId: string
|
||||
processDefinitionId: string
|
||||
taskDefinitionKey: string
|
||||
taskDefinitionName: string
|
||||
options: string[]
|
||||
type: number
|
||||
}
|
||||
|
||||
export function getTaskAssignRuleList(params) {
|
||||
return defHttp.get({ url: '/bpm/task-assign-rule/list', params })
|
||||
}
|
||||
|
||||
export function createTaskAssignRule(data: TaskAssignVO) {
|
||||
return defHttp.post({ url: '/bpm/task-assign-rule/create', data })
|
||||
}
|
||||
|
||||
export function updateTaskAssignRule(data: TaskAssignVO) {
|
||||
return defHttp.put({ url: '/bpm/task-assign-rule/update', data })
|
||||
}
|
@ -0,0 +1,41 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface UserGroupVO {
|
||||
id: number
|
||||
name: string
|
||||
description: string
|
||||
memberUserIds: number[]
|
||||
status: number
|
||||
remark: string
|
||||
createTime: string
|
||||
}
|
||||
|
||||
// 创建用户组
|
||||
export function createUserGroup(data: UserGroupVO) {
|
||||
return defHttp.post({ url: '/bpm/user-group/create', data })
|
||||
}
|
||||
|
||||
// 更新用户组
|
||||
export function updateUserGroup(data: UserGroupVO) {
|
||||
return defHttp.put({ url: '/bpm/user-group/update', data })
|
||||
}
|
||||
|
||||
// 删除用户组
|
||||
export function deleteUserGroup(id: number) {
|
||||
return defHttp.delete({ url: `/bpm/user-group/delete?id=${id}` })
|
||||
}
|
||||
|
||||
// 获得用户组
|
||||
export function getUserGroup(id: number) {
|
||||
return defHttp.get({ url: `/bpm/user-group/get?id=${id}` })
|
||||
}
|
||||
|
||||
// 获得用户组分页
|
||||
export function getUserGroupPage(params) {
|
||||
return defHttp.get({ url: '/bpm/user-group/page', params })
|
||||
}
|
||||
|
||||
// 获取用户组精简信息列表
|
||||
export function listSimpleUserGroups() {
|
||||
return defHttp.get({ url: '/bpm/user-group/list-all-simple' })
|
||||
}
|
@ -0,0 +1,50 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface ApiAccessLogVO {
|
||||
id: number
|
||||
traceId: string
|
||||
userId: number
|
||||
userType: number
|
||||
applicationName: string
|
||||
requestMethod: string
|
||||
requestParams: string
|
||||
requestUrl: string
|
||||
userIp: string
|
||||
userAgent: string
|
||||
beginTime: Date
|
||||
endTIme: Date
|
||||
duration: number
|
||||
resultCode: number
|
||||
resultMsg: string
|
||||
createTime: Date
|
||||
}
|
||||
|
||||
export interface ApiAccessLogPageReqVO extends PageParam {
|
||||
userId?: number
|
||||
userType?: number
|
||||
applicationName?: string
|
||||
requestUrl?: string
|
||||
beginTime?: Date[]
|
||||
duration?: number
|
||||
resultCode?: number
|
||||
}
|
||||
|
||||
export interface ApiAccessLogExportReqVO {
|
||||
userId?: number
|
||||
userType?: number
|
||||
applicationName?: string
|
||||
requestUrl?: string
|
||||
beginTime?: Date[]
|
||||
duration?: number
|
||||
resultCode?: number
|
||||
}
|
||||
|
||||
// 查询列表API 访问日志
|
||||
export function getApiAccessLogPage(params: ApiAccessLogPageReqVO) {
|
||||
return defHttp.get({ url: '/infra/api-access-log/page', params })
|
||||
}
|
||||
|
||||
// 导出API 访问日志
|
||||
export function exportApiAccessLog(params: ApiAccessLogExportReqVO) {
|
||||
return defHttp.download({ url: '/infra/api-access-log/export-excel', params }, '访问日志.xls')
|
||||
}
|
@ -0,0 +1,69 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface ApiErrorLogVO {
|
||||
id: number
|
||||
traceId: string
|
||||
userId: number
|
||||
userType: number
|
||||
applicationName: string
|
||||
requestMethod: string
|
||||
requestParams: string
|
||||
requestUrl: string
|
||||
userIp: string
|
||||
userAgent: string
|
||||
exceptionTime: Date
|
||||
exceptionName: string
|
||||
exceptionMessage: string
|
||||
exceptionRootCauseMessage: string
|
||||
exceptionStackTrace: string
|
||||
exceptionClassName: string
|
||||
exceptionFileName: string
|
||||
exceptionMethodName: string
|
||||
exceptionLineNumber: number
|
||||
processUserId: number
|
||||
processStatus: number
|
||||
processTime: Date
|
||||
resultCode: number
|
||||
createTime: Date
|
||||
}
|
||||
|
||||
export interface ApiErrorLogPageReqVO extends PageParam {
|
||||
userId?: number
|
||||
userType?: number
|
||||
applicationName?: string
|
||||
requestUrl?: string
|
||||
exceptionTime?: Date[]
|
||||
processStatus: number
|
||||
}
|
||||
|
||||
export interface ApiErrorLogExportReqVO {
|
||||
userId?: number
|
||||
userType?: number
|
||||
applicationName?: string
|
||||
requestUrl?: string
|
||||
exceptionTime?: Date[]
|
||||
processStatus: number
|
||||
}
|
||||
|
||||
// 查询列表API 访问日志
|
||||
export function getApiErrorLogPage(params: ApiErrorLogPageReqVO) {
|
||||
return defHttp.get({ url: '/infra/api-error-log/page', params })
|
||||
}
|
||||
|
||||
// 更新 API 错误日志的处理状态
|
||||
export function updateApiErrorLogProcess(id: number, processStatus: number) {
|
||||
return defHttp.put({
|
||||
url: `/infra/api-error-log/update-status?id=${id}&processStatus=${processStatus}`,
|
||||
})
|
||||
}
|
||||
|
||||
// 导出API 错误日志
|
||||
export function exportApiErrorLog(params: ApiErrorLogExportReqVO) {
|
||||
return defHttp.download(
|
||||
{
|
||||
url: '/infra/api-error-log/export-excel',
|
||||
params,
|
||||
},
|
||||
'错误日志.xls',
|
||||
)
|
||||
}
|
@ -0,0 +1,57 @@
|
||||
import type { CodegenCreateListReqVO, CodegenUpdateReqVO } from './types'
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
// 查询列表代码生成表定义
|
||||
export function getCodegenTablePage(params) {
|
||||
return defHttp.get({ url: '/infra/codegen/table/page', params })
|
||||
}
|
||||
|
||||
// 查询详情代码生成表定义
|
||||
export function getCodegenTable(id: number) {
|
||||
return defHttp.get({ url: `/infra/codegen/detail?tableId=${id}` })
|
||||
}
|
||||
|
||||
// 新增代码生成表定义
|
||||
export function createCodegenTable(data: CodegenCreateListReqVO) {
|
||||
return defHttp.post({ url: '/infra/codegen/create', data })
|
||||
}
|
||||
|
||||
// 修改代码生成表定义
|
||||
export function updateCodegenTable(data: CodegenUpdateReqVO) {
|
||||
return defHttp.put({ url: '/infra/codegen/update', data })
|
||||
}
|
||||
|
||||
// 基于数据库的表结构,同步数据库的表和字段定义
|
||||
export function syncCodegenFromDB(id: number) {
|
||||
return defHttp.put({ url: `/infra/codegen/sync-from-db?tableId=${id}` })
|
||||
}
|
||||
|
||||
// 基于 SQL 建表语句,同步数据库的表和字段定义
|
||||
export function syncCodegenFromSQL(id: number, sql: string) {
|
||||
return defHttp.put({ url: `/infra/codegen/sync-from-sql?tableId=${id}&sql=${sql}` })
|
||||
}
|
||||
|
||||
// 预览生成代码
|
||||
export function previewCodegen(id: number) {
|
||||
return defHttp.get({ url: `/infra/codegen/preview?tableId=${id}` })
|
||||
}
|
||||
|
||||
// 下载生成代码
|
||||
export function downloadCodegen(data) {
|
||||
return defHttp.download({ url: `/infra/codegen/download?tableId=${data.id}` }, `${data.tableName}.zip`)
|
||||
}
|
||||
|
||||
// 获得表定义
|
||||
export function getSchemaTableList(params) {
|
||||
return defHttp.get({ url: '/infra/codegen/db/table/list', params })
|
||||
}
|
||||
|
||||
// 基于数据库的表结构,创建代码生成器的表定义
|
||||
export function createCodegenList(data) {
|
||||
return defHttp.post({ url: '/infra/codegen/create-list', data })
|
||||
}
|
||||
|
||||
// 删除代码生成表定义
|
||||
export function deleteCodegenTable(id: number) {
|
||||
return defHttp.delete({ url: `/infra/codegen/delete?tableId=${id}` })
|
||||
}
|
@ -0,0 +1,61 @@
|
||||
export interface CodegenTableVO {
|
||||
id: number
|
||||
tableId: number
|
||||
isParentMenuIdValid: boolean
|
||||
dataSourceConfigId: number
|
||||
scene: number
|
||||
tableName: string
|
||||
tableComment: string
|
||||
remark: string
|
||||
moduleName: string
|
||||
businessName: string
|
||||
className: string
|
||||
classComment: string
|
||||
author: string
|
||||
createTime: Date
|
||||
updateTime: Date
|
||||
templateType: number
|
||||
parentMenuId: number
|
||||
}
|
||||
|
||||
export interface CodegenColumnVO {
|
||||
id: number
|
||||
tableId: number
|
||||
columnName: string
|
||||
dataType: string
|
||||
columnComment: string
|
||||
nullable: number
|
||||
primaryKey: number
|
||||
autoIncrement: string
|
||||
ordinalPosition: number
|
||||
javaType: string
|
||||
javaField: string
|
||||
dictType: string
|
||||
example: string
|
||||
createOperation: number
|
||||
updateOperation: number
|
||||
listOperation: number
|
||||
listOperationCondition: string
|
||||
listOperationResult: number
|
||||
htmlType: string
|
||||
}
|
||||
export interface DatabaseTableVO {
|
||||
name: string
|
||||
comment: string
|
||||
}
|
||||
export interface CodegenDetailVO {
|
||||
table: CodegenTableVO
|
||||
columns: CodegenColumnVO[]
|
||||
}
|
||||
export interface CodegenPreviewVO {
|
||||
filePath: string
|
||||
code: string
|
||||
}
|
||||
export interface CodegenUpdateReqVO {
|
||||
table: CodegenTableVO
|
||||
columns: CodegenColumnVO[]
|
||||
}
|
||||
export interface CodegenCreateListReqVO {
|
||||
dataSourceConfigId: number
|
||||
tableNames: string[]
|
||||
}
|
@ -0,0 +1,62 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface ConfigVO {
|
||||
id: number
|
||||
category: string
|
||||
name: string
|
||||
key: string
|
||||
value: string
|
||||
type: number
|
||||
visible: boolean
|
||||
remark: string
|
||||
createTime: Date
|
||||
}
|
||||
|
||||
export interface ConfigPageReqVO extends PageParam {
|
||||
name?: string
|
||||
key?: string
|
||||
type?: number
|
||||
createTime?: Date[]
|
||||
}
|
||||
|
||||
export interface ConfigExportReqVO {
|
||||
name?: string
|
||||
key?: string
|
||||
type?: number
|
||||
createTime?: Date[]
|
||||
}
|
||||
|
||||
// 查询参数列表
|
||||
export function getConfigPage(params: ConfigPageReqVO) {
|
||||
return defHttp.get({ url: '/infra/config/page', params })
|
||||
}
|
||||
|
||||
// 查询参数详情
|
||||
export function getConfig(id: number) {
|
||||
return defHttp.get({ url: `/infra/config/get?id=${id}` })
|
||||
}
|
||||
|
||||
// 根据参数键名查询参数值
|
||||
export function getConfigKey(configKey: string) {
|
||||
return defHttp.get({ url: `/infra/config/get-value-by-key?key=${configKey}` })
|
||||
}
|
||||
|
||||
// 新增参数
|
||||
export function createConfig(data: ConfigVO) {
|
||||
return defHttp.post({ url: '/infra/config/create', data })
|
||||
}
|
||||
|
||||
// 修改参数
|
||||
export function updateConfig(data: ConfigVO) {
|
||||
return defHttp.put({ url: '/infra/config/update', data })
|
||||
}
|
||||
|
||||
// 删除参数
|
||||
export function deleteConfig(id: number) {
|
||||
return defHttp.delete({ url: `/infra/config/delete?id=${id}` })
|
||||
}
|
||||
|
||||
// 导出参数
|
||||
export function exportConfig(params: ConfigExportReqVO) {
|
||||
return defHttp.download({ url: '/infra/config/export', params }, '参数.xls')
|
||||
}
|
@ -0,0 +1,35 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface DataSourceConfigVO {
|
||||
id: number
|
||||
name: string
|
||||
url: string
|
||||
username: string
|
||||
password: string
|
||||
createTime: Date
|
||||
}
|
||||
|
||||
// 查询数据源配置列表
|
||||
export function getDataSourceConfigList() {
|
||||
return defHttp.get({ url: '/infra/data-source-config/list' })
|
||||
}
|
||||
|
||||
// 查询数据源配置详情
|
||||
export function getDataSourceConfig(id: number) {
|
||||
return defHttp.get({ url: `/infra/data-source-config/get?id=${id}` })
|
||||
}
|
||||
|
||||
// 新增数据源配置
|
||||
export function createDataSourceConfig(data: DataSourceConfigVO) {
|
||||
return defHttp.post({ url: '/infra/data-source-config/create', data })
|
||||
}
|
||||
|
||||
// 修改数据源配置
|
||||
export function updateDataSourceConfig(data: DataSourceConfigVO) {
|
||||
return defHttp.put({ url: '/infra/data-source-config/update', data })
|
||||
}
|
||||
|
||||
// 删除数据源配置
|
||||
export function deleteDataSourceConfig(id: number) {
|
||||
return defHttp.delete({ url: `/infra/data-source-config/delete?id=${id}` })
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
// 导出Html
|
||||
export function exportHtml() {
|
||||
return defHttp.get({ url: '/infra/db-doc/export-html', responseType: 'blob' })
|
||||
}
|
||||
|
||||
// 导出Word
|
||||
export function exportWord() {
|
||||
return defHttp.get({ url: '/infra/db-doc/export-word', responseType: 'blob' })
|
||||
}
|
||||
|
||||
// 导出Markdown
|
||||
export function exportMarkdown() {
|
||||
return defHttp.get({ url: '/infra/db-doc/export-markdown', responseType: 'blob' })
|
||||
}
|
@ -0,0 +1,28 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface FileVO {
|
||||
id: number
|
||||
configId: number
|
||||
path: string
|
||||
name: string
|
||||
url: string
|
||||
size: string
|
||||
type: string
|
||||
createTime: Date
|
||||
}
|
||||
|
||||
export interface FilePageReqVO extends PageParam {
|
||||
path?: string
|
||||
type?: string
|
||||
createTime?: Date[]
|
||||
}
|
||||
|
||||
// 查询文件列表
|
||||
export function getFilePage(params: FilePageReqVO) {
|
||||
return defHttp.get({ url: '/infra/file/page', params })
|
||||
}
|
||||
|
||||
// 删除文件
|
||||
export function deleteFile(id: number) {
|
||||
return defHttp.delete({ url: `/infra/file/delete?id=${id}` })
|
||||
}
|
@ -0,0 +1,66 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface FileClientConfig {
|
||||
basePath: string
|
||||
host?: string
|
||||
port?: number
|
||||
username?: string
|
||||
password?: string
|
||||
mode?: string
|
||||
endpoint?: string
|
||||
bucket?: string
|
||||
accessKey?: string
|
||||
accessSecret?: string
|
||||
domain: string
|
||||
}
|
||||
export interface FileConfigVO {
|
||||
id: number
|
||||
name: string
|
||||
storage: number
|
||||
master: boolean
|
||||
visible: boolean
|
||||
config: FileClientConfig
|
||||
remark: string
|
||||
createTime: Date
|
||||
}
|
||||
|
||||
export interface FileConfigPageReqVO extends PageParam {
|
||||
name?: string
|
||||
storage?: number
|
||||
createTime?: Date[]
|
||||
}
|
||||
|
||||
// 查询文件配置列表
|
||||
export function getFileConfigPage(params: FileConfigPageReqVO) {
|
||||
return defHttp.get({ url: '/infra/file-config/page', params })
|
||||
}
|
||||
|
||||
// 查询文件配置详情
|
||||
export function getFileConfig(id: number) {
|
||||
return defHttp.get({ url: `/infra/file-config/get?id=${id}` })
|
||||
}
|
||||
|
||||
// 更新文件配置为主配置
|
||||
export function updateFileConfigMaster(id: number) {
|
||||
return defHttp.put({ url: `/infra/file-config/update-master?id=${id}` })
|
||||
}
|
||||
|
||||
// 新增文件配置
|
||||
export function createFileConfig(data: FileConfigVO) {
|
||||
return defHttp.post({ url: '/infra/file-config/create', data })
|
||||
}
|
||||
|
||||
// 修改文件配置
|
||||
export function updateFileConfig(data: FileConfigVO) {
|
||||
return defHttp.put({ url: '/infra/file-config/update', data })
|
||||
}
|
||||
|
||||
// 删除文件配置
|
||||
export function deleteFileConfig(id: number) {
|
||||
return defHttp.delete({ url: `/infra/file-config/delete?id=${id}` })
|
||||
}
|
||||
|
||||
// 测试文件配置
|
||||
export function testFileConfig(id: number) {
|
||||
return defHttp.get({ url: `/infra/file-config/test?id=${id}` })
|
||||
}
|
@ -0,0 +1,71 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface JobVO {
|
||||
id: number
|
||||
name: string
|
||||
status: number
|
||||
handlerName: string
|
||||
handlerParam: string
|
||||
cronExpression: string
|
||||
retryCount: number
|
||||
retryInterval: number
|
||||
monitorTimeout: number
|
||||
createTime: Date
|
||||
}
|
||||
|
||||
export interface JobPageReqVO extends PageParam {
|
||||
name?: string
|
||||
status?: number
|
||||
handlerName?: string
|
||||
}
|
||||
|
||||
export interface JobExportReqVO {
|
||||
name?: string
|
||||
status?: number
|
||||
handlerName?: string
|
||||
}
|
||||
|
||||
// 任务列表
|
||||
export function getJobPage(params: JobPageReqVO) {
|
||||
return defHttp.get({ url: '/infra/job/page', params })
|
||||
}
|
||||
|
||||
// 任务详情
|
||||
export function getJob(id: number) {
|
||||
return defHttp.get({ url: `/infra/job/get?id=${id}` })
|
||||
}
|
||||
|
||||
// 新增任务
|
||||
export function createJob(data: JobVO) {
|
||||
return defHttp.post({ url: '/infra/job/create', data })
|
||||
}
|
||||
|
||||
// 修改定时任务调度
|
||||
export function updateJob(data: JobVO) {
|
||||
return defHttp.put({ url: '/infra/job/update', data })
|
||||
}
|
||||
|
||||
// 删除定时任务调度
|
||||
export function deleteJob(id: number) {
|
||||
return defHttp.delete({ url: `/infra/job/delete?id=${id}` })
|
||||
}
|
||||
|
||||
// 导出定时任务调度
|
||||
export function exportJob(params: JobExportReqVO) {
|
||||
return defHttp.download({ url: '/infra/job/export-excel', params }, '定时任务.xls')
|
||||
}
|
||||
|
||||
// 任务状态修改
|
||||
export function updateJobStatus(id: number, status: number) {
|
||||
return defHttp.put({ url: `/infra/job/update-status?id=${id}&status=${status}` })
|
||||
}
|
||||
|
||||
// 定时任务立即执行一次
|
||||
export function runJob(id: number) {
|
||||
return defHttp.put({ url: `/infra/job/trigger?id=${id}` })
|
||||
}
|
||||
|
||||
// 获得定时任务的下 n 次执行时间
|
||||
export function getJobNextTimes(id: number) {
|
||||
return defHttp.get({ url: `/infra/job/get_next_times?id=${id}` })
|
||||
}
|
@ -0,0 +1,46 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface JobLogVO {
|
||||
id: number
|
||||
jobId: number
|
||||
handlerName: string
|
||||
handlerParam: string
|
||||
cronExpression: string
|
||||
executeIndex: string
|
||||
beginTime: string
|
||||
endTime: string
|
||||
duration: string
|
||||
status: number
|
||||
createTime: string
|
||||
}
|
||||
|
||||
export interface JobLogPageReqVO extends PageParam {
|
||||
jobId?: number
|
||||
handlerName?: string
|
||||
beginTime?: string
|
||||
endTime?: string
|
||||
status?: number
|
||||
}
|
||||
|
||||
export interface JobLogExportReqVO {
|
||||
jobId?: number
|
||||
handlerName?: string
|
||||
beginTime?: string
|
||||
endTime?: string
|
||||
status?: number
|
||||
}
|
||||
|
||||
// 任务日志列表
|
||||
export function getJobLogPage(params: JobLogPageReqVO) {
|
||||
return defHttp.get({ url: '/infra/job-log/page', params })
|
||||
}
|
||||
|
||||
// 任务日志详情
|
||||
export function getJobLog(id: number) {
|
||||
return defHttp.get({ url: `/infra/job-log/get?id=${id}` })
|
||||
}
|
||||
|
||||
// 导出定时任务日志
|
||||
export function exportJobLog(params: JobLogExportReqVO) {
|
||||
return defHttp.download({ url: '/infra/job-log/export-excel', params }, '定时任务日志.xls')
|
||||
}
|
@ -0,0 +1,8 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
/**
|
||||
* 获取redis 监控信息
|
||||
*/
|
||||
export function getCache() {
|
||||
return defHttp.get({ url: '/infra/redis/get-monitor-info' })
|
||||
}
|
@ -0,0 +1,185 @@
|
||||
export interface RedisMonitorInfoVO {
|
||||
info: RedisInfoVO
|
||||
dbSize: number
|
||||
commandStats: RedisCommandStatsVO[]
|
||||
}
|
||||
|
||||
export interface RedisInfoVO {
|
||||
io_threaded_reads_processed: string
|
||||
tracking_clients: string
|
||||
uptime_in_seconds: string
|
||||
cluster_connections: string
|
||||
current_cow_size: string
|
||||
maxmemory_human: string
|
||||
aof_last_cow_size: string
|
||||
master_replid2: string
|
||||
mem_replication_backlog: string
|
||||
aof_rewrite_scheduled: string
|
||||
total_net_input_bytes: string
|
||||
rss_overhead_ratio: string
|
||||
hz: string
|
||||
current_cow_size_age: string
|
||||
redis_build_id: string
|
||||
errorstat_BUSYGROUP: string
|
||||
aof_last_bgrewrite_status: string
|
||||
multiplexing_api: string
|
||||
client_recent_max_output_buffer: string
|
||||
allocator_resident: string
|
||||
mem_fragmentation_bytes: string
|
||||
aof_current_size: string
|
||||
repl_backlog_first_byte_offset: string
|
||||
tracking_total_prefixes: string
|
||||
redis_mode: string
|
||||
redis_git_dirty: string
|
||||
aof_delayed_fsync: string
|
||||
allocator_rss_bytes: string
|
||||
repl_backlog_histlen: string
|
||||
io_threads_active: string
|
||||
rss_overhead_bytes: string
|
||||
total_system_memory: string
|
||||
loading: string
|
||||
evicted_keys: string
|
||||
maxclients: string
|
||||
cluster_enabled: string
|
||||
redis_version: string
|
||||
repl_backlog_active: string
|
||||
mem_aof_buffer: string
|
||||
allocator_frag_bytes: string
|
||||
io_threaded_writes_processed: string
|
||||
instantaneous_ops_per_sec: string
|
||||
used_memory_human: string
|
||||
total_error_replies: string
|
||||
role: string
|
||||
maxmemory: string
|
||||
used_memory_lua: string
|
||||
rdb_current_bgsave_time_sec: string
|
||||
used_memory_startup: string
|
||||
used_cpu_sys_main_thread: string
|
||||
lazyfree_pending_objects: string
|
||||
aof_pending_bio_fsync: string
|
||||
used_memory_dataset_perc: string
|
||||
allocator_frag_ratio: string
|
||||
arch_bits: string
|
||||
used_cpu_user_main_thread: string
|
||||
mem_clients_normal: string
|
||||
expired_time_cap_reached_count: string
|
||||
unexpected_error_replies: string
|
||||
mem_fragmentation_ratio: string
|
||||
aof_last_rewrite_time_sec: string
|
||||
master_replid: string
|
||||
aof_rewrite_in_progress: string
|
||||
lru_clock: string
|
||||
maxmemory_policy: string
|
||||
run_id: string
|
||||
latest_fork_usec: string
|
||||
tracking_total_items: string
|
||||
total_commands_processed: string
|
||||
expired_keys: string
|
||||
errorstat_ERR: string
|
||||
used_memory: string
|
||||
module_fork_in_progress: string
|
||||
errorstat_WRONGPASS: string
|
||||
aof_buffer_length: string
|
||||
dump_payload_sanitizations: string
|
||||
mem_clients_slaves: string
|
||||
keyspace_misses: string
|
||||
server_time_usec: string
|
||||
executable: string
|
||||
lazyfreed_objects: string
|
||||
db0: string
|
||||
used_memory_peak_human: string
|
||||
keyspace_hits: string
|
||||
rdb_last_cow_size: string
|
||||
aof_pending_rewrite: string
|
||||
used_memory_overhead: string
|
||||
active_defrag_hits: string
|
||||
tcp_port: string
|
||||
uptime_in_days: string
|
||||
used_memory_peak_perc: string
|
||||
current_save_keys_processed: string
|
||||
blocked_clients: string
|
||||
total_reads_processed: string
|
||||
expire_cycle_cpu_milliseconds: string
|
||||
sync_partial_err: string
|
||||
used_memory_scripts_human: string
|
||||
aof_current_rewrite_time_sec: string
|
||||
aof_enabled: string
|
||||
process_supervised: string
|
||||
master_repl_offset: string
|
||||
used_memory_dataset: string
|
||||
used_cpu_user: string
|
||||
rdb_last_bgsave_status: string
|
||||
tracking_total_keys: string
|
||||
atomicvar_api: string
|
||||
allocator_rss_ratio: string
|
||||
client_recent_max_input_buffer: string
|
||||
clients_in_timeout_table: string
|
||||
aof_last_write_status: string
|
||||
mem_allocator: string
|
||||
used_memory_scripts: string
|
||||
used_memory_peak: string
|
||||
process_id: string
|
||||
master_failover_state: string
|
||||
errorstat_NOAUTH: string
|
||||
used_cpu_sys: string
|
||||
repl_backlog_size: string
|
||||
connected_slaves: string
|
||||
current_save_keys_total: string
|
||||
gcc_version: string
|
||||
total_system_memory_human: string
|
||||
sync_full: string
|
||||
connected_clients: string
|
||||
module_fork_last_cow_size: string
|
||||
total_writes_processed: string
|
||||
allocator_active: string
|
||||
total_net_output_bytes: string
|
||||
pubsub_channels: string
|
||||
current_fork_perc: string
|
||||
active_defrag_key_hits: string
|
||||
rdb_changes_since_last_save: string
|
||||
instantaneous_input_kbps: string
|
||||
used_memory_rss_human: string
|
||||
configured_hz: string
|
||||
expired_stale_perc: string
|
||||
active_defrag_misses: string
|
||||
used_cpu_sys_children: string
|
||||
number_of_cached_scripts: string
|
||||
sync_partial_ok: string
|
||||
used_memory_lua_human: string
|
||||
rdb_last_save_time: string
|
||||
pubsub_patterns: string
|
||||
slave_expires_tracked_keys: string
|
||||
redis_git_sha1: string
|
||||
used_memory_rss: string
|
||||
rdb_last_bgsave_time_sec: string
|
||||
os: string
|
||||
mem_not_counted_for_evict: string
|
||||
active_defrag_running: string
|
||||
rejected_connections: string
|
||||
aof_rewrite_buffer_length: string
|
||||
total_forks: string
|
||||
active_defrag_key_misses: string
|
||||
allocator_allocated: string
|
||||
aof_base_size: string
|
||||
instantaneous_output_kbps: string
|
||||
second_repl_offset: string
|
||||
rdb_bgsave_in_progress: string
|
||||
used_cpu_user_children: string
|
||||
total_connections_received: string
|
||||
migrate_cached_sockets: string
|
||||
}
|
||||
|
||||
export interface RedisCommandStatsVO {
|
||||
command: string
|
||||
calls: number
|
||||
usec: number
|
||||
}
|
||||
|
||||
export interface RedisKeyInfo {
|
||||
keyTemplate: string
|
||||
keyType: string
|
||||
valueType: string
|
||||
timeoutType: number
|
||||
timeout: number
|
||||
memo: string
|
||||
}
|
@ -0,0 +1,15 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface AddressVO {
|
||||
id: number
|
||||
name: string
|
||||
mobile: string
|
||||
areaId: number
|
||||
detailAddress: string
|
||||
defaultStatus: boolean
|
||||
}
|
||||
|
||||
// 查询用户收件地址列表
|
||||
export function getAddressList(params) {
|
||||
return defHttp.get({ url: '/member/address/list', params })
|
||||
}
|
@ -0,0 +1,38 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface GroupVO {
|
||||
id: number
|
||||
name: string
|
||||
remark: string
|
||||
status: number
|
||||
}
|
||||
|
||||
// 查询用户分组列表
|
||||
export function getGroupPage(params: any) {
|
||||
return defHttp.get({ url: '/member/group/page', params })
|
||||
}
|
||||
|
||||
// 查询用户分组详情
|
||||
export function getGroup(id: number) {
|
||||
return defHttp.get({ url: `/member/group/get?id=${id}` })
|
||||
}
|
||||
|
||||
// 新增用户分组
|
||||
export function createGroup(data: GroupVO) {
|
||||
return defHttp.post({ url: '/member/group/create', data })
|
||||
}
|
||||
|
||||
// 查询用户分组 - 精简信息列表
|
||||
export function getSimpleGroupList() {
|
||||
return defHttp.get({ url: '/member/group/list-all-simple' })
|
||||
}
|
||||
|
||||
// 修改用户分组
|
||||
export function updateGroup(data: GroupVO) {
|
||||
return defHttp.put({ url: '/member/group/update', data })
|
||||
}
|
||||
|
||||
// 删除用户分组
|
||||
export function deleteGroup(id: number) {
|
||||
return defHttp.delete({ url: `/member/group/delete?id=${id}` })
|
||||
}
|
@ -0,0 +1,42 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface LevelVO {
|
||||
id: number
|
||||
name: string
|
||||
experience: number
|
||||
value: number
|
||||
discountPercent: number
|
||||
icon: string
|
||||
bgUrl: string
|
||||
status: number
|
||||
}
|
||||
|
||||
// 查询会员等级列表
|
||||
export function getLevelList(params) {
|
||||
return defHttp.get({ url: '/member/level/list', params })
|
||||
}
|
||||
|
||||
// 查询会员等级详情
|
||||
export function getLevel(id: number) {
|
||||
return defHttp.get({ url: `/member/level/get?id=${id}` })
|
||||
}
|
||||
|
||||
// 查询会员等级 - 精简信息列表
|
||||
export function getSimpleLevelList() {
|
||||
return defHttp.get({ url: '/member/level/list-all-simple' })
|
||||
}
|
||||
|
||||
// 新增会员等级
|
||||
export function createLevel(data: LevelVO) {
|
||||
return defHttp.post({ url: '/member/level/create', data })
|
||||
}
|
||||
|
||||
// 修改会员等级
|
||||
export function updateLevel(data: LevelVO) {
|
||||
return defHttp.put({ url: '/member/level/update', data })
|
||||
}
|
||||
|
||||
// 删除会员等级
|
||||
export function deleteLevel(id: number) {
|
||||
return defHttp.delete({ url: `/member/level/delete?id=${id}` })
|
||||
}
|
@ -0,0 +1,19 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface ConfigVO {
|
||||
id: number
|
||||
tradeDeductEnable: number
|
||||
tradeDeductUnitPrice: number
|
||||
tradeDeductMaxPrice: number
|
||||
tradeGivePoint: number
|
||||
}
|
||||
|
||||
// 查询积分设置详情
|
||||
export function getConfig() {
|
||||
return defHttp.get({ url: '/member/point/config/get' })
|
||||
}
|
||||
|
||||
// 新增修改积分设置
|
||||
export function saveConfig(data: ConfigVO) {
|
||||
return defHttp.put({ url: '/member/point/config/save', data })
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface RecordVO {
|
||||
id: number
|
||||
bizId: string
|
||||
bizType: string
|
||||
title: string
|
||||
description: string
|
||||
point: number
|
||||
totalPoint: number
|
||||
status: number
|
||||
userId: number
|
||||
freezingTime: Date
|
||||
thawingTime: Date
|
||||
createDate: Date
|
||||
}
|
||||
|
||||
// 查询用户积分记录列表
|
||||
export function getRecordPage(params) {
|
||||
return defHttp.get({ url: '/member/point/record/page', params })
|
||||
}
|
@ -0,0 +1,33 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface SignInConfigVO {
|
||||
id: number
|
||||
day: number | null
|
||||
point: number | null
|
||||
enable: boolean | null
|
||||
}
|
||||
|
||||
// 查询积分签到规则列表
|
||||
export function getSignInConfigList() {
|
||||
return defHttp.get({ url: '/member/point/sign-in-config/list' })
|
||||
}
|
||||
|
||||
// 查询积分签到规则详情
|
||||
export function getSignInConfig(id: number) {
|
||||
return defHttp.get({ url: `/member/point/sign-in-config/get?id=${id}` })
|
||||
}
|
||||
|
||||
// 新增积分签到规则
|
||||
export function createSignInConfig(data: SignInConfigVO) {
|
||||
return defHttp.post({ url: '/member/point/sign-in-config/create', data })
|
||||
}
|
||||
|
||||
// 修改积分签到规则
|
||||
export function updateSignInConfig(data: SignInConfigVO) {
|
||||
return defHttp.put({ url: '/member/point/sign-in-config/update', data })
|
||||
}
|
||||
|
||||
// 删除积分签到规则
|
||||
export function deleteSignInConfig(id: number) {
|
||||
return defHttp.delete({ url: `/member/point/sign-in-config/delete?id=${id}` })
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface SignInRecordVO {
|
||||
id: number
|
||||
userId: number
|
||||
day: number
|
||||
point: number
|
||||
}
|
||||
|
||||
// 查询用户签到积分列表
|
||||
export function getSignInRecordPage(params) {
|
||||
return defHttp.get({ url: '/member/point/sign-in-record/page', params })
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface TagVO {
|
||||
id: number
|
||||
name: string
|
||||
}
|
||||
|
||||
// 查询会员标签列表
|
||||
export function getMemberTagPage(params) {
|
||||
return defHttp.get({ url: '/member/tag/page', params })
|
||||
}
|
||||
|
||||
// 查询会员标签详情
|
||||
export function getMemberTag(id: number) {
|
||||
return defHttp.get({ url: `/member/tag/get?id=${id}` })
|
||||
}
|
||||
|
||||
// 查询会员标签 - 精简信息列表
|
||||
export function getSimpleTagList() {
|
||||
return defHttp.get({ url: '/member/tag/list-all-simple' })
|
||||
}
|
||||
|
||||
// 新增会员标签
|
||||
export function createMemberTag(data: TagVO) {
|
||||
return defHttp.post({ url: '/member/tag/create', data })
|
||||
}
|
||||
|
||||
// 修改会员标签
|
||||
export function updateMemberTag(data: TagVO) {
|
||||
return defHttp.put({ url: '/member/tag/update', data })
|
||||
}
|
||||
|
||||
// 删除会员标签
|
||||
export function deleteMemberTag(id: number) {
|
||||
return defHttp.delete({ url: `/member/tag/delete?id=${id}` })
|
||||
}
|
@ -0,0 +1,39 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface UserVO {
|
||||
id: number
|
||||
mobile: string
|
||||
password: string
|
||||
status: number
|
||||
registerIp: string
|
||||
loginIp: string
|
||||
loginDate: Date
|
||||
nickname: string
|
||||
avatar: string
|
||||
name: string
|
||||
sex: number
|
||||
areaId: number
|
||||
birthday: Date
|
||||
mark: string
|
||||
createTime: Date
|
||||
}
|
||||
|
||||
// 查询会员用户列表
|
||||
export function getUserPage(params) {
|
||||
return defHttp.get({ url: '/member/user/page', params })
|
||||
}
|
||||
|
||||
// 查询会员用户详情
|
||||
export function getUser(id: number) {
|
||||
return defHttp.get({ url: `/member/user/get?id=${id}` })
|
||||
}
|
||||
|
||||
// 修改会员用户
|
||||
export function updateUser(data: UserVO) {
|
||||
return defHttp.put({ url: '/member/user/update', data })
|
||||
}
|
||||
|
||||
// 修改会员用户等级
|
||||
export function updateUserLevel(data: any) {
|
||||
return defHttp.put({ url: '/member/user/update-level', data })
|
||||
}
|
@ -0,0 +1,46 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface AccountVO {
|
||||
id?: number
|
||||
name: string
|
||||
}
|
||||
|
||||
// 创建公众号账号
|
||||
export function createAccount(data) {
|
||||
return defHttp.post({ url: '/mp/account/create', data })
|
||||
}
|
||||
|
||||
// 更新公众号账号
|
||||
export function updateAccount(data) {
|
||||
return defHttp.put({ url: '/mp/account/update', data })
|
||||
}
|
||||
|
||||
// 删除公众号账号
|
||||
export function deleteAccount(id) {
|
||||
return defHttp.delete({ url: `/mp/account/delete?id=${id}`, method: 'delete' })
|
||||
}
|
||||
|
||||
// 获得公众号账号
|
||||
export function getAccount(id) {
|
||||
return defHttp.get({ url: `/mp/account/get?id=${id}` })
|
||||
}
|
||||
|
||||
// 获得公众号账号分页
|
||||
export function getAccountPage(params) {
|
||||
return defHttp.get({ url: '/mp/account/page', params })
|
||||
}
|
||||
|
||||
// 获取公众号账号精简信息列表
|
||||
export function getSimpleAccounts() {
|
||||
return defHttp.get({ url: '/mp/account/list-all-simple' })
|
||||
}
|
||||
|
||||
// 生成公众号二维码
|
||||
export function generateAccountQrCode(id) {
|
||||
return defHttp.put({ url: `/mp/account/generate-qr-code?id=${id}` })
|
||||
}
|
||||
|
||||
// 清空公众号 API 配额
|
||||
export function clearAccountQuota(id) {
|
||||
return defHttp.put({ url: `/mp/account/clear-quota?id=${id}` })
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
// 创建公众号的自动回复
|
||||
export function createAutoReply(data) {
|
||||
return defHttp.post({ url: '/mp/auto-reply/create', data })
|
||||
}
|
||||
|
||||
// 更新公众号的自动回复
|
||||
export function updateAutoReply(data) {
|
||||
return defHttp.put({ url: '/mp/auto-reply/update', data })
|
||||
}
|
||||
|
||||
// 删除公众号的自动回复
|
||||
export function deleteAutoReply(id) {
|
||||
return defHttp.delete({ url: `/mp/auto-reply/delete?id=${id}` })
|
||||
}
|
||||
|
||||
// 获得公众号的自动回复
|
||||
export function getAutoReply(id) {
|
||||
return defHttp.get({ url: `/mp/auto-reply/get?id=${id}` })
|
||||
}
|
||||
|
||||
// 获得公众号的自动回复分页
|
||||
export function getAutoReplyPage(params) {
|
||||
return defHttp.get({ url: '/mp/auto-reply/page', params })
|
||||
}
|
@ -0,0 +1,26 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
// 获得公众号草稿分页
|
||||
export function getDraftPage(params) {
|
||||
return defHttp.get({ url: '/mp/draft/page', params })
|
||||
}
|
||||
|
||||
// 创建公众号草稿
|
||||
export function createDraft(accountId, articles) {
|
||||
return defHttp.post({
|
||||
url: `/mp/draft/create?accountId=${accountId}`,
|
||||
data: {
|
||||
articles,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
// 更新公众号草稿
|
||||
export function updateDraft(accountId, mediaId, articles) {
|
||||
return defHttp.put({ url: `/mp/draft/update?accountId=${accountId}&mediaId=${mediaId}`, data: articles })
|
||||
}
|
||||
|
||||
// 删除公众号草稿
|
||||
export function deleteDraft(accountId, mediaId) {
|
||||
return defHttp.delete({ url: `/mp/draft/delete?accountId=${accountId}&mediaId=${mediaId}` })
|
||||
}
|
@ -0,0 +1,16 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
// 获得公众号素材分页
|
||||
export function getFreePublishPage(params) {
|
||||
return defHttp.get({ url: '/mp/free-publish/page', params })
|
||||
}
|
||||
|
||||
// 删除公众号素材
|
||||
export function deleteFreePublish(accountId, articleId) {
|
||||
return defHttp.delete({ url: `/mp/free-publish/delete?accountId=${accountId}&&articleId=${articleId}` })
|
||||
}
|
||||
|
||||
// 发布公众号素材
|
||||
export function submitFreePublish(accountId, mediaId) {
|
||||
return defHttp.post({ url: `/mp/free-publish/submit?accountId=${accountId}&&mediaId=${mediaId}` })
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
// 获得公众号素材分页
|
||||
export function getMaterialPage(params) {
|
||||
return defHttp.get({ url: '/mp/material/page', params })
|
||||
}
|
||||
|
||||
// 删除公众号永久素材
|
||||
export function deletePermanentMaterial(id) {
|
||||
return defHttp.delete({ url: `/mp/material/delete-permanent?id=${id}` })
|
||||
}
|
@ -0,0 +1,22 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
// 获得公众号菜单列表
|
||||
export function getMenuList(accountId) {
|
||||
return defHttp.get({ url: `/mp/menu/list?accountId=${accountId}` })
|
||||
}
|
||||
|
||||
// 保存公众号菜单
|
||||
export function saveMenu(accountId, menus) {
|
||||
return defHttp.post({
|
||||
url: '/mp/menu/save',
|
||||
data: {
|
||||
accountId,
|
||||
menus,
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
// 删除公众号菜单
|
||||
export function deleteMenu(accountId) {
|
||||
return defHttp.delete({ url: `/mp/menu/delete?accountId=${accountId}` })
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
// 获得公众号消息分页
|
||||
export function getMessagePage(params) {
|
||||
return defHttp.get({ url: '/mp/message/page', params })
|
||||
}
|
||||
|
||||
// 给粉丝发送消息
|
||||
export function sendMessage(data) {
|
||||
return defHttp.post({ url: '/mp/message/send', data })
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
// 更新公众号粉丝
|
||||
export function updateUser(data) {
|
||||
return defHttp.put({ url: '/mp/user/update', data })
|
||||
}
|
||||
|
||||
// 获得公众号粉丝
|
||||
export function getUser(id) {
|
||||
return defHttp.get({ url: `/mp/user/get?id=${id}` })
|
||||
}
|
||||
|
||||
// 获得公众号粉丝分页
|
||||
export function getUserPage(params) {
|
||||
return defHttp.get({ url: '/mp/user/page', params })
|
||||
}
|
||||
|
||||
// 同步公众号粉丝
|
||||
export function syncUser(accountId) {
|
||||
return defHttp.post({ url: `/mp/user/sync?accountId=${accountId}` })
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
// 获取消息发送概况数据
|
||||
export function getUpstreamMessage(params) {
|
||||
return defHttp.get({ url: '/mp/statistics/upstream-message', params })
|
||||
}
|
||||
|
||||
// 用户增减数据
|
||||
export function getUserSummary(params) {
|
||||
return defHttp.get({ url: '/mp/statistics/user-summary', params })
|
||||
}
|
||||
|
||||
// 获得用户累计数据
|
||||
export function getUserCumulate(params) {
|
||||
return defHttp.get({ url: '/mp/statistics/user-cumulate', params })
|
||||
}
|
||||
|
||||
// 获得接口分析数据
|
||||
export function getInterfaceSummary(params) {
|
||||
return defHttp.get({ url: '/mp/statistics/interface-summary', params })
|
||||
}
|
@ -0,0 +1,36 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
// 创建公众号标签
|
||||
export function createTag(data) {
|
||||
return defHttp.post({ url: '/mp/tag/create', data })
|
||||
}
|
||||
|
||||
// 更新公众号标签
|
||||
export function updateTag(data) {
|
||||
return defHttp.put({ url: '/mp/tag/update', data })
|
||||
}
|
||||
|
||||
// 删除公众号标签
|
||||
export function deleteTag(id) {
|
||||
return defHttp.delete({ url: `/mp/tag/delete?id=${id}` })
|
||||
}
|
||||
|
||||
// 获得公众号标签
|
||||
export function getTag(id) {
|
||||
return defHttp.get({ url: `/mp/tag/get?id=${id}` })
|
||||
}
|
||||
|
||||
// 获得公众号标签分页
|
||||
export function getTagPage(params) {
|
||||
return defHttp.get({ url: '/mp/tag/page', params })
|
||||
}
|
||||
|
||||
// 获取公众号标签精简信息列表
|
||||
export function getSimpleTags() {
|
||||
return defHttp.get({ url: '/mp/tag/list-all-simple' })
|
||||
}
|
||||
|
||||
// 同步公众号标签
|
||||
export function syncTag(accountId) {
|
||||
return defHttp.post({ url: `/mp/tag/sync?accountId=${accountId}` })
|
||||
}
|
@ -0,0 +1,63 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface AppVO {
|
||||
id: number
|
||||
name: string
|
||||
status: number
|
||||
remark: string
|
||||
payNotifyUrl: string
|
||||
refundNotifyUrl: string
|
||||
merchantId: number
|
||||
merchantName: string
|
||||
createTime: Date
|
||||
}
|
||||
|
||||
export interface AppPageReqVO extends PageParam {
|
||||
name?: string
|
||||
status?: number
|
||||
remark?: string
|
||||
payNotifyUrl?: string
|
||||
refundNotifyUrl?: string
|
||||
merchantName?: string
|
||||
createTime?: Date[]
|
||||
}
|
||||
|
||||
export interface AppUpdateStatusReqVO {
|
||||
id: number
|
||||
status: number
|
||||
}
|
||||
|
||||
// 查询列表支付应用
|
||||
export function getAppPage(params: AppPageReqVO) {
|
||||
return defHttp.get({ url: '/pay/app/page', params })
|
||||
}
|
||||
|
||||
// 查询详情支付应用
|
||||
export function getApp(id: number) {
|
||||
return defHttp.get({ url: `/pay/app/get?id=${id}` })
|
||||
}
|
||||
|
||||
// 新增支付应用
|
||||
export function createApp(data: AppVO) {
|
||||
return defHttp.post({ url: '/pay/app/create', data })
|
||||
}
|
||||
|
||||
// 修改支付应用
|
||||
export function updateApp(data: AppVO) {
|
||||
return defHttp.put({ url: '/pay/app/update', data })
|
||||
}
|
||||
|
||||
// 支付应用信息状态修改
|
||||
export function changeAppStatus(data: AppUpdateStatusReqVO) {
|
||||
return defHttp.put({ url: '/pay/app/update-status', data })
|
||||
}
|
||||
|
||||
// 删除支付应用
|
||||
export function deleteApp(id: number) {
|
||||
return defHttp.delete({ url: `/pay/app/delete?id=${id}` })
|
||||
}
|
||||
|
||||
// 获得支付应用列表
|
||||
export function getAppList() {
|
||||
return defHttp.get({ url: '/pay/app/list' })
|
||||
}
|
@ -0,0 +1,69 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface ChannelVO {
|
||||
id: number
|
||||
code: string
|
||||
config: string
|
||||
status: number
|
||||
remark: string
|
||||
feeRate: number
|
||||
merchantId: number
|
||||
appId: number
|
||||
createTime: Date
|
||||
}
|
||||
|
||||
export interface ChannelPageReqVO extends PageParam {
|
||||
code?: string
|
||||
status?: number
|
||||
remark?: string
|
||||
feeRate?: number
|
||||
merchantId?: number
|
||||
appId?: number
|
||||
config?: string
|
||||
createTime?: Date[]
|
||||
}
|
||||
|
||||
export interface ChannelExportReqVO {
|
||||
code?: string
|
||||
status?: number
|
||||
remark?: string
|
||||
feeRate?: number
|
||||
merchantId?: number
|
||||
appId?: number
|
||||
config?: string
|
||||
createTime?: Date[]
|
||||
}
|
||||
|
||||
// 查询列表支付渠道
|
||||
export function getChannelPage(params: PageParam) {
|
||||
return defHttp.get({ url: '/pay/channel/page', params })
|
||||
}
|
||||
|
||||
// 查询详情支付渠道
|
||||
export function getChannel(appId: string, code: string) {
|
||||
const params = {
|
||||
appId,
|
||||
code,
|
||||
}
|
||||
return defHttp.get({ url: '/pay/channel/get', params })
|
||||
}
|
||||
|
||||
// 新增支付渠道
|
||||
export function createChannel(data: ChannelVO) {
|
||||
return defHttp.post({ url: '/pay/channel/create', data })
|
||||
}
|
||||
|
||||
// 修改支付渠道
|
||||
export function updateChannel(data: ChannelVO) {
|
||||
return defHttp.put({ url: '/pay/channel/update', data })
|
||||
}
|
||||
|
||||
// 删除支付渠道
|
||||
export function deleteChannel(id: number) {
|
||||
return defHttp.delete({ url: `/pay/channel/delete?id=${id}` })
|
||||
}
|
||||
|
||||
// 导出支付渠道
|
||||
export function exportChannel(params) {
|
||||
return defHttp.download({ url: '/pay/channel/export-excel', params }, '支付渠道.xls')
|
||||
}
|
@ -0,0 +1,21 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
// 获得示例订单分页
|
||||
export function getDemoOrderPage(params) {
|
||||
return defHttp.get({ url: '/pay/demo-order/page', params })
|
||||
}
|
||||
|
||||
// 获得示例订单
|
||||
export function getDemoOrder(id: number) {
|
||||
return defHttp.get({ url: `/pay/demo-order/get?id=${id}` })
|
||||
}
|
||||
|
||||
// 创建示例订单
|
||||
export function createDemoOrder(data) {
|
||||
return defHttp.post({ url: '/pay/demo-order/create', data })
|
||||
}
|
||||
|
||||
// 退款示例订单
|
||||
export function refundDemoOrder(id: number) {
|
||||
return defHttp.put({ url: `/pay/demo-order/refund?id=${id}` })
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
// 获得支付通知明细
|
||||
export function getNotifyTaskDetail(id) {
|
||||
return defHttp.get({ url: `/pay/notify/get-detail?id=${id}` })
|
||||
}
|
||||
|
||||
// 获得支付通知分页
|
||||
export function getNotifyTaskPage(params) {
|
||||
return defHttp.get({ url: '/pay/notify/page', params })
|
||||
}
|
@ -0,0 +1,104 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface OrderVO {
|
||||
id: number
|
||||
merchantId: number
|
||||
appId: number
|
||||
channelId: number
|
||||
channelCode: string
|
||||
merchantOrderId: string
|
||||
subject: string
|
||||
body: string
|
||||
notifyUrl: string
|
||||
notifyStatus: number
|
||||
amount: number
|
||||
channelFeeRate: number
|
||||
channelFeeAmount: number
|
||||
status: number
|
||||
userIp: string
|
||||
expireTime: Date
|
||||
successTime: Date
|
||||
notifyTime: Date
|
||||
successExtensionId: number
|
||||
refundStatus: number
|
||||
refundTimes: number
|
||||
refundAmount: number
|
||||
channelUserId: string
|
||||
channelOrderNo: string
|
||||
createTime: Date
|
||||
}
|
||||
|
||||
export interface OrderPageReqVO extends PageParam {
|
||||
merchantId?: number
|
||||
appId?: number
|
||||
channelId?: number
|
||||
channelCode?: string
|
||||
merchantOrderId?: string
|
||||
subject?: string
|
||||
body?: string
|
||||
notifyUrl?: string
|
||||
notifyStatus?: number
|
||||
amount?: number
|
||||
channelFeeRate?: number
|
||||
channelFeeAmount?: number
|
||||
status?: number
|
||||
expireTime?: Date[]
|
||||
successTime?: Date[]
|
||||
notifyTime?: Date[]
|
||||
successExtensionId?: number
|
||||
refundStatus?: number
|
||||
refundTimes?: number
|
||||
channelUserId?: string
|
||||
channelOrderNo?: string
|
||||
createTime?: Date[]
|
||||
}
|
||||
|
||||
export interface OrderExportReqVO {
|
||||
merchantId?: number
|
||||
appId?: number
|
||||
channelId?: number
|
||||
channelCode?: string
|
||||
merchantOrderId?: string
|
||||
subject?: string
|
||||
body?: string
|
||||
notifyUrl?: string
|
||||
notifyStatus?: number
|
||||
amount?: number
|
||||
channelFeeRate?: number
|
||||
channelFeeAmount?: number
|
||||
status?: number
|
||||
expireTime?: Date[]
|
||||
successTime?: Date[]
|
||||
notifyTime?: Date[]
|
||||
successExtensionId?: number
|
||||
refundStatus?: number
|
||||
refundTimes?: number
|
||||
channelUserId?: string
|
||||
channelOrderNo?: string
|
||||
createTime?: Date[]
|
||||
}
|
||||
|
||||
// 查询列表支付订单
|
||||
export function getOrderPage(params: OrderPageReqVO) {
|
||||
return defHttp.get({ url: '/pay/order/page', params })
|
||||
}
|
||||
|
||||
// 查询详情支付订单
|
||||
export function getOrder(id: number) {
|
||||
return defHttp.get({ url: `/pay/order/get?id=${id}` })
|
||||
}
|
||||
|
||||
// 获得支付订单的明细
|
||||
export function getOrderDetail(id: number) {
|
||||
return defHttp.get({ url: `/pay/order/get-detail?id=${id}` })
|
||||
}
|
||||
|
||||
// 提交支付订单
|
||||
export function submitOrder(data: any) {
|
||||
return defHttp.post({ url: '/pay/order/submit', data })
|
||||
}
|
||||
|
||||
// 导出支付订单
|
||||
export function exportOrder(params: OrderExportReqVO) {
|
||||
return defHttp.download({ url: '/pay/order/export-excel', params })
|
||||
}
|
@ -0,0 +1,116 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface RefundVO {
|
||||
id: number
|
||||
merchantId: number
|
||||
appId: number
|
||||
channelId: number
|
||||
channelCode: string
|
||||
orderId: string
|
||||
tradeNo: string
|
||||
merchantOrderId: string
|
||||
merchantRefundNo: string
|
||||
notifyUrl: string
|
||||
notifyStatus: number
|
||||
status: number
|
||||
type: number
|
||||
payAmount: number
|
||||
refundAmount: number
|
||||
reason: string
|
||||
userIp: string
|
||||
channelOrderNo: string
|
||||
channelRefundNo: string
|
||||
channelErrorCode: string
|
||||
channelErrorMsg: string
|
||||
channelExtras: string
|
||||
expireTime: Date
|
||||
successTime: Date
|
||||
notifyTime: Date
|
||||
createTime: Date
|
||||
}
|
||||
|
||||
export interface RefundPageReqVO extends PageParam {
|
||||
merchantId?: number
|
||||
appId?: number
|
||||
channelId?: number
|
||||
channelCode?: string
|
||||
orderId?: string
|
||||
tradeNo?: string
|
||||
merchantOrderId?: string
|
||||
merchantRefundNo?: string
|
||||
notifyUrl?: string
|
||||
notifyStatus?: number
|
||||
status?: number
|
||||
type?: number
|
||||
payAmount?: number
|
||||
refundAmount?: number
|
||||
reason?: string
|
||||
userIp?: string
|
||||
channelOrderNo?: string
|
||||
channelRefundNo?: string
|
||||
channelErrorCode?: string
|
||||
channelErrorMsg?: string
|
||||
channelExtras?: string
|
||||
expireTime?: Date[]
|
||||
successTime?: Date[]
|
||||
notifyTime?: Date[]
|
||||
createTime?: Date[]
|
||||
}
|
||||
|
||||
export interface PayRefundExportReqVO {
|
||||
merchantId?: number
|
||||
appId?: number
|
||||
channelId?: number
|
||||
channelCode?: string
|
||||
orderId?: string
|
||||
tradeNo?: string
|
||||
merchantOrderId?: string
|
||||
merchantRefundNo?: string
|
||||
notifyUrl?: string
|
||||
notifyStatus?: number
|
||||
status?: number
|
||||
type?: number
|
||||
payAmount?: number
|
||||
refundAmount?: number
|
||||
reason?: string
|
||||
userIp?: string
|
||||
channelOrderNo?: string
|
||||
channelRefundNo?: string
|
||||
channelErrorCode?: string
|
||||
channelErrorMsg?: string
|
||||
channelExtras?: string
|
||||
expireTime?: Date[]
|
||||
successTime?: Date[]
|
||||
notifyTime?: Date[]
|
||||
createTime?: Date[]
|
||||
}
|
||||
|
||||
// 查询列表退款订单
|
||||
export function getRefundPage(params: RefundPageReqVO) {
|
||||
return defHttp.get({ url: '/pay/refund/page', params })
|
||||
}
|
||||
|
||||
// 查询详情退款订单
|
||||
export function getRefund(id: number) {
|
||||
return defHttp.get({ url: `/pay/refund/get?id=${id}` })
|
||||
}
|
||||
|
||||
// 新增退款订单
|
||||
export function createRefund(data: RefundVO) {
|
||||
return defHttp.post({ url: '/pay/refund/create', data })
|
||||
}
|
||||
|
||||
// 修改退款订单
|
||||
export function updateRefund(data: RefundVO) {
|
||||
return defHttp.put({ url: '/pay/refund/update', data })
|
||||
}
|
||||
|
||||
// 删除退款订单
|
||||
export function deleteRefund(id: number) {
|
||||
return defHttp.delete({ url: `/pay/refund/delete?id=${id}` })
|
||||
}
|
||||
|
||||
// 导出退款订单
|
||||
export function exportRefund(params: PayRefundExportReqVO) {
|
||||
return defHttp.download({ url: '/pay/refund/export-excel', params }, '退款订单.xls')
|
||||
}
|
@ -0,0 +1,11 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
// 获得地区树
|
||||
export function getAreaTree() {
|
||||
return defHttp.get({ url: '/system/area/tree' })
|
||||
}
|
||||
|
||||
// 获得 IP 对应的地区名
|
||||
export function getAreaByIp(ip: string) {
|
||||
return defHttp.get({ url: `/system/area/get-by-ip?ip=${ip}` })
|
||||
}
|
@ -0,0 +1,48 @@
|
||||
import { defHttp } from '@/utils/http/axios'
|
||||
|
||||
export interface DeptVO {
|
||||
id?: number
|
||||
name: string
|
||||
parentId: number
|
||||
status: number
|
||||
sort: number
|
||||
leaderUserId: number
|
||||
phone: string
|
||||
email: string
|
||||
createTime: Date
|
||||
}
|
||||
|
||||
export interface DeptPageReqVO {
|
||||
name?: string
|
||||
status?: number
|
||||
}
|
||||
|
||||
// 查询部门(精简)列表
|
||||
export function listSimpleDept() {
|
||||
return defHttp.get({ url: '/system/dept/list-all-simple' })
|
||||
}
|
||||
|
||||
// 查询部门列表
|
||||
export function getDeptPage(params: DeptPageReqVO) {
|
||||
return defHttp.get({ url: '/system/dept/list', params })
|
||||
}
|
||||
|
||||
// 查询部门详情
|
||||
export function getDept(id: number) {
|
||||
return defHttp.get({ url: `/system/dept/get?id=${id}` })
|
||||
}
|
||||
|
||||
// 新增部门
|
||||
export function createDept(data: DeptVO) {
|
||||
return defHttp.post({ url: '/system/dept/create', data })
|
||||
}
|
||||
|
||||
// 修改部门
|
||||
export function updateDept(params: DeptVO) {
|
||||
return defHttp.put({ url: '/system/dept/update', data: params })
|
||||
}
|
||||
|
||||
// 删除部门
|
||||
export function deleteDept(id: number) {
|
||||
return defHttp.delete({ url: `/system/dept/delete?id=${id}` })
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue