var APIURL = "http://192.168.0.51:8183/api/";//PDA后端发布测试地址(内网)
|
var APIURL_PC = "http://192.168.0.51:8181/"; //PC后端的测试地址(外网)
|
|
var APIURL_IMAGE = APIURL_PC+"upload/";
|
var ISNEEDLOGIN = true;
|
String.prototype.trim = function () {
|
return this.replace(/(^\s*)|(\s*$)/g, "");
|
}
|
String.prototype.ltrim = function () {
|
return this.replace(/(^\s*)/g, "");
|
}
|
String.prototype.rtrim = function () {
|
return this.replace(/(\s*$)/g, "");
|
}
|
Vue.prototype.CHECKLOGIN = function () {
|
var that = this;
|
var loginInfo = {
|
loginGuid: Cookies.get('loginGuid'),
|
loginAccount: Cookies.get('loginAccount'),
|
}
|
if (!loginInfo
|
|| (loginInfo) == "undefined"
|
|| typeof (loginInfo.loginGuid) == "undefined"
|
|| typeof (loginInfo.loginGuid) == "undefined"
|
|| typeof (loginInfo.loginGuid).length < 1
|
) {
|
if (ISNEEDLOGIN == true)
|
window.location.href = "/UserLogin.aspx";
|
return;
|
}
|
}
|
Vue.prototype.Request = function (paras) {
|
if (typeof (paras) == "undefined") {
|
return "";
|
}
|
var url = location.href;
|
var paraString = url.substring(url.indexOf("?") + 1, url.length).split("&");
|
var paraObj = {}
|
for (i = 0; j = paraString[i]; i++) {
|
paraObj[j.substring(0, j.indexOf("=")).toLowerCase()] = j.substring(j.indexOf("=") + 1, j.length);
|
}
|
var returnValue = paraObj[paras.toLowerCase()];
|
if (typeof (returnValue) == "undefined") {
|
return "";
|
} else {
|
return decodeURI(returnValue);
|
}
|
}
|
Vue.prototype.GetLoginInfor = function () {
|
var that = this;
|
var loginInfo = {
|
// 从Cookies中获取登录时保存的userGuid(登录时存储的键是loginGuid)
|
loginGuid: Cookies.get('loginGuid'),
|
loginAccount: Cookies.get('loginAccount'),
|
}
|
if (!loginInfo
|
|| (loginInfo) == "undefined"
|
|| typeof (loginInfo.loginGuid) == "undefined"
|
|| typeof (loginInfo.loginGuid) == "undefined"
|
|| typeof (loginInfo.loginGuid).length < 1
|
) {
|
if (ISNEEDLOGIN == true)
|
window.location.href = "/UserLogin.aspx";
|
}
|
else {
|
return loginInfo;
|
}
|
}
|
/**
|
* axios
|
* @param:{string} method 请求类型,必填
|
* @param:{string} url 请求地址,必填
|
* @param:{string} params 请求参数,非必填
|
* @param:{string} variation 请求头,非必填
|
**/
|
Vue.prototype.AxiosHttp = (method, url, params = {}, isToken = true, isPC =0) => {
|
if (isPC == 0)
|
{
|
url = (APIURL + url);
|
}
|
else{
|
url = (APIURL_PC + url);
|
}
|
let headers = { 'Content-Type': 'application/json', }
|
if (isToken) {
|
var timestamp = (new Date()).getTime();
|
var token = Cookies.get('loginGuid')
|
headers['token'] = token;
|
}
|
if (method == 'get') {
|
// console.log("params")
|
return axios({
|
method: method,
|
url: url,
|
headers: headers,
|
params: params
|
}).then(res => res.data);
|
} else {
|
return axios({
|
method: method,
|
url: url,
|
headers: headers,
|
data: params
|
}).then(res => res.data);
|
}
|
};
|
//axiosRequest('get', '/user/page', {},false).then(res=>{})
|
//axiosRequest('post', '/user/page', {},false).then(res=>{})
|
|
// 添加全局v-focus指令
|
Vue.directive("focus", {
|
//inserted: function (el, { modifiers: { noKeyboard } }) {
|
// try {
|
// const tagName = el.tagName;
|
// if (tagName !== "INPUT") {
|
// let child = el.children[0];
|
// if (child && child.tagName === "INPUT") {
|
// el = child;
|
// }
|
// }
|
// var _count = (el.children.length);
|
// if (_count > 1)
|
// el = el.children[1].children[0].children[0];
|
// else
|
// el = el.children[0].children[0].children[0];
|
// // alert(el);
|
// // 可以重新获得焦点又不弹起软键盘;xxx是el-input的ref
|
// // this.$refs[xxx].$refs.input.noKeyboardFocus();
|
// el.noKeyboardFocus = function () {
|
// Vue.nextTick(() => {
|
// this.focus();
|
// this.setAttribute("readonly", "readonly");
|
// var timer = null;
|
// timer = setTimeout(() => {
|
// this.removeAttribute("readonly");
|
// clearTimeout(timer);
|
// }, 100);
|
// });
|
// };
|
// el.focus();
|
// // v-focus.noKeyboard 不弹起软键盘
|
// if (noKeyboard) {
|
// el.setAttribute("readonly", "readonly");
|
// var timer = null;
|
// timer = setTimeout(() => {
|
// el.removeAttribute("readonly");
|
// clearTimeout(timer);
|
// }, 100);
|
// }
|
// } catch (error) {
|
// throw new Error(error);
|
// }
|
//}
|
});
|
|
|
Vue.prototype.GoBack=function(){
|
var _userGuid = Cookies.get('loginGuid');
|
var _userAccount = Cookies.get('loginAccount');
|
var _url = "/H5/Default.aspx?userGuid=" + _userGuid + "&userAccount" + _userAccount + "&tabIdx=" + this.Request("tabIdx");
|
window.location.href = _url;
|
return;
|
window.history.back();
|
}
|
|
|
//// 新增全局打印方法
|
//Vue.prototype.sendPrintMessage = function (tbBillList) {
|
// const cfDetails = tbBillList.cfBarInfo.map(item => {
|
// return "! 0 200 200 210 1\r\n" +
|
// "PAGE - WIDTH 700 \r\n" +
|
// "GAP-SENSE \r\n" +
|
///* "BOX 0 0 700 180 0 \r\n" +*/
|
// `T 16 0 10 10 物料编码:\r\n` +
|
// `T 55 3 120 10 ${item.iteM_NO}\r\n` +
|
// `T 16 0 310 10 ${item.item_name}\r\n` +
|
// "T 55 2 10 42 物料规格:\r\n" +
|
// `T 55 2 110 42 ${item.item_model}\r\n` +
|
// "T 16 0 10 78 数量:\r\n" +
|
// `T 0 5 90 78 ${item.quantity}\r\n` +
|
// `T 16 5 180 78 ${item.barType}\r\n` +
|
// `BARCODE 128 1 25 35 350 130 ${item.iteM_BARCODE}\r\n` +
|
///* `T 0 1 350 130 ${item.iteM_BARCODE}\r\n` +*/
|
// "T 55 0 10 125 创建时间:\r\n" +
|
// `T 55 0 120 125 ${item.creatE_DATE}\r\n` +
|
// "T 55 0 10 150 打印时间:\r\n" +
|
// `T 55 0 120 150 ${item.print_date}\r\n` +
|
// "B QR 580 12 M 2 U 4\r\n" +
|
// `MA,${item.iteM_BARCODE}\r\n` +
|
// "ENDQR\r\nFORM\r\nPRINT\r\n";
|
// });
|
|
Vue.prototype.sendPrintMessage = function (tbBillList) {
|
const cfDetails = tbBillList.cfBarInfo.map(item => {
|
return "! 0 195 200 472 1\r\n" + // 基础偏移量左移5像素
|
"PAGE-WIDTH 545\r\n" + // 页面宽度减少5像素
|
"GAP-SENSE\r\n" +
|
|
// 外框 - 整体左移5像素
|
"BOX -3 2 543 470 2\r\n" +
|
// ==================== 物料条码(第一行)====================
|
"LINE -3 62 425 62 1\r\n" +
|
"T 55 0 8 27 物料条码:\r\n" +
|
`T 55 3 120 27 ${item.iteM_BARCODE}\r\n` + // 物料条码值
|
|
// ==================== 物料编码(第二行)====================
|
"LINE -3 124 543 124 1\r\n" +
|
"T 55 0 8 89 编码:\r\n" +
|
`T 55 3 120 89 ${item.iteM_NO}\r\n` + // 物料编码值
|
|
// ==================== 供应商(第三行)====================
|
"LINE -3 186 543 186 1\r\n" + // 第3条分隔线(间隔62)
|
"T 55 0 8 151 供应商:\r\n" +
|
`T 55 3 120 151 ${item.supp_name || ''}\r\n` + // 供应商值(假设字段名)
|
|
// ==================== 物料名称(第四行)====================
|
"LINE -3 248 543 248 1\r\n" + // 第4条分隔线(间隔62)
|
"T 55 0 8 213 名称:\r\n" +
|
`T 55 3 120 213 ${item.item_name}\r\n` + // 物料名称值
|
|
// ==================== 规格型号(第五行)====================
|
"LINE -3 310 543 310 1\r\n" + // 第5条分隔线(间隔62)
|
"T 55 0 8 275 规格:\r\n" +
|
`T 55 3 120 275 ${item.item_model}\r\n` + // 规格型号值
|
|
// ==================== 仓库(第六行)====================
|
"LINE -3 360 543 360 1\r\n" + // 第6条分隔线(移至竖线顶端Y=360)
|
"T 55 0 8 335 仓库:\r\n" +
|
`T 55 3 120 335 ${item.depot_name || ''}\r\n` + // 仓库值(假设字段名)
|
|
// ==================== 数量和仓管员(第七行)====================
|
"LINE -3 430 543 430 1\r\n" + // 底部横线(与竖线底端对齐)
|
"T 55 0 8 380 数量:\r\n" + // 文本位置保持
|
`T 55 3 120 380 ${item.quantity}\r\n` + // 数量值
|
"T 55 0 275 380 仓管员:\r\n" + // 文本位置保持
|
`T 55 3 395 380 ${item.cgy || ''}\r\n` + // 仓管员值(假设字段名)
|
|
// 中间竖线分隔(范围Y=360-430,与上下横线衔接)
|
"LINE 265 430 265 360 1\r\n" + // 竖线顶端对齐仓库行分隔线
|
|
// ==================== 底部时间信息 ====================
|
"T 55 0 395 440 打印时间\r\n" + // 位置保持
|
"T 55 0 8 440 " + new Date().toLocaleString('zh-CN', { // 时间格式改为年月日时分秒
|
year: 'numeric',
|
month: '2-digit',
|
day: '2-digit',
|
hour: '2-digit',
|
minute: '2-digit',
|
second: '2-digit'
|
}) + "\r\n" +
|
|
// ==================== 二维码区域(左移5像素)====================
|
"BOX 425 3 535 113 1\r\n" + // 位置保持
|
"B QR 430 8 M 2 U 5\r\n" + // 位置保持
|
`MA,${item.iteM_BARCODE}\r\n` + // 使用物料条码生成二维码
|
"ENDQR\r\n" +
|
|
"FORM\r\n" +
|
"PRINT\r\n";
|
});
|
|
|
let sendData = {
|
Type: 'Bar',
|
Barcode: tbBillList.cfBarInfo[0].iteM_BARCODE,
|
Detail: cfDetails,
|
Ip: tbBillList.printInfo[0].ip,
|
Port: tbBillList.printInfo[0].port,
|
}
|
|
console.log('打印数据:', sendData);
|
uni.webView.postMessage({
|
data: JSON.stringify(sendData)
|
})
|
};
|
|
// 新增音频播放方法
|
Vue.prototype.$playSound = function(type = 'success') {
|
try {
|
const audioMap = {
|
success: '/audio/YES.wav',
|
error: '/audio/NO.wav'
|
};
|
const audio = new Audio(audioMap[type]);
|
audio.play().catch(error => {
|
console.error('音频播放失败:', error);
|
this.$toast.fail('提示音加载失败');
|
});
|
} catch (e) {
|
console.error('音频初始化错误:', e);
|
}
|
};
|