增加商品条码功能

This commit is contained in:
季圣华
2020-02-17 00:59:25 +08:00
parent 301d053bd4
commit 4b61eb59ee
33 changed files with 3728 additions and 1995 deletions

View File

@@ -4,7 +4,7 @@
}
.easyui-dialog .fitem label{
width:60px;
width:80px;
float:left;
padding:5px;
}

View File

@@ -23,6 +23,31 @@
return o;
};
/**
* 扩展datagrid的editors方法支持combogrid
*/
$.extend($.fn.datagrid.defaults.editors, {
combogrid: {
init: function (container, options) {
var input = $('<input type="text" style="height: 22px;" class="datagrid-editable-input">').appendTo(container);
input.combogrid(options);
return input;
},
destroy: function (target) {
$(target).combogrid('destroy');
},
getValue: function (target) {
return $(target).combogrid('getValue');
},
setValue: function (target, value) {
$(target).combogrid('setValue', value);
},
resize: function (target, width) {
$(target).combogrid('resize', width);
}
}
});
$(function() {
domresize();
});

View File

@@ -533,23 +533,25 @@
dgResize();
}
//查找库存的方法
function findStockNumById(depotId, mId, monthTime, body, input, ratio, type){
function findStockNumById(depotId, meId, monthTime, body, input, ratio, type){
var thisRatio = 1; //比例
$.ajax({
url: "/material/findById",
url: "/material/findByIdWithBarCode",
type: "get",
dataType: "json",
data: {
id: mId
meId: meId
},
success: function (rec) {
if(rec && rec.code === 200 && rec.data && rec.data[0]) {
if(rec && rec.code === 200) {
var info = rec.data;
var commodityUnit = info.commodityUnit; //商品单位
var loadRatio = 1; //在单位输入框上面加载比例字段
if(rec.data[0].unit) { //如果存在计量单位信息
if(info.unit) { //如果存在计量单位信息
loadRatio = 1;
}
else{
var unitName = rec.data[0].unitName;
var unitName = info.unitName;
if(unitName) {
thisRatio = unitName.substring(unitName.indexOf(":")+1).replace(")","");
unitName = unitName.substring(0, unitName.indexOf("("));
@@ -557,24 +559,11 @@
var unitArr = unitName.split(",");
var basicUnit = unitArr[0]; //基础单位
var otherUnit = unitArr[1]; //副单位
var unitSetInput =""; //单位
if(listSubType === "采购订单" || listSubType === "采购" || listSubType === "采购退货"){
unitSetInput = rec.data[0].firstinunit;
if(basicUnit==unitSetInput){ //基础单位等于选择的单位
loadRatio = 1;
}
else if(otherUnit==unitSetInput){ //副单位等于选择的单位
loadRatio = thisRatio;
}
if(basicUnit==commodityUnit){ //基础单位等于选择的单位
loadRatio = 1;
}
else if(listSubType === "销售订单" || listSubType === "销售" || listSubType === "销售退货" || listSubType === "零售" || listSubType === "零售退货"){
unitSetInput = rec.data[0].firstoutunit;
if(basicUnit==unitSetInput){ //基础单位等于选择的单位
loadRatio = 1;
}
else if(otherUnit==unitSetInput){ //副单位等于选择的单位
loadRatio = thisRatio;
}
else if(otherUnit==commodityUnit){ //副单位等于选择的单位
loadRatio = thisRatio;
}
}
//查询库存
@@ -583,7 +572,7 @@
url: '/depotItem/findStockNumById',
data:{
depotId: depotId,
mId: mId
mId: info.id
},
dataType: "json",
success: function (res) {
@@ -721,7 +710,7 @@
body =$("#depotHeadFM .datagrid-body");
footer =$("#depotHeadFM .datagrid-footer");
input = ".datagrid-editable-input";
var mId = body.find("[field='MaterialId']").find(".combo-value").val();
var mId = body.find("[field='MaterialExtendId']").find(".combo-value").val();
if(mId){
var type = "select"; //type 类型:点击 click选择 select
findStockNumById(depotId, mId, monthTime, body, input, ratioDepot, type);
@@ -730,37 +719,71 @@
}
}
},
{ title: '品名(型号)(扩展信息)(单位)',field: 'MaterialId',width:230,
{ title: '条码_品名(规格)(型号)(扩展信息)(单位)',field: 'MaterialExtendId',width:270,
formatter:function(value,row,index){
return row.MaterialName;
},
editor:{
type:'combobox',
options:{
valueField:'Id',
textField:'MaterialName',
method:'get',
url: "/material/findBySelect",
panelWidth: 300, //下拉框的宽度
//全面模糊匹配,过滤字段
filter: function(q, row){
var opts = $(this).combobox('options');
return row[opts.textField].indexOf(q) >-1;
},
type:'combogrid',
options:{
url: "/material/findBySelect",
idField:'Id',
textField:'MaterialName',
method:'get',
pagination: true,
mode: 'remote',
hasDownArrow: false,
panelWidth: 630, //下拉框的宽度
panelHeight: 380,//下拉框的高度
columns:[[
{field:'mBarCode',title:'条码',width:120},
{field:'name',title:'品名',width:140},
{field:'standard',title:'规格',width:80},
{field:'model',title:'型号',width:80},
{field:'unit',title:'单位',width:60},
{field:'stock',title:'库存',width:50},
{field:'expand',title:'扩展信息',width:80}
]],
onBeforeLoad: function(param){
var edDepot = $('#materialData').datagrid('getEditor', {index:editIndex,field:'DepotId'});
if(edDepot) {
param.depotId = $(edDepot.target).combobox('getValue');
}
param.mpList = mPropertyList; //商品属性
},
onSelect:function(rec){
var materialId = $("#depotHeadFM .datagrid-body")
.find("[field='MaterialId']").find(".datagrid-editable-input").val();
if(materialId !=rec.Id) {
materialSelect(rec);
onLoadSuccess: function (rec) {
if(rec && rec.total==1) {
$(".datagrid-body [field='mBarCode']").click(); //在只有单个商品的时候自动选中
}
//分页后判断下是否有选中的数据行combogrid会依据上一次选中的值进行初始化选中datagrid数据行和设置显示值
var edMaterial = $('#materialData').datagrid('getEditor', {index:editIndex,field:'MaterialExtendId'});
var comboText = $(edMaterial.target).next().find('input.combo-text');
$.ajax({
type: "get",
url: '/material/getMaterialByMeId',
data: {
meId: comboText.val(),
mpList: mPropertyList
},
dataType: "json",
success: function (res) {
if (res && res.MaterialName) {
$(edMaterial.target).next().find('input.combo-text').val(res.MaterialName);
}
}
});
},
onSelect:function(index, rowData){
// var materialExtendId = $("#depotHeadFM .datagrid-body")
// .find("[field='MaterialExtendId']").find(".datagrid-editable-input").val();
// if(materialExtendId !=rowData.Id) {
materialSelect(rowData);
// }
}
}
}
}
},
{ title: '库存',field: 'Stock',editor:'validatebox',width:70},
{ title: '库存',field: 'Stock',editor:'validatebox',width:50},
{ title: anotherDepotHeadName, field: 'AnotherDepotId',editor:'validatebox',hidden:isShowAnotherDepot,width:90,
formatter: function (value, row, index) {
return row.AnotherDepotName;
@@ -783,12 +806,7 @@
{ title: '税率(%)',field: 'TaxRate',editor:'validatebox',hidden:isShowTaxColumn,width:75},
{ title: '税额',field: 'TaxMoney',editor:'validatebox',hidden:isShowTaxColumn,width:75},
{ title: '价税合计',field: 'TaxLastMoney',editor:'validatebox',hidden:isShowTaxColumn,width:75},
{ title: '备注',field: 'Remark',editor:'validatebox',width:120},
{ title: '品名-',field: 'OtherField1',editor:'validatebox',hidden:otherColumns,width:60},
{ title: '型号-',field: 'OtherField2',editor:'validatebox',hidden:otherColumns,width:60},
{ title: '颜色-',field: 'OtherField3',editor:'validatebox',hidden:otherColumns,width:60},
{ title: '备注1',field: 'OtherField4',editor:'validatebox',hidden:true,width:60},
{ title: '备注2',field: 'OtherField5',editor:'validatebox',hidden:true,width:60}
{ title: '备注',field: 'Remark',editor:'validatebox',width:100}
]],
toolbar:[
{
@@ -885,54 +903,33 @@
function materialSelect(rec) {
var body,footer,input; //定义表格和文本框
var ratio = 1; //比例-品名专用
var loadRatio = 1; //在单位输入框上面加载比例字段
if(rec) {
var mId = rec.Id;
var meId = rec.Id;
$.ajax({
url: "/material/findById",
url: "/material/findByIdWithBarCode",
type: "get",
dataType: "json",
data: {
id: mId
meId: meId
},
success: function (res) {
if(res && res.code === 200 && res.data && res.data[0]) {
var retailPrice = res.data[0].retailprice-0; //零售价格
var presetPriceOne = res.data[0].presetpriceone-0; //预计采购
var presetPriceTwo = res.data[0].presetpricetwo-0; //批发
var firstInUnit = res.data[0].firstinunit; //首选入库单位
var firstOutUnit = res.data[0].firstoutunit; //首选出库单位
var basicPresetPriceOne = ""; //多单位-入库-基础价格
var basicPresetPriceTwo = ""; //多单位-出库-基础价格
var retailPriceOne = ""; //多单位-入库-零售价格
var otherPresetPriceOne = ""; //多单位-入库-其他价格
var otherPresetPriceTwo = ""; //多单位-出库-其他价格
var retailPriceTwo = ""; //多单位-出库-零售价格
var basicUnit = ""; //基础单位
var otherUnit = ""; //其他单位
if(!res.data[0].unit){
var ps = res.data[0].pricestrategy;
var psObj = JSON.parse(ps);
basicPresetPriceOne = psObj[0].basic.PresetPriceOne-0;
basicPresetPriceTwo = psObj[0].basic.PresetPriceTwo-0;
retailPriceOne = psObj[0].basic.RetailPrice-0;
otherPresetPriceOne = psObj[1].other.PresetPriceOne-0;
otherPresetPriceTwo = psObj[1].other.PresetPriceTwo-0;
retailPriceTwo = psObj[1].other.RetailPrice-0;
basicUnit = psObj[0].basic.Unit;
otherUnit = psObj[1].other.Unit;
}
body =$("#depotHeadFM .datagrid-body");
footer =$("#depotHeadFM .datagrid-footer");
input = ".datagrid-editable-input";
if(res.data[0].unit){ //如果存在计量单位信息
ratio = 1; //重置比例为1
body.find("[field='Unit']").find(input).val(res.data[0].unit); //设置-计量单位信息
body.find("[field='Unit']").find(input).prop("readonly","readonly"); //设置计量单位为只读
body.find("[field='Unit']").find(input).off("click"); //移除点击事件
body.find("[field='Unit']").find(input).attr("data-ratio",ratio); //修改比例缓存信息
}
if(res && res.code === 200) {
var info = res.data;
var commodityDecimal = info.commodityDecimal-0; //零售
var purchaseDecimal = info.purchaseDecimal-0; //采购
var commodityUnit = info.commodityUnit; //商品单位
body =$("#depotHeadFM .datagrid-body");
footer =$("#depotHeadFM .datagrid-footer");
input = ".datagrid-editable-input";
body.find("[field='Unit']").find(input).prop("readonly","readonly"); //设置计量单位为只读
body.find("[field='Unit']").find(input).val(commodityUnit); //设置单位
if(info.unit){ //如果存在计量单位信息
ratio = 1; //重置比例为1
loadRatio = ratio;
}
else {
var unitName = res.data[0].unitName;
var unitName = info.unitName;
if(unitName) {
ratio = unitName.substring(unitName.indexOf(":")+1).replace(")",""); //给比例赋值
unitName = unitName.substring(0, unitName.indexOf("("));
@@ -940,146 +937,29 @@
var unitArr = unitName.split(",");
var basicUnit = unitArr[0]; //基础单位
var otherUnit = unitArr[1]; //副单位
var unitSetInput =""; //单位
body.find("[field='Unit']").find(input).prop("readonly","readonly"); //设置计量单位为只读
var loadRatio = 1; //在单位输入框上面加载比例字段
if(listSubType === "采购" || listSubType === "采购退货" || listSubType === "采购订单"){
unitSetInput = res.data[0].firstinunit; //给单位文本框赋值
if(basicUnit==unitSetInput){ //基础单位等于选择的单位
loadRatio = 1;
}
else if(otherUnit==unitSetInput){ //副单位等于选择的单位
loadRatio = ratio;
}
}
else if(listSubType === "销售" || listSubType === "销售退货" || listSubType === "销售订单" || listSubType === "零售" || listSubType === "零售退货"){
unitSetInput = res.data[0].firstoutunit; //给单位文本框赋值
if(basicUnit==unitSetInput){ //基础单位等于选择的单位
loadRatio = 1;
}
else if(otherUnit==unitSetInput){ //副单位等于选择的单位
loadRatio = ratio;
}
}
body.find("[field='Unit']").find(input).val(unitSetInput).attr("data-ratio", loadRatio); //设置-首选单位
body.find("[field='Unit']").find(input).off("click").on("click",function(){
if(basicUnit && otherUnit) {
var self = this;
//定义模版
var temp = "<div class='unit-list'>";
temp +="<ul>";
temp +="<li data-type='basic' data-ratio='1'>" + basicUnit + "</li>";
temp +="<li data-type='other' data-ratio='" + ratio + "'>" + otherUnit + "</li>";
temp +="</ul>";
temp +="</div>";
if($('.unit-list').length){
$('.unit-list').remove(); //如果存在计量单位列表先移除
}
else {
$(self).after(temp); //加载列表信息
}
//计量单位列表的单击事件
$('.unit-list ul li').off("click").on("click",function(){
var unit = $(this).text();
var thisRatio = $(this).attr("data-ratio"); //获取比例
$(self).val(unit).attr("data-ratio", thisRatio);
$(self).keyup(); //模拟键盘操作
$('.unit-list').remove(); //移除计量单位列表
var stock = body.find("[field='Stock']").find(input).attr("data-stock"); //从缓存中取值
var type = $(this).attr("data-type");
var UnitPrice = 0;
if(type === "basic"){
if(listTitle == "采购订单列表" || listTitle == "采购入库列表" || listTitle == "销售退货列表" || listTitle == "其它入库列表") {
UnitPrice = basicPresetPriceOne;
loadRatio = ratio;
}
else if(listTitle == "销售订单列表" || listTitle == "销售出库列表" || listTitle == "采购退货列表" || listTitle == "其它出库列表" || listTitle == "调拨出库列表") {
UnitPrice = basicPresetPriceTwo;
loadRatio = 1;
}
else if(listTitle == "零售出库列表" || listTitle == "零售退货列表"){
UnitPrice = retailPriceOne;
loadRatio = 1;
}
body.find("[field='Stock']").find(input).val(stock*loadRatio); //修改库存
}
else if(type === "other"){
if(listTitle == "采购订单列表" || listTitle == "采购入库列表" || listTitle == "销售退货列表" || listTitle == "其它入库列表") {
UnitPrice = otherPresetPriceOne;
loadRatio = 1;
}
else if(listTitle == "销售订单列表" || listTitle == "销售出库列表" || listTitle == "采购退货列表" || listTitle == "其它出库列表" || listTitle == "调拨出库列表") {
UnitPrice = otherPresetPriceTwo;
loadRatio = ratio;
}
else if(listTitle == "零售出库列表" || listTitle == "零售退货列表"){
UnitPrice = retailPriceTwo;
loadRatio = ratio;
}
body.find("[field='Stock']").find(input).val((stock/loadRatio).toFixed(2)); //修改库存
}
body.find("[field='UnitPrice']").find(input).val(UnitPrice); //单价
var OperNumber = body.find("[field='OperNumber']").find(input).val(); //获取数量
var taxRate = body.find("[field='TaxRate']").find(input).val(); //获取税率
body.find("[field='TaxUnitPrice']").find(input).val((UnitPrice*(1+taxRate/100)).toFixed(2)); //含税单价
body.find("[field='AllPrice']").find(input).val((UnitPrice*OperNumber).toFixed(2)); //金额
body.find("[field='TaxMoney']").find(input).val((UnitPrice*OperNumber*(taxRate/100)).toFixed(2)); //税额
body.find("[field='TaxLastMoney']").find(input).val((UnitPrice*OperNumber*(1+taxRate/100)).toFixed(2)); //价税合计
statisticsFun(body,UnitPrice,OperNumber,footer,taxRate);
});
//点击空白处移除计量单位列表
$(".datagrid-body").off("click").on("click",function(){
$('.unit-list').remove(); //移除计量单位列表
});
}
});
if(basicUnit==commodityUnit){ //基础单位等于选择的单位
loadRatio = 1;
}
else if(otherUnit==commodityUnit){ //副单位等于选择的单位
loadRatio = ratio;
}
}
var detailPrice = 0; //明细列表-单价
if(listSubType == "零售" || listSubType == "零售退货") {
if(res.data[0].unit) { //如果存在计量单位信息
detailPrice = retailPrice;
}
else {
if (firstOutUnit == basicUnit) {
detailPrice = retailPriceOne;
}
else if (firstOutUnit == otherUnit) {
detailPrice = retailPriceTwo;
}
}
detailPrice = commodityDecimal;
}
else if(listTitle == "采购订单列表" || listTitle == "采购入库列表" || listTitle == "销售退货列表" || listTitle == "其它入库列表") {
if(res.data[0].unit) { //如果存在计量单位信息
detailPrice = presetPriceOne;
}
else {
if (firstInUnit == basicUnit) {
detailPrice = basicPresetPriceOne;
}
else if (firstInUnit == otherUnit) {
detailPrice = otherPresetPriceOne;
}
}
detailPrice = purchaseDecimal;
}
else if(listTitle == "销售订单列表" || listTitle == "销售出库列表" || listTitle == "采购退货列表" || listTitle == "其它出库列表" || listTitle == "调拨出库列表") {
if(res.data[0].unit) { //如果存在计量单位信息
detailPrice = presetPriceTwo;
}
else {
if(firstOutUnit==basicUnit) {
detailPrice = basicPresetPriceTwo;
}
else if(firstOutUnit==otherUnit){
detailPrice = otherPresetPriceTwo;
}
}
}
body.find("[field='OperNumber']").find(input).val(1); //数量初始化为1
//单价和总价赋值
if(!detailPrice) {
detailPrice = 0;
detailPrice = commodityDecimal;
}
//单价和总价赋值
if(!detailPrice) {
detailPrice = 0;
}
var operNumber = 1;
body.find("[field='OperNumber']").find(input).val(operNumber); //数量初始化
body.find("[field='UnitPrice']").find(input).val(detailPrice);
body.find("[field='AllPrice']").find(input).val(detailPrice);
var taxRate = body.find("[field='TaxRate']").find(input).val()-0; //获取税率
@@ -1092,7 +972,7 @@
var depotId = body.find("[field='DepotId']").find(".textbox-value").val();
if(depotId) {
var type = "select"; //type 类型:点击 click选择 select
findStockNumById(depotId, mId, monthTime, body, input, loadRatio, type);
findStockNumById(depotId, meId, monthTime, body, input, loadRatio, type);
}
}
},
@@ -1142,8 +1022,8 @@
columns:[[
{ title: '商品类型',field: 'MType',width:80, hidden:isShowMaterialTypeColumn},
{ title: depotHeadName,field: 'DepotName',editor:'validatebox',width:90},
{ title: '品名(型号)(扩展信息)(单位)',field: 'MaterialName',width:230},
{ title: '库存',field: 'Stock',width:70},
{ title: '条码_品名(规格)(型号)(扩展信息)(单位)',field: 'MaterialName',width:270},
{ title: '库存',field: 'Stock',width:50},
{ title: anotherDepotHeadName,field: 'AnotherDepotName',hidden:isShowAnotherDepot,width:90},
{ title: '单位',field: 'Unit',editor:'validatebox',width:60},
{ title: '数量',field: 'OperNumber',editor:'validatebox',width:60},
@@ -1154,12 +1034,7 @@
{ title: '税率',field: 'TaxRate',editor:'validatebox',hidden:isShowTaxColumn,width:75},
{ title: '税额',field: 'TaxMoney',editor:'validatebox',hidden:isShowTaxColumn,width:75},
{ title: '价税合计',field: 'TaxLastMoney',editor:'validatebox',hidden:isShowTaxColumn,width:75},
{ title: '备注',field: 'Remark',editor:'validatebox',width:120},
{ title: '品名-',field: 'OtherField1',editor:'validatebox',hidden:otherColumns,width:60},
{ title: '型号-',field: 'OtherField2',editor:'validatebox',hidden:otherColumns,width:60},
{ title: '颜色-',field: 'OtherField3',editor:'validatebox',hidden:otherColumns,width:60},
{ title: '备注1',field: 'OtherField4',editor:'validatebox',hidden:true,width:60},
{ title: '备注2',field: 'OtherField5',editor:'validatebox',hidden:true,width:60}
{ title: '备注',field: 'Remark',editor:'validatebox',width:100}
]],
onLoadError:function() {
$.messager.alert('页面加载提示','页面加载异常请稍后再试','error');
@@ -2549,7 +2424,7 @@
var DepotName = $(edDepot.target).combobox('getText');
$('#materialData').datagrid('getRows')[editIndex]['DepotName'] = DepotName;
//商品信息
var edMaterial = $('#materialData').datagrid('getEditor', {index:editIndex,field:'MaterialId'});
var edMaterial = $('#materialData').datagrid('getEditor', {index:editIndex,field:'MaterialExtendId'});
var MaterialName = $(edMaterial.target).combobox('getText');
$('#materialData').datagrid('getRows')[editIndex]['MaterialName'] = MaterialName;
$('#materialData').datagrid('endEdit', editIndex);
@@ -2646,7 +2521,7 @@
}
var totalRowNum = "";
for (var i = 0; i < row.length; i++) {
if (row[i].DepotId == "" || row[i].MaterialId == "" || row[i].OperNumber == "" || row[i].UnitPrice === "" || row[i].AllPrice === "") {
if (row[i].DepotId == "" || row[i].MaterialExtendId == "" || row[i].OperNumber == "" || row[i].UnitPrice === "" || row[i].AllPrice === "") {
totalRowNum += (i + 1) + "";
}
}

View File

@@ -36,6 +36,11 @@
<input name="searchName" id="searchName" class="easyui-textbox" style="width:100px;"/>
</td>
<td>&nbsp;</td>
<td>规格:</td>
<td>
<input name="searchStandard" id="searchStandard" class="easyui-textbox" style="width:100px;"/>
</td>
<td>&nbsp;</td>
<td>型号:</td>
<td>
<input name="searchModel" id="searchModel" class="easyui-textbox" style="width:100px;"/>
@@ -50,167 +55,96 @@
<table id="tableData" style="top:300px;border-bottom-color:#FFFFFF"></table>
</div>
<div id="materialDetailListDlg" class="easyui-dialog" style="width:900px;height:500px;padding:10px 20px" closed="true"
<div id="materialDetailListDlg" class="easyui-dialog" style="width:900px;height:520px;padding:10px 20px" closed="true"
modal="true" collapsible="false" closable="true">
<table id="materialTableData" style="top:50px;border-bottom-color:#FFFFFF"></table>
</div>
<div id="materialDlg" class="easyui-dialog" style="width:860px;height:440px;padding:10px 20px"
<div id="materialDlg" class="easyui-dialog" style="width:1200px;height:520px;padding:10px 20px"
closed="true" buttons="#dlg-buttons" modal="true" collapsible="false" closable="true">
<form id="materialFM" method="post" novalidate>
<div id="tt" class="easyui-tabs" style="width:800px;height:320px;">
<div id="tt" class="easyui-tabs" style="width:1150px;height:410px;">
<div title="基本信息" style="padding:20px;">
<table>
<tr>
<td style="width:60px; height:30px;">品名</td>
<td style="padding:5px;width:180px;">
<td style="width:80px; height:30px;">品名</td>
<td style="padding:5px;width:250px;">
<input name="Name" id="Name" class="easyui-textbox"
data-options="required:true,validType:'length[2,30]'"
style="width: 180px;"/>
</td>
<td style="width:80px;">型号</td>
<td style="padding:5px;width:180px;">
<input name="Model" id="Model" class="easyui-textbox"
data-options="required:true,validType:'length[1,30]'"
style="width: 180px;"/>
</td>
<td style="width:200px;"></td>
<td style="width:60px;">规格</td>
<td style="padding:5px;width:250px;">
<input name="Standard" id="Standard"
data-options="validType:'length[1,30]'" style="width: 180px;border: 1px solid #95B8E7;border-radius:5px;height: 30px"/>
</td>
<td style="width:60px;">单位</td>
<td style="padding:5px;width:250px;">
<input name="Unit" id="Unit"
data-options="validType:'length[1,30]'" style="width: 180px;height: 30px;border: 1px solid #95B8E7;border-radius:5px;"/>
<select name="manyUnit" id="manyUnit"
style="width:180px;display: none;height: 30px;border: 1px solid #95B8E7;border-radius:5px;"></select>
<input id="manyUnitCheck" type="checkbox"/>多单位
</td>
<td style="width:250px"></td>
</tr>
<tr>
<td style="width:80px;">型号</td>
<td style="padding:5px;">
<input name="Model" id="Model" class="easyui-textbox"
data-options="validType:'length[1,30]'" style="width: 180px;"/>
</td>
<td style="height:30px;">颜色</td>
<td style="padding:5px">
<input name="Color" id="Color"
data-options="validType:'length[1,30]'" style="width: 180px;border: 1px solid #95B8E7;border-radius:5px;height: 30px"/>
</td>
<td style="height:30px;">类别</td>
<td style="padding:5px" colspan="3">
<td style="padding:5px">
<input name="parentName" id="parentName" class="easyui-textbox" style="width: 180px;" readonly="readonly"/>
<a href="javascript:void(0)" class="l-btn l-btn-plain" group="" id="lookForMaterialCategory">
<span class="l-btn-left"><span class="l-btn-text icon-search l-btn-icon-left" style="height: 20px;"></span></span></a>
<input name="parentid" id="parentid" type="hidden"/>
</td>
<td></td>
<td style="text-align: left;"></td>
</tr>
<tr>
<td style="width:80px;">序列号</td>
<td style="padding:5px;width:180px;">
<td style="padding:5px;">
<select name="EnableSerialNumber" id="EnableSerialNumber"
style="width:180px;height: 30px;border: 1px solid #95B8E7;border-radius:5px;">
style="width:180px;height: 30px;border: 1px solid #95B8E7;border-radius:5px;">
<option value="1">有</option>
<option value="0">无</option>
</select>
</td>
<td></td>
</tr>
<tr>
<td style="height:30px;">备注</td>
<td style="padding:5px" colspan="3">
<textarea name="Remark" id="Remark" class="easyui-textbox" data-options="multiline:true" placeholder="暂无备注信息"
style="width: 468px; height:40px;"></textarea>
</td>
<td></td>
</tr>
</table>
</div>
<div title="价格信息" style="padding:20px;">
<table>
<tr>
<td style="height:30px;">安全存量</td>
<td style="padding:5px">
<input name="SafetyStock" id="SafetyStock" class="easyui-textbox"
data-options="validType:'length[1,30]'" style="width: 180px;"/>
</td>
<td>单位</td>
<td style="padding:5px">
<input name="Unit" id="Unit"
data-options="validType:'length[1,30]'" style="width: 180px;height: 30px;border: 1px solid #95B8E7;border-radius:5px;"/>
<select name="manyUnit" id="manyUnit"
style="width:180px;display: none;height: 30px;border: 1px solid #95B8E7;border-radius:5px;"></select>
</td>
<td style="text-align: left;">
<input id="manyUnitCheck" type="checkbox"/>多单位
</td>
<td style="height:30px;"></td>
<td style="padding:5px"></td>
<td style="text-align: left;"></td>
</tr>
<tr class="first-select-unit">
<td style="height:30px;">首选销售单位</td>
<td style="padding:5px">
<select name="FirstOutUnit" id="FirstOutUnit" style="width:180px; height: 30px;border: 1px solid #95B8E7;border-radius:5px;"></select>
</td>
<td>首选采购单位</td>
<td style="padding:5px">
<select name="FirstInUnit" id="FirstInUnit" style="width:180px; height: 30px;border: 1px solid #95B8E7;border-radius:5px;"></select>
<tr>
<td style="height:30px;">备注</td>
<td style="padding:5px" colspan="5">
<textarea name="Remark" id="Remark" class="easyui-textbox" data-options="multiline:true" placeholder="暂无备注信息"
style="width: 925px; height:40px;"></textarea>
</td>
<td></td>
</tr>
<tr class="price-list">
<td colspan="5" style="height:30px;">
<table width="700px">
<tr>
<td width="150px" height="25px"><b>价格列表</b></td>
<td width="150px">计量单位</td>
<td width="18%">零售价</td>
<td width="18%">最低售价</td>
<td width="18%">预计采购价</td>
<td width="18%">销售价</td>
</tr>
<tr>
<td>基本单位</td>
<td style="border: 1px solid #95B8E7;border-radius:5px;"><span id="basicUnit"></span></td>
<td><input id="basicRetailPrice" style="height:30px;border: 1px solid #95B8E7;border-radius:5px;"/></td>
<td><input id="basicLowPrice" style="height:30px;border: 1px solid #95B8E7;border-radius:5px;"/></td>
<td><input id="basicPresetPriceOne" style="height:30px;border: 1px solid #95B8E7;border-radius:5px;"/></td>
<td><input id="basicPresetPriceTwo" style="height:30px;border: 1px solid #95B8E7;border-radius:5px;"/></td>
</tr>
<tr>
<td>副单位</td>
<td style="border: 1px solid #95B8E7;border-radius:5px;"><span id="otherUnit"></span></td>
<td><input id="otherRetailPrice" style="height:30px;border: 1px solid #95B8E7;border-radius:5px;"/></td>
<td><input id="otherLowPrice" style="height:30px;border: 1px solid #95B8E7;border-radius:5px;"/></td>
<td><input id="otherPresetPriceOne" style="height:30px;border: 1px solid #95B8E7;border-radius:5px;"/></td>
<td><input id="otherPresetPriceTwo" style="height:30px;border: 1px solid #95B8E7;border-radius:5px;"/></td>
</tr>
</table>
<tr>
<td colspan="7">
<table id="materialExtendData" style="top:100px;border-bottom-color:#FFFFFF"></table>
</td>
</tr>
<tr class="price-one">
<td style="height:30px;">零售价</td>
<td style="padding:5px"><input name="RetailPrice" id="RetailPrice" class="easyui-textbox"
data-options="validType:'length[1,30]'"
style="width: 180px;"/></td>
<td>最低售价</td>
<td style="padding:5px"><input name="LowPrice" id="LowPrice" class="easyui-textbox"
data-options="validType:'length[1,30]'"
style="width: 180px;"/></td>
<td></td>
</tr>
<tr class="price-two">
<td style="height:30px;">预计采购价</td>
<td style="padding:5px"><input name="PresetPriceOne" id="PresetPriceOne"
class="easyui-textbox"
data-options="validType:'length[1,30]'"
style="width: 180px;"/></td>
<td>销售价</td>
<td style="padding:5px"><input name="PresetPriceTwo" id="PresetPriceTwo"
class="easyui-textbox"
data-options="validType:'length[1,30]'"
style="width: 180px;"/></td>
<td></td>
</tr>
</table>
</div>
<div title="扩展信息" style="padding:20px;">
<table class="tb-other-info">
<tr class="tr-color">
<td style="width:60px; height:30px;">颜色</td>
<td style="padding:5px">
<input name="Color" id="Color"
data-options="validType:'length[1,30]'" style="width: 250px;border: 1px solid #95B8E7;border-radius:5px;height: 30px"/>
</td>
</tr>
<tr class="tr-standard">
<td>规格</td>
<td style="padding:5px">
<input name="Standard" id="Standard"
data-options="validType:'length[1,30]'" style="width: 250px;border: 1px solid #95B8E7;border-radius:5px;height: 30px"/>
</td>
</tr>
<tr class="tr-mfrs">
<td>制造商</td>
<td style="width:80px;">制造商</td>
<td style="padding:5px">
<input name="Mfrs" id="Mfrs"
data-options="validType:'length[1,30]'" style="width: 250px;border: 1px solid #95B8E7;border-radius:5px;height: 30px"/>
@@ -253,7 +187,7 @@
</div>
<!-- 导入excel表格 -->
<div id="importExcelDlg" class="easyui-dialog" style="width:400px; padding:10px 20px;"
<div id="importExcelDlg" class="easyui-dialog" style="width:450px; padding:10px 20px;"
closed="true" buttons="#dlg-buttons5" modal="true" collapsible="false" closable="true">
<form id="importExcelFM" method="post" enctype="multipart/form-data" action="/material/importExcel">
<div class="fitem" style="padding:5px">
@@ -276,12 +210,14 @@
closed="true" modal="true" cache="false" collapsible="false" closable="true">
</div>
<script type="text/javascript">
var editIndex = undefined;
var materialCategoryList = null;
var types = "";
var multiple = 0; //倍数
var mPropertyList = null; //商品属性列表
var mPropertyListShort = ""; //商品属性列表-传值
var clickType = ""; //记录从哪里点击的类别弹窗
// var maxBarCode = getMaxBarCode();
//初始化界面
$(function () {
//初始化系统基础信息
@@ -367,10 +303,6 @@
//当前为选中状态
$("#Unit").hide();
$("#manyUnit").show();
$(".first-select-unit").show();
$(".price-list").show();
$(".price-one").hide();
$(".price-two").hide();
$("#Unit").val(""); //清除单位的填写内容
$("#RetailPrice").val("");
@@ -382,10 +314,6 @@
//当前为不选中状态
$("#Unit").show();
$("#manyUnit").hide();
$(".first-select-unit").hide();
$(".price-list").hide();
$(".price-one").show();
$(".price-two").show();
$("#manyUnit").val(""); //清除多单位的下拉框
$("#FirstOutUnit").val("");
@@ -526,6 +454,7 @@
}
},
{title: '品名', field: 'name', width: 120},
{title: '规格', field: 'standard', width: 80},
{title: '型号', field: 'model', width: 80},
{title: '类别', field: 'categoryName', width: 80},
{title: '扩展信息', field: 'materialOther', width: 150},
@@ -546,26 +475,10 @@
return str;
}
},
{title: '零售价', field: 'retailprice', width: 60,
formatter: function (value, rec) {
return parsePrice(value, rec, "retailprice");
}
},
{title: '最低售价', field: 'lowprice', width: 70,
formatter: function (value, rec) {
return parsePrice(value, rec, "lowprice");
}
},
{title: '预计采购价', field: 'presetpriceone', width: 70,
formatter: function (value, rec) {
return parsePrice(value, rec, "presetpriceone");
}
},
{title: '销售价', field: 'presetpricetwo', width: 70,
formatter: function (value, rec) {
return parsePrice(value, rec, "presetpricetwo");
}
},
{title: '采购价', field: 'purchaseDecimal', width: 70},
{title: '零售价', field: 'commodityDecimal', width: 70},
{title: '销售价', field: 'wholesaleDecimal', width: 70},
{title: '最低售价', field: 'lowDecimal', width: 70},
{
title: '状态', field: 'enabled', width: 50, align: "center", formatter: function (value) {
return value ? "启用" : "禁用";
@@ -644,7 +557,7 @@
//初始化表格数据
function initMaterialDetailData(mId) {
$('#materialTableData').datagrid({
height: heightInfo,
height: heightInfo-50,
nowrap: false,
rownumbers: false,
//动画效果
@@ -1024,10 +937,6 @@
//根据商品属性架子啊
function bindMProperty() {
var trColor = $(".tr-color").html();
trColor = '<tr class="tr-color">' + trColor + '</tr>';
var trStandard = $(".tr-standard").html();
trStandard = '<tr class="tr-standard">' + trStandard + '</tr>';
var trMfrs = $(".tr-mfrs").html();
trMfrs = '<tr class="tr-mfrs">' + trMfrs + '</tr>';
var trOtherField1 = $(".tr-otherField1").html();
@@ -1039,26 +948,6 @@
//表格模板变更
$(".tb-other-info").html("");
for (var i = 0; i < mPropertyList.length; i++) {
if (mPropertyList[i].nativename === "颜色") {
$(".tb-other-info").append(trColor);
$(".tr-color td").first().text(mPropertyList[i].anothername);
if (mPropertyList[i].enabled) {
$(".tr-color").show();
}
else {
$(".tr-color").hide();
}
}
if (mPropertyList[i].nativename === "规格") {
$(".tb-other-info").append(trStandard);
$(".tr-standard td").first().text(mPropertyList[i].anothername);
if (mPropertyList[i].enabled) {
$(".tr-standard").show();
}
else {
$(".tr-standard").hide();
}
}
if (mPropertyList[i].nativename === "制造商") {
$(".tb-other-info").append(trMfrs);
$(".tr-mfrs td").first().text(mPropertyList[i].anothername);
@@ -1106,23 +995,17 @@
if(checkPower()){
return;
}
$('#materialFM input').val(""); //将输入框全部清空
$('#materialFM').form('clear');
initTableDataExtend('add','0');
bindMProperty(); //根据商品属性绑定
// $("#EnableSerialNumber").combobox('setValue','0');
$("#EnableSerialNumber").val('0');
$('#materialDlg').dialog('open').dialog('setTitle', '<img src="/js/easyui/themes/icons/edit_add.png"/>&nbsp;增加商品信息');
$(".window-mask").css({width: webW, height: webH});
$("#Name").val("").focus();
$("#manyUnitCheck").prop("checked", false);
$("#manyUnit").val(""); //置空
//当前为不选中状态
$("#Unit").show();
$("#manyUnit").hide();
$(".first-select-unit").hide();
$(".price-list").hide();
$(".price-one").show();
$(".price-two").show();
//选中基本资料tab
$("#materialFM #tt .tabs li").first().click();
oldName = "";
@@ -1140,6 +1023,89 @@
initDepotList(materialID); //加载仓库列表页面
}
//商品价格扩展
function initTableDataExtend(type,materialId){
$('#materialExtendData').datagrid({
width:1000,
height:150,
rownumbers: false,
//动画效果
animate:false,
//选中单行
singleSelect : true,
collapsible:false,
selectOnCheck:false,
//单击行是否选中
checkOnSelect : false,
pagination: false,
//交替出现背景
striped : true,
showFooter: true,
//loadFilter: pagerFilter,
onClickRow: onClickRow,
columns:[[
{ field: 'Id',field: 'Id',width:35,align:"center",checkbox:true},
{ title: '条码',field: 'BarCode',editor:'validatebox',width:200},
{ title: '单位',field: 'CommodityUnit',editor:'validatebox',width:70},
{ title: '采购价',field: 'PurchaseDecimal',editor:'validatebox',width:70},
{ title: '零售价',field: 'CommodityDecimal',editor:'validatebox',width:70},
{ title: '销售价',field: 'WholesaleDecimal',editor:'validatebox',width:70},
{ title: '最低售价',field: 'LowDecimal',editor:'validatebox',width:70},
]],
toolbar:[
{
id:'append',
text:'新增',
iconCls:'icon-add',
handler:function()
{
append(); //新增
}
},
{
id:'delete',
text:'删除',
iconCls:'icon-remove',
handler:function()
{
removeit(); //删除
}
},
{
id:'reject',
text:'撤销',
iconCls:'icon-undo',
handler:function()
{
reject(); //撤销
}
}
],
onLoadError:function()
{
$.messager.alert('页面加载提示','页面加载异常,请稍后再试!','error');
return;
}
});
$.ajax({
type:"get",
url: '/materialsExtend/getDetailList',
data: {
materialId: materialId
},
dataType: "json",
success: function (res) {
if(res && res.code === 200) {
$("#materialExtendData").datagrid('loadData',res.data);
}
},
error:function() {
$.messager.alert('查询提示','查询数据后台异常,请稍后再试!','error');
}
});
}
//检查商品名称是否存在 ++ 重名无法提示问题需要跟进
function checkIsExist() {
var mName = $.trim($("#Name").val());
@@ -1204,10 +1170,6 @@
$.messager.alert('提示', '品名不能为空!', 'warning');
return;
}
if (!$('#Model').val()) {
$.messager.alert('提示', '型号不能为空!', 'warning');
return;
}
if(!$("#Unit").val() && !$("#manyUnit").val()) {
$.messager.alert('提示', '单位为必填项!', 'warning');
return;
@@ -1252,6 +1214,7 @@
stockObj.number = val;
stockArr.push(stockObj);
});
objInfo = accept(objInfo); //商品价格扩展
objInfo.stock = JSON.stringify(stockArr);
$.ajax({
type: "post",
@@ -1310,7 +1273,6 @@
$("#parentName").textbox("setValue", rowsdata.categoryName);
mId = rowsdata.categoryid;
mName = rowsdata.categoryName;
$("#Packing").textbox("setValue", rowsdata.packing);
$("#SafetyStock").textbox("setValue", rowsdata.safetystock);
$("#Model").textbox("setValue", rowsdata.model);
$("#Standard").val(rowsdata.standard);
@@ -1320,10 +1282,10 @@
$("#OtherField2").val(rowsdata.otherfield2);
$("#OtherField3").val(rowsdata.otherfield3);
$("#Unit").val(rowsdata.unit);
$("#RetailPrice").textbox("setValue", rowsdata.retailprice);
$("#LowPrice").textbox("setValue", rowsdata.lowprice);
$("#PresetPriceOne").textbox("setValue", rowsdata.presetpriceone);
$("#PresetPriceTwo").textbox("setValue", rowsdata.presetpricetwo);
// $("#RetailPrice").textbox("setValue", rowsdata.retailprice);
// $("#LowPrice").textbox("setValue", rowsdata.lowprice);
// $("#PresetPriceOne").textbox("setValue", rowsdata.presetpriceone);
// $("#PresetPriceTwo").textbox("setValue", rowsdata.presetpricetwo);
$("#Remark").textbox("setValue", rowsdata.remark);
$("#manyUnit").val(rowsdata.unitid);
if (rowsdata.unitid) {
@@ -1331,10 +1293,6 @@
//当前为选中状态
$("#Unit").hide();
$("#manyUnit").show();
$(".first-select-unit").show();
$(".price-list").show();
$(".price-one").hide();
$(".price-two").hide();
var selectItem = $("#manyUnit").children('option:selected').text();
if (selectItem !== "()") {
var firstOutUnitOptions = selectItem.substring(0, selectItem.indexOf("("));
@@ -1354,44 +1312,8 @@
//当前为不选中状态
$("#Unit").show();
$("#manyUnit").hide();
$(".first-select-unit").hide();
$(".price-list").hide();
$(".price-one").show();
$(".price-two").show();
}
//单独查询商品的价格列表
$.ajax({
url: '/material/findById',
data: {
id: rowsdata.id
},
type: "get",
dataType: "json",
success: function (res) {
if (res && res.code === 200 && res.data && res.data[0]) {
var PriceStrategy = res.data[0].pricestrategy;
PriceStrategy = JSON.parse(PriceStrategy);
if (PriceStrategy && PriceStrategy[0] && PriceStrategy[1]) {
//基本单位
$("#basicUnit").text(PriceStrategy[0].basic.Unit);
$("#basicRetailPrice").val(PriceStrategy[0].basic.RetailPrice);
$("#basicLowPrice").val(PriceStrategy[0].basic.LowPrice);
$("#basicPresetPriceOne").val(PriceStrategy[0].basic.PresetPriceOne);
$("#basicPresetPriceTwo").val(PriceStrategy[0].basic.PresetPriceTwo);
//副单位
$("#otherUnit").text(PriceStrategy[1].other.Unit);
$("#otherRetailPrice").val(PriceStrategy[1].other.RetailPrice);
$("#otherLowPrice").val(PriceStrategy[1].other.LowPrice);
$("#otherPresetPriceOne").val(PriceStrategy[1].other.PresetPriceOne);
$("#otherPresetPriceTwo").val(PriceStrategy[1].other.PresetPriceTwo);
}
}
},
error: function () {
}
});
initTableDataExtend('edit',rowsdata.id);
oldName = rowsdata.name;
oldModel = rowsdata.model;
oldColor = rowsdata.color;
@@ -1425,7 +1347,7 @@
json.depotList = res.data;
$.ajax({
type: "get",
url: "../../../pages/template/init_depot_list.html?61",
url: "../../../pages/template/init_depot_list.html?2121",
async: false,
success: function (tem) {
if (tem) {
@@ -1455,9 +1377,9 @@
}
});
function showMaterialDetails(pageNo, pageSize) {
var name = $.trim($("#searchName").val());
var standard = $.trim($("#searchStandard").val());
var model = $.trim($("#searchModel").val());
$.ajax({
type: "get",
@@ -1466,6 +1388,7 @@
data: ({
search: JSON.stringify({
name: name,
standard: standard,
model: model,
categoryIds: types,
mpList: mPropertyListShort
@@ -1494,6 +1417,7 @@
$("#searchParentName").textbox("clear");
$("#searchParentId").val("");
$("#searchName").textbox("clear");
$("#searchStandard").textbox("clear");
$("#searchModel").textbox("clear");
types = ""; //清空类别
//加载完以后重新初始化
@@ -1596,6 +1520,116 @@
materialCategoryDlgFun();
});
//单击
function onClickRow(index) {
if (editIndex != index) {
if (endEditing()) {
$('#materialExtendData').datagrid('selectRow', index)
.datagrid('beginEdit', index);
editIndex = index;
} else {
$('#materialExtendData').datagrid('selectRow', editIndex);
}
}
}
//结束编辑
function endEditing() {
if (editIndex == undefined) { return true }
if ($('#materialExtendData').datagrid('validateRow', editIndex)) {
$('#materialExtendData').datagrid('endEdit', editIndex);
editIndex = undefined;
return true;
} else {
return false;
}
}
//新增
function append() {
if (endEditing()) {
$('#materialExtendData').datagrid('appendRow', {});
editIndex = $('#materialExtendData').datagrid('getRows').length - 1;
$('#materialExtendData').datagrid('selectRow', editIndex).datagrid('beginEdit', editIndex);
var ed = $('#materialExtendData').datagrid('getEditor', {index:editIndex,field:'BarCode'});
var thisBarCode = getMaxBarCode();
if(!thisBarCode) {
thisBarCode = "1000";
}
$(ed.target).val(Number(thisBarCode)+1);
}
}
//查询最新条码
function getMaxBarCode(){
var barCode = "";
$.ajax({
type:"get",
url: '/material/getMaxBarCode',
async: false,
dataType: "json",
success: function (res) {
if(res && res.code === 200) {
barCode = res.data.barCode;
}
},
error:function() {
$.messager.alert('查询提示','查询数据后台异常,请稍后再试!','error');
}
});
return barCode;
}
//删除
function removeit() {
if (editIndex == undefined) { return }
$('#materialExtendData').datagrid('cancelEdit', editIndex)
.datagrid('deleteRow', editIndex);
editIndex = undefined;
}
//撤销
function reject() {
$('#materialExtendData').datagrid('rejectChanges');
editIndex = undefined;
}
//判断
function CheckData() {
var row = $('#materialExtendData').datagrid('getRows');
var totalRowNum = "";
for (var i = 0; i < row.length; i++) {
if (row[i].BarCode == "") {
totalRowNum += (i + 1) + "";
}
if (row[i].CommodityUnit == "") {
totalRowNum += (i + 1) + "";
}
}
if (totalRowNum != "") {
var totalRowNum = totalRowNum.substring(0, totalRowNum.length - 1);
$.messager.alert('提示',"" + totalRowNum + "行数据填写不完整",'info');
return false;
}
return true;
}
//商品价格扩展
function accept(objInfo) {
append();
removeit();
if ($("#materialExtendData").datagrid('getChanges').length) {
if (!CheckData())
return false;
objInfo.inserted = $("#materialExtendData").datagrid('getChanges', "inserted");
objInfo.deleted = $("#materialExtendData").datagrid('getChanges', "deleted");
objInfo.updated = $("#materialExtendData").datagrid('getChanges', "updated");
}
if (endEditing()) {
$('#materialExtendData').datagrid('acceptChanges');
}
return objInfo;
}
</script>
</body>
</html>

View File

@@ -1,8 +1,8 @@
<table>
{{#depotList}}
<tr>
<td style="width:100px;float:left;">{{name}}</td>
<td>
<td style="width:100px;height:30px;line-height:30px;padding:5px;float:left;">{{name}}</td>
<td style="padding:5px">
<input type="text" id="depot{{id}}" data-id="{{id}}" class="depot" style="width: 250px;border: 1px solid #95B8E7;border-radius:5px;height: 30px" value="{{stock}}"/>
</td>
</tr>