index.blade.php 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643
  1. @extends("layouts.app")
  2. @section('title','处理工单')
  3. @section("content")
  4. <div class="container-fluid d-none" id="list">
  5. <div>
  6. <div class="">
  7. <div id="form_div" style="min-width: 1220px;"></div>
  8. <div class="form-inline mt-1" id="btn">
  9. @can('订单管理-订单问题件生成')
  10. <span class="ml-1">
  11. <button type="button" class="btn btn-outline-dark btn-sm form-control-sm tooltipTarget"
  12. @click="createOrderIssue(null,false)" style="background: #dad7e8;">生成问题件</button>
  13. </span>
  14. @endcan
  15. @can('订单管理-订单问题件生成')
  16. <span class="ml-1">
  17. <button type="button" class="btn btn-outline-primary btn-sm form-control-sm tooltipTarget"
  18. @click="exportText()">导出文本</button>
  19. </span>
  20. @endcan
  21. @can('订单管理-工单处理-审核')
  22. <span class="ml-1">
  23. <button type="button" class="btn btn-outline-success btn-sm form-control-sm tooltipTarget"
  24. @click="batchReview">
  25. 批量审核
  26. </button>
  27. </span>
  28. @endcan
  29. <span class="ml-1">
  30. <button type="button" class="btn btn-outline-dark btn-sm form-control-sm tooltipTarget"
  31. @click="copyLogisticNumber()" style="background: #dad7e8;">批量复制单号</button>
  32. </span>
  33. @can('订单管理-工单处理-审核')
  34. <span class="ml-1">
  35. <button type="button" class="btn btn-outline-success btn-sm form-control-sm tooltipTarget"
  36. @click="showEditIssueType">
  37. 批量修改问题件类型
  38. </button>
  39. </span>
  40. @endcan
  41. </div>
  42. <div>
  43. <table class="table table-sm table-striped table-hover table-bordered td-min-width-80" id="table">
  44. <tbody class="">
  45. <template v-for="(item,i) in workOrders">
  46. <tr @click="selectTr===i+1?selectTr=0:selectTr=i+1" :class="selectTr===i+1?'focusing' : ''">
  47. <td>
  48. <label><input type="checkbox" :value="item.id"></label>
  49. </td>
  50. <td class="text-center">
  51. <span>@{{ i+1 }}</span>
  52. <span v-show="item.is_issue_order" class="badge badge-primary">问题件</span>
  53. </td>
  54. <td class="text-center">
  55. @can('订单管理-订单问题件生成')
  56. <button class="btn btn-sm btn-outline-primary"
  57. @click="createOrderIssue(item,true)" v-show="!item.is_issue_order ">
  58. 生成问题件
  59. </button>
  60. @endcan
  61. @can('订单管理-工单处理-审核')
  62. <button class="btn btn-sm btn-outline-success" v-show="item.status !== '已处理'"
  63. @click="review(item,i)">
  64. 审核
  65. </button>
  66. @endcan
  67. </td>
  68. <td class="text-center">@{{ item.status }}</td>
  69. <td class="text-center">@{{ item.owner ? item.owner.name : '' }}</td>
  70. <td class="text-center">@{{ item.order ? item.order.client_code : ''}}</td>
  71. <td>@{{item.order ? (item.order.logistic ? item.order.logistic.name : '') : '' }}</td>
  72. <td class="text-center">
  73. <template v-if="item.order">
  74. <template v-if="item.order.packages && item.order.packages.length === 1">
  75. <p>@{{ item.order.packages[0].logistic_number }}</p>
  76. </template>
  77. <template v-else-if="item.order.packages && item.order.packages.length > 0">
  78. <template v-if="selectOrder === item.order.id">
  79. <template v-for="(package,index) in item.order.packages">
  80. @{{ package.logistic_number }}
  81. </template>
  82. </template>
  83. <template v-else>
  84. <p>@{{ item.order.packages[0].logistic_number }}</p>
  85. </template>
  86. <button class="btn btn-sm btn-outline-primary" v-show="selectOrder === null"
  87. @click="selectOrder = item.order.id">
  88. 展开
  89. </button>
  90. <button class="btn btn-sm btn-outline-primary"
  91. v-show="selectOrder === item.order.id"
  92. @click="selectOrder = null">
  93. 收起
  94. </button>
  95. </template>
  96. </template>
  97. </td>
  98. <td class="text-center">
  99. @can('订单管理-工单处理-审核')
  100. <select class="form-control form-control-sm"
  101. :disabled="item.review_at || item.is_issue_order"
  102. :value="item.order_issue_type_id"
  103. @change="changeIssueType(item,$event)">
  104. <option value="0"></option>
  105. <option v-for="type in orderIssueTypes" :value="type.name">@{{ type.value
  106. }}
  107. </option>
  108. </select>
  109. @else
  110. @{{ item.issue_type ? item.issue_type.name : '' }}
  111. @endcan
  112. </td>
  113. <td class="text-center">@{{ item.remark }}</td>
  114. <td class="text-center">
  115. @{{ item.result_explain ?item.result_explain : '' }}
  116. </td>
  117. <td class="text-center">
  118. @{{ item.issue_order_type ?item.issue_order_type : '' }}
  119. </td>
  120. <td class="text-center p-0">
  121. <template v-if="item.issue_logs">
  122. <template v-if="item.issue_logs.length === 1">
  123. <table class="table table-sm m-0">
  124. <tr class="table table-sm">
  125. <td>@{{ item.issue_logs[0].content }}</td>
  126. <td>@{{ item.issue_logs[0].username }}</td>
  127. <td>@{{ item.issue_logs[0].created_at }}</td>
  128. </tr>
  129. </table>
  130. </template>
  131. <template v-else>
  132. <transition name="fade">
  133. <table class="table table-sm m-0" v-if="selectOrderIssue === item.id">
  134. <tr v-for="log in item.issue_logs">
  135. <td>@{{ log.content }}</td>
  136. <td>@{{ log.username }}</td>
  137. <td>@{{ log.created_at }}</td>
  138. </tr>
  139. </table>
  140. </transition>
  141. <transition name="fade">
  142. <table class="table table-sm m-0" v-if="selectOrderIssue !== item.id">
  143. <tr>
  144. <td>@{{ item.issue_logs[0].content }}</td>
  145. <td>@{{ item.issue_logs[0].username }}</td>
  146. <td>@{{ item.issue_logs[0].created_at }}</td>
  147. </tr>
  148. </table>
  149. </transition>
  150. <button class="btn btn-sm btn-outline-primary"
  151. v-show="selectOrderIssue !== item.id"
  152. @click="selectOrderIssue = item.id">展开
  153. </button>
  154. <button class="btn btn-sm btn-outline-primary"
  155. v-show="selectOrderIssue === item.id"
  156. @click="selectOrderIssue = null">收起
  157. </button>
  158. </template>
  159. </template>
  160. </td>
  161. <td class="text-center">
  162. <template v-if="item.review_at">
  163. <div v-if="item.order && item.order.packages">
  164. <template v-for="package in item.order.packages">
  165. <template
  166. v-if="package.transfer_status && package.transfer_status.length > 0">
  167. <div v-if="selectOrderPackage === package.id">
  168. <template v-for="transfer in package.transfer_status">
  169. <p>@{{
  170. transfer['accept_time']+':'+transfer['accept_address']
  171. }}</p>
  172. </template>
  173. </div>
  174. <div v-else>
  175. @{{
  176. package.transfer_status[0]['accept_time']+':'+package.transfer_status[0]['accept_address']
  177. }}
  178. </div>
  179. <button class="btn btn-sm btn-outline-primary"
  180. v-if="selectOrderPackage !== package.id"
  181. @click="selectOrderPackage = package.id">展开
  182. </button>
  183. <button class="btn btn-sm btn-outline-primary" v-else
  184. @click="selectOrderPackage = null">收起
  185. </button>
  186. </template>
  187. </template>
  188. </div>
  189. </template>
  190. </td>
  191. <td class="text-center">@{{ item.creator.name }}</td>
  192. <td class="text-center">@{{ item.created_at }}</td>
  193. <td>@{{ item.reviewer ? item.reviewer.name : ''}}</td>
  194. <td>@{{ item.review_at }}</td>
  195. @can('订单管理-工单处理-删除')
  196. <td>
  197. <button class="btn btn-sm btn-outline-danger"
  198. @click="destroy(item,i)">
  199. 删除
  200. </button>
  201. </td>
  202. @endcan
  203. </tr>
  204. </template>
  205. </tbody>
  206. </table>
  207. {{ $workOrders->withQueryString()->links() }}
  208. </div>
  209. </div>
  210. @can('订单管理-工单处理-审核')
  211. @include('order.workOrder._edit_issue_type')
  212. @endcan
  213. </div>
  214. </div>
  215. @endsection()
  216. @section("lastScript")
  217. <script type="text/javascript" src="{{asset('js/queryForm/queryForm.js')}}"></script>
  218. <script type="text/javascript" src="{{mix('js/queryForm/header.js')}}"></script>
  219. <style>
  220. .fade-enter-active, .fade-leave-active {
  221. transition: opacity .5s;
  222. }
  223. .fade-enter, .fade-leave-to {
  224. opacity: 0;
  225. }
  226. </style>
  227. <script>
  228. let list = new Vue({
  229. el: "#list",
  230. data: {
  231. workOrders: {!! $workOrders->toJson() !!}['data'],
  232. selectTr: null,
  233. form: null,
  234. logistics: [
  235. @foreach($logistics as $logistic)
  236. {
  237. name: {{$logistic->id}}, value: '{{$logistic->name}}'
  238. },
  239. @endforeach
  240. ],
  241. orderIssueTypes: [
  242. @foreach($orderIssueTypes as $type)
  243. {
  244. name: '{{$type->id}}', value: "{{$type->name}}"
  245. },
  246. @endforeach
  247. ],
  248. owners:[
  249. @foreach($owners as $owner)
  250. {name:'{{$owner->id}}',value:'{{$owner->name}}'},
  251. @endforeach
  252. ],
  253. selectOrderPackage: null,
  254. selectOrder: null,
  255. selectOrderIssue: null,
  256. selectIssueType: '',
  257. },
  258. mounted() {
  259. let data = [[
  260. {name: 'created_at_start', type: 'time', tip: ['工单创建开始日期', '时间']},
  261. {name: 'created_at_end', type: 'time', tip: ['工单创建结束日期', '时间']},
  262. {
  263. name: 'logistic',
  264. type: 'select_multiple_select',
  265. data: this.logistics,
  266. tip: ['输入关键词快速定位下拉列表,回车确定', '选择要显示的承运商'],
  267. placeholder: ['承运商', '定位或多选承运商']
  268. },
  269. @can('订单管理-订单问题件生成')
  270. {
  271. name: 'owner',
  272. type: 'select_multiple_select',
  273. data: this.owners,
  274. tip: ['输入关键词快速定位下拉列表,回车确定', '选择要显示的货主'],
  275. placeholder: ['货主', '定位或多选货主']
  276. },
  277. @endcan
  278. {name: 'logistic_number', type: 'input', placeholder: '快递单号'},
  279. {
  280. name: 'is_issue_order',
  281. type: 'select',
  282. placeholder: '问题件',
  283. data: [{name: 'true', value: '有'}, {name: 'false', value: '无'}]
  284. },
  285. {name: 'creator', type: 'input', placeholder: '创建人'},
  286. ], [{name: 'review_at_start', type: 'time', tip: ['工单审核开始日期', '时间']},
  287. {name: 'review_at_end', type: 'time', tip: ['工单审核结束日期', '时间']},
  288. {name: 'order_issue_type', type: 'select', placeholder: '问题件类型', data: this.orderIssueTypes},
  289. {name: 'client_code', type: 'input', placeholder: '客户订单号'},
  290. {name: 'is_review', type: 'checkbox', tip: '是否审核', data: [{name: 'true', value: '已审核'}]},
  291. ]];
  292. this.form = new query({
  293. el: '#form_div',
  294. condition: data,
  295. });
  296. this.form.init();
  297. let column = [
  298. {name: 'no', value: '序号', neglect: true},
  299. {name: 'operation', value: '操作', neglect: true},
  300. {name: 'status', value: '状态',neglect: true},
  301. {name: 'owner', value: '货主',neglect: true},
  302. {name: 'client_code', value: '订单号',neglect: true},
  303. {name: 'logisticName', value: '承运商',neglect: true},
  304. {name: 'logisticNumber', value: '快递单号'},
  305. {name: 'issueType', value: '问题件类型'},
  306. {name: 'workOrderInfo', value: '问题描述',neglect: true},
  307. {name: 'result_explain', value: '情况说明',neglect: true},
  308. {name: 'orderIssueType', value: '问题件类别'},
  309. {
  310. name: 'orderIssueProcessLogs', type: 'multi', title: "处理结果", rows: [
  311. {value: "内容", col: "4"},
  312. {value: "操作人", col: "4"},
  313. {value: "时间", col: "4"},
  314. ],neglect: true
  315. },
  316. {name: 'Info', value: '物流跟踪信息', neglect: true},
  317. {name: 'creator', value: '创建人',neglect: true},
  318. {name: 'submit_at', value: '提交时间',neglect: true},
  319. {name: 'reviewer', value: '审核人',neglect: true},
  320. {name: 'review_at', value: '审核时间',neglect: true},
  321. @can('订单管理-工单处理-删除')
  322. {name: 'delete_operation', value: '其他操作',neglect: true},
  323. @endcan()
  324. ];
  325. new Header({
  326. el: "table",
  327. name: "workOrders",
  328. column: column,
  329. data: this.workOrders,
  330. fixedTop: ($('#form_div').height()) + 2,
  331. }).init();
  332. $("#list").removeClass("d-none");
  333. },
  334. created() {
  335. let self = this;
  336. $.each(this.workOrders, function (index, workOrder) {
  337. if (!workOrder.order) return;
  338. if (!workOrder.order.packages) return;
  339. self.sortOrder(workOrder);
  340. });
  341. },
  342. methods: {
  343. sortOrder(workOrder) {
  344. let self = this;
  345. if (!workOrder.order) return;
  346. if (workOrder.order_issue) {
  347. workOrder.result_explain = workOrder.order_issue.result_explain;
  348. if (workOrder.order_issue.issue_type) {
  349. workOrder.issue_order_type = workOrder.order_issue.issue_type.name;
  350. }
  351. if (workOrder.order_issue.logs) {
  352. workOrder.issue_logs = workOrder.order_issue.logs.map(item => {
  353. return {
  354. username: item.user ? item.user.name : '',
  355. content: item.content,
  356. created_at: item.created_at
  357. };
  358. });
  359. }
  360. }
  361. if (!workOrder.order.packages) return;
  362. $.each(workOrder.order.packages, function (i, item) {
  363. self.sortTransfer(item);
  364. })
  365. },
  366. sortTransfer(item) {
  367. if (!("transfer_status" in item)) return;
  368. if (item.transfer_status == null || !(item.transfer_status instanceof Array)) return;
  369. item.transfer_status.sort(function (item1, item2) {
  370. let date1 = new Date(item1['accept_time']);
  371. let date2 = new Date(item2['accept_time']);
  372. if (date1 - date2 > 0) return -1;
  373. if (date1 - date2 < 0) return 1;
  374. return 0;
  375. });
  376. },
  377. review(item, i) {
  378. let url = '{{route('workOrder.reviewApi')}}';
  379. let data = {id: item.id};
  380. window.axios.post(url, data).then(res => {
  381. if (res.data.success) {
  382. res.data.data.is_issue_order = item.is_issue_order;
  383. this.$set(this.workOrders, i, res.data.data);
  384. this.sortOrder(res.data.data);
  385. window.tempTip.showSuccess("审核完成");
  386. } else {
  387. window.tempTip.show(res.data.message ? res.data.message : '审核异常');
  388. }
  389. }).catch(err => {
  390. window.tempTip.show(err)
  391. })
  392. },
  393. createOrderIssue(item, tag) { // 生成问题件
  394. let url = '{{route('workOrder.buildOrderIssueApi')}}';
  395. let data = {};
  396. if (tag) data.ids = [item.id];
  397. else data.ids = checkData;
  398. if (!confirm('是否生成对应的问题件')) return;
  399. let _this = this;
  400. window.tempTip.waitingTip('生成中........');
  401. window.axios.post(url, data).then(res => {
  402. if (res.data.success) {
  403. res.data.data.forEach(item => {
  404. this.workOrders.forEach((workOrder, i) => {
  405. if (item.id === workOrder.id) {
  406. _this.sortOrder(item);
  407. _this.$set(_this.workOrders, i, item);
  408. }
  409. });
  410. });
  411. this.$forceUpdate();
  412. window.tempTip.cancelWaitingTip();
  413. window.tempTip.showSuccess('已生成对应的问题件');
  414. } else {
  415. window.tempTip.cancelWaitingTip();
  416. window.tempTip.show(res.data.message ? res.data.message : '生成问题件异常');
  417. }
  418. }).catch(err => {
  419. window.tempTip.cancelWaitingTip();
  420. window.tempTip.show(err)
  421. });
  422. },
  423. getMessageWorkOrder() {
  424. let selected = checkData;
  425. if (!selected) {
  426. window.tempTip.show('未选中任何信息');
  427. return null;
  428. }
  429. return this.workOrders.filter((item) => {
  430. if (!item.order) return false;
  431. if (!item.order.packages) return false;
  432. return selected.includes(item.id + '');
  433. });
  434. },
  435. exportText() {
  436. let items = this.getMessageWorkOrder();
  437. if (items == null) return;
  438. let text = '';
  439. items.forEach(item => {
  440. if (item.order) text += this.getExportText(item);
  441. });
  442. this.copyText(text);
  443. },
  444. getExportText(item) {
  445. if (!item.order) return '';
  446. if (!item.order.packages) return '';
  447. let message = '';
  448. let issue_type = item.issue_type? item.issue_type.name : '';
  449. switch (issue_type) {
  450. case '拦截':
  451. message = this.interceptMessage(item);
  452. break;
  453. case '信息更改':
  454. message = this.modificationMessage(item);
  455. break;
  456. default:
  457. message = this.getMessage(item);
  458. break;
  459. }
  460. return message;
  461. },
  462. interceptMessage(item) {
  463. let message = '';
  464. if (item.order.logistic.code.includes('SF') || item.order.logistic.code.includes('ZTO')) {
  465. item.order.packages.forEach(node => {
  466. message += node.logistic_number + '\n';
  467. });
  468. message = message.trim('\n') + ' ——拦截\n';
  469. } else {
  470. let item_order_logistic_name = item.order.logistic.name;
  471. let item_order_adder = item.order.consignee_name + ' '
  472. + item.order.consignee_phone + ' '
  473. + ' ' + item.order.address;
  474. item.order.packages.forEach(p => {
  475. if (p) message += item_order_logistic_name + ' ' + p.logistic_number + ' ' + item_order_adder + '\n';
  476. });
  477. message = message.trim('\n') + ' ——拦截\n';
  478. }
  479. return message;
  480. },
  481. modificationMessage(item) {
  482. let message = '';
  483. let logistic_code = item.order.logistic.code;
  484. let adder = item.order.consignee_name + ' ' + item.order.consignee_phone + ' '
  485. + item.order.province + ' ' + item.order.city + ' ' + item.order.district + ' ' + item.order.address;
  486. item.order.packages.forEach(node => {
  487. if (logistic_code.includes('SF')) { // 顺丰订单
  488. message += node.logistic_number + ' ——改信息: ' + item.remark + ',运费到付或月结' + '\n';
  489. } else if (logistic_code.includes('ZTO')) {
  490. message += node.logistic_number + ' ——改信息:' + item.remark + '\n';
  491. } else {
  492. message += node.logistic_number + ' ' + adder + ' ——改地址' + item.remark + '\n';
  493. }
  494. });
  495. return message;
  496. },
  497. getMessage(item) {
  498. let message = '';
  499. if (!item.order.packages) return message;
  500. let adder = item.order.consignee_name + ' ' + item.order.consignee_phone + ' '
  501. + item.order.province + ' ' + item.order.city + ' ' + item.order.district + ' ' + item.order.address;
  502. item.order.packages.forEach(p => {
  503. message += p.logistic_number + ' ' + adder + ' ——描述 ' + item.remark + '\n';
  504. });
  505. return message;
  506. },
  507. copyText(text) {
  508. let ele = document.querySelector('#copy_text');
  509. if (ele == null) {
  510. ele = document.createElement("textarea");
  511. ele.setAttribute('id', 'copy_text')
  512. ele.style.opacity = 0;
  513. document.querySelector('body').append(ele);
  514. }
  515. try {
  516. $("#copy_text").text(text).select().focus();
  517. document.execCommand("Copy");
  518. tempTip.showSuccess('复制成功')
  519. } catch (e) {
  520. tempTip.showSuccess('复制失败:' + e)
  521. }
  522. },
  523. batchReview() {
  524. let url = '{{route('workOrder.batchReviewApi')}}';
  525. let data = {ids: checkData};
  526. let _this = this;
  527. window.tempTip.setIndex('1999');
  528. if (!confirm('是否对当前选中订单进行审核')) return;
  529. window.tempTip.waitingTip('审核中........');
  530. window.axios.post(url, data).then(res => {
  531. if (res.data.success) {
  532. $.each(res.data.data, (i, data) => {
  533. $.each(_this.workOrders, (index, item) => {
  534. if (item.id === data.id) {
  535. _this.$set(this.workOrders, index, data);
  536. }
  537. });
  538. });
  539. this.$forceUpdate();
  540. window.tempTip.cancelWaitingTip();
  541. window.tempTip.showSuccess('审核完成');
  542. } else {
  543. window.tempTip.cancelWaitingTip();
  544. window.tempTip.show(res.data.message ? res.data.message : '审核出现异常');
  545. }
  546. }).catch(err => {
  547. window.tempTip.cancelWaitingTip();
  548. window.tempTip.show(err);
  549. })
  550. },
  551. changeIssueType(item, e) {
  552. let url = '{{route('workOrder.updateIssueTypeApi')}}';
  553. let data = {
  554. id: item.id,
  555. type_id: $(e.target).val()
  556. };
  557. window.tempTip.waitingTip('修改中.........');
  558. window.axios.post(url, data).then(res => {
  559. if (res.data.success) {
  560. window.tempTip.cancelWaitingTip();
  561. window.tempTip.showSuccess('修改成功');
  562. item.order_issue_type_id = data.type_id;
  563. } else {
  564. window.tempTip.cancelWaitingTip();
  565. window.tempTip.show(res.data.message ? res.data.message : '修改异常');
  566. }
  567. }).catch(err => {
  568. window.tempTip.cancelWaitingTip();
  569. window.tempTip.show(err);
  570. });
  571. },
  572. copyLogisticNumber() {
  573. let items = this.getMessageWorkOrder();
  574. let logistic_numbers = '';
  575. items.forEach(item => {
  576. item.order.packages.forEach(node => {
  577. logistic_numbers += node.logistic_number + '\n';
  578. });
  579. })
  580. this.copyText(logistic_numbers);
  581. },
  582. showEditIssueType() {
  583. this.selectIssueType = 0;
  584. $("#edit-issue-type-type-modal").modal('show');
  585. },
  586. editOrderIssueType() {
  587. let url = '{{route('workOrder.batchUpdateIssueTypeApi')}}'
  588. let data = {ids: checkData, type: this.selectIssueType};
  589. let _this = this;
  590. window.tempTip.setIndex(1999);
  591. window.axios.post(url, data).then(res => {
  592. if (res.data.success) {
  593. window.tempTip.showSuccess('修改问题件类型成功');
  594. res.data.data.forEach(item => {
  595. _this.sortOrder(item);
  596. _this.workOrders.forEach((workOrder, i, array) => {
  597. if (workOrder.id === item.id) {
  598. array[i] = item;
  599. }
  600. })
  601. });
  602. this.$forceUpdate();
  603. $("#edit-issue-type-type-modal").modal('hide');
  604. return;
  605. }
  606. window.tempTip.show(res.data.message ? res.data.message : '修改异常');
  607. }).catch(err => {
  608. window.tempTip.show(err)
  609. })
  610. },
  611. destroy(item,i){
  612. let url = '{{url('apiLocal/workOrder/')}}'+'/'+item.id;
  613. if(!confirm('是否删除当前工单')) return ;
  614. window.tempTip.waitingTip('删除.........');
  615. window.axios.delete(url).then(res=>{
  616. if (res.data.success){
  617. this.$delete(this.workOrders,i);
  618. window.tempTip.cancelWaitingTip();
  619. window.tempTip.showSuccess('删除成功');
  620. }else {
  621. window.tempTip.cancelWaitingTip();
  622. window.tempTip.show(res.data.message ? res.data.message : '');
  623. }
  624. }).catch(err=>{
  625. window.tempTip.cancelWaitingTip();
  626. window.tempTip.show(err);
  627. })
  628. }
  629. },
  630. });
  631. </script>
  632. @endsection