| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383 |
- /**
- * 自定义动态列表.js
- */
- shr.defineClass("shr.custom.CustomDynamicList", shr.compensation.CmpTBDynamicList, {
- //编辑列数组(大小写不区分)
- editColumns: null,
- initalizeDOM: function () {
- shr.custom.CustomDynamicList.superClass.initalizeDOM.call(this);
- },
- /**
- * 返回
- */
- backAction: function () {
- var self = this;
- self.beforeSave();
- if (self.checkEditCell()) {
- shr.showConfirm("您有编辑数据未保存,是否忽略?", function () {
- self.back();
- }, function () {
- return;
- });
- } else {
- self.back();
- }
- },
- /**
- * 获取可以编辑列
- * @returns
- */
- getEditColumns: function () {
- return this.editColumns;
- },
- /**
- * 扩展jqgrid options,供子类复写
- */
- extendGridOptions: function (options) {
- var _self = this;
- var editCol = _self.getEditColumns();
- $.extend(true, options, {
- gridOption: {
- cellEdit: true,
- cellsubmit: 'clientArray'
- }
- });
- $.extend(true, options.gridConfig, {
- editCol: editCol
- });
- _self.editColumnsSetting = _self.initData.editColumnsSetting;
- if (_self.editColumnsSetting && !$.isEmptyObject(_self.editColumnsSetting) && options.gridConfig) {
- var columns = options.gridConfig.columns;
- if (columns) {
- $.each(columns, function (key, value) {
- if (value) {
- var name = value.name;
- var editSetting = _self.editColumnsSetting[name];
- if (editSetting) {
- $.extend(value, editSetting);
- if (value.editable && (value.editable == "true" || value.editable == true)) {
- if (value.formatter && value.formatter == "promptBox") {
- if (options.datatype == "json") {
- value.name = value.name + ".*";
- }
- }
- }
- }
- }
- });
- }
- }
- },
- /**
- * 处理表格操作
- * @param {*} options
- */
- handleGridOptions: function (options) {
- var columns = options.gridConfig.columns;
- var editCol = options.gridConfig.editCol;
- for (var i = 0; editCol && i < editCol.length; i++) {
- editCol[i] = editCol[i].toUpperCase();
- }
- if (editCol && editCol.length > 0 && columns && columns.length > 0) {
- for (var i = 0; i < columns.length; i++) {
- var column = columns[i];
- var columnName = column.name;
- var index = $.inArray(columnName.toUpperCase(), editCol);
- if (index >= 0) {
- column.editable = true;
- if ("number" == column.type.toLowerCase() || "double" == column.type.toLowerCase() || "integer" == column.type.toLowerCase() || "bigdecimal" == column.type.toLowerCase()) {
- column.edittype = 'numberfield';
- column.editoptions = { maxlength: '50' };
- column.editoptions.inputJson = column.extendOptions.numberOptions;
- } else if ("date" == column.type.toLowerCase()) {
- column.edittype = 'shrDateTimePicker';
- column.formatter = 'shrDateTimePicker';
- } else if (!column.edittype) {
- column.edittype = 'shrtext';
- column.editoptions = { maxlength: '100' };
- }
- column.classes = "cellEditItem";
- }
- }
- }
- $.extend(true, options, options.gridOption);
- },
- /**
- * 设置插件,非002信息集必须复写
- */
- getParamPlus: function () {
- return {};
- },
- /**
- * 获取插件过滤条件,非002信息集必须复写
- */
- getPlusFilterItems: function () {
- return null;
- },
- /**
- * 判断是否存在修改的单元格
- */
- checkEditCell: function () {
- var _self = this;
- var tds = $("#grid td[class*='dirty-cell']");
- //判断是否存在已经修改但是没有切换的单元格
- var editCell = $("#grid input[type='text']");
- if (tds && tds.length > 0) {
- return true;
- } else {
- if (editCell) {
- var value = $("#grid input[type='text']").parent().attr('title');
- if (editCell.val() != value) {
- return true;
- }
- }
- }
- return false;
- },
- /*
- * 确认是否存在已经修改但是没有保存的数据
- */
- dynCalonfirm: function (message, action, cancel) {
- shr.msgHideAll();
- var _self = this;
- // var tds = $("#grid td[class='dirty-cell']");
- if (_self.checkEditCell()) {
- var msg = top.Messenger().post({
- message: message,
- hideAfter: null,
- actions: {
- retry: {
- label: '确认',
- auto: false,
- delay: 0,
- showCloseButton: true,
- action: function () {
- shr.msgHideAll();
- if (action && $.isFunction(action)) {
- action.call(this);
- }
- }
- },
- cancel: {
- label: '取消',
- action: function () {
- shr.msgHideAll();
- if (cancel && $.isFunction(cancel)) {
- cancel.call(this);
- } else {
- return msg.cancel();
- }
- }
- }
- }
- });
- return msg;
- } else {
- shr.msgHideAll();
- if (action && $.isFunction(action)) {
- action.call(this);
- }
- }
- },
- /**
- * 校验 子类可重写
- * @returns
- */
- validate: function () {
- // shr.showWarning({
- // message: "提示",
- // });
- return true;
- },
- /**
- * 组装保存时传至服务端的数据 有编辑列 子类必须重写
- */
- assembleSaveData: function (action) {
- // var _self = this;
- // var data = _self.prepareParam(action + 'Action');
- // data.method = action;
- // //data.operateState = _self.getOperateState();
- // data.model = shr.toJSON(_self.assembleModel());
- // // relatedFieldId
- // var relatedFieldId = this.getRelatedFieldId();
- // if (relatedFieldId) {
- // data.relatedFieldId = relatedFieldId;
- // }
- // return data;
- },
- /**
- * 根据列名称获取字段类型
- */
- getColumnType: function (col) {
- var cols = $('#dynamicGrid').data("options").gridConfig.columns;
- var item;
- for (var i = 0; i < cols.length; i++) {
- item = cols[i];
- if (col.toUpperCase() == item.name.toUpperCase()) {
- return item.type;
- }
- }
- //默认数字
- return "NUMBER";
- },
- //判断是否为数字,整数位和小数位分别不超过10位
- checkNumValid: function (value, type) {
- var mesasage;
- if (value == null) {
- return true;
- }
- value = value.toString();
- if (type != undefined && !type) {//type为空默认校验数字
- mesasage = "未获取到该列的数据类型";
- }
- if ('NUMBER' == type.toUpperCase() || 'INTEGER' == type.toUpperCase() || 'BIGDECIMAL' == type.toUpperCase()) {
- // if (!/^-?[0-9]{1,10}\.?[0-9]{0,5}$/.test(value)) {
- // return false;
- // }
- // 移除小数点和指数符号后的长度就是有效数字位数
- let significantDigits = value.replace('.', '').replace('e+', '').length;
- if (significantDigits > 12) {
- return false;
- }
- }
- return true;
- },
- /**
- * 保存前置方法
- */
- beforeSave: function () {
- var _self = this;
- //将处于编辑状态的单元格执行savecell方法
- var $table = $("#grid")[0];
- var iRow = $table.p.iRow;
- var iCol = $table.p.iCol;
- $("#grid").jqGrid("saveCell", iRow, iCol);
- //var tds = $("#grid td[class*='dirty-cell']");
- },
- /**
- * 增加action参数,执行保存后继续执行其他方法
- */
- saveDynGridAction: function (action) {
- if (this.validate()) {
- var _self = this;
- this.beforeSave();
- if (!_self.checkEditCell()) {
- shr.showWarning({
- message: "您没有修改列表中的数据,不需要保存!"
- });
- return;
- }
- try {
- var data = _self.assembleSaveData(action);
- } catch (error) {
- // 捕获到异常后的处理代码
- shr.showWarning({
- message: error.message,
- hideAfter: 3
- });
- return;
- }
- if (!data) {
- shr.showWarning({
- message: "请求参数为空!"
- });
- return;
- }
- $.block.show();
- _self.remoteCall({
- method: "saveDynGrid",
- async: false,
- param: { modi: JSON.stringify(data) },
- success: function (res) {
- //存在action则先不刷新
- if (action && $.isFunction(action)) {
- action.call(this);
- } else {
- shr.showInfo({
- message: res,
- hideAfter: 3
- });
- _self.queryGrid();
- }
- },
- error: function (res) {
- shr.showError({
- message: res.summary
- });
- },
- complete: function (jqXHR, textStatus) {
- if (jqXHR.responseText.indexOf("\"result\":\"error\"") > 0) {
- $.block.hide();
- }
- }
- });
- }
- },
- // /**
- // * 描述: 导入action
- // */
- // importAction: function () {
- // var self = this;
- // //自定义参数
- // //var parentId = shr.getUrlParam('parentId');
- // var customParam = {};
- // self.setFastFilterMap();
- // this.setGridTreeParam();
- // this.setGridCustomParam();
- // //this.setBotpFilterItems($grid);
- // //this.queryFastFilterGrid();
- // // selector
- // // var selector = this.getSelector();
- // // if (typeof selector !== 'undefined') {
- // // $grid.setGridParam({ selector: selector });
- // // }
- // // filter
- // var filterItems = this.getFilterItems();
- // filterItems = shr.strEscape(filterItems);
- // customParam.filterItems = filterItems;
- // // fastFilter
- // var fastFilterItems = this.getFastFilterItems();
- // if (fastFilterItems) {
- // customParam.fastFilterItems = JSON.stringifyOnce(fastFilterItems);
- // }
- // //seniorFilter
- // var advancedFilter = this.getAdvancedFilterItems();
- // if (self.fastFilterMap && self.fastFilterMap.fastFilterItems && self.isReturn) {
- // advancedFilter = self.fastFilterMap.fastFilterItems.advancedFilter;
- // }
- // if (advancedFilter) {
- // customParam.advancedFilter = JSON.stringifyOnce(advancedFilter);
- // } else {
- // customParam.advancedFilter = null;
- // }
- // //gridHeadFilter
- // var gridHeadFilter = this.getGridHeadFilterItems(advancedFilter);
- // if (gridHeadFilter) {
- // customParam.advancedFilter = JSON.stringifyOnce(gridHeadFilter);
- // }
- // // sorter
- // var sorterItems = this.getSorterItems();
- // if (sorterItems) {
- // customParam.sorterItems = sorterItems;
- // }
- // var keyField = this.getBillIdFieldName();
- // if (keyField) {
- // customParam.keyField = keyField;
- // }
- // self.beforeSave();
- // if (self.checkEditCell()) {
- // shr.showConfirm("您有编辑数据未保存,是否忽略?", function () {
- // self.doImportData('import', customParam);
- // }, function () {
- // return;
- // });
- // } else {
- // self.doImportData('import', customParam);
- // }
- // },
- });
|