mirror of
https://github.com/crawlab-team/crawlab.git
synced 2026-01-29 18:00:51 +01:00
* 增加Docker开发环境
* 更新Dockerfile构建文件,升级NodeJS依赖版本。 * 遵循ESLint重新格式化代码,修复部分警告 * 登录Token失效增加登出提示 * 网络请求问题增加错误错误提示 * 升级UI依赖库
This commit is contained in:
@@ -47,153 +47,153 @@
|
||||
<div id="change-crontab">
|
||||
<div class="cron-wrapper">
|
||||
<label>
|
||||
{{$t('Cron Expression')}}:
|
||||
{{ $t('Cron Expression') }}:
|
||||
</label>
|
||||
<el-tag type="success" size="small">
|
||||
{{cron}}
|
||||
{{ cron }}
|
||||
</el-tag>
|
||||
</div>
|
||||
<el-tabs type="border-card">
|
||||
<el-tab-pane>
|
||||
<span slot="label"><i class="el-icon-date"></i> {{text.Minutes.name}}</span>
|
||||
<span slot="label"><i class="el-icon-date" /> {{ text.Minutes.name }}</span>
|
||||
<div class="tabBody">
|
||||
<el-row>
|
||||
<el-radio v-model="minute.cronEvery" label="1">{{text.Minutes.every}}</el-radio>
|
||||
<el-radio v-model="minute.cronEvery" label="1">{{ text.Minutes.every }}</el-radio>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-radio v-model="minute.cronEvery" label="2">{{text.Minutes.interval[0]}}
|
||||
<el-input-number size="small" v-model="minute.incrementIncrement" :min="0" :max="59"></el-input-number>
|
||||
{{text.Minutes.interval[1]}}
|
||||
<el-input-number size="small" v-model="minute.incrementStart" :min="0" :max="59"></el-input-number>
|
||||
{{text.Minutes.interval[2]||''}}
|
||||
<el-radio v-model="minute.cronEvery" label="2">{{ text.Minutes.interval[0] }}
|
||||
<el-input-number v-model="minute.incrementIncrement" size="small" :min="0" :max="59" />
|
||||
{{ text.Minutes.interval[1] }}
|
||||
<el-input-number v-model="minute.incrementStart" size="small" :min="0" :max="59" />
|
||||
{{ text.Minutes.interval[2]||'' }}
|
||||
</el-radio>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-radio class="long" v-model="minute.cronEvery" label="3">{{text.Minutes.specific}}
|
||||
<el-select size="small" multiple v-model="minute.specificSpecific">
|
||||
<el-option v-for="val in 60" :key="val" :value="(val-1).toString()" :label="val-1"></el-option>
|
||||
<el-radio v-model="minute.cronEvery" class="long" label="3">{{ text.Minutes.specific }}
|
||||
<el-select v-model="minute.specificSpecific" size="small" multiple>
|
||||
<el-option v-for="val in 60" :key="val" :value="(val-1).toString()" :label="val-1" />
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-radio v-model="minute.cronEvery" label="4">{{text.Minutes.cycle[0]}}
|
||||
<el-input-number size="small" v-model="minute.rangeStart" :min="0" :max="59"></el-input-number>
|
||||
{{text.Minutes.cycle[1]}}
|
||||
<el-input-number size="small" v-model="minute.rangeEnd" :min="0" :max="59"></el-input-number>
|
||||
{{text.Minutes.cycle[2]}}
|
||||
<el-radio v-model="minute.cronEvery" label="4">{{ text.Minutes.cycle[0] }}
|
||||
<el-input-number v-model="minute.rangeStart" size="small" :min="0" :max="59" />
|
||||
{{ text.Minutes.cycle[1] }}
|
||||
<el-input-number v-model="minute.rangeEnd" size="small" :min="0" :max="59" />
|
||||
{{ text.Minutes.cycle[2] }}
|
||||
</el-radio>
|
||||
</el-row>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane>
|
||||
<span slot="label"><i class="el-icon-date"></i> {{text.Hours.name}}</span>
|
||||
<span slot="label"><i class="el-icon-date" /> {{ text.Hours.name }}</span>
|
||||
<div class="tabBody">
|
||||
<el-row>
|
||||
<el-radio v-model="hour.cronEvery" label="1">{{text.Hours.every}}</el-radio>
|
||||
<el-radio v-model="hour.cronEvery" label="1">{{ text.Hours.every }}</el-radio>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-radio v-model="hour.cronEvery" label="2">{{text.Hours.interval[0]}}
|
||||
<el-input-number size="small" v-model="hour.incrementIncrement" :min="0" :max="23"></el-input-number>
|
||||
{{text.Hours.interval[1]}}
|
||||
<el-input-number size="small" v-model="hour.incrementStart" :min="0" :max="23"></el-input-number>
|
||||
{{text.Hours.interval[2]}}
|
||||
<el-radio v-model="hour.cronEvery" label="2">{{ text.Hours.interval[0] }}
|
||||
<el-input-number v-model="hour.incrementIncrement" size="small" :min="0" :max="23" />
|
||||
{{ text.Hours.interval[1] }}
|
||||
<el-input-number v-model="hour.incrementStart" size="small" :min="0" :max="23" />
|
||||
{{ text.Hours.interval[2] }}
|
||||
</el-radio>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-radio class="long" v-model="hour.cronEvery" label="3">{{text.Hours.specific}}
|
||||
<el-select size="small" multiple v-model="hour.specificSpecific">
|
||||
<el-option v-for="val in 24" :key="val" :value="(val-1).toString()" :label="val-1"></el-option>
|
||||
<el-radio v-model="hour.cronEvery" class="long" label="3">{{ text.Hours.specific }}
|
||||
<el-select v-model="hour.specificSpecific" size="small" multiple>
|
||||
<el-option v-for="val in 24" :key="val" :value="(val-1).toString()" :label="val-1" />
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-radio v-model="hour.cronEvery" label="4">{{text.Hours.cycle[0]}}
|
||||
<el-input-number size="small" v-model="hour.rangeStart" :min="0" :max="23"></el-input-number>
|
||||
{{text.Hours.cycle[1]}}
|
||||
<el-input-number size="small" v-model="hour.rangeEnd" :min="0" :max="23"></el-input-number>
|
||||
{{text.Hours.cycle[2]}}
|
||||
<el-radio v-model="hour.cronEvery" label="4">{{ text.Hours.cycle[0] }}
|
||||
<el-input-number v-model="hour.rangeStart" size="small" :min="0" :max="23" />
|
||||
{{ text.Hours.cycle[1] }}
|
||||
<el-input-number v-model="hour.rangeEnd" size="small" :min="0" :max="23" />
|
||||
{{ text.Hours.cycle[2] }}
|
||||
</el-radio>
|
||||
</el-row>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane>
|
||||
<span slot="label"><i class="el-icon-date"></i> {{text.Day.name}}</span>
|
||||
<span slot="label"><i class="el-icon-date" /> {{ text.Day.name }}</span>
|
||||
<div class="tabBody">
|
||||
<el-row>
|
||||
<el-radio v-model="day.cronEvery" label="1">{{text.Day.every}}</el-radio>
|
||||
<el-radio v-model="day.cronEvery" label="1">{{ text.Day.every }}</el-radio>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-radio v-model="day.cronEvery" label="2">{{text.Day.intervalDay[0]}}
|
||||
<el-input-number size="small" v-model="day.incrementIncrement" :min="1" :max="31"></el-input-number>
|
||||
{{text.Day.intervalDay[1]}}
|
||||
<el-input-number size="small" v-model="day.incrementStart" :min="1" :max="31"></el-input-number>
|
||||
{{text.Day.intervalDay[2]}}
|
||||
<el-radio v-model="day.cronEvery" label="2">{{ text.Day.intervalDay[0] }}
|
||||
<el-input-number v-model="day.incrementIncrement" size="small" :min="1" :max="31" />
|
||||
{{ text.Day.intervalDay[1] }}
|
||||
<el-input-number v-model="day.incrementStart" size="small" :min="1" :max="31" />
|
||||
{{ text.Day.intervalDay[2] }}
|
||||
</el-radio>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-radio class="long" v-model="day.cronEvery" label="3">{{text.Day.specificDay}}
|
||||
<el-select size="small" multiple v-model="day.specificSpecific">
|
||||
<el-option v-for="val in 31" :key="val" :value="val.toString()" :label="val"></el-option>
|
||||
<el-radio v-model="day.cronEvery" class="long" label="3">{{ text.Day.specificDay }}
|
||||
<el-select v-model="day.specificSpecific" size="small" multiple>
|
||||
<el-option v-for="val in 31" :key="val" :value="val.toString()" :label="val" />
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-radio v-model="day.cronEvery" label="4">{{text.Day.cycle[0]}}
|
||||
<el-input-number size="small" v-model="day.rangeStart" :min="1" :max="31"></el-input-number>
|
||||
{{text.Day.cycle[1]}}
|
||||
<el-input-number size="small" v-model="day.rangeEnd" :min="1" :max="31"></el-input-number>
|
||||
<el-radio v-model="day.cronEvery" label="4">{{ text.Day.cycle[0] }}
|
||||
<el-input-number v-model="day.rangeStart" size="small" :min="1" :max="31" />
|
||||
{{ text.Day.cycle[1] }}
|
||||
<el-input-number v-model="day.rangeEnd" size="small" :min="1" :max="31" />
|
||||
</el-radio>
|
||||
</el-row>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane>
|
||||
<span slot="label"><i class="el-icon-date"></i> {{text.Month.name}}</span>
|
||||
<span slot="label"><i class="el-icon-date" /> {{ text.Month.name }}</span>
|
||||
<div class="tabBody">
|
||||
<el-row>
|
||||
<el-radio v-model="month.cronEvery" label="1">{{text.Month.every}}</el-radio>
|
||||
<el-radio v-model="month.cronEvery" label="1">{{ text.Month.every }}</el-radio>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-radio v-model="month.cronEvery" label="2">{{text.Month.interval[0]}}
|
||||
<el-input-number size="small" v-model="month.incrementIncrement" :min="0" :max="12"></el-input-number>
|
||||
{{text.Month.interval[1]}}
|
||||
<el-input-number size="small" v-model="month.incrementStart" :min="0" :max="12"></el-input-number>
|
||||
<el-radio v-model="month.cronEvery" label="2">{{ text.Month.interval[0] }}
|
||||
<el-input-number v-model="month.incrementIncrement" size="small" :min="0" :max="12" />
|
||||
{{ text.Month.interval[1] }}
|
||||
<el-input-number v-model="month.incrementStart" size="small" :min="0" :max="12" />
|
||||
</el-radio>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-radio class="long" v-model="month.cronEvery" label="3">{{text.Month.specific}}
|
||||
<el-select size="small" multiple v-model="month.specificSpecific">
|
||||
<el-option v-for="val in 12" :key="val" :label="val" :value="val.toString()"></el-option>
|
||||
<el-radio v-model="month.cronEvery" class="long" label="3">{{ text.Month.specific }}
|
||||
<el-select v-model="month.specificSpecific" size="small" multiple>
|
||||
<el-option v-for="val in 12" :key="val" :label="val" :value="val.toString()" />
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-radio v-model="month.cronEvery" label="4">{{text.Month.cycle[0]}}
|
||||
<el-input-number size="small" v-model="month.rangeStart" :min="1" :max="12"></el-input-number>
|
||||
{{text.Month.cycle[1]}}
|
||||
<el-input-number size="small" v-model="month.rangeEnd" :min="1" :max="12"></el-input-number>
|
||||
{{text.Month.cycle[2]}}
|
||||
<el-radio v-model="month.cronEvery" label="4">{{ text.Month.cycle[0] }}
|
||||
<el-input-number v-model="month.rangeStart" size="small" :min="1" :max="12" />
|
||||
{{ text.Month.cycle[1] }}
|
||||
<el-input-number v-model="month.rangeEnd" size="small" :min="1" :max="12" />
|
||||
{{ text.Month.cycle[2] }}
|
||||
</el-radio>
|
||||
</el-row>
|
||||
</div>
|
||||
</el-tab-pane>
|
||||
<el-tab-pane>
|
||||
<span slot="label"><i class="el-icon-date"></i> {{text.Week.name}}</span>
|
||||
<span slot="label"><i class="el-icon-date" /> {{ text.Week.name }}</span>
|
||||
<div class="tabBody">
|
||||
<el-row>
|
||||
<el-radio v-model="week.cronEvery" label="1">{{text.Week.every}}</el-radio>
|
||||
<el-radio v-model="week.cronEvery" label="1">{{ text.Week.every }}</el-radio>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-radio class="long" v-model="week.cronEvery" label="3">{{text.Week.specific}}
|
||||
<el-select size="small" multiple v-model="week.specificSpecific">
|
||||
<el-option v-for="i in 7" :key="i" :label="text.Week.list[i - 1]" :value="i.toString()"></el-option>
|
||||
<el-radio v-model="week.cronEvery" class="long" label="3">{{ text.Week.specific }}
|
||||
<el-select v-model="week.specificSpecific" size="small" multiple>
|
||||
<el-option v-for="i in 7" :key="i" :label="text.Week.list[i - 1]" :value="i.toString()" />
|
||||
</el-select>
|
||||
</el-radio>
|
||||
</el-row>
|
||||
<el-row>
|
||||
<el-radio v-model="week.cronEvery" label="4">{{text.Week.cycle[0]}}
|
||||
<el-input-number size="small" v-model="week.rangeStart" :min="1" :max="7"></el-input-number>
|
||||
{{text.Week.cycle[1]}}
|
||||
<el-input-number size="small" v-model="week.rangeEnd" :min="1" :max="7"></el-input-number>
|
||||
<el-radio v-model="week.cronEvery" label="4">{{ text.Week.cycle[0] }}
|
||||
<el-input-number v-model="week.rangeStart" size="small" :min="1" :max="7" />
|
||||
{{ text.Week.cycle[1] }}
|
||||
<el-input-number v-model="week.rangeEnd" size="small" :min="1" :max="7" />
|
||||
</el-radio>
|
||||
</el-row>
|
||||
</div>
|
||||
@@ -202,93 +202,85 @@
|
||||
</div>
|
||||
</template>
|
||||
<script>
|
||||
import Language from './language/index'
|
||||
import Language from './language/index'
|
||||
|
||||
export default {
|
||||
name: 'VueCronLinux',
|
||||
props: ['data', 'i18n'],
|
||||
data () {
|
||||
return {
|
||||
second: {
|
||||
cronEvery: '',
|
||||
incrementStart: '3',
|
||||
incrementIncrement: '5',
|
||||
rangeStart: '',
|
||||
rangeEnd: '',
|
||||
specificSpecific: [0]
|
||||
},
|
||||
minute: {
|
||||
cronEvery: '',
|
||||
incrementStart: '3',
|
||||
incrementIncrement: '5',
|
||||
rangeStart: '',
|
||||
rangeEnd: '',
|
||||
specificSpecific: ['0']
|
||||
},
|
||||
hour: {
|
||||
cronEvery: '',
|
||||
incrementStart: '3',
|
||||
incrementIncrement: '5',
|
||||
rangeStart: '',
|
||||
rangeEnd: '',
|
||||
specificSpecific: ['0']
|
||||
},
|
||||
day: {
|
||||
cronEvery: '',
|
||||
incrementStart: '1',
|
||||
incrementIncrement: '1',
|
||||
rangeStart: '',
|
||||
rangeEnd: '',
|
||||
specificSpecific: ['1'],
|
||||
cronLastSpecificDomDay: 1,
|
||||
cronDaysBeforeEomMinus: '',
|
||||
cronDaysNearestWeekday: ''
|
||||
},
|
||||
month: {
|
||||
cronEvery: '',
|
||||
incrementStart: '3',
|
||||
incrementIncrement: '5',
|
||||
rangeStart: '',
|
||||
rangeEnd: '',
|
||||
specificSpecific: ['1']
|
||||
},
|
||||
week: {
|
||||
cronEvery: '',
|
||||
incrementStart: '1',
|
||||
incrementIncrement: '1',
|
||||
specificSpecific: ['1'],
|
||||
cronNthDayDay: 1,
|
||||
cronNthDayNth: '1',
|
||||
rangeStart: '',
|
||||
rangeEnd: ''
|
||||
},
|
||||
output: {
|
||||
second: '',
|
||||
minute: '',
|
||||
hour: '',
|
||||
day: '',
|
||||
month: '',
|
||||
Week: '',
|
||||
year: ''
|
||||
export default {
|
||||
name: 'VueCronLinux',
|
||||
props: ['data', 'i18n'],
|
||||
data() {
|
||||
return {
|
||||
second: {
|
||||
cronEvery: '',
|
||||
incrementStart: '3',
|
||||
incrementIncrement: '5',
|
||||
rangeStart: '',
|
||||
rangeEnd: '',
|
||||
specificSpecific: [0]
|
||||
},
|
||||
minute: {
|
||||
cronEvery: '',
|
||||
incrementStart: '3',
|
||||
incrementIncrement: '5',
|
||||
rangeStart: '',
|
||||
rangeEnd: '',
|
||||
specificSpecific: ['0']
|
||||
},
|
||||
hour: {
|
||||
cronEvery: '',
|
||||
incrementStart: '3',
|
||||
incrementIncrement: '5',
|
||||
rangeStart: '',
|
||||
rangeEnd: '',
|
||||
specificSpecific: ['0']
|
||||
},
|
||||
day: {
|
||||
cronEvery: '',
|
||||
incrementStart: '1',
|
||||
incrementIncrement: '1',
|
||||
rangeStart: '',
|
||||
rangeEnd: '',
|
||||
specificSpecific: ['1'],
|
||||
cronLastSpecificDomDay: 1,
|
||||
cronDaysBeforeEomMinus: '',
|
||||
cronDaysNearestWeekday: ''
|
||||
},
|
||||
month: {
|
||||
cronEvery: '',
|
||||
incrementStart: '3',
|
||||
incrementIncrement: '5',
|
||||
rangeStart: '',
|
||||
rangeEnd: '',
|
||||
specificSpecific: ['1']
|
||||
},
|
||||
week: {
|
||||
cronEvery: '',
|
||||
incrementStart: '1',
|
||||
incrementIncrement: '1',
|
||||
specificSpecific: ['1'],
|
||||
cronNthDayDay: 1,
|
||||
cronNthDayNth: '1',
|
||||
rangeStart: '',
|
||||
rangeEnd: ''
|
||||
},
|
||||
output: {
|
||||
second: '',
|
||||
minute: '',
|
||||
hour: '',
|
||||
day: '',
|
||||
month: '',
|
||||
Week: '',
|
||||
year: ''
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
watch: {
|
||||
data () {
|
||||
this.updateCronFromData()
|
||||
},
|
||||
cron () {
|
||||
this.$emit('change', this.cron)
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
text () {
|
||||
return Language[this.i18n || 'cn']
|
||||
},
|
||||
minutesText () {
|
||||
let minutes = ''
|
||||
let cronEvery = this.minute.cronEvery
|
||||
switch (cronEvery.toString()) {
|
||||
computed: {
|
||||
text() {
|
||||
return Language[this.i18n || 'cn']
|
||||
},
|
||||
minutesText() {
|
||||
let minutes = ''
|
||||
const cronEvery = this.minute.cronEvery
|
||||
switch (cronEvery.toString()) {
|
||||
case '1':
|
||||
minutes = '*'
|
||||
break
|
||||
@@ -304,13 +296,13 @@ export default {
|
||||
case '4':
|
||||
minutes = this.minute.rangeStart + '-' + this.minute.rangeEnd
|
||||
break
|
||||
}
|
||||
return minutes
|
||||
},
|
||||
hoursText () {
|
||||
let hours = ''
|
||||
let cronEvery = this.hour.cronEvery
|
||||
switch (cronEvery.toString()) {
|
||||
}
|
||||
return minutes
|
||||
},
|
||||
hoursText() {
|
||||
let hours = ''
|
||||
const cronEvery = this.hour.cronEvery
|
||||
switch (cronEvery.toString()) {
|
||||
case '1':
|
||||
hours = '*'
|
||||
break
|
||||
@@ -326,13 +318,13 @@ export default {
|
||||
case '4':
|
||||
hours = this.hour.rangeStart + '-' + this.hour.rangeEnd
|
||||
break
|
||||
}
|
||||
return hours
|
||||
},
|
||||
daysText () {
|
||||
let days = ''
|
||||
let cronEvery = this.day.cronEvery
|
||||
switch (cronEvery.toString()) {
|
||||
}
|
||||
return hours
|
||||
},
|
||||
daysText() {
|
||||
let days = ''
|
||||
const cronEvery = this.day.cronEvery
|
||||
switch (cronEvery.toString()) {
|
||||
case '1':
|
||||
days = '*'
|
||||
break
|
||||
@@ -348,13 +340,13 @@ export default {
|
||||
case '4':
|
||||
days = this.day.rangeStart + '-' + this.day.rangeEnd
|
||||
break
|
||||
}
|
||||
return days
|
||||
},
|
||||
monthsText () {
|
||||
let months = ''
|
||||
let cronEvery = this.month.cronEvery
|
||||
switch (cronEvery.toString()) {
|
||||
}
|
||||
return days
|
||||
},
|
||||
monthsText() {
|
||||
let months = ''
|
||||
const cronEvery = this.month.cronEvery
|
||||
switch (cronEvery.toString()) {
|
||||
case '1':
|
||||
months = '*'
|
||||
break
|
||||
@@ -370,13 +362,13 @@ export default {
|
||||
case '4':
|
||||
months = this.month.rangeStart + '-' + this.month.rangeEnd
|
||||
break
|
||||
}
|
||||
return months
|
||||
},
|
||||
weeksText () {
|
||||
let weeks = ''
|
||||
let cronEvery = this.week.cronEvery
|
||||
switch (cronEvery.toString()) {
|
||||
}
|
||||
return months
|
||||
},
|
||||
weeksText() {
|
||||
let weeks = ''
|
||||
const cronEvery = this.week.cronEvery
|
||||
switch (cronEvery.toString()) {
|
||||
case '1':
|
||||
weeks = '*'
|
||||
break
|
||||
@@ -389,77 +381,85 @@ export default {
|
||||
case '4':
|
||||
weeks = this.week.rangeStart + '-' + this.week.rangeEnd
|
||||
break
|
||||
}
|
||||
return weeks
|
||||
},
|
||||
cron () {
|
||||
return [this.minutesText, this.hoursText, this.daysText, this.monthsText, this.weeksText]
|
||||
.filter(v => !!v)
|
||||
.join(' ')
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
change () {
|
||||
this.$emit('change', this.cron)
|
||||
this.close()
|
||||
},
|
||||
close () {
|
||||
this.$emit('close')
|
||||
},
|
||||
submit () {
|
||||
if (!this.validate()) {
|
||||
this.$message.error(this.$t('Cron expression is invalid'))
|
||||
return false
|
||||
}
|
||||
this.$emit('submit', this.cron)
|
||||
return true
|
||||
},
|
||||
validate () {
|
||||
if (!this.minutesText) return false
|
||||
if (!this.hoursText) return false
|
||||
if (!this.daysText) return false
|
||||
if (!this.monthsText) return false
|
||||
if (!this.weeksText) return false
|
||||
return true
|
||||
},
|
||||
updateCronItem (key, value) {
|
||||
if (value === undefined) {
|
||||
this[key].cronEvery = '0'
|
||||
return
|
||||
}
|
||||
if (value.match(/^\*$/)) {
|
||||
this[key].cronEvery = '1'
|
||||
} else if (value.match(/\//)) {
|
||||
this[key].cronEvery = '2'
|
||||
this[key].incrementStart = value.split('/')[0]
|
||||
this[key].incrementIncrement = value.split('/')[1]
|
||||
} else if (value.match(/,|^\d+$/)) {
|
||||
this[key].cronEvery = '3'
|
||||
this[key].specificSpecific = value.split(',')
|
||||
} else if (value.match(/-/)) {
|
||||
this[key].cronEvery = '4'
|
||||
this[key].rangeStart = value.split('-')[0]
|
||||
this[key].rangeEnd = value.split('-')[1]
|
||||
} else {
|
||||
this[key].cronEvery = '0'
|
||||
}
|
||||
return weeks
|
||||
},
|
||||
cron() {
|
||||
return [this.minutesText, this.hoursText, this.daysText, this.monthsText, this.weeksText]
|
||||
.filter(v => !!v)
|
||||
.join(' ')
|
||||
}
|
||||
},
|
||||
updateCronFromData () {
|
||||
const arr = this.data.split(' ')
|
||||
const minute = arr[0]
|
||||
const hour = arr[1]
|
||||
const day = arr[2]
|
||||
const month = arr[3]
|
||||
const week = arr[4]
|
||||
watch: {
|
||||
data() {
|
||||
this.updateCronFromData()
|
||||
},
|
||||
cron() {
|
||||
this.$emit('change', this.cron)
|
||||
}
|
||||
},
|
||||
mounted() {
|
||||
this.updateCronFromData()
|
||||
},
|
||||
methods: {
|
||||
change() {
|
||||
this.$emit('change', this.cron)
|
||||
this.close()
|
||||
},
|
||||
close() {
|
||||
this.$emit('close')
|
||||
},
|
||||
submit() {
|
||||
if (!this.validate()) {
|
||||
this.$message.error(this.$t('Cron expression is invalid'))
|
||||
return false
|
||||
}
|
||||
this.$emit('submit', this.cron)
|
||||
return true
|
||||
},
|
||||
validate() {
|
||||
if (!this.minutesText) return false
|
||||
if (!this.hoursText) return false
|
||||
if (!this.daysText) return false
|
||||
if (!this.monthsText) return false
|
||||
if (!this.weeksText) return false
|
||||
return true
|
||||
},
|
||||
updateCronItem(key, value) {
|
||||
if (value === undefined) {
|
||||
this[key].cronEvery = '0'
|
||||
return
|
||||
}
|
||||
if (value.match(/^\*$/)) {
|
||||
this[key].cronEvery = '1'
|
||||
} else if (value.match(/\//)) {
|
||||
this[key].cronEvery = '2'
|
||||
this[key].incrementStart = value.split('/')[0]
|
||||
this[key].incrementIncrement = value.split('/')[1]
|
||||
} else if (value.match(/,|^\d+$/)) {
|
||||
this[key].cronEvery = '3'
|
||||
this[key].specificSpecific = value.split(',')
|
||||
} else if (value.match(/-/)) {
|
||||
this[key].cronEvery = '4'
|
||||
this[key].rangeStart = value.split('-')[0]
|
||||
this[key].rangeEnd = value.split('-')[1]
|
||||
} else {
|
||||
this[key].cronEvery = '0'
|
||||
}
|
||||
},
|
||||
updateCronFromData() {
|
||||
const arr = this.data.split(' ')
|
||||
const minute = arr[0]
|
||||
const hour = arr[1]
|
||||
const day = arr[2]
|
||||
const month = arr[3]
|
||||
const week = arr[4]
|
||||
|
||||
this.updateCronItem('minute', minute)
|
||||
this.updateCronItem('hour', hour)
|
||||
this.updateCronItem('day', day)
|
||||
this.updateCronItem('month', month)
|
||||
this.updateCronItem('week', week)
|
||||
this.updateCronItem('minute', minute)
|
||||
this.updateCronItem('hour', hour)
|
||||
this.updateCronItem('day', day)
|
||||
this.updateCronItem('month', month)
|
||||
this.updateCronItem('week', week)
|
||||
}
|
||||
}
|
||||
},
|
||||
mounted () {
|
||||
this.updateCronFromData()
|
||||
}
|
||||
}</script>
|
||||
}</script>
|
||||
|
||||
@@ -31,7 +31,9 @@ export default {
|
||||
lastWeekday: 'On the last weekday of the month',
|
||||
lastWeek: ['On the last', ' of the month'],
|
||||
beforeEndMonth: ['day(s) before the end of the month'],
|
||||
nearestWeekday: ['Nearest weekday (Monday to Friday) to the', 'of the month'],
|
||||
nearestWeekday: [
|
||||
'Nearest weekday (Monday to Friday) to the',
|
||||
'of the month'],
|
||||
someWeekday: ['On the', 'of the month'],
|
||||
cycle: ['From', 'to']
|
||||
},
|
||||
@@ -39,7 +41,14 @@ export default {
|
||||
name: 'Week',
|
||||
every: 'Every day',
|
||||
specific: 'Specific weekday (choose on or many)',
|
||||
list: ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'],
|
||||
list: [
|
||||
'Monday',
|
||||
'Tuesday',
|
||||
'Wednesday',
|
||||
'Thursday',
|
||||
'Friday',
|
||||
'Saturday',
|
||||
'Sunday'],
|
||||
cycle: ['From', 'to']
|
||||
},
|
||||
// Week:['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],
|
||||
|
||||
Reference in New Issue
Block a user