176 lines
4.9 KiB
Vue
176 lines
4.9 KiB
Vue
<template>
|
|
<div class="card-box">
|
|
<el-steps class="steps" :active="display">
|
|
<el-step title="系统通知" icon="el-icon-edit-outline" />
|
|
<el-step title="" icon="el-icon-upload" />
|
|
</el-steps>
|
|
<div class="joylink-card forms">
|
|
<div style="height: 100%; padding-top: 40px; overflow-y: auto; position: relative;">
|
|
<el-form ref="form" :model="messageModel" :rules="rules" label-width="200px">
|
|
<el-form-item label="消息类型:" prop="type">
|
|
<el-select v-model="messageModel.type" placeholder="请选择" style="width: 220px;">
|
|
<el-option
|
|
v-for="item in typeList"
|
|
:key="item.value"
|
|
:label="item.label"
|
|
:value="item.label"
|
|
/>
|
|
</el-select>
|
|
</el-form-item>
|
|
<el-form-item label="内容主题:" prop="subject">
|
|
<el-input v-model="messageModel.subject" style="width: 450px" /></el-form-item>
|
|
<el-form-item label="内容:" prop="content">
|
|
<el-input
|
|
v-model="messageModel.content"
|
|
style="width: 450px"
|
|
type="textarea"
|
|
maxlength="450"
|
|
show-word-limit
|
|
:autosize="{ minRows: 4, maxRows: 12}"
|
|
/>
|
|
</el-form-item>
|
|
<el-form-item label="通知选择:" prop="noticeType">
|
|
<el-radio-group v-model="messageModel.noticeType">
|
|
<el-radio v-for="(item, index) in regionList" :key="index" :label="item.value">{{ item.label }}</el-radio>
|
|
</el-radio-group>
|
|
</el-form-item>
|
|
</el-form>
|
|
</div>
|
|
</div>
|
|
<div class="draft">
|
|
<el-button type="primary" @click="pushNotification">发布</el-button>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
|
|
<script>
|
|
import { pushSysNotice } from '@/api/pushMessage';
|
|
|
|
export default {
|
|
name: 'News',
|
|
data() {
|
|
return {
|
|
display: 1,
|
|
regionList: [
|
|
{label: '邮件通知', value: '01'}
|
|
// {label: '短信通知', value: '02'}
|
|
],
|
|
typeList: [],
|
|
messageModel: {
|
|
type: '',
|
|
subject: '',
|
|
content: '',
|
|
noticeType: '01'
|
|
},
|
|
rules: {
|
|
type: [
|
|
{ required: true, message: '请选择消息类型', trigger: 'change'}
|
|
],
|
|
subject: [
|
|
{ required: true, message: this.$t('rules.enterTheNewsTitle'), trigger: 'blur'}
|
|
],
|
|
content:[
|
|
{ required: true, message: this.$t('rules.enterTheNewsContent'), trigger: 'blur' }
|
|
],
|
|
noticeType: [
|
|
{ required: true, message: this.$t('rules.chooseNewsCanBeClosed'), trigger: 'change' }
|
|
]
|
|
}
|
|
};
|
|
},
|
|
mounted() {
|
|
this.typeList = [];
|
|
this.$Dictionary.noticeList().then(list => {
|
|
this.typeList = list.map(elem => { return { value: elem.code, label: elem.name }; });
|
|
console.log(this.typeList);
|
|
});
|
|
},
|
|
methods: {
|
|
pushNotification() {
|
|
this.$refs['form'].validate((valid) => {
|
|
if (valid) {
|
|
pushSysNotice(this.messageModel).then(resp => {
|
|
this.$message.success('推送成功');
|
|
this.$refs.form.resetFields();
|
|
}).catch(() => {
|
|
this.$messageBox('推送失败');
|
|
});
|
|
} else {
|
|
return false;
|
|
}
|
|
});
|
|
}
|
|
}
|
|
};
|
|
</script>
|
|
<style rel="stylesheet/scss" lang="scss" scoped>
|
|
@import "src/styles/mixin.scss";
|
|
|
|
.card-box {
|
|
padding-top: 20px;
|
|
height: 100%;
|
|
margin: 0 auto;
|
|
}
|
|
|
|
.steps {
|
|
width: 980px;
|
|
margin: 0 auto;
|
|
|
|
/deep/ {
|
|
.el-step__icon.is-icon {
|
|
width: 95px;
|
|
}
|
|
}
|
|
}
|
|
|
|
.online_box {
|
|
position: absolute;
|
|
left: 20px;
|
|
top: 18px;
|
|
}
|
|
|
|
.forms {
|
|
width: 800px;
|
|
margin: 0 auto;
|
|
margin-top: 10px;
|
|
height: calc(100% - 150px);
|
|
|
|
/deep/ {
|
|
.el-select {
|
|
float: left;
|
|
width: calc(600px);
|
|
}
|
|
|
|
.el-textarea {
|
|
float: left;
|
|
width: calc(600px);
|
|
}
|
|
|
|
.el-form-item__content>.el-input {
|
|
float: left;
|
|
width: calc(600px);
|
|
}
|
|
|
|
.el-input-number {
|
|
float: left;
|
|
width: calc(250px);
|
|
}
|
|
.el-textarea .el-input__count {
|
|
color: #909399;
|
|
position: absolute;
|
|
font-size: 12px;
|
|
bottom: -10px;
|
|
right: 7px;
|
|
background: transparent;
|
|
}
|
|
}
|
|
}
|
|
|
|
.draft {
|
|
width: 300px;
|
|
text-align: center;
|
|
margin: 20px auto;
|
|
}
|
|
</style>
|
|
|