Browse Source

国际化

dev
wangxingyuan 10 months ago
parent
commit
46946075f0
31 changed files with 1383 additions and 685 deletions
  1. +1
    -1
      src/api/monitor/job.js
  2. +38
    -2
      src/components/Breadcrumb/index.vue
  3. +12
    -12
      src/components/Crontab/day.vue
  4. +8
    -8
      src/components/Crontab/hour.vue
  5. +37
    -25
      src/components/Crontab/index.vue
  6. +8
    -8
      src/components/Crontab/min.vue
  7. +8
    -8
      src/components/Crontab/month.vue
  8. +2
    -2
      src/components/Crontab/result.vue
  9. +8
    -8
      src/components/Crontab/second.vue
  10. +215
    -190
      src/components/Crontab/week.vue
  11. +8
    -8
      src/components/Crontab/year.vue
  12. +10
    -0
      src/lang/en/area/area.json
  13. +14
    -0
      src/lang/en/area/area_management.json
  14. +3
    -0
      src/lang/en/basedata/station.json
  15. +66
    -54
      src/lang/en/index.js
  16. +80
    -0
      src/lang/en/monitor/job.json
  17. +13
    -0
      src/lang/en/point/point_mang.json
  18. +10
    -0
      src/lang/zh/area/area.json
  19. +14
    -0
      src/lang/zh/area/area_management.json
  20. +3
    -0
      src/lang/zh/basedata/station.json
  21. +13
    -1
      src/lang/zh/index.js
  22. +80
    -0
      src/lang/zh/monitor/job.json
  23. +13
    -0
      src/lang/zh/point/point_mang.json
  24. +1
    -0
      src/layout/components/Navbar.vue
  25. +97
    -34
      src/layout/components/Sidebar/SidebarItem.vue
  26. +3
    -2
      src/layout/components/Sidebar/index.vue
  27. +37
    -1
      src/layout/components/TagsView/index.vue
  28. +138
    -87
      src/views/area/area.vue
  29. +28
    -53
      src/views/area/area_management.vue
  30. +364
    -133
      src/views/monitor/job/index.vue
  31. +51
    -48
      src/views/point/point_mang.vue

+ 1
- 1
src/api/monitor/job.js View File

@ -12,7 +12,7 @@ export function listJob(query) {
// 查询定时任务调度详细
export function getJob(jobId) {
return request({
url: '/monitor/job/' + jobId,
url: '/schedule/job/' + jobId,
method: 'get'
})
}


+ 38
- 2
src/components/Breadcrumb/index.vue View File

@ -2,8 +2,8 @@
<el-breadcrumb class="app-breadcrumb" separator="/">
<transition-group name="breadcrumb">
<el-breadcrumb-item v-for="(item, index) in levelList" :key="item.path">
<span v-if="item.redirect === 'noRedirect' || index == levelList.length - 1" class="no-redirect">{{ item.meta.title }}</span>
<a v-else @click.prevent="handleLink(item)">{{ item.meta.title }}</a>
<span v-if="item.redirect === 'noRedirect' || index == levelList.length - 1" class="no-redirect">{{ titleFn(item.meta.title) }}</span>
<a v-else @click.prevent="handleLink(item)">{{ titleFn(item.meta.title) }}</a>
</el-breadcrumb-item>
</transition-group>
</el-breadcrumb>
@ -84,6 +84,42 @@ export default {
return
}
this.$router.push(path)
},
titleFn(item, children) {
let str = "";
let lang = localStorage.getItem("language");
if (item.includes("|")) {
if (lang == "en_US") {
str = item.split("|")[1];
} else {
str = item.split("|")[0];
}
} else {
str = item;
}
if (children) {
children.forEach((i) => {
if (i.meta && i.meta.title) {
if (i.meta.title.includes("|")) {
if (lang == "en_US") {
i.meta.title = i.meta.title.split("|")[1];
} else {
i.meta.title = i.meta.title.split("|")[0];
}
} else {
i.meta.title = i.meta.title;
}
}
});
}
if(item=="首页"){
if (lang == "en_US") {
str = "Home";
} else {
str = "首页";
}
}
return str;
}
}
}


+ 12
- 12
src/components/Crontab/day.vue View File

@ -2,49 +2,49 @@
<el-form size="small">
<el-form-item>
<el-radio v-model='radioValue' :label="1">
允许的通配符[, - * ? / L W]
{{$t('job.day')}}{{$t('job.PermittedWildcards')}}[, - * ? / L W]
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model='radioValue' :label="2">
不指定
{{$t('job.NotSpecified')}}
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model='radioValue' :label="3">
周期从
{{$t('job.cycle')}} {{$t('job.follow')}}
<el-input-number v-model='cycle01' :min="1" :max="30" /> -
<el-input-number v-model='cycle02' :min="cycle01 ? cycle01 + 1 : 2" :max="31" />
<el-input-number v-model='cycle02' :min="cycle01 ? cycle01 + 1 : 2" :max="31" /> {{$t('job.day')}}
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model='radioValue' :label="4">
<el-input-number v-model='average01' :min="1" :max="30" /> 号开始
<el-input-number v-model='average02' :min="1" :max="31 - average01 || 1" /> 日执行一次
{{$t('job.follow')}}
<el-input-number v-model='average01' :min="1" :max="30" /> {{$t('job.day')}} {{$t('job.start')}}{{$t('job.every')}}
<el-input-number v-model='average02' :min="1" :max="31 - average01 || 1" /> {{$t('job.day')}},{{$t('job.ExecuteOnce')}}
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model='radioValue' :label="5">
每月
<el-input-number v-model='workday' :min="1" :max="31" /> 号最近的那个工作日
{{$t('job.month')}}
<el-input-number v-model='workday' :min="1" :max="31" /> {{$t('job.day')}} {{$t('job.TheMostRecentWorkingDay')}}
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model='radioValue' :label="6">
本月最后一天
{{$t('job.LastDayOfThisMonth')}}
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model='radioValue' :label="7">
指定
<el-select clearable v-model="checkboxList" placeholder="可多选" multiple style="width:100%">
{{$t('job.appoint')}}
<el-select clearable v-model="checkboxList" :placeholder="$t('job.MultipleChoices')" multiple style="width:100%">
<el-option v-for="item in 31" :key="item" :value="item">{{item}}</el-option>
</el-select>
</el-radio>


+ 8
- 8
src/components/Crontab/hour.vue View File

@ -2,30 +2,30 @@
<el-form size="small">
<el-form-item>
<el-radio v-model='radioValue' :label="1">
小时允许的通配符[, - * /]
{{$t('job.hour')}}{{$t('job.PermittedWildcards')}}[, - * /]
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model='radioValue' :label="2">
周期从
{{$t('job.cycle')}} {{$t('job.follow')}}
<el-input-number v-model='cycle01' :min="0" :max="22" /> -
<el-input-number v-model='cycle02' :min="cycle01 ? cycle01 + 1 : 1" :max="23" /> 小时
<el-input-number v-model='cycle02' :min="cycle01 ? cycle01 + 1 : 1" :max="23" /> {{$t('job.hour')}}
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model='radioValue' :label="3">
<el-input-number v-model='average01' :min="0" :max="22" /> 小时开始
<el-input-number v-model='average02' :min="1" :max="23 - average01 || 0" /> 小时执行一次
{{$t('job.follow')}}
<el-input-number v-model='average01' :min="0" :max="22" /> {{$t('job.hour')}} {{$t('job.start')}}{{$t('job.every')}}
<el-input-number v-model='average02' :min="1" :max="23 - average01 || 0" /> {{$t('job.hour')}},{{$t('job.ExecuteOnce')}}
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model='radioValue' :label="4">
指定
<el-select clearable v-model="checkboxList" placeholder="可多选" multiple style="width:100%">
{{$t('job.appoint')}}
<el-select clearable v-model="checkboxList" :placeholder="$t('job.MultipleChoices')" multiple style="width:100%">
<el-option v-for="item in 24" :key="item" :value="item-1">{{item-1}}</el-option>
</el-select>
</el-radio>


+ 37
- 25
src/components/Crontab/index.vue View File

