|
@@ -0,0 +1,89 @@
|
|
|
+'use strict';
|
|
|
+
|
|
|
+/**
|
|
|
+ *
|
|
|
+ *
|
|
|
+ * @author Mai
|
|
|
+ * @date
|
|
|
+ * @version
|
|
|
+ */
|
|
|
+
|
|
|
+(function($){
|
|
|
+ $.cs_gclGather = function (setting) {
|
|
|
+ if (!setting.selector) return;
|
|
|
+
|
|
|
+ if (!setting.spreadSetting) {
|
|
|
+ setting.spreadSetting = {
|
|
|
+ cols: [
|
|
|
+ {title: '清单编号', field: 'b_code', width: 80, formatter: '@'},
|
|
|
+ {title: '名称', field: 'name', width: 150, formatter: '@'},
|
|
|
+ {title: '单位', field: 'unit', width: 50, formatter: '@'},
|
|
|
+ {title: '单价', field: 'unit_price', width: 60, formatter: '@'},
|
|
|
+ {title: '数量', field: 'quantity', width: 60, },
|
|
|
+ {title: '数量', field: 'total_price', width: 60, },
|
|
|
+ ],
|
|
|
+ emptyRows: 0,
|
|
|
+ headRows: 1,
|
|
|
+ headRowHeight: [32],
|
|
|
+ defaultRowHeight: 21,
|
|
|
+ headerFont: '12px 微软雅黑',
|
|
|
+ font: '12px 微软雅黑',
|
|
|
+ selectedBackColor: '#fffacd',
|
|
|
+ readOnly: true,
|
|
|
+ };
|
|
|
+ }
|
|
|
+ if (!setting.gatherFields) setting.gatherFields = ['quantity', 'total_price'];
|
|
|
+
|
|
|
+ const resultId = setting.id + '-spread';
|
|
|
+ const obj = $(setting.selector);
|
|
|
+ obj.html(
|
|
|
+ '<div class="sjs-bar">\n' +
|
|
|
+ ` <div class="pb-1 d-flex"><button class="btn btn-primary btn-sm" id="gcl-gather-refresh">汇总</button>\n` +
|
|
|
+ ' <span class="pl-2" id="' + setting.id + '-info"></span>\n' +
|
|
|
+ ' </div>\n' +
|
|
|
+ '</div>' +
|
|
|
+ '<div id="' + resultId + '" class="sjs-sh">\n' +
|
|
|
+ '</div>'
|
|
|
+ );
|
|
|
+ autoFlashHeight();
|
|
|
+
|
|
|
+ const spread = SpreadJsObj.createNewSpread($('#' + resultId)[0]);
|
|
|
+ const sheet = spread.getActiveSheet();
|
|
|
+ const result = [];
|
|
|
+ SpreadJsObj.initSheet(sheet, setting.spreadSetting);
|
|
|
+ SpreadJsObj.loadSheetData(sheet, SpreadJsObj.DataType.Data, result);
|
|
|
+
|
|
|
+ const recursiveGather = function(nodes) {
|
|
|
+ for (const node of nodes) {
|
|
|
+ if (node.children && node.children.length > 0) {
|
|
|
+ recursiveGather(node.children);
|
|
|
+ } else {
|
|
|
+ if (!node.b_code) continue;
|
|
|
+ let gcl = result.find(x => {
|
|
|
+ return x.b_code === node.b_code && x.name === node.name && x.unit === node.unit && x.unit_price === node.unit_price;
|
|
|
+ });
|
|
|
+ if (!gcl) {
|
|
|
+ gcl = { b_code: node.b_code, name: node.name, unit: node.unit, unit_price: node.unit_price };
|
|
|
+ result.push(gcl);
|
|
|
+ }
|
|
|
+ for (const f of setting.gatherFields) {
|
|
|
+ gcl[f] = ZhCalc.add(gcl[f], node[f]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ };
|
|
|
+
|
|
|
+ const gather = function (node) {
|
|
|
+ $(`#${setting.id}-info`).html(`${node.code || ''}${node.b_code || ''} ${node.name || ''} - ${moment(new Date()).format('YYYY-MM-DD HH:mm:ss')}`);
|
|
|
+ recursiveGather([node]);
|
|
|
+ SpreadJsObj.reLoadSheetData(sheet);
|
|
|
+ };
|
|
|
+
|
|
|
+ $('#gcl-gather-refresh').click(() => {
|
|
|
+ gather(SpreadJsObj.getSelectObject(setting.relaSheet));
|
|
|
+ });
|
|
|
+
|
|
|
+ return { spread, sheet, gather}
|
|
|
+ };
|
|
|
+
|
|
|
+})(jQuery);
|