|
|
@@ -96,11 +96,15 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|
|
var allOnlyCols = ['ID'];
|
|
|
|
|
|
Controller.currYm = ($layout.data('defaultYm') || '').toString();
|
|
|
- Controller.wffTab = 'all';
|
|
|
+ Controller.wffTab = ($layout.data('procuremenStage') || 'pick').toString();
|
|
|
+ if (['pick', 'audit', 'confirm'].indexOf(Controller.wffTab) < 0) {
|
|
|
+ Controller.wffTab = 'pick';
|
|
|
+ }
|
|
|
+ var listAction = Controller.wffTab;
|
|
|
|
|
|
Table.api.init({
|
|
|
extend: {
|
|
|
- index_url: 'procuremen/index' + location.search,
|
|
|
+ index_url: 'procuremen/' + listAction + location.search,
|
|
|
multi_url: 'procuremen/multi',
|
|
|
import_url: 'procuremen/import',
|
|
|
table: 'scydgy',
|
|
|
@@ -109,50 +113,35 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|
|
|
|
|
$('.procuremen-ym-item').removeClass('active');
|
|
|
$('.procuremen-ym-item[data-ym="' + Controller.currYm + '"]').addClass('active');
|
|
|
- $('.procuremen-wff-tabs').find('li').removeClass('active');
|
|
|
- $('.procuremen-wff-tabs').find('a[data-wff="' + Controller.wffTab + '"]').parent().addClass('active');
|
|
|
|
|
|
- $(document).off('click.procuremenWff', '.procuremen-wff-tabs a').on('click.procuremenWff', '.procuremen-wff-tabs a', function (e) {
|
|
|
- e.preventDefault();
|
|
|
- var t = $(this).data('wff');
|
|
|
- if (!t || t === Controller.wffTab) {
|
|
|
- return;
|
|
|
+ var stagePick = Controller.wffTab === 'pick';
|
|
|
+ var stageConfirm = Controller.wffTab === 'confirm';
|
|
|
+ var stageAudit = Controller.wffTab === 'audit';
|
|
|
+ issuedOnlyCols.forEach(function (field) {
|
|
|
+ try {
|
|
|
+ table.bootstrapTable((stageAudit || stageConfirm) ? 'showColumn' : 'hideColumn', field);
|
|
|
+ } catch (ignore) {
|
|
|
}
|
|
|
- Controller.wffTab = t;
|
|
|
- $('.procuremen-wff-tabs').find('li').removeClass('active');
|
|
|
- $('.procuremen-wff-tabs').find('a[data-wff="' + Controller.wffTab + '"]').parent().addClass('active');
|
|
|
- /* 先清空:否则 show/hideColumn 会立刻用上一状态的 data 重绘一行/多行,直到 refresh 返回才消失 */
|
|
|
+ });
|
|
|
+ pendingOnlyCols.forEach(function (field) {
|
|
|
try {
|
|
|
- table.bootstrapTable('removeAll');
|
|
|
+ table.bootstrapTable(stageConfirm ? 'showColumn' : 'hideColumn', field);
|
|
|
+ } catch (ignore) {
|
|
|
+ }
|
|
|
+ });
|
|
|
+ pickedOnlyCols.forEach(function (field) {
|
|
|
+ try {
|
|
|
+ table.bootstrapTable(stageAudit ? 'showColumn' : 'hideColumn', field);
|
|
|
} catch (ignore) {
|
|
|
}
|
|
|
- var issuedNow = Controller.wffTab === 'pending' || Controller.wffTab === 'done' || Controller.wffTab === 'picked';
|
|
|
- issuedOnlyCols.forEach(function (field) {
|
|
|
- try {
|
|
|
- table.bootstrapTable(issuedNow ? 'showColumn' : 'hideColumn', field);
|
|
|
- } catch (ignore) {
|
|
|
- }
|
|
|
- });
|
|
|
- pendingOnlyCols.forEach(function (field) {
|
|
|
- try {
|
|
|
- table.bootstrapTable(Controller.wffTab === 'pending' ? 'showColumn' : 'hideColumn', field);
|
|
|
- } catch (ignore) {
|
|
|
- }
|
|
|
- });
|
|
|
- pickedOnlyCols.forEach(function (field) {
|
|
|
- try {
|
|
|
- table.bootstrapTable(Controller.wffTab === 'picked' ? 'showColumn' : 'hideColumn', field);
|
|
|
- } catch (ignore) {
|
|
|
- }
|
|
|
- });
|
|
|
- allOnlyCols.forEach(function (field) {
|
|
|
- try {
|
|
|
- table.bootstrapTable(issuedNow ? 'hideColumn' : 'showColumn', field);
|
|
|
- } catch (ignore) {
|
|
|
- }
|
|
|
- });
|
|
|
- table.bootstrapTable('refresh', {pageNumber: 1});
|
|
|
});
|
|
|
+ try {
|
|
|
+ table.bootstrapTable(stagePick ? 'showColumn' : 'hideColumn', 'state');
|
|
|
+ } catch (ignore) {
|
|
|
+ }
|
|
|
+ $('#btn-procuremen-pick-review').toggle(stagePick);
|
|
|
+ $('#btn-procuremen-batch-finish').toggle(stagePick);
|
|
|
+ $('#btn-procuremen-pick-add').toggle(stagePick);
|
|
|
|
|
|
$(document).off('click.procuremenYm', '.procuremen-ym-item').on('click.procuremenYm', '.procuremen-ym-item', function () {
|
|
|
var ym = $(this).data('ym');
|
|
|
@@ -169,47 +158,6 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|
|
table.bootstrapTable('refresh', {pageNumber: 1});
|
|
|
});
|
|
|
|
|
|
- $(document).off('click.procuremenExportMonth', '#btn-export-month-outward').on('click.procuremenExportMonth', '#btn-export-month-outward', function () {
|
|
|
- var ymDefault = (Controller.currYm || '').toString();
|
|
|
- if (!/^\d{4}-\d{2}$/.test(ymDefault)) {
|
|
|
- ymDefault = ($layout.data('defaultYm') || '').toString();
|
|
|
- }
|
|
|
- if (!/^\d{4}-\d{2}$/.test(ymDefault)) {
|
|
|
- ymDefault = '';
|
|
|
- }
|
|
|
- if (!ymDefault) {
|
|
|
- var d = new Date();
|
|
|
- ymDefault = d.getFullYear() + '-' + ('0' + (d.getMonth() + 1)).slice(-2);
|
|
|
- }
|
|
|
- var escYm = String(ymDefault == null ? '' : ymDefault).replace(/&/g, '&').replace(/"/g, '"').replace(/</g, '<').replace(/>/g, '>');
|
|
|
- var html = ''
|
|
|
- + '<div style="padding:14px 18px 6px;">'
|
|
|
- + '<div class="form-group" style="margin-bottom:0;">'
|
|
|
- + '<input type="month" id="export-outward-ym-input" class="form-control" value="' + escYm + '" style="max-width:220px;" />'
|
|
|
- + '</div>'
|
|
|
- + '</div>';
|
|
|
- Layer.open({
|
|
|
- type: 1,
|
|
|
- title: '月份外发明细导出',
|
|
|
- area: ['370px', 'auto'],
|
|
|
- shadeClose: true,
|
|
|
- content: html,
|
|
|
- btn: ['导出 Excel'],
|
|
|
- yes: function (index, layero) {
|
|
|
- var v = (layero.find('#export-outward-ym-input').val() || '').trim();
|
|
|
- if (!/^\d{4}-\d{2}$/.test(v)) {
|
|
|
- Toastr.warning('请选择有效月份');
|
|
|
- return;
|
|
|
- }
|
|
|
- Layer.close(index);
|
|
|
- var url = Fast.api.fixurl('procuremen/export_month_outward?ym=' + encodeURIComponent(v));
|
|
|
- setTimeout(function () {
|
|
|
- window.open(url, '_blank');
|
|
|
- }, 100);
|
|
|
- }
|
|
|
- });
|
|
|
- });
|
|
|
-
|
|
|
table.on('post-header.bs.table', function () {
|
|
|
var $host = $('#procuremen-toolbar-host');
|
|
|
var $bt = table.closest('.bootstrap-table');
|
|
|
@@ -265,10 +213,10 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|
|
});
|
|
|
|
|
|
var indexInitWffTab = Controller.wffTab;
|
|
|
- var indexShowall = indexInitWffTab === 'all';
|
|
|
- var indexShowIssued = indexInitWffTab === 'pending' || indexInitWffTab === 'done' || indexInitWffTab === 'picked';
|
|
|
- var indexShowPendingOnly = indexInitWffTab === 'pending';
|
|
|
- var indexShowPickedOnly = indexInitWffTab === 'picked';
|
|
|
+ var indexShowall = indexInitWffTab === 'pick';
|
|
|
+ var indexShowIssued = indexInitWffTab === 'audit' || indexInitWffTab === 'confirm';
|
|
|
+ var indexShowPendingOnly = indexInitWffTab === 'confirm';
|
|
|
+ var indexShowPickedOnly = indexInitWffTab === 'audit';
|
|
|
function procuremenEscAttr(s) {
|
|
|
return String(s == null ? '' : s)
|
|
|
.replace(/&/g, '&')
|
|
|
@@ -276,6 +224,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|
|
.replace(/'/g, ''');
|
|
|
}
|
|
|
var indexTableColumns = [
|
|
|
+ {checkbox: true, field: 'state', visible: indexShowall, align: 'center', width: 42, class: 'procuremen-col-checkbox'},
|
|
|
// {field: 'ID', title: __('ID'), operate: 'LIKE', table: 'a', width: 100, align: 'center',
|
|
|
// visible: indexShowall,
|
|
|
// formatter: function (v) {
|
|
|
@@ -290,14 +239,18 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|
|
// },
|
|
|
{field: 'CCYDH', title: __('订单号'), operate: 'LIKE', table: 'b', width: 100, align: 'center'},
|
|
|
{field: 'CYJMC', title: __('印件名称'), operate: 'LIKE', table: 'b', width: 270, align: 'left'},
|
|
|
- {field: 'CGYMC', title: __('工序名称'), operate: 'LIKE', table: 'a', width: 100, align: 'center'},
|
|
|
+ {field: 'CGYMC', title: __('工序名称'), operate: 'LIKE', table: 'a', width: 140, align: 'left',
|
|
|
+ formatter: function (v) {
|
|
|
+ return v != null && v !== '' ? String(v) : '';
|
|
|
+ }
|
|
|
+ },
|
|
|
{field: 'CDW', title: __('单位'), operate: 'LIKE', table: 'a', width: 50, align: 'center'},
|
|
|
{field: 'NGZL', title: __('工作量'), operate: false, table: 'a', width: 80, align: 'center'},
|
|
|
{field: 'This_quantity', title: '本次数量', operate: false, table: 'a', width: 96, align: 'center',
|
|
|
visible: true,
|
|
|
formatter: function (v, row, index) {
|
|
|
- var tab = Controller.wffTab || 'all';
|
|
|
- if (tab === 'all') {
|
|
|
+ var tab = Controller.wffTab || 'pick';
|
|
|
+ if (tab === 'pick') {
|
|
|
var val = (v != null && v !== '') ? String(v) : '';
|
|
|
return '<input type="text" class="form-control input-sm procuremen-po-field procuremen-po-qty" '
|
|
|
+ 'style="min-width:72px;max-width:96px;height:28px;padding:2px 6px;" '
|
|
|
@@ -310,13 +263,13 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|
|
{field: 'ceilingPrice', title: '最高限价', operate: false, table: 'a', width: 96, align: 'center',
|
|
|
visible: true,
|
|
|
formatter: function (value, row, index) {
|
|
|
- var tab = Controller.wffTab || 'all';
|
|
|
+ var tab = Controller.wffTab || 'pick';
|
|
|
var v = value;
|
|
|
if (v == null || v === '') {
|
|
|
v = (row && row.ceilingPrice != null && row.ceilingPrice !== '') ? row.ceilingPrice
|
|
|
: (row && row.ceiling_price != null ? row.ceiling_price : '');
|
|
|
}
|
|
|
- if (tab === 'all') {
|
|
|
+ if (tab === 'pick') {
|
|
|
var val = (v != null && v !== '') ? String(v) : '';
|
|
|
return '<input type="text" class="form-control input-sm procuremen-po-field procuremen-po-price" '
|
|
|
+ 'style="min-width:72px;max-width:96px;height:28px;padding:2px 6px;" '
|
|
|
@@ -344,41 +297,43 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|
|
return v != null && v !== '' ? String(v) : '0';
|
|
|
}
|
|
|
},
|
|
|
- {field: 'picked_supplier_name', title: '已选供应商', operate: false, table: 'a', width: 200, align: 'left',
|
|
|
+ {field: 'picked_supplier_name', title: '报价供应商', operate: false, table: 'a', width: 260, align: 'left',
|
|
|
visible: indexShowPickedOnly,
|
|
|
formatter: function (v) {
|
|
|
- return v != null && v !== '' ? String(v) : '';
|
|
|
+ if (v == null || v === '') {
|
|
|
+ return '';
|
|
|
+ }
|
|
|
+ return String(v).split('\n').map(function (line) {
|
|
|
+ return procuremenEscAttr(line);
|
|
|
+ }).join('<br>');
|
|
|
}
|
|
|
},
|
|
|
{field: 'CDF', title: __('订法'), operate: false, table: 'a', width: 100, align: 'center'},
|
|
|
{field: 'cGzzxMc', title: __('外厂单位'), operate: 'LIKE', table: 'a', width: 220, align: 'center'},
|
|
|
{field: 'MBZ', title: __('备注'), operate: 'LIKE', table: 'a', width: 150, align: 'center'},
|
|
|
+ {field: 'cywyxm', title: __('业务员'), operate: 'LIKE', table: 'b', width: 80, align: 'center'},
|
|
|
{field: 'dStamp', title: __('操作日期'), operate: 'RANGE', addclass: 'datetimerange', autocomplete: false, table: 'a', width: 165, align: 'center'},
|
|
|
{field: 'dputrecord', title: __('提交日期'), operate: 'RANGE', addclass: 'datetimerange', autocomplete: false, table: 'b', width: 170, align: 'center'},
|
|
|
- {field: 'cywyxm', title: __('业务员'), operate: 'LIKE', table: 'b', width: 80, align: 'center'},
|
|
|
- {field: 'operate',title: '操作',width: 170,align: 'center',fixed: 'right',
|
|
|
+ {field: 'operate',title: '操作',width: 200,align: 'center',fixed: 'right',
|
|
|
+ visible: indexInitWffTab !== 'pick',
|
|
|
table: table,
|
|
|
formatter: function (value, row, index) {
|
|
|
- var tab = Controller.wffTab || 'all';
|
|
|
+ var tab = Controller.wffTab || 'pick';
|
|
|
var pk = row && (row.ID != null ? row.ID : row.id);
|
|
|
if (!row || pk == null || pk === '' || String(pk) === '0') {
|
|
|
return '';
|
|
|
}
|
|
|
var area = ' data-area=\'["76%","100%"]\'';
|
|
|
+ var areaAudit = ' data-area=\'["76%","100%"]\'';
|
|
|
var parts = [];
|
|
|
- if (tab === 'all') {
|
|
|
- //未发
|
|
|
- parts.push('<a class="btn btn-xs btn-info procuremen-op-open procuremen-btn-review"' + area + ' href="procuremen/review" data-row-index="' + index + '" title="审核"><i class="fa fa-check"></i> 审核</a>');
|
|
|
- parts.push('<a class="btn btn-xs btn-warning procuremen-btn-finish" href="javascript:;" data-row-index="' + index + '" title="完结"><i class="fa fa-flag-checkered"></i> 完结</a>');
|
|
|
- } else if (tab === 'pending') {
|
|
|
- //已下发
|
|
|
- parts.push('<a class="btn btn-xs btn-success procuremen-op-open procuremen-btn-outward"' + area + ' href="procuremen/outward_detail" data-row-index="' + index + '" title="采购确认"><i class="fa fa-shopping-cart"></i> 采购确认</a>');
|
|
|
- parts.push('<a class="btn btn-xs btn-default procuremen-op-open procuremen-btn-details"' + area + ' href="procuremen/details" data-row-index="' + index + '" title="详情"><i class="fa fa-file-text-o"></i> 详情</a>');
|
|
|
- } else if (tab === 'picked') {
|
|
|
- parts.push('<a class="btn btn-xs btn-default procuremen-op-open procuremen-btn-details"' + area + ' href="procuremen/details" data-row-index="' + index + '" title="详情"><i class="fa fa-file-text-o"></i> 详情</a>');
|
|
|
- } else {
|
|
|
- //已完结
|
|
|
- parts.push('<a class="btn btn-xs btn-default procuremen-op-open procuremen-btn-details"' + area + ' href="procuremen/details" data-row-index="' + index + '" title="详情"><i class="fa fa-file-text-o"></i> 详情</a>');
|
|
|
+ if (tab === 'pick') {
|
|
|
+ return '';
|
|
|
+ } else if (tab === 'audit') {
|
|
|
+ parts.push('<a class="btn btn-xs btn-primary procuremen-op-open procuremen-btn-audit-issue"' + areaAudit + ' href="procuremen/auditissue" data-row-index="' + index + '" title="确认供应商"><i class="fa fa-check"></i> 确认供应商</a>');
|
|
|
+ parts.push('<a class="btn btn-xs btn-info procuremen-op-open procuremen-btn-details"' + area + ' href="procuremen/details" data-row-index="' + index + '" title="详情"><i class="fa fa-file-text-o"></i> 详情</a>');
|
|
|
+ } else if (tab === 'confirm') {
|
|
|
+ parts.push('<a class="btn btn-xs btn-success procuremen-op-open procuremen-btn-outward"' + area + ' href="procuremen/outward_detail?wff_tab=confirm" data-row-index="' + index + '" title="采购确认"><i class="fa fa-shopping-cart"></i> 采购确认</a>');
|
|
|
+ parts.push('<a class="btn btn-xs btn-info procuremen-op-open procuremen-btn-details"' + area + ' href="procuremen/details" data-row-index="' + index + '" title="详情"><i class="fa fa-file-text-o"></i> 详情</a>');
|
|
|
}
|
|
|
return '<div class="btn-group">' + parts.join(' ') + '</div>';
|
|
|
},
|
|
|
@@ -392,13 +347,15 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|
|
table.bootstrapTable({
|
|
|
url: $.fn.bootstrapTable.defaults.extend.index_url,
|
|
|
pk: 'ID',
|
|
|
- sortName: 'a.ID',
|
|
|
+ sortName: indexInitWffTab === 'pick' ? 'b.dputrecord' : 'a.pick_time',
|
|
|
+ sortOrder: 'desc',
|
|
|
width: 'auto',
|
|
|
height: tableHeight,
|
|
|
fixedColumns: true,
|
|
|
- fixedRightNumber: 1,
|
|
|
+ fixedRightNumber: indexInitWffTab === 'pick' ? 0 : 1,
|
|
|
clickToSelect: false,
|
|
|
dblClickToEdit: false,
|
|
|
+ dragCheckboxMultiselect: false,
|
|
|
commonSearch: false,
|
|
|
showToggle: false,
|
|
|
showExport: false,
|
|
|
@@ -414,6 +371,198 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|
|
|
|
|
Table.api.bindevent(table);
|
|
|
|
|
|
+ function procuremenEscHtml(s) {
|
|
|
+ return String(s == null ? '' : s)
|
|
|
+ .replace(/&/g, '&')
|
|
|
+ .replace(/</g, '<')
|
|
|
+ .replace(/>/g, '>')
|
|
|
+ .replace(/"/g, '"');
|
|
|
+ }
|
|
|
+ function procuremenExpandOrderRows(row) {
|
|
|
+ if (!row) {
|
|
|
+ return [];
|
|
|
+ }
|
|
|
+ if ($.isArray(row._order_merge_rows) && row._order_merge_rows.length) {
|
|
|
+ return row._order_merge_rows;
|
|
|
+ }
|
|
|
+ return [row];
|
|
|
+ }
|
|
|
+ function procuremenRowsWithPoInputs(selRows) {
|
|
|
+ var $btPo = table.closest('.bootstrap-table');
|
|
|
+ var dataRows = table.bootstrapTable('getData');
|
|
|
+ var out = [];
|
|
|
+ $.each(selRows, function (i, r) {
|
|
|
+ if (!r) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ var rowIdx = -1;
|
|
|
+ $.each(dataRows, function (di, dr) {
|
|
|
+ var pk = table.bootstrapTable('getOptions').pk || 'ID';
|
|
|
+ var a = dr && (dr[pk] != null ? dr[pk] : dr.id);
|
|
|
+ var b = r && (r[pk] != null ? r[pk] : r.id);
|
|
|
+ if (a != null && b != null && String(a) === String(b)) {
|
|
|
+ rowIdx = di;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ var rowCopy = $.extend({}, r);
|
|
|
+ if (rowIdx >= 0 && $btPo.length) {
|
|
|
+ var $qty = $btPo.find('.procuremen-po-qty[data-row-index="' + rowIdx + '"]');
|
|
|
+ var $price = $btPo.find('.procuremen-po-price[data-row-index="' + rowIdx + '"]');
|
|
|
+ if ($qty.length) {
|
|
|
+ rowCopy.This_quantity = String($qty.val()).trim();
|
|
|
+ }
|
|
|
+ if ($price.length) {
|
|
|
+ rowCopy.ceilingPrice = String($price.val()).trim();
|
|
|
+ }
|
|
|
+ }
|
|
|
+ out.push(rowCopy);
|
|
|
+ });
|
|
|
+ return out;
|
|
|
+ }
|
|
|
+ function procuremenOpenPickReview(selRows) {
|
|
|
+ if (!selRows || !selRows.length) {
|
|
|
+ Toastr.warning('请先勾选至少 1 条工序');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ var ccydh0 = String(selRows[0].CCYDH || '').trim();
|
|
|
+ if (!ccydh0) {
|
|
|
+ Toastr.warning('所选行缺少订单号,无法下发');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (selRows.length > 1) {
|
|
|
+ var j;
|
|
|
+ for (j = 1; j < selRows.length; j++) {
|
|
|
+ if (String(selRows[j].CCYDH || '').trim() !== ccydh0) {
|
|
|
+ Toastr.warning('合并下发须为同一订单号(当前混有:' + ccydh0 + ' 与其它订单)');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ var pk0 = table.bootstrapTable('getOptions').pk || 'ID';
|
|
|
+ var ids = [];
|
|
|
+ $.each(selRows, function (idx, r) {
|
|
|
+ var pkVal = r && (r[pk0] != null ? r[pk0] : r.id);
|
|
|
+ if (pkVal != null && String(pkVal) !== '' && String(pkVal) !== '0') {
|
|
|
+ ids.push(String(pkVal));
|
|
|
+ }
|
|
|
+ });
|
|
|
+ if (!ids.length) {
|
|
|
+ Toastr.warning('所选行无效,无法下发');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ try {
|
|
|
+ sessionStorage.setItem('procuremen_merge_rows', JSON.stringify(selRows));
|
|
|
+ } catch (ignoreStore) {
|
|
|
+ }
|
|
|
+ var titlePick = '外发下发';
|
|
|
+ var revUrl = Fast.api.fixurl('procuremen/pickreview?ids=' + encodeURIComponent(ids[0]) + '&merge=1');
|
|
|
+ var winPick = window;
|
|
|
+ if (!winPick.Backend || !winPick.Backend.api) {
|
|
|
+ Toastr.error('Backend 未就绪,请刷新页面');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ winPick.Backend.api.open(revUrl, titlePick, {area: ['76%', '100%']});
|
|
|
+ }
|
|
|
+ $(document).off('click.procuremenPickReview', '#btn-procuremen-pick-review').on('click.procuremenPickReview', '#btn-procuremen-pick-review', function (e) {
|
|
|
+ e.preventDefault();
|
|
|
+ if (Controller.wffTab !== 'pick') {
|
|
|
+ Toastr.warning('下发仅在外发下发列表可用');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ var selPick = procuremenRowsWithPoInputs(table.bootstrapTable('getSelections') || []);
|
|
|
+ procuremenOpenPickReview(selPick);
|
|
|
+ });
|
|
|
+ $(document).off('click.procuremenBatchFinish', '#btn-procuremen-batch-finish').on('click.procuremenBatchFinish', '#btn-procuremen-batch-finish', function (e) {
|
|
|
+ e.preventDefault();
|
|
|
+ if (Controller.wffTab !== 'pick') {
|
|
|
+ Toastr.warning('完结仅在外发下发列表可用');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ var selFin = procuremenRowsWithPoInputs(table.bootstrapTable('getSelections') || []);
|
|
|
+ if (!selFin.length) {
|
|
|
+ Toastr.warning('请先勾选至少 1 条工序');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ var rowsHtml = '<table class="table table-bordered table-condensed" style="margin:8px 0 0;font-size:12px;">'
|
|
|
+ + '<thead><tr><th>订单号</th><th>工序名称</th><th>印件名称</th></tr></thead><tbody>';
|
|
|
+ $.each(selFin, function (fi, rf) {
|
|
|
+ rowsHtml += '<tr><td>' + procuremenEscHtml(String(rf.CCYDH || '').trim() || '—') + '</td>'
|
|
|
+ + '<td>' + procuremenEscHtml(String(rf.CGYMC || '').trim() || '—') + '</td>'
|
|
|
+ + '<td>' + procuremenEscHtml(String(rf.CYJMC || '').trim() || '—') + '</td></tr>';
|
|
|
+ });
|
|
|
+ rowsHtml += '</tbody></table>';
|
|
|
+ var finishBatchMsg = '<div style="text-align:left;line-height:1.65;font-size:13px;">'
|
|
|
+ + '<p style="margin:0 0 8px 0;">即将对以下 <strong>' + selFin.length + '</strong> 条工序标记为<strong>已完结</strong>:</p>'
|
|
|
+ + rowsHtml
|
|
|
+ + '<p style="margin:10px 0 0;color:#a94442;"><strong>提示:</strong>点击「确定」后不可撤回或更改。</p></div>';
|
|
|
+ Layer.confirm(finishBatchMsg, {
|
|
|
+ title: '完结确认',
|
|
|
+ area: ['560px', 'auto'],
|
|
|
+ icon: 3,
|
|
|
+ btn: ['确定', '取消'],
|
|
|
+ skin: 'layui-layer-procuremen-finish'
|
|
|
+ }, function (idxFin) {
|
|
|
+ Layer.close(idxFin);
|
|
|
+ var tokenFin = $('input[name=\'__token__\']').val() || '';
|
|
|
+ var pending = selFin.length;
|
|
|
+ var failed = 0;
|
|
|
+ var nextFin = function (pos) {
|
|
|
+ if (pos >= selFin.length) {
|
|
|
+ table.bootstrapTable('refresh');
|
|
|
+ if (failed) {
|
|
|
+ Toastr.warning('部分工序完结失败(' + failed + '/' + selFin.length + ')');
|
|
|
+ } else {
|
|
|
+ Toastr.success('已完结 ' + pending + ' 条工序');
|
|
|
+ }
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Fast.api.ajax({
|
|
|
+ url: 'procuremen/completeDirectly',
|
|
|
+ type: 'POST',
|
|
|
+ data: {
|
|
|
+ row_json: JSON.stringify(selFin[pos]),
|
|
|
+ finish: '1',
|
|
|
+ __token__: tokenFin
|
|
|
+ }
|
|
|
+ }, function () {
|
|
|
+ nextFin(pos + 1);
|
|
|
+ return false;
|
|
|
+ }, function () {
|
|
|
+ failed++;
|
|
|
+ nextFin(pos + 1);
|
|
|
+ return false;
|
|
|
+ });
|
|
|
+ };
|
|
|
+ nextFin(0);
|
|
|
+ });
|
|
|
+ });
|
|
|
+
|
|
|
+ $(document).off('click.procuremenPickAdd', '#btn-procuremen-pick-add').on('click.procuremenPickAdd', '#btn-procuremen-pick-add', function (e) {
|
|
|
+ e.preventDefault();
|
|
|
+ if (Controller.wffTab !== 'pick') {
|
|
|
+ Toastr.warning('新增仅在外发下发列表可用');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ var winAdd = window;
|
|
|
+ if (!winAdd.Backend || !winAdd.Backend.api) {
|
|
|
+ Toastr.error('Backend 未就绪,请刷新页面');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ winAdd.Backend.api.open(
|
|
|
+ Fast.api.fixurl('procuremen/pickadd'),
|
|
|
+ '新增',
|
|
|
+ {
|
|
|
+ area: ['640px', '480px'],
|
|
|
+ callback: function () {
|
|
|
+ if (table && table.length) {
|
|
|
+ table.bootstrapTable('refresh');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ );
|
|
|
+ });
|
|
|
+
|
|
|
(function () {
|
|
|
var $wrap = table.closest('.bootstrap-table');
|
|
|
function procuremenSetFixedRightStaleLoading(hide) {
|
|
|
@@ -439,7 +588,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|
|
}
|
|
|
if ($bt.length) {
|
|
|
$bt.off('blur.procuremenPoSave', '.procuremen-po-field').on('blur.procuremenPoSave', '.procuremen-po-field', function () {
|
|
|
- if (Controller.wffTab !== 'all') {
|
|
|
+ if (Controller.wffTab !== 'pick') {
|
|
|
return;
|
|
|
}
|
|
|
var $inp = $(this);
|
|
|
@@ -464,6 +613,10 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|
|
if (origP === '' && baseRow.ceiling_price != null && baseRow.ceiling_price !== '') {
|
|
|
origP = procuremenNormPoCell(baseRow.ceiling_price);
|
|
|
}
|
|
|
+ /* 未填写数量与限价时不写 purchase_order */
|
|
|
+ if (q === '' && p === '') {
|
|
|
+ return;
|
|
|
+ }
|
|
|
/* 与当前行数据一致则不调接口、不弹*/
|
|
|
if (q === origQ && p === origP) {
|
|
|
return;
|
|
|
@@ -500,70 +653,6 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|
|
if (!t || typeof t.closest !== 'function') {
|
|
|
return;
|
|
|
}
|
|
|
- var finish = t.closest('a.procuremen-btn-finish');
|
|
|
- if (finish && tableRoot.contains(finish) && !finish.classList.contains('disabled')) {
|
|
|
- e.preventDefault();
|
|
|
- if (typeof e.stopImmediatePropagation === 'function') {
|
|
|
- e.stopImmediatePropagation();
|
|
|
- }
|
|
|
- e.stopPropagation();
|
|
|
- var $f = $(finish);
|
|
|
- var rowIdxF = parseInt($f.data('rowIndex'), 10);
|
|
|
- var dataRowsF = table.bootstrapTable('getData');
|
|
|
- var rowF = !isNaN(rowIdxF) && dataRowsF[rowIdxF] !== undefined ? dataRowsF[rowIdxF] : null;
|
|
|
- if (!rowF) {
|
|
|
- Toastr.error('无法取得行数据');
|
|
|
- return;
|
|
|
- }
|
|
|
- var $qtyF = $bt.find('.procuremen-po-qty[data-row-index="' + rowIdxF + '"]');
|
|
|
- var $priceF = $bt.find('.procuremen-po-price[data-row-index="' + rowIdxF + '"]');
|
|
|
- if ($qtyF.length) {
|
|
|
- rowF = $.extend({}, rowF, {This_quantity: String($qtyF.val()).trim()});
|
|
|
- }
|
|
|
- if ($priceF.length) {
|
|
|
- rowF = $.extend({}, rowF, {ceilingPrice: String($priceF.val()).trim()});
|
|
|
- }
|
|
|
- var escHtmlFinish = function (s) {
|
|
|
- return String(s == null ? '' : s)
|
|
|
- .replace(/&/g, '&')
|
|
|
- .replace(/</g, '<')
|
|
|
- .replace(/>/g, '>')
|
|
|
- .replace(/"/g, '"');
|
|
|
- };
|
|
|
- var ccydhF = String(rowF.CCYDH != null ? rowF.CCYDH : '').trim();
|
|
|
- var cyjmcF = String(rowF.CYJMC != null ? rowF.CYJMC : '').trim();
|
|
|
- var finishMsg = '<div style="text-align:left;line-height:1.65;font-size:13px;padding:2px 0;">'
|
|
|
- + '<p style="margin:0 0 10px 0;">即将对以下<strong>订单</strong>标记为<strong>已完结</strong>:</p>'
|
|
|
- + '<div style="margin-bottom:12px;padding:8px 10px;background:#f9f9f9;border:1px solid #e5e5e5;border-radius:3px;">'
|
|
|
- + '<div><span style="color:#888;">订单号:</span><strong>' + (ccydhF !== '' ? escHtmlFinish(ccydhF) : '—') + '</strong></div>'
|
|
|
- + '<div style="margin-top:6px;"><span style="color:#888;">印件名称:</span>' + (cyjmcF !== '' ? escHtmlFinish(cyjmcF) : '—') + '</div>'
|
|
|
- + '</div>'
|
|
|
- + '<p style="margin:0;color:#a94442;"><strong>提示:</strong>请确认核对后、。<strong>点击「确定」后不可撤回或更改。</strong></p>'
|
|
|
- + '</div>';
|
|
|
- Layer.confirm(finishMsg, {
|
|
|
- title: '完结确认',
|
|
|
- area: ['520px', 'auto'],
|
|
|
- icon: 3,
|
|
|
- btn: ['确定', '取消'],
|
|
|
- skin: 'layui-layer-procuremen-finish'
|
|
|
- }, function (idx) {
|
|
|
- Layer.close(idx);
|
|
|
- Fast.api.ajax({
|
|
|
- url: 'procuremen/completeDirectly',
|
|
|
- type: 'POST',
|
|
|
- data: {
|
|
|
- row_json: JSON.stringify(rowF),
|
|
|
- finish: '1',
|
|
|
- __token__: $('input[name=\'__token__\']').val() || ''
|
|
|
- }
|
|
|
- }, function () {
|
|
|
- table.bootstrapTable('refresh');
|
|
|
- Toastr.success('操作成功');
|
|
|
- return false;
|
|
|
- });
|
|
|
- });
|
|
|
- return;
|
|
|
- }
|
|
|
var details = t.closest('a.procuremen-btn-details');
|
|
|
if (details && tableRoot.contains(details) && !details.classList.contains('disabled')) {
|
|
|
e.preventDefault();
|
|
|
@@ -655,49 +744,29 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|
|
}
|
|
|
return;
|
|
|
}
|
|
|
- var review = t.closest('a.procuremen-btn-review');
|
|
|
- if (!review || !tableRoot.contains(review) || review.classList.contains('disabled')) {
|
|
|
- return;
|
|
|
- }
|
|
|
- e.preventDefault();
|
|
|
- if (typeof e.stopImmediatePropagation === 'function') {
|
|
|
- e.stopImmediatePropagation();
|
|
|
- }
|
|
|
- e.stopPropagation();
|
|
|
- var $a2 = $(review);
|
|
|
- var rowIdx2 = parseInt($a2.data('rowIndex'), 10);
|
|
|
- var dataRows2 = table.bootstrapTable('getData');
|
|
|
- var row2 = !isNaN(rowIdx2) && dataRows2[rowIdx2] !== undefined ? dataRows2[rowIdx2] : null;
|
|
|
- var revUrl;
|
|
|
- if (row2) {
|
|
|
- revUrl = Fast.api.fixurl(Table.api.replaceurl('procuremen/review', row2, table));
|
|
|
- } else {
|
|
|
- revUrl = Backend.api.replaceids(review, $a2.attr('href'));
|
|
|
- }
|
|
|
- var opts2 = $.extend({}, $a2.data() || {});
|
|
|
- var title2 = $a2.attr('title') || $a2.data('title') || $a2.data('original-title');
|
|
|
- var button2 = Backend.api.gettablecolumnbutton(opts2);
|
|
|
- var layerOpts2 = $.extend({}, opts2);
|
|
|
- if (button2 && typeof button2.callback === 'function') {
|
|
|
- layerOpts2.callback = button2.callback;
|
|
|
- }
|
|
|
- if (button2 && button2.layerArea && button2.layerArea.length) {
|
|
|
- layerOpts2.area = button2.layerArea;
|
|
|
- }
|
|
|
- var winName2 = $a2.data('window') || 'self';
|
|
|
- var win2 = window[winName2] || window;
|
|
|
- if (!win2.Backend || !win2.Backend.api) {
|
|
|
- Toastr.error('Backend 未就绪,请刷新页面');
|
|
|
+ var auditIssueBtn = t.closest('a.procuremen-btn-audit-issue');
|
|
|
+ if (auditIssueBtn && tableRoot.contains(auditIssueBtn) && !auditIssueBtn.classList.contains('disabled')) {
|
|
|
+ e.preventDefault();
|
|
|
+ if (typeof e.stopImmediatePropagation === 'function') {
|
|
|
+ e.stopImmediatePropagation();
|
|
|
+ }
|
|
|
+ e.stopPropagation();
|
|
|
+ var $aa = $(auditIssueBtn);
|
|
|
+ var rowIdxA = parseInt($aa.data('rowIndex'), 10);
|
|
|
+ var dataRowsA = table.bootstrapTable('getData');
|
|
|
+ var rowA = !isNaN(rowIdxA) && dataRowsA[rowIdxA] !== undefined ? dataRowsA[rowIdxA] : null;
|
|
|
+ var auditUrl;
|
|
|
+ if (rowA) {
|
|
|
+ auditUrl = Fast.api.fixurl(Table.api.replaceurl('procuremen/auditissue', rowA, table));
|
|
|
+ } else {
|
|
|
+ auditUrl = Backend.api.replaceids(auditIssueBtn, $aa.attr('href'));
|
|
|
+ }
|
|
|
+ var winA = window;
|
|
|
+ if (winA.Backend && winA.Backend.api) {
|
|
|
+ winA.Backend.api.open(auditUrl, '确认供应商', {area: ['76%', '100%']});
|
|
|
+ }
|
|
|
return;
|
|
|
}
|
|
|
- if (typeof layerOpts2.confirm !== 'undefined') {
|
|
|
- Layer.confirm(layerOpts2.confirm, function (index) {
|
|
|
- win2.Backend.api.open(revUrl, title2, layerOpts2);
|
|
|
- Layer.close(index);
|
|
|
- });
|
|
|
- } else {
|
|
|
- win2.Backend.api.open(revUrl, title2, layerOpts2);
|
|
|
- }
|
|
|
};
|
|
|
tableRoot.addEventListener('click', Controller._procuremenOpTableClick, true);
|
|
|
}
|
|
|
@@ -716,7 +785,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|
|
dataType: 'json',
|
|
|
timeout: 120000
|
|
|
}).done(function (ret) {
|
|
|
-
|
|
|
+
|
|
|
if (ret && (ret.code === 200 || ret.code === '200')) {
|
|
|
if (typeof Toastr !== 'undefined') {
|
|
|
console.log('已刷新');
|
|
|
@@ -794,7 +863,34 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|
|
});
|
|
|
table.on('post-body.bs.table', function () {
|
|
|
$('#procuremen-toolbar-host .btn-refresh .fa').removeClass('fa-spin');
|
|
|
+ if (Controller.wffTab !== 'pick') {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ /* FastAdmin 每次 post-body 会重复绑定复选框列拖拽,多次勾选后易错位/缺框 */
|
|
|
+ var $cbTd = table.closest('.bootstrap-table').find('tbody td.bs-checkbox');
|
|
|
+ $cbTd.off('mousedown mousemove').removeClass('overlaped');
|
|
|
+ $cbTd.each(function () {
|
|
|
+ var $td = $(this);
|
|
|
+ if (!$td.find('input[name="btSelectItem"]').length) {
|
|
|
+ var idx = $td.closest('tr').data('index');
|
|
|
+ if (idx !== undefined && idx !== '') {
|
|
|
+ $td.html('<input name="btSelectItem" type="checkbox" data-index="' + idx + '" />');
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
});
|
|
|
+ if ($bt.length) {
|
|
|
+ $bt.off('click.procuremenCbTd', 'tbody td.bs-checkbox').on('click.procuremenCbTd', 'tbody td.bs-checkbox', function (e) {
|
|
|
+ if (Controller.wffTab !== 'pick' || $(e.target).is('input[type="checkbox"]')) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ var $inp = $(this).find('input[name="btSelectItem"]:not(:disabled)').first();
|
|
|
+ if ($inp.length) {
|
|
|
+ e.preventDefault();
|
|
|
+ $inp.trigger('click');
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
$(window).off('resize.procuremenIndex').on('resize.procuremenIndex', function () {
|
|
|
try {
|
|
|
var $wbr = $layout.find('.procuremen-main .widget-body');
|
|
|
@@ -805,6 +901,16 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|
|
});
|
|
|
},
|
|
|
|
|
|
+ pick: function () {
|
|
|
+ Controller.index();
|
|
|
+ },
|
|
|
+ audit: function () {
|
|
|
+ Controller.index();
|
|
|
+ },
|
|
|
+ confirm: function () {
|
|
|
+ Controller.index();
|
|
|
+ },
|
|
|
+
|
|
|
add: function () {
|
|
|
Controller.api.bindevent();
|
|
|
},
|
|
|
@@ -1045,24 +1151,119 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|
|
return false;
|
|
|
}
|
|
|
});
|
|
|
- if (!row) {
|
|
|
+ var mergeRows = [];
|
|
|
+ var mergeFlag = window.Fast && Fast.api ? String(Fast.api.query('merge') || '') : '';
|
|
|
+ if (mergeFlag === '1') {
|
|
|
+ try {
|
|
|
+ var rawMerge = sessionStorage.getItem('procuremen_merge_rows');
|
|
|
+ if (rawMerge) {
|
|
|
+ var parsed = JSON.parse(rawMerge);
|
|
|
+ if ($.isArray(parsed) && parsed.length) {
|
|
|
+ mergeRows = parsed;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } catch (ignoreMerge) {
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (mergeFlag === '1' && !mergeRows.length && row) {
|
|
|
+ mergeRows = [row];
|
|
|
+ }
|
|
|
+ if (mergeRows.length) {
|
|
|
+ row = mergeRows[0];
|
|
|
+ } else if (!row) {
|
|
|
Toastr.error('请刷新页面后重试');
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- $('#review-ccydh').text(row.CCYDH || '');
|
|
|
- $('#review-cyjmc').text(row.CYJMC || '');
|
|
|
- $('#review-CGYMC').text(row.CGYMC || '');
|
|
|
- $('#review-CDW').text(row.CDW != null && row.CDW !== '' ? row.CDW : '');
|
|
|
- $('#review-NGZL').text(row.NGZL != null && row.NGZL !== '' ? row.NGZL : '');
|
|
|
- $('#review-CDF').text(row.CDF || '');
|
|
|
- $('#review-cGzzxMc').text(row.cGzzxMc || '');
|
|
|
- var qDisp = row.This_quantity != null && String(row.This_quantity).trim() !== '' ? String(row.This_quantity).trim()
|
|
|
- : (row.this_quantity != null && String(row.this_quantity).trim() !== '' ? String(row.this_quantity).trim() : '');
|
|
|
- var pDisp = row.ceilingPrice != null && String(row.ceilingPrice).trim() !== '' ? String(row.ceilingPrice).trim()
|
|
|
- : (row.ceiling_price != null && String(row.ceiling_price).trim() !== '' ? String(row.ceiling_price).trim() : '');
|
|
|
- $('#review-qty-display').text(qDisp !== '' ? qDisp : '—');
|
|
|
- $('#review-price-display').text(pDisp !== '' ? pDisp : '—');
|
|
|
+ function procuremenReviewQtyDisp(r) {
|
|
|
+ if (!r) {
|
|
|
+ return '';
|
|
|
+ }
|
|
|
+ if (r.This_quantity != null && String(r.This_quantity).trim() !== '') {
|
|
|
+ return String(r.This_quantity).trim();
|
|
|
+ }
|
|
|
+ if (r.this_quantity != null && String(r.this_quantity).trim() !== '') {
|
|
|
+ return String(r.this_quantity).trim();
|
|
|
+ }
|
|
|
+ if (r.NGZL != null && String(r.NGZL).trim() !== '') {
|
|
|
+ return String(r.NGZL).trim();
|
|
|
+ }
|
|
|
+ if (r.ngzl != null && String(r.ngzl).trim() !== '') {
|
|
|
+ return String(r.ngzl).trim();
|
|
|
+ }
|
|
|
+ return '';
|
|
|
+ }
|
|
|
+
|
|
|
+ function procuremenReviewPriceDisp(r) {
|
|
|
+ if (!r) {
|
|
|
+ return '';
|
|
|
+ }
|
|
|
+ if (r.ceilingPrice != null && String(r.ceilingPrice).trim() !== '') {
|
|
|
+ return String(r.ceilingPrice).trim();
|
|
|
+ }
|
|
|
+ if (r.ceiling_price != null && String(r.ceiling_price).trim() !== '') {
|
|
|
+ return String(r.ceiling_price).trim();
|
|
|
+ }
|
|
|
+ return '';
|
|
|
+ }
|
|
|
+
|
|
|
+ function applyProcuremenMergeReviewUi(rows) {
|
|
|
+ var list = $.isArray(rows) && rows.length ? rows : (row ? [row] : []);
|
|
|
+ var $tb = $('#review-merge-tbody').empty();
|
|
|
+ var orderKey0 = list.length ? String(list[0].CCYDH || '').trim() : '';
|
|
|
+ var nameKey0 = list.length ? String(list[0].CYJMC || '').trim() : '';
|
|
|
+ var mergeSameOrder = list.length > 1 && orderKey0 !== '';
|
|
|
+ if (mergeSameOrder) {
|
|
|
+ $.each(list, function (i, rr) {
|
|
|
+ if (String(rr.CCYDH || '').trim() !== orderKey0
|
|
|
+ || String(rr.CYJMC || '').trim() !== nameKey0) {
|
|
|
+ mergeSameOrder = false;
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ $.each(list, function (idx, r) {
|
|
|
+ var qty = procuremenReviewQtyDisp(r);
|
|
|
+ var price = procuremenReviewPriceDisp(r);
|
|
|
+ var ccydh = String(r.CCYDH != null ? r.CCYDH : '').trim();
|
|
|
+ var cyjmc = String(r.CYJMC != null ? r.CYJMC : '').trim();
|
|
|
+ var $tr = $('<tr/>');
|
|
|
+ if (mergeSameOrder && idx === 0) {
|
|
|
+ $tr.append(
|
|
|
+ $('<td class="text-center"/>').attr('rowspan', list.length).text(ccydh),
|
|
|
+ $('<td/>').attr('rowspan', list.length).text(cyjmc)
|
|
|
+ );
|
|
|
+ } else if (!mergeSameOrder) {
|
|
|
+ $tr.append(
|
|
|
+ $('<td class="text-center"/>').text(ccydh),
|
|
|
+ $('<td/>').text(cyjmc)
|
|
|
+ );
|
|
|
+ }
|
|
|
+ $tr.append(
|
|
|
+ $('<td/>').text(r.CGYMC || ''),
|
|
|
+ $('<td class="text-center"/>').text(r.CDW != null && r.CDW !== '' ? r.CDW : ''),
|
|
|
+ $('<td class="text-center"/>').text(r.NGZL != null && r.NGZL !== '' ? r.NGZL : ''),
|
|
|
+ $('<td class="text-center"/>').text(qty),
|
|
|
+ $('<td class="text-center"/>').text(price),
|
|
|
+ $('<td class="text-center"/>').text(r.CDF || '')
|
|
|
+ );
|
|
|
+ $tb.append($tr);
|
|
|
+ });
|
|
|
+ var isPickModeUi = String($('#review-form').data('pickMode') || $('#review-form').data('pick-mode') || '') === '1';
|
|
|
+ if (!isPickModeUi && list.length > 1) {
|
|
|
+ $('.procuremen-review-submit-tip').html(
|
|
|
+ '<i class="fa fa-exclamation-triangle"></i> '
|
|
|
+ + '<strong>合并单:</strong>提交将向已勾选单位各发送<strong>一封邮件、一条短信</strong>,'
|
|
|
+ + '内容含本单 <strong>' + list.length + ' 道工序</strong>明细;不可撤回,请核对后再确认。'
|
|
|
+ );
|
|
|
+ }
|
|
|
+ $('#c-merge-rows-json').val(JSON.stringify(list));
|
|
|
+ }
|
|
|
+
|
|
|
+ applyProcuremenMergeReviewUi(mergeRows.length ? mergeRows : (row ? [row] : []));
|
|
|
+
|
|
|
+ var isPickMode = String($('#review-form').data('pickMode') || $('#review-form').data('pick-mode') || '') === '1';
|
|
|
+
|
|
|
$('#c-row-json').val(JSON.stringify(row));
|
|
|
|
|
|
var reviewCompaniesAll = [];
|
|
|
@@ -1362,7 +1563,7 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|
|
}
|
|
|
});
|
|
|
if (!selected.length) {
|
|
|
- Toastr.warning('请至少选择一个下发单位');
|
|
|
+ Toastr.warning(isPickMode ? '请至少选择一家合作供应商' : '请至少选择一个下发单位');
|
|
|
return;
|
|
|
}
|
|
|
var sysRq = ($('#review-sys-rq').val() || '').trim();
|
|
|
@@ -1377,17 +1578,26 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|
|
} catch (e) {
|
|
|
cons = {};
|
|
|
}
|
|
|
+ var mergePayload = ($('#c-merge-rows-json').val() || '').trim();
|
|
|
+ if (!mergePayload) {
|
|
|
+ mergePayload = JSON.stringify([cons]);
|
|
|
+ }
|
|
|
Fast.api.ajax({
|
|
|
- url: 'procuremen/review',
|
|
|
+ url: isPickMode ? 'procuremen/picksubmit' : 'procuremen/review',
|
|
|
type: 'POST',
|
|
|
data: {
|
|
|
__token__: $('input[name=\'__token__\']').val(),
|
|
|
row_json: JSON.stringify(cons),
|
|
|
+ merge_rows_json: mergePayload,
|
|
|
companies_json: JSON.stringify(selected),
|
|
|
sys_rq: sysRq
|
|
|
}
|
|
|
}, function (data, ret) {
|
|
|
var msg = (ret && ret.msg) ? ret.msg : '操作成功';
|
|
|
+ try {
|
|
|
+ sessionStorage.removeItem('procuremen_merge_rows');
|
|
|
+ } catch (ignoreClr) {
|
|
|
+ }
|
|
|
if (typeof parent !== 'undefined' && parent.Toastr) {
|
|
|
parent.Toastr.success(msg);
|
|
|
}
|
|
|
@@ -1400,14 +1610,8 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|
|
});
|
|
|
});
|
|
|
|
|
|
- Fast.api.ajax({
|
|
|
- url: 'procuremen/snapshotToProcure',
|
|
|
- type: 'POST',
|
|
|
- data: {
|
|
|
- __token__: $('input[name=\'__token__\']').val(),
|
|
|
- row_json: JSON.stringify(row)
|
|
|
- }
|
|
|
- }, function () {
|
|
|
+ /** 加载供应商列表(弹窗内勾选单位) */
|
|
|
+ function loadReviewCompaniesPanel() {
|
|
|
Fast.api.ajax({
|
|
|
url: 'procuremen/reviewCompanies',
|
|
|
type: 'GET',
|
|
|
@@ -1554,7 +1758,109 @@ define(['jquery', 'bootstrap', 'backend', 'table', 'form'], function ($, undefin
|
|
|
syncReviewSelectedSummary();
|
|
|
return false;
|
|
|
});
|
|
|
- return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ /*
|
|
|
+ * 外发下发:打开弹窗仅展示供应商,不写 purchase_order(确认下发走 picksubmit)。
|
|
|
+ * 非外发模式:仅当列表已填本次数量或最高限价时才 snapshot(草稿)。
|
|
|
+ */
|
|
|
+ if (isPickMode) {
|
|
|
+ loadReviewCompaniesPanel();
|
|
|
+ } else if (procuremenReviewQtyDisp(row) !== '' || procuremenReviewPriceDisp(row) !== '') {
|
|
|
+ Fast.api.ajax({
|
|
|
+ url: 'procuremen/snapshotToProcure',
|
|
|
+ type: 'POST',
|
|
|
+ data: {
|
|
|
+ __token__: $('input[name=\'__token__\']').val(),
|
|
|
+ row_json: JSON.stringify(row)
|
|
|
+ }
|
|
|
+ }, function () {
|
|
|
+ loadReviewCompaniesPanel();
|
|
|
+ return false;
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ loadReviewCompaniesPanel();
|
|
|
+ }
|
|
|
+ },
|
|
|
+
|
|
|
+ pickreview: function () {
|
|
|
+ Controller.review();
|
|
|
+ },
|
|
|
+
|
|
|
+ pickadd: function () {
|
|
|
+ Controller.api.bindevent();
|
|
|
+ $(document).off('click.procuremenPickAddClose', '.btn-procuremen-pick-add-close').on('click.procuremenPickAddClose', '.btn-procuremen-pick-add-close', function () {
|
|
|
+ var index = parent.Layer.getFrameIndex(window.name);
|
|
|
+ parent.Layer.close(index);
|
|
|
+ });
|
|
|
+ },
|
|
|
+
|
|
|
+ auditissue: function () {
|
|
|
+ var auditSupplierGroups = [];
|
|
|
+ try {
|
|
|
+ auditSupplierGroups = JSON.parse($('#audit-supplier-groups-json').val() || '[]');
|
|
|
+ } catch (ignoreAudCo) {
|
|
|
+ auditSupplierGroups = [];
|
|
|
+ }
|
|
|
+ function auditIssueClose() {
|
|
|
+ var index = parent.Layer.getFrameIndex(window.name);
|
|
|
+ parent.Layer.close(index);
|
|
|
+ }
|
|
|
+ $('#btn-audit-issue-close').off('click.auditClose').on('click.auditClose', function () {
|
|
|
+ auditIssueClose();
|
|
|
+ });
|
|
|
+ $('#audit-pick-tbody').off('click.auditPickRow').on('click.auditPickRow', 'tr', function (e) {
|
|
|
+ if ($(e.target).is('input, label, a')) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ $(this).find('.audit-pick-radio').prop('checked', true);
|
|
|
+ });
|
|
|
+ $('#btn-audit-issue-submit').off('click.auditIssue').on('click.auditIssue', function () {
|
|
|
+ var $radio = $('input[name="audit_pick_company"]:checked');
|
|
|
+ if (!$radio.length) {
|
|
|
+ Toastr.warning('请勾选一家供应商');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ var idx = parseInt($radio.val(), 10);
|
|
|
+ var company = (!isNaN(idx) && auditSupplierGroups[idx]) ? auditSupplierGroups[idx] : null;
|
|
|
+ if (!company || typeof company !== 'object') {
|
|
|
+ Toastr.warning('所选供应商无效');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ var cname = company.name || company.company_name || '';
|
|
|
+ Layer.confirm(
|
|
|
+ '确认选定「' + cname + '」?<br/>本步骤<strong>不发送短信或邮件</strong>,订单将进入第三步「采购确认」;通过/未通过通知在采购确认提交时发送。',
|
|
|
+ {icon: 3, title: '确认供应商', btn: ['确认', '取消']},
|
|
|
+ function (layerIdx) {
|
|
|
+ Layer.close(layerIdx);
|
|
|
+ var submitCo = {
|
|
|
+ name: cname,
|
|
|
+ company_name: cname,
|
|
|
+ email: company.email || '',
|
|
|
+ phone: company.phone || '',
|
|
|
+ username: company.username || ''
|
|
|
+ };
|
|
|
+ Fast.api.ajax({
|
|
|
+ url: 'procuremen/auditsubmit',
|
|
|
+ type: 'POST',
|
|
|
+ data: {
|
|
|
+ __token__: $('input[name=\'__token__\']').val(),
|
|
|
+ scydgy_id: $('input[name=\'scydgy_id\']').val(),
|
|
|
+ company_json: JSON.stringify(submitCo)
|
|
|
+ }
|
|
|
+ }, function (data, ret) {
|
|
|
+ var msg = (ret && ret.msg) ? ret.msg : '操作成功';
|
|
|
+ if (typeof parent !== 'undefined' && parent.Toastr) {
|
|
|
+ parent.Toastr.success(msg);
|
|
|
+ }
|
|
|
+ if (parent && parent.$ && parent.$('#table').length) {
|
|
|
+ parent.$('#table').bootstrapTable('refresh');
|
|
|
+ }
|
|
|
+ auditIssueClose();
|
|
|
+ return false;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ );
|
|
|
});
|
|
|
},
|
|
|
|