Нет описания

seeDeliveryOrderDetails.js 15KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504
  1. /**
  2. * 查看配送工单详情
  3. * */
  4. $(function() {
  5. var edit_id = helper.request.queryString("edit_id");
  6. getDetail(edit_id);
  7. });
  8. //获取详情
  9. function getDetail(ids) {
  10. $.getJSON(huayi.config.callcenter_url + "distributionapi/api/DistriWorkOrder/getsingle", {
  11. id: ids,
  12. }, function(data) {
  13. if (data.state == "success") {
  14. var res = data.data.model;//工单内容
  15. var evaluate = data.data.evaluate;//评价
  16. var offence = data.data.offence;//违规申诉列表
  17. var transferLines = data.data.items;//转派流程
  18. var exception = data.data.exception;//送达异常
  19. $('#order_code').text('工单编号:' + res.wocode); //工单编号
  20. $('#order_pro').text(res.projectname); //项目名称
  21. $('#order_state').html(formatterwostate(res.wostate)); //工单状态
  22. $('#order_wosorts').html(res.wosorts === 1 ? '随机工单' : '分送工单'); //工单类型
  23. if(res.wosorts === 2){
  24. $('#order_plan').html(res.planname); //计划名称
  25. $('#order_plan').parent().show();
  26. }
  27. $('#order_emergency').html(formatterEmergencyid(res.emergencyid)); //紧急程度
  28. $('#order_channel').text(formatterChannel(res.channel)); //渠道来源
  29. $('#order_touser').text(res.touser); //接单人
  30. // $('#order_tousertel').text(data.data.tousertel); //接单人电话
  31. $('#order_assigtime').text(formatterCheckTime(res.assigtime)); //接单时间
  32. $('#order_islast').text(formatterIsNot(res.islast)); //是否最后一步
  33. $('#order_sended').text(formatterIsNot(res.sended)); //是否送达
  34. $('#userCode').text(formatterName(res.createtby, res)); //创建人
  35. $('#createTime').text(res.createtime); //创建时间
  36. //发货地址
  37. if (res.deliverylist && res.deliverylist.length > 0) {
  38. $('#delivery_address').show();
  39. $('#order_delivery_name').text(res.deliveryname);
  40. $('#order_delivery_tel').text(res.deliverytel);
  41. // $('#order_delivery_name').text(res.deliverylist[0].fullname);
  42. // $('#order_delivery_tel').text(res.deliverylist[0].mobile);
  43. $('#order_delivery_address').text(res.deliverylist[0].building_name + ' ' + res.deliverylist[0].floor_name + ' ' +
  44. res.deliverylist[0].department_name);
  45. }
  46. //收货地址
  47. if (res.receiverlist && res.receiverlist.length > 0) {
  48. $('#receiver_address').show();
  49. $('#order_receiver_name').text(res.receiverlist[0].fullname);
  50. $('#order_receiver_tel').text(res.receiverlist[0].mobile);
  51. $('#order_receiver_address').text(res.receiverlist[0].building_name + ' ' + res.receiverlist[0].floor_name + ' ' +
  52. res.receiverlist[0].department_name);
  53. }
  54. //配送物品
  55. if (res.goodslist && res.goodslist.length > 0) {
  56. for (var i = 0, len = res.goodslist.length; i < len; i++) {
  57. var stext = '<div class="clearfix goods_list">' +
  58. '<li>物品名称:<span>' + res.goodslist[i].goodsname + '</span></li>' +
  59. '<li>数量:<span>' + res.goodslist[i].num + '</span></li>' +
  60. '<li>是否提醒:<span>' + formatterIsNot(res.goodslist[i].isremind) + '</span></li>' +
  61. '<li style="width: 100%;">提醒备注:<span>' + helper.filter.content(res.goodslist[i].remark) + '</span></li>' +
  62. '</div>';
  63. $('#goodsLists').append(stext);
  64. }
  65. }
  66. //货物异常情况
  67. // $('#order_equipstate').text(res.isexceptions === 0 ? '正常' : '异常');
  68. // $('#order_exceptions').html(helper.filter.content(res.exceptions));
  69. //处理情况
  70. if(res.dealby && res.dealby.length > 0){
  71. $('#dealBys').show();
  72. $('#order_dealby').text(res.dealby.join(','));
  73. $('#order_dealtime').text(formatterCheckTime(res.dealtime));
  74. // $('#order_detail').html(helper.filter.content(res.detail));
  75. }
  76. //收货人签字
  77. if (res.signbypic && res.signbypic.length > 0) {
  78. $('#signbypic').parent().parent().show();
  79. $('#signbypic').attr('src', res.signbypic[0].fileurl);
  80. }
  81. //分送工单拍照
  82. if (res.planwopic && res.planwopic.length > 0) {
  83. getPlanwopic(res.planwopic, 'order_planwopic');
  84. }
  85. //评价信息
  86. if (evaluate && evaluate.length > 0) {
  87. $('#evaluate').show();
  88. $.each(evaluate, function(i, v) {
  89. var str = '<ul class="clearfix goods_list">' +
  90. '<li>星级:' +
  91. '<ul id="ratingScores_' + v.id + '" class="rating clearfix">' +
  92. '<li class="rating-item" title="差"></li>' +
  93. '<li class="rating-item" title="不满意"></li>' +
  94. '<li class="rating-item" title="一般"></li>' +
  95. '<li class="rating-item" title="满意"></li>' +
  96. '<li class="rating-item" title="很满意 "></li>' +
  97. '<span id="ratingTips_' + v.id + '" class="ratingTips"></span>' +
  98. '</ul>' +
  99. '</li>' +
  100. '<li>评价人: <span>' + v.createusername + '(' + v.createuser + ')</span></li>' +
  101. '<li>评价时间:<span>' + v.createtime + '</span></li>' +
  102. '<li style="width: 100%;">' +
  103. '评价内容:<span>' + helper.filter.content(v.evaluate) + '</span>' +
  104. '</li>' +
  105. '<li style="width: 100%;">' +
  106. '评价标签:<span id="greetingRemark_' + v.id + '"></span>' +
  107. '</li>' +
  108. '</ul>';
  109. $('#evaluate_lists').append(str);
  110. if (v.starnum) {
  111. //1 差、2 不满意、3 一般、4 满意、5 很满意
  112. rating.init('#ratingScores_' + v.id, {
  113. mode: 'LightEntire',
  114. num: v.starnum,
  115. readOnly: true,
  116. });
  117. $('#ratingTips_' + v.id).text(formatterSatisfied(v.starnum));
  118. }
  119. //评价关键词
  120. if (v.label) {
  121. $(v.label).each(function(i, n) {
  122. $('<span class="btn-label">' + n + '</span>').appendTo('#greetingRemark_' + v.id);
  123. })
  124. } else {
  125. $('#greetingRemark').html('暂无信息。。');
  126. }
  127. });
  128. }
  129. //违规申诉列表
  130. if (offence && offence.length > 0) {
  131. $('#offence').show();
  132. $.each(offence, function(i, v) {
  133. var str = '<ul class="clearfix goods_list">' +
  134. '<li>是否审核通过:<span>' + formatterAudit(v.isaudit) + '</span></li>' +
  135. '<li style="width: 100%;">' +
  136. '违规原因:<span>' + helper.filter.content(v.content) + '</span>' +
  137. '</li>' +
  138. '<li style="width: 100%;">' +
  139. '驳回原因:<span>' + helper.filter.content(v.content_rejectreason) + '</span>' +
  140. '</li>' +
  141. '</ul>';
  142. $('#offence_lists').append(str);
  143. });
  144. }
  145. //转派流程
  146. if (transferLines && transferLines.length > 0) {
  147. transferLines.sort(helper.methods.compare('createtime', -1));
  148. $('#transferLines').empty();
  149. $.each(transferLines, function(i, v) {
  150. //配送工单状态:0创建工单,1转派或者接收(待取货),2已取货(配送中),3货物异常(异常),4已完结/待评价,5已取消,7取货异常退单 ,9已评价
  151. var timelineHtml = '';
  152. if (i === 0) {
  153. timelineHtml = creatTimeLineHtml(v, 'layui-item_active');
  154. } else {
  155. timelineHtml = creatTimeLineHtml(v, 'layui-item_default');
  156. }
  157. $('#transferLines').append(timelineHtml);
  158. });
  159. }
  160. //货物异常情况
  161. if(exception && exception.length > 0){
  162. //货物异常情况
  163. getException(exception);
  164. }
  165. }
  166. });
  167. }
  168. //货物异常情况
  169. function getException(exception){
  170. $('#exception_lists').parent().show();
  171. $.each(exception, function(i, v){
  172. var str = '<ul class="clearfix goods_list">'+
  173. '<li>异常类型:<span>'+ (v.type === 1 ? '完结配送异常' : '取货异常') +'</span></li>'+
  174. '<li>是否送达/是否退单:<span>'+ (v.isback_sended ? '是' : '否') +'</span></li>'+
  175. '<li style="width: 100%;">'+
  176. '异常内容:<span>'+ helper.filter.content(v.content) +'</span>'+
  177. '</li>'+
  178. '<li style="width: 100%;">'+
  179. '异常附件:'+
  180. '<ul id="order_exceptionFile_'+ v.id + '" class="file_imgs clearfix">'+
  181. '</ul>'+
  182. '</li>'+
  183. '</ul>';
  184. $('#exception_lists').append(str);
  185. //获取异常附件
  186. getPlanwopic(v.files, 'order_exceptionFile_' + v.id);
  187. });
  188. };
  189. /**
  190. * 获取分送工单拍照 获取异常附件
  191. * @planwopics 数据
  192. * @el 元素
  193. */
  194. function getPlanwopic(planwopics, el){
  195. if(el === 'order_planwopic'){
  196. //分送工单拍照
  197. $('#' + el).parent().parent().show();
  198. }
  199. var $list = $('#' + el);
  200. if(planwopics && planwopics.length > 0){
  201. $.each(planwopics, function(i, v) {
  202. if (v.filesmallurl) {
  203. //原来的图片
  204. var $li = $(
  205. '<li><span class="img_mask"><a href="' + v.fileurl +
  206. '" download="filename" title="点击下载"><i class="glyphicon glyphicon-download-alt" aria-hidden="true"></i></a></span>' +
  207. '<img layer-src="' + v.fileurl + '" src="' + v.filesmallurl + '" title="图片" alt="' + v.filename + '"/>' +
  208. '<span class="file_name">' + v.filename + '</span>' +
  209. '</li>'
  210. );
  211. $list.append($li);
  212. } else {
  213. var $liFile = $(
  214. '<li><span class="img_mask"><a href="' + v.fileurl +
  215. '" download="filename" title="点击下载"><i class="glyphicon glyphicon-download-alt" aria-hidden="true"></i></a></span>' +
  216. '<div class="noThumb" title="文件"><i class="glyphicon glyphicon-paperclip"></i><p>无法预览</p></div>' +
  217. '<span class="file_name">' + v.filename + '</span>' +
  218. '</li>'
  219. );
  220. $list.append($liFile);
  221. }
  222. });
  223. layer.photos({
  224. photos: '#' + el,
  225. anim: 5, //0-6的选择,指定弹出图片动画类型,默认随机(请注意,3.0之前的版本用shift参数)
  226. title: '查看图片',
  227. move: '.layui-layer-title',
  228. shadeClose: false,
  229. closeBtn: 1,
  230. area: ['80%', '90%'],
  231. tab: function(pic, layero) {
  232. $('.layui-layer-content').on("mousewheel", function(e, d) {
  233. helper.methods.zoomImg($('#layui-layer-photos').find('img[alt="' + pic.alt + '"]'), d);
  234. $('#layui-layer-photos').find('img[alt="' + pic.alt + '"]').dragging({
  235. move: "both", //拖动方向,x y both
  236. randomPosition: false //初始位置是否随机
  237. });
  238. return false;
  239. });
  240. helper.methods.initLayerPhotos('#layui-layer-photos', pic, layero);
  241. },
  242. });
  243. }
  244. };
  245. /**
  246. * 创建时间线 内容
  247. * v 数据
  248. * vC class名
  249. * */
  250. function creatTimeLineHtml(v, vC) {
  251. var timelineHtml = '';
  252. if (v.wostate === 0) {
  253. timelineHtml += '<li class="layui-timeline-item ' + vC + '">' +
  254. '<i class="layui-icon layui-timeline-axis"></i>' +
  255. '<div class="layui-timeline-content layui-text">' +
  256. '<h3 class="layui-timeline-title">创建工单</h3>' +
  257. '<p>' + v.createtime + '</p>' +
  258. '<p>' + v.detail + '</p>' +
  259. '</div>' +
  260. '</li>';
  261. } else {
  262. timelineHtml += '<li class="layui-timeline-item ' + vC + '">' +
  263. '<i class="layui-icon layui-timeline-axis"></i>' +
  264. '<div class="layui-timeline-content layui-text">' +
  265. '<h3 class="layui-timeline-title">' + getWostate(v.wostate).stateName + '</h3>' +
  266. '<p>' + v.createtime + '</p>' +
  267. '<p>' + v.detail + '</p>' +
  268. '</div>' +
  269. '</li>';
  270. }
  271. return timelineHtml;
  272. }
  273. //获取工单状态
  274. function getWostate(wostate) {
  275. //配送工单状态:0创建工单,1转派或者接收(待取货),2已取货(配送中),3货物异常(异常),4已完结/待评价,5已取消,7取货异常退单 ,9已评价
  276. var stateClass, stateName;
  277. switch (wostate) {
  278. case 0:
  279. stateClass = 'state_audit_wait';
  280. stateName = '新工单';
  281. break;
  282. case 1:
  283. stateClass = 'state_audit_refuse';
  284. stateName = '待取货';
  285. break;
  286. case 2:
  287. stateClass = 'state_audit_doned';
  288. stateName = '配送中';
  289. break;
  290. case 3:
  291. stateClass = 'state_audit_refuse';
  292. stateName = '异常完结';
  293. break;
  294. case 4:
  295. stateClass = 'state_audit_done';
  296. stateName = '已完结';
  297. break;
  298. case 5:
  299. stateClass = 'state_audit_revoke';
  300. stateName = '已取消';
  301. break;
  302. case 6:
  303. stateClass = 'state_audit_hang';
  304. stateName = '已挂起';
  305. break;
  306. case 9:
  307. stateClass = 'state_audit_other';
  308. stateName = '已评价';
  309. break;
  310. default:
  311. stateClass = 'text-block';
  312. stateName = '-';
  313. break;
  314. }
  315. return {
  316. 'stateClass': stateClass,
  317. 'stateName': stateName
  318. };
  319. }
  320. //格式化是否
  321. function formatterIsNot(val) {
  322. var str = '是';
  323. if (!val) {
  324. str = '否';
  325. }
  326. return str;
  327. }
  328. //格式化审核是否通过
  329. function formatterAudit(val) {
  330. var str = '-';
  331. //是否审核通过 0无操作 1不通过 2通过
  332. switch (val) {
  333. case 0:
  334. str = '无操作';
  335. break;
  336. case 1:
  337. str = '不通过';
  338. break;
  339. case 2:
  340. str = '通过';
  341. break;
  342. default:
  343. break;
  344. }
  345. return str;
  346. }
  347. //格式化工单状态
  348. function formatterwostate(val) {
  349. //int 0新工单,1转派或者接收(待取货),2已取货(配送中),3货物异常(异常) 4已完结/待评价,5已取消,6挂起 ,9已评价
  350. var stateClass, stateName;
  351. switch (val) {
  352. case 0:
  353. stateClass = 'state_audit_wait';
  354. stateName = '新工单';
  355. break;
  356. case 1:
  357. stateClass = 'state_audit_refuse';
  358. stateName = '待取货';
  359. break;
  360. case 2:
  361. stateClass = 'state_audit_doned';
  362. stateName = '配送中';
  363. break;
  364. case 3:
  365. stateClass = 'state_audit_refuse';
  366. stateName = '异常完结';
  367. break;
  368. case 4:
  369. stateClass = 'state_audit_done';
  370. stateName = '已完结';
  371. break;
  372. case 5:
  373. stateClass = 'state_audit_revoke';
  374. stateName = '已取消';
  375. break;
  376. case 6:
  377. stateClass = 'state_audit_hang';
  378. stateName = '已挂起';
  379. break;
  380. case 9:
  381. stateClass = 'state_audit_other';
  382. stateName = '已评价';
  383. break;
  384. default:
  385. stateClass = 'text-block';
  386. stateName = '-';
  387. break;
  388. }
  389. return '<a class="state_audit ' + stateClass + '" href="javascript:;">' + stateName + '</a>';
  390. }
  391. //格式化紧急程度
  392. function formatterEmergencyid(val) {
  393. var stateClass = 'timeout_default';
  394. var stateTxt = '-';
  395. switch (val) {
  396. case 1:
  397. stateClass = 'timeout_success';
  398. stateTxt = '一般';
  399. break;
  400. case 2:
  401. stateClass = 'timeout_termination';
  402. stateTxt = '紧急';
  403. break;
  404. default:
  405. break;
  406. }
  407. return '<span class="' + stateClass + '">' + stateTxt + '</span>';
  408. }
  409. //格式化渠道来源
  410. function formatterChannel(val, row) {
  411. //1表示PC 2表示安卓 3表示IOS 4表示微信
  412. var str = '-';
  413. switch (val) {
  414. case 1:
  415. str = 'PC';
  416. break;
  417. case 2:
  418. str = '安卓';
  419. break;
  420. case 3:
  421. str = 'IOS';
  422. break;
  423. case 4:
  424. str = '微信';
  425. break;
  426. default:
  427. break;
  428. }
  429. return str;
  430. }
  431. //格式化 时间
  432. function formatterCheckTime(val) {
  433. if (val == "0001-01-01 00:00:00" || val == "" || val == null || val == undefined) {
  434. return "-";
  435. } else {
  436. return val;
  437. }
  438. }
  439. //格式化创建人
  440. function formatterName(val, row) {
  441. var str = '';
  442. if (row.channel === 4) {
  443. str = row.createname;
  444. } else {
  445. str = val + '-' + row.createname;
  446. }
  447. return str;
  448. }
  449. //格式化满意度
  450. function formatterSatisfied(score) {
  451. var scoreTips = '';
  452. switch (score) {
  453. case 1:
  454. scoreTips = '差'
  455. break;
  456. case 2:
  457. scoreTips = '不满意'
  458. break;
  459. case 3:
  460. scoreTips = '一般'
  461. break;
  462. case 4:
  463. scoreTips = '满意'
  464. break;
  465. case 5:
  466. scoreTips = '很满意'
  467. break;
  468. default:
  469. break;
  470. }
  471. return scoreTips;
  472. }