|
|
@@ -0,0 +1,186 @@
|
|
|
+<template>
|
|
|
+ <el-dialog :title="title" :visible.sync="dialogFormVisible" @close="close">
|
|
|
+ <el-form ref="form" label-width="80px" :model="form" :rules="rules">
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="消息标题" prop="msgTitle">
|
|
|
+ <el-input v-model="form.msgTitle" placeholder="请输入消息标题" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="消息类别" prop="msgType">
|
|
|
+ <el-select v-model="form.msgType" placeholder="请选择消息类别">
|
|
|
+ <el-option v-for="dict in msgTypeOptions" :key="dict.key" :label="dict.value" :value="dict.key" />
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="接收用户" prop="recvUser">
|
|
|
+ <el-input v-model="form.recvUser" readonly @focus="handleSelectSale" />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="状态" prop="msgStatus">
|
|
|
+ <el-radio-group v-model="form.msgStatus">
|
|
|
+ <el-radio v-for="dict in msgStatusOptions" :key="dict.key" :label="dict.key">
|
|
|
+ {{ dict.value }}
|
|
|
+ </el-radio>
|
|
|
+ </el-radio-group>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="内容">
|
|
|
+ <div style="border: 1px solid #ccc">
|
|
|
+ <Toolbar
|
|
|
+ :default-config="toolbarConfig"
|
|
|
+ :editor="editor"
|
|
|
+ :mode="mode"
|
|
|
+ style="border-bottom: 1px solid #ccc" />
|
|
|
+ <Editor
|
|
|
+ v-model="form.msgContent"
|
|
|
+ :default-config="editorConfig"
|
|
|
+ style="height: 250px; overflow-y: hidden"
|
|
|
+ @onCreated="onCreated" />
|
|
|
+ </div>
|
|
|
+ <!-- <el-input-->
|
|
|
+ <!-- v-model="form.msgContent"-->
|
|
|
+ <!-- maxlength="300"-->
|
|
|
+ <!-- placeholder="请输入内容"-->
|
|
|
+ <!-- rows="5"-->
|
|
|
+ <!-- show-word-limit-->
|
|
|
+ <!-- type="textarea" />-->
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <!-- <el-col :span="24">-->
|
|
|
+ <!-- <el-form-item label="备注">-->
|
|
|
+ <!-- <el-input-->
|
|
|
+ <!-- v-model="form.remark"-->
|
|
|
+ <!-- maxlength="300"-->
|
|
|
+ <!-- placeholder="请输入备注"-->
|
|
|
+ <!-- rows="3"-->
|
|
|
+ <!-- show-word-limit-->
|
|
|
+ <!-- type="textarea" />-->
|
|
|
+ <!-- </el-form-item>-->
|
|
|
+ <!-- </el-col>-->
|
|
|
+ </el-row>
|
|
|
+ </el-form>
|
|
|
+
|
|
|
+ <div slot="footer" class="dialog-footer">
|
|
|
+ <el-button @click="close">取 消</el-button>
|
|
|
+ <el-button type="primary" @click="save">确 定</el-button>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <!-- 选择销售工程师弹窗 -->
|
|
|
+ <select-user ref="selectSales" multiple @save="selectSales" />
|
|
|
+ </el-dialog>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+ import messageApi from '@/api/system/message'
|
|
|
+ import SelectUser from '@/components/select/SelectUser.vue'
|
|
|
+ import { Editor, Toolbar } from '@wangeditor/editor-for-vue'
|
|
|
+
|
|
|
+ export default {
|
|
|
+ name: 'NoticeEdit',
|
|
|
+ components: {
|
|
|
+ SelectUser,
|
|
|
+ Editor,
|
|
|
+ Toolbar,
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ form: {
|
|
|
+ recvUserIds: undefined,
|
|
|
+ recvUser: undefined,
|
|
|
+ msgStatus: '10',
|
|
|
+ },
|
|
|
+ rules: {
|
|
|
+ msgTitle: [{ required: true, message: '不能为空', trigger: 'blur' }],
|
|
|
+ msgType: [{ required: true, message: '不能为空', trigger: 'blur' }],
|
|
|
+ msgStatus: [{ required: true, message: '不能为空', trigger: 'blur' }],
|
|
|
+ msgContent: [{ required: true, message: '不能为空', trigger: 'blur' }],
|
|
|
+ },
|
|
|
+ title: '',
|
|
|
+ dialogFormVisible: false,
|
|
|
+ msgTypeOptions: [],
|
|
|
+ msgStatusOptions: [],
|
|
|
+
|
|
|
+ // wangeditor
|
|
|
+ editor: null,
|
|
|
+ toolbarConfig: {},
|
|
|
+ editorConfig: { placeholder: '请输入内容...' },
|
|
|
+ mode: 'default', // or 'simple'
|
|
|
+ }
|
|
|
+ },
|
|
|
+ created() {},
|
|
|
+ beforeDestroy() {
|
|
|
+ const editor = this.editor
|
|
|
+ if (editor == null) return
|
|
|
+ editor.destroy() // 组件销毁时,及时销毁编辑器
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ onCreated(editor) {
|
|
|
+ this.editor = Object.seal(editor) // 一定要用 Object.seal() ,否则会报错
|
|
|
+ },
|
|
|
+ handleSelectSale() {
|
|
|
+ this.$refs.selectSales.open()
|
|
|
+ },
|
|
|
+ selectSales(val) {
|
|
|
+ if (val && val.length > 0) {
|
|
|
+ this.form.recvUserIds = val.map((item) => item.id).join()
|
|
|
+ this.form.recvUser = val.map((item) => item.nickName).join()
|
|
|
+ console.log(this.form.recvUser)
|
|
|
+ }
|
|
|
+ },
|
|
|
+ getOptions() {
|
|
|
+ this.getDicts('sys_msg_type').then((response) => {
|
|
|
+ this.msgTypeOptions = response.data.values || []
|
|
|
+ })
|
|
|
+ this.getDicts('sys_msg_status').then((response) => {
|
|
|
+ this.msgStatusOptions = response.data.values || []
|
|
|
+ })
|
|
|
+ },
|
|
|
+ showEdit(row) {
|
|
|
+ if (!row) {
|
|
|
+ this.title = '添加'
|
|
|
+ } else {
|
|
|
+ this.title = '编辑'
|
|
|
+ this.form = Object.assign(this.form, row)
|
|
|
+ }
|
|
|
+ this.dialogFormVisible = true
|
|
|
+ if (this.$parent.msgTypeOptions) {
|
|
|
+ this.msgTypeOptions = this.$parent.msgTypeOptions
|
|
|
+ }
|
|
|
+ if (this.$parent.msgStatusOptions) {
|
|
|
+ this.msgStatusOptions = this.$parent.msgStatusOptions
|
|
|
+ }
|
|
|
+ if (!this.msgTypeOptions) {
|
|
|
+ this.getOptions()
|
|
|
+ }
|
|
|
+ },
|
|
|
+ close() {
|
|
|
+ this.$refs['form'].resetFields()
|
|
|
+ this.form = this.$options.data().form
|
|
|
+ this.dialogFormVisible = false
|
|
|
+ },
|
|
|
+ save() {
|
|
|
+ this.$refs['form'].validate(async (valid) => {
|
|
|
+ if (valid) {
|
|
|
+ let data
|
|
|
+ if (this.form.id) {
|
|
|
+ data = await messageApi.doEdit(this.form)
|
|
|
+ } else {
|
|
|
+ data = await messageApi.doAdd(this.form)
|
|
|
+ }
|
|
|
+ this.$baseMessage(data.msg, 'success')
|
|
|
+ this.$emit('fetch-data')
|
|
|
+ this.close()
|
|
|
+ } else {
|
|
|
+ return false
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ },
|
|
|
+ }
|
|
|
+</script>
|
|
|
+<style src="@wangeditor/editor/dist/css/style.css"></style>
|