device-app-package-add.js 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232
  1. "use strict";
  2. layui.extend({
  3. common: 'js/common',
  4. xmSelect: 'layui/dist/xm-select',
  5. }).use(['jquery', 'form', 'common', 'upload', 'element','xmSelect'], function () {
  6. var $ = layui.jquery;
  7. var form = layui.form;
  8. var element = layui.element;
  9. var xmSelect = layui.xmSelect;
  10. var common = layui.common;
  11. //定义加载层id
  12. var loadId;
  13. // 页面元素
  14. var $node = {
  15. // 取消按钮
  16. resetBtn: $('button[type="reset"]'),
  17. fileName: $("#fileName"),
  18. fastDfsServer: $("#fastDfsServer"),
  19. iosAppUrl: $("#iosAppUrl"),
  20. downloadUrl: $("#downloadUrl"),
  21. packageMd5: $("#packageMd5"),
  22. downloadButton: $(".downloadButton"),
  23. must: '',
  24. packageType: $('input[name="packageType"]'),
  25. appType: $('input[name="app"]'),
  26. platform: $('input[name="platform"]'),
  27. };
  28. $.ajax({
  29. type: 'GET',
  30. url: '/permissions/dict/getByCode/deviceFactory',
  31. success: function (result) {
  32. deviceFactoryDict.update({data:result.list}).setValue([$('#factoryValue').val()]);
  33. $.ajax({
  34. type: 'GET',
  35. url: '/deviceTemplate/manage/getListByLikeTypeCode',
  36. data: {
  37. deviceFactory : deviceFactoryDict.getValue('keyStr'),
  38. isSelect : true,
  39. },
  40. success: function (result) {
  41. deviceModelNumberSelect.update({data:result.list,disabled: false}).setValue([$('#deviceModelNumberValue').val()]);
  42. },
  43. });
  44. },
  45. });
  46. var deviceFactoryDict = xmSelect.render({
  47. el: '#factory',
  48. name: 'deviceFactory',
  49. layVerify: 'required',
  50. radio: true,
  51. clickClose: true,
  52. prop: {
  53. name: 'dictValue',
  54. value: 'dictKey',
  55. },
  56. on: function (data) {
  57. deviceModelNumberSelect.update({data : initDeviceTemplateFn(data),disabled: false});
  58. },
  59. model: {
  60. label: {
  61. type: 'text',
  62. text: {
  63. left: '',
  64. right: '',
  65. separator: ', ',
  66. },
  67. }
  68. },
  69. });
  70. var deviceModelNumberSelect = xmSelect.render({
  71. el:'#device_model_number',
  72. name:'deviceModelNumber',
  73. tips:'请先选择设备厂商',
  74. empty:'暂时没有该设备厂商的设备配置与型号,请先添加该设备厂商的设备配置',
  75. disabled:true,
  76. radio: true,
  77. prop: {
  78. name: 'typeCode',
  79. value: 'typeCode'
  80. },
  81. clickClose: true,
  82. filterable: true,
  83. remoteSearch: true,
  84. remoteMethod:function (val,cb,show) {
  85. $.ajax({
  86. type: 'GET',
  87. url: '/deviceTemplate/manage/getListByLikeTypeCode',
  88. data: {
  89. deviceFactory : deviceFactoryDict.getValue('keyStr'),
  90. typeCode : val,
  91. isSelect : true,
  92. },
  93. success:function (result) {
  94. cb(result.list);
  95. },
  96. error:function () {
  97. cb([]);
  98. }
  99. })
  100. },
  101. model: {
  102. label: {
  103. type: 'text',
  104. text: {
  105. left: '',
  106. right: '',
  107. separator: ', ',
  108. },
  109. }
  110. },
  111. });
  112. layui.form.on('select(deviceFactory)',function (data) {
  113. deviceModelNumberSelect.update({data : initDeviceTemplateFn(),disabled: false});
  114. });
  115. function initDeviceTemplateFn(data) {
  116. var deviceTemplateList;
  117. common.sendSyncRequest("/deviceTemplate/manage/getListByLikeTypeCode", 'get', {
  118. deviceFactory : data.change[0].dictKey,
  119. isSelect : true,
  120. }, function (result) {
  121. deviceTemplateList = result.list;
  122. });
  123. return deviceTemplateList;
  124. }
  125. // 绑定表单提交事件
  126. layui.form.on("submit(entity_submit_event)", function (data) {
  127. layui.common.timer($('button[lay-filter="entity_submit_event"]'));
  128. var id = data.field.id;
  129. var url = "";
  130. if (id) {
  131. url = '/permissions/appPackage/edit';
  132. } else {
  133. url = '/permissions/appPackage/add';
  134. }
  135. if (data.field.packageType == 2) {
  136. data.field.downloadUrl = $node.iosAppUrl.val();
  137. }
  138. $.ajax({
  139. url: url,
  140. data: data.field,
  141. type: 'POST',
  142. success: function () {
  143. $node.resetBtn.click();
  144. parent.location.reload();
  145. }
  146. });
  147. });
  148. //监听选项卡切换
  149. element.on('tab(packageType)', function (data) {
  150. //选项卡下标index: 0:Android 1:IOS
  151. let index = data.index;
  152. if (index == 0) {
  153. $('#upFile span').before($node.must);
  154. $node.fileName.attr('lay-verify', 'required');
  155. $node.iosAppUrl.removeAttr('lay-verify');
  156. $node.packageType.val('1');
  157. $('input[name="platform"]').val('Android');
  158. } else if (index == 1) {
  159. $node.must = $('#upFile .must').remove();
  160. $node.fileName.removeAttr('lay-verify');
  161. $node.iosAppUrl.attr('lay-verify', 'required');
  162. $node.packageType.val('2');
  163. $('input[name="platform"]').val('IOS');
  164. }
  165. $('input[name="packageName"]').val('');
  166. $('input[name="version"]').val('');
  167. $('textarea[name="description"]').val('');
  168. $('input[name="downLoadUrl"]').val('');
  169. $('input[name="packageMd5"]').val('');
  170. });
  171. // 点击取消事件
  172. $node.resetBtn.on('click', function () {
  173. var index = parent.layer.getFrameIndex(window.name);
  174. parent.layer.close(index);
  175. });
  176. //视频上传
  177. layui.upload.render({
  178. elem: '#fileUploadButton'
  179. , url: '/common/file/upload/?isNeedMd5=true'
  180. ,exts: 'jpg|png|jpeg'
  181. , accept: 'file' //视频
  182. , before: function (obj) {
  183. //开启加载动画
  184. loadId = layer.msg('文件上传中', {
  185. icon: 16,
  186. shade: 0.4,
  187. time: false //取消自动关闭
  188. });
  189. }
  190. , done: function (res) {
  191. //关闭加载动画
  192. layer.close(loadId);
  193. if (res.code == "200") {
  194. var appType = $node.appType.val();
  195. var fullPath = res.data.fullPath;
  196. if (appType === "app") {
  197. var names = fullPath.split('.');
  198. var lastName = names[names.length - 1];
  199. if (lastName != 'apk') {
  200. layer.msg("上传的包格式不正确");
  201. return;
  202. }
  203. }
  204. $node.downloadButton.attr("href", $node.fastDfsServer.val() + fullPath);
  205. var fileName = fullPath;
  206. if (fullPath.lastIndexOf("/") >= 0) {
  207. fileName = fullPath.substr(fullPath.lastIndexOf("/") + 1);
  208. }
  209. $node.fileName.val(fileName);
  210. //显示文件下载
  211. $node.downloadButton.show();
  212. //服务器地址
  213. $node.downloadUrl.val(fullPath);
  214. //文件的md5
  215. $node.packageMd5.val(res.data.md5);
  216. } else {
  217. layer.msg("上传失败");
  218. }
  219. }
  220. , error: function () {
  221. //关闭加载动画
  222. layer.close(loadId);
  223. layer.msg("上传失败");
  224. }
  225. });
  226. });