mirror of
https://github.com/nsnail/NetAdmin.git
synced 2025-04-20 05:02:50 +08:00
parent
6100e9e9c8
commit
1442e0a37c
@ -68,7 +68,7 @@
|
||||
}
|
||||
|
||||
.app-loading__title {
|
||||
font-family: 'Lucida Console', 'Microsoft YaHei', 'monospace';
|
||||
font-family: 'Arial', 'Microsoft YaHei', 'monospace';
|
||||
font-size: 24px;
|
||||
color: #333;
|
||||
margin-top: 30px;
|
||||
|
@ -1,5 +1,11 @@
|
||||
<template>
|
||||
<el-button :disabled="vue.selection.length === 0" :loading="loading" @click="batchDel" icon="el-icon-delete" plain type="danger"></el-button>
|
||||
<el-button
|
||||
:disabled="vue.selection.length === 0 || loading"
|
||||
:loading="loading"
|
||||
@click="bulkDel"
|
||||
icon="el-icon-delete"
|
||||
plain
|
||||
type="danger"></el-button>
|
||||
</template>
|
||||
<style scoped></style>
|
||||
<script>
|
||||
@ -17,17 +23,17 @@ export default {
|
||||
computed: {},
|
||||
methods: {
|
||||
//批量删除
|
||||
async batchDel() {
|
||||
async bulkDel() {
|
||||
this.loading = true
|
||||
try {
|
||||
await this.$confirm(`确定删除选中的 ${this.vue.selection.length} 项吗?`, '提示', {
|
||||
await this.$confirm(this.$t('确定删除选中的 {count} 项吗?', { count: this.vue.selection.length }), this.$t('提示'), {
|
||||
type: 'warning',
|
||||
})
|
||||
const res = await this.api.post({
|
||||
items: this.vue.selection,
|
||||
})
|
||||
this.vue.$refs.table.refresh()
|
||||
this.$message.success(`删除 ${res.data} 项`)
|
||||
this.$message.success(this.$t('删除 {count} 项', { count: res.data }))
|
||||
} catch {
|
||||
//
|
||||
}
|
@ -3,7 +3,11 @@
|
||||
<template #default="scope">
|
||||
<el-button-group>
|
||||
<template v-for="(item, i) in buttons?.filter((x) => !x.condition || x.condition(scope))" :key="i">
|
||||
<el-popconfirm v-if="item.confirm" :title="`确定${item.title}?`" @confirm="item.click(scope.row, vue)" width="200">
|
||||
<el-popconfirm
|
||||
v-if="item.confirm"
|
||||
:title="this.$t(`确定 {title}?`, { title: item.title })"
|
||||
@confirm="item.click(scope.row, vue)"
|
||||
width="20rem">
|
||||
<template #reference>
|
||||
<el-button :icon="item.icon" :title="item.title" :type="item.type" @click.native.stop size="small"></el-button>
|
||||
</template>
|
||||
|
@ -19,11 +19,17 @@
|
||||
oninput="value=value.replace(/\D/g,'')"
|
||||
prefix-icon="el-icon-message"></el-input>
|
||||
<el-button :disabled="sendDisabled" @click="getYzm"
|
||||
>获取验证码<span v-if="sendDisabled"> ({{ waitSecs }})</span></el-button
|
||||
>{{ $t('获取验证码') }}<span v-if="sendDisabled"> ({{ waitSecs }})</span></el-button
|
||||
>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<na-verify :imgSize="{ width: '310px', height: '155px' }" @success="captchaSuccess" captchaType="blockPuzzle" mode="pop" ref="verify"></na-verify>
|
||||
<na-verify
|
||||
:explain="$t('向右滑动完成验证')"
|
||||
:imgSize="{ width: '310px', height: '155px' }"
|
||||
@success="captchaSuccess"
|
||||
captchaType="blockPuzzle"
|
||||
mode="pop"
|
||||
ref="verify"></na-verify>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@ -35,7 +41,7 @@ export default {
|
||||
modelValue: { type: Object },
|
||||
vue: { type: Object },
|
||||
formName: { type: String },
|
||||
emailPlaceHolder: { type: String, default: '邮箱地址' },
|
||||
emailPlaceHolder: { type: String },
|
||||
emailField: { type: Object },
|
||||
codeField: { type: Object },
|
||||
emailLabel: { type: String },
|
||||
@ -80,7 +86,7 @@ export default {
|
||||
deviceType: 'email',
|
||||
verifyCaptchaReq: obj,
|
||||
})
|
||||
this.$message.success('发送成功')
|
||||
this.$message.success(this.$t('发送成功'))
|
||||
this.waitSecs = 60
|
||||
const t = setInterval(() => {
|
||||
this.waitSecs -= 1
|
||||
|
@ -19,12 +19,19 @@
|
||||
maxlength="4"
|
||||
oninput="value=value.replace(/\D/g,'')"
|
||||
prefix-icon="el-icon-message"></el-input>
|
||||
<el-button :disabled="sendDisabled" @click="getYzm"
|
||||
>获取验证码<span v-if="sendDisabled"> ({{ waitSecs }})</span></el-button
|
||||
<el-button :disabled="sendDisabled" @click="getYzm">
|
||||
{{ $t('获取验证码') }}
|
||||
<span v-if="sendDisabled"> ({{ waitSecs }})</span></el-button
|
||||
>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<na-verify :imgSize="{ width: '310px', height: '155px' }" @success="captchaSuccess" captchaType="blockPuzzle" mode="pop" ref="verify"></na-verify>
|
||||
<na-verify
|
||||
:explain="$t('向右滑动完成验证')"
|
||||
:imgSize="{ width: '310px', height: '155px' }"
|
||||
@success="captchaSuccess"
|
||||
captchaType="blockPuzzle"
|
||||
mode="pop"
|
||||
ref="verify"></na-verify>
|
||||
</template>
|
||||
|
||||
<script>
|
||||
@ -36,7 +43,7 @@ export default {
|
||||
modelValue: { type: Object },
|
||||
vue: { type: Object },
|
||||
formName: { type: String },
|
||||
phonePlaceHolder: { type: String, default: '手机号码' },
|
||||
phonePlaceHolder: { type: String },
|
||||
phoneField: { type: Object },
|
||||
codeField: { type: Object },
|
||||
phoneLabel: { type: String },
|
||||
@ -81,7 +88,7 @@ export default {
|
||||
deviceType: 'mobile',
|
||||
verifyCaptchaReq: obj,
|
||||
})
|
||||
this.$message.success('发送成功')
|
||||
this.$message.success(this.$t('发送成功'))
|
||||
this.waitSecs = 60
|
||||
const t = setInterval(() => {
|
||||
this.waitSecs -= 1
|
||||
|
@ -60,10 +60,10 @@
|
||||
|
||||
<el-badge :hidden="vue.query.dynamicFilter.filters.length === 0" :value="vue.query.dynamicFilter.filters.length">
|
||||
<el-button-group>
|
||||
<el-button @click="search" icon="el-icon-search" type="primary">查询</el-button>
|
||||
<el-button @click="search" icon="el-icon-search" type="primary">{{ $t('查询') }}</el-button>
|
||||
<el-popover :title="$t('已应用的查询条件')" placement="bottom-end" trigger="hover" width="40rem">
|
||||
<template #reference>
|
||||
<el-button @click="reset" icon="el-icon-refresh-left">重置</el-button>
|
||||
<el-button @click="reset" icon="el-icon-refresh-left">{{ $t('重置') }}</el-button>
|
||||
</template>
|
||||
<v-ace-editor
|
||||
:theme="this.$TOOL.data.get('APP_DARK') ? 'github_dark' : 'github'"
|
||||
@ -94,7 +94,7 @@ export default {
|
||||
return {
|
||||
dateShortCuts: [
|
||||
{
|
||||
text: '今天',
|
||||
text: this.$t('今天'),
|
||||
value: () => {
|
||||
const start = new Date()
|
||||
start.setHours(0, 0, 0, 0)
|
||||
@ -102,7 +102,7 @@ export default {
|
||||
},
|
||||
},
|
||||
{
|
||||
text: '昨天',
|
||||
text: this.$t('昨天'),
|
||||
value: () => {
|
||||
const start = new Date()
|
||||
start.setHours(0, 0, 0, 0)
|
||||
@ -111,7 +111,7 @@ export default {
|
||||
},
|
||||
},
|
||||
{
|
||||
text: '最近三天',
|
||||
text: this.$t('最近三天'),
|
||||
value: () => {
|
||||
const start = new Date()
|
||||
start.setHours(0, 0, 0, 0)
|
||||
@ -122,7 +122,7 @@ export default {
|
||||
},
|
||||
},
|
||||
{
|
||||
text: '最近一周',
|
||||
text: this.$t('最近一周'),
|
||||
value: () => {
|
||||
const start = new Date()
|
||||
start.setHours(0, 0, 0, 0)
|
||||
@ -133,7 +133,7 @@ export default {
|
||||
},
|
||||
},
|
||||
{
|
||||
text: '最近一月',
|
||||
text: this.$t('最近一月'),
|
||||
value: () => {
|
||||
const start = new Date()
|
||||
start.setHours(0, 0, 0, 0)
|
||||
@ -144,7 +144,7 @@ export default {
|
||||
},
|
||||
},
|
||||
{
|
||||
text: '最近三月',
|
||||
text: this.$t('最近三月'),
|
||||
value: () => {
|
||||
const start = new Date()
|
||||
start.setHours(0, 0, 0, 0)
|
||||
@ -155,7 +155,7 @@ export default {
|
||||
},
|
||||
},
|
||||
{
|
||||
text: '最近六月',
|
||||
text: this.$t('最近六月'),
|
||||
value: () => {
|
||||
const start = new Date()
|
||||
start.setHours(0, 0, 0, 0)
|
||||
@ -166,7 +166,7 @@ export default {
|
||||
},
|
||||
},
|
||||
{
|
||||
text: '最近一年',
|
||||
text: this.$t('最近一年'),
|
||||
value: () => {
|
||||
const start = new Date()
|
||||
start.setHours(0, 0, 0, 0)
|
||||
@ -183,7 +183,7 @@ export default {
|
||||
value: 'id',
|
||||
type: 'text',
|
||||
selected: true,
|
||||
placeholder: '请输入订单号',
|
||||
placeholder: this.$t('请输入订单号'),
|
||||
},
|
||||
{
|
||||
label: '类型',
|
||||
@ -191,7 +191,7 @@ export default {
|
||||
type: 'select',
|
||||
operator: '=',
|
||||
selected: true,
|
||||
placeholder: '请选择类型',
|
||||
placeholder: this.$t('请选择类型'),
|
||||
extend: {
|
||||
data: [
|
||||
{
|
||||
@ -210,7 +210,7 @@ export default {
|
||||
value: 'type2',
|
||||
type: 'select',
|
||||
operator: '=',
|
||||
placeholder: '请选择类型',
|
||||
placeholder: this.$t('请选择类型'),
|
||||
extend: {
|
||||
multiple: true,
|
||||
data: [
|
||||
@ -230,7 +230,7 @@ export default {
|
||||
value: 'noticeType',
|
||||
type: 'select',
|
||||
operator: '=',
|
||||
placeholder: '请选择通知类型',
|
||||
placeholder: this.$t('请选择通知类型'),
|
||||
extend: {
|
||||
request: async () => {
|
||||
const list = await this.$API.system.dic.get.get()
|
||||
@ -248,7 +248,7 @@ export default {
|
||||
value: 'noticeType2',
|
||||
type: 'select',
|
||||
operator: '=',
|
||||
placeholder: '请输入关键词后检索',
|
||||
placeholder: this.$t('请输入关键词后检索'),
|
||||
extend: {
|
||||
remote: true,
|
||||
request: async (query) => {
|
||||
@ -313,7 +313,7 @@ export default {
|
||||
label: '自定义日期',
|
||||
value: 'date3',
|
||||
type: 'customDate',
|
||||
placeholder: '请选择月份',
|
||||
placeholder: this.$t('请选择月份'),
|
||||
extend: {
|
||||
dateType: 'month',
|
||||
valueFormat: 'YYYY-MM',
|
||||
@ -335,7 +335,7 @@ export default {
|
||||
if (this.dateType === 'datetimerange') {
|
||||
this.dateShortCuts.unshift(
|
||||
{
|
||||
text: '最近一时',
|
||||
text: this.$t('最近一时'),
|
||||
value: () => {
|
||||
const start = new Date()
|
||||
const end = new Date()
|
||||
@ -344,7 +344,7 @@ export default {
|
||||
},
|
||||
},
|
||||
{
|
||||
text: '昨日此时',
|
||||
text: this.$t('昨日此时'),
|
||||
value: () => {
|
||||
return [
|
||||
new Date(new Date(new Date().getTime() - 86400 * 1000).setHours(0, 0, 0, 0)),
|
||||
|
@ -2,7 +2,7 @@
|
||||
<div v-show="showBox" :class="mode === 'pop' ? 'mask' : ''">
|
||||
<div :class="mode === 'pop' ? 'verifybox' : ''" :style="{ 'max-width': parseInt(imgSize.width) + 30 + 'px' }">
|
||||
<div v-if="mode === 'pop'" class="verifybox-top">
|
||||
请完成安全验证
|
||||
{{ $t('请完成安全验证') }}
|
||||
<span @click="closeBox" class="verifybox-close">
|
||||
<i class="iconfont icon-close"></i>
|
||||
</span>
|
||||
@ -43,7 +43,7 @@ export default {
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.tpl = this.$GLOBAL.chars.TPL_DATE_YYYYMMDD
|
||||
this.tpl = 'yyyyMMdd'
|
||||
},
|
||||
components: {
|
||||
slide,
|
||||
|
@ -89,7 +89,6 @@ export default {
|
||||
},
|
||||
explain: {
|
||||
type: String,
|
||||
default: '向右滑动完成验证',
|
||||
},
|
||||
imgSize: {
|
||||
type: Object,
|
||||
@ -320,7 +319,7 @@ export default {
|
||||
}, 1500)
|
||||
}
|
||||
passFlag.value = true
|
||||
tipWords.value = `${((endMoveTime.value - startMoveTime.value) / 1000).toFixed(2)}秒 验证成功`
|
||||
tipWords.value = proxy.$t('{secs} 秒 验证成功', { secs: ((endMoveTime.value - startMoveTime.value) / 1000).toFixed(2) })
|
||||
setTimeout(() => {
|
||||
tipWords.value = ''
|
||||
proxy.$parent.closeBox()
|
||||
@ -336,7 +335,7 @@ export default {
|
||||
refresh()
|
||||
}, 1000)
|
||||
proxy.$parent.$emit('error', proxy)
|
||||
tipWords.value = '验证失败'
|
||||
tipWords.value = proxy.$t('验证失败')
|
||||
setTimeout(() => {
|
||||
tipWords.value = ''
|
||||
}, 1000)
|
||||
|
@ -11,8 +11,8 @@ export default {
|
||||
setInterval(async () => {
|
||||
// 检查版本
|
||||
const res = await this.$API.sys_tools.getVersion.post({})
|
||||
if (res.data !== this.$TOOL.data.get('VERSION')) {
|
||||
this.$TOOL.data.set('VERSION', res.data)
|
||||
if (res.data !== this.$TOOL.data.get('APP_VERSION')) {
|
||||
this.$TOOL.data.set('APP_VERSION', res.data)
|
||||
this.showTip(res.data.slice(0, res.data.indexOf('+')))
|
||||
}
|
||||
}, 10000)
|
||||
@ -24,8 +24,8 @@ export default {
|
||||
showTip(version) {
|
||||
const contents = []
|
||||
const msg = h('p', { style: 'width:230px;display:flex;justify-content:space-between' }, [
|
||||
h('span', {}, '即将开始更新……'),
|
||||
h('a', { style: 'color:#409eff', href: 'javascript:window.location.reload()' }, '立即更新'),
|
||||
h('span', {}, this.$t('即将开始更新……')),
|
||||
h('a', { style: 'color:#409eff', href: 'javascript:window.location.reload()' }, this.$t('立即更新')),
|
||||
])
|
||||
const task = h('p', { style: 'font-weight:bold' }, version)
|
||||
const progress = h(
|
||||
@ -68,7 +68,7 @@ export default {
|
||||
|
||||
// 实例化通知
|
||||
const notifyInstance = this.$notify({
|
||||
title: '发现新版本',
|
||||
title: this.$t('发现新版本'),
|
||||
type: 'success',
|
||||
customClass: className,
|
||||
message: h('div', {}, contents),
|
||||
|
@ -14,39 +14,39 @@
|
||||
<el-button icon="el-icon-arrow-down"></el-button>
|
||||
<template #dropdown>
|
||||
<el-dropdown-menu>
|
||||
<el-dropdown-item command="0 * * * * ?">每分钟</el-dropdown-item>
|
||||
<el-dropdown-item command="0 0 * * * ?">每小时</el-dropdown-item>
|
||||
<el-dropdown-item command="0 0 0 * * ?">每天零点</el-dropdown-item>
|
||||
<el-dropdown-item command="0 0 0 1 * ?">每月一号零点</el-dropdown-item>
|
||||
<el-dropdown-item command="0 0 0 L * ?">每月最后一天零点</el-dropdown-item>
|
||||
<el-dropdown-item command="0 0 0 ? * 1">每周星期日零点</el-dropdown-item>
|
||||
<el-dropdown-item command="0 * * * * ?">{{ $t('每分钟') }}</el-dropdown-item>
|
||||
<el-dropdown-item command="0 0 * * * ?">{{ $t('每小时') }}</el-dropdown-item>
|
||||
<el-dropdown-item command="0 0 0 * * ?">{{ $t('每天零点') }}</el-dropdown-item>
|
||||
<el-dropdown-item command="0 0 0 1 * ?">{{ $t('每月一号零点') }}</el-dropdown-item>
|
||||
<el-dropdown-item command="0 0 0 L * ?">{{ $t('每月最后一天零点') }}</el-dropdown-item>
|
||||
<el-dropdown-item command="0 0 0 ? * 1">{{ $t('每周星期日零点') }}</el-dropdown-item>
|
||||
<el-dropdown-item v-for="(item, index) in shortcuts" :command="item.value" :divided="index === 0" :key="item.value"
|
||||
>{{ item.text }}
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item command="custom" divided icon="el-icon-plus">自定义</el-dropdown-item>
|
||||
<el-dropdown-item command="custom" divided icon="el-icon-plus">{{ $t('自定义') }}</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</template>
|
||||
</el-dropdown>
|
||||
</template>
|
||||
</el-input>
|
||||
|
||||
<el-dialog v-model="dialogVisible" :width="800" append-to-body destroy-on-close title="Cron 规则生成器">
|
||||
<el-dialog v-model="dialogVisible" :title="$t('Cron 规则生成器')" :width="800" append-to-body destroy-on-close>
|
||||
<div class="sc-cron">
|
||||
<el-tabs>
|
||||
<el-tab-pane>
|
||||
<template #label>
|
||||
<div class="sc-cron-num">
|
||||
<h2>秒</h2>
|
||||
<h2>{{ $t('秒') }}</h2>
|
||||
<h4>{{ value_second }}</h4>
|
||||
</div>
|
||||
</template>
|
||||
<el-form>
|
||||
<el-form-item :label="$t('类型')">
|
||||
<el-radio-group v-model="value.second.type">
|
||||
<el-radio-button :label="0">任意值</el-radio-button>
|
||||
<el-radio-button :label="1">范围</el-radio-button>
|
||||
<el-radio-button :label="2">间隔</el-radio-button>
|
||||
<el-radio-button :label="3">指定</el-radio-button>
|
||||
<el-radio-button :label="0">{{ $t('任意值') }}</el-radio-button>
|
||||
<el-radio-button :label="1">{{ $t('范围') }}</el-radio-button>
|
||||
<el-radio-button :label="2">{{ $t('间隔') }}</el-radio-button>
|
||||
<el-radio-button :label="3">{{ $t('指定') }}</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="value.second.type === 1" :label="$t('范围')">
|
||||
@ -56,9 +56,9 @@
|
||||
</el-form-item>
|
||||
<el-form-item v-if="value.second.type === 2" :label="$t('间隔')">
|
||||
<el-input-number v-model="value.second.loop.start" :max="59" :min="0" controls-position="right"></el-input-number>
|
||||
秒开始,每
|
||||
{{ $t('频率') }}
|
||||
<el-input-number v-model="value.second.loop.end" :max="59" :min="0" controls-position="right"></el-input-number>
|
||||
秒执行一次
|
||||
{{ $t('秒') }}
|
||||
</el-form-item>
|
||||
<el-form-item v-if="value.second.type === 3" :label="$t('指定')">
|
||||
<el-select v-model="value.second.appoint" multiple style="width: 100%">
|
||||
@ -70,17 +70,17 @@
|
||||
<el-tab-pane>
|
||||
<template #label>
|
||||
<div class="sc-cron-num">
|
||||
<h2>分钟</h2>
|
||||
<h2>{{ $t('分钟') }}</h2>
|
||||
<h4>{{ value_minute }}</h4>
|
||||
</div>
|
||||
</template>
|
||||
<el-form>
|
||||
<el-form-item :label="$t('类型')">
|
||||
<el-radio-group v-model="value.minute.type">
|
||||
<el-radio-button :label="0">任意值</el-radio-button>
|
||||
<el-radio-button :label="1">范围</el-radio-button>
|
||||
<el-radio-button :label="2">间隔</el-radio-button>
|
||||
<el-radio-button :label="3">指定</el-radio-button>
|
||||
<el-radio-button :label="0">{{ $t('任意值') }}</el-radio-button>
|
||||
<el-radio-button :label="1">{{ $t('范围') }}</el-radio-button>
|
||||
<el-radio-button :label="2">{{ $t('间隔') }}</el-radio-button>
|
||||
<el-radio-button :label="3">{{ $t('指定') }}</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="value.minute.type === 1" :label="$t('范围')">
|
||||
@ -90,9 +90,9 @@
|
||||
</el-form-item>
|
||||
<el-form-item v-if="value.minute.type === 2" :label="$t('间隔')">
|
||||
<el-input-number v-model="value.minute.loop.start" :max="59" :min="0" controls-position="right"></el-input-number>
|
||||
分钟开始,每
|
||||
{{ $t('频率') }}
|
||||
<el-input-number v-model="value.minute.loop.end" :max="59" :min="0" controls-position="right"></el-input-number>
|
||||
分钟执行一次
|
||||
{{ $t('分钟') }}
|
||||
</el-form-item>
|
||||
<el-form-item v-if="value.minute.type === 3" :label="$t('指定')">
|
||||
<el-select v-model="value.minute.appoint" multiple style="width: 100%">
|
||||
@ -104,17 +104,17 @@
|
||||
<el-tab-pane>
|
||||
<template #label>
|
||||
<div class="sc-cron-num">
|
||||
<h2>小时</h2>
|
||||
<h2>{{ $t('小时') }}</h2>
|
||||
<h4>{{ value_hour }}</h4>
|
||||
</div>
|
||||
</template>
|
||||
<el-form>
|
||||
<el-form-item :label="$t('类型')">
|
||||
<el-radio-group v-model="value.hour.type">
|
||||
<el-radio-button :label="0">任意值</el-radio-button>
|
||||
<el-radio-button :label="1">范围</el-radio-button>
|
||||
<el-radio-button :label="2">间隔</el-radio-button>
|
||||
<el-radio-button :label="3">指定</el-radio-button>
|
||||
<el-radio-button :label="0">{{ $t('任意值') }}</el-radio-button>
|
||||
<el-radio-button :label="1">{{ $t('范围') }}</el-radio-button>
|
||||
<el-radio-button :label="2">{{ $t('间隔') }}</el-radio-button>
|
||||
<el-radio-button :label="3">{{ $t('指定') }}</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="value.hour.type === 1" :label="$t('范围')">
|
||||
@ -124,9 +124,9 @@
|
||||
</el-form-item>
|
||||
<el-form-item v-if="value.hour.type === 2" :label="$t('间隔')">
|
||||
<el-input-number v-model="value.hour.loop.start" :max="23" :min="0" controls-position="right"></el-input-number>
|
||||
小时开始,每
|
||||
{{ $t('频率') }}
|
||||
<el-input-number v-model="value.hour.loop.end" :max="23" :min="0" controls-position="right"></el-input-number>
|
||||
小时执行一次
|
||||
{{ $t('小时') }}
|
||||
</el-form-item>
|
||||
<el-form-item v-if="value.hour.type === 3" :label="$t('指定')">
|
||||
<el-select v-model="value.hour.appoint" multiple style="width: 100%">
|
||||
@ -138,19 +138,19 @@
|
||||
<el-tab-pane>
|
||||
<template #label>
|
||||
<div class="sc-cron-num">
|
||||
<h2>日</h2>
|
||||
<h2>{{ $t('日') }}</h2>
|
||||
<h4>{{ value_day }}</h4>
|
||||
</div>
|
||||
</template>
|
||||
<el-form>
|
||||
<el-form-item :label="$t('类型')">
|
||||
<el-radio-group v-model="value.day.type">
|
||||
<el-radio-button :label="0">任意值</el-radio-button>
|
||||
<el-radio-button :label="1">范围</el-radio-button>
|
||||
<el-radio-button :label="2">间隔</el-radio-button>
|
||||
<el-radio-button :label="3">指定</el-radio-button>
|
||||
<el-radio-button :label="4">本月最后一天</el-radio-button>
|
||||
<el-radio-button :label="5">不指定</el-radio-button>
|
||||
<el-radio-button :label="0">{{ $t('任意值') }}</el-radio-button>
|
||||
<el-radio-button :label="1">{{ $t('范围') }}</el-radio-button>
|
||||
<el-radio-button :label="2">{{ $t('间隔') }}</el-radio-button>
|
||||
<el-radio-button :label="3">{{ $t('指定') }}</el-radio-button>
|
||||
<el-radio-button :label="4">{{ $t('本月最后一天') }}</el-radio-button>
|
||||
<el-radio-button :label="5">{{ $t('不指定') }}</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="value.day.type === 1" :label="$t('范围')">
|
||||
@ -160,9 +160,9 @@
|
||||
</el-form-item>
|
||||
<el-form-item v-if="value.day.type === 2" :label="$t('间隔')">
|
||||
<el-input-number v-model="value.day.loop.start" :max="31" :min="1" controls-position="right"></el-input-number>
|
||||
号开始,每
|
||||
{{ $t('频率') }}
|
||||
<el-input-number v-model="value.day.loop.end" :max="31" :min="1" controls-position="right"></el-input-number>
|
||||
天执行一次
|
||||
{{ $t('天') }}
|
||||
</el-form-item>
|
||||
<el-form-item v-if="value.day.type === 3" :label="$t('指定')">
|
||||
<el-select v-model="value.day.appoint" multiple style="width: 100%">
|
||||
@ -174,17 +174,17 @@
|
||||
<el-tab-pane>
|
||||
<template #label>
|
||||
<div class="sc-cron-num">
|
||||
<h2>月</h2>
|
||||
<h2>{{ $t('月') }}</h2>
|
||||
<h4>{{ value_month }}</h4>
|
||||
</div>
|
||||
</template>
|
||||
<el-form>
|
||||
<el-form-item :label="$t('类型')">
|
||||
<el-radio-group v-model="value.month.type">
|
||||
<el-radio-button :label="0">任意值</el-radio-button>
|
||||
<el-radio-button :label="1">范围</el-radio-button>
|
||||
<el-radio-button :label="2">间隔</el-radio-button>
|
||||
<el-radio-button :label="3">指定</el-radio-button>
|
||||
<el-radio-button :label="0">{{ $t('任意值') }}</el-radio-button>
|
||||
<el-radio-button :label="1">{{ $t('范围') }}</el-radio-button>
|
||||
<el-radio-button :label="2">{{ $t('间隔') }}</el-radio-button>
|
||||
<el-radio-button :label="3">{{ $t('指定') }}</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="value.month.type === 1" :label="$t('范围')">
|
||||
@ -194,9 +194,9 @@
|
||||
</el-form-item>
|
||||
<el-form-item v-if="value.month.type === 2" :label="$t('间隔')">
|
||||
<el-input-number v-model="value.month.loop.start" :max="12" :min="1" controls-position="right"></el-input-number>
|
||||
月开始,每
|
||||
{{ $t('频率') }}
|
||||
<el-input-number v-model="value.month.loop.end" :max="12" :min="1" controls-position="right"></el-input-number>
|
||||
月执行一次
|
||||
{{ $t('月') }}
|
||||
</el-form-item>
|
||||
<el-form-item v-if="value.month.type === 3" :label="$t('指定')">
|
||||
<el-select v-model="value.month.appoint" multiple style="width: 100%">
|
||||
@ -208,7 +208,7 @@
|
||||
<el-tab-pane>
|
||||
<template #label>
|
||||
<div class="sc-cron-num">
|
||||
<h2>周</h2>
|
||||
<h2>{{ $t('周') }}</h2>
|
||||
<h4>{{ value_week }}</h4>
|
||||
</div>
|
||||
</template>
|
||||
@ -216,12 +216,12 @@
|
||||
<el-form>
|
||||
<el-form-item :label="$t('类型')">
|
||||
<el-radio-group v-model="value.week.type">
|
||||
<el-radio-button :label="0">任意值</el-radio-button>
|
||||
<el-radio-button :label="1">范围</el-radio-button>
|
||||
<el-radio-button :label="2">间隔</el-radio-button>
|
||||
<el-radio-button :label="3">指定</el-radio-button>
|
||||
<el-radio-button :label="4">本月最后一周</el-radio-button>
|
||||
<el-radio-button :label="5">不指定</el-radio-button>
|
||||
<el-radio-button :label="0">{{ $t('任意值') }}</el-radio-button>
|
||||
<el-radio-button :label="1">{{ $t('范围') }}</el-radio-button>
|
||||
<el-radio-button :label="2">{{ $t('间隔') }}</el-radio-button>
|
||||
<el-radio-button :label="3">{{ $t('指定') }}</el-radio-button>
|
||||
<el-radio-button :label="4">{{ $t('本月最后一周') }}</el-radio-button>
|
||||
<el-radio-button :label="5">{{ $t('不指定') }}</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="value.week.type === 1" :label="$t('范围')">
|
||||
@ -234,13 +234,12 @@
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="value.week.type === 2" :label="$t('间隔')">
|
||||
第
|
||||
<el-input-number v-model="value.week.loop.start" :max="4" :min="1" controls-position="right"></el-input-number>
|
||||
周的星期
|
||||
{{ $t('频率') }}
|
||||
<el-select v-model="value.week.loop.end" style="width: 10rem">
|
||||
<el-option v-for="(item, index) in data.week" :key="index" :label="item.label" :value="item.value"></el-option>
|
||||
</el-select>
|
||||
执行一次
|
||||
{{ $t('执行一次') }}
|
||||
</el-form-item>
|
||||
<el-form-item v-if="value.week.type === 3" :label="$t('指定')">
|
||||
<el-select v-model="value.week.appoint" multiple style="width: 100%">
|
||||
@ -258,18 +257,18 @@
|
||||
<el-tab-pane>
|
||||
<template #label>
|
||||
<div class="sc-cron-num">
|
||||
<h2>年</h2>
|
||||
<h2>{{ $t('年') }}</h2>
|
||||
<h4>{{ value_year }}</h4>
|
||||
</div>
|
||||
</template>
|
||||
<el-form>
|
||||
<el-form-item :label="$t('类型')">
|
||||
<el-radio-group v-model="value.year.type">
|
||||
<el-radio-button :label="-1">忽略</el-radio-button>
|
||||
<el-radio-button :label="0">任意值</el-radio-button>
|
||||
<el-radio-button :label="1">范围</el-radio-button>
|
||||
<el-radio-button :label="2">间隔</el-radio-button>
|
||||
<el-radio-button :label="3">指定</el-radio-button>
|
||||
<el-radio-button :label="-1">{{ $t('忽略') }}</el-radio-button>
|
||||
<el-radio-button :label="0">{{ $t('任意值') }}</el-radio-button>
|
||||
<el-radio-button :label="1">{{ $t('范围') }}</el-radio-button>
|
||||
<el-radio-button :label="2">{{ $t('间隔') }}</el-radio-button>
|
||||
<el-radio-button :label="3">{{ $t('指定') }}</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item v-if="value.year.type === 1" :label="$t('范围')">
|
||||
@ -279,9 +278,9 @@
|
||||
</el-form-item>
|
||||
<el-form-item v-if="value.year.type === 2" :label="$t('间隔')">
|
||||
<el-input-number v-model="value.year.loop.start" controls-position="right"></el-input-number>
|
||||
年开始,每
|
||||
{{ $t('频率') }}
|
||||
<el-input-number v-model="value.year.loop.end" :min="1" controls-position="right"></el-input-number>
|
||||
年执行一次
|
||||
{{ $t('年') }}
|
||||
</el-form-item>
|
||||
<el-form-item v-if="value.year.type === 3" :label="$t('指定')">
|
||||
<el-select v-model="value.year.appoint" multiple style="width: 100%">
|
||||
@ -294,8 +293,8 @@
|
||||
</div>
|
||||
|
||||
<template #footer>
|
||||
<el-button @click="dialogVisible = false">取 消</el-button>
|
||||
<el-button @click="submit()" type="primary">确 认</el-button>
|
||||
<el-button @click="dialogVisible = false">{{ $t('取消') }}</el-button>
|
||||
<el-button @click="submit()" type="primary">{{ $t('确认') }}</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
@ -465,31 +464,31 @@ export default {
|
||||
week: [
|
||||
{
|
||||
value: '1',
|
||||
label: '周日',
|
||||
label: this.$t('周日'),
|
||||
},
|
||||
{
|
||||
value: '2',
|
||||
label: '周一',
|
||||
label: this.$t('周一'),
|
||||
},
|
||||
{
|
||||
value: '3',
|
||||
label: '周二',
|
||||
label: this.$t('周二'),
|
||||
},
|
||||
{
|
||||
value: '4',
|
||||
label: '周三',
|
||||
label: this.$t('周三'),
|
||||
},
|
||||
{
|
||||
value: '5',
|
||||
label: '周四',
|
||||
label: this.$t('周四'),
|
||||
},
|
||||
{
|
||||
value: '6',
|
||||
label: '周五',
|
||||
label: this.$t('周五'),
|
||||
},
|
||||
{
|
||||
value: '7',
|
||||
label: '周六',
|
||||
label: this.$t('周六'),
|
||||
},
|
||||
],
|
||||
year: this.getYear(),
|
||||
|
@ -14,7 +14,7 @@
|
||||
<img :src="src" ref="img" />
|
||||
</div>
|
||||
<div class="sc-cropper__preview">
|
||||
<h4>图像预览</h4>
|
||||
<h4>{{ $t('图像预览') }}</h4>
|
||||
<div class="sc-cropper__preview__img" ref="preview"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -9,7 +9,7 @@
|
||||
|
||||
<template>
|
||||
<slot :open="open">
|
||||
<el-button @click="open" plain type="primary">导出</el-button>
|
||||
<el-button @click="open" plain type="primary">{{ $t('导出') }}</el-button>
|
||||
</slot>
|
||||
<el-drawer v-model="dialog" :size="400" :title="$t('导出')" append-to-body destroy-on-close direction="rtl">
|
||||
<el-main style="padding: 0 20px 20px 20px">
|
||||
@ -42,7 +42,9 @@
|
||||
type="primary"
|
||||
>发起导出任务
|
||||
</el-button>
|
||||
<el-button v-else @click="download" icon="el-icon-download" size="large" style="width: 100%" type="primary">下 载</el-button>
|
||||
<el-button v-else @click="download" icon="el-icon-download" size="large" style="width: 100%" type="primary">{{
|
||||
$t('下 载')
|
||||
}}</el-button>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane v-if="columnData.length > 0" :label="$t('列设置')" lazy>
|
||||
<columnSet :column="columnData"></columnSet>
|
||||
@ -188,7 +190,7 @@ export default {
|
||||
this.dialog = false
|
||||
this.$msgbox({
|
||||
title: '成功发起任务',
|
||||
message: `<p>已成功发起导出任务,您可以操作其他事务</p><p>稍后可在 <b>任务中心</b> 查看执行结果</p>`,
|
||||
message: `<p>{{ $t('已成功发起导出任务,您可以操作其他事务') }}</p><p>{{ $t('稍后可在 ') }}<b>{{ $t('任务中心') }}</b> 查看执行结果</p>`,
|
||||
type: 'success',
|
||||
confirmButtonText: '知道了',
|
||||
dangerouslyUseHTMLString: true,
|
||||
|
@ -9,7 +9,7 @@
|
||||
|
||||
<template>
|
||||
<slot :open="open">
|
||||
<el-button @click="open" plain type="primary">导入</el-button>
|
||||
<el-button @click="open" plain type="primary">{{ $t('导入') }}</el-button>
|
||||
</slot>
|
||||
<el-dialog v-model="dialog" :close-on-click-modal="false" :title="$t('导入')" :width="550" append-to-body destroy-on-close>
|
||||
<el-progress v-if="loading" :percentage="percentage" :stroke-width="20" :text-inside="true" style="margin-bottom: 1rem" />
|
||||
@ -31,14 +31,16 @@
|
||||
<el-icon class="el-icon--upload">
|
||||
<el-icon-upload-filled />
|
||||
</el-icon>
|
||||
<div class="el-upload__text">将文件拖到此处或 <em>点击选择文件上传</em></div>
|
||||
<div class="el-upload__text">
|
||||
{{ $t('将文件拖到此处或 ') }}<em>{{ $t('点击选择文件上传') }}</em>
|
||||
</div>
|
||||
</slot>
|
||||
<template #tip>
|
||||
<div class="el-upload__tip">
|
||||
<template v-if="tip">{{ tip }}</template>
|
||||
<template v-else>请上传小于或等于 {{ maxSize }}M 的 {{ accept }} 格式文件</template>
|
||||
<template v-else>{{ $t('请上传小于或等于 {{ maxSize }}M 的 {{ accept }} 格式文件') }}</template>
|
||||
<p v-if="templateUrl" style="margin-top: 7px">
|
||||
<el-link :href="templateUrl" :underline="false" target="_blank" type="primary">下载导入模板</el-link>
|
||||
<el-link :href="templateUrl" :underline="false" target="_blank" type="primary">{{ $t('下载导入模板') }}</el-link>
|
||||
</p>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -46,10 +46,10 @@
|
||||
action=""
|
||||
class="sc-file-select__upload"
|
||||
multiple>
|
||||
<el-button icon="el-icon-upload" type="primary">本地上传</el-button>
|
||||
<el-button icon="el-icon-upload" type="primary">{{ $t('本地上传') }}</el-button>
|
||||
</el-upload>
|
||||
<span class="tips"
|
||||
><el-icon><el-icon-warning /></el-icon>大小不超过{{ maxSize }}MB</span
|
||||
><el-icon><el-icon-warning /></el-icon>{{ $t('大小不超过{{ maxSize }}MB') }}</span
|
||||
>
|
||||
</div>
|
||||
<div class="keyword">
|
||||
@ -117,7 +117,7 @@
|
||||
</div>
|
||||
<div class="sc-file-select__do">
|
||||
<slot name="do"></slot>
|
||||
<el-button :disabled="value.length <= 0" @click="submit" type="primary">确 定</el-button>
|
||||
<el-button :disabled="value.length <= 0" @click="submit" type="primary">{{ $t('确 定') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -21,12 +21,12 @@
|
||||
<el-tabs class="root">
|
||||
<el-tab-pane lazy>
|
||||
<template #label>
|
||||
<div class="tabs-label">过滤项</div>
|
||||
<div class="tabs-label">{{ $t('过滤项') }}</div>
|
||||
</template>
|
||||
<el-scrollbar>
|
||||
<div class="sc-filter-main">
|
||||
<h2>设置过滤条件</h2>
|
||||
<div v-if="filter.length <= 0" class="nodata">没有默认过滤条件,请点击增加过滤项</div>
|
||||
<h2>{{ $t('设置过滤条件') }}</h2>
|
||||
<div v-if="filter.length <= 0" class="nodata">{{ $t('没有默认过滤条件,请点击增加过滤项') }}</div>
|
||||
<table v-else>
|
||||
<colgroup>
|
||||
<col width="50" />
|
||||
@ -158,13 +158,13 @@
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
<el-button @click="addFilter" icon="el-icon-plus" text type="primary">增加过滤项</el-button>
|
||||
<el-button @click="addFilter" icon="el-icon-plus" text type="primary">{{ $t('增加过滤项') }}</el-button>
|
||||
</div>
|
||||
</el-scrollbar>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane lazy>
|
||||
<template #label>
|
||||
<div class="tabs-label">常用</div>
|
||||
<div class="tabs-label">{{ $t('常用') }}</div>
|
||||
</template>
|
||||
<el-scrollbar>
|
||||
<my :data="myFilter" :filterName="filterName" @selectMyfilter="selectMyfilter" ref="my"></my>
|
||||
@ -173,9 +173,9 @@
|
||||
</el-tabs>
|
||||
</el-main>
|
||||
<el-footer>
|
||||
<el-button :disabled="filter.length <= 0" @click="ok" type="primary">立即过滤</el-button>
|
||||
<el-button :disabled="filter.length <= 0" @click="saveMy" plain type="primary">另存为常用</el-button>
|
||||
<el-button @click="clear">清空过滤</el-button>
|
||||
<el-button :disabled="filter.length <= 0" @click="ok" type="primary">{{ $t('立即过滤') }}</el-button>
|
||||
<el-button :disabled="filter.length <= 0" @click="saveMy" plain type="primary">{{ $t('另存为常用') }}</el-button>
|
||||
<el-button @click="clear">{{ $t('清空过滤') }}</el-button>
|
||||
</el-footer>
|
||||
</el-container>
|
||||
</el-drawer>
|
||||
@ -333,7 +333,7 @@ export default {
|
||||
//保存常用
|
||||
saveMy() {
|
||||
this.$prompt('常用过滤名称', '另存为常用', {
|
||||
inputPlaceholder: '请输入识别度较高的常用过滤名称',
|
||||
inputplaceholder: $t('请输入识别度较高的常用过滤名称'),
|
||||
inputPattern: /\S/,
|
||||
inputErrorMessage: '名称不能为空',
|
||||
})
|
||||
|
@ -15,12 +15,12 @@
|
||||
<template v-else>
|
||||
<el-empty v-if="myFilter.length <= 0" :image-size="100">
|
||||
<template #description>
|
||||
<h2>没有常用的过滤</h2>
|
||||
<p style="margin-top: 10px; max-width: 300px">常用过滤可以将多个过滤条件保存为一个集合,方便下次进行相同条件的过滤</p>
|
||||
<h2>{{ $t('没有常用的过滤') }}</h2>
|
||||
<p style="margin-top: 10px; max-width: 300px">{{ $t('常用过滤可以将多个过滤条件保存为一个集合,方便下次进行相同条件的过滤') }}</p>
|
||||
</template>
|
||||
</el-empty>
|
||||
<ul v-else class="sc-filter-my-list">
|
||||
<h2>我的常用过滤</h2>
|
||||
<h2>{{ $t('我的常用过滤') }}</h2>
|
||||
<li v-for="(item, index) in myFilter" :key="index" @click="selectMyfilter(item)">
|
||||
<label>{{ item.title }}</label>
|
||||
<el-popconfirm :title="$t('确认删除此常用过滤吗?')" @confirm="closeMyfilter(item, index)">
|
||||
|
@ -48,8 +48,8 @@
|
||||
</el-tabs>
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button @click="clear" text>清除</el-button>
|
||||
<el-button @click="dialogVisible = false">取消</el-button>
|
||||
<el-button @click="clear" text>{{ $t('清除') }}</el-button>
|
||||
<el-button @click="dialogVisible = false">{{ $t('取消') }}</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
@ -9,7 +9,7 @@
|
||||
|
||||
<template>
|
||||
<div class="sc-select-filter">
|
||||
<div v-if="data.length <= 0" class="sc-select-filter__no-data">暂无数据</div>
|
||||
<div v-if="data.length <= 0" class="sc-select-filter__no-data">{{ $t('暂无数据') }}</div>
|
||||
<div v-for="item in data" :key="item.key" class="sc-select-filter__item">
|
||||
<div :style="{ width: labelWidth + 'rem' }" class="sc-select-filter__item-title">
|
||||
<label>{{ item.title }}</label>
|
||||
|
@ -2,11 +2,11 @@
|
||||
<div v-if="usercolumn.length > 0" v-loading="isSave" class="setting-column">
|
||||
<div class="setting-column__title">
|
||||
<span class="move_b"></span>
|
||||
<span class="show_b">显示</span>
|
||||
<span class="name_b">名称</span>
|
||||
<span class="width_b">宽度</span>
|
||||
<span class="sortable_b">排序</span>
|
||||
<span class="fixed_b">固定</span>
|
||||
<span class="show_b">{{ $t('显示') }}</span>
|
||||
<span class="name_b">{{ $t('名称') }}</span>
|
||||
<span class="width_b">{{ $t('宽度') }}</span>
|
||||
<span class="sortable_b">{{ $t('排序') }}</span>
|
||||
<span class="fixed_b">{{ $t('固定') }}</span>
|
||||
</div>
|
||||
<div class="setting-column__list" ref="list">
|
||||
<ul>
|
||||
@ -31,8 +31,8 @@
|
||||
</ul>
|
||||
</div>
|
||||
<div class="setting-column__bottom">
|
||||
<el-button :disabled="isSave" @click="backDefaul">重置</el-button>
|
||||
<el-button @click="save" type="primary">保存</el-button>
|
||||
<el-button :disabled="isSave" @click="backDefaul">{{ $t('重置') }}</el-button>
|
||||
<el-button @click="save" type="primary">{{ $t('保存') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
<el-empty v-else :description="$t('暂无可配置的列')" :image-size="80"></el-empty>
|
||||
|
@ -96,9 +96,9 @@
|
||||
<el-form label-position="left" label-width="10rem">
|
||||
<el-form-item :label="$t('表格尺寸')">
|
||||
<el-radio-group v-model="config.size" @change="configSizeChange" size="small">
|
||||
<el-radio-button label="large">大</el-radio-button>
|
||||
<el-radio-button label="default">正常</el-radio-button>
|
||||
<el-radio-button label="small">小</el-radio-button>
|
||||
<el-radio-button label="large">{{ $t('大') }}</el-radio-button>
|
||||
<el-radio-button label="default">{{ $t('正常') }}</el-radio-button>
|
||||
<el-radio-button label="small">{{ $t('小') }}</el-radio-button>
|
||||
</el-radio-group>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('样式')">
|
||||
@ -133,42 +133,47 @@
|
||||
title="≤"></sc-contextmenu-item>
|
||||
<sc-contextmenu-item
|
||||
:command="`${menu}^|^Contains^|^${tool.getNestedProperty(current.row, menu) ?? ''}`"
|
||||
divided
|
||||
title="包含"></sc-contextmenu-item>
|
||||
:title="$t('包含')"
|
||||
divided></sc-contextmenu-item>
|
||||
<sc-contextmenu-item
|
||||
:command="`${menu}^|^NotContains^|^${tool.getNestedProperty(current.row, menu) ?? ''}`"
|
||||
title="不含"></sc-contextmenu-item>
|
||||
:title="$t('不含')"></sc-contextmenu-item>
|
||||
<sc-contextmenu-item
|
||||
:command="`${menu}^|^StartsWith^|^${tool.getNestedProperty(current.row, menu) ?? ''}`"
|
||||
divided
|
||||
title="以 x 开始"></sc-contextmenu-item>
|
||||
:title="$t('以 x 开始')"
|
||||
divided></sc-contextmenu-item>
|
||||
<sc-contextmenu-item
|
||||
:command="`${menu}^|^NotStartsWith^|^${tool.getNestedProperty(current.row, menu) ?? ''}`"
|
||||
title="非 x 开始"></sc-contextmenu-item>
|
||||
:title="$t('非 x 开始')"></sc-contextmenu-item>
|
||||
<sc-contextmenu-item
|
||||
:command="`${menu}^|^EndsWith^|^${tool.getNestedProperty(current.row, menu) ?? ''}`"
|
||||
title="以 x 结束"></sc-contextmenu-item>
|
||||
:title="$t('以 x 结束')"></sc-contextmenu-item>
|
||||
<sc-contextmenu-item
|
||||
:command="`${menu}^|^NotEndsWith^|^${tool.getNestedProperty(current.row, menu) ?? ''}`"
|
||||
title="非 x 结束"></sc-contextmenu-item>
|
||||
:title="$t('非 x 结束')"></sc-contextmenu-item>
|
||||
<sc-contextmenu-item
|
||||
:command="`${menu}^|^Range^|^${tool.getNestedProperty(current.row, menu) ?? ''}`"
|
||||
divided
|
||||
title="数值范围"></sc-contextmenu-item>
|
||||
:title="$t('数值范围')"
|
||||
divided></sc-contextmenu-item>
|
||||
<sc-contextmenu-item
|
||||
:command="`${menu}^|^DateRange^|^${tool.getNestedProperty(current.row, menu) ?? ''}`"
|
||||
title="日期范围"></sc-contextmenu-item>
|
||||
:title="$t('日期范围')"></sc-contextmenu-item>
|
||||
<sc-contextmenu-item
|
||||
:command="`${menu}^|^Any^|^${tool.getNestedProperty(current.row, menu) ?? ''}`"
|
||||
divided
|
||||
title="为其一"></sc-contextmenu-item>
|
||||
:title="$t('为其一')"
|
||||
divided></sc-contextmenu-item>
|
||||
<sc-contextmenu-item
|
||||
:command="`${menu}^|^NotAny^|^${tool.getNestedProperty(current.row, menu) ?? ''}`"
|
||||
title="非其一"></sc-contextmenu-item>
|
||||
:title="$t('非其一')"></sc-contextmenu-item>
|
||||
</sc-contextmenu-item>
|
||||
<sc-contextmenu-item v-if="contextOpers.includes('view')" command="view" divided icon="el-icon-view" title="查看"></sc-contextmenu-item>
|
||||
<sc-contextmenu-item v-if="contextOpers.includes('edit')" command="edit" icon="el-icon-edit" title="编辑"></sc-contextmenu-item>
|
||||
<sc-contextmenu-item v-if="contextOpers.includes('del')" command="del" icon="el-icon-delete" title="删除"></sc-contextmenu-item>
|
||||
<sc-contextmenu-item
|
||||
v-if="contextOpers.includes('view')"
|
||||
:title="$t('查看')"
|
||||
command="view"
|
||||
divided
|
||||
icon="el-icon-view"></sc-contextmenu-item>
|
||||
<sc-contextmenu-item v-if="contextOpers.includes('edit')" :title="$t('编辑')" command="edit" icon="el-icon-edit"></sc-contextmenu-item>
|
||||
<sc-contextmenu-item v-if="contextOpers.includes('del')" :title="$t('删除')" command="del" icon="el-icon-delete"></sc-contextmenu-item>
|
||||
<sc-contextmenu-item
|
||||
v-for="(adv, index) in contextAdvs"
|
||||
:command="adv"
|
||||
@ -177,7 +182,7 @@
|
||||
:key="index"
|
||||
:title="adv.label">
|
||||
</sc-contextmenu-item>
|
||||
<sc-contextmenu-item command="refresh" divided icon="el-icon-refresh" suffix="Ctrl+R" title="重新加载"></sc-contextmenu-item>
|
||||
<sc-contextmenu-item :title="$t('重新加载')" command="refresh" divided icon="el-icon-refresh" suffix="Ctrl+R"></sc-contextmenu-item>
|
||||
</sc-contextmenu>
|
||||
</template>
|
||||
<script>
|
||||
@ -343,7 +348,7 @@ export default {
|
||||
}
|
||||
if (command === 'del') {
|
||||
try {
|
||||
await this.$confirm(h('div', [h('p', '是否确认删除?'), h('p', this.current.row.id)]), '提示', {
|
||||
await this.$confirm(h('div', [h('p', this.$t('是否确认删除?')), h('p', this.current.row.id)]), this.$t('提示'), {
|
||||
type: 'warning',
|
||||
})
|
||||
} catch {
|
||||
@ -356,8 +361,8 @@ export default {
|
||||
const kv = command.split('^|^')
|
||||
let value
|
||||
try {
|
||||
value = await this.$prompt(`仅显示 ${kv[0]} ${kv[1]}:`, '高级筛选', {
|
||||
inputPlaceholder: '一行一个',
|
||||
value = await this.$prompt(this.$t('仅显示 {field} {operator}:', { field: kv[0], operator: kv[1] }), this.$t('高级筛选'), {
|
||||
inputplaceholder: this.$t('一行一个'),
|
||||
inputPattern: /.*/,
|
||||
inputType: 'textarea',
|
||||
inputValue: kv[2],
|
||||
|
@ -73,7 +73,7 @@ export default {
|
||||
type: Object,
|
||||
default: () => {},
|
||||
},
|
||||
placeholder: { type: String, default: '请选择' },
|
||||
placeholder: { type: String },
|
||||
size: { type: String, default: 'default' },
|
||||
clearable: { type: Boolean, default: false },
|
||||
multiple: { type: Boolean, default: false },
|
||||
|
@ -51,8 +51,8 @@
|
||||
<el-dialog v-model="cropperDialogVisible" :title="$t('剪裁')" :width="580" @closed="cropperClosed" destroy-on-close draggable>
|
||||
<sc-cropper :aspectRatio="aspectRatio" :compress="compress" :src="cropperFile.tempCropperFile" ref="cropper"></sc-cropper>
|
||||
<template #footer>
|
||||
<el-button @click="cropperDialogVisible = false">取 消</el-button>
|
||||
<el-button @click="cropperSave" type="primary">确 定</el-button>
|
||||
<el-button @click="cropperDialogVisible = false">{{ $t('取消') }}</el-button>
|
||||
<el-button @click="cropperSave" type="primary">{{ $t('确 定') }}</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
|
@ -47,7 +47,7 @@ import scWaterMark from '@/components/scWaterMark'
|
||||
// net-admin组件
|
||||
import naArea from '@/components/naArea/index.vue'
|
||||
import naButtonAdd from '@/components/naButtonAdd/index.vue'
|
||||
import naButtonBatchDel from '@/components/naButtonBatchDel/index.vue'
|
||||
import naButtonBulkDel from '@/components/naButtonBulkDel/index.vue'
|
||||
import naColAvatar from '@/components/naColAvatar'
|
||||
import naColId from '@/components/naColId/index.vue'
|
||||
import naColIndicator from '@/components/naColIndicator/index.vue'
|
||||
@ -88,7 +88,7 @@ export default {
|
||||
// net-admin组件
|
||||
app.component('naArea', naArea)
|
||||
app.component('naButtonAdd', naButtonAdd)
|
||||
app.component('naButtonBatchDel', naButtonBatchDel)
|
||||
app.component('naButtonBulkDel', naButtonBulkDel)
|
||||
app.component('naColAvatar', naColAvatar)
|
||||
app.component('naColId', naColId)
|
||||
app.component('naColIndicator', naColIndicator)
|
||||
|
@ -22,7 +22,7 @@
|
||||
</el-tag>
|
||||
</div>
|
||||
<div class="sc-search-result">
|
||||
<div v-if="result.length <= 0" class="sc-search-no-result">暂无搜索结果</div>
|
||||
<div v-if="result.length <= 0" class="sc-search-no-result">{{ $t('暂无搜索结果') }}</div>
|
||||
<ul v-else>
|
||||
<el-scrollbar max-height="30rem">
|
||||
<li v-for="item in result" :key="item.path" @click="to(item)">
|
||||
|
@ -3,7 +3,7 @@
|
||||
<el-main>
|
||||
<el-empty v-if="jobs.length === 0" :image-size="120">
|
||||
<template #description>
|
||||
<h2>没有正在执行的作业</h2>
|
||||
<h2>{{ $t('没有正在执行的作业') }}</h2>
|
||||
</template>
|
||||
<p style="color: #999; line-height: 1.5; margin: 0 3rem">
|
||||
在处理耗时过久的作业时为了不阻碍正在处理的工作,可在作业中心进行异步执行。
|
||||
@ -17,15 +17,17 @@
|
||||
<div class="jobMain">
|
||||
<div class="title">
|
||||
<h2>{{ job.jobName }}</h2>
|
||||
<p>上次执行:<span v-time.tip="job.lastExecTime"></span></p>
|
||||
<p>{{ $t('上次执行:') }}<span v-time.tip="job.lastExecTime"></span></p>
|
||||
<p>
|
||||
下次执行:<span>{{ job.nextExecTime }}</span>
|
||||
</p>
|
||||
</div>
|
||||
<div class="bottom">
|
||||
<div class="status">
|
||||
<el-tag v-if="job.status === 'running'" type="warning">执行中</el-tag>
|
||||
<el-tag v-if="job.status === 'idle'" :type="job.lastStatusCode === 'ok' ? 'primary' : 'danger'">空闲</el-tag>
|
||||
<el-tag v-if="job.status === 'running'" type="warning">{{ $t('执行中') }}</el-tag>
|
||||
<el-tag v-if="job.status === 'idle'" :type="job.lastStatusCode === 'ok' ? 'primary' : 'danger'">{{
|
||||
$t('空闲')
|
||||
}}</el-tag>
|
||||
</div>
|
||||
<div class="handler">
|
||||
<el-button
|
||||
|
@ -141,7 +141,7 @@ export default {
|
||||
this.$router.push({ path: '/cmd' })
|
||||
}
|
||||
if (command === 'clearCache') {
|
||||
this.$confirm('清除缓存会将系统初始化,包括登录状态、主题、语言设置等,是否继续?', '提示', {
|
||||
this.$confirm(this.$t('清除缓存会将系统初始化,包括登录状态、主题、语言设置等,是否继续?'), this.$t('提示'), {
|
||||
type: 'info',
|
||||
})
|
||||
.then(() => {
|
||||
@ -159,9 +159,9 @@ export default {
|
||||
})
|
||||
}
|
||||
if (command === 'outLogin') {
|
||||
this.$confirm('确认是否退出当前用户?', '提示', {
|
||||
this.$confirm(this.$t('确认是否退出当前用户?'), this.$t('提示'), {
|
||||
type: 'warning',
|
||||
confirmButtonText: '退出',
|
||||
confirmButtonText: this.$t('退出'),
|
||||
confirmButtonClass: 'el-button--danger',
|
||||
})
|
||||
.then(() => {
|
||||
|
@ -4,11 +4,11 @@
|
||||
<img src="@/assets/img/404.png" />
|
||||
</div>
|
||||
<div class="router-err__content">
|
||||
<h2>无权限或找不到页面</h2>
|
||||
<p>当前页面无权限访问或者打开了一个不存在的链接,请检查当前账户权限和链接的可访问性。</p>
|
||||
<el-button @click="goHome" plain round type="primary">返回首页</el-button>
|
||||
<el-button @click="goLogin" plain round type="primary">重新登录</el-button>
|
||||
<el-button @click="goBack" round type="primary">返回上一页</el-button>
|
||||
<h2>{{ $t('无权限或找不到页面') }}</h2>
|
||||
<p>{{ $t('当前页面无权限访问或者打开了一个不存在的链接,请检查当前账户权限和链接的可访问性。') }}</p>
|
||||
<el-button @click="goHome" plain round type="primary">{{ $t('返回首页') }}</el-button>
|
||||
<el-button @click="goLogin" plain round type="primary">{{ $t('重新登录') }}</el-button>
|
||||
<el-button @click="goBack" round type="primary">{{ $t('返回上一页') }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
|
@ -3,7 +3,6 @@ export default {
|
||||
'15分钟': '15 minutes',
|
||||
'1分钟': '1 minute',
|
||||
'20分钟': '20 minutes',
|
||||
'24小时免登录': '24-hour login-free',
|
||||
'25分钟': '25 minutes',
|
||||
'30分钟': '30 minutes',
|
||||
'35分钟': '35 minutes',
|
||||
@ -13,129 +12,433 @@ export default {
|
||||
'55分钟': '55 minutes',
|
||||
'5分钟': '5 minutes',
|
||||
'60分钟': '60 minutes',
|
||||
'用户名 / 手机 / 邮箱': 'Username / Mobile phone / Email',
|
||||
'耗时(毫秒)': '耗时(毫秒)',
|
||||
'还没有账号?': "Don't have an account?",
|
||||
'上次执行耗时(毫秒)': 'Last execution time (milliseconds)',
|
||||
'作业编号 / 作业名称': 'Job ID / Job name',
|
||||
'作业编号 / 执行编号': 'Job ID / Execution ID',
|
||||
'删除 {count} 项': 'Delete the {count} item',
|
||||
'日志编号 / 用户 / 客户端IP': 'Log ID / User / Client IP',
|
||||
'日志编号 / 登录名 / 客户端IP': 'Log ID / Login Name / Client IP',
|
||||
'消息编号 / 消息主题 / 消息内容': 'Message ID / Message subject / Message content',
|
||||
'用户编号 / 用户名 / 手机号 / 邮箱 / 备注': 'User ID / Username / Mobile Phone Number / Email / Remarks',
|
||||
'确定删除选中的 {count} 项吗?': 'Are you sure you want to delete the selected {count} item?',
|
||||
'角色编号 / 角色名称 / 备注': 'Role ID / Role Name / Remarks',
|
||||
'部门编号 / 部门名称 / 备注': 'Department ID / Department Name / Remarks',
|
||||
'项名 / 项值': 'Item Name / Item Value',
|
||||
English: 'English',
|
||||
上传头像: '上传头像',
|
||||
个人设置: 'Personal settings',
|
||||
主题样式: 'Theme style',
|
||||
主题颜色: 'Theme color',
|
||||
二维码登录: 'QR code login',
|
||||
人工审核: '人工审核',
|
||||
上传头像: 'Upload your avatar',
|
||||
上次执行: 'Last executed',
|
||||
上次执行时间: 'Last Execution Time',
|
||||
上级菜单: 'Parent menu',
|
||||
上级部门: 'Parent department',
|
||||
下次执行时间: 'Next execution time',
|
||||
下次执行时间编号: 'Next execution time ID',
|
||||
个人中心: 'Personal Center',
|
||||
个人设置: 'Settings',
|
||||
主题样式: 'Theme styles',
|
||||
主题颜色: 'Theme colors',
|
||||
人工审核: 'Manual review',
|
||||
从不: 'Never',
|
||||
作业中心: '作业中心',
|
||||
关于项目: '关于项目',
|
||||
其他登录方式: 'Other login methods',
|
||||
内存使用量: '内存使用量',
|
||||
创建新账号: 'Create a new account',
|
||||
创建时间: '创建时间',
|
||||
剪裁: '剪裁',
|
||||
代码: 'Code',
|
||||
仪表板: 'Dashboard',
|
||||
住宅地址: 'Residential address',
|
||||
住宅电话: 'Residential phones',
|
||||
作业中心: 'Job Center',
|
||||
作业分布: 'Job distribution',
|
||||
作业名称: 'Job name',
|
||||
作业名称不能为空: 'The job name cannot be empty',
|
||||
作业状态: 'Status',
|
||||
作业编号: 'Job ID',
|
||||
作业趋势: 'Job trends',
|
||||
保存: 'Save',
|
||||
修改密码: 'Change your password',
|
||||
修改时间: 'Modify time',
|
||||
修改者用户名: 'Modifier username',
|
||||
修改者编号: 'Modifier ID',
|
||||
全部: 'All',
|
||||
其他设置: 'Other settings',
|
||||
内存使用量: 'Memory usage',
|
||||
出生日期: 'Date of birth',
|
||||
创建时间: 'Creation time',
|
||||
创建者用户名: 'Creator username',
|
||||
创建者编号: 'Creator ID',
|
||||
初始密码: 'Initial password',
|
||||
删除作业: 'Delete job',
|
||||
删除消息: 'Delete message',
|
||||
别名: 'Alias',
|
||||
剪裁: 'Crop',
|
||||
功能坞: 'Dock',
|
||||
启用: '启用',
|
||||
响应码: '响应码',
|
||||
图标名称: '图标名称',
|
||||
基本设置: '基本设置',
|
||||
备注: '备注',
|
||||
天: '天',
|
||||
头像: '头像',
|
||||
存储空间信息: '存储空间信息',
|
||||
客户端IP: '客户端IP',
|
||||
密码: '密码',
|
||||
已扫描: 'Scanned',
|
||||
开始日期: '开始日期',
|
||||
忘记密码: 'Forgot your password?',
|
||||
所属角色: '所属角色',
|
||||
所属部门: '所属部门',
|
||||
手机号: '手机号',
|
||||
手机号登录: 'Mobile phone login',
|
||||
手机号码: '手机号码',
|
||||
原始数据: 'Raw data',
|
||||
取消: 'Cancel',
|
||||
同步接口: 'Synchronize Interface',
|
||||
启用: 'Enable',
|
||||
启用状态: 'Enabled status',
|
||||
响应状态码: 'Response status code',
|
||||
响应码: 'Response code',
|
||||
唯一编码: 'Unique code',
|
||||
图标名称: 'Icon name',
|
||||
图标选择器: 'Icon selector',
|
||||
地区: 'Region',
|
||||
基本信息: 'Basic information',
|
||||
基本设置: 'Basic settings',
|
||||
备注: 'Remarks',
|
||||
大: 'Large',
|
||||
天: 'Days',
|
||||
失败: 'Failed',
|
||||
头像: 'Avatar',
|
||||
婚姻状况: 'Marital status',
|
||||
字典分类: 'Dictionary Classification',
|
||||
客户端IP: 'Client IP',
|
||||
密码: 'Password',
|
||||
小: 'Small',
|
||||
工作单位: 'Work unit',
|
||||
工作台: 'Workbench',
|
||||
工作地址: 'Work address',
|
||||
工作电话: 'Work phone',
|
||||
已应用的查询条件: 'Applied query conditions',
|
||||
开发依赖: 'Development dependencies',
|
||||
开启人工审核: 'Enable manual review',
|
||||
开始日期: 'Start date',
|
||||
性别: 'Gender',
|
||||
成功: 'Successful',
|
||||
我的消息: 'My messages',
|
||||
所属字典: 'Dictionary',
|
||||
所属角色: 'Role',
|
||||
所属部门: 'Department',
|
||||
手机号: 'Mobile',
|
||||
手机号码: 'Mobile phone number',
|
||||
手风琴菜单: 'Accordion menu',
|
||||
折叠菜单: 'Collapsible menu',
|
||||
排序: '排序',
|
||||
接口名称: '接口名称',
|
||||
接口描述: '接口描述',
|
||||
接口路径: '接口路径',
|
||||
描述: '描述',
|
||||
搜索: '搜索',
|
||||
操作: '操作',
|
||||
操作日志: '操作日志',
|
||||
操作系统: '操作系统',
|
||||
数据管理: '数据管理',
|
||||
数据范围: '数据范围',
|
||||
斑马纹: '斑马纹',
|
||||
新消息: '新消息',
|
||||
方法: '方法',
|
||||
无限权限: '无限权限',
|
||||
日志时间: '日志时间',
|
||||
日志编号: '日志编号',
|
||||
时钟: '时钟',
|
||||
显示仪表板: '显示仪表板',
|
||||
执行用户: 'Executing user',
|
||||
执行用户不能为空: 'Executing user cannot be empty',
|
||||
执行用户编号: 'Executing user ID',
|
||||
执行耗时: 'Execution time',
|
||||
执行计划: 'Execution plan',
|
||||
执行计划不正确: 'Execution plan is incorrect',
|
||||
执行记录: 'Execution record',
|
||||
折叠菜单: 'Collapse menu',
|
||||
排序: 'Sort',
|
||||
接口名称: 'API name',
|
||||
接口描述: 'API description',
|
||||
接口权限: 'API permissions',
|
||||
接口路径: 'API path',
|
||||
控制台: 'Console',
|
||||
控制台视图: 'Console view',
|
||||
提示: 'Prompt',
|
||||
搜索: 'Search',
|
||||
操作系统: 'Operating system',
|
||||
操作结果: 'Operation result',
|
||||
政治面貌: 'Political affiliation',
|
||||
数据版本: 'Data version',
|
||||
数据管理: 'Data management',
|
||||
数据范围: 'Data scope',
|
||||
整页路由: 'Full page routing',
|
||||
文化程度: 'Educational level',
|
||||
斑马纹: 'Zebra pattern',
|
||||
新增作业: 'Add job',
|
||||
新增字典项: 'Add Dictionary Item',
|
||||
新增消息: 'Add Message',
|
||||
新增用户: 'Add User',
|
||||
新增角色: 'Add Role',
|
||||
新增部门: 'Add Department',
|
||||
新增配置: 'Add Configuration',
|
||||
新密码: 'New password',
|
||||
新手机号码: 'New mobile phone number',
|
||||
新手机验证码: 'New mobile verification code',
|
||||
新消息: 'New message',
|
||||
方法: 'Method',
|
||||
无限权限: 'Unlimited permissions',
|
||||
日志编号: 'Log ID',
|
||||
旧密码: 'Old password',
|
||||
时间: 'Time',
|
||||
是否隐藏: 'Is hidden',
|
||||
显示仪表板: 'Display dashboard',
|
||||
显示名称: 'Display name',
|
||||
更换手机: 'Change mobile phone',
|
||||
更新日志: 'Change logs',
|
||||
查看作业: 'View job',
|
||||
查看字典项: 'View Dictionary Item',
|
||||
查看消息: 'View Message',
|
||||
查看用户: 'View User',
|
||||
查看角色: 'View Role',
|
||||
查看部门: 'View Department',
|
||||
查看配置: 'View Configuration',
|
||||
查询: 'Search',
|
||||
标签: 'Tag',
|
||||
标签栏: 'Tab bar',
|
||||
样式: '样式',
|
||||
框架布局: 'Frame layout',
|
||||
模块名称: '模块名称',
|
||||
模块类型: '模块类型',
|
||||
模块说明: '模块说明',
|
||||
模拟3秒后自动扫描: 'Simulate automatic scan after 3 seconds',
|
||||
欢迎: '欢迎',
|
||||
注册时间: '注册时间',
|
||||
注释信息: '注释信息',
|
||||
滑动过期: '滑动过期',
|
||||
版本信息: '版本信息',
|
||||
状态: '状态',
|
||||
用户: '用户',
|
||||
用户名: '用户名',
|
||||
用户名称: '用户名称',
|
||||
用户注册: '用户注册',
|
||||
用户编号: '用户编号',
|
||||
电子邮箱: '电子邮箱',
|
||||
样式: 'Style',
|
||||
框架布局: 'Framework layout',
|
||||
档案信息: 'File information',
|
||||
模块名称: 'Module name',
|
||||
模块类型: 'Module type',
|
||||
模块说明: 'Module description',
|
||||
正常: 'Normal',
|
||||
每分钟: 'Every Minute',
|
||||
每周星期日零点: 'Every Sunday at Midnight',
|
||||
每天零点: 'Every Day at Midnight',
|
||||
每小时: 'Every Hour',
|
||||
每月一号零点: 'The First of Every Month at Midnight',
|
||||
每月最后一天零点: 'The Last Day of Every Month at Midnight',
|
||||
毕业学校: 'Graduation school',
|
||||
民族: 'Ethnic group',
|
||||
注册时间: 'Registration time',
|
||||
注释信息: 'Annotation information',
|
||||
消息中心: 'Message center',
|
||||
消息主题: 'Message subject',
|
||||
消息内容: 'Message content',
|
||||
消息摘要: 'Message summary',
|
||||
消息类型: 'Message type',
|
||||
消息编号: 'Message ID',
|
||||
清除缓存: 'Clear cache',
|
||||
滑动过期: 'Sliding expiration',
|
||||
状态: 'Status',
|
||||
状态码: 'Status Code',
|
||||
用于控制角色登录后控制台的视图: 'Used to control the console view after role login',
|
||||
用于登录系统: 'Used to log in to the system',
|
||||
用户代理: 'User agent',
|
||||
用户名: 'Username',
|
||||
用户名称: 'User name',
|
||||
用户注册: 'User registration',
|
||||
用户注册设置: 'User registration settings',
|
||||
用户编号: 'User ID',
|
||||
电子邮箱: 'Email',
|
||||
界面语言: 'Interface language',
|
||||
登录: 'Log in',
|
||||
登录名: 'Login name',
|
||||
登录密码: 'Login password',
|
||||
登录结果: 'Login result',
|
||||
登录账号: 'Login account',
|
||||
真实姓名: 'Real name',
|
||||
短信验证码: 'SMS verification code',
|
||||
确认新密码: 'Confirm new password',
|
||||
禁用: 'Disable',
|
||||
简体中文: 'Simplified Chinese',
|
||||
粘贴SVG代码: '粘贴SVG代码',
|
||||
系统设置: '系统设置',
|
||||
纵向边框: '纵向边框',
|
||||
籍贯: 'Native place',
|
||||
类型: 'Type',
|
||||
粘贴SVG代码: 'Paste SVG code',
|
||||
系统设置: 'System settings',
|
||||
紧急联系人: 'Emergency contact',
|
||||
纵向边框: 'Vertical border',
|
||||
经典: 'Classic',
|
||||
结束日期: '结束日期',
|
||||
绝对过期: '绝对过期',
|
||||
缓存命中率: '缓存命中率',
|
||||
缓存数量: '缓存数量',
|
||||
缓存管理: '缓存管理',
|
||||
缓存统计: '缓存统计',
|
||||
自动登出: 'Auto logout',
|
||||
至: '至',
|
||||
表单代码: '表单代码',
|
||||
表格代码: '表格代码',
|
||||
表格尺寸: '表格尺寸',
|
||||
表格设置: '表格设置',
|
||||
角色名称: '角色名称',
|
||||
角色编号: '角色编号',
|
||||
请使用微信扫一扫登录: 'Please use WeChat to scan and log in',
|
||||
请在设备中点击授权登录: 'Please authorize and log in on your device',
|
||||
请求方式: '请求方式',
|
||||
请求服务: '请求服务',
|
||||
请输入密码: 'Please enter your password',
|
||||
请输入用户名: 'Please enter your username',
|
||||
请选择左侧菜单后操作: '请选择左侧菜单后操作',
|
||||
账号信息: '账号信息',
|
||||
账号登录: 'Account login',
|
||||
路径: '路径',
|
||||
输入关键字进行过滤: '输入关键字进行过滤',
|
||||
进度环: '进度环',
|
||||
通栏: 'Full column',
|
||||
通知设置: '通知设置',
|
||||
邮箱: '邮箱',
|
||||
部门名称: '部门名称',
|
||||
部门编号: '部门编号',
|
||||
配置编号: '配置编号',
|
||||
键值: '键值',
|
||||
键名: '键名',
|
||||
项值: '项值',
|
||||
项名: '项名',
|
||||
黑夜模式: 'Dark mode',
|
||||
绑定手机: 'Bind mobile phone',
|
||||
结束日期: 'End date',
|
||||
结果: 'Result',
|
||||
绝对过期: 'Absolute expiration',
|
||||
缓存命中率: 'Cache hit rate',
|
||||
缓存数量: 'Cache quantity',
|
||||
编辑作业: 'Edit job',
|
||||
编辑字典项: 'Edit Dictionary Item',
|
||||
编辑消息: 'Edit Message',
|
||||
编辑用户: 'Edit User',
|
||||
编辑角色: 'Edit Role',
|
||||
编辑部门: 'Edit Department',
|
||||
编辑配置: 'Edit Configuration',
|
||||
耗时: 'Duration',
|
||||
职业: 'Occupation',
|
||||
联系人地址: 'Contact address',
|
||||
联系人手机号: 'Contact mobile number',
|
||||
自动登出: 'Automatic logout',
|
||||
自定义: 'Custom',
|
||||
至: 'To',
|
||||
菜单别名: 'Menu alias',
|
||||
菜单图标: 'Menu icon',
|
||||
菜单显示名字: 'Menu display name',
|
||||
菜单权限: 'Menu permissions',
|
||||
菜单高亮: 'Menu highlight',
|
||||
表单代码: 'Form code',
|
||||
表格代码: 'Table code',
|
||||
表格尺寸: 'Table size',
|
||||
表格设置: 'Table settings',
|
||||
规则类型: 'Rule type',
|
||||
视图: 'View',
|
||||
角色名称: 'Role name',
|
||||
角色编号: 'Role ID',
|
||||
设置邮箱: 'Set email',
|
||||
访问分布: 'Access distribution',
|
||||
访问趋势: 'Access trends',
|
||||
证件号码: 'ID number',
|
||||
证件类型: 'ID type',
|
||||
请再次输入新密码: 'Please enter the new password again',
|
||||
请求体: 'Request body',
|
||||
请求头: 'Request header',
|
||||
请求方不能为空: 'Requester cannot be empty',
|
||||
请求方式: 'Request method',
|
||||
请求方法: 'Request method',
|
||||
请求服务: 'Request service',
|
||||
请求的网络地址: 'Requested network address',
|
||||
请求的网络地址不正确: 'Requested network address is incorrect',
|
||||
请输入关键词后检索: 'Please enter keywords and search',
|
||||
请输入地区或代码: 'Please enter region or code',
|
||||
请输入当前密码: 'Please enter current password',
|
||||
请输入手机号: 'Please enter your mobile phone number',
|
||||
请输入新密码: 'Please enter a new password',
|
||||
请输入订单号: 'Please enter the order ID',
|
||||
请输入邮箱: 'Please enter your email address',
|
||||
请输入部门名称: 'Please enter the name of the department',
|
||||
请选择左侧菜单后操作: 'Please select a menu on the left before proceeding',
|
||||
请选择月份: 'Please select a month',
|
||||
请选择类型: 'Please select a type',
|
||||
请选择通知类型: 'Please select a notification type',
|
||||
账号信息: 'Account information',
|
||||
路径: 'Path',
|
||||
路由地址: 'Routing address',
|
||||
身高: 'Height',
|
||||
输入关键字进行过滤: 'Enter keywords to filter',
|
||||
运行依赖: 'Run dependencies',
|
||||
退出登录: 'Logout',
|
||||
送至用户: 'Send to user',
|
||||
送至角色: 'Send to role',
|
||||
送至部门: 'Send to department',
|
||||
选择部门: 'Select department',
|
||||
通栏: 'Full screen',
|
||||
邮箱: 'Email',
|
||||
邮箱地址: 'Email address',
|
||||
邮箱验证码: 'Email verification code',
|
||||
部门名称: 'Department name',
|
||||
部门编号: 'Department ID',
|
||||
配置编号: 'Configuration ID',
|
||||
重定向: 'Redirect',
|
||||
重置: 'Reset',
|
||||
键值: 'Key value',
|
||||
键名: 'Key name',
|
||||
隐藏菜单: 'Hide Menu',
|
||||
隐藏面包屑: 'Hide Breadcrumb',
|
||||
顶级菜单: 'Top menu',
|
||||
项值: 'Item value',
|
||||
项名: 'Item name',
|
||||
颜色: 'Color',
|
||||
黑夜模式: 'Night mode',
|
||||
默认: 'Default',
|
||||
默认角色: '默认角色',
|
||||
默认部门: '默认部门',
|
||||
默认角色: 'Default role',
|
||||
默认部门: 'Default department',
|
||||
'清除缓存会将系统初始化,包括登录状态、主题、语言设置等,是否继续?':
|
||||
'Clearing the cache will reset the system, including login status, theme, language settings, etc. Are you sure you want to continue?',
|
||||
'确认是否退出当前用户?': 'Confirm if you want to log out the current user?',
|
||||
退出: 'Exit',
|
||||
账号登录: 'Account login',
|
||||
手机号登录: 'Phone number login',
|
||||
'忘记密码?': 'Forgot password?',
|
||||
'24小时免登录': '24-hour auto-login',
|
||||
'还没有账号?': 'No account yet?',
|
||||
创建新账号: 'Create a new account',
|
||||
返回登录: 'Return to login',
|
||||
注册新账号: 'Register a new account',
|
||||
平台服务协议: 'Platform service agreement',
|
||||
我已阅读并同意: 'I have read and agreed to',
|
||||
下一步: 'Next',
|
||||
上一步: 'Previous',
|
||||
'请输入包含英文、数字的8位以上密码': 'Please enter a password containing English and numbers of 8 or more digits',
|
||||
请再一次输入登录密码: 'Please enter your login password again',
|
||||
请输入登录账号: 'Please enter your login account',
|
||||
请输入登录密码: 'Please enter your login password',
|
||||
确认密码: 'Confirm password',
|
||||
用户名已被使用: 'Username has been used',
|
||||
请阅读并同意协议: 'Please read and agree to the agreement',
|
||||
填写账号: 'Fill in the account',
|
||||
验证手机: 'Verify mobile phone',
|
||||
注册成功: 'Registration successful',
|
||||
'Star 后可登录': 'Star to login',
|
||||
登录: 'Login',
|
||||
获取验证码: 'Get verification code',
|
||||
提交: 'Submit',
|
||||
重置密码: 'Reset password',
|
||||
填写新密码: 'Fill in the new password',
|
||||
完成重置: 'Complete reset',
|
||||
请完成安全验证: 'complete the security verification',
|
||||
向右滑动完成验证: 'Slide to the right',
|
||||
可以使用登录账号以及手机号登录系统: 'You can log in to the system using the login account and mobile phone number',
|
||||
前去登录: 'Go to login',
|
||||
验证失败: 'Verification failed',
|
||||
'{secs} 秒 验证成功': '{secs} secs verification successful',
|
||||
密码重置成功: 'Password reset successful',
|
||||
'请牢记自己的新密码,返回登录后使用新密码登录': 'Please remember your new password. Log in again using the new password',
|
||||
请再一次输入新密码: 'Please enter the new password again',
|
||||
两次输入密码不一致: 'The two passwords entered are inconsistent',
|
||||
必须提供当前登录用户密码才能进行更改: 'You must provide the current login user password to change',
|
||||
设置密码: 'Set password',
|
||||
今天: 'Today',
|
||||
昨天: 'Yesterday',
|
||||
最近三天: 'Last 3 days',
|
||||
最近一周: 'Last week',
|
||||
最近一月: 'Last month',
|
||||
最近三月: 'Last 3 months',
|
||||
最近六月: 'Last 6 months',
|
||||
最近一年: 'Last year',
|
||||
查看: 'View',
|
||||
编辑: 'Edit',
|
||||
删除: 'Delete',
|
||||
重新加载: 'Reload',
|
||||
包含: 'Contains',
|
||||
不含: 'Does not contain',
|
||||
'以 x 开始': 'Starts with x',
|
||||
'非 x 开始': 'Does not start with x',
|
||||
'以 x 结束': 'Ends with x',
|
||||
'非 x 结束': 'Does not end with x',
|
||||
数值范围: 'Numeric range',
|
||||
日期范围: 'Date range',
|
||||
为其一: 'Is one of',
|
||||
非其一: 'Is not one of',
|
||||
'仅显示 {field} {operator}:': 'Only show {field} {operator}:',
|
||||
高级筛选: 'Advanced filtering',
|
||||
'是否确认删除?': 'Are you sure you want to delete?',
|
||||
'确定删除 {item} 吗?': 'Are you sure you want to delete {item}?',
|
||||
'确定 {title}?': 'Are you sure you want to {title}?',
|
||||
'执行耗时(毫秒)': 'Execution time (milliseconds)',
|
||||
响应体: 'Response body',
|
||||
响应头: 'Response header',
|
||||
执行时间编号: 'Execution time ID',
|
||||
新增字典: 'Add dictionary',
|
||||
字典名称: 'Dictionary name',
|
||||
字典编码: 'Dictionary code',
|
||||
父路径: 'Parent path',
|
||||
编辑字典: 'Edit dictionary',
|
||||
操作成功: 'Operation successful',
|
||||
发现新版本: 'New version found',
|
||||
'即将开始更新……': 'Update will start soon...',
|
||||
立即更新: 'Update now',
|
||||
'CPU 使用率': 'CPU usage',
|
||||
'Redis 运行时间': 'Redis running time',
|
||||
'Redis 版本': 'Redis version',
|
||||
最近一时: 'Recent hour',
|
||||
昨日此时: 'Yesterday now',
|
||||
用户: 'User',
|
||||
'日志详情:{id}': 'Log details: {id}',
|
||||
生成前端代码: 'Generate front-end code',
|
||||
生成后端代码: 'Generate back-end code',
|
||||
生成图标代码: 'Generate icon code',
|
||||
生成表格代码: 'Generate table code',
|
||||
生成表单代码: 'Generate form code',
|
||||
生成: 'Generate',
|
||||
本页消息已清空: 'This page message has been cleared',
|
||||
添加应用: 'Add application',
|
||||
我的常用: 'My common applications',
|
||||
全部应用: 'All applications',
|
||||
设置常用成功: 'Set common applications successfully',
|
||||
暂无搜索结果: 'No search results',
|
||||
'Cron 规则生成器': 'Cron rule generator',
|
||||
任意值: 'Any value',
|
||||
范围: 'Range',
|
||||
间隔: 'Interval',
|
||||
指定: 'Specified',
|
||||
秒: 'Seconds',
|
||||
分钟: 'Minutes',
|
||||
小时: 'Hours',
|
||||
日: 'Days',
|
||||
月: 'Months',
|
||||
周: 'Weeks',
|
||||
年: 'Years',
|
||||
频率: 'Frequency',
|
||||
本月最后一天: 'Last day of the month',
|
||||
不指定: 'Not specified',
|
||||
本月最后一周: 'Last week of the month',
|
||||
'已发起执行请求,5 秒后弹出执行结果': 'The execution request has been initiated. The execution result will pop up after 5 seconds',
|
||||
执行一次: 'Execute once',
|
||||
最后一周: 'Last week',
|
||||
忽略: 'Ignore',
|
||||
确认: 'Confirm',
|
||||
周日: 'Sunday',
|
||||
周一: 'Monday',
|
||||
周二: 'Tuesday',
|
||||
周三: 'Wednesday',
|
||||
周四: 'Thursday',
|
||||
周五: 'Friday',
|
||||
周六: 'Saturday',
|
||||
JSON格式化: 'JSON formatting',
|
||||
}
|
@ -1 +1,443 @@
|
||||
export default {}
|
||||
export default {
|
||||
'10分钟': '10分钟',
|
||||
'15分钟': '15分钟',
|
||||
'1分钟': '1分钟',
|
||||
'20分钟': '20分钟',
|
||||
'25分钟': '25分钟',
|
||||
'30分钟': '30分钟',
|
||||
'35分钟': '35分钟',
|
||||
'40分钟': '40分钟',
|
||||
'45分钟': '45分钟',
|
||||
'50分钟': '50分钟',
|
||||
'55分钟': '55分钟',
|
||||
'5分钟': '5分钟',
|
||||
'60分钟': '60分钟',
|
||||
'上次执行耗时(毫秒)': '上次执行耗时(毫秒)',
|
||||
'作业编号 / 作业名称': '作业编号 / 作业名称',
|
||||
'作业编号 / 执行编号': '作业编号 / 执行编号',
|
||||
'删除 {count} 项': '删除 {count} 项',
|
||||
'日志编号 / 用户 / 客户端IP': '日志编号 / 用户 / 客户端IP',
|
||||
'日志编号 / 登录名 / 客户端IP': '日志编号 / 登录名 / 客户端IP',
|
||||
'消息编号 / 消息主题 / 消息内容': '消息编号 / 消息主题 / 消息内容',
|
||||
'用户编号 / 用户名 / 手机号 / 邮箱 / 备注': '用户编号 / 用户名 / 手机号 / 邮箱 / 备注',
|
||||
'确定删除选中的 {count} 项吗?': '确定删除选中的 {count} 项吗?',
|
||||
'角色编号 / 角色名称 / 备注': '角色编号 / 角色名称 / 备注',
|
||||
'部门编号 / 部门名称 / 备注': '部门编号 / 部门名称 / 备注',
|
||||
'项名 / 项值': '项名 / 项值',
|
||||
English: 'English',
|
||||
上传头像: '上传头像',
|
||||
上次执行: '上次执行',
|
||||
上次执行时间: '上次执行时间',
|
||||
上级菜单: '上级菜单',
|
||||
上级部门: '上级部门',
|
||||
下次执行时间: '下次执行时间',
|
||||
下次执行时间编号: '下次执行时间编号',
|
||||
个人中心: '个人中心',
|
||||
个人设置: '个人设置',
|
||||
主题样式: '主题样式',
|
||||
主题颜色: '主题颜色',
|
||||
人工审核: '人工审核',
|
||||
从不: '从不',
|
||||
代码: '代码',
|
||||
仪表板: '仪表板',
|
||||
住宅地址: '住宅地址',
|
||||
住宅电话: '住宅电话',
|
||||
作业中心: '作业中心',
|
||||
作业分布: '作业分布',
|
||||
作业名称: '作业名称',
|
||||
作业名称不能为空: '作业名称不能为空',
|
||||
作业状态: '作业状态',
|
||||
作业编号: '作业编号',
|
||||
作业趋势: '作业趋势',
|
||||
保存: '保存',
|
||||
修改密码: '修改密码',
|
||||
修改时间: '修改时间',
|
||||
修改者用户名: '修改者用户名',
|
||||
修改者编号: '修改者编号',
|
||||
全部: '全部',
|
||||
其他设置: '其他设置',
|
||||
内存使用量: '内存使用量',
|
||||
出生日期: '出生日期',
|
||||
创建时间: '创建时间',
|
||||
创建者用户名: '创建者用户名',
|
||||
创建者编号: '创建者编号',
|
||||
初始密码: '初始密码',
|
||||
删除作业: '删除作业',
|
||||
删除消息: '删除消息',
|
||||
别名: '别名',
|
||||
剪裁: '剪裁',
|
||||
功能坞: '功能坞',
|
||||
原始数据: '原始数据',
|
||||
取消: '取消',
|
||||
同步接口: '同步接口',
|
||||
启用: '启用',
|
||||
启用状态: '启用状态',
|
||||
响应状态码: '响应状态码',
|
||||
响应码: '响应码',
|
||||
唯一编码: '唯一编码',
|
||||
图标名称: '图标名称',
|
||||
图标选择器: '图标选择器',
|
||||
地区: '地区',
|
||||
基本信息: '基本信息',
|
||||
基本设置: '基本设置',
|
||||
备注: '备注',
|
||||
大: '大',
|
||||
天: '天',
|
||||
失败: '失败',
|
||||
头像: '头像',
|
||||
婚姻状况: '婚姻状况',
|
||||
字典分类: '字典分类',
|
||||
客户端IP: '客户端IP',
|
||||
密码: '密码',
|
||||
小: '小',
|
||||
工作单位: '工作单位',
|
||||
工作台: '工作台',
|
||||
工作地址: '工作地址',
|
||||
工作电话: '工作电话',
|
||||
已应用的查询条件: '已应用的查询条件',
|
||||
开发依赖: '开发依赖',
|
||||
开启人工审核: '开启人工审核',
|
||||
开始日期: '开始日期',
|
||||
性别: '性别',
|
||||
成功: '成功',
|
||||
我的消息: '我的消息',
|
||||
所属字典: '所属字典',
|
||||
所属角色: '所属角色',
|
||||
所属部门: '所属部门',
|
||||
手机号: '手机号',
|
||||
手机号码: '手机号码',
|
||||
手风琴菜单: '手风琴菜单',
|
||||
执行用户: '执行用户',
|
||||
执行用户不能为空: '执行用户不能为空',
|
||||
执行用户编号: '执行用户编号',
|
||||
执行耗时: '执行耗时',
|
||||
执行计划: '执行计划',
|
||||
执行计划不正确: '执行计划不正确',
|
||||
执行记录: '执行记录',
|
||||
折叠菜单: '折叠菜单',
|
||||
排序: '排序',
|
||||
接口名称: '接口名称',
|
||||
接口描述: '接口描述',
|
||||
接口权限: '接口权限',
|
||||
接口路径: '接口路径',
|
||||
控制台: '控制台',
|
||||
控制台视图: '控制台视图',
|
||||
提示: '提示',
|
||||
搜索: '搜索',
|
||||
操作系统: '操作系统',
|
||||
操作结果: '操作结果',
|
||||
政治面貌: '政治面貌',
|
||||
数据版本: '数据版本',
|
||||
数据管理: '数据管理',
|
||||
数据范围: '数据范围',
|
||||
整页路由: '整页路由',
|
||||
文化程度: '文化程度',
|
||||
斑马纹: '斑马纹',
|
||||
新增作业: '新增作业',
|
||||
新增字典项: '新增字典项',
|
||||
新增消息: '新增消息',
|
||||
新增用户: '新增用户',
|
||||
新增角色: '新增角色',
|
||||
新增部门: '新增部门',
|
||||
新增配置: '新增配置',
|
||||
新密码: '新密码',
|
||||
新手机号码: '新手机号码',
|
||||
新手机验证码: '新手机验证码',
|
||||
新消息: '新消息',
|
||||
方法: '方法',
|
||||
无限权限: '无限权限',
|
||||
日志编号: '日志编号',
|
||||
旧密码: '旧密码',
|
||||
时间: '时间',
|
||||
是否隐藏: '是否隐藏',
|
||||
显示仪表板: '显示仪表板',
|
||||
显示名称: '显示名称',
|
||||
更换手机: '更换手机',
|
||||
更新日志: '更新日志',
|
||||
查看作业: '查看作业',
|
||||
查看字典项: '查看字典项',
|
||||
查看消息: '查看消息',
|
||||
查看用户: '查看用户',
|
||||
查看角色: '查看角色',
|
||||
查看部门: '查看部门',
|
||||
查看配置: '查看配置',
|
||||
查询: '查询',
|
||||
标签: '标签',
|
||||
标签栏: '标签栏',
|
||||
样式: '样式',
|
||||
框架布局: '框架布局',
|
||||
档案信息: '档案信息',
|
||||
模块名称: '模块名称',
|
||||
模块类型: '模块类型',
|
||||
模块说明: '模块说明',
|
||||
正常: '正常',
|
||||
每分钟: '每分钟',
|
||||
每周星期日零点: '每周星期日零点',
|
||||
每天零点: '每天零点',
|
||||
每小时: '每小时',
|
||||
每月一号零点: '每月一号零点',
|
||||
每月最后一天零点: '每月最后一天零点',
|
||||
毕业学校: '毕业学校',
|
||||
民族: '民族',
|
||||
注册时间: '注册时间',
|
||||
注释信息: '注释信息',
|
||||
消息中心: '消息中心',
|
||||
消息主题: '消息主题',
|
||||
消息内容: '消息内容',
|
||||
消息摘要: '消息摘要',
|
||||
消息类型: '消息类型',
|
||||
消息编号: '消息编号',
|
||||
清除缓存: '清除缓存',
|
||||
滑动过期: '滑动过期',
|
||||
状态: '状态',
|
||||
状态码: '状态码',
|
||||
用于控制角色登录后控制台的视图: '用于控制角色登录后控制台的视图',
|
||||
用于登录系统: '用于登录系统',
|
||||
用户代理: '用户代理',
|
||||
用户名: '用户名',
|
||||
用户名称: '用户名称',
|
||||
用户注册: '用户注册',
|
||||
用户注册设置: '用户注册设置',
|
||||
用户编号: '用户编号',
|
||||
电子邮箱: '电子邮箱',
|
||||
界面语言: '界面语言',
|
||||
登录名: '登录名',
|
||||
登录密码: '登录密码',
|
||||
登录结果: '登录结果',
|
||||
登录账号: '登录账号',
|
||||
真实姓名: '真实姓名',
|
||||
短信验证码: '短信验证码',
|
||||
确认新密码: '确认新密码',
|
||||
禁用: '禁用',
|
||||
简体中文: '简体中文',
|
||||
籍贯: '籍贯',
|
||||
类型: '类型',
|
||||
粘贴SVG代码: '粘贴SVG代码',
|
||||
系统设置: '系统设置',
|
||||
紧急联系人: '紧急联系人',
|
||||
纵向边框: '纵向边框',
|
||||
经典: '经典',
|
||||
绑定手机: '绑定手机',
|
||||
结束日期: '结束日期',
|
||||
结果: '结果',
|
||||
绝对过期: '绝对过期',
|
||||
缓存命中率: '缓存命中率',
|
||||
缓存数量: '缓存数量',
|
||||
编辑作业: '编辑作业',
|
||||
编辑字典项: '编辑字典项',
|
||||
编辑消息: '编辑消息',
|
||||
编辑用户: '编辑用户',
|
||||
编辑角色: '编辑角色',
|
||||
编辑部门: '编辑部门',
|
||||
编辑配置: '编辑配置',
|
||||
耗时: '耗时',
|
||||
职业: '职业',
|
||||
联系人地址: '联系人地址',
|
||||
联系人手机号: '联系人手机号',
|
||||
自动登出: '自动登出',
|
||||
自定义: '自定义',
|
||||
至: '至',
|
||||
菜单别名: '菜单别名',
|
||||
菜单图标: '菜单图标',
|
||||
菜单显示名字: '菜单显示名字',
|
||||
菜单权限: '菜单权限',
|
||||
菜单高亮: '菜单高亮',
|
||||
表单代码: '表单代码',
|
||||
表格代码: '表格代码',
|
||||
表格尺寸: '表格尺寸',
|
||||
表格设置: '表格设置',
|
||||
规则类型: '规则类型',
|
||||
视图: '视图',
|
||||
角色名称: '角色名称',
|
||||
角色编号: '角色编号',
|
||||
设置邮箱: '设置邮箱',
|
||||
访问分布: '访问分布',
|
||||
访问趋势: '访问趋势',
|
||||
证件号码: '证件号码',
|
||||
证件类型: '证件类型',
|
||||
请再次输入新密码: '请再次输入新密码',
|
||||
请求体: '请求体',
|
||||
请求头: '请求头',
|
||||
请求方不能为空: '请求方不能为空',
|
||||
请求方式: '请求方式',
|
||||
请求方法: '请求方法',
|
||||
请求服务: '请求服务',
|
||||
请求的网络地址: '请求的网络地址',
|
||||
请求的网络地址不正确: '请求的网络地址不正确',
|
||||
请输入关键词后检索: '请输入关键词后检索',
|
||||
请输入地区或代码: '请输入地区或代码',
|
||||
请输入当前密码: '请输入当前密码',
|
||||
请输入手机号: '请输入手机号',
|
||||
请输入新密码: '请输入新密码',
|
||||
请输入订单号: '请输入订单号',
|
||||
请输入邮箱: '请输入邮箱',
|
||||
请输入部门名称: '请输入部门名称',
|
||||
请选择左侧菜单后操作: '请选择左侧菜单后操作',
|
||||
请选择月份: '请选择月份',
|
||||
请选择类型: '请选择类型',
|
||||
请选择通知类型: '请选择通知类型',
|
||||
账号信息: '账号信息',
|
||||
路径: '路径',
|
||||
路由地址: '路由地址',
|
||||
身高: '身高',
|
||||
输入关键字进行过滤: '输入关键字进行过滤',
|
||||
运行依赖: '运行依赖',
|
||||
退出登录: '退出登录',
|
||||
送至用户: '送至用户',
|
||||
送至角色: '送至角色',
|
||||
送至部门: '送至部门',
|
||||
选择部门: '选择部门',
|
||||
通栏: '通栏',
|
||||
邮箱: '邮箱',
|
||||
邮箱地址: '邮箱地址',
|
||||
邮箱验证码: '邮箱验证码',
|
||||
部门名称: '部门名称',
|
||||
部门编号: '部门编号',
|
||||
配置编号: '配置编号',
|
||||
重定向: '重定向',
|
||||
重置: '重置',
|
||||
键值: '键值',
|
||||
键名: '键名',
|
||||
隐藏菜单: '隐藏菜单',
|
||||
隐藏面包屑: '隐藏面包屑',
|
||||
顶级菜单: '顶级菜单',
|
||||
项值: '项值',
|
||||
项名: '项名',
|
||||
颜色: '颜色',
|
||||
黑夜模式: '黑夜模式',
|
||||
默认: '默认',
|
||||
默认角色: '默认角色',
|
||||
默认部门: '默认部门',
|
||||
'清除缓存会将系统初始化,包括登录状态、主题、语言设置等,是否继续?': '清除缓存会将系统初始化,包括登录状态、主题、语言设置等,是否继续?',
|
||||
'确认是否退出当前用户?': '确认是否退出当前用户?',
|
||||
退出: '退出',
|
||||
账号登录: '账号登录',
|
||||
手机号登录: '手机号登录',
|
||||
'忘记密码?': '忘记密码?',
|
||||
'24小时免登录': '24小时免登录',
|
||||
'还没有账号?': '还没有账号?',
|
||||
创建新账号: '创建新账号',
|
||||
返回登录: '返回登录',
|
||||
注册新账号: '注册新账号',
|
||||
平台服务协议: '平台服务协议',
|
||||
我已阅读并同意: '我已阅读并同意',
|
||||
下一步: '下一步',
|
||||
上一步: '上一步',
|
||||
'请输入包含英文、数字的8位以上密码': '请输入包含英文、数字的8位以上密码',
|
||||
请再一次输入登录密码: '请再一次输入登录密码',
|
||||
请输入登录账号: '请输入登录账号',
|
||||
请输入登录密码: '请输入登录密码',
|
||||
确认密码: '确认密码',
|
||||
用户名已被使用: '用户名已被使用',
|
||||
请阅读并同意协议: '请阅读并同意协议',
|
||||
填写账号: '填写账号',
|
||||
验证手机: '验证手机',
|
||||
注册成功: '注册成功',
|
||||
'Star 后可登录': 'Star 后可登录',
|
||||
登录: '登录',
|
||||
获取验证码: '获取验证码',
|
||||
提交: '提交',
|
||||
重置密码: '重置密码',
|
||||
填写新密码: '填写新密码',
|
||||
完成重置: '完成重置',
|
||||
请完成安全验证: '请完成安全验证',
|
||||
向右滑动完成验证: '向右滑动完成验证',
|
||||
可以使用登录账号以及手机号登录系统: '可以使用登录账号以及手机号登录系统',
|
||||
前去登录: '前去登录',
|
||||
验证失败: '验证失败',
|
||||
'{secs} 秒 验证成功': '{secs} 秒 验证成功',
|
||||
密码重置成功: '密码重置成功',
|
||||
'请牢记自己的新密码,返回登录后使用新密码登录': '请牢记自己的新密码,返回登录后使用新密码登录',
|
||||
请再一次输入新密码: '请再一次输入新密码',
|
||||
两次输入密码不一致: '两次输入密码不一致',
|
||||
必须提供当前登录用户密码才能进行更改: '必须提供当前登录用户密码才能进行更改',
|
||||
设置密码: '设置密码',
|
||||
今天: '今天',
|
||||
昨天: '昨天',
|
||||
最近三天: '最近三天',
|
||||
最近一周: '最近一周',
|
||||
最近一月: '最近一月',
|
||||
最近三月: '最近三月',
|
||||
最近六月: '最近六月',
|
||||
最近一年: '最近一年',
|
||||
查看: '查看',
|
||||
编辑: '编辑',
|
||||
删除: '删除',
|
||||
重新加载: '重新加载',
|
||||
包含: '包含',
|
||||
不含: '不含',
|
||||
'以 x 开始': '以 x 开始',
|
||||
'非 x 开始': '非 x 开始',
|
||||
'以 x 结束': '以 x 结束',
|
||||
'非 x 结束': '非 x 结束',
|
||||
数值范围: '数值范围',
|
||||
日期范围: '日期范围',
|
||||
为其一: '为其一',
|
||||
非其一: '非其一',
|
||||
'仅显示 {field} {operator}:': '仅显示 {field} {operator}:',
|
||||
高级筛选: '高级筛选',
|
||||
'是否确认删除?': '是否确认删除?',
|
||||
'确定删除 {item} 吗?': '确定删除 {item} 吗?',
|
||||
'确定 {title}?': '确定 {title}?',
|
||||
'执行耗时(毫秒)': '执行耗时(毫秒)',
|
||||
响应体: '响应体',
|
||||
响应头: '响应头',
|
||||
执行时间编号: '执行时间编号',
|
||||
新增字典: '新增字典',
|
||||
字典名称: '字典名称',
|
||||
字典编码: '字典编码',
|
||||
父路径: '父路径',
|
||||
编辑字典: '编辑字典',
|
||||
操作成功: '操作成功',
|
||||
发现新版本: '发现新版本',
|
||||
'即将开始更新……': '即将开始更新……',
|
||||
立即更新: '立即更新',
|
||||
'CPU 使用率': 'CPU 使用率',
|
||||
'Redis 运行时间': 'Redis 运行时间',
|
||||
'Redis 版本': 'Redis 版本',
|
||||
最近一时: '最近一时',
|
||||
昨日此时: '昨日此时',
|
||||
用户: '用户',
|
||||
'日志详情:{id}': '日志详情:{id}',
|
||||
生成前端代码: '生成前端代码',
|
||||
生成后端代码: '生成后端代码',
|
||||
生成图标代码: '生成图标代码',
|
||||
生成表格代码: '生成表格代码',
|
||||
生成表单代码: '生成表单代码',
|
||||
生成: '生成',
|
||||
本页消息已清空: '本页消息已清空',
|
||||
添加应用: '添加应用',
|
||||
我的常用: '我的常用',
|
||||
全部应用: '全部应用',
|
||||
设置常用成功: '设置常用成功',
|
||||
暂无搜索结果: '暂无搜索结果',
|
||||
'Cron 规则生成器': 'Cron 规则生成器',
|
||||
任意值: '任意值',
|
||||
范围: '范围',
|
||||
间隔: '间隔',
|
||||
指定: '指定',
|
||||
秒: '秒',
|
||||
分钟: '分钟',
|
||||
小时: '小时',
|
||||
日: '日',
|
||||
月: '月',
|
||||
周: '周',
|
||||
年: '年',
|
||||
频率: '频率',
|
||||
本月最后一天: '本月最后一天',
|
||||
不指定: '不指定',
|
||||
本月最后一周: '本月最后一周',
|
||||
'已发起执行请求,5 秒后弹出执行结果': '已发起执行请求,5 秒后弹出执行结果',
|
||||
执行一次: '执行一次',
|
||||
最后一周: '最后一周',
|
||||
忽略: '忽略',
|
||||
确认: '确认',
|
||||
周日: '周日',
|
||||
周一: '周一',
|
||||
周二: '周二',
|
||||
周三: '周三',
|
||||
周四: '周四',
|
||||
周五: '周五',
|
||||
周六: '周六',
|
||||
JSON格式化: 'JSON格式化',
|
||||
}
|
@ -6,7 +6,7 @@ html {
|
||||
height: 100%;
|
||||
background-color: #f6f8f9;
|
||||
font-size: var(--el-font-size-base);
|
||||
font-family: 'Lucida Console', 'Microsoft YaHei', 'monospace';
|
||||
font-family: 'Arial', 'Microsoft YaHei', 'monospace';
|
||||
}
|
||||
|
||||
a {
|
||||
|
@ -166,6 +166,10 @@
|
||||
}
|
||||
|
||||
.el-table {
|
||||
td {
|
||||
font-family: 'Lucida Console', 'Microsoft YaHei', 'monospace';
|
||||
}
|
||||
|
||||
.el-link:after {
|
||||
border-bottom: 1px solid var(--el-link-text-color);
|
||||
bottom: 0;
|
||||
|
@ -11,9 +11,9 @@
|
||||
</el-icon>
|
||||
</div>
|
||||
<div class="title">
|
||||
<h2>生成前端代码</h2>
|
||||
<h2>{{ $t('生成前端代码') }}</h2>
|
||||
<p>
|
||||
<el-button @click="generateJsCode()">生成</el-button>
|
||||
<el-button @click="generateJsCode()">{{ $t('生成') }}</el-button>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@ -28,7 +28,7 @@
|
||||
</el-icon>
|
||||
</div>
|
||||
<div class="title">
|
||||
<h2>生成后端代码</h2>
|
||||
<h2>{{ $t('生成后端代码') }}</h2>
|
||||
<p>
|
||||
<el-input v-model="formCs.type" :placeholder="$t('模块类型')"></el-input>
|
||||
</p>
|
||||
@ -39,7 +39,7 @@
|
||||
<el-input v-model="formCs.moduleRemark" :placeholder="$t('模块说明')"></el-input>
|
||||
</p>
|
||||
<p>
|
||||
<el-button @click="generateCsCode()">生成</el-button>
|
||||
<el-button @click="generateCsCode()">{{ $t('生成') }}</el-button>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
@ -54,7 +54,7 @@
|
||||
</el-icon>
|
||||
</div>
|
||||
<div class="title">
|
||||
<h2>生成图标代码</h2>
|
||||
<h2>{{ $t('生成图标代码') }}</h2>
|
||||
<p>
|
||||
<el-input v-model="form.iconName" :placeholder="$t('图标名称')"></el-input>
|
||||
</p>
|
||||
@ -64,7 +64,7 @@
|
||||
<p>
|
||||
<el-row align="middle">
|
||||
<el-col :span="12">
|
||||
<el-button @click="generateIconCode()">生成</el-button>
|
||||
<el-button @click="generateIconCode()">{{ $t('生成') }}</el-button>
|
||||
</el-col>
|
||||
<el-col :span="12">
|
||||
<el-link href="https://www.iconfont.cn/" target="_blank">Iconfont</el-link>
|
||||
@ -84,7 +84,7 @@
|
||||
</el-icon>
|
||||
</div>
|
||||
<div class="title">
|
||||
<h2>生成表格代码</h2>
|
||||
<h2>{{ $t('生成表格代码') }}</h2>
|
||||
<p>
|
||||
<el-input v-model="form.summaryInfo" :placeholder="$t('注释信息')" type="textarea"></el-input>
|
||||
</p>
|
||||
@ -95,7 +95,7 @@
|
||||
<el-input v-model="form.formCode" :placeholder="$t('表单代码')" type="textarea"></el-input>
|
||||
</p>
|
||||
<p>
|
||||
<el-button @click="generateTableCode()">生成</el-button>
|
||||
<el-button @click="generateTableCode()">{{ $t('生成') }}</el-button>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -9,7 +9,7 @@
|
||||
<div class="common-header-title">{{ title }}</div>
|
||||
</div>
|
||||
<div class="common-header-right">
|
||||
<router-link to="/guest/login">返回登录</router-link>
|
||||
<router-link to="/guest/login">{{ $t('返回登录') }}</router-link>
|
||||
</div>
|
||||
</el-header>
|
||||
<el-main>
|
||||
|
@ -11,7 +11,7 @@
|
||||
<el-checkbox v-model="autoLogin" :label="$t('24小时免登录')"></el-checkbox>
|
||||
</el-col>
|
||||
<el-col :span="12" class="login-forgot">
|
||||
<router-link to="/guest/reset-password">{{ $t('忘记密码') }}?</router-link>
|
||||
<router-link to="/guest/reset-password">{{ $t('忘记密码?') }}</router-link>
|
||||
</el-col>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
@ -20,7 +20,7 @@
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
<div class="login-reg">
|
||||
{{ $t('还没有账号?') }}
|
||||
{{ $t('还没有账号?') }}
|
||||
<router-link to="/guest/register">{{ $t('创建新账号') }}</router-link>
|
||||
</div>
|
||||
</el-form>
|
||||
|
@ -1,11 +1,17 @@
|
||||
<template>
|
||||
<el-form :model="form" :rules="rules" @keyup.enter="login" label-width="0" ref="loginForm" size="large">
|
||||
<na-form-phone v-model="form" :vue="this" code-field="code" form-name="loginForm" phone-field="destDevice"></na-form-phone>
|
||||
<na-form-phone
|
||||
v-model="form"
|
||||
:phone-place-holder="$t('手机号码')"
|
||||
:vue="this"
|
||||
code-field="code"
|
||||
form-name="loginForm"
|
||||
phone-field="destDevice"></na-form-phone>
|
||||
<el-form-item>
|
||||
<el-button :loading="loading" @click="login" class="w100p" round type="primary">{{ $t('登录') }}</el-button>
|
||||
</el-form-item>
|
||||
<div class="login-reg">
|
||||
{{ $t('还没有账号?') }}
|
||||
{{ $t('还没有账号?') }}
|
||||
<router-link to="/guest/register">{{ $t('创建新账号') }}</router-link>
|
||||
</div>
|
||||
</el-form>
|
||||
|
@ -5,7 +5,7 @@
|
||||
<el-step :title="$t('验证手机')" />
|
||||
<el-step :title="$t('注册成功')" />
|
||||
</el-steps>
|
||||
<el-form v-if="stepActive === 0" :model="form" :rules="rules" @keyup.enter="next" label-width="120" ref="stepForm_0" size="large">
|
||||
<el-form v-if="stepActive === 0" :model="form" :rules="rules" @keyup.enter="next" label-width="15rem" ref="stepForm_0" size="large">
|
||||
<el-form-item :label="$t('登录账号')" prop="userName">
|
||||
<el-input v-model="form.userName" :placeholder="$t('请输入登录账号')" clearable maxlength="16"></el-input>
|
||||
</el-form-item>
|
||||
@ -18,7 +18,7 @@
|
||||
show-password
|
||||
type="password"></el-input>
|
||||
<sc-password-strength v-model="form.passwordText"></sc-password-strength>
|
||||
<div class="el-form-item-msg">请输入包含英文、数字的8位以上密码</div>
|
||||
<div class="el-form-item-msg">{{ $t('请输入包含英文、数字的8位以上密码') }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('确认密码')" prop="passwordText2">
|
||||
<el-input
|
||||
@ -30,8 +30,8 @@
|
||||
type="password"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="" prop="agree">
|
||||
<el-checkbox v-model="form.agree" label="">已阅读并同意</el-checkbox>
|
||||
<span @click="showAgree = true" class="link">《平台服务协议》</span>
|
||||
<el-checkbox v-model="form.agree" label="">{{ $t('我已阅读并同意') }}</el-checkbox>
|
||||
<span @click="showAgree = true" class="link">《{{ $t('平台服务协议') }}》</span>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-form v-if="stepActive === 1" :model="form" :rules="rules" ref="stepForm_1" size="large">
|
||||
@ -39,25 +39,25 @@
|
||||
v-model="form.verifySmsCodeReq"
|
||||
:code-field="['verifySmsCodeReq.code', 'code']"
|
||||
:phone-field="['verifySmsCodeReq.destDevice', 'destDevice']"
|
||||
:phone-place-holder="$t('手机号码')"
|
||||
:vue="this"
|
||||
form-name="stepForm_1"></na-form-phone>
|
||||
</el-form>
|
||||
<div v-if="stepActive >= 2">
|
||||
<el-result :sub-title="$t('可以使用登录账号以及手机号登录系统')" :title="$t('注册成功')" icon="success">
|
||||
<template #extra>
|
||||
<el-button @click="goLogin" size="large" type="primary">前去登录</el-button>
|
||||
<el-button @click="goLogin" size="large" type="primary">{{ $t('前去登录') }}</el-button>
|
||||
</template>
|
||||
</el-result>
|
||||
</div>
|
||||
<el-form size="large" style="text-align: center">
|
||||
<el-button v-if="stepActive > 0 && stepActive < 2" @click="pre" size="large">上一步</el-button>
|
||||
<el-button v-if="stepActive < 1" @click="next" size="large" type="primary">下一步</el-button>
|
||||
<el-button v-if="stepActive === 1" :loading="loading" @click="save" size="large" type="primary">提 交</el-button>
|
||||
<el-button v-if="stepActive > 0 && stepActive < 2" @click="pre" size="large">{{ $t('上一步') }}</el-button>
|
||||
<el-button v-if="stepActive < 1" @click="next" size="large" type="primary">{{ $t('下一步') }}</el-button>
|
||||
<el-button v-if="stepActive === 1" :loading="loading" @click="save" size="large" type="primary">{{ $t('提交') }}</el-button>
|
||||
</el-form>
|
||||
<el-dialog v-model="showAgree" :title="$t('平台服务协议')" destroy-on-close>
|
||||
平台服务协议
|
||||
<template #footer>
|
||||
<el-button @click="showAgree = false">取消</el-button>
|
||||
<el-button @click="showAgree = false">{{ $t('取消') }}</el-button>
|
||||
<el-button
|
||||
@click="
|
||||
() => {
|
||||
@ -65,8 +65,8 @@
|
||||
form.agree = true
|
||||
}
|
||||
"
|
||||
type="primary"
|
||||
>我已阅读并同意
|
||||
type="primary">
|
||||
{{ $t('我已阅读并同意') }}
|
||||
</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
@ -102,7 +102,7 @@ export default {
|
||||
{
|
||||
validator: (rule, value, callback) => {
|
||||
if (!value) {
|
||||
callback(new Error('请阅读并同意协议'))
|
||||
callback(new Error(this.$t('请阅读并同意协议')))
|
||||
} else {
|
||||
callback()
|
||||
}
|
||||
@ -120,7 +120,7 @@ export default {
|
||||
userName: valueEquals,
|
||||
id: this.form.id,
|
||||
})
|
||||
return res.data ? callback() : callback(new Error('用户名已被使用'))
|
||||
return res.data ? callback() : callback(new Error(this.$t('用户名已被使用')))
|
||||
} catch (ex) {
|
||||
return callback(new Error(ex.data.msg.userName[0].children))
|
||||
}
|
||||
|
@ -4,30 +4,31 @@
|
||||
<el-step :title="$t('填写新密码')" />
|
||||
<el-step :title="$t('完成重置')" />
|
||||
</el-steps>
|
||||
<el-form v-if="stepActive === 0" :label-width="120" :model="form" :rules="rules" @keyup.enter="save" ref="form" size="large">
|
||||
<el-form v-if="stepActive === 0" :model="form" :rules="rules" @keyup.enter="save" label-width="15rem" ref="form" size="large">
|
||||
<na-form-phone
|
||||
v-model="form.verifySmsCodeReq"
|
||||
:code-field="['verifySmsCodeReq.code', 'code']"
|
||||
:code-label="$t('短信验证码')"
|
||||
:phone-field="['verifySmsCodeReq.destDevice', 'destDevice']"
|
||||
:phone-label="$t('手机号码')"
|
||||
:phone-place-holder="$t('手机号码')"
|
||||
:vue="this"
|
||||
form-name="form"></na-form-phone>
|
||||
<el-form-item :label="$t('新密码')" prop="passwordText">
|
||||
<el-input v-model="form.passwordText" :placeholder="$t('请输入新密码')" show-password></el-input>
|
||||
<sc-password-strength v-model="form.passwordText"></sc-password-strength>
|
||||
<div class="el-form-item-msg">请输入包含英文、数字的8位以上密码</div>
|
||||
<div class="el-form-item-msg">{{ $t('请输入包含英文、数字的8位以上密码') }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('确认新密码')" prop="passwordText2">
|
||||
<el-input v-model="form.passwordText2" :placeholder="$t('请再一次输入新密码')" show-password></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button :loading="loading" @click="save" type="primary">提交</el-button>
|
||||
<el-button :loading="loading" @click="save" type="primary">{{ $t('提交') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<el-result v-if="stepActive >= 1" :sub-title="$t('请牢记自己的新密码,返回登录后使用新密码登录')" :title="$t('密码重置成功')" icon="success">
|
||||
<el-result v-if="stepActive >= 1" :sub-title="$t('请牢记自己的新密码,返回登录后使用新密码登录')" :title="$t('密码重置成功')" icon="success">
|
||||
<template #extra>
|
||||
<el-button @click="backLogin" size="large" type="primary">返回登录</el-button>
|
||||
<el-button @click="backLogin" size="large" type="primary">{{ $t('返回登录') }}</el-button>
|
||||
</template>
|
||||
</el-result>
|
||||
</common-page>
|
||||
|
@ -1,5 +1,5 @@
|
||||
<template>
|
||||
<el-card v-loading="loading" header="更新日志" shadow="never">
|
||||
<el-card v-loading="loading" :header="$t('更新日志')" shadow="never">
|
||||
<div v-html="changeLog" class="change-log"></div>
|
||||
</el-card>
|
||||
</template>
|
||||
|
@ -1,11 +1,11 @@
|
||||
<template>
|
||||
<div v-loading="loading">
|
||||
<el-card header="开发依赖" shadow="never">
|
||||
<el-card :header="$t('开发依赖')" shadow="never">
|
||||
<el-descriptions :column="2" border>
|
||||
<el-descriptions-item v-for="(value, key) in packageJson.devDependencies" :key="key" :label="key">{{ value }}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
</el-card>
|
||||
<el-card header="运行依赖" shadow="never">
|
||||
<el-card :header="$t('运行依赖')" shadow="never">
|
||||
<el-descriptions :column="2" border>
|
||||
<el-descriptions-item v-for="(value, key) in packageJson.dependencies" :key="key" :label="key">{{ value }}</el-descriptions-item>
|
||||
</el-descriptions>
|
||||
@ -20,9 +20,9 @@
|
||||
import packageJson from '/package.json'
|
||||
|
||||
export default {
|
||||
title: '模块信息',
|
||||
title: null,
|
||||
icon: 'el-icon-monitor',
|
||||
description: '当前项目模块信息',
|
||||
description: null,
|
||||
data() {
|
||||
return {
|
||||
loading: true,
|
||||
@ -31,6 +31,8 @@ export default {
|
||||
}
|
||||
},
|
||||
created() {
|
||||
this.title = this.$t('模块信息')
|
||||
this.description = this.$t('当前项目模块信息')
|
||||
this.getModules()
|
||||
},
|
||||
methods: {
|
||||
|
@ -4,7 +4,7 @@
|
||||
<img alt="" src="@/assets/img/logo.png" />
|
||||
<h2>{{ packageJson.name }}</h2>
|
||||
<p>{{ ver }}</p>
|
||||
<el-link href="https://github.com/nsnail/NetAdmin" target="_blank">喜欢就点个 Star⭐️ 吧!</el-link>
|
||||
<el-link href="https://github.com/nsnail/NetAdmin" target="_blank">{{ $t('喜欢就点个 Star⭐️ 吧!') }}</el-link>
|
||||
</div>
|
||||
</el-card>
|
||||
</template>
|
||||
|
@ -54,7 +54,7 @@
|
||||
添加部件
|
||||
</div>
|
||||
<div>
|
||||
<el-button v-if="customizing" @click="save" icon="el-icon-check" round type="primary">完成</el-button>
|
||||
<el-button v-if="customizing" @click="save" icon="el-icon-check" round type="primary">{{ $t('完成') }}</el-button>
|
||||
</div>
|
||||
<div @click="close()" class="widgets-aside-close">
|
||||
<el-icon>
|
||||
@ -122,7 +122,7 @@
|
||||
</div>
|
||||
</el-main>
|
||||
<el-footer>
|
||||
<el-button @click="backDefault()" size="small">恢复默认</el-button>
|
||||
<el-button @click="backDefault()" size="small">{{ $t('恢复默认') }}</el-button>
|
||||
</el-footer>
|
||||
</el-container>
|
||||
</div>
|
||||
|
@ -26,7 +26,7 @@
|
||||
|
||||
<el-drawer v-model="modsDrawer" :size="570" :title="$t('添加应用')" destroy-on-close>
|
||||
<div class="setMods">
|
||||
<h4>我的常用 ( {{ myMods.length }} )</h4>
|
||||
<h4>{{ $t('我的常用') }} ( {{ myMods.length }} )</h4>
|
||||
<draggable v-model="myMods" animation="200" group="people" item-key="path" tag="ul">
|
||||
<template #item="{ element }">
|
||||
<li :style="{ background: element.meta.color || '#909399' }">
|
||||
@ -39,7 +39,7 @@
|
||||
</draggable>
|
||||
</div>
|
||||
<div class="setMods">
|
||||
<h4>全部应用 ( {{ filterMods.length }} )</h4>
|
||||
<h4>{{ $t('全部应用') }} ( {{ filterMods.length }} )</h4>
|
||||
<draggable v-model="filterMods" :sort="false" animation="200" group="people" item-key="path" tag="ul">
|
||||
<template #item="{ element }">
|
||||
<li :style="{ background: element.meta.color || '#909399' }">
|
||||
@ -52,8 +52,8 @@
|
||||
</draggable>
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button @click="modsDrawer = false">取消</el-button>
|
||||
<el-button @click="saveMods" type="primary">保存</el-button>
|
||||
<el-button @click="modsDrawer = false">{{ $t('取消') }}</el-button>
|
||||
<el-button @click="saveMods" type="primary">{{ $t('保存') }}</el-button>
|
||||
</template>
|
||||
</el-drawer>
|
||||
</div>
|
||||
@ -113,7 +113,7 @@ export default {
|
||||
'MY_MODS',
|
||||
this.myMods.map((v) => v.name),
|
||||
)
|
||||
this.$message.success('设置常用成功')
|
||||
this.$message.success(this.$t('设置常用成功'))
|
||||
this.modsDrawer = false
|
||||
},
|
||||
},
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<el-card :header="$t('账号信息')" shadow="never">
|
||||
<el-form :model="form" label-width="10rem" ref="form">
|
||||
<el-form :model="form" label-width="15rem" ref="form">
|
||||
<el-form-item :label="$t('头像')">
|
||||
<sc-upload v-model="form.avatar" :onSuccess="updateUser" :title="$t('上传头像')"></sc-upload>
|
||||
</el-form-item>
|
||||
@ -13,7 +13,7 @@
|
||||
<el-form-item :label="$t('密码')">
|
||||
<div class="flex w100p gap05">
|
||||
<el-input readonly value="******"></el-input>
|
||||
<el-button @click="setPasswordClick">设置密码</el-button>
|
||||
<el-button @click="setPasswordClick">{{ $t('设置密码') }}</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('注册时间')">
|
||||
@ -28,7 +28,7 @@
|
||||
<el-form-item :label="$t('电子邮箱')">
|
||||
<div class="flex w100p gap05">
|
||||
<el-input v-model="form.email" readonly></el-input>
|
||||
<el-button @click="setEmailClick">设置邮箱</el-button>
|
||||
<el-button @click="setEmailClick">{{ $t('设置邮箱') }}</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
@ -18,6 +18,7 @@
|
||||
v-model="form"
|
||||
:code-label="$t('邮箱验证码')"
|
||||
:email-label="$t('邮箱地址')"
|
||||
:email-place-holder="$t('邮箱地址')"
|
||||
:vue="this"
|
||||
code-field="code"
|
||||
email-field="destDevice"
|
||||
@ -27,8 +28,8 @@
|
||||
</el-form>
|
||||
|
||||
<template #footer>
|
||||
<el-button @click="visible = false">取 消</el-button>
|
||||
<el-button :loading="loading" @click="submit" type="primary">保 存</el-button>
|
||||
<el-button @click="visible = false">{{ $t('取消') }}</el-button>
|
||||
<el-button :loading="loading" @click="submit" type="primary">{{ $t('保存') }}</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
@ -58,7 +59,7 @@ export default {
|
||||
const res = await this.$API.sys_user.setEmail.post(this.form)
|
||||
this.$emit('success', res.data)
|
||||
this.visible = false
|
||||
this.$message.success('操作成功')
|
||||
this.$message.success(this.$t('操作成功'))
|
||||
} catch {}
|
||||
this.loading = false
|
||||
},
|
||||
|
@ -25,6 +25,7 @@
|
||||
:code-label="$t('新手机验证码')"
|
||||
:phone-field="['newverifySmsCodeReq.destDevice', 'destDevice']"
|
||||
:phone-label="$t('新手机号码')"
|
||||
:phone-place-holder="$t('新手机号码')"
|
||||
:vue="this"
|
||||
form-name="form" />
|
||||
</el-col>
|
||||
@ -32,8 +33,8 @@
|
||||
</el-form>
|
||||
|
||||
<template #footer>
|
||||
<el-button @click="visible = false">取 消</el-button>
|
||||
<el-button :loading="loading" @click="submit" type="primary">保 存</el-button>
|
||||
<el-button @click="visible = false">{{ $t('取消') }}</el-button>
|
||||
<el-button :loading="loading" @click="submit" type="primary">{{ $t('保存') }}</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
@ -63,7 +64,7 @@ export default {
|
||||
const res = await this.$API.sys_user.setMobile.post(this.form)
|
||||
this.$emit('success', res.data, this.mode)
|
||||
this.visible = false
|
||||
this.$message.success($t('操作成功'))
|
||||
this.$message.success(this.$t('操作成功'))
|
||||
} catch {}
|
||||
this.loading = false
|
||||
},
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<el-dialog v-model="visible" :title="$t('修改密码')" :width="800" @closed="$emit('closed')" destroy-on-close>
|
||||
<el-form :model="form" :rules="rules" label-width="120" ref="form">
|
||||
<el-form :model="form" :rules="rules" label-width="15rem" ref="form">
|
||||
<el-form-item :label="$t('旧密码')" prop="oldPassword">
|
||||
<el-input
|
||||
v-model="form.oldPassword"
|
||||
@ -9,7 +9,7 @@
|
||||
maxlength="16"
|
||||
show-password
|
||||
type="password"></el-input>
|
||||
<div class="el-form-item-msg">必须提供当前登录用户密码才能进行更改</div>
|
||||
<div class="el-form-item-msg">{{ $t('必须提供当前登录用户密码才能进行更改') }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('新密码')" prop="newPassword">
|
||||
<el-input
|
||||
@ -20,7 +20,7 @@
|
||||
show-password
|
||||
type="password"></el-input>
|
||||
<sc-password-strength v-model="form.newPassword"></sc-password-strength>
|
||||
<div class="el-form-item-msg">请输入包含英文、数字的8位以上密码</div>
|
||||
<div class="el-form-item-msg">{{ $t('请输入包含英文、数字的8位以上密码') }}</div>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('确认新密码')" prop="confirmNewPassword">
|
||||
<el-input
|
||||
@ -33,8 +33,8 @@
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="visible = false">取 消</el-button>
|
||||
<el-button :loading="loading" @click="submit" type="primary">保 存</el-button>
|
||||
<el-button @click="visible = false">{{ $t('取消') }}</el-button>
|
||||
<el-button :loading="loading" @click="submit" type="primary">{{ $t('保存') }}</el-button>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</template>
|
||||
@ -63,7 +63,7 @@ export default {
|
||||
const res = await this.$API.sys_user.setPassword.post(this.form)
|
||||
this.$emit('success', res.data, this.mode)
|
||||
this.visible = false
|
||||
this.$message.success('操作成功')
|
||||
this.$message.success(this.$t('操作成功'))
|
||||
} catch {
|
||||
//
|
||||
}
|
||||
|
@ -5,7 +5,7 @@
|
||||
<sc-table-column :label="$t('业务名称')" min-width="240" prop="title"></sc-table-column>
|
||||
<sc-table-column label="IP" prop="ip" width="150"></sc-table-column>
|
||||
<sc-table-column :label="$t('结果')" prop="code" width="150">
|
||||
<el-tag type="success">成功</el-tag>
|
||||
<el-tag type="success">{{ $t('成功') }}</el-tag>
|
||||
</sc-table-column>
|
||||
<sc-table-column :label="$t('操作时间')" prop="time" width="150"></sc-table-column>
|
||||
</scTable>
|
||||
|
@ -1,6 +1,6 @@
|
||||
<template>
|
||||
<el-card :header="$t('主题样式')" shadow="never">
|
||||
<el-form class="mt-4" label-width="10rem">
|
||||
<el-form class="mt-4" label-width="15rem">
|
||||
<el-form-item :label="$t('黑夜模式')">
|
||||
<el-switch v-model="config.dark" active-icon="el-icon-moon" inactive-icon="el-icon-sunny" inline-prompt />
|
||||
</el-form-item>
|
||||
@ -27,7 +27,7 @@
|
||||
</el-form>
|
||||
</el-card>
|
||||
<el-card :header="$t('个人设置')" class="mt-4" shadow="never">
|
||||
<el-form class="mt-4" label-width="10rem">
|
||||
<el-form class="mt-4" label-width="15rem">
|
||||
<el-form-item :label="$t('界面语言')">
|
||||
<el-select v-model="config.lang">
|
||||
<el-option :label="$t('简体中文')" value="zh-cn" />
|
||||
|
@ -3,7 +3,7 @@
|
||||
<el-header>
|
||||
<div class="left-panel"></div>
|
||||
<div class="right-panel">
|
||||
<el-button :loading="loading" @click="sync" icon="sc-icon-sync" type="primary">同步接口</el-button>
|
||||
<el-button :loading="loading" @click="sync" icon="sc-icon-sync" type="primary">{{ $t('同步接口') }}</el-button>
|
||||
</div>
|
||||
</el-header>
|
||||
<el-main class="nopadding">
|
||||
@ -28,7 +28,7 @@
|
||||
align="center"
|
||||
prop="method"
|
||||
sortable="custom"
|
||||
width="100" />
|
||||
width="150" />
|
||||
<el-table-column :label="$t('接口描述')" prop="summary" />
|
||||
</sc-table>
|
||||
</el-main>
|
||||
|
10
src/frontend/admin/src/views/sys/cache/index.vue
vendored
10
src/frontend/admin/src/views/sys/cache/index.vue
vendored
@ -5,25 +5,25 @@
|
||||
<el-row :gutter="15">
|
||||
<el-col :lg="4">
|
||||
<el-card shadow="never">
|
||||
<sc-statistic :value="statistics.version" group-separator title="Redis 版本"></sc-statistic>
|
||||
<sc-statistic :title="$t('Redis 版本')" :value="statistics.version" group-separator></sc-statistic>
|
||||
</el-card>
|
||||
</el-col>
|
||||
<el-col :lg="4">
|
||||
<el-card shadow="never">
|
||||
<sc-statistic
|
||||
:suffix="$t('天')"
|
||||
:title="$t('Redis 运行时间')"
|
||||
:value="parseInt(statistics.upTime / 86400)"
|
||||
group-separator
|
||||
title="Redis 运行时间"></sc-statistic>
|
||||
group-separator></sc-statistic>
|
||||
</el-card>
|
||||
</el-col>
|
||||
<el-col :lg="4">
|
||||
<el-card shadow="never">
|
||||
<sc-statistic
|
||||
:title="$t('CPU 使用率')"
|
||||
:value="statistics.upTime ? (statistics.usedCpu / statistics.upTime).toFixed(2) : 0"
|
||||
group-separator
|
||||
suffix="%"
|
||||
title="CPU 使用率"></sc-statistic>
|
||||
suffix="%"></sc-statistic>
|
||||
</el-card>
|
||||
</el-col>
|
||||
<el-col :lg="4">
|
||||
|
@ -13,8 +13,8 @@
|
||||
],
|
||||
},
|
||||
]"
|
||||
:label-width="6"
|
||||
@on-change="filterChange"
|
||||
label-width="10"
|
||||
ref="selectFilter"></sc-select-filter>
|
||||
</el-header>
|
||||
<el-header>
|
||||
@ -28,7 +28,7 @@
|
||||
</div>
|
||||
<div class="right-panel">
|
||||
<na-button-add :vue="this" />
|
||||
<el-button :disabled="selection.length === 0" @click="batchDel" icon="el-icon-delete" plain type="danger"></el-button>
|
||||
<na-button-bulk-del :api="$API.sys_config.bulkDelete" :vue="this" />
|
||||
</div>
|
||||
</el-header>
|
||||
<el-main class="nopadding">
|
||||
@ -51,7 +51,7 @@
|
||||
<el-table-column :label="$t('用户注册')" align="center">
|
||||
<el-table-column :label="$t('默认部门')" align="center" prop="userRegisterDept.name" width="150" />
|
||||
<el-table-column :label="$t('默认角色')" align="center" prop="userRegisterRole.name" width="150" />
|
||||
<el-table-column :label="$t('人工审核')" align="center" prop="userRegisterConfirm" width="100">
|
||||
<el-table-column :label="$t('人工审核')" align="center" prop="userRegisterConfirm" width="120">
|
||||
<template #default="scope">
|
||||
<el-switch v-model="scope.row.userRegisterConfirm" @change="changeSwitch($event, scope.row)"></el-switch>
|
||||
</template>
|
||||
@ -123,27 +123,10 @@ export default {
|
||||
},
|
||||
inject: ['reload'],
|
||||
methods: {
|
||||
async batchDel() {
|
||||
let loading
|
||||
try {
|
||||
await this.$confirm(`确定删除选中的 ${this.selection.length} 项吗?`, '提示', {
|
||||
type: 'warning',
|
||||
})
|
||||
loading = this.$loading()
|
||||
const res = await this.$API.sys_config.bulkDelete.post({
|
||||
items: this.selection,
|
||||
})
|
||||
this.$message.success(`删除 ${res.data} 项`)
|
||||
} catch {
|
||||
//
|
||||
}
|
||||
this.$refs.table.refresh()
|
||||
loading?.close()
|
||||
},
|
||||
async changeSwitch(event, row) {
|
||||
try {
|
||||
await this.$API.sys_config.edit.post(row)
|
||||
this.$message.success(`操作成功`)
|
||||
this.$message.success(this.$t('操作成功'))
|
||||
} catch {
|
||||
//
|
||||
}
|
||||
@ -159,7 +142,7 @@ export default {
|
||||
async rowDel(row) {
|
||||
try {
|
||||
const res = await this.$API.sys_config.delete.post({ id: row.id })
|
||||
this.$message.success(`删除 ${res.data} 项`)
|
||||
this.$message.success(this.$t('删除 {count} 项', { count: res.data }))
|
||||
} catch {
|
||||
//
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
<div v-loading="loading">
|
||||
<el-tabs v-if="!loading" tab-position="top">
|
||||
<el-tab-pane :label="$t('基本信息')">
|
||||
<el-form :disabled="mode === 'view'" :model="form" :rules="rules" label-width="10rem" ref="dialogForm">
|
||||
<el-form :disabled="mode === 'view'" :model="form" :rules="rules" label-width="15rem" ref="dialogForm">
|
||||
<el-collapse>
|
||||
<el-collapse-item :title="$t('用户注册设置')" name="1">
|
||||
<div style="margin: 1rem">
|
||||
@ -44,8 +44,8 @@
|
||||
</el-tabs>
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button @click="visible = false">取 消</el-button>
|
||||
<el-button v-if="mode !== 'view'" :loading="loading" @click="submit" type="primary">保 存</el-button>
|
||||
<el-button @click="visible = false">{{ $t('取消') }}</el-button>
|
||||
<el-button v-if="mode !== 'view'" :loading="loading" @click="submit" type="primary">{{ $t('保存') }}</el-button>
|
||||
</template>
|
||||
</sc-dialog>
|
||||
</template>
|
||||
@ -58,9 +58,9 @@ export default {
|
||||
return {
|
||||
mode: 'add',
|
||||
titleMap: {
|
||||
add: '新增配置',
|
||||
edit: '编辑配置',
|
||||
view: '查看配置',
|
||||
add: this.$t('新增配置'),
|
||||
edit: this.$t('编辑配置'),
|
||||
view: this.$t('查看配置'),
|
||||
},
|
||||
visible: false,
|
||||
loading: false,
|
||||
@ -102,7 +102,7 @@ export default {
|
||||
const res = await method.post(this.form)
|
||||
this.$emit('success', res.data, this.mode)
|
||||
this.visible = false
|
||||
this.$message.success('操作成功')
|
||||
this.$message.success(this.$t('操作成功'))
|
||||
} catch {
|
||||
///
|
||||
}
|
||||
|
@ -13,7 +13,7 @@
|
||||
],
|
||||
},
|
||||
]"
|
||||
:label-width="6"
|
||||
:label-width="10"
|
||||
@on-change="filterChange"
|
||||
ref="selectFilter"></sc-select-filter>
|
||||
</el-header>
|
||||
@ -24,7 +24,7 @@
|
||||
{
|
||||
type: 'input',
|
||||
field: ['root', 'keywords'],
|
||||
placeholder: '部门编号 / 部门名称 / 备注',
|
||||
placeholder: $t('部门编号 / 部门名称 / 备注'),
|
||||
style: 'width:25rem',
|
||||
},
|
||||
]"
|
||||
@ -35,7 +35,7 @@
|
||||
</div>
|
||||
<div class="right-panel">
|
||||
<na-button-add :vue="this" />
|
||||
<el-button :disabled="selection.length === 0" @click="batchDel" icon="el-icon-delete" plain type="danger"></el-button>
|
||||
<na-button-bulk-del :api="$API.sys_dept.bulkDelete" :vue="this" />
|
||||
</div>
|
||||
</el-header>
|
||||
<el-main class="nopadding">
|
||||
@ -62,7 +62,7 @@
|
||||
<el-table-column :label="$t('部门编号')" prop="id" sortable="custom" />
|
||||
<el-table-column :label="$t('部门名称')" prop="name" sortable="custom" />
|
||||
<el-table-column :label="$t('排序')" align="right" prop="sort" sortable="custom" />
|
||||
<el-table-column :label="$t('启用')" align="center" prop="enabled" sortable="custom" width="80">
|
||||
<el-table-column :label="$t('启用')" align="center" prop="enabled" sortable="custom" width="100">
|
||||
<template #default="scope">
|
||||
<el-switch v-model="scope.row.enabled" @change="changeSwitch($event, scope.row)"></el-switch>
|
||||
</template>
|
||||
@ -129,29 +129,12 @@ export default {
|
||||
async changeSwitch(event, row) {
|
||||
try {
|
||||
await this.$API.sys_dept.setEnabled.post(row)
|
||||
this.$message.success(`操作成功`)
|
||||
this.$message.success(this.$t('操作成功'))
|
||||
} catch {
|
||||
//
|
||||
}
|
||||
this.$refs.table.refresh()
|
||||
},
|
||||
async batchDel() {
|
||||
let loading
|
||||
try {
|
||||
await this.$confirm(`确定删除选中的 ${this.selection.length} 项吗?`, '提示', {
|
||||
type: 'warning',
|
||||
})
|
||||
loading = this.$loading()
|
||||
const res = await this.$API.sys_dept.bulkDelete.post({
|
||||
items: this.selection,
|
||||
})
|
||||
this.$message.success(`删除 ${res.data} 项`)
|
||||
} catch {
|
||||
//
|
||||
}
|
||||
this.$refs.table.refresh()
|
||||
loading?.close()
|
||||
},
|
||||
filterChange(data) {
|
||||
Object.entries(data).forEach(([key, value]) => {
|
||||
this.$refs.search.form.dy[key] = value === 'true' ? true : value === 'false' ? false : value
|
||||
@ -161,7 +144,7 @@ export default {
|
||||
async rowDel(row) {
|
||||
try {
|
||||
const res = await this.$API.sys_dept.delete.post({ id: row.id })
|
||||
this.$message.success(`删除 ${res.data} 项`)
|
||||
this.$message.success(this.$t('删除 {count} 项', { count: res.data }))
|
||||
} catch {
|
||||
//
|
||||
}
|
||||
|
@ -1,9 +1,9 @@
|
||||
<template>
|
||||
<sc-dialog v-model="visible" :title="`${titleMap[mode]}:${form?.id ?? '...'}`" :width="500" @closed="$emit('closed')" destroy-on-close>
|
||||
<sc-dialog v-model="visible" :title="`${titleMap[mode]}:${form?.id ?? '...'}`" :width="800" @closed="$emit('closed')" destroy-on-close>
|
||||
<div v-loading="loading">
|
||||
<el-tabs tab-position="top">
|
||||
<el-tab-pane :label="$t('基本信息')">
|
||||
<el-form :disabled="mode === 'view'" :model="form" :rules="rules" label-width="10rem" ref="dialogForm">
|
||||
<el-form :disabled="mode === 'view'" :model="form" :rules="rules" label-width="15rem" ref="dialogForm">
|
||||
<el-form-item :label="$t('上级部门')" prop="parentId">
|
||||
<el-cascader
|
||||
v-model="form.parentId"
|
||||
@ -39,8 +39,8 @@
|
||||
</el-tabs>
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button @click="visible = false">取 消</el-button>
|
||||
<el-button v-if="mode !== 'view'" :loading="loading" @click="submit" type="primary">保 存</el-button>
|
||||
<el-button @click="visible = false">{{ $t('取消') }}</el-button>
|
||||
<el-button v-if="mode !== 'view'" :loading="loading" @click="submit" type="primary">{{ $t('保存') }}</el-button>
|
||||
</template>
|
||||
</sc-dialog>
|
||||
</template>
|
||||
@ -53,9 +53,9 @@ export default {
|
||||
return {
|
||||
mode: 'add',
|
||||
titleMap: {
|
||||
add: '新增部门',
|
||||
edit: '编辑部门',
|
||||
view: '查看部门',
|
||||
add: this.$t('新增部门'),
|
||||
edit: this.$t('编辑部门'),
|
||||
view: this.$t('查看部门'),
|
||||
},
|
||||
visible: false,
|
||||
loading: false,
|
||||
@ -112,7 +112,7 @@ export default {
|
||||
const res = await method.post(this.form)
|
||||
this.$emit('success', res.data, this.mode)
|
||||
this.visible = false
|
||||
this.$message.success('操作成功')
|
||||
this.$message.success(this.$t('操作成功'))
|
||||
} catch {
|
||||
//
|
||||
}
|
||||
|
@ -24,7 +24,7 @@
|
||||
<span class="btn">
|
||||
<el-button-group size="small">
|
||||
<el-button @click.stop="edit(data)" icon="el-icon-edit"></el-button>
|
||||
<el-popconfirm :title="`确定删除 ${data.name} 吗?`" @confirm="del(data)">
|
||||
<el-popconfirm :title="$t('确定删除 {item} 吗?', { item: data.name })" @confirm="del(data)" width="20rem">
|
||||
<template #reference>
|
||||
<el-button @click.stop="() => {}" icon="el-icon-delete"></el-button>
|
||||
</template>
|
||||
@ -36,7 +36,7 @@
|
||||
</el-tree>
|
||||
</el-main>
|
||||
<el-footer>
|
||||
<el-button @click="add" icon="el-icon-plus" size="small" style="width: 100%" type="primary">字典分类</el-button>
|
||||
<el-button @click="add" icon="el-icon-plus" size="small" style="width: 100%" type="primary">{{ $t('字典分类') }}</el-button>
|
||||
</el-footer>
|
||||
</el-container>
|
||||
</el-aside>
|
||||
@ -123,7 +123,7 @@ export default {
|
||||
await this.$API.sys_dic.deleteCatalog.post({
|
||||
id: data.id,
|
||||
})
|
||||
this.$message.success('操作成功')
|
||||
this.$message.success(this.$t('操作成功'))
|
||||
} catch {
|
||||
//
|
||||
}
|
||||
|
@ -7,7 +7,7 @@
|
||||
{
|
||||
type: 'input',
|
||||
field: ['dy', 'keywords'],
|
||||
placeholder: '项名 / 项值',
|
||||
placeholder: $t('项名 / 项值'),
|
||||
style: 'width:20rem',
|
||||
},
|
||||
]"
|
||||
@ -17,7 +17,7 @@
|
||||
</div>
|
||||
<div class="right-panel">
|
||||
<na-button-add :data="{ catalogId: this.catalogId }" :vue="this" />
|
||||
<na-button-batch-del :api="$API.sys_dic.bulkDeleteContent" :vue="this" />
|
||||
<na-button-bulk-del :api="$API.sys_dic.bulkDeleteContent" :vue="this" />
|
||||
</div>
|
||||
</el-header>
|
||||
<el-main class="nopadding">
|
||||
@ -139,7 +139,7 @@ export default {
|
||||
async rowDel(row) {
|
||||
try {
|
||||
const res = await this.$API.sys_dic.deleteContent.post({ id: row.id })
|
||||
this.$message.success(`删除 ${res.data} 项`)
|
||||
this.$message.success(this.$t('删除 {count} 项', { count: res.data }))
|
||||
} catch {
|
||||
//
|
||||
}
|
||||
|
@ -27,8 +27,8 @@
|
||||
</el-tabs>
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button @click="visible = false">取 消</el-button>
|
||||
<el-button v-if="mode !== 'view'" :loading="loading" @click="submit" type="primary">保 存</el-button>
|
||||
<el-button @click="visible = false">{{ $t('取消') }}</el-button>
|
||||
<el-button v-if="mode !== 'view'" :loading="loading" @click="submit" type="primary">{{ $t('保存') }}</el-button>
|
||||
</template>
|
||||
</sc-dialog>
|
||||
</template>
|
||||
@ -41,9 +41,9 @@ export default {
|
||||
return {
|
||||
mode: 'add',
|
||||
titleMap: {
|
||||
view: '查看字典项',
|
||||
add: '新增字典项',
|
||||
edit: '编辑字典项',
|
||||
view: this.$t('查看字典项'),
|
||||
add: this.$t('新增字典项'),
|
||||
edit: this.$t('编辑字典项'),
|
||||
},
|
||||
visible: false,
|
||||
loading: false,
|
||||
@ -81,7 +81,7 @@ export default {
|
||||
const res = await method.post(this.form)
|
||||
this.$emit('success', res.data, this.mode)
|
||||
this.visible = false
|
||||
this.$message.success('操作成功')
|
||||
this.$message.success(this.$t('操作成功'))
|
||||
} catch {
|
||||
//
|
||||
}
|
||||
|
@ -2,9 +2,9 @@
|
||||
<sc-dialog v-model="visible" :title="`${titleMap[mode]}:${form?.id ?? '...'}`" :width="800" @closed="$emit('closed')" destroy-on-close>
|
||||
<el-form v-loading="loading" :model="form" :rules="rules" label-width="10rem" ref="dialogForm">
|
||||
<el-form-item :label="$t('字典名称')" prop="name">
|
||||
<el-input v-model="form.name" :placeholder="$t('字典显示名称')" clearable></el-input>
|
||||
<el-input v-model="form.name" :placeholder="$t('字典名称')" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('编码')" prop="code">
|
||||
<el-form-item :label="$t('字典编码')" prop="code">
|
||||
<el-input v-model="form.code" :placeholder="$t('字典编码')" clearable></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('父路径')" prop="parentId">
|
||||
@ -12,8 +12,8 @@
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="visible = false">取 消</el-button>
|
||||
<el-button :loading="loading" @click="submit" type="primary">保 存</el-button>
|
||||
<el-button @click="visible = false">{{ $t('取消') }}</el-button>
|
||||
<el-button :loading="loading" @click="submit" type="primary">{{ $t('保存') }}</el-button>
|
||||
</template>
|
||||
</sc-dialog>
|
||||
</template>
|
||||
@ -25,8 +25,8 @@ export default {
|
||||
return {
|
||||
mode: 'add',
|
||||
titleMap: {
|
||||
add: '新增字典',
|
||||
edit: '编辑字典',
|
||||
add: this.$t('新增字典'),
|
||||
edit: this.$t('编辑字典'),
|
||||
},
|
||||
visible: false,
|
||||
loading: false,
|
||||
@ -64,7 +64,7 @@ export default {
|
||||
const res = await method.post(this.form)
|
||||
this.$emit('success', res.data, this.mode)
|
||||
this.visible = false
|
||||
this.$message.success('操作成功')
|
||||
this.$message.success(this.$t('操作成功'))
|
||||
} catch {
|
||||
//
|
||||
}
|
||||
|
@ -23,7 +23,7 @@
|
||||
],
|
||||
},
|
||||
]"
|
||||
:label-width="6"
|
||||
:label-width="10"
|
||||
@on-change="filterChange"
|
||||
ref="selectFilter"></sc-select-filter>
|
||||
</el-header>
|
||||
@ -44,7 +44,7 @@
|
||||
return { value: x[0], label: x[1][1] }
|
||||
}),
|
||||
placeholder: $t('请求方式'),
|
||||
style: 'width:10rem',
|
||||
style: 'width:15rem',
|
||||
},
|
||||
]"
|
||||
:vue="this"
|
||||
@ -54,7 +54,7 @@
|
||||
</div>
|
||||
<div class="right-panel">
|
||||
<na-button-add :vue="this" />
|
||||
<el-button :disabled="selection.length === 0" @click="batchDel" icon="el-icon-delete" plain type="danger"></el-button>
|
||||
<na-button-bulk-del :api="$API.sys_job.bulkDelete" :vue="this" />
|
||||
</div>
|
||||
</el-header>
|
||||
<el-main class="nopadding">
|
||||
@ -112,9 +112,9 @@
|
||||
align="center"
|
||||
prop="httpMethod"
|
||||
sortable="custom"
|
||||
width="100" />
|
||||
width="150" />
|
||||
<el-table-column :label="$t('上次执行')" align="center">
|
||||
<el-table-column :label="$t('状态')" align="center" prop="lastExecTime" sortable="custom" width="150">
|
||||
<el-table-column :label="$t('状态')" align="center" prop="lastExecTime" sortable="custom" width="100">
|
||||
<template #default="scope">
|
||||
<sc-status-indicator :type="scope.row.lastStatusCode === 'ok' ? 'success' : 'danger'" />
|
||||
{{
|
||||
@ -140,12 +140,12 @@
|
||||
</el-table-column>
|
||||
|
||||
<el-table-column :label="$t('下次执行时间')" align="right" prop="nextExecTime" sortable="custom" width="170" />
|
||||
<el-table-column :label="$t('启用')" align="center" prop="enabled" sortable="custom" width="80">
|
||||
<el-table-column :label="$t('启用')" align="center" prop="enabled" sortable="custom" width="100">
|
||||
<template #default="scope">
|
||||
<el-switch v-model="scope.row.enabled" @change="changeSwitch($event, scope.row)"></el-switch>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column :label="$t('创建时间')" align="right" prop="createdTime" sortable="custom" width="100">
|
||||
<el-table-column :label="$t('创建时间')" align="right" prop="createdTime" sortable="custom" width="130">
|
||||
<template #default="scope">
|
||||
<span v-if="scope.row.createdTime" v-time.tip="scope.row.createdTime"></span>
|
||||
</template>
|
||||
@ -241,7 +241,7 @@ export default {
|
||||
async changeSwitch(event, row) {
|
||||
try {
|
||||
await this.$API.sys_job.setEnabled.post(row)
|
||||
this.$message.success(`操作成功`)
|
||||
this.$message.success(this.$t('操作成功'))
|
||||
} catch {
|
||||
//
|
||||
}
|
||||
@ -252,7 +252,7 @@ export default {
|
||||
await this.$API.sys_job.execute.post({ id: row.id })
|
||||
this.$notify.success({
|
||||
dangerouslyUseHTMLString: true,
|
||||
message: `<div id="countdown">已发起执行请求,5 秒后弹出执行结果</div>`,
|
||||
message: `<div id="countdown">${this.$t('已发起执行请求,5 秒后弹出执行结果')}</div>`,
|
||||
onClose: async () => {
|
||||
clearInterval(this.timer)
|
||||
this.loading = true
|
||||
@ -276,30 +276,12 @@ export default {
|
||||
async rowDel(row) {
|
||||
try {
|
||||
const res = await this.$API.sys_job.delete.post({ id: row.id })
|
||||
this.$message.success(`删除 ${res.data} 项`)
|
||||
this.$message.success(this.$t('删除 {count} 项', { count: res.data }))
|
||||
} catch {
|
||||
//
|
||||
}
|
||||
this.$refs.table.refresh()
|
||||
},
|
||||
//批量删除
|
||||
async batchDel() {
|
||||
let loading
|
||||
try {
|
||||
await this.$confirm(`确定删除选中的 ${this.selection.length} 项吗?`, '提示', {
|
||||
type: 'warning',
|
||||
})
|
||||
loading = this.$loading()
|
||||
const res = await this.$API.sys_job.bulkDelete.post({
|
||||
items: this.selection,
|
||||
})
|
||||
this.$message.success(`删除 ${res.data} 项`)
|
||||
} catch {
|
||||
//
|
||||
}
|
||||
loading?.close()
|
||||
this.$refs.table.refresh()
|
||||
},
|
||||
|
||||
//搜索
|
||||
onSearch(form) {
|
||||
|
@ -30,7 +30,7 @@
|
||||
{ label: '50x', value: '500,599' },
|
||||
{ label: '90x', value: '900,999' },
|
||||
],
|
||||
placeholder: '状态码',
|
||||
placeholder: $t('状态码'),
|
||||
style: 'width:20rem',
|
||||
},
|
||||
]"
|
||||
@ -74,7 +74,7 @@
|
||||
align="center"
|
||||
prop="httpMethod"
|
||||
sortable="custom"
|
||||
width="100" />
|
||||
width="150" />
|
||||
<el-table-column :label="$t('响应状态码')" align="center" prop="httpStatusCode" sortable="custom" width="200">
|
||||
<template #default="scope">
|
||||
<sc-status-indicator :type="scope.row.httpStatusCode === 'ok' ? 'success' : 'danger'" />
|
||||
|
@ -12,7 +12,7 @@
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
label-position="right"
|
||||
label-width="150px"
|
||||
label-width="15rem"
|
||||
ref="dialogForm">
|
||||
<el-tabs tab-position="top">
|
||||
<el-tab-pane :label="$t('基本信息')">
|
||||
@ -45,7 +45,7 @@
|
||||
</el-tabs>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="visible = false">取 消</el-button>
|
||||
<el-button @click="visible = false">{{ $t('取消') }}</el-button>
|
||||
</template>
|
||||
</sc-dialog>
|
||||
</template>
|
||||
|
@ -14,7 +14,7 @@
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
label-position="right"
|
||||
label-width="150px"
|
||||
label-width="20rem"
|
||||
ref="dialogForm">
|
||||
<el-form-item v-if="mode === 'view'" :label="$t('作业编号')" prop="id">
|
||||
<el-input v-model="form.id" clearable />
|
||||
@ -51,7 +51,7 @@
|
||||
:theme="this.$TOOL.data.get('APP_DARK') ? 'github_dark' : 'github'"
|
||||
lang="json"
|
||||
style="height: 5rem; width: 100%" />
|
||||
<el-button @click="form.requestHeader = jsonFormat(form.requestHeader)" type="text">JSON格式化</el-button>
|
||||
<el-button @click="form.requestHeader = jsonFormat(form.requestHeader)" type="text">{{ $t('JSON格式化') }}</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('请求体')" prop="requestBody">
|
||||
<v-ace-editor
|
||||
@ -59,7 +59,7 @@
|
||||
:theme="this.$TOOL.data.get('APP_DARK') ? 'github_dark' : 'github'"
|
||||
lang="json"
|
||||
style="height: 10rem; width: 100%" />
|
||||
<el-button @click="form.requestBody = jsonFormat(form.requestBody)" type="text">JSON格式化</el-button>
|
||||
<el-button @click="form.requestBody = jsonFormat(form.requestBody)" type="text">{{ $t('JSON格式化') }}</el-button>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('请求的网络地址')" prop="requestUrl">
|
||||
<el-input v-model="form.requestUrl" clearable />
|
||||
@ -111,8 +111,8 @@
|
||||
</el-tabs>
|
||||
|
||||
<template #footer>
|
||||
<el-button @click="visible = false">取 消</el-button>
|
||||
<el-button v-if="mode !== 'view'" :loading="loading" @click="submit" type="primary">保 存</el-button>
|
||||
<el-button @click="visible = false">{{ $t('取消') }}</el-button>
|
||||
<el-button v-if="mode !== 'view'" :loading="loading" @click="submit" type="primary">{{ $t('保存') }}</el-button>
|
||||
</template>
|
||||
</sc-dialog>
|
||||
</template>
|
||||
@ -242,9 +242,9 @@ export default {
|
||||
this.loading = false
|
||||
if (res.data) {
|
||||
this.$emit('success', res.data, this.mode)
|
||||
this.$message.success('操作成功')
|
||||
this.$message.success(this.$t('操作成功'))
|
||||
} else {
|
||||
this.$message.error('操作失败')
|
||||
this.$message.error(this.$t('操作失败'))
|
||||
}
|
||||
this.visible = false
|
||||
} catch {
|
||||
|
@ -13,7 +13,7 @@
|
||||
],
|
||||
},
|
||||
]"
|
||||
:label-width="6"
|
||||
:label-width="10"
|
||||
@on-change="filterChange"
|
||||
ref="selectFilter"></sc-select-filter>
|
||||
</el-header>
|
||||
@ -24,7 +24,7 @@
|
||||
{
|
||||
type: 'input',
|
||||
field: ['root', 'keywords'],
|
||||
placeholder: '日志编号 / 登录名 / 客户端IP',
|
||||
placeholder: $t('日志编号 / 登录名 / 客户端IP'),
|
||||
style: 'width:25rem',
|
||||
},
|
||||
]"
|
||||
@ -55,7 +55,7 @@
|
||||
stripe>
|
||||
<el-table-column :label="$t('日志编号')" prop="id" sortable="custom" width="150" />
|
||||
<el-table-column :label="$t('创建时间')" prop="createdTime" sortable="custom" width="170" />
|
||||
<el-table-column :label="$t('结果')" align="center" prop="httpStatusCode" sortable="custom" width="80">
|
||||
<el-table-column :label="$t('结果')" align="center" prop="httpStatusCode" sortable="custom" width="100">
|
||||
<template #default="scope">
|
||||
<sc-status-indicator :type="scope.row.httpStatusCode === 200 ? 'success' : 'danger'" />
|
||||
{{ scope.row.httpStatusCode === 200 ? '成功' : '失败' }}
|
||||
@ -176,7 +176,7 @@ export default {
|
||||
const res = await this.$API.sys_log.query.post({
|
||||
filter: { id: row.id },
|
||||
})
|
||||
this.$refs.info.open(tool.sortProperties(res.data[0]), `日志详情:${row.id}`)
|
||||
this.$refs.info.open(tool.sortProperties(res.data[0]), this.$t('日志详情:{id}', { id: row.id }))
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -13,7 +13,7 @@
|
||||
],
|
||||
},
|
||||
]"
|
||||
:label-width="6"
|
||||
:label-width="10"
|
||||
@on-change="filterChange"
|
||||
ref="selectFilter"></sc-select-filter>
|
||||
</el-header>
|
||||
@ -32,7 +32,7 @@
|
||||
{ label: '50x', value: '500,599' },
|
||||
{ label: '90x', value: '900,999' },
|
||||
],
|
||||
placeholder: '状态码',
|
||||
placeholder: $t('状态码'),
|
||||
style: 'width:15rem',
|
||||
},
|
||||
{
|
||||
@ -40,13 +40,13 @@
|
||||
field: ['dy', 'apiId'],
|
||||
api: $API.sys_api.query,
|
||||
props: { label: 'summary', value: 'id', checkStrictly: true, expandTrigger: 'hover', emitPath: false },
|
||||
placeholder: '请求服务',
|
||||
placeholder: $t('请求服务'),
|
||||
style: 'width:20rem',
|
||||
},
|
||||
{
|
||||
type: 'input',
|
||||
field: ['root', 'keywords'],
|
||||
placeholder: '日志编号 / 用户 / 客户端IP',
|
||||
placeholder: $t('日志编号 / 用户 / 客户端IP'),
|
||||
style: 'width:25rem',
|
||||
},
|
||||
]"
|
||||
@ -75,7 +75,7 @@
|
||||
stripe>
|
||||
<el-table-column :label="$t('日志编号')" prop="id" sortable="custom" width="150" />
|
||||
<el-table-column :label="$t('创建时间')" prop="createdTime" sortable="custom" width="170" />
|
||||
<el-table-column :label="$t('响应码')" align="center" prop="httpStatusCode" sortable="custom" width="100">
|
||||
<el-table-column :label="$t('响应码')" align="center" prop="httpStatusCode" sortable="custom" width="150">
|
||||
<template #default="{ row }">
|
||||
<sc-status-indicator :type="row.httpStatusCode >= 200 && row.httpStatusCode < 300 ? 'success' : 'danger'" />
|
||||
{{ row.httpStatusCode }}
|
||||
@ -106,8 +106,8 @@
|
||||
</el-table-column>
|
||||
<na-col-user
|
||||
v-auth="'sys/log/operation/user'"
|
||||
:label="$t('用户')"
|
||||
header-align="center"
|
||||
label="用户"
|
||||
nestProp="user.userName"
|
||||
nestProp2="user.id"
|
||||
prop="userId"
|
||||
@ -243,7 +243,7 @@ export default {
|
||||
const res = await this.$API.sys_log.query.post({
|
||||
filter: { id: row.id },
|
||||
})
|
||||
this.$refs.info.open(tool.sortProperties(res.data[0]), `日志详情:${row.id}`)
|
||||
this.$refs.info.open(tool.sortProperties(res.data[0]), this.$t('日志详情:{id}', { id: row.id }))
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -29,7 +29,10 @@
|
||||
<span class="btn">
|
||||
<el-button-group size="small">
|
||||
<el-button @click.stop="add(node, data)" icon="el-icon-plus"></el-button>
|
||||
<el-popconfirm :title="`确定删除 ${data.meta.title} 吗?`" @confirm="del(node, data)">
|
||||
<el-popconfirm
|
||||
:title="this.$t('确定删除 {item} 吗?', { item: data.meta.title })"
|
||||
@confirm="del(node, data)"
|
||||
width="20rem">
|
||||
<template #reference>
|
||||
<el-button @click.stop="() => {}" icon="el-icon-delete"></el-button>
|
||||
</template>
|
||||
@ -57,6 +60,7 @@
|
||||
import save from './save'
|
||||
|
||||
export default {
|
||||
inject: ['reload'],
|
||||
components: {
|
||||
save,
|
||||
},
|
||||
@ -117,7 +121,7 @@ export default {
|
||||
this.loading = true
|
||||
try {
|
||||
const res = await this.$API.sys_menu.delete.post({ id: data.id })
|
||||
this.$message.success(`删除 ${res.data} 项`)
|
||||
this.$message.success(this.$t('删除 {count} 项', { count: res.data }))
|
||||
} catch {
|
||||
//
|
||||
}
|
||||
@ -160,7 +164,7 @@ export default {
|
||||
this.loading = false
|
||||
},
|
||||
async handleSuccess() {
|
||||
this.$TOOL.refreshTab(this)
|
||||
this.reload()
|
||||
},
|
||||
},
|
||||
}
|
||||
|
@ -6,7 +6,7 @@
|
||||
<template v-else>
|
||||
<el-col>
|
||||
<h2>{{ form.meta.title || '新增菜单' }}</h2>
|
||||
<el-form :model="form" :rules="rules" label-width="10rem" ref="dialogForm">
|
||||
<el-form :model="form" :rules="rules" label-width="15rem" ref="dialogForm">
|
||||
<el-form-item :label="$t('显示名称')" prop="meta.title">
|
||||
<el-input v-model="form.meta.title" :placeholder="$t('菜单显示名字')" clearable></el-input>
|
||||
</el-form-item>
|
||||
@ -31,9 +31,6 @@
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('别名')" prop="name">
|
||||
<el-input v-model="form.name" :placeholder="$t('菜单别名')" clearable></el-input>
|
||||
<div class="el-form-item-msg">
|
||||
系统唯一且与内置组件名一致,否则导致缓存失效。如类型为Iframe的菜单,别名将代替源地址显示在地址栏
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('菜单图标')" prop="meta.icon">
|
||||
<sc-icon-select v-model="form.meta.icon" clearable></sc-icon-select>
|
||||
@ -49,21 +46,18 @@
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('菜单高亮')" prop="active">
|
||||
<el-input v-model="form.active" clearable placeholder=""></el-input>
|
||||
<div class="el-form-item-msg">子节点或详情页需要高亮的上级菜单路由地址</div>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('视图')" prop="component">
|
||||
<el-input v-model="form.component" clearable placeholder="">
|
||||
<template #prepend>views/</template>
|
||||
</el-input>
|
||||
<div class="el-form-item-msg">如父节点、链接或Iframe等没有视图的菜单不需要填写</div>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('颜色')" prop="color">
|
||||
<el-color-picker v-model="form.meta.color" :predefine="predefineColors"></el-color-picker>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('是否隐藏')" prop="meta.hidden">
|
||||
<el-checkbox v-model="form.meta.hidden">隐藏菜单</el-checkbox>
|
||||
<el-checkbox v-model="form.meta.hiddenBreadCrumb">隐藏面包屑</el-checkbox>
|
||||
<div class="el-form-item-msg" style="margin-left: 1rem">菜单不显示在导航中,但用户依然可以访问,例如详情页</div>
|
||||
<el-checkbox v-model="form.meta.hidden">{{ $t('隐藏菜单') }}</el-checkbox>
|
||||
<el-checkbox v-model="form.meta.hiddenBreadCrumb">{{ $t('隐藏面包屑') }}</el-checkbox>
|
||||
</el-form-item>
|
||||
<el-form-item :label="$t('整页路由')" prop="fullPage">
|
||||
<el-switch v-model="form.meta.fullPage" />
|
||||
@ -72,7 +66,7 @@
|
||||
<el-input v-model="form.meta.tag" clearable placeholder=""></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button :loading="loading" @click="save" type="primary">保 存</el-button>
|
||||
<el-button :loading="loading" @click="save" type="primary">{{ $t('保存') }}</el-button>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-col>
|
||||
|
@ -14,7 +14,7 @@
|
||||
],
|
||||
},
|
||||
]"
|
||||
:label-width="6"
|
||||
:label-width="10"
|
||||
@on-change="filterChange"
|
||||
ref="selectFilter"></sc-select-filter>
|
||||
</el-header>
|
||||
@ -26,7 +26,7 @@
|
||||
type: 'input',
|
||||
field: ['root', 'keywords'],
|
||||
placeholder: $t('消息编号 / 消息主题 / 消息内容'),
|
||||
style: 'width:20rem',
|
||||
style: 'width:25rem',
|
||||
},
|
||||
]"
|
||||
:vue="this"
|
||||
@ -36,7 +36,7 @@
|
||||
</div>
|
||||
<div class="right-panel">
|
||||
<na-button-add :vue="this" />
|
||||
<el-button :disabled="selection.length === 0" @click="batchDel" icon="el-icon-delete" plain type="danger"></el-button>
|
||||
<na-button-bulk-del :api="$API.sys_sitemsg.bulkDelete" :vue="this" />
|
||||
</div>
|
||||
</el-header>
|
||||
<el-main class="nopadding">
|
||||
@ -70,7 +70,7 @@
|
||||
align="center"
|
||||
prop="msgType"
|
||||
sortable="custom"
|
||||
width="100" />
|
||||
width="150" />
|
||||
<el-table-column :label="$t('消息主题')" prop="title" show-overflow-tooltip sortable="custom" />
|
||||
<el-table-column :label="$t('消息摘要')" prop="summary" show-overflow-tooltip sortable="custom" />
|
||||
<el-table-column :label="$t('创建时间')" align="right" prop="createdTime" sortable="custom" width="170" />
|
||||
@ -143,30 +143,12 @@ export default {
|
||||
async rowDel(row) {
|
||||
try {
|
||||
const res = await this.$API.sys_sitemsg.delete.post({ id: row.id })
|
||||
this.$message.success(`删除 ${res.data} 项`)
|
||||
this.$message.success(this.$t('删除 {count} 项', { count: res.data }))
|
||||
} catch {
|
||||
//
|
||||
}
|
||||
this.$refs.table.refresh()
|
||||
},
|
||||
//批量删除
|
||||
async batchDel() {
|
||||
let loading
|
||||
try {
|
||||
await this.$confirm(`确定删除选中的 ${this.selection.length} 项吗?`, '提示', {
|
||||
type: 'warning',
|
||||
})
|
||||
loading = this.$loading()
|
||||
const res = await this.$API.sys_sitemsg.bulkDelete.post({
|
||||
items: this.selection,
|
||||
})
|
||||
this.$message.success(`删除 ${res.data} 项`)
|
||||
} catch {
|
||||
//
|
||||
}
|
||||
loading?.close()
|
||||
this.$refs.table.refresh()
|
||||
},
|
||||
|
||||
//搜索
|
||||
onSearch(form) {
|
||||
|
@ -71,8 +71,8 @@
|
||||
</el-tabs>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="visible = false">取 消</el-button>
|
||||
<el-button v-if="mode !== 'view'" :loading="loading" @click="submit" type="primary">保 存</el-button>
|
||||
<el-button @click="visible = false">{{ $t('取消') }}</el-button>
|
||||
<el-button v-if="mode !== 'view'" :loading="loading" @click="submit" type="primary">{{ $t('保存') }}</el-button>
|
||||
</template>
|
||||
</sc-dialog>
|
||||
</template>
|
||||
@ -80,6 +80,7 @@
|
||||
<script>
|
||||
import { AiEditor } from 'aieditor'
|
||||
import 'aieditor/dist/style.css'
|
||||
import sysConfig from '../../../config'
|
||||
|
||||
export default {
|
||||
components: {},
|
||||
@ -88,9 +89,9 @@ export default {
|
||||
return {
|
||||
mode: 'add',
|
||||
titleMap: {
|
||||
view: '查看消息',
|
||||
add: '新增消息',
|
||||
edit: '编辑消息',
|
||||
view: this.$t('查看消息'),
|
||||
add: this.$t('新增消息'),
|
||||
edit: this.$t('编辑消息'),
|
||||
},
|
||||
visible: false,
|
||||
loading: false,
|
||||
@ -141,14 +142,15 @@ export default {
|
||||
this.loading = false
|
||||
|
||||
await this.$nextTick()
|
||||
new AiEditor({
|
||||
const aiEditor = new AiEditor({
|
||||
element: this.$refs.editor,
|
||||
placeholder: '请输入消息内容...',
|
||||
placeholder: this.$t('请输入消息内容...'),
|
||||
content: this.form.content,
|
||||
onChange: (content) => {
|
||||
this.form.content = content.getHtml()
|
||||
},
|
||||
})
|
||||
aiEditor.changeLang(this.$TOOL.data.get('APP_LANG') || sysConfig.LANG)
|
||||
return this
|
||||
},
|
||||
|
||||
@ -166,7 +168,7 @@ export default {
|
||||
this.loading = false
|
||||
this.$emit('success', res.data, this.mode)
|
||||
this.visible = false
|
||||
this.$message.success('操作成功')
|
||||
this.$message.success(this.$t('操作成功'))
|
||||
} catch {
|
||||
//
|
||||
this.loading = false
|
||||
|
@ -13,7 +13,7 @@
|
||||
],
|
||||
},
|
||||
]"
|
||||
:label-width="6"
|
||||
:label-width="10"
|
||||
@on-change="filterChange"
|
||||
ref="selectFilter"></sc-select-filter>
|
||||
</el-header>
|
||||
@ -24,7 +24,7 @@
|
||||
{
|
||||
type: 'input',
|
||||
field: ['root', 'keywords'],
|
||||
placeholder: '角色编号 / 角色名称 / 备注',
|
||||
placeholder: $t('角色编号 / 角色名称 / 备注'),
|
||||
style: 'width:20rem',
|
||||
},
|
||||
{
|
||||
@ -34,7 +34,7 @@
|
||||
{ label: '是', value: true },
|
||||
{ label: '否', value: false },
|
||||
],
|
||||
placeholder: '无限权限',
|
||||
placeholder: $t('无限权限'),
|
||||
style: 'width:15rem',
|
||||
},
|
||||
{
|
||||
@ -44,7 +44,7 @@
|
||||
{ label: '是', value: true },
|
||||
{ label: '否', value: false },
|
||||
],
|
||||
placeholder: '显示仪表板',
|
||||
placeholder: $t('显示仪表板'),
|
||||
style: 'width:15rem',
|
||||
},
|
||||
]"
|
||||
@ -55,7 +55,7 @@
|
||||
</div>
|
||||
<div class="right-panel">
|
||||
<na-button-add :vue="this" />
|
||||
<el-button :disabled="selection.length === 0" @click="batchDel" icon="el-icon-delete" plain type="danger"></el-button>
|
||||
<na-button-bulk-del :api="$API.sys_role.bulkDelete" :vue="this" />
|
||||
</div>
|
||||
</el-header>
|
||||
<el-main class="nopadding">
|
||||
@ -80,7 +80,7 @@
|
||||
<el-table-column :label="$t('角色编号')" prop="id" sortable="custom" />
|
||||
<el-table-column :label="$t('角色名称')" prop="name" sortable="custom" />
|
||||
<el-table-column :label="$t('排序')" align="right" prop="sort" sortable="custom" />
|
||||
<el-table-column :label="$t('启用')" align="center" prop="enabled" sortable="custom" width="80">
|
||||
<el-table-column :label="$t('启用')" align="center" prop="enabled" sortable="custom" width="100">
|
||||
<template #default="scope">
|
||||
<el-switch v-model="scope.row.enabled" @change="changeSwitch($event, scope.row)"></el-switch>
|
||||
</template>
|
||||
@ -101,9 +101,10 @@
|
||||
return { value: x[0], text: x[1][1], type: x[1][2] }
|
||||
})
|
||||
"
|
||||
align="center"
|
||||
prop="dataScope"
|
||||
sortable="custom"
|
||||
width="100">
|
||||
width="120">
|
||||
</na-col-indicator>
|
||||
|
||||
<na-col-indicator
|
||||
@ -177,29 +178,12 @@ export default {
|
||||
async changeSwitch(event, row) {
|
||||
try {
|
||||
await this.$API.sys_role.setEnabled.post(row)
|
||||
this.$message.success(`操作成功`)
|
||||
this.$message.success(this.$t('操作成功'))
|
||||
} catch {
|
||||
//
|
||||
}
|
||||
this.$refs.table.refresh()
|
||||
},
|
||||
async batchDel() {
|
||||
let loading
|
||||
try {
|
||||
await this.$confirm(`确定删除选中的 ${this.selection.length} 项吗?`, '提示', {
|
||||
type: 'warning',
|
||||
})
|
||||
loading = this.$loading()
|
||||
const res = await this.$API.sys_role.bulkDelete.post({
|
||||
items: this.selection,
|
||||
})
|
||||
this.$message.success(`删除 ${res.data} 项`)
|
||||
} catch {
|
||||
//
|
||||
}
|
||||
loading?.close()
|
||||
this.$refs.table.refresh()
|
||||
},
|
||||
filterChange(data) {
|
||||
Object.entries(data).forEach(([key, value]) => {
|
||||
this.$refs.search.form.dy[key] = value === 'true' ? true : value === 'false' ? false : value
|
||||
@ -209,7 +193,7 @@ export default {
|
||||
async rowDel(row) {
|
||||
try {
|
||||
const res = await this.$API.sys_role.delete.post({ id: row.id })
|
||||
this.$message.success(`删除 ${res.data} 项`)
|
||||
this.$message.success(this.$t('删除 {count} 项', { count: res.data }))
|
||||
} catch {
|
||||
//
|
||||
}
|
||||
|
@ -3,7 +3,7 @@
|
||||
<div v-loading="loading">
|
||||
<el-tabs tab-position="top">
|
||||
<el-tab-pane :label="$t('基本信息')">
|
||||
<el-form :disabled="mode === 'view'" :model="form" :rules="rules" label-width="10rem" ref="dialogForm">
|
||||
<el-form :disabled="mode === 'view'" :model="form" :rules="rules" label-width="15rem" ref="dialogForm">
|
||||
<el-form-item :label="$t('角色名称')" prop="name">
|
||||
<el-input v-model="form.name" clearable></el-input>
|
||||
</el-form-item>
|
||||
@ -72,7 +72,7 @@
|
||||
<el-option :label="$t('仪表板')" :value="true"></el-option>
|
||||
<el-option :label="$t('工作台')" :value="false"></el-option>
|
||||
</el-select>
|
||||
<div class="el-form-item-msg">用于控制角色登录后控制台的视图</div>
|
||||
<div class="el-form-item-msg">{{ $t('用于控制角色登录后控制台的视图') }}</div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-tab-pane>
|
||||
@ -88,8 +88,8 @@
|
||||
</el-tabs>
|
||||
</div>
|
||||
<template #footer>
|
||||
<el-button @click="visible = false">取 消</el-button>
|
||||
<el-button v-if="mode !== 'view'" :loading="loading" @click="submit" type="primary">保 存</el-button>
|
||||
<el-button @click="visible = false">{{ $t('取消') }}</el-button>
|
||||
<el-button v-if="mode !== 'view'" :loading="loading" @click="submit" type="primary">{{ $t('保存') }}</el-button>
|
||||
</template>
|
||||
</sc-dialog>
|
||||
</template>
|
||||
@ -102,9 +102,9 @@ export default {
|
||||
return {
|
||||
mode: 'add',
|
||||
titleMap: {
|
||||
add: '新增角色',
|
||||
edit: '编辑角色',
|
||||
view: '查看角色',
|
||||
add: this.$t('新增角色'),
|
||||
edit: this.$t('编辑角色'),
|
||||
view: this.$t('查看角色'),
|
||||
},
|
||||
visible: false,
|
||||
loading: false,
|
||||
@ -171,7 +171,7 @@ export default {
|
||||
const res = await method.post(postData)
|
||||
this.$emit('success', res.data, this.mode)
|
||||
this.visible = false
|
||||
this.$message.success('操作成功')
|
||||
this.$message.success(this.$t('操作成功'))
|
||||
} catch {
|
||||
//
|
||||
}
|
||||
|
@ -13,7 +13,7 @@
|
||||
],
|
||||
},
|
||||
]"
|
||||
:label-width="6"
|
||||
:label-width="10"
|
||||
@on-change="filterChange"
|
||||
ref="selectFilter"></sc-select-filter>
|
||||
</el-header>
|
||||
@ -24,7 +24,7 @@
|
||||
{
|
||||
type: 'input',
|
||||
field: ['root', 'keywords'],
|
||||
placeholder: '用户编号 / 用户名 / 手机号 / 邮箱 / 备注',
|
||||
placeholder: $t('用户编号 / 用户名 / 手机号 / 邮箱 / 备注'),
|
||||
style: 'width:25rem',
|
||||
},
|
||||
{
|
||||
@ -32,7 +32,7 @@
|
||||
field: ['filter', 'roleId'],
|
||||
api: $API.sys_role.query,
|
||||
config: { props: { label: 'name', value: 'id' } },
|
||||
placeholder: '所属角色',
|
||||
placeholder: $t('所属角色'),
|
||||
style: 'width:15rem',
|
||||
},
|
||||
{
|
||||
@ -40,7 +40,7 @@
|
||||
field: ['filter', 'deptId'],
|
||||
api: $API.sys_dept.query,
|
||||
props: { label: 'name', value: 'id', checkStrictly: true, expandTrigger: 'hover', emitPath: false },
|
||||
placeholder: '所属部门',
|
||||
placeholder: $t('所属部门'),
|
||||
style: 'width:15rem',
|
||||
},
|
||||
]"
|
||||
@ -79,7 +79,7 @@
|
||||
<el-table-column :label="$t('邮箱')" prop="email" sortable="custom" />
|
||||
<na-col-tags :label="$t('所属角色')" @click="(item) => openDialog('sys_role', item.id, 'roleSave')" field="name" prop="roles" />
|
||||
<na-col-tags :label="$t('所属部门')" @click="(item) => openDialog('sys_dept', item.id, 'deptSave')" field="name" prop="dept" />
|
||||
<el-table-column :label="$t('启用')" align="center" prop="enabled" sortable="custom" width="80">
|
||||
<el-table-column :label="$t('启用')" align="center" prop="enabled" sortable="custom" width="100">
|
||||
<template #default="scope">
|
||||
<el-switch v-model="scope.row.enabled" @change="changeSwitch($event, scope.row)"></el-switch>
|
||||
</template>
|
||||
@ -139,7 +139,7 @@ export default {
|
||||
async changeSwitch(event, row) {
|
||||
try {
|
||||
await this.$API.sys_user.setEnabled.post(row)
|
||||
this.$message.success(`操作成功`)
|
||||
this.$message.success(this.$t('操作成功'))
|
||||
} catch {
|
||||
//
|
||||
}
|
||||
|
@ -12,7 +12,7 @@
|
||||
:model="form"
|
||||
:rules="rules"
|
||||
label-position="right"
|
||||
label-width="10rem"
|
||||
label-width="12rem"
|
||||
ref="dialogForm">
|
||||
<el-tabs tab-position="top">
|
||||
<el-tab-pane :label="$t('基本信息')">
|
||||
@ -46,7 +46,7 @@
|
||||
maxlength="16"
|
||||
oninput="value=value.replace(/[^\w]/g,'')"
|
||||
placeholder="8位以上数字字母组合"></el-input>
|
||||
<el-button @click="form.passwordText = '1234qwer'">初始密码</el-button>
|
||||
<el-button @click="form.passwordText = '1234qwer'">{{ $t('初始密码') }}</el-button>
|
||||
</div>
|
||||
</el-form-item>
|
||||
|
||||
@ -234,8 +234,8 @@
|
||||
</el-tabs>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
<el-button @click="visible = false">取 消</el-button>
|
||||
<el-button v-if="mode !== 'view'" :loading="loading" @click="submit" type="primary">保 存</el-button>
|
||||
<el-button @click="visible = false">{{ $t('取消') }}</el-button>
|
||||
<el-button v-if="mode !== 'view'" :loading="loading" @click="submit" type="primary">{{ $t('保存') }}</el-button>
|
||||
</template>
|
||||
</sc-dialog>
|
||||
</template>
|
||||
@ -248,9 +248,9 @@ export default {
|
||||
return {
|
||||
mode: 'add',
|
||||
titleMap: {
|
||||
view: '查看用户',
|
||||
add: '新增用户',
|
||||
edit: '编辑用户',
|
||||
view: this.$t('查看用户'),
|
||||
add: this.$t('新增用户'),
|
||||
edit: this.$t('编辑用户'),
|
||||
},
|
||||
visible: false,
|
||||
loading: false,
|
||||
@ -349,7 +349,7 @@ export default {
|
||||
this.loading = false
|
||||
this.$emit('success', res.data, this.mode)
|
||||
this.visible = false
|
||||
this.$message.success('操作成功')
|
||||
this.$message.success(this.$t('操作成功'))
|
||||
} catch {
|
||||
this.loading = false
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user