2c358fbea1d1a6eba0c693c5b974e162f785543d.svn-base 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. <template>
  2. <a-drawer
  3. :title="title"
  4. :maskClosable="true"
  5. width=650
  6. placement="right"
  7. :closable="true"
  8. @close="close"
  9. :visible="visible"
  10. style="overflow: auto;padding-bottom: 53px;">
  11. <a-spin :spinning="confirmLoading">
  12. <a-form :form="form">
  13. <a-form-item
  14. :labelCol="labelCol"
  15. :wrapperCol="wrapperCol"
  16. label="消息标题">
  17. <a-input placeholder="请输入消息标题" v-decorator="['esTitle', {}]"/>
  18. </a-form-item>
  19. <a-form-item
  20. :labelCol="labelCol"
  21. :wrapperCol="wrapperCol"
  22. label="发送内容">
  23. <a-input placeholder="请输入发送内容" v-decorator="['esContent', {}]"/>
  24. </a-form-item>
  25. <a-form-item
  26. :labelCol="labelCol"
  27. :wrapperCol="wrapperCol"
  28. label="发送所需参数">
  29. <a-input placeholder="请输入发送所需参数Json格式" v-decorator="['esParam', {}]"/>
  30. </a-form-item>
  31. <a-form-item
  32. :labelCol="labelCol"
  33. :wrapperCol="wrapperCol"
  34. label="接收人">
  35. <a-input placeholder="请输入接收人" v-decorator="['esReceiver', {}]"/>
  36. </a-form-item>
  37. <a-form-item
  38. :labelCol="labelCol"
  39. :wrapperCol="wrapperCol"
  40. label="发送方式">
  41. <j-dict-select-tag :triggerChange="true" dictCode="msgType" v-decorator="[ 'esType', {}]" placeholder="请选择发送方式">
  42. </j-dict-select-tag>
  43. </a-form-item>
  44. <a-form-item
  45. :labelCol="labelCol"
  46. :wrapperCol="wrapperCol"
  47. label="发送时间">
  48. <a-date-picker showTime format='YYYY-MM-DD HH:mm:ss' v-decorator="[ 'esSendTime', {}]"/>
  49. </a-form-item>
  50. <a-form-item
  51. :labelCol="labelCol"
  52. :wrapperCol="wrapperCol"
  53. label="发送状态">
  54. <j-dict-select-tag :triggerChange="true" dictCode="msgSendStatus" v-decorator="[ 'esSendStatus', {}]" placeholder="请选择发送状态">
  55. </j-dict-select-tag>
  56. </a-form-item>
  57. <a-form-item
  58. :labelCol="labelCol"
  59. :wrapperCol="wrapperCol"
  60. label="发送次数">
  61. <a-input v-decorator="[ 'esSendNum', {}]"/>
  62. </a-form-item>
  63. <a-form-item
  64. :labelCol="labelCol"
  65. :wrapperCol="wrapperCol"
  66. label="发送失败原因">
  67. <a-input v-decorator="['esResult', {}]"/>
  68. </a-form-item>
  69. <a-form-item
  70. :labelCol="labelCol"
  71. :wrapperCol="wrapperCol"
  72. label="备注">
  73. <a-input v-decorator="['remark', {}]"/>
  74. </a-form-item>
  75. </a-form>
  76. </a-spin>
  77. <div v-show="!disableSubmit">
  78. <a-button style="margin-right: .8rem" @confirm="handleCancel">取消</a-button>
  79. <a-button @click="handleOk" type="primary" :loading="confirmLoading">提交</a-button>
  80. </div>
  81. </a-drawer>
  82. </template>
  83. <script>
  84. import {httpAction} from '@/api/manage'
  85. import pick from 'lodash.pick'
  86. import moment from "moment"
  87. export default {
  88. name: "SysMessageModal",
  89. data() {
  90. return {
  91. title: "操作",
  92. visible: false,
  93. model: {},
  94. labelCol: {
  95. xs: {span: 24},
  96. sm: {span: 5},
  97. },
  98. wrapperCol: {
  99. xs: {span: 24},
  100. sm: {span: 16},
  101. },
  102. confirmLoading: false,
  103. form: this.$form.createForm(this),
  104. validatorRules: {},
  105. disableSubmit: true,
  106. url: {
  107. add: "/sys/message/sysMessage/add",
  108. edit: "/sys/message/sysMessage/edit",
  109. },
  110. }
  111. },
  112. created() {
  113. },
  114. methods: {
  115. add() {
  116. this.edit({});
  117. },
  118. edit(record) {
  119. this.form.resetFields();
  120. this.model = Object.assign({}, record);
  121. this.visible = true;
  122. this.$nextTick(() => {
  123. this.form.setFieldsValue(pick(this.model, 'esContent', 'esParam', 'esReceiver', 'esResult', 'esSendNum', 'esSendStatus', 'esTitle', 'esType', 'remark'))
  124. //时间格式化
  125. this.form.setFieldsValue({esSendTime: this.model.esSendTime ? moment(this.model.esSendTime) : null})
  126. });
  127. },
  128. close() {
  129. this.$emit('close');
  130. this.visible = false;
  131. },
  132. handleOk() {
  133. const that = this;
  134. // 触发表单验证
  135. this.form.validateFields((err, values) => {
  136. if (!err) {
  137. that.confirmLoading = true;
  138. let httpurl = '';
  139. let method = '';
  140. if (!this.model.id) {
  141. httpurl += this.url.add;
  142. method = 'post';
  143. } else {
  144. httpurl += this.url.edit;
  145. //method = 'put';
  146. method = 'post';
  147. }
  148. let formData = Object.assign(this.model, values);
  149. //时间格式化
  150. formData.esSendTime = formData.esSendTime ? formData.esSendTime.format('YYYY-MM-DD HH:mm:ss') : null;
  151. console.log(formData)
  152. httpAction(httpurl, formData, method).then((res) => {
  153. if (res.success) {
  154. that.$message.success(res.message);
  155. that.$emit('ok');
  156. } else {
  157. that.$message.warning(res.message);
  158. }
  159. }).finally(() => {
  160. that.confirmLoading = false;
  161. that.close();
  162. })
  163. }
  164. })
  165. },
  166. handleCancel() {
  167. this.close()
  168. },
  169. }
  170. }
  171. </script>
  172. <style scoped>
  173. </style>