|
@@ -2025,8 +2025,9 @@
|
|
|
</div>
|
|
|
<div class="modal-footer">
|
|
|
<button type="button" class="btn btn-sm btn-secondary" data-dismiss="modal">关闭</button>
|
|
|
- <!--<button type="button" class="btn btn-sm btn-primary" >确认修改</button>-->
|
|
|
- <button type="button" class="btn btn-sm btn-success" >刷新显示</button>
|
|
|
+ <% if (hadMap) { %>
|
|
|
+ <button type="button" class="btn btn-sm btn-success" onclick="window.location.reload()" >刷新显示</button>
|
|
|
+ <% } %>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -2038,26 +2039,20 @@
|
|
|
<h5 class="modal-title">地图路线</h5>
|
|
|
</div>
|
|
|
<div class="modal-body">
|
|
|
- <input class="form-control form-control-sm mb-1" type="text" value="路线1" placeholder="请输入路线名称">
|
|
|
- <input class="form-control form-control-sm mb-1" type="text" id="color-select" value="#ff0000" placeholder="请选择路线颜色">
|
|
|
- <!--<table class="table table-bordered table-sm">-->
|
|
|
- <!--<tr><th>坐标/备注</th><th>N(X)</th><th>E(Y)</th><th>色值(选填)</th></tr>-->
|
|
|
- <!--<tr><td>K0+000</td><td>324234.22</td><td>121212.09</td><td>#ff6501</td></tr>-->
|
|
|
- <!--<tr><td>K1+356</td><td>9861253.22</td><td>28234234.09</td><td></td></tr>-->
|
|
|
- <!--<tr><td>K2+534</td><td>651278.22</td><td>64122.09</td><td></td></tr>-->
|
|
|
- <!--<tr><td> </td><td> </td><td></td><td></td></tr>-->
|
|
|
- <!--<tr><td> </td><td> </td><td></td><td></td></tr>-->
|
|
|
- <!--<tr><td> </td><td> </td><td></td><td></td></tr>-->
|
|
|
- <!--<tr><td> </td><td> </td><td></td><td></td></tr>-->
|
|
|
- <!--</table>-->
|
|
|
+ <input class="form-control form-control-sm mb-1" type="text" id="map-name" value="" placeholder="请输入路线名称">
|
|
|
+ <input class="form-control form-control-sm mb-1" type="text" id="map-tips" value="" placeholder="请输入路线标注(可以为空)">
|
|
|
+ <div id="map-color-select" class="input-group mb-1">
|
|
|
+ <input id="map-color" type="text" placeholder="请选择路线颜色" class="form-control form-control-sm" style="height: 30px" />
|
|
|
+ <span class="input-group-append"><span class="input-group-text colorpicker-input-addon"><i></i></span></span>
|
|
|
+ </div>
|
|
|
+ <!--<input class="form-control form-control-sm mb-1" type="text" id="map-color" value="#ff0000" placeholder="请选择路线颜色">-->
|
|
|
<div class="modal-height-300" style="overflow-y: auto">
|
|
|
<div id="map-spread" style="height: 297px; width: 465px;"></div>
|
|
|
</div>
|
|
|
</div>
|
|
|
<div class="modal-footer">
|
|
|
- <a href="#bd-set-11-1" class="btn btn-sm btn-secondary" data-toggle="modal" data-target="#bd-set-11-1" data-dismiss="modal">关闭</a>
|
|
|
- <!--<a href="#bd-set-11" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#bd-set-11-1" data-dismiss="modal">确认修改</a>-->
|
|
|
- <button type="button" class="btn btn-sm btn-primary" id="save-map" data-mid="">确认修改</button>
|
|
|
+ <button class="btn btn-sm btn-secondary save-map" data-close="1" data-mid="">关闭</button>
|
|
|
+ <button type="button" class="btn btn-sm btn-primary save-map" data-close="0" data-mid="">确认修改</button>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -2074,16 +2069,46 @@
|
|
|
</div>
|
|
|
<div class="modal-footer">
|
|
|
<a href="#bd-set-11-1" class="btn btn-sm btn-secondary" data-toggle="modal" data-target="#bd-set-11-1" data-dismiss="modal">关闭</a>
|
|
|
- <!--<button type="button" class="btn btn-sm btn-primary" >确认修改</button>-->
|
|
|
<button type="button" class="btn btn-sm btn-danger" id="del-map" data-mid="">确认删除</button>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
+<!--关闭退出编辑-->
|
|
|
+<div class="modal fade" id="bd-set-11-4" data-backdrop="static">
|
|
|
+ <div class="modal-dialog" role="document">
|
|
|
+ <div class="modal-content">
|
|
|
+ <div class="modal-header">
|
|
|
+ <h5 class="modal-title">关闭路线编辑</h5>
|
|
|
+ </div>
|
|
|
+ <div class="modal-body">
|
|
|
+ 当前路线数据发生过修改,是否保存修改数据并退出?
|
|
|
+ </div>
|
|
|
+ <div class="modal-footer">
|
|
|
+ <a href="javascript:void(0)" class="btn btn-sm btn-secondary" data-dismiss="modal">关闭</a>
|
|
|
+ <button id="back-set-11-1" class="btn btn-sm btn-danger">直接退出</button>
|
|
|
+ <button type="button" class="btn btn-sm btn-primary save-map" data-colse="0" data-mid="">保存并退出</button>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+</div>
|
|
|
+
|
|
|
<script>
|
|
|
const hadMap = parseInt(<%- hadMap %>);
|
|
|
- const tenderMapList = JSON.parse(unescape('<%- escape(JSON.stringify(tenderMapList)) %>'));
|
|
|
$(function () {
|
|
|
+ $('#bd-set-11').on('show.bs.modal', function () {
|
|
|
+ if (parseInt(hadMap) == 0) {
|
|
|
+ $('#bd-set-11').find('.card').eq(0).addClass('border-dark');
|
|
|
+ $('#bd-set-11').find('.card').eq(0).find('.btn').removeClass('select-map').addClass('disabled').text('当前');
|
|
|
+ $('#bd-set-11').find('.card').eq(1).removeClass('border-dark');
|
|
|
+ $('#bd-set-11').find('.card').eq(1).find('.btn').removeClass('disabled').addClass('select-map').text('选择');
|
|
|
+ } else {
|
|
|
+ $('#bd-set-11').find('.card').eq(1).addClass('border-dark');
|
|
|
+ $('#bd-set-11').find('.card').eq(1).find('.btn').removeClass('select-map').addClass('disabled').text('当前');
|
|
|
+ $('#bd-set-11').find('.card').eq(0).removeClass('border-dark');
|
|
|
+ $('#bd-set-11').find('.card').eq(0).find('.btn').removeClass('disabled').addClass('select-map').text('选择');
|
|
|
+ }
|
|
|
+ })
|
|
|
$('body').on('click', '#bd-set-11 .select-map', function () {
|
|
|
// const val = parseInt($(this).data('value'));
|
|
|
$(this).parents('.card').addClass('border-dark');
|
|
@@ -2108,7 +2133,6 @@
|
|
|
toastr.warning('未更改当前设置,无需提交');
|
|
|
}
|
|
|
})
|
|
|
- $('#color-select').colorpicker();
|
|
|
$('#add-map').click(function () {
|
|
|
const num = $('#map-table tr').length;
|
|
|
const name = '路线' + (num+1);
|
|
@@ -2130,13 +2154,35 @@
|
|
|
$('#bd-set-11-1').modal('show');
|
|
|
});
|
|
|
});
|
|
|
+ $('#map-color-select').colorpicker({
|
|
|
+ // container: true,
|
|
|
+ color: '#ff0000',
|
|
|
+ useAlpha: false,
|
|
|
+ extensions: [
|
|
|
+ {
|
|
|
+ name: 'swatches', // extension name to load
|
|
|
+ options: { // extension options
|
|
|
+ colors: {
|
|
|
+ '#ffffff': '#ffffff',
|
|
|
+ '#337ab7': '#337ab7',
|
|
|
+ '#5cb85c': '#5cb85c',
|
|
|
+ '#5bc0de': '#5bc0de',
|
|
|
+ '#f0ad4e': '#f0ad4e',
|
|
|
+ '#d9534f': '#d9534f'
|
|
|
+ },
|
|
|
+ namesAsValues: true
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ });
|
|
|
+ const mapSpread = SpreadJsObj.createNewSpread($('#map-spread')[0]);
|
|
|
const mapSpreadSetting = {
|
|
|
cols: [
|
|
|
- {title: '坐标/备注', colSpan: '1', rowSpan: '1', field: 'b_code', hAlign: 0, width: 100, formatter: '@'},
|
|
|
- {title: '经度', colSpan: '1', rowSpan: '1', field: 'x', hAlign: 2, width: 120, type: 'Number'},
|
|
|
- {title: '纬度', colSpan: '1', rowSpan: '1', field: 'y', hAlign: 2, width: 120, type: 'Number'},
|
|
|
+ {title: '坐标/备注', colSpan: '1', rowSpan: '1', field: 'tip', hAlign: 0, width: 100, formatter: '@'},
|
|
|
+ {title: '经度', colSpan: '1', rowSpan: '1', field: 'lng', hAlign: 2, width: 120, type: 'number'},
|
|
|
+ {title: '纬度', colSpan: '1', rowSpan: '1', field: 'lat', hAlign: 2, width: 120, type: '@'},
|
|
|
],
|
|
|
- emptyRows: 20,
|
|
|
+ emptyRows: 5,
|
|
|
headRows: 1,
|
|
|
headRowHeight: [25, 25],
|
|
|
defaultRowHeight: 21,
|
|
@@ -2144,20 +2190,312 @@
|
|
|
font: '12px 微软雅黑',
|
|
|
readOnly: false,
|
|
|
};
|
|
|
- const mapSpread = SpreadJsObj.createNewSpread($('#map-spread')[0]);
|
|
|
SpreadJsObj.initSheet(mapSpread.getActiveSheet(), mapSpreadSetting);
|
|
|
$('body').on('click', '#bd-set-11-1 .save-map-btn', function () {
|
|
|
const id = parseInt($(this).data('mid'));
|
|
|
- $('#save-map').attr('data-mid', id);
|
|
|
+ $('.save-map').attr('data-mid', id);
|
|
|
// 加载sjs
|
|
|
const mapInfo = _.find(tenderMapList, { id });
|
|
|
- console.log(mapInfo);
|
|
|
- SpreadJsObj.loadSheetData(mapSpread.getActiveSheet(), SpreadJsObj.DataType.Data, (mapInfo.map_json ? mapInfo.map_json : []));
|
|
|
+ $('#map-name').val(mapInfo.name);
|
|
|
+ $('#map-tips').val(mapInfo.tips);
|
|
|
+ $('#map-color').val(mapInfo.color);
|
|
|
+ $('#map-color').attr('value', mapInfo.color);
|
|
|
+ $('#map-color-select').colorpicker("setValue", mapInfo.color);
|
|
|
+ SpreadJsObj.loadSheetData(mapSpread.getActiveSheet(), SpreadJsObj.DataType.Data, (mapInfo.map_json ? JSON.parse(unescape(escape(mapInfo.map_json))) : []));
|
|
|
+ });
|
|
|
+ const xPattern = /^-?(\d{1,2}(\.\d{1,8})?|1[0-7]\d(\.\d{1,8})?|180)$/;
|
|
|
+ const yPattern = /^-?(\d(\.\d{1,8})?|[1-8]\d(\.\d{1,8})?|90)$/;
|
|
|
+ const mapSpreadObj = {
|
|
|
+ del: function (row) {
|
|
|
+ const select = SpreadJsObj.getSelectObject(mapSpread.getActiveSheet());
|
|
|
+ const delSel = mapSpread.getActiveSheet().getSelections()[0];
|
|
|
+ mapSpread.getActiveSheet().deleteRows(delSel.row, delSel.rowCount);
|
|
|
+ const sel = mapSpread.getActiveSheet().getSelections();
|
|
|
+ mapSpread.getActiveSheet().setSelection(0, 0, 1, 1);
|
|
|
+ },
|
|
|
+ batchAdd: function(num, site = mapSpread.getActiveSheet().getRowCount()) {
|
|
|
+ mapSpread.getActiveSheet().addRows(site, parseInt(num));
|
|
|
+ },
|
|
|
+ editEnding: function (e, info) {
|
|
|
+ if (info.sheet.zh_setting) {
|
|
|
+ const curRow = info.row;
|
|
|
+ info.sheet.zh_data[curRow] = {
|
|
|
+ tip: info.sheet.getText(curRow, 0),
|
|
|
+ lng: info.sheet.getText(curRow, 1) !== '' ? _.toNumber(info.sheet.getText(curRow, 1)) : '',
|
|
|
+ lat: info.sheet.getText(curRow, 2) !== '' ? _.toNumber(info.sheet.getText(curRow, 2)) : '',
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ editEnded: function (e, info) {
|
|
|
+ if (info.sheet.zh_setting) {
|
|
|
+ const select = SpreadJsObj.getSelectObject(info.sheet);
|
|
|
+ const col = info.sheet.zh_setting.cols[info.col];
|
|
|
+ const validText = info.editingText ? info.editingText.replace('\n', '') : '';
|
|
|
+ if (validText === '') {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (col.field === 'lng' && !xPattern.test(validText)) {
|
|
|
+ toastr.error('请输入正常范围内的经度(-180 ~ 180)');
|
|
|
+ SpreadJsObj.reLoadRowData(info.sheet, info.row);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (col.field === 'lat' && !yPattern.test(validText)) {
|
|
|
+ toastr.error('请输入正常范围内的纬度(-90 ~ 90)');
|
|
|
+ SpreadJsObj.reLoadRowData(info.sheet, info.row);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ clipboardPasting(e, info) {
|
|
|
+ const range = info.cellRange;
|
|
|
+ for (let iRow = 0; iRow < range.rowCount; iRow++) {
|
|
|
+ const curRow = range.row + iRow;
|
|
|
+ info.sheet.zh_data[curRow] = {
|
|
|
+ tip: info.sheet.getText(curRow, 0),
|
|
|
+ lng: info.sheet.getText(curRow, 1) !== '' ? _.toNumber(info.sheet.getText(curRow, 1)) : '',
|
|
|
+ lat: info.sheet.getText(curRow, 2) !== '' ? _.toNumber(info.sheet.getText(curRow, 2)) : '',
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ clipboardPasted(e, info) {
|
|
|
+ const hint = {
|
|
|
+ cellError: {type: 'error', msg: '粘贴内容超出了表格范围'},
|
|
|
+ xExpr: {type: 'error', msg: '请粘贴正常范围内的经度(-180 ~ 180)'},
|
|
|
+ yExpr: {type: 'error', msg: '请粘贴正常范围内的纬度(-90 ~ 90)'},
|
|
|
+ };
|
|
|
+ const range = info.cellRange;
|
|
|
+ console.log(range);
|
|
|
+ if (range.col + range.colCount > 3) {
|
|
|
+ toastMessageUniq(hint.cellError);
|
|
|
+ SpreadJsObj.reLoadSheetHeader(mapSpread.getActiveSheet());
|
|
|
+ // SpreadJsObj.reLoadSheetData(mapSpread.getActiveSheet());
|
|
|
+ // continue;
|
|
|
+ }
|
|
|
+ for (let iRow = 0; iRow < range.rowCount; iRow++) {
|
|
|
+ let bPaste = true;
|
|
|
+ const curRow = range.row + iRow;
|
|
|
+ for (let iCol = 0; iCol < range.colCount; iCol++) {
|
|
|
+ const curCol = range.col + iCol;
|
|
|
+ const colSetting = info.sheet.zh_setting.cols[curCol];
|
|
|
+ const validText = info.sheet.getText(curRow, curCol);
|
|
|
+ if (validText === '') {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (colSetting.field === 'lng' && !xPattern.test(validText)) {
|
|
|
+ toastMessageUniq(hint.xExpr);
|
|
|
+ bPaste = false;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (colSetting.field === 'lat' && !yPattern.test(validText)) {
|
|
|
+ toastMessageUniq(hint.yExpr);
|
|
|
+ bPaste = false;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!bPaste) {
|
|
|
+ SpreadJsObj.reLoadRowData(info.sheet, curRow);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ }
|
|
|
+ mapSpread.bind(spreadNS.Events.EditEnding, mapSpreadObj.editEnding);
|
|
|
+ mapSpread.bind(spreadNS.Events.EditEnded, mapSpreadObj.editEnded);
|
|
|
+ mapSpread.bind(spreadNS.Events.ClipboardPasting, mapSpreadObj.clipboardPasting);
|
|
|
+ mapSpread.bind(spreadNS.Events.ClipboardPasted, mapSpreadObj.clipboardPasted);
|
|
|
+ let batchInsertObj;
|
|
|
+ $.contextMenu.types.batchInsert = function (item, opt, root) {
|
|
|
+ const self = this;
|
|
|
+ if ($.isFunction(item.icon)) {
|
|
|
+ item._icon = item.icon.call(this, this, $t, key, item);
|
|
|
+ } else {
|
|
|
+ if (typeof(item.icon) === 'string' && item.icon.substring(0, 3) === 'fa-') {
|
|
|
+ // to enable font awesome
|
|
|
+ item._icon = root.classNames.icon + ' ' + root.classNames.icon + '--fa fa ' + item.icon;
|
|
|
+ } else {
|
|
|
+ item._icon = root.classNames.icon + ' ' + root.classNames.icon + '-' + item.icon;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.addClass(item._icon);
|
|
|
+ const $obj = $('<div>' + item.name + '<input class="text-right ml-1 mr-1" type="tel" max="100" min="1" value="' + item.value + '" style="width: 30px; height: 18px; padding-right: 4px;">行</div>')
|
|
|
+ .appendTo(this);
|
|
|
+ const $input = $obj.find('input');
|
|
|
+ const event = () => {
|
|
|
+ if (self.hasClass('context-menu-disabled')) return;
|
|
|
+ item.batchInsert($input[0], root);
|
|
|
+ };
|
|
|
+ $obj.on('click', event).keypress(function (e) {if (e.keyCode === 13) { event(); }});
|
|
|
+ $input.click((e) => {e.stopPropagation();})
|
|
|
+ .keyup((e) => {if (e.keyCode === 13) item.batchInsert($input[0], root);})
|
|
|
+ .on('input', function () {this.value = this.value.replace(/[^\d]/g, '');});
|
|
|
+ };
|
|
|
+ // 右键菜单
|
|
|
+ $.contextMenu({
|
|
|
+ selector: '#map-spread',
|
|
|
+ build: function ($trigger, e) {
|
|
|
+ const target = SpreadJsObj.safeRightClickSelection($trigger, e, mapSpread);
|
|
|
+ return target.hitTestType === GC.Spread.Sheets.SheetArea.viewport || target.hitTestType === GC.Spread.Sheets.SheetArea.rowHeader;
|
|
|
+ },
|
|
|
+ items: {
|
|
|
+ 'batchInsert': {
|
|
|
+ name: '批量新增',
|
|
|
+ type: 'batchInsert',
|
|
|
+ value: '1',
|
|
|
+ icon: 'fa-sign-in',
|
|
|
+ batchInsert: function (obj, root) {
|
|
|
+ if (_.toNumber(obj.value) > _.toNumber(obj.max)) {
|
|
|
+ obj.value = obj.max;
|
|
|
+ toastr.warning('批量添加不可多于' + obj.max);
|
|
|
+ } else if(_.toNumber(obj.value) < _.toNumber(obj.min)) {
|
|
|
+ obj.value = obj.min;
|
|
|
+ toastr.warning('批量添加不可少于' + obj.min);
|
|
|
+ } else {
|
|
|
+ mapSpreadObj.batchAdd(obj.value);
|
|
|
+ root.$menu.trigger('contextmenu:hide');
|
|
|
+ }
|
|
|
+ },
|
|
|
+ },
|
|
|
+ 'batchInsert2': {
|
|
|
+ name: '批量插入',
|
|
|
+ type: 'batchInsert',
|
|
|
+ value: '1',
|
|
|
+ icon: 'fa-sign-in',
|
|
|
+ batchInsert: function (obj, root) {
|
|
|
+ if (_.toNumber(obj.value) > _.toNumber(obj.max)) {
|
|
|
+ obj.value = obj.max;
|
|
|
+ toastr.warning('批量插入不可多于' + obj.max);
|
|
|
+ } else if(_.toNumber(obj.value) < _.toNumber(obj.min)) {
|
|
|
+ obj.value = obj.min;
|
|
|
+ toastr.warning('批量插入不可少于' + obj.min);
|
|
|
+ } else {
|
|
|
+ const select = SpreadJsObj.getSelectObject(mapSpread.getActiveSheet());
|
|
|
+ const sel = mapSpread.getActiveSheet().getSelections()[0];
|
|
|
+ mapSpreadObj.batchAdd(obj.value, sel.row+1);
|
|
|
+ root.$menu.trigger('contextmenu:hide');
|
|
|
+ }
|
|
|
+ },
|
|
|
+ disabled: function (key, opt) {
|
|
|
+ const select = SpreadJsObj.getSelectObject(mapSpread.getActiveSheet());
|
|
|
+ const sel = mapSpread.getActiveSheet().getSelections()[0];
|
|
|
+ if (sel.row !== undefined && sel.rowCount === 1) {
|
|
|
+ return false;
|
|
|
+ } else {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ 'delete': {
|
|
|
+ name: '删除',
|
|
|
+ icon: 'fa-remove',
|
|
|
+ callback: function (key, opt) {
|
|
|
+ mapSpreadObj.del();
|
|
|
+ },
|
|
|
+ disabled: function (key, opt) {
|
|
|
+ const select = SpreadJsObj.getSelectObject(mapSpread.getActiveSheet());
|
|
|
+ const sel = mapSpread.getActiveSheet().getSelections()[0];
|
|
|
+ if (sel.row !== undefined) {
|
|
|
+ return false;
|
|
|
+ } else {
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ }
|
|
|
});
|
|
|
- $('#save-map').on('click', function () {
|
|
|
+
|
|
|
+ $('.save-map').on('click', function () {
|
|
|
const id = parseInt($(this).attr('data-mid'));
|
|
|
- console.log(id);
|
|
|
+ const is_close = parseInt($(this).attr('data-close'));
|
|
|
+ // 获取sjs值
|
|
|
+ const mapData = [];
|
|
|
+ const sheet = mapSpread.getActiveSheet();
|
|
|
+ let pass = true;
|
|
|
+ let wrongRow = [];
|
|
|
+ for (let i = 0; i < sheet.getRowCount(); i++) {
|
|
|
+ const rowData = {
|
|
|
+ tip: sheet.getText(i, 0),
|
|
|
+ lng: sheet.getText(i, 1),
|
|
|
+ lat: sheet.getText(i, 2),
|
|
|
+ }
|
|
|
+ if ((rowData.tip !== '' && rowData.lng === '' && rowData.lat === '') ||
|
|
|
+ (rowData.lng !== '' && rowData.lat === '') ||
|
|
|
+ (rowData.lng === '' && rowData.lat !== '')) {
|
|
|
+ pass = false;
|
|
|
+ wrongRow.push(i+1);
|
|
|
+ } else if (rowData.lng !== '' && rowData.lat !== '') {
|
|
|
+ rowData.lng = _.toNumber(rowData.lng);
|
|
|
+ rowData.lat = _.toNumber(rowData.lat);
|
|
|
+ mapData.push(rowData);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!is_close) {
|
|
|
+ const colorPattern = /(^#[0-9a-fA-F]{6}$)|(^#[0-9a-fA-F]{3}$)/g;
|
|
|
+ if (!colorPattern.test($('#map-color').val())) {
|
|
|
+ $('#bd-set-11-4').modal('hide');
|
|
|
+ toastr.error('请选择或输入正确的颜色编码');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if ($('#map-tips').val().length > 255) {
|
|
|
+ toastr.error('路线标注太长啦~');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (!pass) {
|
|
|
+ const str = wrongRow.join('、');
|
|
|
+ // $('#bd-set-11-4').modal('hide');
|
|
|
+ toastr.error('第 ' + str + ' 行请填写完整的经纬度数据或清空该行或删除该行');
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ // 获取路线绝对中心点
|
|
|
+ let centerPoints = { lng: '', lat: '' };
|
|
|
+ if (mapData.length > 0) {
|
|
|
+ const points = [];
|
|
|
+ for (const m of mapData) {
|
|
|
+ points.push(turf.point([m.lng, m.lat]));
|
|
|
+ }
|
|
|
+ const features = turf.featureCollection(points);
|
|
|
+ const center = turf.center(features);
|
|
|
+ if (center && center.geometry && center.geometry.coordinates && center.geometry.coordinates.length === 2) {
|
|
|
+ centerPoints.lng = _.round(center.geometry.coordinates[0], 4);
|
|
|
+ centerPoints.lat = _.round(center.geometry.coordinates[1], 4);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ const oneMapData = {
|
|
|
+ id,
|
|
|
+ name: $('#map-name').val(),
|
|
|
+ color: $('#map-color').val(),
|
|
|
+ tips: $('#map-tips').val(),
|
|
|
+ map_json: mapData.length > 0 ? JSON.stringify(mapData) : null,
|
|
|
+ center: centerPoints.lng !== '' ? JSON.stringify(centerPoints) : null,
|
|
|
+
|
|
|
+ }
|
|
|
+ const mapInfo = _.find(tenderMapList, { id });
|
|
|
+ oneMapData.create_time = mapInfo.create_time;
|
|
|
+ oneMapData.tid = mapInfo.tid;
|
|
|
+ // 比较对象是否一致,一致则不提交,不一致则提交,关闭提示是否保存修改
|
|
|
+ if (!_.isEqual(oneMapData, mapInfo)) {
|
|
|
+ console.log(oneMapData, mapInfo);
|
|
|
+ if (!is_close) {
|
|
|
+ postData('/tender/' + tenderId + '/map/save', { type: 'save-map', mapData: oneMapData }, function (result) {
|
|
|
+ const index = _.findIndex(tenderMapList, { id });
|
|
|
+ tenderMapList.splice(index, 1, oneMapData);
|
|
|
+ $('#map-table tr').eq(index).children('td').eq(0).text(oneMapData.name);
|
|
|
+ $('#bd-set-11-4').modal('hide');
|
|
|
+ $('#bd-set-11-2').modal('hide');
|
|
|
+ $('#bd-set-11-1').modal('show');
|
|
|
+ });
|
|
|
+ } else {
|
|
|
+ $('#bd-set-11-4').modal('show');
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ $('#bd-set-11-2').modal('hide');
|
|
|
+ $('#bd-set-11-1').modal('show');
|
|
|
+ }
|
|
|
});
|
|
|
+ $('#back-set-11-1').on('click', function () {
|
|
|
+ $('#bd-set-11-4').modal('hide');
|
|
|
+ $('#bd-set-11-2').modal('hide');
|
|
|
+ $('#bd-set-11-1').modal('show');
|
|
|
+ })
|
|
|
})
|
|
|
</script>
|
|
|
<% } %>
|