mobile_order.js 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268
  1. define(['jquery', 'bootstrap', 'backend', 'table', 'form','clipboard'],
  2. function ($, undefined, Backend, Table, Form,clipboard) {
  3. var Controller = {
  4. index: async function () {
  5. // 初始化表格参数配置
  6. Table.api.init({
  7. extend: {
  8. index_url: 'mobile_order/index' + location.search,
  9. add_url: 'mobile_order/add',
  10. edit_url: 'mobile_order/edit',
  11. del_url: 'mobile_order/del',
  12. multi_url: 'mobile_order/multi',
  13. import_url: 'mobile_order/import',
  14. show_open_data_url: 'mobile_order/show_open_data',
  15. table: 'mobile_order',
  16. }
  17. });
  18. var table = $("#table");
  19. let clip=new clipboard('.btn-pay_link',{
  20. text(a){
  21. let link=$(a).data('link')
  22. return link
  23. }
  24. })
  25. clip.on('success',function (){
  26. parent.layer.msg('复制成功')
  27. })
  28. let status = await $.getJSON('mobile_order/status')
  29. let payType = await $.getJSON('mobile_order/pay_type')
  30. let mobileRules = await $.getJSON('mobile/mobile_rules')
  31. table.on('load-success.bs.table', function (_, data) {
  32. let e=data.extend;
  33. $('#orderAmount').html(`收入:${e.total}支付宝:${e.alipay}微信:${e.wechat}京东:${e.jd}成本:${e.di}利润:${e.profit}退款:${e.refund}`)
  34. });
  35. $(document).on('click','.btn-click-show-open',function (){
  36. if($(this).data('open')!==1){
  37. parent.layer.msg('该用户未上传开卡资料')
  38. return
  39. }
  40. Fast.api.open($.fn.bootstrapTable.defaults.extend.show_open_data_url+'/id/'+$(this).data('id'),'查看资料',{
  41. shade:.3,
  42. shadeClose:false,
  43. })
  44. })
  45. // 初始化表格
  46. table.bootstrapTable({
  47. url: $.fn.bootstrapTable.defaults.extend.index_url,
  48. pk: 'id',
  49. sortName: 'id',
  50. search:false,
  51. searchFormVisible:true,
  52. columns: [
  53. [
  54. //{checkbox: true},
  55. {field: 'id', title: __('ID'),operate:false,},
  56. {field: 'order_no', title: __('订单号'),visible:false,operate: 'like'},
  57. {field: 's_id', title: __('来源渠道')},
  58. {field: 'pay_type', title: __('支付方式'),searchList: payType,visible: false},
  59. {field: 'pay_mid_wechat', title: __('微信商户号'),visible: false,operate: 'LIKE'},
  60. {field: 'pay_mid_alipay', title: __('支付宝商户号'),visible: false,operate: 'LIKE'},
  61. {field: 'name', title: __('收货人'),visible: false,operate: 'LIKE'},
  62. {field: 'phone', title: __('收货人手机'),visible: false,operate: 'LIKE'},
  63. {field: 'no', title: __('手机号'),visible: false,operate: 'LIKE'},
  64. {field: 'order_no', title: __('订单信息'),operate: false,formatter(_,order){
  65. let a=[]
  66. a.push(`<div>订单号:${order.order_no}</div>`)
  67. a.push(`<div>商品信息:${order.no}</div>`)
  68. a.push(`<div>卡品牌:${order.brand}</div>`)
  69. a.push(`<div>底价:${order.amount_di}</div>`)
  70. a.push(`<div>预存:${order.amount_charge}</div>`)
  71. a.push(`<div>单价:${order.amount}</div>`)
  72. a.push(`<div>订单价格:${order.amount}</div>`)
  73. a.push(`<div>套餐:${order.info?order.info.info.describe:''}</div>`)
  74. a.push(`<div>备注:${order.info?order.info.mobile.remark:''}</div>`)
  75. return `<div style="max-width: 200px;word-wrap: break-word;word-break: break-all;white-space: normal;text-align: left;">${a.join('')}</div>`
  76. },width:200,valign:'top',align:'left'},
  77. {field: 'order_no', title: __('收货人'),operate: false,formatter(_,order){
  78. let a=[]
  79. a.push(`<div>收货人:${order.name}</div>`)
  80. a.push(`<div>手机号:${order.phone}<span style="color: red;">(${order.phone_order_count})</span></div>`)
  81. a.push(`<div>地址:${order.address}</div>`)
  82. a.push(`<div>支付方式:${payType[order.pay_type]}</div>`)
  83. a.push(`<div>微信商户号:<span style="color: #00b578;">${order.pay_mid_wechat}</span></div>`)
  84. a.push(`<div>支付宝商户号:<span style="color: #0d6aad;">${order.pay_mid_alipay}</span></div>`)
  85. a.push(`<div>备注:${order.remark}</div>`)
  86. a.push(`<div>快递名称:${order.trans_name}</div>`)
  87. a.push(`<div>快递单号:${order.trans_no}</div>`)
  88. a.push(`<a class="btn btn-link btn-click-show-open" style="color: #00a2ff;" data-id="${order.id}" data-open="${order.open_uploaded}">查看资料</a>`)
  89. return `<div style="max-width: 200px;text-align: left;" class="break-words">${a.join('')}</div>`
  90. },width:200,valign:'top',align:'left'},
  91. {field: 'status', title: __('Status'),formatter: Table.api.formatter.label,searchList:status},
  92. {field: 'rule', title: __('类型'),visible: false,searchList:mobileRules},
  93. {field: 'remark_backend', title: __('备注'),formatter: Table.api.formatter.content,operate:false,align: 'left',valign: 'top'},
  94. //{field: 'remark_sub', title: __('分站备注'),formatter: Table.api.formatter.content,operate:false},
  95. {field: '', title: __('退款记录'),formatter(_,order){
  96. let a=[]
  97. order.refund_log.forEach(item=>{
  98. a.push(`<div>${item.create_time_format} ${item.pass?'同意':'驳回'} ${item.reason}</div>`)
  99. })
  100. return `<div style="text-align: left;font-size: 10px;" class="break-words">${a.join('')}</div>`
  101. },operate:false,valign:'top',align:'left'},
  102. {field: '', title: __('操作员'),formatter(_,order){
  103. let a=[]
  104. order.admin.forEach(item=>{
  105. a.push(`<div>${item.admin.nickname}</div>`)
  106. })
  107. return `<div style="text-align: left;font-size: 10px;" class="break-words">${a.join('')}</div>`
  108. },operate:false,valign:'top',align:'left'},
  109. {field: '', title: __('客服记录'),formatter(_,order){
  110. let a=[]
  111. order.operation.forEach(item=>{
  112. a.push(`<div><span style="color: #0000ff;">${item.create_time_format}</span> <span style="color: #00caff">${item.admin?item.admin.nickname:'-'}-${item.admin?item.admin.job:'-'}</span> ${item.content}</div>`)
  113. })
  114. return `<div style="text-align: left;font-size: 10px;max-width: 200px;" class="break-words">${a.join('')}</div>`
  115. },operate:false,valign:'top',align:'left'},
  116. {field: '', title: __('操作员'),formatter(_,order){
  117. let a=[]
  118. order.admin.forEach(item=>{
  119. a.push(`<div>${item.admin.nickname}</div>`)
  120. })
  121. return `<div style="text-align: left;font-size: 10px;">${a.join('')}</div>`
  122. },operate:false,valign:'top',align:'left'},
  123. {field: 'pay_link', title: __('付款链接'),formatter(_,order){
  124. if(order.status!==0){
  125. return ''
  126. }
  127. return `<button class="btn btn-success btn-sm btn-pay_link" data-link="${order.pay_link}">点击复制</button>`
  128. },operate:false},
  129. {field: 'create_time', title: __('Create_time'),formatter: Table.api.formatter.datetime,addClass:'datetimerange',operate: 'range'},
  130. {field: 'update_time', title: __('更新时间'),formatter: Table.api.formatter.datetime,addClass:'datetimerange',operate: 'range'},
  131. /* {field: 'pay_time', title: __('Pay_time'),formatter: Table.api.formatter.datetime,addClass:'datetimerange',operate: 'range'},
  132. {field: 'trans_name', title: __('Trans_name')},
  133. {field: 'trans_no', title: __('Trans_no')},
  134. {field: 'amount_original', title: __('Amount_original'), operate: 'BETWEEN'},
  135. {field: 'amount_hd', title: __('Amount_hd'), operate: 'BETWEEN'},
  136. {field: 'amount_charge', title: __('Amount_charge'), operate: 'BETWEEN'},
  137. {field: 'amount', title: __('Amount'), operate: 'BETWEEN'},
  138. {field: 'open_idcard_face_img', title: __('开卡身份证正面照'),formatter: Table.api.formatter.image,events: Table.api.events.image,opera: false},
  139. {field: 'open_idcard_back_img', title: __('开卡身份证背面照'),formatter: Table.api.formatter.image,events: Table.api.events.image,operate:false},
  140. {field: 'open_face_img', title: __('开卡人头像'),formatter: Table.api.formatter.image,events: Table.api.events.image,operate:false},
  141. {field: 'open_name', title: __('开卡人姓名')},
  142. {field: 'open_id_no', title: __('开卡人身份证号码')},
  143. {field: 'open_phone', title: __('开卡人手机号')},*/
  144. {field: 'trans_no', title: __('Trans_no'),visible: false,operate: "like"},
  145. {field: 'id_no', title: __('收货人身份证'),visible: false,operate: "like"},
  146. {
  147. field: 'operate',
  148. title: __('Operate'),
  149. table: table,
  150. events: Table.api.events.buttons,
  151. formatter: Table.api.formatter.buttons,
  152. buttons:[
  153. {
  154. name: 'detail',
  155. text: __('添加备注'),
  156. title: __('添加备注'),
  157. classname: 'btn btn-xs btn-info btn-dialog period',
  158. url: 'mobile_order/add_operation?a=1',
  159. callback: function (data) {
  160. },
  161. visible: function (row) {
  162. return $('#table').data('add_operation');
  163. }
  164. },
  165. {
  166. name: 'detail',
  167. text: __('编辑'),
  168. title: __('编辑'),
  169. classname: 'btn btn-xs btn-info btn-dialog period',
  170. url: 'mobile_order/edit?a=1',
  171. callback: function (data) {
  172. },
  173. visible: function (row) {
  174. return $('#table').data('add_operation');
  175. }
  176. },
  177. {
  178. name: 'detail',
  179. text: __('退款'),
  180. title: __('退款'),
  181. classname: 'btn btn-xs btn-danger btn-dialog period',
  182. url: 'mobile_order/refund?a=1',
  183. callback: function (data) {
  184. },
  185. visible: function (row) {
  186. return $('#table').data('mobile_order_refund') && row.status>0 && row.status!=90;
  187. }
  188. },
  189. {
  190. name: 'detail',
  191. text: __('发货'),
  192. title: __('发货'),
  193. classname: 'btn btn-xs btn-info btn-dialog period',
  194. url: 'mobile_order/send?a=1',
  195. callback: function (data) {
  196. },
  197. visible: function (row) {
  198. return $('#table').data('mobile_order_send') && row.status>0;
  199. }
  200. },
  201. {
  202. name:'detail',
  203. title:'查看物流',
  204. text: __('查看物流'),
  205. classname: 'btn btn-xs btn-danger btn-dialog',
  206. url: 'mobile_order/see_logistics?a=1',
  207. visible:(row)=>{
  208. return $('#table').data('see_logistics') && row.trans_id>0 && row.trans_no
  209. }
  210. }
  211. ]
  212. }
  213. ]
  214. ],
  215. onLoadSuccess(a){
  216. $('.btn-export').attr('href',a.link).show()
  217. }
  218. });
  219. // 为表格绑定事件
  220. Table.api.bindevent(table);
  221. },
  222. add: function () {
  223. Controller.api.bindevent();
  224. },
  225. edit: function () {
  226. Controller.api.bindevent();
  227. $(document).on('input propertychange','#c-trans_no',function (){
  228. let no=$(this).val()
  229. if(!no){
  230. return
  231. }
  232. Form.api.guessLogistics(no,'#c-trans_id')
  233. })
  234. },
  235. add_operation(){
  236. Controller.api.bindevent();
  237. },
  238. refund(){
  239. Controller.api.bindevent();
  240. },
  241. send(){
  242. Controller.api.bindevent();
  243. $(document).on('input propertychange','#c-trans_no',function (){
  244. let no=$(this).val()
  245. if(!no){
  246. return
  247. }
  248. Form.api.guessLogistics(no,'#c-trans_id')
  249. })
  250. },
  251. show_open_data(){
  252. Controller.api.bindevent()
  253. },
  254. api: {
  255. bindevent: function () {
  256. Form.api.bindevent($("form[role=form]"));
  257. }
  258. }
  259. };
  260. return Controller;
  261. });