mirror of
				https://github.com/dromara/RuoYi-Vue-Plus.git
				synced 2025-11-04 16:23:42 +08:00 
			
		
		
		
	Merge pull request !395 from 马小法/master
This commit is contained in:
		@@ -1,114 +1,114 @@
 | 
			
		||||
<template>
 | 
			
		||||
	<el-form size="small">
 | 
			
		||||
		<el-form-item>
 | 
			
		||||
			<el-radio v-model='radioValue' :label="1">
 | 
			
		||||
				小时,允许的通配符[, - * /]
 | 
			
		||||
			</el-radio>
 | 
			
		||||
		</el-form-item>
 | 
			
		||||
 | 
			
		||||
		<el-form-item>
 | 
			
		||||
			<el-radio v-model='radioValue' :label="2">
 | 
			
		||||
				周期从
 | 
			
		||||
				<el-input-number v-model='cycle01' :min="0" :max="22" /> -
 | 
			
		||||
				<el-input-number v-model='cycle02' :min="cycle01 ? cycle01 + 1 : 1" :max="23" /> 小时
 | 
			
		||||
			</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" /> 小时执行一次
 | 
			
		||||
			</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%">
 | 
			
		||||
					<el-option v-for="item in 60" :key="item" :value="item-1">{{item-1}}</el-option>
 | 
			
		||||
				</el-select>
 | 
			
		||||
			</el-radio>
 | 
			
		||||
		</el-form-item>
 | 
			
		||||
	</el-form>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
