From 1541c01e663ee8ed906b29ef08d5d7bcd7241904 Mon Sep 17 00:00:00 2001 From: dengyu Date: Tue, 19 Nov 2024 10:40:28 +0800 Subject: [PATCH 1/2] =?UTF-8?q?20241119=20=E8=BF=90=E4=BB=B7=E7=AE=A1?= =?UTF-8?q?=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MsCrmPriceCarrierController.cs | 380 ++++++++++-------- DSWeb/Areas/MvcShipping/Helper/ExcelHelper.cs | 12 +- .../Viewsjs/MsCrmPriceCarrier/CrmPriceList.js | 22 +- .../MsCrmPriceCarrierIndex.js | 145 ++++++- .../MsCrmPriceCarrierListIndex.js | 241 ++++++++--- .../Viewsjs/MsPrice/MsPriceModel.js | 9 +- DSWeb/download/运价模板.xls | Bin 14336 -> 20480 bytes 7 files changed, 554 insertions(+), 255 deletions(-) diff --git a/DSWeb/Areas/MvcShipping/Controllers/MsCrmPriceCarrierController.cs b/DSWeb/Areas/MvcShipping/Controllers/MsCrmPriceCarrierController.cs index 5cb48cf8..695566a3 100644 --- a/DSWeb/Areas/MvcShipping/Controllers/MsCrmPriceCarrierController.cs +++ b/DSWeb/Areas/MvcShipping/Controllers/MsCrmPriceCarrierController.cs @@ -88,7 +88,7 @@ namespace DSWeb.MvcShipping.Controllers #endregion - #region 引入 EXCEL + #region 运价管理 运价维护 导入excel 引入 EXCEL [HttpPost] public ContentResult onImportClick() { @@ -170,216 +170,242 @@ namespace DSWeb.MvcShipping.Controllers - if(table.Rows.Count>0) + if(table.Rows.Count>0) + { + iheadList = table.Rows.Count; //执行条数 + + #region 获取动态 集装箱列名 + List ctnList = MsCrmPriceCarrierDAL.GetCtn(); + string sXG = ""; + string sDG = ""; + string sCG = ""; + string sXKD = ""; + string sDKD = ""; + string sXKJ = ""; + string sDKJ = ""; + string sXGBJ = ""; + string sDGBJ = ""; + string sCGBJ = ""; + string sXKDBJ = ""; + string sDKDBJ = ""; + string sXKJBJ = ""; + string sDKJBJ = ""; + foreach (var enumValue in ctnList) { - iheadList = table.Rows.Count; //执行条数 - - #region 获取动态 集装箱列名 - List ctnList = MsCrmPriceCarrierDAL.GetCtn(); - string sXG = ""; - string sDG = ""; - string sCG = ""; - string sXD = ""; - string sCD = ""; - string sXGBJ = ""; - string sDGBJ = ""; - string sCGBJ = ""; - string sXDBJ = ""; - string sCDBJ = ""; - foreach (var enumValue in ctnList) + if (enumValue.NAME.ToString().Trim() == "小柜") { - if (enumValue.NAME.ToString().Trim() == "小柜") - { - sXG = enumValue.VALUE.ToString().Trim() + "0"; - sXGBJ = enumValue.VALUE.ToString().Trim() + "2"; - } - else if (enumValue.NAME.ToString().Trim() == "大柜") - { - sDG = enumValue.VALUE.ToString().Trim() + "0"; - sDGBJ = enumValue.VALUE.ToString().Trim() + "2"; - } - else if (enumValue.NAME.ToString().Trim() == "超高") - { - sCG = enumValue.VALUE.ToString().Trim() + "0"; - sCGBJ = enumValue.VALUE.ToString().Trim() + "2"; - } - else if (enumValue.NAME.ToString().Trim() == "小冻") - { - sXD = enumValue.VALUE.ToString().Trim() + "0"; - sXDBJ = enumValue.VALUE.ToString().Trim() + "2"; - } - else if (enumValue.NAME.ToString().Trim() == "超冻") - { - sCD = enumValue.VALUE.ToString().Trim() + "0"; - sCDBJ = enumValue.VALUE.ToString().Trim() + "2"; - } + sXG = enumValue.VALUE.ToString().Trim() + "0"; + sXGBJ = enumValue.VALUE.ToString().Trim() + "2"; + } + else if (enumValue.NAME.ToString().Trim() == "大柜") + { + sDG = enumValue.VALUE.ToString().Trim() + "0"; + sDGBJ = enumValue.VALUE.ToString().Trim() + "2"; + } + else if (enumValue.NAME.ToString().Trim() == "超高") + { + sCG = enumValue.VALUE.ToString().Trim() + "0"; + sCGBJ = enumValue.VALUE.ToString().Trim() + "2"; + } + else if (enumValue.NAME.ToString().Trim() == "小开顶") + { + sXKD = enumValue.VALUE.ToString().Trim() + "0"; + sXKDBJ = enumValue.VALUE.ToString().Trim() + "2"; + } + else if (enumValue.NAME.ToString().Trim() == "大开顶") + { + sDKD = enumValue.VALUE.ToString().Trim() + "0"; + sDKDBJ = enumValue.VALUE.ToString().Trim() + "2"; + } + else if (enumValue.NAME.ToString().Trim() == "小框架") + { + sXKJ = enumValue.VALUE.ToString().Trim() + "0"; + sXKJBJ = enumValue.VALUE.ToString().Trim() + "2"; + } + else if (enumValue.NAME.ToString().Trim() == "大框架") + { + sDKJ = enumValue.VALUE.ToString().Trim() + "0"; + sDKJBJ = enumValue.VALUE.ToString().Trim() + "2"; } + } - #endregion + #endregion - #region 获取动态 费用列名 - List feeList = MsCrmPriceCarrierDAL.GetFeeName(); - string sFJF = ""; - foreach (var enumValue in feeList) + #region 获取动态 费用列名 + List feeList = MsCrmPriceCarrierDAL.GetFeeName(); + string sFJF = ""; + foreach (var enumValue in feeList) + { + if (enumValue.NAME.ToString().Trim() == "附加费") { - if (enumValue.NAME.ToString().Trim() == "附加费") - { - sFJF = enumValue.VALUE.ToString().Trim(); - } + sFJF = enumValue.VALUE.ToString().Trim(); } - #endregion - // - string sGID = ""; - sError = ""; - for(int i=0;i< table.Rows.Count;i++) - { - bool isAdd = false; + } + #endregion + // + string sGID = ""; + sError = ""; + for(int i=0;i< table.Rows.Count;i++) + { + bool isAdd = false; - #region 获取是否有重复数据 - string condition = "[LANE]='" + table.Rows[i]["航线"].ToString() + "' and [PODLOAD]='" + table.Rows[i]["装货港"].ToString() + "' and [PORTDISCHARGEID]='" + table.Rows[i]["卸货港"].ToString() + "' and [PORTDISCHARGE]='" + table.Rows[i]["卸货港中文"].ToString() + "' and [CARRIER]='" + table.Rows[i]["船公司"].ToString() + "' and [VIA]='" + table.Rows[i]["中转港"].ToString() + "' and [ETD]='" + table.Rows[i]["船期"].ToString() + "' and [TT]='" + table.Rows[i]["航程"].ToString() + "' and [EFFECTIVEDATE]='" + table.Rows[i]["开始日期"].ToString() + "' and [VALIDDATE]='" + table.Rows[i]["结束日期"].ToString() + "' and [COMMODITY]='" + table.Rows[i]["特殊商品"].ToString() + "'"; - List dataList = MsCrmPriceCarrierDAL.GetDataList(condition,0,1000, Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), Convert.ToString(Session["COMPANYID"]), null); - #endregion + #region 获取是否有重复数据 + string condition = "[LANE]='" + table.Rows[i]["航线"].ToString() + "' and [PODLOAD]='" + table.Rows[i]["装货港"].ToString() + "' and [PORTDISCHARGEID]='" + table.Rows[i]["卸货港"].ToString() + "' and [PORTDISCHARGE]='" + table.Rows[i]["卸货港中文"].ToString() + "' and [CARRIER]='" + table.Rows[i]["船公司"].ToString() + "' and [VIA]='" + table.Rows[i]["中转港"].ToString() + "' and [ETD]='" + table.Rows[i]["船期"].ToString() + "' and [TT]='" + table.Rows[i]["航程"].ToString() + "' and [EFFECTIVEDATE]='" + table.Rows[i]["开始日期"].ToString() + "' and [VALIDDATE]='" + table.Rows[i]["结束日期"].ToString() + "' and [COMMODITY]='" + table.Rows[i]["特殊商品"].ToString() + "'"; + List dataList = MsCrmPriceCarrierDAL.GetDataList(condition,0,1000, Convert.ToString(Session["USERID"]), Convert.ToString(Session["SHOWNAME"]), Convert.ToString(Session["COMPANYID"]), null); + #endregion - if (dataList != null)//edit + if (dataList != null)//edit + { + if (dataList.Count > 0) { - if (dataList.Count > 0) + MsCrmPriceCarrier headRow = dataList[0]; + if (!headRow.LOCKFLAG && !headRow.ISISSUE)//判断是否锁定或发布的数据,不是则覆盖数据 { - MsCrmPriceCarrier headRow = dataList[0]; - if (!headRow.LOCKFLAG && !headRow.ISISSUE)//判断是否锁定或发布的数据,不是则覆盖数据 - { - sGID = headRow.GID.ToString(); - UpdateCount++; //更新条数 - } - else - { - iError++; //失败(更新)条数 - continue; - } + sGID = headRow.GID.ToString(); + UpdateCount++; //更新条数 } - else//add + else { - isAdd = true; + iError++; //失败(更新)条数 + continue; } } else//add { isAdd = true; } - if (isAdd)//add + } + else//add + { + isAdd = true; + } + if (isAdd)//add + { + MsCrmPriceCarrier headRow = new MsCrmPriceCarrier(); + #region 默认值 + headRow.LANE = table.Rows[i]["航线"].ToString();//航线 + headRow.PODLOAD = table.Rows[i]["装货港"].ToString();//装货港 + headRow.PORTDISCHARGEID = table.Rows[i]["卸货港"].ToString();//卸货港ID + headRow.PORTDISCHARGE = table.Rows[i]["卸货港中文"].ToString();//卸货港中文 + headRow.CARRIER = table.Rows[i]["船公司"].ToString();//船公司 + headRow.VIA = table.Rows[i]["中转港"].ToString();//中转港 + headRow.ETD = table.Rows[i]["船期"].ToString();//开航日/船期 + headRow.TT = table.Rows[i]["航程"].ToString();//航程 + headRow.REMARK = table.Rows[i]["备注"].ToString();//备注 + if (table.Rows[i]["开始日期"].ToString() != "") { - MsCrmPriceCarrier headRow = new MsCrmPriceCarrier(); - #region 默认值 - headRow.LANE = table.Rows[i]["航线"].ToString();//航线 - headRow.PODLOAD = table.Rows[i]["装货港"].ToString();//装货港 - headRow.PORTDISCHARGEID = table.Rows[i]["卸货港"].ToString();//卸货港ID - headRow.PORTDISCHARGE = table.Rows[i]["卸货港中文"].ToString();//卸货港中文 - headRow.CARRIER = table.Rows[i]["船公司"].ToString();//船公司 - headRow.VIA = table.Rows[i]["中转港"].ToString();//中转港 - headRow.ETD = table.Rows[i]["船期"].ToString();//开航日/船期 - headRow.TT = table.Rows[i]["航程"].ToString();//航程 - headRow.REMARK = table.Rows[i]["备注"].ToString();//备注 - if (table.Rows[i]["开始日期"].ToString() != "") - { - headRow.EFFECTIVEDATE = DateTime.Parse(table.Rows[i]["开始日期"].ToString());//生效期/开始日期 - } - else - { - if (sError.IndexOf("不能导入“开始日期”为空的数据!") < 0) - { - sError += "不能导入“开始日期”为空的数据!"; - } - } - if (table.Rows[i]["结束日期"].ToString() != "") - { - headRow.VALIDDATE = DateTime.Parse(table.Rows[i]["结束日期"].ToString());//有效期/结束日期 - } - else - { - if (sError.IndexOf("不能导入“结束日期”为空的数据!") < 0) - { - sError += "不能导入“结束日期”为空的数据!"; - } - } - headRow.COMMODITY = table.Rows[i]["特殊商品"].ToString();//品名/特殊商品 - - headRow.LOCKFLAG = false; - headRow.ISISSUE = false; - headRow.INPUTBY = Convert.ToString(Session["USERID"]);//制单人GID - headRow.INPUTTIME = DateTime.Now;//创建时间 - headRow.MODIFIEDUSER = Convert.ToString(Session["USERID"]);//最后一次更改操作人GID - headRow.MODIFYTIME = DateTime.Now;//最后一次更改操作时间 - headRow.GID = Guid.NewGuid().ToString(); - sGID = headRow.GID.ToString(); - headRow.DbOperationType = DbOperationType.DbotIns; - #endregion - var modb = new ModelObjectDB(); - DBResult result = modb.Save(headRow); - if (!result.Success) + headRow.EFFECTIVEDATE = DateTime.Parse(table.Rows[i]["开始日期"].ToString());//生效期/开始日期 + + } + else + { + if (sError.IndexOf("不能导入“开始日期”为空的数据!") < 0) { - iError++; //失败(更新)条数 - continue; + sError += "不能导入“开始日期”为空的数据!"; } - else + } + if (table.Rows[i]["结束日期"].ToString() != "") + { + headRow.VALIDDATE = DateTime.Parse(table.Rows[i]["结束日期"].ToString());//有效期/结束日期 + } + else + { + if (sError.IndexOf("不能导入“结束日期”为空的数据!") < 0) { - InsertCount++; //新增条数 + sError += "不能导入“结束日期”为空的数据!"; } } - - var XGYJ = table.Rows[i]["小柜"].ToString(); - if (XGYJ == "") XGYJ = "0"; - var DGYJ = table.Rows[i]["大柜"].ToString(); - if (DGYJ == "") DGYJ = "0"; - var CGYJ = table.Rows[i]["超高"].ToString(); - if (CGYJ == "") CGYJ = "0"; - var XDYJ = table.Rows[i]["小冻"].ToString(); - if (XDYJ == "") XDYJ = "0"; - var CDYJ = table.Rows[i]["超冻"].ToString(); - if (CDYJ == "") CDYJ = "0"; - var XGYJBJ = table.Rows[i]["小柜报价"].ToString(); - if (XGYJBJ == "") XGYJBJ = "0"; - var DGYJBJ = table.Rows[i]["大柜报价"].ToString(); - if (DGYJBJ == "") DGYJBJ = "0"; - var CGYJBJ = table.Rows[i]["超高报价"].ToString(); - if (CGYJBJ == "") CGYJBJ = "0"; - var XDYJBJ = table.Rows[i]["小冻报价"].ToString(); - if (XDYJBJ == "") XDYJBJ = "0"; - var CDYJBJ = table.Rows[i]["超冻报价"].ToString(); - if (CDYJBJ == "") CDYJBJ = "0"; - - - #region 根据动态字段名,更新集装箱与费用信息 - string sSQL = "update crm_price_carrier_2 set [" + sXG + "]='" + XGYJ + "',[" + sDG + "]='" + DGYJ + "',[" + sCG + "]='" + CGYJ + "',[" + sXD + "]='" - + XDYJ + "',[" + sCD + "]='" + CDYJ + "',[" + sXGBJ + "]='" + XGYJBJ + "',[" + sDGBJ + "]='" + DGYJBJ + "',[" + sCGBJ + "]='" + CGYJBJ + "',[" + sXDBJ + "]='" - + XDYJBJ + "',[" + sCDBJ + "]='" + CDYJBJ + "',[" + sFJF + "]='" + table.Rows[i]["附加费"].ToString() + "' where gid='" + sGID + "'"; - // string sSQL = "update crm_price_carrier_2 set [" + sXG + "]='" + ds.Tables[0].Rows[i]["小柜"].ToString() + "',[" + sDG + "]='" + ds.Tables[0].Rows[i]["大柜"].ToString() + "',[" + sCG + "]='" + ds.Tables[0].Rows[i]["超高"].ToString() + "',[" + sFJF + "]='" + ds.Tables[0].Rows[i]["附加费"].ToString() + "' where gid='" + sGID + "'"; + headRow.COMMODITY = table.Rows[i]["特殊商品"].ToString();//品名/特殊商品 + + headRow.LOCKFLAG = false; + headRow.ISISSUE = false; + headRow.INPUTBY = Convert.ToString(Session["USERID"]);//制单人GID + headRow.INPUTTIME = DateTime.Now;//创建时间 + headRow.MODIFIEDUSER = Convert.ToString(Session["USERID"]);//最后一次更改操作人GID + headRow.MODIFYTIME = DateTime.Now;//最后一次更改操作时间 + headRow.GID = Guid.NewGuid().ToString(); + sGID = headRow.GID.ToString(); + headRow.DbOperationType = DbOperationType.DbotIns; #endregion - bool bl = T_ALL_DA.GetExecuteSqlCommand(sSQL); - if (!bl) + var modb = new ModelObjectDB(); + DBResult result = modb.Save(headRow); + if (!result.Success) { + iError++; //失败(更新)条数 continue; } + else + { + InsertCount++; //新增条数 + } } - } - // - if (System.IO.File.Exists(fileName)) - { - System.IO.File.Delete(fileName); - } - if (sError.Trim() != "") - { - jsonRespose.Success = false; - jsonRespose.Message = "操作完成,共处理" + Convert.ToString(iheadList) + "条数据,其中新增" + Convert.ToString(InsertCount) + "条,覆盖" + Convert.ToString(UpdateCount) + "条,出错" + Convert.ToString(iError) + "条!错误原因:" + sError; - return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; - } - else - { - jsonRespose.Success = true; - jsonRespose.Message = "操作完成,共处理" + Convert.ToString(iheadList) + "条数据,其中新增" + Convert.ToString(InsertCount) + "条,覆盖" + Convert.ToString(UpdateCount) + "条,出错" + Convert.ToString(iError) + "条!"; - return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; + var XGYJ = table.Rows[i]["小柜"].ToString(); + if (XGYJ == "") XGYJ = "0"; + var DGYJ = table.Rows[i]["大柜"].ToString(); + if (DGYJ == "") DGYJ = "0"; + var CGYJ = table.Rows[i]["超高"].ToString(); + if (CGYJ == "") CGYJ = "0"; + var XKDYJ = table.Rows[i]["小开顶"].ToString(); + if (XKDYJ == "") XKDYJ = "0"; + var DKDYJ = table.Rows[i]["大开顶"].ToString(); + if (DKDYJ == "") DKDYJ = "0"; + var XKJYJ = table.Rows[i]["小框架"].ToString(); + if (XKJYJ == "") XKJYJ = "0"; + var DKJYJ = table.Rows[i]["大框架"].ToString(); + if (DKJYJ == "") DKJYJ = "0"; + + var XGYJBJ = table.Rows[i]["小柜报价"].ToString(); + if (XGYJBJ == "") XGYJBJ = "0"; + var DGYJBJ = table.Rows[i]["大柜报价"].ToString(); + if (DGYJBJ == "") DGYJBJ = "0"; + var CGYJBJ = table.Rows[i]["超高报价"].ToString(); + if (CGYJBJ == "") CGYJBJ = "0"; + var XKDYJBJ = table.Rows[i]["小开顶报价"].ToString(); + if (XKDYJBJ == "") XKDYJBJ = "0"; + var DKDYJBJ = table.Rows[i]["小开顶报价"].ToString(); + if (DKDYJBJ == "") DKDYJBJ = "0"; + var XKJYJBJ = table.Rows[i]["小框架报价"].ToString(); + if (XKJYJBJ == "") XKJYJBJ = "0"; + var DKJYJBJ = table.Rows[i]["大框架报价"].ToString(); + if (DKJYJBJ == "") DKJYJBJ = "0"; + + #region 根据动态字段名,更新集装箱与费用信息 + string sSQL = ""; + + sSQL = $"update crm_price_carrier_2 set " + + $"[{sXG}]='{XGYJ }',[{sDG }]='{DGYJ }',[{sCG }]='{CGYJ }',[{sXKD}]='{XKDYJ}',[{sDKD}]='{DKDYJ}',[{sXKJ}]= '{XKJYJ}',[{sDKJ}]='{DKJYJ}'" + + $",[{sXGBJ }]='{XGYJBJ }',[{sDGBJ }]='{DGYJBJ }',[{sCGBJ }]='{CGYJBJ }',[{sXKDBJ}]='{XKDYJBJ}',[{sDKDBJ}]='{DKDYJBJ}',[{sXKJBJ}]='{XKJYJBJ}',[{sDKJBJ}]='{DKJYJBJ}'" + + $",[{sFJF }]='{table.Rows[i]["附加费"].ToString() }' where gid='{sGID }'"; + + #endregion + bool bl = T_ALL_DA.GetExecuteSqlCommand(sSQL); + if (!bl) + { + continue; + } } + } + // + if (System.IO.File.Exists(fileName)) + { + System.IO.File.Delete(fileName); + } + + if (sError.Trim() != "") + { + jsonRespose.Success = false; + jsonRespose.Message = "操作完成,共处理" + Convert.ToString(iheadList) + "条数据,其中新增" + Convert.ToString(InsertCount) + "条,覆盖" + Convert.ToString(UpdateCount) + "条,出错" + Convert.ToString(iError) + "条!错误原因:" + sError; + return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; + } + else + { + jsonRespose.Success = true; + jsonRespose.Message = "操作完成,共处理" + Convert.ToString(iheadList) + "条数据,其中新增" + Convert.ToString(InsertCount) + "条,覆盖" + Convert.ToString(UpdateCount) + "条,出错" + Convert.ToString(iError) + "条!"; + return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; + } } #endregion diff --git a/DSWeb/Areas/MvcShipping/Helper/ExcelHelper.cs b/DSWeb/Areas/MvcShipping/Helper/ExcelHelper.cs index 235a5b0c..ba9149e8 100644 --- a/DSWeb/Areas/MvcShipping/Helper/ExcelHelper.cs +++ b/DSWeb/Areas/MvcShipping/Helper/ExcelHelper.cs @@ -117,7 +117,7 @@ namespace DSWeb.MvcShipping.Helper //long lTime = long.Parse(timestamp + "0000"); //TimeSpan timeSpan = new TimeSpan(lTime); //DateTime targetDt = dtStart.Add(timeSpan).AddHours(8); - DateTime dtStart = Convert.ToDateTime("1970-01-01"); + DateTime dtStart = Convert.ToDateTime("1900-01-01"); DateTime targetDt = dtStart.AddDays(timestamp-1); return targetDt; } @@ -335,7 +335,15 @@ namespace DSWeb.MvcShipping.Helper { try { - dataRow[i] = GetDateTime((int)cellData.NumericCellValue); + var _datetime = GetDateTime((int)cellData.NumericCellValue); + + //if (_datetime > Convert.ToDateTime("2070-1-1") && DateTime.Now< Convert.ToDateTime("2069-1-1")) + //{ + // _datetime=_datetime.AddDays(-25567); + //} + + dataRow[i] = _datetime; + } catch { diff --git a/DSWeb/Areas/MvcShipping/Viewsjs/MsCrmPriceCarrier/CrmPriceList.js b/DSWeb/Areas/MvcShipping/Viewsjs/MsCrmPriceCarrier/CrmPriceList.js index b916c69c..db1333c1 100644 --- a/DSWeb/Areas/MvcShipping/Viewsjs/MsCrmPriceCarrier/CrmPriceList.js +++ b/DSWeb/Areas/MvcShipping/Viewsjs/MsCrmPriceCarrier/CrmPriceList.js @@ -189,7 +189,7 @@ var zlcolumn = [ }, { dataIndex: 'CTN3DETENTION', - text: '目的港免箱期_小冻', + text: '目的港免箱期_小开顶', width: 100, editor: { xtype: 'textfield', @@ -198,7 +198,25 @@ var zlcolumn = [ }, { dataIndex: 'CTN4DETENTION', - text: '目的港免箱期_超冻', + text: '目的港免箱期_大开顶', + width: 100, + editor: { + xtype: 'textfield', + selectOnFocus: true + } + }, + { + dataIndex: 'CTN5DETENTION', + text: '目的港免箱期_小框架', + width: 100, + editor: { + xtype: 'textfield', + selectOnFocus: true + } + }, + { + dataIndex: 'CTN6DETENTION', + text: '目的港免箱期_大框架', width: 100, editor: { xtype: 'textfield', diff --git a/DSWeb/Areas/MvcShipping/Viewsjs/MsCrmPriceCarrier/MsCrmPriceCarrierIndex.js b/DSWeb/Areas/MvcShipping/Viewsjs/MsCrmPriceCarrier/MsCrmPriceCarrierIndex.js index 6c9c05e5..9e006dc7 100644 --- a/DSWeb/Areas/MvcShipping/Viewsjs/MsCrmPriceCarrier/MsCrmPriceCarrierIndex.js +++ b/DSWeb/Areas/MvcShipping/Viewsjs/MsCrmPriceCarrier/MsCrmPriceCarrierIndex.js @@ -246,7 +246,96 @@ Ext.extend(Shipping.MsCrmPriceCarrierIndex, Ext.Panel, { xtype: 'container', layout: 'hbox', defaultType: 'textfield', - items: [this.comboxPODLOAD_2, this.comboxPORTDISCHARGE_2, this.comboxVIA_2, this.comboxCARRIER_2, this.comboxLANE_2]//, { xtype: 'hiddenfield', flex: 1} + items: [ + + + //this.comboxPODLOAD_2, + //this.comboxPORTDISCHARGE_2, + //this.comboxVIA_2, + //this.comboxCARRIER_2, + //this.comboxLANE_2 + { + fieldLabel: '启运港', + name: 'PODLOAD_2', + enableKeyEvents: true, //激活键盘事件 + listeners: { + scope: this, + 'keyup': { + fn: function (_field, e) { + if (e.getKey() == 13) { + this.onRefreshClick(); + } + }, + scope: this + } + } + }, + { + fieldLabel: '卸货港', + name: 'PORTDISCHARGEID_2', + enableKeyEvents: true, //激活键盘事件 + listeners: { + scope: this, + 'keyup': { + fn: function (_field, e) { + if (e.getKey() == 13) { + this.onRefreshClick(); + } + }, + scope: this + } + } + }, + { + fieldLabel: '中转港', + name: 'VIA_2', + enableKeyEvents: true, //激活键盘事件 + listeners: { + scope: this, + 'keyup': { + fn: function (_field, e) { + if (e.getKey() == 13) { + this.onRefreshClick(); + } + }, + scope: this + } + } + }, + { + fieldLabel: '船公司', + name: 'CARRIER_2', + enableKeyEvents: true, //激活键盘事件 + listeners: { + scope: this, + 'keyup': { + fn: function (_field, e) { + if (e.getKey() == 13) { + this.onRefreshClick(); + } + }, + scope: this + } + } + }, + { + fieldLabel: '航线', + name: 'LANE_2', + enableKeyEvents: true, //激活键盘事件 + listeners: { + scope: this, + 'keyup': { + fn: function (_field, e) { + if (e.getKey() == 13) { + this.onRefreshClick(); + } + }, + scope: this + } + } + } + + ]//, { xtype: 'hiddenfield', flex: 1} }, { xtype: 'container', layout: 'hbox', @@ -784,7 +873,7 @@ Ext.extend(Shipping.MsCrmPriceCarrierIndex, Ext.Panel, { }, { dataIndex: 'CTN3DETENTION', - text: '目的港免箱期_小冻', + text: '目的港免箱期_小开顶', width: 100, editor: { xtype: 'textfield', @@ -793,7 +882,25 @@ Ext.extend(Shipping.MsCrmPriceCarrierIndex, Ext.Panel, { }, { dataIndex: 'CTN4DETENTION', - text: '目的港免箱期_超冻', + text: '目的港免箱期_大开顶', + width: 100, + editor: { + xtype: 'textfield', + selectOnFocus: true + } + }, + { + dataIndex: 'CTN5DETENTION', + text: '目的港免箱期_小框架', + width: 100, + editor: { + xtype: 'textfield', + selectOnFocus: true + } + }, + { + dataIndex: 'CTN6DETENTION', + text: '目的港免箱期_大框架', width: 100, editor: { xtype: 'textfield', @@ -1335,7 +1442,7 @@ Ext.extend(Shipping.MsCrmPriceCarrierIndex, Ext.Panel, { }, { dataIndex: 'CTN3DETENTION', - text: '目的港免箱期_小冻', + text: '目的港免箱期_小开顶', width: 100, editor: { xtype: 'textfield', @@ -1344,7 +1451,25 @@ Ext.extend(Shipping.MsCrmPriceCarrierIndex, Ext.Panel, { }, { dataIndex: 'CTN4DETENTION', - text: '目的港免箱期_超冻', + text: '目的港免箱期_大开顶', + width: 100, + editor: { + xtype: 'textfield', + selectOnFocus: true + } + }, + { + dataIndex: 'CTN5DETENTION', + text: '目的港免箱期_小框架', + width: 100, + editor: { + xtype: 'textfield', + selectOnFocus: true + } + }, + { + dataIndex: 'CTN6DETENTION', + text: '目的港免箱期_大框架', width: 100, editor: { xtype: 'textfield', @@ -1679,35 +1804,35 @@ Ext.extend(Shipping.MsCrmPriceCarrierIndex, Ext.Panel, { var strPORTLOADID = form.findField('PODLOAD_2').getValue(); if (strPORTLOADID != null) { if (strPORTLOADID != "") { - sql = sql + getAndConSql(sql, strPORTLOADID, "[PODLOAD]='" + strPORTLOADID.toString().trim() + "'"); + sql = sql + getAndConSql(sql, strPORTLOADID, "[PODLOAD] like '%" + strPORTLOADID.toString().trim() + "%'"); } } var strPORTDISCHARGEID_2 = form.findField('PORTDISCHARGEID_2').getValue(); if (strPORTDISCHARGEID_2 != null) { if (strPORTDISCHARGEID_2 != "") { - sql = sql + getAndConSql(sql, strPORTDISCHARGEID_2, " (PORTDISCHARGE='" + strPORTDISCHARGEID_2.toString().trim() + "' or [PORTDISCHARGEID]='" + strPORTDISCHARGEID_2.toString().trim() + "') "); + sql = sql + getAndConSql(sql, strPORTDISCHARGEID_2, " (PORTDISCHARGE like '%" + strPORTDISCHARGEID_2.toString().trim() + "%' or [PORTDISCHARGEID] like '%" + strPORTDISCHARGEID_2.toString().trim() + "%') "); } } var strVIA_2 = form.findField('VIA_2').getValue(); if (strVIA_2 != null) { if (strVIA_2 != "") { - sql = sql + getAndConSql(sql, strVIA_2, "[VIA]='" + strVIA_2.toString().trim() + "'"); + sql = sql + getAndConSql(sql, strVIA_2, "[VIA] like '%" + strVIA_2.toString().trim() + "%'"); } } var strCARRIER = form.findField('CARRIER_2').getValue(); if (strCARRIER != null) { if (strCARRIER != "") { - sql = sql + getAndConSql(sql, strCARRIER, "[CARRIER]='" + strCARRIER.toString().trim() + "'"); + sql = sql + getAndConSql(sql, strCARRIER, "[CARRIER] like '%" + strCARRIER.toString().trim() + "%'"); } } var strLANE = form.findField('LANE_2').getValue(); if (strLANE != null) { if (strLANE != "") { - sql = sql + getAndConSql(sql, strLANE, "[LANE]='" + strLANE.toString().trim() + "'"); + sql = sql + getAndConSql(sql, strLANE, "[LANE] like '%" + strLANE.toString().trim() + "%'"); } } diff --git a/DSWeb/Areas/MvcShipping/Viewsjs/MsCrmPriceCarrierList/MsCrmPriceCarrierListIndex.js b/DSWeb/Areas/MvcShipping/Viewsjs/MsCrmPriceCarrierList/MsCrmPriceCarrierListIndex.js index 0833fb4a..d79079b1 100644 --- a/DSWeb/Areas/MvcShipping/Viewsjs/MsCrmPriceCarrierList/MsCrmPriceCarrierListIndex.js +++ b/DSWeb/Areas/MvcShipping/Viewsjs/MsCrmPriceCarrierList/MsCrmPriceCarrierListIndex.js @@ -234,7 +234,80 @@ Ext.extend(Shipping.MsCrmPriceCarrierListIndex, Ext.Panel, { xtype: 'container', layout: 'hbox', defaultType: 'textfield', - items: [this.comboxPODLOAD_2, this.comboxPORTDISCHARGE_2, this.comboxVIA_2, this.comboxCARRIER_2, this.comboxISISSUE, { + items: [ + //this.comboxPODLOAD_2, + //this.comboxPORTDISCHARGE_2, + //this.comboxVIA_2, + //this.comboxCARRIER_2, + + { + fieldLabel: '启运港', + name: 'PODLOAD_2', + enableKeyEvents: true, //激活键盘事件 + listeners: { + scope: this, + 'keyup': { + fn: function (_field, e) { + if (e.getKey() == 13) { + this.onRefreshClick(); + } + }, + scope: this + } + } + }, + { + fieldLabel: '卸货港', + name: 'PORTDISCHARGEID_2', + enableKeyEvents: true, //激活键盘事件 + listeners: { + scope: this, + 'keyup': { + fn: function (_field, e) { + if (e.getKey() == 13) { + this.onRefreshClick(); + } + }, + scope: this + } + } + }, + { + fieldLabel: '中转港', + name: 'VIA_2', + enableKeyEvents: true, //激活键盘事件 + listeners: { + scope: this, + 'keyup': { + fn: function (_field, e) { + if (e.getKey() == 13) { + this.onRefreshClick(); + } + }, + scope: this + } + } + }, + { + fieldLabel: '船公司', + name: 'CARRIER_2', + enableKeyEvents: true, //激活键盘事件 + listeners: { + scope: this, + 'keyup': { + fn: function (_field, e) { + if (e.getKey() == 13) { + this.onRefreshClick(); + } + }, + scope: this + } + } + }, + + this.comboxISISSUE + + , { fieldLabel: '特殊商品', name: 'COMMODITY_2', enableKeyEvents: true, //激活键盘事件 @@ -304,7 +377,26 @@ Ext.extend(Shipping.MsCrmPriceCarrierListIndex, Ext.Panel, { scope: this } } - }, this.comboxLANE_2, { + } + + //, this.comboxLANE_2 + ,{ + fieldLabel: '航线', + name: 'LANE_2', + enableKeyEvents: true, //激活键盘事件 + listeners: { + scope: this, + 'keyup': { + fn: function (_field, e) { + if (e.getKey() == 13) { + this.onRefreshClick(); + } + }, + scope: this + } + } + } + , { fieldLabel: '船期', name: 'ETD_2', enableKeyEvents: true, //激活键盘事件 @@ -653,7 +745,7 @@ Ext.extend(Shipping.MsCrmPriceCarrierListIndex, Ext.Panel, { }, { dataIndex: 'CTN3DETENTION', - text: '目的港免箱期_小冻', + text: '目的港免箱期_小开顶', width: 100, editor: { xtype: 'textfield', @@ -662,7 +754,25 @@ Ext.extend(Shipping.MsCrmPriceCarrierListIndex, Ext.Panel, { }, { dataIndex: 'CTN4DETENTION', - text: '目的港免箱期_超冻', + text: '目的港免箱期_大开顶', + width: 100, + editor: { + xtype: 'textfield', + selectOnFocus: true + } + }, + { + dataIndex: 'CTN5DETENTION', + text: '目的港免箱期_小框架', + width: 100, + editor: { + xtype: 'textfield', + selectOnFocus: true + } + }, + { + dataIndex: 'CTN6DETENTION', + text: '目的港免箱期_大框架', width: 100, editor: { xtype: 'textfield', @@ -1097,62 +1207,70 @@ Ext.extend(Shipping.MsCrmPriceCarrierListIndex, Ext.Panel, { dataIndex: 'CONTRACTBSNO', text: 'CONTRACTBSNO', width: 80 - }, - { - dataIndex: 'CTN0DETENTION', - text: '目的港免箱期_小柜', - align: 'center', - pack: 'center', - width: 100, - editor: { - xtype: 'textfield', - selectOnFocus: true - } - }, - { - dataIndex: 'CTN1DETENTION', - text: '大柜', - align: 'center', - pack: 'center', - width: 100, - editor: { - xtype: 'textfield', - selectOnFocus: true - } - }, - { - dataIndex: 'CTN2DETENTION', - text: '超高', - align: 'center', - pack: 'center', - width: 100, - editor: { - xtype: 'textfield', - selectOnFocus: true - } - }, - { - dataIndex: 'CTN3DETENTION', - text: '小冻', - align: 'center', - pack: 'center', - width: 100, - editor: { - xtype: 'textfield', - selectOnFocus: true - } - }, - { - dataIndex: 'CTN4DETENTION', - text: '超冻', - align: 'center', - pack: 'center', - width: 100, - editor: { - xtype: 'textfield', - selectOnFocus: true - } - }, + }, + { + dataIndex: 'CTN0DETENTION', + text: '目的港免箱期_小柜', + width: 100, + editor: { + xtype: 'textfield', + selectOnFocus: true + } + }, + { + dataIndex: 'CTN1DETENTION', + text: '目的港免箱期_大柜', + width: 100, + editor: { + xtype: 'textfield', + selectOnFocus: true + } + }, + { + dataIndex: 'CTN2DETENTION', + text: '目的港免箱期_超高', + width: 100, + editor: { + xtype: 'textfield', + selectOnFocus: true + } + }, + { + dataIndex: 'CTN3DETENTION', + text: '目的港免箱期_小开顶', + width: 100, + editor: { + xtype: 'textfield', + selectOnFocus: true + } + }, + { + dataIndex: 'CTN4DETENTION', + text: '目的港免箱期_大开顶', + width: 100, + editor: { + xtype: 'textfield', + selectOnFocus: true + } + }, + { + dataIndex: 'CTN5DETENTION', + text: '目的港免箱期_小框架', + width: 100, + editor: { + xtype: 'textfield', + selectOnFocus: true + } + }, + { + dataIndex: 'CTN6DETENTION', + text: '目的港免箱期_大框架', + width: 100, + editor: { + xtype: 'textfield', + selectOnFocus: true + } + }, { dataIndex: 'REMARK', text: '备注', @@ -1587,7 +1705,8 @@ Ext.extend(Shipping.MsCrmPriceCarrierListIndex, Ext.Panel, { sql = sql + getAndConSql(sql, ISISSUE_2, "[ISISSUE]=1"); } } - sql = sql + getAndConSql(sql, "1=1", "[ISISSUE]=1"); + + //sql = sql + getAndConSql(sql, "1=1", "[ISISSUE]=1"); // sql = sql + " and [LOCKFLAG]=1"; var CONTRACTNO = form.findField('CONTRACTNO').getValue(); diff --git a/DSWeb/Areas/MvcShipping/Viewsjs/MsPrice/MsPriceModel.js b/DSWeb/Areas/MvcShipping/Viewsjs/MsPrice/MsPriceModel.js index 63ef8112..eb7cfc3d 100644 --- a/DSWeb/Areas/MvcShipping/Viewsjs/MsPrice/MsPriceModel.js +++ b/DSWeb/Areas/MvcShipping/Viewsjs/MsPrice/MsPriceModel.js @@ -323,8 +323,10 @@ function getPriceCtnTypeStore() { var CTN0 = Ext.create('PriceCTNTYPE', { 'NAME': '小柜', 'ID': 'CTN0' }); var CTN1 = Ext.create('PriceCTNTYPE', { 'NAME': '大柜', 'ID': 'CTN1' }); var CTN2 = Ext.create('PriceCTNTYPE', { 'NAME': '超高', 'ID': 'CTN2' }); - var CTN3 = Ext.create('PriceCTNTYPE', { 'NAME': '小冻', 'ID': 'CTN3' }); - var CTN4 = Ext.create('PriceCTNTYPE', { 'NAME': '超冻', 'ID': 'CTN4' }); + var CTN3 = Ext.create('PriceCTNTYPE', { 'NAME': '小开顶', 'ID': 'CTN3' }); + var CTN4 = Ext.create('PriceCTNTYPE', { 'NAME': '大开顶', 'ID': 'CTN4' }); + var CTN5 = Ext.create('PriceCTNTYPE', { 'NAME': '小框架', 'ID': 'CTN5' }); + var CTN6 = Ext.create('PriceCTNTYPE', { 'NAME': '大框架', 'ID': 'CTN6' }); var _blank = Ext.create('PriceCTNTYPE', { 'NAME': '', 'ID': '' }); storeCT.add(_blank); storeCT.add(CTN0); @@ -332,7 +334,8 @@ function getPriceCtnTypeStore() { storeCT.add(CTN2); storeCT.add(CTN3); storeCT.add(CTN4); - + storeCT.add(CTN5); + storeCT.add(CTN6); return storeCT; } diff --git a/DSWeb/download/运价模板.xls b/DSWeb/download/运价模板.xls index 26e9418b0a27cbd1aa43e3f9d0b878b7a9a3dde1..27a390c27c7fdb6766794d8a22626f13178364c7 100644 GIT binary patch delta 2618 zcmc&$O>7%Q6n?Yb^}k~~j+5AN?M;I*e`y>CL}*HtLWES1n$oC30gFT^Aw_DUZ~#G+ z))i2wK%qZVnilaB4uvDB42T0F6u|*i^uhr|1C+lDLPAJINJx$O-j1`jEaaU7zV1Io(9x zlSYgBdAx~!K+DrKxrm;8%p4n^nvgr3_sQMPpgir2i?A#@(~f5-FE2Uo5G0eXmg;wm zH1Wa%LxbJaMDJjxQsJ0DN6%JiR_iR2PJUt?!8+f%T54IM?G|gz(BQ6N_ra>S!fvl+ zbs@lhz+2*(r)t?{NW&G|*Xr4A74~91dvk?dsb{?vc8jOR=Vk2EUGeHcPdR$sRdHkA zDslU#cotvue5bV}^$5L74agOqeCOn3zH@A>uU}6369r_D{wN{aS1_=ikIc)+%YP&< z{9g-~*X`pi|H~cAj{{vhaWUu$-=a0~^FU<9^<+4_lv+xWe#(lgw@NXq zo_A?`Bhu4+*mY505sJ%~nmY;xi6@3Kb6r!NyPg}@NZjz$(m@A_Pmiz+14V)e=9edQ z)t!Cl&s~sYhAjzqWy#^WuU^*4z@Z`@vQ*##C+Jq&9fzWWc^Y~Aw4g#QYgDrvm}iES z`MTDM+`u}RziZ!n6P9NqRj%2KGrNI#X4p2bw^pQWEi*02!Rq}Zgfwzt_~-EyNArt= zBNIGCpa)JZ?73~OM4M3of?-0~i1wo2gZ>-zU!yA5$-jDt{EF)0Z6Y^X#)tzuvqy`E>wU!%h zRr4P5Qm+)Llt{?-)IGQGiE?Y4d7La7byx!tv}9c4<8%{u)L)iy<&DcXQjy!&GWt5& z#yT?gKQ4b?X9hn1YiH$axmLzkGA?(R^*(U$*J=mWk)gC=hT~>L#EWOmAyJ4DyLuJD z;kz8Qf~=4R#9LFy0mPM7AsvXFR>%NicNKC1@oWmYfP6M`1F@@$^H8)v?4^QUknEpA zKA@nD{6L&5#RaGte|M{>0SM=;%mslWHVOeX*(eMYwNWF+g=QN@ENXR{CLqqgS}+R4 z2S6d7gwKmYEyTZ7)QT~eJ;lYKiL*^#(g6Jmll|I$>rg?Y9(lAgEwj2;UQX-9M8_{) zKgUBLDFy`svT@7PCwg>;mo)iXS5zi)P2v^Vo$H8ALyH4Bi^dj5(0JD;8+Q9quAco?kHy48f#xaX_ZBq<))rTL`WX(iOGeY(RyXe_I>R{)-V0q zz)t=m;}~)Tc;CERzFPbrkU(P|H=9yuCR#h%W;EP#;v&HORkW3J_fCit`kg|^0o{~o oJ>*m$dvZp5hY!F^LqK0KI7yZQb^7iGyYB1kY7Z90~K+zasU7T delta 2238 zcmb_eZ)jUp6hHU9yyPWKo3u^yXX}>dy3ygXuI-d{tZKJaK|9mc!lXE8wMn+De=^%z zYuT3IIx9-IE>~)i>N*(v;0ImJ2N8to2SM=>7n|qR2WQmirjT(c@Z~}O6Nq8-tPG`kSUGFk;`YuX*TshR?t3ic3!y(>= z?0Tu|b(RbsWWd{lntLghPJXfT220$YxxcsX7V{!4A@RxJV|EiR(NG`!vU{spLczZ6 z{O{l-zvebc-vXcPoNOoB3Vt-KDrRR^;BEhxmd~abm{EBfB)De!7-xVV@jD79!2%Ep z4L;XD@WR;0(_^s_zF&HhAC|0qUfRH%JSA6QnC7%qtUwv>vU!-DI6Pr< zc~7Y>IHgkV*---v(>wO0?$}RE;*7^yNH7Uo=>5Fsr?9`sKBK;IruW#ts`-MeB3>9&&*$D3m(Li($s%0) z+~N~^XN=0sKI(f)?L&8YZsyh-Ml0Rr5rB#A`k7tBCA9#byj)7D025X_gVW(ORDlZf zSS&l%tGN>3D)7Htq2~Nwa+$Psy|!=SDv6K9*R=riet^C$0Nb}=BK7=2&0$uNTCKUH zRJJJ&FeCFcx@CAC8lTy=W8xYWjN;(UH$`H|25y*~+$|_JfA}Xjr6^JN(fhbKnshiLa zedumbTE%AdK`j4zT1QyN@~|Sy4oaLzoJ)Ms4(BU%;}4 zjn&K~{#!>4uMN1^72Xu6^GzUyb~l9|)oK>MYWx=XP@uk=qU{e2MTeuKqOAe&OM%Vm zmh Date: Wed, 20 Nov 2024 17:42:36 +0800 Subject: [PATCH 2/2] 1 --- .../Controllers/MsWlTruckController.cs | 11 +++++++++++ DSWeb/DSWeb.csproj.user | 2 +- .../Comcab2d43f60454327af30a131fc1d3abd.gif | Bin 182568 -> 182568 bytes 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/DSWeb/Areas/TruckMng/Controllers/MsWlTruckController.cs b/DSWeb/Areas/TruckMng/Controllers/MsWlTruckController.cs index 6752499b..de071e67 100644 --- a/DSWeb/Areas/TruckMng/Controllers/MsWlTruckController.cs +++ b/DSWeb/Areas/TruckMng/Controllers/MsWlTruckController.cs @@ -15,6 +15,7 @@ using System.Web; using System.IO; using System.Globalization; using System.Web.Script.Serialization; +using DSWeb.Areas.CommMng.DAL; namespace DSWeb.Areas.TruckMng.Controllers { @@ -197,6 +198,16 @@ namespace DSWeb.Areas.TruckMng.Controllers return new ContentResult() { Content = JsonConvert.Serialize(jsonRespose) }; } + string name = Request.Files[0].FileName; + string ext = Path.GetExtension(name).ToLower(); + string[] allowExt = new string[] { ".jpg", ".jpeg", ".png", ".gif", ".bmp", ".pdf" }; + if (!allowExt.Contains(ext)) + { + var result = new DBResult(); + result.SetErrorInfo("不允许上传此类文件"); + return BasicDataRefDAL.GetContentResult(result); + } + var imgFile = Request.Files["file"]; var truckNo = Request.Form["TruckNo"].ToString().Trim(); var Cert_Type = Request.Form["Cert_Type"].ToString().Trim(); diff --git a/DSWeb/DSWeb.csproj.user b/DSWeb/DSWeb.csproj.user index e5260471..5ffff700 100644 --- a/DSWeb/DSWeb.csproj.user +++ b/DSWeb/DSWeb.csproj.user @@ -2,7 +2,7 @@ ShowAllFiles - D:\DONGSHENG7\DS7HYRD\DSWeb\Properties\PublishProfiles\配置文件1.pubxml + D:\DS7_HYRD\DSWeb\Properties\PublishProfiles\FolderProfile.pubxml true Debug|Any CPU diff --git a/DSWeb/images/logo/Comcab2d43f60454327af30a131fc1d3abd.gif b/DSWeb/images/logo/Comcab2d43f60454327af30a131fc1d3abd.gif index 10ef368a84ae47e02623d61c8a759ad625def564..e4ebf0950aecfaf681fd0c9843eb22d7924c5340 100644 GIT binary patch delta 50911 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 Bj7I