define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefined, Backend, Table, Form) { var Controller = { index: function () { // 初始化表格参数配置 Table.api.init({ extend: { index_url: 'orders/auditorder/index' + location.search, add_url: 'orders/auditorder/add', edit_url: 'orders/auditorder/edit', // del_url: 'orders/auditorder/del', //multi_url: 'orders/auditorder/multi', import_url: 'orders/auditorder/import', table: 'order', } }); var table = $("#table"); // 初始化表格 table.bootstrapTable({ queryParams: function (params) { var filter = params.filter ? JSON.parse(params.filter) : {}; var op = params.op ? JSON.parse(params.op) : {}; // 如果没有 status 参数,则默认使用 50 if (!('status' in filter)) { filter.status = '50'; op.status = '='; } params.filter = JSON.stringify(filter); params.op = JSON.stringify(op); return params; }, onLoadSuccess: function (data) { var sum = data || {}; // 1) 把汇总放到表格上方(可改为 append 到其它元素) $('#table-sum-area').remove(); // 先移除已有的,防止重复 var html = '
' + '筛选条件总计 — 总预计利润:' + (parseFloat(data.sum || 0).toFixed(2)) + '' + ',总数量:' + (parseInt(data.total || 0)) + '' + '
'; // 把汇总放在表格容器前面(你也可以放到 table.closest('.bootstrap-table') 里) table.closest('.bootstrap-table').before(html); // 2) (可选)如果你想把汇总放到表格 footer 的某一列,用 footerFormatter 示例: // 注意:footerFormatter 会在表格渲染 footer 时调用,这里只是演示 // 例如你有一列 field: 'real_amount',它的 footerFormatter 可以是: // footerFormatter: function () { var s = table.data('sum') || {}; return (parseFloat(s.real_amount||0)).toFixed(2); } }, url: $.fn.bootstrapTable.defaults.extend.index_url, pk: 'id', sortName: 'update_time', sortOrder: 'desc', fixedColumns: true, fixedRightNumber: 1, showExport: false, columns: [ [ // {checkbox: true}, {field: 'id', title: __('Id'),operate: false}, { field: 'status', title: __('Status'), searchList: {"50":__('Status 50'),"60":__('Status 60')}, formatter: Table.api.formatter.label, custom: { '50': 'warning', // 待跟进:灰蓝色(默认 Bootstrap info) '60': 'success', // 已跟进:绿色 } }, {field: 'order_no', title: __('Order_no'), operate: '='}, {field: 'customer', title: __('Customer'), operate: false}, {field: 'tel', title: __('Tel'), operate: '='}, //{field: 'area_id', title: __('Area_id')}, //{field: 'address', title: __('Address'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content}, // {field: 'lng', title: __('Lng'), operate:'BETWEEN'}, // {field: 'lat', title: __('Lat'), operate:'BETWEEN'}, //{field: 'work_tel_id', title: __('Work_tel_id')}, {field: 'source_total_name', title: __('Source_shop'), operate: false}, { field: 'source', title: '订单渠道', searchList: function (column) { return Template('source', {}); }, formatter: function (value, row, index) { return '无'; }, visible: false }, // {field: 'source', title: __('Source'), operate: 'like'}, // {field: 'source_uid', title: __('Source_uid'), operate: '='}, // {field: 'item_id', title: __('Item_id')}, {field: 'item_title', title: __('Item_title'), operate: false}, {field: 'detail', title: __('Detail'), operate: false, table: table, class: 'autocontent', formatter: Table.api.formatter.content}, {field: 'remark', title: __('Remark'), operate: false, table: table, class: 'autocontent', formatter: Table.api.formatter.content}, // {field: 'plan_time', title: __('Plan_time'), operate:'RANGE', addclass:'datetimerange', autocomplete:false}, {field: 'user.nickname', title: '录单员', operate: false}, {field: 'dispatch_admin_user', title: '派单员', operate: false}, {field: 'online_amount', title: __('Online_amount'), operate:false}, {field: 'online_amount_last', title: __('Online_amount_last'), operate:false}, {field: 'offline_amount', title: __('Offline_amount'), operate:false}, {field: 'offline_amount_type_text', title: __('Offline_amount_type'), operate:false}, {field: 'amount_images', title: __('收款凭据'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.images}, {field: 'total', title: __('Total'), operate:'BETWEEN'}, {field: 'discount_amount', title: __('Discount_amount'), operate:false}, {field: 'real_amount', title: __('Real_amount'), operate:false}, {field: 'refund_amount', title: __('Refund_amount'), operate:false}, {field: 'cost', title: __('Cost'), operate:false}, {field: 'material_cost', title: __('材料成本'), operate:false}, {field: 'performance', title: __('Performance'), operate:false}, {field: 'workerman.images', title: __('师傅收款码'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.images}, {field: 'trans_images', title: __('转账凭证'), operate: false, events: Table.api.events.image, formatter: Table.api.formatter.images}, // {field: 'cancel_reason_id', title: __('Cancel_reason_id')}, //{field: 'cancel_detail', title: __('Cancel_detail'), operate: 'LIKE', table: table, class: 'autocontent', formatter: Table.api.formatter.content}, // {field: 'audit_admin_id', title: __('Audit_admin_id')}, {field: 'create_time', title: __('Create_time'), operate:'RANGE', addclass:'datetimerange', autocomplete:false}, {field: 'update_time', title: __('Update_time'), operate:false, addclass:'datetimerange', autocomplete:false,sortable: true}, {field: 'audit_time', title: '完成时间', operate:'RANGE', addclass:'datetimerange', autocomplete:false}, //{field: 'auditadmin.username', title: __('Admin.username'), operate: 'LIKE'}, {field: 'auditadmin.nickname', title: __('Admin.nickname'), operate: '='}, {field: 'audit_remark', title: __('Audit_remark'), operate: false, table: table, class: 'autocontent', formatter: Table.api.formatter.content}, {field: 'operate', title: __('Operate'), table: table, events: Table.api.events.operate, formatter: Table.api.formatter.operate, buttons: [ { name: 'edit', text:"审核", title:"审核", icon: 'fa fa-pencil', //title: __('Edit'), extend: 'data-toggle="tooltip" data-container="body"', classname: 'btn btn-xs btn-success btn-editone', visible:function(row){ if(row.status == 50){ return true; } return false; } } ], } ] ] }); table.closest('.bootstrap-table').addClass('table-with-fixed-pagination'); $('#btn-export').on('click', function () { var options = $("#table").bootstrapTable('getOptions'); // 提取列信息(不含 checkbox) var columns = []; $.each(options.columns[0], function (i, item) { if (item.field && !item.checkbox && !item.visible === false) { columns.push({ field: item.field, title: item.title }); } }); var params = { columns: JSON.stringify(columns), filter: options.queryParams({}).filter || {}, op: options.queryParams({}).op || {}, sort: options.sortName, order: options.sortOrder }; // console.log($.param(params)) var url = '/admin/orders/auditorder/export?' + $.param(params); window.open(url); // 发起文件下载 }); // 为表格绑定事件 Table.api.bindevent(table); }, add: function () { Controller.api.bindevent(); }, edit: function () { Controller.api.bindevent(); // 图片点击放大预览 var $overlay = $('#image-preview-overlay'); var $previewImg = $('#image-preview-img'); /*$('body').on('click', 'img[data-preview="true"]', function () { var src = $(this).attr('src'); if (src) { $previewImg.attr('src', src); $overlay.fadeIn(100).css('display', 'flex'); } }); $overlay.on('click', function () { $previewImg.attr('src', ''); $overlay.fadeOut(100); });*/ // edit页面全局图片点击放大预览 $(function () { var $overlay = $('#image-preview-overlay'); var $previewImg = $('#image-preview-img'); // ✅ 所有 img 点击放大(包括上传区图片) $('body').on('click', 'img', function (e) { const src = $(this).attr('src'); if (src && src.trim() !== '') { // ✅ 如果被 a 包裹,阻止跳转 if ($(this).parent('a').length) { e.preventDefault(); } $previewImg.attr('src', src); $overlay.fadeIn(100).css('display', 'flex'); } }); // ✅ 点击遮罩关闭 $overlay.on('click', function () { $previewImg.attr('src', ''); $overlay.fadeOut(100); }); }); }, api: { bindevent: function () { Form.api.bindevent($("form[role=form]")); } } }; return Controller; });