1.0.0
@ -1,10 +1,10 @@
|
||||
NODE_ENV = 'development'
|
||||
|
||||
# api请求地址
|
||||
VITE_APP_BASE_URL='/adminapi/'
|
||||
# api请求地址
|
||||
VITE_APP_BASE_URL=''
|
||||
|
||||
# 图片服务器地址
|
||||
VITE_IMG_DOMAIN=''
|
||||
|
||||
# 请求时header中token的参数名
|
||||
VITE_REQUEST_HEADER_TOKEN_KEY='token'
|
||||
VITE_REQUEST_HEADER_TOKEN_KEY='token'
|
||||
|
||||
@ -1,10 +1,10 @@
|
||||
NODE_ENV = 'production'
|
||||
|
||||
# api请求地址
|
||||
# api请求地址
|
||||
VITE_APP_BASE_URL='/adminapi/'
|
||||
|
||||
# 图片服务器地址
|
||||
VITE_IMG_DOMAIN=''
|
||||
|
||||
# 请求时header中token的参数名
|
||||
VITE_REQUEST_HEADER_TOKEN_KEY='token'
|
||||
VITE_REQUEST_HEADER_TOKEN_KEY='token'
|
||||
|
||||
@ -22,6 +22,7 @@
|
||||
"rules": {
|
||||
"no-tabs":"off",
|
||||
"indent": [1, 4, { "SwitchCase": 1 }],
|
||||
"eqeqeq":"off"
|
||||
"eqeqeq":"off",
|
||||
"vue/multi-word-component-names": "off"
|
||||
}
|
||||
}
|
||||
|
||||
2
admin/.gitignore
vendored
@ -22,5 +22,3 @@ dist-ssr
|
||||
*.njsproj
|
||||
*.sln
|
||||
*.sw?
|
||||
.env.development
|
||||
.env.production
|
||||
2
admin/components.d.ts
vendored
@ -67,6 +67,8 @@ declare module '@vue/runtime-core' {
|
||||
ElTabPane: typeof import('element-plus/es')['ElTabPane']
|
||||
ElTabs: typeof import('element-plus/es')['ElTabs']
|
||||
ElTag: typeof import('element-plus/es')['ElTag']
|
||||
ElTimeline: typeof import('element-plus/es')['ElTimeline']
|
||||
ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem']
|
||||
ElTooltip: typeof import('element-plus/es')['ElTooltip']
|
||||
ElTree: typeof import('element-plus/es')['ElTree']
|
||||
ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']
|
||||
|
||||
8249
admin/package-lock.json
generated
@ -5,52 +5,54 @@
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"dev": "vite",
|
||||
"build": "vite build",
|
||||
"build": "vite build && node publish.cjs",
|
||||
"preview": "vite preview"
|
||||
},
|
||||
"dependencies": {
|
||||
"@element-plus/icons-vue": "^2.0.10",
|
||||
"@highlightjs/vue-plugin": "^2.1.0",
|
||||
"@vueuse/core": "^9.12.0",
|
||||
"@wangeditor/editor": "^5.1.23",
|
||||
"@wangeditor/editor-for-vue": "^5.1.12",
|
||||
"axios": "^1.4.0",
|
||||
"crypto-js": "^4.1.1",
|
||||
"css-color-function": "^1.3.3",
|
||||
"echarts": "^5.4.1",
|
||||
"element-plus": "^2.2.29",
|
||||
"highlight.js": "^11.8.0",
|
||||
"nprogress": "^0.2.0",
|
||||
"pinia": "^2.0.30",
|
||||
"qrcode": "^1.5.1",
|
||||
"sass": "^1.58.0",
|
||||
"sortablejs": "^1.15.0",
|
||||
"vue": "^3.2.45",
|
||||
"vue-i18n": "^9.2.2",
|
||||
"vue-jsonp": "^2.0.0",
|
||||
"vue-router": "^4.1.6",
|
||||
"vue-web-terminal": "^3.1.7",
|
||||
"vue3-video-play": "^1.3.1-beta.6"
|
||||
"@element-plus/icons-vue": "2.0.10",
|
||||
"@highlightjs/vue-plugin": "2.1.0",
|
||||
"@vueuse/core": "9.12.0",
|
||||
"@wangeditor/editor": "5.1.23",
|
||||
"@wangeditor/editor-for-vue": "5.1.12",
|
||||
"@types/lodash-es": "4.17.6",
|
||||
"axios": "1.4.0",
|
||||
"crypto-js": "4.1.1",
|
||||
"css-color-function": "1.3.3",
|
||||
"echarts": "5.4.1",
|
||||
"element-plus": "2.2.29",
|
||||
"nprogress": "0.2.0",
|
||||
"pinia": "2.0.30",
|
||||
"qrcode": "1.5.1",
|
||||
"sass": "1.58.0",
|
||||
"sortablejs": "1.15.0",
|
||||
"vue": "3.2.45",
|
||||
"vue-i18n": "9.2.2",
|
||||
"vue-router": "4.1.6",
|
||||
"vue-web-terminal": "3.2.2",
|
||||
"vue3-video-play": "1.3.1-beta.6",
|
||||
"vue-jsonp": "2.0.0",
|
||||
"lodash-es": "4.17.21",
|
||||
"highlight.js": "11.0.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@tailwindcss/line-clamp": "^0.4.2",
|
||||
"@types/qrcode": "^1.5.0",
|
||||
"@types/sortablejs": "^1.15.0",
|
||||
"@typescript-eslint/eslint-plugin": "^5.53.0",
|
||||
"@vitejs/plugin-vue": "^4.0.0",
|
||||
"autoprefixer": "^10.4.13",
|
||||
"eslint": "^8.34.0",
|
||||
"eslint-config-standard-with-typescript": "^34.0.0",
|
||||
"eslint-plugin-import": "^2.27.5",
|
||||
"eslint-plugin-n": "^15.6.1",
|
||||
"eslint-plugin-promise": "^6.1.1",
|
||||
"eslint-plugin-vue": "^9.9.0",
|
||||
"postcss": "^8.4.21",
|
||||
"tailwindcss": "^3.2.4",
|
||||
"typescript": "^4.9.5",
|
||||
"unplugin-auto-import": "^0.13.0",
|
||||
"unplugin-vue-components": "^0.23.0",
|
||||
"vite": "^4.1.0",
|
||||
"vue-tsc": "^1.0.24"
|
||||
"@tailwindcss/line-clamp": "0.4.2",
|
||||
"@types/qrcode": "1.5.0",
|
||||
"@types/sortablejs": "1.15.0",
|
||||
"@typescript-eslint/eslint-plugin": "5.53.0",
|
||||
"@vitejs/plugin-vue": "4.0.0",
|
||||
"autoprefixer": "10.4.13",
|
||||
"eslint": "8.34.0",
|
||||
"eslint-config-standard-with-typescript": "34.0.0",
|
||||
"eslint-plugin-import": "2.27.5",
|
||||
"eslint-plugin-n": "15.6.1",
|
||||
"eslint-plugin-promise": "6.1.1",
|
||||
"eslint-plugin-vue": "9.9.0",
|
||||
"postcss": "8.4.21",
|
||||
"tailwindcss": "3.2.4",
|
||||
"typescript": "4.9.5",
|
||||
"unplugin-auto-import": "0.13.0",
|
||||
"unplugin-vue-components": "0.23.0",
|
||||
"vite": "4.1.0",
|
||||
"vue-tsc": "1.0.24"
|
||||
}
|
||||
}
|
||||
}
|
||||
40
admin/publish.cjs
Normal file
@ -0,0 +1,40 @@
|
||||
const fs = require('fs')
|
||||
|
||||
const publish = () => {
|
||||
const src = './dist'
|
||||
const dest = '../niucloud/public/admin'
|
||||
|
||||
solve()
|
||||
|
||||
// 目标目录不存在停止复制
|
||||
try {
|
||||
const dir = fs.readdirSync(dest)
|
||||
} catch (e) {
|
||||
return
|
||||
}
|
||||
|
||||
// 删除目标目录下文件
|
||||
fs.rm(dest, { recursive: true }, err => {
|
||||
if(err) {
|
||||
console.log(err)
|
||||
return
|
||||
}
|
||||
|
||||
fs.cp(src, dest, { recursive: true }, (err) => {
|
||||
if (err) {
|
||||
console.error(err)
|
||||
}
|
||||
})
|
||||
})
|
||||
}
|
||||
|
||||
const solve = () => {
|
||||
const fn = './dist/index.html'
|
||||
const fc = fs.readFileSync(fn, 'utf-8')
|
||||
let text = new String(fc)
|
||||
text = text.replaceAll('./assets/', '/admin/assets/')
|
||||
text = text.replace('./niucloud.ico', '/admin/niucloud.ico')
|
||||
fs.writeFileSync(fn, text, 'utf8')
|
||||
}
|
||||
|
||||
publish()
|
||||
@ -5,7 +5,7 @@ import request from '@/utils/request'
|
||||
* @returns
|
||||
*/
|
||||
export function getAddonLocal(params: Record<string, any>) {
|
||||
return request.get('addon/local', params)
|
||||
return request.get('addon/local', params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -16,14 +16,6 @@ export function getAddonDetial(id: number) {
|
||||
return request.get(`addon/${id}`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 插件信息
|
||||
* @returns
|
||||
*/
|
||||
export function getAddonByKey(key: string) {
|
||||
return request.get(`addon/addon_by_key/${key}`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 安装插件
|
||||
* @param params
|
||||
@ -62,7 +54,7 @@ export function preInstallCheck(addon: string) {
|
||||
|
||||
/**
|
||||
* 获取正在安装的插件
|
||||
* @returns
|
||||
* @returns
|
||||
*/
|
||||
export function getAddonInstalltask() {
|
||||
return request.get('addon/installtask')
|
||||
@ -70,8 +62,8 @@ export function getAddonInstalltask() {
|
||||
|
||||
/**
|
||||
* 获取插件云安装日志
|
||||
* @param addon
|
||||
* @returns
|
||||
* @param addon
|
||||
* @returns
|
||||
*/
|
||||
export function getAddonCloudInstallLog(addon: string) {
|
||||
return request.get(`addon/cloudinstall/${addon}`)
|
||||
@ -93,4 +85,8 @@ export function preUninstallCheck(addon: string) {
|
||||
*/
|
||||
export function cancelInstall(addon: string) {
|
||||
return request.put(`addon/install/cancel/${addon}`, {}, { showErrorMessage: false })
|
||||
}
|
||||
}
|
||||
|
||||
export function getInstalledAddonList() {
|
||||
return request.get('addon/list/install')
|
||||
}
|
||||
|
||||
@ -5,15 +5,22 @@ import request from '@/utils/request'
|
||||
* @param params
|
||||
*/
|
||||
export function login(params: Record<string, any>) {
|
||||
return request.get('login', { params })
|
||||
return request.get(`login`, {params})
|
||||
}
|
||||
|
||||
/**
|
||||
* 退出登录
|
||||
*/
|
||||
export function logout() {
|
||||
return request.put('auth/logout', {}, { showErrorMessage: false })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取登录用户权限
|
||||
* @returns
|
||||
*/
|
||||
export function getAuthMenus() {
|
||||
return request.get('auth/authmenu')
|
||||
export function getAuthMenus(params: Record<string, any>) {
|
||||
return request.get('auth/authmenu', {params})
|
||||
}
|
||||
|
||||
/**
|
||||
@ -32,12 +39,6 @@ export function getLoginConfig() {
|
||||
return request.get('login/config')
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取默认页面应用列表
|
||||
*/
|
||||
export function getAuthaddon() {
|
||||
return request.get(`auth/authaddon`)
|
||||
}
|
||||
/**
|
||||
* 获取当前版本信息
|
||||
*/
|
||||
|
||||
38
admin/src/app/api/cloud.ts
Normal file
@ -0,0 +1,38 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 云编译
|
||||
* @param addon
|
||||
*/
|
||||
export function cloudBuild() {
|
||||
return request.post('niucloud/build', {}, { timeout: 0 })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取云编译任务
|
||||
* @param addon
|
||||
*/
|
||||
export function getCloudBuildTask() {
|
||||
return request.get('niucloud/build')
|
||||
}
|
||||
|
||||
/**
|
||||
* 云编译前检测
|
||||
*/
|
||||
export function getCloudBuildLog() {
|
||||
return request.get('niucloud/build/log')
|
||||
}
|
||||
|
||||
/**
|
||||
* 清除
|
||||
*/
|
||||
export function clearCloudBuildTask() {
|
||||
return request.post('niucloud/build/clear')
|
||||
}
|
||||
|
||||
/**
|
||||
* 云编译前检测
|
||||
*/
|
||||
export function preBuildCheck() {
|
||||
return request.get('niucloud/build/check')
|
||||
}
|
||||
@ -86,28 +86,42 @@ export function getLink(params: Record<string, any>) {
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取底部导航数据
|
||||
* 获取底部导航列表
|
||||
*/
|
||||
export function getDiyBottom(params: Record<string, any>) {
|
||||
export function getDiyBottomList(params: Record<string, any>) {
|
||||
return request.get(`diy/bottom`, {params})
|
||||
}
|
||||
|
||||
/**
|
||||
* 配置底部导航数据
|
||||
* 获取底部导航数据
|
||||
*/
|
||||
export function getDiyBottomConfig(params: Record<string, any>) {
|
||||
return request.get(`diy/bottom/config`, {params})
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置底部导航数据
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function setDiyBottom(params: Record<string, any>) {
|
||||
export function setDiyBottomConfig(params: Record<string, any>) {
|
||||
return request.post('diy/bottom', params, {showSuccessMessage: true})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取页面模板
|
||||
* 获取页面模板类型
|
||||
*/
|
||||
export function getDiyTemplate(params: Record<string, any>) {
|
||||
return request.get(`diy/template`, {params})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取模板页面列表
|
||||
*/
|
||||
export function getDiyTemplatePages(params: Record<string, any>) {
|
||||
return request.get(`diy/template/pages`, {params})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取自定义路由列表
|
||||
* @param params
|
||||
@ -117,6 +131,14 @@ export function getDiyRouteList(params: Record<string, any>) {
|
||||
return request.get(`diy/route`, {params})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取路由列表(存在的应用插件列表)
|
||||
* @returns
|
||||
*/
|
||||
export function getDiyRouteAppList() {
|
||||
return request.get(`diy/route/apps`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取自定义路由信息
|
||||
* @param params
|
||||
@ -149,4 +171,13 @@ export function getDecoratePage(params: Record<string, any>) {
|
||||
*/
|
||||
export function changeTemplate(params: Record<string, any>) {
|
||||
return request.put(`diy/change`, params, {showSuccessMessage: true})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取模板页面(存在的应用插件列表)
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function getApps(params: Record<string, any>) {
|
||||
return request.get(`diy/apps`)
|
||||
}
|
||||
@ -310,7 +310,7 @@ export function getCashOutList(params: Record<string, any>) {
|
||||
* @param id
|
||||
*/
|
||||
export function getCashOutDetail(id: number) {
|
||||
return request.get(`member/cash_out/${id}`)
|
||||
return request.get(`member/cash_out/${id}`, {})
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -11,7 +11,7 @@ export function getAuthinfo() {
|
||||
* 设置 授权配置
|
||||
*/
|
||||
export function setAuthinfo(params: Record<string, any>) {
|
||||
return request.post('niucloud/authinfo', params, { showSuccessMessage: true })
|
||||
return request.post('niucloud/authinfo', params, {showSuccessMessage: true})
|
||||
}
|
||||
|
||||
/**
|
||||
@ -22,6 +22,7 @@ export function getAdminAuthinfo() {
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 获取授权插件列表
|
||||
* @returns
|
||||
@ -32,6 +33,7 @@ export function getModule() {
|
||||
|
||||
/**
|
||||
* 获取插件版本
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function getModuleVersion() {
|
||||
@ -45,4 +47,21 @@ export function getModuleVersion() {
|
||||
*/
|
||||
export function downloadVersion(params: Record<string, any>) {
|
||||
return request.post(`addon/download/${params.addon}`, params, { showSuccessMessage: true })
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取框架最新版本
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function getFrameworkNewVersion() {
|
||||
return request.get(`niucloud/framework/newversion`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取框架更新记录
|
||||
* @returns
|
||||
*/
|
||||
export function getFrameworkVersionList() {
|
||||
return request.get(`niucloud/framework/version/list`)
|
||||
}
|
||||
|
||||
@ -61,7 +61,7 @@ export function getSmsList() {
|
||||
* @returns
|
||||
*/
|
||||
export function getSmsInfo(sms_type: string) {
|
||||
return request.get(`notice/notice/sms/${sms_type}`)
|
||||
return request.get(`notice/notice/sms/${sms_type}`,)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
70
admin/src/app/api/order.ts
Normal file
@ -0,0 +1,70 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
/***************************************************** 充值订单 ****************************************************/
|
||||
|
||||
/**
|
||||
* 获取充值订单列表
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function getRechargeOrderList(params: Record<string, any>) {
|
||||
return request.get(`order/recharge`, {params})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取充值订单统计
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function getRechargeStat(params: Record<string, any>) {
|
||||
return request.get(`order/recharge/stat`, {params})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取充值订单详情
|
||||
* @param order_id
|
||||
* @returns
|
||||
*/
|
||||
export function getRechargeOrderInfo(order_id: number) {
|
||||
return request.get(`order/recharge/${order_id}`);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取充值订单状态列表
|
||||
* @returns
|
||||
*/
|
||||
export function getRechargeOrderStatusList() {
|
||||
return request.get(`order/recharge/status`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取退款记录
|
||||
* @returns
|
||||
*/
|
||||
export function getRechargeRefund(params: Record<string, any>) {
|
||||
return request.get(`order/recharge/refund`, {params})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取退款状态
|
||||
* @returns
|
||||
*/
|
||||
export function getRechargeRefundStatus() {
|
||||
return request.get(`order/recharge/refund/status`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 充值订单发起退款
|
||||
* @returns
|
||||
*/
|
||||
export function rechargeRefund(id: number) {
|
||||
return request.put(`order/recharge/refund/${id}`, {}, {showSuccessMessage: true});
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取退款统计
|
||||
* @returns
|
||||
*/
|
||||
export function getRechargeRefundStat() {
|
||||
return request.get(`order/recharge/refund/stat`);
|
||||
}
|
||||
18
admin/src/app/api/pc.ts
Normal file
@ -0,0 +1,18 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 获取pc配置
|
||||
* @returns
|
||||
*/
|
||||
export function getPcConfig() {
|
||||
return request.get('channel/pc/config')
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑h5配置
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function setPcConfig(params: Record<string, any>) {
|
||||
return request.put('channel/pc/config', params, {showSuccessMessage: true})
|
||||
}
|
||||
@ -15,3 +15,4 @@ export function getUserInfo() {
|
||||
export function setUserInfo(params: Record<string, any>) {
|
||||
return request.put(`auth/edit`, params, {showSuccessMessage: true});
|
||||
}
|
||||
|
||||
|
||||
@ -12,6 +12,6 @@ export function getStatInfo() {
|
||||
* 获取站点统计信息
|
||||
*/
|
||||
export function getSiteStatInfo() {
|
||||
return request.get(`stat/siteindex`)
|
||||
return request.get(`stat/iteindex`)
|
||||
}
|
||||
|
||||
|
||||
@ -81,15 +81,8 @@ export function allRole() {
|
||||
* 获取全部权限
|
||||
* @returns
|
||||
*/
|
||||
export function getSystem() {
|
||||
return request.get(`sys/menu/system_menu`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 应用权限列表
|
||||
*/
|
||||
export function getAddonList() {
|
||||
return request.get(`app/getAddonList`)
|
||||
export function getSystem(params: Record<string, any> = {}) {
|
||||
return request.get(`sys/menu/system_menu`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -167,21 +160,11 @@ export function getMenuByTypeDir(key: any = 'system') {
|
||||
return request.get(`sys/menu/dir/${key}`)
|
||||
}
|
||||
|
||||
/***************************************************** 站点菜单 ****************************************************/
|
||||
|
||||
/**
|
||||
* 获取站点菜单
|
||||
* @returns
|
||||
*/
|
||||
export function getSiteMenus() {
|
||||
return request.get(`site/site/menu`)
|
||||
}
|
||||
|
||||
|
||||
/***************************************************** 设置 ****************************************************/
|
||||
|
||||
/**
|
||||
* 获取网站设置 [需要登录]
|
||||
* 获取网站设置
|
||||
* @returns
|
||||
*/
|
||||
export function getWebsite() {
|
||||
@ -189,20 +172,28 @@ export function getWebsite() {
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取网站设置 [不需要登录]
|
||||
* 获取网站设置
|
||||
* @returns
|
||||
*/
|
||||
export function getWebConfig() {
|
||||
return request.get('sys/web/website')
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取网站设置
|
||||
* @returns
|
||||
*/
|
||||
export function getWebCopyright() {
|
||||
return request.get('sys/web/copyright')
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新网站设置
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function setWebsite(params: Record<string, any>) {
|
||||
return request.post(`sys/config/website`, params, {showSuccessMessage: true})
|
||||
return request.put(`sys/config/website`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -227,7 +218,7 @@ export function getService() {
|
||||
* @returns
|
||||
*/
|
||||
export function setCopyright(params: Record<string, any>) {
|
||||
return request.put(`sys/config/copyright`, params, {showSuccessMessage: true})
|
||||
return request.put(`sys/config/copyright`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -236,7 +227,7 @@ export function setCopyright(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function getAttachmentCategoryList(params: Record<string, any>) {
|
||||
return request.get(`sys/attachment/category`, {params})
|
||||
return request.get(`sys/attachment/category`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -244,7 +235,7 @@ export function getAttachmentCategoryList(params: Record<string, any>) {
|
||||
* @param params
|
||||
*/
|
||||
export function addAttachmentCategory(params: Record<string, any>) {
|
||||
return request.post(`sys/attachment/category`, params, {showSuccessMessage: true})
|
||||
return request.post(`sys/attachment/category`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -253,7 +244,7 @@ export function addAttachmentCategory(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function editAttachmentCategory(params: Record<string, any>) {
|
||||
return request.put(`sys/attachment/category/${params.id}`, params, {showSuccessMessage: true})
|
||||
return request.put(`sys/attachment/category/${params.id}`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -262,7 +253,7 @@ export function editAttachmentCategory(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function deleteAttachmentCategory(id: number) {
|
||||
return request.delete(`sys/attachment/category/${id}`, {showSuccessMessage: true})
|
||||
return request.delete(`sys/attachment/category/${id}`, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -271,7 +262,7 @@ export function deleteAttachmentCategory(id: number) {
|
||||
* @returns
|
||||
*/
|
||||
export function getAttachmentList(params: Record<string, any>) {
|
||||
return request.get(`sys/attachment`, {params})
|
||||
return request.get(`sys/attachment`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -280,7 +271,7 @@ export function getAttachmentList(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function deleteAttachment(params: Record<string, any>) {
|
||||
return request.delete(`sys/attachment/del`, {data: params, showSuccessMessage: true})
|
||||
return request.delete(`sys/attachment/del`, { data: params, showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -292,13 +283,6 @@ export function moveAttachment(params: Record<string, any>) {
|
||||
return request.put(`sys/attachment/batchmove`, params)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取menu菜单
|
||||
*/
|
||||
export function getAuthMenu() {
|
||||
return request.get(`auth/site/showmenu`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取快捷菜单
|
||||
*/
|
||||
@ -310,7 +294,7 @@ export function getShortcutMenu() {
|
||||
* 添加快捷菜单
|
||||
*/
|
||||
export function setShortcutMenu(params: Record<string, any>) {
|
||||
return request.put(`sys/config/shortcut_menu`, params, {showSuccessMessage: true})
|
||||
return request.put(`sys/config/shortcut_menu`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -319,7 +303,7 @@ export function setShortcutMenu(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function getIconCategoryList(params: Record<string, any>) {
|
||||
return request.get(`sys/attachment/icon_category`, {params})
|
||||
return request.get(`sys/attachment/icon_category`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -328,10 +312,9 @@ export function getIconCategoryList(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function getIconList(params: Record<string, any>) {
|
||||
return request.get(`sys/attachment/icon`, {params})
|
||||
return request.get(`sys/attachment/icon`, { params })
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取evn
|
||||
* @param params
|
||||
@ -340,7 +323,6 @@ export function getIconList(params: Record<string, any>) {
|
||||
export function getEnv() {
|
||||
return request.get(`sys/env`)
|
||||
}
|
||||
|
||||
/***************************************************** 地址管理 ****************************************************/
|
||||
|
||||
/**
|
||||
@ -364,14 +346,14 @@ export function getAreatree(level: number = 1) {
|
||||
* 获取地址信息
|
||||
*/
|
||||
export function getAddressInfo(params: any) {
|
||||
return request.get(`sys/area/get_info`, {params})
|
||||
return request.get(`sys/area/get_info`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取地址信息
|
||||
*/
|
||||
export function getContraryAddress(params: any) {
|
||||
return request.get(`sys/area/contrary`, {params})
|
||||
return request.get(`sys/area/contrary`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -381,7 +363,6 @@ export function getContraryAddress(params: any) {
|
||||
export function getAreaByCode(code: number | string) {
|
||||
return request.get(`sys/area/code/${code}`)
|
||||
}
|
||||
|
||||
/***************************************************** 存储设置 ****************************************************/
|
||||
|
||||
/**
|
||||
@ -405,7 +386,7 @@ export function getStorageInfo(type: string) {
|
||||
* @returns
|
||||
*/
|
||||
export function editStorage(params: Record<string, any>) {
|
||||
return request.put(`sys/storage/${params.storage_type}`, params, {showSuccessMessage: true})
|
||||
return request.put(`sys/storage/${params.storage_type}`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/***************************************************** 支付设置 ****************************************************/
|
||||
@ -423,7 +404,7 @@ export function getPayConfig(type: string) {
|
||||
* @returns
|
||||
*/
|
||||
export function setPayConfig(params: Record<string, any>) {
|
||||
return request.put(`pay/config/${params.type}`, params, {showSuccessMessage: true});
|
||||
return request.put(`pay/config/${params.type}`, params, { showSuccessMessage: true });
|
||||
}
|
||||
|
||||
/**
|
||||
@ -439,7 +420,7 @@ export function getPayList() {
|
||||
* 获取打款设置配置
|
||||
* @param channel
|
||||
*/
|
||||
export function getTransferInfo(channel: string) {
|
||||
export function getTransferInfo(channel) {
|
||||
return request.get(`pay/channel/lists/${channel}`)
|
||||
}
|
||||
|
||||
@ -459,7 +440,7 @@ export function setTransferInfo(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function getCronList(params: any) {
|
||||
return request.get(`sys/schedule/list`, {params})
|
||||
return request.get(`sys/schedule/list`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -499,7 +480,7 @@ export function getWeek() {
|
||||
* @returns
|
||||
*/
|
||||
export function addCron(params: Record<string, any>) {
|
||||
return request.post(`sys/schedule`, params, {showSuccessMessage: true})
|
||||
return request.post(`sys/schedule`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -507,7 +488,7 @@ export function addCron(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function editCron(params: Record<string, any>) {
|
||||
return request.put(`sys/schedule/${params.id}`, params, {showSuccessMessage: true})
|
||||
return request.put(`sys/schedule/${params.id}`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -515,7 +496,7 @@ export function editCron(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function deleteCron(id: string) {
|
||||
return request.delete(`sys/schedule/${id}`, {showSuccessMessage: true})
|
||||
return request.delete(`sys/schedule/${id}`, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/***************************************************** 协议管理 ****************************************************/
|
||||
@ -541,7 +522,7 @@ export function getAgreementInfo(key: string) {
|
||||
* @returns
|
||||
*/
|
||||
export function editAgreement(params: Record<string, any>) {
|
||||
return request.put(`sys/agreement/${params.key}`, params, {showSuccessMessage: true})
|
||||
return request.put(`sys/agreement/${params.key}`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -576,7 +557,7 @@ export function getConfigLogin() {
|
||||
* @returns
|
||||
*/
|
||||
export function setConfigLogin(params: Record<string, any>) {
|
||||
return request.put(`sys/config/login`, params, {showSuccessMessage: true})
|
||||
return request.put(`sys/config/login`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -590,7 +571,7 @@ export function getPayConfigList() {
|
||||
* 设置支付配置
|
||||
*/
|
||||
export function setPatConfig(params: Record<string, any>) {
|
||||
return request.post(`pay/channel/set/all`, params, {showSuccessMessage: true})
|
||||
return request.post(`pay/channel/set/all`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
|
||||
@ -599,14 +580,23 @@ export function setPatConfig(params: Record<string, any>) {
|
||||
* 刷新菜单
|
||||
*/
|
||||
export function menuRefresh(params: Record<string, any>) {
|
||||
return request.post(`sys/menu/refresh`, {}, {showSuccessMessage: true})
|
||||
return request.post(`sys/menu/refresh`, {}, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 清理数据字段缓存
|
||||
*/
|
||||
export function clearSchemaCache(params: Record<string, any>) {
|
||||
return request.post(`sys/schema/clear`, {}, {showSuccessMessage: true})
|
||||
return request.post(`sys/schema/clear`, {}, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
|
||||
/***************************************************** 获取应用 ****************************************************/
|
||||
/**
|
||||
* 获取应用
|
||||
*/
|
||||
export function getAppMange() {
|
||||
return request.get(`sys/applist`)
|
||||
}
|
||||
|
||||
/***************************************************** 地图设置 ****************************************************/
|
||||
@ -615,7 +605,7 @@ export function clearSchemaCache(params: Record<string, any>) {
|
||||
* 设置地图key
|
||||
*/
|
||||
export function setMap(params: Record<string, any>) {
|
||||
return request.put(`sys/config/map`, params, {showSuccessMessage: true})
|
||||
return request.put(`sys/config/map`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -637,14 +627,30 @@ export function getIndexList() {
|
||||
* 设置首页模版
|
||||
*/
|
||||
export function setIndexList(params: Record<string, any>) {
|
||||
return request.put(`sys/config/site_index`, params, {showSuccessMessage: true})
|
||||
return request.put(`sys/config/site_index`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取布局
|
||||
* @returns
|
||||
*/
|
||||
export function getLayouts() {
|
||||
return request.get('sys/layout')
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置布局
|
||||
* @returns
|
||||
*/
|
||||
export function setLayout(key: string) {
|
||||
return request.put('sys/layout', { key }, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取支付待审核记录
|
||||
*/
|
||||
export function getPayAuditList(params: Record<string, any>) {
|
||||
return request.get('pay/audit', {params})
|
||||
return request.get('pay/audit', { params })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -652,7 +658,7 @@ export function getPayAuditList(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function payAuditPass(outTradeNo: string) {
|
||||
return request.put(`pay/pass/${outTradeNo}`, {}, {showSuccessMessage: true})
|
||||
return request.put(`pay/pass/${outTradeNo}`, {}, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -660,7 +666,7 @@ export function payAuditPass(outTradeNo: string) {
|
||||
* @returns
|
||||
*/
|
||||
export function payAuditRefuse(params: Record<string, any>) {
|
||||
return request.put(`pay/refuse/${params.out_trade_no}`, params, {showSuccessMessage: true})
|
||||
return request.put(`pay/refuse/${params.out_trade_no}`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -670,9 +676,40 @@ export function getPayDetail(id: number) {
|
||||
return request.get(`pay/detail/${id}`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取应用列表
|
||||
*/
|
||||
export function getAddonList() {
|
||||
return request.get(`app/getAddonList`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取手机端首页列表
|
||||
*/
|
||||
export function getWapIndexList(params: Record<string, any>) {
|
||||
return request.get('sys/config/wap_index', {params})
|
||||
return request.get('sys/config/wap_index', { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取开发者key
|
||||
* @returns
|
||||
*/
|
||||
export function getDeveloperToken() {
|
||||
return request.get('sys/config/developer_token')
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置开发者key
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function setDeveloperToken(params: Record<string, any>) {
|
||||
return request.put(`sys/config/developer_token`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取install.php配置
|
||||
*/
|
||||
export function getInstallConfig() {
|
||||
return request.get('sys/install/config')
|
||||
}
|
||||
|
||||
@ -19,7 +19,6 @@ export function getAddontype() {
|
||||
|
||||
/**
|
||||
* 获取插件详情
|
||||
|
||||
* @returns
|
||||
*/
|
||||
export function getAddonDevelopInfo(key: any) {
|
||||
@ -28,7 +27,6 @@ export function getAddonDevelopInfo(key: any) {
|
||||
|
||||
/**
|
||||
* 获取插件key是否存在
|
||||
|
||||
* @returns
|
||||
*/
|
||||
export function getAddonDevelopCheck(key: any) {
|
||||
@ -77,9 +75,8 @@ export function addonDevelopBuild(key: any) {
|
||||
* @returns
|
||||
*/
|
||||
export function addonDevelopDownload(key: any) {
|
||||
return request.post(`addon_develop/download/${key}`, {}, {"responseType": "blob"})
|
||||
return request.post(`addon_develop/download/${key}`, {})
|
||||
}
|
||||
|
||||
/***************************************************** 代码生成 ****************************************************/
|
||||
|
||||
/**
|
||||
@ -114,7 +111,7 @@ export function addGenerateTable(params: Record<string, any>) {
|
||||
* @param params
|
||||
*/
|
||||
export function editGenerateTable(params: Record<string, any>) {
|
||||
return request.put(`generator/generator/${params.id}`, params)
|
||||
return request.put(`generator/generator/${params.id}`, params, {showSuccessMessage: true})
|
||||
}
|
||||
|
||||
/**
|
||||
@ -177,4 +174,11 @@ export function getGeneratorTableColumn(params: any) {
|
||||
*/
|
||||
export function generatorCheckFile(params: Record<string, any>) {
|
||||
return request.get(`generator/check_file`, {params})
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据模型获取表字段
|
||||
*/
|
||||
export function getGeneratorModelTableColumn(params: any) {
|
||||
return request.get(`generator/model_table_column`, {params})
|
||||
}
|
||||
|
||||
47
admin/src/app/api/upgrade.ts
Normal file
@ -0,0 +1,47 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
|
||||
/**
|
||||
* 获取更新内容
|
||||
* @param addon
|
||||
*/
|
||||
export function getUpgradeContent(addon: string = '') {
|
||||
return request.get(addon ? `upgrade/${addon}` : 'upgrade')
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取升级任务
|
||||
* @param addon
|
||||
*/
|
||||
export function getUpgradeTask() {
|
||||
return request.get('upgrade/task')
|
||||
}
|
||||
|
||||
/**
|
||||
* 升级
|
||||
* @param addon
|
||||
*/
|
||||
export function upgradeAddon(addon: string = '') {
|
||||
return request.post(addon ? `upgrade/${addon}` : 'upgrade')
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行升级
|
||||
*/
|
||||
export function executeUpgrade() {
|
||||
return request.post('upgrade/execute', {}, { timeout: 0 })
|
||||
}
|
||||
|
||||
/**
|
||||
* 升级前检测
|
||||
*/
|
||||
export function preUpgradeCheck(addon: string = '') {
|
||||
return request.get(addon ? `upgrade/check/${addon}` : 'upgrade/check')
|
||||
}
|
||||
|
||||
/**
|
||||
* 清除
|
||||
*/
|
||||
export function clearUpgradeTask() {
|
||||
return request.post('upgrade/clear')
|
||||
}
|
||||
@ -58,3 +58,7 @@ export function getTemplateList() {
|
||||
export function getBatchAcquisition(params: Record<string, any>) {
|
||||
return request.put('wechat/template/sync', params, {showSuccessMessage: true})
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 655 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.2 KiB |
BIN
admin/src/app/assets/images/diy/notice/style_1.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
admin/src/app/assets/images/diy/notice/style_2.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
admin/src/app/assets/images/gov_icon.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 605 B |
|
Before Width: | Height: | Size: 392 B |
BIN
admin/src/app/assets/images/index/app1.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
admin/src/app/assets/images/index/auth1.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
admin/src/app/assets/images/index/new_site1.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
admin/src/app/assets/images/index/site1.png
Normal file
|
After Width: | Height: | Size: 588 B |
BIN
admin/src/app/assets/images/index/site_class1.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
|
Before Width: | Height: | Size: 113 KiB |
|
Before Width: | Height: | Size: 172 KiB |
BIN
admin/src/app/assets/images/login/niushop_login_index_left.jpg
Normal file
|
After Width: | Height: | Size: 370 KiB |
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 87 KiB |
BIN
admin/src/app/assets/images/login_logo.png
Normal file
|
After Width: | Height: | Size: 4.6 KiB |
|
Before Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 7.7 KiB |
|
Before Width: | Height: | Size: 62 KiB |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 1.2 KiB |
|
Before Width: | Height: | Size: 26 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 118 KiB |
|
Before Width: | Height: | Size: 3.7 KiB |
BIN
admin/src/app/assets/images/theme_black.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
BIN
admin/src/app/assets/images/theme_white.png
Normal file
|
After Width: | Height: | Size: 2.5 KiB |
|
Before Width: | Height: | Size: 60 KiB |
|
Before Width: | Height: | Size: 67 KiB |
|
Before Width: | Height: | Size: 2.1 KiB |
272
admin/src/app/components/cloud-build/index.vue
Normal file
@ -0,0 +1,272 @@
|
||||
<template>
|
||||
<el-dialog v-model="showDialog" :title="t('cloudbuild.title')" width="850px" :close-on-click-modal="false"
|
||||
:close-on-press-escape="false" :before-close="dialogClose">
|
||||
|
||||
<div v-show="active == 'build'" class="h-[60vh]" v-loading="loading">
|
||||
<div class="h-[60vh] flex flex-col" v-if="cloudBuildCheck && !cloudBuildTask">
|
||||
<el-scrollbar>
|
||||
<div class="bg-[#fff] my-3" v-if="cloudBuildCheck.dir">
|
||||
<p class="pt-[20px] pl-[20px] ">{{ t('cloudbuild.dirPermission') }}</p>
|
||||
<div class="px-[20px] pt-[10px] text-[14px] el-table">
|
||||
<el-row class="py-[10px] items table-head-bg pl-[15px] mb-[10px]">
|
||||
<el-col :span="12">
|
||||
<span>{{ t('cloudbuild.path') }}</span>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<span>{{ t('cloudbuild.demand') }}</span>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<span>{{ t('status') }}</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row class="pb-[10px] items pl-[15px]"
|
||||
v-for="item in cloudBuildCheck.dir.is_readable">
|
||||
<el-col :span="12">
|
||||
<span>{{ item.dir }}</span>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<span>{{ t('cloudbuild.readable') }}</span>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<span v-if="item.status"><el-icon color="green"><Select /></el-icon></span>
|
||||
<span v-else>
|
||||
<el-icon color="red">
|
||||
<CloseBold />
|
||||
</el-icon>
|
||||
</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row class="pb-[10px] items pl-[15px]"
|
||||
v-for="item in cloudBuildCheck.dir.is_write">
|
||||
<el-col :span="12">
|
||||
<span>{{ item.dir }}</span>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<span>{{ t('cloudbuild.write') }}</span>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<span v-if="item.status"><el-icon color="green"><Select /></el-icon></span>
|
||||
<span v-else>
|
||||
<el-icon color="red">
|
||||
<CloseBold />
|
||||
</el-icon>
|
||||
</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</div>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
<div class="h-[60vh]" v-show="cloudBuildTask">
|
||||
<terminal ref="terminalRef" context="" :init-log="null" :show-header="false"
|
||||
:show-log-time="true" @exec-cmd="onExecCmd"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-show="active == 'complete'">
|
||||
<div class="h-[60vh] flex flex-col">
|
||||
<div class="flex-1 h-0">
|
||||
<el-result icon="success" :title="t('cloudbuild.cloudbuildSuccess')"></el-result>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-dialog>
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, h, watch } from 'vue'
|
||||
import { t } from '@/lang'
|
||||
import { getCloudBuildLog, getCloudBuildTask, cloudBuild, clearCloudBuildTask, preBuildCheck } from '@/app/api/cloud'
|
||||
import { Terminal, TerminalFlash } from 'vue-web-terminal'
|
||||
import 'vue-web-terminal/lib/theme/dark.css'
|
||||
import { AnyObject } from "@/types/global"
|
||||
import { ElNotification, ElMessageBox } from "element-plus"
|
||||
import {preUpgradeCheck} from "@/app/api/upgrade";
|
||||
|
||||
const showDialog = ref<boolean>(false)
|
||||
const cloudBuildTask = ref<null | AnyObject>(null)
|
||||
const active = ref('build')
|
||||
const cloudBuildCheck = ref<null | AnyObject>(null)
|
||||
const loading = ref(false)
|
||||
const terminalRef = ref(null)
|
||||
const emits = defineEmits(['complete'])
|
||||
|
||||
let cloudBuildLog = []
|
||||
/**
|
||||
* 查询升级任务
|
||||
*/
|
||||
const getCloudBuildTaskFn = () => {
|
||||
getCloudBuildTask().then(({ data }) => {
|
||||
if (!data) return
|
||||
|
||||
cloudBuildTask.value = data
|
||||
|
||||
if (!showDialog.value) {
|
||||
showElNotification()
|
||||
}
|
||||
}).catch()
|
||||
}
|
||||
getCloudBuildTaskFn()
|
||||
|
||||
const getCloudBuildLogFn = () => {
|
||||
getCloudBuildLog().then(res => {
|
||||
if (!res.data) {
|
||||
if (showDialog.value && cloudBuildLog.length) {
|
||||
active.value = 'complete'
|
||||
terminalRef.value.execute('clear')
|
||||
}
|
||||
notificationEl && notificationEl.close()
|
||||
cloudBuildTask.value = null
|
||||
return
|
||||
}
|
||||
|
||||
const data = res.data.data ?? []
|
||||
let error = ''
|
||||
|
||||
if (data[0] && data[0].length && showDialog.value) {
|
||||
if (cloudBuildLog.length == 0) {
|
||||
terminalRef.value.execute('clear')
|
||||
terminalRef.value.execute('开始编译')
|
||||
}
|
||||
|
||||
data[0].forEach(item => {
|
||||
if (!cloudBuildLog.includes(item.action)) {
|
||||
terminalRef.value.pushMessage({ content: `正在执行:${item.action}` })
|
||||
cloudBuildLog.push(item.action)
|
||||
|
||||
if (item.code == 0) {
|
||||
error = item.msg
|
||||
terminalRef.value.pushMessage({ content: item.msg, class: 'error' })
|
||||
}
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
if (error) return
|
||||
|
||||
setTimeout(() => {
|
||||
getCloudBuildLogFn()
|
||||
}, 2000)
|
||||
}).catch()
|
||||
}
|
||||
|
||||
let notificationEl : any = null
|
||||
/**
|
||||
* 升级中任务提示
|
||||
*/
|
||||
const showElNotification = () => {
|
||||
notificationEl = ElNotification.success({
|
||||
title: t('warning'),
|
||||
dangerouslyUseHTMLString: true,
|
||||
message: h('div', {}, [
|
||||
t('cloudbuild.executingTips'),
|
||||
h('span', { class: 'text-primary cursor-pointer', onClick: elNotificationClick }, [t('cloudbuild.clickView')])
|
||||
]),
|
||||
duration: 0,
|
||||
showClose: false
|
||||
})
|
||||
}
|
||||
|
||||
const elNotificationClick = () => {
|
||||
showDialog.value = true
|
||||
active.value = 'build'
|
||||
getCloudBuildLogFn()
|
||||
}
|
||||
|
||||
const open = async () => {
|
||||
showDialog.value = true
|
||||
loading.value = true
|
||||
active.value = 'build'
|
||||
|
||||
if (cloudBuildTask.value) {
|
||||
loading.value = false
|
||||
getCloudBuildLogFn()
|
||||
return
|
||||
}
|
||||
|
||||
preBuildCheck().then(async ({ data }) => {
|
||||
if (data.is_pass) {
|
||||
cloudBuild().then(({ data }) => {
|
||||
loading.value = false
|
||||
cloudBuildTask.value = data
|
||||
getCloudBuildLogFn()
|
||||
}).catch(() => {
|
||||
showDialog.value = false
|
||||
})
|
||||
} else {
|
||||
loading.value = false
|
||||
cloudBuildCheck.value = data
|
||||
}
|
||||
}).catch(() => {
|
||||
showDialog.value = false
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 升级进度动画
|
||||
*/
|
||||
let flashInterval = null
|
||||
const terminalFlash = new TerminalFlash()
|
||||
const onExecCmd = (key, command, success, failed, name) => {
|
||||
if (command == '开始编译') {
|
||||
success(terminalFlash)
|
||||
const frames = makeIterator(['/', '——', '\\', '|'])
|
||||
flashInterval = setInterval(() => {
|
||||
terminalFlash.flush('> ' + frames.next().value)
|
||||
}, 150)
|
||||
}
|
||||
}
|
||||
|
||||
const makeIterator = (array: string[]) => {
|
||||
var nextIndex = 0
|
||||
return {
|
||||
next() {
|
||||
if ((nextIndex + 1) == array.length) {
|
||||
nextIndex = 0
|
||||
}
|
||||
return { value: array[nextIndex++] }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const dialogClose = (done: () => {}) => {
|
||||
if (active.value == 'cloudbuild' && cloudBuildTask.value) {
|
||||
ElMessageBox.confirm(
|
||||
t('cloudbuild.showDialogCloseTips'),
|
||||
t('warning'),
|
||||
{
|
||||
confirmButtonText: t('confirm'),
|
||||
cancelButtonText: t('cancel'),
|
||||
type: 'warning'
|
||||
}
|
||||
).then(() => {
|
||||
done()
|
||||
}).catch(() => { })
|
||||
} else {
|
||||
done()
|
||||
}
|
||||
}
|
||||
|
||||
watch(() => showDialog.value, () => {
|
||||
if (!showDialog.value) {
|
||||
active.value = 'build'
|
||||
cloudBuildLog = []
|
||||
flashInterval && clearInterval(flashInterval)
|
||||
clearCloudBuildTask()
|
||||
}
|
||||
})
|
||||
|
||||
defineExpose({
|
||||
open,
|
||||
cloudBuildTask
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.table-head-bg {
|
||||
background-color: var(--el-table-header-bg-color);
|
||||
}
|
||||
:deep(.terminal .t-log-box span) {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style>
|
||||
324
admin/src/app/components/upgrade/index.vue
Normal file
@ -0,0 +1,324 @@
|
||||
<template>
|
||||
<el-dialog v-model="showDialog" :title="t('upgrade.title')" width="850px" :close-on-click-modal="false"
|
||||
:close-on-press-escape="false" :before-close="dialogClose">
|
||||
|
||||
<div v-show="active == 'content'">
|
||||
|
||||
<div class="h-[60vh] flex flex-col" v-if="upgradeContent">
|
||||
<div class="text-lg">
|
||||
本次升级将从<span class="font-bold">{{ upgradeContent.version }}</span>升级到<span class="font-bold">{{ upgradeContent.upgrade_version }}</span>版本
|
||||
</div>
|
||||
<div class="mt-[10px]" v-if="upgradeContent.upgrade_version != upgradeContent.last_version">
|
||||
<el-alert type="info" show-icon >
|
||||
<template #title>
|
||||
当前最新版本为{{ upgradeContent.last_version }},您的服务已于{{ upgradeContent.expire_time }}到期。如需升级到最新版可在<a class="text-primary" href="https://www.niucloud.com" target="_blank">niucloud-admin官网</a>购买相关服务后再进行升级
|
||||
</template>
|
||||
</el-alert>
|
||||
</div>
|
||||
<el-scrollbar class="flex-1 h-0 mt-[20px]">
|
||||
<div class="mt-[20px]" v-for="(item, index) in upgradeContent.version_list" :key="index">
|
||||
<div class="font-bold text-lg">{{ item.version_no }}</div>
|
||||
<div class="mt-[5px]">{{ item.release_time }}</div>
|
||||
<div class="mt-[10px] p-[10px] rounded bg-[#f4f4f5] whitespace-pre" v-if="item.upgrade_log" v-html="item.upgrade_log"></div>
|
||||
</div>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
<div class="flex justify-end">
|
||||
<el-button type="primary" @click="handleUpgrade" :loading="uploading">{{ t('upgrade.upgradeButton') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-show="active == 'upgrade'">
|
||||
<div class="h-[60vh] flex flex-col" v-if="upgradeCheck && !upgradeTask">
|
||||
<el-scrollbar>
|
||||
<div class="bg-[#fff] my-3" v-if="upgradeCheck.dir">
|
||||
<p class="pt-[20px] pl-[20px] ">{{ t('upgrade.dirPermission') }}</p>
|
||||
<div class="px-[20px] pt-[10px] text-[14px] el-table">
|
||||
<el-row class="py-[10px] items table-head-bg pl-[15px] mb-[10px]">
|
||||
<el-col :span="12">
|
||||
<span>{{ t('upgrade.path') }}</span>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<span>{{ t('upgrade.demand') }}</span>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<span>{{ t('status') }}</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row class="pb-[10px] items pl-[15px]"
|
||||
v-for="item in upgradeCheck.dir.is_readable">
|
||||
<el-col :span="12">
|
||||
<span>{{ item.dir }}</span>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<span>{{ t('upgrade.readable') }}</span>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<span v-if="item.status"><el-icon color="green"><Select /></el-icon></span>
|
||||
<span v-else>
|
||||
<el-icon color="red">
|
||||
<CloseBold />
|
||||
</el-icon>
|
||||
</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row class="pb-[10px] items pl-[15px]"
|
||||
v-for="item in upgradeCheck.dir.is_write">
|
||||
<el-col :span="12">
|
||||
<span>{{ item.dir }}</span>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<span>{{ t('upgrade.write') }}</span>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<span v-if="item.status"><el-icon color="green"><Select /></el-icon></span>
|
||||
<span v-else>
|
||||
<el-icon color="red">
|
||||
<CloseBold />
|
||||
</el-icon>
|
||||
</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
</div>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
<div class="h-[60vh]" v-show="upgradeTask">
|
||||
<terminal ref="terminalRef" :context="upgradeTask ? upgradeTask.upgrade.app_key : ''" :init-log="null" :show-header="false"
|
||||
:show-log-time="true" @exec-cmd="onExecCmd"/>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-show="active == 'complete'">
|
||||
<div class="h-[60vh] flex flex-col">
|
||||
<div class="flex-1 h-0">
|
||||
<el-result icon="success" :title="t('upgrade.upgradeSuccess')"></el-result>
|
||||
<el-alert :title="t('upgrade.upgradeCompleteTips')" type="error" :closable="false" />
|
||||
</div>
|
||||
<div class="flex justify-end">
|
||||
<el-button type="default" @click="showDialog = false">{{ t('upgrade.localBuild') }}</el-button>
|
||||
<el-button type="primary" @click="handleCloudBuild">{{ t('upgrade.cloudBuild') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-dialog>
|
||||
|
||||
<cloud-build ref="cloudBuildRef" />
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import {ref, h, watch} from 'vue'
|
||||
import { t } from '@/lang'
|
||||
import { getUpgradeContent, getUpgradeTask, upgradeAddon, executeUpgrade, preUpgradeCheck, clearUpgradeTask } from '@/app/api/upgrade'
|
||||
import { Terminal, TerminalFlash } from 'vue-web-terminal'
|
||||
import 'vue-web-terminal/lib/theme/dark.css'
|
||||
import { AnyObject } from "@/types/global"
|
||||
import CloudBuild from '@/app/components/cloud-build/index.vue'
|
||||
import { ElNotification, ElMessage, ElMessageBox } from "element-plus"
|
||||
|
||||
const showDialog = ref<boolean>(false)
|
||||
const upgradeContent = ref<null | AnyObject>(null)
|
||||
const upgradeTask = ref<null | AnyObject>(null)
|
||||
const active = ref('content')
|
||||
const upgradeCheck = ref<null | AnyObject>(null)
|
||||
const uploading = ref(false)
|
||||
const terminalRef = ref(null)
|
||||
const emits = defineEmits(['complete'])
|
||||
const cloudBuildRef = ref(null)
|
||||
|
||||
let upgradeLog = []
|
||||
/**
|
||||
* 查询升级任务
|
||||
*/
|
||||
const getUpgradeTaskFn = () => {
|
||||
getUpgradeTask().then(({ data }) => {
|
||||
if (!data) return
|
||||
|
||||
// 检测有没有正在进行中的升级任务
|
||||
if (!showDialog.value) {
|
||||
showElNotification()
|
||||
return
|
||||
}
|
||||
if (!upgradeTask.value) {
|
||||
terminalRef.value.execute('clear')
|
||||
terminalRef.value.execute('开始升级')
|
||||
}
|
||||
data.log.forEach(item => {
|
||||
if (!upgradeLog.includes(item)) {
|
||||
terminalRef.value.pushMessage({content: `正在执行:${item}`})
|
||||
upgradeLog.push(item)
|
||||
}
|
||||
})
|
||||
// 安装失败
|
||||
if (data.error) {
|
||||
upgradeTask.value = data
|
||||
ElMessage({ message: '升级失败', type: 'error' })
|
||||
terminalRef.value.pushMessage({ content: data.error, class: 'error' })
|
||||
return
|
||||
}
|
||||
// 安装完成
|
||||
if (data.step == 'upgradeComplete') {
|
||||
active.value = 'complete'
|
||||
notificationEl && notificationEl.close()
|
||||
emits('complete')
|
||||
return
|
||||
}
|
||||
upgradeTask.value = data
|
||||
executeUpgradeFn()
|
||||
}).catch()
|
||||
}
|
||||
getUpgradeTaskFn()
|
||||
|
||||
const executeUpgradeFn = () => {
|
||||
executeUpgrade().then(() => {
|
||||
getUpgradeTaskFn()
|
||||
}).catch()
|
||||
}
|
||||
|
||||
let notificationEl : any = null
|
||||
/**
|
||||
* 升级中任务提示
|
||||
*/
|
||||
const showElNotification = () => {
|
||||
notificationEl = ElNotification.success({
|
||||
title: t('warning'),
|
||||
dangerouslyUseHTMLString: true,
|
||||
message: h('div', {}, [
|
||||
t('upgrade.upgradingTips'),
|
||||
h('span', { class: 'text-primary cursor-pointer', onClick: elNotificationClick }, [t('upgrade.clickView')])
|
||||
]),
|
||||
duration: 0,
|
||||
showClose: false
|
||||
})
|
||||
}
|
||||
|
||||
const elNotificationClick = () => {
|
||||
showDialog.value = true
|
||||
active.value = 'upgrade'
|
||||
getUpgradeTaskFn()
|
||||
notificationEl && notificationEl.close()
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行升级
|
||||
*/
|
||||
const handleUpgrade = async () => {
|
||||
if (uploading.value) return
|
||||
uploading.value = true
|
||||
|
||||
const appKey = upgradeContent.value?.app.app_key != 'niucloud-admin' ? upgradeContent.value?.app.app_key : ''
|
||||
|
||||
await preUpgradeCheck(appKey)
|
||||
.then(async ({ data }) => {
|
||||
if (data.is_pass) {
|
||||
await upgradeAddon(appKey).then(() => {
|
||||
getUpgradeTaskFn()
|
||||
}).catch(() => {
|
||||
uploading.value = false
|
||||
})
|
||||
} else {
|
||||
upgradeCheck.value = data
|
||||
}
|
||||
})
|
||||
.catch()
|
||||
|
||||
if (uploading.value) active.value = 'upgrade'
|
||||
}
|
||||
|
||||
const open = (addonKey: string = '') => {
|
||||
if (upgradeTask.value) {
|
||||
ElMessage({ message: '已有正在执行中的升级任务', type: 'error' })
|
||||
showDialog.value = true
|
||||
return
|
||||
}
|
||||
getUpgradeContent(addonKey).then(({ data }) => {
|
||||
upgradeContent.value = data
|
||||
if (!data.version_list.length) {
|
||||
ElMessage({ message: '已经是最新版本了', type: 'error' })
|
||||
return
|
||||
}
|
||||
showDialog.value = true
|
||||
}).catch()
|
||||
}
|
||||
|
||||
/**
|
||||
* 升级进度动画
|
||||
*/
|
||||
let flashInterval = null
|
||||
const terminalFlash = new TerminalFlash()
|
||||
const onExecCmd = (key, command, success, failed, name) => {
|
||||
if (command == '开始升级') {
|
||||
success(terminalFlash)
|
||||
const frames = makeIterator(['/', '——', '\\', '|'])
|
||||
flashInterval = setInterval(() => {
|
||||
terminalFlash.flush('> ' + frames.next().value)
|
||||
}, 150)
|
||||
}
|
||||
}
|
||||
|
||||
const makeIterator = (array: string[]) => {
|
||||
var nextIndex = 0
|
||||
return {
|
||||
next() {
|
||||
if ((nextIndex + 1) == array.length) {
|
||||
nextIndex = 0
|
||||
}
|
||||
return { value: array[nextIndex++] }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const dialogClose = (done: () => {}) => {
|
||||
if (active.value == 'upgrade' && upgradeTask.value && !upgradeTask.value.error) {
|
||||
ElMessageBox.confirm(
|
||||
t('upgrade.showDialogCloseTips'),
|
||||
t('warning'),
|
||||
{
|
||||
confirmButtonText: t('confirm'),
|
||||
cancelButtonText: t('cancel'),
|
||||
type: 'warning'
|
||||
}
|
||||
).then(() => {
|
||||
done()
|
||||
}).catch(() => { })
|
||||
} else {
|
||||
done()
|
||||
}
|
||||
}
|
||||
|
||||
watch(() => showDialog.value, () => {
|
||||
if (!showDialog.value) {
|
||||
clearUpgradeTaskFn()
|
||||
}
|
||||
})
|
||||
|
||||
const clearUpgradeTaskFn = () => {
|
||||
active.value = 'content'
|
||||
uploading.value = false
|
||||
upgradeTask.value = null
|
||||
upgradeLog = []
|
||||
flashInterval && clearInterval(flashInterval)
|
||||
clearUpgradeTask().then(() => {}).catch()
|
||||
}
|
||||
|
||||
/**
|
||||
* 云编译
|
||||
*/
|
||||
const handleCloudBuild = () => {
|
||||
showDialog.value = false
|
||||
cloudBuildRef.value?.open()
|
||||
}
|
||||
|
||||
defineExpose({
|
||||
open
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.table-head-bg {
|
||||
background-color: var(--el-table-header-bg-color);
|
||||
}
|
||||
:deep(.terminal .t-log-box span) {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
</style>
|
||||
@ -13,5 +13,6 @@
|
||||
"authSecretPlaceholder": "请输入授权秘钥",
|
||||
"updateCode": "重新绑定",
|
||||
"notHaveAuth": "还没有授权?去购买",
|
||||
"authInfoTips": "授权码和授权秘钥可在Niucloud官网我的授权 授权详情中查看"
|
||||
}
|
||||
"authInfoTips": "授权码和授权秘钥可在Niucloud官网我的授权 授权详情中查看",
|
||||
"cloudBuildTips": "是否要进行云编译该操作可能会影响到正在访问的客户是否要继续操作?"
|
||||
}
|
||||
|
||||
5
admin/src/app/lang/zh-cn/app.index.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"appName": "应用名称",
|
||||
"appNamePlaceholder": "请输入应用名称",
|
||||
"emptyAppData": "暂无应用"
|
||||
}
|
||||
@ -1,4 +1,10 @@
|
||||
{
|
||||
"search":"搜索应用名称",
|
||||
"appName":"应用名/版本信息",
|
||||
"introduction":"简介",
|
||||
"type":"类型",
|
||||
"app":"应用",
|
||||
"addon":"插件",
|
||||
"noPlug":"暂无应用",
|
||||
"install":"安装",
|
||||
"unload":"卸载",
|
||||
@ -6,9 +12,10 @@
|
||||
"uninstalledLabel":"未安装",
|
||||
"version":"版本",
|
||||
"title":"名称",
|
||||
"desc":"描述",
|
||||
"desc":"简介",
|
||||
"plugDetail": "插件信息",
|
||||
"author": "作者",
|
||||
"detail":"详情",
|
||||
"addonInstall": "插件安装",
|
||||
"dirPermission": "目录读写权限",
|
||||
"path": "路径",
|
||||
@ -21,9 +28,9 @@
|
||||
"envCheck": "环境检查",
|
||||
"installProgress": "安装进度",
|
||||
"installComplete": "安装完成",
|
||||
"localAppText":"本地应用",
|
||||
"localAppText":"插件管理",
|
||||
"marketAppText":"官方市场",
|
||||
"installShowDialogCloseTips": "安装任务尚未完成,关闭任务仍会执行,确定要继续关闭吗?",
|
||||
"installShowDialogCloseTips": "安装任务尚未完成,关闭将取消安装任务,是否要继续关闭?",
|
||||
"marketDevelopMessage":"官方市场正在开发中!",
|
||||
"jobError": "任务队列未启动 请在服务端源码部署目录打开终端执行 php think queue:listen",
|
||||
"conflictFiles": "冲突文件",
|
||||
@ -44,5 +51,17 @@
|
||||
"authTips": "云安装需先绑定授权码,如果已有授权请先进行绑定,没有授权可到niucloud官网购买云服务之后再进行操作",
|
||||
"toBind": "绑定授权",
|
||||
"toNiucloud": "去niucloud官网",
|
||||
"addonUninstall": "插件卸载"
|
||||
}
|
||||
"descriptionLeft": "暂无任何应用,马上去",
|
||||
"link": "官方应用市场",
|
||||
"descriptionRight": "逛逛",
|
||||
"installed-empty": "暂未安装任何应用,请先安装",
|
||||
"siteAddressTips": "授权域名不匹配",
|
||||
"authCodePlaceholder": "请输入授权码",
|
||||
"authSecretPlaceholder": "请输入授权秘钥",
|
||||
"updateCode": "重新绑定",
|
||||
"notHaveAuth": "还没有授权?去购买",
|
||||
"authInfoTips": "授权码和授权秘钥可在Niucloud官网我的授权 授权详情中查看",
|
||||
"addonUninstall": "插件卸载",
|
||||
"appIdentification":"应用标识",
|
||||
"tipText":"标识指开发应用或插件的文件夹名称"
|
||||
}
|
||||
|
||||
@ -1,30 +1,30 @@
|
||||
{
|
||||
"system":"系统菜单",
|
||||
"application":"应用菜单",
|
||||
"menuName": "菜单名称",
|
||||
"menuType": "类型",
|
||||
"authId": "api路径",
|
||||
"authId": "权限标识",
|
||||
"menuTypeDir": "目录",
|
||||
"menuTypeMenu": "菜单",
|
||||
"menuTypeButton": "按钮",
|
||||
"menuDeleteTips": "删除菜单会删除当前菜单以及该菜单下所有子菜单,是否确认删除?",
|
||||
"menuDeleteTips": "确定要删除该菜单吗?",
|
||||
"addMenu": "添加菜单",
|
||||
"updateMenu": "编辑菜单",
|
||||
"routePath": "路由路径",
|
||||
"viewPath": "组件路径",
|
||||
"addon":"选择应用",
|
||||
"parentMenu": "父级菜单",
|
||||
"menuIcon": "菜单图标",
|
||||
"sort":"权重",
|
||||
"menuKey":"权限标识",
|
||||
"menuKey":"菜单标识",
|
||||
"menuNamePlaceholder": "请输入菜单名称",
|
||||
"menuKeyPlaceholder": "请输入权限标识",
|
||||
"menuKeyPlaceholder": "请输入菜单标识",
|
||||
"menuKeyValidata":"菜单标识只能使用字母数字下划线并且开头不能为数字",
|
||||
"routePathPlaceholder": "请输入路由路径",
|
||||
"viewPathPlaceholder": "请输入组件路径",
|
||||
"authIdPlaceholder": "请输入api路径",
|
||||
"authIdPlaceholder": "请输入权限标识",
|
||||
"selectIconPlaceholder": "请选择菜单图标",
|
||||
"topLevel": "顶级",
|
||||
"menuShortName":"菜单短标题",
|
||||
"menuShortNamePlaceholder":"请输入菜单短标题"
|
||||
}
|
||||
"menuShortNamePlaceholder":"请输入菜单短标题",
|
||||
"addon":"选择应用",
|
||||
"system":"系统菜单",
|
||||
"application":"应用菜单"
|
||||
}
|
||||
|
||||
@ -1,12 +1,13 @@
|
||||
{
|
||||
"addRole": "新增角色",
|
||||
"updateRole": "编辑角色",
|
||||
"roleName": "角色名称",
|
||||
"roleDeleteTips": "确定要删除该角色吗?",
|
||||
"roleNamePlaceholder": "请输入角色名称",
|
||||
"system":"系统权限",
|
||||
"application":"应用权限",
|
||||
"rulesPlaceholder": "请选择权限",
|
||||
"checkStrictly": "父子级不关联",
|
||||
"permission": "权限",
|
||||
"foldText":"展开/折叠",
|
||||
"systemErr":"您还没有分配系统权限,请分配!",
|
||||
"applicationErr":"您还没有分配应用权限,请分配!"
|
||||
}
|
||||
"system": "系统菜单",
|
||||
"application": "应用菜单"
|
||||
}
|
||||
|
||||
@ -1,25 +0,0 @@
|
||||
{
|
||||
"menuName": "菜单名称",
|
||||
"menuType": "类型",
|
||||
"authId": "权限标识",
|
||||
"menuTypeDir": "目录",
|
||||
"menuTypeMenu": "菜单",
|
||||
"menuTypeButton": "按钮",
|
||||
"menuDeleteTips": "确定要删除该菜单吗?",
|
||||
"addMenu": "添加菜单",
|
||||
"updateMenu": "编辑菜单",
|
||||
"routePath": "路由路径",
|
||||
"viewPath": "组件路径",
|
||||
"parentMenu": "父级菜单",
|
||||
"menuIcon": "菜单图标",
|
||||
"sort":"权重",
|
||||
"menuKey":"菜单标识",
|
||||
"menuNamePlaceholder": "请输入菜单名称",
|
||||
"menuKeyPlaceholder": "请输入菜单标识",
|
||||
"menuKeyValidata":"菜单标识只能使用字母数字下划线并且开头不能为数字",
|
||||
"routePathPlaceholder": "请输入路由路径",
|
||||
"viewPathPlaceholder": "请输入组件路径",
|
||||
"authIdPlaceholder": "请输入权限标识",
|
||||
"selectIconPlaceholder": "请选择菜单图标",
|
||||
"topLevel": "顶级"
|
||||
}
|
||||
@ -19,5 +19,14 @@
|
||||
"statusLock":"锁定",
|
||||
"adminDisabled":"超级管理员不可编辑",
|
||||
"userUnlockTips":"确定要解锁该管理员吗?",
|
||||
"userLockTips":"确定要锁定该管理员吗?"
|
||||
"userLockTips":"确定要锁定该管理员吗?",
|
||||
"userType": "用户类型",
|
||||
"adminAdministrators": "平台管理员",
|
||||
"siteAdministrators": "站点管理员",
|
||||
"userTypePlaceholder": "请选择用户类型",
|
||||
"siteAdministratorsDisabled": "站点管理员不可编辑",
|
||||
"manager": "用户",
|
||||
"managerPlaceholder": "请选择用户",
|
||||
"managerTips": "选择或者新增用户作为管理员",
|
||||
"newAddManager": "新增用户"
|
||||
}
|
||||
@ -4,5 +4,6 @@
|
||||
"copy": "复制",
|
||||
"clickVisit": "点击访问",
|
||||
"PCDomainName": "pc域名",
|
||||
"newInfo": "最新消息"
|
||||
}
|
||||
"newInfo": "最新消息",
|
||||
"isOpen": "是否开启"
|
||||
}
|
||||
|
||||
@ -34,9 +34,9 @@
|
||||
"authTips": "上传代码需先绑定授权码,如果已有授权请先进行绑定,没有授权可到niucloud官网购买云服务之后再进行操作",
|
||||
"toBind": "绑定授权",
|
||||
"toNiucloud": "去niucloud官网",
|
||||
"failReason": "失败原因:",
|
||||
"failReason": "失败原因",
|
||||
"toSetting": "去配置",
|
||||
"cloudRelease": "一键云端发布",
|
||||
"localRelease": "本地发布",
|
||||
"localInsertTips": "请先将uni-app编译成微信小程序,然后使用微信开发者工具进行上传"
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,156 +0,0 @@
|
||||
{
|
||||
"developTitle": "开发环境配置",
|
||||
"wapDomain": "wap域名(WAP_DOMAIN)",
|
||||
"wapDomainPlaceholder": "请输入wap域名",
|
||||
"pageSet": "页面设置",
|
||||
"tabEditContent": "内容",
|
||||
"tabEditStyle": "样式",
|
||||
"pageStyle": "页面样式",
|
||||
"pageContent": "页面内容",
|
||||
"pageName": "页面名称",
|
||||
"pageNamePlaceholder": "请输入页面名称",
|
||||
"pageBgColor": "页面颜色",
|
||||
"bgUrl": "背景图片",
|
||||
"marginSet": "边距设置",
|
||||
"componentStyleTitle": "组件样式",
|
||||
"bottomBgColor": "底部背景",
|
||||
"bottomBgTips": "底部背景包含边距和圆角",
|
||||
"componentBgColor": "组件背景",
|
||||
"marginTop": "上边距",
|
||||
"marginBottom": "下边距",
|
||||
"marginBoth": "左右边距",
|
||||
"topRounded": "上圆角",
|
||||
"bottomRounded": "下圆角",
|
||||
"warmPrompt": "温馨提示",
|
||||
"leavePageTitleTips": "确定离开此页面?",
|
||||
"leavePageContentTips": "系统可能不会保存您所做的更改。",
|
||||
"decorating": "正在装修",
|
||||
"preview": "保存并预览",
|
||||
"moveUpComponent": "上移",
|
||||
"moveDownComponent": "下移",
|
||||
"copyComponent": "复制",
|
||||
"delComponent": "删除",
|
||||
"resetComponent": "重置",
|
||||
"tabbar": "底部导航",
|
||||
"tabbarSwitchTips": "此处控制当前页面底部导航菜单是否显示",
|
||||
"link": "链接地址",
|
||||
"delComponentTips": "确定要删除吗?",
|
||||
"notCopy": "无法复制",
|
||||
"componentCanOnlyAdd": "组件只能添加",
|
||||
"piece": "个",
|
||||
"resetComponentTips": "确认要重置组件默认数据吗?",
|
||||
"image": "图片上传",
|
||||
"imageUpload": "图片上传",
|
||||
"imageSet": "图片设置",
|
||||
"imageAdsTips": "建议上传尺寸相同的图片,推荐尺寸750*350",
|
||||
"addImageAd": "添加图片",
|
||||
"imageUrlTip": "请上传图片",
|
||||
"imageHeight": "图片高度",
|
||||
"imageHeightPlaceholder": "请输入图片高度",
|
||||
"imageHeightRegNum": "图片高度格式错误,请输入数字",
|
||||
"articleData": "文章数据",
|
||||
"articleStyle": "文章样式",
|
||||
"articleBgColor": "文章背景",
|
||||
"dataSources": "数据来源",
|
||||
"defaultSources": "默认",
|
||||
"manualSelectionSources": "手动选择",
|
||||
"articleNum": "文章数量",
|
||||
"selectPlaceholder": "请选择",
|
||||
"selectArticleTips": "文章选择",
|
||||
"articleTitle": "标题",
|
||||
"articleImage": "封面",
|
||||
"articleCategoryName": "栏目",
|
||||
"articleSummary": "摘要",
|
||||
"selected": "已选",
|
||||
"selectArticleTip": "请选择文章",
|
||||
"graphicNavModeTitle": "导航模式",
|
||||
"layoutMode": "排版模式",
|
||||
"layoutModeHorizontal": "横排",
|
||||
"layoutModeVertical": "竖排",
|
||||
"graphicNavSelectMode": "选择模式",
|
||||
"graphicNavModeGraphic": "图文导航",
|
||||
"graphicNavModeImg": "图片导航",
|
||||
"graphicNavModeText": "文字导航",
|
||||
"graphicNavImageSet": "图片设置",
|
||||
"graphicNavImageSize": "图片大小",
|
||||
"graphicNavAroundRadius": "图片圆角",
|
||||
"graphicNavShowStyle": "展示风格",
|
||||
"graphicNavStyleFixed": "固定显示",
|
||||
"graphicNavStyleSingleSlide": "单行滑动",
|
||||
"graphicNavStylePageSlide": "分页滑动",
|
||||
"graphicNavRowCount": "每行数量",
|
||||
"graphicNavPageCount": "每行数量",
|
||||
"graphicNavSetLabel": "导航设置",
|
||||
"line": "行",
|
||||
"graphicNavTips": "建议上传尺寸相同的图片,推荐尺寸60*60",
|
||||
"graphicNavTitle": "标题",
|
||||
"graphicNavTitlePlaceholder": "请输入标题",
|
||||
"subGraphicNavTitle": "副标题",
|
||||
"subGraphicNavTitlePlaceholder": "请输入副标题",
|
||||
"subGraphicNavTitleLink": "副标题链接",
|
||||
"addGraphicNav": "添加导航",
|
||||
"blankHeightSet": "高度设置",
|
||||
"blankHeight": "空白高度",
|
||||
"styleSet": "风格设置",
|
||||
"titleStyle": "标题样式",
|
||||
"selectStyle": "风格选择",
|
||||
"titleContent": "标题内容",
|
||||
"title": "标题名称",
|
||||
"titlePlaceholder": "请输入标题",
|
||||
"textAlign": "对齐方式",
|
||||
"textAlignLeft": "居左",
|
||||
"textAlignCenter": "居中",
|
||||
"textSet": "文字设置",
|
||||
"textFontSize": "文字大小",
|
||||
"textFontWeight": "文字粗细",
|
||||
"fontWeightBold": "加粗",
|
||||
"fontWeightNormal": "常规",
|
||||
"textColor": "文字颜色",
|
||||
"subTextColor": "副标题颜色",
|
||||
"subTitleContent": "标题内容",
|
||||
"subTitle": "副标题",
|
||||
"subTitlePlaceholder": "请输入副标题",
|
||||
"moreContent": "“更多”按钮内容",
|
||||
"more": "文字",
|
||||
"morePlaceholder": "请输入文字",
|
||||
"moreIsShow": "是否显示",
|
||||
"memberStyle": "会员样式",
|
||||
"template": "模板",
|
||||
"imageGap": "图片间隙",
|
||||
"rubikCubeStyle": "魔方样式",
|
||||
"rubikCubeLayout": "魔方布局",
|
||||
"hotArea": "热区",
|
||||
"hotAreaSet": "热区设置",
|
||||
"addHotArea": "添加热区",
|
||||
"selectedAfterHotArea": "个热区",
|
||||
"hotAreaManage": "热区管理",
|
||||
"selectedHotArea": "请选择热区",
|
||||
"hotAreaLink": "的链接地址",
|
||||
"addonListSet": "应用设置",
|
||||
"addonListTips": "应用选择",
|
||||
"selectAddonTips": "请选择应用",
|
||||
"addonTitle": "应用名称",
|
||||
"addonDesc": "应用描述",
|
||||
"addonIcon": "应用图标",
|
||||
"selectAddon": "选择应用",
|
||||
"addAddon": "添加应用",
|
||||
"travel": "旅游",
|
||||
"tickets": "门票",
|
||||
"hotel": "酒店",
|
||||
"travelNum": "线路数量",
|
||||
"ticketsNum": "景点数量",
|
||||
"hotelNum": "酒店数量",
|
||||
"serve": "项目",
|
||||
"serveNum": "项目数量",
|
||||
"card": "卡项",
|
||||
"cardNum": "卡项数量",
|
||||
"isSet": "会员设置",
|
||||
"isMemberCode": "会员码",
|
||||
"show": "显示",
|
||||
"hideen": "隐藏",
|
||||
"nicknameStyle": "昵称样式",
|
||||
"UIDStyle": "UID样式",
|
||||
"accountStyle": "积分/余额样式",
|
||||
"accountNumberColor": "数值颜色",
|
||||
"accountNumberWeight": "数值粗细"
|
||||
}
|
||||
@ -1,4 +1,7 @@
|
||||
{
|
||||
"templatePagePlaceholder": "选择模板",
|
||||
"templatePageEmpty": "无",
|
||||
"changeTemplatePageTips":"切换模板后,当前页面内容将被替换且不被保存,请谨慎操作",
|
||||
"developTitle": "开发环境配置",
|
||||
"wapDomain": "wap域名(WAP_DOMAIN)",
|
||||
"wapDomainPlaceholder": "请输入wap域名",
|
||||
@ -11,11 +14,18 @@
|
||||
"pageNamePlaceholder": "请输入页面名称",
|
||||
"pageBgColor": "页面颜色",
|
||||
"bgUrl": "背景图片",
|
||||
"bgHeightScale": "高度比例",
|
||||
"bgHeightScaleTip": "为0时背景高度自适应展示",
|
||||
"marginSet": "边距设置",
|
||||
"componentStyleTitle": "组件样式",
|
||||
"bottomBgColor": "底部背景",
|
||||
"bottomBgTips": "底部背景包含边距和圆角",
|
||||
"componentBgColor": "组件背景",
|
||||
"componentBgColor": "组件背景色",
|
||||
"componentBgUrl": "组件背景图",
|
||||
"componentBgAlpha": "透明度",
|
||||
"bgGradientAngle": "渐变角度",
|
||||
"topToBottom": "从上到下",
|
||||
"leftToRight": "从左到右",
|
||||
"marginTop": "上边距",
|
||||
"marginBottom": "下边距",
|
||||
"marginBoth": "左右边距",
|
||||
@ -38,6 +48,7 @@
|
||||
"notCopy": "无法复制",
|
||||
"componentCanOnlyAdd": "组件只能添加",
|
||||
"piece": "个",
|
||||
"componentNotMoved": "该组件禁止移动",
|
||||
"resetComponentTips": "确认要重置组件默认数据吗?",
|
||||
"image": "图片上传",
|
||||
"imageUpload": "图片上传",
|
||||
@ -48,21 +59,11 @@
|
||||
"imageHeight": "图片高度",
|
||||
"imageHeightPlaceholder": "请输入图片高度",
|
||||
"imageHeightRegNum": "图片高度格式错误,请输入数字",
|
||||
"articleData": "文章数据",
|
||||
"articleStyle": "文章样式",
|
||||
"articleBgColor": "文章背景",
|
||||
"dataSources": "数据来源",
|
||||
"defaultSources": "默认",
|
||||
"manualSelectionSources": "手动选择",
|
||||
"articleNum": "文章数量",
|
||||
"selectPlaceholder": "请选择",
|
||||
"selectArticleTips": "文章选择",
|
||||
"articleTitle": "标题",
|
||||
"articleImage": "封面",
|
||||
"articleCategoryName": "栏目",
|
||||
"articleSummary": "摘要",
|
||||
"selected": "已选",
|
||||
"selectArticleTip": "请选择文章",
|
||||
"graphicNavModeTitle": "导航模式",
|
||||
"layoutMode": "排版模式",
|
||||
"layoutModeHorizontal": "横排",
|
||||
@ -79,9 +80,10 @@
|
||||
"graphicNavStyleSingleSlide": "单行滑动",
|
||||
"graphicNavStylePageSlide": "分页滑动",
|
||||
"graphicNavRowCount": "每行数量",
|
||||
"graphicNavPageCount": "每行数量",
|
||||
"graphicNavPageCount": "显示方式",
|
||||
"graphicNavSetLabel": "导航设置",
|
||||
"line": "行",
|
||||
"singleLine": "单行",
|
||||
"multiline": "多行",
|
||||
"graphicNavTips": "建议上传尺寸相同的图片,推荐尺寸60*60",
|
||||
"graphicNavTitle": "标题",
|
||||
"graphicNavTitlePlaceholder": "请输入标题",
|
||||
@ -94,6 +96,7 @@
|
||||
"styleSet": "风格设置",
|
||||
"titleStyle": "标题样式",
|
||||
"selectStyle": "风格选择",
|
||||
"styleLabel": "风格",
|
||||
"titleContent": "标题内容",
|
||||
"title": "标题名称",
|
||||
"titlePlaceholder": "请输入标题",
|
||||
@ -106,7 +109,8 @@
|
||||
"fontWeightBold": "加粗",
|
||||
"fontWeightNormal": "常规",
|
||||
"textColor": "文字颜色",
|
||||
"subTextColor": "副标题颜色",
|
||||
"subTitleStyle": "副标题样式",
|
||||
"subTextBgColor": "背景色",
|
||||
"subTitleContent": "标题内容",
|
||||
"subTitle": "副标题",
|
||||
"subTitlePlaceholder": "请输入副标题",
|
||||
@ -136,25 +140,8 @@
|
||||
"addonIcon": "应用图标",
|
||||
"selectAddon": "选择应用",
|
||||
"addAddon": "添加应用",
|
||||
"travel": "旅游",
|
||||
"tickets": "门票",
|
||||
"hotel": "酒店",
|
||||
"travelNum": "线路数量",
|
||||
"ticketsNum": "景点数量",
|
||||
"hotelNum": "酒店数量",
|
||||
"serve": "项目",
|
||||
"serveNum": "项目数量",
|
||||
"card": "卡项",
|
||||
"cardNum": "卡项数量",
|
||||
"isSet": "会员设置",
|
||||
"isMemberCode": "会员码",
|
||||
"show": "显示",
|
||||
"hideen": "隐藏",
|
||||
"nicknameStyle": "昵称样式",
|
||||
"UIDStyle": "UID样式",
|
||||
"accountStyle": "积分/余额样式",
|
||||
"accountNumberColor": "数值颜色",
|
||||
"accountNumberWeight": "数值粗细",
|
||||
"hidden": "隐藏",
|
||||
"goodsCategoryTitle":"商品分类",
|
||||
"customGoods":"手动选择",
|
||||
"goodsNum":"商品数量",
|
||||
@ -162,28 +149,92 @@
|
||||
"categoryName": "分类名称",
|
||||
"categoryImage": "分类图片",
|
||||
"selectSource": "选择数据源",
|
||||
"goodsSelectPopupSelectGoodsButton": "选择商品",
|
||||
"goodsSelectPopupSelect": "已选",
|
||||
"goodsSelectPopupPiece": "个",
|
||||
"goodsSelectPopupSelectGoodsDialog": "商品选择",
|
||||
"goodsSelectPopupAllGoods": "全部商品",
|
||||
"goodsSelectPopupSelectedGoods": "已选商品",
|
||||
"goodsSelectPopupGoodsName": "商品名称",
|
||||
"goodsSelectPopupGoodsNamePlaceholder": "请输入商品名称",
|
||||
"goodsSelectPopupGoodsCategory": "商品分类",
|
||||
"goodsSelectPopupGoodsCategoryPlaceholder": "全部",
|
||||
"goodsSelectPopupGoodsType": "商品类型",
|
||||
"goodsSelectPopupGoodsTypePlaceholder": "请选择商品类型",
|
||||
"goodsSelectPopupGoodsInfo": "商品",
|
||||
"goodsSelectPopupPrice": "价格",
|
||||
"goodsSelectPopupStock": "库存",
|
||||
"goodsSelectPopupBeforeTip": "已选择",
|
||||
"goodsSelectPopupAfterTip": "个商品",
|
||||
"goodsSelectPopupClearGoods": "取消选择",
|
||||
"goodsSelectPopupGoodsMinTip": "所选商品数量不能少于",
|
||||
"goodsSelectPopupGoodsMaxTip": "所选商品数量不能超过",
|
||||
"confirm": "确定",
|
||||
"cancel": "取消"
|
||||
|
||||
|
||||
"richTextContentSet": "内容设置",
|
||||
"richTextPlaceholder": "请输入富文本内容",
|
||||
"activeCubeBlockContent": "板块内容",
|
||||
"activeCubeTitle": "标题",
|
||||
"activeCubeTitlePlaceholder": "请输入标题",
|
||||
"activeCubeSubTitle": "副标题",
|
||||
"activeCubeSubTitlePlaceholder": "请输入副标题",
|
||||
"activeCubeButton": "按钮",
|
||||
"activeCubeButtonPlaceholder": "请输入按钮文字",
|
||||
"activeCubeButtonColor": "按钮颜色",
|
||||
"activeListFrameColor": "框体颜色",
|
||||
"activeCubeSubTitleTextColor": "文字颜色",
|
||||
"activeCubeSubTitleBgColor": "背景颜色",
|
||||
"activeCubeAddItem": "添加一个板块",
|
||||
"activeCubeBlockStyle": "板块样式",
|
||||
"activeCubeBlockTextFontWeight": "标题粗细",
|
||||
"noticeStyle": "公告风格",
|
||||
"noticeType": "类型",
|
||||
"noticeTypeImg": "图片",
|
||||
"noticeTypeText": "文字",
|
||||
"noticeTypeTextPlaceholder": "请输入公告标题",
|
||||
"noticeTitle": "公告标题",
|
||||
"addNotice": "添加公告",
|
||||
"noticeText": "公告内容",
|
||||
"noticeScrollWay": "滚动方式",
|
||||
"noticeUpDown": "上下滚动",
|
||||
"noticeHorizontal": "横向滚动",
|
||||
"noticeShowType": "点击类型",
|
||||
"noticeShowPopUp": "弹出公告内容",
|
||||
"noticeShowLink": "跳转链接",
|
||||
"dragMouseAdjustOrder": "鼠标拖拽可调整顺序",
|
||||
"noticePlaceholderText": "请输入公告内容",
|
||||
"carouselSearchShowPosition": "显示设置",
|
||||
"carouselSearchOpen": "开启",
|
||||
"carouselSearchClose": "关闭",
|
||||
"carouselSearchBgGradient": "背景渐变",
|
||||
"carouselSearchShowWay": "展示方式",
|
||||
"carouselSearchShowWayStatic": "正常显示",
|
||||
"carouselSearchShowWayFixed": "滚动至顶部固定",
|
||||
"carouselSearchFixedBgColor": "置顶背景",
|
||||
"carouselSearchSet": "搜索设置",
|
||||
"carouselSearchText": "搜索内容",
|
||||
"carouselSearchHotWordSet": "搜索热词",
|
||||
"carouselSearchHotWordInterval": "显示时间 / 秒",
|
||||
"carouselSearchHotWordText": "内容",
|
||||
"carouselSearchHotWordTextPlaceholder": "请输入热词",
|
||||
"carouselSearchAddHotWordItem": "添加一个热词",
|
||||
"carouselSearchLogoTips": "建议尺寸,70px * 30px",
|
||||
"carouselSearchPlaceholder": "请输入搜索内容",
|
||||
"carouselSearchTabSet": "选项卡设置",
|
||||
"carouselSearchTabControl": "展示开关",
|
||||
"carouselSearchTabCategoryText": "分类名称",
|
||||
"carouselSearchTabCategoryTextPlaceholder": "请输入分类名称",
|
||||
"carouselSearchAddTabItem": "添加一个选项卡",
|
||||
"selectSourcesDiyPage": "选择微页面",
|
||||
"selectDiyPagePlaceholder": "请选择微页面",
|
||||
"diyPageTitle": "页面名称",
|
||||
"diyPageTypeName": "页面类型",
|
||||
"diyPageForAddon": "所属应用",
|
||||
"carouselSearchSwiperSet": "轮播图设置",
|
||||
"carouselSearchSwiperControl": "展示开关",
|
||||
"carouselSearchSwiperInterval": "切换间隔 / 秒",
|
||||
"carouselSearchSwiperTips": "建议上传尺寸相同的图片,推荐尺寸750*350;鼠标拖拽可调整图片顺序",
|
||||
"carouselSearchTabStyle": "选项卡样式",
|
||||
"noColor": "常规颜色",
|
||||
"selectColor": "选中颜色",
|
||||
"fixedNoColor": "下滑常规颜色",
|
||||
"fixedSelectColor": "下滑选中颜色",
|
||||
"carouselSearchSwiperIndicatorSet": "指示器设置",
|
||||
"carouselSearchSwiperIndicatorStyle": "指示器样式",
|
||||
"carouselSearchSwiperStyle": "轮播样式",
|
||||
"carouselSearchSwiperIndicatorStyle1": "样式1",
|
||||
"carouselSearchSwiperIndicatorStyle2": "样式2",
|
||||
"carouselSearchSwiperIndicatorAlign": "显示位置",
|
||||
"alignLeft": "居左",
|
||||
"alignCenter": "居中",
|
||||
"alignRight": "居右",
|
||||
"horzLineStyle": "线条风格",
|
||||
"horzLineStyleSolid": "实线",
|
||||
"horzLineStyleDashed": "虚线",
|
||||
"horzLineBorderColor": "线条颜色",
|
||||
"horzLineBorderWidth": "线条宽度",
|
||||
"floatBtnBtton": "按钮位置",
|
||||
"floatBtnOffset": "上下偏移",
|
||||
"floatBtnImageSet": "图片设置",
|
||||
"floatBtnImageSize": "图片大小",
|
||||
"floatBtnAroundRadius": "图片圆角",
|
||||
"floatBtnImageSuggest": "建议上传正方形图片"
|
||||
}
|
||||
@ -1,23 +1,12 @@
|
||||
{
|
||||
"decorate": "装修",
|
||||
"pageDecorate": "页面装修",
|
||||
"changeTemplate": "选择页面",
|
||||
"changePage": "切换",
|
||||
"templateName": "模板名称",
|
||||
"changePage": "设置",
|
||||
"preview": "预览",
|
||||
"hopeBeforeTip": "我希望把",
|
||||
"hopeAfterTip": "切换成其他页面",
|
||||
"changeTemplateTip": "选择",
|
||||
"template": "模板",
|
||||
"changeMyPageTip": "将 微页面 设为",
|
||||
"changeOtherPageTip": "将 其他页面 设为",
|
||||
"createPage": "创建微页面",
|
||||
"myPage": "我的微页面",
|
||||
"refreshPage": "刷新",
|
||||
"placeholderTemplate": "请选择一个模板",
|
||||
"placeholderMyPage": "请选择一个微页面",
|
||||
"placeholderOtherPage": "请选择一个页面",
|
||||
"developTitle": "开发环境配置",
|
||||
"wapDomain": "wap域名(WAP_DOMAIN)",
|
||||
"wapDomainPlaceholder": "请输入wap域名"
|
||||
}
|
||||
"wapDomainPlaceholder": "请输入wap域名",
|
||||
"settingTips": "点击查看如何配置",
|
||||
"link": "链接",
|
||||
"copy": "复制",
|
||||
"scanQRCodeOnRight": "扫描右侧二维码查看"
|
||||
}
|
||||
|
||||
@ -1,20 +1,16 @@
|
||||
{
|
||||
"title": "页面名称",
|
||||
"typeName": "页面模板",
|
||||
"templateName": "模板名称",
|
||||
"addType": "页面类型",
|
||||
"typeName": "页面类型",
|
||||
"forAddon": "所属应用",
|
||||
"addPageTips": "创建新页面",
|
||||
"pageTypePlaceholder": "请选择页面模板",
|
||||
"pageTypePlaceholder": "请选择页面类型",
|
||||
"nameMax": "名称不能超过12个字符",
|
||||
"emptyTemplate": "空模板",
|
||||
"status": "状态",
|
||||
"updateTime": "更新时间",
|
||||
"use": "使用",
|
||||
"isUse": "使用中",
|
||||
"unused": "未使用",
|
||||
"all": "全部",
|
||||
"basicRoute": "基础页面",
|
||||
"diyPage": "自定义页面",
|
||||
"wapUrl": "wap链接",
|
||||
"weappUrl": "小程序链接",
|
||||
"shareLink": "分享链接",
|
||||
@ -23,7 +19,7 @@
|
||||
"titlePlaceholder": "请输入页面名称",
|
||||
"addDiyPage": "添加页面",
|
||||
"diyPageDeleteTips": "确定要删除该自定义页面吗?",
|
||||
"promote": "推广",
|
||||
"preview": "预览",
|
||||
"share": "分享",
|
||||
"shareSet": "分享设置",
|
||||
"sharePage": "分享页面",
|
||||
|
||||
13
admin/src/app/lang/zh-cn/diy.member.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"decorate": "装修",
|
||||
"changePage": "设置",
|
||||
"preview": "预览",
|
||||
"pageSelectTips": "页面选择",
|
||||
"developTitle": "开发环境配置",
|
||||
"wapDomain": "wap域名(WAP_DOMAIN)",
|
||||
"wapDomainPlaceholder": "请输入wap域名",
|
||||
"settingTips": "点击查看如何配置",
|
||||
"link": "链接",
|
||||
"copy": "复制",
|
||||
"scanQRCodeOnRight": "扫描右侧二维码查看"
|
||||
}
|
||||
@ -1,29 +1,13 @@
|
||||
{
|
||||
"title": "页面名称",
|
||||
"forAddon": "所属插件",
|
||||
"typeName": "页面模板",
|
||||
"addPageTips": "创建新页面",
|
||||
"pageTemplatePlaceholder": "请选择页面模板",
|
||||
"nameMax": "名称不能超过12个字符",
|
||||
"templateName": "模板名称",
|
||||
"empty": "空白",
|
||||
"status": "状态",
|
||||
"updateTime": "更新时间",
|
||||
"use": "使用",
|
||||
"isUse": "使用中",
|
||||
"unused": "未使用",
|
||||
"all": "全部",
|
||||
"basicRoute": "基础页面",
|
||||
"diyPage": "自定义页面",
|
||||
"wapUrl": "wap链接",
|
||||
"weappUrl": "小程序链接",
|
||||
"shareLink": "分享链接",
|
||||
"copy": "复制",
|
||||
"copySuccess": "复制成功",
|
||||
"titlePlaceholder": "请输入页面名称",
|
||||
"addDiyPage": "添加页面",
|
||||
"diyPageDeleteTips": "确定要删除该自定义页面吗?",
|
||||
"promote": "推广",
|
||||
"share": "分享",
|
||||
"shareSet": "分享设置",
|
||||
"sharePage": "分享页面",
|
||||
|
||||
@ -1,55 +1,4 @@
|
||||
{
|
||||
"title":"页面名称",
|
||||
"name":"页面标识",
|
||||
"type":"页面模板",
|
||||
"value":"页面数据,json格式",
|
||||
"isDefault":"是否默认页面,1:是,0:否",
|
||||
"visitCount":"访问量",
|
||||
"titlePlaceholder":"请输入页面名称",
|
||||
"namePlaceholder":"请输入页面标识",
|
||||
"typePlaceholder":"请输入页面模板",
|
||||
"valuePlaceholder":"请输入页面数据,json格式",
|
||||
"isDefaultPlaceholder":"请输入是否默认页面,1:是,0:否",
|
||||
"visitCountPlaceholder":"请输入访问量",
|
||||
"createTimePlaceholder":"请输入创建时间",
|
||||
"updateTimePlaceholder":"请输入更新时间",
|
||||
"addDiyPage":"添加自定义页面",
|
||||
"updateDiyPage":"编辑自定义页面",
|
||||
"diyPageDeleteTips":"确定要删除该自定义页面吗?",
|
||||
"leastTwoNav":"至少添加2个导航",
|
||||
"pleaseUpload":"请上传第[",
|
||||
"pleaseEnter":"请输入第[",
|
||||
"pleaseChoose":"请选择第[",
|
||||
"navIcon":"]个图标",
|
||||
"navSelectIcon":"]个选中图标",
|
||||
"navTitle":"]个导航标题",
|
||||
"navLink":"]个导航链接",
|
||||
"backgroundColor":"背景颜色",
|
||||
"imageText":"图文",
|
||||
"image":"图片",
|
||||
"text":"文字",
|
||||
"textColor":"文字颜色",
|
||||
"textSelectColor":"文字选中颜色",
|
||||
"reset":"重置",
|
||||
"navType":"导航类型",
|
||||
"styleSet":"样式设置",
|
||||
"addnav":"添加导航",
|
||||
"linkPlaceholder":"请选择链接",
|
||||
"navLinkOne":"导航链接",
|
||||
"navTitleOne":"导航标题",
|
||||
"titleContent":"请输入标题内容",
|
||||
"navIconOne":"导航图标",
|
||||
"navImage":"导航图片",
|
||||
"bottomNav":"底部导航",
|
||||
"bottomNavHint":"设置至少添加2个导航,最多添加5个导航",
|
||||
"selectLinkTips":"选择链接",
|
||||
"selectLinkConfirm":"确定",
|
||||
"uploadImgUnselected":"未选中",
|
||||
"uploadImgSelected":"选中"
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
"title": "插件名称",
|
||||
"key": "插件标识"
|
||||
}
|
||||
30
admin/src/app/lang/zh-cn/diy.tabbar_edit.json
Normal file
@ -0,0 +1,30 @@
|
||||
{
|
||||
"leastTwoNav": "至少添加2个导航",
|
||||
"pleaseUpload": "请上传第[",
|
||||
"pleaseEnter": "请输入第[",
|
||||
"pleaseChoose": "请选择第[",
|
||||
"navIcon": "]个图标",
|
||||
"navSelectIcon": "]个选中图标",
|
||||
"navTitle": "]个导航标题",
|
||||
"navLink": "]个导航链接",
|
||||
"backgroundColor": "背景颜色",
|
||||
"imageText": "图文",
|
||||
"image": "图片",
|
||||
"text": "文字",
|
||||
"textColor": "文字颜色",
|
||||
"textSelectColor": "文字选中颜色",
|
||||
"reset": "重置",
|
||||
"navType": "导航类型",
|
||||
"styleSet": "样式设置",
|
||||
"addnav": "添加导航",
|
||||
"navLinkOne": "导航链接",
|
||||
"navTitleOne": "导航标题",
|
||||
"titleContent": "请输入标题内容",
|
||||
"navIconOne": "导航图标",
|
||||
"navImage": "导航图片",
|
||||
"editing": "正在编辑",
|
||||
"bottomNav": "底部导航",
|
||||
"bottomNavHint": "设置至少添加2个导航,最多添加5个导航",
|
||||
"uploadImgUnselected": "未选中",
|
||||
"uploadImgSelected": "选中"
|
||||
}
|
||||
@ -1,27 +1,27 @@
|
||||
{
|
||||
"id": "主键",
|
||||
"accountDetail": "账单详情",
|
||||
"detail": "详情",
|
||||
"type": "账单类型",
|
||||
"money": "账单金额",
|
||||
"moneyPlaceholder": "请输入账单金额",
|
||||
"tradeNo": "账单编号",
|
||||
"tradeNoPlaceholder": "请输入账单编号",
|
||||
"createTime": "账单日期",
|
||||
"totalPay": "累计收款(元)",
|
||||
"totalRefund": "累计退款(元)",
|
||||
"totalTransfer": "累计转账(元)",
|
||||
"accountType": "请选择退款类型",
|
||||
"startDate": "开始时间",
|
||||
"endDate": "结束时间",
|
||||
"transferNo": "转账单号",
|
||||
"transferTime": "转账时间",
|
||||
"transferType": "转账类型",
|
||||
"transferMoney": "转账金额",
|
||||
"transferRemark": "转账说明",
|
||||
"outTradeNo": "单号",
|
||||
"refundMoney": "退款金额",
|
||||
"failReason": "退款说明",
|
||||
"body": "说明",
|
||||
"payType": "支付方式"
|
||||
}
|
||||
"id":"主键",
|
||||
"accountDetail":"账单详情",
|
||||
"detail":"详情",
|
||||
"type":"账单类型",
|
||||
"money":"账单金额",
|
||||
"moneyPlaceholder":"请输入账单金额",
|
||||
"tradeNo":"账单编号",
|
||||
"tradeNoPlaceholder":"请输入账单编号",
|
||||
"createTime":"账单日期",
|
||||
"totalPay":"累计收款(元)",
|
||||
"totalRefund":"累计退款(元)",
|
||||
"totalTransfer":"累计转账(元)",
|
||||
"accountType": "请选择账单类型",
|
||||
"startDate": "开始时间",
|
||||
"endDate": "结束时间",
|
||||
"transferNo" : "转账单号",
|
||||
"transferTime": "转账时间",
|
||||
"transferType": "转账类型",
|
||||
"transferMoney": "转账金额",
|
||||
"transferRemark": "转账说明",
|
||||
"outTradeNo": "单号",
|
||||
"refundMoney": "退款金额",
|
||||
"failReason": "退款说明",
|
||||
"body": "说明",
|
||||
"all": "全部"
|
||||
}
|
||||
|
||||
@ -43,13 +43,6 @@
|
||||
"transferTime": "转账时间",
|
||||
"memberInfoPlaceholder":"请输入会员名称/会员昵称/手机号",
|
||||
"cashOutNumber": "提现单号",
|
||||
"cashOutNumberPlaceholder": "请输入提现单号",
|
||||
"cashOutMethodType": "账户类型",
|
||||
"money": "提现金额",
|
||||
"transferAccount": "收款账号",
|
||||
"refuseReason": "拒绝理由",
|
||||
"transferTypeName": "转账方式名称",
|
||||
"transferVoucher": "支付凭证",
|
||||
"close": "关闭"
|
||||
"cashOutNumberPlaceholder": "请输入提现单号"
|
||||
|
||||
}
|
||||
|
||||
@ -1,5 +1,4 @@
|
||||
{
|
||||
"changeApp": "切换应用",
|
||||
"dataSummarize": "数据概况",
|
||||
"todayData": "今日数据",
|
||||
"memberNumb": "新增会员数",
|
||||
@ -10,14 +9,14 @@
|
||||
"articleList": "文章列表",
|
||||
"memberManagement": "会员管理",
|
||||
"balanceAccount": "余额账户",
|
||||
"administrator": "管理员",
|
||||
"administrator": "站点用户",
|
||||
"WebDecoration": "网站装修",
|
||||
"accessMessage": "访问消息",
|
||||
"memberDistribution": "会员分布",
|
||||
"systemInfo": "系统环境",
|
||||
"os": "操作系统",
|
||||
"phpVersions": "PHP版本号",
|
||||
"productionEnvironment": "生产环境",
|
||||
"os": "操作系统:",
|
||||
"phpVersions": "PHP版本号:",
|
||||
"productionEnvironment": "生产环境:",
|
||||
"versionsInfo": "版本信息",
|
||||
"versions": "当前版本",
|
||||
"frame": "基于框架",
|
||||
@ -47,6 +46,6 @@
|
||||
"officialAccountDesc": "微信扫码关注",
|
||||
"WeCom": "客服二维码",
|
||||
"WeComDesc": "扫码联系客服",
|
||||
"tel": "服务热线:"
|
||||
|
||||
}
|
||||
"tel": "服务热线:",
|
||||
"newVersion": "最新版本"
|
||||
}
|
||||
|
||||
@ -1,7 +0,0 @@
|
||||
{
|
||||
"app":"应用",
|
||||
"descriptionLeft":"暂无安装任何应用或插件,马上去",
|
||||
"link":"官方应用市场",
|
||||
"descriptionRight":"逛逛",
|
||||
"installApp":"安装应用"
|
||||
}
|
||||
@ -1,67 +0,0 @@
|
||||
{
|
||||
"todayData": "实时概况",
|
||||
"memberNumb": "新增会员数(人)",
|
||||
"orderMoney": "订单金额(元)",
|
||||
"numberOfSites": "站点数量",
|
||||
"numberOfVisitors": "今日访客数(人)",
|
||||
"commonlyUsedFunction": "常用功能",
|
||||
"articleList": "文章列表",
|
||||
"memberManagement": "会员管理",
|
||||
"balanceAccount": "余额账户",
|
||||
"administrator": "管理员",
|
||||
"WebDecoration": "网站装修",
|
||||
"accessMessage": "访问消息",
|
||||
"memberDistribution": "会员分布",
|
||||
"systemInfo": "系统环境",
|
||||
"os": "操作系统",
|
||||
"phpVersions": "PHP版本号",
|
||||
"productionEnvironment": "生产环境",
|
||||
"versionsInfo": "版本信息",
|
||||
"versions": "当前版本",
|
||||
"frame": "基于框架",
|
||||
"channel": "获取渠道",
|
||||
"serviceSupport": "服务支持",
|
||||
"officialWbsite": "官网",
|
||||
"pageView": "访客数(人)",
|
||||
"siteInfo":"站点信息",
|
||||
"siteName":"站点名称",
|
||||
"groupName":"站点套餐",
|
||||
"expireTime":"过期时间",
|
||||
"permanent":"永久",
|
||||
"statusName":"站点状态",
|
||||
"orderNumber": "订单数(笔)",
|
||||
"wechatCode": "公众号二维码",
|
||||
"wechatCodeDesc": "微信扫码关注",
|
||||
"enterpriseWechatCode": "客服二维码",
|
||||
"enterpriseWechatCodeDesc": "扫码联系客服",
|
||||
"tel": "服务热线:",
|
||||
"message": "请联系客服",
|
||||
"messageTitle": "提示",
|
||||
"accumulative":"累计",
|
||||
"officialAccount": "Niucloud官方公众号",
|
||||
"officialAccountDesc": "微信扫码关注",
|
||||
"WeCom": "添加企业微信群",
|
||||
"path": "地址",
|
||||
"menuName": "名称",
|
||||
"menuNamePlaceholder": "模版名称",
|
||||
"menuBgColor": "背景颜色",
|
||||
"menuImg": "选择图标",
|
||||
"menuDesc": "描述",
|
||||
"addShortcutMenu": "添加快捷模版",
|
||||
"appTemplate": "应用模块",
|
||||
"siteType": "站点类型",
|
||||
"periodTime": "有效期",
|
||||
"renew": "续费",
|
||||
"selectModel": "选择模块",
|
||||
"addMenu": "添加模块",
|
||||
"shortcutLink": "模版",
|
||||
"emptyMenu": "暂无快捷模块",
|
||||
"select": "选择",
|
||||
"custom": "自定义",
|
||||
"accessSite": "访问站点",
|
||||
"pathSelect": "选择模块",
|
||||
"bgColorPlaceholder": "请选择背景色",
|
||||
"iconPlaceholder": "请选择图标",
|
||||
"pathPlaceholder": "请选择链接",
|
||||
"descPlaceholder": "输入描述语…"
|
||||
}
|
||||
@ -54,6 +54,7 @@
|
||||
"toBind": "绑定授权",
|
||||
"toNiucloud": "去niucloud官网",
|
||||
"descriptionLeft": "暂无任何应用,马上去",
|
||||
"buyDescriptionLeft": "您还没有购买过应用,马上去",
|
||||
"link": "官方应用市场",
|
||||
"descriptionRight": "逛逛",
|
||||
"installed-empty": "暂未安装任何应用",
|
||||
@ -66,5 +67,9 @@
|
||||
"addonUninstall": "插件卸载",
|
||||
"appIdentification":"应用标识",
|
||||
"tipText":"标识指开发应用或插件的文件夹名称",
|
||||
"uninstallTips": "卸载插件将会移除admin web uni-app目录下该插件的内容,是否要继续进行卸载?"
|
||||
}
|
||||
"uninstallTips": "卸载插件将会移除admin web uni-app目录下该插件的内容,是否要继续进行卸载?",
|
||||
"upgrade": "升级",
|
||||
"newVersion": "最新版本",
|
||||
"cloudBuild": "云编译",
|
||||
"cloudBuildTips": "是否要进行云编译该操作可能会影响到正在访问的客户是否要继续操作?"
|
||||
}
|
||||
|
||||
@ -1,5 +1,5 @@
|
||||
{
|
||||
"siteTitle": "NIUCLOUD-ADMIN",
|
||||
"siteTitle": "NIUSHOP开源商城",
|
||||
"siteDesc": "基于thinkphp6+elementplus+typescript等技术的多端saas通用管理框架,采用restful的api接口设计,前后端完全分离,同时支持多语言开发。",
|
||||
"logging": "登录中",
|
||||
"platform": "管理端",
|
||||
@ -9,4 +9,4 @@
|
||||
"userPlaceholder": "请输入您的账号",
|
||||
"passwordPlaceholder": "请输入您的密码",
|
||||
"manageAdminFramework": "管理系统后台框架"
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,7 +1,9 @@
|
||||
{
|
||||
"siteId":"站点id",
|
||||
"labelName":"标签名称",
|
||||
"memo":"备注",
|
||||
"sort":"排序",
|
||||
"siteIdPlaceholder":"请输入站点id",
|
||||
"labelNamePlaceholder":"请输入标签名称",
|
||||
"memoPlaceholder":"请输入备注",
|
||||
"sortPlaceholder":"请输入排序",
|
||||
|
||||
@ -3,6 +3,7 @@
|
||||
"memberNumber":"会员数量",
|
||||
"memo":"备注",
|
||||
"sort":"排序",
|
||||
"siteIdPlaceholder":"请输入站点id",
|
||||
"labelNamePlaceholder":"请输入标签名称",
|
||||
"memoPlaceholder":"请输入备注",
|
||||
"sortPlaceholder":"请输入排序",
|
||||
|
||||
@ -1,13 +1,13 @@
|
||||
{
|
||||
"registerChannel":"注册来源",
|
||||
"nickname":"会员名称",
|
||||
"nickname":"会员昵称",
|
||||
"memberNo":"会员编号",
|
||||
"mobile":"手机号",
|
||||
"createTime":"注册时间",
|
||||
"lastVisitTime":"最后访问时间",
|
||||
"addMember":"添加会员",
|
||||
"updateMember":"编辑会员",
|
||||
"nickNamePlaceholder":"请输入会员名称",
|
||||
"nickNamePlaceholder":"请输入会员昵称",
|
||||
"mobilePlaceholder":"请输入手机号",
|
||||
"channelPlaceholder":"请选择注册类型",
|
||||
"memberNoPlaceholder":"请选择会员编号",
|
||||
|
||||
@ -34,7 +34,7 @@
|
||||
"essentialInfo": "基本信息",
|
||||
"accountInfo": "账户信息",
|
||||
"urserName": "用户名",
|
||||
"nickname":"会员名称",
|
||||
"nickname":"会员昵称",
|
||||
"registeredSource": "注册来源",
|
||||
"lastVisitTime":"最后登录时间",
|
||||
"point": "积分",
|
||||
|
||||
19
admin/src/app/lang/zh-cn/order.recharge.detail.json
Normal file
@ -0,0 +1,19 @@
|
||||
{
|
||||
"orderInfo":"订单详情",
|
||||
"orderDiscountMoney":"优惠金额",
|
||||
"ip":"下单IP",
|
||||
"payTime":"支付时间",
|
||||
"remark":"商家留言",
|
||||
"memberMessage":"买家留言",
|
||||
"orderNo":"订单编号",
|
||||
"orderStatus":"订单状态",
|
||||
"orderNoPlaceholder":"请输入订单编号",
|
||||
"createTime":"创建时间",
|
||||
"rechargeMoney":"充值金额",
|
||||
"orderMoney":"订单金额",
|
||||
"member":"买家",
|
||||
"orderFromName":"订单来源",
|
||||
"payTypeName":"支付方式",
|
||||
"startDate":"开始时间",
|
||||
"endDate":"结束时间"
|
||||
}
|
||||
23
admin/src/app/lang/zh-cn/order.recharge.list.json
Normal file
@ -0,0 +1,23 @@
|
||||
{
|
||||
"totalRechargeRefundMoney":"充值退款(元)",
|
||||
"totalRechargeMoney":"充值金额(元)",
|
||||
"rechargeRefundMoney":"充值退款",
|
||||
"rechargeNo":"充值单号",
|
||||
"orderStatus":"订单状态",
|
||||
"rechargeNoPlaceholder":"请输入充值单号",
|
||||
"createTime":"充值时间",
|
||||
"rechargeMoney":"充值金额",
|
||||
"orderMoney":"订单金额",
|
||||
"member":"会员信息",
|
||||
"orderFromName":"订单来源",
|
||||
"payTypeName":"支付方式",
|
||||
"startDate":"开始时间",
|
||||
"endDate":"结束时间",
|
||||
"namePlaceholder":"请选择",
|
||||
"refundBtn":"退款",
|
||||
"refundContent":"是否确认退款",
|
||||
"payTime": "支付时间",
|
||||
"refundStatus": "退款状态",
|
||||
"startMoney": "起始金额",
|
||||
"endMoney": "结束金额"
|
||||
}
|
||||
24
admin/src/app/lang/zh-cn/order.recharge.refund.json
Normal file
@ -0,0 +1,24 @@
|
||||
{
|
||||
"refundNumber":"退款单号",
|
||||
"userInfo":"用户信息",
|
||||
"sourceNumber":"来源单号",
|
||||
"refundAmount":"退款金额",
|
||||
"refundTime":"退款时间",
|
||||
"detail": "详情",
|
||||
"statusName": "状态",
|
||||
"memberInfo": "会员信息",
|
||||
"refundSource": "退款来源",
|
||||
"startDate":"开始时间",
|
||||
"endDate":"结束时间",
|
||||
"refundStatus": "退款状态",
|
||||
"accumulateRefundMoney": "累计退款金额(元)",
|
||||
"haveRefundMoney": "退款中金额(元)",
|
||||
"refundSuccessMonry": "退款成功金额(元)",
|
||||
"refundFailMoney": "退款失败金额(元)",
|
||||
"memberInfoPlaceholder":"请输入会员编号/昵称/手机号",
|
||||
"refundNumberPlaceholder":"请输入退款单号",
|
||||
"orderNumber": "来源单号",
|
||||
"orderNumberPlaceholder": "请输入来源单号",
|
||||
"refundDetail": "退款详情",
|
||||
"nickname": "会员昵称"
|
||||
}
|
||||
5
admin/src/app/lang/zh-cn/setting.developer_token.json
Normal file
@ -0,0 +1,5 @@
|
||||
{
|
||||
"developerTokenEdit":"开发者KEY设置",
|
||||
"tokenPlaceholder":"请输入开发者令牌",
|
||||
"tokenTips": "开发者KEY可以在已安装的框架中设置。框架安装并配置好开发者KEY后,开发者自己开发的应用和插件,会像普通授权插件一样可以安装使用,特别是当开发者发布自己开发的插件或应用时,尚在未发布状态时,开发者也可以对其进行安装测试"
|
||||
}
|
||||
4
admin/src/app/lang/zh-cn/setting.map.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"clickTutorial": "查看教程",
|
||||
"clickSecretKey": "获取密钥"
|
||||
}
|
||||
@ -1,6 +1,6 @@
|
||||
{
|
||||
"buyerNotice": "会员消息",
|
||||
"sellerNotice":"平台消息",
|
||||
"sellerNotice":"商家消息",
|
||||
"sms":"短信",
|
||||
"weapp":"微信小程序",
|
||||
"wechat":"微信公众号",
|
||||
@ -18,5 +18,6 @@
|
||||
"weappTempKey" : "模板编号",
|
||||
"smsId":"短信模版ID",
|
||||
"smsIdPlaceholder":"短信模版ID",
|
||||
"noticeType":"消息类型"
|
||||
}
|
||||
"noticeType":"消息类型",
|
||||
"addon": "所属应用"
|
||||
}
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
{
|
||||
"siteId":"站点id",
|
||||
"noticeKey":"消息模板",
|
||||
"noticeType":"消息类型",
|
||||
"noticeInfo":"消息详情",
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
{
|
||||
"siteId":"站点id",
|
||||
"noticeKey":"消息模板",
|
||||
"noticeType":"消息类型",
|
||||
"noticeInfo":"消息详情",
|
||||
@ -16,8 +17,6 @@
|
||||
"sms":"短信",
|
||||
"weapp":"微信小程序",
|
||||
"wechat":"微信公众号",
|
||||
"aliyun":"阿里云",
|
||||
"statusName":"发送状态",
|
||||
"noticeTypePlaceholder":"请选择消息类型",
|
||||
"uidPlaceholder":"请输入通知的用户id",
|
||||
"memberIdPlaceholder":"请输入消息的会员id",
|
||||
|
||||
@ -1,7 +1,7 @@
|
||||
{
|
||||
"websiteInfo":"后台设置",
|
||||
"contactAddress":"联系地址",
|
||||
"siteName": "网站设置",
|
||||
"siteName": "站点名称",
|
||||
"keywords": "网站关键字",
|
||||
"logo": "长方形Logo",
|
||||
"desc": "网站简介",
|
||||
|
||||
@ -131,6 +131,13 @@
|
||||
"setUp":"设置",
|
||||
"dictType":"数据字典",
|
||||
"dictTypePlaceholder":"请选择数据字典",
|
||||
"dictTypePlaceholder1":"部分字段未选择数据字典"
|
||||
"dictTypePlaceholder1":"部分字段未选择数据字典",
|
||||
"remotePullDown": "远程下拉",
|
||||
"remotePullDownValue":"远程下拉value字段",
|
||||
"remotePullDownValuePlaceholder":"请选择远程下拉value字段",
|
||||
"remotePullDownLabel":"远程下拉标题字段",
|
||||
"remotePullDownLabelPlaceholder":"请选择远程下拉label字段",
|
||||
"selectType":"下拉类型"
|
||||
|
||||
|
||||
}
|
||||