@ -1,7 +1,7 @@
<template>
<div>
<el-tabs type="border-card">
<el-tab-pane label="秒" v-if="shouldHide('second')">
<el-tab-pane :label="$t('job.second')" v-if="shouldHide('second')">
<CrontabSecond
@update="updateCrontabValue"
:check="checkNumber"
@ -10,7 +10,7 @@
/>
</el-tab-pane>
<el-tab-pane label="分钟" v-if="shouldHide('min')">
<el-tab-pane :label="$t('job.minute')" v-if="shouldHide('min')">
<CrontabMin
@update="updateCrontabValue"
:check="checkNumber"
@ -19,7 +19,7 @@
/>
</el-tab-pane>
<el-tab-pane label="小时" v-if="shouldHide('hour')">
<el-tab-pane :label="$t('job.hour')" v-if="shouldHide('hour')">
<CrontabHour
@update="updateCrontabValue"
:check="checkNumber"
@ -28,7 +28,7 @@
/>
</el-tab-pane>
<el-tab-pane label="日" v-if="shouldHide('day')">
<el-tab-pane :label="$t('job.day')" v-if="shouldHide('day')">
<CrontabDay
@update="updateCrontabValue"
:check="checkNumber"
@ -37,7 +37,7 @@
/>
</el-tab-pane>
<el-tab-pane label="月" v-if="shouldHide('month')">
<el-tab-pane :label="$t('job.month')" v-if="shouldHide('month')">
<CrontabMonth
@update="updateCrontabValue"
:check="checkNumber"
@ -46,7 +46,7 @@
/>
</el-tab-pane>
<el-tab-pane label="周" v-if="shouldHide('week')">
<el-tab-pane :label="$t('job.week')" v-if="shouldHide('week')">
<CrontabWeek
@update="updateCrontabValue"
:check="checkNumber"
@ -55,7 +55,7 @@
/>
</el-tab-pane>
<el-tab-pane label="年" v-if="shouldHide('year')">
<el-tab-pane :label="$t('job.year')" v-if="shouldHide('year')">
<CrontabYear
@update="updateCrontabValue"
:check="checkNumber"
@ -67,36 +67,36 @@
<div class="popup-main">
<div class="popup-result">
<p class="title">时间表达式</p>
<p class="title">{{ $t("job.timeExpression") }}</p>
<table>
<thead>
<th v-for="item of tabTitles" width="40" :key="item">{{item}}</th>
<th>Cron 表达式</th>
<th v-for="item of tabTitles" width="50" :key="item">{{ item }}</th>
<th>Cron {{ $t("job.expression") }}</th>
</thead>
<tbody>
<td>
<span>{{crontabValueObj.second}}</span>
<span>{{ crontabValueObj.second }}</span>
</td>
<td>
<span>{{crontabValueObj.min}}</span>
<span>{{ crontabValueObj.min }}</span>
</td>
<td>
<span>{{crontabValueObj.hour}}</span>
<span>{{ crontabValueObj.hour }}</span>
</td>
<td>
<span>{{crontabValueObj.day}}</span>
<span>{{ crontabValueObj.day }}</span>
</td>
<td>
<span>{{crontabValueObj.month}}</span>
<span>{{ crontabValueObj.month }}</span>
</td>
<td>
<span>{{crontabValueObj.week}}</span>
<span>{{ crontabValueObj.week }}</span>
</td>
<td>
<span>{{crontabValueObj.year}}</span>
<span>{{ crontabValueObj.year }}</span>
</td>
<td>
<span>{{crontabValueString}}</span>
<span>{{ crontabValueString }}</span>
</td>
</tbody>
</table>
@ -104,9 +104,13 @@
<CrontabResult :ex="crontabValueString"></CrontabResult>
<div class="pop_btn">
<el-button size="small" type="primary" @click="submitFill">确定</el-button>
<el-button size="small" type="warning" @click="clearCron">重置</el-button>
<el-button size="small" @click="hidePopup">取消</el-button>
<el-button size="small" type="primary" @click="submitFill"
>{{ $t("share.confirm") }}</el-button
>
<el-button size="small" type="warning" @click="clearCron"
>{{ $t("share.reset") }}</el-button
>
<el-button size="small" @click="hidePopup">{{ $t("share.cancel") }}</el-button>
</div>
</div>
</div>
@ -125,7 +129,15 @@ import CrontabResult from "./result.vue";
export default {
data() {
return {
tabTitles: ["秒", "分钟", "小时", "日", "月", "周", "年"],
tabTitles: [
this.$t("job.second"),
this.$t("job.minute"),
this.$t("job.hour"),
this.$t("job.day"),
this.$t("job.month"),
this.$t("job.week"),
this.$t("job.year"),
],
tabActive: 0,
myindex: 0,
crontabValueObj: {
@ -313,7 +325,7 @@ export default {
},
clearCron() {
//
("准备还原");
(this.$t("job.prepareToRestore"));
this.crontabValueObj = {
second: "*",
min: "*",
@ -329,7 +341,7 @@ export default {
},
},
computed: {
crontabValueString: function() {
crontabValueString: function () {
let obj = this.crontabValueObj;
let str =
obj.second +
@ -363,7 +375,7 @@ export default {
//
},
},
mounted: function() {
mounted: function () {
this.resolveExp();
},
};


+ 8
- 8
src/components/Crontab/min.vue View File

@ -2,30 +2,30 @@
<el-form size="small">
<el-form-item>
<el-radio v-model='radioValue' :label="1">
分钟允许的通配符[, - * /]
{{$t('job.minute')}}{{$t('job.PermittedWildcards')}}[, - * /]
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model='radioValue' :label="2">
周期从
{{$t('job.cycle')}} {{$t('job.follow')}}
<el-input-number v-model='cycle01' :min="0" :max="58" /> -
<el-input-number v-model='cycle02' :min="cycle01 ? cycle01 + 1 : 1" :max="59" /> 分钟
<el-input-number v-model='cycle02' :min="cycle01 ? cycle01 + 1 : 1" :max="59" /> {{$t('job.minute')}}
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model='radioValue' :label="3">
<el-input-number v-model='average01' :min="0" :max="58" /> 分钟开始
<el-input-number v-model='average02' :min="1" :max="59 - average01 || 0" /> 分钟执行一次
{{$t('job.follow')}}
<el-input-number v-model='average01' :min="0" :max="58" /> {{$t('job.minute')}} {{$t('job.start')}}{{$t('job.every')}}
<el-input-number v-model='average02' :min="1" :max="59 - average01 || 0" /> {{$t('job.minute')}},{{$t('job.ExecuteOnce')}}
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model='radioValue' :label="4">
指定
<el-select clearable v-model="checkboxList" placeholder="可多选" multiple style="width:100%">
{{$t('job.appoint')}}
<el-select clearable v-model="checkboxList" :placeholder="$t('job.MultipleChoices')" multiple style="width:100%">
<el-option v-for="item in 60" :key="item" :value="item-1">{{item-1}}</el-option>
</el-select>
</el-radio>


+ 8
- 8
src/components/Crontab/month.vue View File

@ -2,30 +2,30 @@
<el-form size='small'>
<el-form-item>
<el-radio v-model='radioValue' :label="1">
允许的通配符[, - * /]
{{$t('job.month')}}{{$t('job.PermittedWildcards')}}[, - * /]
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model='radioValue' :label="2">
周期从
{{$t('job.cycle')}} {{$t('job.follow')}}
<el-input-number v-model='cycle01' :min="1" :max="11" /> -
<el-input-number v-model='cycle02' :min="cycle01 ? cycle01 + 1 : 2" :max="12" />
<el-input-number v-model='cycle02' :min="cycle01 ? cycle01 + 1 : 2" :max="12" /> {{$t('job.month')}}
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model='radioValue' :label="3">
<el-input-number v-model='average01' :min="1" :max="11" /> 月开始
<el-input-number v-model='average02' :min="1" :max="12 - average01 || 0" /> 月月执行一次
{{$t('job.follow')}}
<el-input-number v-model='average01' :min="1" :max="11" /> {{$t('job.month')}} {{$t('job.start')}}{{$t('job.every')}}
<el-input-number v-model='average02' :min="1" :max="12 - average01 || 0" /> {{$t('job.month')}},{{$t('job.ExecuteOnce')}}
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model='radioValue' :label="4">
指定
<el-select clearable v-model="checkboxList" placeholder="可多选" multiple style="width:100%">
{{$t('job.appoint')}}
<el-select clearable v-model="checkboxList" :placeholder="$t('job.MultipleChoices')" multiple style="width:100%">
<el-option v-for="item in 12" :key="item" :value="item">{{item}}</el-option>
</el-select>
</el-radio>


+ 2
- 2
src/components/Crontab/result.vue View File

@ -1,11 +1,11 @@
<template>
<div class="popup-result">
<p class="title">最近5次运行时间</p>
<p class="title">{{ $t('job.RecentRunningTime') }}</p>
<ul class="popup-result-scroll">
<template v-if='isShow'>
<li v-for='item in resultList' :key="item">{{item}}</li>
</template>
<li v-else>计算结果中...</li>
<li v-else>{{ $t('job.InTheCalculationResults') }}...</li>
</ul>
</div>
</template>


+ 8
- 8
src/components/Crontab/second.vue View File

@ -2,30 +2,30 @@
<el-form size="small">
<el-form-item>
<el-radio v-model='radioValue' :label="1">
允许的通配符[, - * /]
{{$t('job.second')}}{{$t('job.PermittedWildcards')}}[, - * /]
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model='radioValue' :label="2">
周期从
{{$t('job.cycle')}} {{$t('job.follow')}}
<el-input-number v-model='cycle01' :min="0" :max="58" /> -
<el-input-number v-model='cycle02' :min="cycle01 ? cycle01 + 1 : 1" :max="59" />
<el-input-number v-model='cycle02' :min="cycle01 ? cycle01 + 1 : 1" :max="59" /> {{$t('job.second')}}
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model='radioValue' :label="3">
<el-input-number v-model='average01' :min="0" :max="58" /> 秒开始
<el-input-number v-model='average02' :min="1" :max="59 - average01 || 0" /> 秒执行一次
{{$t('job.follow')}}
<el-input-number v-model='average01' :min="0" :max="58" /> {{$t('job.second')}} {{$t('job.start')}}{{$t('job.every')}}
<el-input-number v-model='average02' :min="1" :max="59 - average01 || 0" /> {{$t('job.second')}},{{$t('job.ExecuteOnce')}}
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model='radioValue' :label="4">
指定
<el-select clearable v-model="checkboxList" placeholder="可多选" multiple style="width:100%">
{{$t('job.appoint')}}
<el-select clearable v-model="checkboxList" :placeholder="$t('job.MultipleChoices')" multiple style="width:100%">
<el-option v-for="item in 60" :key="item" :value="item-1">{{item-1}}</el-option>
</el-select>
</el-radio>


+ 215
- 190
src/components/Crontab/week.vue View File

@ -1,202 +1,227 @@
<template>
<el-form size='small'>
<el-form-item>
<el-radio v-model='radioValue' :label="1">
允许的通配符[, - * ? / L #]
</el-radio>
</el-form-item>
<el-form size="small">
<el-form-item>
<el-radio v-model="radioValue" :label="1">
{{ $t("job.week") }}{{ $t("job.PermittedWildcards") }}[, - * ? / L #]
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model='radioValue' :label="2">
不指定
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model="radioValue" :label="2">
{{ $t("job.NotSpecified") }}
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model='radioValue' :label="3">
周期从星期
<el-select clearable v-model="cycle01">
<el-option
v-for="(item,index) of weekList"
:key="index"
:label="item.value"
:value="item.key"
:disabled="item.key === 1"
>{{item.value}}</el-option>
</el-select>
-
<el-select clearable v-model="cycle02">
<el-option
v-for="(item,index) of weekList"
:key="index"
:label="item.value"
:value="item.key"
:disabled="item.key < cycle01 && item.key !== 1"
>{{item.value}}</el-option>
</el-select>
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model="radioValue" :label="3">
{{ $t("job.CycleFromWeekToWeek") }}
<el-select clearable v-model="cycle01">
<el-option
v-for="(item, index) of weekList"
:key="index"
:label="item.value"
:value="item.key"
:disabled="item.key === 1"
>{{ item.value }}</el-option
>
</el-select>
-
<el-select clearable v-model="cycle02">
<el-option
v-for="(item, index) of weekList"
:key="index"
:label="item.value"
:value="item.key"
:disabled="item.key < cycle01 && item.key !== 1"
>{{ item.value }}</el-option
>
</el-select>
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model='radioValue' :label="4">
<el-input-number v-model='average01' :min="1" :max="4" /> 周的星期
<el-select clearable v-model="average02">
<el-option v-for="(item,index) of weekList" :key="index" :label="item.value" :value="item.key">{{item.value}}</el-option>
</el-select>
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model="radioValue" :label="4">
{{ $t("job.TheFirst") }}
<el-input-number v-model="average01" :min="1" :max="4" /> {{ $t("job.TheWeekOfTheWeek") }}
<el-select clearable v-model="average02">
<el-option
v-for="(item, index) of weekList"
:key="index"
:label="item.value"
:value="item.key"
>{{ item.value }}</el-option
>
</el-select>
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model='radioValue' :label="5">
本月最后一个星期
<el-select clearable v-model="weekday">
<el-option v-for="(item,index) of weekList" :key="index" :label="item.value" :value="item.key">{{item.value}}</el-option>
</el-select>
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model="radioValue" :label="5">
{{ $t("job.LastWeekOfThisMonth") }}
<el-select clearable v-model="weekday">
<el-option
v-for="(item, index) of weekList"
:key="index"
:label="item.value"
:value="item.key"
>{{ item.value }}</el-option
>
</el-select>
</el-radio>
</el-form-item>
<el-form-item>
<el-radio v-model='radioValue' :label="6">
指定
<el-select clearable v-model="checkboxList" placeholder="可多选" multiple style="width:100%">
<el-option v-for="(item,index) of weekList" :key="index" :label="item.value" :value="String(item.key)">{{item.value}}</el-option>
</el-select>
</el-radio>
</el-form-item>
</el-form>
<el-form-item>
<el-radio v-model="radioValue" :label="6">
{{ $t("job.appoint") }}
<el-select
clearable
v-model="checkboxList"
:placeholder="$t('job.MultipleChoices')"
multiple
style="width: 100%"
>
<el-option
v-for="(item, index) of weekList"
:key="index"
:label="item.value"
:value="String(item.key)"
>{{ item.value }}</el-option
>
</el-select>
</el-radio>
</el-form-item>
</el-form>
</template>
<script>
export default {
data() {
return {
radioValue: 2,
weekday: 2,
cycle01: 2,
cycle02: 3,
average01: 1,
average02: 2,
checkboxList: [],
weekList: [
{
key: 2,
value: '星期一'
},
{
key: 3,
value: '星期二'
},
{
key: 4,
value: '星期三'
},
{
key: 5,
value: '星期四'
},
{
key: 6,
value: '星期五'
},
{
key: 7,
value: '星期六'
},
{
key: 1,
value: '星期日'
}
],
checkNum: this.$options.propsData.check
}
},
name: 'crontab-week',
props: ['check', 'cron'],
methods: {
//
radioChange() {
if (this.radioValue !== 2 && this.cron.day !== '?') {
this.$emit('update', 'day', '?', 'week');
}
switch (this.radioValue) {
case 1:
this.$emit('update', 'week', '*');
break;
case 2:
this.$emit('update', 'week', '?');
break;
case 3:
this.$emit('update', 'week', this.cycleTotal);
break;
case 4:
this.$emit('update', 'week', this.averageTotal);
break;
case 5:
this.$emit('update', 'week', this.weekdayCheck + 'L');
break;
case 6:
this.$emit('update', 'week', this.checkboxString);
break;
}
},
data() {
return {
radioValue: 2,
weekday: 2,
cycle01: 2,
cycle02: 3,
average01: 1,
average02: 2,
checkboxList: [],
weekList: [
{
key: 2,
value: this.$t("job.Monday"),
},
{
key: 3,
value: this.$t("job.Tuesday"),
},
{
key: 4,
value: this.$t("job.Wednesday"),
},
{
key: 5,
value: this.$t("job.Thursday"),
},
{
key: 6,
value: this.$t("job.Friday"),
},
{
key: 7,
value: this.$t("job.Saturday"),
},
{
key: 1,
value: this.$t("job.Sunday"),
},
],
checkNum: this.$options.propsData.check,
};
},
name: "crontab-week",
props: ["check", "cron"],
methods: {
//
radioChange() {
if (this.radioValue !== 2 && this.cron.day !== "?") {
this.$emit("update", "day", "?", "week");
}
switch (this.radioValue) {
case 1:
this.$emit("update", "week", "*");
break;
case 2:
this.$emit("update", "week", "?");
break;
case 3:
this.$emit("update", "week", this.cycleTotal);
break;
case 4:
this.$emit("update", "week", this.averageTotal);
break;
case 5:
this.$emit("update", "week", this.weekdayCheck + "L");
break;
case 6:
this.$emit("update", "week", this.checkboxString);
break;
}
},
//
cycleChange() {
if (this.radioValue == '3') {
this.$emit('update', 'week', this.cycleTotal);
}
},
//
averageChange() {
if (this.radioValue == '4') {
this.$emit('update', 'week', this.averageTotal);
}
},
//
weekdayChange() {
if (this.radioValue == '5') {
this.$emit('update', 'week', this.weekday + 'L');
}
},
// checkbox
checkboxChange() {
if (this.radioValue == '6') {
this.$emit('update', 'week', this.checkboxString);
}
},
},
watch: {
'radioValue': 'radioChange',
'cycleTotal': 'cycleChange',
'averageTotal': 'averageChange',
'weekdayCheck': 'weekdayChange',
'checkboxString': 'checkboxChange',
},
computed: {
//
cycleTotal: function () {
this.cycle01 = this.checkNum(this.cycle01, 1, 7)
this.cycle02 = this.checkNum(this.cycle02, 1, 7)
return this.cycle01 + '-' + this.cycle02;
},
//
averageTotal: function () {
this.average01 = this.checkNum(this.average01, 1, 4)
this.average02 = this.checkNum(this.average02, 1, 7)
return this.average02 + '#' + this.average01;
},
//
weekdayCheck: function () {
this.weekday = this.checkNum(this.weekday, 1, 7)
return this.weekday;
},
// checkbox
checkboxString: function () {
let str = this.checkboxList.join();
return str == '' ? '*' : str;
}
}
}
//
cycleChange() {
if (this.radioValue == "3") {
this.$emit("update", "week", this.cycleTotal);
}
},
//
averageChange() {
if (this.radioValue == "4") {
this.$emit("update", "week", this.averageTotal);
}
},
//
weekdayChange() {
if (this.radioValue == "5") {
this.$emit("update", "week", this.weekday + "L");
}
},
// checkbox
checkboxChange() {
if (this.radioValue == "6") {
this.$emit("update", "week", this.checkboxString);
}
},
},
watch: {
radioValue: "radioChange",
cycleTotal: "cycleChange",
averageTotal: "averageChange",
weekdayCheck: "weekdayChange",
checkboxString: "checkboxChange",
},
computed: {
//
cycleTotal: function () {
this.cycle01 = this.checkNum(this.cycle01, 1, 7);
this.cycle02 = this.checkNum(this.cycle02, 1, 7);
return this.cycle01 + "-" + this.cycle02;
},
//
averageTotal: function () {
this.average01 = this.checkNum(this.average01, 1, 4);
this.average02 = this.checkNum(this.average02, 1, 7);
return this.average02 + "#" + this.average01;
},
//
weekdayCheck: function () {
this.weekday = this.checkNum(this.weekday, 1, 7);
return this.weekday;
},
// checkbox
checkboxString: function () {
let str = this.checkboxList.join();
return str == "" ? "*" : str;
},
},
};
</script>

+ 8
- 8
src/components/Crontab/year.vue View File

@ -2,19 +2,19 @@
<el-form size="small">
<el-form-item>
<el-radio :label="1" v-model='radioValue'>
不填允许的通配符[, - * /]
{{$t('job.NotFilledIn')}}{{$t('job.PermittedWildcards')}}[, - * /]
</el-radio>
</el-form-item>
<el-form-item>
<el-radio :label="2" v-model='radioValue'>
每年
{{$t('job.every')}} {{$t('job.year') }}
</el-radio>
</el-form-item>
<el-form-item>
<el-radio :label="3" v-model='radioValue'>
周期从
{{$t('job.cycle')}} {{$t('job.follow')}}
<el-input-number v-model='cycle01' :min='fullYear' :max="2098" /> -
<el-input-number v-model='cycle02' :min="cycle01 ? cycle01 + 1 : fullYear + 1" :max="2099" />
</el-radio>
@ -22,17 +22,17 @@
<el-form-item>
<el-radio :label="4" v-model='radioValue'>
<el-input-number v-model='average01' :min='fullYear' :max="2098"/> 年开始
<el-input-number v-model='average02' :min="1" :max="2099 - average01 || fullYear" /> 年执行一次
{{$t('job.follow')}}
<el-input-number v-model='average01' :min='fullYear' :max="2098"/> {{$t('job.year')}} {{$t('job.start') }}{{$t('job.every')}}
<el-input-number v-model='average02' :min="1" :max="2099 - average01 || fullYear" /> {{$t('job.year')}}{{$t('job.ExecuteOnce')}}
</el-radio>
</el-form-item>
<el-form-item>
<el-radio :label="5" v-model='radioValue'>
指定
<el-select clearable v-model="checkboxList" placeholder="可多选" multiple>
{{$t('job.appoint')}}
<el-select clearable v-model="checkboxList" :placeholder="$t('job.MultipleChoices')" multiple>
<el-option v-for="item in 9" :key="item" :value="item - 1 + fullYear" :label="item -1 + fullYear" />
</el-select>
</el-radio>


+ 10
- 0
src/lang/en/area/area.json View File

@ -0,0 +1,10 @@
{
"areaName": "area name",
"regionCode": "region code",
"areaType": "area type",
"UnfoldAndFold": "Unfold and fold",
"sort": "sort",
"AddArea":"Add Area",
"SuperiorRegion":"Superior region",
"EditArea":"Edit Area"
}

+ 14
- 0
src/lang/en/area/area_management.json View File

@ -0,0 +1,14 @@
{
"StartDate": "Start date",
"EndDate": "End Date",
"RegionalDistribution": "Regional distribution",
"index": "index",
"MaintenanceAreaConfigurationCode": "Maintenance area configuration code",
"TheMaintenanceTimelineBegins": "The maintenance timeline begins",
"EndOfMaintenanceTimeNode": "End of maintenance time node",
"ValidOrNot": "Valid or not",
"loseEfficacy": "lose efficacy",
"AddMaintenancePlan":"Add maintenance plan",
"type":"type",
"TimeAndDate":"Time and Date"
}

+ 3
- 0
src/lang/en/basedata/station.json View File

@ -0,0 +1,3 @@
{
}

+ 66
- 54
src/lang/en/index.js View File

@ -4,58 +4,70 @@ import entry from './equipment/entry.json';
import equipment from './equipment/equipment.json';
import equipment_type from './equipment/equipment_type.json';
import site_management from './point/site_management.json';
import point_mang from './point/point_mang.json';
import area_management from './area/area_management.json';
import area from './area/area.json';
import job from './monitor/job.json';
import station from './basedata/station.json';
export default {
routerIl8n: {
homePage: 'homePage'
},
navBar: {
IndividualCenter: 'Individual center',
LayoutSetting: 'Layout setting',
LogOut: 'Log out',
},
settings: {
ThemeStyleSetting: 'Theme style setting',
ThemeColor: 'Theme color',
title: 'Page style setting',
onTopNav: 'On TopNav',
onTagsViews: 'On Tags-Views',
immobilizationHeader: 'immobilization Header',
revealLogo: 'reveal Logo',
DynamicHeading: 'Dynamic heading',
SaveConfiguration: 'Save configuration',
ResetConfiguration: 'Reset configuration',
},
share: {
search: 'search',
reset: 'reset',
new: 'new',
delete: 'delete',
edit: 'edit',
addTo: 'add to',
cancel: 'cancel',
confirm: 'confirm',
export:'export',
import:'import',
PleaseEnter: 'Please enter',
StartTime: 'Start time',
EndTime: 'End time',
On: 'On',
Off: 'Off',
status: 'status',
operate: 'operate',
CreationTime: "Creation time",
PleaseChoose: 'Please choose',
to: 'to',
content:'content',
Yes:'Yes',
No:'No',
loading:"loading"
},
administration:administration,
entry:entry,
equipment:equipment,
equipment_type:equipment_type,
site_management:site_management,
}
routerIl8n: {
homePage: 'homePage'
},
navBar: {
IndividualCenter: 'Individual center',
LayoutSetting: 'Layout setting',
LogOut: 'Log out',
},
settings: {
ThemeStyleSetting: 'Theme style setting',
ThemeColor: 'Theme color',
title: 'Page style setting',
onTopNav: 'On TopNav',
onTagsViews: 'On Tags-Views',
immobilizationHeader: 'immobilization Header',
revealLogo: 'reveal Logo',
DynamicHeading: 'Dynamic heading',
SaveConfiguration: 'Save configuration',
ResetConfiguration: 'Reset configuration',
},
share: {
search: 'search',
reset: 'reset',
new: 'new',
delete: 'delete',
edit: 'edit',
addTo: 'add to',
cancel: 'cancel',
confirm: 'confirm',
export: 'export',
import: 'import',
PleaseEnter: 'Please enter',
StartTime: 'Start time',
EndTime: 'End time',
On: 'On',
Off: 'Off',
status: 'status',
operate: 'operate',
CreationTime: "Creation time",
PleaseChoose: 'Please choose',
to: 'to',
content: 'content',
Yes: 'Yes',
No: 'No',
loading: "loading",
copy: "copy",
save:"save"
},
administration: administration,
entry: entry,
equipment: equipment,
equipment_type: equipment_type,
site_management: site_management,
point_mang: point_mang,
area_management:area_management,
area:area,
job:job,
station:station
}

+ 80
- 0
src/lang/en/monitor/job.json View File

@ -0,0 +1,80 @@
{
"log": "log",
"TaskName": "Task Name",
"TaskGroupName": "Task group name",
"TaskStatus": "Task status",
"TaskNumber": "Task Number",
"CallTheTargetString": "Call the target string",
"CronExecutionExpression": "Cron execution expression",
"more": "more",
"ExecuteOnce": "Execute once",
"TaskDetails": "Task Details",
"dispatchingLog": "dispatching log",
"callingMethod": "calling method",
"CallExample": "Call Example",
"ParameterDescription": "Parameter description: Supports strings, boolean types, long integers, floating-point types, integers",
"GenerateExpression": "Generate expression",
"ExecutionStrategy": "Execution Strategy",
"ExecuteImmediately": "Execute immediately",
"AbandoningExecution": "Abandoning Execution",
"IsItConcurrent": "Is it concurrent",
"allow": "allow",
"prohibit": "prohibit",
"CronExpressionGenerator": "Cron expression generator",
"second": "second",
"minute": "minute",
"hour": "hour",
"day": "day",
"month": "month",
"week": "week",
"year": "year",
"timeExpression": "time expression",
"expression": "expression",
"prepareToRestore": "prepare to restore",
"RecentRunningTime": "Last 5 running times",
"InTheCalculationResults": "In the calculation results",
"PermittedWildcards": "Permitted Wildcards",
"cycle": "cycle",
"follow": "follow",
"appoint": "appoint",
"start": "start",
"every": "every",
"MultipleChoices": "Multiple choices",
"NotSpecified": "Not specified",
"TheMostRecentWorkingDay": "The most recent working day",
"LastDayOfThisMonth": "Last day of this month",
"CycleFromWeekToWeek": "Cycle from week to week",
"Monday": "Monday",
"Tuesday": "Tuesday",
"Wednesday": "Wednesday",
"Thursday": "Thursday",
"Friday": "Friday",
"Saturday": "Saturday",
"Sunday": "Sunday",
"TheFirst": "The first",
"TheWeekOfTheWeek": "The week of the week",
"LastWeekOfThisMonth": "Last week of this month",
"NotFilledIn": "Not filled in",
"CreationTime": "Creation time",
"NextExecutionTime": "Next execution time",
"CallTheTargetMethod": "Call the target method",
"normal": "normal",
"pause": "pause",
"defaultPolicy": "default policy",
"close": "close",
"CannotBeEmpty": "Cannot be empty",
"Enable": "Enable",
"Deactivate": "Deactivate",
"ConfirmTo": "Confirm to",
"Task": "Task",
"success": "success",
"ConfirmToExecuteImmediatelyOnce": "Confirm to execute immediately once",
"addTask": "add task",
"Modify Task":"修改任务",
"modify":"modify",
"newlyAdded":"newly added",
"AreYouSureToDeleteTheScheduledTaskNumber":"Are you sure to delete the scheduled task number",
"TheDataItem":"The data item",
"delete":"delete"
}

+ 13
- 0
src/lang/en/point/point_mang.json View File

@ -0,0 +1,13 @@
{
"PleaseEnterTheContent": "Please enter the content",
"tableHeadMsg": "Supports up to 200 inspection points and their contents",
"index": "index",
"equipmentClassification": "equipment classification",
"InspectionStandards": "Inspection standards",
"dataFormat": "data format",
"IntelligentRecognitionType": "Intelligent recognition Type",
"SetIntelligentRecognitionType": "Set intelligent recognition type",
"AlgorithmName":"Algorithm name",
"ThresholdUpperLimit":"Threshold upper limit",
"LowerThresholdLimit":"Lower threshold limit"
}

+ 10
- 0
src/lang/zh/area/area.json View File

@ -0,0 +1,10 @@
{
"areaName":"区域名称",
"regionCode":"区域编码",
"areaType":"区域类型",
"UnfoldAndFold":"展开折叠",
"sort":"排序",
"AddArea":"添加区域",
"SuperiorRegion":"上级区域",
"EditArea":"编辑区域"
}

+ 14
- 0
src/lang/zh/area/area_management.json View File

@ -0,0 +1,14 @@
{
"StartDate":"开始日期",
"EndDate":"结束日期",
"RegionalDistribution":"区域下发",
"index":"序号",
"MaintenanceAreaConfigurationCode":"检修区域配置编码",
"TheMaintenanceTimelineBegins":"检修时间节点开始",
"EndOfMaintenanceTimeNode":"检修时间节点结束",
"ValidOrNot":"是否有效",
"loseEfficacy":"失效",
"AddMaintenancePlan":"新增检修计划",
"type":"类型",
"TimeAndDate":"时间日期"
}

+ 3
- 0
src/lang/zh/basedata/station.json View File

@ -0,0 +1,3 @@
{
}

+ 13
- 1
src/lang/zh/index.js View File

@ -3,6 +3,11 @@ import entry from './equipment/entry.json';
import equipment from './equipment/equipment.json';
import equipment_type from './equipment/equipment_type.json';
import site_management from './point/site_management.json';
import point_mang from './point/point_mang.json';
import area_management from './area/area_management.json';
import area from './area/area.json';
import job from './monitor/job.json';
import station from './basedata/station.json';
export default {
routerIl8n: {
homePage: '首页'
@ -49,7 +54,9 @@ export default {
content:'内容',
Yes:'是',
No:'否',
loading:"加载中"
loading:"加载中",
copy:"复制",
save:"保存"
},
administration:administration,
@ -57,4 +64,9 @@ export default {
equipment:equipment,
equipment_type:equipment_type,
site_management:site_management,
point_mang:point_mang,
area_management:area_management,
area:area,
job:job,
station:station
}

+ 80
- 0
src/lang/zh/monitor/job.json View File

@ -0,0 +1,80 @@
{
"log": "日志",
"TaskName": "任务名称",
"TaskGroupName": "任务组名",
"TaskStatus": "任务状态",
"TaskNumber": "任务编号",
"CallTheTargetString": "调用目标字符串",
"CronExecutionExpression": "cron执行表达式",
"more": "更多",
"ExecuteOnce": "执行一次",
"TaskDetails": "任务详细",
"dispatchingLog": "调度日志",
"callingMethod": "调用方法",
"CallExample": "调用示例",
"ParameterDescription": "参数说明:支持字符串,布尔类型,长整型,浮点型,整型",
"GenerateExpression": "生成表达式",
"ExecutionStrategy": "执行策略",
"ExecuteImmediately": "立即执行",
"AbandoningExecution": "放弃执行",
"IsItConcurrent": "是否并发",
"allow": "允许",
"prohibit": "禁止",
"CronExpressionGenerator": "Cron表达式生成器",
"second": "秒",
"minute": "分",
"hour": "时",
"day": "日",
"month": "月",
"week": "周",
"year": "年",
"timeExpression": "时间表达式",
"expression": "表达式",
"prepareToRestore": "准备还原",
"RecentRunningTime": "最近5次运行时间",
"InTheCalculationResults": "计算结果中",
"PermittedWildcards": "允许的通配符",
"cycle": "周期",
"follow": "从",
"appoint": "指定",
"start": "开始",
"every": "每",
"MultipleChoices": "可多选",
"NotSpecified": "不指定",
"TheMostRecentWorkingDay": "最近的那个工作日",
"LastDayOfThisMonth": "本月的最后一天",
"CycleFromWeekToWeek": "周期从星期",
"Monday": "星期一",
"Tuesday": "星期二",
"Wednesday": "星期三",
"Thursday": "星期四",
"Friday": "星期五",
"Saturday": "星期六",
"Sunday": "星期日",
"TheFirst":"第",
"TheWeekOfTheWeek":"周的星期",
"LastWeekOfThisMonth":"本月最后一个星期",
"NotFilledIn":"不填",
"CreationTime":"创建时间",
"NextExecutionTime":"下次执行时间",
"CallTheTargetMethod":"调用目标方法",
"normal":"正常",
"pause":"暂停",
"defaultPolicy":"默认策略",
"close":"关闭",
"CannotBeEmpty":"不能为空",
"Enable":"启用",
"Deactivate":"停用",
"ConfirmTo":"确认要",
"Task":"任务吗",
"success":"成功",
"ConfirmToExecuteImmediatelyOnce":"确认立即执行一次",
"addTask":"添加任务",
"ModifyTask":"修改任务",
"execute":"执行",
"modify":"修改",
"newlyAdded":"新增",
"AreYouSureToDeleteTheScheduledTaskNumber":"是否确认删除定时任务编号为",
"TheDataItem":"的数据项",
"delete":"删除"
}

+ 13
- 0
src/lang/zh/point/point_mang.json View File

@ -0,0 +1,13 @@
{
"PleaseEnterTheContent": "请输入内容",
"tableHeadMsg": "最多支持200个巡检点位以及内容",
"index": "序号",
"equipmentClassification": "设备分类",
"InspectionStandards": "巡检标准",
"dataFormat": "数据格式",
"IntelligentRecognitionType": "智能识别类型",
"SetIntelligentRecognitionType": "设置智能识别类型",
"AlgorithmName":"算法名称",
"ThresholdUpperLimit":"阀值上限",
"LowerThresholdLimit":"阀值下限"
}

+ 1
- 0
src/layout/components/Navbar.vue View File

@ -115,6 +115,7 @@ export default {
},
},
language() {
localStorage.setItem("language", this.$store.getters.language)
return this.$store.getters.language
}
},


+ 97
- 34
src/layout/components/Sidebar/SidebarItem.vue View File

@ -1,16 +1,42 @@
<template>
<div v-if="!item.hidden">
<template v-if="hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow">
<app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path, onlyOneChild.query)">
<el-menu-item :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
<item :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title" />
<template
v-if="
hasOneShowingChild(item.children, item) &&
(!onlyOneChild.children || onlyOneChild.noShowingChildren) &&
!item.alwaysShow
"
>
<app-link
v-if="onlyOneChild.meta"
:to="resolvePath(onlyOneChild.path, onlyOneChild.query)"
>
<el-menu-item
:index="resolvePath(onlyOneChild.path)"
:class="{ 'submenu-title-noDropdown': !isNest }"
>
<!-- :title="onlyOneChild.meta.title" -->
<item
:icon="onlyOneChild.meta.icon || (item.meta && item.meta.icon)"
:title="titleFn(onlyOneChild.meta.title)"
/>
</el-menu-item>
</app-link>
</template>
<el-submenu v-else ref="subMenu" :index="resolvePath(item.path)" popper-append-to-body>
<el-submenu
v-else
ref="subMenu"
:index="resolvePath(item.path)"
popper-append-to-body
>
<template slot="title">
<item v-if="item.meta" :icon="item.meta && item.meta.icon" :title="item.meta.title" />
<item
v-if="item.meta"
:icon="item.meta && item.meta.icon"
:title="titleFn(item.meta.title, item.children)"
>
</item>
</template>
<sidebar-item
v-for="(child, index) in item.children"
@ -19,81 +45,118 @@
:item="child"
:base-path="resolvePath(child.path)"
class="nest-menu"
/>
>
</sidebar-item>
</el-submenu>
</div>
</template>
<script>
import path from 'path'
import { isExternal } from '@/utils/validate'
import Item from './Item'
import AppLink from './Link'
import FixiOSBug from './FixiOSBug'
import path from "path";
import { isExternal } from "@/utils/validate";
import Item from "./Item";
import AppLink from "./Link";
import FixiOSBug from "./FixiOSBug";
export default {
name: 'SidebarItem',
name: "SidebarItem",
components: { Item, AppLink },
mixins: [FixiOSBug],
props: {
// route object
item: {
type: Object,
required: true
required: true,
},
isNest: {
type: Boolean,
default: false
default: false,
},
basePath: {
type: String,
default: ''
}
default: "",
},
},
data() {
this.onlyOneChild = null
return {}
this.onlyOneChild = null;
return {};
},
methods: {
hasOneShowingChild(children = [], parent) {
if (!children) {
children = [];
}
const showingChildren = children.filter(item => {
const showingChildren = children.filter((item) => {
if (item.hidden) {
return false
return false;
}
// Temp set(will be used if only has one showing child)
this.onlyOneChild = item
return true
})
this.onlyOneChild = item;
return true;
});
// When there is only one child router, the child router is displayed by default
if (showingChildren.length === 1) {
return true
return true;
}
// Show parent if there are no child router to display
if (showingChildren.length === 0) {
this.onlyOneChild = { ... parent, path: '', noShowingChildren: true }
return true
this.onlyOneChild = { ...parent, path: "", noShowingChildren: true };
return true;
}
return false
return false;
},
resolvePath(routePath, routeQuery) {
if (isExternal(routePath)) {
return routePath
return routePath;
}
if (isExternal(this.basePath)) {
return this.basePath
return this.basePath;
}
if (routeQuery) {
let query = JSON.parse(routeQuery);
return { path: path.resolve(this.basePath, routePath), query: query }
return { path: path.resolve(this.basePath, routePath), query: query };
}
return path.resolve(this.basePath, routePath);
},
titleFn(item, children) {
let str = "";
let lang = localStorage.getItem("language");
if (item.includes("|")) {
if (lang == "en_US") {
str = item.split("|")[1];
} else {
str = item.split("|")[0];
}
} else {
str = item;
}
return path.resolve(this.basePath, routePath)
if (children) {
children.forEach((i) => {
if (i.meta && i.meta.title) {
if (i.meta.title.includes("|")) {
if (lang == "en_US") {
i.meta.title = i.meta.title.split("|")[1];
} else {
i.meta.title = i.meta.title.split("|")[0];
}
} else {
i.meta.title = i.meta.title;
}
}
});
}
if(item=="首页"){
if (lang == "en_US") {
str = "Home";
} else {
str = "首页";
}
}
return str;
}
}
}
},
};
</script>

+ 3
- 2
src/layout/components/Sidebar/index.vue View File

@ -17,7 +17,8 @@
:key="route.path + index"
:item="route"
:base-path="route.path"
/>
>
</sidebar-item>
</el-menu>
</el-scrollbar>
</div>
@ -51,7 +52,7 @@ export default {
},
isCollapse() {
return !this.sidebar.opened;
}
},
}
};
</script>

