easyui的datagrid在编辑状态下刷新当前列,不结束编辑

在使用easyui的updateRow方法会刷新当前行的时候会结束编辑,这里可以使用

$('#fylb').datagrid('updateColumnField',{index: rowIndex,row: data})来代替

$('#fylb').datagrid('updateRow',{index: rowIndex,row: data})即可

data为修改之后的行记录:

/**  
 *自定义的修改列值方法   
 *datagrid 列表的JQUERY对象
 *data 是一个object对象,构成:{index: rowIndex,row: data}
 *调用方式:datagrid('updateColumnField',{index: rowIndex,row: data});
 */  
$.extend($.fn.datagrid.methods, {  
    updateColumnField: function(datagrid,data) {  
        datagrid.each(function(){  
            //获取缓存中的配置数据  
	        var gridObj=$.data(this,"datagrid");  
	        var opts=gridObj.options;  
	        //获取行数据  
	        var row=opts.finder.getRow(this,data.index);  
	        data.row=data.row||{};  
	        var update=true;  
		        //更新页面显示值
	        if(update){  
	            var tr=opts.finder.getTr(this,data.index);  
	            var view=opts.view.renderRow.call(opts.view,this,["attr1"],true,data.index,data.row);
	            var inputs = tr.find('td').find('input');
	            var flag = true;
	            /* var flag = false;
	            //加上这里代码,会在失去焦点保存的时候,出现问题,此时已经没有input框在编辑(如果向下左右跳到另外的编辑框,这么写是正确的)
	            inputs.each(function(){
	            	if($(this).hasClass('datagrid-editable-input')){
	            		flag = true;
	            	}
	            });*/
	            if(flag){  
	                //找到所有需要更新值的列  
	                tr.find('div').each(function(i){  
	                    if(data.row[$(this).parent().attr('field')]!=undefined){  
	                        if($(this).attr('class').indexOf('datagrid-editable')!=-1){  
	                           /* var ed=$.data(this,"datagrid.editor");  
	                            //更新编辑框显示值(正在被编辑的值不变,否则会更新当前编辑框的值)
	                            if(ed!=undefined){  
	                                ed.actions.setValue(ed.target,data.row[$(this).parent().attr('field')]);  
	                            }else{  
	                                $(this).html(data.row[$(this).parent().attr('field')]);  
	                            }    */                                         
	                        }else{  
	                        	var field = $(this).parent().attr('field');
	                        	var trueVal = data.row[field];
	                        	var columnOption = datagrid.datagrid('getColumnOption',field);
	                        	//如果是下拉框,显示和提交的值不同的话,这里需要做特殊处理
	                        	if(columnOption.editor && columnOption.editor.type.indexOf('combo') >=0 && $.isFunction(columnOption.formatter)){
	                        		//如果有formatter函数,则利用返回值,改变下拉框的显示值
	                        		var formatterFunReturnVal = columnOption.formatter(trueVal,data.row);
	                        		$(this).html(formatterFunReturnVal);  
	                        	}else if(columnOption.editor && columnOption.editor.type.indexOf('checkbox') >=0 && $.isFunction(columnOption.formatter)){
	                        		//如果有formatter函数,则利用返回值,改变复选框的显示值
	                        		var formatterFunReturnVal = columnOption.formatter(trueVal,data.row);
	                        		$(this).html(formatterFunReturnVal);  
	                        	}else{
	                        		//更新显示值非编辑框显示值(注意这里只是显示值,而不是实际值,实际值的更新行记录会更新的,不用担心)
	                        		$(this).html(trueVal);  
	                        	}
	                        }  
	                    }  
	                });  
	            }  
	        }  
	        //更新行记录(datagrid获取行的时候实际上是从这里获取的)
	        var t = $.util.parseJquery(datagrid[0]);
	        rows = t.datagrid("getRows");
	        rows[data.index] = data.row;
	    });  
    }  
});  

 

附上完整的datagrid的单元格编辑代码,如下:

datagrid的双击编辑单元格事件:

onDblClickCell: function(rowIndex, field, value){
	var id=$(this).attr("id");
	id="#"+id;
	return onClickRow(rowIndex, field, value,id);
},

/**
 * 单击单元格修改数据之后保存调用此方法
 */
