7 changed files with 834 additions and 1261 deletions
@ -0,0 +1,150 @@
|
||||
<template> |
||||
<el-dialog title="创建提醒" width="700px"> |
||||
<el-form |
||||
label-width="148" |
||||
:model="formData" |
||||
ref="formRef" |
||||
class="mr-40" |
||||
> |
||||
<el-form-item |
||||
label="提醒类型" |
||||
prop="alarmTypeId" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请选择提醒类型', |
||||
trigger: ['blur'], |
||||
}" |
||||
> |
||||
<el-select v-model="formData.alarmTypeId" style="width: 280px"> |
||||
<el-option :value="1" label="预警问题" /> |
||||
<el-option :value="2" label="风险问题" /> |
||||
<el-option :value="3" label="提醒通知" /> |
||||
</el-select> |
||||
</el-form-item> |
||||
<el-form-item |
||||
label="被通知单位" |
||||
prop="notificationDepartId" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请选择被通知单位', |
||||
trigger: ['blur'], |
||||
}" |
||||
> |
||||
<div> |
||||
<depart-tree-select |
||||
v-model="formData.notificationDepartId" |
||||
:check-strictly="true" |
||||
style="width: 280px" |
||||
/> |
||||
</div> |
||||
</el-form-item> |
||||
<el-form-item |
||||
label="提醒内容" |
||||
prop="alarmContent" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请输入提醒内容', |
||||
trigger: ['blur'], |
||||
}" |
||||
> |
||||
<el-input |
||||
type="textarea" |
||||
v-model="formData.alarmContent" |
||||
:autosize="{ minRows: 6 }" |
||||
:rules="{ |
||||
message: '请填写提醒内容', |
||||
trigger: ['blur'], |
||||
}" |
||||
/> |
||||
</el-form-item> |
||||
<el-form-item |
||||
label="是否要求回复" |
||||
prop="requestReply" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请选择是否要求回复', |
||||
trigger: ['blur'], |
||||
}" |
||||
> |
||||
<el-switch |
||||
v-model="formData.requestReply" |
||||
inline-prompt |
||||
active-text="必须回复" |
||||
inactive-text="无需回复" |
||||
:active-value="true" |
||||
:inactive-value="false" |
||||
/> |
||||
</el-form-item> |
||||
<el-form-item |
||||
label="时限设置" |
||||
prop="replyLimit" |
||||
:rules="{ |
||||
required: true, |
||||
message: '请选择时限设置', |
||||
}" |
||||
v-if="formData.requestReply === true" |
||||
> |
||||
<div class="flex gap"> |
||||
<el-input |
||||
style="width: 100px" |
||||
type="number" |
||||
v-model="formData.replyLimit" |
||||
/><span>工作日</span> |
||||
</div> |
||||
</el-form-item> |
||||
</el-form> |
||||
<footer class="flex end"> |
||||
<el-button @click="showNotification = false" size="large" |
||||
>取消</el-button |
||||
> |
||||
<el-button type="primary" @click="handleNotification" size="large" |
||||
>提交 |
||||
</el-button> |
||||
</footer> |
||||
</el-dialog> |
||||
</template> |
||||
<script setup> |
||||
import feedback from "~/utils/feedback"; |
||||
import { alarmNotificationCommit } from "~/api/work/alarm"; |
||||
|
||||
const props = defineProps({ |
||||
show: { |
||||
type: Boolean, |
||||
default: false, |
||||
}, |
||||
departId: { |
||||
type: String, |
||||
}, |
||||
}); |
||||
|
||||
const emit = defineEmits(["close"]); |
||||
|
||||
let formData = ref({ |
||||
requestReply: true, |
||||
replyLimit: 3 |
||||
}); |
||||
const formRef = ref(); |
||||
onMounted(() => { |
||||
formData.value.notificationDepartId = props.departId; |
||||
}); |
||||
|
||||
watch( |
||||
() => props.departId, |
||||
() => { |
||||
formData.value.notificationDepartId = props.departId; |
||||
} |
||||
); |
||||
|
||||
const handleNotification = async () => { |
||||
await formRef.value.validate(); |
||||
await alarmNotificationCommit(formData.value); |
||||
feedback.msgSuccess("提醒成功!"); |
||||
emit("close"); |
||||
formData.value = { |
||||
requestReply: true, |
||||
replyLimit: 3 |
||||
}; |
||||
}; |
||||
</script> |
||||
<style lang="scss" scoped> |
||||
</style> |
||||
Loading…
Reference in new issue