edit.html 6.0 KB

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