function save(rowIndex,row,changes,id){
	zdyAfterEdit(row,changes,rowIndex,id);
	var saveData=new Array();
	saveData[0]=row;
	saveData[1]=changes;
	return saveData;
}

/**
 * 单击单元格编辑之前调用此事件,用来保存原来没有修改之前的行记录
 */
var oldArray = new Array();
function zdyBeforeEdit(rowIndex,id){
	var row = $(id).datagrid('getRowData',rowIndex);
	var array={
			'displayCode':row.displayCode,
			'itemName':row.itemName,
			'unit':row.unit,
			'num':row.num,
			'price':row.price,
			'sums':row.sums,
			'remark':row.remark,
		};
	oldArray[row.id]=array;				
}

/**
 * 编辑完单元格数据之后发送url请求之前调用
 */
function zdyAfterEdit(row,changes,rowIndex,id){
    var array=oldArray [row.id];
	var t=false;
	for(var name in array)
	{
		if (array[name]!=row[name])
		{
			t=true;
			break;
		}
	}
	if (t)
	{
		if(row.id && row.id!=-1){
			data["id"] = row.id;
		}
		for (var key in row)
		{
			if (!$.isArray(row[key]) && !$.isFunction(row[key])
					&& (typeof row[key]) == "object")
			{
				continue;
			}
			data["object."+key]=row[key];
		}
		var url="./iface/modify";
		$.post(url,data,function(data){
				var obj=eval('('+data+')');
				if (obj && obj.returnCode==1)
				{
                    //后台成功返回,需要刷新当前行记录
                    updateFy(obj.data.id,obj.data);
					return;
				}
				top.$.messager.alert('错误',obj.message,'error');
		});
	}
}

/**
 * 不结束编辑刷新当前航
 */
function updateFy(id,data,row)
{
	var rowData;
	
	var rows = $('#fylb').datagrid('getRows');
	if(id){
		for(var i = 0;i<rows.length;i++){
			if(rows[i].id == id){
				rowData = rows[i];
				break;
			}
		}
	}
	
	if(!rowData)
		return;
	var rowIndex = $('#fylb').datagrid('getRowIndex', rowData);
	
	
	 $('#fylb').datagrid('updateColumnField',{index: rowIndex,row: data});
	 //updateRow会更新行记录之后会结束编辑
//	 $('#fylb').datagrid('updateRow',{index: rowIndex,row: data});
//   $('#fylb').datagrid('acceptChanges');
}

公用方法:

var clickFun = undefined;//复选框的单击事件(定额消耗页面dexh.jsp的"锁定"复选框的单击函数)
var editNumCell = undefined;
var zdyBeforeEdit = undefined;
var zdyCheckField = undefined;
var showNumValue = undefined; 
var comboboxValue = {};
var checkNumPosition = undefined;
var EditorFields = [];
var selectIndexs = {firstSelectRowIndex : 0,lastSelectRowIndex : 0};
var inputFlags = {isShiftDown : false,isCtrlDown : false,isAltDown : false};
var reloadFlag = undefined;//该标记如果为true,表示会刷新整个页面,那么按键编辑就需要放到onLoadSuccess中去执行
var clickFunFlag = undefined;//因为在写的过程中碰到了重名的函数,而这个页面被很多JSP引用,所以不好更改,这里选择给同名函数加标识
//开启编辑单元格状态
function beginEditCell(target, options) {

    var opts = $.data(target, "datagrid").options;
    var tr = opts.finder.getTr(target, options.index);
    var row = opts.finder.getRow(target, options.index);

    _initCellEditor(target, options.index, options.field);
    _outerWidthOfEditable(target);
    //$.validateRow(target, options.index);暂时先不使用,不知道该方法作用
}

