index.blade.php 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514
  1. @extends('layouts.base')
  2. @section('content')
  3. @section('title', trans('商品列表'))
  4. <div class="w1200 ">
  5. <script type="text/javascript" src="./resource/js/lib/jquery-ui-1.10.3.min.js"></script>
  6. <link rel="stylesheet" type="text/css" href="{{static_url('css/font-awesome.min.css')}}">
  7. <link rel="stylesheet" type="text/css" href="{{static_url('yunshop/goods/goods.css')}}"/>
  8. <div id="goods-index" class=" rightlist ">
  9. {{--<div class="right-titpos">
  10. <ul class="add-snav">
  11. <li class="active"><a href="#">商品发布</a></li>
  12. @section('add_goods')
  13. <a class='btn btn-primary' href="{{yzWebUrl('plugin.lease-toy.admin.goods.create')}}" style="margin-bottom:5px;"><i class='fa fa-plus'></i> 发布{{$lang['good']}}</a>
  14. @show
  15. </ul>
  16. </div>
  17. --}}
  18. <div class="right-addbox"><!-- 此处是右侧内容新包一层div -->
  19. <div class="panel panel-info">
  20. <div class="panel-body">
  21. <form action="" method="post" class="form-horizontal" role="form">
  22. <input type="hidden" name="c" value="site"/>
  23. <input type="hidden" name="a" value="entry"/>
  24. <input type="hidden" name="m" value="yun_shop"/>
  25. <input type="hidden" name="do" value="shop"/>
  26. <input type="hidden" name="p" value="goods"/>
  27. <input type="hidden" name="op" value="display"/>
  28. @section('search')
  29. <div class="form-group col-xs-12 col-sm-8 col-lg-2">
  30. <!-- <label class="col-xs-12 col-sm-2 col-md-2 col-lg-2 control-label"></label>-->
  31. <div class="">
  32. <input class="form-control" placeholder="请输入商品id" name="search[goods_id]" id=""
  33. type="text" value="{{$requestSearch['goods_id']}}" />
  34. </div>
  35. </div>
  36. <div class="form-group col-xs-12 col-sm-8 col-lg-2">
  37. <!-- <label class="col-xs-12 col-sm-2 col-md-2 col-lg-2 control-label"></label>-->
  38. <div class="">
  39. <input class="form-control" placeholder="请输入关键字" name="search[keyword]" id=""
  40. type="text" value="{{$requestSearch['keyword']}}" />
  41. </div>
  42. </div>
  43. <div class="form-group col-xs-12 col-sm-8 col-lg-2">
  44. <!-- <label class="col-xs-12 col-sm-2 col-md-2 col-lg-2 control-label">状态</label>-->
  45. <div class="">
  46. <select name="search[status]" class='form-control'>
  47. <option value="">状态不限</option>
  48. <option value="1"
  49. @if($requestSearch['status'] == '1') selected @endif>{{$lang['putaway']}}</option>
  50. <option value="0"
  51. @if($requestSearch['status'] == '0') selected @endif>{{$lang['soldout']}}</option>
  52. </select>
  53. </div>
  54. </div>
  55. <div class="form-group col-xs-12 col-sm-8 col-lg-5">
  56. <!--<label class="col-xs-12 col-sm-3 col-md-2 control-label">商品分类</label>-->
  57. <div class="col-sm-12 col-xs-12">
  58. {!!$catetory_menus!!}
  59. </div>
  60. </div>
  61. <div class="form-group col-xs-12 col-sm-8 col-lg-3">
  62. <!--<label class="col-xs-12 col-sm-3 col-md-2 control-label">品牌</label>-->
  63. <div class="col-sm-8 col-xs-12">
  64. <select name="search[brand_id]" id="brand">
  65. <option value="">请选择品牌</option>
  66. @if(!empty($brands))
  67. @foreach($brands as $brand)
  68. <option value="{{$brand['id']}}"
  69. @if($requestSearch['brand_id'] == $brand['id']) selected @endif>{{$brand['name']}}</option>
  70. @endforeach
  71. @endif
  72. </select>
  73. </div>
  74. </div>
  75. <div class='form-input col-xs-12 col-sm-8 col-lg-6'>
  76. <p class="input-group-addon price">价格区间</p>
  77. <input class="form-control price" name="search[min_price]" id="minprice" type="text"
  78. value="" onclick="value='';" />
  79. <p class="line">—</p>
  80. <input class="form-control price" name="search[max_price]" id="max_price"
  81. type="text" value="" onclick="value='';">
  82. </div>
  83. <div class="form-group col-xs-12 col-sm-8 col-lg-5 goods-type">
  84. <label class="col-xs-12 col-sm-2 col-md-2 col-lg-2 control-label goods-type">商品类型</label>
  85. <div class="col-xs-12 col-sm-8 col-lg-9">
  86. @foreach($product_attr_list as $product_attr_key => $product_attr_name)
  87. <label for="{$product_attr_key}">
  88. <input type="checkbox"
  89. @if(@in_array($product_attr_key, $product_attr)) checked="checked"
  90. @endif name="search[product_attr][]"
  91. value="{{$product_attr_key}}" id="{{$product_attr_key}}"/>
  92. {{$product_attr_name}}
  93. </label>
  94. @endforeach
  95. </div>
  96. </div>
  97. <!--
  98. <div class="form-group">
  99. <label class="col-xs-12 col-sm-2 col-md-2 col-lg-2 control-label">价格区间</label>
  100. <div class="col-xs-6 col-sm-4 col-lg-4">
  101. <input class="form-control" name="search[min_price]" id="minprice" type="text" value="" onclick="value='';" />
  102. </div>
  103. <div class="col-xs-6 col-sm-4 col-lg-4">
  104. <input class="form-control" name="search[max_price]" id="max_price" type="text" value="" onclick="value='';" />
  105. </div>
  106. </div>-->
  107. @show
  108. <div class="form-group col-xs-8 col-sm-8 col-lg-1">
  109. <!-- <label class="col-sm-9"></label>-->
  110. <button class="btn btn-block btn-success"><i class="fa fa-search"></i> 搜索</button>
  111. </div>
  112. </form>
  113. </div>
  114. </div>
  115. <style type="text/css">
  116. </style>
  117. <form id="goods-list" action="{!! yzWebUrl($sort_url) !!}" method="post">
  118. <div class="panel panel-default">
  119. <div class="panel-body table-responsive">
  120. <label class="btn btn-success checkall">全选</label>
  121. <label class="btn btn-info batchenable">批量上架</label>
  122. <label class="btn batchdisable">批量下架</label>
  123. <label class="btn btn-danger batchdel">批量删除</label>
  124. <table class="table table-hover">
  125. <thead class="navbar-inner">
  126. <tr>
  127. <th width="3%">选择</th>
  128. <th width="6%">ID</th>
  129. <th width="6%">排序</th>
  130. <th width="6%">{{$lang['good']}}</th>
  131. <th width="31%">&nbsp;</th>
  132. <th width="10%">{{$lang['price']}}<br/>{{$lang['repertory']}}</th>
  133. <th width="5%">销量</th>
  134. <th width="10%">@section('status')状态@show</th>
  135. <th width="25%">操作</th>
  136. </tr>
  137. </thead>
  138. <tbody>
  139. @section('foreach')
  140. @foreach($list as $item)
  141. <tr>
  142. <td width="3%"><input type="checkbox" name="check1" value="{{$item['id']}}"></td>
  143. <td width="6%">{{$item['id']}}</td>
  144. <td width="6%">
  145. <input type="text" class="form-control"
  146. name="display_order[{{$item['id']}}]"
  147. value="{{$item['display_order']}}">
  148. </td>
  149. <td width="6%" title="{{$item['title']}}">
  150. <img src="{{tomedia($item['thumb'])}}"
  151. style="width:40px;height:40px;padding:1px;border:1px solid #ccc;"/>
  152. </td>
  153. <td title="{{$item['title']}}" class='tdedit' width="26%" style="white-space:normal">
  154. <span class=' fa-edit-item' style='cursor:pointer'><i class='fa fa-pencil'
  155. style="display:none"></i> <span
  156. class="title">{{$item['title']}}</span> </span>
  157. <div class="input-group goodstitle" style="display:none"
  158. data-goodsid="{{$item['id']}}">
  159. <input type='text' class='form-control' value="{{$item['title']}}"/>
  160. <div class="input-group-btn">
  161. <button type="button" class="btn btn-info"
  162. data-goodsid='{{$item['id']}}' data-type="title"><i
  163. class="fa fa-check"></i></button>
  164. </div>
  165. </div>
  166. </td>
  167. <td class='tdedit' width="16%">
  168. @if($item['has_option']==1)
  169. <span class='tip' title='多规格不支持快速修改'>{{$item['price']}}</span>
  170. @else
  171. <span class=' fa-edit-item' style='cursor:pointer'><i
  172. class='fa fa-pencil' style="display:none"></i> <span
  173. class="title">{{$item['price']}}</span> </span>
  174. <div class="input-group" style="display:none"
  175. data-goodsid="{{$item['id']}}">
  176. <input type='text' class='form-control' value="{{$item['price']}}"/>
  177. <div class="input-group-btn">
  178. <button type="button" class="btn btn-info"
  179. data-goodsid='{{$item['id']}}' data-type="price"><i
  180. class="fa fa-check"></i></button>
  181. </div>
  182. </div>
  183. @endif
  184. <br/>
  185. @if($item['has_option']==1)
  186. <span class='tip' title='多规格不支持快速修改'>{{$item['stock']}}</span>
  187. @else
  188. <span class=' fa-edit-item' style='cursor:pointer'><i
  189. class='fa fa-pencil' style="display:none"></i> <span
  190. class="title">{{$item['stock']}}</span> </span>
  191. <div class="input-group" style="display:none"
  192. data-goodsid="{{$item['id']}}">
  193. <input type='text' class='form-control' value="{{$item['stock']}}"/>
  194. <div class="input-group-btn">
  195. <button type="button" class="btn btn-info"
  196. data-goodsid='{{$item['id']}}' data-type="stock"><i
  197. class="fa fa-check"></i></button>
  198. </div>
  199. </div>
  200. @endif
  201. </td>
  202. <td>{{$item['real_sales']}}</td>
  203. <td>
  204. <label data='{{$item['status']}}'
  205. class='@if($item['status']==1) btn btn-info @else btn btn-default @endif'
  206. onclick="setProperty(this, {{$item['id']}},'status')">
  207. @if($item['status']==1)
  208. {{$lang['putaway']}}
  209. @else
  210. {{$lang['soldout']}}
  211. @endif
  212. </label>
  213. </td>
  214. <td style="position:relative; overflow:visible;" width="25%">
  215. <div class="btn-group">
  216. {{--<div class="td-actions text-right">--}}
  217. {{--<a tabindex="0" class="btn btn-lg btn-danger" role="button" data-toggle="popover" data-trigger="focus" title="推广二维码" data-content="And here's some amazing content. It's very engaging. Right?">
  218. 可消失的弹出框
  219. </a>--}}
  220. <a class="umphp" title="商品二维码"
  221. data-url="{{yzAppFullUrl('goods/'.$item['id'])}}"
  222. data-goodsid="{{$item['id']}}">
  223. <div class="img">
  224. {!! QrCode::size(120)->generate(yzAppFullUrl('goods/'.$item['id'])) !!}
  225. </div>
  226. <span>推广链接</span>
  227. </a>
  228. <a href="{{$yz_url($copy_url, array('id' => $item['id']))}}"
  229. title="{{$lang['copyshop']}}" class=""
  230. style="">复制商品</a>
  231. <a href="{{$yz_url($edit_url, array('id' => $item['id']))}}"
  232. class="" title="编辑">编辑</a>
  233. <a href="{{$yz_url($delete_url, array('id' => $item['id']))}}"
  234. onclick="return confirm('{{$delete_msg}}');
  235. return false;" class="" title="删除">删除</a>
  236. <a href="javascript:;"
  237. data-clipboard-text="{{yzAppFullUrl('goods/'.$item['id'])}}" data-url="{{yzAppFullUrl('goods/'.$item['id'])}}"
  238. title="复制连接" class="js-clip">复制链接</a>
  239. </div>
  240. <div>
  241. <label data='{{$item['is_new']}}'
  242. class='btn btn-sm @if($item['is_new']==1) btn-info @else btn-default @endif'
  243. onclick="setProperty(this,{{$item['id']}},'is_new')">新品</label>
  244. <label data='{{$item['is_hot']}}'
  245. class='btn btn-sm @if($item['is_hot']==1) btn-info @else btn-default @endif'
  246. onclick="setProperty(this,{{$item['id']}},'is_hot')">热卖</label>
  247. <label data='{{$item['is_recommand']}}'
  248. class='btn btn-sm @if($item['is_recommand']==1) btn-info @else btn-default @endif'
  249. onclick="setProperty(this,{{$item['id']}},'is_recommand')">推荐</label>
  250. <label data='{{$item['is_discount']}}'
  251. class='btn btn-sm @if($item['is_discount']==1) btn-info @else btn-default @endif'
  252. onclick="setProperty(this,{{$item['id']}},'is_discount')">促销</label>
  253. </div>
  254. <!-- yitian_add::商品链接二维码 2017-02-07 qq:751818588 -->
  255. </td>
  256. </tr>
  257. @endforeach
  258. @show
  259. @section('release_gods')
  260. <!-- <tr>
  261. <td colspan='10'>
  262. <a class='btn btn-primary' href="{{yzWebUrl('goods.goods.create')}}"><i class='fa fa-plus'></i> 发布{{$lang['good']}}</a>
  263. <input name="submit" type="submit" class="btn btn-default" value="提交排序">
  264. <input type="hidden" name="token" value="{{$var['token']}}" />
  265. </td>
  266. </tr>-->
  267. @show
  268. </tr>
  269. </tbody>
  270. </table>
  271. <label class="btn btn-success checkall">全选</label>
  272. <label class="btn btn-info batchenable">批量上架</label>
  273. <label class="btn batchdisable">批量下架</label>
  274. <label class="btn btn-danger batchdel">批量删除</label>
  275. {!!$pager!!}
  276. <!--分页-->
  277. </div>
  278. <div style="margin-left:13px;margin-top:8px">
  279. @section('add_goods')
  280. <a class='btn btn-success ' href="{{yzWebUrl('plugin.lease-toy.admin.goods.create')}}"><i
  281. class='fa fa-plus'></i> 发布{{$lang['good']}}</a>
  282. @show
  283. @section('sub_sort')
  284. <input name="submit" type="submit" class="btn btn-default back" value="提交排序">
  285. @show
  286. </div>
  287. </div>
  288. </form>
  289. </div>
  290. </div>
  291. </div>
  292. </div>
  293. <script>
  294. $(function(){
  295. $(".checkall").click(function(){
  296. //全选
  297. if($(this).html() == '全选') {
  298. $(this).html('全不选');
  299. $('[name=check1]:checkbox').prop('checked',true);
  300. } else {
  301. $(this).html('全选');
  302. $('[name=check1]:checkbox').prop('checked',false);
  303. }
  304. });
  305. $(".checkrev").click(function(){
  306. //反选
  307. $('[name=check1]:checkbox').each(function(){
  308. this.checked=!this.checked;
  309. });
  310. });
  311. var arr = new Array();
  312. var url = "{!! yzWebUrl('goods.goods.batchSetProperty') !!}"
  313. $(".batchenable").click(function () {
  314. $(this).html('上架中...');
  315. $("[name=check1]:checkbox:checked").each(function(i){
  316. arr[i] = $(this).val();
  317. });
  318. $.post(url, {ids: arr, data: 1}
  319. , function (d) {
  320. if (d.result) {
  321. $(".batchenable").html('上架成功');
  322. setTimeout(location.reload(), 3000);
  323. }
  324. } , "json"
  325. );
  326. });
  327. $(".batchdisable").click(function () {
  328. $(this).html('下架中...');
  329. $("[name=check1]:checkbox:checked").each(function(i){
  330. arr[i] = $(this).val();
  331. });
  332. $.post(url, {ids: arr, data: 0}
  333. , function (d) {
  334. if (d.result) {
  335. $(".batchdisable").html('下架成功');
  336. setTimeout(location.reload(), 3000);
  337. }
  338. } , "json"
  339. );
  340. });
  341. $(".batchdel").click(function () {
  342. $(this).html('删除中...');
  343. $("input[type='checkbox']:checked").each(function(i){
  344. arr[i] = $(this).val();
  345. });
  346. $.post("{!! yzWebUrl('goods.goods.batchDestroy') !!}", {ids: arr}
  347. , function (d) {
  348. if (d.result) {
  349. $(".batchdel").html('删除成功');
  350. setTimeout(location.reload(), 3000);
  351. }
  352. } , "json"
  353. );
  354. })
  355. });
  356. </script>
  357. <script type="text/javascript">
  358. //鼠标划过显示商品链接二维码
  359. $('.umphp').hover(function () {
  360. var url = $(this).attr('data-url');
  361. $(this).addClass("selected");
  362. },
  363. function () {
  364. $(this).removeClass("selected");
  365. })
  366. function fastChange(id, type, value) {
  367. $.ajax({
  368. url: "{!! yzWebUrl('goods.goods.change') !!}",
  369. type: "post",
  370. data: {id: id, type: type, value: value},
  371. cache: false,
  372. success: function ($data) {
  373. //console.log($data);
  374. objData = JSON.parse($data)
  375. if (objData.status == -1) {
  376. alert(objData.msg);
  377. }
  378. location.reload();
  379. }
  380. })
  381. }
  382. $(function () {
  383. $("form").keypress(function (e) {
  384. if (e.which == 13) {
  385. return false;
  386. }
  387. });
  388. $('.tdedit input').keydown(function (event) {
  389. if (event.keyCode == 13) {
  390. var group = $(this).closest('.input-group');
  391. var type = group.find('button').data('type');
  392. var goodsid = group.find('button').data('goodsid');
  393. var val = $.trim($(this).val());
  394. if (type == 'title' && val == '') {
  395. return;
  396. }
  397. group.prev().show().find('span').html(val);
  398. group.hide();
  399. fastChange(goodsid, type, val);
  400. }
  401. })
  402. $('.tdedit').mouseover(function () {
  403. $(this).find('.fa-pencil').show();
  404. }).mouseout(function () {
  405. $(this).find('.fa-pencil').hide();
  406. });
  407. $('.fa-edit-item').click(function () {
  408. var group = $(this).closest('span').hide().next();
  409. group.show().find('button').unbind('click').click(function () {
  410. var type = $(this).data('type');
  411. var goodsid = $(this).data('goodsid');
  412. var val = $.trim(group.find(':input').val());
  413. if (type == 'title' && val == '') {
  414. Tip.show(group.find(':input'), '请输入名称!');
  415. return;
  416. }
  417. if (type == 'title' && val.length >= '40') {
  418. Tip.show(group.find(':input'), '名称不能大于40字符!');
  419. return;
  420. }
  421. group.prev().show().find('span').html(val);
  422. group.hide();
  423. fastChange(goodsid, type, val);
  424. });
  425. })
  426. })
  427. @section('supplier_js')
  428. function setProperty(obj, id, type) {
  429. $(obj).html($(obj).html() + "...");
  430. $.post("{!! yzWebUrl('goods.goods.setProperty') !!}", {id: id, type: type, data: obj.getAttribute("data")}
  431. , function (d) {
  432. console.log(d);
  433. $(obj).html($(obj).html().replace("...", ""));
  434. if (type == 'type') {
  435. $(obj).html(d.data == '1' ? '实体物品' : '虚拟物品');
  436. }
  437. if (type == 'status') {
  438. $(obj).html(d.data == '1' ? '{{$lang['putaway']}}' : '{{$lang['soldout']}}');
  439. }
  440. $(obj).attr("data", d.data);
  441. if (d.result == 1) {
  442. $(obj).toggleClass("label-info text-pinfo");
  443. }
  444. }
  445. , "json"
  446. );
  447. }
  448. @show
  449. require(['select2'], function () {
  450. $('#brand').select2();
  451. })
  452. </script>
  453. @endsection('content')