com-mail-setting.php 8.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. <style>
  2. .form-body {
  3. padding: 20px;
  4. padding-right: 50%;
  5. background-color: #fff;
  6. margin-bottom: 20px;
  7. }
  8. .form-button {
  9. margin: 0 !important;
  10. }
  11. .form-button .el-form-item__content {
  12. margin-left: 0 !important;
  13. }
  14. .button-item {
  15. padding: 9px 25px;
  16. }
  17. </style>
  18. <template id="com-mail-setting">
  19. <el-card shadow="never" style="border:0" body-style="background-color: #f3f3f3;padding: 10px 0 0;" v-cloak
  20. v-loading="listLoading">
  21. <el-form size="small" :model="ruleForm" ref="ruleForm" :rules="rules" label-width="150px">
  22. <div class="form-body">
  23. <el-form-item label="邮件提醒" prop="status">
  24. <el-switch
  25. v-model="ruleForm.status"
  26. :active-value="1"
  27. :inactive-value="0"
  28. active-color="#409EFF">
  29. </el-switch>
  30. </el-form-item>
  31. <template v-if="ruleForm.status == 1">
  32. <el-form-item label="发送平台" prop="status">
  33. <span>QQ邮箱</span>
  34. </el-form-item>
  35. <el-form-item v-if="ruleForm.status == 1" label="发件人邮箱" prop="send_mail">
  36. <el-input v-model="ruleForm.send_mail"></el-input>
  37. </el-form-item>
  38. <el-form-item label="授权码" prop="send_pwd">
  39. <el-input @focus="updateHideStatus"
  40. v-if="hide"
  41. readonly
  42. placeholder="授权码 被隐藏,点击查看">
  43. </el-input>
  44. <el-input v-else v-model="ruleForm.send_pwd"></el-input>
  45. <div class="fs-sm">
  46. <el-button @click="goto" type="text" style="color: #92959B">什么是授权码<i
  47. class="el-icon-question"></i></el-button>
  48. </div>
  49. </el-form-item>
  50. <el-form-item label="发件平台名称" prop="send_name">
  51. <el-input v-model="ruleForm.send_name"></el-input>
  52. </el-form-item>
  53. <el-form-item>
  54. <template slot="label">
  55. <span>收件人邮箱</span>
  56. <el-tooltip effect="dark" content="请输入邮箱后,按回车键"
  57. placement="top">
  58. <i class="el-icon-info"></i>
  59. </el-tooltip>
  60. </template>
  61. <el-tag v-if="ruleForm.receive_mail.length"
  62. style="margin-right: 5px;"
  63. v-for="(item, index) in ruleForm.receive_mail"
  64. @close="deleteMail(index)"
  65. :key="item.id"
  66. closable>
  67. {{item}}
  68. </el-tag>
  69. <el-input style="width: 200px"
  70. @keyup.enter.native="addMail"
  71. v-model="mail"
  72. placeholder="请输入邮箱后,按回车键">
  73. </el-input>
  74. </el-form-item>
  75. <el-form-item label="" prop="receive_mail">
  76. <el-button size="small" @click="testSubmit('ruleForm')"
  77. :loading="testLoading">测试发送
  78. </el-button>
  79. </el-form-item>
  80. </template>
  81. </div>
  82. <el-form-item class="form-button">
  83. <el-button sizi="mini" class="button-item" :loading="submitLoading" type="primary"
  84. @click="onSubmit('ruleForm')">
  85. 保存
  86. </el-button>
  87. </el-form-item>
  88. </el-form>
  89. </el-card>
  90. </template>
  91. <script>
  92. Vue.component('com-mail-setting', {
  93. template: '#com-mail-setting',
  94. data() {
  95. let validator = (rule, value, callback) => {
  96. if (this.ruleForm.status == 1) {
  97. if (value == '') {
  98. callback(new Error('请输入发件人邮箱'));
  99. } else {
  100. callback();
  101. }
  102. } else {
  103. callback();
  104. }
  105. };
  106. return {
  107. ruleForm: {
  108. status: 0,
  109. send_mail: '',
  110. send_pwd: '',
  111. send_name: '',
  112. receive_mail: [],
  113. test: 0
  114. },
  115. mail: '',
  116. testLoading: false,
  117. submitLoading: false,
  118. listLoading: false,
  119. rules: {
  120. send_mail: [
  121. {
  122. validator: validator, trigger: 'blur', message: '请输入发件人邮箱'
  123. }
  124. ],
  125. send_pwd: [
  126. {
  127. validator: validator, trigger: 'blur', message: '请输入授权码'
  128. }
  129. ],
  130. send_name: [
  131. {
  132. validator: validator, trigger: 'blur', message: '请输入发件平台名称'
  133. }
  134. ]
  135. },
  136. hide: true
  137. }
  138. },
  139. mounted: function () {
  140. this.load();
  141. },
  142. methods: {
  143. load() {
  144. this.listLoading = true;
  145. request({
  146. params: {
  147. r: 'mall/setting/mail'
  148. },
  149. method: 'get'
  150. }).then(e => {
  151. this.listLoading = false;
  152. this.ruleForm = e.data.data.model;
  153. }).catch(e => {
  154. this.listLoading = false;
  155. this.$message.error(e.data.msg);
  156. });
  157. },
  158. onSubmit(formName) {
  159. this.ruleForm.test = 0;
  160. this.submitLoading = true;
  161. this.submit(formName);
  162. },
  163. updateHideStatus() {
  164. this.hide = false;
  165. },
  166. goto() {
  167. navigateTo('https://service.mail.qq.com/cgi-bin/help?subtype=1&&no=1001256&&id=28', true);
  168. },
  169. testSubmit(formName) {
  170. this.ruleForm.test = 1;
  171. this.testLoading = true;
  172. this.submit(formName)
  173. },
  174. submit(formName) {
  175. this.$refs[formName].validate((valid) => {
  176. if (valid) {
  177. request({
  178. params: {
  179. r: 'mall/setting/mail'
  180. },
  181. method: 'post',
  182. data: {
  183. form: this.ruleForm
  184. }
  185. }).then(e => {
  186. this.submitLoading = false;
  187. this.testLoading = false;
  188. if (e.data.code == 0) {
  189. this.$message.success(e.data.msg);
  190. } else {
  191. this.$message.error(e.data.msg);
  192. }
  193. }).catch(e => {
  194. this.submitLoading = false;
  195. this.testLoading = false;
  196. this.$message.error(e.data.msg);
  197. });
  198. } else {
  199. console.log('error submit!!');
  200. this.submitLoading = false;
  201. return false;
  202. }
  203. })
  204. },
  205. addMail() {
  206. if (this.mail) {
  207. let flag = true;
  208. if (this.ruleForm.receive_mail) {
  209. this.ruleForm.receive_mail.forEach((item, index) => {
  210. if (this.mail === item) {
  211. flag = false;
  212. return;
  213. }
  214. })
  215. }
  216. if (flag) {
  217. this.ruleForm.receive_mail.push(this.mail);
  218. this.mail = '';
  219. }
  220. }
  221. },
  222. deleteMail(index) {
  223. this.ruleForm.receive_mail.splice(index, 1);
  224. }
  225. }
  226. });
  227. </script>