function _initCellEditor(target, _index, _field) {
    var opts = $.data(target, "datagrid").options;
    var tr = opts.finder.getTr(target, _index);
    var row = opts.finder.getRow(target, _index);

    tr.children("td:visible").each(function () {
        var cell = $(this).find("div.datagrid-cell");
        var field = $(this).attr("field");
        var col = $(target).datagrid("getColumnOption", field);
        if (col && col.editor) {
        	if(col.editor.type!='checkbox'){
        		EditorFields.push(field);
        	}
        }
        if (field == _field) {//找到与传递参数相同field的单元格
            if (col && col.editor) {
                var editorType, editorOp;
                if (typeof col.editor == "string") {
                    editorType = col.editor;
                } else {
                    editorType = col.editor.type;
                    editorOp = col.editor.options;
                }
                var editor = opts.editors[editorType];
                if (editor) {
                    var html = cell.html();
                    var outerWidth = cell._outerWidth();
                    cell.addClass("datagrid-editable");
                    cell._outerWidth(outerWidth);
                    cell.html("<table border=\"0\" cellspacing=\"0\" cellpadding=\"1\"><tr><td></td></tr></table>");
                    cell.children("table").bind(
                        "click dblclick contextmenu",
                        function (e) {
                            e.stopPropagation();
                        });
                    $.data(cell[0], "datagrid.editor", {
                        actions: editor,
                        target: editor.init(cell.find("td"),
                            editorOp),
                        field: field,
                        type: editorType,
                        oldHtml: html
                    });
                }
            }

            tr.find("div.datagrid-editable").each(function () {
                var field = $(this).parent().attr("field");
                $('.datagrid-editable')[0].style['height']="auto";//设置包裹该editorde的div的样式                    
                var ed = $.data(this, "datagrid.editor");
                var edType = ed.type;
                var trueVal = row[field];
                /*if(edType.indexOf('number') >=0){
                	trueVal = trueVal*10000/10000;
                }*/
                ed.actions.setValue(ed.target, trueVal);
            });
        }
    });
}

//为可编辑的单元格设置外边框
//来自jquery.easyui.1.8.0.js的 function _4d8()方法
function _outerWidthOfEditable(target) {
    var dc = $.data(target, "datagrid").dc;
    dc.view.find("div.datagrid-editable").each(function () {
        var _this = $(this);
        var field = _this.parent().attr("field");
        var col = $(target).datagrid("getColumnOption", field);
        _this._outerWidth(col.width);
        var ed = $.data(this, "datagrid.editor");
        if (ed.actions.resize) {
            ed.actions.resize(ed.target, _this.width());
        }
    });
}

//关闭编辑单元格状态
function endEditCell(target, options) {
    var opts = $.data(target, "datagrid").options;

    var updatedRows = $.data(target, "datagrid").updatedRows;
    var insertedRows = $.data(target, "datagrid").insertedRows;

    var tr = opts.finder.getTr(target, options.index);
    var row = opts.finder.getRow(target, options.index);

//        //与beginEditCell相呼应,暂时取消
//        if (!tr.hasClass("datagrid-row-editing")) {//行不能编辑时,返回
//            return;
//        }
//        tr.removeClass("datagrid-row-editing");

    var _535 = false;
    var _536 = {};
    tr.find("div.datagrid-editable").each(function () {
    	
        var _537 = $(this).parent().attr("field");
        var ed = $.data(this, "datagrid.editor");
        var type = ed.type;
        var _538 = "";
        if(type == 'numberbox'){
        	//如果是数字框,则获取下一个隐藏的input元素
        	_538 = ed.target.next().val();
        }else if(type.indexOf('combo') >=0){
        	_538 = ed.target.combo('getValue');
        }else {
        	_538 = ed.actions.getValue(ed.target);
        }
        if (row[_537] != _538) {
            row[_537] = _538;
            _535 = true;
            _536[_537] = _538;
        }
    });
    if (_535) {
        if (_45f(insertedRows, row) == -1) {
            if (_45f(insertedRows, row) == -1) {
                updatedRows.push(row);
            }
        }
    }
    
    _destroyCellEditor(target, options);
    $(target).datagrid("refreshRow", options.index);
    //这里是主动调用onAfterEdit()中的方法,但是已经把onAfterEdit()中的内容抽取出来,如果值改变,那么onAfterEditing(rowIndex,row,changes,id)即可,所以这里不需要调用datagrid的onAfterEdit()方法
    //opts.onAfterEdit.call(target, options.index, row, _536);
}

function _45f(a, o) {
    for (var i = 0, len = a.length; i < len; i++) {
        if (a[i] == o) {
            return i;
        }
    }
    return -1;
}

