123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157 |
- 'use strict';
- /**
- * 依赖jQuery, lodash, spreadjs,请放在spreadjs_zh.js之后
- *
- * @author Mai
- * @date
- * @version
- */
- const NewMergePeg = function (setting) {
- const spread = SpreadJsObj.createNewSpread($('#mp-spread')[0]);
- const sheet = spread.getActiveSheet();
- const spreadSetting = {
- cols: [
- {title: '起始桩号', field: 'start-peg', hAlign: 0, width: 80, formatter: '@'},
- {title: '终止桩号', field: 'end-peg', hAlign: 0, width: 80, formatter: '@'},
- {title: '位置', field: 'peg-pos', hAlign: 0, width: 60, formatter: '@'},
- {title: '合并结果', field: 'peg', hAlign: 0, width: 180, formatter: '@'},
- ],
- emptyRows: 3,
- headRows: 1,
- headRowHeight: [32],
- headerFont: '12px 微软雅黑',
- font: '12px 微软雅黑',
- };
- const findCol = function (field) {
- return _.findIndex(spreadSetting.cols, function (c) {return c.field === field});
- };
- const spCol = findCol('start-peg'), epCol = findCol('end-peg'), posCol = findCol('peg-pos'), pegCol = findCol('peg');
- SpreadJsObj.initSheet(sheet, spreadSetting);
- sheet.setColumnWidth(0, 30, spreadNS.SheetArea.rowHeader);
- const spreadObj = {
- mergePeg(row) {
- const withPos = $('#mp-with-pos')[0].checked
- const sprChar = '~', withSprChar = $('#mp-with-spr-char')[0].checked;
- const mergeRow = function (row) {
- const startPeg = _.trim(sheet.getText(row, spCol));
- const endPeg = _.trim(sheet.getText(row, epCol));
- let peg;
- if (startPeg !== '') {
- peg = endPeg !== ''
- ? (withSprChar && endPeg.indexOf(sprChar) !== 0 ? startPeg + sprChar + endPeg : startPeg + endPeg)
- : startPeg;
- } else {
- peg = endPeg !== '' ? endPeg : '';
- }
- if (withPos) {
- peg = _.trim(sheet.getText(row, posCol)) + peg;
- }
- sheet.setText(row, pegCol, peg);
- };
- if (row) {
- const rows = row instanceof Array ? row : [row];
- if (row instanceof Array) {
- for (const r of rows) {
- mergeRow(r)
- }
- }
- } else {
- for (let iRow = 0, iLen = sheet.getRowCount(); iRow < iLen; iRow++) {
- mergeRow(iRow);
- }
- }
- },
- getPegs() {
- const result = [];
- for (let iRow = 0, iLen = sheet.getRowCount(); iRow < iLen; iRow++) {
- const peg = sheet.getText(iRow, pegCol);
- if (peg !== '') {
- result.push({name: peg});
- }
- }
- return result;
- },
- editStarting(e, info) {
- if (!info.sheet.zh_setting) return;
- const col = info.sheet.zh_setting.cols[info.col];
- switch (col.field) {
- case 'peg':
- info.cancel = true;
- break;
- }
- },
- clipboardPasted: function (e, info) {
- spreadObj.mergePeg();
- },
- deletePress: function (sheet) {
- if (!sheet.zh_setting) return;
- const sel = sheet.getSelections()[0], row = [];
- for (let iRow = sel.row; iRow < sel.row + sel.rowCount; iRow++) {
- for (let iCol = sel.col; iCol < sel.col + sel.colCount; iCol++) {
- if (iCol !== pegCol) {
- sheet.setText(iRow, iCol, '');
- }
- }
- row.push(iRow);
- }
- spreadObj.mergePeg(row);
- },
- editEnded: function (e, info) {
- spreadObj.mergePeg(info.row);
- },
- cut: function (sheet, sel, callback) {
- if (!sheet || !sel) return;
- callback();
- const rows = [];
- for (let iRow = sel.row; iRow < sel.row + sel.rowCount; iRow++) {
- for (let iCol = sel.col; iCol < sel.col + sel.colCount; iCol++) {
- sheet.setText(iRow, iCol, '');
- }
- rows.push(iRow);
- }
- spreadObj.mergePeg(rows);
- }
- };
- spread.bind(spreadNS.Events.EditStarting, spreadObj.editStarting);
- spread.bind(spreadNS.Events.ClipboardPasted, spreadObj.clipboardPasted);
- spread.bind(spreadNS.Events.EditEnded, spreadObj.editEnded);
- SpreadJsObj.addDeleteBind(spread, spreadObj.deletePress);
- SpreadJsObj.addCutEvents(spread, spreadObj.cut);
- // 勾选位置
- $('#mp-with-pos').click(() => {spreadObj.mergePeg();});
- // 勾选桩号连接符
- $('#mp-with-spr-char').click(function () {
- if (this.checked) {
- $('#mp-spr-char').show();
- } else {
- $('#mp-spr-char').hide();
- }
- spreadObj.mergePeg();
- });
- // 选择连接符
- $('select', '#merge-peg').change(() => {spreadObj.mergePeg()});
- // 初始化窗口
- $('#merge-peg').on('show.bs.modal', function () {
- sheet.clear(0, 0, sheet.getRowCount(), sheet.getColumnCount(),
- spreadNS.SheetArea.viewport, spreadNS.StorageType.data);
- });
- $('#merge-peg').on('shown.bs.modal', function () {
- spread.refresh();
- });
- $('#mp-ok').click(() => {
- if (setting.callback) {
- setting.callback(spreadObj.getPegs());
- }
- $('#merge-peg').modal('hide');
- });
- const showModal = function () {
- $('#merge-peg').modal('show');
- };
- return {show: showModal};
- };
|