eidtPostMsg.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219
  1. <template>
  2. <div>
  3. <el-dialog
  4. width="500px"
  5. title="消息发送"
  6. :visible.sync="lookVisible"
  7. :before-close="onClose"
  8. >
  9. <el-form :model="formes" label-width="120px" ref="eidtPostMsg">
  10. <el-form-item
  11. label="发送方式"
  12. :rules="[{ required: true, message: '请选择发送方式' }]"
  13. prop="postType"
  14. >
  15. <el-radio-group
  16. v-model="formes.postType"
  17. @change="
  18. () => {
  19. formes.sendTime = '';
  20. }
  21. "
  22. >
  23. <el-radio label="0">即时发送</el-radio>
  24. <el-radio label="1">定时发送</el-radio>
  25. </el-radio-group>
  26. </el-form-item>
  27. <el-form-item
  28. label="发送时间"
  29. v-if="formes.postType == '1'"
  30. :rules="[{ required: true, message: '请选择发送时间' }]"
  31. prop="sendTime"
  32. >
  33. <el-date-picker
  34. v-model="formes.sendTime"
  35. type="datetime"
  36. placeholder="请选择发送时间"
  37. format="yyyy-MM-dd HH:mm:ss"
  38. value-format="yyyy-MM-dd HH:mm:ss"
  39. :picker-options="payDate()"
  40. >
  41. </el-date-picker>
  42. </el-form-item>
  43. <el-form-item
  44. label="发送内容"
  45. :rules="[{ required: true, message: '请输入发送内容' }]"
  46. prop="messageContent"
  47. >
  48. <el-input
  49. class="w100"
  50. v-model="formes.messageContent"
  51. type="textarea"
  52. :rows="3"
  53. ></el-input>
  54. </el-form-item>
  55. <el-form-item label="消息类型" prop="messageType">
  56. <el-radio-group
  57. v-model="formes.messageType"
  58. @change="
  59. () => {
  60. formes.fileUrl = '';
  61. formes.fileName = '';
  62. formes.fileSize = 0;
  63. }
  64. "
  65. >
  66. <el-radio label="IMG">图片消息</el-radio>
  67. <el-radio label="FILE">文件消息</el-radio>
  68. </el-radio-group>
  69. </el-form-item>
  70. <el-form-item
  71. label="附件(图片)"
  72. prop="fileUrl"
  73. v-if="formes.messageType === 'IMG'"
  74. :rules="[{ required: true, message: '请上传图片' }]"
  75. >
  76. <singe-file-upload
  77. tips="仅支持上传 PNG/JPG"
  78. accept=".png, .jpg"
  79. v-model="formes.fileUrl"
  80. @success="onFileSuccess"
  81. />
  82. </el-form-item>
  83. <el-form-item
  84. label="附件(PDF)"
  85. prop="fileUrl"
  86. v-if="formes.messageType === 'FILE'"
  87. :rules="[{ required: true, message: '请上传文件' }]"
  88. >
  89. <singe-file-upload
  90. tips="仅支持上传PDF文件"
  91. accept=".pdf"
  92. v-model="formes.fileUrl"
  93. @success="onFileSuccess"
  94. />
  95. </el-form-item>
  96. </el-form>
  97. <div slot="footer" class="dialog-footer">
  98. <el-button @click="onClose">取 消</el-button>
  99. <el-button type="primary" @click="submitMsg">确 定</el-button>
  100. </div>
  101. </el-dialog>
  102. </div>
  103. </template>
  104. <script>
  105. import { sendGroupMsg, resetGroupMessageList } from "../api";
  106. export default {
  107. name: "eidtPostMsg",
  108. data() {
  109. return {
  110. formes: {
  111. id: "",
  112. postType: "0",
  113. sendTime: "",
  114. messageContent: "",
  115. messageType: "TXT",
  116. fileName: "",
  117. fileSize: 0
  118. },
  119. lookVisible: false,
  120. chioseIdList: null,
  121. activeRow: null,
  122. type: ""
  123. };
  124. },
  125. mounted() {
  126. this.init();
  127. },
  128. methods: {
  129. init() {},
  130. openDioag(chioseIdList, type) {
  131. this.chioseIdList = chioseIdList;
  132. this.type = type;
  133. this.lookVisible = true;
  134. },
  135. openResetDioag(row, type) {
  136. if (row.sendTime) {
  137. row.postType = "1";
  138. }
  139. this.activeRow = row;
  140. this.type = type;
  141. this.formes = { ...row };
  142. this.lookVisible = true;
  143. },
  144. onClose() {
  145. this.formes = {
  146. id: "",
  147. postType: "0",
  148. sendTime: "",
  149. messageContent: "",
  150. messageType: "",
  151. fileName: "",
  152. fileSize: 0
  153. };
  154. this.$refs["eidtPostMsg"].resetFields();
  155. this.lookVisible = false;
  156. },
  157. submitMsg() {
  158. this.$refs.eidtPostMsg.validate(async flag => {
  159. if (flag) {
  160. try {
  161. if (this.activeRow && this.activeRow.id) {
  162. let obj = { ...this.formes };
  163. console.log(this.type, "type");
  164. if (this.type) {
  165. obj.isIncludeSender = 0;
  166. }
  167. const res = await resetGroupMessageList({ ...obj });
  168. this.$message.success("修改成功");
  169. this.$emit("clear");
  170. this.onClose();
  171. } else {
  172. let idList = this.chioseIdList
  173. .map(group => {
  174. return group.id;
  175. })
  176. .join(",");
  177. let obj = { ...this.formes, targetIds: idList };
  178. if (this.type) {
  179. obj.isIncludeSender = 0;
  180. }
  181. const res = await sendGroupMsg({ ...obj });
  182. this.$message.success("发送成功");
  183. this.$emit("clear");
  184. this.onClose();
  185. }
  186. } catch (e) {
  187. console.log(e);
  188. }
  189. }
  190. });
  191. },
  192. // getName(val) {
  193. // this.formes.fileName = val.data.name;
  194. // console.log(val, "fileName");
  195. // },
  196. onFileSuccess(val) {
  197. this.formes.fileName = val.fileName;
  198. this.formes.fileSize = val.fileSize;
  199. },
  200. payDate() {
  201. let self = this;
  202. return {
  203. firstDayOfWeek: 1,
  204. disabledDate(time) {
  205. return time.getTime() + 86400000 < new Date().getTime();
  206. }
  207. };
  208. }
  209. }
  210. };
  211. </script>
  212. <style lang="scss" scoped>
  213. .w100 {
  214. width: 100%;
  215. }
  216. </style>