add.php 27 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652
  1. <?php use common\widgets\UeditorWidget; ?>
  2. <div class="page-title">
  3. <div class="title-env">
  4. <h1 class="title">添加商品</h1>
  5. </div>
  6. <div class="breadcrumb-env">
  7. <ol class="breadcrumb bc-1">
  8. <li>
  9. <a href="/"><i class="fa-home"></i>Home</a>
  10. </li>
  11. <li>
  12. <a href="javascript:void(0)">商城管理</a>
  13. </li>
  14. <li class="active">
  15. <strong>商品管理</strong>
  16. </li>
  17. </ol>
  18. </div>
  19. </div>
  20. <div class="row">
  21. <div class="col-sm-12">
  22. <div class="panel panel-default">
  23. <div class="panel-body">
  24. <form role="form" class="form-horizontal" id="goods-data-form">
  25. <input type="hidden" name="_csrf" value="<?= Yii::$app->request->csrfToken ?>" />
  26. <div class="form-group">
  27. <label class="col-sm-2 control-label">*名称:</label>
  28. <div class="col-sm-10">
  29. <input type="text" class="form-control" name="goodsName" placeholder="">
  30. <p></p>
  31. </div>
  32. </div>
  33. <!-- <div class="form-group">
  34. <label class="col-sm-2 control-label">*售价:</label>
  35. <div class="col-sm-10">
  36. <input type="tel" class="form-control" name="price" placeholder="">
  37. <p></p>
  38. </div>
  39. </div> -->
  40. <div class="form-group">
  41. <label class="col-sm-2 control-label">*已售出:</label>
  42. <div class="col-sm-10">
  43. <input type="tel" class="form-control" name="sold" placeholder="可自定义销售量,实际销售量会在此基础上累加">
  44. <p></p>
  45. </div>
  46. </div>
  47. <div class="form-group">
  48. <label class="col-sm-2 control-label" for="field-1">花材:</label>
  49. <div class="col-sm-10">
  50. <input type="text" class="form-control" name="material" placeholder="">
  51. <p></p>
  52. </div>
  53. </div>
  54. <div class="form-group">
  55. <label class="col-sm-2 control-label" for="field-1">花语:</label>
  56. <div class="col-sm-10">
  57. <input type="text" class="form-control" name="representative" placeholder="">
  58. <p></p>
  59. </div>
  60. </div>
  61. <div class="form-group-separator"></div>
  62. <div class="form-group">
  63. <label class="col-sm-2 control-label">*图片:</label>
  64. <div>
  65. <div style="margin-left:16px;width:113px;height:174px;float:left;display:inline-block">
  66. 封面[550x550]:
  67. <div style="width:97px;height:110px;display:inline-block;margin-bottom:3px;">
  68. <img src="/images/nopicture.png" name="cover" style="width:97px;height:110px;" class="img-thumbnail" />
  69. </div>
  70. <a href="javascript:;" class="a-upload">
  71. <input type="file" id="cover" accept="image/*" value="" />选择图片
  72. </a>
  73. <input type="hidden" name="cover" value="" />
  74. </div>
  75. <div style="margin-left:16px;width:157px;height:174px;float:left;display:inline-block;float:left;">
  76. 图Ⅰ[800x800]:
  77. <div style="width:141px;height:110px;display:inline-block;margin-bottom:3px;">
  78. <img src="/images/nopicture.png" name="shopImg1" style="width:128px;height:110px;" class="img-thumbnail" />
  79. </div>
  80. <a href="javascript:;" class="a-upload">
  81. <input type="file" accept="image/*" id="shopImg1" value="" />选择图片
  82. </a>
  83. <input type="hidden" name="shopImg1" value="" />
  84. </div>
  85. <div style="margin-left:16px;width:157px;height:174px;float:left;display:inline-block;float:left;">
  86. 图Ⅱ[800x800]:
  87. <div style="width:141px;height:110px;display:inline-block;margin-bottom:3px;">
  88. <img src="/images/nopicture.png" name="shopImg2" style="width:128px;height:110px;" class="img-thumbnail" />
  89. </div>
  90. <a href="javascript:;" class="a-upload">
  91. <input type="file" accept="image/*" id="shopImg2" value="" />选择图片
  92. </a>
  93. <input type="hidden" name="shopImg2" value="" />
  94. </div>
  95. <div style="margin-left:16px;width:157px;height:174px;float:left;display:inline-block;float:left;">
  96. 图Ⅲ[800x800]:
  97. <div style="width:141px;height:110px;display:inline-block;margin-bottom:3px;">
  98. <img src="/images/nopicture.png" name="shopImg3" style="width:128px;height:110px;" class="img-thumbnail" />
  99. </div>
  100. <a href="javascript:;" class="a-upload">
  101. <input type="file" accept="image/*" id="shopImg3" value="" />选择图片
  102. </a>
  103. <input type="hidden" name="shopImg3" value="" />
  104. </div>
  105. <div style="clear:both;margin-left:228px;"><p></p></div>
  106. </div>
  107. </div>
  108. <div class="form-group-separator"></div>
  109. <div class="form-group price-area">
  110. <label class="col-sm-2 control-label">价格选项:</label>
  111. <div class="col-sm-10">
  112. <div class="col-sm-2">
  113. <input type="radio" name="priceType" data-type='single' value='single' checked="checked"> 单种价格
  114. </div>
  115. <div class="col-sm-2">
  116. <input type="radio" name="priceType" data-type='multi' value='multi'> 多种价格
  117. </div>
  118. </div>
  119. </div>
  120. <div class="form-group">
  121. <label class="col-sm-2 control-label">价格:</label>
  122. <div class="single-price-area">
  123. <div class="col-sm-10" style="color:#555">
  124. <div class="form-group">
  125. <div class="col-sm-10">
  126. <input type="text" name="price" class="form-control" value="" >
  127. <p></p>
  128. </div>
  129. </div>
  130. </div>
  131. </div>
  132. <div class="multi-price-area" style="display:none; color:#555;">
  133. <div class="col-sm-10">
  134. <div class="form-group">
  135. <div class="col-sm-10">
  136. 名称:<input type="text" name="goodTitle[]" class="form-control" style="width:300px;display:inline-block;" placeholder="">
  137. &nbsp;&nbsp;&nbsp;&nbsp;价格:<input type="text" name="multiPrice[]" class="form-control" style="width:100px;display:inline-block;" placeholder="">
  138. &nbsp;&nbsp;&nbsp;&nbsp;<img src="" alt="">
  139. &nbsp;&nbsp;<button type="button" class="btn btn-sm btn-white" style="display:none;margin-top:5px;">上传图片</button>
  140. </div>
  141. </div>
  142. <div class="form-group">
  143. <div class="col-sm-10">
  144. 名称:<input type="text" name="goodTitle[]" class="form-control" style="width:300px;display:inline-block;" placeholder="">
  145. &nbsp;&nbsp;&nbsp;&nbsp;价格:<input type="text" name="multiPrice[]" class="form-control" style="width:100px;display:inline-block;" placeholder="">
  146. &nbsp;&nbsp;&nbsp;&nbsp;<img src="" alt="">
  147. &nbsp;&nbsp;<button type="button" class="btn btn-sm btn-white" style="display:none;margin-top:5px;">上传图片</button>
  148. </div>
  149. </div>
  150. </div>
  151. <div class="col-sm-10">
  152. <label class="col-sm-2 control-label"></label>
  153. <div class="col-sm-8" style="margin-left: 35px;">
  154. <button type="button" class="btn btn-turquoise add-price-btn"><li class="fa-plus"></li> 增加价格</button>
  155. </div>
  156. </div>
  157. </div>
  158. </div>
  159. <div class="form-group price-area">
  160. <label class="col-sm-2 control-label">运费:</label>
  161. <div class="col-sm-10">
  162. <div class="col-sm-2">
  163. <input type="radio" name="isCharge" value='1' checked="checked"> 按距离收费
  164. </div>
  165. <div class="col-sm-2">
  166. <input type="radio" name="isCharge" value='0'> 免运费
  167. </div>
  168. </div>
  169. </div>
  170. <div class="form-group-separator"></div>
  171. <div class="form-group">
  172. <label class="col-sm-2 control-label" for="field-3">*商品简介:</label>
  173. <div class="col-sm-10">
  174. <?= UeditorWidget::widget(['name' => 'content','content' => '']); ?>
  175. <p></p>
  176. </div>
  177. </div>
  178. <div class="form-group-separator"></div>
  179. <div class="form-group">
  180. <label class="col-sm-2 control-label">*所属分类</label>
  181. <div class="col-sm-10 category-area">
  182. <div style="border:1px solid #CCC;padding-left:8px;border-radius:4px;">
  183. <?php
  184. if(!empty($categoryList)){
  185. foreach($categoryList as $clKey => $clVal){
  186. if(!empty($clVal['child'])){
  187. echo '<label class="checkbox-inline" style="padding-left:0px;">'.$clVal['categoryName'].'</label><p>';
  188. foreach($clVal['child'] as $ccKey => $ccVal)
  189. {
  190. echo '&nbsp;&nbsp;&nbsp;|-- <label class="checkbox-inline"><input name="categoryId[]" value="'.$ccVal['id'].'" type="checkbox" >'.$ccVal['categoryName'].'</label>';
  191. }
  192. echo '</p>';
  193. }else{
  194. echo '<label class="checkbox-inline"><input name="categoryId[]" value="'.$clVal['id'].'" type="checkbox" >'.$clVal['categoryName'].'</label><p></p>';
  195. }
  196. }
  197. }
  198. ?>
  199. </div>
  200. <p name="categoryIdMention"></p>
  201. </div>
  202. </div>
  203. <div class="form-group-separator"></div>
  204. <div class="form-group">
  205. <label class="col-sm-2 control-label" for="field-4">*商品状态</label>
  206. <div class="col-sm-10">
  207. <div class="radio-inline">
  208. <label>
  209. <input type="radio" name="status" checked value="0">
  210. 上架
  211. </label>
  212. </div>
  213. <div class="radio-inline">
  214. <label>
  215. <input type="radio" name="status" value="1">
  216. 下架
  217. </label>
  218. </div>
  219. </div>
  220. </div>
  221. <div class="form-group-separator"></div>
  222. <div class="form-group" style="text-align:center;">
  223. <button type="button" onclick="addSubmit('click',this)" class="btn btn-info btn-single">确认</button>
  224. <button type="button" onclick="history.go(-1);" class="btn btn-info btn-single">返回</button>
  225. </div>
  226. </form>
  227. </div>
  228. </div>
  229. </div>
  230. </div>
  231. <!-- footer -->
  232. <?php
  233. use backend\widgets\FooterWidget;
  234. ?>
  235. <?= FooterWidget::widget()?>
  236. <!-- footer -->
  237. <script src="/js/lrz/dist/lrz.bundle.js"></script>
  238. <script>
  239. //alert($(".form-group .category-id").length);
  240. //添加商品验证流程
  241. var goodsName = $("input[name=goodsName]");
  242. var price = $("input[name=price]");
  243. var sold = $("input[name=sold]");
  244. var material = $("input[name=material]");
  245. var representative = $(":input[name=representative]");
  246. var cover = $(":input[name=cover]");
  247. var shopImg1 = $(":input[name=shopImg1]");
  248. var shopImg2 = $(":input[name=shopImg2]");
  249. var shopImg3 = $(":input[name=shopImg3]");
  250. var content = $("textarea[name=content]");
  251. var needValidate = [goodsName,price,sold,material,representative];
  252. //添加商品验证流程
  253. addSubmit();
  254. function addSubmit()
  255. {
  256. var verifyStatus = true;
  257. setStats(goodsName, '请填写商品名称', function(val, mess){
  258. var info=[false, mess];
  259. if(val.length <= 0){
  260. info[1] = '请填写商品名称';
  261. }else if(getLength(val) >=0 && getLength(val) <=40){
  262. info[0] = true;
  263. info[1] = '填写正确';
  264. }else{
  265. info[0] = false;
  266. }
  267. return info;
  268. });
  269. var priceType = $('.price-area input:radio[name=priceType]:checked').attr('data-type');
  270. if(priceType == 'single'){
  271. setStats(price, '请填写价格', function(val, mess){
  272. var info=[false, mess];
  273. if(isNotNull(val) == false || isNaN(val)){
  274. info[1] = '请填写价格';
  275. }else{
  276. info[0] = true;
  277. }
  278. return info;
  279. });
  280. }else{
  281. var units = $('.multi-price-area .col-sm-10').find('.form-group');
  282. units.each(function(e){
  283. var title = $(this).find('.form-control').eq(0).val();
  284. var price = $(this).find('.form-control').eq(1).val();
  285. if($.trim(title) == ''){
  286. xhPopMsg('价格项: 名称不为空', 2500);
  287. verifyStatus = false;
  288. return;
  289. }
  290. if($.trim(price) == ''){
  291. xhPopMsg('价格项: 有价格未填写', 2500);
  292. verifyStatus = false;
  293. return;
  294. }
  295. if(isNaN(price)){
  296. xhPopMsg('价格项: 价格必须为数字', 2500);
  297. verifyStatus = false;
  298. return;
  299. }
  300. });
  301. var singlePriceObj = $('.single-price-area input[name=price]');
  302. singlePriceObj.attr('addStatus', 'yes');
  303. singlePriceObj.siblings('p').removeClass('help-error-mention').html('');
  304. }
  305. setStats(sold, '请填写售量', function(val, mess){
  306. var info=[false, mess];
  307. if(isNotNull(val) == false || isNaN(val)){
  308. info[1] = '请填写售量';
  309. }else{
  310. info[0] = true;
  311. }
  312. return info;
  313. });
  314. setStats(material, '请填写花材', function(val, mess){
  315. var info=[false, mess];
  316. if(getLength(val) >=0){
  317. info[0] = true;
  318. info[1] = '填写正确';
  319. }else{
  320. info[1] = '请填写花材';
  321. }
  322. return info;
  323. });
  324. setStats(representative, '请填写花语', function(val, mess){
  325. var info=[false, mess];
  326. if(getLength(val) >=0){
  327. info[0] = true;
  328. info[1] = '填写正确';
  329. }else{
  330. info[1] = '请填写花语';
  331. }
  332. return info;
  333. });
  334. setStats(shopImg1, '请填写上传图片', function(val, mess){
  335. var info=[false, mess];
  336. if(getLength(val) >=0){
  337. info[0] = true;
  338. info[1] = '填写正确';
  339. }else{
  340. info[1] = '至少需要上传一张图片';
  341. }
  342. return info;
  343. });
  344. setStats(content, '请填写简介', function(val, mess){
  345. var info=[false, mess];
  346. if(val.length > 0){
  347. info[0] = true;
  348. info[1] = '填写正确';
  349. }else{
  350. info[1] = '请填写简介';
  351. }
  352. return info;
  353. });
  354. if(arguments[0] == 'click'){//用户点击提交
  355. var submitButton = arguments[1];//获取提交按钮对象
  356. var submitButtonObj = $(submitButton);
  357. if(submitButtonObj.attr('submitStatus') == 'yes'){
  358. alert('表单已经提交成功,不允许重复提交');
  359. return;//表单已经提交成功,不允许重复提交
  360. }
  361. for(var m=0;m<needValidate.length;m++){
  362. var singleObj = needValidate[m];
  363. if(singleObj.attr('addStatus') == undefined){
  364. singleObj.blur();
  365. }
  366. if(singleObj.attr('addStatus') == 'no'){
  367. verifyStatus = false;
  368. continue;
  369. }
  370. }
  371. //封面 图片1判断
  372. if(isNotNull(shopImg1.val()) == false || isNotNull(cover.val()) == false){
  373. shopImg1.parent().parent().find('p').addClass('help-error-mention').html('封面和图Ⅰ必须上传');
  374. verifyStatus = false;
  375. }else{
  376. shopImg1.parent().parent().find('p').removeClass('help-error-mention').html('');
  377. }
  378. //确认有没选择分类
  379. var checkNum = $(".form-group .category-area :checkbox:checked").length;
  380. if(parseInt(checkNum) < 1){
  381. $("p[name=categoryIdMention]").addClass('help-error-mention').html('请选择分类');
  382. verifyStatus = false;
  383. }else{
  384. $("p[name=categoryIdMention]").removeClass('help-error-mention').html('');
  385. }
  386. if(verifyStatus){
  387. /*var statusValue = $('input:radio[name=status]:checked').val();//商品状态
  388. var newCategoryId = [];
  389. $(":input[name=categoryId]:checked").each(function(){
  390. var thisCId = $(this).val();
  391. newCategoryId.push(thisCId);
  392. });*/
  393. /*var data = "goodsName="+goodsName.val()+"&price="+price.val()+"&sold="+sold.val()+"&representative="+representative.val();
  394. data += "&cover="+cover.val()+"&shopImg1="+shopImg1.val()+"&shopImg2="+shopImg2.val()+"&material="+material.val();
  395. data += "&content="+content.val()+"&shopImg3="+shopImg3.val();
  396. data += "&_csrf=<?= Yii::$app->request->csrfToken ?>&status="+statusValue+"&categoryId="+newCategoryId.join(',');*/
  397. var data = $('#goods-data-form').serialize();
  398. $.ajax({
  399. type:"POST",
  400. url:'/goods/save-add',
  401. data:data,
  402. dataType:'json',
  403. async:false,
  404. success:function(data){
  405. if(data.code == 'A0001'){
  406. submitButtonObj.attr('submitStatus','yes');
  407. xhPopMsg(data.msg,1300);//调用定时浮层 XXX毫秒后消失
  408. setTimeout(function(){
  409. window.location.href='/goods/list';
  410. },1400);
  411. }else{
  412. xhPopMsg(data.msg,1300);
  413. }
  414. }
  415. });
  416. }
  417. }
  418. }
  419. function setStats(obj,mess,check)
  420. {
  421. obj.focus(function(){
  422. $(this).removeAttr('addStatus');
  423. $(this).siblings('p').removeClass('help-error-mention').html('');
  424. $(this).parent().parent().removeClass("has-success").removeClass('has-error');
  425. });
  426. obj.blur(function(){
  427. var objVal = obj.val();
  428. var info = check(objVal,mess);
  429. if(info[0]){
  430. $(this).attr('addStatus','yes');
  431. $(this).siblings('p').removeClass('help-error-mention').html('');
  432. $(this).parent().parent().addClass("has-success").removeClass("has-error");
  433. }else{
  434. $(this).attr('addStatus','no');
  435. $(this).siblings('p').addClass('help-error-mention').html(info[1]);
  436. $(this).parent().parent().addClass("has-error").removeClass("has-success");
  437. }
  438. });
  439. }
  440. document.querySelector('#cover').addEventListener('change', function () {
  441. //参数说明 https://github.com/think2011/localResizeIMG/wiki/2.-%E5%8F%82%E6%95%B0%E6%96%87%E6%A1%A3
  442. lrz(this.files[0],{
  443. width: 800,// 图片最大不超过的宽度,默认为原图宽度,高度不设时会适应宽度。
  444. fieldName:'Filedata',//文件名
  445. quality:1,//图片质量 0.1 - 1
  446. }).then(function (rst) {
  447. // 处理成功会执行
  448. rst.formData.append('fileLen', rst.fileLen);
  449. rst.formData.append('_csrf', '<?= Yii::$app->request->csrfToken?>');
  450. $.ajax({
  451. //url: '/main/img', // 这个地址做了跨域处理,可以用于实际调试
  452. url: '/upload/upload-goods-img', // 这个地址做了跨域处理,可以用于实际调试
  453. data: rst.formData,
  454. processData: false,
  455. contentType: false,
  456. type: 'POST',
  457. dataType:'json',
  458. success: function (data) {
  459. $("img[name=cover]").attr('src','<?= Yii::$app->params['imgUrl']; ?>'+data.url);
  460. $("input[name='cover']").val(data.url);
  461. }
  462. });
  463. }).catch(function (err) {
  464. // 处理失败会执行
  465. //console.log(err);
  466. alert(err);
  467. }).always(function () {
  468. // 不管是成功失败,都会执行
  469. });
  470. });
  471. document.querySelector('#shopImg1').addEventListener('change', function () {
  472. //参数说明 https://github.com/think2011/localResizeIMG/wiki/2.-%E5%8F%82%E6%95%B0%E6%96%87%E6%A1%A3
  473. lrz(this.files[0],{
  474. width: 800,// 图片最大不超过的宽度,默认为原图宽度,高度不设时会适应宽度。
  475. fieldName:'Filedata',//文件名
  476. quality:1,//图片质量 0.1 - 1
  477. })
  478. .then(function (rst) {
  479. // 处理成功会执行
  480. rst.formData.append('fileLen', rst.fileLen);
  481. rst.formData.append('_csrf', '<?= Yii::$app->request->csrfToken?>');
  482. $.ajax({
  483. //url: '/main/img', // 这个地址做了跨域处理,可以用于实际调试
  484. url: '/upload/upload-goods-img', // 这个地址做了跨域处理,可以用于实际调试
  485. data: rst.formData,
  486. processData: false,
  487. contentType: false,
  488. type: 'POST',
  489. dataType:'json',
  490. success: function (data) {
  491. $("img[name=shopImg1]").attr('src','<?= Yii::$app->params['imgUrl']; ?>'+data.url);
  492. $("input[name='shopImg1']").val(data.url);
  493. }
  494. });
  495. })
  496. .catch(function (err) {
  497. // 处理失败会执行
  498. })
  499. .always(function () {
  500. // 不管是成功失败,都会执行
  501. });
  502. });
  503. document.querySelector('#shopImg2').addEventListener('change', function () {
  504. //参数说明 https://github.com/think2011/localResizeIMG/wiki/2.-%E5%8F%82%E6%95%B0%E6%96%87%E6%A1%A3
  505. lrz(this.files[0],{
  506. width: 800,// 图片最大不超过的宽度,默认为原图宽度,高度不设时会适应宽度。
  507. fieldName:'Filedata',//文件名
  508. quality:1,//图片质量 0.1 - 1
  509. })
  510. .then(function (rst) {
  511. // 处理成功会执行
  512. rst.formData.append('fileLen', rst.fileLen);
  513. rst.formData.append('_csrf', '<?= Yii::$app->request->csrfToken?>');
  514. $.ajax({
  515. //url: '/main/img', // 这个地址做了跨域处理,可以用于实际调试
  516. url: '/upload/upload-goods-img', // 这个地址做了跨域处理,可以用于实际调试
  517. data: rst.formData,
  518. processData: false,
  519. contentType: false,
  520. type: 'POST',
  521. dataType:'json',
  522. success: function (data) {
  523. $("img[name=shopImg2]").attr('src','<?= Yii::$app->params['imgUrl']; ?>'+data.url);
  524. $("input[name='shopImg2']").val(data.url);
  525. }
  526. });
  527. })
  528. .catch(function (err) {
  529. // 处理失败会执行
  530. })
  531. .always(function () {
  532. // 不管是成功失败,都会执行
  533. });
  534. });
  535. document.querySelector('#shopImg3').addEventListener('change', function () {
  536. //参数说明 https://github.com/think2011/localResizeIMG/wiki/2.-%E5%8F%82%E6%95%B0%E6%96%87%E6%A1%A3
  537. lrz(this.files[0],{
  538. width: 800,// 图片最大不超过的宽度,默认为原图宽度,高度不设时会适应宽度。
  539. fieldName:'Filedata',//文件名
  540. quality:1,//图片质量 0.1 - 1
  541. })
  542. .then(function (rst) {
  543. // 处理成功会执行
  544. rst.formData.append('fileLen', rst.fileLen);
  545. rst.formData.append('_csrf', '<?= Yii::$app->request->csrfToken?>');
  546. $.ajax({
  547. //url: '/main/img', // 这个地址做了跨域处理,可以用于实际调试
  548. url: '/upload/upload-goods-img', // 这个地址做了跨域处理,可以用于实际调试
  549. data: rst.formData,
  550. processData: false,
  551. contentType: false,
  552. type: 'POST',
  553. dataType:'json',
  554. success: function (data) {
  555. $("img[name=shopImg3]").attr('src','<?= Yii::$app->params['imgUrl']; ?>'+data.url);
  556. $("input[name='shopImg3']").val(data.url);
  557. }
  558. });
  559. })
  560. .catch(function (err) {
  561. // 处理失败会执行
  562. })
  563. .always(function () {
  564. // 不管是成功失败,都会执行
  565. });
  566. });
  567. function delPrice(obj){
  568. obj.closest('.form-group').remove();
  569. }
  570. $(function(){
  571. //增加价格按钮事件
  572. $('.add-price-btn').on('click', function(){
  573. var unitNum = $(this).closest('.form-group').find('.multi-price-area .col-sm-10').eq(0).find('.form-group').length;
  574. if(unitNum > 9){
  575. xhPopMsg('价格最多只可设置10个', 2500);
  576. return;
  577. }
  578. var content = '<div class="form-group"><div class="col-sm-10">名称:<input type="text" name="goodTitle[]" class="form-control" style="width:300px;display:inline-block;" placeholder="">&nbsp;&nbsp;&nbsp;&nbsp;价格:<input type="text" name="multiPrice[]" class="form-control" style="width:100px;display:inline-block;" placeholder="">&nbsp;&nbsp;&nbsp;&nbsp;<img src="" alt="">&nbsp;&nbsp;<button type="button" class="btn btn-sm btn-white" style="display:none;margin-top:5px;">上传图片</button>&nbsp;&nbsp;&nbsp;&nbsp;<button class="btn btn-sm btn-pink" onclick="delPrice(this)" style="margin-top:5px;"><li class="fa-remove">删除</li></button></div></div>';
  579. $(this).closest('.form-group').find('.multi-price-area .col-sm-10').eq(0).find('.form-group').last().after(content);
  580. });
  581. //价格选项事件
  582. $('.price-area input:radio[name=priceType]').on('change', function(){
  583. var type = $(this).attr('data-type');
  584. if(type == 'single'){
  585. $('.single-price-area').show();
  586. $('.multi-price-area').hide();
  587. }else{
  588. $('.multi-price-area').show();
  589. $('.single-price-area').hide();
  590. var singlePriceObj = $('.single-price-area input[name=price]');
  591. singlePriceObj.attr('addStatus', 'yes');
  592. singlePriceObj.siblings('p').removeClass('help-error-mention').html('');
  593. }
  594. })
  595. });
  596. </script>