Merge remote-tracking branch 'origin/master'
# Conflicts: # ruoyi-ui/src/lang/zh.js
This commit is contained in:
@@ -116,6 +116,6 @@ public class InStockinDetailController extends BaseController
|
||||
@Log(title = "入库单据", businessType = BusinessType.INSERT)
|
||||
@PostMapping("barcodePrinting")
|
||||
public AjaxResult barcodePrinting(@RequestBody Map<String,Object> param) {
|
||||
return toAjax(inStockinDetailService.barcodePrinting(param));
|
||||
return inStockinDetailService.barcodePrinting(param);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.ruoyi.in.stockindetail.service;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.in.stockin.domain.InStockin;
|
||||
import com.ruoyi.in.stockindetail.domain.InStockinDetail;
|
||||
|
||||
@@ -76,5 +77,5 @@ public interface IInStockinDetailService
|
||||
|
||||
void deleteInStockinDetailByStockinGuid(String stockinGuid);
|
||||
|
||||
int barcodePrinting(Map<String,Object> stockinDetailId);
|
||||
AjaxResult barcodePrinting(Map<String,Object> stockinDetailId);
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import cn.hutool.json.JSONUtil;
|
||||
import com.ruoyi.common.core.domain.AjaxResult;
|
||||
import com.ruoyi.common.domain.ExtraField;
|
||||
import com.ruoyi.in.stockin.domain.InStockin;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
@@ -116,8 +117,8 @@ public class InStockinDetailServiceImpl implements IInStockinDetailService
|
||||
}
|
||||
|
||||
@Override
|
||||
public int barcodePrinting(Map<String,Object> map) {
|
||||
System.out.println(map);
|
||||
return 0;
|
||||
public AjaxResult barcodePrinting(Map<String,Object> map) {
|
||||
//System.out.println(map);
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -98,6 +98,7 @@ public class SysLoginController
|
||||
@GetMapping("/changeLanguage")
|
||||
public AjaxResult changeLanguage(String lang)
|
||||
{
|
||||
|
||||
return AjaxResult.success();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,7 +47,7 @@ export default {
|
||||
}
|
||||
// 判断是否为首页
|
||||
if (!this.isDashboard(matched[0])) {
|
||||
matched = [{ path: "/index", meta: { title: "首页" } }].concat(matched)
|
||||
matched = [{ path: "/index", meta: { title: '首页' } }].concat(matched)
|
||||
}
|
||||
this.levelList = matched.filter(item => item.meta && item.meta.title && item.meta.breadcrumb !== false)
|
||||
},
|
||||
|
||||
@@ -10,6 +10,9 @@
|
||||
<el-dropdown-item :disabled="language==='en_US'" command="en_US">
|
||||
English
|
||||
</el-dropdown-item>
|
||||
<el-dropdown-item :disabled="language==='hu'" command="hu">
|
||||
Magyarország
|
||||
</el-dropdown-item>
|
||||
</el-dropdown-menu>
|
||||
</el-dropdown>
|
||||
</template>
|
||||
|
||||
@@ -626,6 +626,23 @@ export default {
|
||||
|
||||
},
|
||||
|
||||
viewsMain: {
|
||||
title: 'homePage',
|
||||
unfinishedInboundTask: 'Unfinished Inbound Task Overview',
|
||||
taskKey: 'Task Key',
|
||||
unfinishedInboundTaskName: 'Unfinished Inbound Task',
|
||||
totalUnfinishedCount: 'Total Unfinished Count',
|
||||
todayUnfinishedCount: 'Today Unfinished Count',
|
||||
finishedInboundTask: 'Finished Inbound Task Overview',
|
||||
finishedInboundTaskName: 'Finished Inbound Task',
|
||||
totalFinishedCount: 'Total Finished Count',
|
||||
todayFinishedCount: 'Today Finished Count',
|
||||
unfinishedOutboundTask: 'Unfinished Outbound Task Overview',
|
||||
unfinishedOutboundTaskName: 'Unfinished Outbound Task',
|
||||
finishedOutboundTask: 'Finished Outbound Task Overview',
|
||||
finishedOutboundTaskName: 'Finished Outbound Task'
|
||||
},
|
||||
|
||||
searchViewStockSecure: {
|
||||
stockId: 'Stock ID',
|
||||
cargoSpaceId: 'Cargo Space ID',
|
||||
|
||||
2806
ruoyi-ui/src/lang/hu.js
Normal file
2806
ruoyi-ui/src/lang/hu.js
Normal file
File diff suppressed because it is too large
Load Diff
@@ -3,8 +3,10 @@ import VueI18n from 'vue-i18n'
|
||||
import Cookies from 'js-cookie'
|
||||
import elementEnLocale from 'element-ui/lib/locale/lang/en' // element-ui lang
|
||||
import elementZhLocale from 'element-ui/lib/locale/lang/zh-CN'// element-ui lang
|
||||
import elementHuLocale from 'element-ui/lib/locale/lang/hu'// element-ui lang
|
||||
import enLocale from './en'
|
||||
import zhLocale from './zh'
|
||||
import huLocale from './hu'
|
||||
|
||||
Vue.use(VueI18n)
|
||||
|
||||
@@ -16,12 +18,16 @@ const messages = {
|
||||
zh_CN: {
|
||||
...zhLocale,
|
||||
...elementZhLocale
|
||||
},
|
||||
hu:{
|
||||
...huLocale,
|
||||
...elementHuLocale
|
||||
}
|
||||
}
|
||||
|
||||
const i18n = new VueI18n({
|
||||
// 设置语言 选项 en | zh
|
||||
locale: Cookies.get('language') || 'zh_CN',
|
||||
locale: Cookies.get('language') || 'zh_CN'|| 'hu' ,
|
||||
// 设置文本内容
|
||||
messages
|
||||
})
|
||||
|
||||
@@ -632,6 +632,218 @@ export default {
|
||||
|
||||
|
||||
},
|
||||
|
||||
searchViewStockSecure: {
|
||||
stockId: '库存ID',
|
||||
cargoSpaceId: '货位ID',
|
||||
stockStatus: '库存状态',
|
||||
productStatus: '物料状态',
|
||||
lotNo: '批次号',
|
||||
inDate: '入库时间',
|
||||
backDate: '回流时间',
|
||||
productGuid: '物料GUID',
|
||||
quantity: '库存数量',
|
||||
jobId: '作业ID',
|
||||
trayCode: '托盘条码',
|
||||
outQuantity: '出库数量',
|
||||
stockinDetailId: '入库子单ID',
|
||||
stockinId: '入库主单',
|
||||
inType: '入库类型',
|
||||
inputStockId: '请输入库存ID',
|
||||
inputCargoSpaceId: '请输入货位ID',
|
||||
selectStockStatus: '请选择库存状态',
|
||||
selectProductStatus: '请选择物料状态',
|
||||
inputLotNo: '请输入批次号',
|
||||
inputInDate: '请输入入库时间',
|
||||
inputBackDate: '请输入回流时间',
|
||||
inputProductGuid: '请输入物料GUID',
|
||||
inputContent: '请输入内容',
|
||||
inputJobId: '请输入作业ID',
|
||||
inputTrayCode: '请输入托盘条码',
|
||||
inputStockinDetailId: '请输入入库子单ID',
|
||||
inputStockinId: '请输入入库主单',
|
||||
selectInType: '请选择入库类型',
|
||||
confirm: '确定',
|
||||
cancel: '取消',
|
||||
stockIdRequired: '库存ID不能为空',
|
||||
addTitle: '添加安全库存查询',
|
||||
editTitle: '修改安全库存查询',
|
||||
addSuccess: '新增成功',
|
||||
editSuccess: '修改成功',
|
||||
deleteSuccess: '删除成功',
|
||||
deleteConfirm: '是否确认删除安全库存查询编号为"{stockIds}"的数据项?'
|
||||
},
|
||||
// *************供应商管理***************
|
||||
BasSupplier: {
|
||||
// 字段
|
||||
supplierNo: '供应商编号',
|
||||
supplierGroupNo: '供应商组编号',
|
||||
supplierName: '供应商名称',
|
||||
simpleName: '简称',
|
||||
useable: '是否可用',
|
||||
remark: '备注',
|
||||
supplierArae: '地区分类',
|
||||
taxpayerRegistrationNumber: '纳税人登记号',
|
||||
country: '国家',
|
||||
timeZone: '时区',
|
||||
dataFormat: '数据格式',
|
||||
receivingCountry: '收货国家',
|
||||
taxCategory: '税类',
|
||||
legalPerson: '法人',
|
||||
registeredCapital: '注册资金',
|
||||
address: '企业地址',
|
||||
contactName: '联系人姓名',
|
||||
contactNumber: '联系电话',
|
||||
operation: '操作',
|
||||
|
||||
// 输入框提示
|
||||
inputSupplierNo: '请输入供应商编号',
|
||||
inputSupplierGroupNo: '请输入供应商组编号',
|
||||
inputSupplierName: '请输入供应商名称',
|
||||
inputSimpleName: '请输入简称',
|
||||
inputUseable: '请输入是否可用',
|
||||
inputRemark: '请输入备注',
|
||||
inputSupplierArae: '请输入地区分类',
|
||||
inputTaxpayerRegistrationNumber: '请输入纳税人登记号',
|
||||
inputCountry: '请输入国家',
|
||||
inputTimeZone: '请输入时区',
|
||||
inputDataFormat: '请输入数据格式',
|
||||
inputReceivingCountry: '请输入收货国家',
|
||||
inputTaxCategory: '请输入税类',
|
||||
inputLegalPerson: '请输入法人',
|
||||
inputRegisteredCapital: '请输入注册资金',
|
||||
inputAddress: '请输入企业地址',
|
||||
inputContactName: '请输入联系人姓名',
|
||||
inputContactNumber: '请输入联系电话',
|
||||
|
||||
// 按钮文本
|
||||
search: '搜索',
|
||||
reset: '重置',
|
||||
add: '新增',
|
||||
edit: '修改',
|
||||
delete: '删除',
|
||||
export: '导出',
|
||||
confirm: '确定',
|
||||
cancel: '取消',
|
||||
|
||||
// 对话框标题
|
||||
addTitle: '添加供应商管理',
|
||||
editTitle: '修改供应商管理',
|
||||
|
||||
// 成功提示
|
||||
addSuccess: '新增成功',
|
||||
editSuccess: '修改成功',
|
||||
deleteSuccess: '删除成功',
|
||||
|
||||
// 删除确认提示
|
||||
deleteConfirm: '是否确认删除供应商管理编号为{ids}的数据项?',
|
||||
|
||||
// 表单校验提示
|
||||
fidRequired: 'fid不能为空',
|
||||
useableRequired: '是否可用不能为空'
|
||||
},
|
||||
|
||||
// *************物料管理***************
|
||||
BasProduct: {
|
||||
productId: '物料编码',
|
||||
inputProductId: '请输入物料编码',
|
||||
productName: '物料名称',
|
||||
inputProductName: '请输入物料名称',
|
||||
spare1: '英文描述',
|
||||
inputSpare1: '请输入英文描述',
|
||||
unit: '单位',
|
||||
inputUnit: '请输入单位',
|
||||
spare2: '单件净重KG',
|
||||
inputSpare2: '请输入单件净重',
|
||||
spare3: '箱号',
|
||||
inputSpare3: '请输入箱号',
|
||||
spare4: '包装方式',
|
||||
inputSpare4: '请输入包装方式',
|
||||
spare5: '长MM',
|
||||
inputSpare5: '请输入长度',
|
||||
spare6: '宽MM',
|
||||
inputSpare6: '请输入宽度',
|
||||
spare7: '高MM',
|
||||
inputSpare7: '请输入高度',
|
||||
spare8: '体积m³',
|
||||
inputSpare8: '请输入体积m³',
|
||||
price: '价格',
|
||||
inputPrice: '请输入价格',
|
||||
remark: '描述',
|
||||
inputRemark: '请输入描述',
|
||||
search: '搜索',
|
||||
reset: '重置',
|
||||
add: '新增',
|
||||
edit: '修改',
|
||||
delete: '删除',
|
||||
export: '导出',
|
||||
confirm: '确定',
|
||||
cancel: '取消',
|
||||
operation: '操作',
|
||||
addTitle: '添加物料管理',
|
||||
editTitle: '修改物料管理',
|
||||
deleteConfirm: '是否确认删除物料管理编号为"{productGuids}"的数据项?',
|
||||
addSuccess: '新增成功',
|
||||
editSuccess: '修改成功',
|
||||
deleteSuccess: '删除成功',
|
||||
productIdRequired: '物料编码不能为空',
|
||||
productNameRequired: '物料名称不能为空',
|
||||
unitRequired: '单位不能为空',
|
||||
priceRequired: '价格不能为空'
|
||||
},
|
||||
|
||||
// *************供应商管理***************
|
||||
BasPort: {
|
||||
portName: '点位名称',
|
||||
inputPortName: '请输入点位名称',
|
||||
portType: '点位分类',
|
||||
inputPortType: '请输入点位分类',
|
||||
portDesc: '点位描述',
|
||||
inputPortDesc: '请输入点位描述',
|
||||
search: '搜索',
|
||||
reset: '重置',
|
||||
add: '新增',
|
||||
edit: '修改',
|
||||
delete: '删除',
|
||||
export: '导出',
|
||||
id: 'ID',
|
||||
createMan: '创建人',
|
||||
createTime: '创建时间',
|
||||
operation: '操作',
|
||||
confirm: '确定',
|
||||
cancel: '取消',
|
||||
addTitle: '添加基础点位',
|
||||
editTitle: '修改基础点位',
|
||||
addSuccess: '新增成功',
|
||||
editSuccess: '修改成功',
|
||||
deleteSuccess: '删除成功',
|
||||
deleteConfirm: '是否确认删除基础点位编号为"{ids}"的数据项?',
|
||||
productCode: '物料编码',
|
||||
inputProductCode: '请输入物料编码',
|
||||
productName: '物料名称',
|
||||
inputProductName: '请输入物料名称',
|
||||
bindStatus: '是否绑定',
|
||||
selectBindStatus: '请选择状态',
|
||||
batchBind: '批量绑定',
|
||||
batchUnbind: '批量解绑',
|
||||
productEnDesc: '英文描述',
|
||||
unit: '单位',
|
||||
netWeight: '单件净重KG',
|
||||
boxNo: '箱号',
|
||||
packWay: '包装方式',
|
||||
length: '长MM',
|
||||
width: '宽MM',
|
||||
height: '高MM',
|
||||
volume: '体积m³',
|
||||
price: '价格',
|
||||
description: '描述',
|
||||
bindProduct: '绑定物料',
|
||||
unbindProduct: '删除物料',
|
||||
bindSuccess: '绑定成功',
|
||||
unbindSuccess: '解绑成功',
|
||||
selectProduct: '选择物料'
|
||||
},
|
||||
|
||||
// *************库存操作记录***************
|
||||
stockRecord: {
|
||||
stockId: '库存编码',
|
||||
@@ -1132,7 +1344,7 @@ export default {
|
||||
//基本资料---用户信息
|
||||
male:'男',
|
||||
female:'女',
|
||||
|
||||
|
||||
//基本资料---修改密码
|
||||
oldPassword:'旧密码',
|
||||
newPassword:'新密码',
|
||||
|
||||
188
ruoyi-ui/src/plugins/LodopFuncs.js
Normal file
188
ruoyi-ui/src/plugins/LodopFuncs.js
Normal file
@@ -0,0 +1,188 @@
|
||||
//==本JS是加载Lodop插件或Web打印服务CLodop/Lodop7的综合示例,可直接使用,建议理解后融入自己程序==
|
||||
|
||||
//用双端口加载主JS文件Lodop.js(或CLodopfuncs.js兼容老版本)以防其中某端口被占:
|
||||
var MainJS ="CLodopfuncs.js",
|
||||
URL_WS1 = "ws://localhost:8000/"+MainJS, //ws用8000/18000
|
||||
URL_WS2 = "ws://localhost:18000/"+MainJS,
|
||||
URL_HTTP1 = "http://localhost:8000/"+MainJS, //http用8000/18000
|
||||
URL_HTTP2 = "http://localhost:18000/"+MainJS,
|
||||
URL_HTTP3 = "https://localhost.lodop.net:8443/"+MainJS; //https用8000/8443
|
||||
|
||||
var CreatedOKLodopObject, CLodopIsLocal, LoadJsState;
|
||||
|
||||
//==判断是否需要CLodop(那些不支持插件的浏览器):==
|
||||
function needCLodop() {
|
||||
try {
|
||||
var ua = navigator.userAgent;
|
||||
if (ua.match(/Windows\sPhone/i) ||
|
||||
ua.match(/iPhone|iPod|iPad/i) ||
|
||||
ua.match(/Android/i) ||
|
||||
ua.match(/Edge\D?\d+/i))
|
||||
return true;
|
||||
var verTrident = ua.match(/Trident\D?\d+/i);
|
||||
var verIE = ua.match(/MSIE\D?\d+/i);
|
||||
var verOPR = ua.match(/OPR\D?\d+/i);
|
||||
var verFF = ua.match(/Firefox\D?\d+/i);
|
||||
var x64 = ua.match(/x64/i);
|
||||
if ((!verTrident) && (!verIE) && (x64)) return true;
|
||||
else if (verFF) {
|
||||
verFF = verFF[0].match(/\d+/);
|
||||
if ((verFF[0] >= 41) || (x64)) return true;
|
||||
} else if (verOPR) {
|
||||
verOPR = verOPR[0].match(/\d+/);
|
||||
if (verOPR[0] >= 32) return true;
|
||||
} else if ((!verTrident) && (!verIE)) {
|
||||
var verChrome = ua.match(/Chrome\D?\d+/i);
|
||||
if (verChrome) {
|
||||
verChrome = verChrome[0].match(/\d+/);
|
||||
if (verChrome[0] >= 41) return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
} catch (err) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
//==检查加载成功与否,如没成功则用http(s)再试==
|
||||
//==低版本CLODOP6.561/Lodop7.043及前)用本方法==
|
||||
function checkOrTryHttp() {
|
||||
if (window.getCLodop) {
|
||||
LoadJsState = "complete";
|
||||
return true;
|
||||
}
|
||||
if (LoadJsState == "loadingB" || LoadJsState == "complete") return;
|
||||
LoadJsState = "loadingB";
|
||||
var head = document.head || document.getElementsByTagName("head")[0] || document.documentElement;
|
||||
var JS1 = document.createElement("script")
|
||||
,JS2 = document.createElement("script")
|
||||
,JS3 = document.createElement("script");
|
||||
JS1.src = URL_HTTP1;
|
||||
JS2.src = URL_HTTP2;
|
||||
JS3.src = URL_HTTP3;
|
||||
JS1.onload = JS2.onload = JS3.onload = JS2.onerror = JS3.onerror=function(){LoadJsState = "complete";}
|
||||
JS1.onerror = function(e) {
|
||||
if (window.location.protocol !== 'https:')
|
||||
head.insertBefore(JS2, head.firstChild); else
|
||||
head.insertBefore(JS3, head.firstChild);
|
||||
}
|
||||
head.insertBefore(JS1,head.firstChild);
|
||||
}
|
||||
|
||||
//==加载Lodop对象的主过程:==
|
||||
(function loadCLodop(){
|
||||
if (!needCLodop()) return;
|
||||
CLodopIsLocal = !!((URL_WS1 + URL_WS2).match(/\/\/localho|\/\/127.0.0./i));
|
||||
LoadJsState = "loadingA";
|
||||
if (!window.WebSocket && window.MozWebSocket) window.WebSocket=window.MozWebSocket;
|
||||
//ws方式速度快(小于200ms)且可避免CORS错误,但要求Lodop版本足够新:
|
||||
try {
|
||||
var WSK1=new WebSocket(URL_WS1);
|
||||
WSK1.onopen = function(e) { setTimeout("checkOrTryHttp()",200); }
|
||||
WSK1.onmessage = function(e) {if (!window.getCLodop) eval(e.data);}
|
||||
WSK1.onerror = function(e) {
|
||||
var WSK2=new WebSocket(URL_WS2);
|
||||
WSK2.onopen = function(e) {setTimeout("checkOrTryHttp()",200);}
|
||||
WSK2.onmessage = function(e) {if (!window.getCLodop) eval(e.data);}
|
||||
WSK2.onerror= function(e) {checkOrTryHttp();}
|
||||
}
|
||||
} catch(e){
|
||||
checkOrTryHttp();
|
||||
}
|
||||
})();
|
||||
|
||||
//==获取LODOP对象主过程,判断是否安装、需否升级:==
|
||||
export function getLodop(oOBJECT, oEMBED) {
|
||||
var strFontTag = "<br><font color='#FF00FF'>打印控件";
|
||||
var strLodopInstall = strFontTag + "未安装!点击这里<a href='install_lodop32.exe' target='_self'>执行安装</a>";
|
||||
var strLodopUpdate = strFontTag + "需要升级!点击这里<a href='install_lodop32.exe' target='_self'>执行升级</a>";
|
||||
var strLodop64Install = strFontTag + "未安装!点击这里<a href='install_lodop64.exe' target='_self'>执行安装</a>";
|
||||
var strLodop64Update = strFontTag + "需要升级!点击这里<a href='install_lodop64.exe' target='_self'>执行升级</a>";
|
||||
var strCLodopInstallA = "<br><font color='#FF00FF'>Web打印服务CLodop未安装启动,点击这里<a href='CLodop_Setup_for_Win32NT.exe' target='_self'>下载执行安装</a>";
|
||||
var strCLodopInstallB = "<br>(若此前已安装过,可<a href='CLodop.protocol:setup' target='_self'>点这里直接再次启动</a>)";
|
||||
var strCLodopUpdate = "<br><font color='#FF00FF'>Web打印服务CLodop需升级!点击这里<a href='CLodop_Setup_for_Win32NT.exe' target='_self'>执行升级</a>";
|
||||
var strLodop7FontTag = "<br><font color='#FF00FF'>Web打印服务Lodop7";
|
||||
var strLodop7HrefX86 = "点击这里<a href='Lodop7_Linux_X86_64.tar.gz' target='_self'>下载安装</a>(下载后解压,点击lodop文件开始执行)";
|
||||
var strLodop7HrefARM = "点击这里<a href='Lodop7_Linux_ARM64.tar.gz' target='_self'>下载安装</a>(下载后解压,点击lodop文件开始执行)";
|
||||
var strLodop7Install_X86 = strLodop7FontTag + "未安装启动," + strLodop7HrefX86;
|
||||
var strLodop7Install_ARM = strLodop7FontTag + "未安装启动," + strLodop7HrefARM;
|
||||
var strLodop7Update_X86 = strLodop7FontTag + "需升级," + strLodop7HrefX86;
|
||||
var strLodop7Update_ARM = strLodop7FontTag + "需升级," + strLodop7HrefARM;
|
||||
var strInstallOK = ",成功后请刷新本页面或重启浏览器。</font>";
|
||||
var LODOP;
|
||||
try {
|
||||
var isWinIE = (/MSIE/i.test(navigator.userAgent)) || (/Trident/i.test(navigator.userAgent));
|
||||
var isWinIE64 = isWinIE && (/x64/i.test(navigator.userAgent));
|
||||
var isLinuxX86 = (/Linux/i.test(navigator.platform)) && (/x86/i.test(navigator.platform));
|
||||
var isLinuxARM = (/Linux/i.test(navigator.platform)) && (/aarch/i.test(navigator.platform));
|
||||
|
||||
if (needCLodop() || isLinuxX86 || isLinuxARM) {
|
||||
try {
|
||||
LODOP = window.getCLodop();
|
||||
} catch (err) {}
|
||||
if (!LODOP && LoadJsState !== "complete") {
|
||||
if (!LoadJsState)
|
||||
alert("未曾加载Lodop主JS文件,请先调用loadCLodop过程."); else
|
||||
alert("网页还没下载完毕,请稍等一下再操作.");
|
||||
return;
|
||||
}
|
||||
var strAlertMessage;
|
||||
if (!LODOP) {
|
||||
if (isLinuxX86)
|
||||
strAlertMessage = strLodop7Install_X86;
|
||||
else if (isLinuxARM)
|
||||
strAlertMessage = strLodop7Install_ARM;
|
||||
else
|
||||
strAlertMessage = strCLodopInstallA + (CLodopIsLocal ? strCLodopInstallB : "");
|
||||
document.body.innerHTML = strAlertMessage + strInstallOK + document.body.innerHTML;
|
||||
return;
|
||||
} else {
|
||||
if (isLinuxX86 && LODOP.CVERSION < "7.1.0.1")
|
||||
strAlertMessage = strLodop7Update_X86;
|
||||
else if (isLinuxARM && LODOP.CVERSION < "7.1.0.1")
|
||||
strAlertMessage = strLodop7Update_ARM;
|
||||
else if (CLODOP.CVERSION < "6.6.2.3")
|
||||
strAlertMessage = strCLodopUpdate;
|
||||
|
||||
if (strAlertMessage)
|
||||
document.body.innerHTML = strAlertMessage + strInstallOK + document.body.innerHTML;
|
||||
}
|
||||
} else {
|
||||
//==如果页面有Lodop插件就直接使用,否则新建:==
|
||||
if (oOBJECT || oEMBED) {
|
||||
if (isWinIE)
|
||||
LODOP = oOBJECT;
|
||||
else
|
||||
LODOP = oEMBED;
|
||||
} else if (!CreatedOKLodopObject) {
|
||||
LODOP = document.createElement("object");
|
||||
LODOP.setAttribute("width", 0);
|
||||
LODOP.setAttribute("height", 0);
|
||||
LODOP.setAttribute("style", "position:absolute;left:0px;top:-100px;width:0px;height:0px;");
|
||||
if (isWinIE)
|
||||
LODOP.setAttribute("classid", "clsid:2105C259-1E0C-4534-8141-A753534CB4CA");
|
||||
else
|
||||
LODOP.setAttribute("type", "application/x-print-lodop");
|
||||
document.documentElement.appendChild(LODOP);
|
||||
CreatedOKLodopObject = LODOP;
|
||||
} else
|
||||
LODOP = CreatedOKLodopObject;
|
||||
//==Lodop插件未安装时提示下载地址:==
|
||||
if ((!LODOP) || (!LODOP.VERSION)) {
|
||||
document.body.innerHTML = (isWinIE64 ? strLodop64Install : strLodopInstall) + strInstallOK + document.body.innerHTML;
|
||||
return LODOP;
|
||||
}
|
||||
if (LODOP.VERSION < "6.2.2.6") {
|
||||
document.body.innerHTML = (isWinIE64 ? strLodop64Update : strLodopUpdate) + strInstallOK + document.body.innerHTML;
|
||||
}
|
||||
}
|
||||
//===如下空白位置适合调用统一功能(如注册语句、语言选择等):=======================
|
||||
|
||||
|
||||
//===============================================================================
|
||||
return LODOP;
|
||||
} catch (err) {
|
||||
alert("getLodop出错:" + err);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ Vue.use(Router)
|
||||
|
||||
/* Layout */
|
||||
import Layout from '@/layout'
|
||||
import i18n from '@/lang'
|
||||
|
||||
/**
|
||||
* Note: 路由配置项
|
||||
@@ -70,7 +71,7 @@ export const constantRoutes = [
|
||||
path: 'index',
|
||||
component: () => import('@/views/index'),
|
||||
name: 'Index',
|
||||
meta: { title: '首页', icon: 'dashboard', affix: true }
|
||||
meta: { title: i18n.t('viewsMain.title'), icon: 'dashboard', affix: true }
|
||||
}
|
||||
]
|
||||
},
|
||||
|
||||
@@ -323,6 +323,7 @@ import {
|
||||
confirmationStockIn
|
||||
} from "@/api/in/stockIn"
|
||||
import {listStockInDetail, barcodePrinting} from "@/api/in/stockInDetail"
|
||||
import {getLodop} from "@/plugins/LodopFuncs.js"
|
||||
|
||||
|
||||
export default {
|
||||
@@ -552,15 +553,51 @@ export default {
|
||||
},
|
||||
/** 打印条码按钮操作 */
|
||||
handleBarcodePrinting(row){
|
||||
const stockInId = row.stockinDetailId ||this.detailIds;
|
||||
//console.log(stockInId)
|
||||
var data = {
|
||||
"stockinIdList": stockInId
|
||||
let printData = this.stockInDetailListSelected
|
||||
|
||||
|
||||
|
||||
if (printData.length === 0) {
|
||||
this.$modal.msgWarning("请选择要打印的数据")
|
||||
return
|
||||
}
|
||||
console.log(printData)
|
||||
|
||||
this.printBarcode(printData)
|
||||
},
|
||||
/** 打印条码 */
|
||||
printBarcode(printData) {
|
||||
try {
|
||||
// 获取Lodop打印对象
|
||||
let LODOP = getLodop()
|
||||
if (!LODOP) {
|
||||
this.$modal.msgError("打印控件未安装或启动失败")
|
||||
return
|
||||
}
|
||||
LODOP.SET_SHOW_MODE("LANGUAGE", 0);
|
||||
LODOP.PRINT_INITA(10, 10, 1000, 800, "物资条码");
|
||||
LODOP.SET_PRINT_PAGESIZE(1, 1000, 500, 0);
|
||||
LODOP.SET_PRINT_MODE("AUTO_CLOSE_PREWINDOW", 1);
|
||||
|
||||
for (let i = 0; i < printData.length; i++) {
|
||||
LODOP.NewPage();
|
||||
LODOP.ADD_PRINT_BARCODE(17,35,120,120,"QRCode",printData[i].stockinDetailId);
|
||||
LODOP.ADD_PRINT_TEXT(22,147,72,20,"物料编码:");
|
||||
LODOP.ADD_PRINT_TEXT(22,205,180,20,printData[i].productId);
|
||||
LODOP.ADD_PRINT_TEXT(44,147,66,20,"物料名称:");
|
||||
LODOP.ADD_PRINT_TEXT(44,206,180,35,printData[i].extraField.materialDesc);
|
||||
LODOP.ADD_PRINT_TEXT(66,148,64,20,"英文描述:");
|
||||
LODOP.ADD_PRINT_TEXT(66,205,180,20,printData[i].extraField.englishDesc);
|
||||
LODOP.ADD_PRINT_TEXT(88,148,64,20,"包装方式:");
|
||||
LODOP.ADD_PRINT_TEXT(88,205,180,20,printData[i].extraField.packingMethod);
|
||||
LODOP.ADD_PRINT_TEXT(110,147,61,20,"箱码:");
|
||||
LODOP.ADD_PRINT_TEXT(110,196,180,20,printData[i].extraField.cartonNo);
|
||||
}
|
||||
LODOP.PREVIEW();
|
||||
} catch (error) {
|
||||
console.error('打印失败:', error)
|
||||
this.$modal.msgError("打印失败: " + error.message)
|
||||
}
|
||||
barcodePrinting(data).then(response => {
|
||||
this.$modal.msgSuccess("打印成功")
|
||||
this.getList()
|
||||
})
|
||||
},
|
||||
/** 提交按钮 */
|
||||
submitForm() {
|
||||
|
||||
@@ -5,24 +5,24 @@
|
||||
<div class="col-sm-6" style="height: 45vh; padding: 10px;">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>未完成入库任务概览</span>
|
||||
<span>{{$t('viewsMain.unfinishedInboundTask')}}</span>
|
||||
</div>
|
||||
<el-table
|
||||
:data="table1Data"
|
||||
style="width: 100%"
|
||||
:height="tableHeight"
|
||||
v-loading="loading1">
|
||||
<el-table-column prop="workValue" label="任务键值" />
|
||||
<el-table-column prop="workName" label="未完成入库任务" />
|
||||
<el-table-column prop="workNum" label="全部未完成数量">
|
||||
<el-table-column prop="workValue" :label="$t('viewsMain.taskKey')" /> <!-- 任务键值 -->
|
||||
<el-table-column prop="workName" :label="$t('viewsMain.unfinishedInboundTaskName')" /><!-- 未完成入库任务 -->
|
||||
<el-table-column prop="workNum" :label="$t('viewsMain.totalUnfinishedCount')" ><!-- 全部未完成数量 -->
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- {{ Number(scope.row.workNum).toFixed(6) }}-->
|
||||
<!-- </template>-->
|
||||
</el-table-column>
|
||||
<el-table-column prop="by1" label="今日未完成数量">
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- {{ Number(scope.row.by1).toFixed(6) }}-->
|
||||
<!-- </template>-->
|
||||
<el-table-column prop="by1" :label="$t('viewsMain.todayUnfinishedCount')"> <!-- 今日未完成数量 -->
|
||||
<!-- <template slot-scope="scope">
|
||||
{{ Number(scope.row.by1).toFixed(6) }}
|
||||
</template>-->
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</el-card>
|
||||
@@ -32,23 +32,23 @@
|
||||
<div class="col-sm-6" style="height: 45vh; padding: 10px;">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>已完成入库任务概览</span>
|
||||
<span>{{$t('viewsMain.finishedInboundTask')}}</span>
|
||||
</div>
|
||||
<el-table
|
||||
:data="table2Data"
|
||||
style="width: 100%"
|
||||
:height="tableHeight"
|
||||
v-loading="loading2">
|
||||
<el-table-column prop="workValue" label="任务键值" />
|
||||
<el-table-column prop="workName" label="已完成入库任务" />
|
||||
<el-table-column prop="workNum" label="全部已完成数量">
|
||||
<el-table-column prop="workValue" :label="$t('viewsMain.taskKey')" /><!-- 任务键值 -->
|
||||
<el-table-column prop="workName" :label="$t('viewsMain.finishedInboundTaskName')" /><!-- 已完成入库任务 -->
|
||||
<el-table-column prop="workNum" :label="$t('viewsMain.totalFinishedCount')" ><!-- 全部已完成数量 -->
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- {{ Number(scope.row.workNum).toFixed(6) }}-->
|
||||
<!-- </template>-->
|
||||
</el-table-column>
|
||||
<el-table-column prop="by1" label="今日已完成数量">
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- {{ Number(scope.row.by1).toFixed(6) }}-->
|
||||
<el-table-column prop="by1" :label="$t('viewsMain.todayFinishedCount')"> <!-- 今日已完成数量 -->
|
||||
<!-- <template slot-scope="scope">
|
||||
{{ Number(scope.row.by1).toFixed(6) }}-->
|
||||
<!-- </template>-->
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -59,23 +59,23 @@
|
||||
<div class="col-sm-6" style="height: 45vh; padding: 10px;">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>未完成出库任务概览</span>
|
||||
<span>{{$t('viewsMain.unfinishedOutboundTask')}}</span>
|
||||
</div>
|
||||
<el-table
|
||||
:data="table3Data"
|
||||
style="width: 100%"
|
||||
:height="tableHeight"
|
||||
v-loading="loading3">
|
||||
<el-table-column prop="workValue" label="任务键值" />
|
||||
<el-table-column prop="workName" label="未完成出库任务" />
|
||||
<el-table-column prop="workNum" label="全部未完成数量">
|
||||
<el-table-column prop="workValue" :label="$t('viewsMain.taskKey')" /><!-- 任务键值 -->
|
||||
<el-table-column prop="workName" :label="$t('viewsMain.unfinishedOutboundTaskName')" /><!-- 未完成出库任务 -->
|
||||
<el-table-column prop="workNum" :label="$t('viewsMain.totalUnfinishedCount')"><!-- 全部未完成数量 -->
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- {{ Number(scope.row.workNum).toFixed(6) }}-->
|
||||
<!-- </template>-->
|
||||
</el-table-column>
|
||||
<el-table-column prop="by1" label="今日未完成数量">
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- {{ Number(scope.row.by1).toFixed(6) }}-->
|
||||
<el-table-column prop="by1" :label="$t('viewsMain.todayUnfinishedCount')"> <!-- 今日未完成数量 -->
|
||||
<!-- <template slot-scope="scope">
|
||||
{{ Number(scope.row.by1).toFixed(6) }}-->
|
||||
<!-- </template>-->
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
@@ -86,23 +86,23 @@
|
||||
<div class="col-sm-6" style="height: 45vh; padding: 10px;">
|
||||
<el-card class="box-card">
|
||||
<div slot="header" class="clearfix">
|
||||
<span>已完成出库任务概览</span>
|
||||
<span>{{$t('viewsMain.finishedOutboundTask')}}</span>
|
||||
</div>
|
||||
<el-table
|
||||
:data="table4Data"
|
||||
style="width: 100%"
|
||||
:height="tableHeight"
|
||||
v-loading="loading4">
|
||||
<el-table-column prop="workValue" label="任务键值" />
|
||||
<el-table-column prop="workName" label="已完成出库任务" />
|
||||
<el-table-column prop="workNum" label="全部已完成数量">
|
||||
<el-table-column prop="workValue" :label="$t('viewsMain.taskKey')" /><!-- 任务键值 -->
|
||||
<el-table-column prop="workName" :label="$t('viewsMain.finishedOutboundTaskName')" /><!-- 已完成出库任务 -->
|
||||
<el-table-column prop="workNum" :label="$t('viewsMain.totalFinishedCount')" ><!-- 全部已完成数量 -->
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- {{ Number(scope.row.workNum).toFixed(6) }}-->
|
||||
<!-- </template>-->
|
||||
</el-table-column>
|
||||
<el-table-column prop="by1" label="今日已完成数量">
|
||||
<!-- <template slot-scope="scope">-->
|
||||
<!-- {{ Number(scope.row.by1).toFixed(6) }}-->
|
||||
<el-table-column prop="by1" :label="$t('viewsMain.todayFinishedCount')"> <!-- 今日已完成数量 -->
|
||||
<!-- <template slot-scope="scope">
|
||||
{{ Number(scope.row.by1).toFixed(6) }}-->
|
||||
<!-- </template>-->
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
|
||||
Reference in New Issue
Block a user