123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928 |
- <template>
- <a-modal
- title="corn表达式"
- :width="modalWidth"
- :visible="visible"
- :confirmLoading="confirmLoading"
- :footer="null"
- @ok="handleSubmit"
- @cancel="close"
- cancelText="关闭">
- <div class="card-container">
- <a-tabs defaultActiveKey="1" type="card">
- <a-tab-pane key="1" tab="秒">
- <!-- <span slot="tab"><a-icon type="schedule" /> 秒</span> -->
- <a-radio-group v-model="result.second.cronEvery">
- <a-row>
- <a-radio value="1">每一秒钟</a-radio>
- </a-row>
- <a-row>
- <a-radio value="2">每隔
- <a-input-number size="small" v-model="result.second.incrementIncrement" :min="1" :max="60"></a-input-number>
- 秒执行 从
- <a-input-number size="small" v-model="result.second.incrementStart" :min="0" :max="59"></a-input-number>
- 秒开始
- </a-radio>
- </a-row>
- <a-row>
- <a-radio value="3">具体秒数(可多选)</a-radio>
- <a-select style="width:354px;" size="small" mode="multiple" v-model="result.second.specificSpecific">
- <a-select-option v-for="(val,index) in 60" :key="index" :value="index">{{ index }}</a-select-option>
- </a-select>
- </a-row>
- <a-row>
- <a-radio value="4">周期从
- <a-input-number size="small" v-model="result.second.rangeStart" :min="1" :max="60"></a-input-number>
- 到
- <a-input-number size="small" v-model="result.second.rangeEnd" :min="0" :max="59"></a-input-number>
- 秒
- </a-radio>
- </a-row>
- </a-radio-group>
- </a-tab-pane>
- <a-tab-pane key="2" tab="分">
- <!-- <span slot="tab"><a-icon type="schedule" />分</span> -->
- <div class="tabBody">
- <a-radio-group v-model="result.minute.cronEvery">
- <a-row>
- <a-radio value="1">每一分钟</a-radio>
- </a-row>
- <a-row>
- <a-radio value="2">每隔
- <a-input-number size="small" v-model="result.minute.incrementIncrement" :min="1" :max="60"></a-input-number>
- 分执行 从
- <a-input-number size="small" v-model="result.minute.incrementStart" :min="0" :max="59"></a-input-number>
- 分开始
- </a-radio>
- </a-row>
- <a-row>
- <a-radio value="3">具体分钟数(可多选)</a-radio>
- <a-select style="width:340px;" size="small" mode="multiple" v-model="result.minute.specificSpecific">
- <a-select-option v-for="(val,index) in Array(60)" :key="index" :value="index"> {{ index }}</a-select-option>
- </a-select>
- </a-row>
- <a-row>
- <a-radio value="4">周期从
- <a-input-number size="small" v-model="result.minute.rangeStart" :min="1" :max="60"></a-input-number>
- 到
- <a-input-number size="small" v-model="result.minute.rangeEnd" :min="0" :max="59"></a-input-number>
- 分
- </a-radio>
- </a-row>
- </a-radio-group>
- </div>
- </a-tab-pane>
- <a-tab-pane key="3" tab="时">
- <!-- <span slot="tab"><a-icon type="schedule" /> 时</span> -->
- <div class="tabBody">
- <a-radio-group v-model="result.hour.cronEvery">
- <a-row>
- <a-radio value="1">每一小时</a-radio>
- </a-row>
- <a-row>
- <a-radio value="2">每隔
- <a-input-number size="small" v-model="result.hour.incrementIncrement" :min="0" :max="23"></a-input-number>
- 小时执行 从
- <a-input-number size="small" v-model="result.hour.incrementStart" :min="0" :max="23"></a-input-number>
- 小时开始
- </a-radio>
- </a-row>
- <a-row>
- <a-radio class="long" value="3">具体小时数(可多选)</a-radio>
- <a-select style="width:340px;" size="small" mode="multiple" v-model="result.hour.specificSpecific">
- <a-select-option v-for="(val,index) in Array(24)" :key="index" >{{ index }}</a-select-option>
- </a-select>
- </a-row>
- <a-row>
- <a-radio value="4">周期从
- <a-input-number size="small" v-model="result.hour.rangeStart" :min="0" :max="23"></a-input-number>
- 到
- <a-input-number size="small" v-model="result.hour.rangeEnd" :min="0" :max="23"></a-input-number>
- 小时
- </a-radio>
- </a-row>
- </a-radio-group>
- </div>
- </a-tab-pane>
- <a-tab-pane key="4" tab="天">
- <!-- <span slot="tab"><a-icon type="schedule" /> 天</span> -->
- <div class="tabBody">
- <a-radio-group v-model="result.day.cronEvery">
- <a-row>
- <a-radio value="1">每一天</a-radio>
- </a-row>
- <a-row>
- <a-radio value="2">每隔
- <a-input-number size="small" v-model="result.week.incrementIncrement" :min="1" :max="7"></a-input-number>
- 周执行 从
- <a-select size="small" v-model="result.week.incrementStart">
- <a-select-option v-for="(val,index) in Array(7)" :key="index" :value="index+1">{{ weekDays[index] }}</a-select-option>
- </a-select>
- 开始
- </a-radio>
- </a-row>
- <a-row>
- <a-radio value="3">每隔
- <a-input-number size="small" v-model="result.day.incrementIncrement" :min="1" :max="31"></a-input-number>
- 天执行 从
- <a-input-number size="small" v-model="result.day.incrementStart" :min="1" :max="31"></a-input-number>
- 天开始
- </a-radio>
- </a-row>
- <a-row>
- <a-radio class="long" value="4">具体星期几(可多选)</a-radio>
- <a-select style="width:340px;" size="small" mode="multiple" v-model="result.week.specificSpecific">
- <a-select-option v-for="(val,index) in Array(7)" :key="index" :value="index+1">{{ weekDays[index] }}</a-select-option>
- </a-select>
- </a-row>
- <a-row>
- <a-radio class="long" value="5">具体天数(可多选)</a-radio>
- <a-select style="width:354px;" size="small" mode="multiple" v-model="result.day.specificSpecific">
- <a-select-option v-for="(val,index) in Array(31)" :key="index" :value="index+1">{{ index+1 }}</a-select-option>
- </a-select>
- </a-row>
- <a-row>
- <a-radio value="6">在这个月的最后一天</a-radio>
- </a-row>
- <a-row>
- <a-radio value="7">在这个月的最后一个工作日</a-radio>
- </a-row>
- <a-row>
- <a-radio value="8">在这个月的最后一个
- <a-select size="small" v-model="result.day.cronLastSpecificDomDay">
- <a-select-option v-for="(val,index) in Array(7)" :key="index" :value="index+1">{{ weekDays[index] }}</a-select-option>
- </a-select>
- </a-radio>
- </a-row>
- <a-row>
- <a-radio value="9">
- 在本月底前
- <a-input-number size="small" v-model="result.day.cronDaysBeforeEomMinus" :min="1" :max="31"></a-input-number>
- 天
- </a-radio>
- </a-row>
- <a-row>
- <a-radio value="10">最近的工作日(周一至周五)至本月
- <a-input-number size="small" v-model="result.day.cronDaysNearestWeekday" :min="1" :max="31"></a-input-number>
- 日
- </a-radio>
- </a-row>
- <a-row>
- <a-radio value="11">在这个月的第
- <a-input-number size="small" v-model="result.week.cronNthDayNth" :min="1" :max="5"></a-input-number>
- 个
- <a-select size="small" v-model="result.week.cronNthDayDay">
- <a-select-option v-for="(val,index) in Array(7)" :key="index" :value="index+1">{{ weekDays[index] }}</a-select-option>
- </a-select>
- </a-radio>
- </a-row>
- </a-radio-group>
- </div>
- </a-tab-pane>
- <a-tab-pane key="5" tab="月">
- <!-- <span slot="tab"><a-icon type="schedule" /> 月</span> -->
- <div class="tabBody">
- <a-radio-group v-model="result.month.cronEvery">
- <a-row>
- <a-radio value="1">每一月</a-radio>
- </a-row>
- <a-row>
- <a-radio value="2">每隔
- <a-input-number size="small" v-model="result.month.incrementIncrement" :min="0" :max="12"></a-input-number>
- 月执行 从
- <a-input-number size="small" v-model="result.month.incrementStart" :min="0" :max="12"></a-input-number>
- 月开始
- </a-radio>
- </a-row>
- <a-row>
- <a-radio class="long" value="3">具体月数(可多选)</a-radio>
- <a-select style="width:354px;" size="small" filterable mode="multiple" v-model="result.month.specificSpecific">
- <a-select-option v-for="(val,index) in Array(12)" :key="index" :value="index+1">{{ index+1 }}</a-select-option>
- </a-select>
- </a-row>
- <a-row>
- <a-radio value="4">从
- <a-input-number size="small" v-model="result.month.rangeStart" :min="1" :max="12"></a-input-number>
- 到
- <a-input-number size="small" v-model="result.month.rangeEnd" :min="1" :max="12"></a-input-number>
- 月之间的每个月
- </a-radio>
- </a-row>
- </a-radio-group>
- </div>
- </a-tab-pane>
- <a-tab-pane key="6" tab="年">
- <!-- <span slot="tab"><a-icon type="schedule" /> 年</span> -->
- <div class="tabBody">
- <a-radio-group v-model="result.year.cronEvery">
- <a-row>
- <a-radio value="1">每一年</a-radio>
- </a-row>
- <a-row>
- <a-radio value="2">每隔
- <a-input-number size="small" v-model="result.year.incrementIncrement" :min="1" :max="99"></a-input-number>
- 年执行 从
- <a-input-number size="small" v-model="result.year.incrementStart" :min="2019" :max="2119"></a-input-number>
- 年开始
- </a-radio>
- </a-row>
- <a-row>
- <a-radio class="long" value="3">具体年份(可多选)</a-radio>
- <a-select style="width:354px;" size="small" filterable mode="multiple" v-model="result.year.specificSpecific">
- <a-select-option v-for="(val,index) in Array(100)" :key="index" :value="2019+index">{{ 2019+index }}</a-select-option>
- </a-select>
- </a-row>
- <a-row>
- <a-radio value="4">从
- <a-input-number size="small" v-model="result.year.rangeStart" :min="2019" :max="2119"></a-input-number>
- 到
- <a-input-number size="small" v-model="result.year.rangeEnd" :min="2019" :max="2119"></a-input-number>
- 年之间的每一年
- </a-radio>
- </a-row>
- </a-radio-group>
- </div>
- </a-tab-pane>
- </a-tabs>
- <div class="bottom">
- <span class="value">{{ this.cron }}</span>
- </div>
- </div>
- <div class="jobBtns">
- <a-button key="back" @click="close">取消</a-button>
- <a-button @click="handleSubmit" :loading="loading" type="primary">
- 确定
- </a-button>
- </div>
- </a-modal>
- </template>
- <script>
- export default {
- name: 'VueCron',
- props: ['data'],
- data () {
- return {
- visible: false,
- confirmLoading: false,
- size: 'large',
- weekDays: ['天', '一', '二', '三', '四', '五', '六'].map(val => '星期' + val),
- result: {
- second: {},
- minute: {},
- hour: {},
- day: {},
- week: {},
- month: {},
- year: {}
- },
- defaultValue: {
- second: {
- cronEvery: '',
- incrementStart: 3,
- incrementIncrement: 5,
- rangeStart: 1,
- rangeEnd: 0,
- specificSpecific: []
- },
- minute: {
- cronEvery: '',
- incrementStart: 3,
- incrementIncrement: 5,
- rangeStart: 1,
- rangeEnd: '0',
- specificSpecific: []
- },
- hour: {
- cronEvery: '',
- incrementStart: 3,
- incrementIncrement: 5,
- rangeStart: '0',
- rangeEnd: '0',
- specificSpecific: []
- },
- day: {
- cronEvery: '',
- incrementStart: 1,
- incrementIncrement: '1',
- rangeStart: '',
- rangeEnd: '',
- specificSpecific: [],
- cronLastSpecificDomDay: 1,
- cronDaysBeforeEomMinus: 1,
- cronDaysNearestWeekday: 1
- },
- week: {
- cronEvery: '',
- incrementStart: 1,
- incrementIncrement: 1,
- specificSpecific: [],
- cronNthDayDay: 1,
- cronNthDayNth: 1
- },
- month: {
- cronEvery: '',
- incrementStart: 3,
- incrementIncrement: 5,
- rangeStart: 1,
- rangeEnd: 1,
- specificSpecific: []
- },
- year: {
- cronEvery: '',
- incrementStart: 2017,
- incrementIncrement: 1,
- rangeStart: 2019,
- rangeEnd: 2019,
- specificSpecific: []
- },
- label: ''
- }
- }
- },
- computed: {
- modalWidth () {
- return 608
- },
- secondsText () {
- let seconds = ''
- const cronEvery = this.result.second.cronEvery || ''
- switch (cronEvery.toString()) {
- case '1':
- seconds = '*'
- break
- case '2':
- seconds = this.result.second.incrementStart + '/' + this.result.second.incrementIncrement
- break
- case '3':
- this.result.second.specificSpecific.map(val => { seconds += val + ',' })
- seconds = seconds.slice(0, -1)
- break
- case '4':
- seconds = this.result.second.rangeStart + '-' + this.result.second.rangeEnd
- break
- }
- return seconds
- },
- minutesText () {
- let minutes = ''
- const cronEvery = this.result.minute.cronEvery || ''
- switch (cronEvery.toString()) {
- case '1':
- minutes = '*'
- break
- case '2':
- minutes = this.result.minute.incrementStart + '/' + this.result.minute.incrementIncrement
- break
- case '3':
- this.result.minute.specificSpecific.map(val => {
- minutes += val + ','
- })
- minutes = minutes.slice(0, -1)
- break
- case '4':
- minutes = this.result.minute.rangeStart + '-' + this.result.minute.rangeEnd
- break
- }
- return minutes
- },
- hoursText () {
- let hours = ''
- const cronEvery = this.result.hour.cronEvery || ''
- switch (cronEvery.toString()) {
- case '1':
- hours = '*'
- break
- case '2':
- hours = this.result.hour.incrementStart + '/' + this.result.hour.incrementIncrement
- break
- case '3':
- this.result.hour.specificSpecific.map(val => {
- hours += val + ','
- })
- hours = hours.slice(0, -1)
- break
- case '4':
- hours = this.result.hour.rangeStart + '-' + this.result.hour.rangeEnd
- break
- }
- return hours
- },
- daysText () {
- let days = ''
- const cronEvery = this.result.day.cronEvery || ''
- switch (cronEvery.toString()) {
- case '1':
- break
- case '2':
- case '4':
- case '11':
- days = '?'
- break
- case '3':
- days = this.result.day.incrementStart + '/' + this.result.day.incrementIncrement
- break
- case '5':
- this.result.day.specificSpecific.map(val => {
- days += val + ','
- })
- days = days.slice(0, -1)
- break
- case '6':
- days = 'L'
- break
- case '7':
- days = 'LW'
- break
- case '8':
- days = this.result.day.cronLastSpecificDomDay + 'L'
- break
- case '9':
- days = 'L-' + this.result.day.cronDaysBeforeEomMinus
- break
- case '10':
- days = this.result.day.cronDaysNearestWeekday + 'W'
- break
- }
- return days
- },
- weeksText () {
- let weeks = ''
- const cronEvery = this.result.day.cronEvery || ''
- switch (cronEvery.toString()) {
- case '1':
- case '3':
- case '5':
- weeks = '?'
- break
- case '2':
- weeks = this.result.week.incrementStart + '/' + this.result.week.incrementIncrement
- break
- case '4':
- this.result.week.specificSpecific.map(val => {
- weeks += val + ','
- })
- weeks = weeks.slice(0, -1)
- break
- case '6':
- case '7':
- case '8':
- case '9':
- case '10':
- weeks = '?'
- break
- case '11':
- weeks = this.result.week.cronNthDayDay + '#' + this.result.week.cronNthDayNth
- break
- }
- return weeks
- },
- monthsText () {
- let months = ''
- const cronEvery = this.result.month.cronEvery || ''
- switch (cronEvery.toString()) {
- case '1':
- months = '*'
- break
- case '2':
- months = this.result.month.incrementStart + '/' + this.result.month.incrementIncrement
- break
- case '3':
- this.result.month.specificSpecific.map(val => {
- months += val + ','
- })
- months = months.slice(0, -1)
- break
- case '4':
- months = this.result.month.rangeStart + '-' + this.result.month.rangeEnd
- break
- }
- return months
- },
- yearsText () {
- let years = ''
- const cronEvery = this.result.year.cronEvery || ''
- switch (cronEvery.toString()) {
- case '1':
- years = '*'
- break
- case '2':
- years = this.result.year.incrementStart + '/' + this.result.year.incrementIncrement
- break
- case '3':
- this.result.year.specificSpecific.map(val => {
- years += val + ','
- })
- years = years.slice(0, -1)
- break
- case '4':
- years = this.result.year.rangeStart + '-' + this.result.year.rangeEnd
- break
- }
- return years
- },
- cron () {
- return `${this.secondsText || '*'} ${this.minutesText || '*'} ${this.hoursText || '*'} ${this.daysText || '*'} ${this.monthsText || '*'} ${this.weeksText || '?'} ${this.yearsText || '*'}`
- }
- },
- watch: {
- visible: {
- handler () {
- let label = this.data
- const arr = label.split(' ')
- const len = arr.length
- const bx = (a, b) => {
- for (let i = 0; i < a; i++) {
- b.push('*')
- }
- return b
- }
- if (len < 7) {
- label = bx(7 - len, arr).join(' ')
- }
- console.log(label, 'ddddddddddd')
- if (label) {
- this.secondsReverseExp(label)
- this.minutesReverseExp(label)
- this.hoursReverseExp(label)
- this.daysReverseExp(label)
- this.daysReverseExp(label)
- this.monthsReverseExp(label)
- this.yearReverseExp(label)
- JSON.parse(JSON.stringify(label))
- } else {
- this.result = JSON.parse(JSON.stringify(this.defaultValue))
- }
- }
- }
- },
- methods: {
- show () {
- this.visible = true
- },
- handleSubmit () {
- this.$emit('ok', this.cron)
- this.close()
- this.visible = false
- },
- close () {
- this.visible = false
- },
- secondsReverseExp (seconds) {
- const val = seconds.split(' ')[0]
- // alert(val);
- const second = {
- cronEvery: '',
- incrementStart: 3,
- incrementIncrement: 5,
- rangeStart: 1,
- rangeEnd: 0,
- specificSpecific: []
- }
- switch (true) {
- case val.includes('*'):
- second.cronEvery = '1'
- break
- case val.includes('/'):
- second.cronEvery = '2'
- second.incrementStart = val.split('/')[0]
- second.incrementIncrement = val.split('/')[1]
- break
- case val.includes(','):
- second.cronEvery = '3'
- second.specificSpecific = val.split(',').map(Number).sort()
- break
- case val.includes('-'):
- second.cronEvery = '4'
- second.rangeStart = val.split('-')[0]
- second.rangeEnd = val.split('-')[1]
- break
- default:
- second.cronEvery = '1'
- }
- this.result.second = second
- },
- minutesReverseExp (minutes) {
- const val = minutes.split(' ')[1]
- const minute = {
- cronEvery: '',
- incrementStart: 3,
- incrementIncrement: 5,
- rangeStart: 1,
- rangeEnd: 0,
- specificSpecific: []
- }
- switch (true) {
- case val.includes('*'):
- minute.cronEvery = '1'
- break
- case val.includes('/'):
- minute.cronEvery = '2'
- minute.incrementStart = val.split('/')[0]
- minute.incrementIncrement = val.split('/')[1]
- break
- case val.includes(','):
- minute.cronEvery = '3'
- minute.specificSpecific = val.split(',').map(Number).sort()
- break
- case val.includes('-'):
- minute.cronEvery = '4'
- minute.rangeStart = val.split('-')[0]
- minute.rangeEnd = val.split('-')[1]
- break
- default:
- minute.cronEvery = '1'
- }
- this.result.minute = minute
- },
- hoursReverseExp (hours) {
- const val = hours.split(' ')[2]
- const hour = {
- cronEvery: '',
- incrementStart: 3,
- incrementIncrement: 5,
- rangeStart: 1,
- rangeEnd: '0',
- specificSpecific: []
- }
- switch (true) {
- case val.includes('*'):
- hour.cronEvery = '1'
- break
- case val.includes('/'):
- hour.cronEvery = '2'
- hour.incrementStart = val.split('/')[0]
- hour.incrementIncrement = val.split('/')[1]
- break
- case val.includes(','):
- hour.cronEvery = '3'
- hour.specificSpecific = val.split(',').map(Number).sort()
- break
- case val.includes('-'):
- hour.cronEvery = '4'
- hour.rangeStart = val.split('-')[0]
- hour.rangeEnd = val.split('-')[1]
- break
- default:
- hour.cronEvery = '1'
- }
- this.result.hour = hour
- },
- daysReverseExp (cron) {
- const days = cron.split(' ')[3]
- const weeks = cron.split(' ')[5]
- const day = {
- cronEvery: '',
- incrementStart: 1,
- incrementIncrement: 1,
- rangeStart: 1,
- rangeEnd: 1,
- specificSpecific: [],
- cronLastSpecificDomDay: 1,
- cronDaysBeforeEomMinus: 1,
- cronDaysNearestWeekday: 1
- }
- const week = {
- cronEvery: '',
- incrementStart: 1,
- incrementIncrement: 1,
- specificSpecific: [],
- cronNthDayDay: 1,
- cronNthDayNth: '1'
- }
- if (!days.includes('?')) {
- switch (true) {
- case days.includes('*'):
- day.cronEvery = '1'
- break
- case days.includes('?'):
- // 2、4、11
- break
- case days.includes('/'):
- day.cronEvery = '3'
- day.incrementStart = days.split('/')[0]
- day.incrementIncrement = days.split('/')[1]
- break
- case days.includes(','):
- day.cronEvery = '5'
- day.specificSpecific = days.split(',').map(Number).sort()
- // day.specificSpecific.forEach(function (value, index) {
- // day.specificSpecific[index] = value -1;
- // });
- break
- case days.includes('LW'):
- day.cronEvery = '7'
- break
- case days.includes('L-'):
- day.cronEvery = '9'
- day.cronDaysBeforeEomMinus = days.split('L-')[1]
- break
- case days.includes('L'):
- // alert(days);
- if (days.len == 1) {
- day.cronEvery = '6'
- day.cronLastSpecificDomDay = '1'
- } else {
- day.cronEvery = '8'
- day.cronLastSpecificDomDay = Number(days.split('L')[0])
- }
- break
- case days.includes('W'):
- day.cronEvery = '10'
- day.cronDaysNearestWeekday = days.split('W')[0]
- break
- default:
- day.cronEvery = '1'
- }
- } else {
- switch (true) {
- case weeks.includes('/'):
- day.cronEvery = '2'
- week.incrementStart = weeks.split('/')[0]
- week.incrementIncrement = weeks.split('/')[1]
- break
- case weeks.includes(','):
- day.cronEvery = '4'
- week.specificSpecific = weeks.split(',').map(Number).sort()
- break
- case '#':
- day.cronEvery = '11'
- week.cronNthDayDay = weeks.split('#')[0]
- week.cronNthDayNth = weeks.split('#')[1]
- break
- default:
- day.cronEvery = '1'
- week.cronEvery = '1'
- }
- }
- this.result.day = day
- this.result.week = week
- },
- monthsReverseExp (cron) {
- const months = cron.split(' ')[4]
- const month = {
- cronEvery: '',
- incrementStart: 3,
- incrementIncrement: 5,
- rangeStart: 1,
- rangeEnd: 1,
- specificSpecific: []
- }
- switch (true) {
- case months.includes('*'):
- month.cronEvery = '1'
- break
- case months.includes('/'):
- month.cronEvery = '2'
- month.incrementStart = months.split('/')[0]
- month.incrementIncrement = months.split('/')[1]
- break
- case months.includes(','):
- month.cronEvery = '3'
- month.specificSpecific = months.split(',').map(Number).sort()
- break
- case months.includes('-'):
- month.cronEvery = '4'
- month.rangeStart = months.split('-')[0]
- month.rangeEnd = months.split('-')[1]
- break
- default:
- month.cronEvery = '1'
- }
- this.result.month = month
- },
- yearReverseExp (cron) {
- const years = cron.split(' ')[6]
- const year = {
- cronEvery: '',
- incrementStart: 3,
- incrementIncrement: 5,
- rangeStart: 2019,
- rangeEnd: 2019,
- specificSpecific: []
- }
- switch (true) {
- case years.includes('*'):
- year.cronEvery = '1'
- break
- case years.includes('/'):
- year.cronEvery = '2'
- year.incrementStart = years.split('/')[0]
- year.incrementIncrement = years.split('/')[1]
- break
- case years.includes(','):
- year.cronEvery = '3'
- year.specificSpecific = years.split(',').map(Number).sort()
- break
- case years.includes('-'):
- year.cronEvery = '4'
- year.rangeStart = years.split('-')[0]
- year.rangeEnd = years.split('-')[1]
- break
- default:
- year.cronEvery = '1'
- }
- this.result.year = year
- }
- }
- }
- </script>
- <style lang="less">
- .card-container {
- background: #fff;
- overflow: hidden;
- padding: 12px;
- position: relative;
- width: 100%;
- .ant-tabs{
- border:1px solid #e6ebf5;
- padding: 0;
- .ant-tabs-bar {
- margin: 0;
- outline: none;
- border-bottom: none;
- .ant-tabs-nav-container{
- margin: 0;
- .ant-tabs-tab {
- padding: 0 24px!important;
- background-color: #f5f7fa!important;
- margin-right: 0px!important;
- border-radius: 0;
- line-height: 38px;
- border: 1px solid transparent!important;
- border-bottom: 1px solid #e6ebf5!important;
- }
- .ant-tabs-tab-active.ant-tabs-tab{
- color: #409eff;
- background-color: #fff!important;
- border-right:1px solid #e6ebf5!important;
- border-left:1px solid #e6ebf5!important;
- border-bottom:1px solid #fff!important;
- font-weight: normal;
- transition:none!important;
- }
- }
- }
- .ant-tabs-tabpane{
- padding: 15px;
- .ant-row{
- margin: 10px 0;
- }
- .ant-select,.ant-input-number{
- width: 100px;
- }
- }
- }
- }
- </style>
- <style lang="less" scoped>
- .container-widthEn{
- width: 755px;
- }
- .container-widthCn{
- width: 608px;
- }
- .language{
- text-align: center;
- position: absolute;
- right: 13px;
- top: 13px;
- border: 1px solid transparent;
- height: 40px;
- line-height: 38px;
- font-size: 16px;
- color: #409eff;
- z-index: 1;
- background: #f5f7fa;
- outline: none;
- width: 47px;
- border-bottom: 1px solid #e6ebf5;
- border-radius: 0;
- }
- .card-container{
- .bottom{
- display: flex;
- justify-content: center;
- padding: 10px 0 0 0;
- .cronButton{
- margin: 0 10px;
- line-height: 40px;
- }
- }
- }
- .tabBody{
- .a-row{
- margin: 10px 0;
- .long{
- .a-select{
- width:354px;
- }
- }
- .a-input-number{
- width: 110px;
- }
- }
- }
- </style>
|