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)
|
@Log(title = "入库单据", businessType = BusinessType.INSERT)
|
||||||
@PostMapping("barcodePrinting")
|
@PostMapping("barcodePrinting")
|
||||||
public AjaxResult barcodePrinting(@RequestBody Map<String,Object> param) {
|
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.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
import com.ruoyi.in.stockin.domain.InStockin;
|
import com.ruoyi.in.stockin.domain.InStockin;
|
||||||
import com.ruoyi.in.stockindetail.domain.InStockinDetail;
|
import com.ruoyi.in.stockindetail.domain.InStockinDetail;
|
||||||
|
|
||||||
@@ -76,5 +77,5 @@ public interface IInStockinDetailService
|
|||||||
|
|
||||||
void deleteInStockinDetailByStockinGuid(String stockinGuid);
|
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 java.util.Map;
|
||||||
|
|
||||||
import cn.hutool.json.JSONUtil;
|
import cn.hutool.json.JSONUtil;
|
||||||
|
import com.ruoyi.common.core.domain.AjaxResult;
|
||||||
import com.ruoyi.common.domain.ExtraField;
|
import com.ruoyi.common.domain.ExtraField;
|
||||||
import com.ruoyi.in.stockin.domain.InStockin;
|
import com.ruoyi.in.stockin.domain.InStockin;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
@@ -116,8 +117,8 @@ public class InStockinDetailServiceImpl implements IInStockinDetailService
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int barcodePrinting(Map<String,Object> map) {
|
public AjaxResult barcodePrinting(Map<String,Object> map) {
|
||||||
System.out.println(map);
|
//System.out.println(map);
|
||||||
return 0;
|
return AjaxResult.success();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -98,6 +98,7 @@ public class SysLoginController
|
|||||||
@GetMapping("/changeLanguage")
|
@GetMapping("/changeLanguage")
|
||||||
public AjaxResult changeLanguage(String lang)
|
public AjaxResult changeLanguage(String lang)
|
||||||
{
|
{
|
||||||
|
|
||||||
return AjaxResult.success();
|
return AjaxResult.success();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ export default {
|
|||||||
}
|
}
|
||||||
// 判断是否为首页
|
// 判断是否为首页
|
||||||
if (!this.isDashboard(matched[0])) {
|
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)
|
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">
|
<el-dropdown-item :disabled="language==='en_US'" command="en_US">
|
||||||
English
|
English
|
||||||
</el-dropdown-item>
|
</el-dropdown-item>
|
||||||
|
<el-dropdown-item :disabled="language==='hu'" command="hu">
|
||||||
|
Magyarország
|
||||||
|
</el-dropdown-item>
|
||||||
</el-dropdown-menu>
|
</el-dropdown-menu>
|
||||||
</el-dropdown>
|
</el-dropdown>
|
||||||
</template>
|
</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: {
|
searchViewStockSecure: {
|
||||||
stockId: 'Stock ID',
|
stockId: 'Stock ID',
|
||||||
cargoSpaceId: 'Cargo Space 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 Cookies from 'js-cookie'
|
||||||
import elementEnLocale from 'element-ui/lib/locale/lang/en' // element-ui lang
|
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 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 enLocale from './en'
|
||||||
import zhLocale from './zh'
|
import zhLocale from './zh'
|
||||||
|
import huLocale from './hu'
|
||||||
|
|
||||||
Vue.use(VueI18n)
|
Vue.use(VueI18n)
|
||||||
|
|
||||||
@@ -16,12 +18,16 @@ const messages = {
|
|||||||
zh_CN: {
|
zh_CN: {
|
||||||
...zhLocale,
|
...zhLocale,
|
||||||
...elementZhLocale
|
...elementZhLocale
|
||||||
|
},
|
||||||
|
hu:{
|
||||||
|
...huLocale,
|
||||||
|
...elementHuLocale
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const i18n = new VueI18n({
|
const i18n = new VueI18n({
|
||||||
// 设置语言 选项 en | zh
|
// 设置语言 选项 en | zh
|
||||||
locale: Cookies.get('language') || 'zh_CN',
|
locale: Cookies.get('language') || 'zh_CN'|| 'hu' ,
|
||||||
// 设置文本内容
|
// 设置文本内容
|
||||||
messages
|
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: {
|
stockRecord: {
|
||||||
stockId: '库存编码',
|
stockId: '库存编码',
|
||||||
@@ -1132,7 +1344,7 @@ export default {
|
|||||||
//基本资料---用户信息
|
//基本资料---用户信息
|
||||||
male:'男',
|
male:'男',
|
||||||
female:'女',
|
female:'女',
|
||||||
|
|
||||||
//基本资料---修改密码
|
//基本资料---修改密码
|
||||||
oldPassword:'旧密码',
|
oldPassword:'旧密码',
|
||||||
newPassword:'新密码',
|
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 */
|
/* Layout */
|
||||||
import Layout from '@/layout'
|
import Layout from '@/layout'
|
||||||
|
import i18n from '@/lang'
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Note: 路由配置项
|
* Note: 路由配置项
|
||||||
@@ -70,7 +71,7 @@ export const constantRoutes = [
|
|||||||
path: 'index',
|
path: 'index',
|
||||||
component: () => import('@/views/index'),
|
component: () => import('@/views/index'),
|
||||||
name: '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
|
confirmationStockIn
|
||||||
} from "@/api/in/stockIn"
|
} from "@/api/in/stockIn"
|
||||||
import {listStockInDetail, barcodePrinting} from "@/api/in/stockInDetail"
|
import {listStockInDetail, barcodePrinting} from "@/api/in/stockInDetail"
|
||||||
|
import {getLodop} from "@/plugins/LodopFuncs.js"
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
@@ -552,15 +553,51 @@ export default {
|
|||||||
},
|
},
|
||||||
/** 打印条码按钮操作 */
|
/** 打印条码按钮操作 */
|
||||||
handleBarcodePrinting(row){
|
handleBarcodePrinting(row){
|
||||||
const stockInId = row.stockinDetailId ||this.detailIds;
|
let printData = this.stockInDetailListSelected
|
||||||
//console.log(stockInId)
|
|
||||||
var data = {
|
|
||||||
"stockinIdList": stockInId
|
|
||||||
|
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() {
|
submitForm() {
|
||||||
|
|||||||
@@ -5,24 +5,24 @@
|
|||||||
<div class="col-sm-6" style="height: 45vh; padding: 10px;">
|
<div class="col-sm-6" style="height: 45vh; padding: 10px;">
|
||||||
<el-card class="box-card">
|
<el-card class="box-card">
|
||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>未完成入库任务概览</span>
|
<span>{{$t('viewsMain.unfinishedInboundTask')}}</span>
|
||||||
</div>
|
</div>
|
||||||
<el-table
|
<el-table
|
||||||
:data="table1Data"
|
:data="table1Data"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
:height="tableHeight"
|
:height="tableHeight"
|
||||||
v-loading="loading1">
|
v-loading="loading1">
|
||||||
<el-table-column prop="workValue" label="任务键值" />
|
<el-table-column prop="workValue" :label="$t('viewsMain.taskKey')" /> <!-- 任务键值 -->
|
||||||
<el-table-column prop="workName" label="未完成入库任务" />
|
<el-table-column prop="workName" :label="$t('viewsMain.unfinishedInboundTaskName')" /><!-- 未完成入库任务 -->
|
||||||
<el-table-column prop="workNum" label="全部未完成数量">
|
<el-table-column prop="workNum" :label="$t('viewsMain.totalUnfinishedCount')" ><!-- 全部未完成数量 -->
|
||||||
<!-- <template slot-scope="scope">-->
|
<!-- <template slot-scope="scope">-->
|
||||||
<!-- {{ Number(scope.row.workNum).toFixed(6) }}-->
|
<!-- {{ Number(scope.row.workNum).toFixed(6) }}-->
|
||||||
<!-- </template>-->
|
<!-- </template>-->
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="by1" label="今日未完成数量">
|
<el-table-column prop="by1" :label="$t('viewsMain.todayUnfinishedCount')"> <!-- 今日未完成数量 -->
|
||||||
<!-- <template slot-scope="scope">-->
|
<!-- <template slot-scope="scope">
|
||||||
<!-- {{ Number(scope.row.by1).toFixed(6) }}-->
|
{{ Number(scope.row.by1).toFixed(6) }}
|
||||||
<!-- </template>-->
|
</template>-->
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
</el-card>
|
</el-card>
|
||||||
@@ -32,23 +32,23 @@
|
|||||||
<div class="col-sm-6" style="height: 45vh; padding: 10px;">
|
<div class="col-sm-6" style="height: 45vh; padding: 10px;">
|
||||||
<el-card class="box-card">
|
<el-card class="box-card">
|
||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>已完成入库任务概览</span>
|
<span>{{$t('viewsMain.finishedInboundTask')}}</span>
|
||||||
</div>
|
</div>
|
||||||
<el-table
|
<el-table
|
||||||
:data="table2Data"
|
:data="table2Data"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
:height="tableHeight"
|
:height="tableHeight"
|
||||||
v-loading="loading2">
|
v-loading="loading2">
|
||||||
<el-table-column prop="workValue" label="任务键值" />
|
<el-table-column prop="workValue" :label="$t('viewsMain.taskKey')" /><!-- 任务键值 -->
|
||||||
<el-table-column prop="workName" label="已完成入库任务" />
|
<el-table-column prop="workName" :label="$t('viewsMain.finishedInboundTaskName')" /><!-- 已完成入库任务 -->
|
||||||
<el-table-column prop="workNum" label="全部已完成数量">
|
<el-table-column prop="workNum" :label="$t('viewsMain.totalFinishedCount')" ><!-- 全部已完成数量 -->
|
||||||
<!-- <template slot-scope="scope">-->
|
<!-- <template slot-scope="scope">-->
|
||||||
<!-- {{ Number(scope.row.workNum).toFixed(6) }}-->
|
<!-- {{ Number(scope.row.workNum).toFixed(6) }}-->
|
||||||
<!-- </template>-->
|
<!-- </template>-->
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="by1" label="今日已完成数量">
|
<el-table-column prop="by1" :label="$t('viewsMain.todayFinishedCount')"> <!-- 今日已完成数量 -->
|
||||||
<!-- <template slot-scope="scope">-->
|
<!-- <template slot-scope="scope">
|
||||||
<!-- {{ Number(scope.row.by1).toFixed(6) }}-->
|
{{ Number(scope.row.by1).toFixed(6) }}-->
|
||||||
<!-- </template>-->
|
<!-- </template>-->
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -59,23 +59,23 @@
|
|||||||
<div class="col-sm-6" style="height: 45vh; padding: 10px;">
|
<div class="col-sm-6" style="height: 45vh; padding: 10px;">
|
||||||
<el-card class="box-card">
|
<el-card class="box-card">
|
||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>未完成出库任务概览</span>
|
<span>{{$t('viewsMain.unfinishedOutboundTask')}}</span>
|
||||||
</div>
|
</div>
|
||||||
<el-table
|
<el-table
|
||||||
:data="table3Data"
|
:data="table3Data"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
:height="tableHeight"
|
:height="tableHeight"
|
||||||
v-loading="loading3">
|
v-loading="loading3">
|
||||||
<el-table-column prop="workValue" label="任务键值" />
|
<el-table-column prop="workValue" :label="$t('viewsMain.taskKey')" /><!-- 任务键值 -->
|
||||||
<el-table-column prop="workName" label="未完成出库任务" />
|
<el-table-column prop="workName" :label="$t('viewsMain.unfinishedOutboundTaskName')" /><!-- 未完成出库任务 -->
|
||||||
<el-table-column prop="workNum" label="全部未完成数量">
|
<el-table-column prop="workNum" :label="$t('viewsMain.totalUnfinishedCount')"><!-- 全部未完成数量 -->
|
||||||
<!-- <template slot-scope="scope">-->
|
<!-- <template slot-scope="scope">-->
|
||||||
<!-- {{ Number(scope.row.workNum).toFixed(6) }}-->
|
<!-- {{ Number(scope.row.workNum).toFixed(6) }}-->
|
||||||
<!-- </template>-->
|
<!-- </template>-->
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="by1" label="今日未完成数量">
|
<el-table-column prop="by1" :label="$t('viewsMain.todayUnfinishedCount')"> <!-- 今日未完成数量 -->
|
||||||
<!-- <template slot-scope="scope">-->
|
<!-- <template slot-scope="scope">
|
||||||
<!-- {{ Number(scope.row.by1).toFixed(6) }}-->
|
{{ Number(scope.row.by1).toFixed(6) }}-->
|
||||||
<!-- </template>-->
|
<!-- </template>-->
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
@@ -86,23 +86,23 @@
|
|||||||
<div class="col-sm-6" style="height: 45vh; padding: 10px;">
|
<div class="col-sm-6" style="height: 45vh; padding: 10px;">
|
||||||
<el-card class="box-card">
|
<el-card class="box-card">
|
||||||
<div slot="header" class="clearfix">
|
<div slot="header" class="clearfix">
|
||||||
<span>已完成出库任务概览</span>
|
<span>{{$t('viewsMain.finishedOutboundTask')}}</span>
|
||||||
</div>
|
</div>
|
||||||
<el-table
|
<el-table
|
||||||
:data="table4Data"
|
:data="table4Data"
|
||||||
style="width: 100%"
|
style="width: 100%"
|
||||||
:height="tableHeight"
|
:height="tableHeight"
|
||||||
v-loading="loading4">
|
v-loading="loading4">
|
||||||
<el-table-column prop="workValue" label="任务键值" />
|
<el-table-column prop="workValue" :label="$t('viewsMain.taskKey')" /><!-- 任务键值 -->
|
||||||
<el-table-column prop="workName" label="已完成出库任务" />
|
<el-table-column prop="workName" :label="$t('viewsMain.finishedOutboundTaskName')" /><!-- 已完成出库任务 -->
|
||||||
<el-table-column prop="workNum" label="全部已完成数量">
|
<el-table-column prop="workNum" :label="$t('viewsMain.totalFinishedCount')" ><!-- 全部已完成数量 -->
|
||||||
<!-- <template slot-scope="scope">-->
|
<!-- <template slot-scope="scope">-->
|
||||||
<!-- {{ Number(scope.row.workNum).toFixed(6) }}-->
|
<!-- {{ Number(scope.row.workNum).toFixed(6) }}-->
|
||||||
<!-- </template>-->
|
<!-- </template>-->
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
<el-table-column prop="by1" label="今日已完成数量">
|
<el-table-column prop="by1" :label="$t('viewsMain.todayFinishedCount')"> <!-- 今日已完成数量 -->
|
||||||
<!-- <template slot-scope="scope">-->
|
<!-- <template slot-scope="scope">
|
||||||
<!-- {{ Number(scope.row.by1).toFixed(6) }}-->
|
{{ Number(scope.row.by1).toFixed(6) }}-->
|
||||||
<!-- </template>-->
|
<!-- </template>-->
|
||||||
</el-table-column>
|
</el-table-column>
|
||||||
</el-table>
|
</el-table>
|
||||||
|
|||||||
Reference in New Issue
Block a user