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 添加类型注解
This commit is contained in:
442
miniprogram/pages/processEntry/processEntry.ts
Normal file
442
miniprogram/pages/processEntry/processEntry.ts
Normal file
@@ -0,0 +1,442 @@
|
||||
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() {},
|
||||
});
|
||||
Reference in New Issue
Block a user