//销毁单元格编辑器
function _destroyCellEditor(target, options) {

    var opts = $.data(target, "datagrid").options;
    var tr = opts.finder.getTr(target, options.index);

    tr.children("td").each(function () {
        var field = $(this).attr("field");

        if (field == options.field) {//找到与传递参数相同field的单元格

            var cell = $(this).find("div.datagrid-editable");
            if (cell.length) {
                var ed = $.data(cell[0], "datagrid.editor");
                if (ed.actions.destroy) {
                    ed.actions.destroy(ed.target);
                }
                cell.html(ed.oldHtml);
                $.removeData(cell[0], "datagrid.editor");
                cell.removeClass("datagrid-editable");
                cell.css("width", "");
            }
        }
    });
}

$.extend($.fn.datagrid.methods, {
    beginEditCell: function (target, options) {
        return target.each(function () {
            beginEditCell(this, options);
        });
    },
    endEditCell: function (target, options) {
        return target.each(function () {
            endEditCell(this, options);
        });
    }
});

/**
 * 开启单击单元格
 * rowIndex 表示行索引
 * field 表示当前被编辑的单元格的field字段
 * value 当前被编辑的单元格的初始值
 * id 表示datagrid的id值
 */
 _rowIndex = undefined;
 _field = undefined;
 _rowId=undefined;