export default {
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			radioValue: 1,
 | 
			
		||||
			cycle01: 0,
 | 
			
		||||
			cycle02: 1,
 | 
			
		||||
			average01: 0,
 | 
			
		||||
			average02: 1,
 | 
			
		||||
			checkboxList: [],
 | 
			
		||||
			checkNum: this.$options.propsData.check
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
	name: 'crontab-hour',
 | 
			
		||||
	props: ['check', 'cron'],
 | 
			
		||||
	methods: {
 | 
			
		||||
		// 单选按钮值变化时
 | 
			
		||||
		radioChange() {
 | 
			
		||||
			switch (this.radioValue) {
 | 
			
		||||
				case 1:
 | 
			
		||||
        	this.$emit('update', 'hour', '*')
 | 
			
		||||
        	break;
 | 
			
		||||
				case 2:
 | 
			
		||||
					this.$emit('update', 'hour', this.cycleTotal);
 | 
			
		||||
					break;
 | 
			
		||||
				case 3:
 | 
			
		||||
					this.$emit('update', 'hour', this.averageTotal);
 | 
			
		||||
					break;
 | 
			
		||||
				case 4:
 | 
			
		||||
					this.$emit('update', 'hour', this.checkboxString);
 | 
			
		||||
					break;
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		// 周期两个值变化时
 | 
			
		||||
		cycleChange() {
 | 
			
		||||
			if (this.radioValue == '2') {
 | 
			
		||||
				this.$emit('update', 'hour', this.cycleTotal);
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		// 平均两个值变化时
 | 
			
		||||
		averageChange() {
 | 
			
		||||
			if (this.radioValue == '3') {
 | 
			
		||||
				this.$emit('update', 'hour', this.averageTotal);
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		// checkbox值变化时
 | 
			
		||||
		checkboxChange() {
 | 
			
		||||
			if (this.radioValue == '4') {
 | 
			
		||||
				this.$emit('update', 'hour', this.checkboxString);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
	watch: {
 | 
			
		||||
		'radioValue': 'radioChange',
 | 
			
		||||
		'cycleTotal': 'cycleChange',
 | 
			
		||||
		'averageTotal': 'averageChange',
 | 
			
		||||
		'checkboxString': 'checkboxChange'
 | 
			
		||||
	},
 | 
			
		||||
	computed: {
 | 
			
		||||
		// 计算两个周期值
 | 
			
		||||
		cycleTotal: function () {
 | 
			
		||||
			const cycle01 = this.checkNum(this.cycle01, 0, 22)
 | 
			
		||||
			const cycle02 = this.checkNum(this.cycle02, cycle01 ? cycle01 + 1 : 1, 23)
 | 
			
		||||
			return cycle01 + '-' + cycle02;
 | 
			
		||||
		},
 | 
			
		||||
		// 计算平均用到的值
 | 
			
		||||
		averageTotal: function () {
 | 
			
		||||
			const average01 = this.checkNum(this.average01, 0, 22)
 | 
			
		||||
			const average02 = this.checkNum(this.average02, 1, 23 - average01 || 0)
 | 
			
		||||
			return average01 + '/' + average02;
 | 
			
		||||
		},
 | 
			
		||||
		// 计算勾选的checkbox值合集
 | 
			
		||||
		checkboxString: function () {
 | 
			
		||||
			let str = this.checkboxList.join();
 | 
			
		||||
			return str == '' ? '*' : str;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
<template>
 | 
			
		||||
	<el-form size="small">
 | 
			
		||||
		<el-form-item>
 | 
			
		||||
			<el-radio v-model='radioValue' :label="1">
 | 
			
		||||
				小时,允许的通配符[, - * /]
 | 
			
		||||
			</el-radio>
 | 
			
		||||
		</el-form-item>
 | 
			
		||||
 | 
			
		||||
		<el-form-item>
 | 
			
		||||
			<el-radio v-model='radioValue' :label="2">
 | 
			
		||||
				周期从
 | 
			
		||||
				<el-input-number v-model='cycle01' :min="0" :max="22" /> -
 | 
			
		||||
				<el-input-number v-model='cycle02' :min="cycle01 ? cycle01 + 1 : 1" :max="23" /> 小时
 | 
			
		||||
			</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" /> 小时执行一次
 | 
			
		||||
			</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%">
 | 
			
		||||
					<el-option v-for="item in 24" :key="item" :value="item-1">{{item-1}}</el-option>
 | 
			
		||||
				</el-select>
 | 
			
		||||
			</el-radio>
 | 
			
		||||
		</el-form-item>
 | 
			
		||||
	</el-form>
 | 
			
		||||
</template>
 | 
			
		||||
 | 
			
		||||
<script>
 | 
			
		||||
export default {
 | 
			
		||||
	data() {
 | 
			
		||||
		return {
 | 
			
		||||
			radioValue: 1,
 | 
			
		||||
			cycle01: 0,
 | 
			
		||||
			cycle02: 1,
 | 
			
		||||
			average01: 0,
 | 
			
		||||
			average02: 1,
 | 
			
		||||
			checkboxList: [],
 | 
			
		||||
			checkNum: this.$options.propsData.check
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
	name: 'crontab-hour',
 | 
			
		||||
	props: ['check', 'cron'],
 | 
			
		||||
	methods: {
 | 
			
		||||
		// 单选按钮值变化时
 | 
			
		||||
		radioChange() {
 | 
			
		||||
			switch (this.radioValue) {
 | 
			
		||||
				case 1:
 | 
			
		||||
        	this.$emit('update', 'hour', '*')
 | 
			
		||||
        	break;
 | 
			
		||||
				case 2:
 | 
			
		||||
					this.$emit('update', 'hour', this.cycleTotal);
 | 
			
		||||
					break;
 | 
			
		||||
				case 3:
 | 
			
		||||
					this.$emit('update', 'hour', this.averageTotal);
 | 
			
		||||
					break;
 | 
			
		||||
				case 4:
 | 
			
		||||
					this.$emit('update', 'hour', this.checkboxString);
 | 
			
		||||
					break;
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		// 周期两个值变化时
 | 
			
		||||
		cycleChange() {
 | 
			
		||||
			if (this.radioValue == '2') {
 | 
			
		||||
				this.$emit('update', 'hour', this.cycleTotal);
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		// 平均两个值变化时
 | 
			
		||||
		averageChange() {
 | 
			
		||||
			if (this.radioValue == '3') {
 | 
			
		||||
				this.$emit('update', 'hour', this.averageTotal);
 | 
			
		||||
			}
 | 
			
		||||
		},
 | 
			
		||||
		// checkbox值变化时
 | 
			
		||||
		checkboxChange() {
 | 
			
		||||
			if (this.radioValue == '4') {
 | 
			
		||||
				this.$emit('update', 'hour', this.checkboxString);
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	},
 | 
			
		||||
	watch: {
 | 
			
		||||
		'radioValue': 'radioChange',
 | 
			
		||||
		'cycleTotal': 'cycleChange',
 | 
			
		||||
		'averageTotal': 'averageChange',
 | 
			
		||||
		'checkboxString': 'checkboxChange'
 | 
			
		||||
	},
 | 
			
		||||
	computed: {
 | 
			
		||||
		// 计算两个周期值
 | 
			
		||||
		cycleTotal: function () {
 | 
			
		||||
			const cycle01 = this.checkNum(this.cycle01, 0, 22)
 | 
			
		||||
			const cycle02 = this.checkNum(this.cycle02, cycle01 ? cycle01 + 1 : 1, 23)
 | 
			
		||||
			return cycle01 + '-' + cycle02;
 | 
			
		||||
		},
 | 
			
		||||
		// 计算平均用到的值
 | 
			
		||||
		averageTotal: function () {
 | 
			
		||||
			const average01 = this.checkNum(this.average01, 0, 22)
 | 
			
		||||
			const average02 = this.checkNum(this.average02, 1, 23 - average01 || 0)
 | 
			
		||||
			return average01 + '/' + average02;
 | 
			
		||||
		},
 | 
			
		||||
		// 计算勾选的checkbox值合集
 | 
			
		||||
		checkboxString: function () {
 | 
			
		||||
			let str = this.checkboxList.join();
 | 
			
		||||
			return str == '' ? '*' : str;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
</script>
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user