+ 37
- 1
src/layout/components/TagsView/index.vue View File

@ -13,7 +13,7 @@
@click.middle.native="!isAffix(tag)?closeSelectedTag(tag):''"
@contextmenu.prevent.native="openMenu(tag,$event)"
>
{{ tag.title }}
{{ titleFn(tag.title) }}
<span v-if="!isAffix(tag)" class="el-icon-close" @click.prevent.stop="closeSelectedTag(tag)" />
</router-link>
</scroll-pane>
@ -228,6 +228,42 @@ export default {
},
handleScroll() {
this.closeMenu()
},
titleFn(item, children) {
let str = "";
let lang = localStorage.getItem("language");
if (item.includes("|")) {
if (lang == "en_US") {
str = item.split("|")[1];
} else {
str = item.split("|")[0];
}
} else {
str = item;
}
if (children) {
children.forEach((i) => {
if (i.meta && i.meta.title) {
if (i.meta.title.includes("|")) {
if (lang == "en_US") {
i.meta.title = i.meta.title.split("|")[1];
} else {
i.meta.title = i.meta.title.split("|")[0];
}
} else {
i.meta.title = i.meta.title;
}
}
});
}
if(item=="首页"){
if (lang == "en_US") {
str = "Home";
} else {
str = "首页";
}
}
return str;
}
}
}


