33f90406efe4eb125e8a36e301ecdd313d60ad26.svn-base 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224
  1. <template>
  2. <a-modal
  3. :title="title"
  4. :width="800"
  5. :visible="visible"
  6. :confirmLoading="confirmLoading"
  7. @ok="handleOk"
  8. @cancel="handleCancel"
  9. cancelText="关闭">
  10. <a-spin :spinning="confirmLoading">
  11. <a-form :form="form">
  12. <a-row :gutter="{ xs: 8, sm: 16, md: 24, lg: 32 }">
  13. <a-col :span="12">
  14. <a-form-item
  15. :labelCol="labelCol"
  16. :wrapperCol="wrapperCol"
  17. label="模板CODE"
  18. style="margin-right: -35px"
  19. >
  20. <a-input
  21. :disabled="disable"
  22. placeholder="请输入模板编码"
  23. v-decorator="['templateCode', validatorRules.templateCode ]"
  24. />
  25. </a-form-item>
  26. </a-col>
  27. <a-col :span="12">
  28. <a-form-item
  29. :labelCol="labelCol"
  30. :wrapperCol="wrapperCol"
  31. label="模板类型">
  32. <j-dict-select-tag @change="handleChangeTemplateType" :triggerChange="true" dictCode="msgType" v-decorator="['templateType', validatorRules.templateType ]" placeholder="请选择模板类型">
  33. </j-dict-select-tag>
  34. </a-form-item>
  35. </a-col>
  36. </a-row>
  37. <a-row class="form-row" :gutter="24" >
  38. <a-col :span="24" pull="2">
  39. <a-form-item
  40. :labelCol="labelCol"
  41. :wrapperCol="wrapperCol"
  42. label="模板标题"
  43. style="margin-left: -15px">
  44. <a-input
  45. placeholder="请输入模板标题"
  46. v-decorator="['templateName', validatorRules.templateName]"
  47. style="width: 122%"
  48. />
  49. </a-form-item>
  50. </a-col>
  51. </a-row>
  52. <a-row class="form-row" :gutter="24">
  53. <a-col :span="24" pull="4">
  54. <a-form-item
  55. v-show="!useEditor"
  56. :labelCol="labelCol"
  57. :wrapperCol="wrapperCol"
  58. label="模板内容"
  59. style="margin-left: 4px;width: 126%">
  60. <a-textarea placeholder="请输入模板内容" v-decorator="['templateContent', validatorRules.templateContent ]" :autosize="{ minRows: 8, maxRows: 8 }"/>
  61. </a-form-item>
  62. </a-col>
  63. </a-row>
  64. <a-row class="form-row" :gutter="24">
  65. <a-col :span="24" pull="4">
  66. <a-form-item
  67. v-show="useEditor"
  68. :labelCol="labelCol"
  69. :wrapperCol="wrapperCol"
  70. label="模板内容"
  71. style="margin-left: 4px;width: 126%">
  72. <j-editor v-model="templateEditorContent"></j-editor>
  73. </a-form-item>
  74. </a-col>
  75. </a-row>
  76. </a-form>
  77. </a-spin>
  78. </a-modal>
  79. </template>
  80. <script>
  81. import {httpAction} from '@/api/manage'
  82. import pick from 'lodash.pick'
  83. import { duplicateCheck } from '@/api/api'
  84. import JEditor from '@/components/jeecg/JEditor'
  85. export default {
  86. name: "SysMessageTemplateModal",
  87. components:{
  88. JEditor
  89. },
  90. data() {
  91. return {
  92. title: "操作",
  93. visible: false,
  94. disable: true,
  95. model: {},
  96. labelCol: {
  97. xs: {span: 24},
  98. sm: {span: 5},
  99. },
  100. wrapperCol: {
  101. xs: {span: 24},
  102. sm: {span: 16},
  103. },
  104. confirmLoading: false,
  105. form: this.$form.createForm(this),
  106. validatorRules: {
  107. templateCode: {rules: [{required: true, message: '请输入模板CODE!' },{validator: this.validateTemplateCode}]},
  108. templateName: {rules: [{required: true, message: '请输入模板标题!'}]},
  109. templateContent: {rules: []},
  110. templateType: {rules: [{required: true, message: '请输入模板类型!'}]},
  111. },
  112. url: {
  113. add: "/sys/message/sysMessageTemplate/add",
  114. edit: "/sys/message/sysMessageTemplate/edit",
  115. },
  116. useEditor:false,
  117. templateEditorContent:""
  118. }
  119. },
  120. created() {
  121. },
  122. methods: {
  123. add() {
  124. this.disable = false;
  125. this.edit({});
  126. },
  127. edit(record) {
  128. this.form.resetFields();
  129. this.model = Object.assign({}, record);
  130. this.useEditor = (record.templateType==2 || record.templateType==4)
  131. if(this.useEditor){
  132. this.templateEditorContent=record.templateContent
  133. }else{
  134. this.templateEditorContent=''
  135. }
  136. this.visible = true;
  137. this.$nextTick(() => {
  138. if(this.useEditor){
  139. this.form.setFieldsValue(pick(this.model, 'templateCode', 'templateName', 'templateTestJson', 'templateType'))
  140. }else{
  141. this.form.setFieldsValue(pick(this.model, 'templateCode', 'templateContent', 'templateName', 'templateTestJson', 'templateType'))
  142. }
  143. });
  144. },
  145. close() {
  146. this.$emit('close');
  147. this.visible = false;
  148. this.disable = true;
  149. },
  150. handleOk() {
  151. this.model.templateType = this.templateType;
  152. const that = this;
  153. // 触发表单验证
  154. this.form.validateFields((err, values) => {
  155. if (!err) {
  156. that.confirmLoading = true;
  157. let httpurl = '';
  158. let method = '';
  159. if (!this.model.id) {
  160. httpurl += this.url.add;
  161. method = 'post';
  162. } else {
  163. httpurl += this.url.edit;
  164. //method = 'put';
  165. method = 'post';
  166. }
  167. let formData = Object.assign(this.model, values);
  168. //时间格式化
  169. if(this.useEditor){
  170. formData.templateContent=this.templateEditorContent
  171. }
  172. console.log(formData)
  173. httpAction(httpurl, formData, method).then((res) => {
  174. if (res.success) {
  175. that.$message.success(res.message);
  176. that.$emit('ok');
  177. } else {
  178. that.$message.warning(res.message);
  179. }
  180. }).finally(() => {
  181. that.confirmLoading = false;
  182. that.close();
  183. })
  184. }
  185. })
  186. },
  187. validateTemplateCode(rule, value, callback){
  188. var params = {
  189. tableName: "sys_sms_template",
  190. fieldName: "template_code",
  191. fieldVal: value,
  192. dataId: this.model.id
  193. }
  194. duplicateCheck(params).then((res)=>{
  195. if(res.success){
  196. callback();
  197. }else{
  198. callback(res.message);
  199. }
  200. })
  201. },
  202. handleCancel() {
  203. this.close()
  204. },
  205. handleChangeTemplateType(value){
  206. //如果是邮件类型那么则改变模板内容是富文本编辑器
  207. this.useEditor = (value==2 || value==4)
  208. }
  209. }
  210. }
  211. </script>
  212. <style scoped>
  213. </style>