mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 02:08:43 +08:00 
			
		
		
		
	短信模板的 ui 初始化
This commit is contained in:
		
							
								
								
									
										54
									
								
								ruoyi-ui/src/api/system/sms/smsTemplate.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										54
									
								
								ruoyi-ui/src/api/system/sms/smsTemplate.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,54 @@ | |||||||
|  | import request from '@/utils/request' | ||||||
|  |  | ||||||
|  | // 创建短信模板 | ||||||
|  | export function createSmsTemplate(data) { | ||||||
|  |   return request({ | ||||||
|  |     url: '/system/sms-template/create', | ||||||
|  |     method: 'post', | ||||||
|  |     data: data | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // 更新短信模板 | ||||||
|  | export function updateSmsTemplate(data) { | ||||||
|  |   return request({ | ||||||
|  |     url: '/system/sms-template/update', | ||||||
|  |     method: 'put', | ||||||
|  |     data: data | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // 删除短信模板 | ||||||
|  | export function deleteSmsTemplate(id) { | ||||||
|  |   return request({ | ||||||
|  |     url: '/system/sms-template/delete?id=' + id, | ||||||
|  |     method: 'delete' | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // 获得短信模板 | ||||||
|  | export function getSmsTemplate(id) { | ||||||
|  |   return request({ | ||||||
|  |     url: '/system/sms-template/get?id=' + id, | ||||||
|  |     method: 'get' | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // 获得短信模板分页 | ||||||
|  | export function getSmsTemplatePage(query) { | ||||||
|  |   return request({ | ||||||
|  |     url: '/system/sms-template/page', | ||||||
|  |     method: 'get', | ||||||
|  |     params: query | ||||||
|  |   }) | ||||||
|  | } | ||||||
|  |  | ||||||
|  | // 导出短信模板 Excel | ||||||
|  | export function exportSmsTemplateExcel(query) { | ||||||
|  |   return request({ | ||||||
|  |     url: '/system/sms-template/export-excel', | ||||||
|  |     method: 'get', | ||||||
|  |     params: query, | ||||||
|  |     responseType: 'blob' | ||||||
|  |   }) | ||||||
|  | } | ||||||
| @@ -18,6 +18,7 @@ export const DICT_TYPE = { | |||||||
|   SYS_LOGIN_RESULT: 'sys_login_result', |   SYS_LOGIN_RESULT: 'sys_login_result', | ||||||
|   SYS_CONFIG_TYPE: 'sys_config_type', |   SYS_CONFIG_TYPE: 'sys_config_type', | ||||||
|   SYS_SMS_CHANNEL_CODE: 'sys_sms_channel_code', |   SYS_SMS_CHANNEL_CODE: 'sys_sms_channel_code', | ||||||
|  |   SYS_SMS_TEMPLATE_TYPE: 'sys_sms_template_type', | ||||||
|  |  | ||||||
|   INF_REDIS_TIMEOUT_TYPE: 'inf_redis_timeout_type', |   INF_REDIS_TIMEOUT_TYPE: 'inf_redis_timeout_type', | ||||||
|   INF_JOB_STATUS: 'inf_job_status', |   INF_JOB_STATUS: 'inf_job_status', | ||||||
|   | |||||||
							
								
								
									
										306
									
								
								ruoyi-ui/src/views/system/sms/smsTemplate.vue
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										306
									
								
								ruoyi-ui/src/views/system/sms/smsTemplate.vue
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,306 @@ | |||||||
|  | <template> | ||||||
|  |   <div class="app-container"> | ||||||
|  |  | ||||||
|  |     <!-- 搜索工作栏 --> | ||||||
|  |     <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="150px"> | ||||||
|  |       <el-form-item label="短信类型" prop="type"> | ||||||
|  |         <el-select v-model="queryParams.type" placeholder="请选择短信签名" clearable size="small"> | ||||||
|  |           <el-option v-for="dict in this.getDictDatas(DICT_TYPE.SYS_SMS_TEMPLATE_TYPE)" | ||||||
|  |                      :key="dict.value" :label="dict.label" :value="dict.value"/> | ||||||
|  |         </el-select> | ||||||
|  |       </el-form-item> | ||||||
|  |       <el-form-item label="开启状态" prop="status"> | ||||||
|  |         <el-select v-model="queryParams.status" placeholder="请选择开启状态" clearable size="small"> | ||||||
|  |           <el-option v-for="dict in this.getDictDatas(DICT_TYPE.SYS_COMMON_STATUS)" | ||||||
|  |                      :key="dict.value" :label="dict.label" :value="dict.value"/> | ||||||
|  |         </el-select> | ||||||
|  |       </el-form-item> | ||||||
|  |       <el-form-item label="模板编码" prop="code"> | ||||||
|  |         <el-input v-model="queryParams.code" placeholder="请输入模板编码" clearable size="small" @keyup.enter.native="handleQuery"/> | ||||||
|  |       </el-form-item> | ||||||
|  |       <el-form-item label="短信 API 的模板编号" prop="apiTemplateId"> | ||||||
|  |         <el-input v-model="queryParams.apiTemplateId" placeholder="请输入短信 API 的模板编号" clearable size="small" @keyup.enter.native="handleQuery"/> | ||||||
|  |       </el-form-item> | ||||||
|  |       <el-form-item label="短信渠道编号" prop="channelId"> | ||||||
|  |         <el-select v-model="queryParams.channelId" placeholder="请选择短信渠道编号" clearable size="small"> | ||||||
|  |           <el-option label="请选择字典生成" value="" /> | ||||||
|  |         </el-select> | ||||||
|  |       </el-form-item> | ||||||
|  |       <el-form-item label="创建时间"> | ||||||
|  |         <el-date-picker v-model="dateRangeCreateTime" size="small" style="width: 240px" value-format="yyyy-MM-dd" | ||||||
|  |                         type="daterange" range-separator="-" start-placeholder="开始日期" end-placeholder="结束日期" /> | ||||||
|  |       </el-form-item> | ||||||
|  |       <el-form-item> | ||||||
|  |         <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button> | ||||||
|  |         <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button> | ||||||
|  |       </el-form-item> | ||||||
|  |     </el-form> | ||||||
|  |  | ||||||
|  |     <!-- 操作工具栏 --> | ||||||
|  |     <el-row :gutter="10" class="mb8"> | ||||||
|  |       <el-col :span="1.5"> | ||||||
|  |         <el-button type="primary" plain icon="el-icon-plus" size="mini" @click="handleAdd" | ||||||
|  |                    v-hasPermi="['system:sms-template:create']">新增</el-button> | ||||||
|  |       </el-col> | ||||||
|  |       <el-col :span="1.5"> | ||||||
|  |         <el-button type="warning" plain icon="el-icon-download" size="mini" @click="handleExport" | ||||||
|  |                    v-hasPermi="['system:sms-template:export']">导出</el-button> | ||||||
|  |       </el-col> | ||||||
|  |       <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar> | ||||||
|  |     </el-row> | ||||||
|  |  | ||||||
|  |     <!-- 列表 --> | ||||||
|  |     <el-table v-loading="loading" :data="list"> | ||||||
|  |       <el-table-column label="模板编码" align="center" prop="code" /> | ||||||
|  |       <el-table-column label="模板名称" align="center" prop="name" /> | ||||||
|  |       <el-table-column label="模板内容" align="center" prop="content" width="300" /> | ||||||
|  |       <el-table-column label="短信类型" align="center" prop="type"> | ||||||
|  |         <template slot-scope="scope"> | ||||||
|  |           <span>{{ getDictDataLabel(DICT_TYPE.SYS_SMS_TEMPLATE_TYPE, scope.row.type) }}</span> | ||||||
|  |         </template> | ||||||
|  |       </el-table-column>> | ||||||
|  |       <el-table-column label="开启状态" align="center" prop="status"> | ||||||
|  |         <template slot-scope="scope"> | ||||||
|  |           <span>{{ getDictDataLabel(DICT_TYPE.SYS_COMMON_STATUS, scope.row.status) }}</span> | ||||||
|  |         </template> | ||||||
|  |       </el-table-column>> | ||||||
|  |       <el-table-column label="备注" align="center" prop="remark" /> | ||||||
|  |       <el-table-column label="短信 API 的模板编号" align="center" prop="apiTemplateId" width="180" /> | ||||||
|  |       <el-table-column label="短信签名" align="center"> | ||||||
|  |         <template slot-scope="scope"> | ||||||
|  |           <span>{{ getDictDataLabel(DICT_TYPE.SYS_SMS_CHANNEL_CODE, scope.row.channelCode) }}</span> | ||||||
|  |         </template> | ||||||
|  |       </el-table-column> | ||||||
|  |       <el-table-column label="创建时间" align="center" prop="createTime" width="180"> | ||||||
|  |         <template slot-scope="scope"> | ||||||
|  |           <span>{{ parseTime(scope.row.createTime) }}</span> | ||||||
|  |         </template> | ||||||
|  |       </el-table-column> | ||||||
|  |       <el-table-column label="操作" align="center" class-name="small-padding fixed-width"> | ||||||
|  |         <template slot-scope="scope"> | ||||||
|  |           <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)" | ||||||
|  |                      v-hasPermi="['system:sms-template:update']">修改</el-button> | ||||||
|  |           <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)" | ||||||
|  |                      v-hasPermi="['system:sms-template:delete']">删除</el-button> | ||||||
|  |         </template> | ||||||
|  |       </el-table-column> | ||||||
|  |     </el-table> | ||||||
|  |     <!-- 分页组件 --> | ||||||
|  |     <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize" | ||||||
|  |                 @pagination="getList"/> | ||||||
|  |  | ||||||
|  |     <!-- 对话框(添加 / 修改) --> | ||||||
|  |     <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body> | ||||||
|  |       <el-form ref="form" :model="form" :rules="rules" label-width="80px"> | ||||||
|  |         <el-form-item label="短信签名" prop="type"> | ||||||
|  |           <el-select v-model="form.type" placeholder="请选择短信签名"> | ||||||
|  |             <el-option v-for="dict in this.getDictDatas(DICT_TYPE.SYS_SMS_TEMPLATE_TYPE)" | ||||||
|  |                        :key="dict.value" :label="dict.label" :value="parseInt(dict.value)" /> | ||||||
|  |           </el-select> | ||||||
|  |         </el-form-item> | ||||||
|  |         <el-form-item label="开启状态"> | ||||||
|  |           <el-radio-group v-model="form.status"> | ||||||
|  |             <el-radio v-for="dict in this.getDictDatas(DICT_TYPE.SYS_COMMON_STATUS)" | ||||||
|  |                       :key="dict.value" :label="parseInt(dict.value)">{{dict.label}}</el-radio> | ||||||
|  |           </el-radio-group> | ||||||
|  |         </el-form-item> | ||||||
|  |         <el-form-item label="模板编码" prop="code"> | ||||||
|  |           <el-input v-model="form.code" placeholder="请输入模板编码" /> | ||||||
|  |         </el-form-item> | ||||||
|  |         <el-form-item label="模板名称" prop="name"> | ||||||
|  |           <el-input v-model="form.name" placeholder="请输入模板名称" /> | ||||||
|  |         </el-form-item> | ||||||
|  |         <el-form-item label="模板内容"> | ||||||
|  |           <el-input type="textarea" v-model="form.content" placeholder="请输入模板内容" /> | ||||||
|  |         </el-form-item> | ||||||
|  |         <el-form-item label="备注" prop="remark"> | ||||||
|  |           <el-input v-model="form.remark" placeholder="请输入备注" /> | ||||||
|  |         </el-form-item> | ||||||
|  |         <el-form-item label="短信 API 的模板编号" prop="apiTemplateId"> | ||||||
|  |           <el-input v-model="form.apiTemplateId" placeholder="请输入短信 API 的模板编号" /> | ||||||
|  |         </el-form-item> | ||||||
|  |         <el-form-item label="短信渠道编号" prop="channelId"> | ||||||
|  |           <el-select v-model="form.channelId" placeholder="请选择短信渠道编号"> | ||||||
|  |             <el-option label="请选择字典生成" value="" /> | ||||||
|  |           </el-select> | ||||||
|  |         </el-form-item> | ||||||
|  |       </el-form> | ||||||
|  |       <div slot="footer" class="dialog-footer"> | ||||||
|  |         <el-button type="primary" @click="submitForm">确 定</el-button> | ||||||
|  |         <el-button @click="cancel">取 消</el-button> | ||||||
|  |       </div> | ||||||
|  |     </el-dialog> | ||||||
|  |   </div> | ||||||
|  | </template> | ||||||
|  |  | ||||||
|  | <script> | ||||||
|  | import { createSmsTemplate, updateSmsTemplate, deleteSmsTemplate, getSmsTemplate, getSmsTemplatePage, exportSmsTemplateExcel } from "@/api/system/sms/smsTemplate"; | ||||||
|  | import Editor from '@/components/Editor'; | ||||||
|  |  | ||||||
|  | export default { | ||||||
|  |   name: "SmsTemplate", | ||||||
|  |   components: { | ||||||
|  |     Editor, | ||||||
|  |   }, | ||||||
|  |   data() { | ||||||
|  |     return { | ||||||
|  |       // 遮罩层 | ||||||
|  |       loading: true, | ||||||
|  |       // 显示搜索条件 | ||||||
|  |       showSearch: true, | ||||||
|  |       // 总条数 | ||||||
|  |       total: 0, | ||||||
|  |       // 短信模板列表 | ||||||
|  |       list: [], | ||||||
|  |       // 弹出层标题 | ||||||
|  |       title: "", | ||||||
|  |       // 是否显示弹出层 | ||||||
|  |       open: false, | ||||||
|  |       dateRangeCreateTime: [], | ||||||
|  |       // 查询参数 | ||||||
|  |       queryParams: { | ||||||
|  |         pageNo: 1, | ||||||
|  |         pageSize: 10, | ||||||
|  |         type: null, | ||||||
|  |         status: null, | ||||||
|  |         code: null, | ||||||
|  |         content: null, | ||||||
|  |         apiTemplateId: null, | ||||||
|  |         channelId: null, | ||||||
|  |       }, | ||||||
|  |       // 表单参数 | ||||||
|  |       form: {}, | ||||||
|  |       // 表单校验 | ||||||
|  |       rules: { | ||||||
|  |         type: [{ required: true, message: "短信签名不能为空", trigger: "change" }], | ||||||
|  |         status: [{ required: true, message: "开启状态不能为空", trigger: "blur" }], | ||||||
|  |         code: [{ required: true, message: "模板编码不能为空", trigger: "blur" }], | ||||||
|  |         name: [{ required: true, message: "模板名称不能为空", trigger: "blur" }], | ||||||
|  |         content: [{ required: true, message: "模板内容不能为空", trigger: "blur" }], | ||||||
|  |         apiTemplateId: [{ required: true, message: "短信 API 的模板编号不能为空", trigger: "blur" }], | ||||||
|  |         channelId: [{ required: true, message: "短信渠道编号不能为空", trigger: "change" }], | ||||||
|  |       } | ||||||
|  |     }; | ||||||
|  |   }, | ||||||
|  |   created() { | ||||||
|  |     this.getList(); | ||||||
|  |   }, | ||||||
|  |   methods: { | ||||||
|  |     /** 查询列表 */ | ||||||
|  |     getList() { | ||||||
|  |       this.loading = true; | ||||||
|  |       // 处理查询参数 | ||||||
|  |       let params = {...this.queryParams}; | ||||||
|  |       this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime'); | ||||||
|  |       // 执行查询 | ||||||
|  |       getSmsTemplatePage(params).then(response => { | ||||||
|  |         this.list = response.data.list; | ||||||
|  |         this.total = response.data.total; | ||||||
|  |         this.loading = false; | ||||||
|  |       }); | ||||||
|  |     }, | ||||||
|  |     /** 取消按钮 */ | ||||||
|  |     cancel() { | ||||||
|  |       this.open = false; | ||||||
|  |       this.reset(); | ||||||
|  |     }, | ||||||
|  |     /** 表单重置 */ | ||||||
|  |     reset() { | ||||||
|  |       this.form = { | ||||||
|  |         id: undefined, | ||||||
|  |         type: undefined, | ||||||
|  |         status: undefined, | ||||||
|  |         code: undefined, | ||||||
|  |         name: undefined, | ||||||
|  |         content: undefined, | ||||||
|  |         remark: undefined, | ||||||
|  |         apiTemplateId: undefined, | ||||||
|  |         channelId: undefined, | ||||||
|  |       }; | ||||||
|  |       this.resetForm("form"); | ||||||
|  |     }, | ||||||
|  |     /** 搜索按钮操作 */ | ||||||
|  |     handleQuery() { | ||||||
|  |       this.queryParams.pageNo = 1; | ||||||
|  |       this.getList(); | ||||||
|  |     }, | ||||||
|  |     /** 重置按钮操作 */ | ||||||
|  |     resetQuery() { | ||||||
|  |       this.dateRangeCreateTime = []; | ||||||
|  |       this.resetForm("queryForm"); | ||||||
|  |       this.handleQuery(); | ||||||
|  |     }, | ||||||
|  |     /** 新增按钮操作 */ | ||||||
|  |     handleAdd() { | ||||||
|  |       this.reset(); | ||||||
|  |       this.open = true; | ||||||
|  |       this.title = "添加短信模板"; | ||||||
|  |     }, | ||||||
|  |     /** 修改按钮操作 */ | ||||||
|  |     handleUpdate(row) { | ||||||
|  |       this.reset(); | ||||||
|  |       const id = row.id; | ||||||
|  |       getSmsTemplate(id).then(response => { | ||||||
|  |         this.form = response.data; | ||||||
|  |         this.open = true; | ||||||
|  |         this.title = "修改短信模板"; | ||||||
|  |       }); | ||||||
|  |     }, | ||||||
|  |     /** 提交按钮 */ | ||||||
|  |     submitForm() { | ||||||
|  |       this.$refs["form"].validate(valid => { | ||||||
|  |         if (!valid) { | ||||||
|  |           return; | ||||||
|  |         } | ||||||
|  |         // 修改的提交 | ||||||
|  |         if (this.form.id != null) { | ||||||
|  |           updateSmsTemplate(this.form).then(response => { | ||||||
|  |             this.msgSuccess("修改成功"); | ||||||
|  |             this.open = false; | ||||||
|  |             this.getList(); | ||||||
|  |           }); | ||||||
|  |           return; | ||||||
|  |         } | ||||||
|  |         // 添加的提交 | ||||||
|  |         createSmsTemplate(this.form).then(response => { | ||||||
|  |           this.msgSuccess("新增成功"); | ||||||
|  |           this.open = false; | ||||||
|  |           this.getList(); | ||||||
|  |         }); | ||||||
|  |       }); | ||||||
|  |     }, | ||||||
|  |     /** 删除按钮操作 */ | ||||||
|  |     handleDelete(row) { | ||||||
|  |       const id = row.id; | ||||||
|  |       this.$confirm('是否确认删除短信模板编号为"' + id + '"的数据项?', "警告", { | ||||||
|  |         confirmButtonText: "确定", | ||||||
|  |         cancelButtonText: "取消", | ||||||
|  |         type: "warning" | ||||||
|  |       }).then(function() { | ||||||
|  |         return deleteSmsTemplate(id); | ||||||
|  |       }).then(() => { | ||||||
|  |         this.getList(); | ||||||
|  |         this.msgSuccess("删除成功"); | ||||||
|  |       }) | ||||||
|  |     }, | ||||||
|  |     /** 导出按钮操作 */ | ||||||
|  |     handleExport() { | ||||||
|  |       // 处理查询参数 | ||||||
|  |       let params = {...this.queryParams}; | ||||||
|  |       params.pageNo = undefined; | ||||||
|  |       params.pageSize = undefined; | ||||||
|  |       this.addBeginAndEndTime(params, this.dateRangeCreateTime, 'createTime'); | ||||||
|  |       // 执行导出 | ||||||
|  |       this.$confirm('是否确认导出所有短信模板数据项?', "警告", { | ||||||
|  |         confirmButtonText: "确定", | ||||||
|  |         cancelButtonText: "取消", | ||||||
|  |         type: "warning" | ||||||
|  |       }).then(function() { | ||||||
|  |         return exportSmsTemplateExcel(params); | ||||||
|  |       }).then(response => { | ||||||
|  |         this.downloadExcel(response, '短信模板.xls'); | ||||||
|  |       }) | ||||||
|  |     } | ||||||
|  |   } | ||||||
|  | }; | ||||||
|  | </script> | ||||||
| @@ -12,8 +12,8 @@ import javax.validation.constraints.NotNull; | |||||||
| @Data | @Data | ||||||
| public class SysSmsTemplateBaseVO { | public class SysSmsTemplateBaseVO { | ||||||
|  |  | ||||||
|     @ApiModelProperty(value = "短信签名", required = true, example = "1", notes = "参见 SysSmsTemplateTypeEnum 枚举类") |     @ApiModelProperty(value = "短信类型", required = true, example = "1", notes = "参见 SysSmsTemplateTypeEnum 枚举类") | ||||||
|     @NotNull(message = "短信签名不能为空") |     @NotNull(message = "短信类型不能为空") | ||||||
|     private Integer type; |     private Integer type; | ||||||
|  |  | ||||||
|     @ApiModelProperty(value = "开启状态", required = true, example = "1", notes = "参见 CommonStatusEnum 枚举类") |     @ApiModelProperty(value = "开启状态", required = true, example = "1", notes = "参见 CommonStatusEnum 枚举类") | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 YunaiV
					YunaiV