system 模块,quartz job 页面中新增弹窗调整

This commit is contained in:
任珮宇 2024-01-30 16:53:40 +08:00
parent 781a4be8a1
commit 736ee50711
2 changed files with 125 additions and 127 deletions

View File

@ -3,7 +3,7 @@
<a-input :placeholder="placeholder" v-model="editCronValue" :disabled="disabled"> <a-input :placeholder="placeholder" v-model="editCronValue" :disabled="disabled">
<a slot="addonAfter" @click="showConfigDlg" class="config-btn" :disabled="disabled"> <a slot="addonAfter" @click="showConfigDlg" class="config-btn" :disabled="disabled">
<a-icon type="setting"></a-icon> <a-icon type="setting"></a-icon>
选择 Select
</a> </a>
</a-input> </a-input>
<j-modal :visible.sync="show" title="Cron表达式" width="800px"> <j-modal :visible.sync="show" title="Cron表达式" width="800px">
@ -24,44 +24,44 @@ import EasyCron from './EasyCron.vue'
export default { export default {
name: 'input-cron', name: 'input-cron',
components: {EasyCron}, components: { EasyCron },
model: { model: {
prop: 'cronValue', prop: 'cronValue',
event: 'change' event: 'change',
}, },
props: { props: {
cronValue: { cronValue: {
type: String, type: String,
default: '' default: '',
}, },
width: { width: {
type: String, type: String,
default: '800px' default: '800px',
}, },
placeholder: { placeholder: {
type: String, type: String,
default: '请输入cron表达式' default: '请输入cron表达式',
}, },
disabled: { disabled: {
type: Boolean, type: Boolean,
default: false default: false,
}, },
exeStartTime: { exeStartTime: {
type: [Number, String, Object], type: [Number, String, Object],
default: 0 default: 0,
}, },
hideSecond: { hideSecond: {
type: Boolean, type: Boolean,
default: false default: false,
}, },
hideYear: { hideYear: {
type: Boolean, type: Boolean,
default: false default: false,
}, },
remote: { remote: {
type: Function, type: Function,
default: null default: null,
} },
}, },
data() { data() {
return { return {
@ -78,22 +78,20 @@ export default {
}, },
editCronValue(newVal, oldVal) { editCronValue(newVal, oldVal) {
this.$emit('change', newVal) this.$emit('change', newVal)
} },
}, },
methods: { methods: {
showConfigDlg() { showConfigDlg() {
if (!this.disabled) { if (!this.disabled) {
this.show = true this.show = true
} }
} },
} },
} }
</script> </script>
<style scoped> <style scoped>
.config-btn {
.config-btn { cursor: pointer;
cursor: pointer; }
}
</style> </style>

View File

@ -6,27 +6,32 @@
:confirmLoading="confirmLoading" :confirmLoading="confirmLoading"
@ok="handleOk" @ok="handleOk"
@cancel="handleCancel" @cancel="handleCancel"
okText="保存并安排任务" okText="Save And Schedule Tasks"
cancelText="关闭"> cancelText="Close"
>
<a-spin :spinning="confirmLoading"> <a-spin :spinning="confirmLoading">
<a-form-model ref="form" :model="model" :rules="validatorRules"> <a-form-model ref="form" :model="model" :rules="validatorRules">
<a-form-model-item
<a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="任务类名" prop="jobClassName" hasFeedback > :labelCol="labelCol"
<a-input placeholder="请输入任务类名" v-model="model.jobClassName" /> :wrapperCol="wrapperCol"
label="Task Class Name"
prop="jobClassName"
hasFeedback
>
<a-input placeholder="Please enter a task class name" v-model="model.jobClassName" />
</a-form-model-item> </a-form-model-item>
<a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="Cron表达式" prop="cronExpression"> <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="Cron Expression" prop="cronExpression">
<!-- <j-cron v-model="model.cronExpression"/>--> <!-- <j-cron v-model="model.cronExpression"/>-->
<j-easy-cron v-model="model.cronExpression" /> <j-easy-cron v-model="model.cronExpression" />
</a-form-model-item> </a-form-model-item>
<a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="参数" prop="parameter" > <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="Arguments" prop="parameter">
<a-textarea placeholder="请输入参数" :rows="5" v-model="model.parameter" /> <a-textarea placeholder="Please enter parameters" :rows="5" v-model="model.parameter" />
</a-form-model-item> </a-form-model-item>
<a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="描述" prop="description"> <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="Description" prop="description">
<a-textarea placeholder="请输入描述" :rows="3" v-model="model.description" /> <a-textarea placeholder="Please enter a description" :rows="3" v-model="model.description" />
</a-form-model-item> </a-form-model-item>
<a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="状态" prop="status"> <a-form-model-item :labelCol="labelCol" :wrapperCol="wrapperCol" label="Status" prop="status">
<j-dict-select-tag type="radioButton" v-model="model.status" dictCode="quartz_status"/> <j-dict-select-tag type="radioButton" v-model="model.status" dictCode="quartz_status" />
</a-form-model-item> </a-form-model-item>
</a-form-model> </a-form-model>
</a-spin> </a-spin>
@ -34,108 +39,103 @@
</template> </template>
<script> <script>
import { httpAction } from '@/api/manage' import { httpAction } from '@/api/manage'
// import JCron from "@/components/jeecg/JCron"; // import JCron from "@/components/jeecg/JCron";
import cronValidator from "@/components/jeecg/JEasyCron/validator"; import cronValidator from '@/components/jeecg/JEasyCron/validator'
export default { export default {
name: "QuartzJobModal", name: 'QuartzJobModal',
components: { components: {
// JCron, // JCron,
}, },
data () { data() {
return { return {
title:"操作", title: '操作',
buttonStyle: 'solid', buttonStyle: 'solid',
visible: false, visible: false,
model: {}, model: {},
labelCol: { labelCol: {
xs: { span: 24 }, xs: { span: 24 },
sm: { span: 5 }, sm: { span: 5 },
},
wrapperCol: {
xs: { span: 24 },
sm: { span: 16 },
},
cron: {
label: '',
value: ''
},
confirmLoading: false,
validatorRules: {
cronExpression: [
{required: true, message: '请输入cron表达式!'},
{validator: cronValidator,}
],
jobClassName: [{required: true, message: '请输入任务类名!'}]
},
url: {
add: "/sys/quartzJob/add",
edit: "/sys/quartzJob/edit",
},
}
},
created () {
},
methods: {
add() {
//
this.edit({
cronExpression: '* * * * * ? *',
status: 0,
})
}, },
edit (record) { wrapperCol: {
this.visible = true; xs: { span: 24 },
this.$nextTick(() => { sm: { span: 16 },
this.$refs.form.resetFields()
this.model = Object.assign({}, record)
})
}, },
close () { cron: {
this.$emit('close'); label: '',
this.visible = false; value: '',
}, },
handleOk () { confirmLoading: false,
const that = this; validatorRules: {
// cronExpression: [{ required: true, message: '请输入cron表达式!' }, { validator: cronValidator }],
this.$refs.form.validate((ok, err) => { jobClassName: [{ required: true, message: '请输入任务类名!' }],
if (ok) {
that.confirmLoading = true;
let httpurl = '';
let method = '';
if(!this.model.id){
httpurl+=this.url.add;
method = 'post';
}else{
httpurl+=this.url.edit;
method = 'put';
}
console.log('提交参数',this.model)
httpAction(httpurl,this.model,method).then((res)=>{
if(res.success){
that.$message.success(res.message);
that.$emit('ok');
that.close();
}else{
that.$message.warning(res.message);
}
}).finally(() => {
that.confirmLoading = false;
})
}
})
}, },
handleCancel () { url: {
this.close() add: '/sys/quartzJob/add',
edit: '/sys/quartzJob/edit',
}, },
} }
} },
created() {},
methods: {
add() {
//
this.edit({
cronExpression: '* * * * * ? *',
status: 0,
})
},
edit(record) {
this.visible = true
this.$nextTick(() => {
this.$refs.form.resetFields()
this.model = Object.assign({}, record)
})
},
close() {
this.$emit('close')
this.visible = false
},
handleOk() {
const that = this
//
this.$refs.form.validate((ok, err) => {
if (ok) {
that.confirmLoading = true
let httpurl = ''
let method = ''
if (!this.model.id) {
httpurl += this.url.add
method = 'post'
} else {
httpurl += this.url.edit
method = 'put'
}
console.log('提交参数', this.model)
httpAction(httpurl, this.model, method)
.then((res) => {
if (res.success) {
that.$message.success(res.message)
that.$emit('ok')
that.close()
} else {
that.$message.warning(res.message)
}
})
.finally(() => {
that.confirmLoading = false
})
}
})
},
handleCancel() {
this.close()
},
},
}
</script> </script>
<style scoped> <style scoped>
</style> </style>