function onClickRow(rowIndex, field, value,id) {
	EditorFields = [];
	$(':checkbox').bind("focus",function(){
		$(this).css('outline','none');
	});
	if(zdyBeforeEdit!=undefined && $.isFunction(zdyBeforeEdit)){
		zdyBeforeEdit(rowIndex,id);
	}
	var columnOption=$(id).datagrid("getColumnOption",field);
	if(columnOption && columnOption.readonly == true)
		return false;
    if ((_rowIndex != rowIndex || _field != field) || typeof(reloadFlag) != "undefined") {
    	if(reloadFlag){
    		reloadFlag = undefined;//该标记是用来标识是否按键操作放在页面加载完成(reload)之后执行,这里已经执行,所以需要把该值重新置为undefined
    	}
        if (endEditing(id)){
        	$(id).datagrid('clearSelections');
        	$(id).datagrid('clearChecked');
        	//如果是复选框,虽然勾选状态被取消了,但是复选框看起来还是勾选的,这里利用QUERY去除虚拟的勾选状态
        	$(id).parent().find("td[field=ck] input").prop('checked',false);
        	$(id).datagrid('selectRow',rowIndex);
            $(id).datagrid('beginEditCell', {index: rowIndex, field: field});
            //去除当前被编辑的单元格之外的编辑框的错误信息提示的图标
            $(".validatebox-invalid").removeClass("validatebox-invalid");
            var ed = $(id).datagrid('getEditor', {index:rowIndex,field:field});
            if(ed == null){
            	_destroyCellEditor($(id)[0],{index:rowIndex,field:field});/*必须要先销毁再点击,否则会出现一个div中有多个编辑框*/
            	onClickRow(rowIndex, EditorFields[0], value,id);
            	return false;
            }
            _field = field;
            _rowIndex = rowIndex;
            _rowId = id;
            // 去掉小数点后多余的0
           if(!isNaN($(ed.target).val()) && $(ed.target).val().length>0)
            {
            	$(ed.target).val(parseFloat($(ed.target).val()));
            }
        	
            //有时候下拉框要点击才能出来,这里写两个
//                $(ed.target).focus().select();
            $(".datagrid-editable-input").focus().select();
        	
            var row=$(id).datagrid("getRowData",rowIndex);
            if(zdyCheckField!=undefined && $.isFunction(zdyCheckField)){
            	zdyCheckField(row,field);
            	$(".datagrid-editable-input")[0].select();
            }
            var changes={};
            $(".datagrid-editable-input").blur(function(){
            	//下拉框失去焦点的时候,让其他列被后台改变的值不在发生变化(列num为3,price为5,sums为15,后台返回请求之后值变成了15,下拉框面板消失的时候值还是15,不会变成未改变之前的)
            	var refreshRow = $(id).datagrid("getRowData",rowIndex);
            	//1.拖动滚动条,那么会立即失去焦点,执行"blur"事件,此时再点击面板选项,才会进入"onHidePanel"中
            	//2.没有拖动滚动条,而是点击面板选项导致失去焦点,会先进入"blur",再进入"onHidePanel"
    			//3.如果没有拖动下拉框的滚动条,直接点击其他地方(即失去焦点),那么会先进入"onHidePanel"中,然后再执行失去焦点事件"blur"(但是在onHidePanel()方法中,已经做了销毁编辑框,那么input框已经没有了,就不会再执行所谓的失去焦点事件了,如果在onHidePanel中没有销毁编辑框,那么在隐藏面板之后,还会进入blur事件)
            	//其实下拉框可以这么做:失去焦点销毁编辑框,只有在隐藏面板的时候才销毁编辑框,保存数据
            	if(ed.type=="combobox" && typeof(zdyCheckField)!=undefined){
        			comboboxValue.id = id;
        			comboboxValue.rowIndex = rowIndex;
        			comboboxValue.field = field;
        			changes['status'] = "p";
        			comboboxValue.row = refreshRow;
        			comboboxValue.changes = changes;
        			comboboxValue.value = $(".datagrid-editable-input:eq(0)").val();
            	}else{
            		_destroyCellEditor($(id)[0],{index:rowIndex,field:field});
            		//原来的记录的值
                	var oldVal=row[field];
                	if(showNumValue!=undefined){
                		//乘以数量后的值
                		oldVal = showNumValue;
                	}
                	var newVal=this.value;
                	if(oldVal!=newVal){//值有改变
                		changes[field]=newVal;
                		//此时值已经有刷新
                		//根据失去焦点后该列改变后的值再刷新行
                		refreshRow[field] = newVal;
                		//后台返回的值有可能会改变该row的其他的值,而不仅仅是改变field这个值(像改变num,同时会改变sums),所有这里不使用row,而使用即时查找的refreshRow了
//                		row[field]=newVal;
                		changes["status"]="P";
                		onAfterEditing(rowIndex,refreshRow,changes,id);
                	}
                	_rowIndex = undefined;
                	_field = undefined;
                	_rowId = undefined;
            	}
            });
            var rows=$(id).datagrid("getRows");
            //$(ed.target).unbind("keydown").bind('keydown', function(){}这个是下拉选框的键盘事件,所以上下方向键默认是下拉面板的上下记录
            $(".datagrid-editable-input").unbind('keydown').bind('keydown', function()//这个是input框,而不会是下拉面板
            {
//            	
            	stopBubble(); 
            	var keyCode = window.event.keyCode;
            	if(keyCode==13||keyCode==37||keyCode==38||keyCode==39||keyCode==40){
            			switch (keyCode) {
            			case 13:/*enter*/
            				
            				$(this).blur();
            				endEditing(id);
            				event.returnValue=false; 
            				if(typeof(eprjType) != 'undefined' && eprjType ==3){
                        		//新增单价工程禁止键盘操作
                        		return false;
                        	}
            				if(rowIndex<rows.length-1){
            					
            					if(typeof(checkNumPosition)!=undefined && $.isFunction(checkNumPosition)){
            						//如果为true,表示需要跳到num这个field的表格
            						var a = checkNumPosition(field);
            						if(a){
            							if(editNumCell!=undefined && $.isFunction(editNumCell) && field!="num"){
            								editNumCell(rowIndex,value,id);
            							}
            						}else{
            							if(typeof(reloadFlag) == "undefined"){
                            				onClickRow(rowIndex+1,field,value,id);
                        				}else{
                        					_rowIndex = rowIndex+1;
                                    		_field = field;
                                    		_rowId= id;
                        				}
            							
            						}
            					}else{
            						if(typeof(reloadFlag) == "undefined"){
                        				onClickRow(rowIndex+1,field,value,id);
                    				}else{
                    					_rowIndex = rowIndex+1;
                                		_field = field;
                                		_rowId= id;
                    				}
            					}
            				}else{
            					$(id).parents('.datagrid-view').find(":checkbox").focus();
            					//这个$('a:eq(0)')为"增加"按钮
//            					$('a:eq(0)').focus();
            				}
            				break;
            			case 37:/* Left  ←*/
            				
            				$(this).blur();
            				//停止正在被编辑的表格
            				endEditing(id);
            				//禁止默认键盘事件
            				event.returnValue=false; 
            				if(typeof(eprjType) != 'undefined' && eprjType ==3){
                        		//新增单价工程禁止键盘操作
                        		return false;
                        	}
            				if(field!=EditorFields[0]){
            					
            					//找到该editor并获取焦点
            					var prevfiled = getOtherEditField(field,-1);
            					onClickRow(rowIndex,prevfiled,value,id);    					
            				}
            				break;
            			case 38:/* up  ←*/
            				
            				$(this).blur();
            				endEditing(id);
            				event.returnValue=false; 
            				if(typeof(eprjType) != 'undefined' && eprjType ==3){
                        		//新增单价工程禁止键盘操作
                        		return false;
                        	}
            				if(typeof(reloadFlag) == "undefined"){
            					
            					if(rowIndex>0){
                					onClickRow(rowIndex-1,field,value,id);
                				}else{
                					$(id).parents('.datagrid-view').find(":checkbox").focus();
                				}
            				}else{
            					_rowIndex = rowIndex-1;
                        		_field = field;
                        		_rowId= id;
            				}
            				break;
            			case 39:/* right  ←*/
            				
            				$(this).blur();
            				endEditing(id);
            				event.returnValue=false; 
            				if(typeof(eprjType) != 'undefined' && eprjType ==3){
                        		//新增单价工程禁止键盘操作
                        		return false;
                        	}
            				if(field!=EditorFields[EditorFields.length-1]){
            					
            					//setTimeout(function(){},100);//这里不需要阻断,因为此时该段代码需要放在save()之前执行
            					var nextfield = getOtherEditField(field,1);
            					onClickRow(rowIndex,nextfield,value,id);
            				}
            				break;
            			case 40:/*Down ↓*/
            				
            				$(this).blur();
            				endEditing(id);
            				event.returnValue=false; 
            				if(typeof(eprjType) != 'undefined' && eprjType ==3){
                        		//新增单价工程禁止键盘操作
                        		return false;
                        	}
            				if(typeof(reloadFlag) == "undefined"){
            					
            					if(rowIndex<rows.length-1){
            						onClickRow(rowIndex+1,field,value,id);
            					}else{
            						$(id).parents('.datagrid-view').find(":checkbox").focus();
            					}
            				}else{
            					_rowIndex = rowIndex+1;
                        		_field = field;
                        		_rowId= id;
            				}
            				break;
            			}
            	};
            	if(keyCode == 27){/*esc */
            		_destroyCellEditor($(id)[0],{index:rowIndex,field:field,});
            		_rowIndex = undefined;
            		_field = undefined;
            		_rowId=undefined;
            	};
            });
        };
    }
    return true;
} 

