common.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470
  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. /**
  214. * 翻译性别
  215. * @param gender
  216. * @returns {*}
  217. */
  218. function transGender(gender) {
  219. if (gender == 1) {
  220. return '男';
  221. }
  222. if (gender == 2) {
  223. return '女';
  224. }
  225. return '未知';
  226. };
  227. function transIsNot(value) {
  228. if (value == 1) {
  229. return '<span class="label label-success">是</span>';
  230. }
  231. return '<span class="label label-danger">否</span>';
  232. };
  233. function transStatus(value) {
  234. if (value == 1) {
  235. return '<span class="label label-success">有效</span>';
  236. }
  237. return '<span class="label label-danger">无效</span>';
  238. };
  239. function toUrl(href) {
  240. window.location.href = href;
  241. }
  242. function dialogLoading(flag) {
  243. if (flag) {
  244. top.layer.load(0, {
  245. shade: [0.5, '#fff'],
  246. time: 10000,
  247. content: '处理中...'
  248. });
  249. } else {
  250. top.layer.closeAll('loading');
  251. }
  252. }
  253. /**
  254. * 用JS获取地址栏参数的方法
  255. * 使用示例 location.href = http://localhost:8080/index.html?id=123
  256. * getQueryString('id') --> 123;
  257. * @param name
  258. * @returns {null}
  259. * @constructor
  260. */
  261. function getQueryString(name) {
  262. var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");
  263. var r = window.location.search.substr(1).match(reg);
  264. if (r != null) {
  265. return unescape(r[2]);
  266. }
  267. return null;
  268. }
  269. /**
  270. * 主要功能:导出功能公共方法
  271. *
  272. * @param formId 表单ID,带'#'号,如'#formId'
  273. * @param url 请求后台地址
  274. * @param extraObj 往后台请求额外参数,对象格式,如:{'aaa': 111}
  275. */
  276. function exportFile(formId, url, extraObj) {
  277. var form = $('<form>'); //定义一个form表单
  278. form.attr('style', 'display: none');
  279. form.attr('target', '');
  280. form.attr('method', 'post');
  281. form.attr('action', url);
  282. var json = getJson(formId);
  283. if (typeof extraObj != 'undefined') {
  284. json = $.extend(json, extraObj);
  285. }
  286. $('body').append(form);//将表单放置在web中
  287. for (var i in json) {
  288. var input = $('<input>');
  289. input.attr('type', 'hidden');
  290. input.attr('name', i);
  291. input.attr('value', json[i]);
  292. form.append(input);
  293. }
  294. form.submit();//表单提交
  295. }
  296. /**
  297. * 将form转化为json
  298. * @param form 传入 form表单的dom $("#baseFm")
  299. * @returns {___anonymous49_50} 序列化的键值对 {key:value,key2:value2,....}
  300. */
  301. function getJson(form) {
  302. var o = {};
  303. var $form = $(form).find('input,textarea,select');
  304. $.each($form, function (i, item) {
  305. var $this = $(item);
  306. if ($this.attr("type") == 'radio') {
  307. o[$this.attr("name")] = $("input[name='" + $this.attr("name") + "']:checked").val();
  308. return true;
  309. }
  310. o[$this.attr("name")] = $this.val();
  311. })
  312. return o;
  313. }
  314. /**
  315. *
  316. Ajax.request({
  317. url: '', //访问路径
  318. dataType: 'json', //访问类型 'json','html'等
  319. params: getJson(form),
  320. resultMsg: true, false, //是否需要提示信息
  321. type: 'GET',//,'get','post'
  322. beforeSubmit: function (data) {},//提交前处理
  323. successCallback: function (data) {} //提交后处理
  324. });
  325. */
  326. Ajax = function () {
  327. //var opt = { type:'GET',dataType:'json',resultMsg:true };
  328. function request(opt) {
  329. //添加遮罩层
  330. dialogLoading(true);
  331. if (typeof opt.cache == 'undefined') {
  332. opt.cache = false;
  333. }
  334. if (typeof opt == 'undefined') {
  335. return;
  336. }
  337. //opt = $.extend(opt, p);
  338. if (typeof(opt.type) == 'undefined') {
  339. opt.type = 'GET'
  340. }
  341. if (typeof(opt.async) == 'undefined') {
  342. opt.async = false;
  343. }
  344. if (typeof(opt.dataType) == 'undefined') {
  345. opt.dataType = 'json'
  346. }
  347. if (typeof(opt.contentType) == 'undefined') {
  348. opt.contentType = 'application/x-www-form-urlencoded;chartset=UTF-8'
  349. }
  350. if (typeof(opt.params) == 'undefined' || opt.params == null) {
  351. opt.params = {};
  352. }
  353. opt.params.date = new Date();
  354. if (typeof(opt.beforeSubmit) != 'undefined') {
  355. var flag = opt.beforeSubmit(opt);
  356. if (!flag) {
  357. return;
  358. }
  359. }
  360. if (typeof(opt.resultMsg) == 'undefined') {
  361. opt.resultMsg = true;
  362. }
  363. $.ajax({
  364. async: opt.async,
  365. url: opt.url,
  366. dataType: opt.dataType,
  367. contentType: opt.contentType,
  368. data: opt.params,
  369. crossDomain: opt.crossDomain || false,
  370. type: opt.type,
  371. cache: opt.cache,
  372. success: function (data) {
  373. if (typeof data == 'string' && data.indexOf("exception") > 0 || typeof data.code != 'undefined' && data.code != '0') {
  374. var result = {code: null};
  375. if (typeof data == 'string') {
  376. result = eval('(' + data + ')')
  377. } else if (typeof data == 'object') {
  378. result = data;
  379. }
  380. if (opt.resultMsg && result.msg) {
  381. layer.alert(result.msg, {icon: 5});
  382. }
  383. return;
  384. }
  385. if (opt.resultMsg && data.msg) {
  386. layer.alert(data.msg, {icon: 6}, function () {
  387. if (typeof(opt.successCallback) != 'undefined') {
  388. opt.successCallback(data);
  389. }
  390. });
  391. return;
  392. }
  393. if (typeof(opt.successCallback) != 'undefined') {
  394. opt.successCallback(data);
  395. }
  396. //关闭遮罩
  397. dialogLoading(false);
  398. },
  399. error: function () {
  400. layer.alert("此页面发生未知异常,请联系管理员", {icon: 5});
  401. //关闭遮罩
  402. dialogLoading(false);
  403. }
  404. });
  405. }
  406. return {
  407. /**
  408. * Ajax调用request
  409. */
  410. request: request
  411. };
  412. }();
  413. /**
  414. * 判断用户是否用权限
  415. * @param perm
  416. * @returns {boolean}
  417. */
  418. function hasPermission(perm) {
  419. if (null == permsSet || permsSet.length < 1) {
  420. return false;
  421. }
  422. for (let i = 0; i < permsSet.length; i++) {
  423. if (permsSet[i] == perm) {
  424. return true;
  425. }
  426. }
  427. return false;
  428. }