Files
FreeERP.Applet/miniprogram/pages/processEntry/processEntry.ts
zhengw f0c68126dc feat: 将多个页面从JavaScript转换为TypeScript
- 将 agreement.js、no-auth-plugin.js、processEntry.js、https.js、
  menuConfig.js、voiceUtil.js 文件重命名为对应的 .ts 扩展名

- 在 agreement.ts 中引入配置并动态设置标题
- 在 no-auth-plugin.ts 中使用工具函数替代硬编码跳转
- 为 processEntry.ts 添加类型注解并重构代码结构
- 为 https.ts 添加类型定义并优化错误处理
- 创建 menuConfig.ts 并迁移导航配置
- 为 voiceUtil.ts 添加类型注解
2026-01-12 10:59:13 +08:00

443 lines
11 KiB
TypeScript
Raw 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: string) => {
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: [] as any[],
show: false,
orders: [] as any[],
isLogin: false,
isScanCode: false,
voice: true,
loading: true,
authInfo: {},
hideTabKeys: [] as string[],
processItems: [] as any[],
backFlag: false,
selectedProcessCode: "",
result: "",
logType: "0",
/** 默认提成 */
defaultBonus: true,
showDefaultBonus: false,
defaultBonusConfig: {},
defaultBonusConfigKeys: [] as string[],
rel_order_no_temp: "",
},
handleLogin(e: any) {
if (e.detail) {
this.setData({ isLogin: true, authInfo: getAuthInfo() });
this.init();
} else {
this.setData({ isLogin: false });
}
},
backChange(e: any) {
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: any) {
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: any) => {
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: any) {
this.setData({
voice: event.detail,
});
wx.setStorageSync("processEntryVoice", `${event.detail}`);
},
getVoice(msg: string, cacheVoice?: boolean) {
if (this.data.voice && msg) {
voiceRequest(msg, cacheVoice);
}
},
onLogTypeChange(e: any) {
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: any) {
const code = parseQrCode(real_code);
post("CompanyProcess/processChildList", {
curr_page: 1,
page_count: 1,
real_code: code.code,
})
.then((res: any) => {
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(() => {
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: any) {
const item = this.data.orders[e.currentTarget.dataset.index];
this.data.rel_order_no_temp = item.rel_order_no;
this.setProcess();
},
setProcess(other?: any) {
const code = parseQrCode(this.data.process_code);
const obj: any = {};
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: any) => {
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: any) => {
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: any) => {
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: any) {
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: any) {
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(() => {
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() {},
});