add.html 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. {include file='common/_js_css'}
  2. <div class="lyear-layout-web">
  3. <div class="lyear-layout-container">
  4. <!--页面主要内容-->
  5. <main>
  6. <div class="container-fluid">
  7. <div class="row">
  8. <div class="col-lg-12">
  9. <div class="card">
  10. <div class="card-body">
  11. <form class="layui-form">
  12. <div class="layui-form-item">
  13. <label class="layui-form-label">{:lang('Store')}</label>
  14. <div class="layui-input-block">
  15. <select name="store_id" lay-filter="required">
  16. {volist name="stores" id="item"}
  17. <option value="{$item.id}" {if $store_id == $item.id} selected {/if} >{$item.name}</option>
  18. {/volist}
  19. </select>
  20. </div>
  21. </div>
  22. <div class="layui-form-item">
  23. <label class="layui-form-label">{:lang('Product')}</label>
  24. <div class="layui-input-block unfold_product">
  25. <input type="text" name="product_id" id="product_id" class="layui-input"
  26. placeholder="{:lang('Enter the product name or number and press Enter to select the product')}" style="position:absolute;z-index:2;width:88%;" value="" autocomplete="off">
  27. <select id="product_select" placeholder="1" name="product_id" lay-verify="required" lay-filter="product_select" >
  28. <option value="">{:lang('Enter the product name or number and press Enter to select the product')}</option>
  29. </select>
  30. </div>
  31. </div>
  32. <div class="layui-form-item">
  33. <label class="layui-form-label">{:lang("Stock")}</label>
  34. <div class="layui-input-block">
  35. <input type="number" name="now_stock" lay-verify="required" lay-reqtext="{:lang('Please fill in')}" autocomplete="off" class="layui-input">
  36. </div>
  37. </div>
  38. <div class="layui-form-item">
  39. <div class="layui-input-block">
  40. <button type="button" class="layui-btn" lay-submit="" lay-filter="caviar_submit_btn">{:lang('Submit')}</button>
  41. <button type="reset" class="layui-btn layui-btn-primary">{:lang("Reset")}</button>
  42. </div>
  43. </div>
  44. </form>
  45. </div>
  46. </div>
  47. </div>
  48. </div>
  49. </div>
  50. </main>
  51. <!--End 页面主要内容-->
  52. </div>
  53. </div>
  54. <script>
  55. // 用于缓存下拉获取的数据
  56. let dropData
  57. // 请求返回数据
  58. function getData(str){
  59. console.log(str);
  60. return new Promise(resolve=>{
  61. request("{:url('admin/product/findProducts')}", {"text": str}).then((data) => {
  62. console.log(data)
  63. if (data.code === 200) {
  64. resolve(data.data.map(v => {
  65. return {
  66. value: v.id,
  67. text: `【${v.bar_code}】 ${v.name}`
  68. }
  69. }))
  70. }
  71. })
  72. })
  73. }
  74. $("#product_id").on("keyup", async function(e){
  75. // 点击enter实现搜索功能
  76. if(e.which=='13'){
  77. // console.log("点击了enter",$(this).val())
  78. // 模拟请求获取下拉菜单所需的参数
  79. dropData=await getData($(this).val())
  80. console.log("下拉菜单的数据:",dropData)
  81. // 将获取回来的数据渲染给下拉菜单
  82. innitSelect("#product_select", dropData)
  83. let form = layui.form;
  84. form.render()
  85. // 将下拉框展开
  86. $(".unfold_product .layui-form-select").addClass("layui-form-selected")
  87. }
  88. })
  89. // 渲染下拉框的数据
  90. function innitSelect(name,data){
  91. let html=''
  92. if(data&&data instanceof Array){
  93. data.forEach(item=>{
  94. html+="<option value="+item.value+">"+item.text+"</option>"
  95. })
  96. }
  97. $(name).html(html)
  98. }
  99. layui.use(['laydate','form','upload'], () => {
  100. const form = layui.form;
  101. // 监听下拉框改变事件,修改输入框中的内容
  102. form.on("select(product_select)",function(data){
  103. let value=data.value
  104. let selectObj=dropData.filter(item=>{
  105. return item.value == value
  106. })
  107. $("#product_id").val(selectObj[0].text);
  108. console.log($("#product_id").val(selectObj[0].text))
  109. })
  110. form.on('submit(caviar_submit_btn)', (data) =>{
  111. const response = request('/admin/stock/add',data.field)
  112. response.then((res) => {
  113. console.log(res);
  114. res.code === 200 ? layer.msg("{:lang('Succeed')}", {icon: 1,time:500},() => {
  115. parent.location.reload();
  116. }) : layer.msg(res.message,{icon: 5})
  117. })
  118. return false;
  119. });
  120. });
  121. </script>