product.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410
  1. var update_color_id_suff = "X_";
  2. var update_color_id = "1"; //添加时的临时ID
  3. var color_is_update = 1; //1是添加 2是修改
  4. /**
  5. * 添加颜色
  6. */
  7. function add_color(isUpdate){
  8. var $node = $("#addColorHtml");
  9. var flag = verificationColor();
  10. if(!flag){
  11. return false;
  12. }
  13. var colorId = $node.find(".colorId").val();
  14. if(color_is_update == 1){
  15. if(!isEmpty(isUpdate)){
  16. isUpdate = 2;
  17. colorId = update_color_id_suff+update_color_id;
  18. }
  19. update_color_id++;
  20. var colorHtml = '<tr class="text-c">' +
  21. '<input type="hidden" class="colorId" name="" id="" value="'+ colorId +'">'+
  22. '<input type="hidden" class="isUpdate" name="" id="" value="'+ isUpdate +'">';
  23. colorHtml += '<td width="40" class="colorName">'+$node.find(".colorName").val()+'</td>';
  24. colorHtml += '<td width="40" class="colorAbbreviation">'+$node.find(".colorAbbreviation").val()+'</td>';
  25. colorHtml += '<td width="40" class="colorDiscount">'+$node.find(".colorDiscount").val()+'</td>';
  26. colorHtml += '<td width="40" class="colorPrice">'+$node.find(".colorPrice").val()+'</td>';
  27. colorHtml += '<td width="40" class="colorBar">'+$node.find(".colorBar").val()+'</td>';
  28. colorHtml += '<td width="40" class="colorJdProductId">'+$node.find(".colorJdProductId").val()+'</td>';
  29. colorHtml += '<td width="40" class="colorIsWeight">'+$node.find(".colorIsWeight").val()+'</td>';
  30. colorHtml += '<td width="40" class="colorMode">'+$node.find(".colorMode").val()+'</td>';
  31. var colorIsMachine = $(':radio[name="colorIsMachine"]:checked').val();
  32. var colorIsMachineStr = '';
  33. if(colorIsMachine == 1){
  34. colorIsMachineStr = '水机产品';
  35. }else{
  36. colorIsMachineStr = '其他产品';
  37. }
  38. colorHtml += '<td width="40" ><span class="colorIsMachineMsg">'+colorIsMachineStr+'</span><input type="hidden" class="colorIsMachine" name="colorIsMachine" id="colorIsMachine" value="'+ colorIsMachine +'"></td>';
  39. var colorStatus = $(':radio[name="colorStatus"]:checked').val();
  40. var colorStatusStr = '';
  41. if(colorStatus == 1){
  42. colorStatusStr = '使用';
  43. }else{
  44. colorStatusStr = '禁用';
  45. }
  46. colorHtml += '<td width="40" ><span class="colorStatusMsg">'+colorStatusStr+'</span><input type="hidden" class="colorStatus" value="'+ colorStatus +'"></td>';
  47. var img = $node.find(".colorPicture").val();
  48. var showImg = '';
  49. if(isEmpty(img)){
  50. showImg = url_path +"/"+ img;
  51. }
  52. colorHtml += '<td width="40" >'
  53. + '<img style="width: 40px;" src="' + showImg + '" class="colorPictureMsg" >'
  54. + '<input type="hidden" class="colorPicture" value="'+ img +'">'
  55. + '</td>';
  56. colorHtml += '<td width="40">' +
  57. '<a href="javascript:void(0)" class="del_product all_down" onclick="updTr($(this))" >修改</a>&nbsp;&nbsp;' +
  58. '<a href="javascript:void(0)" class="del_product all_down" onclick="delTr($(this))" >删除</a>' +
  59. '</td>';
  60. colorHtml += '</tr>';
  61. if(isHaveColorList == 2){
  62. $("#add_color_id").html(colorHtml);
  63. isHaveColorList = 1;
  64. }else{
  65. $("#add_color_id").append(colorHtml);
  66. }
  67. }else{
  68. var noHaveColorId = true;
  69. $("#add_color_id").find("tr").each(function () {
  70. if($(this).find(".colorId").val() == colorId){
  71. noHaveColorId = false;
  72. $(this).find(".isUpdate").val(1);
  73. $(this).find(".colorName").html($node.find(".colorName").val());
  74. $(this).find(".colorAbbreviation").html($node.find(".colorAbbreviation").val());
  75. $(this).find(".colorDiscount").html($node.find(".colorDiscount").val());
  76. $(this).find(".colorPrice").html($node.find(".colorPrice").val());
  77. $(this).find(".colorBar").html($node.find(".colorBar").val());
  78. $(this).find(".colorJdProductId").html($node.find(".colorJdProductId").val());
  79. $(this).find(".colorIsWeight").html($node.find(".colorIsWeight").val());
  80. $(this).find(".colorMode").html($node.find(".colorMode").val());
  81. $(this).find(".colorPicture").val($node.find(".colorPicture").val());
  82. var colorIsMachine = $(':radio[name="colorIsMachine"]:checked').val();
  83. $(this).find(".colorIsMachine").val(colorIsMachine);
  84. var colorIsMachineStr = '';
  85. if(colorIsMachine == 1){
  86. colorIsMachineStr = '水机产品';
  87. }else{
  88. colorIsMachineStr = '其他产品';
  89. }
  90. $(this).find(".colorIsMachineMsg").html(colorIsMachineStr);
  91. var colorStatus = $(':radio[name="colorStatus"]:checked').val();
  92. $(this).find(".colorStatus").val(colorStatus);
  93. var colorStatusStr = '';
  94. if(colorStatus == 1){
  95. colorStatusStr = '使用';
  96. }else{
  97. colorStatusStr = '禁用';
  98. }
  99. $(this).find(".colorStatusMsg").html(colorStatusStr);
  100. var img = $node.find(".colorPicture").val();
  101. var showImg = '';
  102. if(isEmpty(img)){
  103. showImg = url_path +"/"+ img;
  104. }
  105. $(this).find(".colorPictureMsg").attr("src",showImg);
  106. }
  107. });
  108. if(noHaveColorId){
  109. var index = layer.confirm('该颜色已被删除,点击确认恢复。', {
  110. btn: ['确认','取消'] //按钮
  111. }, function(){
  112. color_is_update = 1;
  113. add_color(1);
  114. layer.closeAll();
  115. }, function(){
  116. colorClear();
  117. layer.closeAll();
  118. });
  119. }
  120. }
  121. $("#addColorHtml").hide();
  122. }
  123. /**
  124. * 取消颜色
  125. */
  126. function cancel_color() {
  127. $(".add-color-button").val("添加");
  128. $("#addColorHtml").hide();
  129. color_is_update = 1;
  130. $("#addColorHtml").find(".colorId").val("");
  131. colorClear();
  132. }
  133. /**
  134. * 验证
  135. */
  136. function verificationColor() {
  137. var flag = true;
  138. $("#addColorHtml").find(".add_color").each(function () {
  139. var $node = $(this);
  140. var myValue = $node.val();
  141. var myMinlength = $node.attr("myMinlength");
  142. if(!isEmpty(myMinlength)){
  143. myMinlength = 0;
  144. }
  145. if(!isEmpty(myValue) && myMinlength != 0){
  146. vailErrorMsg_3($(this),$(this).attr("errormsg"));
  147. flag = false;
  148. return false;
  149. }
  150. var myMaxlength = $node.attr("myMaxlength");
  151. if(isEmpty(myMaxlength)){
  152. if(myValue.length > myMaxlength){
  153. vailErrorMsg_3($(this),$(this).attr("errormsg"));
  154. flag = false;
  155. return false;
  156. }
  157. }
  158. });
  159. //判断是否有sku相等,京东69码相等,名称与简称相等
  160. var colorName = $("#addColorHtml").find(".colorName").val();
  161. var colorAbbreviation = $("#addColorHtml").find(".colorAbbreviation").val();
  162. var colorBar = $("#addColorHtml").find(".colorBar").val();
  163. var colorJdProductId = $("#addColorHtml").find(".colorJdProductId").val();
  164. $("#add_color_id").find("tr").each(function () {
  165. var tdcolorName = $(this).find(".colorName").html();
  166. var tdcolorAbbreviation = $(this).find(".colorAbbreviation").html();
  167. var tdcolorBar = $(this).find(".colorBar").html();
  168. var tdcolorJdProductId = $(this).find(".colorJdProductId").html();
  169. if(colorName == tdcolorName && colorAbbreviation == tdcolorAbbreviation && color_is_update == 1){
  170. vailErrorMsg_3($("#addColorHtml").find(".colorName"),"请勿重复添加");
  171. flag = false;
  172. return false;
  173. }
  174. if(colorBar == tdcolorBar && color_is_update == 1){
  175. vailErrorMsg_3($("#addColorHtml").find(".colorBar"),"69码重复");
  176. flag = false;
  177. return false;
  178. }
  179. if(isEmpty(tdcolorJdProductId) && colorJdProductId == tdcolorJdProductId && color_is_update == 1){
  180. vailErrorMsg_3($("#addColorHtml").find(".colorJdProductId"),"京东SKU重复");
  181. flag = false;
  182. return false;
  183. }
  184. });
  185. return flag;
  186. }
  187. function fileOnclick(node){
  188. $(node).parents(".upload_color_class").find('.color_file').click();
  189. }
  190. $(function(){
  191. $("#upload_color_img").change(function() {
  192. fileUpload("upload_color_img");
  193. });
  194. });
  195. $(function(){
  196. var loadIndex = 0;
  197. $("#form-order-add").Validform({
  198. tiptype: function (msg, o, cssctl) {
  199. if (o.type == 3) {//失败
  200. layer.msg(msg, {icon: 5, time: 3000});
  201. $(window).scrollTop(o.obj.offset().top - 40);
  202. }
  203. },
  204. datatype: {//自定义验证类型
  205. },
  206. ignoreHidden: true,
  207. tipSweep: true, //若为true,则只在表单提交时验证
  208. ajaxPost: true, //异步提交
  209. beforeCheck: function (curform) { //验证通过之前执行的函数
  210. var flag = false;
  211. },
  212. beforeSubmit: function (curform) { //验证通过之后执行的函数
  213. if(!$("#addColorHtml").is(':hidden')){//表示显示
  214. vailErrorMsg_3($("#addColorHtml"),"操作未完成,请‘确定’或者‘取消’颜色的更改。");
  215. return false;
  216. }
  217. var colorList = getColorList();
  218. if(colorList == null || colorList.length < 1){
  219. vailErrorMsg_3($("#add_color_id"),"至少需要一个颜色");
  220. return false;
  221. }
  222. $("#colorListJson").val(JSON.stringify(colorList));
  223. var productAreaRelaStr = '';
  224. $(".son_checkbox").each(function () {
  225. if($(this).is(':checked')){
  226. if(productAreaRelaStr == ''){
  227. productAreaRelaStr = $(this).val();
  228. }else{
  229. productAreaRelaStr += ','+$(this).val();
  230. }
  231. }
  232. });
  233. $("#productAreaRelaStr").val(productAreaRelaStr);
  234. loadIndex = layer.load(1, {
  235. shade: [0.5,'#fff'] //0.1透明度的白色背景
  236. });
  237. },
  238. callback: function (data) {//异步回调函数
  239. if (data) {
  240. var index = layer.alert(data.resultMsg, function (index) {
  241. if (data.returnCode == 200) {
  242. location.href = url_path + "/admin/product/product_page";
  243. }else {
  244. layer.close(index);
  245. }
  246. });
  247. if(loadIndex != 0 ){
  248. layer.close(loadIndex);
  249. }
  250. }
  251. return false;
  252. }
  253. });
  254. });
  255. /**
  256. * 获取颜色集合
  257. */
  258. function getColorList(){
  259. var colorList = new Array();
  260. $("#add_color_id").find("tr").each(function(){
  261. var color = new Object();
  262. if(!isEmpty($(this).find(".colorName").html()) || !isEmpty($(this).find(".colorBar").html())){
  263. return false;
  264. }
  265. var colorId = $(this).find(".colorId").val();
  266. if(colorId.indexOf(update_color_id_suff) > -1){ //新加的颜色
  267. color.isUpdate=2; //是否修改过 1:修改过 2:未曾修改
  268. }else{
  269. color.colorId = colorId;
  270. color.isUpdate = $(this).find(".isUpdate").val();
  271. }
  272. color.colorName = $(this).find(".colorName").html();
  273. color.colorAbbreviation = cufte($(this).find(".colorAbbreviation").html());
  274. color.colorDiscount = cufte($(this).find(".colorDiscount").html());
  275. color.colorPrice = cufte($(this).find(".colorPrice").html());
  276. color.colorBar = cufte($(this).find(".colorBar").html());
  277. color.colorJdProductId = cufte($(this).find(".colorJdProductId").html());
  278. color.colorIsWeight = cufte($(this).find(".colorIsWeight").html());
  279. color.colorMode = cufte($(this).find(".colorMode").html());
  280. color.colorPicture = cufte($(this).find(".colorPicture").val());
  281. color.colorIsMachine = cufte($(this).find('.colorIsMachine').val());
  282. color.colorStatus = cufte($(this).find('.colorStatus').val());
  283. colorList.push(color);
  284. });
  285. return colorList;
  286. }
  287. /**
  288. * 展示出添加color
  289. */
  290. function show_add_color() {
  291. $(".add-color-button").val("添加");
  292. $("#addColorHtml").show();
  293. color_is_update = 1;
  294. $("#addColorHtml").find(".colorId").val("");
  295. colorClear();
  296. }
  297. /**
  298. * 清除color
  299. */
  300. function colorClear() {
  301. $(".str").val("");
  302. $(".num").val(0);
  303. var uploadHtml = '<div class="download_file"><a href="javascript:void(0)" class="del_product all_down" onclick="fileOnclick(this)">上传图片</a></div>';
  304. $("#addColorHtml").find(".download_file").html(uploadHtml);
  305. $("#addColorHtml").find(".colorPicture").val("");
  306. $("#upload_color_img").change(function() {
  307. fileUpload("upload_color_img");
  308. });
  309. $(".colorNoMachine").iCheck('check');
  310. $(".colorIsStatus").iCheck('check');
  311. }
  312. /**
  313. * 修改
  314. */
  315. function updTr($this) {
  316. $this = $this.parents("tr");
  317. var $addColor = $("#addColorHtml");
  318. $addColor.find(".colorId").val($this.find(".colorId").val());
  319. $addColor.find(".colorName").val($this.find(".colorName").html());
  320. $addColor.find(".colorAbbreviation").val($this.find(".colorAbbreviation").html());
  321. $addColor.find(".colorDiscount").val($this.find(".colorDiscount").html());
  322. $addColor.find(".colorPrice").val($this.find(".colorPrice").html());
  323. $addColor.find(".colorBar").val($this.find(".colorBar").html());
  324. $addColor.find(".colorJdProductId").val($this.find(".colorJdProductId").html());
  325. $addColor.find(".colorIsWeight").val($this.find(".colorIsWeight").html());
  326. $addColor.find(".colorMode").val($this.find(".colorMode").html());
  327. var colorPicture = $this.find(".colorPicture").val();
  328. var html ='';
  329. if(isEmpty(colorPicture)){
  330. html = '<div class="download_file"><img style="width: 75px;" src="' + url_path +"/"+ colorPicture + '" class="" >&nbsp;&nbsp;<a href="javascript:void(0)" onclick="fileOnclick(this)">重新上传</a></div>';
  331. }else{
  332. html = '<div class="download_file"><a href="javascript:void(0)" class="del_product all_down" onclick="fileOnclick(this)">上传图片</a></div>';
  333. }
  334. $(".download_file").html(html);
  335. $(".upload_color_class").find(".colorPicture").val(colorPicture);
  336. $("#upload_color_img").change(function() {
  337. fileUpload("upload_color_img");
  338. });
  339. var colorIsMachine = $this.find('.colorIsMachine').val();
  340. if(colorIsMachine == 1){
  341. $(".colorIsMachine").iCheck('check');
  342. }else{
  343. $(".colorNoMachine").iCheck('check');
  344. }
  345. var colorStatus = $this.find('.colorStatus').val();
  346. if(colorStatus == 1){
  347. $(".colorIsStatus").iCheck('check');
  348. }else{
  349. $(".colorNoStatus").iCheck('check');
  350. }
  351. $(".add-color-button").val("修改");
  352. $("#addColorHtml").show();
  353. color_is_update = 2;
  354. }
  355. /**
  356. * 删除商品
  357. */
  358. function delTr($this){
  359. var length= $("#add_color_id").find("tr").length;
  360. if(length < 2){
  361. vailErrorMsg_3($("#add_color_id"),"必须要要有一个颜色");
  362. }else{
  363. $this.parents("tr").remove();
  364. }
  365. }
  366. function fileUpload(idValue) {
  367. $.ajaxFileUpload({
  368. url: url_path + "/admin/product/fileUpload",
  369. secureuri: false,
  370. fileElementId: idValue,//文件选择框的id属性/名称
  371. dataType: 'json', //json
  372. success: function (data) {
  373. if (data.returnCode == 200) {
  374. var html = '<div><img style="width: 75px;" src="' + url_path +"/"+ data.returnMsg.imgUrl + '" class="del_product all_down " >&nbsp;&nbsp;<a href="javascript:void(0)" onclick="fileOnclick(this)">重新上传</a></div>';
  375. $("#" + idValue).parent().find(".download_file").html(html);
  376. $("#"+idValue).parent().find(".colorPicture").val(data.returnMsg.imgUrl);
  377. $("#upload_color_img").change(function() {
  378. fileUpload("upload_color_img");
  379. });
  380. }else{
  381. layer.msg('上传失败,请重试!',{icon: 5,time:2000});
  382. }
  383. }
  384. });
  385. }