message-add-or-update.vue 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. <template>
  2. <el-dialog :title="!dataForm.id ? '新增' : '修改'"
  3. :close-on-click-modal="false"
  4. :visible.sync="visible">
  5. <el-form :model="dataForm"
  6. :rules="dataRule"
  7. ref="dataForm"
  8. @keyup.enter.native="dataFormSubmit()"
  9. label-width="80px">
  10. <el-form-item label="创建时间"
  11. prop="createTime">
  12. <el-date-picker v-model="dataForm.createTime"
  13. type="datetime"
  14. placeholder="选择日期"
  15. value-format="yyyy-MM-dd HH:mm:ss"></el-date-picker>
  16. </el-form-item>
  17. <el-form-item label="姓名"
  18. prop="userName">
  19. <el-input v-model="dataForm.userName"
  20. placeholder="姓名"></el-input>
  21. </el-form-item>
  22. <el-form-item label="邮箱"
  23. prop="email">
  24. <el-input v-model="dataForm.email"
  25. placeholder="邮箱"></el-input>
  26. </el-form-item>
  27. <el-form-item label="联系方式"
  28. prop="contact">
  29. <el-input v-model="dataForm.contact"
  30. placeholder="联系方式"></el-input>
  31. </el-form-item>
  32. <el-form-item label="留言内容"
  33. prop="content">
  34. <tiny-mce v-model="dataForm.content"
  35. ref="content"></tiny-mce>
  36. </el-form-item>
  37. <el-form-item label="留言回复"
  38. prop="reply">
  39. <tiny-mce v-model="dataForm.reply"
  40. ref="reply"></tiny-mce>
  41. </el-form-item>
  42. <el-form-item label="状态"
  43. size="mini"
  44. prop="status">
  45. <el-radio-group v-model="dataForm.status">
  46. <el-radio :label="0">未审核</el-radio>
  47. <el-radio :label="1">审核通过</el-radio>
  48. </el-radio-group>
  49. </el-form-item>
  50. </el-form>
  51. <span slot="footer"
  52. class="dialog-footer">
  53. <el-button @click="visible = false">取消</el-button>
  54. <el-button type="primary"
  55. @click="dataFormSubmit()">确定</el-button>
  56. </span>
  57. </el-dialog>
  58. </template>
  59. <script>
  60. import { isEmail } from '@/utils/validate'
  61. import TinyMce from '@/components/tiny-mce'
  62. export default {
  63. data () {
  64. var validateEmail = (rule, value, callback) => {
  65. if (!isEmail(value)) {
  66. callback(new Error('邮箱格式错误'))
  67. } else {
  68. callback()
  69. }
  70. }
  71. return {
  72. visible: false,
  73. dataForm: {
  74. id: 0,
  75. createTime: '',
  76. userName: '',
  77. email: '',
  78. contact: '',
  79. content: '',
  80. reply: '',
  81. status: 0
  82. },
  83. page: {
  84. total: 0, // 总页数
  85. currentPage: 1, // 当前页数
  86. pageSize: 10 // 每页显示多少条
  87. },
  88. dataRule: {
  89. userMail: [
  90. { required: true, message: '邮箱不能为空', trigger: 'blur' },
  91. { validator: validateEmail, trigger: 'blur' }
  92. ]
  93. }
  94. }
  95. },
  96. components: {
  97. TinyMce
  98. },
  99. methods: {
  100. init (id) {
  101. this.dataForm.id = id || 0
  102. this.visible = true
  103. this.$nextTick(() => {
  104. this.$refs.dataForm.resetFields()
  105. this.$refs.content.setContent('')
  106. this.$refs.reply.setContent('')
  107. })
  108. if (this.dataForm.id) {
  109. this.$http({
  110. url: this.$http.adornUrl(`/admin/message/info/${this.dataForm.id}`),
  111. method: 'get',
  112. params: this.$http.adornParams()
  113. }).then(({ data }) => {
  114. this.dataForm = data
  115. this.$refs.content.setContent(data.content)
  116. this.$refs.reply.setContent(data.reply)
  117. })
  118. }
  119. },
  120. // 表单提交
  121. dataFormSubmit () {
  122. this.$refs['dataForm'].validate(valid => {
  123. if (valid) {
  124. this.$http({
  125. url: this.$http.adornUrl(`/admin/message`),
  126. method: this.dataForm.id ? 'put' : 'post',
  127. data: this.$http.adornData({
  128. id: this.dataForm.id || undefined,
  129. createTime: this.dataForm.createTime,
  130. userName: this.dataForm.userName,
  131. email: this.dataForm.email,
  132. contact: this.dataForm.contact,
  133. content: this.dataForm.content,
  134. reply: this.dataForm.reply,
  135. status: this.dataForm.status
  136. })
  137. }).then(({ data }) => {
  138. this.$message({
  139. message: '操作成功',
  140. type: 'success',
  141. duration: 1500,
  142. onClose: () => {
  143. this.visible = false
  144. this.$emit('refreshDataList', this.page)
  145. }
  146. })
  147. })
  148. }
  149. })
  150. }
  151. }
  152. }
  153. </script>