代码备份

This commit is contained in:
刘晓鹏 2025-10-10 16:39:18 +08:00
parent aa8bcaaabe
commit 0069490db0
15 changed files with 1485 additions and 627 deletions

View File

@ -7,5 +7,5 @@ VITE_API_URL2 = https://maxcessth.gatedge.cn:91
VITE_API_File1 = https://maxcessth.gatedge.cn
VITE_API_File = https://maxcess.gatedge.cn
VITE_API_URL = https://maxcess.gatedge.cn:91
VITE_API_File = https://maxcessth.gatedge.cn
VITE_API_URL = http://58.252.252.77:91

View File

@ -6,5 +6,5 @@ VITE_API_URL1 = http://58.252.252.77:90
VITE_API_URL2 = https://maxcessth.gatedge.cn:91
VITE_API_File1 = https://maxcessth.gatedge.cn
VITE_API_File = https://maxcessth.gatedge.cn
VITE_API_URL = https://maxcessth.gatedge.cn:91
VITE_API_File = https://maxcess.gatedge.cn
VITE_API_URL = http://58.252.252.77:90

189
LodopFuncs.js Normal file
View File

@ -0,0 +1,189 @@
//==本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对象主过程,判断是否安装、需否升级:==
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.1")
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;
}
}
//===如下空白位置适合调用统一功能(如注册语句、语言选择等):======================
LODOP.SET_LICENSES("","8B7A45DAE7262E36A87452727380929E9FC","","");
//===============================================================================
return LODOP;
} catch (err) {
alert("getLodop出错:" + err);
}
}
export { getLodop }

View File

@ -13,7 +13,7 @@
content="123"
/>
<link rel="icon" href="/logo.png" />
<script type="module" src="/lodop.js"></script>
<script type="module" src="/LodopFuncs.js"></script>
<script type="module" src="/src/main.ts"></script>
<title>Maxcess SCEP</title>
</head>

335
lodop.js
View File

@ -1,189 +1,196 @@
//==本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 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;
}
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);
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();
}
(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对象主过程,判断是否安装、需否升级:==
// eslint-disable-next-line @typescript-eslint/no-unused-vars,no-unused-vars
function getLodop(oOBJECT, oEMBED) {
var strFontTag = "<br><font color='#FF00FF'>打印控件";
var strLodopInstall = strFontTag + "未安装!点击这里<a href='http://58.252.252.77:8085/CLodop_Setup_for_Win32NT.exe' target='_self'>执行安装</a>";
var strLodopUpdate = strFontTag + "需要升级!点击这里<a href='http://58.252.252.77:8085/CLodop_Setup_for_Win32NT.exe' target='_self'>执行升级</a>";
var strLodop64Install = strFontTag + "未安装!点击这里<a href='http://58.252.252.77:8085/CLodop_Setup_for_Win32NT.exe' target='_self'>执行安装</a>";
var strLodop64Update = strFontTag + "需要升级!点击这里<a href='http://58.252.252.77:8085/CLodop_Setup_for_Win32NT.exe' target='_self'>执行升级</a>";
var strCLodopInstallA = "<br><font color='#FF00FF'>Web打印服务CLodop未安装启动点击这里<a href='http://58.252.252.77:8085/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='http://58.252.252.77:8085/CLodop_Setup_for_Win32NT.exe' target='_self'>执行升级</a>";
var strLodop7FontTag = "<br><font color='#FF00FF'>Web打印服务Lodop7";
var strLodop7HrefX86 = "点击这里<a href='http://58.252.252.77:8085/CLodop_Setup_for_Win32NT.exe' target='_self'>下载安装</a>(下载后解压点击lodop文件开始执行)";
var strLodop7HrefARM = "点击这里<a href='http://58.252.252.77:8085/CLodop_Setup_for_Win32NT.exe' 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));
alert("SET_LICENSES执行了");
var strFontTag = "<br><font color='#FF00FF'>打印控件";
var strLodopInstall = strFontTag + "未安装!点击这里<a href='http://58.252.252.77:8085/CLodop_Setup_for_Win32NT.exe' target='_self'>执行安装</a>";
var strLodopUpdate = strFontTag + "需要升级!点击这里<a href='http://58.252.252.77:8085/CLodop_Setup_for_Win32NT.exe' target='_self'>执行升级</a>";
var strLodop64Install = strFontTag + "未安装!点击这里<a href='http://58.252.252.77:8085/CLodop_Setup_for_Win32NT.exe' target='_self'>执行安装</a>";
var strLodop64Update = strFontTag + "需要升级!点击这里<a href='http://58.252.252.77:8085/CLodop_Setup_for_Win32NT.exe' target='_self'>执行升级</a>";
var strCLodopInstallA =
"<br><font color='#FF00FF'>Web打印服务CLodop未安装启动点击这里<a href='http://58.252.252.77:8085/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='http://58.252.252.77:8085/CLodop_Setup_for_Win32NT.exe' target='_self'>执行升级</a>";
var strLodop7FontTag = "<br><font color='#FF00FF'>Web打印服务Lodop7";
var strLodop7HrefX86 =
"点击这里<a href='http://58.252.252.77:8085/CLodop_Setup_for_Win32NT.exe' target='_self'>下载安装</a>(下载后解压点击lodop文件开始执行)";
var strLodop7HrefARM =
"点击这里<a href='http://58.252.252.77:8085/CLodop_Setup_for_Win32NT.exe' 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) { /* empty */ }
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 (needCLodop() || isLinuxX86 || isLinuxARM) {
try {
LODOP = window.getCLodop();
} catch (err) {
/* empty */
}
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;
}
}
//===如下空白位置适合调用统一功能(如注册语句、语言选择等):=======================
LODOP.SET_LICENSES("","EE0887D00FCC7D29375A695F728489A6","C94CEE276DB2187AE6B65D56B3FC2848","");
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;
}
}
//===如下空白位置适合调用统一功能(如注册语句、语言选择等):=======================
alert("SET_LICENSES执行了");
LODOP.SET_LICENSES("","8B7A45DAE7262E36A87452727380929E9FC","","");
alert("SET_LICENSES执行了");
//===============================================================================
return LODOP;
} catch (err) {
alert("getLodop出错:" + err);
}
//===============================================================================
return LODOP;
} catch (err) {
alert('getLodop出错:' + err);
}
}

View File

@ -133,5 +133,22 @@ export function listApi() {
data,
});
},
//修改发票号和发票日期
BatchSetFaPiao: (data: object) => {
return request({
url: '/api/Admin/InvoiceOrder/BatchSetFaPiao',
method: 'post',
data,
});
},
//删除某个发货订单明细
DeleteOrderDetail: (data: object) => {
return request({
url: '/api/Admin/InvoiceOrder/DeleteOrderDetail',
method: 'post',
data,
});
},
};
}

View File

@ -58,6 +58,7 @@ export default {
pleaseConfirmTheDateChange:' Please confirm the date change',
passwordChangedFailed:'Password changed failed',
shipmentQTY:'Shipment QTY',
prompt:'Tips',
invoiceNumber:'Invoice number',
invoiceNumber1:'Invoice #',
deliveryNote1:'Delivery Note',
@ -77,14 +78,19 @@ export default {
success:'Success',
copy:'Copy',
deleteText:'Delete',
deleteTextAll:'Delete All',
scqd:'Please confirm the deletion of the delivery note?',
scqd1:'Please confirm the deletion of the Data?',
receiver:'Receiver',
sltzddh:'Delivery Note Number',
qtxfph:'Input invoice #',
fprq:'Invoice date#',
qxzfprq:'Select Invoice date#',
organizationCode:'Organization Code',
organizationName:'Organization Name'
organizationName:'Organization Name',
xgfphm:'Please confirm the Invoice No. modification.',
xgfprq:'Please confirm the Invoice date modification.',
cgtype:'PO Type'
},
tiaoma:{
pno:'P/NO',

View File

@ -78,14 +78,19 @@ export default {
success:'成功',
copy:'复制',
deleteText:'删除',
deleteTextAll:'删除整单',
scqd:'确定要删除该条送货单?',
scqd1:'确定要删除该条数据?',
receiver:'接收人',
sltzddh:'收料通知单单号',
qtxfph:'请填写发票号',
fprq:'发票日期',
qxzfprq:'请选择发票日期',
organizationCode:'组织代码',
organizationName:'组织名称'
organizationName:'组织名称',
xgfphm:'确定要修改此次发票号',
xgfprq:'确定要修改此次发票日期',
cgtype:'采购类型'
},
tiaoma:{
pno:'物料编码',

189
src/utils/LodopFuncs.js Normal file
View File

@ -0,0 +1,189 @@
//==本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对象主过程,判断是否安装、需否升级:==
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.1")
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;
}
}
//===如下空白位置适合调用统一功能(如注册语句、语言选择等):======================
LODOP.SET_LICENSES("","8B7A45DAE7262E36A87452727380929E9FC","","");
//===============================================================================
return LODOP;
} catch (err) {
alert("getLodop出错:" + err);
}
}
export { getLodop }

View File

