isInvestChange:function(event,ui){
debugger;
var value= ui.current;
if(value=="1"){
$("#investmentType").wafValidator("option","rules","required:true");//增加必填控制
}else{
$("#investmentType").wafValidator("option","rules","required:false"); //去掉必填控制
$("#labelinvestmentType_label").find('span.inner-label').removeClass("require"); //去掉必填星号
}
}var entryCount = waf("#entry").wafGrid('getRowCount');
//从所有数据中筛选用户选择的数据
for (var i = 1; i <= entryCount; i++) {
var rowId = $("#entry").wafGrid('getRowId', i);
var rowdata = waf('#entry').wafGrid('getRowRealData', rowId);
//分录得到行
var rowText = $("#entry").wafGrid('getRowIndex', rowId);
rowdata.dynprop16 = money; //p金额
waf("#entry").wafGrid("setRowData" , rowId,rowdata);//分录赋值
waf.msgBox.showInfo("合计结束,请核对数据!"); */
//清空分录
varret = waf("#entry").wafGrid("clearGridData",true);$("#editgrid").wafGrid("setRowData", rowid, data.row);//现代表变化 清空分录
varret = waf("#entrys").wafGrid("clearGridData",true);//审计通知书 被审计单位监听 过滤显示该组织下的通知人员 wafPromptSpecial_Person wafPromptStandard
auditeeChange:function(event,value){
// waf("#noticePerson").wafPromptSpecial_Person("option" ,"filteritem" ,"ADMINORGUNIT.ID='333333'");
var filter = waf.parseSql.getFilter("CU.id", "=", value.current.cU.id)
// waf("#noticePerson").wafPromptSpecial_Person("option", "filteritem", filter); //左树右表 F7 标准 树列表无法自动过滤
waf("#noticePerson").wafPromptStandard("option", "filteritem", filter); // 序时簿
},// 分录项目F7 的过滤实现 (项目审核状态 且是 股权投资类型) 正式环境 股权投资类型 id要 改
beforeEditRow:function(rowid,cellname,value,iRow,iCol,rowdata){
var a = waf.parseSql.getFilter("investmentType.id", "=", "N5cAAAAAMs2g6U9T")
var b = waf.parseSql.getFilter("ProjectBasis.billStatus", "=", 3);
var filter= waf.parseSql.mergeFilter([a,b],"and")
waf('#entrys').wafGrid('setCellEditorAllConfig', "projectName","filteritem",filter,"promptGrid",null);
}//审计机构变换 过滤审计人员
auditInsitutionChange:function(event,value){
waf.doPost({
action:"AuditProjectLaunch",
data: {
_method: "personFilter",
auditInsitution:waf.toJSONString(value.current)
},
success: function (data) {
var ids= data.idsStr.split(",");
var filter=waf.parseSql.getFilter("sourceEntryId", "in", ids);
waf("#auditPerson").wafPromptStandard("option", "filteritem", filter);
} ,error:function (data) {
_self.showWarning(data);
}
});
}StringBuffer ids = new StringBuffer();
for (int i = 0; i < parseArray.size(); i++) {
JSONObject jsonObject = parseArray.getJSONObject(i);
JSONArray entrys = jsonObject.getJSONArray("entrys");
for (int j = 0; j < entrys.size(); j++) {
String id = entrys.getJSONObject(j).getString("id").toString();
// ids.append("'");
ids.append(id).append(",");
// ids.append(id).append("'").append(",");
}
}
HashMap map= new HashMap();
String idsStr= ids.substring(0, ids.length()-1) ;
map.put("idsStr", idsStr);
JSONUtils.SUCCESS(map); // 返回所选择的中介机构 分录中的id , 审计人员单据 中 有审计机构分录的id//分录批量更新按钮
entryUpdate:function(e){
//得到选择的rowid
var selectedIds = waf("#entrys").wafGrid("getSelectedRows");
//从所有数据中筛选用户选择的数据
for(var i = 0; i < selectedIds.length; i++){
var rowdata = waf('#entrys').wafGrid('getRowRealData', selectedIds[i]);
}
}
});//@endPrivate//得到选择的rowid
var selectedIds = waf("#entrys").wafGrid("getSelectedRows");
//从所有数据中筛选用户选择的数据
for(var i = 0; i < selectedIds.length; i++){
var rowdata = waf('#entrys').wafGrid('getRowRealData', selectedIds[i]);
//分录得到行
var rowText = $("#entrys").wafGrid('getRowIndex', selectedIds[i]);
//行id
var rowid=selectedIds[i];
}
waf("#entrys").wafGrid("setCell", rowid, "dynProp05", resultStr);afterSaveCell1:function(rowid,cellname,value,iRow,Col,oldValue){
//if(cellname=="moneyyuan"){
waf("#editGrid0").wafGrid('calcFooterData');//刷新后面的合计
//第一个分录 得到
var footData0 = waf("#editGrid0").wafGrid('getFooterData');
var json0 = waf.toJSONString(footData0) ;
var json02 = eval("("+json0+")");
var sjbg=json02.sjbg;//包干金额
var sjMoney=json02.sjMoney;//实际金额
var pjMoney=json02.pjMoney;//票据金额
//计算税额
//得到票据类型中的税率
//var rate=waf("#biiType").wafPromptBox("getValue");
var rate = $("#editGrid0").wafGrid("getCell",rowid,'biiType').rate;
//计算税额
$("#editGrid0").wafGrid("setCell",rowid,'rateMoney',pjMoney*rate);
//alert(waf.toJSON(rate));
var dpFy=json02.dpFy;//订票费用
//第二个分录 得到
waf("#editGrid1").wafGrid('calcFooterData');//刷新后面的合计
var footData1 = waf("#editGrid1").wafGrid('getFooterData');
var json1 = waf.toJSONString(footData1) ;
var json12 = eval("("+json1+")");
var cbCost=json12.cbCost;//实际费用
//两个分录的合计数据相加
var sumMoney=sjbg+sjMoney+pjMoney+dpFy+cbCost;
var ccwcm=waf("#ccwcm").wafNumberField("getValue"); //餐补
var shjtMoney=waf("#shjtMoney").wafNumberField("getValue"); //交通补
sumMoney=sumMoney+shjtMoney+ccwcm;
waf("#sumMoney").wafNumberField("setValue",sumMoney);
// }
}var BillStatus= waf("#billstatus").wafSelect("getValue");
if(BillStatus!="APPROVED"){
waf("#entrys").wafGrid("hideColumn","pzz",true);rejected:function(e){
var selectId=waf("#queryGrid").wafGrid("getCell",waf("#queryGrid").wafGrid("getSelectedRows"),"id");
if(selectId==undefined || selectId.length<=0){
_self.showWarning("请选择一条记录");//"请选中一行后再进行操作!"
return ;
}
waf.doPost({
action:"unAuditService",
data:{
_method: "medicalActivities_rejected",
billId:selectId
},
success:function(data){
waf("#queryGrid").dataGrid("reloadGrid");
}
});
},//得到选择的rowid
var selectedIds = waf("#entrys").wafGrid("getSelectedRows");
//从所有数据中筛选用户选择的数据
for(var i = 0; i < selectedIds.length; i++){
var rowdata = waf('#entrys').wafGrid('getRowRealData', selectedIds[i]); //isAppend
if(rowdata.isAppend!=""&&null!=rowdata.isAppend){
_self.showWarning("选中的数据含有"+rowdata.isAppend+"数据,不允许删除!");
return false;
}
}分录中的change事件才能用
var entryCount = waf("#entrys").wafGrid('getRowCount');
var rowdata = waf('#entrys').wafGrid('getRowRealData', rowid);
//修改的这行 如果在本表内重复
//修改的这行 如果在本表内重复
for (var i = 1; i <= entryCount; i++) {
var rowId = $("#entrys").wafGrid('getRowId', i);
var entryIdValue = waf("#entrys").wafGrid('getCell', rowId, 'txt1') != "" ? waf("#entrys").wafGrid('getCell', rowId, 'txt1').trim() : "";
if (i != rowText) {
if (idValue == entryIdValue) {
flag = true;
rowGet = i;
break;
}
}
}var entryCount = waf("#entrys").wafGrid('getRowCount');
//从所有数据中筛选用户选择的数据
for (var i = 0; i < entryCount; i++) {
//得到选择的rowid
var rowid = _self.getCurrentModel().entrys[i].id;
var rowdata = waf('#entrys').wafGrid('getRowRealData', rowid);
//分录得到行
var rowText = $("#entrys").wafGrid('getRowIndex', rowid);
// 客户
CustomerId = rowdata.dynProp03.id;
// 产品
MaterialId = rowdata.dynProp07.id;
// 提成比例
var proStr = rowdata.dynProp24;
// 单位P
var pStr = rowdata.dynProp23;
// 【P单位】和【提成比例】两个字段要么都要填,要么都不填,不可只填写一个字段。
if((""==proStr&&pStr!="")||""!=proStr&&pStr==""){
_self.showWarning("第" + rowText+ "行, 【单位P】和【提成比例】两个字段要么都要填,要么都不填,不可只填写一个字段 !");
return;
}//location.reload();
_self.fireEvent("fieldOnStoreEvent");
var model=_self.getCurrentModel();
waf.doPost({
action: "targetterminal",
data: {
_method: "newDbChange",
basedataDept: basedataDept,
basedata: value.current.id,
model:waf.toJSONString(model)
},
success: function (data) {
console.log("新代表变化返回数据---分录关联医院过滤------------");
console.log(data);
//分录关联医院过滤
waf('#entrys').wafGrid('setCellEditorAllConfig', "relateHospital", "filteritem", " " + data.Fbasedata8 + "", "promptGrid", null);
var special = data.resultMap.special;
if (special != undefined && special.length > 0) {
//返回拼接信息
waf.msgBox.showConfirm({
title: "信息提示?",
summaryMsg: "有归集客户备案的,药店/医院目标终端是否携带?",
buttonType: "yes-no",
buttonCallBack: [function () {
//点击是
if (special != undefined && special.length > 0) {
for (var i = 0; i < special.length; i++) {
waf("#entrys").wafGrid('addRow', { data: special[i] });
}
}
}, function () {
}]
});
}
/* var special = data.resultMap.special;
if (special != undefined && special.length > 0) {
for (var i = 0; i < special.length; i++) {
waf("#entrys").wafGrid('addRow', { data: special[i] });
}
} */
}
});

Context ctx = WafContext.getInstance().getContext();
ModelMap modelMap = event.getReqeustContext().get(ModelMap.class);
RentFileInfo rentFileInfo = (RentFileInfo) modelMap.get("model");
/**点击问题清单编码 */
viewIssueInfo:function(e){
var page = _self;
var rowdata = waf('#grid').wafGrid('getRowRealData', e);
var option = {}
// option.url = _self.getDynamicContextPath()+'?method=doEvent&billId='+waf.encodeURIComponent(rowdata.id);
// option.url +='&uipk=com.kingdee.eas.custom.auditmodule.auditrectificatmanage.CAuditIssueListList';
// option.url += '&action=view';
// option.url += '&viewuipk=com.kingdee.eas.custom.auditmodule.auditrectificatmanage.CAuditIssueListEdit'
// option.close=function(event,ui){
// //_self._pageInitByModelLoad(waf.encodeURIComponent(rowdata.id),"VIEW");
// }
option.url = "/myweb/dynamicPage.do?method=doEvent&action=view&uipk=com.kingdee.eas.custom.auditmodule.auditrectificatmanage.CAuditIssueListList&billId="+waf.encodeURIComponent(rowdata.id)+"&viewuipk=com.kingdee.eas.custom.auditmodule.auditrectificatmanage.CAuditIssueListEdit&edituipk=com.kingdee.eas.custom.auditmodule.auditrectificatmanage.CAuditIssueListEdit&queryPK=com.kingdee.eas.custom.auditmodule.auditrectificatmanage.app.AuditIssueListQuery&queryUuid=1974c017-4b49-49f6-ac8b-599a6a76a0ec&sequenceNo=1&billTotal=3"
option.close = option && option.close ? option.close : function () {
page.getGrid().dataGrid("reloadGridWithState");
};
page.addNewWindow(option);
}
,
/**点击新增问题清单按钮 */
addissue:function(event,value){
var option = {}
option.url = "/myweb/dynamicPage.do?method=doEvent&action=addNew&uipk=com.kingdee.eas.custom.auditmodule.auditrectificatmanage.CAuditIssueListList&edituipk=com.kingdee.eas.custom.auditmodule.auditrectificatmanage.CAuditIssueListEdit";
_self.addNewWindow(option);
// var url="http://localhost:56898/myweb/dynamicList.do?event=initialize&method=doEvent&uipk=com.kingdee.eas.custom.auditmodule.auditrectificatmanage.CAuditIssueListEdit&inwafpage=true&debug=true";
// window.open(url);
}var submitBoolean = waf("#form").wafFormValidator("validateForm");
if (submitBoolean == false) {
return;
}webYearChange:function(oldValue,newValue){
var year=newValue.current;
var strTime=newValue.current+"-01"+"-01";
var date= new Date(Date.parse(strTime.replace(/-/g, "/"))); //转换成Data();
waf("#year").wafDatePicker("setValue",date);
}
pageOpenAfter:function(e){
var date=waf("#year").wafDatePicker("getValue");
var d = new Date(date);
var yearStr=d.getFullYear()
waf("#webYear").wafYear("setValue",yearStr);
}

// 输入具体项目地址经纬度 得到具体地址 ,街道经纬度,街道地址
locationChange:function(event,ui){
var jsonData={ "location":ui.current}
$.ajax({
type:"POST",
url: "http://42351e50i8.oicp.vip/citylife/baseInfo/GetjwdFromlocation",
dataType:"JSON",
data: JSON.stringify(jsonData), // waf.toJSONString(jsonData),
contentType: "application/json; charset=utf-8",
success: function (data) {
console.log(data);
waf("#address").wafText("setValue",data.formatted_address);
waf("#streetName").wafText("setValue",data.township);
waf("#street").wafText("setValue",data.township_jwd);
}, error: function (data) {
_self.showWarning(data);
}
});
}/**
* 根据具体地址经纬度,得到 具体地址 和 街道名称 街道经纬度
*
* @return
*/
@RequestMapping("/GetjwdFromlocation")
public String regeo( @RequestBody String json ) {
// Map<String,String[]> map= request.getParameterMap();
// String location ="";
// for (Map.Entry<String, String[]> entry : map.entrySet()) {
// String k = entry.getKey();
// if (k.contains("location")) {
// location = k.trim();
// continue;
// }
// }
String key = " XXXXXXXXXXX";
JSONObject locationobject = JSONObject.parseObject(json);
String location=locationobject.getString("location");
String url="https://restapi.amap.com/v3/geocode/regeo?key="+key+"&location="+location+"" ;
if(StringUtils.isEmpty(location)){
return null;
}
String sendGet = executeGet(url);
JSONObject parseObject = JSON.parseObject(sendGet);
if(parseObject.containsKey("regeocode")) {
JSONObject addressComponent = parseObject.getJSONObject("regeocode").getJSONObject("addressComponent");
String township = addressComponent.getString("township"); //街道地址
//获取街道经纬度
String city = addressComponent.getString("city");//城市
String district = addressComponent.getString("district");//区域
String townshipinfo=city+district+township;
String township_jwd = getLongitudeAndLatitude ( townshipinfo);
String formatted_address =parseObject.getJSONObject("regeocode").getString("formatted_address"); //具体地址
JSONObject jsonObject = new JSONObject();
jsonObject.put("township", township);
jsonObject.put("township_jwd", township_jwd);
jsonObject.put("formatted_address", formatted_address);
return jsonObject.toJSONString() ;
}
return null;
}pageOpenAfter:function(e){
$("#iframe").css("height",$("body").height());
setInterval( function(){$("#iframe").css("height",$("body").height());},500); //定时器 半秒执行一次
}afterSaveRow: function (rowid, cellname, value, iRow, Col, oldValue) {
if (cellname == "rentContract") {
// 循环获取单据分录已有的缴费分录id
var entryIds="";
var entryCount = waf("#editgrid").wafGrid('getRowCount');
for (var i = 1; i <= entryCount; i++) {
var rowId = $("#editgrid").wafGrid('getRowId', i);
var rowdata = waf('#editgrid').wafGrid('getRowRealData', rowId)
entryIds=entryIds+(rowdata.entryId)+(",");
}
entryIds= entryIds.substring(0, entryIds.length-1) ;
var entryIdsz=entryIds.split(",");
//选择合同对缴款单分录过滤
var a = waf.parseSql.getFilter("rentContract.id", "=", value.id);
var b = waf.parseSql.getFilter("debt", ">", 0); //欠收金额>0
var c = waf.parseSql.getFilter("parent.statu", "=", 2); //应收单状态为审核
var d = waf.parseSql.getFilter("id", "not in", entryIdsz); //过滤掉本单已选择的应收账单分录的id
var filter = waf.parseSql.mergeFilter([a, b, c, d], "and")
waf("#editgrid").wafGrid('setCellEditorAllConfig', "receiveBillEntrys", "filteritem", filter, "promptGrid", null);
//选择合同后带出项目
waf("#editgrid").wafGrid("setCell", rowid, "project", value.project);//项目
//选择合同后,清空费用类型,缴款单分录,起始日期,结束日期,应交金额,意向交款金额,应交日期,欠收金额,合同缴费账单分录id
waf("#editgrid").wafGrid("setCell", rowid, "receiveBillEntrys", null);//费用类型
waf("#editgrid").wafGrid("setCell", rowid, "paymentType", null);//费用类型
waf("#editgrid").wafGrid("setCell", rowid, "beginDate", null);//起始日期
waf("#editgrid").wafGrid("setCell", rowid, "endDate", null);//结束日期
waf("#editgrid").wafGrid("setCell", rowid, "amt", null);//应交金额
waf("#editgrid").wafGrid("setCell", rowid, "purposeAmt", null);//意向交款金额默认等于应交金额
waf("#editgrid").wafGrid("setCell", rowid, "paymentDate", null);//应交日期
waf("#editgrid").wafGrid("setCell", rowid, "debt", null);//欠收金额
waf("#editgrid").wafGrid("setCell", rowid, "entryId", null);// 合同缴费账单分录id
}
if (cellname == "receiveBillEntrys") {
var rentContract = $("#editgrid").wafGrid("getCell", rowid, "rentContract");
var bizDate = _private.fermitTime(waf("#bizDate").wafDatePicker("getValue"));
var project = $("#editgrid").wafGrid("getCell", rowid, "project");
//带出 费用类型、起始日期,结束日期,应交金额,应交日期,欠收金额
// 排序
function compare(property) {
return function (a, b) {
var value1 = a[property];
var value2 = b[property];
return value1 - value2;
}
}
value.sort(compare("seq"))
waf("#editgrid").wafGrid("setCell", rowid, "receiveBillEntrys", null);
waf("#editgrid").wafGrid("setCell", rowid, "realDate", bizDate);
waf("#editgrid").wafGrid("setCell", rowid, "receiveBillEntrys", value[0]);
waf("#editgrid").wafGrid("setCell", rowid, "paymentType", value[0].paymentType);//费用类型
waf("#editgrid").wafGrid("setCell", rowid, "beginDate", value[0].beginDate);//起始日期
waf("#editgrid").wafGrid("setCell", rowid, "endDate", value[0].endDate);//结束日期
waf("#editgrid").wafGrid("setCell", rowid, "amt", value[0].debt);//应交金额 -------实际上 是要交的欠收金额
waf("#editgrid").wafGrid("setCell", rowid, "purposeAmt", value[0].debt);//意向交款金额默认等于欠收金额
waf("#editgrid").wafGrid("setCell", rowid, "paymentDate", value[0].paymentDate);//应交日期
waf("#editgrid").wafGrid("setCell", rowid, "debt", value[0].debt);//欠收金额
waf("#editgrid").wafGrid("setCell", rowid, "entryId", value[0].id);// 合同缴费账单分录id
// waf("#editgrid").wafGrid("setCell", rowid, "source", value.id);//默认pc端
for (var i = 1; i < value.length; i++) {
var datarow = { rentContract: rentContract, project: project, receiveBillEntrys: value[i], paymentType: value[i].paymentType, beginDate: value[i].beginDate, endDate: value[i].endDate, amt: value[i].debt, purposeAmt: value[i].debt, paymentDate: value[i].paymentDate, debt: value[i].debt, entryId: value[i].id, realDate: bizDate };
var su = $("#editgrid").wafGrid('addRow', { data: datarow });
//waf("#editgrid").wafGrid("lockCell",_self.getCurrentModel().entrys[i].id,"amt");
}
}
if (cellname == "actAmt") { //实收金额
var entryCount = waf("#editgrid").wafGrid('getRowCount');
var sumActAmt = 0; //实收总金额
var sumDebt = 0; //欠收总金额
var sumAmt = 0; //应收总金额
for (var i = 1; i <= entryCount; i++) {
//得到选择的rowid
var rowId = waf("#editgrid").wafGrid("getRowId", i);
var rowdata = waf('#entry').wafGrid('getRowRealData', rowId);
// var rowdata = waf("#editgrid").wafGrid('getRowRealData', _self.getCurrentModel().entrys[i].id);
var rowText = $("#entry").wafGrid('getRowIndex', rowId);
sumActAmt = sumActAmt + rowdata.actAmt;
sumDebt = sumDebt + rowdata.debt;
sumAmt = sumAmt + rowdata.amt;
}
var rowdata = waf('#editgrid').wafGrid('getRowRealData', rowid);
var thisRowdebt = $("#editgrid").wafGrid("getCell", rowid, "debt");
var thisRowactAmt = $("#editgrid").wafGrid("getCell", rowid, "actAmt");
var thisRowamt = $("#editgrid").wafGrid("getCell", rowid, "amt"); // 应交金额
if (sumActAmt > sumAmt) {
// var summary ="实收总金额大于已选应收单总应收金额,请核对数据!";
// _self.showError( summary , summary , "警告" )
}
if (thisRowactAmt >= thisRowamt) { //本行实收金额>本行应收金额
debugger;
var thisrowdata = waf('#editgrid').wafGrid('getRowRealData', rowid);
var thisrowText = $("#editgrid").wafGrid('getRowIndex', rowid);
if (rowdata.actAmt >= rowdata.amt) {
waf("#editgrid").wafGrid("setCell", rowid, "debt", 0);
waf("#editgrid").wafGrid("setCell", rowid, "actAmt", rowdata.amt);
waf("#editgrid").wafGrid("setCell", rowid, "purposeAmt", rowdata.amt);
var subAmt = thisRowactAmt - thisRowamt;
for (var j = thisrowText + 1; j <= entryCount; j++) {
var rowdata = waf('#editgrid').wafGrid('getRowRealData', waf("#editgrid").wafGrid("getRowId", j));
if (subAmt >= rowdata.amt) {
waf("#editgrid").wafGrid("setCell", waf("#editgrid").wafGrid("getRowId", j), "debt", 0);
waf("#editgrid").wafGrid("setCell", waf("#editgrid").wafGrid("getRowId", j), "actAmt", rowdata.amt);
waf("#editgrid").wafGrid("setCell", waf("#editgrid").wafGrid("getRowId", j), "purposeAmt", rowdata.amt);
subAmt = subAmt - rowdata.amt;
} else {
var subDebt = rowdata.amt - subAmt;
waf("#editgrid").wafGrid("setCell", waf("#editgrid").wafGrid("getRowId", j), "actAmt", subAmt);
waf("#editgrid").wafGrid("setCell", waf("#editgrid").wafGrid("getRowId", j), "purposeAmt", subAmt);
waf("#editgrid").wafGrid("setCell", waf("#editgrid").wafGrid("getRowId", j), "debt", subDebt);
break;
}
}
}
} else {
var actAmt = waf("#editgrid").wafGrid("getCell", rowid, "actAmt");
var amt = waf("#editgrid").wafGrid("getCell", rowid, "amt");
var subDebt = amt - actAmt;
waf("#editgrid").wafGrid("setCell", rowid, "debt", subDebt);
waf("#editgrid").wafGrid("setCell", rowid, "purposeAmt", actAmt);
}
//配置中勾选自动合计就ok
// var footData = waf("#editGrid").wafGrid('getFooterData');
// var json = waf.toJSONString(footData) ;
// var json2 = eval("("+json+")");
// waf("#sumAmt").wafNumberField("setValue",amt);
// waf("#sumActAmt").wafNumberField("setValue",actAmt);
// waf("#sumdDebt").wafNumberField("setValue",debt);
/*
for (var h = 0; h < entryCount; h++) {
//得到选择的rowid
var rowdata = waf('#editgrid').wafGrid('getRowRealData', _self.getCurrentModel().entrys[h].id);
var debt= rowdata.debt;
if(debt==0){
waf("#editgrid").wafGrid("setCell", _self.getCurrentModel().entrys[h].id, "settlementState",2); // 0 未结清, 2 已结清
}else{
waf("#editgrid").wafGrid("setCell", _self.getCurrentModel().entrys[h].id, "settlementState",0);
}
}
*/
}
}我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当
Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/
我已经在Sinatra上创建了应用程序,它代表了一个简单的API。我想在生产和开发上进行部署。我想在部署时选择,是开发还是生产,一些方法的逻辑应该改变,这取决于部署类型。是否有任何想法,如何完成以及解决此问题的一些示例。例子:我有代码get'/api/test'doreturn"Itisdev"end但是在部署到生产环境之后我想在运行/api/test之后看到ItisPROD如何实现? 最佳答案 根据SinatraDocumentation:EnvironmentscanbesetthroughtheRACK_ENVenvironm
我有两个Rails模型,即Invoice和Invoice_details。一个Invoice_details属于Invoice,一个Invoice有多个Invoice_details。我无法使用accepts_nested_attributes_forinInvoice通过Invoice模型保存Invoice_details。我收到以下错误:(0.2ms)BEGIN(0.2ms)ROLLBACKCompleted422UnprocessableEntityin25ms(ActiveRecord:4.0ms)ActiveRecord::RecordInvalid(Validationfa
我们的git存储库中目前有一个Gemfile。但是,有一个gem我只在我的环境中本地使用(我的团队不使用它)。为了使用它,我必须将它添加到我们的Gemfile中,但每次我checkout到我们的master/dev主分支时,由于与跟踪的gemfile冲突,我必须删除它。我想要的是类似Gemfile.local的东西,它将继承从Gemfile导入的gems,但也允许在那里导入新的gems以供使用只有我的机器。此文件将在.gitignore中被忽略。这可能吗? 最佳答案 设置BUNDLE_GEMFILE环境变量:BUNDLE_GEMFI
这似乎非常适得其反,因为太多的gem会在window上破裂。我一直在处理很多mysql和ruby-mysqlgem问题(gem本身发生段错误,一个名为UnixSocket的类显然在Windows机器上不能正常工作,等等)。我只是在浪费时间吗?我应该转向不同的脚本语言吗? 最佳答案 我在Windows上使用Ruby的经验很少,但是当我开始使用Ruby时,我是在Windows上,我的总体印象是它不是Windows原生系统。因此,在主要使用Windows多年之后,开始使用Ruby促使我切换回原来的系统Unix,这次是Linux。Rub
我正在玩HTML5视频并且在ERB中有以下片段:mp4视频从在我的开发环境中运行的服务器很好地流式传输到chrome。然而firefox显示带有海报图像的视频播放器,但带有一个大X。问题似乎是mongrel不确定ogv扩展的mime类型,并且只返回text/plain,如curl所示:$curl-Ihttp://0.0.0.0:3000/pr6.ogvHTTP/1.1200OKConnection:closeDate:Mon,19Apr201012:33:50GMTLast-Modified:Sun,18Apr201012:46:07GMTContent-Type:text/plain
无论您是想搭建桌面端、WEB端或者移动端APP应用,HOOPSPlatform组件都可以为您提供弹性的3D集成架构,同时,由工业领域3D技术专家组成的HOOPS技术团队也能为您提供技术支持服务。如果您的客户期望有一种在多个平台(桌面/WEB/APP,而且某些客户端是“瘦”客户端)快速、方便地将数据接入到3D应用系统的解决方案,并且当访问数据时,在各个平台上的性能和用户体验保持一致,HOOPSPlatform将帮助您完成。利用HOOPSPlatform,您可以开发在任何环境下的3D基础应用架构。HOOPSPlatform可以帮您打造3D创新型产品,HOOPSSDK包含的技术有:快速且准确的CAD
在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList()Obt
@作者:SYFStrive @博客首页:HomePage📜:微信小程序📌:个人社区(欢迎大佬们加入)👉:社区链接🔗📌:觉得文章不错可以点点关注👉:专栏连接🔗💃:感谢支持,学累了可以先看小段由小胖给大家带来的街舞👉微信小程序(🔥)目录自定义组件-behaviors 1、什么是behaviors 2、behaviors的工作方式 3、创建behavior 4、导入并使用behavior 5、behavior中所有可用的节点 6、同名字段的覆盖和组合规则总结最后自定义组件-behaviors 1、什么是behaviorsbehaviors是小程序中,用于实现