index.blade.php 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234
  1. @extends('layouts.app')
  2. @section('title','需求发布')
  3. @section('content')
  4. @include('shared._messages')
  5. @include('shared._error')
  6. <div id="list" class="d-none">
  7. <div class="container-fluid">
  8. <div id="form_div"></div>
  9. <div class="form-inline" id="btn"></div>
  10. <table class="table table-striped table-sm text-nowrap table-hover" id="table">
  11. <tr v-for="(requirement,i) in requirements"
  12. @click="selectTr===i+1?selectTr=0:selectTr=i+1"
  13. :class="selectTr===i+1?'focusing' : ''">
  14. <td><input class="checkItem" type="checkbox" :value="requirement.id"></td>
  15. <td>@{{ requirement.id }}</td>
  16. <td>@{{ requirement.creator.name }}</td>
  17. <td>@{{ requirement.score }}</td>
  18. <td>@{{ requirement.title }}</td>
  19. <td :title="requirement.content" class="text-truncate" style="max-width: 300px;">@{{
  20. requirement.content }}
  21. </td>
  22. <td><span :class="calStatusClass(requirement.status)">@{{ requirement.status }}</span></td>
  23. <td>
  24. <div v-if="requirement.workers.length>0 && requirement.showMore"
  25. class="text-overflow-warp-200 up" :id="'route-'+i">
  26. <p v-for="worker in requirement.workers">
  27. @{{ worker.name}}
  28. </p>
  29. </div>
  30. <div class="text-overflow-warp-200 " v-else>
  31. @{{ requirement.workers.length>0? requirement.workers[0].name:'' }}
  32. </div>
  33. <div @click="requirement.showMore=!requirement.showMore" v-if="requirement.workers.length > 1">
  34. <label class="text-center mt-0 p-0 cursor-pointer pull-left">
  35. <span class="fa"
  36. :class="requirement.showMore ? 'fa-angle-double-down' : 'fa-angle-double-right'"></span>
  37. &nbsp;<span v-if="requirement.showMore">收起</span><span
  38. v-else>展开</span>&nbsp;@{{ requirement.workers.length }} 条
  39. </label>
  40. </div>
  41. </td>
  42. <td>@{{ requirement.began_at }}</td>
  43. <td>@{{ requirement.finished_at }}</td>
  44. <td>@{{ requirement.reviewed_at }}</td>
  45. <td>@{{ requirement.created_at }}</td>
  46. <td>
  47. <form v-if="requirement.status==='待接收'" :action="targetUrl(requirement.id)" method="post"
  48. style="display: inline-block;"
  49. onsubmit="return confirm('您确定要删除吗?');">
  50. {{ csrf_field() }}
  51. {{ method_field('DELETE') }}
  52. <button type="submit" class="btn btn-outline-danger btn-sm">
  53. <i class="far fa-trash-alt"></i> 删
  54. </button>
  55. </form>
  56. <button type="submit" class="btn btn-outline-info btn-sm">
  57. <i class="far fa-trash-alt"></i> <a :href="targetUrl(requirement.id)">
  58. <span v-if="requirement.status ==='待验收'">验</span>
  59. <span v-else>查</span>
  60. </a>
  61. </button>
  62. </td>
  63. </tr>
  64. </table>
  65. <div class="text-info h5 btn btn">{{$requirements->count()}}
  66. /{{$requirements->total()}}</div>
  67. {{$requirements->appends($paginateParams)->links()}}
  68. </div>
  69. <textarea id="clipboardDiv" style="opacity:0"></textarea>
  70. </div>
  71. @endsection
  72. @section('lastScript')
  73. <script type="text/javascript" src="{{mix('js/queryForm/export.js')}}"></script>
  74. <script type="text/javascript" src="{{mix('js/queryForm/queryForm.js')}}"></script>
  75. <script type="text/javascript" src="{{mix('js/queryForm/header.js')}}"></script>{{--新版2--}}
  76. <script>
  77. let vue = new Vue({
  78. el: "#list",
  79. data: {
  80. requirements: [@foreach($requirements as $requirement){!! $requirement !!},@endforeach],
  81. selectTr: 0,
  82. creators: [@foreach($canCreateRequirementUsers as $creator){
  83. name: '{{ $creator->id }}',
  84. value: '{{ $creator->name }}'
  85. },@endforeach],
  86. workers: [@foreach($canWorkRequirementUsers as $worker){
  87. name: '{{ $worker->id }}',
  88. value: '{{ $worker->name }}'
  89. },@endforeach]
  90. },
  91. created() {
  92. },
  93. mounted() {
  94. $('#list').removeClass('d-none');
  95. let _this = this;
  96. $(".up").slideUp();
  97. let data = [
  98. [
  99. {
  100. name: 'requirement',
  101. type: 'input',
  102. tip: '输入任务号',
  103. placeholder: '任务号',
  104. },
  105. {
  106. name: 'status',
  107. type: 'select',
  108. tip: '选择状态',
  109. placeholder: '状态',
  110. data:[
  111. {name:'待接收',value:'待接收'},
  112. {name:'开发中',value:'开发中'},
  113. {name:'待验收',value:'待验收'},
  114. {name:'验收通过',value:'验收通过'},
  115. {name:'验收未通过',value:'验收未通过'},
  116. ]
  117. },
  118. {
  119. name: 'creator',
  120. type: 'select',
  121. tip: ['输入关键词快速定位下拉列表,回车确定', '选择要显示的状态'],
  122. placeholder: '发布人',
  123. data: this.creators
  124. },
  125. {
  126. name: 'title',
  127. type: 'input',
  128. tip: '输入标题搜索',
  129. placeholder: '标题'
  130. },
  131. {
  132. name: 'worker_ids',
  133. type: 'select_multiple_select',
  134. tip: ['输入关键词快速定位下拉列表,回车确定', '选择要显示的货主'],
  135. placeholder: ['执行人', '定位或多选'],
  136. data: this.workers
  137. },
  138. ],
  139. [
  140. {
  141. name: 'finished_at_start',
  142. type: 'dateTime',
  143. tip: '选择任务完成的起始时间'
  144. },
  145. {
  146. name: 'finished_at_end',
  147. type: 'dateTime',
  148. tip: '选择任务完成的截止时间'
  149. },
  150. {
  151. name: 'created_at_start',
  152. type: 'dateTime',
  153. tip: '选择任务创建的起始时间'
  154. },
  155. {
  156. name: 'created_at_end',
  157. type: 'dateTime',
  158. tip: '选择任务创建的截止时间'
  159. },
  160. {
  161. name: 'began_at_start',
  162. type: 'dateTime',
  163. tip: '选择任务开始的起始时间'
  164. },
  165. {
  166. name: 'began_at_end',
  167. type: 'dateTime',
  168. tip: '选择任务开始的截止时间'
  169. },
  170. ]
  171. ];
  172. _this.form = new query({
  173. el: '#form_div',
  174. condition: data,
  175. });
  176. _this.form.init();
  177. let column = [
  178. // {name: 'index', value: '序号', neglect: true},
  179. {name: 'requirement_id', value: '任务号'},
  180. {name: 'creator_name', value: '创建人'},
  181. {name: 'score', value: '分数'},
  182. {name: 'title', value: '标题'},
  183. {name: 'content', value: '内容'},
  184. {name: 'status', value: '状态'},
  185. {name: 'workers', value: '完成人'},
  186. {name: 'began_at', value: '接收时间'},
  187. {name: 'finished_at', value: '完成时间'},
  188. {name: 'reviewed_at', value: '验收时间'},
  189. {name: 'created_at', value: '创建时间'},
  190. {name: 'operation', value: '操作'},
  191. ];
  192. new Header({
  193. el: "table",
  194. name: "requirements",
  195. column: column,
  196. data: this.requirements,
  197. restorationColumn: 'addtime',
  198. fixedTop: ($('#form_div').height()) + ($('#btn').height()) + 1,
  199. }).init();
  200. _this.requirements = _this.requirements.map(item => {
  201. item.showMore = false
  202. return item;
  203. });
  204. },
  205. methods: {
  206. targetUrl(id) {
  207. return "{{ url('requirements') }}/" + id;
  208. },
  209. calStatusClass(status) {
  210. switch (status) {
  211. case '待接收':
  212. return "badge badge-primary";
  213. case '开发中':
  214. return "badge badge-warning";
  215. case '待验收':
  216. return "badge badge-info";
  217. case '验收通过':
  218. return "badge badge-success";
  219. case '验收未通过':
  220. return "badge badge-danger";
  221. case '待审核':
  222. return "badge badge-warning";
  223. case '已驳回':
  224. return "badge badge-danger";
  225. }
  226. }
  227. },
  228. filters: {},
  229. });
  230. </script>
  231. @endsection