@ -1,6 +1,6 @@
<template>
<el-dialog :model-value="state.show" @close="closeFun" width="95%">
<avue-crud ref="crudRef" :data="state.data" :option="state.option">
<avue-crud ref="crudRef" :data="state.data" :option="tableOption">
<template #packagingQuantity="{ row }">
<div style="display: flex; align-items: center; justify-content: center; width: 100%">
<el-input-number v-model="row.packagingQuantity" style="width: 100%" :min="1" size="small" @change="inputNumberFun($event, row)" />
@ -18,14 +18,14 @@
</template>
<template #expand="expandObj">
<div class="expandListBox">
<avue-crud ref="crudRef" :data="expandObj.row.children" :option="state.expandOption">
<avue-crud ref="crudRef" :data="expandObj.row.children" :option="expandOption">
<template #supplierName="{ row }">
<el-tooltip :content="row.supplierName" placement="top">
<div class="multi-line-omit">{{ row.supplierName }}</div>
</el-tooltip>
</template>
<template #printBtn="{ row }">
<el-button type="text" @click="printPackingFun(row,expandObj.row)">{{ t('message.index.print') }}</el-button>
<el-button type="text" @click="printPackingFun(row, expandObj.row)">{{ t('message.index.print') }} </el-button>
</template>
</avue-crud>
</div>
@ -55,8 +55,8 @@
</div>
<el-button type="primary" size="default" @click="printCheckAllFun">{{ t('message.tiaoma.zddy') }}</el-button>
<el-button type="primary" size="default" @click="printCheckAllFun">{{ t('message.tiaoma.tjdy') }}</el-button>
<el-button type="primary" size="default" @click="defaultPrinterFun">{{ t('message.tiaoma.xzdyj') }}</el-button>
<!-- <el-button type="danger" size="default" v-if="state.timer !== null" @click="printCheckDangerFun">取消打印</el-button> -->
<el-button type="primary" size="default" @click="defaultPrinterFun">{{ t('message.tiaoma.xzdyj') }} </el-button>
<!-- <el-button type="danger" size="default" v-if="state.timer !== null" @click="printCheckDangerFun">取消打印</el-button> -->
</div>
</template>
</avue-crud>
@ -64,13 +64,15 @@
</el-dialog>
</template>
<script setup lang="ts">
import { computed, defineExpose, reactive, ref } from 'vue';
import { computed, defineExpose, reactive, ref, onMounted } from 'vue';
import { useI18n } from 'vue-i18n';
import { listApi } from '/@/api/list';
import barCode from './barCode.vue';
import { ElMessage, ElMessageBox, ElNotification } from 'element-plus';
const LODOP = window.LODOP;
import { ElMessage, ElMessageBox, } from 'element-plus';
import { getLodop } from '../../utils/LodopFuncs.js';
// const LODOP = window.LODOP;
const barCodeRef = ref();
const LODOP = ref();
const { t } = useI18n();
const state: any = reactive({
data: [],
@ -78,65 +80,8 @@ const state: any = reactive({
printSelection: '0',
printJQ: '',
printState: '0',
option: {
expand: true,
expandRowKeys: [1],
rowKey: 'id',
tip: false,
selection: false,
index: false,
menu: false,
menuWidth: 150,
border: true,
delBtn: false,
editBtn: false,
align: 'center',
searchLabelWidth: 140,
searchMenuSpan: 6,
addBtn: false,
column: [
{ label: computed(() => t('message.index.PO1')), prop: 'purchaseOrderFBillNo' },
{ label: computed(() => t('message.index.maxcessLot')), prop: 'mssSupplierLot' },
{ label: computed(() => t('message.index.supplierLot')), prop: 'fSupplierLot' },
{ label: computed(() => t('message.index.partNumber')), prop: 'materialCode' },
{ label: computed(() => t('message.index.materialName')), prop: 'materialName' },
{ label: computed(() => t('message.index.supplierCode')), prop: 'supplierId' },
{ label: computed(() => t('message.index.supplierName')), prop: 'supplierName'},
{ label: computed(() => t('message.index.shipmentQTY')), prop: 'qty' },
{ label: computed(() => t('message.tiaoma.mbs')), prop: 'packagingQuantity' },
{ label: computed(() => t('message.tiaoma.bzsxh')), prop: 'quantityPerPackage' },
{ label: computed(() => t('message.index.print')), prop: 'printBtn' },
],
},
expandOption: {
expandRowKeys: [1],
rowKey: 'id',
tip: false,
selection: false,
index: false,
menu: false,
menuWidth: 150,
border: true,
delBtn: false,
editBtn: false,
align: 'center',
searchLabelWidth: 140,
searchMenuSpan: 6,
addBtn: false,
column: [
{ label: computed(() => t('message.index.PO1')), prop: 'purchaseOrderFBillNo' },
{ label: computed(() => t('message.index.maxcessLot')), prop: 'mssSupplierLot' },
{ label: computed(() => t('message.index.supplierLot')), prop: 'fSupplierLot' },
{ label: computed(() => t('message.index.partNumber')), prop: 'materialCode' },
{ label: computed(() => t('message.index.materialName')), prop: 'materialName' },
{ label: computed(() => t('message.index.supplierCode')), prop: 'supplierId' },
{ label: computed(() => t('message.index.supplierName')), prop: 'supplierName' },
{ label: computed(() => t('message.index.shipmentQTY')), prop: 'qty' },
{ label: computed(() => t('message.tiaoma.mbs')), prop: 'packagingQuantity' },
{ label: computed(() => t('message.tiaoma.bzsxh')), prop: 'quantityPerPackage' },
{ label: computed(() => t('message.index.print')), prop: 'printBtn' },
],
},
option: {},
expandOption: {},
formData: {
sheet: '',
fDateBegin: '',
@ -148,6 +93,71 @@ const state: any = reactive({
timer: null,
allSetTime: null,
});
const expandOption = computed(() => ({
expandRowKeys: [1],
rowKey: 'id',
tip: false,
selection: false,
index: false,
menu: false,
menuWidth: 150,
border: true,
delBtn: false,
editBtn: false,
align: 'center',
searchLabelWidth: 140,
searchMenuSpan: 6,
addBtn: false,
column: [
{ label: t('message.index.PO1'), prop: 'purchaseOrderFBillNo' },
{ label: t('message.index.maxcessLot'), prop: 'mssSupplierLot' },
{ label: t('message.index.supplierLot'), prop: 'fSupplierLot' },
{ label: t('message.index.partNumber'), prop: 'materialCode' },
{ label: t('message.index.materialName'), prop: 'materialName' },
{ label: t('message.index.supplierCode'), prop: 'supplierId' },
{ label: t('message.index.supplierName'), prop: 'supplierName' },
{ label: t('message.index.shipmentQTY'), prop: 'qty' },
{ label: t('message.tiaoma.mbs'), prop: 'packagingQuantity' },
{ label: t('message.tiaoma.bzsxh'), prop: 'quantityPerPackage' },
{ label: t('message.index.print'), prop: 'printBtn' },
],
}))
const tableOption = computed(() => ({
expand: true,
expandRowKeys: [1],
rowKey: 'id',
tip: false,
selection: false,
index: false,
menu: false,
menuWidth: 150,
border: true,
delBtn: false,
editBtn: false,
align: 'center',
searchLabelWidth: 140,
searchMenuSpan: 6,
addBtn: false,
column: [
{ label: t('message.index.PO1'), prop: 'purchaseOrderFBillNo' },
{ label: t('message.index.maxcessLot'), prop: 'mssSupplierLot' },
{ label: t('message.index.supplierLot'), prop: 'fSupplierLot' },
{ label: t('message.index.partNumber'), prop: 'materialCode' },
{ label: t('message.index.materialName'), prop: 'materialName' },
{ label: t('message.index.supplierCode'), prop: 'supplierId' },
{ label: t('message.index.supplierName'), prop: 'supplierName' },
{ label: t('message.index.shipmentQTY'), prop: 'qty' },
{ label: t('message.tiaoma.mbs'), prop: 'packagingQuantity' },
{ label: t('message.tiaoma.bzsxh'), prop: 'quantityPerPackage' },
{ label: t('message.index.print'), prop: 'printBtn' },
],
}))
onMounted(() => {
setTimeout(() => {
LODOP.value = getLodop();
}, 1000);
});
//
const printVerification = () => {
if (state.printSelection === '') {
@ -162,7 +172,7 @@ const printVerification = () => {
};
//
const defaultPrinterFun = () => {
LODOP.SELECT_PRINTER();
LODOP.value.SELECT_PRINTER();
};
//
const printCheckAllFun = () => {
@ -184,10 +194,10 @@ const printCheckAllFun = () => {
getBaoShuTiaoMa(state.data[i].id, state.data[i].packagingQuantity, i);
i++;
}
if (state.data.length == i) {
clearInterval(state.allSetTime);
state.allSetTime = null;
}
if (state.data.length == i) {
clearInterval(state.allSetTime);
state.allSetTime = null;
}
}, 1000);
done();
} else {
@ -198,55 +208,52 @@ const printCheckAllFun = () => {
}
};
//
const printPackingFun = (row: any, mainRow:any) => {
const printPackingFun = (row: any, mainRow: any) => {
if (printVerification()) {
getBaoShuTiaoMa(mainRow.id, mainRow.packagingQuantity, mainRow.$index, row.$index);
getBaoShuTiaoMa(mainRow.id, mainRow.packagingQuantity, mainRow.$index, row.$index);
}
};
//
const printThisFun = (row: any) => {
if(printVerification()){
getBaoShuTiaoMa(row.id, row.packagingQuantity, row.$index);
}
if (printVerification()) {
getBaoShuTiaoMa(row.id, row.packagingQuantity, row.$index);
}
};
//
const getBaoShuTiaoMa = async (topId: any, ceseQty: any, i: number, t:number = -1) => {
const getBaoShuTiaoMa = async (topId: any, ceseQty: any, i: number, t: number = -1) => {
await listApi()
.setBaoShuTiaoMa({ id: topId, cuseQty: ceseQty })
.then((res: any) => {
console.log(res)
debugger
res.data.barCodeList.forEach((item:any) => {
item.purchaseOrderFBillNo = item.purchaseBillNo
item.packagingQuantity = item.qty
item.quantityPerPackage = res.data.barCodeList.length + '-' + item.sortNum
})
if(t === -1){
state.data[i].children = res.data.barCodeList
dataExtractFun(state.data[i].children);
} else {
state.data[i].children = res.data.barCodeList
dataExtractFun([state.data[i].children[t]]);
}
res.data.barCodeList.forEach((item: any) => {
item.purchaseOrderFBillNo = item.purchaseBillNo;
item.packagingQuantity = item.qty;
item.quantityPerPackage = res.data.barCodeList.length + '-' + item.sortNum;
});
if (t === -1) {
state.data[i].children = res.data.barCodeList;
dataExtractFun(state.data[i].children);
} else {
state.data[i].children = res.data.barCodeList;
dataExtractFun([state.data[i].children[t]]);
}
});
};
//
const dataExtractFun = (list: any = []) => {
let stepCounter = 0;
state.printState = '1';
let mainState = list.length === 1
let mainState = list.length === 1;
state.timer = setInterval(() => {
if (state.printSelection === '0') {
LODOP.PRINT_INITA(0, 0, 0, 0, 'L4');
LODOP.SET_PRINT_PAGESIZE(1, 1000, 500, '');
AddPrintContentZhuhai(list[stepCounter],mainState);
LODOP.PRINT();
LODOP.value.PRINT_INITA(0, 0, 0, 0, 'L4');
LODOP.value.SET_PRINT_PAGESIZE(1, 1000, 500, '');
AddPrintContentZhuhai(list[stepCounter], mainState);
LODOP.value.PRINT();
} else {
LODOP.PRINT_INITA(0, 0, 0, 0, 'L4');
LODOP.SET_PRINT_PAGESIZE(1, 1000, 500, '');
AddPrintContentTaiguo(list[stepCounter],mainState);
LODOP.PRINT();
LODOP.value.PRINT_INITA(0, 0, 0, 0, 'L4');
LODOP.value.SET_PRINT_PAGESIZE(1, 1000, 500, '');
AddPrintContentTaiguo(list[stepCounter], mainState);
LODOP.value.PRINT();
}
if (list.length - 1 == stepCounter) {
clearInterval(state.timer);
@ -258,37 +265,69 @@ const dataExtractFun = (list: any = []) => {
};
//
const AddPrintContentZhuhai = (row: any, mainState: boolean = false) => {
LODOP.ADD_PRINT_BARCODE(25, -5, 150, 150, 'QRCode', row.fBarCode);
LODOP.ADD_PRINT_TEXT(140, 45, 300, 20, `${row.quantityPerPackage}`);
mainState ? LODOP.ADD_PRINT_TEXT(10, 35, 300, 20, '主标签') : null
LODOP.ADD_PRINT_TEXT(10, 120, 300, 20, `供应商简称:${row.supplierName}`);
LODOP.ADD_PRINT_TEXT(30, 120, 300, 20, `物料编码:${row.materialCode}`);
LODOP.ADD_PRINT_TEXT(50, 120, 300, 20, `包装数量:${row.packagingQuantity}`);
LODOP.ADD_PRINT_TEXT(70, 120, 300, 20, `销售订单号:${row.fdemandbillno}`);
LODOP.ADD_PRINT_TEXT(90, 120, 300, 20, `供应商批号:${row.fSupplierLot}`);
LODOP.ADD_PRINT_TEXT(110, 120, 300, 20, `采购订单号:${row.purchaseOrderFBillNo}`);
LODOP.ADD_PRINT_TEXT(130, 120, 300, 20, `送货日期:${state.indexRow.deliveryDate}`);
LODOP.ADD_PRINT_TEXT(150, 120, 300, 20, `收料通知单单号:${state.indexRow.fBillNo}`);
LODOP.ADD_PRINT_TEXT(170, 120, 300, 20, `采购备注:${state.indexRow.fBillNo}`);
LODOP.value.SET_PRINT_STYLE('Bold', 0);
LODOP.value.SET_PRINT_STYLE('FontSize', 8);
LODOP.value.ADD_PRINT_TEXT(10, 20, 300, 20, `${row.fbilltypeid}`);
mainState ? LODOP.value.ADD_PRINT_TEXT(30, 35, 50, 20, '主标签') : null;
LODOP.value.ADD_PRINT_BARCODE(45, -5, 150, 150, 'QRCode', row.fBarCode);
LODOP.value.ADD_PRINT_TEXT(160, 45, 300, 20, `${row.quantityPerPackage}`);
LODOP.value.ADD_PRINT_TEXT(5, 120, 300, 20, `供应商简称:${row.supplierName}`);
LODOP.value.ADD_PRINT_TEXT(25, 120, 300, 20, `物料编码:`);
LODOP.value.SET_PRINT_STYLE('Bold', 5);
LODOP.value.SET_PRINT_STYLE('FontSize', 12);
LODOP.value.ADD_PRINT_TEXT(22, 175, 300, 20, `${row.materialCode}`);
LODOP.value.SET_PRINT_STYLE('Bold', 0);
LODOP.value.SET_PRINT_STYLE('FontSize', 8);
LODOP.value.ADD_PRINT_TEXT(45, 120, 300, 20, `包装数量:`);
LODOP.value.SET_PRINT_STYLE('Bold', 5);
LODOP.value.SET_PRINT_STYLE('FontSize', 12);
LODOP.value.ADD_PRINT_TEXT(42, 175, 300, 20, `${row.packagingQuantity}`);
LODOP.value.SET_PRINT_STYLE('Bold', 0);
LODOP.value.SET_PRINT_STYLE('FontSize', 8);
LODOP.value.ADD_PRINT_TEXT(65, 120, 300, 20, `销售订单号:${row.fdemandbillno}`);
LODOP.value.ADD_PRINT_TEXT(85, 120, 300, 20, `供应商批号:${row.fSupplierLot}`);
LODOP.value.ADD_PRINT_TEXT(105, 120, 300, 20, `采购订单号:`);
LODOP.value.SET_PRINT_STYLE('Bold', 5);
LODOP.value.SET_PRINT_STYLE('FontSize', 12);
LODOP.value.ADD_PRINT_TEXT(102, 180, 300, 20, `${row.purchaseOrderFBillNo}`);
LODOP.value.SET_PRINT_STYLE('Bold', 0);
LODOP.value.SET_PRINT_STYLE('FontSize', 8);
LODOP.value.ADD_PRINT_TEXT(125, 120, 300, 20, `送货日期:${state.indexRow.deliveryDate}`);
LODOP.value.ADD_PRINT_TEXT(145, 120, 300, 20, `收料通知单单号:${state.indexRow.fBillNo}`);
LODOP.value.ADD_PRINT_TEXT(165, 120, 300, 20, `采购备注:${row.remart}`);
};
//
const AddPrintContentTaiguo = (row: any, mainState: boolean = false) => {
LODOP.ADD_PRINT_BARCODE(25, -5, 150, 150, 'QRCode', row.fBarCode);
LODOP.ADD_PRINT_TEXT(140, 45, 300, 20, `${row.quantityPerPackage}`);
mainState ? LODOP.ADD_PRINT_TEXT(10, 35, 300, 20, 'Main Label') : null
// LODOP.ADD_PRINT_TEXT(28, 120, 300, 20, `${t('message.tiaoma.pno')}${row.materialCode}`);
// LODOP.ADD_PRINT_TEXT(58, 120, 300, 20, `${t('message.tiaoma.qty')}${row.packagingQuantity}`);
// LODOP.ADD_PRINT_TEXT(88, 120, 300, 20, `${t('message.tiaoma.bn')}${row.mssSupplierLot}`);
// LODOP.ADD_PRINT_TEXT(118, 120, 300, 20, `${t('message.tiaoma.po')}${row.purchaseBillNo}`);
LODOP.ADD_PRINT_TEXT(10, 120, 300, 20, `${t('message.tiaoma.gysjc')}${row.supplierName}`);
LODOP.ADD_PRINT_TEXT(30, 120, 300, 20, `${t('message.index.partNumber')}${row.materialCode}`);
LODOP.ADD_PRINT_TEXT(50, 120, 300, 20, `${t('message.tiaoma.qty')}${row.packagingQuantity}`);
LODOP.ADD_PRINT_TEXT(70, 120, 300, 20, `${t('message.tiaoma.bn')}${row.mssSupplierLot}`);
LODOP.ADD_PRINT_TEXT(90, 120, 300, 20, `${t('message.index.supplierLot')}${row.fSupplierLot}`);
LODOP.ADD_PRINT_TEXT(110, 120, 300, 20, `${t('message.index.PO1')}${row.purchaseOrderFBillNo}`);
LODOP.ADD_PRINT_TEXT(130, 120, 300, 20, `${t('message.index.deliveryDate')}${state.indexRow.deliveryDate}`);
LODOP.ADD_PRINT_TEXT(150, 120, 300, 20, `${t('message.index.sltzddh')}${state.indexRow.fBillNo}`);
LODOP.value.SET_PRINT_STYLE('Bold', 0);
LODOP.value.SET_PRINT_STYLE('FontSize', 8);
LODOP.value.ADD_PRINT_TEXT(10, -3, 300, 20, `${row.fbilltypeid}`);
mainState ? LODOP.value.ADD_PRINT_TEXT(30, 35, 300, 20, 'Main Label') : null;
LODOP.value.ADD_PRINT_BARCODE(45, 0, 150, 150, 'QRCode', row.fBarCode);
// LODOP.value.ADD_PRINT_TEXT(160, 45, 1, 20, `${row.quantityPerPackage}`);
LODOP.value.ADD_PRINT_TEXT(5, 140, 1000, 20, `Supplier Name${row.supplierName}`);
LODOP.value.ADD_PRINT_TEXT(25, 140, 1000, 20, `Part Number`);
LODOP.value.SET_PRINT_STYLE('Bold', 5);
LODOP.value.SET_PRINT_STYLE('FontSize', 12);
LODOP.value.ADD_PRINT_TEXT(23, 208, 1000, 20, `${row.materialCode}`);
LODOP.value.SET_PRINT_STYLE('Bold', 0);
LODOP.value.SET_PRINT_STYLE('FontSize', 8);
LODOP.value.ADD_PRINT_TEXT(45, 140, 1000, 20, `Qty`);
LODOP.value.SET_PRINT_STYLE('Bold', 5);
LODOP.value.SET_PRINT_STYLE('FontSize', 12);
LODOP.value.ADD_PRINT_TEXT(43, 165, 1000, 20, `${row.packagingQuantity}`);
LODOP.value.SET_PRINT_STYLE('Bold', 0);
LODOP.value.SET_PRINT_STYLE('FontSize', 8);
LODOP.value.ADD_PRINT_TEXT(65, 140, 1000, 20, `Batch No${row.mssSupplierLot}`);
LODOP.value.ADD_PRINT_TEXT(85, 140, 1000, 20, `Supplier Lot #${row.fSupplierLot}`);
LODOP.value.ADD_PRINT_TEXT(105, 140, 1000, 20, `PO #`);
LODOP.value.SET_PRINT_STYLE('Bold', 5);
LODOP.value.SET_PRINT_STYLE('FontSize', 12);
LODOP.value.ADD_PRINT_TEXT(103, 168, 1000, 20, `${row.purchaseOrderFBillNo}`);
LODOP.value.SET_PRINT_STYLE('Bold', 0);
LODOP.value.SET_PRINT_STYLE('FontSize', 8);
LODOP.value.ADD_PRINT_TEXT(125, 140, 1000, 20, `Delivery Date${state.indexRow.deliveryDate}`);
LODOP.value.ADD_PRINT_TEXT(145, 140, 1000, 20, `Delivery Note Number${state.indexRow.fBillNo}`);
};
//
const inputNumberFun = (e: any, row: any) => {
@ -319,13 +358,13 @@ const inputNumberFun = (e: any, row: any) => {
child.quantityPerPackage = packages + '-' + (i + 1);
child.printBtn = t('message.index.print');
child.supplierName = item.supplierName
child.supplierName = item.supplierName;
if (i === packages - 1 && item.qty % e !== 0) {
child.packagingQuantity = item.qty % e;
child.qty = child.packagingQuantity
child.qty = child.packagingQuantity;
} else {
child.packagingQuantity = e;
child.qty = child.packagingQuantity
child.qty = child.packagingQuantity;
}
return child;
});
@ -334,44 +373,22 @@ const inputNumberFun = (e: any, row: any) => {
};
//
const openShowDataFun = (row: any) => {
if (LODOP === undefined) {
ElNotification({
title: t('message.index.prompt'),
message: t('message.tiaoma.jcdwdypz'),
type: 'warning',
duration: 0,
position: 'top-left',
state.indexRow = row;
state.formData.sheet = row.sheet;
listApi()
.invoiceOrderGetPageList({ condition: state.formData, pageSize: 100000, page: 1 })
.then((res: any) => {
if (res.resultCode === 0) {
state.data = res.data.dataList;
state.data.forEach((item: any) => {
item.packagingQuantity = item.qty;
item.quantityPerPackage = 1;
item.children = [];
item.printBtn = t('message.index.print');
});
state.show = true;
}
});
const userAgent = window.navigator.userAgent.toLowerCase();
if (userAgent.includes('windows')) {
window.location.href = import.meta.env.import.meta.env.VITE_API_URL + '/CLodop_Setup_for_Win64NT_6.623EN.exe';
} else if (userAgent.includes('mac')) {
ElNotification({
title: t('message.index.prompt'),
message: t('message.index.noMac'),
type: 'error',
duration: 0,
position: 'top-left',
});
}
} else {
state.indexRow = row;
state.formData.sheet = row.sheet;
listApi()
.invoiceOrderGetPageList({ condition: state.formData, pageSize: 100000, page: 1 })
.then((res: any) => {
if (res.resultCode === 0) {
state.data = res.data.dataList;
state.data.forEach((item: any) => {
item.packagingQuantity = item.qty;
item.quantityPerPackage = 1;
item.children = [];
item.printBtn = t('message.index.print');
});
state.show = true;
}
});
}
};
const closeFun = () => {
state.show = false;

View File

@ -4,7 +4,7 @@
<avue-crud
ref="crudRef"
:data="state.data"
:option="state.option"
:option="tableOption"
v-model:page="state.page"
@on-load="onLoadFun"
:table-loading="state.loading"
@ -15,6 +15,35 @@
</div>
</template>
<template #deliveryDate="{ row }">{{ row.ifHidden === 0 ? row.deliveryDate : '' }}</template>
<template #f_VHUB_Text="{ row }">
<div v-if="row.ifHidden === 0" class="tableInputBox" @click="f_VHUB_TextTableInputBoxFun(row)">
<div v-if="!row.f_VHUB_TextInputShow">{{ row.f_VHUB_Text === '' ? '----' : row.f_VHUB_Text }}</div>
<el-input
v-else
style="text-align: center"
size="small"
v-model="row.f_VHUB_Text"
@blur="f_VHUB_TextTableInputBoxFun({ id: '-1' })"
@change="f_VHUB_TextTableInputChangFun(row)"
/>
</div>
</template>
<template #f_URXD_Date="{ row }">
<div v-if="row.ifHidden === 0" class="tableInputBox" @click="f_URXD_DateTableInputBoxFun(row)">
<div v-if="!row.f_URXD_DateInputShow">{{ row.f_URXD_Date === '' ? '----' : row.f_URXD_Date }}</div>
<el-date-picker
v-else
v-model="row.f_URXD_Date"
type="date"
:placeholder="t('message.index.date')"
size="small"
style="width: 100%"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
@change="f_URXD_DateTableInputChangFun(row)"
/>
</div>
</template>
<template #fBillNo="{ row }">{{ row.ifHidden === 0 ? row.fBillNo : '' }}</template>
<template #sheet="{ row }">{{ row.ifHidden === 0 ? row.sheet : '' }}</template>
<template #materialName="{ row }">
@ -27,16 +56,19 @@
<div class="multi-line-omit">{{ row.supplierName }}</div>
</el-tooltip>
</template>
<template #remark="{ row }">
<el-tooltip :content="row.remark" placement="top">
<div class="multi-line-omit">{{ row.remark }}</div>
</el-tooltip>
</template>
<template #remark="{ row }">
<el-tooltip :content="row.remark" placement="top">
<div class="multi-line-omit">{{ row.remark }}</div>
</el-tooltip>
</template>
<template #menu-left>
<div class="selectBoxes">
<div class="selectItem">
<el-input v-model="state.formData.sheet" style="width: 240px" :placeholder="t('message.index.deliveryNote')" size="default" />
</div>
<div class="selectItem">
<el-input v-model="state.formData.supplierName" style="width: 8vw" :placeholder="t('message.index.supplierName')" size="default" />
</div>
<div class="selectItem">
<el-date-picker
v-model="state.elDatePicker"
@ -54,7 +86,11 @@
<el-button type="primary" size="default" @click="selectFun">{{ t('message.index.search') }}</el-button>
<el-button size="default" @click="resetFun">{{ t('message.index.reset') }}</el-button>
<el-button type="primary" size="default" @click="openComponentPrintingFun">
<span>{{ t('message.index.selected') }} {{ state.selectedData.length }} {{ t('message.index.items') }}{{ t('message.index.print') }}</span>
<span
>{{ t('message.index.selected') }} {{ state.selectedData.length }} {{ t('message.index.items') }}{{
t('message.index.print')
}}</span
>
</el-button>
</div>
</template>
@ -65,30 +101,37 @@
</el-button>
</div>
</template>
<template #deleteText="{ row }">
<template #deleteTextAll="{ row }">
<div class="btnList">
<el-button v-if="row.ifHidden === 0" type="text" @click="invoiceOrderDeleteOrderFun(row)">
{{ t('message.index.deleteText') }}
{{ t('message.index.deleteTextAll') }}
</el-button>
</div>
</template>
<template #deleteText="{ row }">
<div class="btnList">
<el-button type="text" @click="invoiceOrderDeleteOrderFunOne(row)">
{{ t('message.index.deleteText') }}
</el-button>
</div>
</template>
</avue-crud>
</el-card>
<selectedData ref="selectedDataRef"/>
<selectedData ref="selectedDataRef" />
<componentPrinting ref="componentPrintingRef" />
</div>
</template>
<script lang="ts" setup>
import { reactive, onMounted, computed, ref,nextTick } from 'vue';
import { reactive, onMounted, computed, ref } from 'vue';
import { listApi } from '/@/api/list';
import { useI18n } from 'vue-i18n';
import SelectedData from '/@/views/materialReceiptNotice/selectedData.vue';
import componentPrinting from './componentPrinting.vue';
import { ElMessage, ElMessageBox } from 'element-plus';
const componentPrintingRef = ref();
const selectedDataRef = ref();
const LODOP = window.LODOP;
const { t } = useI18n();
const crudRef = ref();
const state = reactive({
@ -97,42 +140,7 @@ const state = reactive({
currentPage: 1,
pageSize: 30,
},
option: {
// excelBtn: true,
tip: false,
rowSort: false,
index: false,
menuWidth: 120,
border: true,
delBtn: false,
editBtn: false,
align: 'center',
selection: false,
searchMenuSpan: 3,
addBtn: false,
menu: false,
column: [
{ label: '', prop: 'checkboxBox', width: 35 },
{ label: computed(() => t('message.index.deliveryDate')), prop: 'deliveryDate' },
{ label: computed(() => t('message.index.deliveryNoteNumber2')), prop: 'sheet', width: '135' },
{ label: computed(() => t('message.index.sltzddh')), prop: 'fBillNo', width: '135' },
{ label: computed(() => t('message.index.PO1')), prop: 'purchaseOrderFBillNo', width: '135' },
{ label: computed(() => t('message.index.xsddh')), prop: 'fdemandbillno', width: '135' },
{ label: computed(() => t('message.index.maxcessLot')), prop : 'mssSupplierLot' },
{ label: computed(() => t('message.index.supplierLot')), prop: 'fSupplierLot' },
{ label: computed(() => t('message.index.partNumber')), prop: 'materialCode', width: '120' },
{ label: computed(() => t('message.index.materialName')), prop: 'materialName' },
{ label: computed(() => t('message.index.supplierCode')), prop: 'supplierId', width: '90',hide: true, },
{ label: computed(() => t('message.index.supplierName')), prop: 'supplierName', width: '120',hide: true, },
// { label: computed(() => t('message.index.receivedQTY')), prop: 'sendedQty', width: '110' },
{ label: computed(() => t('message.index.shipmentQTY')), prop: 'qty' },
// { label: computed(() => t('message.index.POQTY')), prop: 'purchaseQty' },
{ label: computed(() => t('message.index.unit')), prop: 'unitName' },
{ label: computed(() => t('message.tiaoma.cgbz')), prop: 'remark', width: 140 },
{ label: computed(() => t('message.index.print')), prop: 'print', width: 80 },
{ label: computed(() => t('message.index.deleteText')), prop: 'deleteText', width: 80 },
],
},
option: {},
data: [],
elDatePicker: '',
formData: {
@ -140,11 +148,127 @@ const state = reactive({
fDateBegin: '',
fDateEmd: '',
fmrpCloseStatus: '',
supplierName: ''
},
selectedData: [],
selectedDataShow: false,
loading: false,
});
const tableOption = computed(() => ({
tip: false,
rowSort: false,
index: false,
menuWidth: 120,
border: true,
delBtn: false,
editBtn: false,
align: 'center',
selection: false,
searchMenuSpan: 3,
addBtn: false,
menu: false,
column: [
{ label: '', prop: 'checkboxBox', width: 35 },
{ label: t('message.index.deliveryDate'), prop: 'deliveryDate' },
{ label: t('message.index.deliveryNoteNumber2'), prop: 'sheet', width: '135' },
{ label: t('message.index.sltzddh'), prop: 'fBillNo', width: '135' },
{ label: t('message.index.invoiceNumber'), prop: 'f_VHUB_Text', width: '135' },
{ label: t('message.index.fprq'), prop: 'f_URXD_Date', width: '135' },
{ label: t('message.index.cgtype'), prop: 'fbilltypeid', width: '110',filters: true },
{ label: t('message.index.PO1'), prop: 'purchaseOrderFBillNo', width: '135' },
{ label: t('message.index.xsddh'), prop: 'fdemandbillno', width: '135' },
{ label: t('message.index.maxcessLot'), prop: 'mssSupplierLot' },
{ label: t('message.index.supplierLot'), prop: 'fSupplierLot' },
{ label: t('message.index.partNumber'), prop: 'materialCode', width: '120' },
{ label: t('message.index.materialName'), prop: 'materialName' },
{ label: t('message.index.supplierCode'), prop: 'supplierId', width: '90', hide: true },
{ label: t('message.index.supplierName'), prop: 'supplierName', width: '120' },
{ label: t('message.index.shipmentQTY'), prop: 'qty' ,width: '120',},
{ label: t('message.index.unit'), prop: 'unitName' },
{ label: t('message.tiaoma.cgbz'), prop: 'remark', width: 140 },
{ label: t('message.index.print'), prop: 'print', width: 80 },
{ label: t('message.index.deleteTextAll'), prop: 'deleteTextAll', width: 80 },
{ label: t('message.index.deleteText'), prop: 'deleteText', width: 80 },
],
}))
const f_VHUB_TextTableInputChangFun = (row: any) => {
ElMessageBox({
closeOnClickModal: false,
closeOnPressEscape: false,
title: t('message.index.prompt'),
message: t('message.index.xgfphm'),
confirmButtonText: t('message.index.confirm'),
cancelButtonText: t('message.user.logOutCancel'),
showCancelButton: true,
buttonSize: 'default',
beforeClose: (action, instance, done) => {
if (action === 'confirm') {
instance.confirmButtonLoading = true;
listApi()
.BatchSetFaPiao({
f_VHUB_Text: row.f_VHUB_Text,
f_URXD_Date: row.f_URXD_Date,
ids: [row.id.toString()],
})
.then((res: any) => {
done();
if (res.resultCode === 0) {
ElMessage.success(t('message.index.passwordChangedSuccessfully'));
getList();
}
});
} else {
done();
}
},
});
};
const f_URXD_DateTableInputChangFun = (row: any) => {
ElMessageBox({
closeOnClickModal: false,
closeOnPressEscape: false,
title: t('message.index.prompt'),
message: t('message.index.xgfprq'),
confirmButtonText: t('message.index.confirm'),
cancelButtonText: t('message.user.logOutCancel'),
showCancelButton: true,
buttonSize: 'default',
beforeClose: (action, instance, done) => {
if (action === 'confirm') {
instance.confirmButtonLoading = true;
listApi()
.BatchSetFaPiao({
f_VHUB_Text: row.f_VHUB_Text,
f_URXD_Date: row.f_URXD_Date,
ids: [row.id.toString()],
})
.then((res: any) => {
done();
if (res.resultCode === 0) {
ElMessage.success(t('message.index.passwordChangedSuccessfully'));
getList();
}
});
} else {
done();
}
},
});
};
const f_VHUB_TextTableInputBoxFun = (row: any) => {
state.data.forEach((item: any) => {
if (item.id === row.id) item.f_VHUB_TextInputShow = true;
else delete item.f_VHUB_TextInputShow;
});
};
const f_URXD_DateTableInputBoxFun = (row: any) => {
state.data.forEach((item: any) => {
if (item.id === row.id) item.f_URXD_DateInputShow = true;
else delete item.f_URXD_DateInputShow;
});
};
const elDatePickerFun = (val: any) => {
state.formData.fDateBegin = val[0];
state.formData.fDateEmd = val[1];
@ -177,6 +301,36 @@ const invoiceOrderDeleteOrderFun = (row: any) => {
},
});
};
const invoiceOrderDeleteOrderFunOne = (row: any) => {
ElMessageBox({
closeOnClickModal: false,
closeOnPressEscape: false,
title: t('message.index.prompt'),
message: t('message.index.scqd1'),
confirmButtonText: t('message.index.confirm'),
cancelButtonText: t('message.user.logOutCancel'),
showCancelButton: true,
buttonSize: 'default',
beforeClose: (action, instance, done) => {
if (action === 'confirm') {
instance.confirmButtonLoading = true;
listApi()
.DeleteOrderDetail({ id: row.id })
.then((res: any) => {
done();
getList();
if (res.resultCode === 0) {
ElMessage.success(t('message.index.success'));
}
});
} else {
done();
}
},
});
}
const selectionChange = (row: any) => {
if (row.checkboxBox == '1') {
state.data.forEach((item: any) => {
@ -184,7 +338,8 @@ const selectionChange = (row: any) => {
item.checkboxBox = '0';
}
});
listApi().invoiceOrderGetPageList({
listApi()
.invoiceOrderGetPageList({
condition: {
sheet: row.sheet,
fDateBegin: '',
@ -208,11 +363,10 @@ const componentPrintingFunDataRow = (row: any) => {
componentPrintingRef.value.openShowDataFun(row);
};
const openComponentPrintingFun = () => {
if(state.selectedData.length){
console.log(state.selectedData)
selectedDataRef.value.showFun(state.selectedData)
}
}
if (state.selectedData.length) {
selectedDataRef.value.showFun(state.selectedData);
}
};
//
const selectFun = () => {
state.page.currentPage = 1;
@ -260,14 +414,30 @@ onMounted(() => {});
</script>
<style lang="scss" scoped>
.tableInputBox {
width: 100%;
cursor: pointer;
}
.tableInputBox:hover {
color: #409eff;
}
:deep(.el-checkbox) {
height: 15px !important;
}
:deep(.avue-crud__refreshBtn) {
display: none;
display: none;
}
:deep(.cell) {
padding: 0 !important;
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
:deep(.avue-crud__left) {
@ -353,11 +523,12 @@ onMounted(() => {});
}
:deep(.el-form) {
flex: 1;
overflow: hidden;
flex: 1;
overflow: hidden;
}
:deep(.el-table--default){
height: 100%;
:deep(.el-table--default) {
height: 100%;
}
.system-user-container {

View File

@ -4,10 +4,11 @@
<avue-crud
ref="crudRef"
:data="state.data"
:option="state.option"
:option="tableOption"
v-model:page="state.page"
@on-load="onLoadFun"
@selection-change="selectionChange"
@sort-change="sortChange"
:table-loading="state.loading"
>
<template #fBillNo="{ row }">
@ -15,22 +16,27 @@
</template>
<template #fDate="{ row }">{{ row.ifHidden === 0 ? row.fDate : '' }}</template>
<template #fPurchaseOrgName="{ row }">
<el-tooltip :content="row.fPurchaseOrgName" placement="top" v-if="row.ifHidden === 0 ">
<div class="multi-line-omit">{{ row.fPurchaseOrgName }}</div>
</el-tooltip>
</template>
<el-tooltip :content="row.fPurchaseOrgName" placement="top" v-if="row.ifHidden === 0">
<div class="multi-line-omit">{{ row.fPurchaseOrgName }}</div>
</el-tooltip>
</template>
<template #fCancelStatus="{ row }">
{{ row.ifHidden === 0 ? (row.fCancelStatus === 'A' ? t('message.index.unclosed') : t('message.index.unclosed')) : '' }}
</template>
<template #materialName="{ row }">
<el-tooltip :content="row.materialName" placement="top">
<div class="multi-line-omit">{{ row.materialName }}</div>
</el-tooltip>
</template>
<template #materialName="{ row }">
<el-tooltip :content="row.materialName" placement="top">
<div class="multi-line-omit">{{ row.materialName }}</div>
</el-tooltip>
</template>
<template #supplierName="{ row }">
<el-tooltip :content="row.supplierName" placement="top">
<div class="multi-line-omit">{{ row.supplierName }}</div>
</el-tooltip>
</template>
<template #receiveorgName="{ row }">
<el-tooltip :content="row.receiveorgName" placement="top">
<div class="multi-line-omit">{{ row.receiveorgName }}</div>
</el-tooltip>
<el-tooltip :content="row.receiveorgName" placement="top">
<div class="multi-line-omit">{{ row.receiveorgName }}</div>
</el-tooltip>
</template>
<template #chengNuoJiaoQi="{ row }">
<el-date-picker
@ -38,10 +44,10 @@
type="date"
:placeholder="t('message.index.date')"
size="small"
style="width: 100%"
style="width: 100%"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
:disabled="row.chengNuoJiaoQi != null"
:disabled="row.chengNuoJiaoQi != null"
@change="batchSetChengNuoJiaoQiFun([{ id: row.id, newTime: row.chengNuoJiaoQi }])"
/>
</template>
@ -54,67 +60,75 @@
style="width: 100%"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
:disabled="true"
@change="batchSetNewChengNuoJiaoQiFun([{ id: row.id, newTime: row.newChengNuoJiaoQi }])"
/>
</template>
<template #menu-left>
<div class="selectBoxes">
<div class="selectBoxes">
<div class="selectItem">
<el-input v-model="state.formData.fBillNo" style="width: 8vw" :placeholder="t('message.index.DocNumber')" size="default" />
</div>
<div class="selectItem">
<el-input v-model="state.formData.fBillNo" style="width: 8vw" :placeholder="t('message.index.DocNumber')" size="default" />
<el-input v-model="state.formData.supplierName" style="width: 8vw" :placeholder="t('message.index.supplierName')" size="default" />
</div>
<div class="selectItem">
<el-input v-model="state.formData.materialCode" style="width: 8vw" :placeholder="t('message.tiaoma.pno')" size="default" />
</div>
<div class="selectItem">
<el-select :placeholder="t('message.index.DocStatus')" size="default" style="width: 8vw" v-model="state.formData.fmrpCloseStatus">
<el-option v-for="item in state.option.column[11].dicData" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</div>
<div class="selectItem">
<el-date-picker
v-model="state.elDatePicker"
style="width: 22vw"
type="daterange"
range-separator="-"
:start-placeholder="t('message.index.StartDate')"
:end-placeholder="t('message.index.EndDate')"
size="default"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
@change="elDatePickerFun"
/>
</div>
<div class="selectItem" style="margin-right: 0">
<el-button type="primary" size="default" @click="selectFun">{{ t('message.index.search') }}</el-button>
<el-button size="default" @click="resetFun">{{ t('message.index.reset') }}</el-button>
</div>
<div class="selectItem" style="flex: 1; margin-right: 0">
<div class="piliang">
<el-button type="primary" size="small" @click="state.selectedDataShow = true">
<span>{{ t('message.index.selected') }} {{ state.selectedData.length }} {{ t('message.index.items') }}{{ t('message.index.proceed') }}</span>
</el-button>
<el-date-picker
v-model="state.chengNuoJiaoQiP"
type="date"
:placeholder="t('message.index.batchUpdateEarliestDeliveryDate')"
size="small"
style="width: 45%; margin-left: 12px"
@change="chengNuoJiaoQiPFun('0')"
/>
<el-date-picker
v-model="state.newChengNuoJiaoQiP"
type="date"
:placeholder="t('message.index.batchUpdateLatestDeliveryDate')"
size="small"
style="width: 45%; margin-left: 12px"
@change="chengNuoJiaoQiPFun('1')"
/>
</div>
</div>
</div>
</template>
<div class="selectItem">
<el-input v-model="state.formData.materialCode" style="width: 8vw" :placeholder="t('message.tiaoma.pno')" size="default" />
</div>
<div class="selectItem">
<el-select :placeholder="t('message.index.DocStatus')" size="default" style="width: 8vw" v-model="state.formData.fmrpCloseStatus">
<el-option v-for="(item,index) in state.fmrpCloseStatusUl" :key="index" :label="item.label" :value="item.value" />
</el-select>
</div>
<div class="selectItem">
<el-date-picker
v-model="state.elDatePicker"
style="width: 22vw"
type="daterange"
range-separator="-"
:start-placeholder="t('message.index.StartDate')"
:end-placeholder="t('message.index.EndDate')"
size="default"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
@change="elDatePickerFun"
/>
</div>
<div class="selectItem" style="margin-right: 0">
<el-button type="primary" size="default" @click="selectFun">{{ t('message.index.search') }}</el-button>
<el-button size="default" @click="resetFun">{{ t('message.index.reset') }}</el-button>
</div>
<div class="selectItem" style="flex: 1; margin-right: 0">
<div class="piliang">
<el-button type="primary" size="small" @click="state.selectedDataShow = true">
<span
>{{ t('message.index.selected') }} {{ state.selectedData.length }} {{ t('message.index.items') }}{{
t('message.index.proceed')
}}</span
>
</el-button>
<el-date-picker
v-model="state.chengNuoJiaoQiP"
type="date"
:placeholder="t('message.index.batchUpdateEarliestDeliveryDate')"
size="small"
style="width: 45%; margin-left: 12px"
@change="chengNuoJiaoQiPFun('0')"
/>
<el-date-picker
v-model="state.newChengNuoJiaoQiP"
type="date"
:placeholder="t('message.index.batchUpdateLatestDeliveryDate')"
size="small"
style="width: 45%; margin-left: 12px"
@change="chengNuoJiaoQiPFun('1')"
/>
</div>
</div>
</div>
</template>
<template #menu="{ row }">
<el-button type="text" icon="el-icon-pie-chart" @click="toPurchaseDetails(row)">{{ t('message.index.view') }}</el-button>
<el-button type="text" icon="el-icon-pie-chart" @click="toPurchaseDetails(row)">{{ t('message.index.view') }} </el-button>
</template>
</avue-crud>
</el-card>
@ -140,6 +154,8 @@ import { listApi } from '/@/api/list';
import { useI18n } from 'vue-i18n';
import SelectedData from '/@/views/mssPurchaseOrder/selectedData.vue';
import { ElMessage, ElMessageBox } from 'element-plus';
import { Local } from '/@/utils/storage';
const crudRef = ref()
const selectedDataRef = ref();
const { t } = useI18n();
const router = useRouter();
@ -150,6 +166,10 @@ const state = reactive({
currentPage: 1,
pageSize: 30,
},
fmrpCloseStatusUl:[
{ label: computed(() => t('message.index.normal')), value: 'A' },
{ label: computed(() => t('message.index.closed')), value: 'B' },
],
option: {
tip: false,
index: false,
@ -163,47 +183,155 @@ const state = reactive({
reserveSelection: true,
searchMenuSpan: 3,
addBtn: false,
defaultSort: {
prop: 'fBillNo',
order: 'ascending'
},
column: [
{ label: computed(() => t('message.index.DocNumber')), prop: 'fBillNo', searchSpan: 3, width: '125',filters: true },
{ label: computed(() => t('message.index.khmc')), prop: 'fPurchaseOrgName', searchSpan: 3, width: '165',filters: true },
{ label: computed(() => t('message.index.date1')), prop: 'fDate', type: 'datetime', searchSpan: 6, searchRange: true,width: '125' },
{
label: computed(() => t('message.index.DocNumber')),
prop: 'fBillNo',
searchSpan: 3,
width: '140',
filters: true,
sortable: true,
},
{
label: computed(() => t('message.index.khmc')),
prop: 'fPurchaseOrgName',
searchSpan: 3,
width: '180',
filters: true,
sortable: true,
},
{
label: computed(() => t('message.index.date1')),
prop: 'fDate',
type: 'datetime',
searchSpan: 6,
searchRange: true,
width: '140',
sortable: true,
},
{
label: computed(() => t('message.index.status')),
prop: 'fCancelStatus',
filters: true,
filters: true,
dicData: [
{ label: computed(() => t('message.index.unclosed')), value: 'A' },
{ label: computed(() => t('message.index.closed1')), value: 'B' },
{ label: computed(() => t('message.index.unclosed')), value: 'A' },
{ label: computed(() => t('message.index.closed1')), value: 'B' },
],
width: '110',
width: '130',
sortable: true,
},
{
label: computed(() => t('message.index.supplierName')),
prop: 'supplierName',
searchSpan: 3,
width: '200',
filters: true,
sortable: true,
},
{
label: computed(() => t('message.index.xsddh')),
prop: 'fdemandbillno',
searchSpan: 3,
width: '140',
filters: true,
sortable: true,
},
{
label: computed(() => t('message.index.sgxsddh')),
prop: 'f_TSPR_Text_qtr1',
searchSpan: 3,
width: '165',
filters: true,
sortable: true,
},
{
label: computed(() => t('message.index.partNumber')),
prop: 'materialCode',
width: '185',
filters: true,
sortable: true,
},
{
label: computed(() => t('message.index.materialName')),
prop: 'materialName',
width: '240',
filters: true,
sortable: true,
},
{ label: computed(() => t('message.index.unit')), prop: 'unitName', width: '135', filters: true, sortable: true },
{ label: computed(() => t('message.index.qty')), prop: 'qty', width: '135', filters: true, sortable: true },
{
label: computed(() => t('message.index.cgtype')),
prop: 'fbilltypeid',
width: '200',
filters: true,
sortable: true,
},
{
label: computed(() => t('message.index.organizationCode')),
prop: 'receiveorgCode',
width: '180',
filters: true,
sortable: true,
},
{
label: computed(() => t('message.index.organizationName')),
prop: 'receiveorgName',
width: '180',
filters: true,
sortable: true,
},
{
label: computed(() => t('message.index.requestDate')),
prop: 'fDeliveryDate',
width: '165',
filters: true,
sortable: true,
},
{ label: computed(() => t('message.index.xsddh')), prop: 'fdemandbillno', searchSpan: 3, width: '125',filters: true },
{ label: computed(() => t('message.index.sgxsddh')), prop: 'f_TSPR_Text_qtr1', searchSpan: 3, width: '140',filters: true },
{ label: computed(() => t('message.index.partNumber')), prop: 'materialCode', width: '160',filters: true },
{ label: computed(() => t('message.index.materialName')), prop: 'materialName', width: '240',filters: true, },
{ label: computed(() => t('message.index.unit')), prop: 'unitName', width: '110',filters: true, },
{ label: computed(() => t('message.index.qty')), prop: 'qty', width: '110',filters: true },
{ label: computed(() => t('message.index.organizationCode')), prop: 'receiveorgCode', width: '180',filters: true },
{ label: computed(() => t('message.index.organizationName')), prop: 'receiveorgName', width: '180',filters: true },
{ label: computed(() => t('message.index.requestDate')), prop: 'fDeliveryDate', width: '165',filters: true },
{
label: computed(() => t('message.index.DocStatus')),
prop: 'fmrpCloseStatus',
searchSpan: 3,
filters: true,
filters: true,
dicData: [
{ label: computed(() => t('message.index.normal')), value: 'A' },
{ label: computed(() => t('message.index.closed')), value: 'B' },
{ label: computed(() => t('message.index.normal')), value: 'A' },
{ label: computed(() => t('message.index.closed')), value: 'B' },
],
width: '110',
width: '135',
sortable: true,
},
{
label: computed(() => t('message.index.receivedQTY')),
prop: 'mssReceiveQty',
width: '210',
filters: true,
sortable: true,
},
{
label: computed(() => t('message.index.unreceivedQTY')),
prop: 'notSendQty',
width: '140',
filters: true,
sortable: true,
},
{
label: computed(() => t('message.index.earliestDeliveryDate')),
prop: 'chengNuoJiaoQi',
width: '200',
filters: true,
sortable: true,
},
{
label: computed(() => t('message.index.latestDeliveryDate')),
prop: 'newChengNuoJiaoQi',
width: '220',
filters: true,
sortable: true,
},
{ label: computed(() => t('message.index.receivedQTY')), prop: 'mssReceiveQty', width: '180',filters: true },
{ label: computed(() => t('message.index.unreceivedQTY')), prop: 'notSendQty', width: '110',filters: true },
{ label: computed(() => t('message.index.earliestDeliveryDate')), prop: 'chengNuoJiaoQi', width: '160',filters: true },
{ label: computed(() => t('message.index.latestDeliveryDate')), prop: 'newChengNuoJiaoQi', width: '180',filters: true },
],
},
data: [],
@ -213,14 +341,81 @@ const state = reactive({
fDateBegin: '',
fDateEmd: '',
fmrpCloseStatus: '',
materialCode:''
},
materialCode: '',
sortType: 0,
sortString: '',
supplierName: ''
} as any,
selectedData: [],
chengNuoJiaoQiP: '',
newChengNuoJiaoQiP: '',
selectedDataShow: false,
loading: false,
});
const tableOption = computed(() => ({
tip: false,
index: false,
menu: true,
menuWidth: 85,
border: true,
delBtn: false,
editBtn: false,
align: 'center',
selection: true,
reserveSelection: true,
searchMenuSpan: 3,
addBtn: false,
defaultSort: {
prop: 'fBillNo',
order: 'ascending'
},
column: [
{ label: t('message.index.DocNumber'), prop: 'fBillNo', searchSpan: 3, width: '140', filters: true, sortable: true },
{ label: t('message.index.khmc'), prop: 'fPurchaseOrgName', searchSpan: 3, width: '180', filters: true, sortable: true },
{ label: t('message.index.date1'), prop: 'fDate', type: 'datetime', searchSpan: 6, searchRange: true, width: '140', sortable: true },
{
label: t('message.index.status'),
prop: 'fCancelStatus',
filters: true,
dicData: [
{ label: t('message.index.unclosed'), value: 'A' },
{ label: t('message.index.closed1'), value: 'B' },
],
width: '130',
sortable: true,
},
{ label: t('message.index.supplierName'), prop: 'supplierName', searchSpan: 3, width: '200', filters: true, sortable: true },
{ label: t('message.index.xsddh'), prop: 'fdemandbillno', searchSpan: 3, width: '140', filters: true, sortable: true },
{ label: t('message.index.sgxsddh'), prop: 'f_TSPR_Text_qtr1', searchSpan: 3, width: '165', filters: true, sortable: true },
{ label: t('message.index.partNumber'), prop: 'materialCode', width: '185', filters: true, sortable: true },
{ label: t('message.index.materialName'), prop: 'materialName', width: '240', filters: true, sortable: true },
{ label: t('message.index.unit'), prop: 'unitName', width: '135', filters: true, sortable: true },
{ label: t('message.index.qty'), prop: 'qty', width: '135', filters: true, sortable: true },
{ label: t('message.index.cgtype'), prop: 'fbilltypeid', width: '200', filters: true, sortable: true },
{ label: t('message.index.organizationCode'), prop: 'receiveorgCode', width: '180', filters: true, sortable: true },
{ label: t('message.index.organizationName'), prop: 'receiveorgName', width: '180', filters: true, sortable: true },
{ label: t('message.index.requestDate'), prop: 'fDeliveryDate', width: '165', filters: true, sortable: true },
{
label: t('message.index.DocStatus'),
prop: 'fmrpCloseStatus',
searchSpan: 3,
filters: true,
dicData: [
{ label: t('message.index.normal'), value: 'A' },
{ label: t('message.index.closed'), value: 'B' },
],
width: '135',
sortable: true,
},
{ label: t('message.index.receivedQTY'), prop: 'mssReceiveQty', width: '210', filters: true, sortable: true },
{ label: t('message.index.unreceivedQTY'), prop: 'notSendQty', width: '140', filters: true, sortable: true },
{ label: t('message.index.earliestDeliveryDate'), prop: 'chengNuoJiaoQi', width: '200', filters: true, sortable: true },
{ label: t('message.index.latestDeliveryDate'), prop: 'newChengNuoJiaoQi', width: '220', filters: true, sortable: true },
],
}));
const selectionChange = (list: any) => {
nextTick(() => {
state.selectedData = JSON.parse(JSON.stringify(list));
@ -232,15 +427,15 @@ const chengNuoJiaoQiPFun = (e: string) => {
if (e === '0') {
state.selectedData.forEach((item: any) => {
arr.push({ id: item.id, newTime: state.chengNuoJiaoQiP });
item.chengNuoJiaoQi = state.chengNuoJiaoQiP
item.chengNuoJiaoQi = state.chengNuoJiaoQiP;
});
ElMessageBox({
closeOnClickModal: false,
closeOnPressEscape: false,
title: t('message.index.prompt'),
message: t('message.index.pleaseConfirmTheDateChange'),
confirmButtonText: t('message.user.logOutConfirm'),
cancelButtonText: t('message.user.logOutCancel'),
title: t('message.index.prompt'),
message: t('message.index.pleaseConfirmTheDateChange'),
confirmButtonText: t('message.user.logOutConfirm'),
cancelButtonText: t('message.user.logOutCancel'),
showCancelButton: true,
buttonSize: 'default',
beforeClose: (action, instance, done) => {
@ -269,15 +464,15 @@ const chengNuoJiaoQiPFun = (e: string) => {
if (e === '1') {
state.selectedData.forEach((item: any) => {
arr.push({ id: item.id, newTime: state.newChengNuoJiaoQiP });
item.newChengNuoJiaoQi = state.newChengNuoJiaoQiP
item.newChengNuoJiaoQi = state.newChengNuoJiaoQiP;
});
ElMessageBox({
closeOnClickModal: false,
closeOnPressEscape: false,
title: t('message.index.prompt'),
message: t('message.index.pleaseConfirmTheDateChange'),
confirmButtonText: t('message.user.logOutConfirm'),
cancelButtonText: t('message.user.logOutCancel'),
title: t('message.index.prompt'),
message: t('message.index.pleaseConfirmTheDateChange'),
confirmButtonText: t('message.user.logOutConfirm'),
cancelButtonText: t('message.user.logOutCancel'),
showCancelButton: true,
buttonSize: 'default',
beforeClose: (action, instance, done) => {
@ -310,10 +505,10 @@ const batchSetChengNuoJiaoQiFun = (arr: any) => {
ElMessageBox({
closeOnClickModal: false,
closeOnPressEscape: false,
title: t('message.index.prompt'),
message: t('message.index.pleaseConfirmTheDateChange'),
confirmButtonText: t('message.user.logOutConfirm'),
cancelButtonText: t('message.user.logOutCancel'),
title: t('message.index.prompt'),
message: t('message.index.pleaseConfirmTheDateChange'),
confirmButtonText: t('message.user.logOutConfirm'),
cancelButtonText: t('message.user.logOutCancel'),
showCancelButton: true,
buttonSize: 'default',
beforeClose: (action, instance, done) => {
@ -322,6 +517,7 @@ const batchSetChengNuoJiaoQiFun = (arr: any) => {
listApi()
.batchSetChengNuoJiaoQi(arr)
.then((res: any) => {
getList();
done();
if (res.resultCode === 0) {
getList();
@ -333,7 +529,7 @@ const batchSetChengNuoJiaoQiFun = (arr: any) => {
}
});
} else {
getList();
getList();
done();
}
},
@ -343,10 +539,10 @@ const batchSetNewChengNuoJiaoQiFun = (arr: any) => {
ElMessageBox({
closeOnClickModal: false,
closeOnPressEscape: false,
title: t('message.index.prompt'),
message: t('message.index.pleaseConfirmTheDateChange'),
confirmButtonText: t('message.user.logOutConfirm'),
cancelButtonText: t('message.user.logOutCancel'),
title: t('message.index.prompt'),
message: t('message.index.pleaseConfirmTheDateChange'),
confirmButtonText: t('message.user.logOutConfirm'),
cancelButtonText: t('message.user.logOutCancel'),
showCancelButton: true,
buttonSize: 'default',
beforeClose: (action, instance, done) => {
@ -366,7 +562,7 @@ const batchSetNewChengNuoJiaoQiFun = (arr: any) => {
}
});
} else {
getList();
getList();
done();
}
},
@ -389,6 +585,34 @@ const elDatePickerFun = (val: any) => {
state.formData.fDateBegin = val[0];
state.formData.fDateEmd = val[1];
};
const sortChange = (row: any) => {
/*
order
ascending 正序
descending 倒序
null 无序
prop
*/
// sortType: 0,
// sortString: '',
console.log( state.option.defaultSort)
if (row.order === 'ascending') {
state.formData.sortType = 1;
state.formData.sortString = row.prop;
// state.option.defaultSort.order = 'ascending'
}
if (row.order === 'descending') {
state.formData.sortType = 0;
state.formData.sortString = row.prop;
// state.option.defaultSort.order = 'descending'
}
if (row.order === null) {
state.formData.sortType = 1;
state.formData.sortString = ''
// state.option.defaultSort.order = 'ascending'
}
getList();
};
//
const selectFun = () => {
state.page.currentPage = 1;
@ -404,13 +628,19 @@ const resetFun = () => {
fDateBegin: '',
fDateEmd: '',
fmrpCloseStatus: '',
sortType: 0,
sortString: '',
};
Local.remove('mssPurchaseOrderForm')
Local.remove('mssPurchaseOrderOption')
crudRef.value.refreshTable()
getList();
};
const onLoadFun = (e: any) => {
state.page.currentPage = e.currentPage;
state.page.pageSize = e.pageSize;
getList();
state.page.currentPage != 1 ? getList() : null
console.log(state.page.currentPage)
};
const getList = () => {
state.loading = true;
@ -423,6 +653,9 @@ const getList = () => {
.then((res: any) => {
state.loading = false;
if (res.resultCode === 0) {
Local.set('mssPurchaseOrderForm', state.formData);
Local.set('mssPurchaseOrderOption',JSON.stringify(state.option))
console.log(state.option)
state.data = res.data.dataList;
state.page.total = res.data.total;
}
@ -430,6 +663,22 @@ const getList = () => {
};
//
onMounted(() => {
const mssPurchaseOrderForm : any = Local.get('mssPurchaseOrderForm') || {}
const mssPurchaseOrderOption : any = Local.get('mssPurchaseOrderOption') || {}
// debugger
if(Object.keys(mssPurchaseOrderForm).length > 0){
nextTick(() => {
state.formData = mssPurchaseOrderForm
getList()
})
} else {
Local.set('mssPurchaseOrderForm', state.formData);
getList()
}
if(Object.keys(mssPurchaseOrderOption).length > 0){
state.option = JSON.parse(mssPurchaseOrderOption)
console.log(state.option);
}
});
</script>
@ -534,11 +783,13 @@ onMounted(() => {
:deep(.el-form) {
flex: 1;
overflow: hidden;
overflow: hidden;
}
:deep(.el-table--default){
height: 100%;
:deep(.el-table--default) {
height: 100%;
}
.system-user-container {
:deep(.el-card__body) {
display: flex;

View File

@ -1,7 +1,7 @@
<template>
<div class="system-user-container layout-padding">
<el-card class="layout-padding-auto" shadow="hover">
<avue-crud ref="crudRef" :data="state.data" :option="state.option" @selection-change="selectionChange" :table-loading="state.loading">
<avue-crud ref="crudRef" :data="state.data" :option="tableOption" @selection-change="selectionChange" :table-loading="state.loading">
<template #fBillNo="{ row }">{{ row.fBillNo }}</template>
<template #fDate="{ row }">{{ row.fDate }}</template>
<template #materialName="{ row }">
@ -18,7 +18,7 @@
style="width: 220px"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
:disabled="row.chengNuoJiaoQi != null"
:disabled="row.chengNuoJiaoQi != null"
@change="batchSetChengNuoJiaoQiFun([{ id: row.id, newTime: row.chengNuoJiaoQi }])"
/>
</template>
@ -31,6 +31,7 @@
style="width: 220px"
format="YYYY-MM-DD"
value-format="YYYY-MM-DD"
:disabled="true"
@change="batchSetNewChengNuoJiaoQiFun([{ id: row.id, newTime: row.newChengNuoJiaoQi }])"
/>
</template>
@ -95,59 +96,6 @@ const state = reactive({
currentPage: 1,
pageSize: 25,
},
option: {
tip: false,
index: true,
menuWidth: 120,
border: true,
delBtn: false,
editBtn: false,
align: 'center',
// searchLabelWidth:100,
selection: true,
searchMenuSpan: 3,
addBtn: false,
menu: false,
column: [
{ label: computed(() => t('message.index.DocNumber')), prop: 'fBillNo', searchSpan: 3, width: '125' },
{
label: computed(() => t('message.index.date')),
prop: 'fDate',
type: 'datetime',
searchSpan: 6,
searchRange: true,
},
{
label: computed(() => t('message.index.status')),
prop: 'fCancelStatus',
dicData: [
{ label: computed(() => t('message.index.unclosed')), value: 'A' },
{ label: computed(() => t('message.index.closed1')), value: 'B' },
],
width: '90',
},
{ label: computed(() => t('message.index.partNumber')), prop: 'materialCode', width: '120' },
{ label: computed(() => t('message.index.materialName')), prop: 'materialName', width: '240' },
{ label: computed(() => t('message.index.specification')), prop: 'guige', width: '120' },
{ label: computed(() => t('message.index.unit')), prop: 'unitName', width: '90' },
{ label: computed(() => t('message.index.qty')), prop: 'qty', width: '90' },
{ label: computed(() => t('message.index.requestDate')), prop: 'fDeliveryDate', width: '165' },
{
label: computed(() => t('message.index.DocStatus')),
prop: 'fmrpCloseStatus',
searchSpan: 3,
dicData: [
{ label: computed(() => t('message.index.normal')), value: 'A' },
{ label: computed(() => t('message.index.closed')), value: 'B' },
],
width: '90',
},
{ label: computed(() => t('message.index.receivedQTY')), prop: 'mssReceiveQty', width: '180' },
{ label: computed(() => t('message.index.unreceivedQTY')), prop: 'notSendQty', width: '110' },
{ label: computed(() => t('message.index.earliestDeliveryDate')), prop: 'chengNuoJiaoQi', width: '160' },
{ label: computed(() => t('message.index.latestDeliveryDate')), prop: 'newChengNuoJiaoQi', width: '160' },
],
},
data: [],
elDatePicker: '',
formData: {
@ -163,6 +111,61 @@ const state = reactive({
loading: false,
topId: '',
});
const tableOption = computed(() => ({
tip: false,
index: true,
menuWidth: 120,
border: true,
delBtn: false,
editBtn: false,
align: 'center',
selection: true,
searchMenuSpan: 3,
addBtn: false,
menu: false,
column: [
{ label: t('message.index.DocNumber'), prop: 'fBillNo', searchSpan: 3, width: '125' },
{
label: t('message.index.date'),
prop: 'fDate',
type: 'datetime',
searchSpan: 6,
searchRange: true,
},
{
label: t('message.index.status'),
prop: 'fCancelStatus',
dicData: [
{ label: t('message.index.unclosed'), value: 'A' },
{ label: t('message.index.closed1'), value: 'B' },
],
width: '90',
},
{ label: t('message.index.partNumber'), prop: 'materialCode', width: '120' },
{ label: t('message.index.materialName'), prop: 'materialName', width: '240' },
{ label: t('message.index.specification'), prop: 'guige', width: '120' },
{ label: t('message.index.unit'), prop: 'unitName', width: '90' },
{ label: t('message.index.qty'), prop: 'qty', width: '90' },
{ label: t('message.index.cgtype'), prop: 'fbilltypeid', width: '110', filters: true },
{ label: t('message.index.requestDate'), prop: 'fDeliveryDate', width: '165' },
{
label: t('message.index.DocStatus'),
prop: 'fmrpCloseStatus',
searchSpan: 3,
dicData: [
{ label: t('message.index.normal'), value: 'A' },
{ label: t('message.index.closed'), value: 'B' },
],
width: '90',
},
{ label: t('message.index.receivedQTY'), prop: 'mssReceiveQty', width: '180' },
{ label: t('message.index.unreceivedQTY'), prop: 'notSendQty', width: '110' },
{ label: t('message.index.earliestDeliveryDate'), prop: 'chengNuoJiaoQi', width: '160' },
{ label: t('message.index.latestDeliveryDate'), prop: 'newChengNuoJiaoQi', width: '160' },
],
}))
const selectionChange = (list: any) => {
nextTick(() => {
state.selectedData = JSON.parse(JSON.stringify(list));

View File

@ -1,7 +1,7 @@
<template>
<el-dialog :model-value="props.showes" @close="closeFun" width="90%">
<avue-crud ref="crudRef" :data="state.data" :option="state.option">
<avue-crud ref="crudRef" :data="state.data" :option="tableOption">
<template #fSupplierLot="{ row }">
<div style="display: flex; align-items: center; justify-content: center">
<el-input v-model="row.fSupplierLot" :placeholder="t('message.index.supplierLot')" size="small" />
@ -84,37 +84,40 @@ const state = reactive({
data: [],
show: true,
formData: {},
option: {
tip: false,
selection: false,
index: true,
menu: false,
menuWidth: 150,
border: true,
delBtn: false,
editBtn: false,
align: 'center',
searchLabelWidth: 140,
searchMenuSpan: 6,
addBtn: false,
column: [
{ label: computed(() => t('message.index.PO1')), prop: 'fBillNo' },
{ label: computed(() => t('message.index.partNumber')), prop: 'materialCode' },
{ label: computed(() => t('message.index.materialName')), prop: 'materialName', width: '180' },
{ label: computed(() => t('message.index.unit')), prop: 'unitName' },
{ label: computed(() => t('message.index.qty')), prop: 'qty' },
{ label: computed(() => t('message.index.receivedQTY')), prop: 'mssReceiveQty' },
{ label: computed(() => t('message.index.unreceivedQTY')), prop: 'notSendQtyText' },
{ label: computed(() => t('message.index.supplierLot')), prop: 'fSupplierLot' },
{ label: computed(() => t('message.index.shipmentQTY')), prop: 'notSendQty', width: '180' },
{ label: computed(() => t('message.index.earliestDeliveryDate')), prop: 'chengNuoJiaoQi', width: '180' },
{ label: computed(() => t('message.index.latestDeliveryDate')), prop: 'newChengNuoJiaoQi', width: '180' },
],
},
option: {},
topId: '',
chengNuoJiaoQiP: '',
newChengNuoJiaoQiP: '',
});
const tableOption = computed(() => ({
tip: false,
selection: false,
index: true,
menu: false,
menuWidth: 150,
border: true,
delBtn: false,
editBtn: false,
align: 'center',
searchLabelWidth: 140,
searchMenuSpan: 6,
addBtn: false,
column: [
{ label: t('message.index.PO1'), prop: 'fBillNo' },
{ label: t('message.index.partNumber'), prop: 'materialCode' },
{ label: t('message.index.materialName'), prop: 'materialName', width: '180' },
{ label: t('message.index.unit'), prop: 'unitName' },
{ label: t('message.index.qty'), prop: 'qty' },
{ label: t('message.index.receivedQTY'), prop: 'mssReceiveQty' },
{ label: t('message.index.unreceivedQTY'), prop: 'notSendQtyText' },
{ label: t('message.index.supplierLot'), prop: 'fSupplierLot' },
{ label: t('message.index.shipmentQTY'), prop: 'notSendQty', width: '180' },
{ label: t('message.index.earliestDeliveryDate'), prop: 'chengNuoJiaoQi', width: '180' },
{ label: t('message.index.latestDeliveryDate'), prop: 'newChengNuoJiaoQi', width: '180' },
],
}))
watch(
() => props.listData,
() => {
@ -126,14 +129,14 @@ watch(
);
const batchAddInvoiceOrderFun = () => {
if(Local.get('setUserInfo').ifForeign === 1){
if(state.f_VHUB_Text === ''){
ElMessage.error(t('message.index.qtxfph'))
return
}
if(state.f_URXD_Date === ''){
ElMessage.error(t('message.index.qtxfph'))
return
}
// if(state.f_VHUB_Text === ''){
// ElMessage.error(t('message.index.qtxfph'))
// return
// }
// if(state.f_URXD_Date === ''){
// ElMessage.error(t('message.index.qtxfph'))
// return
// }
if(state.faHuoDate === ''){
ElMessage.error(t('message.index.deliveryDate'))
return

View File

@ -29,7 +29,7 @@ const viteConfig = defineConfig((mode: ConfigEnv) => {
hmr: true,
proxy: {
'/api': {
target: 'https://maxcess.gatedge.cn:91',
target: 'https://58.252.252.77:91',
ws: true,
changeOrigin: true,
rewrite: (path) => path.replace(/^\/api/, ''),
@ -46,19 +46,19 @@ const viteConfig = defineConfig((mode: ConfigEnv) => {
drop_debugger: true // 移除debugger
}
},
rollupOptions: {
output: {
chunkFileNames: 'assets/js/[name]-[hash].js',
entryFileNames: 'assets/js/[name]-[hash].js',
assetFileNames: 'assets/[ext]/[name]-[hash].[ext]',
manualChunks(id) {
if (id.includes('node_modules')) {
return id.toString().match(/\/node_modules\/(?!.pnpm)(?<moduleName>[^\/]*)\//)?.groups!.moduleName ?? 'vender';
}
},
},
...(JSON.parse(env.VITE_OPEN_CDN) ? { external: buildConfig.external } : {}),
},
// rollupOptions: {
// output: {
// chunkFileNames: 'assets/js/[name]-[hash].js',
// entryFileNames: 'assets/js/[name]-[hash].js',
// assetFileNames: 'assets/[ext]/[name]-[hash].[ext]',
// manualChunks(id) {
// if (id.includes('node_modules')) {
// return id.toString().match(/\/node_modules\/(?!.pnpm)(?<moduleName>[^\/]*)\//)?.groups!.moduleName ?? 'vender';
// }
// },
// },
// ...(JSON.parse(env.VITE_OPEN_CDN) ? { external: buildConfig.external } : {}),
// },
},
define:{
__VUE_I18N_LEGACY_API__: JSON.stringify(false),