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