edit.blade.php 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. @extends('layouts.app')
  2. @section('title')修改-劳务派遣明细详情@endsection
  3. @section('content')
  4. <div class="container-fluid" id="list">
  5. <div class="card col-md-8 offset-md-2">
  6. <div class="card-body">
  7. <form action="{{ route('laborCompanyDispatch.storeDetail', $laborCompanyDispatch->id) }}" method="post"
  8. style="display: inline-block;" id="storeDetail"
  9. onsubmit="return check()">
  10. {{ csrf_field() }}
  11. <div class="form-group">
  12. <template v-for="(item,i) in items">
  13. <div class="row mt-3">
  14. <label class="col-lg-1 col-sm-3 col-form-label" :for="'users['+i+'][name]'">姓名</label>
  15. <div class="col-lg-2 col-sm-12">
  16. <input class="form-control" type="text" :name="'users['+i+'][name]'"
  17. v-model="item.name"
  18. :id="'users['+i+'][name]'" required>
  19. </div>
  20. <label class="col-lg-1 col-sm-3 col-form-label" :for="'users['+i+'][gender]'">性别</label>
  21. <div class="col-lg-2 col-sm-12">
  22. <select class="form-control" :name="'users['+i+'][gender]'"
  23. required v-model="item.gender">
  24. <option value="男" :selected="item.gender==='男'">男</option>
  25. <option value="女" :selected="item.gender==='女'">女</option>
  26. </select>
  27. </div>
  28. <label class="col-lg-1 col-sm-3 col-form-label" :for="'users['+i+'][age]'">年龄</label>
  29. <div class="col-lg-2 col-sm-12">
  30. <input class="form-control" type="number" :name="'users['+i+'][age]'"
  31. v-model="item.age"
  32. :id="'users['+i+'][age]'">
  33. </div>
  34. <label class="col-lg-1 col-sm-3 col-form-label"
  35. :for="'users['+i+'][cardId]'">身份证</label>
  36. <div class="col-lg-2 col-sm-12">
  37. <input class="form-control" type="text" :name="'users['+i+'][card_id]'"
  38. v-model="item.card_id"
  39. :id="'users['+i+'][card_id]'">
  40. </div>
  41. <div v-if="i!==0" class="col-1 ml-1">
  42. <button class="btn btn-sm btn-primary float-right" type="button"
  43. @click="items.splice(i,1)">-
  44. </button>
  45. </div>
  46. </div>
  47. </template>
  48. <button class="btn btn-sm btn-primary float-right" type="button"
  49. @click="addItem();">添加
  50. </button>
  51. </div>
  52. <button type="button" class="btn btn-success btn-sm" @click="check()">
  53. <i class="far fa-trash-alt"></i> 提交
  54. </button>
  55. </form>
  56. </div>
  57. </div>
  58. </div>
  59. @endsection
  60. @section('lastScript')
  61. <script>
  62. new Vue({
  63. el: "#list",
  64. data: {
  65. items: {!! $laborCompanyDispatch->laborCompanyDispatchDetails !!},
  66. labor_company_dispatch: {!! $laborCompanyDispatch !!},
  67. },
  68. mounted() {
  69. },
  70. methods: {
  71. addItem() {
  72. let sum_man_num = this.labor_company_dispatch.man_num + this.labor_company_dispatch.woman_num;
  73. if (this.items.length <= sum_man_num - 1) {
  74. this.items.push({});
  75. } else {
  76. window.tempTip.show("不能超过最大人数限制!");
  77. }
  78. console.log(this.items);
  79. },
  80. check() {
  81. for (let i = 0; i < this.items.length; i++) {
  82. let item = this.items[i];
  83. let {name, gender, age, card_id} = item;
  84. let flag = true;
  85. let result = this.checkId(card_id);
  86. if (!name) {
  87. window.tempTip.show(`第${i + 1}条信息登记的姓名不符合要求`);
  88. flag = false;
  89. } else if (!age) {
  90. window.tempTip.show(`第${i + 1}条信息登记的年龄不符合要求`);
  91. flag = false;
  92. } else if (!gender) {
  93. window.tempTip.show(`第${i + 1}条信息登记的性别不符合要求`);
  94. flag = false;
  95. } else if (!result.pass) {
  96. window.tempTip.show(`第${i + 1}${result.msg}`);
  97. flag = false;
  98. }
  99. if (!flag) {
  100. return flag;
  101. }
  102. }
  103. document.getElementById("storeDetail").submit();
  104. },
  105. checkId(code) {
  106. //身份证号合法性验证
  107. //支持15位和18位身份证号
  108. //支持地址编码、出生日期、校验位验证
  109. let city = {
  110. 11: "北京",
  111. 12: "天津",
  112. 13: "河北",
  113. 14: "山西",
  114. 15: "内蒙古",
  115. 21: "辽宁",
  116. 22: "吉林",
  117. 23: "黑龙江 ",
  118. 31: "上海",
  119. 32: "江苏",
  120. 33: "浙江",
  121. 34: "安徽",
  122. 35: "福建",
  123. 36: "江西",
  124. 37: "山东",
  125. 41: "河南",
  126. 42: "湖北 ",
  127. 43: "湖南",
  128. 44: "广东",
  129. 45: "广西",
  130. 46: "海南",
  131. 50: "重庆",
  132. 51: "四川",
  133. 52: "贵州",
  134. 53: "云南",
  135. 54: "西藏 ",
  136. 61: "陕西",
  137. 62: "甘肃",
  138. 63: "青海",
  139. 64: "宁夏",
  140. 65: "新疆",
  141. 71: "台湾",
  142. 81: "香港",
  143. 82: "澳门",
  144. 91: "国外 "
  145. };
  146. let row = {
  147. 'pass': true,
  148. 'msg': '验证成功'
  149. };
  150. if (!code || !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|[xX])$/.test(code)) {
  151. row = {
  152. 'pass': false,
  153. 'msg': '身份证号格式错误'
  154. };
  155. } else if (!city[code.substr(0, 2)]) {
  156. row = {
  157. 'pass': false,
  158. 'msg': '身份证号地址编码错误'
  159. };
  160. }
  161. return row;
  162. }
  163. }
  164. });
  165. </script>
  166. @endsection