Files
2025-12-26 17:26:32 +08:00

433 lines
11 KiB
JavaScript
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { loginStatus, post } from "@/utils/https";
import { formatTime, getAuthInfo, getDataSet, isArray, toArray, toObject } from "@/utils/util";
import { voiceRequest } from "@/utils/voiceUtil";
/** 拼接符号 */
const ProcessCodeConcatSymbol = "&&";
/** 撤回码标记 */
const RecallCodeMarking = "-";
/**
* 解析流程码
* @param {string} value
*/
const parseQrCode = (value) => {
value = `${value || ""}`;
const obj = {
/** 工序码 */
code: value,
/** 提成自定义字段 */
key: "",
/** - => 撤回码 */
type: "",
};
if (value.includes(ProcessCodeConcatSymbol)) {
obj.code = value.substring(0, value.indexOf(ProcessCodeConcatSymbol));
obj.key = value.substring(value.indexOf(ProcessCodeConcatSymbol) + ProcessCodeConcatSymbol.length);
}
if (obj.code.includes(RecallCodeMarking)) {
obj.type = RecallCodeMarking;
obj.code = obj.code.replace(RecallCodeMarking, "");
}
return obj;
};
Page({
/**
* 页面的初始数据
*/
data: {
action: "end",
processCodeMsg: "",
rel_order_no: "",
process_code: "",
logsList: [],
show: false,
orders: [],
isLogin: false,
isScanCode: false,
voice: true,
loading: true,
authInfo: {},
hideTabKeys: [],
processItems: [],
backFlag: false,
selectedProcessCode: "",
result: "",
logType: "0",
/** 默认提成 */
defaultBonus: true,
showDefaultBonus: false,
defaultBonusConfig: {},
defaultBonusConfigKeys: [],
rel_order_no_temp: "",
},
handleLogin(e) {
if (e.detail) {
this.setData({ isLogin: true, authInfo: getAuthInfo() });
this.init();
} else {
this.setData({ isLogin: false });
}
},
backChange(e) {
this.data.backFlag = e.detail;
this.setData({ backFlag: e.detail });
wx.setStorageSync("processBackFlag", e.detail ? 1 : 0);
if (this.data.selectedProcessCode) {
const { code, key } = parseQrCode(this.data.selectedProcessCode);
this.data.selectedProcessCode = `${code}${e.detail ? RecallCodeMarking : ""}`;
if (key) {
this.data.selectedProcessCode += `${ProcessCodeConcatSymbol}${key}`;
}
}
this.getProcessName();
},
getProcessName() {
if (this.data.selectedProcessCode) {
const { code, type } = parseQrCode(this.data.selectedProcessCode);
for (const ell of this.data.processItems) {
if (ell.code == code) {
this.setData({
processCodeMsg: `工序名称:${ell.name || ""}(${ell.code})`,
selectedProcessCode: this.data.selectedProcessCode,
process_code: this.data.selectedProcessCode,
action: type ? "back" : "end",
});
break;
}
}
}
},
processItemTap(e) {
this.data.selectedProcessCode = e.currentTarget.dataset.code + (this.data.backFlag ? "-" : "");
wx.setStorageSync("selectedProcessCode", this.data.selectedProcessCode);
this.setData({
selectedProcessCode: this.data.selectedProcessCode,
});
this.getProcessName();
},
getExecProcess() {
post("Orders/getExecProcess1").then((res) => {
this.data.processItems = toArray(res.data);
if (this.data.processItems.length == 1) {
this.data.selectedProcessCode = this.data.processItems[0].code;
this.getProcessName();
} else {
this.getProcessName();
}
this.setData({
processItems: this.data.processItems,
});
});
},
init() {
const companyInfo = toObject(wx.getStorageSync("company_info"));
const code = wx.getStorageSync("selectedProcessCode") || "";
this.data.selectedProcessCode = code;
this.data.process_code = code;
this.data.backFlag = wx.getStorageSync("processBackFlag") == 1;
const logType = wx.getStorageSync("processEntry_logType");
this.setData({
hideTabKeys: companyInfo.staff_type == 3 ? ["2"] : [],
backFlag: this.data.backFlag,
selectedProcessCode: code,
process_code: code,
logType: logType || 0,
});
this.getExecProcess();
},
voiceChange(event) {
this.setData({
voice: event.detail,
});
wx.setStorageSync("processEntryVoice", `${event.detail}`);
},
getVoice(msg, cacheVoice) {
if (this.data.voice && msg) {
voiceRequest(msg, cacheVoice);
}
},
onLogTypeChange(e) {
const data = getDataSet(e);
this.setData({ logType: data.key });
wx.setStorageSync("processEntry_logType", data.key);
},
scanCode() {
this.data.isScanCode = true;
wx.scanCode({
onlyFromCamera: true,
scanType: ["qrCode"],
success: (res) => {
console.log(res);
const qrcode = res.result || "";
if (qrcode) {
if (qrcode.startsWith("DD") || qrcode.startsWith("LC")) {
if (this.data.process_code) {
this.data.rel_order_no = qrcode;
this.setData({
rel_order_no: qrcode,
});
this.processEnter();
} else {
wx.showToast({
title: "请扫流程码",
icon: "none",
});
}
} else {
const code = parseQrCode(qrcode);
this.setData({
action: code.type == RecallCodeMarking ? "back" : "end",
rel_order_no: "",
});
this.getProcess(qrcode);
}
}
this.setData({
msg: JSON.stringify(res),
});
},
complete: () => {
this.data.isScanCode = false;
},
});
},
getProcess(real_code) {
const code = parseQrCode(real_code);
post("CompanyProcess/processChildList", {
curr_page: 1,
page_count: 1,
real_code: code.code,
})
.then((res) => {
const data = res.data;
if (Array.isArray(res.data) && data.length) {
this.setData({
processCodeMsg: `工序名称:${data[0].name || ""}(${real_code})`,
process_code: real_code,
selectedProcessCode: real_code,
});
this.getVoice(`${data[0].name}工序`, true);
wx.showToast({
title: "请扫订单二维码",
icon: "none",
});
} else {
this.addMsg("未找到 " + real_code + " 工序");
wx.showToast({
title: "未找到该工序",
icon: "error",
});
this.getVoice(`未找到工序`, true);
}
})
.catch((res) => {
this.addMsg("未找到 " + real_code + " 工序");
wx.showToast({
title: "未找到该工序",
icon: "error",
});
});
},
processEnter() {
if (this.data.rel_order_no && this.data.process_code) {
this.data.rel_order_no_temp = this.data.rel_order_no;
this.setProcess();
}
},
LCProcessEnter(e) {
const item = this.data.orders[e.currentTarget.dataset.index];
this.data.rel_order_no_temp = item.rel_order_no;
this.setProcess();
},
setProcess(other) {
const code = parseQrCode(this.data.process_code);
const obj = {};
if (code.key) {
obj[this.data.rel_order_no_temp] = code.key;
}
post("Orders/setProcess", {
param: JSON.stringify({
rel_order_no: this.data.rel_order_no_temp,
process_code: code.code,
action: this.data.action,
if_scan: 1,
same_process: this.data.rel_order_no_temp.startsWith("LC") ? 1 : undefined,
// defaultBonus: getDefaultBonus() != "0",
}),
other: JSON.stringify({ ...other, ...obj }),
})
.then((res) => {
if (res.bonus == 1) {
const data = toObject(res.data);
this.setData({
defaultBonusConfig: data,
defaultBonusConfigKeys: Object.keys(data),
showDefaultBonus: true,
});
} else if (isArray(res.data) && res.data.length) {
res.data.forEach((el) => {
el.product_info_str = toArray(el.product_info)
.map((ell) => {
return `${ell.room_name || "未命名"}(${ell.goods_name || "未命名"})`;
})
.join("");
el.sale_info_str = toArray(el.sale_info)
.map((ell) => {
return `${ell.goods_name}`;
})
.join("");
});
this.setData({
show: true,
orders: res.data,
});
} else {
this.addMsg(res.err_msg);
// this.getVoice(res.err_msg);
this.getVoice("通过");
this.setData({
show: false,
result: "success",
showDefaultBonus: false,
});
wx.showToast({
title: res.err_msg,
icon: "none",
});
}
})
.catch((res) => {
this.addMsg(res.err_msg);
if (res.err_code == "244269") {
this.setData({
result: "success",
});
wx.showToast({
title: res.err_msg,
icon: "none",
});
this.getVoice("通过");
} else {
this.setData({
result: "error",
});
this.getVoice(res.err_msg);
}
});
},
onSelectBonus(e) {
const data = getDataSet(e);
this.setProcess({ [data.order_no]: data.key });
},
closeDefaultBonusHandle() {
this.setData({
showDefaultBonus: false,
});
},
// defaultBonusChange(e) {
// this.setData({
// defaultBonus: e.detail ? "1" : "0",
// });
// setDefaultBonus(e.detail ? "1" : "0");
// },
addMsg(msg) {
const now = new Date();
this.data.logsList.unshift({
date: formatTime(now).substring(5),
msg: msg || "",
});
if (this.data.logsList.length > 100) {
this.data.logsList.length = 100;
}
this.setData({
logsList: this.data.logsList,
});
},
clearMsg() {
this.setData({
logsList: [],
});
},
show() {
this.setData({
show: true,
});
},
onClose() {
this.setData({
show: false,
});
},
/**
* 生命周期函数--监听页面加载
*/
onLoad(options) {
this.setData({
loading: true,
voice: wx.getStorageSync("processEntryVoice") == "false" ? false : true,
});
loginStatus()
.then((res) => {
this.setData({
isLogin: true,
loading: false,
authInfo: getAuthInfo(),
});
this.init();
})
.catch((err) => {
this.setData({ isLogin: false, loading: false });
console.log("调用登录状态请求失败", err);
});
},
/**
* 生命周期函数--监听页面初次渲染完成
*/
onReady() {},
/**
* 生命周期函数--监听页面显示
*/
onShow() {
wx.hideHomeButton();
this.setData({
// defaultBonus: getDefaultBonus() != "0",
});
// if (!this.data.isScanCode) {
// }
},
/**
* 生命周期函数--监听页面隐藏
*/
onHide() {},
/**
* 生命周期函数--监听页面卸载
*/
onUnload() {},
/**
* 页面相关事件处理函数--监听用户下拉动作
*/
onPullDownRefresh() {},
/**
* 页面上拉触底事件的处理函数
*/
onReachBottom() {},
/**
* 用户点击右上角分享
*/
onShareAppMessage() {},
});