CRM平台默认方法

CRM平台前端内置多个默认处理程序,便于高速开发,这些方法一般放在crm.portal.js里。

统一异步请求前处理

在这里统一处理网站的异步请求。

  1. window._token = ($("meta[name='_csrf']").length ? $("meta[name='_csrf']") : $(top.document).find("meta[name='_csrf']")).attr("content");
  2. window._header = ($("meta[name='_csrf_header']").length ? $("meta[name='_csrf_header']") : $(top.document).find("meta[name='_csrf_header']")).attr("content");
  3. headers[_header] = _token;
  4. $(document).ajaxSend(function (e, xhr) {
  5. if (xhr.setRequestHeader) {//设置请求头
  6. xhr.setRequestHeader(_header, _token);
  7. xhr.setRequestHeader('sendType', 'ajax');
  8. }
  9. try {
  10. xhr.done(function (data) {//超时处理
  11. try {
  12. data = typeof data == 'string' ? JSON.parse(data) : data;
  13. } catch (e) {
  14. }
  15. if (data.status == 'timeout') {
  16. top.location.href = top.location.href;
  17. return;
  18. }
  19. });
  20. } catch (e) {
  21. console.log('xhr不存在或者xhr没有done方法')
  22. }
  23. });

表单

表单由多个程序处理,负责不同的功能

  1. //这里处理表单只有一个name时button触发的表单默认事件
  2. $('form.crm-form').on('submit', function () {
  3. return false
  4. });
  5. //绑定查询表单的回车查询
  6. $('form').on('keyup', function (e) {
  7. if (e.keyCode == 13) {
  8. var $query = $(this).find('*[data-type="query"]');
  9. $query.length ? $query.click() : (event.currentTarget.id == 'myqueryForm' ? myquery() : (window.query || function () {
  10. })());
  11. }
  12. });
  13. //限制电话类型输入框长度和内容
  14. $(document).on('input', "input[name=dhQuery],input[name=mphone],input[name=phoneNum],input[name=dhhm],input[name=osPhone],input[name=phone],input[data-type=phone]", function () {
  15. //如果是固定电话类型可以加特殊符号‘-’,比正常电话11位号码多一位
  16. var maxLength = /\-/g.test(this.value) ? 13 : 11;
  17. $(this).val((this.value.split('-').length > 2 || this.value.length > maxLength) ? this.value.substring(0, this.value.length - 1) : this.value.replace([3, 4].indexOf(this.value.indexOf('-')) < 0 ? /[^\d]+/g : /[^\d-]+/g, ''));
  18. }).on('input', 'input[data-type=money]', function () {
  19. //只能输入浮点数字类型
  20. var _val = this.value.replace(/[^.\d]+/g, '');
  21. if (/(^\.+)|(([^]*[.]){2})/.test(this.value)) {
  22. var _regex = /\d+(\.\d*)?/.exec(this.value);
  23. _val = (_regex && _regex.length) ? _regex[0] : this.value.substring(0, this.value.length - 1);
  24. }
  25. $(this).val(_val);
  26. });
  27. // 去掉input框的空格
  28. $('input[type=text]').on('blur', function () {
  29. $(this).val($.trim($(this).val()));
  30. });

kungeekUI插件触发

  1. $(document).ready(function () {
  2. // 触发数据表格
  3. $('table.kungeekui-datagrid').each(function () {
  4. new Datagrid({
  5. target: $(this)
  6. });
  7. })
  8. // 触发日期选择框
  9. if (window.moment) {
  10. $('input.kg-dateSelect[type="text"]').dateSelect();
  11. }
  12. })

bootstrap组件触发

在这里默认触发bootstrap的组件功能。

  1. //页签
  2. $('#navTabs a').click(function (e) {
  3. e.preventDefault()
  4. $(this).tab('show')
  5. })
  6. //显示更多
  7. $('.crm-show-more').on('click', function () {
  8. $(this).toggleClass('expand');
  9. })