Files
2025-09-27 22:57:59 +08:00

248 lines
8.4 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.

"use strict";
const common_vendor = require("../../common/vendor.js");
const common_http = require("../../common/http.js");
const API_OF = {
sale: "/api/orders",
purchase: "/api/purchase-orders",
collect: "/api/payments",
fund: "/api/other-transactions"
};
const _sfc_main = {
data() {
return {
biz: "sale",
bizList: [
{ key: "sale", name: "出货" },
{ key: "purchase", name: "进货" },
{ key: "collect", name: "收款" },
{ key: "fund", name: "资金" }
],
range: "month",
query: { kw: "" },
items: [],
page: 1,
size: 15,
finished: false,
loading: false,
startDate: "",
endDate: "",
nonVipRetentionDays: 0,
isVip: false
};
},
computed: {
placeholder() {
return "单据号/客户名称/品名规格/备注";
},
periodLabel() {
return this.startDate && this.endDate ? `${this.startDate}~${this.endDate}` : "";
},
totalAmount() {
return this.items.reduce((s, it) => s + Number(it.amount || 0), 0);
}
},
onLoad() {
const hasToken = (() => {
try {
return !!common_vendor.index.getStorageSync("TOKEN");
} catch (e) {
return false;
}
})();
if (!hasToken) {
this.items = [];
this.total = 0;
common_vendor.index.showToast({ title: "请登录使用该功能", icon: "none" });
return;
}
try {
common_vendor.index.__f__("log", "at pages/detail/index.vue:104", "[detail] onLoad route = pages/detail/index");
} catch (e) {
}
this.computeRange();
this.reload();
},
methods: {
switchBiz(k) {
if (this.biz === k)
return;
this.biz = k;
this.reload();
},
switchRange(r) {
this.range = r;
this.computeRange();
this.reload();
},
computeRange() {
const now = /* @__PURE__ */ new Date();
const pad = (n) => String(n).padStart(2, "0");
const fmt = (d) => `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;
let start = now, end = now;
if (this.range === "today") {
start = end = now;
} else if (this.range === "week") {
const day = now.getDay() || 7;
start = new Date(now.getFullYear(), now.getMonth(), now.getDate() - day + 1);
end = now;
} else if (this.range === "month") {
start = new Date(now.getFullYear(), now.getMonth(), 1);
end = new Date(now.getFullYear(), now.getMonth() + 1, 0);
} else if (this.range === "year") {
start = new Date(now.getFullYear(), 0, 1);
end = new Date(now.getFullYear(), 11, 31);
} else {
start = new Date(now.getFullYear(), now.getMonth(), 1);
end = new Date(now.getFullYear(), now.getMonth() + 1, 0);
}
this.startDate = fmt(start);
this.endDate = fmt(end);
},
reload() {
this.items = [];
this.page = 1;
this.finished = false;
this.loadMore();
},
onStartChange(e) {
var _a;
this.startDate = ((_a = e == null ? void 0 : e.detail) == null ? void 0 : _a.value) || this.startDate;
if (this.endDate && this.startDate > this.endDate)
this.endDate = this.startDate;
this.reload();
},
onEndChange(e) {
var _a;
this.endDate = ((_a = e == null ? void 0 : e.detail) == null ? void 0 : _a.value) || this.endDate;
if (this.startDate && this.endDate < this.startDate)
this.startDate = this.endDate;
this.reload();
},
async loadMore() {
if (this.loading || this.finished)
return;
this.loading = true;
try {
const path = API_OF[this.biz] || "/api/orders";
const params = { kw: this.query.kw, page: this.page, size: this.size, startDate: this.startDate, endDate: this.endDate, biz: this.biz };
if (this.biz === "sale")
params.type = "out";
const res = await common_http.get(path, params);
const list = Array.isArray(res == null ? void 0 : res.list) ? res.list : Array.isArray(res) ? res : [];
this.items = this.items.concat(list);
if (list.length < this.size)
this.finished = true;
this.page += 1;
await this.hintIfNonVipOutOfWindow();
} catch (e) {
common_vendor.index.showToast({ title: "加载失败", icon: "none" });
} finally {
this.loading = false;
}
},
async hintIfNonVipOutOfWindow() {
try {
if (this.isVip && this.isVip === true)
return;
if (!this.nonVipRetentionDays) {
const v = await common_http.get("/api/vip/status");
this.isVip = !!(v == null ? void 0 : v.isVip);
this.nonVipRetentionDays = Number((v == null ? void 0 : v.nonVipRetentionDays) || 60);
if (this.isVip)
return;
}
if (!this.startDate)
return;
const start = new Date(this.startDate).getTime();
const threshold = Date.now() - this.nonVipRetentionDays * 24 * 3600 * 1e3;
if (start < threshold) {
common_vendor.index.showModal({
title: "提示",
content: `普通用户仅显示近${this.nonVipRetentionDays}天数据开通VIP可查看全部历史。`,
confirmText: "去开通VIP",
cancelText: "我知道了",
success: (r) => {
if (r.confirm)
common_vendor.index.navigateTo({ url: "/pages/my/vip" });
}
});
}
} catch (e) {
}
},
formatDate(s) {
if (!s)
return "";
try {
const d = new Date(s);
const pad = (n) => String(n).padStart(2, "0");
return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}`;
} catch (_) {
return String(s).slice(0, 10);
}
},
onCreate() {
if (this.biz === "sale") {
common_vendor.index.switchTab({ url: "/pages/order/create" });
return;
}
common_vendor.index.showToast({ title: "该类型创建页待实现", icon: "none" });
},
openDetail(it) {
common_vendor.index.showToast({ title: "详情开发中", icon: "none" });
}
}
};
function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
return common_vendor.e({
a: common_vendor.f($data.bizList, (b, k0, i0) => {
return {
a: common_vendor.t(b.name),
b: b.key,
c: common_vendor.n($data.biz === b.key && "active"),
d: common_vendor.o(($event) => $options.switchBiz(b.key), b.key)
};
}),
b: common_vendor.t($data.startDate),
c: $data.startDate,
d: common_vendor.o((...args) => $options.onStartChange && $options.onStartChange(...args)),
e: common_vendor.t($data.endDate),
f: $data.endDate,
g: common_vendor.o((...args) => $options.onEndChange && $options.onEndChange(...args)),
h: $options.placeholder,
i: common_vendor.o((...args) => $options.reload && $options.reload(...args)),
j: $data.query.kw,
k: common_vendor.o(common_vendor.m(($event) => $data.query.kw = $event.detail.value, {
trim: true
})),
l: common_vendor.o((...args) => $options.reload && $options.reload(...args)),
m: common_vendor.t($options.totalAmount.toFixed(2)),
n: $data.items.length
}, $data.items.length ? {
o: common_vendor.f($data.items, (it, k0, i0) => {
return {
a: common_vendor.t($options.formatDate(it.orderTime || it.txTime || it.createdAt)),
b: common_vendor.t(it.customerName || it.supplierName || it.accountName || it.remark || "-"),
c: common_vendor.t(it.orderNo || it.code || it.id),
d: common_vendor.t((it.amount || 0).toFixed(2)),
e: Number(it.amount || 0) >= 0 ? 1 : "",
f: Number(it.amount || 0) < 0 ? 1 : "",
g: it.id,
h: common_vendor.o(($event) => $options.openDetail(it), it.id)
};
})
} : {}, {
p: $data.items.length && !$data.finished
}, $data.items.length && !$data.finished ? {
q: $data.loading
} : {}, {
r: $data.finished && $data.items.length
}, $data.finished && $data.items.length ? {} : {}, {
s: common_vendor.o((...args) => $options.loadMore && $options.loadMore(...args)),
t: common_vendor.o((...args) => $options.onCreate && $options.onCreate(...args))
});
}
const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]);
wx.createPage(MiniProgramPage);
//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/detail/index.js.map