1
0

common.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484
  1. // 存储当前用户的权限
  2. let permsSet = JSON.parse(sessionStorage.getItem("permsSet"));
  3. //jqGrid的配置信息
  4. if ($.jgrid) {
  5. $.jgrid.defaults.width = 1000;
  6. $.jgrid.defaults.responsive = true;
  7. $.jgrid.defaults.styleUI = 'Bootstrap';
  8. }
  9. $.ajaxSetup({
  10. dataType: "json",
  11. cache: false
  12. });
  13. //iframe自适应
  14. $(window).on('resize', function () {
  15. var $content = $('#mainApp');
  16. $content.height($(this).height());
  17. $content.find('iframe').each(function () {
  18. $(this).height($content.height() - 150);
  19. });
  20. var $rrapp = $('#rrapp').parent();
  21. $rrapp.height($(this).height());
  22. $(this).height($content.height());
  23. }).resize();
  24. //重写alert
  25. window.alert = function (msg, callback) {
  26. // parent.layer.alert 弹出在iframe外的页面。
  27. layer.alert(msg, function (index) {
  28. layer.close(index);
  29. if (typeof(callback) === "function") {
  30. callback("ok");
  31. }
  32. });
  33. };
  34. //重写confirm式样框
  35. window.confirm = function (msg, callback) {
  36. layer.confirm(msg, {
  37. skin: 'layui-layer-molv', btn: ['确定', '取消']
  38. },
  39. function () {//确定事件
  40. if (typeof(callback) === "function") {
  41. callback("ok");
  42. }
  43. });
  44. };
  45. /**
  46. *
  47. * @param options
  48. */
  49. window.openWindow = function (options) {
  50. let globalParams = {
  51. skin: 'layui-layer-molv',//皮肤
  52. title: '标题',//标题
  53. type: 1,//打开窗口的类型 1:html里的div内容 2:iframe方式,页面的路径
  54. closeBtn: 1, //关闭按钮的形状 0、1
  55. anim: -1,
  56. isOutAnim: false,
  57. shadeClose: false,
  58. area: ['90%', '90%'],
  59. content: '',
  60. btn: false, //按钮
  61. top: false //窗口弹出是否在iframe上层
  62. };
  63. globalParams = $.extend(globalParams, options);
  64. if (globalParams.top) {
  65. parent.layer.open(globalParams);
  66. } else {
  67. layer.open(globalParams);
  68. }
  69. };
  70. //获取选中的数据
  71. function getSelectedRowData() {
  72. var id = getSelectedRow();
  73. return $("#jqGrid").jqGrid('getRowData', id);
  74. }
  75. //选择一条记录
  76. function getSelectedRow() {
  77. var grid = $("#jqGrid");
  78. var rowKey = grid.getGridParam("selrow");
  79. if (!rowKey) {
  80. iview.Message.error("请选择一条记录");
  81. return;
  82. }
  83. var selectedIDs = grid.getGridParam("selarrrow");
  84. if (selectedIDs.length > 1) {
  85. iview.Message.error("只能选择一条记录");
  86. return;
  87. }
  88. return selectedIDs[0];
  89. };
  90. //选择多条记录
  91. function getSelectedRows() {
  92. var grid = $("#jqGrid");
  93. var rowKey = grid.getGridParam("selrow");
  94. if (!rowKey) {
  95. iview.Message.error("请选择一条记录");
  96. return;
  97. }
  98. return grid.getGridParam("selarrrow");
  99. };
  100. /**
  101. * 预览图片
  102. * @param url
  103. */
  104. function eyeImage(url) {
  105. if (!url) {
  106. iview.Message.error('请先上传图片');
  107. return;
  108. }
  109. layer.photos({
  110. photos: {
  111. "title": "预览", //相册标题
  112. "start": 0, //初始显示的图片序号,默认0
  113. "data": [ //相册包含的图片,数组格式
  114. {
  115. "src": url //原图地址
  116. }
  117. ]
  118. }, anim: 5 //0-6的选择,指定弹出图片动画类型,默认随机
  119. });
  120. };
  121. function eyeVideo(url) {
  122. if (!url) {
  123. iview.Message.error('请先上传视频');
  124. return;
  125. }
  126. var loadstr='<video width="100%" height="100%" controls="controls" autobuffer="autobuffer" ' +
  127. 'autoplay="autoplay" loop="loop" style="position:fixed!important;top:0;left:0;"><source src="'+url+'" type="video/mp4"></source></video>';
  128. layer.open({
  129. type:1,
  130. title: "预览",
  131. area: ['730px', '460px'],
  132. shade: 0,
  133. closeBtn: 1,
  134. content: loadstr,
  135. });
  136. };
  137. /**
  138. * 预览图片
  139. * @param data
  140. */
  141. function eyeImages(data) {
  142. layer.photos({
  143. photos: {
  144. "title": "预览", //相册标题
  145. "start": 0, //初始显示的图片序号,默认0
  146. "data": data
  147. }, anim: 5 //0-6的选择,指定弹出图片动画类型,默认随机
  148. });
  149. };
  150. /**
  151. * 重置验证
  152. * @param vue vue对象
  153. * @param name
  154. */
  155. function handleResetForm(vue, name) {
  156. vue.$refs[name].resetFields();
  157. };
  158. /**
  159. * 表单验证
  160. * @param vue vue对象
  161. * @param name 验证规则
  162. * @param callback 验证通过回调函数
  163. */
  164. function handleSubmitValidate(vue, name, callback) {
  165. vue.$refs[name].validate(function (valid) {
  166. if (valid) {
  167. callback();
  168. } else {
  169. iview.Message.error('请填写完整信息!');
  170. return false;
  171. }
  172. })
  173. };
  174. /**
  175. * 翻译日期
  176. * @param date
  177. * @param fmt
  178. * @returns {*}
  179. */
  180. function transDate(date, fmt) {
  181. if (!fmt) {
  182. fmt = 'yyyy-MM-dd';
  183. }
  184. if (date) {
  185. if (typeof date == 'number') {
  186. return new Date(date).dateFormat(fmt);
  187. }
  188. if (date instanceof Date) {
  189. return date.dateFormat(fmt);
  190. } else {
  191. try {
  192. return new Date(date.replace('-', '/').replace('-', '/')).dateFormat(fmt);
  193. } catch (e) {
  194. return '-';
  195. }
  196. }
  197. } else {
  198. return '-';
  199. }
  200. };
  201. /**
  202. * 翻译图片
  203. * @param url
  204. * @returns {*}
  205. */
  206. function transImg(url) {
  207. if (url) {
  208. return '<img width="50px" height="50px" src="' + url + '">';
  209. } else {
  210. return '-';
  211. }
  212. };
  213. function transImgBy100(url) {
  214. if (url) {
  215. return '<img width="100px" height="100px" src="' + url + '">';
  216. } else {
  217. return '-';
  218. }
  219. };
  220. function transImg30(url) {
  221. if (url) {
  222. return '<img width="40px" height="40px" src="' + url + '">';
  223. } else {
  224. return '-';
  225. }
  226. };
  227. /**
  228. * 翻译性别
  229. * @param gender
  230. * @returns {*}
  231. */
  232. function transGender(gender) {
  233. if (gender == 1) {
  234. return '男';
  235. }
  236. if (gender == 2) {
  237. return '女';
  238. }
  239. return '未知';
  240. };
  241. function transIsNot(value) {
  242. if (value == 1) {
  243. return '<span class="label label-success">是</span>';
  244. }
  245. return '<span class="label label-danger">否</span>';
  246. };
  247. function transStatus(value) {
  248. if (value == 1) {
  249. return '<span class="label label-success">有效</span>';
  250. }
  251. return '<span class="label label-danger">无效</span>';
  252. };
  253. function toUrl(href) {
  254. window.location.href = href;
  255. }
  256. function dialogLoading(flag) {
  257. if (flag) {
  258. top.layer.load(0, {
  259. shade: [0.5, '#fff'],
  260. time: 10000,
  261. content: '处理中...'
  262. });
  263. } else {
  264. top.layer.closeAll('loading');
  265. }
  266. }
  267. /**
  268. * 用JS获取地址栏参数的方法
  269. * 使用示例 location.href = http://localhost:8080/index.html?id=123
  270. * getQueryString('id') --> 123;
  271. * @param name
  272. * @returns {null}
  273. * @constructor
  274. */
  275. function getQueryString(name) {
  276. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
  277. var r = window.location.search.substr(1).match(reg);
  278. if (r != null) {
  279. return unescape(r[2]);
  280. }
  281. return null;
  282. }
  283. /**
  284. * 主要功能:导出功能公共方法
  285. *
  286. * @param formId 表单ID,带'#'号,如'#formId'
  287. * @param url 请求后台地址
  288. * @param extraObj 往后台请求额外参数,对象格式,如:{'aaa': 111}
  289. */
  290. function exportFile(formId, url, extraObj) {
  291. var form = $('<form>'); //定义一个form表单
  292. form.attr('style', 'display: none');
  293. form.attr('target', '');
  294. form.attr('method', 'post');
  295. form.attr('action', url);
  296. var json = getJson(formId);
  297. if (typeof extraObj != 'undefined') {
  298. json = $.extend(json, extraObj);
  299. }
  300. $('body').append(form);//将表单放置在web中
  301. for (var i in json) {
  302. var input = $('<input>');
  303. input.attr('type', 'hidden');
  304. input.attr('name', i);
  305. input.attr('value', json[i]);
  306. form.append(input);
  307. }
  308. form.submit();//表单提交
  309. }
  310. /**
  311. * 将form转化为json
  312. * @param form 传入 form表单的dom $("#baseFm")
  313. * @returns {___anonymous49_50} 序列化的键值对 {key:value,key2:value2,....}
  314. */
  315. function getJson(form) {
  316. var o = {};
  317. var $form = $(form).find('input,textarea,select');
  318. $.each($form, function (i, item) {
  319. var $this = $(item);
  320. if ($this.attr("type") == 'radio') {
  321. o[$this.attr("name")] = $("input[name='" + $this.attr("name") + "']:checked").val();
  322. return true;
  323. }
  324. o[$this.attr("name")] = $this.val();
  325. })
  326. return o;
  327. }
  328. /**
  329. *
  330. Ajax.request({
  331. url: '', //访问路径
  332. dataType: 'json', //访问类型 'json','html'等
  333. params: getJson(form),
  334. resultMsg: true, false, //是否需要提示信息
  335. type: 'GET',//,'get','post'
  336. beforeSubmit: function (data) {},//提交前处理
  337. successCallback: function (data) {} //提交后处理
  338. });
  339. */
  340. Ajax = function () {
  341. //var opt = { type:'GET',dataType:'json',resultMsg:true };
  342. function request(opt) {
  343. //添加遮罩层
  344. dialogLoading(true);
  345. if (typeof opt.cache == 'undefined') {
  346. opt.cache = false;
  347. }
  348. if (typeof opt == 'undefined') {
  349. return;
  350. }
  351. //opt = $.extend(opt, p);
  352. if (typeof(opt.type) == 'undefined') {
  353. opt.type = 'GET'
  354. }
  355. if (typeof(opt.async) == 'undefined') {
  356. opt.async = false;
  357. }
  358. if (typeof(opt.dataType) == 'undefined') {
  359. opt.dataType = 'json'
  360. }
  361. if (typeof(opt.contentType) == 'undefined') {
  362. opt.contentType = 'application/x-www-form-urlencoded;chartset=UTF-8'
  363. }
  364. if (typeof(opt.params) == 'undefined' || opt.params == null) {
  365. opt.params = {};
  366. }
  367. opt.params.date = new Date();
  368. if (typeof(opt.beforeSubmit) != 'undefined') {
  369. var flag = opt.beforeSubmit(opt);
  370. if (!flag) {
  371. return;
  372. }
  373. }
  374. if (typeof(opt.resultMsg) == 'undefined') {
  375. opt.resultMsg = true;
  376. }
  377. $.ajax({
  378. async: opt.async,
  379. url: opt.url,
  380. dataType: opt.dataType,
  381. contentType: opt.contentType,
  382. data: opt.params,
  383. crossDomain: opt.crossDomain || false,
  384. type: opt.type,
  385. cache: opt.cache,
  386. success: function (data) {
  387. if (typeof data == 'string' && data.indexOf("exception") > 0 || typeof data.code != 'undefined' && data.code != '0') {
  388. var result = {code: null};
  389. if (typeof data == 'string') {
  390. result = eval('(' + data + ')')
  391. } else if (typeof data == 'object') {
  392. result = data;
  393. }
  394. if (opt.resultMsg && result.msg) {
  395. layer.alert(result.msg, {icon: 5});
  396. }
  397. return;
  398. }
  399. if (opt.resultMsg && data.msg) {
  400. layer.alert(data.msg, {icon: 6}, function () {
  401. if (typeof(opt.successCallback) != 'undefined') {
  402. opt.successCallback(data);
  403. }
  404. });
  405. return;
  406. }
  407. if (typeof(opt.successCallback) != 'undefined') {
  408. opt.successCallback(data);
  409. }
  410. //关闭遮罩
  411. dialogLoading(false);
  412. },
  413. error: function () {
  414. layer.alert("此页面发生未知异常,请联系管理员", {icon: 5});
  415. //关闭遮罩
  416. dialogLoading(false);
  417. }
  418. });
  419. }
  420. return {
  421. /**
  422. * Ajax调用request
  423. */
  424. request: request
  425. };
  426. }();
  427. /**
  428. * 判断用户是否用权限
  429. * @param perm
  430. * @returns {boolean}
  431. */
  432. function hasPermission(perm) {
  433. if (null == permsSet || permsSet.length < 1) {
  434. return false;
  435. }
  436. for (let i = 0; i < permsSet.length; i++) {
  437. if (permsSet[i] == perm) {
  438. return true;
  439. }
  440. }
  441. return false;
  442. }