function endEditing(id) {
    if (_rowIndex == undefined || _field == undefined || id == undefined) {
    	comboboxValue = {};
        return true;
    }

    $(id).datagrid('endEditCell', {index: _rowIndex, field: _field});
    _rowIndex = undefined;
    _field = undefined;
    _rowId = undefined;
    comboboxValue = {};
    return true;
}

function afterEdit(rowIndex, rowData, changes,id){
	//如果没有新增项,该代码可以不写(更新的时候去掉数字后面多余的0)
	for(var key in rowData){
		if (!$.isArray(rowData[key]) && !$.isFunction(rowData[key])
				&& (typeof rowData[key]) == "object")
		{
			continue;
		}
		var value = rowData[key];
		if(value && !isNaN(value)){
			value = value*100000/100000;
			rowData[key] = value;
		}
	}
    $(id).datagrid('updateRow',{
        index: rowIndex,
        row: rowData
    });
    $(id).datagrid('acceptChanges');
    //重名函数加判断
    if(!clickFunFlag){
    	if(clickFun && $.isFunction(clickFun)){
    		clickFun();
    	}
    }
}
function onAfterEditing(rowIndex,row,changes,id){
	var saveData=save(rowIndex,row,changes,id);
	row=saveData[0];
	changes=saveData[1];
	
	afterEdit(rowIndex,row,changes,id);
}

 

转载于:https://my.oschina.net/u/2331760/blog/1036508

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值