【说句废话】
高手关注的是解决方案,会根据项目选择合适的开发语言、框架、cms、等。只有程序员才会纠结于用了什么开发语言!正所谓:一切脱离应用场景谈解决方案的都是刷流氓! 就像大部分客户,认为:java 比 php 好,安全! 简直搞笑之极。
【背景】
最近在做一个人力资源招聘管理系统,中间有个功能:批量给求职者发送短信,这就是本文要说的中间,直接上步骤:
- 列表增加按钮
<a href="javascript:;" class="btn btn-info btn-multisendsms btn-disabled disabled {:$auth->check('lapplyredcord/multi_sendsms')?'':'hide'}"title="{:__('multi_sendsms')}" ><i class="fa fa-gavel"></i> {:__('multi_sendsms')}</a>
js增加点击事件
//批量发短信事件 $(document).on('click', '.btn-multisendsms', function () { var that = this; var ids = Table.api.selectedids(table); // 如果选中的行数超过25行,则不执行编辑操作 if (ids.length > 25) { alert("警告:选取的文件数量超过了25!"); return; } var title = $(that).data('title') || $(that).attr("title") || __('Edit'); var data = $(that).data() || {}; delete data.title; var selectedData = Table.api.selecteddata(table); var url = $.fn.bootstrapTable.defaults.extend.multisendsms_url; var editData = { ids: ids, selectedData: selectedData }; url = Table.api.replaceurl(url, editData, table); Fast.api.open(url, typeof title === 'function' ? title.call(table, editData) : title, data); });
下面一定要加,不然窗口提交后,不会关闭、刷新列表页multisendsms_url:'applyredcord/multi_sendsms'
- 控制器增加
public function multi_sendsms($ids = null){ // 将传递的 $ids 参数转换为数组 $idsArray = explode(',', $ids); // 获取选中的数据,可能是多条数据 $rows = $this->model->whereIn('id', $idsArray)->select(); // 检查是否有数据被选中 if (!$rows) { $this->error(__('No Results were found')); } // 循环检查每条数据的权限 foreach ($rows as $row) { $adminIds = $this->getDataLimitAdminIds(); if (is_array($adminIds) && !in_array($row[$this->dataLimitField], $adminIds)) { $this->error(__('You have no permission')); } } // 处理 POST 请求,即更新数据 if ($this->request->isPost()) { $params = $this->request->post('row/a'); // 数据验证 // 这里需要根据实际情况进行验证,确保数据的有效性 Db::startTrans(); try { // 批量更新数据 $determinedate = $params['determinedate']; $smstpl_id = $params['smstpl_id']; foreach ($rows as $row) { // 更新数据 //$params['checktime']=time(); // $row->allowField(true)->save($params); $examdata = [ 'title' => '', 'determinedate' => $determinedate, 'applyredcord_id' => $row->id, 'smstpl_id' => $smstpl_id, 'note' => '', 'status' => $params['status'], 'admin_id'=>$this->auth->id ]; // \app\admin\model\Examine::create($examdata); } Db::commit(); } catch (ValidateException | PDOException | Exception $e) { Db::rollback(); $this->error($e->getMessage()); } // 如果更新成功,返回成功响应 $this->success(); } // 渲染视图,并将选中的数据传递到视图中 $this->view->assign('row', $rows[0]); return $this->view->fetch(); } - 增加模版文件
<form id="multi_check-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action=""> <div class="form-group"> <label class="control-label col-xs-12 col-sm-2">{:__('Status')}:</label> <div class="col-xs-12 col-sm-8"> <div class="radio"> {foreach name="statusList" item="vo"} <label for="row[status]-{$key}"> <input id="row[status]-{$key}" name="row[status]" type="radio" value="{$key}" {in name="key" value="$row.status" }checked{/in} > {$vo} </label> {/foreach} </div> </div> </div> <div class="form-group"> <label class="control-label col-xs-12 col-sm-2">{:__('邀约/面试时间')}:</label> <div class="col-xs-12 col-sm-8"> <input id="c-determinedate" class="form-control datetimepicker" data-date-format="YYYY-MM-DD HH:mm:ss" data-use-current="true" name="row[determinedate]" type="text" value=""> </div> </div> <div class="form-group"> <label class="control-label col-xs-12 col-sm-2">{:__('短信模板')}:</label> <div class="col-xs-12 col-sm-8"> <input id="c-smstpl_id" data-source="smstpl/index" class="form-control selectpage" name="row[smstpl_id]" type="text" value=""> </div> </div> <div class="form-group layer-footer"> <label class="control-label col-xs-12 col-sm-2"></label> <div class="col-xs-12 col-sm-8"> <button type="submit" class="btn btn-primary btn-embossed ">{:__('OK')}</button> <button type="reset" class="btn btn-default btn-embossed">{:__('Reset')}</button> </div> </div> </form>
按照以上步骤,就可以达到目的,还是那句话,尊重技术、敬畏技术!每一个开发语言都有自己的特有优势!
技术改变生活,合作才能共赢........
686

被折叠的 条评论
为什么被折叠?



