if (typeof Promise !== "undefined" && !Promise.prototype.finally) { Promise.prototype.finally = function(callback) { const promise = this.constructor; return this.then( (value) => promise.resolve(callback()).then(() => value), (reason) => promise.resolve(callback()).then(() => { throw reason; }) ); }; } ; if (typeof uni !== "undefined" && uni && uni.requireGlobal) { const global = uni.requireGlobal(); ArrayBuffer = global.ArrayBuffer; Int8Array = global.Int8Array; Uint8Array = global.Uint8Array; Uint8ClampedArray = global.Uint8ClampedArray; Int16Array = global.Int16Array; Uint16Array = global.Uint16Array; Int32Array = global.Int32Array; Uint32Array = global.Uint32Array; Float32Array = global.Float32Array; Float64Array = global.Float64Array; BigInt64Array = global.BigInt64Array; BigUint64Array = global.BigUint64Array; } ; if (uni.restoreGlobal) { uni.restoreGlobal(Vue, weex, plus, setTimeout, clearTimeout, setInterval, clearInterval); } (function(vue) { "use strict"; const _export_sfc = (sfc, props) => { const target = sfc.__vccOpts || sfc; for (const [key, val] of props) { target[key] = val; } return target; }; const _sfc_main$6 = { data() { return { currentDate: "", recentRecords: [ { title: "仓库A盘点", time: "2024-03-20 14:30", status: "completed", statusText: "已完成" }, { title: "办公用品盘点", time: "2024-03-19 10:15", status: "processing", statusText: "进行中" }, { title: "设备资产盘点", time: "2024-03-18 16:45", status: "completed", statusText: "已完成" } ] }; }, onLoad() { this.updateDate(); }, methods: { updateDate() { const now = /* @__PURE__ */ new Date(); const year = now.getFullYear(); const month = String(now.getMonth() + 1).padStart(2, "0"); const day = String(now.getDate()).padStart(2, "0"); this.currentDate = `${year}-${month}-${day}`; }, scanInventory() { uni.scanCode({ success: (res) => { uni.navigateTo({ url: `/pages/inventory/inventory?code=${encodeURIComponent(res.result)}` }); }, fail: () => { uni.showToast({ title: "扫码失败", icon: "none" }); } }); }, scanView() { uni.scanCode({ success: (res) => { uni.navigateTo({ url: `/pages/detail/detail?code=${encodeURIComponent(res.result)}` }); }, fail: () => { uni.showToast({ title: "扫码失败", icon: "none" }); } }); } } }; function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) { return vue.openBlock(), vue.createElementBlock("view", { class: "index-bg" }, [ vue.createElementVNode("view", { class: "index-content" }, [ vue.createElementVNode("view", { class: "btn-group" }, [ vue.createElementVNode("button", { class: "main-btn", onClick: _cache[0] || (_cache[0] = (...args) => $options.scanInventory && $options.scanInventory(...args)) }, "扫码盘点"), vue.createElementVNode("button", { class: "main-btn outline", onClick: _cache[1] || (_cache[1] = (...args) => $options.scanView && $options.scanView(...args)) }, "扫码查看") ]), vue.createElementVNode("view", { class: "recent-section" }, [ vue.createElementVNode("view", { class: "recent-title" }, "最近盘点记录"), vue.createElementVNode("view", { class: "recent-list" }, [ (vue.openBlock(true), vue.createElementBlock( vue.Fragment, null, vue.renderList($data.recentRecords, (item, idx) => { return vue.openBlock(), vue.createElementBlock("view", { class: "recent-item", key: idx }, [ vue.createElementVNode("view", { class: "recent-info" }, [ vue.createElementVNode( "text", { class: "recent-name" }, vue.toDisplayString(item.title), 1 /* TEXT */ ), vue.createElementVNode( "text", { class: "recent-time" }, vue.toDisplayString(item.time), 1 /* TEXT */ ) ]), vue.createElementVNode( "text", { class: vue.normalizeClass(["recent-status", item.status]) }, vue.toDisplayString(item.statusText), 3 /* TEXT, CLASS */ ) ]); }), 128 /* KEYED_FRAGMENT */ )) ]) ]) ]) ]); } const PagesIndexIndex = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$5], ["__file", "D:/Lynn/Langye/stocktaking/pages/index/index.vue"]]); const _imports_0 = "/static/avatar.png"; const _sfc_main$5 = { methods: { logout() { uni.reLaunch({ url: "/pages/login/login" }); } } }; function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) { return vue.openBlock(), vue.createElementBlock("view", { class: "profile-container" }, [ vue.createElementVNode("view", { class: "avatar-section" }, [ vue.createElementVNode("image", { class: "avatar", src: _imports_0, mode: "aspectFill" }), vue.createElementVNode("text", { class: "username" }, "管理员") ]), vue.createElementVNode("view", { class: "info-section" }, [ vue.createElementVNode("view", { class: "info-item" }, [ vue.createElementVNode("text", { class: "label" }, "账号:"), vue.createElementVNode("text", { class: "value" }, "admin") ]), vue.createElementVNode("view", { class: "info-item" }, [ vue.createElementVNode("text", { class: "label" }, "角色:"), vue.createElementVNode("text", { class: "value" }, "系统管理员") ]) ]), vue.createElementVNode("button", { class: "logout-btn", onClick: _cache[0] || (_cache[0] = (...args) => $options.logout && $options.logout(...args)) }, "退出登录") ]); } const PagesProfileProfile = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["render", _sfc_render$4], ["__file", "D:/Lynn/Langye/stocktaking/pages/profile/profile.vue"]]); const _sfc_main$4 = { data() { return { username: "", password: "" }; }, methods: { handleLogin() { if (!this.username || !this.password) { uni.showToast({ title: "请输入用户名和密码", icon: "none" }); return; } uni.showToast({ title: "登录成功", icon: "success", duration: 1500 }); setTimeout(() => { uni.switchTab({ url: "/pages/index/index" }); }, 1500); } } }; function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) { return vue.openBlock(), vue.createElementBlock("view", { class: "login-bg" }, [ vue.createElementVNode("view", { class: "login-card" }, [ vue.createElementVNode("view", { class: "login-title" }, "欢迎登录"), vue.createElementVNode("view", { class: "login-subtitle" }, "河道防汛物资管理系统"), vue.createElementVNode("view", { class: "form-group" }, [ vue.createElementVNode("text", { class: "form-label" }, "用户名"), vue.withDirectives(vue.createElementVNode( "input", { class: "form-input", type: "text", "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.username = $event), placeholder: "请输入用户名" }, null, 512 /* NEED_PATCH */ ), [ [vue.vModelText, $data.username] ]) ]), vue.createElementVNode("view", { class: "form-group" }, [ vue.createElementVNode("text", { class: "form-label" }, "密码"), vue.withDirectives(vue.createElementVNode( "input", { class: "form-input", type: "password", "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => $data.password = $event), placeholder: "请输入密码" }, null, 512 /* NEED_PATCH */ ), [ [vue.vModelText, $data.password] ]) ]), vue.createElementVNode("button", { class: "login-btn", onClick: _cache[2] || (_cache[2] = (...args) => $options.handleLogin && $options.handleLogin(...args)) }, "登 录") ]) ]); } const PagesLoginLogin = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["render", _sfc_render$3], ["__file", "D:/Lynn/Langye/stocktaking/pages/login/login.vue"]]); const _sfc_main$3 = { data() { return { result: "" }; }, methods: { doScan() { uni.scanCode({ success: (res) => { this.result = res.result; }, fail: () => { uni.showToast({ title: "扫码失败", icon: "none" }); } }); } } }; function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) { return vue.openBlock(), vue.createElementBlock("view", { class: "scan-bg" }, [ vue.createElementVNode("view", { class: "scan-title" }, "扫码盘点"), vue.createElementVNode("button", { class: "scan-btn", onClick: _cache[0] || (_cache[0] = (...args) => $options.doScan && $options.doScan(...args)) }, "点击开始扫码"), $data.result ? (vue.openBlock(), vue.createElementBlock("view", { key: 0, class: "scan-result" }, [ vue.createElementVNode("text", { class: "result-label" }, "扫码结果:"), vue.createElementVNode( "text", { class: "result-value" }, vue.toDisplayString($data.result), 1 /* TEXT */ ) ])) : vue.createCommentVNode("v-if", true) ]); } const PagesScanScan = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$2], ["__file", "D:/Lynn/Langye/stocktaking/pages/scan/scan.vue"]]); const _sfc_main$2 = { data() { return { userName: "张三", date: "", stockQty: 100, // 假数据,实际应根据扫码结果获取 countQty: "", remark: "", photo: "" }; }, onLoad(options) { this.date = this.getToday(); if (options.code) ; }, methods: { getToday() { const now = /* @__PURE__ */ new Date(); const y = now.getFullYear(); const m = String(now.getMonth() + 1).padStart(2, "0"); const d = String(now.getDate()).padStart(2, "0"); return `${y}-${m}-${d}`; }, choosePhoto() { uni.chooseImage({ count: 1, success: (res) => { this.photo = res.tempFilePaths[0]; } }); }, submit() { if (!this.countQty) { uni.showToast({ title: "请输入盘点数量", icon: "none" }); return; } uni.showToast({ title: "盘点提交成功", icon: "success" }); } } }; function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) { return vue.openBlock(), vue.createElementBlock("view", { class: "inventory-bg" }, [ vue.createElementVNode("view", { class: "inventory-card" }, [ vue.createElementVNode("view", { class: "form-group" }, [ vue.createElementVNode("text", { class: "form-label" }, "盘点人"), vue.createElementVNode("input", { class: "form-input", value: $data.userName, disabled: "" }, null, 8, ["value"]) ]), vue.createElementVNode("view", { class: "form-group" }, [ vue.createElementVNode("text", { class: "form-label" }, "盘点日期"), vue.createElementVNode("input", { class: "form-input", value: $data.date, disabled: "" }, null, 8, ["value"]) ]), vue.createElementVNode("view", { class: "form-group" }, [ vue.createElementVNode("text", { class: "form-label" }, "库存数量"), vue.createElementVNode("input", { class: "form-input", value: $data.stockQty, disabled: "" }, null, 8, ["value"]) ]), vue.createElementVNode("view", { class: "form-group" }, [ vue.createElementVNode("text", { class: "form-label" }, "盘点数量"), vue.withDirectives(vue.createElementVNode( "input", { class: "form-input", type: "number", "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.countQty = $event), placeholder: "请输入盘点数量" }, null, 512 /* NEED_PATCH */ ), [ [vue.vModelText, $data.countQty] ]) ]), vue.createElementVNode("view", { class: "form-group" }, [ vue.createElementVNode("text", { class: "form-label" }, "盘点备注"), vue.withDirectives(vue.createElementVNode( "textarea", { class: "form-textarea", "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => $data.remark = $event), placeholder: "请输入备注" }, null, 512 /* NEED_PATCH */ ), [ [vue.vModelText, $data.remark] ]) ]), vue.createElementVNode("view", { class: "form-group" }, [ vue.createElementVNode("text", { class: "form-label" }, "照片上传"), vue.createElementVNode("view", { class: "photo-upload" }, [ $data.photo ? (vue.openBlock(), vue.createElementBlock("view", { key: 0, class: "photo-preview" }, [ vue.createElementVNode("image", { src: $data.photo, mode: "aspectFill", class: "photo-img" }, null, 8, ["src"]), vue.createElementVNode("text", { class: "photo-del", onClick: _cache[2] || (_cache[2] = ($event) => $data.photo = "") }, "删除") ])) : (vue.openBlock(), vue.createElementBlock("button", { key: 1, class: "photo-btn", onClick: _cache[3] || (_cache[3] = (...args) => $options.choosePhoto && $options.choosePhoto(...args)) }, "上传照片")) ]) ]), vue.createElementVNode("button", { class: "submit-btn", onClick: _cache[4] || (_cache[4] = (...args) => $options.submit && $options.submit(...args)) }, "提交盘点") ]) ]); } const PagesInventoryInventory = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$1], ["__file", "D:/Lynn/Langye/stocktaking/pages/inventory/inventory.vue"]]); const _sfc_main$1 = { data() { return { info: { name: "", code: "", stockQty: "", photo: "", remark: "" } }; }, onLoad(options) { this.info = { name: "仓库A物资", code: options.code || "未知", stockQty: 100, photo: "", remark: "无特殊说明" }; } }; function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { return vue.openBlock(), vue.createElementBlock("view", { class: "detail-bg" }, [ vue.createElementVNode("view", { class: "detail-card" }, [ vue.createElementVNode("view", { class: "detail-list" }, [ vue.createElementVNode("view", { class: "detail-item" }, [ vue.createElementVNode("text", { class: "detail-label" }, "物资名称"), vue.createElementVNode( "text", { class: "detail-value" }, vue.toDisplayString($data.info.name), 1 /* TEXT */ ) ]), vue.createElementVNode("view", { class: "detail-item" }, [ vue.createElementVNode("text", { class: "detail-label" }, "物资编号"), vue.createElementVNode( "text", { class: "detail-value" }, vue.toDisplayString($data.info.code), 1 /* TEXT */ ) ]), vue.createElementVNode("view", { class: "detail-item" }, [ vue.createElementVNode("text", { class: "detail-label" }, "库存数量"), vue.createElementVNode( "text", { class: "detail-value stock" }, vue.toDisplayString($data.info.stockQty), 1 /* TEXT */ ) ]), vue.createElementVNode("view", { class: "detail-item" }, [ vue.createElementVNode("text", { class: "detail-label" }, "物资图片"), $data.info.photo ? (vue.openBlock(), vue.createElementBlock("image", { key: 0, src: $data.info.photo, class: "detail-img", mode: "aspectFill" }, null, 8, ["src"])) : (vue.openBlock(), vue.createElementBlock("view", { key: 1, class: "img-placeholder" }, "无图片")) ]), vue.createElementVNode("view", { class: "detail-item remark-item" }, [ vue.createElementVNode("text", { class: "detail-label" }, "备注"), vue.createElementVNode( "text", { class: "detail-remark" }, vue.toDisplayString($data.info.remark || "无"), 1 /* TEXT */ ) ]) ]) ]) ]); } const PagesDetailDetail = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render], ["__file", "D:/Lynn/Langye/stocktaking/pages/detail/detail.vue"]]); __definePage("pages/index/index", PagesIndexIndex); __definePage("pages/profile/profile", PagesProfileProfile); __definePage("pages/login/login", PagesLoginLogin); __definePage("pages/scan/scan", PagesScanScan); __definePage("pages/inventory/inventory", PagesInventoryInventory); __definePage("pages/detail/detail", PagesDetailDetail); function formatAppLog(type, filename, ...args) { if (uni.__log__) { uni.__log__(type, filename, ...args); } else { console[type].apply(console, [...args, filename]); } } const _sfc_main = { onLaunch: function() { formatAppLog("log", "at App.vue:4", "App Launch"); }, onShow: function() { formatAppLog("log", "at App.vue:7", "App Show"); }, onHide: function() { formatAppLog("log", "at App.vue:10", "App Hide"); } }; const App = /* @__PURE__ */ _export_sfc(_sfc_main, [["__file", "D:/Lynn/Langye/stocktaking/App.vue"]]); function createApp() { const app = vue.createVueApp(App); return { app }; } const { app: __app__, Vuex: __Vuex__, Pinia: __Pinia__ } = createApp(); uni.Vuex = __Vuex__; uni.Pinia = __Pinia__; __app__.provide("__globalStyles", __uniConfig.styles); __app__._component.mpType = "app"; __app__._component.render = () => { }; __app__.mount("#app"); })(Vue);