+ 138
- 87
src/views/area/area.vue View File

@ -1,29 +1,34 @@
<template>
<div class="app-container">
<el-form :inline="true" :model="queryParams">
<el-form-item label="区域名称">
<el-form-item :label="$t('area.areaName')">
<el-input
v-model="queryParams.user"
placeholder="请输入区域名称"
:placeholder="$t('share.PleaseEnter') + $t('area.areaName')"
></el-input>
</el-form-item>
<el-form-item label="区域编码">
<el-form-item :label="$t('area.regionCode')">
<el-input
v-model="queryParams.user"
placeholder="请输入区域编码"
:placeholder="$t('share.PleaseEnter') + $t('area.regionCode')"
></el-input>
</el-form-item>
<el-form-item label="区域管理">
<el-select v-model="queryParams.region" placeholder="区域类型">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
<el-form-item :label="$t('area.areaType')">
<el-select
v-model="queryParams.region"
:placeholder="$t('share.PleaseChoose') + $t('area.areaType')"
>
<!-- <el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option> -->
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini"
>搜索</el-button
>
<el-button icon="el-icon-refresh" size="mini">重置</el-button>
<el-button type="primary" icon="el-icon-search" size="mini">{{
$t("share.search")
}}</el-button>
<el-button icon="el-icon-refresh" size="mini">{{
$t("share.reset")
}}</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
@ -34,14 +39,18 @@
plain
size="mini"
@click="add"
>新增</el-button
>{{ $t("share.new") }}</el-button
>
</el-col>
<el-col :span="1.5">
<el-button icon="el-icon-sort" plain size="mini">展开折叠</el-button>
<el-button icon="el-icon-sort" plain size="mini">{{
$t("area.UnfoldAndFold")
}}</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="primary" size="mini">导出</el-button>
<el-button type="primary" size="mini">{{
$t("share.export")
}}</el-button>
</el-col>
</el-row>
@ -52,34 +61,53 @@
default-expand-all
:tree-props="{ children: 'children', hasChildren: 'hasChildren' }"
>
<el-table-column prop="date" label="区域名称"> </el-table-column>
<el-table-column prop="name" label="编码" width="180" align="center">
<el-table-column prop="date" :label="$t('area.areaName')">
</el-table-column>
<el-table-column prop="address" label="排序" align="center">
<el-table-column
prop="name"
:label="$t('area.regionCode')"
width="180"
align="center"
>
</el-table-column>
<el-table-column prop="address" label="区域类型" align="center">
<el-table-column prop="address" :label="$t('area.sort')" align="center">
</el-table-column>
<el-table-column prop="address" label="创建时间" align="center">
<el-table-column
prop="address"
:label="$t('area.areaType')"
align="center"
>
</el-table-column>
<el-table-column prop="address" label="操作" width="180" align="center">
<el-table-column
prop="address"
:label="$t('share.CreationTime')"
align="center"
>
</el-table-column>
<el-table-column
prop="address"
:label="$t('share.operate')"
width="180"
align="center"
>
<template slot-scope="scope">
<el-button
type="text"
size="small"
@click="handleEdit(scope.$index, scope.row)"
>修改</el-button
>{{ $t("share.edit") }}</el-button
>
<el-button
type="text"
size="small"
@click="handleEdit(scope.$index, scope.row)"
>新增</el-button
@click="handleAdd(scope.$index, scope.row)"
>{{ $t("share.new") }}</el-button
>
<el-button
type="text"
size="small"
@click="handleDelete(scope.$index, scope.row)"
>删除</el-button
>{{ $t("share.delete") }}</el-button
>
</template>
</el-table-column>
@ -88,48 +116,75 @@
<el-dialog
:title="title"
:visible.sync="dialogVisible"
width="30%"
width="40%"
:before-close="handleClose"
>
<el-row :gutter="10">
<el-form :model="dialogForm">
<el-form
:model="dialogForm"
label-width="130px"
:rules="rules"
ref="ruleForm"
>
<el-col :span="12">
<el-form-item label="上级区域" label-width="80px">
<el-select v-model="dialogForm.region" placeholder="上级区域">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
<el-form-item
:label="$t('area.SuperiorRegion')"
prop="SuperiorRegion"
>
<el-select
v-model="dialogForm.SuperiorRegion"
:placeholder="
$t('share.PleaseChoose') + $t('area.SuperiorRegion')
"
style="width: 100%"
>
<!-- <el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option> -->
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="区域类型" label-width="80px">
<el-select v-model="dialogForm.region" placeholder="区域类型">
<el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option>
<el-form-item :label="$t('area.areaType')" style="width: 100%">
<el-select
v-model="dialogForm.areaType"
:placeholder="$t('share.PleaseChoose') + $t('area.areaType')"
style="width: 100%"
>
<!-- <el-option label="区域一" value="shanghai"></el-option>
<el-option label="区域二" value="beijing"></el-option> -->
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="区域名称" label-width="80px">
<el-input placeholder="请输入区域名称"></el-input>
<el-form-item :label="$t('area.areaName')" prop="areaName">
<el-input
v-model="dialogForm.areaName"
:placeholder="$t('share.PleaseEnter') + $t('area.areaName')"
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="区域编码" label-width="80px">
<el-input placeholder="请输入区域编码"></el-input>
<el-form-item :label="$t('area.regionCode')">
<el-input
:placeholder="$t('share.PleaseEnter') + $t('area.regionCode')"
></el-input>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="显示排序" label-width="80px">
<el-input-number v-model="dialogForm.num" controls-position="right" :min="0"></el-input-number>
<el-form-item :label="$t('area.sort')" prop="sort">
<el-input-number
v-model="dialogForm.sort"
controls-position="right"
:min="0"
></el-input-number>
</el-form-item>
</el-col>
</el-form>
</el-row>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button @click="dialogVisible = false">{{$t('share.cancel')}}</el-button>
<el-button type="primary" @click="dialogVisible = false"
> </el-button
>{{$t('share.confirm')}}</el-button
>
</span>
</el-dialog>
@ -141,63 +196,59 @@ export default {
data() {
return {
queryParams: {},
tableData: [
{
id: 1,
date: "2016-05-02",
name: "王小虎",
address: "上海市普陀区金沙江路 1518 弄",
},
{
id: 2,
date: "2016-05-04",
name: "王小虎",
address: "上海市普陀区金沙江路 1517 弄",
},
{
id: 3,
date: "2016-05-01",
name: "王小虎",
address: "上海市普陀区金沙江路 1519 弄",
children: [
{
id: 31,
date: "2016-05-01",
name: "王小虎",
address: "上海市普陀区金沙江路 1519 弄",
},
{
id: 32,
date: "2016-05-01",
name: "王小虎",
address: "上海市普陀区金沙江路 1519 弄",
},
],
},
{
id: 4,
date: "2016-05-03",
name: "王小虎",
address: "上海市普陀区金沙江路 1516 弄",
},
],
tableData: [{}],
dialogVisible: false,
title: "添加区域",
title: this.$t("area.AddArea"),
dialogForm: {
num:0
// num: 0,
},
rules: {
SuperiorRegion: [
{
required: true,
message:
this.$t("share.PleaseChoose") + this.$t("area.SuperiorRegion"),
trigger: "change",
},
],
areaName: [
{
required: true,
message:
this.$t("share.PleaseEnter") + this.$t("area.areaName"),
trigger: "blur",
},
],
sort:[
{
required: true,
message:
this.$t("share.PleaseChoose") + this.$t("area.sort"),
trigger: "change",
}
]
},
};
},
methods: {
add() {
this.dialogVisible = true;
this.title = this.$t("area.AddArea");
},
handleEdit(){
this.dialogVisible = true;
this.title = this.$t("area.EditArea");
},
handleAdd() {
this.dialogVisible = true;
this.title = this.$t("area.AddArea");
},
},
};
</script>
<style lang="scss" scoped>
::v-deep.el-input-number{
width: 100%;
::v-deep.el-input-number {
width: 100%;
}
</style>

+ 28
- 53
src/views/area/area_management.vue View File

@ -1,38 +1,38 @@
<template>
<div class="app-container">
<el-form :inline="true" :model="queryParams" class="demo-form-inline">
<el-form-item label="开始日期">
<el-date-picker v-model="value1" type="date" placeholder="选择日期">
<el-form-item :label="$t('area_management.StartDate')">
<el-date-picker v-model="value1" type="date" :placeholder="$t('share.PleaseChoose')+$t('share.StartDate')">
</el-date-picker>
</el-form-item>
<el-form-item label="结束日期">
<el-date-picker v-model="value1" type="date" placeholder="选择日期">
<el-form-item :label="$t('area_management.EndDate')">
<el-date-picker v-model="value1" type="date" :placeholder="$t('share.PleaseChoose')+$t('share.EndDate')">
</el-date-picker>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search">搜索</el-button>
<el-button type="primary" icon="el-icon-search">{{$t('share.search')}}</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10">
<el-col :span="1.5">
<el-button type="primary" icon="el-icon-plus" @click="add">新增</el-button>
<el-button type="primary" icon="el-icon-plus" @click="add">{{$t('share.new')}}</el-button>
</el-col>
<el-col :span="1.5">
<el-button type="primary" plain>区域下发</el-button>
<el-button type="primary" plain>{{ $t('area_management.RegionalDistribution') }}</el-button>
</el-col>
</el-row>
<el-table :data="tableData" border style="width: 100%; margin-top: 10px">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="序号" type="index" align="center" />
<el-table-column prop="date" label="检修区域配置编码" align="center" />
<el-table-column prop="date" label="检修时间节点开始" align="center" />
<el-table-column prop="date" label="检修时间节点结束" align="center" />
<el-table-column prop="date" label="是否有效" align="center" />
<el-table-column :label="$t('area_management.index')" type="index" align="center" width="55"/>
<el-table-column prop="date" :label="$t('area_management.MaintenanceAreaConfigurationCode')" align="center" />
<el-table-column prop="date" :label="$t('area_management.TheMaintenanceTimelineBegins')" align="center" />
<el-table-column prop="date" :label="$t('area_management.EndOfMaintenanceTimeNode')" align="center" />
<el-table-column prop="date" :label="$t('area_management.ValidOrNot')" align="center" />
<el-table-column label="操作" align="center">
<template slot-scope="scope">
<el-button type="text" icon="el-icon-edit"> 失效 </el-button>
<el-button type="text" icon="el-icon-delete"> 删除</el-button>
<el-button type="text" icon="el-icon-edit"> {{ $t('area_management.loseEfficacy') }} </el-button>
<el-button type="text" icon="el-icon-delete"> {{ $t('share.delete') }}</el-button>
</template>
</el-table-column>
</el-table>
@ -45,7 +45,7 @@
<el-dialog
:title="title"
:visible.sync="dialogVisible"
width="42%"
width="60%"
:before-close="handleClose"
>
<el-row :gutter="10">
@ -58,29 +58,29 @@
></el-tree>
</el-col>
<el-col :span="15">
<el-form :model="dialogForm">
<el-form-item label="类型" label-width="150px">
<el-select>
<el-form :model="dialogForm" label-width="160px">
<el-form-item :label="$t('area_management.type')" >
<el-select :placeholder="$t('share.PleaseChoose')+$t('area_management.type')">
<el-option label="item.label" value="item.value"> </el-option>
</el-select>
</el-form-item>
<el-form-item label="检修区域配置编码" label-width="150px">
<el-input placeholder="请输入检修区域配置编码"></el-input>
<el-form-item :label="$t('area_management.MaintenanceAreaConfigurationCode')" >
<el-input :placeholder="$t('share.PleaseEnter')+$t('area_management.MaintenanceAreaConfigurationCode')"></el-input>
</el-form-item>
<el-form-item label="时间日期" label-width="150px">
<el-form-item :label="$t('area_management.TimeAndDate')" >
<el-date-picker
v-model="value1"
type="daterange"
range-separator=""
start-placeholder="开始日期"
end-placeholder="结束日期"
range-separator="-"
:start-placeholder="$t('area_management.StartDate')"
:end-placeholder="$t('area_management.EndDate')"
>
</el-date-picker>
</el-form-item>
<el-form-item >
<div style="text-align: center;">
<el-button type="primary" >确定</el-button>
<el-button>取消</el-button>
<el-button type="primary" >{{ $t('share.confirm') }}</el-button>
<el-button>{{ $t('share.cancel') }}</el-button>
</div>
</el-form-item>
@ -100,34 +100,9 @@ export default {
},
total: 4,
tableData: [{}],
title: "新增检修计划",
title: this.$t('area_management.AddMaintenancePlan'),
dialogVisible: false,
treeData: [
{
label: "一级 1",
type: 1,
children: [
{
label: "二级 1-1",
children: [
{
label: "三级 1-1-1",
children: [
{
label: "四级 1-1-1-1",
type: 4,
},
{
label: "四级 1-1-1-2",
type: 4,
},
],
},
],
},
],
},
],
treeData: [],
defaultProps: {
children: "children",
label: "label",


+ 364
- 133
src/views/monitor/job/index.vue View File

@ -1,16 +1,26 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="任务名称" prop="jobName">
<el-form
:model="queryParams"
ref="queryForm"
size="small"
:inline="true"
v-show="showSearch"
>
<el-form-item :label="$t('job.TaskName')" prop="jobName">
<el-input
v-model="queryParams.jobName"
placeholder="请输入任务名称"
:placeholder="$t('share.PleaseEnter') + $t('job.TaskName')"
clearable
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="任务组名" prop="jobGroup">
<el-select v-model="queryParams.jobGroup" placeholder="请选择任务组名" clearable>
<el-form-item :label="$t('job.TaskGroupName')" prop="jobGroup">
<el-select
v-model="queryParams.jobGroup"
:placeholder="$t('share.PleaseChoose') + $t('job.TaskGroupName')"
clearable
>
<el-option
v-for="dict in dict.type.sys_job_group"
:key="dict.value"
@ -19,8 +29,12 @@
/>
</el-select>
</el-form-item>
<el-form-item label="任务状态" prop="status">
<el-select v-model="queryParams.status" placeholder="请选择任务状态" clearable>
<el-form-item :label="$t('job.TaskStatus')" prop="status">
<el-select
v-model="queryParams.status"
:placeholder="$t('share.PleaseChoose') + $t('job.TaskStatus')"
clearable
>
<el-option
v-for="dict in dict.type.sys_job_status"
:key="dict.value"
@ -30,8 +44,16 @@
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
<el-button
type="primary"
icon="el-icon-search"
size="mini"
@click="handleQuery"
>{{ $t("share.search") }}</el-button
>
<el-button icon="el-icon-refresh" size="mini" @click="resetQuery">{{
$t("share.reset")
}}</el-button>
</el-form-item>
</el-form>
@ -44,7 +66,8 @@
size="mini"
@click="handleAdd"
v-hasPermi="['monitor:job:add']"
>新增</el-button>
>{{ $t("share.new") }}</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
@ -55,7 +78,8 @@
:disabled="single"
@click="handleUpdate"
v-hasPermi="['monitor:job:edit']"
>修改</el-button>
>{{ $t("share.edit") }}</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
@ -66,7 +90,8 @@
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['monitor:job:remove']"
>删除</el-button>
>{{ $t("share.delete") }}</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
@ -76,7 +101,8 @@
size="mini"
@click="handleExport"
v-hasPermi="['monitor:job:export']"
>导出</el-button>
>{{ $t("share.export") }}</el-button
>
</el-col>
<el-col :span="1.5">
<el-button
@ -86,23 +112,58 @@
size="mini"
@click="handleJobLog"
v-hasPermi="['monitor:job:query']"
>日志</el-button>
>{{ $t("job.log") }}</el-button
>
</el-col>
<right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
<right-toolbar
:showSearch.sync="showSearch"
@queryTable="getList"
></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="jobList" @selection-change="handleSelectionChange">
<el-table
v-loading="loading"
:data="jobList"
@selection-change="handleSelectionChange"
>
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="任务编号" width="100" align="center" prop="jobId" />
<el-table-column label="任务名称" align="center" prop="jobName" :show-overflow-tooltip="true" />
<el-table-column label="任务组名" align="center" prop="jobGroup">
<el-table-column
:label="$t('job.TaskNumber')"
width="100"
align="center"
prop="jobId"
/>
<el-table-column
:label="$t('job.TaskName')"
align="center"
prop="jobName"
:show-overflow-tooltip="true"
/>
<el-table-column
:label="$t('job.TaskGroupName')"
align="center"
prop="jobGroup"
>
<template slot-scope="scope">
<dict-tag :options="dict.type.sys_job_group" :value="scope.row.jobGroup"/>
<dict-tag
:options="dict.type.sys_job_group"
:value="scope.row.jobGroup"
/>
</template>
</el-table-column>
<el-table-column label="调用目标字符串" align="center" prop="invokeTarget" :show-overflow-tooltip="true" />
<el-table-column label="cron执行表达式" align="center" prop="cronExpression" :show-overflow-tooltip="true" />
<el-table-column label="状态" align="center">
<el-table-column
:label="$t('job.CallTheTargetString')"
align="center"
prop="invokeTarget"
:show-overflow-tooltip="true"
/>
<el-table-column
:label="$t('job.CronExecutionExpression')"
align="center"
prop="cronExpression"
:show-overflow-tooltip="true"
/>
<el-table-column :label="$t('share.status')" align="center">
<template slot-scope="scope">
<el-switch
v-model="scope.row.status"
@ -112,7 +173,11 @@
></el-switch>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<el-table-column
:label="$t('share.operate')"
align="center"
class-name="small-padding fixed-width"
>
<template slot-scope="scope">
<el-button
size="mini"
@ -120,23 +185,43 @@
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
v-hasPermi="['monitor:job:edit']"
>修改</el-button>
>{{ $t("share.edit") }}</el-button
>
<el-button
size="mini"
type="text"
icon="el-icon-delete"
@click="handleDelete(scope.row)"
v-hasPermi="['monitor:job:remove']"
>删除</el-button>
<el-dropdown size="mini" @command="(command) => handleCommand(command, scope.row)" v-hasPermi="['monitor:job:changeStatus', 'monitor:job:query']">
<el-button size="mini" type="text" icon="el-icon-d-arrow-right">更多</el-button>
>{{ $t("share.delete") }}</el-button
>
<el-dropdown
size="mini"
@command="(command) => handleCommand(command, scope.row)"
v-hasPermi="['monitor:job:changeStatus', 'monitor:job:query']"
>
<el-button size="mini" type="text" icon="el-icon-d-arrow-right">{{
$t("job.more")
}}</el-button>
<el-dropdown-menu slot="dropdown">
<el-dropdown-item command="handleRun" icon="el-icon-caret-right"
v-hasPermi="['monitor:job:changeStatus']">执行一次</el-dropdown-item>
<el-dropdown-item command="handleView" icon="el-icon-view"
v-hasPermi="['monitor:job:query']">任务详细</el-dropdown-item>
<el-dropdown-item command="handleJobLog" icon="el-icon-s-operation"
v-hasPermi="['monitor:job:query']">调度日志</el-dropdown-item>
<el-dropdown-item
command="handleRun"
icon="el-icon-caret-right"
v-hasPermi="['monitor:job:changeStatus']"
>{{ $t("job.ExecuteOnce") }}</el-dropdown-item
>
<el-dropdown-item
command="handleView"
icon="el-icon-view"
v-hasPermi="['monitor:job:query']"
>{{ $t("job.TaskDetails") }}</el-dropdown-item
>
<el-dropdown-item
command="handleJobLog"
icon="el-icon-s-operation"
v-hasPermi="['monitor:job:query']"
>{{ $t("job.dispatchingLog") }}</el-dropdown-item
>
</el-dropdown-menu>
</el-dropdown>
</template>
@ -144,7 +229,7 @@
</el-table>
<pagination
v-show="total>0"
v-show="total > 0"
:total="total"
:page.sync="queryParams.pageNum"
:limit.sync="queryParams.pageSize"
@ -152,17 +237,28 @@
/>
<!-- 添加或修改定时任务对话框 -->
<el-dialog :title="title" :visible.sync="open" width="800px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="120px">
<el-dialog :title="title" :visible.sync="open" width="50%" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="150px">
<el-row>
<el-col :span="12">
<el-form-item label="任务名称" prop="jobName">
<el-input v-model="form.jobName" placeholder="请输入任务名称" />
<el-col :span="24">
<el-form-item :label="$t('job.TaskName')" prop="jobName">
<el-input
v-model="form.jobName"
:placeholder="
$t('share.PleaseEnter') + ' ' + $t('job.TaskName')
"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="任务分组" prop="jobGroup">
<el-select v-model="form.jobGroup" placeholder="请选择任务分组">
<el-col :span="24">
<el-form-item :label="$t('job.TaskGroupName')" prop="jobGroup">
<el-select
v-model="form.jobGroup"
:placeholder="
$t('share.PleaseChoose') + ' ' + $t('job.TaskGroupName')
"
style="width: 100%"
>
<el-option
v-for="dict in dict.type.sys_job_group"
:key="dict.value"
@ -175,25 +271,43 @@
<el-col :span="24">
<el-form-item prop="invokeTarget">
<span slot="label">
调用方法
{{ $t("job.callingMethod") }}
<el-tooltip placement="top">
<div slot="content">
Bean调用示例ryTask.ryParams('ry')
<br />Class类调用示例com.ruoyi.quartz.task.RyTask.ryParams('ry')
<br />参数说明支持字符串布尔类型长整型浮点型整型
Bean {{ $t("job.CallExample") }}ryTask.ryParams('ry')
<br />Class{{
$t("job.CallExample")
}}com.ruoyi.quartz.task.RyTask.ryParams('ry') <br />{{
$t("job.ParameterDescription")
}}
</div>
<i class="el-icon-question"></i>
</el-tooltip>
</span>
<el-input v-model="form.invokeTarget" placeholder="请输入调用目标字符串" />
<el-input
v-model="form.invokeTarget"
:placeholder="
$t('share.PleaseEnter') + ' ' + $t('job.CallTheTargetString')
"
/>
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="cron表达式" prop="cronExpression">
<el-input v-model="form.cronExpression" placeholder="请输入cron执行表达式">
<el-form-item
:label="$t('job.CronExecutionExpression')"
prop="cronExpression"
>
<el-input
v-model="form.cronExpression"
:placeholder="
$t('share.PleaseEnter') +
' ' +
$t('job.CronExecutionExpression')
"
>
<template slot="append">
<el-button type="primary" @click="handleShowCron">
生成表达式
{{ $t("job.GenerateExpression") }}
<i class="el-icon-time el-icon--right"></i>
</el-button>
</template>
@ -207,97 +321,160 @@
v-for="dict in dict.type.sys_job_status"
:key="dict.value"
:label="dict.value"
>{{dict.label}}</el-radio>
>{{ dict.label }}</el-radio
>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="执行策略" prop="misfirePolicy">
<el-col :span="24">
<el-form-item
:label="$t('job.ExecutionStrategy')"
prop="misfirePolicy"
>
<el-radio-group v-model="form.misfirePolicy" size="small">
<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("job.ExecuteImmediately")
}}</el-radio-button>
<el-radio-button label="2">{{
$t("job.ExecuteOnce")
}}</el-radio-button>
<el-radio-button label="3">{{
$t("job.AbandoningExecution")
}}</el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否并发" prop="concurrent">
<el-col :span="24">
<el-form-item :label="$t('job.IsItConcurrent')" prop="concurrent">
<el-radio-group v-model="form.concurrent" size="small">
<el-radio-button label="0">允许</el-radio-button>
<el-radio-button label="1">禁止</el-radio-button>
<el-radio-button label="0">{{
$t("job.allow")
}}</el-radio-button>
<el-radio-button label="1">{{
$t("job.prohibit")
}}</el-radio-button>
</el-radio-group>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
<el-button type="primary" @click="submitForm">{{
$t("share.confirm")
}}</el-button>
<el-button @click="cancel">{{ $t("share.cancel") }}</el-button>
</div>
</el-dialog>
<el-dialog title="Cron表达式生成器" :visible.sync="openCron" append-to-body destroy-on-close class="scrollbar">
<crontab @hide="openCron=false" @fill="crontabFill" :expression="expression"></crontab>
<el-dialog
:title="$t('job.CronExpressionGenerator')"
:visible.sync="openCron"
append-to-body
destroy-on-close
class="scrollbar"
>
<crontab
@hide="openCron = false"
@fill="crontabFill"
:expression="expression"
></crontab>
</el-dialog>
<!-- 任务日志详细 -->
<el-dialog title="任务详细" :visible.sync="openView" width="700px" append-to-body>
<el-form ref="form" :model="form" label-width="120px" size="mini">
<el-dialog
:title="$t('job.TaskDetails')"
:visible.sync="openView"
width="700px"
append-to-body
>
<el-form ref="form" :model="form" label-width="150px" size="mini">
<el-row>
<el-col :span="12">
<el-form-item label="任务编号:">{{ form.jobId }}</el-form-item>
<el-form-item label="任务名称:">{{ form.jobName }}</el-form-item>
<el-form-item :label="$t('job.TaskNumber') + ':'">{{
form.jobId
}}</el-form-item>
<el-form-item :label="$t('job.TaskName') + ':'">{{
form.jobName
}}</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="任务分组:">{{ jobGroupFormat(form) }}</el-form-item>
<el-form-item label="创建时间:">{{ form.createTime }}</el-form-item>
<el-form-item :label="$t('job.TaskGroupName') + ':'">{{
jobGroupFormat(form)
}}</el-form-item>
<el-form-item :label="$t('job.CreationTime') + ':'">{{
form.createTime
}}</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="cron表达式:">{{ form.cronExpression }}</el-form-item>
<el-form-item :label="'cron ' + $t('job.expression') + ':'">{{
form.cronExpression
}}</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="下次执行时间:">{{ parseTime(form.nextValidTime) }}</el-form-item>
<el-form-item :label="$t('job.NextExecutionTime') + ':'">{{
parseTime(form.nextValidTime)
}}</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item label="调用目标方法:">{{ form.invokeTarget }}</el-form-item>
<el-form-item :label="$t('job.CallTheTargetMethod') + ':'">{{
form.invokeTarget
}}</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="任务状态:">
<div v-if="form.status == 0">正常</div>
<div v-else-if="form.status == 1">暂停</div>
<el-form-item :label="$t('job.TaskStatus') + ':'">
<div v-if="form.status == 0">{{ $t("job.normal") }}</div>
<div v-else-if="form.status == 1">{{ $t("job.pause") }}</div>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="是否并发:">
<div v-if="form.concurrent == 0">允许</div>
<div v-else-if="form.concurrent == 1">禁止</div>
<el-form-item :label="$t('job.IsItConcurrent') + ':'">
<div v-if="form.concurrent == 0">{{ $t("job.allow") }}</div>
<div v-else-if="form.concurrent == 1">
{{ $t("job.prohibit") }}
</div>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="执行策略:">
<div v-if="form.misfirePolicy == 0">默认策略</div>
<div v-else-if="form.misfirePolicy == 1">立即执行</div>
<div v-else-if="form.misfirePolicy == 2">执行一次</div>
<div v-else-if="form.misfirePolicy == 3">放弃执行</div>
<el-form-item :label="$t('job.ExecutionStrategy') + ':'">
<div v-if="form.misfirePolicy == 0">
{{ $t("job.defaultPolicy") }}
</div>
<div v-else-if="form.misfirePolicy == 1">
{{ $t("job.ExecuteImmediately") }}
</div>
<div v-else-if="form.misfirePolicy == 2">
{{ $t("job.ExecuteOnce") }}
</div>
<div v-else-if="form.misfirePolicy == 3">
{{ $t("job.AbandoningExecution") }}
</div>
</el-form-item>
</el-col>
</el-row>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button @click="openView = false"> </el-button>
<el-button @click="openView = false">{{ $t("job.close") }}</el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { listJob, getJob, delJob, addJob, updateJob, runJob, changeJobStatus } from "@/api/monitor/job";
import Crontab from '@/components/Crontab'
import {
listJob,
getJob,
delJob,
addJob,
updateJob,
runJob,
changeJobStatus,
} from "@/api/monitor/job";
import Crontab from "@/components/Crontab";
export default {
components: { Crontab },
name: "Job",
dicts: ['sys_job_group', 'sys_job_status'],
dicts: ["sys_job_group", "sys_job_status"],
data() {
return {
//
@ -330,22 +507,41 @@ export default {
pageSize: 10,
jobName: undefined,
jobGroup: undefined,
status: undefined
status: undefined,
},
//
form: {},
//
rules: {
jobName: [
{ required: true, message: "任务名称不能为空", trigger: "blur" }
{
required: true,
message:
this.$t("job.TaskName") + " " + this.$t("job.CannotBeEmpty"),
trigger: "blur",
},
],
invokeTarget: [
{ required: true, message: "调用目标字符串不能为空", trigger: "blur" }
{
required: true,
message:
this.$t("job.CallTheTargetString") +
" " +
this.$t("job.CannotBeEmpty"),
trigger: "blur",
},
],
cronExpression: [
{ required: true, message: "cron执行表达式不能为空", trigger: "blur" }
]
}
{
required: true,
message:
this.$t("job.CronExecutionExpression") +
" " +
this.$t("job.CannotBeEmpty"),
trigger: "blur",
},
],
},
};
},
created() {
@ -355,7 +551,7 @@ export default {
/** 查询定时任务列表 */
getList() {
this.loading = true;
listJob(this.queryParams).then(response => {
listJob(this.queryParams).then((response) => {
this.jobList = response.rows;
this.total = response.total;
this.loading = false;
@ -380,7 +576,7 @@ export default {
cronExpression: undefined,
misfirePolicy: 1,
concurrent: 1,
status: "0"
status: "0",
};
this.resetForm("form");
},
@ -396,7 +592,7 @@ export default {
},
//
handleSelectionChange(selection) {
this.ids = selection.map(item => item.jobId);
this.ids = selection.map((item) => item.jobId);
this.single = selection.length != 1;
this.multiple = !selection.length;
},
@ -418,26 +614,51 @@ export default {
},
//
handleStatusChange(row) {
let text = row.status === "0" ? "启用" : "停用";
this.$modal.confirm('确认要"' + text + '""' + row.jobName + '"任务吗?').then(function() {
return changeJobStatus(row.jobId, row.status);
}).then(() => {
this.$modal.msgSuccess(text + "成功");
}).catch(function() {
row.status = row.status === "0" ? "1" : "0";
});
let text =
row.status === "0" ? this.$t("job.Enable") : this.$t("job.Deactivate");
this.$modal
.confirm(
this.$t("job.ConfirmTo") +
'"' +
text +
'""' +
row.jobName +
this.$t("job.Task") +
'"?'
)
.then(function () {
return changeJobStatus(row.jobId, row.status);
})
.then(() => {
this.$modal.msgSuccess(text + this.$t("job.success"));
})
.catch(function () {
row.status = row.status === "0" ? "1" : "0";
});
},
/* 立即执行一次 */
handleRun(row) {
this.$modal.confirm('确认要立即执行一次"' + row.jobName + '"任务吗?').then(function() {
return runJob(row.jobId, row.jobGroup);
}).then(() => {
this.$modal.msgSuccess("执行成功");
}).catch(() => {});
this.$modal
.confirm(
this.$t("job.ConfirmToExecuteImmediatelyOnce") +
'"' +
row.jobName +
this.$t("job.Task") +
'"?'
)
.then(function () {
return runJob(row.jobId, row.jobGroup);
})
.then(() => {
this.$modal.msgSuccess(
this.$t("job.execute") + this.$t("job.success")
);
})
.catch(() => {});
},
/** 任务详细信息 */
handleView(row) {
getJob(row.jobId).then(response => {
getJob(row.jobId).then((response) => {
this.form = response.data;
this.openView = true;
});
@ -454,37 +675,39 @@ export default {
/** 任务日志列表查询 */
handleJobLog(row) {
const jobId = row.jobId || 0;
this.$router.push('/monitor/job-log/index/' + jobId)
this.$router.push("/monitor/job-log/index/" + jobId);
},
/** 新增按钮操作 */
handleAdd() {
this.reset();
this.open = true;
this.title = "添加任务";
this.title = this.$t("job.addTask");
},
/** 修改按钮操作 */
handleUpdate(row) {
this.reset();
const jobId = row.jobId || this.ids;
getJob(jobId).then(response => {
getJob(jobId).then((response) => {
this.form = response.data;
this.open = true;
this.title = "修改任务";
this.title = this.$t("job.ModifyTask");
});
},
/** 提交按钮 */
submitForm: function() {
this.$refs["form"].validate(valid => {
submitForm: function () {
this.$refs["form"].validate((valid) => {
if (valid) {
if (this.form.jobId != undefined) {
updateJob(this.form).then(response => {
this.$modal.msgSuccess("修改成功");
updateJob(this.form).then((response) => {
this.$modal.msgSuccess(
this.$t("job.modify") + this.$t("job.success")
);
this.open = false;
this.getList();
});
} else {
addJob(this.form).then(response => {
this.$modal.msgSuccess("新增成功");
addJob(this.form).then((response) => {
this.$modal.msgSuccess( this.$t("job.newlyAdded") + this.$t("job.success"));
this.open = false;
this.getList();
});
@ -495,19 +718,27 @@ export default {
/** 删除按钮操作 */
handleDelete(row) {
const jobIds = row.jobId || this.ids;
this.$modal.confirm('是否确认删除定时任务编号为"' + jobIds + '"的数据项?').then(function() {
return delJob(jobIds);
}).then(() => {
this.getList();
this.$modal.msgSuccess("删除成功");
}).catch(() => {});
this.$modal
.confirm(this.$t("job.AreYouSureToDeleteTheScheduledTaskNumber")+'"' + jobIds +this.$t("job.TheDataItem")+'"?')
.then(function () {
return delJob(jobIds);
})
.then(() => {
this.getList();
this.$modal.msgSuccess( this.$t("job.删除") + this.$t("job.success"));
})
.catch(() => {});
},
/** 导出按钮操作 */
handleExport() {
this.download('monitor/job/export', {
...this.queryParams
}, `job_${new Date().getTime()}.xlsx`)
}
}
this.download(
"monitor/job/export",
{
...this.queryParams,
},
`job_${new Date().getTime()}.xlsx`
);
},
},
};
</script>

+ 51
- 48
src/views/point/point_mang.vue View File

@ -4,7 +4,7 @@
<el-col :span="4">
<div class="qurey">
<el-input
placeholder="请输入内容"
:placeholder="$t('point_mang.PleaseEnterTheContent')"
v-model="input3"
class="input-with-select"
>
@ -23,25 +23,30 @@
</el-col>
<el-col :span="20">
<div>
<el-button type="primary">添加</el-button>
<span>27/200最多支持200个巡检点位以及内容</span>
<el-button type="primary">{{ $t("share.addTo") }}</el-button>
<span>0/200{{ $t("point_mang.tableHeadMsg") }}</span>
</div>
<el-table :data="tableData" max-height="700">
<el-table :data="tableData" max-height="700" style="margin-top: 10px">
<el-table-column
prop="date"
label="序号"
:label="$t('point_mang.index')"
width="55"
type="index"
align="center"
></el-table-column>
<el-table-column
prop="date"
label="设备分类"
:label="$t('point_mang.equipmentClassification')"
:render-header="addRedStar"
align="center"
>
<template slot-scope="scope">
<el-select placeholder="请选择">
<el-select
:placeholder="
$t('share.PleaseChoose') +
$t('point_mang.equipmentClassification')
"
>
<el-option label="item.label" value="item.value"> </el-option>
</el-select>
</template>
@ -49,15 +54,24 @@
<el-table-column
prop="date"
label="巡检标准"
:label="$t('point_mang.InspectionStandards')"
:render-header="addRedStar"
align="center"
>
<template slot-scope="scope">
<el-input type="textarea"></el-input>
<el-input
type="textarea"
:placeholder="
$t('share.PleaseChoose') + $t('point_mang.PleaseEnter')
"
></el-input>
</template>
</el-table-column>
<el-table-column prop="date" label="数据格式" align="center">
<el-table-column
prop="date"
:label="$t('point_mang.dataFormat')"
align="center"
>
<template slot-scope="scope">
<el-select
v-model="value"
@ -65,7 +79,9 @@
filterable
allow-create
default-first-option
placeholder="请选择文章标签"
:placeholder="
$t('share.PleaseChoose') + $t('point_mang.dataFormat')
"
>
<el-option
v-for="item in options"
@ -77,27 +93,35 @@
</el-select>
</template>
</el-table-column>
<el-table-column prop="date" label="智能识别类型" align="center">
<el-table-column
prop="date"
:label="$t('point_mang.IntelligentRecognitionType')"
align="center"
>
<template slot-scope="scope">
<span class="intelligenceType" @click="intelligenceTypeBtn"
>123123</span
>
</template>
</el-table-column>
<el-table-column label="操作" align="center">
<el-table-column :label="$t('share.operate')" align="center">
<template slot-scope="scope">
<el-button size="mini" type="primary"> 复制 </el-button>
<el-button size="mini" type="danger">删除</el-button>
<el-button size="mini" type="primary">
{{ $t("share.copy") }}
</el-button>
<el-button size="mini" type="danger">{{
$t("share.delete")
}}</el-button>
</template>
</el-table-column>
</el-table>
<div class="saveBtn">
<el-button type="primary">保存</el-button>
<el-button type="primary">{{ $t("share.save") }}</el-button>
</div>
</el-col>
</el-row>
<el-dialog
title="设置智能识别类型"
:title="$t('point_mang.SetIntelligentRecognitionType')"
:visible.sync="dialogVisible"
width="50%"
:before-close="handleClose"
@ -112,17 +136,17 @@
type="index"
width="55"
align="center"
label="序号"
:label="$t('point_mang.index')"
></el-table-column>
<el-table-column
prop="name"
align="center"
label="算法名称"
:label="$t('point_mang.AlgorithmName')"
></el-table-column>
<el-table-column
prop="name"
align="center"
label="阀值上限"
:label="$t('point_mang.ThresholdUpperLimit')"
:render-header="addRedStar"
>
<template slot-scope="scope">
@ -132,7 +156,7 @@
<el-table-column
prop="name"
align="center"
label="阀值下限"
:label="$t('point_mang.LowerThresholdLimit')"
:render-header="addRedStar"
>
<template slot-scope="scope">
@ -141,9 +165,9 @@
</el-table-column>
</el-table>
<span slot="footer" class="dialog-footer">
<el-button @click="dialogVisible = false"> </el-button>
<el-button @click="dialogVisible = false">{{ $t('share.cancel') }}</el-button>
<el-button type="primary" @click="dialogVisible = false"
> </el-button
>{{ $t('share.confirm') }}</el-button
>
</span>
</el-dialog>
@ -201,28 +225,7 @@ export default {
],
value: [],
dialogVisible: false,
intelligenceTypeData: [
{
date: "2016-05-02",
name: "王小虎",
address: "上海市普陀区金沙江路 1518 弄",
},
{
date: "2016-05-04",
name: "王小虎",
address: "上海市普陀区金沙江路 1517 弄",
},
{
date: "2016-05-01",
name: "王小虎",
address: "上海市普陀区金沙江路 1519 弄",
},
{
date: "2016-05-03",
name: "王小虎",
address: "上海市普陀区金沙江路 1516 弄",
},
],
intelligenceTypeData: [],
};
},
methods: {
@ -260,8 +263,8 @@ export default {
color: rgb(17, 189, 217);
cursor: pointer;
}
.saveBtn{
text-align: center;
margin-top: 10px;
.saveBtn {
text-align: center;
margin-top: 10px;
}
</style>

Loading…
Cancel
Save