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$C = {
    name: "privacy-popup",
    props: {
      visible: {
        type: Boolean,
        default: false
      },
      title: {
        type: String,
        default: "协议标题"
      },
      content: {
        type: String,
        // 备用，主要用 slot
        default: ""
      }
    },
    methods: {
      close() {
        this.$emit("close");
      }
    }
  };
  function _sfc_render$B(_ctx, _cache, $props, $setup, $data, $options) {
    return $props.visible ? (vue.openBlock(), vue.createElementBlock("view", {
      key: 0,
      class: "popup-mask",
      onClick: _cache[2] || (_cache[2] = vue.withModifiers(() => {
      }, ["stop"]))
    }, [
      vue.createElementVNode("view", { class: "popup-content" }, [
        vue.createElementVNode("view", { class: "popup-header" }, [
          vue.createElementVNode(
            "text",
            { class: "popup-title" },
            vue.toDisplayString($props.title),
            1
            /* TEXT */
          ),
          vue.createElementVNode("view", {
            class: "close-icon",
            onClick: _cache[0] || (_cache[0] = (...args) => $options.close && $options.close(...args))
          }, "×")
        ]),
        vue.createElementVNode("scroll-view", {
          "scroll-y": "",
          class: "popup-body"
        }, [
          vue.renderSlot(_ctx.$slots, "default", {}, () => [
            vue.createElementVNode(
              "text",
              { class: "default-text" },
              vue.toDisplayString($props.content),
              1
              /* TEXT */
            )
          ], true)
        ]),
        vue.createElementVNode("view", { class: "popup-footer" }, [
          vue.createElementVNode("button", {
            class: "confirm-btn",
            onClick: _cache[1] || (_cache[1] = (...args) => $options.close && $options.close(...args))
          }, "我知道了")
        ])
      ])
    ])) : vue.createCommentVNode("v-if", true);
  }
  const __easycom_0 = /* @__PURE__ */ _export_sfc(_sfc_main$C, [["render", _sfc_render$B], ["__scopeId", "data-v-af3fbef1"], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/components/privacy-popup/privacy-popup.vue"]]);
  function formatAppLog(type, filename, ...args) {
    if (uni.__log__) {
      uni.__log__(type, filename, ...args);
    } else {
      console[type].apply(console, [...args, filename]);
    }
  }
  function resolveEasycom(component, easycom) {
    return typeof component === "string" ? easycom : component;
  }
  const BASE_URL = "http://192.168.0.102:8080";
  const CLIENT_ID = "3";
  const PLATFORM_CODE = "FlfAppPlatformCodeX9kR7mT3wQ5vZ8nB1jY6pD4sL0hC2gA";
  const PLATFORM_ID = 2;
  const TENANT_ID = "000000";
  const TOKEN_KEY = "fulfiller_token";
  const USER_INFO_KEY = "fulfiller_user_info";
  function getToken() {
    return uni.getStorageSync(TOKEN_KEY) || "";
  }
  function setToken(token) {
    uni.setStorageSync(TOKEN_KEY, token);
  }
  function removeToken() {
    uni.removeStorageSync(TOKEN_KEY);
  }
  function isLoggedIn() {
    return !!getToken();
  }
  function removeUserInfo() {
    uni.removeStorageSync(USER_INFO_KEY);
  }
  function clearAuth() {
    removeToken();
    removeUserInfo();
  }
  function request(options = {}) {
    const {
      url,
      method = "GET",
      data,
      header = {},
      needToken = true
    } = options;
    const headers = {
      "Content-Type": "application/json;charset=utf-8",
      "clientid": CLIENT_ID,
      "X-Platform-Code": PLATFORM_CODE,
      ...header
    };
    if (needToken) {
      const token = getToken();
      if (token) {
        headers["Authorization"] = "Bearer " + token;
      }
    }
    return new Promise((resolve, reject) => {
      uni.request({
        url: BASE_URL + url,
        method: method.toUpperCase(),
        data,
        header: headers,
        success: (res) => {
          const statusCode = res.statusCode;
          const result = res.data;
          if (statusCode === 401) {
            clearAuth();
            uni.showToast({ title: "登录已过期，请重新登录", icon: "none" });
            setTimeout(() => {
              uni.reLaunch({ url: "/pages/login/login" });
            }, 1500);
            return reject(new Error("未授权"));
          }
          if (statusCode !== 200) {
            const msg = (result == null ? void 0 : result.msg) || `请求失败(${statusCode})`;
            uni.showToast({ title: msg, icon: "none" });
            return reject(new Error(msg));
          }
          if (result.code !== void 0 && result.code !== 200) {
            const msg = result.msg || "操作失败";
            uni.showToast({ title: msg, icon: "none" });
            return reject(new Error(msg));
          }
          resolve(result);
        },
        fail: (err) => {
          uni.showToast({ title: "网络异常，请稍后重试", icon: "none" });
          reject(err);
        }
      });
    });
  }
  function loginByPassword(username, password) {
    return request({
      url: "/auth/login",
      method: "POST",
      needToken: false,
      data: {
        tenantId: TENANT_ID,
        platformId: PLATFORM_ID,
        username,
        password,
        clientId: CLIENT_ID,
        grantType: "fulfiller_password"
        // 使用履约者专用认证策略
      }
    });
  }
  function loginBySms(phonenumber, smsCode) {
    return request({
      url: "/auth/login",
      method: "POST",
      needToken: false,
      data: {
        tenantId: TENANT_ID,
        platformId: PLATFORM_ID,
        phonenumber,
        smsCode,
        clientId: CLIENT_ID,
        grantType: "fulfiller_sms"
        // 使用履约者专用认证策略
      }
    });
  }
  function sendSmsCode(phonenumber) {
    return request({
      url: "/resource/sms/code",
      method: "GET",
      needToken: false,
      data: { phonenumber }
    });
  }
  function logout() {
    return request({
      url: "/auth/logout",
      method: "POST"
    });
  }
  const logic$9 = {
    data() {
      return {
        currentTab: 0,
        // 0: 免密, 1: 密码
        mobile: "",
        code: "",
        password: "",
        showPassword: false,
        isAgreed: false,
        countDown: 0,
        timer: null,
        showAgreementModal: false,
        agreementTitle: "",
        agreementContent: "",
        loginLoading: false
      };
    },
    methods: {
      showAgreement(type) {
        this.agreementTitle = type === 1 ? "用户服务协议" : "隐私政策";
        if (type === 1) {
          this.agreementContent = "1. 服务条款\n欢迎使用宠宝平台。您在使用本服务时需遵守以下条款...\n\n2. 用户责任\n用户需对自己的行为负责...\n\n3. 账号管理\n请妥善保管您的账号密码...";
        } else {
          this.agreementContent = "1. 信息收集\n为了提供服务，我们需要收集您的手机号、地理位置、设备信息等必要数据。\n\n2. 信息使用\n您的位置信息将用于订单匹配和路径规划；您的联系方式将用于接单通知和客户沟通。\n\n3. 信息保护\n我们将采取严格的安全措施保护您的个人信息，未经授权不会向第三方披露。";
        }
        this.showAgreementModal = true;
      },
      async getVerifyCode() {
        if (this.currentTab === 1)
          return;
        if (this.countDown > 0)
          return;
        if (!this.mobile || this.mobile.length !== 11) {
          uni.showToast({ title: "请输入正确的手机号", icon: "none" });
          return;
        }
        try {
          const res = await sendSmsCode(this.mobile);
          this.countDown = 60;
          this.timer = setInterval(() => {
            this.countDown--;
            if (this.countDown <= 0) {
              clearInterval(this.timer);
            }
          }, 1e3);
          const devCode = res.data;
          if (devCode) {
            this.code = devCode;
            uni.showToast({ title: "验证码: " + devCode, icon: "none", duration: 3e3 });
          } else {
            uni.showToast({ title: "验证码已发送", icon: "none" });
          }
        } catch (err) {
          formatAppLog("error", "at pages/login/logic.js:60", "发送验证码失败:", err);
        }
      },
      async handleLogin() {
        var _a;
        if (!this.isAgreed) {
          uni.showToast({ title: "请先同意用户协议", icon: "none" });
          return;
        }
        if (!this.mobile) {
          uni.showToast({ title: "请输入手机号", icon: "none" });
          return;
        }
        if (this.currentTab === 0) {
          if (!this.code) {
            uni.showToast({ title: "请输入验证码", icon: "none" });
            return;
          }
        } else {
          if (!this.password) {
            uni.showToast({ title: "请输入密码", icon: "none" });
            return;
          }
        }
        if (this.loginLoading)
          return;
        this.loginLoading = true;
        try {
          let res;
          if (this.currentTab === 0) {
            res = await loginBySms(this.mobile, this.code);
          } else {
            res = await loginByPassword(this.mobile, this.password);
          }
          const token = ((_a = res.data) == null ? void 0 : _a.access_token) || res.access_token;
          if (token) {
            setToken(token);
          }
          uni.showToast({ title: "登录成功", icon: "success" });
          setTimeout(() => {
            uni.switchTab({
              url: "/pages/home/index"
            });
          }, 1e3);
        } catch (err) {
          formatAppLog("error", "at pages/login/logic.js:114", "登录失败:", err);
        } finally {
          this.loginLoading = false;
        }
      },
      goToRecruit() {
        uni.navigateTo({
          url: "/pages/recruit/landing"
        });
      },
      goToForgotPwd() {
        uni.navigateTo({
          url: "/pages/login/reset-pwd-verify"
        });
      }
    }
  };
  const _imports_0$4 = "/static/header.png";
  const _imports_1$8 = "/static/logo.png";
  const _sfc_main$B = {
    ...logic$9,
    components: {
      PrivacyPopup: __easycom_0
    }
  };
  function _sfc_render$A(_ctx, _cache, $props, $setup, $data, $options) {
    const _component_privacy_popup = resolveEasycom(vue.resolveDynamicComponent("privacy-popup"), __easycom_0);
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode("view", { class: "banner-area" }, [
        vue.createElementVNode("image", {
          class: "banner-img",
          src: _imports_0$4,
          mode: "widthFix"
        })
      ]),
      vue.createElementVNode("view", { class: "content-card" }, [
        vue.createElementVNode("view", { class: "logo-wrapper" }, [
          vue.createElementVNode("image", {
            class: "logo-img",
            src: _imports_1$8,
            mode: "widthFix"
          })
        ]),
        vue.createElementVNode("view", { class: "tabs" }, [
          vue.createElementVNode(
            "view",
            {
              class: vue.normalizeClass(["tab-item", { active: _ctx.currentTab === 0 }]),
              onClick: _cache[0] || (_cache[0] = ($event) => _ctx.currentTab = 0)
            },
            [
              vue.createElementVNode("text", { class: "tab-text" }, "免密登录"),
              _ctx.currentTab === 0 ? (vue.openBlock(), vue.createElementBlock("view", {
                key: 0,
                class: "tab-indicator"
              })) : vue.createCommentVNode("v-if", true)
            ],
            2
            /* CLASS */
          ),
          vue.createElementVNode("view", { class: "divider" }),
          vue.createElementVNode(
            "view",
            {
              class: vue.normalizeClass(["tab-item", { active: _ctx.currentTab === 1 }]),
              onClick: _cache[1] || (_cache[1] = ($event) => _ctx.currentTab = 1)
            },
            [
              vue.createElementVNode("text", { class: "tab-text" }, "密码登录"),
              _ctx.currentTab === 1 ? (vue.openBlock(), vue.createElementBlock("view", {
                key: 0,
                class: "tab-indicator"
              })) : vue.createCommentVNode("v-if", true)
            ],
            2
            /* CLASS */
          )
        ]),
        vue.createElementVNode("view", { class: "form-area" }, [
          vue.createElementVNode("view", { class: "input-group" }, [
            vue.createElementVNode("view", { class: "area-code" }, [
              vue.createElementVNode("text", null, "+86"),
              vue.createElementVNode("text", { class: "arrow" }, "﹀")
            ]),
            vue.withDirectives(vue.createElementVNode(
              "input",
              {
                class: "input",
                type: "number",
                placeholder: "手机号",
                "placeholder-style": "color: #ccc",
                "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => _ctx.mobile = $event),
                maxlength: "11"
              },
              null,
              512
              /* NEED_PATCH */
            ), [
              [vue.vModelText, _ctx.mobile]
            ])
          ]),
          _ctx.currentTab === 0 ? (vue.openBlock(), vue.createElementBlock("view", {
            key: 0,
            class: "input-group"
          }, [
            vue.withDirectives(vue.createElementVNode(
              "input",
              {
                class: "input",
                type: "number",
                placeholder: "验证码",
                "placeholder-style": "color: #ccc",
                "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => _ctx.code = $event),
                maxlength: "6"
              },
              null,
              512
              /* NEED_PATCH */
            ), [
              [vue.vModelText, _ctx.code]
            ]),
            vue.createElementVNode("view", {
              class: "get-code-btn",
              onClick: _cache[4] || (_cache[4] = (...args) => _ctx.getVerifyCode && _ctx.getVerifyCode(...args))
            }, [
              vue.createElementVNode(
                "text",
                { class: "code-text" },
                vue.toDisplayString(_ctx.countDown > 0 ? `${_ctx.countDown}s后重试` : "获取验证码"),
                1
                /* TEXT */
              )
            ])
          ])) : vue.createCommentVNode("v-if", true),
          _ctx.currentTab === 1 ? (vue.openBlock(), vue.createElementBlock("view", {
            key: 1,
            class: "input-group"
          }, [
            vue.withDirectives(vue.createElementVNode("input", {
              class: "input",
              password: !_ctx.showPassword,
              type: "text",
              placeholder: "请输入密码",
              "placeholder-style": "color: #ccc",
              "onUpdate:modelValue": _cache[5] || (_cache[5] = ($event) => _ctx.password = $event)
            }, null, 8, ["password"]), [
              [vue.vModelText, _ctx.password]
            ]),
            vue.createElementVNode("view", {
              class: "eye-icon",
              onClick: _cache[6] || (_cache[6] = ($event) => _ctx.showPassword = !_ctx.showPassword)
            }, [
              _ctx.showPassword ? (vue.openBlock(), vue.createElementBlock("svg", {
                key: 0,
                class: "svg-icon",
                viewBox: "0 0 24 24",
                fill: "none",
                xmlns: "http://www.w3.org/2000/svg"
              }, [
                vue.createElementVNode("path", {
                  d: "M12 4.5C7 4.5 2.73 7.61 1 12C2.73 16.39 7 19.5 12 19.5C17 19.5 21.27 16.39 23 12C21.27 7.61 17 4.5 12 4.5ZM12 17C9.24 17 7 14.76 7 12C7 9.24 9.24 7 12 7C14.76 7 17 9.24 17 12C17 14.76 14.76 17 12 17ZM12 9C10.34 9 9 10.34 9 12C9 13.66 10.34 15 12 15C13.66 15 15 13.66 15 12C15 10.34 13.66 9 12 9Z",
                  fill: "#CCCCCC"
                })
              ])) : (vue.openBlock(), vue.createElementBlock("svg", {
                key: 1,
                class: "svg-icon",
                viewBox: "0 0 24 24",
                fill: "none",
                xmlns: "http://www.w3.org/2000/svg"
              }, [
                vue.createElementVNode("path", {
                  d: "M12 7C7 7 2.73 10.11 1 14.5",
                  stroke: "#CCCCCC",
                  "stroke-width": "2",
                  "stroke-linecap": "round"
                }),
                vue.createElementVNode("path", {
                  d: "M23 14.5C21.27 10.11 17 7 12 7",
                  stroke: "#CCCCCC",
                  "stroke-width": "2",
                  "stroke-linecap": "round"
                }),
                vue.createElementVNode("path", {
                  d: "M12 7V4",
                  stroke: "#CCCCCC",
                  "stroke-width": "2",
                  "stroke-linecap": "round"
                }),
                vue.createElementVNode("path", {
                  d: "M16 8L18 5",
                  stroke: "#CCCCCC",
                  "stroke-width": "2",
                  "stroke-linecap": "round"
                }),
                vue.createElementVNode("path", {
                  d: "M8 8L6 5",
                  stroke: "#CCCCCC",
                  "stroke-width": "2",
                  "stroke-linecap": "round"
                }),
                vue.createElementVNode("path", {
                  d: "M20 10L22 8",
                  stroke: "#CCCCCC",
                  "stroke-width": "2",
                  "stroke-linecap": "round"
                }),
                vue.createElementVNode("path", {
                  d: "M4 10L2 8",
                  stroke: "#CCCCCC",
                  "stroke-width": "2",
                  "stroke-linecap": "round"
                })
              ]))
            ])
          ])) : vue.createCommentVNode("v-if", true),
          _ctx.currentTab === 1 ? (vue.openBlock(), vue.createElementBlock("view", {
            key: 2,
            class: "forgot-pwd"
          }, [
            vue.createElementVNode("text", {
              onClick: _cache[7] || (_cache[7] = (...args) => _ctx.goToForgotPwd && _ctx.goToForgotPwd(...args))
            }, "忘记密码?")
          ])) : vue.createCommentVNode("v-if", true),
          vue.createElementVNode("button", {
            class: "login-btn",
            onClick: _cache[8] || (_cache[8] = (...args) => _ctx.handleLogin && _ctx.handleLogin(...args))
          }, "登 录"),
          vue.createElementVNode("view", { class: "agreement" }, [
            vue.createElementVNode(
              "view",
              {
                class: vue.normalizeClass(["checkbox", { checked: _ctx.isAgreed }]),
                onClick: _cache[9] || (_cache[9] = ($event) => _ctx.isAgreed = !_ctx.isAgreed)
              },
              [
                _ctx.isAgreed ? (vue.openBlock(), vue.createElementBlock("text", {
                  key: 0,
                  class: "check-mark"
                }, "✓")) : vue.createCommentVNode("v-if", true)
              ],
              2
              /* CLASS */
            ),
            vue.createElementVNode("text", { class: "agree-text" }, [
              vue.createTextVNode(" 我已经阅读并同意 "),
              vue.createElementVNode("text", {
                class: "link",
                onClick: _cache[10] || (_cache[10] = vue.withModifiers(($event) => _ctx.showAgreement(1), ["stop"]))
              }, "《用户服务协议》"),
              vue.createTextVNode(" 和 "),
              vue.createElementVNode("text", {
                class: "link",
                onClick: _cache[11] || (_cache[11] = vue.withModifiers(($event) => _ctx.showAgreement(2), ["stop"]))
              }, "《隐私政策》")
            ])
          ])
        ]),
        vue.createElementVNode("view", {
          class: "footer-recruit",
          onClick: _cache[12] || (_cache[12] = (...args) => _ctx.goToRecruit && _ctx.goToRecruit(...args))
        }, [
          vue.createElementVNode("view", { class: "recruit-badge" }, [
            (vue.openBlock(), vue.createElementBlock("svg", {
              class: "svg-icon flag-icon",
              viewBox: "0 0 24 24",
              fill: "none",
              xmlns: "http://www.w3.org/2000/svg",
              style: { "width": "30rpx", "height": "30rpx" }
            }, [
              vue.createElementVNode("path", {
                d: "M4 14V4H18L17 9L18 14H4Z",
                stroke: "#FF5722",
                "stroke-width": "2",
                "stroke-linejoin": "round"
              }),
              vue.createElementVNode("path", {
                d: "M4 22V14",
                stroke: "#FF5722",
                "stroke-width": "2",
                "stroke-linecap": "round"
              })
            ])),
            vue.createElementVNode("text", null, " 宠宝履约者招募")
          ])
        ]),
        vue.createVNode(_component_privacy_popup, {
          visible: _ctx.showAgreementModal,
          title: _ctx.agreementTitle,
          content: _ctx.agreementContent,
          onClose: _cache[13] || (_cache[13] = ($event) => _ctx.showAgreementModal = false)
        }, null, 8, ["visible", "title", "content"])
      ])
    ]);
  }
  const PagesLoginLogin = /* @__PURE__ */ _export_sfc(_sfc_main$B, [["render", _sfc_render$A], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/login/login.vue"]]);
  const logic$8 = {
    data() {
      return {
        statusBarHeight: 20
        // 默认状态栏高度
      };
    },
    onLoad() {
      const sysInfo = uni.getSystemInfoSync();
      this.statusBarHeight = sysInfo.statusBarHeight || 20;
    },
    methods: {
      goBack() {
        const pages = getCurrentPages();
        if (pages.length > 1) {
          uni.navigateBack();
        } else {
          uni.reLaunch({
            url: "/pages/login/login"
          });
        }
      },
      goToForm() {
        uni.navigateTo({
          url: "/pages/recruit/form"
        });
      }
    }
  };
  const _sfc_main$A = logic$8;
  function _sfc_render$z(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode(
        "view",
        {
          style: vue.normalizeStyle({ height: _ctx.statusBarHeight + "px" })
        },
        null,
        4
        /* STYLE */
      ),
      vue.createElementVNode("view", { class: "nav-bar" }, [
        vue.createElementVNode("view", {
          class: "back-icon",
          onClick: _cache[0] || (_cache[0] = (...args) => _ctx.goBack && _ctx.goBack(...args))
        }, "‹")
      ]),
      vue.createElementVNode("view", { class: "header-area" }, [
        vue.createElementVNode("text", { class: "main-title" }, "加入宠宝履约者"),
        vue.createElementVNode("text", { class: "sub-title" }, "月薪最高可达1.5万元")
      ]),
      vue.createElementVNode("view", { class: "content-card" }, [
        vue.createElementVNode("view", { class: "benefit-item" }, [
          vue.createElementVNode("view", { class: "icon-circle icon-money" }, [
            vue.createElementVNode("text", { class: "icon-text" }, "￥")
          ]),
          vue.createElementVNode("view", { class: "info" }, [
            vue.createElementVNode("text", { class: "item-title" }, "1、收入可观"),
            vue.createElementVNode("text", { class: "item-desc" }, "小默配送为您提供一种全新的赚钱选择，利用空闲时间，获得更多收入。")
          ])
        ]),
        vue.createElementVNode("view", { class: "benefit-item" }, [
          vue.createElementVNode("view", { class: "icon-circle icon-loc" }, [
            vue.createElementVNode("text", { class: "icon-text" }, "📍")
          ]),
          vue.createElementVNode("view", { class: "info" }, [
            vue.createElementVNode("text", { class: "item-title" }, "2、地点灵活"),
            vue.createElementVNode("text", { class: "item-desc" }, "小默配送覆盖国内各城市与港澳台等地，您可随时就近使用。")
          ])
        ]),
        vue.createElementVNode("view", { class: "benefit-item" }, [
          vue.createElementVNode("view", { class: "icon-circle icon-clock" }, [
            vue.createElementVNode("text", { class: "icon-text" }, "🕒")
          ]),
          vue.createElementVNode("view", { class: "info" }, [
            vue.createElementVNode("text", { class: "item-title" }, "3、时间自由"),
            vue.createElementVNode("text", { class: "item-desc" }, "不必再受繁琐事务约束，加入小默配送，自由分配个人时间，为自己工作。")
          ])
        ])
      ]),
      vue.createElementVNode("view", { class: "footer-area" }, [
        vue.createElementVNode("button", {
          class: "join-btn",
          onClick: _cache[1] || (_cache[1] = (...args) => _ctx.goToForm && _ctx.goToForm(...args))
        }, "我要加入"),
        vue.createElementVNode("view", { class: "faq" }, [
          vue.createElementVNode("text", { class: "help-icon" }, "?"),
          vue.createTextVNode(" 常见问题 ")
        ])
      ])
    ]);
  }
  const PagesRecruitLanding = /* @__PURE__ */ _export_sfc(_sfc_main$A, [["render", _sfc_render$z], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/recruit/landing.vue"]]);
  function getMyProfile() {
    return request({
      url: "/fulfiller/fulfiller/my",
      method: "GET"
    });
  }
  function submitAudit(data) {
    return request({
      url: "/fulfiller/app/audit/submit",
      method: "POST",
      needToken: false,
      data
    });
  }
  function getAreaChildren(parentId = 0) {
    return request({
      url: "/fulfiller/app/area/children",
      method: "GET",
      needToken: false,
      data: { parentId }
    });
  }
  function uploadFile(filePath) {
    return new Promise((resolve, reject) => {
      uni.uploadFile({
        url: BASE_URL + "/fulfiller/app/upload",
        filePath,
        name: "file",
        header: {
          "clientid": CLIENT_ID,
          "X-Platform-Code": PLATFORM_CODE
        },
        success: (res) => {
          try {
            const data = JSON.parse(res.data);
            if (data.code === 200) {
              resolve(data);
            } else {
              uni.showToast({ title: data.msg || "上传失败", icon: "none" });
              reject(data);
            }
          } catch (e) {
            reject(e);
          }
        },
        fail: (err) => {
          uni.showToast({ title: "上传失败", icon: "none" });
          reject(err);
        }
      });
    });
  }
  function updateAvatar(avatar) {
    return request({
      url: "/fulfiller/fulfiller/my/avatar",
      method: "PUT",
      data: { avatar }
    });
  }
  function updateName(name) {
    return request({
      url: "/fulfiller/fulfiller/my/name",
      method: "PUT",
      data: { name }
    });
  }
  function updateStatus(status) {
    return request({
      url: "/fulfiller/fulfiller/my/status",
      method: "PUT",
      data: { status }
    });
  }
  function updateCity(cityCode, cityName) {
    return request({
      url: "/fulfiller/fulfiller/my/city",
      method: "PUT",
      data: { cityCode, cityName }
    });
  }
  function getAuthInfo() {
    return request({
      url: "/fulfiller/fulfiller/my/auth",
      method: "GET"
    });
  }
  function updatePhone(phone, code) {
    return request({
      url: "/fulfiller/fulfiller/my/phone",
      method: "PUT",
      data: { phone, code }
    });
  }
  function updatePassword(oldPassword, newPassword) {
    return request({
      url: "/fulfiller/fulfiller/my/password",
      method: "PUT",
      data: { oldPassword, newPassword }
    });
  }
  function deleteAccount() {
    return request({
      url: "/fulfiller/fulfiller/my/account",
      method: "DELETE"
    });
  }
  function updateAuthInfo(data) {
    return request({
      url: "/fulfiller/fulfiller/my/auth",
      method: "POST",
      data
    });
  }
  function getPendingOrders(params) {
    return request({
      url: "/order/subOrder/listPendingAccept",
      method: "GET",
      data: params
    });
  }
  function acceptOrder(orderId) {
    return request({
      url: "/order/subOrder/accept",
      method: "PUT",
      data: { orderId }
    });
  }
  function getOrderCount() {
    return request({
      url: "/order/subOrder/count",
      method: "GET"
    });
  }
  const logic$7 = {
    data() {
      return {
        formData: {
          mobile: "",
          code: "",
          name: "",
          gender: 1,
          // 1男 2女
          birthday: "",
          password: "",
          serviceType: [],
          city: "",
          station: "",
          stationId: null
        },
        showPwd: false,
        isAgreed: false,
        serviceTypes: ["宠物接送", "上门喂遛", "上门洗护"],
        // 验证码倒计时
        countDown: 0,
        timer: null,
        // 日期选择器相关
        showPicker: false,
        years: [],
        months: [],
        days: [],
        pickerValue: [0, 0, 0],
        tempYear: 0,
        tempMonth: 0,
        tempDay: 0,
        // 城市选择器相关（从后端加载）
        showCityPicker: false,
        selectStep: 0,
        selectedPathway: [],
        currentList: [],
        selectedCityId: null,
        // 站点选择器相关（从后端加载）
        showStationPicker: false,
        stationList: [],
        // 协议弹窗
        showPrivacy: false,
        privacyTitle: "",
        privacyContent: ""
      };
    },
    created() {
      this.initDateData();
    },
    beforeDestroy() {
      if (this.timer)
        clearInterval(this.timer);
    },
    methods: {
      initDateData() {
        const now = /* @__PURE__ */ new Date();
        const currentYear = now.getFullYear();
        for (let i = 1980; i <= currentYear + 5; i++) {
          this.years.push(i);
        }
        for (let i = 1; i <= 12; i++) {
          this.months.push(i);
        }
        for (let i = 1; i <= 31; i++) {
          this.days.push(i);
        }
      },
      // 打开选择器
      openPicker() {
        const dateStr = this.formData.birthday || "2000-01-01";
        const [y, m, d] = dateStr.split("-").map(Number);
        const yIndex = this.years.indexOf(y);
        const mIndex = this.months.indexOf(m);
        const dIndex = this.days.indexOf(d);
        this.pickerValue = [
          yIndex > -1 ? yIndex : 0,
          mIndex > -1 ? mIndex : 0,
          dIndex > -1 ? dIndex : 0
        ];
        this.tempYear = this.years[this.pickerValue[0]];
        this.tempMonth = this.months[this.pickerValue[1]];
        this.tempDay = this.days[this.pickerValue[2]];
        this.showPicker = true;
      },
      closePicker() {
        this.showPicker = false;
      },
      onPickerChange(e) {
        const val = e.detail.value;
        this.tempYear = this.years[val[0]];
        this.tempMonth = this.months[val[1]];
        this.tempDay = this.days[val[2]];
      },
      confirmPicker() {
        const mStr = this.tempMonth < 10 ? "0" + this.tempMonth : this.tempMonth;
        const dStr = this.tempDay < 10 ? "0" + this.tempDay : this.tempDay;
        this.formData.birthday = `${this.tempYear}-${mStr}-${dStr}`;
        this.closePicker();
      },
      toggleService(item) {
        const idx = this.formData.serviceType.indexOf(item);
        if (idx > -1) {
          this.formData.serviceType.splice(idx, 1);
        } else {
          this.formData.serviceType.push(item);
        }
      },
      // 验证码
      async getVerifyCode() {
        if (this.countDown > 0)
          return;
        if (!this.formData.mobile || this.formData.mobile.length !== 11) {
          uni.showToast({ title: "请输入正确的手机号", icon: "none" });
          return;
        }
        try {
          const res = await sendSmsCode(this.formData.mobile);
          this.countDown = 60;
          this.timer = setInterval(() => {
            this.countDown--;
            if (this.countDown <= 0)
              clearInterval(this.timer);
          }, 1e3);
          const devCode = res.data;
          if (devCode) {
            this.formData.code = devCode;
            uni.showToast({ title: "验证码: " + devCode, icon: "none", duration: 3e3 });
          } else {
            uni.showToast({ title: "验证码已发送", icon: "none" });
          }
        } catch (err) {
          formatAppLog("error", "at pages/recruit/logic.js:154", "发送验证码失败:", err);
        }
      },
      // 城市选择器 logic（从后端加载）
      async openCityPicker() {
        this.showCityPicker = true;
        if (this.selectedPathway.length === 0) {
          await this.resetCityPicker();
        }
      },
      async resetCityPicker() {
        this.selectStep = 0;
        this.selectedPathway = [];
        await this.loadAreaChildren(0);
      },
      closeCityPicker() {
        this.showCityPicker = false;
      },
      async loadAreaChildren(parentId) {
        try {
          const res = await getAreaChildren(parentId);
          this.currentList = (res.data || []).filter((item) => item.type !== 2).map((item) => ({
            id: item.id,
            name: item.name,
            type: item.type,
            parentId: item.parentId
          }));
        } catch (err) {
          formatAppLog("error", "at pages/recruit/logic.js:186", "加载区域数据失败:", err);
          this.currentList = [];
        }
      },
      async selectCityItem(item) {
        this.selectedPathway[this.selectStep] = item;
        if (item.type === 0) {
          this.selectStep++;
          this.selectedPathway = this.selectedPathway.slice(0, this.selectStep);
          await this.loadAreaChildren(item.id);
          if (this.currentList.length === 0) {
            this.selectedCityId = item.id;
            this.confirmCity();
          }
        } else {
          this.selectedCityId = item.id;
          this.confirmCity();
        }
      },
      async jumpToStep(step) {
        this.selectStep = step;
        if (step === 0) {
          await this.loadAreaChildren(0);
        } else {
          const parent = this.selectedPathway[step - 1];
          if (parent) {
            await this.loadAreaChildren(parent.id);
          }
        }
      },
      confirmCity() {
        const fullPath = this.selectedPathway.map((i) => i.name).join(" ");
        this.formData.city = fullPath;
        this.formData.station = "";
        this.formData.stationId = null;
        const lastSelected = this.selectedPathway[this.selectedPathway.length - 1];
        if (lastSelected) {
          this.loadStations(lastSelected.id);
        }
        this.closeCityPicker();
      },
      // 站点选择器（从后端加载，只取type=2的站点）
      async loadStations(parentId) {
        try {
          const res = await getAreaChildren(parentId);
          this.stationList = (res.data || []).filter((item) => item.type === 2).map((item) => ({
            id: item.id,
            name: item.name
          }));
        } catch (err) {
          formatAppLog("error", "at pages/recruit/logic.js:245", "加载站点数据失败:", err);
          this.stationList = [];
        }
      },
      openStationPicker() {
        if (this.stationList.length === 0) {
          uni.showToast({ title: "请先选择工作城市", icon: "none" });
          return;
        }
        this.showStationPicker = true;
      },
      closeStationPicker() {
        this.showStationPicker = false;
      },
      selectStation(item) {
        this.formData.station = item.name;
        this.formData.stationId = item.id;
        this.closeStationPicker();
      },
      openPrivacy() {
        this.privacyTitle = "宠宝履约者说明";
        this.privacyContent = "1. 履约职责\n作为宠宝履约者，您需要按照平台标准完成宠物接送、喂遛或洗护服务，确保宠物安全与健康。\n\n2. 结算方式\n服务费用将根据订单类型和距离计算，定期结算至您的账户。具体结算周期请查看钱包说明。\n\n3. 行为规范\n请在这个过程中保持专业，穿着整洁，礼貌待人。严禁虐待宠物，违反者将承担法律责任。";
        this.showPrivacy = true;
      },
      goToAuth() {
        if (!this.isAgreed) {
          uni.showToast({ title: "请勾选协议", icon: "none" });
          return;
        }
        if (!this.formData.mobile || this.formData.mobile.length !== 11) {
          uni.showToast({ title: "请输入正确的手机号", icon: "none" });
          return;
        }
        if (!this.formData.name) {
          uni.showToast({ title: "请输入姓名", icon: "none" });
          return;
        }
        if (this.formData.serviceType.length === 0) {
          uni.showToast({ title: "请选择服务类型", icon: "none" });
          return;
        }
        uni.setStorageSync("recruit_form_data", JSON.stringify(this.formData));
        const services = JSON.stringify(this.formData.serviceType);
        uni.navigateTo({
          url: `/pages/recruit/auth?services=${services}`
        });
      }
    }
  };
  const _sfc_main$z = {
    ...logic$7,
    components: {
      PrivacyPopup: __easycom_0
    }
  };
  function _sfc_render$y(_ctx, _cache, $props, $setup, $data, $options) {
    const _component_privacy_popup = resolveEasycom(vue.resolveDynamicComponent("privacy-popup"), __easycom_0);
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode("view", { class: "card" }, [
        vue.createElementVNode("view", { class: "form-item" }, [
          vue.createElementVNode("text", { class: "label" }, "手机号"),
          vue.createElementVNode("view", { class: "input-box" }, [
            vue.createElementVNode("view", { class: "prefix-area" }, [
              vue.createElementVNode("text", { class: "prefix" }, "+86"),
              vue.createElementVNode("text", { class: "arrow-down" }, "﹀")
            ]),
            vue.withDirectives(vue.createElementVNode(
              "input",
              {
                class: "input",
                type: "number",
                "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.formData.mobile = $event)
              },
              null,
              512
              /* NEED_PATCH */
            ), [
              [vue.vModelText, _ctx.formData.mobile]
            ])
          ])
        ]),
        vue.createElementVNode("view", { class: "form-item" }, [
          vue.createElementVNode("text", { class: "label" }, "验证码"),
          vue.createElementVNode("view", { class: "input-box" }, [
            vue.withDirectives(vue.createElementVNode(
              "input",
              {
                class: "input",
                type: "number",
                "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => _ctx.formData.code = $event),
                placeholder: "验证码"
              },
              null,
              512
              /* NEED_PATCH */
            ), [
              [vue.vModelText, _ctx.formData.code]
            ]),
            vue.createElementVNode(
              "text",
              {
                class: "get-code-text",
                onClick: _cache[2] || (_cache[2] = (...args) => _ctx.getVerifyCode && _ctx.getVerifyCode(...args))
              },
              vue.toDisplayString(_ctx.countDown > 0 ? _ctx.countDown + "s" : "获取验证码"),
              1
              /* TEXT */
            )
          ])
        ]),
        vue.createElementVNode("view", { class: "form-item" }, [
          vue.createElementVNode("text", { class: "label" }, "姓名"),
          vue.createElementVNode("view", { class: "input-box" }, [
            vue.withDirectives(vue.createElementVNode(
              "input",
              {
                class: "input",
                type: "text",
                "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => _ctx.formData.name = $event)
              },
              null,
              512
              /* NEED_PATCH */
            ), [
              [vue.vModelText, _ctx.formData.name]
            ])
          ])
        ]),
        vue.createElementVNode("view", { class: "form-item" }, [
          vue.createElementVNode("text", { class: "label" }, "性别"),
          vue.createElementVNode("view", { class: "gender-group" }, [
            vue.createElementVNode("view", {
              class: "radio-item",
              onClick: _cache[4] || (_cache[4] = ($event) => _ctx.formData.gender = 1)
            }, [
              vue.createElementVNode(
                "text",
                {
                  class: vue.normalizeClass(["radio-icon", { active: _ctx.formData.gender === 1 }])
                },
                vue.toDisplayString(_ctx.formData.gender === 1 ? "♂" : "○"),
                3
                /* TEXT, CLASS */
              ),
              vue.createElementVNode(
                "text",
                {
                  class: vue.normalizeClass(["radio-label", { active: _ctx.formData.gender === 1 }])
                },
                " 男",
                2
                /* CLASS */
              )
            ]),
            vue.createElementVNode("view", {
              class: "radio-item",
              onClick: _cache[5] || (_cache[5] = ($event) => _ctx.formData.gender = 2)
            }, [
              vue.createElementVNode(
                "text",
                {
                  class: vue.normalizeClass(["radio-icon", { active: _ctx.formData.gender === 2 }])
                },
                vue.toDisplayString(_ctx.formData.gender === 2 ? "♀" : "○"),
                3
                /* TEXT, CLASS */
              ),
              vue.createElementVNode(
                "text",
                {
                  class: vue.normalizeClass(["radio-label", { active: _ctx.formData.gender === 2 }])
                },
                " 女",
                2
                /* CLASS */
              )
            ])
          ])
        ]),
        vue.createElementVNode("view", { class: "form-item" }, [
          vue.createElementVNode("text", { class: "label" }, "生日"),
          vue.createElementVNode("view", {
            class: "input-box",
            onClick: _cache[6] || (_cache[6] = (...args) => _ctx.openPicker && _ctx.openPicker(...args))
          }, [
            vue.createElementVNode(
              "text",
              null,
              vue.toDisplayString(_ctx.formData.birthday || "请选择生日"),
              1
              /* TEXT */
            ),
            (vue.openBlock(), vue.createElementBlock("svg", {
              class: "arrow-right",
              style: { "width": "24rpx", "height": "24rpx", "margin-left": "auto" },
              viewBox: "0 0 1024 1024",
              version: "1.1",
              xmlns: "http://www.w3.org/2000/svg"
            }, [
              vue.createElementVNode("path", {
                d: "M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-45.056L382.592 149.312a29.12 29.12 0 0 0-41.728 0z",
                fill: "#CCCCCC"
              })
            ]))
          ])
        ]),
        vue.createElementVNode("view", { class: "form-item" }, [
          vue.createElementVNode("text", { class: "label" }, "密码"),
          vue.createElementVNode("view", { class: "input-box" }, [
            vue.withDirectives(vue.createElementVNode("input", {
              class: "input",
              password: !_ctx.showPwd,
              "onUpdate:modelValue": _cache[7] || (_cache[7] = ($event) => _ctx.formData.password = $event),
              placeholder: "设置登录密码"
            }, null, 8, ["password"]), [
              [vue.vModelText, _ctx.formData.password]
            ]),
            vue.createElementVNode("view", {
              class: "monkey-icon",
              onClick: _cache[8] || (_cache[8] = ($event) => _ctx.showPwd = !_ctx.showPwd)
            }, [
              _ctx.showPwd ? (vue.openBlock(), vue.createElementBlock("svg", {
                key: 0,
                class: "svg-icon",
                viewBox: "0 0 24 24",
                fill: "none",
                xmlns: "http://www.w3.org/2000/svg"
              }, [
                vue.createElementVNode("path", {
                  d: "M12 4.5C7 4.5 2.73 7.61 1 12C2.73 16.39 7 19.5 12 19.5C17 19.5 21.27 16.39 23 12C21.27 7.61 17 4.5 12 4.5ZM12 17C9.24 17 7 14.76 7 12C7 9.24 9.24 7 12 7C14.76 7 17 9.24 17 12C17 14.76 14.76 17 12 17ZM12 9C10.34 9 9 10.34 9 12C9 13.66 10.34 15 12 15C13.66 15 15 13.66 15 12C15 10.34 13.66 9 12 9Z",
                  fill: "#CCCCCC"
                })
              ])) : (vue.openBlock(), vue.createElementBlock("svg", {
                key: 1,
                class: "svg-icon",
                viewBox: "0 0 24 24",
                fill: "none",
                xmlns: "http://www.w3.org/2000/svg"
              }, [
                vue.createElementVNode("path", {
                  d: "M12 7C7 7 2.73 10.11 1 14.5",
                  stroke: "#CCCCCC",
                  "stroke-width": "2",
                  "stroke-linecap": "round"
                }),
                vue.createElementVNode("path", {
                  d: "M23 14.5C21.27 10.11 17 7 12 7",
                  stroke: "#CCCCCC",
                  "stroke-width": "2",
                  "stroke-linecap": "round"
                }),
                vue.createElementVNode("path", {
                  d: "M12 7V4",
                  stroke: "#CCCCCC",
                  "stroke-width": "2",
                  "stroke-linecap": "round"
                }),
                vue.createElementVNode("path", {
                  d: "M16 8L18 5",
                  stroke: "#CCCCCC",
                  "stroke-width": "2",
                  "stroke-linecap": "round"
                }),
                vue.createElementVNode("path", {
                  d: "M8 8L6 5",
                  stroke: "#CCCCCC",
                  "stroke-width": "2",
                  "stroke-linecap": "round"
                }),
                vue.createElementVNode("path", {
                  d: "M20 10L22 8",
                  stroke: "#CCCCCC",
                  "stroke-width": "2",
                  "stroke-linecap": "round"
                }),
                vue.createElementVNode("path", {
                  d: "M4 10L2 8",
                  stroke: "#CCCCCC",
                  "stroke-width": "2",
                  "stroke-linecap": "round"
                })
              ]))
            ])
          ])
        ])
      ]),
      vue.createElementVNode("view", { class: "card" }, [
        vue.createElementVNode("view", { class: "section-title" }, "服务类型"),
        vue.createElementVNode("view", { class: "service-types" }, [
          (vue.openBlock(true), vue.createElementBlock(
            vue.Fragment,
            null,
            vue.renderList(_ctx.serviceTypes, (item, index) => {
              return vue.openBlock(), vue.createElementBlock("view", {
                class: vue.normalizeClass(["type-btn", { selected: _ctx.formData.serviceType.includes(item) }]),
                key: index,
                onClick: ($event) => _ctx.toggleService(item)
              }, vue.toDisplayString(item), 11, ["onClick"]);
            }),
            128
            /* KEYED_FRAGMENT */
          ))
        ]),
        vue.createElementVNode("view", { class: "form-item" }, [
          vue.createElementVNode("text", { class: "label" }, "工作城市"),
          vue.createElementVNode("view", {
            class: "input-box",
            onClick: _cache[9] || (_cache[9] = (...args) => _ctx.openCityPicker && _ctx.openCityPicker(...args))
          }, [
            vue.createElementVNode(
              "text",
              {
                style: vue.normalizeStyle({ color: _ctx.formData.city ? "#333" : "#ccc" })
              },
              vue.toDisplayString(_ctx.formData.city || "请选择工作城市"),
              5
              /* TEXT, STYLE */
            ),
            (vue.openBlock(), vue.createElementBlock("svg", {
              class: "arrow-right",
              style: { "width": "24rpx", "height": "24rpx", "margin-left": "auto" },
              viewBox: "0 0 1024 1024",
              version: "1.1",
              xmlns: "http://www.w3.org/2000/svg"
            }, [
              vue.createElementVNode("path", {
                d: "M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-45.056L382.592 149.312a29.12 29.12 0 0 0-41.728 0z",
                fill: "#CCCCCC"
              })
            ]))
          ])
        ]),
        vue.createElementVNode("view", { class: "form-item" }, [
          vue.createElementVNode("text", { class: "label" }, "服务站点"),
          vue.createElementVNode("view", {
            class: "input-box",
            onClick: _cache[10] || (_cache[10] = (...args) => _ctx.openStationPicker && _ctx.openStationPicker(...args))
          }, [
            vue.createElementVNode(
              "text",
              {
                style: vue.normalizeStyle({ color: _ctx.formData.station ? "#333" : "#ccc" })
              },
              vue.toDisplayString(_ctx.formData.station || "请选择服务站点"),
              5
              /* TEXT, STYLE */
            ),
            (vue.openBlock(), vue.createElementBlock("svg", {
              class: "arrow-right",
              style: { "width": "24rpx", "height": "24rpx", "margin-left": "auto" },
              viewBox: "0 0 1024 1024",
              version: "1.1",
              xmlns: "http://www.w3.org/2000/svg"
            }, [
              vue.createElementVNode("path", {
                d: "M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-45.056L382.592 149.312a29.12 29.12 0 0 0-41.728 0z",
                fill: "#CCCCCC"
              })
            ]))
          ])
        ])
      ]),
      vue.createElementVNode(
        "view",
        {
          class: vue.normalizeClass(["picker-mask", { show: _ctx.showCityPicker }]),
          onClick: _cache[14] || (_cache[14] = (...args) => _ctx.closeCityPicker && _ctx.closeCityPicker(...args))
        },
        [
          vue.createElementVNode("view", {
            class: "picker-content",
            onClick: _cache[13] || (_cache[13] = vue.withModifiers(() => {
            }, ["stop"]))
          }, [
            vue.createElementVNode("view", { class: "picker-header" }, [
              vue.createElementVNode("text", {
                class: "picker-btn-cancel",
                onClick: _cache[11] || (_cache[11] = (...args) => _ctx.closeCityPicker && _ctx.closeCityPicker(...args))
              }, "取消"),
              vue.createElementVNode("text", { class: "picker-title" }, "请选择工作城市"),
              vue.createElementVNode("text", {
                class: "picker-btn-confirm",
                onClick: _cache[12] || (_cache[12] = (...args) => _ctx.confirmCity && _ctx.confirmCity(...args))
              }, "确定")
            ]),
            vue.createElementVNode("view", { class: "picker-body" }, [
              vue.createElementVNode("view", { class: "timeline-area" }, [
                (vue.openBlock(true), vue.createElementBlock(
                  vue.Fragment,
                  null,
                  vue.renderList(_ctx.selectedPathway, (item, index) => {
                    return vue.openBlock(), vue.createElementBlock("view", {
                      class: "timeline-item",
                      key: index,
                      onClick: ($event) => _ctx.jumpToStep(index)
                    }, [
                      vue.createElementVNode("view", { class: "timeline-dot" }),
                      vue.createElementVNode(
                        "text",
                        null,
                        vue.toDisplayString(item.name),
                        1
                        /* TEXT */
                      )
                    ], 8, ["onClick"]);
                  }),
                  128
                  /* KEYED_FRAGMENT */
                )),
                _ctx.selectStep === _ctx.selectedPathway.length ? (vue.openBlock(), vue.createElementBlock("view", {
                  key: 0,
                  class: "timeline-item active"
                }, [
                  vue.createElementVNode("view", { class: "timeline-dot" }),
                  vue.createElementVNode("text", null, "请选择")
                ])) : vue.createCommentVNode("v-if", true)
              ]),
              vue.createElementVNode("scroll-view", {
                "scroll-y": "",
                class: "list-area"
              }, [
                (vue.openBlock(true), vue.createElementBlock(
                  vue.Fragment,
                  null,
                  vue.renderList(_ctx.currentList, (item, index) => {
                    return vue.openBlock(), vue.createElementBlock("view", {
                      class: "list-item",
                      key: item.id,
                      onClick: ($event) => _ctx.selectCityItem(item)
                    }, vue.toDisplayString(item.name), 9, ["onClick"]);
                  }),
                  128
                  /* KEYED_FRAGMENT */
                )),
                _ctx.currentList.length === 0 ? (vue.openBlock(), vue.createElementBlock("view", {
                  key: 0,
                  style: { "padding": "20rpx", "color": "#999" }
                }, " 无数据 ")) : vue.createCommentVNode("v-if", true)
              ])
            ])
          ])
        ],
        2
        /* CLASS */
      ),
      vue.createElementVNode(
        "view",
        {
          class: vue.normalizeClass(["picker-mask", { show: _ctx.showStationPicker }]),
          onClick: _cache[17] || (_cache[17] = (...args) => _ctx.closeStationPicker && _ctx.closeStationPicker(...args))
        },
        [
          vue.createElementVNode("view", {
            class: "picker-content",
            onClick: _cache[16] || (_cache[16] = vue.withModifiers(() => {
            }, ["stop"]))
          }, [
            vue.createElementVNode("view", {
              class: "picker-header",
              style: { "justify-content": "center", "position": "relative" }
            }, [
              vue.createElementVNode("text", {
                class: "picker-btn-cancel",
                style: { "position": "absolute", "left": "30rpx" },
                onClick: _cache[15] || (_cache[15] = (...args) => _ctx.closeStationPicker && _ctx.closeStationPicker(...args))
              }, "取消"),
              vue.createElementVNode("text", { class: "picker-title" }, "选择服务站点")
            ]),
            vue.createElementVNode("scroll-view", {
              "scroll-y": "",
              class: "picker-list"
            }, [
              (vue.openBlock(true), vue.createElementBlock(
                vue.Fragment,
                null,
                vue.renderList(_ctx.stationList, (item, index) => {
                  return vue.openBlock(), vue.createElementBlock("view", {
                    class: "station-item",
                    key: index,
                    onClick: ($event) => _ctx.selectStation(item)
                  }, vue.toDisplayString(item.name), 9, ["onClick"]);
                }),
                128
                /* KEYED_FRAGMENT */
              ))
            ])
          ])
        ],
        2
        /* CLASS */
      ),
      vue.createElementVNode("view", { class: "footer-actions" }, [
        vue.createElementVNode("view", { class: "agreement-row" }, [
          vue.createElementVNode(
            "view",
            {
              class: vue.normalizeClass(["checkbox", { checked: _ctx.isAgreed }]),
              onClick: _cache[18] || (_cache[18] = ($event) => _ctx.isAgreed = !_ctx.isAgreed)
            },
            [
              _ctx.isAgreed ? (vue.openBlock(), vue.createElementBlock("text", {
                key: 0,
                class: "check-mark"
              }, "✓")) : vue.createCommentVNode("v-if", true)
            ],
            2
            /* CLASS */
          ),
          vue.createElementVNode("text", { class: "agree-text" }, [
            vue.createTextVNode("我已阅读并同意 "),
            vue.createElementVNode("text", {
              style: { "color": "#2979ff" },
              onClick: _cache[19] || (_cache[19] = vue.withModifiers((...args) => _ctx.openPrivacy && _ctx.openPrivacy(...args), ["stop"]))
            }, "《宠宝履约者说明》")
          ])
        ]),
        vue.createElementVNode("view", { class: "footer-btn-area" }, [
          vue.createElementVNode("button", {
            class: "submit-btn",
            onClick: _cache[20] || (_cache[20] = (...args) => _ctx.goToAuth && _ctx.goToAuth(...args))
          }, "下一步，实名认证")
        ])
      ]),
      vue.createElementVNode(
        "view",
        {
          class: vue.normalizeClass(["picker-mask", { show: _ctx.showPicker }]),
          onClick: _cache[25] || (_cache[25] = (...args) => _ctx.closePicker && _ctx.closePicker(...args))
        },
        [
          vue.createElementVNode("view", {
            class: "picker-content",
            onClick: _cache[24] || (_cache[24] = vue.withModifiers(() => {
            }, ["stop"]))
          }, [
            vue.createElementVNode("view", { class: "picker-header" }, [
              vue.createElementVNode("text", {
                class: "picker-btn-cancel",
                onClick: _cache[21] || (_cache[21] = (...args) => _ctx.closePicker && _ctx.closePicker(...args))
              }, "取消"),
              vue.createElementVNode("text", { class: "picker-title" }, "选择出生日期"),
              vue.createElementVNode("text", {
                class: "picker-btn-confirm",
                onClick: _cache[22] || (_cache[22] = (...args) => _ctx.confirmPicker && _ctx.confirmPicker(...args))
              }, "确定")
            ]),
            vue.createElementVNode("picker-view", {
              class: "picker-view",
              "indicator-style": "height: 50px;",
              value: _ctx.pickerValue,
              onChange: _cache[23] || (_cache[23] = (...args) => _ctx.onPickerChange && _ctx.onPickerChange(...args))
            }, [
              vue.createElementVNode("picker-view-column", null, [
                (vue.openBlock(true), vue.createElementBlock(
                  vue.Fragment,
                  null,
                  vue.renderList(_ctx.years, (item, index) => {
                    return vue.openBlock(), vue.createElementBlock(
                      "view",
                      {
                        class: "picker-item",
                        key: index
                      },
                      vue.toDisplayString(item) + "年",
                      1
                      /* TEXT */
                    );
                  }),
                  128
                  /* KEYED_FRAGMENT */
                ))
              ]),
              vue.createElementVNode("picker-view-column", null, [
                (vue.openBlock(true), vue.createElementBlock(
                  vue.Fragment,
                  null,
                  vue.renderList(_ctx.months, (item, index) => {
                    return vue.openBlock(), vue.createElementBlock(
                      "view",
                      {
                        class: "picker-item",
                        key: index
                      },
                      vue.toDisplayString(item) + "月",
                      1
                      /* TEXT */
                    );
                  }),
                  128
                  /* KEYED_FRAGMENT */
                ))
              ]),
              vue.createElementVNode("picker-view-column", null, [
                (vue.openBlock(true), vue.createElementBlock(
                  vue.Fragment,
                  null,
                  vue.renderList(_ctx.days, (item, index) => {
                    return vue.openBlock(), vue.createElementBlock(
                      "view",
                      {
                        class: "picker-item",
                        key: index
                      },
                      vue.toDisplayString(item) + "日",
                      1
                      /* TEXT */
                    );
                  }),
                  128
                  /* KEYED_FRAGMENT */
                ))
              ])
            ], 40, ["value"])
          ])
        ],
        2
        /* CLASS */
      ),
      vue.createVNode(_component_privacy_popup, {
        visible: _ctx.showPrivacy,
        title: _ctx.privacyTitle,
        content: _ctx.privacyContent,
        onClose: _cache[26] || (_cache[26] = ($event) => _ctx.showPrivacy = false)
      }, null, 8, ["visible", "title", "content"])
    ]);
  }
  const PagesRecruitForm = /* @__PURE__ */ _export_sfc(_sfc_main$z, [["render", _sfc_render$y], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/recruit/form.vue"]]);
  const logic$6 = {
    data() {
      return {
        formData: {
          idType: "居民身份证",
          name: "",
          idNumber: "",
          expiryDate: ""
        },
        idCardFront: "",
        // 身份证正面本地预览路径
        idCardBack: "",
        // 身份证反面本地预览路径
        idCardFrontOssId: "",
        // 身份证正面 OSS ID
        idCardBackOssId: "",
        // 身份证反面 OSS ID
        showDatePicker: false,
        pickerValue: [0, 0, 0],
        // YYYY-MM-DD
        years: [],
        months: [],
        days: [],
        serviceType: []
        // 接收上一页的服务类型
      };
    },
    onLoad(options) {
      if (options.services) {
        try {
          this.serviceType = JSON.parse(options.services);
        } catch (e) {
          formatAppLog("error", "at pages/recruit/auth_logic.js:29", "Parse services failed", e);
        }
      }
      this.initDateData();
      this.restoreAuthData();
    },
    methods: {
      // --- 日期选择器逻辑 (简化版, 仅示意) ---
      initDateData() {
        const date = /* @__PURE__ */ new Date();
        const year = date.getFullYear();
        for (let i = year; i <= year + 20; i++) {
          this.years.push(i);
        }
        for (let i = 1; i <= 12; i++) {
          this.months.push(i);
        }
        for (let i = 1; i <= 31; i++) {
          this.days.push(i);
        }
      },
      openDatePicker() {
      },
      onDateChange(e) {
        this.formData.expiryDate = e.detail.value;
      },
      // --- 数据持久化（防止返回上一级丢失） ---
      restoreAuthData() {
        try {
          const saved = uni.getStorageSync("recruit_auth_data");
          if (saved) {
            const d = JSON.parse(saved);
            this.formData.name = d.name || "";
            this.formData.idNumber = d.idNumber || "";
            this.formData.expiryDate = d.expiryDate || "";
            this.idCardFront = d.idCardFront || "";
            this.idCardBack = d.idCardBack || "";
            this.idCardFrontOssId = d.idCardFrontOssId || "";
            this.idCardBackOssId = d.idCardBackOssId || "";
          }
        } catch (e) {
          formatAppLog("error", "at pages/recruit/auth_logic.js:76", "恢复认证数据失败", e);
        }
      },
      saveAuthData() {
        try {
          uni.setStorageSync("recruit_auth_data", JSON.stringify({
            name: this.formData.name,
            idNumber: this.formData.idNumber,
            expiryDate: this.formData.expiryDate,
            idCardFront: this.idCardFront,
            idCardBack: this.idCardBack,
            idCardFrontOssId: this.idCardFrontOssId,
            idCardBackOssId: this.idCardBackOssId
          }));
        } catch (e) {
          formatAppLog("error", "at pages/recruit/auth_logic.js:91", "保存认证数据失败", e);
        }
      },
      // --- 图片上传（选择后自动上传到OSS） ---
      chooseImage(side) {
        uni.chooseImage({
          count: 1,
          sizeType: ["compressed"],
          sourceType: ["album", "camera"],
          success: async (res) => {
            const tempPath = res.tempFilePaths[0];
            if (side === "front") {
              this.idCardFront = tempPath;
            } else {
              this.idCardBack = tempPath;
            }
            try {
              uni.showLoading({ title: "上传中..." });
              const uploadRes = await uploadFile(tempPath);
              if (side === "front") {
                this.idCardFrontOssId = uploadRes.data.ossId;
              } else {
                this.idCardBackOssId = uploadRes.data.ossId;
              }
              uni.hideLoading();
              this.saveAuthData();
            } catch (err) {
              uni.hideLoading();
              formatAppLog("error", "at pages/recruit/auth_logic.js:121", "上传身份证图片失败:", err);
            }
          }
        });
      },
      // --- 提交 ---
      goToQualifications() {
        this.saveAuthData();
        try {
          const stored = uni.getStorageSync("recruit_form_data");
          if (stored) {
            const data = JSON.parse(stored);
            data.realName = this.formData.name;
            data.idNumber = this.formData.idNumber;
            data.expiryDate = this.formData.expiryDate;
            data.idCardFrontOssId = this.idCardFrontOssId;
            data.idCardBackOssId = this.idCardBackOssId;
            uni.setStorageSync("recruit_form_data", JSON.stringify(data));
          }
        } catch (e) {
          formatAppLog("error", "at pages/recruit/auth_logic.js:158", "保存认证数据失败", e);
        }
        const services = JSON.stringify(this.serviceType);
        uni.navigateTo({
          url: `/pages/recruit/qualifications?services=${services}`
        });
      }
    }
  };
  const _sfc_main$y = logic$6;
  function _sfc_render$x(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "auth-container" }, [
      vue.createElementVNode("view", { class: "top-tip" }, "请确保身份信息的准确，以免影响后续履约费用结算。"),
      vue.createElementVNode("view", { class: "form-card" }, [
        vue.createElementVNode("view", { class: "form-item" }, [
          vue.createElementVNode("text", { class: "label" }, "证件类型"),
          vue.createElementVNode("view", { class: "read-only-text" }, "居民身份证")
        ]),
        vue.createElementVNode("view", { class: "form-item" }, [
          vue.createElementVNode("text", { class: "label" }, "真实姓名"),
          vue.createElementVNode("view", { class: "gray-input-box" }, [
            vue.withDirectives(vue.createElementVNode(
              "input",
              {
                class: "input-area",
                type: "text",
                "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => _ctx.formData.name = $event),
                placeholder: "证件姓名",
                "placeholder-class": "input-placeholder"
              },
              null,
              512
              /* NEED_PATCH */
            ), [
              [vue.vModelText, _ctx.formData.name]
            ])
          ])
        ]),
        vue.createElementVNode("view", { class: "form-item" }, [
          vue.createElementVNode("text", { class: "label" }, "证件号码"),
          vue.createElementVNode("view", { class: "gray-input-box" }, [
            vue.withDirectives(vue.createElementVNode(
              "input",
              {
                class: "input-area",
                type: "idcard",
                "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => _ctx.formData.idNumber = $event),
                placeholder: "身份证号",
                "placeholder-class": "input-placeholder"
              },
              null,
              512
              /* NEED_PATCH */
            ), [
              [vue.vModelText, _ctx.formData.idNumber]
            ])
          ])
        ]),
        vue.createElementVNode("view", { class: "form-item" }, [
          vue.createElementVNode("text", { class: "label" }, "有效日期"),
          vue.createElementVNode("view", { class: "gray-input-box" }, [
            vue.createElementVNode(
              "picker",
              {
                mode: "date",
                onChange: _cache[2] || (_cache[2] = (...args) => _ctx.onDateChange && _ctx.onDateChange(...args)),
                style: { "width": "100%" }
              },
              [
                vue.createElementVNode(
                  "view",
                  {
                    class: vue.normalizeClass(["input-area", { "input-placeholder": !_ctx.formData.expiryDate }])
                  },
                  vue.toDisplayString(_ctx.formData.expiryDate || "选择有效结束期限"),
                  3
                  /* TEXT, CLASS */
                )
              ],
              32
              /* NEED_HYDRATION */
            ),
            (vue.openBlock(), vue.createElementBlock("svg", {
              class: "arrow-right",
              viewBox: "0 0 1024 1024",
              version: "1.1",
              xmlns: "http://www.w3.org/2000/svg"
            }, [
              vue.createElementVNode("path", {
                d: "M340.864 149.312a30.592 30.592 0 0 0 0 42.752L652.736 512 340.864 831.872a30.592 30.592 0 0 0 0 42.752 29.12 29.12 0 0 0 41.728 0L714.24 534.336a32 32 0 0 0 0-45.056L382.592 149.312a29.12 29.12 0 0 0-41.728 0z",
                fill: "#CCCCCC"
              })
            ]))
          ])
        ])
      ]),
      vue.createElementVNode("view", { class: "upload-card" }, [
        vue.createElementVNode("view", {
          class: "upload-box",
          onClick: _cache[3] || (_cache[3] = ($event) => _ctx.chooseImage("front"))
        }, [
          _ctx.idCardFront ? (vue.openBlock(), vue.createElementBlock("image", {
            key: 0,
            src: _ctx.idCardFront,
            class: "preview-img",
            mode: "aspectFill"
          }, null, 8, ["src"])) : (vue.openBlock(), vue.createElementBlock(
            vue.Fragment,
            { key: 1 },
            [
              (vue.openBlock(), vue.createElementBlock("svg", {
                class: "camera-icon",
                viewBox: "0 0 24 24",
                fill: "none",
                xmlns: "http://www.w3.org/2000/svg"
              }, [
                vue.createElementVNode("path", {
                  d: "M12 12C14.7614 12 17 9.76142 17 7C17 4.23858 14.7614 2 12 2C9.23858 2 7 4.23858 7 7C7 9.76142 9.23858 12 12 12Z",
                  fill: "#E0E0E0"
                }),
                vue.createElementVNode("circle", {
                  cx: "12",
                  cy: "12",
                  r: "3",
                  stroke: "#CCCCCC",
                  "stroke-width": "2"
                }),
                vue.createElementVNode("path", {
                  d: "M20 6H17.82L16.4 4.47C15.96 4 15.34 3.73 14.68 3.73H9.32C8.66 3.73 8.04 4 7.6 4.47L6.18 6H4C2.9 6 2 6.9 2 8V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V8C22 6.9 21.1 6 20 6ZM12 17C9.24 17 7 14.76 7 12C7 9.24 9.24 7 12 7C14.76 7 17 9.24 17 12C17 14.76 14.76 17 12 17Z",
                  fill: "#CCCCCC"
                })
              ])),
              vue.createElementVNode("text", { class: "upload-text" }, "点击上传")
            ],
            64
            /* STABLE_FRAGMENT */
          ))
        ]),
        vue.createElementVNode("text", { class: "card-label" }, "证件带照片面")
      ]),
      vue.createElementVNode("view", { class: "upload-card" }, [
        vue.createElementVNode("view", {
          class: "upload-box",
          onClick: _cache[4] || (_cache[4] = ($event) => _ctx.chooseImage("back"))
        }, [
          _ctx.idCardBack ? (vue.openBlock(), vue.createElementBlock("image", {
            key: 0,
            src: _ctx.idCardBack,
            class: "preview-img",
            mode: "aspectFill"
          }, null, 8, ["src"])) : (vue.openBlock(), vue.createElementBlock(
            vue.Fragment,
            { key: 1 },
            [
              (vue.openBlock(), vue.createElementBlock("svg", {
                class: "camera-icon",
                viewBox: "0 0 24 24",
                fill: "none",
                xmlns: "http://www.w3.org/2000/svg"
              }, [
                vue.createElementVNode("path", {
                  d: "M20 6H17.82L16.4 4.47C15.96 4 15.34 3.73 14.68 3.73H9.32C8.66 3.73 8.04 4 7.6 4.47L6.18 6H4C2.9 6 2 6.9 2 8V18C2 19.1 2.9 20 4 20H20C21.1 20 22 19.1 22 18V8C22 6.9 21.1 6 20 6ZM12 17C9.24 17 7 14.76 7 12C7 9.24 9.24 7 12 7C14.76 7 17 9.24 17 12C17 14.76 14.76 17 12 17Z",
                  fill: "#CCCCCC"
                })
              ])),
              vue.createElementVNode("text", { class: "upload-text" }, "点击上传")
            ],
            64
            /* STABLE_FRAGMENT */
          ))
        ]),
        vue.createElementVNode("text", { class: "card-label" }, "证件国徽面")
      ]),
      vue.createElementVNode("view", { class: "footer-btn-area" }, [
        vue.createElementVNode("button", {
          class: "next-btn",
          onClick: _cache[5] || (_cache[5] = (...args) => _ctx.goToQualifications && _ctx.goToQualifications(...args))
        }, "下一步，完善资质")
      ])
    ]);
  }
  const PagesRecruitAuth = /* @__PURE__ */ _export_sfc(_sfc_main$y, [["render", _sfc_render$x], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/recruit/auth.vue"]]);
  const logic$5 = {
    data() {
      return {
        serviceTypes: [],
        // 从上一页传递过来的服务类型列表
        qualifications: {},
        // 存储本地预览路径 { '宠物接送': ['path1', ...], ... }
        qualOssIds: {}
        // 存储OSS ID { '宠物接送': ['id1', ...], ... }
      };
    },
    onLoad(options) {
      if (options.services) {
        try {
          this.serviceTypes = JSON.parse(options.services);
          this.serviceTypes.forEach((type) => {
            this.qualifications[type] = [];
            this.qualOssIds[type] = [];
          });
        } catch (e) {
          formatAppLog("error", "at pages/recruit/qualifications_logic.js:21", "Parse services failed", e);
        }
      }
    },
    methods: {
      chooseImage(serviceName) {
        uni.chooseImage({
          count: 9,
          sizeType: ["compressed"],
          sourceType: ["album", "camera"],
          success: async (res) => {
            if (!this.qualifications[serviceName]) {
              this.qualifications[serviceName] = [];
              this.qualOssIds[serviceName] = [];
            }
            for (const tempPath of res.tempFilePaths) {
              this.qualifications[serviceName].push(tempPath);
              this.$forceUpdate();
              try {
                const uploadRes = await uploadFile(tempPath);
                this.qualOssIds[serviceName].push(uploadRes.data.ossId);
              } catch (err) {
                formatAppLog("error", "at pages/recruit/qualifications_logic.js:44", "上传资质图片失败:", err);
              }
            }
          }
        });
      },
      deleteImage(serviceName, index) {
        this.qualifications[serviceName].splice(index, 1);
        if (this.qualOssIds[serviceName]) {
          this.qualOssIds[serviceName].splice(index, 1);
        }
        this.$forceUpdate();
      },
      goBackToForm() {
        const pages = getCurrentPages();
        if (pages.length > 2) {
          uni.navigateBack({
            delta: 2
          });
        } else {
          uni.reLaunch({
            url: "/pages/recruit/form"
          });
        }
      },
      async submit() {
        let recruitData = {};
        try {
          const stored = uni.getStorageSync("recruit_form_data");
          if (stored) {
            recruitData = JSON.parse(stored);
          }
        } catch (e) {
          formatAppLog("error", "at pages/recruit/qualifications_logic.js:80", "读取招募表单数据失败", e);
        }
        const allQualOssIds = [];
        Object.values(this.qualOssIds).forEach((ids) => {
          allQualOssIds.push(...ids);
        });
        const auditData = {
          name: recruitData.name || "",
          phone: recruitData.mobile || "",
          password: recruitData.password || "",
          gender: recruitData.gender === 1 ? "0" : "1",
          birthday: recruitData.birthday || "",
          serviceTypes: JSON.stringify(recruitData.serviceType || []),
          city: recruitData.city || "",
          stationId: recruitData.stationId || null,
          realName: recruitData.realName || "",
          idCard: recruitData.idNumber || "",
          idValidDate: recruitData.expiryDate || "",
          idCardFront: recruitData.idCardFrontOssId || null,
          idCardBack: recruitData.idCardBackOssId || null,
          qualifications: JSON.stringify(allQualOssIds)
        };
        uni.showLoading({ title: "提交中..." });
        try {
          await submitAudit(auditData);
          uni.hideLoading();
          uni.reLaunch({
            url: "/pages/recruit/success"
          });
        } catch (err) {
          uni.hideLoading();
          formatAppLog("error", "at pages/recruit/qualifications_logic.js:116", "提交申请失败:", err);
        }
      }
    }
  };
  const _sfc_main$x = logic$5;
  function _sfc_render$w(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "qual-container" }, [
      vue.createElementVNode("view", { class: "top-tip" }, "根据国家政策要求，请尽快完成实名认证与健康认证，否则无法开展配送业务。我们承诺将严格保管好您的个人信息。"),
      _ctx.serviceTypes.length === 0 ? (vue.openBlock(), vue.createElementBlock("view", {
        key: 0,
        class: "empty-state"
      }, [
        vue.createElementVNode("text", { class: "empty-tip" }, "请返回第一步选择服务类型"),
        vue.createElementVNode("button", {
          class: "back-btn",
          onClick: _cache[0] || (_cache[0] = (...args) => _ctx.goBackToForm && _ctx.goBackToForm(...args))
        }, "返回选择")
      ])) : vue.createCommentVNode("v-if", true),
      (vue.openBlock(true), vue.createElementBlock(
        vue.Fragment,
        null,
        vue.renderList(_ctx.serviceTypes, (type, index) => {
          return vue.openBlock(), vue.createElementBlock("view", {
            class: "qual-card",
            key: index
          }, [
            vue.createElementVNode(
              "view",
              { class: "card-title" },
              vue.toDisplayString(type) + "服务资质",
              1
              /* TEXT */
            ),
            vue.createElementVNode("view", { class: "upload-wrapper" }, [
              (vue.openBlock(true), vue.createElementBlock(
                vue.Fragment,
                null,
                vue.renderList(_ctx.qualifications[type], (img, imgIndex) => {
                  return vue.openBlock(), vue.createElementBlock("view", {
                    class: "img-item",
                    key: imgIndex
                  }, [
                    vue.createElementVNode("image", {
                      src: img,
                      class: "preview-img",
                      mode: "aspectFill",
                      onClick: ($event) => _ctx.previewImage(type, imgIndex)
                    }, null, 8, ["src", "onClick"]),
                    vue.createElementVNode("view", {
                      class: "delete-btn",
                      onClick: vue.withModifiers(($event) => _ctx.deleteImage(type, imgIndex), ["stop"])
                    }, "×", 8, ["onClick"])
                  ]);
                }),
                128
                /* KEYED_FRAGMENT */
              )),
              vue.createElementVNode("view", {
                class: "upload-box",
                onClick: ($event) => _ctx.chooseImage(type)
              }, [
                vue.createElementVNode("text", { class: "plus-icon" }, "+"),
                vue.createElementVNode("text", { class: "upload-text" }, "上传")
              ], 8, ["onClick"])
            ])
          ]);
        }),
        128
        /* KEYED_FRAGMENT */
      )),
      vue.createElementVNode("view", { class: "footer-actions" }, [
        vue.createElementVNode("button", {
          class: "submit-btn",
          onClick: _cache[1] || (_cache[1] = (...args) => _ctx.submit && _ctx.submit(...args))
        }, "立即提交")
      ])
    ]);
  }
  const PagesRecruitQualifications = /* @__PURE__ */ _export_sfc(_sfc_main$x, [["render", _sfc_render$w], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/recruit/qualifications.vue"]]);
  const logic$4 = {
    data() {
      return {
        station: "民治街道第一站",
        name: "张三哥",
        phone: "+8613612345678"
      };
    },
    methods: {
      goHome() {
        uni.reLaunch({
          url: "/pages/login/login"
        });
      }
    }
  };
  const _sfc_main$w = logic$4;
  function _sfc_render$v(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "success-container" }, [
      vue.createElementVNode("view", { class: "icon-area" }, [
        (vue.openBlock(), vue.createElementBlock("svg", {
          class: "success-icon",
          viewBox: "0 0 1024 1024",
          version: "1.1",
          xmlns: "http://www.w3.org/2000/svg"
        }, [
          vue.createElementVNode("path", {
            d: "M512 0C229.23 0 0 229.23 0 512s229.23 512 512 512 512-229.23 512-512S794.77 0 512 0z m0 960C264.58 960 64 759.42 64 512S264.58 64 512 64s448 200.58 448 448-200.58 448-448 448z",
            fill: "#64D01D"
          }),
          vue.createElementVNode("path", {
            d: "M743.08 335.78c-12.23-12.24-32.07-12.24-44.3 0L426.6 607.96 325.22 506.58c-12.24-12.24-32.07-12.24-44.3 0-12.24 12.24-12.24 32.07 0 44.3l124.58 124.58c6.12 6.12 14.14 9.17 22.15 9.17s16.03-3.05 22.15-9.17L743.08 380.08c12.24-12.24 12.24-32.07 0-44.3z",
            fill: "#64D01D"
          })
        ])),
        vue.createElementVNode("text", { class: "main-title" }, "提交成功")
      ]),
      vue.createElementVNode("text", { class: "sub-tip" }, "请保持手机畅通，等待平台工作人员与您联系"),
      vue.createElementVNode("view", { class: "info-card" }, [
        vue.createElementVNode("view", { class: "info-item" }, [
          vue.createElementVNode("text", { class: "label" }, "服务站点："),
          vue.createElementVNode(
            "text",
            { class: "value" },
            vue.toDisplayString(_ctx.station),
            1
            /* TEXT */
          )
        ]),
        vue.createElementVNode("view", { class: "info-item" }, [
          vue.createElementVNode("text", { class: "label" }, "报 名 人 ："),
          vue.createElementVNode(
            "text",
            { class: "value" },
            vue.toDisplayString(_ctx.name),
            1
            /* TEXT */
          )
        ]),
        vue.createElementVNode("view", { class: "info-item" }, [
          vue.createElementVNode("text", { class: "label" }, "联系手机："),
          vue.createElementVNode(
            "text",
            { class: "value" },
            vue.toDisplayString(_ctx.phone),
            1
            /* TEXT */
          )
        ])
      ]),
      vue.createElementVNode("view", {
        class: "footer-btn",
        onClick: _cache[0] || (_cache[0] = (...args) => _ctx.goHome && _ctx.goHome(...args))
      }, "我知道了")
    ]);
  }
  const PagesRecruitSuccess = /* @__PURE__ */ _export_sfc(_sfc_main$w, [["render", _sfc_render$v], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/recruit/success.vue"]]);
  const _sfc_main$v = {
    data() {
      return {
        mobile: "",
        code: "",
        countDown: 0,
        timer: null
      };
    },
    computed: {
      mobileMask() {
        if (!this.mobile)
          return "";
        return this.mobile.replace(/(\d{3})\d{4}(\d{4})/, "$1****$2");
      }
    },
    onLoad(options) {
      if (options.mobile) {
        this.mobile = options.mobile;
      } else {
        this.mobile = "13412346783";
      }
    },
    methods: {
      getVerifyCode() {
        if (this.countDown > 0)
          return;
        this.countDown = 60;
        this.timer = setInterval(() => {
          this.countDown--;
          if (this.countDown <= 0) {
            clearInterval(this.timer);
          }
        }, 1e3);
        uni.showToast({ title: "验证码已发送", icon: "none" });
      },
      nextStep() {
        if (!this.code) {
          uni.showToast({ title: "请输入验证码", icon: "none" });
          return;
        }
        uni.navigateTo({
          url: "/pages/login/reset-pwd-set"
        });
      }
    }
  };
  function _sfc_render$u(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "reset-container" }, [
      vue.createElementVNode("view", { class: "content" }, [
        vue.createElementVNode(
          "view",
          { class: "tip-text" },
          "请输入 +86 " + vue.toDisplayString($options.mobileMask) + " 收到的短信验证码，进行验证~",
          1
          /* TEXT */
        ),
        vue.createElementVNode("view", { class: "input-group" }, [
          vue.createElementVNode("text", { class: "label" }, "验证码"),
          vue.createElementVNode("view", { class: "input-wrapper" }, [
            vue.withDirectives(vue.createElementVNode(
              "input",
              {
                class: "code-input",
                type: "number",
                maxlength: "6",
                "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.code = $event)
              },
              null,
              512
              /* NEED_PATCH */
            ), [
              [vue.vModelText, $data.code]
            ]),
            vue.createElementVNode("view", {
              class: "get-code-btn",
              onClick: _cache[1] || (_cache[1] = (...args) => $options.getVerifyCode && $options.getVerifyCode(...args))
            }, [
              vue.createElementVNode(
                "text",
                { class: "btn-text" },
                vue.toDisplayString($data.countDown > 0 ? `${$data.countDown}s` : "获取验证码"),
                1
                /* TEXT */
              )
            ])
          ])
        ]),
        vue.createElementVNode("button", {
          class: "next-btn",
          onClick: _cache[2] || (_cache[2] = (...args) => $options.nextStep && $options.nextStep(...args))
        }, "下一步")
      ])
    ]);
  }
  const PagesLoginResetPwdVerify = /* @__PURE__ */ _export_sfc(_sfc_main$v, [["render", _sfc_render$u], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/login/reset-pwd-verify.vue"]]);
  const _sfc_main$u = {
    data() {
      return {
        pwd1: "",
        pwd2: ""
      };
    },
    methods: {
      confirmReset() {
        if (!this.pwd1 || !this.pwd2) {
          uni.showToast({ title: "请输入密码", icon: "none" });
          return;
        }
        if (this.pwd1 !== this.pwd2) {
          uni.showToast({ title: "两次密码不一致", icon: "none" });
          return;
        }
        uni.showToast({ title: "重置成功", icon: "success" });
        setTimeout(() => {
          uni.navigateBack({
            delta: 2
            // 返回到登录页
          });
        }, 1500);
      }
    }
  };
  function _sfc_render$t(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "reset-container" }, [
      vue.createElementVNode("view", { class: "content" }, [
        vue.createElementVNode("view", { class: "tip-text" }, "请输入新密码，并重新登录验证"),
        vue.createElementVNode("view", { class: "input-form" }, [
          vue.createElementVNode("view", { class: "input-row" }, [
            vue.withDirectives(vue.createElementVNode(
              "input",
              {
                class: "pwd-input",
                type: "text",
                password: "",
                placeholder: "限12-20位字母和数字组合",
                "placeholder-style": "color:#ccc",
                "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => $data.pwd1 = $event)
              },
              null,
              512
              /* NEED_PATCH */
            ), [
              [vue.vModelText, $data.pwd1]
            ])
          ]),
          vue.createElementVNode("view", { class: "divider" }),
          vue.createElementVNode("view", { class: "input-row" }, [
            vue.withDirectives(vue.createElementVNode(
              "input",
              {
                class: "pwd-input",
                type: "text",
                password: "",
                placeholder: "限12-20位字母和数字组合",
                "placeholder-style": "color:#ccc",
                "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => $data.pwd2 = $event)
              },
              null,
              512
              /* NEED_PATCH */
            ), [
              [vue.vModelText, $data.pwd2]
            ])
          ]),
          vue.createElementVNode("view", { class: "divider" })
        ]),
        vue.createElementVNode("button", {
          class: "confirm-btn",
          onClick: _cache[2] || (_cache[2] = (...args) => $options.confirmReset && $options.confirmReset(...args))
        }, "确定")
      ])
    ]);
  }
  const PagesLoginResetPwdSet = /* @__PURE__ */ _export_sfc(_sfc_main$u, [["render", _sfc_render$t], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/login/reset-pwd-set.vue"]]);
  function getServiceList() {
    return request({
      url: "/service/list/listOnTaskHall",
      method: "GET"
    });
  }
  const logic$3 = {
    data() {
      return {
        taskList: [],
        currentFilter: "default",
        // default, distance, time
        filterCondition: "筛选条件",
        sortDistance: "asc",
        // asc, desc
        sortTime: "asc",
        scrollTop: 0,
        // Track scroll position
        isFilterShow: false,
        tempFilter: {
          service: null,
          distance: "全部",
          amount: "全部"
        },
        activeFilter: {
          service: null,
          distance: "全部",
          amount: "全部"
        },
        workStatus: "working",
        // working | resting
        showConfirmModal: false,
        showPetModal: false,
        currentPetInfo: {},
        showRejectModal: false,
        rejectReason: "",
        currentOrder: null,
        showAcceptConfirmModal: false,
        showNavModal: false,
        navTargetItem: null,
        navTargetPointType: "",
        profile: null,
        profileLoading: false,
        serviceList: [],
        orderStats: {
          total: 0,
          reject: 0,
          award: 0,
          punishment: 0
        }
      };
    },
    onPageScroll(e) {
      this.scrollTop = e.scrollTop;
    },
    onLoad() {
      this.checkWorkStatus();
      this.loadServiceList();
      this.loadTaskList();
    },
    onShow() {
      this.checkWorkStatus();
      if (isLoggedIn()) {
        this.loadProfile();
        this.loadOrderStats();
      }
    },
    methods: {
      async loadProfile() {
        if (this.profileLoading)
          return;
        this.profileLoading = true;
        try {
          const res = await getMyProfile();
          this.profile = res.data || null;
        } catch (err) {
          formatAppLog("error", "at pages/home/logic.js:71", "获取个人信息失败:", err);
        } finally {
          this.profileLoading = false;
        }
      },
      async loadServiceList() {
        try {
          const res = await getServiceList();
          this.serviceList = res.data || [];
        } catch (err) {
          formatAppLog("error", "at pages/home/logic.js:81", "获取服务类型失败:", err);
        }
      },
      async loadOrderStats() {
        try {
          const res = await getOrderCount();
          this.orderStats = res.data || { total: 0, reject: 0, award: 0, punishment: 0 };
        } catch (err) {
          formatAppLog("error", "at pages/home/logic.js:89", "获取订单统计失败:", err);
        }
      },
      checkWorkStatus() {
        const status = uni.getStorageSync("workStatus");
        if (status) {
          this.workStatus = status;
        } else {
          this.workStatus = "working";
          uni.setStorageSync("workStatus", "working");
        }
      },
      toggleFilter() {
        if (this.workStatus === "resting")
          return;
        this.isFilterShow = !this.isFilterShow;
      },
      goToWorkStatus() {
        uni.navigateTo({
          url: "/pages/home/work-status"
        });
      },
      startWork() {
        this.showConfirmModal = true;
      },
      confirmStartWork() {
        this.workStatus = "working";
        uni.setStorageSync("workStatus", "working");
        this.loadTaskList();
        this.showConfirmModal = false;
        uni.showToast({ title: "已开始接单", icon: "success" });
      },
      closeConfirmModal() {
        this.showConfirmModal = false;
      },
      showPetProfile(item) {
        this.currentPetInfo = item;
        this.showPetModal = true;
      },
      closePetProfile() {
        this.showPetModal = false;
      },
      openRejectModal(item) {
        this.currentOrder = item;
        this.rejectReason = "";
        this.showRejectModal = true;
      },
      closeRejectModal() {
        this.showRejectModal = false;
        this.currentOrder = null;
      },
      confirmReject() {
        if (!this.rejectReason.trim()) {
          uni.showToast({ title: "请输入拒绝理由", icon: "none" });
          return;
        }
        uni.showToast({ title: "已拒绝接单", icon: "success" });
        this.showRejectModal = false;
      },
      openAcceptModal(item) {
        this.currentOrder = item;
        this.showAcceptConfirmModal = true;
      },
      closeAcceptModal() {
        this.showAcceptConfirmModal = false;
        this.currentOrder = null;
      },
      async confirmAccept() {
        var _a;
        if (!((_a = this.currentOrder) == null ? void 0 : _a.id))
          return;
        try {
          await acceptOrder(this.currentOrder.id);
          uni.showToast({ title: "接单成功", icon: "success" });
          this.showAcceptConfirmModal = false;
          this.currentOrder = null;
          this.loadTaskList();
          this.loadProfile();
        } catch (err) {
          formatAppLog("error", "at pages/home/logic.js:167", "接单失败:", err);
          uni.showToast({ title: "接单失败", icon: "none" });
        }
      },
      openNavigation(item, pointType) {
        this.navTargetItem = item;
        this.navTargetPointType = pointType;
        this.showNavModal = true;
      },
      closeNavModal() {
        this.showNavModal = false;
      },
      chooseMap(mapType) {
        let item = this.navTargetItem;
        let pointType = this.navTargetPointType;
        let name = pointType === "start" ? item.startLocation : item.endLocation;
        let address = pointType === "start" ? item.startAddress : item.endAddress;
        this.showNavModal = false;
        uni.openLocation({
          latitude: 30.52,
          // Mock lat
          longitude: 114.31,
          // Mock lng
          name: name || "目的地",
          address: address || "默认地址",
          success: function() {
            formatAppLog("log", "at pages/home/logic.js:193", "打开导航成功: " + mapType);
          }
        });
      },
      selectService(type) {
        this.tempFilter.service = type;
      },
      selectDistance(type) {
        this.tempFilter.distance = type;
      },
      selectAmount(type) {
        this.tempFilter.amount = type;
      },
      resetFilter() {
        this.tempFilter = {
          service: null,
          distance: "全部",
          amount: "全部"
        };
      },
      confirmFilter() {
        this.activeFilter = { ...this.tempFilter };
        this.isFilterShow = false;
        uni.showToast({ title: "筛选已生效", icon: "none" });
      },
      closeFilter() {
        this.isFilterShow = false;
      },
      goToDetail(item) {
        formatAppLog("log", "at pages/home/logic.js:223", "Go to detail", item);
      },
      async loadTaskList() {
        try {
          const params = {
            service: this.activeFilter.service,
            minPrice: this.getMinPrice(),
            maxPrice: this.getMaxPrice(),
            pageNum: 1,
            pageSize: 20
          };
          const res = await getPendingOrders(params);
          this.taskList = (res.rows || []).map((item) => this.transformOrder(item));
        } catch (err) {
          formatAppLog("error", "at pages/home/logic.js:237", "获取订单列表失败:", err);
          uni.showToast({ title: "加载失败", icon: "none" });
          this.taskList = [];
        }
      },
      getMinPrice() {
        const amount = this.activeFilter.amount;
        if (amount === "100以下")
          return 0;
        if (amount === "100-200")
          return 1e4;
        if (amount === "200-500")
          return 2e4;
        if (amount === "500以上")
          return 5e4;
        return void 0;
      },
      getMaxPrice() {
        const amount = this.activeFilter.amount;
        if (amount === "100以下")
          return 1e4;
        if (amount === "100-200")
          return 2e4;
        if (amount === "200-500")
          return 5e4;
        return void 0;
      },
      transformOrder(item) {
        const service = this.serviceList.find((s) => s.id === item.service);
        const serviceText = (service == null ? void 0 : service.name) || "未知";
        const serviceIcon = (service == null ? void 0 : service.icon) || "";
        const mode = (service == null ? void 0 : service.mode) || 0;
        const isRoundTrip = mode === 1;
        return {
          id: item.id,
          type: isRoundTrip ? 1 : item.service,
          typeText: serviceText,
          typeIcon: serviceIcon,
          price: (item.price / 100).toFixed(2),
          timeLabel: isRoundTrip ? "取货时间" : "服务时间",
          time: item.serviceTime,
          petAvatar: "/static/dog.png",
          petName: item.petName,
          petBreed: item.breed,
          petGender: "M",
          petAge: "",
          petWeight: "",
          petPersonality: "",
          petHobby: "",
          petRemark: "",
          petTags: [],
          petLogs: [],
          startLocation: isRoundTrip ? item.fromAddress : "",
          startAddress: isRoundTrip ? item.fromAddress : "",
          startDistance: "0km",
          endLocation: item.customerName + " " + item.customerPhone,
          endAddress: item.toAddress,
          endDistance: "0km",
          serviceContent: "",
          remark: item.remark || ""
        };
      },
      setFilter(type) {
        this.currentFilter = type;
        if (type === "distance") {
          this.sortDistance = this.sortDistance === "asc" ? "desc" : "asc";
          uni.showToast({ title: `按距离${this.sortDistance === "asc" ? "升序" : "降序"}`, icon: "none" });
        } else if (type === "time") {
          this.sortTime = this.sortTime === "asc" ? "desc" : "asc";
          uni.showToast({ title: `按时间${this.sortTime === "asc" ? "升序" : "降序"}`, icon: "none" });
        }
      },
      showFilterDropdown() {
        this.toggleFilter();
      }
    }
  };
  const _imports_0$3 = "/static/icons/bell.svg";
  const _imports_3$2 = "/static/icons/nav_arrow.svg";
  const _imports_2$3 = "/static/empty-rest.png";
  const _sfc_main$t = {
    ...logic$3
  };
  function _sfc_render$s(_ctx, _cache, $props, $setup, $data, $options) {
    var _a, _b, _c;
    return vue.openBlock(), vue.createElementBlock(
      vue.Fragment,
      null,
      [
        vue.createElementVNode("view", { class: "container" }, [
          vue.createElementVNode(
            "view",
            {
              class: "custom-nav-bar",
              style: vue.normalizeStyle({ backgroundColor: _ctx.scrollTop > 20 ? "#fff" : "transparent" })
            },
            [
              vue.createElementVNode("text", { class: "nav-title" }, "任务中心")
            ],
            4
            /* STYLE */
          ),
          vue.createElementVNode("view", { class: "nav-bg" }, [
            vue.createElementVNode("view", { class: "bg-circle-left" }),
            vue.createElementVNode("view", { class: "bg-circle-right" })
          ]),
          vue.createElementVNode("view", { class: "header-section" }, [
            vue.createElementVNode("view", { class: "user-info" }, [
              vue.createElementVNode("image", {
                class: "avatar",
                src: ((_a = _ctx.profile) == null ? void 0 : _a.avatarUrl) || "/static/touxiang.png",
                mode: "aspectFill"
              }, null, 8, ["src"]),
              vue.createElementVNode("view", { class: "info-content" }, [
                vue.createElementVNode("view", { class: "top-row" }, [
                  vue.createElementVNode(
                    "text",
                    { class: "name" },
                    vue.toDisplayString(((_b = _ctx.profile) == null ? void 0 : _b.name) || "未登录"),
                    1
                    /* TEXT */
                  ),
                  vue.createElementVNode(
                    "view",
                    {
                      class: vue.normalizeClass(["status-pill", { "resting": _ctx.workStatus === "resting" }]),
                      onClick: _cache[0] || (_cache[0] = (...args) => _ctx.goToWorkStatus && _ctx.goToWorkStatus(...args))
                    },
                    [
                      vue.createElementVNode("view", { class: "status-dot-bg" }, [
                        _ctx.workStatus === "working" ? (vue.openBlock(), vue.createElementBlock("text", {
                          key: 0,
                          class: "check-mark"
                        }, "✔")) : (vue.openBlock(), vue.createElementBlock("text", {
                          key: 1,
                          class: "check-mark",
                          style: { "font-size": "16rpx", "line-height": "20rpx" }
                        }, "✕"))
                      ]),
                      vue.createElementVNode(
                        "text",
                        { class: "status-text" },
                        vue.toDisplayString(_ctx.workStatus === "working" ? "接单中" : "正在休息"),
                        1
                        /* TEXT */
                      ),
                      vue.createElementVNode("text", { class: "arrow-down" }, "▼")
                    ],
                    2
                    /* CLASS */
                  )
                ]),
                vue.createElementVNode("view", { class: "bottom-row" }, [
                  vue.createElementVNode(
                    "text",
                    { class: "city-label" },
                    "接单城市：" + vue.toDisplayString(((_c = _ctx.profile) == null ? void 0 : _c.cityName) || "暂无"),
                    1
                    /* TEXT */
                  ),
                  vue.createElementVNode("text", { class: "city-arrow" }, ">")
                ])
              ]),
              vue.createElementVNode("view", { class: "notification-box" }, [
                vue.createElementVNode("image", {
                  class: "bell-img",
                  src: _imports_0$3
                }),
                vue.createElementVNode("view", { class: "badge-count" }, "2")
              ])
            ]),
            vue.createElementVNode("view", { class: "stats-card" }, [
              vue.createElementVNode("view", { class: "stat-item" }, [
                vue.createElementVNode(
                  "text",
                  { class: "num" },
                  vue.toDisplayString(_ctx.orderStats.total),
                  1
                  /* TEXT */
                ),
                vue.createElementVNode("text", { class: "label" }, "累计接单")
              ]),
              vue.createElementVNode("view", { class: "divider" }),
              vue.createElementVNode("view", { class: "stat-item" }, [
                vue.createElementVNode(
                  "text",
                  { class: "num" },
                  vue.toDisplayString(_ctx.orderStats.reject),
                  1
                  /* TEXT */
                ),
                vue.createElementVNode("text", { class: "label" }, "拒接订单")
              ]),
              vue.createElementVNode("view", { class: "divider" }),
              vue.createElementVNode("view", { class: "stat-item" }, [
                vue.createElementVNode(
                  "text",
                  { class: "num" },
                  vue.toDisplayString(_ctx.orderStats.award),
                  1
                  /* TEXT */
                ),
                vue.createElementVNode("text", { class: "label" }, "奖励订单")
              ]),
              vue.createElementVNode("view", { class: "divider" }),
              vue.createElementVNode("view", { class: "stat-item" }, [
                vue.createElementVNode(
                  "text",
                  { class: "num" },
                  vue.toDisplayString(_ctx.orderStats.punishment),
                  1
                  /* TEXT */
                ),
                vue.createElementVNode("text", { class: "label" }, "惩罚订单")
              ])
            ])
          ]),
          vue.createElementVNode("view", { class: "task-header" }, [
            vue.createElementVNode(
              "view",
              {
                class: "header-inner",
                style: vue.normalizeStyle({ backgroundColor: _ctx.scrollTop > 300 || _ctx.isFilterShow ? "#fff" : "transparent" })
              },
              [
                vue.createElementVNode("view", { class: "left-title" }, [
                  vue.createElementVNode("view", { class: "orange-bar" }),
                  vue.createElementVNode("text", { class: "title" }, "任务大厅"),
                  vue.createElementVNode(
                    "text",
                    { class: "count" },
                    "- (" + vue.toDisplayString(_ctx.taskList.length) + "单)",
                    1
                    /* TEXT */
                  )
                ]),
                vue.createElementVNode("view", { class: "filter-options" }, [
                  vue.createElementVNode(
                    "view",
                    {
                      class: vue.normalizeClass(["filter-item", { active: _ctx.currentFilter === "distance" }]),
                      onClick: _cache[1] || (_cache[1] = ($event) => _ctx.setFilter("distance"))
                    },
                    [
                      vue.createTextVNode(" 距离 "),
                      vue.createElementVNode("view", { class: "sort-icon" }, [
                        vue.createElementVNode(
                          "view",
                          {
                            class: vue.normalizeClass(["up", { active: _ctx.currentFilter === "distance" && _ctx.sortDistance === "asc" }])
                          },
                          null,
                          2
                          /* CLASS */
                        ),
                        vue.createElementVNode(
                          "view",
                          {
                            class: vue.normalizeClass(["down", { active: _ctx.currentFilter === "distance" && _ctx.sortDistance === "desc" }])
                          },
                          null,
                          2
                          /* CLASS */
                        )
                      ])
                    ],
                    2
                    /* CLASS */
                  ),
                  vue.createElementVNode(
                    "view",
                    {
                      class: vue.normalizeClass(["filter-item", { active: _ctx.currentFilter === "time" }]),
                      onClick: _cache[2] || (_cache[2] = ($event) => _ctx.setFilter("time"))
                    },
                    [
                      vue.createTextVNode(" 时间 "),
                      vue.createElementVNode("view", { class: "sort-icon" }, [
                        vue.createElementVNode(
                          "view",
                          {
                            class: vue.normalizeClass(["up", { active: _ctx.currentFilter === "time" && _ctx.sortTime === "asc" }])
                          },
                          null,
                          2
                          /* CLASS */
                        ),
                        vue.createElementVNode(
                          "view",
                          {
                            class: vue.normalizeClass(["down", { active: _ctx.currentFilter === "time" && _ctx.sortTime === "desc" }])
                          },
                          null,
                          2
                          /* CLASS */
                        )
                      ])
                    ],
                    2
                    /* CLASS */
                  ),
                  vue.createElementVNode("view", {
                    class: "dropdown",
                    onClick: _cache[3] || (_cache[3] = (...args) => _ctx.showFilterDropdown && _ctx.showFilterDropdown(...args))
                  }, [
                    vue.createElementVNode("text", null, "筛选条件"),
                    vue.createElementVNode("text", { class: "arrow-down" }, "﹀")
                  ])
                ])
              ],
              4
              /* STYLE */
            ),
            _ctx.isFilterShow ? (vue.openBlock(), vue.createElementBlock("view", {
              key: 0,
              class: "filter-mask",
              onClick: _cache[4] || (_cache[4] = (...args) => _ctx.closeFilter && _ctx.closeFilter(...args))
            })) : vue.createCommentVNode("v-if", true),
            vue.createElementVNode(
              "view",
              {
                class: vue.normalizeClass(["filter-panel", { show: _ctx.isFilterShow }])
              },
              [
                vue.createElementVNode("view", { class: "filter-section" }, [
                  vue.createElementVNode("text", { class: "section-title" }, "服务类型"),
                  vue.createElementVNode("view", { class: "options-grid" }, [
                    vue.createElementVNode(
                      "view",
                      {
                        class: vue.normalizeClass(["option-btn", { active: _ctx.tempFilter.service === null }]),
                        onClick: _cache[5] || (_cache[5] = ($event) => _ctx.selectService(null))
                      },
                      "全部",
                      2
                      /* CLASS */
                    ),
                    (vue.openBlock(true), vue.createElementBlock(
                      vue.Fragment,
                      null,
                      vue.renderList(_ctx.serviceList, (item) => {
                        return vue.openBlock(), vue.createElementBlock("view", {
                          class: vue.normalizeClass(["option-btn", { active: _ctx.tempFilter.service === item.id }]),
                          key: item.id,
                          onClick: ($event) => _ctx.selectService(item.id)
                        }, vue.toDisplayString(item.name), 11, ["onClick"]);
                      }),
                      128
                      /* KEYED_FRAGMENT */
                    ))
                  ])
                ]),
                vue.createElementVNode("view", { class: "filter-section" }, [
                  vue.createElementVNode("text", { class: "section-title" }, "距离"),
                  vue.createElementVNode("view", { class: "options-grid" }, [
                    vue.createElementVNode(
                      "view",
                      {
                        class: vue.normalizeClass(["option-btn", { active: _ctx.tempFilter.distance === "全部" }]),
                        onClick: _cache[6] || (_cache[6] = ($event) => _ctx.selectDistance("全部"))
                      },
                      "全部",
                      2
                      /* CLASS */
                    ),
                    vue.createElementVNode(
                      "view",
                      {
                        class: vue.normalizeClass(["option-btn", { active: _ctx.tempFilter.distance === "2公里内" }]),
                        onClick: _cache[7] || (_cache[7] = ($event) => _ctx.selectDistance("2公里内"))
                      },
                      "2公里内",
                      2
                      /* CLASS */
                    ),
                    vue.createElementVNode(
                      "view",
                      {
                        class: vue.normalizeClass(["option-btn", { active: _ctx.tempFilter.distance === "5公里内" }]),
                        onClick: _cache[8] || (_cache[8] = ($event) => _ctx.selectDistance("5公里内"))
                      },
                      "5公里内",
                      2
                      /* CLASS */
                    ),
                    vue.createElementVNode(
                      "view",
                      {
                        class: vue.normalizeClass(["option-btn", { active: _ctx.tempFilter.distance === "10公里内" }]),
                        onClick: _cache[9] || (_cache[9] = ($event) => _ctx.selectDistance("10公里内"))
                      },
                      "10公里内",
                      2
                      /* CLASS */
                    ),
                    vue.createElementVNode(
                      "view",
                      {
                        class: vue.normalizeClass(["option-btn", { active: _ctx.tempFilter.distance === "20公里内" }]),
                        onClick: _cache[10] || (_cache[10] = ($event) => _ctx.selectDistance("20公里内"))
                      },
                      "20公里内",
                      2
                      /* CLASS */
                    ),
                    vue.createElementVNode(
                      "view",
                      {
                        class: vue.normalizeClass(["option-btn", { active: _ctx.tempFilter.distance === "50公里内" }]),
                        onClick: _cache[11] || (_cache[11] = ($event) => _ctx.selectDistance("50公里内"))
                      },
                      "50公里内",
                      2
                      /* CLASS */
                    )
                  ])
                ]),
                vue.createElementVNode("view", { class: "filter-section" }, [
                  vue.createElementVNode("text", { class: "section-title" }, "金额"),
                  vue.createElementVNode("view", { class: "options-grid" }, [
                    vue.createElementVNode(
                      "view",
                      {
                        class: vue.normalizeClass(["option-btn", { active: _ctx.tempFilter.amount === "全部" }]),
                        onClick: _cache[12] || (_cache[12] = ($event) => _ctx.selectAmount("全部"))
                      },
                      "全部",
                      2
                      /* CLASS */
                    ),
                    vue.createElementVNode(
                      "view",
                      {
                        class: vue.normalizeClass(["option-btn", { active: _ctx.tempFilter.amount === "100以下" }]),
                        onClick: _cache[13] || (_cache[13] = ($event) => _ctx.selectAmount("100以下"))
                      },
                      "100以下",
                      2
                      /* CLASS */
                    ),
                    vue.createElementVNode(
                      "view",
                      {
                        class: vue.normalizeClass(["option-btn", { active: _ctx.tempFilter.amount === "100-200" }]),
                        onClick: _cache[14] || (_cache[14] = ($event) => _ctx.selectAmount("100-200"))
                      },
                      "100-200",
                      2
                      /* CLASS */
                    ),
                    vue.createElementVNode(
                      "view",
                      {
                        class: vue.normalizeClass(["option-btn", { active: _ctx.tempFilter.amount === "200-500" }]),
                        onClick: _cache[15] || (_cache[15] = ($event) => _ctx.selectAmount("200-500"))
                      },
                      "200-500",
                      2
                      /* CLASS */
                    ),
                    vue.createElementVNode(
                      "view",
                      {
                        class: vue.normalizeClass(["option-btn", { active: _ctx.tempFilter.amount === "500以上" }]),
                        onClick: _cache[16] || (_cache[16] = ($event) => _ctx.selectAmount("500以上"))
                      },
                      "500以上",
                      2
                      /* CLASS */
                    )
                  ])
                ]),
                vue.createElementVNode("view", { class: "filter-actions" }, [
                  vue.createElementVNode("button", {
                    class: "action-btn reset",
                    onClick: _cache[17] || (_cache[17] = (...args) => _ctx.resetFilter && _ctx.resetFilter(...args))
                  }, "重置"),
                  vue.createElementVNode("button", {
                    class: "action-btn confirm",
                    onClick: _cache[18] || (_cache[18] = (...args) => _ctx.confirmFilter && _ctx.confirmFilter(...args))
                  }, "确认")
                ])
              ],
              2
              /* CLASS */
            )
          ]),
          _ctx.workStatus === "working" ? (vue.openBlock(), vue.createElementBlock("scroll-view", {
            key: 0,
            "scroll-y": "",
            class: "task-list"
          }, [
            (vue.openBlock(true), vue.createElementBlock(
              vue.Fragment,
              null,
              vue.renderList(_ctx.taskList, (item, index) => {
                return vue.openBlock(), vue.createElementBlock("view", {
                  class: "task-card",
                  key: index,
                  onClick: ($event) => _ctx.goToDetail(item)
                }, [
                  vue.createElementVNode("view", { class: "card-header" }, [
                    vue.createElementVNode("view", { class: "type-badge" }, [
                      vue.createElementVNode("image", {
                        class: "type-icon",
                        src: item.typeIcon
                      }, null, 8, ["src"]),
                      vue.createElementVNode(
                        "text",
                        { class: "type-text" },
                        vue.toDisplayString(item.typeText),
                        1
                        /* TEXT */
                      )
                    ]),
                    vue.createElementVNode(
                      "text",
                      { class: "price" },
                      "¥" + vue.toDisplayString(item.price),
                      1
                      /* TEXT */
                    )
                  ]),
                  vue.createElementVNode("view", { class: "card-body" }, [
                    vue.createElementVNode("view", { class: "time-row" }, [
                      vue.createElementVNode(
                        "text",
                        { class: "label" },
                        vue.toDisplayString(item.timeLabel) + "：",
                        1
                        /* TEXT */
                      ),
                      vue.createElementVNode(
                        "text",
                        { class: "value" },
                        vue.toDisplayString(item.time),
                        1
                        /* TEXT */
                      )
                    ]),
                    vue.createElementVNode("view", { class: "pet-card" }, [
                      vue.createElementVNode("image", {
                        class: "pet-avatar",
                        src: item.petAvatar,
                        mode: "aspectFill"
                      }, null, 8, ["src"]),
                      vue.createElementVNode("view", { class: "pet-info" }, [
                        vue.createElementVNode(
                          "text",
                          { class: "pet-name" },
                          vue.toDisplayString(item.petName),
                          1
                          /* TEXT */
                        ),
                        vue.createElementVNode(
                          "text",
                          { class: "pet-breed" },
                          "品种: " + vue.toDisplayString(item.petBreed),
                          1
                          /* TEXT */
                        )
                      ]),
                      vue.createElementVNode("view", {
                        class: "pet-profile-btn",
                        onClick: vue.withModifiers(($event) => _ctx.showPetProfile(item), ["stop"])
                      }, "宠物档案", 8, ["onClick"])
                    ]),
                    vue.createElementVNode("view", { class: "route-info" }, [
                      item.type === 1 ? (vue.openBlock(), vue.createElementBlock(
                        vue.Fragment,
                        { key: 0 },
                        [
                          vue.createElementVNode("view", {
                            class: "route-item",
                            onClick: vue.withModifiers(($event) => _ctx.openNavigation(item, "start"), ["stop"])
                          }, [
                            vue.createElementVNode("view", { class: "icon-circle start" }, "取"),
                            vue.createElementVNode("view", { class: "route-line-vertical" }),
                            vue.createElementVNode("view", { class: "address-box" }, [
                              vue.createElementVNode(
                                "text",
                                { class: "addr-title" },
                                vue.toDisplayString(item.startLocation),
                                1
                                /* TEXT */
                              ),
                              vue.createElementVNode(
                                "text",
                                { class: "addr-desc" },
                                vue.toDisplayString(item.startAddress),
                                1
                                /* TEXT */
                              )
                            ]),
                            vue.createElementVNode("view", { class: "distance-tag" }, [
                              vue.createElementVNode(
                                "text",
                                null,
                                vue.toDisplayString(item.startDistance),
                                1
                                /* TEXT */
                              ),
                              vue.createElementVNode("image", {
                                class: "nav-arrow",
                                src: _imports_3$2
                              })
                            ])
                          ], 8, ["onClick"]),
                          vue.createElementVNode("view", {
                            class: "route-item",
                            onClick: vue.withModifiers(($event) => _ctx.openNavigation(item, "end"), ["stop"])
                          }, [
                            vue.createElementVNode("view", { class: "icon-circle end" }, "送"),
                            vue.createElementVNode("view", { class: "address-box" }, [
                              vue.createElementVNode(
                                "text",
                                { class: "addr-title" },
                                vue.toDisplayString(item.endLocation),
                                1
                                /* TEXT */
                              ),
                              vue.createElementVNode(
                                "text",
                                { class: "addr-desc" },
                                vue.toDisplayString(item.endAddress),
                                1
                                /* TEXT */
                              )
                            ]),
                            vue.createElementVNode("view", { class: "distance-tag" }, [
                              vue.createElementVNode(
                                "text",
                                null,
                                vue.toDisplayString(item.endDistance),
                                1
                                /* TEXT */
                              ),
                              vue.createElementVNode("image", {
                                class: "nav-arrow",
                                src: _imports_3$2
                              })
                            ])
                          ], 8, ["onClick"])
                        ],
                        64
                        /* STABLE_FRAGMENT */
                      )) : (vue.openBlock(), vue.createElementBlock(
                        vue.Fragment,
                        { key: 1 },
                        [
                          vue.createElementVNode("view", {
                            class: "route-item",
                            onClick: vue.withModifiers(($event) => _ctx.openNavigation(item, "end"), ["stop"])
                          }, [
                            vue.createElementVNode("view", { class: "icon-circle service" }, "服"),
                            vue.createElementVNode("view", { class: "address-box" }, [
                              vue.createElementVNode(
                                "text",
                                { class: "addr-title" },
                                vue.toDisplayString(item.endLocation),
                                1
                                /* TEXT */
                              ),
                              vue.createElementVNode(
                                "text",
                                { class: "addr-desc" },
                                vue.toDisplayString(item.endAddress),
                                1
                                /* TEXT */
                              )
                            ]),
                            vue.createElementVNode("view", { class: "distance-tag" }, [
                              vue.createElementVNode(
                                "text",
                                null,
                                vue.toDisplayString(item.endDistance),
                                1
                                /* TEXT */
                              ),
                              vue.createElementVNode("image", {
                                class: "nav-arrow",
                                src: _imports_3$2
                              })
                            ])
                          ], 8, ["onClick"]),
                          item.serviceContent ? (vue.openBlock(), vue.createElementBlock("view", {
                            key: 0,
                            class: "service-content"
                          }, [
                            vue.createElementVNode("text", { class: "content-label" }, "服务内容:"),
                            vue.createElementVNode(
                              "text",
                              null,
                              vue.toDisplayString(item.serviceContent),
                              1
                              /* TEXT */
                            )
                          ])) : vue.createCommentVNode("v-if", true)
                        ],
                        64
                        /* STABLE_FRAGMENT */
                      ))
                    ]),
                    item.remark ? (vue.openBlock(), vue.createElementBlock("view", {
                      key: 0,
                      class: "remark-box"
                    }, [
                      vue.createElementVNode(
                        "text",
                        null,
                        "备注：" + vue.toDisplayString(item.remark),
                        1
                        /* TEXT */
                      )
                    ])) : vue.createCommentVNode("v-if", true)
                  ]),
                  vue.createElementVNode("view", { class: "action-btns" }, [
                    vue.createElementVNode("button", {
                      class: "btn reject",
                      onClick: vue.withModifiers(($event) => _ctx.openRejectModal(item), ["stop"])
                    }, "拒绝", 8, ["onClick"]),
                    vue.createElementVNode("button", {
                      class: "btn accept",
                      onClick: vue.withModifiers(($event) => _ctx.openAcceptModal(item), ["stop"])
                    }, "接单", 8, ["onClick"])
                  ])
                ], 8, ["onClick"]);
              }),
              128
              /* KEYED_FRAGMENT */
            )),
            vue.createElementVNode("view", { style: { "height": "120rpx" } })
          ])) : (vue.openBlock(), vue.createElementBlock("view", {
            key: 1,
            class: "empty-state"
          }, [
            vue.createElementVNode("image", {
              class: "empty-icon",
              src: _imports_2$3,
              mode: "aspectFit"
            }),
            vue.createElementVNode("text", { class: "empty-text" }, "当前处于休息中，暂时无法接单"),
            vue.createElementVNode("button", {
              class: "start-work-btn",
              onClick: _cache[19] || (_cache[19] = (...args) => _ctx.startWork && _ctx.startWork(...args))
            }, "开工接单")
          ])),
          _ctx.showConfirmModal ? (vue.openBlock(), vue.createElementBlock("view", {
            key: 2,
            class: "modal-mask"
          }, [
            vue.createElementVNode("view", { class: "custom-modal" }, [
              vue.createElementVNode("text", { class: "modal-title" }, "提示"),
              vue.createElementVNode("text", { class: "modal-content" }, "是否确定结束休息，开始接单?"),
              vue.createElementVNode("view", { class: "modal-btns" }, [
                vue.createElementVNode("button", {
                  class: "modal-btn cancel",
                  onClick: _cache[20] || (_cache[20] = (...args) => _ctx.closeConfirmModal && _ctx.closeConfirmModal(...args))
                }, "取消"),
                vue.createElementVNode("button", {
                  class: "modal-btn confirm",
                  onClick: _cache[21] || (_cache[21] = (...args) => _ctx.confirmStartWork && _ctx.confirmStartWork(...args))
                }, "确定")
              ])
            ])
          ])) : vue.createCommentVNode("v-if", true),
          _ctx.showPetModal ? (vue.openBlock(), vue.createElementBlock("view", {
            key: 3,
            class: "pet-modal-mask",
            onClick: _cache[25] || (_cache[25] = (...args) => _ctx.closePetProfile && _ctx.closePetProfile(...args))
          }, [
            vue.createElementVNode("view", {
              class: "pet-modal-content",
              onClick: _cache[24] || (_cache[24] = vue.withModifiers(() => {
              }, ["stop"]))
            }, [
              vue.createElementVNode("view", { class: "pet-modal-header" }, [
                vue.createElementVNode("text", { class: "pet-modal-title" }, "宠物档案"),
                vue.createElementVNode("view", {
                  class: "close-icon-btn",
                  onClick: _cache[22] || (_cache[22] = (...args) => _ctx.closePetProfile && _ctx.closePetProfile(...args))
                }, "×")
              ]),
              vue.createElementVNode("scroll-view", {
                "scroll-y": "",
                class: "pet-modal-scroll"
              }, [
                vue.createElementVNode("view", { class: "pet-base-info" }, [
                  vue.createElementVNode("image", {
                    class: "pm-avatar",
                    src: _ctx.currentPetInfo.petAvatar,
                    mode: "aspectFill"
                  }, null, 8, ["src"]),
                  vue.createElementVNode("view", { class: "pm-info-text" }, [
                    vue.createElementVNode("view", { class: "pm-name-row" }, [
                      vue.createElementVNode(
                        "text",
                        { class: "pm-name" },
                        vue.toDisplayString(_ctx.currentPetInfo.petName),
                        1
                        /* TEXT */
                      ),
                      _ctx.currentPetInfo.petGender === "M" ? (vue.openBlock(), vue.createElementBlock("view", {
                        key: 0,
                        class: "pm-gender"
                      }, [
                        vue.createElementVNode("text", { class: "gender-icon" }, "♂"),
                        vue.createElementVNode("text", null, "公")
                      ])) : _ctx.currentPetInfo.petGender === "F" ? (vue.openBlock(), vue.createElementBlock("view", {
                        key: 1,
                        class: "pm-gender female"
                      }, [
                        vue.createElementVNode("text", { class: "gender-icon" }, "♀"),
                        vue.createElementVNode("text", null, "母")
                      ])) : vue.createCommentVNode("v-if", true)
                    ]),
                    vue.createElementVNode(
                      "text",
                      { class: "pm-breed" },
                      "品种：" + vue.toDisplayString(_ctx.currentPetInfo.petBreed),
                      1
                      /* TEXT */
                    )
                  ])
                ]),
                vue.createElementVNode("view", { class: "pm-detail-grid" }, [
                  vue.createElementVNode("view", { class: "pm-grid-item half" }, [
                    vue.createElementVNode("text", { class: "pm-label" }, "年龄"),
                    vue.createElementVNode(
                      "text",
                      { class: "pm-val" },
                      vue.toDisplayString(_ctx.currentPetInfo.petAge || "未知"),
                      1
                      /* TEXT */
                    )
                  ]),
                  vue.createElementVNode("view", { class: "pm-grid-item half" }, [
                    vue.createElementVNode("text", { class: "pm-label" }, "体重"),
                    vue.createElementVNode(
                      "text",
                      { class: "pm-val" },
                      vue.toDisplayString(_ctx.currentPetInfo.petWeight || "未知"),
                      1
                      /* TEXT */
                    )
                  ]),
                  vue.createElementVNode("view", { class: "pm-grid-item full" }, [
                    vue.createElementVNode("text", { class: "pm-label" }, "性格"),
                    vue.createElementVNode(
                      "text",
                      { class: "pm-val" },
                      vue.toDisplayString(_ctx.currentPetInfo.petPersonality || "无"),
                      1
                      /* TEXT */
                    )
                  ]),
                  vue.createElementVNode("view", { class: "pm-grid-item full" }, [
                    vue.createElementVNode("text", { class: "pm-label" }, "爱好"),
                    vue.createElementVNode(
                      "text",
                      { class: "pm-val" },
                      vue.toDisplayString(_ctx.currentPetInfo.petHobby || "无"),
                      1
                      /* TEXT */
                    )
                  ]),
                  vue.createElementVNode("view", { class: "pm-grid-item full" }, [
                    vue.createElementVNode("text", { class: "pm-label" }, "备注"),
                    vue.createElementVNode(
                      "text",
                      { class: "pm-val" },
                      vue.toDisplayString(_ctx.currentPetInfo.petRemark || "无特殊过敏史"),
                      1
                      /* TEXT */
                    )
                  ])
                ]),
                _ctx.currentPetInfo.petTags && _ctx.currentPetInfo.petTags.length > 0 ? (vue.openBlock(), vue.createElementBlock("view", {
                  key: 0,
                  class: "pm-tags"
                }, [
                  (vue.openBlock(true), vue.createElementBlock(
                    vue.Fragment,
                    null,
                    vue.renderList(_ctx.currentPetInfo.petTags, (tag, index) => {
                      return vue.openBlock(), vue.createElementBlock(
                        "view",
                        {
                          class: "pm-tag",
                          key: index
                        },
                        vue.toDisplayString(tag),
                        1
                        /* TEXT */
                      );
                    }),
                    128
                    /* KEYED_FRAGMENT */
                  ))
                ])) : vue.createCommentVNode("v-if", true),
                vue.createElementVNode("view", { class: "pm-section-title" }, [
                  vue.createElementVNode("view", { class: "orange-bar" }),
                  vue.createElementVNode("text", null, "备注日志")
                ]),
                vue.createElementVNode("view", { class: "pm-log-list" }, [
                  (vue.openBlock(true), vue.createElementBlock(
                    vue.Fragment,
                    null,
                    vue.renderList(_ctx.currentPetInfo.petLogs, (log, lIndex) => {
                      return vue.openBlock(), vue.createElementBlock("view", {
                        class: "pm-log-item",
                        key: lIndex
                      }, [
                        vue.createElementVNode(
                          "text",
                          { class: "pm-log-date" },
                          vue.toDisplayString(log.date),
                          1
                          /* TEXT */
                        ),
                        vue.createElementVNode(
                          "text",
                          { class: "pm-log-text" },
                          vue.toDisplayString(log.content),
                          1
                          /* TEXT */
                        ),
                        vue.createElementVNode(
                          "text",
                          { class: "pm-log-recorder" },
                          vue.toDisplayString(log.recorder === "系统记录" ? "" : "记录人: ") + vue.toDisplayString(log.recorder),
                          1
                          /* TEXT */
                        )
                      ]);
                    }),
                    128
                    /* KEYED_FRAGMENT */
                  ))
                ]),
                vue.createElementVNode("view", { style: { "height": "40rpx" } }),
                vue.createElementVNode("button", {
                  class: "pm-bottom-close",
                  onClick: _cache[23] || (_cache[23] = (...args) => _ctx.closePetProfile && _ctx.closePetProfile(...args))
                }, "关闭"),
                vue.createElementVNode("view", { style: { "height": "20rpx" } })
              ])
            ])
          ])) : vue.createCommentVNode("v-if", true)
        ]),
        _ctx.showRejectModal ? (vue.openBlock(), vue.createElementBlock("view", {
          key: 0,
          class: "modal-mask"
        }, [
          vue.createElementVNode("view", { class: "custom-modal" }, [
            vue.createElementVNode("text", { class: "modal-title" }, "拒绝接单"),
            vue.withDirectives(vue.createElementVNode(
              "textarea",
              {
                class: "reject-textarea",
                "onUpdate:modelValue": _cache[26] || (_cache[26] = ($event) => _ctx.rejectReason = $event),
                placeholder: "请输入拒绝理由（必填）",
                maxlength: "100"
              },
              null,
              512
              /* NEED_PATCH */
            ), [
              [vue.vModelText, _ctx.rejectReason]
            ]),
            vue.createElementVNode("view", { class: "modal-btns mt-30" }, [
              vue.createElementVNode("button", {
                class: "modal-btn cancel",
                onClick: _cache[27] || (_cache[27] = (...args) => _ctx.closeRejectModal && _ctx.closeRejectModal(...args))
              }, "取消"),
              vue.createElementVNode("button", {
                class: "modal-btn confirm",
                onClick: _cache[28] || (_cache[28] = (...args) => _ctx.confirmReject && _ctx.confirmReject(...args))
              }, "提交")
            ])
          ])
        ])) : vue.createCommentVNode("v-if", true),
        _ctx.showAcceptConfirmModal ? (vue.openBlock(), vue.createElementBlock("view", {
          key: 1,
          class: "modal-mask"
        }, [
          vue.createElementVNode("view", { class: "custom-modal" }, [
            vue.createElementVNode("text", { class: "modal-title" }, "接单确认"),
            vue.createElementVNode("view", { class: "modal-content-box" }, [
              vue.createElementVNode("text", { class: "modal-content-main" }, "请确认是否接收此订单？"),
              vue.createElementVNode("text", { class: "modal-content-sub" }, "接单后请尽快通过电话联系用户")
            ]),
            vue.createElementVNode("view", { class: "modal-btns mt-30" }, [
              vue.createElementVNode("button", {
                class: "modal-btn cancel",
                onClick: _cache[29] || (_cache[29] = (...args) => _ctx.closeAcceptModal && _ctx.closeAcceptModal(...args))
              }, "再想想"),
              vue.createElementVNode("button", {
                class: "modal-btn confirm",
                onClick: _cache[30] || (_cache[30] = (...args) => _ctx.confirmAccept && _ctx.confirmAccept(...args))
              }, "确认接单")
            ])
          ])
        ])) : vue.createCommentVNode("v-if", true),
        _ctx.showNavModal ? (vue.openBlock(), vue.createElementBlock("view", {
          key: 2,
          class: "nav-modal-mask",
          onClick: _cache[36] || (_cache[36] = (...args) => _ctx.closeNavModal && _ctx.closeNavModal(...args))
        }, [
          vue.createElementVNode("view", {
            class: "nav-action-sheet",
            onClick: _cache[35] || (_cache[35] = vue.withModifiers(() => {
            }, ["stop"]))
          }, [
            vue.createElementVNode("view", { class: "nav-sheet-title" }, "选择地图进行导航"),
            vue.createElementVNode("view", {
              class: "nav-sheet-item",
              onClick: _cache[31] || (_cache[31] = ($event) => _ctx.chooseMap("高德"))
            }, "高德地图"),
            vue.createElementVNode("view", {
              class: "nav-sheet-item",
              onClick: _cache[32] || (_cache[32] = ($event) => _ctx.chooseMap("腾讯"))
            }, "腾讯地图"),
            vue.createElementVNode("view", {
              class: "nav-sheet-item",
              onClick: _cache[33] || (_cache[33] = ($event) => _ctx.chooseMap("百度"))
            }, "百度地图"),
            vue.createElementVNode("view", { class: "nav-sheet-gap" }),
            vue.createElementVNode("view", {
              class: "nav-sheet-item cancel",
              onClick: _cache[34] || (_cache[34] = (...args) => _ctx.closeNavModal && _ctx.closeNavModal(...args))
            }, "取消")
          ])
        ])) : vue.createCommentVNode("v-if", true)
      ],
      64
      /* STABLE_FRAGMENT */
    );
  }
  const PagesHomeIndex = /* @__PURE__ */ _export_sfc(_sfc_main$t, [["render", _sfc_render$s], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/home/index.vue"]]);
  const _sfc_main$s = {
    data() {
      return {
        status: "working"
        // working | resting
      };
    },
    onShow() {
      const savedStatus = uni.getStorageSync("workStatus");
      if (savedStatus) {
        this.status = savedStatus;
      }
    },
    methods: {
      toggleStatus() {
        if (this.status === "working") {
          this.status = "resting";
          uni.setStorageSync("workStatus", "resting");
        } else {
          this.status = "working";
          uni.setStorageSync("workStatus", "working");
        }
      }
    }
  };
  function _sfc_render$r(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode("view", { class: "signboard-container" }, [
        vue.createElementVNode("view", { class: "rope" }),
        vue.createElementVNode("view", { class: "nail" }),
        vue.createElementVNode(
          "view",
          {
            class: vue.normalizeClass(["board", { "resting": $data.status === "resting" }])
          },
          [
            vue.createElementVNode("view", { class: "screw top-left" }),
            vue.createElementVNode("view", { class: "screw top-right" }),
            vue.createElementVNode("view", { class: "screw bottom-left" }),
            vue.createElementVNode("view", { class: "screw bottom-right" }),
            vue.createElementVNode("view", { class: "board-inner" }, [
              vue.createElementVNode(
                "text",
                { class: "status-text" },
                vue.toDisplayString($data.status === "working" ? "接单中" : "休息中"),
                1
                /* TEXT */
              )
            ])
          ],
          2
          /* CLASS */
        )
      ]),
      vue.createElementVNode("view", { class: "status-desc" }, [
        vue.createElementVNode(
          "text",
          null,
          vue.toDisplayString($data.status === "working" ? "当前处于工作接单中，正常接收新订单" : "当前处于休息状态，暂停接收新订单"),
          1
          /* TEXT */
        )
      ]),
      vue.createElementVNode("view", { class: "action-area" }, [
        vue.createElementVNode(
          "button",
          {
            class: vue.normalizeClass(["action-btn", { "stop": $data.status === "working", "stopped": $data.status === "resting" }]),
            onClick: _cache[0] || (_cache[0] = (...args) => $options.toggleStatus && $options.toggleStatus(...args))
          },
          vue.toDisplayString($data.status === "working" ? "停止接单" : "已停止接单"),
          3
          /* TEXT, CLASS */
        ),
        vue.createElementVNode("view", { class: "tips" }, [
          $data.status === "working" ? (vue.openBlock(), vue.createElementBlock("text", { key: 0 }, "当您希望长时间不再接收订单时，请点击上方按钮停止接单，开启后需手动恢复。")) : (vue.openBlock(), vue.createElementBlock("text", { key: 1 }, "点击上方按钮恢复接单，开始接收新的任务推送。"))
        ])
      ])
    ]);
  }
  const PagesHomeWorkStatus = /* @__PURE__ */ _export_sfc(_sfc_main$s, [["render", _sfc_render$r], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/home/work-status.vue"]]);
  const logic$2 = {
    data() {
      return {
        currentTab: 0,
        tabs: ["待接送/服务", "配送/服务中", "已完成", "已拒绝"],
        // Filter dropdown states
        typeFilterOptions: ["全部类型", "接送", "喂遛", "洗护"],
        currentTypeFilterIdx: 0,
        activeDropdown: 0,
        // 0 = none, 1 = type filter, 2 = time filter
        hasTimeFilter: false,
        // Custom Calendar State (Mock Feb 2026)
        currentMonth: "2026年2月",
        weekDays: ["日", "一", "二", "三", "四", "五", "六"],
        calendarDays: [],
        // Generated in onLoad or created
        selectedDateRange: [],
        // stores [start, end]
        allOrderList: [
          // === Tab 1: 待接送/服务 (Status: 接单) ===
          { type: 1, typeText: "接送", typeIcon: "/static/icons/car.svg", statusText: "接单", price: "20.00", timeLabel: "取货时间", time: "2026/02/10 10:00", petAvatar: "/static/dog.png", petName: "哈士奇宝宝", petBreed: "哈士奇", startLocation: "武汉大学宠物店", startAddress: "武汉市洪山区珞喻路458号", startDistance: "0.5km", endLocation: "张** 189****8451", endAddress: "武汉市武昌区新区大道凤凰广场25号", endDistance: "2.5km", remark: "尽快接单。" },
          { type: 2, typeText: "喂遛", typeIcon: "/static/icons/walk.svg", statusText: "接单", price: "30.00", timeLabel: "服务时间", time: "2026/02/10 14:00", petAvatar: "/static/dog.png", petName: "边牧", petBreed: "边境牧羊犬", endLocation: "李** 138****0001", endAddress: "武汉市洪山区保利花园", endDistance: "1.5km", serviceContent: "需自带牵引绳。", remark: "狗狗很活泼。" },
          { type: 3, typeText: "洗护", typeIcon: "/static/icons/wash.svg", statusText: "接单", price: "60.00", timeLabel: "服务时间", time: "2026/02/10 16:00", petAvatar: "/static/dog.png", petName: "布偶", petBreed: "布偶猫", endLocation: "王** 139****0002", endAddress: "武汉市汉阳区钟家村", endDistance: "3.5km", serviceContent: "上门洗护、全身检查", remark: "猫咪怕水。" },
          // === Tab 2: 配送/服务中 (Status: 出发/开始/到达等) ===
          { type: 1, typeText: "接送", typeIcon: "/static/icons/car.svg", statusText: "出发", price: "25.00", timeLabel: "取货时间", time: "2026/02/11 09:00", petAvatar: "/static/dog.png", petName: "柯基", petBreed: "柯基犬", startLocation: "南湖宠物店", startAddress: "武汉市洪山区南湖大道", startDistance: "1.0km", endLocation: "陈** 158****0003", endAddress: "武汉市江夏区藏龙岛", endDistance: "6.5km", remark: "已接到狗狗，送往目的地。" },
          { type: 2, typeText: "喂遛", typeIcon: "/static/icons/walk.svg", statusText: "开始", price: "35.00", timeLabel: "服务时间", time: "2026/02/11 15:00", petAvatar: "/static/dog.png", petName: "金毛", petBreed: "金毛寻回犬", endLocation: "赵** 159****0004", endAddress: "武汉市江汉区泛海国际", endDistance: "4.5km", serviceContent: "遛弯一小时", remark: "注意避开大型犬。" },
          { type: 3, typeText: "洗护", typeIcon: "/static/icons/wash.svg", statusText: "开始", price: "80.00", timeLabel: "服务时间", time: "2026/02/11 18:00", petAvatar: "/static/dog.png", petName: "英短", petBreed: "英国短毛猫", endLocation: "钱** 177****0005", endAddress: "武汉市武昌区楚河汉街", endDistance: "2.0km", serviceContent: "深度去污、洗护", remark: "客户要求修剪指甲。" },
          // === Tab 3: 已完成 (Status: 已完成) ===
          { type: 1, typeText: "接送", typeIcon: "/static/icons/car.svg", statusText: "已完成", price: "40.00", timeLabel: "取货时间", time: "2026/02/12 10:00", petAvatar: "/static/dog.png", petName: "柴犬", petBreed: "柴犬", startLocation: "汉口宠物医院", startAddress: "武汉市江岸区解放大道", startDistance: "2.0km", endLocation: "孙** 186****0006", endAddress: "武汉市东西湖区金银湖", endDistance: "10.5km", remark: "安全抵达。" },
          { type: 2, typeText: "喂遛", typeIcon: "/static/icons/walk.svg", statusText: "已完成", price: "28.00", timeLabel: "服务时间", time: "2026/02/12 16:00", petAvatar: "/static/dog.png", petName: "萨摩耶", petBreed: "萨摩耶犬", endLocation: "周** 188****0007", endAddress: "武汉市洪山区软件园", endDistance: "0.8km", serviceContent: "遛狗", remark: "遛得很开心。" },
          { type: 3, typeText: "洗护", typeIcon: "/static/icons/wash.svg", statusText: "已完成", price: "120.00", timeLabel: "服务时间", time: "2026/02/12 19:00", petAvatar: "/static/dog.png", petName: "加菲", petBreed: "加菲猫", endLocation: "吴** 189****0008", endAddress: "武汉市青山区别区", endDistance: "5.0km", serviceContent: "全套美容洗护", remark: "客户非常满意。" },
          // === Tab 4: 已拒绝 (Status: 已拒绝) ===
          { type: 1, typeText: "接送", typeIcon: "/static/icons/car.svg", statusText: "已拒绝", price: "15.00", timeLabel: "取货时间", time: "2026/02/13 09:00", petAvatar: "/static/dog.png", petName: "吉娃娃", petBreed: "吉娃娃", startLocation: "宠物乐园", startAddress: "武汉市黄陂区盘龙城", startDistance: "3.0km", endLocation: "郑** 133****0009", endAddress: "武汉市汉南区", endDistance: "20.5km", remark: "路程太远。" },
          { type: 2, typeText: "喂遛", typeIcon: "/static/icons/walk.svg", statusText: "已拒绝", price: "22.00", timeLabel: "服务时间", time: "2026/02/13 14:00", petAvatar: "/static/dog.png", petName: "博美", petBreed: "博美犬", endLocation: "刘** 134****0010", endAddress: "武汉市蔡甸区", endDistance: "15.0km", serviceContent: "公园遛弯", remark: "天气原因取消。" },
          { type: 3, typeText: "洗护", typeIcon: "/static/icons/wash.svg", statusText: "已拒绝", price: "45.00", timeLabel: "服务时间", time: "2026/02/13 17:00", petAvatar: "/static/dog.png", petName: "暹罗", petBreed: "暹罗猫", endLocation: "张** 135****0011", endAddress: "武汉市新洲区", endDistance: "18.0km", serviceContent: "洗澡", remark: "时间冲突。" }
        ],
        showPetModal: false,
        currentPetInfo: {},
        showNavModal: false,
        navTargetItem: null,
        navTargetPointType: "",
        // Popover control
        activeCallItem: null,
        // 备注输入弹窗
        showRemarkInput: false,
        remarkText: ""
      };
    },
    created() {
      this.initCalendar();
    },
    computed: {
      orderList() {
        return this.allOrderList.filter((item) => {
          let matchTab = false;
          if (this.currentTab === 0) {
            matchTab = item.statusText === "接单";
          } else if (this.currentTab === 1) {
            let pickingTypes = ["到达", "出发", "送达"];
            let serviceTypes = ["到达", "开始", "结束"];
            if (item.type === 1) {
              matchTab = pickingTypes.includes(item.statusText);
            } else {
              matchTab = serviceTypes.includes(item.statusText);
            }
          } else if (this.currentTab === 2) {
            matchTab = item.statusText === "已完成";
          } else if (this.currentTab === 3) {
            matchTab = item.statusText === "已拒绝";
          }
          let matchType = true;
          if (this.currentTypeFilterIdx > 0) {
            matchType = item.type === parseInt(this.currentTypeFilterIdx);
          }
          let matchTime = true;
          return matchTab && matchType && matchTime;
        });
      }
    },
    methods: {
      getDisplayStatus(item) {
        if (item.statusText === "已完成")
          return "已完成";
        if (item.statusText === "已拒绝")
          return "已拒绝";
        if (item.statusText === "接单") {
          return item.type === 1 ? "待接送" : "待服务";
        }
        return item.type === 1 ? "配送中" : "服务中";
      },
      getStatusClass(item) {
        let display = this.getDisplayStatus(item);
        if (display === "已完成")
          return "finish";
        if (display === "已拒绝")
          return "reject";
        if (display === "配送中" || display === "服务中")
          return "processing";
        return "highlight";
      },
      goToDetail(item) {
        uni.navigateTo({
          url: `/pages/orders/detail?type=${item.type}`
        });
      },
      showPetProfile(item) {
        this.currentPetInfo = {
          ...item,
          petGender: "M",
          petAge: "2岁",
          petWeight: "15kg",
          petPersonality: "活泼亲人，精力旺盛",
          petHobby: "喜欢追飞盘，爱吃肉干",
          petRemark: "肠胃较弱，不能乱喂零食；出门易爆冲，请拉紧牵引绳。",
          petTags: ["拉响警报", "不能吃鸡肉", "精力旺盛"],
          petLogs: [
            { date: "2026-02-09 14:00", content: "今天遛弯拉了两次粑粑，精神状态很好。", recorder: "王阿姨" },
            { date: "2026-02-08 10:30", content: "有些挑食，剩了小半碗狗粮。", recorder: "李师傅" },
            { date: "2026-02-05 09:00", content: "建档。", recorder: "系统记录" }
          ]
        };
        this.showPetModal = true;
      },
      closePetProfile() {
        this.showPetModal = false;
      },
      openNavigation(item, pointType) {
        this.navTargetItem = item;
        this.navTargetPointType = pointType;
        this.showNavModal = true;
      },
      closeNavModal() {
        this.showNavModal = false;
      },
      chooseMap(mapType) {
        let item = this.navTargetItem;
        let pointType = this.navTargetPointType;
        let name = pointType === "start" ? item.startLocation : item.endLocation;
        let address = pointType === "start" ? item.startAddress : item.endAddress;
        this.showNavModal = false;
        uni.openLocation({
          latitude: 30.52,
          // Mock lat
          longitude: 114.31,
          // Mock lng
          name: name || "目的地",
          address: address || "默认地址",
          success: function() {
            formatAppLog("log", "at pages/orders/logic.js:159", "打开导航成功: " + mapType);
          }
        });
      },
      toggleCallMenu(item) {
        if (this.activeCallItem === item) {
          this.activeCallItem = null;
        } else {
          this.activeCallItem = item;
        }
      },
      closeCallMenu() {
        this.activeCallItem = null;
      },
      doCall(type) {
        let phoneNum = "";
        if (type === "merchant") {
          phoneNum = "18900008451";
        } else if (type === "customer") {
          phoneNum = "13800000001";
        }
        if (phoneNum) {
          uni.makePhoneCall({ phoneNumber: phoneNum });
        }
        this.activeCallItem = null;
      },
      reportAbnormal(item) {
        uni.showToast({ title: "上报功能待开发", icon: "none" });
      },
      toggleDropdown(idx) {
        if (this.activeDropdown === idx) {
          this.activeDropdown = 0;
        } else {
          this.activeDropdown = idx;
        }
      },
      closeDropdown() {
        this.activeDropdown = 0;
      },
      selectType(index) {
        this.currentTypeFilterIdx = index;
        this.closeDropdown();
      },
      initCalendar() {
        let days = [];
        for (let i = 1; i <= 28; i++) {
          days.push(i);
        }
        this.calendarDays = days;
        this.selectedDateRange = [2, 4];
      },
      prevMonth() {
        uni.showToast({ title: "上个月", icon: "none" });
      },
      nextMonth() {
        uni.showToast({ title: "下个月", icon: "none" });
      },
      selectDateItem(day) {
        if (this.selectedDateRange.length === 2) {
          this.selectedDateRange = [day];
        } else if (this.selectedDateRange.length === 1) {
          let start = this.selectedDateRange[0];
          if (day > start) {
            this.selectedDateRange = [start, day];
          } else if (day < start) {
            this.selectedDateRange = [day, start];
          } else {
            this.selectedDateRange = [];
          }
        } else {
          this.selectedDateRange = [day];
        }
      },
      getDateClass(day) {
        if (this.selectedDateRange.length === 0)
          return "";
        if (this.selectedDateRange.length === 1) {
          return day === this.selectedDateRange[0] ? "is-start" : "";
        }
        let start = this.selectedDateRange[0];
        let end = this.selectedDateRange[1];
        if (day === start)
          return "is-start";
        if (day === end)
          return "is-end";
        if (day > start && day < end)
          return "is-between";
        return "";
      },
      resetTimeFilter() {
        this.hasTimeFilter = false;
        this.selectedDateRange = [];
        uni.showToast({ title: "已重置服务时间", icon: "none" });
        this.closeDropdown();
      },
      confirmTimeFilter() {
        if (this.selectedDateRange.length === 0) {
          uni.showToast({ title: "请先选择日期", icon: "none" });
          return;
        }
        let text = this.selectedDateRange.length === 2 ? `${this.selectedDateRange[0]}日-${this.selectedDateRange[1]}日` : `${this.selectedDateRange[0]}日`;
        uni.showToast({ title: "已应用: " + text, icon: "none" });
        this.hasTimeFilter = true;
        this.closeDropdown();
      },
      getMainActionText(item) {
        if (item.statusText === "接单") {
          return "到达打卡";
        } else if (item.statusText === "到达" && item.type === 1) {
          return "确认出发";
        } else if (item.statusText === "到达" && item.type !== 1) {
          return "开始服务";
        } else if (item.statusText === "出发") {
          return "送达打卡";
        } else if (item.statusText === "开始") {
          return "结束服务";
        } else if (item.statusText === "送达" || item.statusText === "结束") {
          return "服务完成";
        }
        return "查看详情";
      },
      mainAction(item) {
        uni.navigateTo({
          url: `/pages/orders/detail?type=${item.type}`
        });
      },
      reportAbnormal(item) {
        uni.navigateTo({
          url: "/pages/orders/anomaly?orderId=" + (item.orderNo || "")
        });
      },
      // 打开备注输入弹窗
      openRemarkInput() {
        this.remarkText = "";
        this.showRemarkInput = true;
      },
      // 关闭备注输入弹窗
      closeRemarkInput() {
        this.showRemarkInput = false;
        this.remarkText = "";
      },
      // 提交备注，追加到宠物档案日志列表
      submitRemark() {
        const text = this.remarkText.trim();
        if (!text) {
          uni.showToast({ title: "备注内容不能为空", icon: "none" });
          return;
        }
        const now = /* @__PURE__ */ new Date();
        const dateStr = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, "0")}-${String(now.getDate()).padStart(2, "0")} ${String(now.getHours()).padStart(2, "0")}:${String(now.getMinutes()).padStart(2, "0")}`;
        if (!this.currentPetInfo.petLogs) {
          this.$set(this.currentPetInfo, "petLogs", []);
        }
        this.currentPetInfo.petLogs.unshift({
          date: dateStr,
          content: text,
          recorder: "我"
        });
        uni.showToast({ title: "备注已添加", icon: "success" });
        this.closeRemarkInput();
      }
    }
  };
  const _sfc_main$r = {
    ...logic$2
  };
  function _sfc_render$q(_ctx, _cache, $props, $setup, $data, $options) {
    const _component_uni_icons = vue.resolveComponent("uni-icons");
    return vue.openBlock(), vue.createElementBlock(
      vue.Fragment,
      null,
      [
        vue.createElementVNode("view", { class: "container" }, [
          vue.createElementVNode("view", { class: "sticky-header" }, [
            vue.createElementVNode("view", { class: "status-tabs" }, [
              (vue.openBlock(true), vue.createElementBlock(
                vue.Fragment,
                null,
                vue.renderList(_ctx.tabs, (tab, index) => {
                  return vue.openBlock(), vue.createElementBlock("view", {
                    class: vue.normalizeClass(["tab-item", { active: _ctx.currentTab === index }]),
                    key: index,
                    onClick: ($event) => _ctx.currentTab = index
                  }, [
                    vue.createElementVNode(
                      "text",
                      null,
                      vue.toDisplayString(tab),
                      1
                      /* TEXT */
                    ),
                    _ctx.currentTab === index ? (vue.openBlock(), vue.createElementBlock("view", {
                      key: 0,
                      class: "indicator"
                    })) : vue.createCommentVNode("v-if", true)
                  ], 10, ["onClick"]);
                }),
                128
                /* KEYED_FRAGMENT */
              ))
            ]),
            vue.createElementVNode("view", { class: "search-bar" }, [
              vue.createElementVNode("view", { class: "search-input-box" }, [
                vue.createElementVNode("input", {
                  class: "search-input",
                  placeholder: "搜索地址/电话/姓名",
                  "placeholder-class": "ph-style"
                })
              ])
            ]),
            vue.createElementVNode("view", { class: "filter-wrapper" }, [
              vue.createElementVNode("view", { class: "filter-bar" }, [
                vue.createElementVNode(
                  "view",
                  {
                    class: vue.normalizeClass(["filter-item", { "active": _ctx.activeDropdown === 1 }]),
                    onClick: _cache[0] || (_cache[0] = ($event) => _ctx.toggleDropdown(1))
                  },
                  [
                    vue.createElementVNode(
                      "text",
                      {
                        class: vue.normalizeClass({ "active-text": _ctx.activeDropdown === 1 || _ctx.currentTypeFilterIdx > 0 })
                      },
                      vue.toDisplayString(_ctx.currentTypeFilterIdx > 0 ? _ctx.typeFilterOptions[_ctx.currentTypeFilterIdx] : "全部类型"),
                      3
                      /* TEXT, CLASS */
                    ),
                    vue.createElementVNode(
                      "view",
                      {
                        class: vue.normalizeClass(["triangle", _ctx.activeDropdown === 1 ? "up" : "down"])
                      },
                      null,
                      2
                      /* CLASS */
                    )
                  ],
                  2
                  /* CLASS */
                ),
                vue.createElementVNode(
                  "view",
                  {
                    class: vue.normalizeClass(["filter-item", { "active": _ctx.activeDropdown === 2 }]),
                    onClick: _cache[1] || (_cache[1] = ($event) => _ctx.toggleDropdown(2))
                  },
                  [
                    vue.createElementVNode(
                      "text",
                      {
                        class: vue.normalizeClass({ "active-text": _ctx.activeDropdown === 2 || _ctx.hasTimeFilter })
                      },
                      "服务时间",
                      2
                      /* CLASS */
                    ),
                    vue.createElementVNode(
                      "view",
                      {
                        class: vue.normalizeClass(["triangle", _ctx.activeDropdown === 2 ? "up" : "down"])
                      },
                      null,
                      2
                      /* CLASS */
                    )
                  ],
                  2
                  /* CLASS */
                )
              ]),
              _ctx.activeDropdown !== 0 ? (vue.openBlock(), vue.createElementBlock("view", {
                key: 0,
                class: "dropdown-mask",
                onClick: _cache[2] || (_cache[2] = (...args) => _ctx.closeDropdown && _ctx.closeDropdown(...args))
              })) : vue.createCommentVNode("v-if", true),
              _ctx.activeDropdown === 1 ? (vue.openBlock(), vue.createElementBlock("view", {
                key: 1,
                class: "dropdown-panel"
              }, [
                (vue.openBlock(true), vue.createElementBlock(
                  vue.Fragment,
                  null,
                  vue.renderList(_ctx.typeFilterOptions, (item, index) => {
                    return vue.openBlock(), vue.createElementBlock("view", {
                      class: vue.normalizeClass(["type-option", { "selected": _ctx.currentTypeFilterIdx === index }]),
                      key: index,
                      onClick: ($event) => _ctx.selectType(index)
                    }, [
                      vue.createElementVNode(
                        "text",
                        null,
                        vue.toDisplayString(item),
                        1
                        /* TEXT */
                      )
                    ], 10, ["onClick"]);
                  }),
                  128
                  /* KEYED_FRAGMENT */
                ))
              ])) : vue.createCommentVNode("v-if", true),
              _ctx.activeDropdown === 2 ? (vue.openBlock(), vue.createElementBlock("view", {
                key: 2,
                class: "dropdown-panel calendar-panel"
              }, [
                vue.createElementVNode("view", { class: "custom-calendar-container" }, [
                  vue.createElementVNode("view", { class: "cal-header" }, [
                    vue.createVNode(_component_uni_icons, {
                      type: "left",
                      size: "18",
                      color: "#666",
                      onClick: _ctx.prevMonth
                    }, null, 8, ["onClick"]),
                    vue.createElementVNode(
                      "text",
                      { class: "cal-title" },
                      vue.toDisplayString(_ctx.currentMonth),
                      1
                      /* TEXT */
                    ),
                    vue.createVNode(_component_uni_icons, {
                      type: "right",
                      size: "18",
                      color: "#666",
                      onClick: _ctx.nextMonth
                    }, null, 8, ["onClick"])
                  ]),
                  vue.createElementVNode("view", { class: "cal-weekdays" }, [
                    (vue.openBlock(true), vue.createElementBlock(
                      vue.Fragment,
                      null,
                      vue.renderList(_ctx.weekDays, (wk, idx) => {
                        return vue.openBlock(), vue.createElementBlock(
                          "text",
                          {
                            key: idx,
                            class: "wk-item"
                          },
                          vue.toDisplayString(wk),
                          1
                          /* TEXT */
                        );
                      }),
                      128
                      /* KEYED_FRAGMENT */
                    ))
                  ]),
                  vue.createElementVNode("view", { class: "cal-body" }, [
                    (vue.openBlock(true), vue.createElementBlock(
                      vue.Fragment,
                      null,
                      vue.renderList(_ctx.calendarDays, (day, idx) => {
                        return vue.openBlock(), vue.createElementBlock("view", {
                          key: idx,
                          class: vue.normalizeClass(["cal-day-box", _ctx.getDateClass(day)]),
                          onClick: ($event) => _ctx.selectDateItem(day)
                        }, [
                          vue.createElementVNode(
                            "view",
                            { class: "cal-day-text" },
                            vue.toDisplayString(day),
                            1
                            /* TEXT */
                          )
                        ], 10, ["onClick"]);
                      }),
                      128
                      /* KEYED_FRAGMENT */
                    ))
                  ])
                ]),
                vue.createElementVNode("view", { class: "calendar-actions" }, [
                  vue.createElementVNode("button", {
                    class: "cal-btn reset",
                    onClick: _cache[3] || (_cache[3] = (...args) => _ctx.resetTimeFilter && _ctx.resetTimeFilter(...args))
                  }, "重置"),
                  vue.createElementVNode("button", {
                    class: "cal-btn confirm",
                    onClick: _cache[4] || (_cache[4] = (...args) => _ctx.confirmTimeFilter && _ctx.confirmTimeFilter(...args))
                  }, "确定")
                ])
              ])) : vue.createCommentVNode("v-if", true)
            ])
          ]),
          vue.createElementVNode("scroll-view", {
            "scroll-y": "",
            class: "order-list"
          }, [
            (vue.openBlock(true), vue.createElementBlock(
              vue.Fragment,
              null,
              vue.renderList(_ctx.orderList, (item, index) => {
                return vue.openBlock(), vue.createElementBlock("view", {
                  class: "order-card",
                  key: index,
                  onClick: ($event) => _ctx.goToDetail(item)
                }, [
                  vue.createElementVNode("view", { class: "card-header" }, [
                    vue.createElementVNode("view", { class: "type-badge" }, [
                      vue.createElementVNode("image", {
                        class: "type-icon",
                        src: item.typeIcon
                      }, null, 8, ["src"]),
                      vue.createElementVNode(
                        "text",
                        { class: "type-text" },
                        vue.toDisplayString(item.typeText),
                        1
                        /* TEXT */
                      )
                    ]),
                    vue.createElementVNode(
                      "text",
                      {
                        class: vue.normalizeClass(["status-badge", _ctx.getStatusClass(item)])
                      },
                      vue.toDisplayString(_ctx.getDisplayStatus(item)),
                      3
                      /* TEXT, CLASS */
                    )
                  ]),
                  vue.createElementVNode("view", { class: "card-body" }, [
                    vue.createElementVNode("view", { class: "time-row" }, [
                      vue.createElementVNode("view", { class: "time-col" }, [
                        vue.createElementVNode(
                          "text",
                          { class: "label" },
                          vue.toDisplayString(item.timeLabel) + "：",
                          1
                          /* TEXT */
                        ),
                        vue.createElementVNode(
                          "text",
                          { class: "value" },
                          vue.toDisplayString(item.time),
                          1
                          /* TEXT */
                        )
                      ]),
                      vue.createElementVNode(
                        "text",
                        { class: "price" },
                        "¥" + vue.toDisplayString(item.price),
                        1
                        /* TEXT */
                      )
                    ]),
                    vue.createElementVNode("view", { class: "pet-card" }, [
                      vue.createElementVNode("image", {
                        class: "pet-avatar",
                        src: item.petAvatar,
                        mode: "aspectFill"
                      }, null, 8, ["src"]),
                      vue.createElementVNode("view", { class: "pet-info" }, [
                        vue.createElementVNode(
                          "text",
                          { class: "pet-name" },
                          vue.toDisplayString(item.petName),
                          1
                          /* TEXT */
                        ),
                        vue.createElementVNode(
                          "text",
                          { class: "pet-breed" },
                          "品种: " + vue.toDisplayString(item.petBreed),
                          1
                          /* TEXT */
                        )
                      ]),
                      vue.createElementVNode("view", {
                        class: "pet-profile-btn",
                        onClick: vue.withModifiers(($event) => _ctx.showPetProfile(item), ["stop"])
                      }, "宠物档案", 8, ["onClick"])
                    ]),
                    vue.createElementVNode("view", { class: "route-info" }, [
                      item.type === 1 ? (vue.openBlock(), vue.createElementBlock(
                        vue.Fragment,
                        { key: 0 },
                        [
                          vue.createElementVNode("view", {
                            class: "route-item",
                            onClick: vue.withModifiers(($event) => _ctx.openNavigation(item, "start"), ["stop"])
                          }, [
                            vue.createElementVNode("view", { class: "icon-circle start" }, "取"),
                            vue.createElementVNode("view", { class: "route-line-vertical" }),
                            vue.createElementVNode("view", { class: "address-box" }, [
                              vue.createElementVNode(
                                "text",
                                { class: "addr-title" },
                                vue.toDisplayString(item.startLocation),
                                1
                                /* TEXT */
                              ),
                              vue.createElementVNode(
                                "text",
                                { class: "addr-desc" },
                                vue.toDisplayString(item.startAddress),
                                1
                                /* TEXT */
                              )
                            ]),
                            vue.createElementVNode("view", { class: "distance-tag" }, [
                              vue.createElementVNode(
                                "text",
                                { class: "distance-text" },
                                vue.toDisplayString(item.startDistance),
                                1
                                /* TEXT */
                              ),
                              vue.createElementVNode("view", { class: "nav-icon-circle" }, [
                                vue.createElementVNode("image", {
                                  class: "nav-arrow",
                                  src: _imports_3$2
                                })
                              ])
                            ])
                          ], 8, ["onClick"]),
                          vue.createElementVNode("view", {
                            class: "route-item",
                            onClick: vue.withModifiers(($event) => _ctx.openNavigation(item, "end"), ["stop"])
                          }, [
                            vue.createElementVNode("view", { class: "icon-circle end" }, "送"),
                            vue.createElementVNode("view", { class: "address-box" }, [
                              vue.createElementVNode(
                                "text",
                                { class: "addr-title" },
                                vue.toDisplayString(item.endLocation),
                                1
                                /* TEXT */
                              ),
                              vue.createElementVNode(
                                "text",
                                { class: "addr-desc" },
                                vue.toDisplayString(item.endAddress),
                                1
                                /* TEXT */
                              )
                            ]),
                            vue.createElementVNode("view", { class: "distance-tag" }, [
                              vue.createElementVNode(
                                "text",
                                { class: "distance-text" },
                                vue.toDisplayString(item.endDistance),
                                1
                                /* TEXT */
                              ),
                              vue.createElementVNode("view", { class: "nav-icon-circle" }, [
                                vue.createElementVNode("image", {
                                  class: "nav-arrow",
                                  src: _imports_3$2
                                })
                              ])
                            ])
                          ], 8, ["onClick"])
                        ],
                        64
                        /* STABLE_FRAGMENT */
                      )) : (vue.openBlock(), vue.createElementBlock(
                        vue.Fragment,
                        { key: 1 },
                        [
                          vue.createElementVNode("view", {
                            class: "route-item",
                            onClick: vue.withModifiers(($event) => _ctx.openNavigation(item, "end"), ["stop"])
                          }, [
                            vue.createElementVNode("view", { class: "icon-circle service" }, "服"),
                            vue.createElementVNode("view", { class: "address-box" }, [
                              vue.createElementVNode(
                                "text",
                                { class: "addr-title" },
                                vue.toDisplayString(item.endLocation),
                                1
                                /* TEXT */
                              ),
                              vue.createElementVNode(
                                "text",
                                { class: "addr-desc" },
                                vue.toDisplayString(item.endAddress),
                                1
                                /* TEXT */
                              )
                            ]),
                            vue.createElementVNode("view", { class: "distance-tag" }, [
                              vue.createElementVNode(
                                "text",
                                { class: "distance-text" },
                                vue.toDisplayString(item.endDistance),
                                1
                                /* TEXT */
                              ),
                              vue.createElementVNode("view", { class: "nav-icon-circle" }, [
                                vue.createElementVNode("image", {
                                  class: "nav-arrow",
                                  src: _imports_3$2
                                })
                              ])
                            ])
                          ], 8, ["onClick"]),
                          item.serviceContent ? (vue.openBlock(), vue.createElementBlock("view", {
                            key: 0,
                            class: "service-content"
                          }, [
                            vue.createElementVNode("text", { class: "content-label" }, "服务内容:"),
                            vue.createElementVNode(
                              "text",
                              null,
                              vue.toDisplayString(item.serviceContent),
                              1
                              /* TEXT */
                            )
                          ])) : vue.createCommentVNode("v-if", true)
                        ],
                        64
                        /* STABLE_FRAGMENT */
                      ))
                    ]),
                    item.remark ? (vue.openBlock(), vue.createElementBlock("view", {
                      key: 0,
                      class: "remark-box"
                    }, [
                      vue.createElementVNode(
                        "text",
                        null,
                        "备注：" + vue.toDisplayString(item.remark),
                        1
                        /* TEXT */
                      )
                    ])) : vue.createCommentVNode("v-if", true)
                  ]),
                  ["接单", "到达", "出发", "开始", "送达", "结束"].includes(item.statusText) ? (vue.openBlock(), vue.createElementBlock("view", {
                    key: 0,
                    class: "action-btns"
                  }, [
                    vue.createElementVNode("view", { class: "action-left" }, [
                      vue.createElementVNode("button", {
                        class: "btn normal",
                        onClick: vue.withModifiers(($event) => _ctx.toggleCallMenu(item), ["stop"])
                      }, "一键拨号", 8, ["onClick"]),
                      _ctx.activeCallItem === item ? (vue.openBlock(), vue.createElementBlock("view", {
                        key: 0,
                        class: "call-popover",
                        onClick: _cache[7] || (_cache[7] = vue.withModifiers(() => {
                        }, ["stop"]))
                      }, [
                        vue.createElementVNode("view", {
                          class: "call-pop-item",
                          onClick: _cache[5] || (_cache[5] = ($event) => _ctx.doCall("merchant"))
                        }, "联系商家"),
                        vue.createElementVNode("view", {
                          class: "call-pop-item",
                          onClick: _cache[6] || (_cache[6] = ($event) => _ctx.doCall("customer"))
                        }, "联系客户")
                      ])) : vue.createCommentVNode("v-if", true)
                    ]),
                    vue.createElementVNode("view", { class: "action-right" }, [
                      vue.createElementVNode("button", {
                        class: "btn normal",
                        onClick: vue.withModifiers(($event) => _ctx.reportAbnormal(item), ["stop"])
                      }, "异常上报", 8, ["onClick"]),
                      vue.createElementVNode("button", {
                        class: "btn primary",
                        onClick: vue.withModifiers(($event) => _ctx.mainAction(item), ["stop"])
                      }, vue.toDisplayString(_ctx.getMainActionText(item)), 9, ["onClick"])
                    ])
                  ])) : vue.createCommentVNode("v-if", true)
                ], 8, ["onClick"]);
              }),
              128
              /* KEYED_FRAGMENT */
            )),
            vue.createElementVNode("view", { class: "loading-text" }, "已加载完"),
            vue.createElementVNode("view", { style: { "height": "160rpx" } })
          ]),
          _ctx.activeCallItem ? (vue.openBlock(), vue.createElementBlock("view", {
            key: 0,
            class: "call-mask",
            onClick: _cache[8] || (_cache[8] = (...args) => _ctx.closeCallMenu && _ctx.closeCallMenu(...args))
          })) : vue.createCommentVNode("v-if", true)
        ]),
        _ctx.showPetModal ? (vue.openBlock(), vue.createElementBlock("view", {
          key: 0,
          class: "pet-modal-mask",
          onClick: _cache[12] || (_cache[12] = (...args) => _ctx.closePetProfile && _ctx.closePetProfile(...args))
        }, [
          vue.createElementVNode("view", {
            class: "pet-modal-content",
            onClick: _cache[11] || (_cache[11] = vue.withModifiers(() => {
            }, ["stop"]))
          }, [
            vue.createElementVNode("view", { class: "pet-modal-header" }, [
              vue.createElementVNode("text", { class: "pet-modal-title" }, "宠物档案"),
              vue.createElementVNode("view", { class: "pm-header-actions" }, [
                vue.createElementVNode("view", {
                  class: "pm-remark-btn",
                  onClick: _cache[9] || (_cache[9] = (...args) => _ctx.openRemarkInput && _ctx.openRemarkInput(...args))
                }, "备注"),
                vue.createElementVNode("view", {
                  class: "close-icon-btn",
                  onClick: _cache[10] || (_cache[10] = (...args) => _ctx.closePetProfile && _ctx.closePetProfile(...args))
                }, "×")
              ])
            ]),
            vue.createElementVNode("scroll-view", {
              "scroll-y": "",
              class: "pet-modal-scroll"
            }, [
              vue.createElementVNode("view", { class: "pet-base-info" }, [
                vue.createElementVNode("image", {
                  class: "pm-avatar",
                  src: _ctx.currentPetInfo.petAvatar,
                  mode: "aspectFill"
                }, null, 8, ["src"]),
                vue.createElementVNode("view", { class: "pm-info-text" }, [
                  vue.createElementVNode("view", { class: "pm-name-row" }, [
                    vue.createElementVNode(
                      "text",
                      { class: "pm-name" },
                      vue.toDisplayString(_ctx.currentPetInfo.petName),
                      1
                      /* TEXT */
                    ),
                    _ctx.currentPetInfo.petGender === "M" ? (vue.openBlock(), vue.createElementBlock("view", {
                      key: 0,
                      class: "pm-gender"
                    }, [
                      vue.createElementVNode("text", { class: "gender-icon" }, "♂"),
                      vue.createElementVNode("text", null, "公")
                    ])) : _ctx.currentPetInfo.petGender === "F" ? (vue.openBlock(), vue.createElementBlock("view", {
                      key: 1,
                      class: "pm-gender female"
                    }, [
                      vue.createElementVNode("text", { class: "gender-icon" }, "♀"),
                      vue.createElementVNode("text", null, "母")
                    ])) : vue.createCommentVNode("v-if", true)
                  ]),
                  vue.createElementVNode(
                    "text",
                    { class: "pm-breed" },
                    "品种：" + vue.toDisplayString(_ctx.currentPetInfo.petBreed),
                    1
                    /* TEXT */
                  )
                ])
              ]),
              vue.createElementVNode("view", { class: "pm-detail-grid" }, [
                vue.createElementVNode("view", { class: "pm-grid-item half" }, [
                  vue.createElementVNode("text", { class: "pm-label" }, "年龄"),
                  vue.createElementVNode(
                    "text",
                    { class: "pm-val" },
                    vue.toDisplayString(_ctx.currentPetInfo.petAge || "未知"),
                    1
                    /* TEXT */
                  )
                ]),
                vue.createElementVNode("view", { class: "pm-grid-item half" }, [
                  vue.createElementVNode("text", { class: "pm-label" }, "体重"),
                  vue.createElementVNode(
                    "text",
                    { class: "pm-val" },
                    vue.toDisplayString(_ctx.currentPetInfo.petWeight || "未知"),
                    1
                    /* TEXT */
                  )
                ]),
                vue.createElementVNode("view", { class: "pm-grid-item full" }, [
                  vue.createElementVNode("text", { class: "pm-label" }, "性格"),
                  vue.createElementVNode(
                    "text",
                    { class: "pm-val" },
                    vue.toDisplayString(_ctx.currentPetInfo.petPersonality || "无"),
                    1
                    /* TEXT */
                  )
                ]),
                vue.createElementVNode("view", { class: "pm-grid-item full" }, [
                  vue.createElementVNode("text", { class: "pm-label" }, "爱好"),
                  vue.createElementVNode(
                    "text",
                    { class: "pm-val" },
                    vue.toDisplayString(_ctx.currentPetInfo.petHobby || "无"),
                    1
                    /* TEXT */
                  )
                ]),
                vue.createElementVNode("view", { class: "pm-grid-item full" }, [
                  vue.createElementVNode("text", { class: "pm-label" }, "备注"),
                  vue.createElementVNode(
                    "text",
                    { class: "pm-val" },
                    vue.toDisplayString(_ctx.currentPetInfo.petRemark || "无特殊过敏史"),
                    1
                    /* TEXT */
                  )
                ])
              ]),
              _ctx.currentPetInfo.petTags && _ctx.currentPetInfo.petTags.length > 0 ? (vue.openBlock(), vue.createElementBlock("view", {
                key: 0,
                class: "pm-tags"
              }, [
                (vue.openBlock(true), vue.createElementBlock(
                  vue.Fragment,
                  null,
                  vue.renderList(_ctx.currentPetInfo.petTags, (tag, index) => {
                    return vue.openBlock(), vue.createElementBlock(
                      "view",
                      {
                        class: "pm-tag",
                        key: index
                      },
                      vue.toDisplayString(tag),
                      1
                      /* TEXT */
                    );
                  }),
                  128
                  /* KEYED_FRAGMENT */
                ))
              ])) : vue.createCommentVNode("v-if", true),
              vue.createElementVNode("view", { class: "pm-section-title" }, [
                vue.createElementVNode("view", { class: "orange-bar" }),
                vue.createElementVNode("text", null, "备注日志")
              ]),
              vue.createElementVNode("view", { class: "pm-log-list" }, [
                (vue.openBlock(true), vue.createElementBlock(
                  vue.Fragment,
                  null,
                  vue.renderList(_ctx.currentPetInfo.petLogs, (log, lIndex) => {
                    return vue.openBlock(), vue.createElementBlock("view", {
                      class: "pm-log-item",
                      key: lIndex
                    }, [
                      vue.createElementVNode(
                        "text",
                        { class: "pm-log-date" },
                        vue.toDisplayString(log.date),
                        1
                        /* TEXT */
                      ),
                      vue.createElementVNode(
                        "text",
                        { class: "pm-log-text" },
                        vue.toDisplayString(log.content),
                        1
                        /* TEXT */
                      ),
                      vue.createElementVNode(
                        "text",
                        { class: "pm-log-recorder" },
                        vue.toDisplayString(log.recorder === "系统记录" ? "" : "记录人: ") + vue.toDisplayString(log.recorder),
                        1
                        /* TEXT */
                      )
                    ]);
                  }),
                  128
                  /* KEYED_FRAGMENT */
                ))
              ]),
              vue.createElementVNode("view", { style: { "height": "30rpx" } })
            ])
          ])
        ])) : vue.createCommentVNode("v-if", true),
        _ctx.showRemarkInput ? (vue.openBlock(), vue.createElementBlock("view", {
          key: 1,
          class: "remark-mask",
          onClick: _cache[17] || (_cache[17] = (...args) => _ctx.closeRemarkInput && _ctx.closeRemarkInput(...args))
        }, [
          vue.createElementVNode("view", {
            class: "remark-sheet",
            onClick: _cache[16] || (_cache[16] = vue.withModifiers(() => {
            }, ["stop"]))
          }, [
            vue.createElementVNode("view", { class: "remark-sheet-header" }, [
              vue.createElementVNode("text", { class: "remark-sheet-title" }, "添加备注"),
              vue.createElementVNode("view", {
                class: "close-icon-btn",
                onClick: _cache[13] || (_cache[13] = (...args) => _ctx.closeRemarkInput && _ctx.closeRemarkInput(...args))
              }, "×")
            ]),
            vue.withDirectives(vue.createElementVNode(
              "textarea",
              {
                class: "remark-textarea",
                "onUpdate:modelValue": _cache[14] || (_cache[14] = ($event) => _ctx.remarkText = $event),
                placeholder: "请输入备注内容...",
                maxlength: "500",
                "auto-height": ""
              },
              null,
              512
              /* NEED_PATCH */
            ), [
              [vue.vModelText, _ctx.remarkText]
            ]),
            vue.createElementVNode("view", {
              class: "remark-submit-btn",
              onClick: _cache[15] || (_cache[15] = (...args) => _ctx.submitRemark && _ctx.submitRemark(...args))
            }, "提交备注")
          ])
        ])) : vue.createCommentVNode("v-if", true),
        _ctx.showNavModal ? (vue.openBlock(), vue.createElementBlock("view", {
          key: 2,
          class: "nav-modal-mask",
          onClick: _cache[23] || (_cache[23] = (...args) => _ctx.closeNavModal && _ctx.closeNavModal(...args))
        }, [
          vue.createElementVNode("view", {
            class: "nav-action-sheet",
            onClick: _cache[22] || (_cache[22] = vue.withModifiers(() => {
            }, ["stop"]))
          }, [
            vue.createElementVNode("view", { class: "nav-sheet-title" }, "选择地图进行导航"),
            vue.createElementVNode("view", {
              class: "nav-sheet-item",
              onClick: _cache[18] || (_cache[18] = ($event) => _ctx.chooseMap("高德"))
            }, "高德地图"),
            vue.createElementVNode("view", {
              class: "nav-sheet-item",
              onClick: _cache[19] || (_cache[19] = ($event) => _ctx.chooseMap("腾讯"))
            }, "腾讯地图"),
            vue.createElementVNode("view", {
              class: "nav-sheet-item",
              onClick: _cache[20] || (_cache[20] = ($event) => _ctx.chooseMap("百度"))
            }, "百度地图"),
            vue.createElementVNode("view", { class: "nav-sheet-gap" }),
            vue.createElementVNode("view", {
              class: "nav-sheet-item cancel",
              onClick: _cache[21] || (_cache[21] = (...args) => _ctx.closeNavModal && _ctx.closeNavModal(...args))
            }, "取消")
          ])
        ])) : vue.createCommentVNode("v-if", true)
      ],
      64
      /* STABLE_FRAGMENT */
    );
  }
  const PagesOrdersIndex = /* @__PURE__ */ _export_sfc(_sfc_main$r, [["render", _sfc_render$q], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/orders/index.vue"]]);
  const logic$1 = {
    data() {
      return {
        orderType: 1,
        // 1:接送, 2:喂遛, 3:洗护
        // Define steps dynamically based on type
        stepsPickup: ["接单", "到达", "出发", "送达", "完成"],
        stepsWalkWash: ["接单", "到达", "开始", "结束", "完成"],
        currentStep: 1,
        // 0-indexed (1 means 到达)
        // Mock Data
        orderDetail: {
          type: 1,
          price: "20.00",
          timeLabel: "取货时间",
          time: "2026/02/10 10:00",
          petAvatar: "/static/dog.png",
          petName: "哈士奇宝宝",
          petBreed: "哈士奇",
          serviceTag: "宠物接送",
          startLocation: "武汉大学宠物店",
          startAddress: "武汉市洪山区珞喻路458号",
          endLocation: "张** 189****8451",
          endAddress: "武汉市武昌区新区大道凤凰广场A座一楼25号",
          serviceContent: "这里是订单服务内容。",
          remark: "这里是订单备注信息。",
          orderNo: "T1001",
          createTime: "2026/02/10 09:30",
          progressLogs: [
            { status: "您已接单", time: "2026-02-10 10:00" }
          ]
        },
        // Modal states
        showPetModal: false,
        currentPetInfo: {},
        showNavModal: false,
        navTargetPointType: "",
        // Upload Modal State
        showUploadModal: false,
        modalMediaList: [],
        modalRemark: "",
        // 宠护小结弹窗状态
        showSumModal: false,
        sumContent: "",
        sumDate: "",
        sumSigner: "张*哥",
        // 宠物备注弹窗状态
        showPetRemarkInput: false,
        petRemarkText: ""
      };
    },
    computed: {
      steps() {
        return this.orderType === 1 ? this.stepsPickup : this.stepsWalkWash;
      },
      displayStatusText() {
        let status = this.steps[this.currentStep];
        if (status === "已完成" || status === "完成")
          return "已完成";
        if (status === "已拒绝")
          return "已拒绝";
        if (status === "接单") {
          return this.orderType === 1 ? "待接送" : "待服务";
        }
        return this.orderType === 1 ? "配送中" : "服务中";
      },
      currentStatusText() {
        return this.steps[this.currentStep];
      },
      currentTaskTitle() {
        let action = this.steps[this.currentStep];
        if (action === "到达")
          return "到达打卡";
        if (action === "开始")
          return "开始服务";
        if (action === "出发")
          return "确认出发";
        if (action === "送达" || action === "结束")
          return "服务完成";
        return action;
      },
      currentTaskDesc() {
        let action = this.steps[this.currentStep];
        if (action === "到达") {
          return "打卡穿着工装消毒站门口的照片或视频";
        }
        if (this.orderType === 1) {
          if (action === "出发")
            return "拍摄宠物上车/出发时的状态照片或视频";
          if (action === "送达")
            return "打卡确认送达的照片或视频";
        } else if (this.orderType === 2) {
          if (action === "开始")
            return "开始服务并拍摄照片或视频";
          if (action === "结束")
            return "服务完成拍摄照片或视频";
        } else if (this.orderType === 3) {
          if (action === "开始")
            return "开始服务并拍摄照片或视频";
          if (action === "结束")
            return "服务完成拍摄照片或视频";
        }
        return "请按要求提交照片或视频及备注";
      }
    },
    onLoad(options) {
      if (options.type) {
        this.orderType = parseInt(options.type);
        this.orderDetail.type = this.orderType;
        if (this.orderType === 2 || this.orderType === 3) {
          this.orderDetail.serviceTag = this.orderType === 2 ? "上门喂遛" : "上门洗护";
          this.orderDetail.orderNo = this.orderType === 2 ? "W1002" : "X1003";
          this.currentStep = 1;
        }
      }
    },
    methods: {
      showPetProfile() {
        this.currentPetInfo = {
          ...this.orderDetail,
          petGender: "M",
          petAge: "2岁",
          petWeight: "15kg",
          petPersonality: "活泼亲人，精力旺盛",
          petHobby: "喜欢追飞盘，爱吃肉干",
          petRemark: "肠胃较弱，不能乱喂零食；出门易爆冲，请拉紧牵引绳。",
          petTags: ["拉响警报", "不能吃鸡肉", "精力旺盛"],
          petLogs: [
            { date: "2026-02-09 14:00", content: "今天遛弯拉了两次粑粑，精神状态很好。", recorder: "王阿姨" },
            { date: "2026-02-08 10:30", content: "有些挑食，剩了小半碗狗粮。", recorder: "李师傅" },
            { date: "2026-02-05 09:00", content: "建档。", recorder: "系统记录" }
          ]
        };
        this.showPetModal = true;
      },
      closePetProfile() {
        this.showPetModal = false;
      },
      openPetRemarkInput() {
        this.petRemarkText = "";
        this.showPetRemarkInput = true;
      },
      closePetRemarkInput() {
        this.showPetRemarkInput = false;
      },
      submitPetRemark() {
        if (!this.petRemarkText.trim()) {
          uni.showToast({ title: "备注内容不能为空", icon: "none" });
          return;
        }
        const now = /* @__PURE__ */ new Date();
        const date = `${now.getFullYear()}/${String(now.getMonth() + 1).padStart(2, "0")}/${String(now.getDate()).padStart(2, "0")}`;
        if (!this.currentPetInfo.petLogs) {
          this.currentPetInfo.petLogs = [];
        }
        this.currentPetInfo.petLogs.unshift({
          date,
          content: this.petRemarkText,
          recorder: "张*哥"
        });
        this.closePetRemarkInput();
        uni.showToast({ title: "备注已添加", icon: "success" });
      },
      goToAnomaly() {
        uni.navigateTo({
          url: "/pages/orders/anomaly?orderId=" + (this.orderDetail.orderNo || "")
        });
      },
      callPhone() {
        uni.makePhoneCall({ phoneNumber: "18900008451" });
      },
      openNavigation(type) {
        this.navTargetPointType = type;
        this.showNavModal = true;
      },
      closeNavModal() {
        this.showNavModal = false;
      },
      chooseMap(mapType) {
        let pointType = this.navTargetPointType;
        let name = pointType === "start" ? this.orderDetail.startLocation : this.orderDetail.endLocation;
        let address = pointType === "start" ? this.orderDetail.startAddress : this.orderDetail.endAddress;
        this.showNavModal = false;
        uni.openLocation({
          latitude: 30.52,
          // Mock lat
          longitude: 114.31,
          // Mock lng
          name: name || "目的地",
          address: address || "默认地址",
          success: function() {
            formatAppLog("log", "at pages/orders/detail-logic.js:187", "打开导航成功: " + mapType);
          }
        });
      },
      openUploadModal() {
        this.modalMediaList = [];
        this.modalRemark = "";
        this.showUploadModal = true;
      },
      closeUploadModal() {
        this.showUploadModal = false;
      },
      chooseModalMedia() {
        uni.chooseImage({
          count: 5 - this.modalMediaList.length,
          success: (res) => {
            this.modalMediaList = this.modalMediaList.concat(res.tempFilePaths);
            uni.showToast({ title: "添加成功", icon: "none" });
          }
        });
      },
      removeModalMedia(index) {
        this.modalMediaList.splice(index, 1);
      },
      getCurrentTime() {
        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");
        const h = String(now.getHours()).padStart(2, "0");
        const min = String(now.getMinutes()).padStart(2, "0");
        return `${y}/${m}/${d} ${h}:${min}`;
      },
      confirmUploadModal() {
        if (this.modalMediaList.length === 0) {
          uni.showToast({ title: "请上传至少一张图片或视频", icon: "none" });
          return;
        }
        this.orderDetail.progressLogs.unshift({
          status: this.currentTaskTitle,
          time: this.getCurrentTime(),
          medias: [...this.modalMediaList],
          remark: this.modalRemark
        });
        if (this.currentStep < this.steps.length - 1) {
          this.currentStep++;
        }
        this.closeUploadModal();
        uni.showToast({ title: "打卡成功", icon: "success" });
        if (this.currentStep === this.steps.length - 1) {
          setTimeout(() => {
            uni.showToast({ title: "订单已完成", icon: "none" });
          }, 1500);
        }
      },
      copyOrderNo() {
        uni.setClipboardData({
          data: this.orderDetail.orderNo,
          success: () => {
            uni.showToast({ title: "复制成功", icon: "none" });
          }
        });
      },
      openSumModal() {
        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");
        this.sumDate = `${y}/${m}/${d}`;
        if (!this.sumContent) {
          this.sumContent = "1. 精神/身体状态：\n2. 进食/饮水：\n3. 排泤情况：\n4. 卫生情况：\n5. 互动情况：\n6. 特殊情况/备注：";
        }
        this.showSumModal = true;
      },
      closeSumModal() {
        this.showSumModal = false;
      },
      submitSumModal() {
        if (!this.sumContent.trim()) {
          uni.showToast({ title: "请填写服务内容", icon: "none" });
          return;
        }
        this.closeSumModal();
        uni.showToast({ title: "小结已提交", icon: "success" });
      }
    }
  };
  const _imports_14 = "/static/icons/phone_orange.svg";
  const _imports_1$7 = "/static/icons/clock.svg";
  const _imports_0$2 = "/static/icons/right_arrow_orange.svg";
  const _imports_4$1 = "/static/icons/heart.svg";
  const _imports_5 = "/static/icons/file.svg";
  const _imports_1$6 = "/static/icons/camera_grey.svg";
  const _imports_7 = "/static/icons/order_no.svg";
  const _sfc_main$q = {
    ...logic$1
  };
  function _sfc_render$p(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "detail-container" }, [
      vue.createElementVNode("view", { class: "detail-header" }, [
        vue.createElementVNode("view", { class: "status-row" }, [
          vue.createElementVNode(
            "text",
            { class: "status-title" },
            vue.toDisplayString(_ctx.displayStatusText),
            1
            /* TEXT */
          ),
          vue.createElementVNode(
            "text",
            { class: "status-price" },
            "¥" + vue.toDisplayString(_ctx.orderDetail.price),
            1
            /* TEXT */
          )
        ]),
        vue.createElementVNode("view", { class: "progress-bar" }, [
          (vue.openBlock(true), vue.createElementBlock(
            vue.Fragment,
            null,
            vue.renderList(_ctx.steps, (step, index) => {
              return vue.openBlock(), vue.createElementBlock(
                "view",
                {
                  class: vue.normalizeClass(["step-item", { "active": index <= _ctx.currentStep }]),
                  key: index
                },
                [
                  vue.createElementVNode("view", { class: "step-circle-wrapper" }, [
                    index !== 0 ? (vue.openBlock(), vue.createElementBlock(
                      "view",
                      {
                        key: 0,
                        class: vue.normalizeClass(["step-line", { "active-line": index <= _ctx.currentStep }])
                      },
                      null,
                      2
                      /* CLASS */
                    )) : vue.createCommentVNode("v-if", true),
                    vue.createElementVNode(
                      "view",
                      { class: "step-circle" },
                      vue.toDisplayString(index + 1),
                      1
                      /* TEXT */
                    )
                  ]),
                  vue.createElementVNode(
                    "text",
                    { class: "step-text" },
                    vue.toDisplayString(step),
                    1
                    /* TEXT */
                  )
                ],
                2
                /* CLASS */
              );
            }),
            128
            /* KEYED_FRAGMENT */
          ))
        ])
      ]),
      vue.createElementVNode("scroll-view", {
        "scroll-y": "",
        class: "detail-content"
      }, [
        vue.createElementVNode("view", { class: "white-card pet-bar" }, [
          vue.createElementVNode("image", {
            class: "pb-avatar",
            src: _ctx.orderDetail.petAvatar,
            mode: "aspectFill"
          }, null, 8, ["src"]),
          vue.createElementVNode("view", { class: "pb-info" }, [
            vue.createElementVNode("view", { class: "pb-name-row" }, [
              vue.createElementVNode(
                "text",
                { class: "pb-name" },
                vue.toDisplayString(_ctx.orderDetail.petName),
                1
                /* TEXT */
              ),
              vue.createElementVNode(
                "text",
                { class: "pb-breed" },
                "品种: " + vue.toDisplayString(_ctx.orderDetail.petBreed),
                1
                /* TEXT */
              )
            ]),
            vue.createElementVNode("view", { class: "pb-tags" }, [
              vue.createElementVNode(
                "text",
                { class: "pb-tag" },
                vue.toDisplayString(_ctx.orderDetail.serviceTag),
                1
                /* TEXT */
              )
            ])
          ]),
          vue.createElementVNode("view", { class: "pb-actions" }, [
            vue.createElementVNode("view", {
              class: "pb-btn profile-btn",
              onClick: _cache[0] || (_cache[0] = (...args) => _ctx.showPetProfile && _ctx.showPetProfile(...args))
            }, "宠物档案"),
            vue.createElementVNode("view", {
              class: "pb-btn phone-btn",
              onClick: _cache[1] || (_cache[1] = (...args) => _ctx.callPhone && _ctx.callPhone(...args))
            }, [
              vue.createElementVNode("image", {
                class: "phone-icon",
                src: _imports_14
              })
            ])
          ])
        ]),
        vue.createElementVNode("view", { class: "white-card service-info-card" }, [
          vue.createElementVNode("view", { class: "si-row time-row" }, [
            vue.createElementVNode("image", {
              class: "si-icon outline",
              src: _imports_1$7
            }),
            vue.createElementVNode("view", { class: "si-content" }, [
              vue.createElementVNode("text", { class: "si-label" }, "服务时间"),
              vue.createElementVNode(
                "text",
                { class: "si-val" },
                vue.toDisplayString(_ctx.orderDetail.time),
                1
                /* TEXT */
              )
            ]),
            vue.createElementVNode("view", { class: "si-action record-btn" }, [
              vue.createElementVNode("text", null, "异常记录"),
              vue.createElementVNode("image", {
                class: "record-arrow",
                src: _imports_0$2
              })
            ])
          ]),
          _ctx.orderDetail.type === 1 ? (vue.openBlock(), vue.createElementBlock(
            vue.Fragment,
            { key: 0 },
            [
              vue.createElementVNode("view", { class: "si-row addr-row start-addr" }, [
                vue.createElementVNode("view", { class: "icon-circle start" }, "取"),
                vue.createElementVNode("view", { class: "route-line-vertical" }),
                vue.createElementVNode("view", { class: "si-content" }, [
                  vue.createElementVNode(
                    "text",
                    { class: "si-addr-title" },
                    vue.toDisplayString(_ctx.orderDetail.startLocation),
                    1
                    /* TEXT */
                  ),
                  vue.createElementVNode(
                    "text",
                    { class: "si-addr-desc" },
                    vue.toDisplayString(_ctx.orderDetail.startAddress),
                    1
                    /* TEXT */
                  )
                ]),
                vue.createElementVNode("view", {
                  class: "nav-btn-circle",
                  onClick: _cache[2] || (_cache[2] = ($event) => _ctx.openNavigation("start"))
                }, [
                  vue.createElementVNode("image", {
                    class: "nav-arrow",
                    src: _imports_3$2
                  })
                ])
              ]),
              vue.createElementVNode("view", { class: "si-row addr-row end-addr" }, [
                vue.createElementVNode("view", { class: "icon-circle end" }, "送"),
                vue.createElementVNode("view", { class: "si-content" }, [
                  vue.createElementVNode(
                    "text",
                    { class: "si-addr-title" },
                    vue.toDisplayString(_ctx.orderDetail.endLocation),
                    1
                    /* TEXT */
                  ),
                  vue.createElementVNode(
                    "text",
                    { class: "si-addr-desc" },
                    vue.toDisplayString(_ctx.orderDetail.endAddress),
                    1
                    /* TEXT */
                  )
                ]),
                vue.createElementVNode("view", {
                  class: "nav-btn-circle",
                  onClick: _cache[3] || (_cache[3] = ($event) => _ctx.openNavigation("end"))
                }, [
                  vue.createElementVNode("image", {
                    class: "nav-arrow",
                    src: _imports_3$2
                  })
                ])
              ])
            ],
            64
            /* STABLE_FRAGMENT */
          )) : (vue.openBlock(), vue.createElementBlock(
            vue.Fragment,
            { key: 1 },
            [
              vue.createElementVNode("view", { class: "si-row addr-row end-addr" }, [
                vue.createElementVNode("view", { class: "icon-circle service" }, "服"),
                vue.createElementVNode("view", { class: "si-content" }, [
                  vue.createElementVNode(
                    "text",
                    { class: "si-addr-title" },
                    vue.toDisplayString(_ctx.orderDetail.endLocation),
                    1
                    /* TEXT */
                  ),
                  vue.createElementVNode(
                    "text",
                    { class: "si-addr-desc" },
                    vue.toDisplayString(_ctx.orderDetail.endAddress),
                    1
                    /* TEXT */
                  )
                ]),
                vue.createElementVNode("view", {
                  class: "nav-btn-circle",
                  onClick: _cache[4] || (_cache[4] = ($event) => _ctx.openNavigation("end"))
                }, [
                  vue.createElementVNode("image", {
                    class: "nav-arrow",
                    src: _imports_3$2
                  })
                ])
              ]),
              vue.createElementVNode("view", { class: "si-row" }, [
                vue.createElementVNode("image", {
                  class: "si-icon outline",
                  src: _imports_4$1
                }),
                vue.createElementVNode("view", { class: "si-content" }, [
                  vue.createElementVNode("text", { class: "si-label" }, "服务内容"),
                  vue.createElementVNode(
                    "text",
                    { class: "si-val" },
                    vue.toDisplayString(_ctx.orderDetail.serviceContent),
                    1
                    /* TEXT */
                  )
                ])
              ])
            ],
            64
            /* STABLE_FRAGMENT */
          )),
          vue.createElementVNode("view", { class: "si-row" }, [
            vue.createElementVNode("image", {
              class: "si-icon outline custom-icon-file",
              src: _imports_5
            }),
            vue.createElementVNode("view", { class: "si-content" }, [
              vue.createElementVNode("text", { class: "si-label" }, "备注"),
              vue.createElementVNode(
                "text",
                { class: "si-val" },
                vue.toDisplayString(_ctx.orderDetail.remark || "无"),
                1
                /* TEXT */
              )
            ])
          ])
        ]),
        _ctx.currentStep < _ctx.steps.length - 1 ? (vue.openBlock(), vue.createElementBlock("view", {
          key: 0,
          class: "white-card task-card"
        }, [
          vue.createElementVNode(
            "text",
            { class: "tc-title" },
            "当前任务：" + vue.toDisplayString(_ctx.currentTaskTitle),
            1
            /* TEXT */
          ),
          vue.createElementVNode(
            "text",
            { class: "tc-desc" },
            vue.toDisplayString(_ctx.currentTaskDesc),
            1
            /* TEXT */
          ),
          vue.createElementVNode("view", {
            class: "full-media-add",
            onClick: _cache[5] || (_cache[5] = (...args) => _ctx.openUploadModal && _ctx.openUploadModal(...args))
          }, [
            vue.createElementVNode("image", {
              class: "upload-icon-large",
              src: _imports_1$6
            }),
            vue.createElementVNode("text", { class: "upload-text-large" }, "上传图或视频")
          ])
        ])) : vue.createCommentVNode("v-if", true),
        vue.createElementVNode("view", { class: "white-card base-info-card" }, [
          vue.createElementVNode("view", { class: "bi-row" }, [
            vue.createElementVNode("image", {
              class: "si-icon outline",
              src: _imports_7
            }),
            vue.createElementVNode("view", { class: "bi-content" }, [
              vue.createElementVNode("text", { class: "bi-label" }, "订单编号"),
              vue.createElementVNode("view", { class: "bi-val-row" }, [
                vue.createElementVNode(
                  "text",
                  { class: "bi-val" },
                  vue.toDisplayString(_ctx.orderDetail.orderNo),
                  1
                  /* TEXT */
                ),
                vue.createElementVNode("text", {
                  class: "bi-copy",
                  onClick: _cache[6] || (_cache[6] = (...args) => _ctx.copyOrderNo && _ctx.copyOrderNo(...args))
                }, "复制")
              ])
            ])
          ]),
          vue.createElementVNode("view", { class: "bi-row" }, [
            vue.createElementVNode("image", {
              class: "si-icon outline",
              src: _imports_1$7
            }),
            vue.createElementVNode("view", { class: "bi-content" }, [
              vue.createElementVNode("text", { class: "bi-label" }, "下单时间"),
              vue.createElementVNode(
                "text",
                { class: "bi-val" },
                vue.toDisplayString(_ctx.orderDetail.createTime),
                1
                /* TEXT */
              )
            ])
          ])
        ]),
        vue.createElementVNode("view", { class: "white-card timeline-card" }, [
          vue.createElementVNode("view", { class: "tl-title-row" }, [
            vue.createElementVNode("view", { class: "orange-bar" }),
            vue.createElementVNode("text", { class: "tl-title" }, "订单进度")
          ]),
          vue.createElementVNode("view", { class: "tl-list" }, [
            (vue.openBlock(true), vue.createElementBlock(
              vue.Fragment,
              null,
              vue.renderList(_ctx.orderDetail.progressLogs, (log, idx) => {
                return vue.openBlock(), vue.createElementBlock("view", {
                  class: "tl-item",
                  key: idx
                }, [
                  vue.createElementVNode("view", { class: "tl-marker active" }, [
                    vue.createElementVNode("view", { class: "tl-dot-inner" })
                  ]),
                  vue.createElementVNode("view", { class: "tl-content-row" }, [
                    vue.createElementVNode("view", { class: "tl-header" }, [
                      vue.createElementVNode(
                        "text",
                        { class: "tl-status" },
                        vue.toDisplayString(log.status),
                        1
                        /* TEXT */
                      ),
                      vue.createElementVNode(
                        "text",
                        { class: "tl-time" },
                        vue.toDisplayString(log.time),
                        1
                        /* TEXT */
                      )
                    ]),
                    log.medias && log.medias.length > 0 ? (vue.openBlock(), vue.createElementBlock("view", {
                      key: 0,
                      class: "tl-medias"
                    }, [
                      (vue.openBlock(true), vue.createElementBlock(
                        vue.Fragment,
                        null,
                        vue.renderList(log.medias, (img, midx) => {
                          return vue.openBlock(), vue.createElementBlock("image", {
                            class: "tl-img",
                            key: midx,
                            src: img,
                            mode: "aspectFill"
                          }, null, 8, ["src"]);
                        }),
                        128
                        /* KEYED_FRAGMENT */
                      ))
                    ])) : vue.createCommentVNode("v-if", true),
                    log.remark ? (vue.openBlock(), vue.createElementBlock("view", {
                      key: 1,
                      class: "tl-remark"
                    }, [
                      vue.createElementVNode(
                        "text",
                        null,
                        vue.toDisplayString(log.remark),
                        1
                        /* TEXT */
                      )
                    ])) : vue.createCommentVNode("v-if", true)
                  ])
                ]);
              }),
              128
              /* KEYED_FRAGMENT */
            ))
          ])
        ]),
        vue.createElementVNode("view", { style: { "height": "140rpx" } })
      ]),
      vue.createElementVNode("view", { class: "bottom-action-bar" }, [
        vue.createElementVNode("view", { class: "action-left" }, [
          vue.createElementVNode("button", {
            class: "action-btn outline grey-outline",
            onClick: _cache[7] || (_cache[7] = (...args) => _ctx.goToAnomaly && _ctx.goToAnomaly(...args))
          }, "异常上报"),
          vue.createElementVNode("button", {
            class: "action-btn outline orange-outline",
            onClick: _cache[8] || (_cache[8] = (...args) => _ctx.openSumModal && _ctx.openSumModal(...args))
          }, "宠护小结")
        ]),
        vue.createElementVNode("view", { class: "action-right" }, [
          _ctx.currentStep < _ctx.steps.length - 1 ? (vue.openBlock(), vue.createElementBlock(
            "button",
            {
              key: 0,
              class: "action-btn primary",
              onClick: _cache[9] || (_cache[9] = (...args) => _ctx.openUploadModal && _ctx.openUploadModal(...args))
            },
            vue.toDisplayString(_ctx.currentTaskTitle),
            1
            /* TEXT */
          )) : (vue.openBlock(), vue.createElementBlock("button", {
            key: 1,
            class: "action-btn primary grey-bg"
          }, "已完成"))
        ])
      ]),
      _ctx.showPetModal ? (vue.openBlock(), vue.createElementBlock("view", {
        key: 0,
        class: "pet-modal-mask",
        onClick: _cache[13] || (_cache[13] = (...args) => _ctx.closePetProfile && _ctx.closePetProfile(...args))
      }, [
        vue.createElementVNode("view", {
          class: "pet-modal-content",
          onClick: _cache[12] || (_cache[12] = vue.withModifiers(() => {
          }, ["stop"]))
        }, [
          vue.createElementVNode("view", { class: "pet-modal-header" }, [
            vue.createElementVNode("text", { class: "pet-modal-title" }, "宠物档案"),
            vue.createElementVNode("view", { style: { "flex": "1" } }),
            vue.createElementVNode("view", {
              class: "pm-remark-btn",
              onClick: _cache[10] || (_cache[10] = (...args) => _ctx.openPetRemarkInput && _ctx.openPetRemarkInput(...args))
            }, "备注"),
            vue.createElementVNode("view", {
              class: "close-icon-btn",
              onClick: _cache[11] || (_cache[11] = (...args) => _ctx.closePetProfile && _ctx.closePetProfile(...args))
            }, "×")
          ]),
          vue.createElementVNode("scroll-view", {
            "scroll-y": "",
            class: "pet-modal-scroll"
          }, [
            vue.createElementVNode("view", { class: "pet-base-info" }, [
              vue.createElementVNode("image", {
                class: "pm-avatar",
                src: _ctx.currentPetInfo.petAvatar,
                mode: "aspectFill"
              }, null, 8, ["src"]),
              vue.createElementVNode("view", { class: "pm-info-text" }, [
                vue.createElementVNode("view", { class: "pm-name-row" }, [
                  vue.createElementVNode(
                    "text",
                    { class: "pm-name" },
                    vue.toDisplayString(_ctx.currentPetInfo.petName),
                    1
                    /* TEXT */
                  ),
                  _ctx.currentPetInfo.petGender === "M" ? (vue.openBlock(), vue.createElementBlock("view", {
                    key: 0,
                    class: "pm-gender"
                  }, [
                    vue.createElementVNode("text", { class: "gender-icon" }, "♂"),
                    vue.createElementVNode("text", null, "公")
                  ])) : _ctx.currentPetInfo.petGender === "F" ? (vue.openBlock(), vue.createElementBlock("view", {
                    key: 1,
                    class: "pm-gender female"
                  }, [
                    vue.createElementVNode("text", { class: "gender-icon" }, "♀"),
                    vue.createElementVNode("text", null, "母")
                  ])) : vue.createCommentVNode("v-if", true)
                ]),
                vue.createElementVNode(
                  "text",
                  { class: "pm-breed" },
                  "品种：" + vue.toDisplayString(_ctx.currentPetInfo.petBreed),
                  1
                  /* TEXT */
                )
              ])
            ]),
            vue.createElementVNode("view", { class: "pm-detail-grid" }, [
              vue.createElementVNode("view", { class: "pm-grid-item half" }, [
                vue.createElementVNode("text", { class: "pm-label" }, "年龄"),
                vue.createElementVNode(
                  "text",
                  { class: "pm-val" },
                  vue.toDisplayString(_ctx.currentPetInfo.petAge || "未知"),
                  1
                  /* TEXT */
                )
              ]),
              vue.createElementVNode("view", { class: "pm-grid-item half" }, [
                vue.createElementVNode("text", { class: "pm-label" }, "体重"),
                vue.createElementVNode(
                  "text",
                  { class: "pm-val" },
                  vue.toDisplayString(_ctx.currentPetInfo.petWeight || "未知"),
                  1
                  /* TEXT */
                )
              ]),
              vue.createElementVNode("view", { class: "pm-grid-item full" }, [
                vue.createElementVNode("text", { class: "pm-label" }, "性格"),
                vue.createElementVNode(
                  "text",
                  { class: "pm-val" },
                  vue.toDisplayString(_ctx.currentPetInfo.petPersonality || "无"),
                  1
                  /* TEXT */
                )
              ]),
              vue.createElementVNode("view", { class: "pm-grid-item full" }, [
                vue.createElementVNode("text", { class: "pm-label" }, "爱好"),
                vue.createElementVNode(
                  "text",
                  { class: "pm-val" },
                  vue.toDisplayString(_ctx.currentPetInfo.petHobby || "无"),
                  1
                  /* TEXT */
                )
              ]),
              vue.createElementVNode("view", { class: "pm-grid-item full" }, [
                vue.createElementVNode("text", { class: "pm-label" }, "备注"),
                vue.createElementVNode(
                  "text",
                  { class: "pm-val" },
                  vue.toDisplayString(_ctx.currentPetInfo.petRemark || "无特殊过敏史"),
                  1
                  /* TEXT */
                )
              ])
            ]),
            _ctx.currentPetInfo.petTags && _ctx.currentPetInfo.petTags.length > 0 ? (vue.openBlock(), vue.createElementBlock("view", {
              key: 0,
              class: "pm-tags-row"
            }, [
              (vue.openBlock(true), vue.createElementBlock(
                vue.Fragment,
                null,
                vue.renderList(_ctx.currentPetInfo.petTags, (tag, ti) => {
                  return vue.openBlock(), vue.createElementBlock("view", {
                    class: "pm-tag-chip",
                    key: ti
                  }, [
                    vue.createElementVNode(
                      "text",
                      { class: "pm-tag-chip-text" },
                      vue.toDisplayString(tag),
                      1
                      /* TEXT */
                    )
                  ]);
                }),
                128
                /* KEYED_FRAGMENT */
              ))
            ])) : vue.createCommentVNode("v-if", true),
            vue.createElementVNode("view", { class: "pm-log-section" }, [
              vue.createElementVNode("view", { class: "pm-log-header" }, [
                vue.createElementVNode("view", { style: { "width": "6rpx", "height": "28rpx", "background": "#FF9800", "border-radius": "3rpx", "margin-right": "12rpx" } }),
                vue.createElementVNode("text", { class: "pm-log-section-title" }, "备注日志")
              ]),
              (vue.openBlock(true), vue.createElementBlock(
                vue.Fragment,
                null,
                vue.renderList(_ctx.currentPetInfo.petLogs, (log, lIndex) => {
                  return vue.openBlock(), vue.createElementBlock("view", {
                    class: "pm-log-item",
                    key: lIndex
                  }, [
                    vue.createElementVNode(
                      "text",
                      { class: "pm-log-date" },
                      vue.toDisplayString(log.date),
                      1
                      /* TEXT */
                    ),
                    vue.createElementVNode(
                      "text",
                      { class: "pm-log-text" },
                      vue.toDisplayString(log.content),
                      1
                      /* TEXT */
                    ),
                    log.recorder !== "系统记录" ? (vue.openBlock(), vue.createElementBlock(
                      "text",
                      {
                        key: 0,
                        class: "pm-log-recorder"
                      },
                      "记录人：" + vue.toDisplayString(log.recorder),
                      1
                      /* TEXT */
                    )) : (vue.openBlock(), vue.createElementBlock("text", {
                      key: 1,
                      class: "pm-log-recorder system"
                    }, "系统记录"))
                  ]);
                }),
                128
                /* KEYED_FRAGMENT */
              ))
            ]),
            vue.createElementVNode("view", { style: { "height": "30rpx" } })
          ])
        ])
      ])) : vue.createCommentVNode("v-if", true),
      _ctx.showPetRemarkInput ? (vue.openBlock(), vue.createElementBlock("view", {
        key: 1,
        class: "upload-modal-mask",
        onClick: _cache[17] || (_cache[17] = (...args) => _ctx.closePetRemarkInput && _ctx.closePetRemarkInput(...args))
      }, [
        vue.createElementVNode("view", {
          class: "upload-modal-content",
          onClick: _cache[16] || (_cache[16] = vue.withModifiers(() => {
          }, ["stop"]))
        }, [
          vue.createElementVNode("view", { class: "um-header" }, [
            vue.createElementVNode("text", { class: "um-title" }, "添加备注")
          ]),
          vue.createElementVNode("view", { class: "um-body" }, [
            vue.withDirectives(vue.createElementVNode(
              "textarea",
              {
                class: "um-textarea",
                "onUpdate:modelValue": _cache[14] || (_cache[14] = ($event) => _ctx.petRemarkText = $event),
                "auto-height": "",
                placeholder: "请输入宠物备注内容...",
                "placeholder-style": "color:#ccc; font-size:26rpx;"
              },
              null,
              512
              /* NEED_PATCH */
            ), [
              [vue.vModelText, _ctx.petRemarkText]
            ])
          ]),
          vue.createElementVNode("view", { class: "um-footer" }, [
            vue.createElementVNode("button", {
              class: "um-submit-btn active",
              onClick: _cache[15] || (_cache[15] = (...args) => _ctx.submitPetRemark && _ctx.submitPetRemark(...args))
            }, "确认提交")
          ])
        ])
      ])) : vue.createCommentVNode("v-if", true),
      _ctx.showNavModal ? (vue.openBlock(), vue.createElementBlock("view", {
        key: 2,
        class: "nav-modal-mask",
        onClick: _cache[23] || (_cache[23] = (...args) => _ctx.closeNavModal && _ctx.closeNavModal(...args))
      }, [
        vue.createElementVNode("view", {
          class: "nav-action-sheet",
          onClick: _cache[22] || (_cache[22] = vue.withModifiers(() => {
          }, ["stop"]))
        }, [
          vue.createElementVNode("view", { class: "nav-sheet-title" }, "选择地图进行导航"),
          vue.createElementVNode("view", {
            class: "nav-sheet-item",
            onClick: _cache[18] || (_cache[18] = ($event) => _ctx.chooseMap("高德"))
          }, "高德地图"),
          vue.createElementVNode("view", {
            class: "nav-sheet-item",
            onClick: _cache[19] || (_cache[19] = ($event) => _ctx.chooseMap("腾讯"))
          }, "腾讯地图"),
          vue.createElementVNode("view", {
            class: "nav-sheet-item",
            onClick: _cache[20] || (_cache[20] = ($event) => _ctx.chooseMap("百度"))
          }, "百度地图"),
          vue.createElementVNode("view", { class: "nav-sheet-gap" }),
          vue.createElementVNode("view", {
            class: "nav-sheet-item cancel",
            onClick: _cache[21] || (_cache[21] = (...args) => _ctx.closeNavModal && _ctx.closeNavModal(...args))
          }, "取消")
        ])
      ])) : vue.createCommentVNode("v-if", true),
      _ctx.showUploadModal ? (vue.openBlock(), vue.createElementBlock("view", {
        key: 3,
        class: "upload-modal-mask",
        onClick: _cache[28] || (_cache[28] = (...args) => _ctx.closeUploadModal && _ctx.closeUploadModal(...args))
      }, [
        vue.createElementVNode("view", {
          class: "upload-modal-content",
          onClick: _cache[27] || (_cache[27] = vue.withModifiers(() => {
          }, ["stop"]))
        }, [
          vue.createElementVNode("view", { class: "um-header" }, [
            vue.createElementVNode(
              "text",
              { class: "um-title" },
              "上传图或视频 (" + vue.toDisplayString(_ctx.modalMediaList.length) + "/5)",
              1
              /* TEXT */
            )
          ]),
          vue.createElementVNode("view", { class: "um-body" }, [
            vue.createElementVNode("view", { class: "um-grid" }, [
              (vue.openBlock(true), vue.createElementBlock(
                vue.Fragment,
                null,
                vue.renderList(_ctx.modalMediaList, (img, idx) => {
                  return vue.openBlock(), vue.createElementBlock("view", {
                    class: "um-item",
                    key: idx
                  }, [
                    vue.createElementVNode("image", {
                      class: "um-preview",
                      src: img,
                      mode: "aspectFill"
                    }, null, 8, ["src"]),
                    vue.createElementVNode("view", {
                      class: "um-del",
                      onClick: ($event) => _ctx.removeModalMedia(idx)
                    }, "×", 8, ["onClick"])
                  ]);
                }),
                128
                /* KEYED_FRAGMENT */
              )),
              _ctx.modalMediaList.length < 5 ? (vue.openBlock(), vue.createElementBlock("view", {
                key: 0,
                class: "um-add",
                onClick: _cache[24] || (_cache[24] = (...args) => _ctx.chooseModalMedia && _ctx.chooseModalMedia(...args))
              }, [
                vue.createElementVNode("image", {
                  class: "um-add-icon",
                  src: _imports_1$6
                }),
                vue.createElementVNode("text", { class: "um-add-text" }, "拍摄/上传")
              ])) : vue.createCommentVNode("v-if", true)
            ]),
            vue.withDirectives(vue.createElementVNode(
              "textarea",
              {
                class: "um-textarea",
                "onUpdate:modelValue": _cache[25] || (_cache[25] = ($event) => _ctx.modalRemark = $event),
                placeholder: "在此输入备注信息...",
                "placeholder-style": "color:#ccc; font-size:26rpx;"
              },
              null,
              512
              /* NEED_PATCH */
            ), [
              [vue.vModelText, _ctx.modalRemark]
            ])
          ]),
          vue.createElementVNode("view", { class: "um-footer" }, [
            vue.createElementVNode(
              "button",
              {
                class: vue.normalizeClass(["um-submit-btn", { "active": _ctx.modalMediaList.length > 0 }]),
                onClick: _cache[26] || (_cache[26] = (...args) => _ctx.confirmUploadModal && _ctx.confirmUploadModal(...args))
              },
              "确认提交",
              2
              /* CLASS */
            )
          ])
        ])
      ])) : vue.createCommentVNode("v-if", true),
      _ctx.showSumModal ? (vue.openBlock(), vue.createElementBlock("view", {
        key: 4,
        class: "sum-modal-mask",
        onClick: _cache[32] || (_cache[32] = (...args) => _ctx.closeSumModal && _ctx.closeSumModal(...args))
      }, [
        vue.createElementVNode("view", {
          class: "sum-modal-card",
          onClick: _cache[31] || (_cache[31] = vue.withModifiers(() => {
          }, ["stop"]))
        }, [
          vue.createElementVNode("scroll-view", {
            "scroll-y": "",
            class: "sum-modal-scroll"
          }, [
            vue.createElementVNode("view", { class: "sum-modal-inner" }, [
              vue.createElementVNode("text", { class: "sum-modal-title" }, "宠物护理工作小结"),
              vue.createElementVNode("view", { class: "sum-meta-row" }, [
                vue.createElementVNode("text", { class: "sum-meta-label" }, "日期："),
                vue.createElementVNode(
                  "text",
                  { class: "sum-meta-val" },
                  vue.toDisplayString(_ctx.sumDate),
                  1
                  /* TEXT */
                )
              ]),
              vue.createElementVNode("view", { class: "sum-meta-row" }, [
                vue.createElementVNode("text", { class: "sum-meta-label" }, "客户住址："),
                vue.createElementVNode(
                  "text",
                  { class: "sum-meta-val" },
                  vue.toDisplayString(_ctx.orderDetail.endAddress),
                  1
                  /* TEXT */
                )
              ]),
              vue.createElementVNode("view", { class: "sum-meta-row" }, [
                vue.createElementVNode("text", { class: "sum-meta-label" }, "宠主姓名："),
                vue.createElementVNode(
                  "text",
                  { class: "sum-meta-val" },
                  vue.toDisplayString(_ctx.orderDetail.ownerName || "张**"),
                  1
                  /* TEXT */
                )
              ]),
              vue.createElementVNode("view", { class: "sum-section-title" }, "宠物信息"),
              vue.createElementVNode("view", { class: "sum-pet-card" }, [
                vue.createElementVNode("image", {
                  class: "sum-pet-avatar",
                  src: _ctx.orderDetail.petAvatar,
                  mode: "aspectFill"
                }, null, 8, ["src"]),
                vue.createElementVNode("view", { class: "sum-pet-info" }, [
                  vue.createElementVNode("view", { class: "sum-pet-name-row" }, [
                    vue.createElementVNode(
                      "text",
                      { class: "sum-pet-name" },
                      vue.toDisplayString(_ctx.orderDetail.petName),
                      1
                      /* TEXT */
                    ),
                    vue.createElementVNode(
                      "text",
                      { class: "sum-pet-breed" },
                      "品种: " + vue.toDisplayString(_ctx.orderDetail.petBreed),
                      1
                      /* TEXT */
                    )
                  ]),
                  vue.createElementVNode(
                    "text",
                    { class: "sum-pet-remark" },
                    vue.toDisplayString(_ctx.orderDetail.petNotes || "喜欢坐车，有点晗车，请注意通风。"),
                    1
                    /* TEXT */
                  )
                ])
              ]),
              vue.createElementVNode("view", { class: "sum-section-title" }, "服务内容记录"),
              vue.withDirectives(vue.createElementVNode(
                "textarea",
                {
                  class: "sum-textarea",
                  "onUpdate:modelValue": _cache[29] || (_cache[29] = ($event) => _ctx.sumContent = $event),
                  "auto-height": "",
                  placeholder: "请填写服务内容...",
                  "placeholder-style": "color:#ccc"
                },
                null,
                512
                /* NEED_PATCH */
              ), [
                [vue.vModelText, _ctx.sumContent]
              ]),
              vue.createElementVNode("view", { class: "sum-sign-row" }, [
                vue.createElementVNode("text", { class: "sum-sign-label" }, "护宠师签名："),
                vue.createElementVNode(
                  "text",
                  { class: "sum-sign-val" },
                  vue.toDisplayString(_ctx.sumSigner),
                  1
                  /* TEXT */
                )
              ]),
              vue.createElementVNode("view", { style: { "height": "20rpx" } })
            ])
          ]),
          vue.createElementVNode("view", { class: "sum-footer" }, [
            vue.createElementVNode("button", {
              class: "sum-submit-btn",
              onClick: _cache[30] || (_cache[30] = (...args) => _ctx.submitSumModal && _ctx.submitSumModal(...args))
            }, "提交小结")
          ])
        ])
      ])) : vue.createCommentVNode("v-if", true)
    ]);
  }
  const PagesOrdersDetail = /* @__PURE__ */ _export_sfc(_sfc_main$q, [["render", _sfc_render$p], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/orders/detail.vue"]]);
  const _sfc_main$p = {
    data() {
      return {
        // 已选异常类型
        selectedType: "其他异常",
        // 异常描述
        anomalyDesc: "",
        // 照片列表
        photoList: [],
        // 是否显示类型选择器
        showTypeSheet: false,
        // 异常类型列表
        anomalyTypes: [
          "无法联系用户",
          "地址错误",
          "宠物身体异常",
          "设施损坏",
          "用户拒收",
          "其他异常"
        ]
      };
    },
    methods: {
      // 打开类型选择器
      openTypeSheet() {
        this.showTypeSheet = true;
      },
      // 关闭类型选择器
      closeTypeSheet() {
        this.showTypeSheet = false;
      },
      // 选择异常类型
      selectType(type) {
        this.selectedType = type;
        this.closeTypeSheet();
      },
      // 选择照片
      choosePhoto() {
        uni.chooseImage({
          count: 5 - this.photoList.length,
          sizeType: ["compressed"],
          sourceType: ["album", "camera"],
          success: (res) => {
            this.photoList = [...this.photoList, ...res.tempFilePaths].slice(0, 5);
          }
        });
      },
      // 删除照片
      removePhoto(idx) {
        this.photoList.splice(idx, 1);
      },
      // 提交上报
      submitAnomaly() {
        if (!this.selectedType) {
          uni.showToast({ title: "请选择异常类型", icon: "none" });
          return;
        }
        if (this.photoList.length === 0) {
          uni.showToast({ title: "请上传现场照片", icon: "none" });
          return;
        }
        uni.showLoading({ title: "提交中..." });
        setTimeout(() => {
          uni.hideLoading();
          uni.showToast({ title: "上报成功", icon: "success" });
          setTimeout(() => {
            uni.navigateBack();
          }, 1500);
        }, 1e3);
      }
    }
  };
  function _sfc_render$o(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "anomaly-container" }, [
      vue.createElementVNode("scroll-view", {
        "scroll-y": "",
        class: "anomaly-scroll"
      }, [
        vue.createElementVNode("view", { class: "ano-card" }, [
          vue.createElementVNode("view", { class: "ano-section-title" }, [
            vue.createElementVNode("view", { class: "ano-title-bar" }),
            vue.createElementVNode("text", { class: "ano-title-text" }, "异常类型")
          ]),
          vue.createElementVNode("view", {
            class: "ano-type-row",
            onClick: _cache[0] || (_cache[0] = (...args) => $options.openTypeSheet && $options.openTypeSheet(...args))
          }, [
            vue.createElementVNode(
              "text",
              {
                class: vue.normalizeClass(["ano-type-val", { "placeholder": !$data.selectedType }])
              },
              vue.toDisplayString($data.selectedType || "其他异常"),
              3
              /* TEXT, CLASS */
            ),
            vue.createElementVNode("image", {
              class: "ano-right-arrow",
              src: _imports_0$2
            })
          ])
        ]),
        vue.createElementVNode("view", { class: "ano-card" }, [
          vue.createElementVNode("view", { class: "ano-section-title" }, [
            vue.createElementVNode("view", { class: "ano-title-bar" }),
            vue.createElementVNode("text", { class: "ano-title-text" }, "异常描述")
          ]),
          vue.withDirectives(vue.createElementVNode(
            "textarea",
            {
              class: "ano-textarea",
              "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => $data.anomalyDesc = $event),
              placeholder: "请详细描述现场异常情况...",
              "placeholder-style": "color:#ccc; font-size:28rpx;",
              maxlength: "500"
            },
            null,
            512
            /* NEED_PATCH */
          ), [
            [vue.vModelText, $data.anomalyDesc]
          ])
        ]),
        vue.createElementVNode("view", { class: "ano-card" }, [
          vue.createElementVNode("view", { class: "ano-section-title" }, [
            vue.createElementVNode("view", { class: "ano-title-bar" }),
            vue.createElementVNode("text", { class: "ano-title-text" }, "现场照片 (必填，最多5张)")
          ]),
          vue.createElementVNode("view", { class: "ano-photo-grid" }, [
            (vue.openBlock(true), vue.createElementBlock(
              vue.Fragment,
              null,
              vue.renderList($data.photoList, (img, idx) => {
                return vue.openBlock(), vue.createElementBlock("view", {
                  class: "ano-photo-item",
                  key: idx
                }, [
                  vue.createElementVNode("image", {
                    class: "ano-photo-preview",
                    src: img,
                    mode: "aspectFill"
                  }, null, 8, ["src"]),
                  vue.createElementVNode("view", {
                    class: "ano-photo-del",
                    onClick: ($event) => $options.removePhoto(idx)
                  }, "×", 8, ["onClick"])
                ]);
              }),
              128
              /* KEYED_FRAGMENT */
            )),
            $data.photoList.length < 5 ? (vue.openBlock(), vue.createElementBlock("view", {
              key: 0,
              class: "ano-photo-add",
              onClick: _cache[2] || (_cache[2] = (...args) => $options.choosePhoto && $options.choosePhoto(...args))
            }, [
              vue.createElementVNode("image", {
                class: "ano-add-icon",
                src: _imports_1$6
              }),
              vue.createElementVNode("text", { class: "ano-add-text" }, "上传")
            ])) : vue.createCommentVNode("v-if", true)
          ])
        ]),
        vue.createElementVNode("view", { style: { "height": "160rpx" } })
      ]),
      vue.createElementVNode("view", { class: "ano-footer" }, [
        vue.createElementVNode("button", {
          class: "ano-submit-btn",
          onClick: _cache[3] || (_cache[3] = (...args) => $options.submitAnomaly && $options.submitAnomaly(...args))
        }, "提交上报")
      ]),
      $data.showTypeSheet ? (vue.openBlock(), vue.createElementBlock("view", {
        key: 0,
        class: "ano-sheet-mask",
        onClick: _cache[6] || (_cache[6] = (...args) => $options.closeTypeSheet && $options.closeTypeSheet(...args))
      }, [
        vue.createElementVNode("view", {
          class: "ano-sheet",
          onClick: _cache[5] || (_cache[5] = vue.withModifiers(() => {
          }, ["stop"]))
        }, [
          vue.createElementVNode("text", { class: "ano-sheet-title" }, "选择异常类型"),
          vue.createElementVNode("scroll-view", {
            "scroll-y": "",
            class: "ano-sheet-list"
          }, [
            (vue.openBlock(true), vue.createElementBlock(
              vue.Fragment,
              null,
              vue.renderList($data.anomalyTypes, (type, idx) => {
                return vue.openBlock(), vue.createElementBlock("view", {
                  class: "ano-sheet-item",
                  key: idx,
                  onClick: ($event) => $options.selectType(type)
                }, [
                  vue.createElementVNode(
                    "text",
                    {
                      class: vue.normalizeClass(["ano-sheet-item-text", { "selected": $data.selectedType === type }])
                    },
                    vue.toDisplayString(type),
                    3
                    /* TEXT, CLASS */
                  ),
                  $data.selectedType === type ? (vue.openBlock(), vue.createElementBlock("image", {
                    key: 0,
                    class: "ano-check-icon",
                    src: _imports_0$2
                  })) : vue.createCommentVNode("v-if", true)
                ], 8, ["onClick"]);
              }),
              128
              /* KEYED_FRAGMENT */
            ))
          ]),
          vue.createElementVNode("view", {
            class: "ano-sheet-cancel",
            onClick: _cache[4] || (_cache[4] = (...args) => $options.closeTypeSheet && $options.closeTypeSheet(...args))
          }, "取消")
        ])
      ])) : vue.createCommentVNode("v-if", true)
    ]);
  }
  const PagesOrdersAnomaly = /* @__PURE__ */ _export_sfc(_sfc_main$p, [["render", _sfc_render$o], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/orders/anomaly.vue"]]);
  const _sfc_main$o = {
    data() {
      return {
        tabs: ["全部", "已完成", "已拒绝"],
        activeTab: 0,
        orders: [
          {
            orderType: 1,
            typeName: "接送",
            typeIcon: "/static/icons/car.svg",
            status: "完成",
            finishTime: "2026/02/03 14:30",
            serviceTime: "2026/02/10 10:00",
            petName: "哈士奇宝宝",
            petBreed: "哈士奇",
            petAvatar: "/static/dog.png",
            price: "20.00",
            startName: "武汉大学宠物店",
            startAddr: "武汉市洪山区珞喻路458号",
            endName: "张** 189****8451",
            endAddr: "武汉市武昌区新区大道凤凰广场A座",
            serviceNote: ""
          },
          {
            orderType: 2,
            typeName: "喂遛",
            typeIcon: "/static/icons/walk.svg",
            status: "完成",
            finishTime: "2026/02/03 15:00",
            serviceTime: "2026/02/11 14:00",
            petName: "金毛",
            petBreed: "金毛寻回犬",
            petAvatar: "/static/dog.png",
            price: "35.00",
            startName: "",
            startAddr: "",
            endName: "王女士 138****1234",
            endAddr: "武汉市江汉区泛海国际居住区",
            serviceNote: "需自带牵引绳，遛弯30分钟。"
          },
          {
            orderType: 3,
            typeName: "洗护",
            typeIcon: "/static/icons/wash.svg",
            status: "拒绝",
            finishTime: "2026/02/03 09:30",
            serviceTime: "2026/02/12 09:30",
            petName: "Mimi",
            petBreed: "布偶猫",
            petAvatar: "/static/dog.png",
            price: "50.00",
            startName: "",
            startAddr: "",
            endName: "赵先生 159****9876",
            endAddr: "武汉市汉阳区钟家村",
            serviceNote: "上门洗澡，剪指甲。"
          }
        ]
      };
    },
    computed: {
      filteredOrders() {
        if (this.activeTab === 0)
          return this.orders;
        if (this.activeTab === 1)
          return this.orders.filter((o) => o.status === "完成");
        return this.orders.filter((o) => o.status === "拒绝");
      }
    },
    methods: {
      switchTab(idx) {
        this.activeTab = idx;
      }
    }
  };
  function _sfc_render$n(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode("view", { class: "stats-banner" }, [
        vue.createElementVNode("view", { class: "banner-item" }, [
          vue.createElementVNode("text", { class: "banner-num" }, "2546"),
          vue.createElementVNode("text", { class: "banner-label" }, "累计接单")
        ]),
        vue.createElementVNode("view", { class: "banner-item" }, [
          vue.createElementVNode("text", { class: "banner-num" }, "10"),
          vue.createElementVNode("text", { class: "banner-label" }, "累计拒单")
        ]),
        vue.createElementVNode("view", { class: "banner-item" }, [
          vue.createElementVNode("text", { class: "banner-num" }, "10"),
          vue.createElementVNode("text", { class: "banner-label" }, "奖励单量")
        ]),
        vue.createElementVNode("view", { class: "banner-item" }, [
          vue.createElementVNode("text", { class: "banner-num" }, "10"),
          vue.createElementVNode("text", { class: "banner-label" }, "惩罚单量")
        ]),
        vue.createElementVNode("view", { class: "banner-item" }, [
          vue.createElementVNode("text", { class: "banner-num" }, [
            vue.createTextVNode("158"),
            vue.createElementVNode("text", { class: "banner-unit" }, "天")
          ]),
          vue.createElementVNode("text", { class: "banner-label" }, "服务时长")
        ])
      ]),
      vue.createElementVNode("view", { class: "tab-bar" }, [
        (vue.openBlock(true), vue.createElementBlock(
          vue.Fragment,
          null,
          vue.renderList($data.tabs, (tab, idx) => {
            return vue.openBlock(), vue.createElementBlock("view", {
              class: vue.normalizeClass(["tab-item", { active: $data.activeTab === idx }]),
              key: idx,
              onClick: ($event) => $options.switchTab(idx)
            }, [
              vue.createElementVNode(
                "text",
                null,
                vue.toDisplayString(tab),
                1
                /* TEXT */
              ),
              $data.activeTab === idx ? (vue.openBlock(), vue.createElementBlock("view", {
                key: 0,
                class: "tab-line"
              })) : vue.createCommentVNode("v-if", true)
            ], 10, ["onClick"]);
          }),
          128
          /* KEYED_FRAGMENT */
        ))
      ]),
      vue.createElementVNode("scroll-view", {
        "scroll-y": "",
        class: "order-scroll"
      }, [
        vue.createElementVNode("view", { style: { "height": "16rpx" } }),
        (vue.openBlock(true), vue.createElementBlock(
          vue.Fragment,
          null,
          vue.renderList($options.filteredOrders, (order, idx) => {
            return vue.openBlock(), vue.createElementBlock("view", {
              class: "order-card",
              key: idx
            }, [
              vue.createElementVNode("view", { class: "card-header" }, [
                vue.createElementVNode("view", { class: "type-badge" }, [
                  vue.createElementVNode("image", {
                    class: "type-icon",
                    src: order.typeIcon
                  }, null, 8, ["src"]),
                  vue.createElementVNode(
                    "text",
                    { class: "type-text" },
                    vue.toDisplayString(order.typeName),
                    1
                    /* TEXT */
                  )
                ]),
                vue.createElementVNode(
                  "text",
                  {
                    class: vue.normalizeClass(["status-text", order.status === "完成" ? "green" : "red"])
                  },
                  vue.toDisplayString(order.status === "完成" ? "完成：" : "拒绝：") + vue.toDisplayString(order.finishTime),
                  3
                  /* TEXT, CLASS */
                )
              ]),
              vue.createElementVNode(
                "text",
                { class: "service-time" },
                "服务时间：" + vue.toDisplayString(order.serviceTime),
                1
                /* TEXT */
              ),
              vue.createElementVNode("view", { class: "pet-card" }, [
                vue.createElementVNode("image", {
                  class: "pet-avatar",
                  src: order.petAvatar,
                  mode: "aspectFill"
                }, null, 8, ["src"]),
                vue.createElementVNode("view", { class: "pet-info" }, [
                  vue.createElementVNode(
                    "text",
                    { class: "pet-name" },
                    vue.toDisplayString(order.petName),
                    1
                    /* TEXT */
                  ),
                  vue.createElementVNode(
                    "text",
                    { class: "pet-breed" },
                    "品种: " + vue.toDisplayString(order.petBreed),
                    1
                    /* TEXT */
                  )
                ]),
                vue.createElementVNode(
                  "text",
                  { class: "pet-price" },
                  "¥" + vue.toDisplayString(order.price),
                  1
                  /* TEXT */
                )
              ]),
              vue.createElementVNode("view", { class: "route-info" }, [
                order.orderType === 1 ? (vue.openBlock(), vue.createElementBlock(
                  vue.Fragment,
                  { key: 0 },
                  [
                    vue.createElementVNode("view", { class: "route-item" }, [
                      vue.createElementVNode("view", { class: "icon-circle pickup" }, "取"),
                      vue.createElementVNode("view", { class: "route-connector" }),
                      vue.createElementVNode("view", { class: "address-box" }, [
                        vue.createElementVNode(
                          "text",
                          { class: "addr-title" },
                          vue.toDisplayString(order.startName),
                          1
                          /* TEXT */
                        ),
                        vue.createElementVNode(
                          "text",
                          { class: "addr-desc" },
                          vue.toDisplayString(order.startAddr),
                          1
                          /* TEXT */
                        )
                      ])
                    ]),
                    vue.createElementVNode("view", { class: "route-item" }, [
                      vue.createElementVNode("view", { class: "icon-circle deliver" }, "送"),
                      vue.createElementVNode("view", { class: "address-box" }, [
                        vue.createElementVNode(
                          "text",
                          { class: "addr-title" },
                          vue.toDisplayString(order.endName),
                          1
                          /* TEXT */
                        ),
                        vue.createElementVNode(
                          "text",
                          { class: "addr-desc" },
                          vue.toDisplayString(order.endAddr),
                          1
                          /* TEXT */
                        )
                      ])
                    ])
                  ],
                  64
                  /* STABLE_FRAGMENT */
                )) : (vue.openBlock(), vue.createElementBlock(
                  vue.Fragment,
                  { key: 1 },
                  [
                    vue.createElementVNode("view", { class: "route-item" }, [
                      vue.createElementVNode("view", { class: "icon-circle service" }, "服"),
                      vue.createElementVNode("view", { class: "address-box" }, [
                        vue.createElementVNode(
                          "text",
                          { class: "addr-title" },
                          vue.toDisplayString(order.endName),
                          1
                          /* TEXT */
                        ),
                        vue.createElementVNode(
                          "text",
                          { class: "addr-desc" },
                          vue.toDisplayString(order.endAddr),
                          1
                          /* TEXT */
                        )
                      ])
                    ]),
                    order.serviceNote ? (vue.openBlock(), vue.createElementBlock("view", {
                      key: 0,
                      class: "service-note-row"
                    }, [
                      vue.createElementVNode(
                        "text",
                        { class: "service-note-text" },
                        "服务内容：" + vue.toDisplayString(order.serviceNote),
                        1
                        /* TEXT */
                      )
                    ])) : vue.createCommentVNode("v-if", true)
                  ],
                  64
                  /* STABLE_FRAGMENT */
                ))
              ])
            ]);
          }),
          128
          /* KEYED_FRAGMENT */
        )),
        $options.filteredOrders.length === 0 ? (vue.openBlock(), vue.createElementBlock("view", {
          key: 0,
          class: "empty-state"
        }, [
          vue.createElementVNode("text", { class: "empty-text" }, "暂无相关订单")
        ])) : vue.createCommentVNode("v-if", true),
        vue.createElementVNode("view", { style: { "height": "40rpx" } })
      ])
    ]);
  }
  const PagesMineOrderStats = /* @__PURE__ */ _export_sfc(_sfc_main$o, [["render", _sfc_render$n], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/mine/order-stats.vue"]]);
  const _sfc_main$n = {
    data() {
      return {
        tabs: ["全部", "奖励", "惩罚"],
        activeTab: 0,
        selectedYear: 2026,
        selectedMonth: 2,
        // 月份选择器状态
        showMonthPicker: false,
        pickerYear: 2026,
        pickerMonth: 2,
        years: [2021, 2022, 2023, 2024, 2025, 2026],
        months: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12],
        yearScrollTop: 0,
        monthScrollTop: 0,
        // 奖惩记录列表
        records: [
          { date: "09-01", title: "单量奖励", desc: "超140单", amount: 560, status: "待入账", statusClass: "pending", type: "reward" },
          { date: "08-01", title: "单量奖励", desc: "超470单", amount: 2050, status: "已入账", statusClass: "credited", type: "reward" },
          { date: "09-02", title: "超时扣款", desc: "订单#T982 超时30分钟", amount: -15, status: "已扣款", statusClass: "deducted", type: "penalty" },
          { date: "09-05", title: "高温补贴", desc: "8月份高温天气补贴", amount: 300, status: "已入账", statusClass: "credited", type: "reward" }
        ]
      };
    },
    computed: {
      filteredList() {
        if (this.activeTab === 0)
          return this.records;
        if (this.activeTab === 1)
          return this.records.filter((r) => r.type === "reward");
        return this.records.filter((r) => r.type === "penalty");
      }
    },
    methods: {
      switchTab(idx) {
        this.activeTab = idx;
      },
      openMonthPicker() {
        this.pickerYear = this.selectedYear;
        this.pickerMonth = this.selectedMonth;
        this.showMonthPicker = true;
      },
      closeMonthPicker() {
        this.showMonthPicker = false;
      },
      confirmMonthPicker() {
        this.selectedYear = this.pickerYear;
        this.selectedMonth = this.pickerMonth;
        this.closeMonthPicker();
      },
      goToAll() {
        uni.navigateTo({ url: "/pages/mine/rewards-all" });
      }
    }
  };
  function _sfc_render$m(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode("view", { class: "top-banner" }, [
        vue.createElementVNode("view", {
          class: "month-btn",
          onClick: _cache[0] || (_cache[0] = (...args) => $options.openMonthPicker && $options.openMonthPicker(...args))
        }, [
          vue.createElementVNode(
            "text",
            { class: "month-text" },
            vue.toDisplayString($data.selectedYear) + "年" + vue.toDisplayString($data.selectedMonth) + "月 ▾",
            1
            /* TEXT */
          )
        ]),
        vue.createElementVNode("view", { class: "stats-grid" }, [
          vue.createElementVNode("view", { class: "stats-cell" }, [
            vue.createElementVNode("text", { class: "stats-label" }, "奖励订单"),
            vue.createElementVNode("text", { class: "stats-num" }, [
              vue.createTextVNode("3"),
              vue.createElementVNode("text", { class: "stats-unit" }, "单")
            ]),
            vue.createElementVNode("view", { class: "stats-divider" }),
            vue.createElementVNode("text", { class: "stats-sub" }, "累计 1258单")
          ]),
          vue.createElementVNode("view", { class: "stats-cell" }, [
            vue.createElementVNode("text", { class: "stats-label" }, "惩罚订单"),
            vue.createElementVNode("text", { class: "stats-num" }, [
              vue.createTextVNode("1"),
              vue.createElementVNode("text", { class: "stats-unit" }, "单")
            ]),
            vue.createElementVNode("view", { class: "stats-divider" }),
            vue.createElementVNode("text", { class: "stats-sub" }, "累计 12单")
          ]),
          vue.createElementVNode("view", { class: "stats-cell" }, [
            vue.createElementVNode("text", { class: "stats-label" }, "奖励金额"),
            vue.createElementVNode("text", { class: "stats-num reward-num" }, "2910.00"),
            vue.createElementVNode("view", { class: "stats-divider" }),
            vue.createElementVNode("text", { class: "stats-sub" }, "累计 45800.00")
          ]),
          vue.createElementVNode("view", { class: "stats-cell" }, [
            vue.createElementVNode("text", { class: "stats-label" }, "惩罚金额"),
            vue.createElementVNode("text", { class: "stats-num penalty-num" }, "-15.00"),
            vue.createElementVNode("view", { class: "stats-divider" }),
            vue.createElementVNode("text", { class: "stats-sub" }, "累计 350.00")
          ])
        ])
      ]),
      vue.createElementVNode("view", { class: "list-header" }, [
        vue.createElementVNode("view", { class: "tab-bar" }, [
          (vue.openBlock(true), vue.createElementBlock(
            vue.Fragment,
            null,
            vue.renderList($data.tabs, (tab, idx) => {
              return vue.openBlock(), vue.createElementBlock("view", {
                class: vue.normalizeClass(["tab-item", { active: $data.activeTab === idx }]),
                key: idx,
                onClick: ($event) => $options.switchTab(idx)
              }, [
                vue.createElementVNode(
                  "text",
                  null,
                  vue.toDisplayString(tab),
                  1
                  /* TEXT */
                ),
                $data.activeTab === idx ? (vue.openBlock(), vue.createElementBlock("view", {
                  key: 0,
                  class: "tab-line"
                })) : vue.createCommentVNode("v-if", true)
              ], 10, ["onClick"]);
            }),
            128
            /* KEYED_FRAGMENT */
          ))
        ]),
        vue.createElementVNode("view", {
          class: "view-all-btn",
          onClick: _cache[1] || (_cache[1] = (...args) => $options.goToAll && $options.goToAll(...args))
        }, [
          vue.createElementVNode("text", { class: "view-all-text" }, "查看全部 ›")
        ])
      ]),
      vue.createElementVNode("view", { class: "record-list" }, [
        (vue.openBlock(true), vue.createElementBlock(
          vue.Fragment,
          null,
          vue.renderList($options.filteredList, (item, idx) => {
            return vue.openBlock(), vue.createElementBlock("view", {
              class: "record-item",
              key: idx
            }, [
              vue.createElementVNode(
                "view",
                {
                  class: vue.normalizeClass(["ri-icon", item.amount > 0 ? "ri-reward" : "ri-penalty"])
                },
                [
                  vue.createElementVNode("text", { class: "ri-icon-text" }, "¥")
                ],
                2
                /* CLASS */
              ),
              vue.createElementVNode("view", { class: "ri-content" }, [
                vue.createElementVNode("view", { class: "ri-title-row" }, [
                  vue.createElementVNode(
                    "text",
                    { class: "ri-date" },
                    vue.toDisplayString(item.date),
                    1
                    /* TEXT */
                  ),
                  vue.createElementVNode(
                    "text",
                    { class: "ri-title" },
                    vue.toDisplayString(item.title),
                    1
                    /* TEXT */
                  )
                ]),
                vue.createElementVNode(
                  "text",
                  { class: "ri-desc" },
                  vue.toDisplayString(item.desc),
                  1
                  /* TEXT */
                )
              ]),
              vue.createElementVNode("view", { class: "ri-right" }, [
                vue.createElementVNode(
                  "text",
                  {
                    class: vue.normalizeClass(["ri-amount", item.amount > 0 ? "positive" : "negative"])
                  },
                  vue.toDisplayString(item.amount > 0 ? "+" : "") + vue.toDisplayString(item.amount.toFixed(2)),
                  3
                  /* TEXT, CLASS */
                ),
                vue.createElementVNode(
                  "text",
                  {
                    class: vue.normalizeClass(["ri-status", item.statusClass])
                  },
                  vue.toDisplayString(item.status),
                  3
                  /* TEXT, CLASS */
                )
              ])
            ]);
          }),
          128
          /* KEYED_FRAGMENT */
        )),
        vue.createElementVNode("text", { class: "more-hint" }, "更多记录请点击上方的查看全部")
      ]),
      $data.showMonthPicker ? (vue.openBlock(), vue.createElementBlock("view", {
        key: 0,
        class: "picker-mask",
        onClick: _cache[7] || (_cache[7] = (...args) => $options.closeMonthPicker && $options.closeMonthPicker(...args))
      }, [
        vue.createElementVNode("view", {
          class: "picker-sheet",
          onClick: _cache[6] || (_cache[6] = vue.withModifiers(() => {
          }, ["stop"]))
        }, [
          vue.createElementVNode("view", { class: "picker-header" }, [
            vue.createElementVNode("text", {
              class: "picker-cancel",
              onClick: _cache[2] || (_cache[2] = (...args) => $options.closeMonthPicker && $options.closeMonthPicker(...args))
            }, "取消"),
            vue.createElementVNode("text", { class: "picker-title" }, "选择时间"),
            vue.createElementVNode("text", {
              class: "picker-confirm",
              onClick: _cache[3] || (_cache[3] = (...args) => $options.confirmMonthPicker && $options.confirmMonthPicker(...args))
            }, "确定")
          ]),
          vue.createElementVNode("view", { class: "picker-body" }, [
            vue.createElementVNode("scroll-view", {
              "scroll-y": "",
              class: "picker-column",
              "scroll-top": $data.yearScrollTop,
              onScroll: _cache[4] || (_cache[4] = (...args) => _ctx.onYearScroll && _ctx.onYearScroll(...args))
            }, [
              vue.createElementVNode("view", { style: { "height": "80rpx" } }),
              (vue.openBlock(true), vue.createElementBlock(
                vue.Fragment,
                null,
                vue.renderList($data.years, (year) => {
                  return vue.openBlock(), vue.createElementBlock("view", {
                    class: vue.normalizeClass(["picker-col-item", { "picker-selected": $data.pickerYear === year }]),
                    key: year,
                    onClick: ($event) => $data.pickerYear = year
                  }, vue.toDisplayString(year) + "年", 11, ["onClick"]);
                }),
                128
                /* KEYED_FRAGMENT */
              )),
              vue.createElementVNode("view", { style: { "height": "80rpx" } })
            ], 40, ["scroll-top"]),
            vue.createElementVNode("view", { class: "picker-highlight" }),
            vue.createElementVNode("scroll-view", {
              "scroll-y": "",
              class: "picker-column",
              "scroll-top": $data.monthScrollTop,
              onScroll: _cache[5] || (_cache[5] = (...args) => _ctx.onMonthScroll && _ctx.onMonthScroll(...args))
            }, [
              vue.createElementVNode("view", { style: { "height": "80rpx" } }),
              (vue.openBlock(true), vue.createElementBlock(
                vue.Fragment,
                null,
                vue.renderList($data.months, (month) => {
                  return vue.openBlock(), vue.createElementBlock("view", {
                    class: vue.normalizeClass(["picker-col-item", { "picker-selected": $data.pickerMonth === month }]),
                    key: month,
                    onClick: ($event) => $data.pickerMonth = month
                  }, vue.toDisplayString(month) + "月", 11, ["onClick"]);
                }),
                128
                /* KEYED_FRAGMENT */
              )),
              vue.createElementVNode("view", { style: { "height": "80rpx" } })
            ], 40, ["scroll-top"])
          ])
        ])
      ])) : vue.createCommentVNode("v-if", true)
    ]);
  }
  const PagesMineRewards = /* @__PURE__ */ _export_sfc(_sfc_main$n, [["render", _sfc_render$m], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/mine/rewards.vue"]]);
  const _sfc_main$m = {
    data() {
      return {
        tabs: ["全部", "奖励", "惩罚"],
        activeTab: 0,
        // 所有完整记录（按月分组）
        allGroups: [
          {
            month: 9,
            credited: 30,
            pending: 0,
            items: [
              { date: "09-24", title: "高温补贴", desc: "9月份高温天气补贴", amount: 30, status: "已入账", statusClass: "credited", type: "reward" }
            ]
          },
          {
            month: 8,
            credited: 2610,
            pending: 0,
            items: [
              { date: "08-01", title: "单量奖励", desc: "超140单", amount: 560, status: "已入账", statusClass: "credited", type: "reward" },
              { date: "07-01", title: "单量奖励", desc: "超470单", amount: 2050, status: "已入账", statusClass: "credited", type: "reward" }
            ]
          },
          {
            month: 7,
            credited: 0,
            pending: 0,
            items: [
              { date: "07-15", title: "超时扣款", desc: "订单#T98211 超时30分钟", amount: -15, status: "已扣款", statusClass: "deducted", type: "penalty" },
              { date: "07-20", title: "客诉扣款", desc: "订单#T98222 餐品遗漏", amount: -50, status: "已扣款", statusClass: "deducted", type: "penalty" }
            ]
          }
        ]
      };
    },
    computed: {
      filteredGroups() {
        if (this.activeTab === 0)
          return this.allGroups;
        const typeKey = this.activeTab === 1 ? "reward" : "penalty";
        return this.allGroups.map((g) => ({
          ...g,
          items: g.items.filter((i) => i.type === typeKey)
        })).filter((g) => g.items.length > 0);
      }
    },
    methods: {
      switchTab(idx) {
        this.activeTab = idx;
      }
    }
  };
  function _sfc_render$l(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode("view", { class: "tab-bar" }, [
        (vue.openBlock(true), vue.createElementBlock(
          vue.Fragment,
          null,
          vue.renderList($data.tabs, (tab, idx) => {
            return vue.openBlock(), vue.createElementBlock("view", {
              class: vue.normalizeClass(["tab-item", { active: $data.activeTab === idx }]),
              key: idx,
              onClick: ($event) => $options.switchTab(idx)
            }, [
              vue.createElementVNode(
                "text",
                null,
                vue.toDisplayString(tab),
                1
                /* TEXT */
              ),
              $data.activeTab === idx ? (vue.openBlock(), vue.createElementBlock("view", {
                key: 0,
                class: "tab-line"
              })) : vue.createCommentVNode("v-if", true)
            ], 10, ["onClick"]);
          }),
          128
          /* KEYED_FRAGMENT */
        ))
      ]),
      vue.createElementVNode("scroll-view", {
        "scroll-y": "",
        class: "main-scroll"
      }, [
        (vue.openBlock(true), vue.createElementBlock(
          vue.Fragment,
          null,
          vue.renderList($options.filteredGroups, (group, gIdx) => {
            return vue.openBlock(), vue.createElementBlock("view", {
              key: gIdx,
              class: "month-group"
            }, [
              vue.createElementVNode("view", { class: "month-header" }, [
                vue.createElementVNode(
                  "text",
                  { class: "month-title" },
                  vue.toDisplayString(group.month) + "月",
                  1
                  /* TEXT */
                ),
                vue.createElementVNode("view", { class: "month-summary" }, [
                  vue.createElementVNode(
                    "text",
                    { class: "month-sum-text" },
                    "已入账¥" + vue.toDisplayString(group.credited.toFixed(2)),
                    1
                    /* TEXT */
                  ),
                  vue.createElementVNode(
                    "text",
                    { class: "month-sum-text" },
                    " 待入账¥" + vue.toDisplayString(group.pending.toFixed(2)),
                    1
                    /* TEXT */
                  )
                ])
              ]),
              (vue.openBlock(true), vue.createElementBlock(
                vue.Fragment,
                null,
                vue.renderList(group.items, (item, rIdx) => {
                  return vue.openBlock(), vue.createElementBlock("view", {
                    class: "record-item",
                    key: rIdx
                  }, [
                    vue.createElementVNode(
                      "view",
                      {
                        class: vue.normalizeClass(["ri-icon", item.amount > 0 ? "ri-reward" : "ri-penalty"])
                      },
                      [
                        vue.createElementVNode("text", { class: "ri-icon-text" }, "¥")
                      ],
                      2
                      /* CLASS */
                    ),
                    vue.createElementVNode("view", { class: "ri-content" }, [
                      vue.createElementVNode("view", { class: "ri-title-row" }, [
                        vue.createElementVNode(
                          "text",
                          { class: "ri-date" },
                          vue.toDisplayString(item.date),
                          1
                          /* TEXT */
                        ),
                        vue.createElementVNode(
                          "text",
                          { class: "ri-title" },
                          vue.toDisplayString(item.title),
                          1
                          /* TEXT */
                        )
                      ]),
                      vue.createElementVNode(
                        "text",
                        { class: "ri-desc" },
                        vue.toDisplayString(item.desc),
                        1
                        /* TEXT */
                      )
                    ]),
                    vue.createElementVNode("view", { class: "ri-right" }, [
                      vue.createElementVNode(
                        "text",
                        {
                          class: vue.normalizeClass(["ri-amount", item.amount > 0 ? "positive" : "negative"])
                        },
                        vue.toDisplayString(item.amount > 0 ? "+" : "") + vue.toDisplayString(item.amount.toFixed(2)),
                        3
                        /* TEXT, CLASS */
                      ),
                      vue.createElementVNode(
                        "text",
                        {
                          class: vue.normalizeClass(["ri-status", item.statusClass])
                        },
                        vue.toDisplayString(item.status),
                        3
                        /* TEXT, CLASS */
                      )
                    ])
                  ]);
                }),
                128
                /* KEYED_FRAGMENT */
              ))
            ]);
          }),
          128
          /* KEYED_FRAGMENT */
        )),
        vue.createElementVNode("view", { style: { "height": "40rpx" } })
      ])
    ]);
  }
  const PagesMineRewardsAll = /* @__PURE__ */ _export_sfc(_sfc_main$m, [["render", _sfc_render$l], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/mine/rewards-all.vue"]]);
  const logic = {
    data() {
      return {
        showServicePopup: false,
        showLogoutPopup: false,
        profile: null,
        profileLoading: false
      };
    },
    onShow() {
      if (isLoggedIn()) {
        this.loadProfile();
      }
    },
    methods: {
      async loadProfile() {
        if (this.profileLoading)
          return;
        this.profileLoading = true;
        try {
          const res = await getMyProfile();
          this.profile = res.data || null;
        } catch (err) {
          formatAppLog("error", "at pages/mine/logic.js:27", "获取个人信息失败:", err);
        } finally {
          this.profileLoading = false;
        }
      },
      navToSettings() {
        uni.navigateTo({
          url: "/pages/mine/settings/index"
        });
      },
      navToProfile() {
        uni.navigateTo({
          url: "/pages/mine/settings/profile/index"
        });
      },
      navToLevel() {
        uni.navigateTo({
          url: "/pages/mine/level/index"
        });
      },
      navToNotification() {
        uni.navigateTo({
          url: "/pages/mine/message/index"
        });
      },
      navToWallet() {
        uni.navigateTo({
          url: "/pages/mine/wallet/index"
        });
      },
      navToPoints() {
        uni.navigateTo({
          url: "/pages/mine/points/index"
        });
      },
      navToOrderStats() {
        uni.navigateTo({
          url: "/pages/mine/order-stats"
        });
      },
      navToRewards() {
        uni.navigateTo({
          url: "/pages/mine/rewards"
        });
      },
      openServicePopup() {
        this.showServicePopup = true;
      },
      closeServicePopup() {
        this.showServicePopup = false;
      },
      previewQRCode() {
        uni.previewImage({
          urls: ["/static/logo.png"]
        });
      },
      openOnlineService() {
        uni.showToast({
          title: "正在跳转企业微信客服...",
          icon: "none"
        });
      },
      callServicePhone() {
        uni.makePhoneCall({
          phoneNumber: "400-123-4567"
        });
      },
      logout() {
        this.showLogoutPopup = true;
      },
      cancelLogout() {
        this.showLogoutPopup = false;
      },
      async confirmLogout() {
        this.showLogoutPopup = false;
        try {
          await logout();
        } catch (e) {
        }
        clearAuth();
        uni.reLaunch({
          url: "/pages/login/login"
        });
      }
    }
  };
  const _imports_0$1 = "/static/icons/motorbike.svg";
  const _imports_1$5 = "/static/icons/location.svg";
  const _imports_0 = "/static/icons/chevron_right_dark.svg";
  const _imports_3$1 = "/static/icons/calendar.svg";
  const _imports_4 = "/static/icons/settings.svg";
  const _imports_1$4 = "/static/icons/crown.svg";
  const _imports_6 = "/static/icons/chevron_right_gold.svg";
  const _imports_3 = "/static/icons/chevron_right.svg";
  const _imports_8 = "/static/icons/bell_linear.svg";
  const _imports_9 = "/static/icons/money_linear.svg";
  const _imports_10 = "/static/icons/headset_linear.svg";
  const _imports_11 = "/static/icons/close_gray.svg";
  const _imports_13 = "/static/icons/headset_green.svg";
  const _imports_15 = "/static/icons/phone_green.svg";
  const _sfc_main$l = {
    ...logic
  };
  function _sfc_render$k(_ctx, _cache, $props, $setup, $data, $options) {
    var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m, _n;
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode("view", { class: "nav-bg" }, [
        vue.createElementVNode("view", { class: "bg-circle-1" }),
        vue.createElementVNode("view", { class: "bg-circle-2" })
      ]),
      vue.createElementVNode("view", { class: "header-section" }, [
        vue.createElementVNode("view", { class: "title-bar" }, "个人中心"),
        vue.createElementVNode("view", {
          class: "user-card",
          onClick: _cache[1] || (_cache[1] = (...args) => _ctx.navToProfile && _ctx.navToProfile(...args))
        }, [
          vue.createElementVNode("image", {
            class: "avatar",
            src: ((_a = _ctx.profile) == null ? void 0 : _a.avatarUrl) || "/static/touxiang.png",
            mode: "aspectFill"
          }, null, 8, ["src"]),
          vue.createElementVNode("view", { class: "info-content" }, [
            vue.createElementVNode("view", { class: "name-row" }, [
              vue.createElementVNode(
                "text",
                { class: "name" },
                vue.toDisplayString(((_b = _ctx.profile) == null ? void 0 : _b.name) || "未登录"),
                1
                /* TEXT */
              ),
              vue.createElementVNode("view", { class: "tags" }, [
                ((_c = _ctx.profile) == null ? void 0 : _c.status) === "0" ? (vue.openBlock(), vue.createElementBlock("view", {
                  key: 0,
                  class: "tag green"
                }, "接单中")) : ((_d = _ctx.profile) == null ? void 0 : _d.status) === "1" ? (vue.openBlock(), vue.createElementBlock("view", {
                  key: 1,
                  class: "tag green"
                }, "休息中")) : ((_e = _ctx.profile) == null ? void 0 : _e.status) === "2" ? (vue.openBlock(), vue.createElementBlock("view", {
                  key: 2,
                  class: "tag",
                  style: { "background": "#eee", "color": "#999" }
                }, "已禁用")) : vue.createCommentVNode("v-if", true),
                ((_f = _ctx.profile) == null ? void 0 : _f.workType) === "full_time" ? (vue.openBlock(), vue.createElementBlock("view", {
                  key: 3,
                  class: "tag blue"
                }, "全职")) : vue.createCommentVNode("v-if", true),
                vue.createElementVNode("image", {
                  class: "bike-icon",
                  src: _imports_0$1
                })
              ])
            ]),
            vue.createElementVNode("view", { class: "detail-row" }, [
              vue.createElementVNode("image", {
                class: "small-icon",
                src: _imports_1$5
              }),
              vue.createElementVNode(
                "text",
                null,
                vue.toDisplayString(((_g = _ctx.profile) == null ? void 0 : _g.stationName) || ((_h = _ctx.profile) == null ? void 0 : _h.cityName) || "暂无站点"),
                1
                /* TEXT */
              ),
              vue.createElementVNode("image", {
                class: "arrow-icon-small",
                src: _imports_0
              })
            ]),
            vue.createElementVNode("view", { class: "detail-row" }, [
              vue.createElementVNode("image", {
                class: "small-icon",
                src: _imports_3$1
              }),
              vue.createElementVNode(
                "text",
                null,
                "已注册" + vue.toDisplayString(((_i = _ctx.profile) == null ? void 0 : _i.registerDays) || 0) + "天",
                1
                /* TEXT */
              )
            ])
          ]),
          vue.createElementVNode("image", {
            class: "settings-icon",
            src: _imports_4,
            onClick: _cache[0] || (_cache[0] = vue.withModifiers((...args) => _ctx.navToSettings && _ctx.navToSettings(...args), ["stop"]))
          })
        ]),
        vue.createElementVNode("view", { class: "vip-card" }, [
          vue.createElementVNode("view", { class: "vip-left" }, [
            vue.createElementVNode("image", {
              class: "vip-icon",
              src: _imports_1$4
            }),
            vue.createElementVNode("view", { class: "vip-text" }, [
              vue.createElementVNode(
                "text",
                { class: "vip-title" },
                vue.toDisplayString(((_j = _ctx.profile) == null ? void 0 : _j.levelName) || "普通履约者"),
                1
                /* TEXT */
              ),
              vue.createElementVNode(
                "text",
                { class: "vip-desc" },
                vue.toDisplayString(((_k = _ctx.profile) == null ? void 0 : _k.levelDesc) || "完成更多订单即可升级"),
                1
                /* TEXT */
              )
            ])
          ]),
          vue.createElementVNode("view", {
            class: "vip-btn",
            onClick: _cache[2] || (_cache[2] = (...args) => _ctx.navToLevel && _ctx.navToLevel(...args))
          }, [
            vue.createElementVNode("text", null, "查看权益"),
            vue.createElementVNode("image", {
              class: "arrow-icon-small",
              src: _imports_6
            })
          ])
        ])
      ]),
      vue.createElementVNode("view", { class: "stats-panel" }, [
        vue.createElementVNode("view", {
          class: "stat-item",
          onClick: _cache[3] || (_cache[3] = (...args) => _ctx.navToWallet && _ctx.navToWallet(...args))
        }, [
          vue.createElementVNode("view", { class: "stat-header" }, [
            vue.createElementVNode("view", { class: "red-bar" }),
            vue.createElementVNode("text", { class: "label" }, "我的钱包"),
            vue.createElementVNode("image", {
              class: "arrow-icon",
              src: _imports_3
            })
          ]),
          vue.createElementVNode("view", { class: "stat-value" }, [
            vue.createElementVNode(
              "text",
              { class: "num" },
              vue.toDisplayString(((_l = _ctx.profile) == null ? void 0 : _l.balance) || 0),
              1
              /* TEXT */
            ),
            vue.createElementVNode("text", { class: "unit" }, "元")
          ]),
          vue.createElementVNode("text", { class: "sub-text" }, "账户余额")
        ]),
        vue.createElementVNode("view", { class: "divider" }),
        vue.createElementVNode("view", {
          class: "stat-item",
          onClick: _cache[4] || (_cache[4] = (...args) => _ctx.navToOrderStats && _ctx.navToOrderStats(...args))
        }, [
          vue.createElementVNode("view", { class: "stat-header" }, [
            vue.createElementVNode("view", { class: "green-bar" }),
            vue.createElementVNode("text", { class: "label" }, "订单统计"),
            vue.createElementVNode("image", {
              class: "arrow-icon",
              src: _imports_3
            })
          ]),
          vue.createElementVNode("view", { class: "stat-value" }, [
            vue.createElementVNode(
              "text",
              { class: "num" },
              vue.toDisplayString(((_m = _ctx.profile) == null ? void 0 : _m.orderCount) || 0),
              1
              /* TEXT */
            ),
            vue.createElementVNode("text", { class: "unit" }, "单")
          ]),
          vue.createElementVNode("text", { class: "sub-text" }, "累计服务单量")
        ]),
        vue.createElementVNode("view", { class: "divider" }),
        vue.createElementVNode("view", {
          class: "stat-item",
          onClick: _cache[5] || (_cache[5] = (...args) => _ctx.navToPoints && _ctx.navToPoints(...args))
        }, [
          vue.createElementVNode("view", { class: "stat-header" }, [
            vue.createElementVNode("view", { class: "orange-bar" }),
            vue.createElementVNode("text", { class: "label" }, "我的积分"),
            vue.createElementVNode("image", {
              class: "arrow-icon",
              src: _imports_3
            })
          ]),
          vue.createElementVNode("view", { class: "stat-value" }, [
            vue.createElementVNode(
              "text",
              { class: "num" },
              vue.toDisplayString(((_n = _ctx.profile) == null ? void 0 : _n.points) || 0),
              1
              /* TEXT */
            ),
            vue.createElementVNode("text", { class: "unit" }, "分")
          ]),
          vue.createElementVNode("text", { class: "sub-text" }, "可兑换权益")
        ])
      ]),
      vue.createElementVNode("view", { class: "menu-list" }, [
        vue.createElementVNode("view", {
          class: "menu-item",
          onClick: _cache[6] || (_cache[6] = (...args) => _ctx.navToNotification && _ctx.navToNotification(...args))
        }, [
          vue.createElementVNode("image", {
            class: "menu-icon",
            src: _imports_8
          }),
          vue.createElementVNode("text", { class: "menu-text" }, "消息中心"),
          vue.createElementVNode("view", { class: "menu-right" }, [
            vue.createElementVNode("view", { class: "red-dot" }),
            vue.createElementVNode("image", {
              class: "arrow-icon",
              src: _imports_3
            })
          ])
        ]),
        vue.createElementVNode("view", {
          class: "menu-item",
          onClick: _cache[7] || (_cache[7] = (...args) => _ctx.navToRewards && _ctx.navToRewards(...args))
        }, [
          vue.createElementVNode("image", {
            class: "menu-icon",
            src: _imports_9
          }),
          vue.createElementVNode("text", { class: "menu-text" }, "我的奖惩"),
          vue.createElementVNode("image", {
            class: "arrow-icon",
            src: _imports_3
          })
        ]),
        vue.createElementVNode("view", {
          class: "menu-item",
          onClick: _cache[8] || (_cache[8] = (...args) => _ctx.openServicePopup && _ctx.openServicePopup(...args))
        }, [
          vue.createElementVNode("image", {
            class: "menu-icon",
            src: _imports_10
          }),
          vue.createElementVNode("text", { class: "menu-text" }, "联系客服"),
          vue.createElementVNode("image", {
            class: "arrow-icon",
            src: _imports_3
          })
        ])
      ]),
      vue.createElementVNode("view", {
        class: "logout-btn",
        onClick: _cache[9] || (_cache[9] = (...args) => _ctx.logout && _ctx.logout(...args))
      }, "退出登录"),
      _ctx.showServicePopup ? (vue.openBlock(), vue.createElementBlock("view", {
        key: 0,
        class: "service-popup-mask",
        onClick: _cache[15] || (_cache[15] = (...args) => _ctx.closeServicePopup && _ctx.closeServicePopup(...args))
      }, [
        vue.createElementVNode("view", {
          class: "service-popup",
          onClick: _cache[14] || (_cache[14] = vue.withModifiers(() => {
          }, ["stop"]))
        }, [
          vue.createElementVNode("view", { class: "service-header" }, [
            vue.createElementVNode("text", { class: "service-title" }, "联系客服"),
            vue.createElementVNode("image", {
              class: "close-icon",
              src: _imports_11,
              onClick: _cache[10] || (_cache[10] = (...args) => _ctx.closeServicePopup && _ctx.closeServicePopup(...args))
            })
          ]),
          vue.createElementVNode("view", { class: "qr-section" }, [
            vue.createElementVNode("text", { class: "qr-title" }, "客服二维码"),
            vue.createElementVNode("image", {
              class: "qr-img",
              src: _imports_1$8,
              onClick: _cache[11] || (_cache[11] = (...args) => _ctx.previewQRCode && _ctx.previewQRCode(...args))
            }),
            vue.createElementVNode("text", { class: "qr-desc" }, "点击查看大图")
          ]),
          vue.createElementVNode("view", { class: "service-list" }, [
            vue.createElementVNode("view", {
              class: "service-row",
              onClick: _cache[12] || (_cache[12] = (...args) => _ctx.openOnlineService && _ctx.openOnlineService(...args))
            }, [
              vue.createElementVNode("image", {
                class: "service-row-icon",
                src: _imports_13
              }),
              vue.createElementVNode("view", { class: "service-info" }, [
                vue.createElementVNode("text", { class: "service-name" }, "在线客服"),
                vue.createElementVNode("text", { class: "service-desc" }, "企业微信专属客服在线解答")
              ]),
              vue.createElementVNode("image", {
                class: "arrow-icon-small",
                src: _imports_3
              })
            ]),
            vue.createElementVNode("view", { class: "service-row" }, [
              vue.createElementVNode("image", {
                class: "service-row-icon",
                src: _imports_14
              }),
              vue.createElementVNode("view", { class: "service-info" }, [
                vue.createElementVNode("text", { class: "service-name" }, "客服电话"),
                vue.createElementVNode("text", { class: "service-desc" }, "400-123-4567")
              ]),
              vue.createElementVNode("view", {
                class: "call-btn",
                onClick: _cache[13] || (_cache[13] = (...args) => _ctx.callServicePhone && _ctx.callServicePhone(...args))
              }, [
                vue.createElementVNode("image", {
                  class: "phone-icon-small",
                  src: _imports_15
                }),
                vue.createElementVNode("text", null, "拨打")
              ])
            ])
          ])
        ])
      ])) : vue.createCommentVNode("v-if", true),
      vue.createElementVNode(
        "view",
        {
          class: vue.normalizeClass(["logout-popup-mask", { "show": _ctx.showLogoutPopup }]),
          onClick: _cache[19] || (_cache[19] = (...args) => _ctx.cancelLogout && _ctx.cancelLogout(...args)),
          onTouchmove: _cache[20] || (_cache[20] = vue.withModifiers(() => {
          }, ["stop", "prevent"]))
        },
        [
          vue.createElementVNode("view", {
            class: "popup-modal",
            onClick: _cache[18] || (_cache[18] = vue.withModifiers(() => {
            }, ["stop"]))
          }, [
            vue.createElementVNode("text", { class: "popup-title" }, "退出登录"),
            vue.createElementVNode("text", { class: "popup-desc" }, "确定要退出当前账号吗？\\n退出后需要重新登录才能使用完整功能。"),
            vue.createElementVNode("view", { class: "popup-actions" }, [
              vue.createElementVNode("view", {
                class: "popup-btn cancel",
                onClick: _cache[16] || (_cache[16] = (...args) => _ctx.cancelLogout && _ctx.cancelLogout(...args))
              }, "取消"),
              vue.createElementVNode("view", {
                class: "popup-btn confirm",
                onClick: _cache[17] || (_cache[17] = (...args) => _ctx.confirmLogout && _ctx.confirmLogout(...args))
              }, "确定")
            ])
          ])
        ],
        34
        /* CLASS, NEED_HYDRATION */
      )
    ]);
  }
  const PagesMineIndex = /* @__PURE__ */ _export_sfc(_sfc_main$l, [["render", _sfc_render$k], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/mine/index.vue"]]);
  const _sfc_main$k = {
    data() {
      return {};
    },
    methods: {
      navBack() {
        uni.navigateBack({
          delta: 1
        });
      },
      navTo(type) {
        let url = "";
        switch (type) {
          case "profile":
            url = "/pages/mine/settings/profile/index";
            break;
          case "auth":
            url = "/pages/mine/settings/auth/index";
            break;
          case "bank":
            url = "/pages/mine/settings/bank/index";
            break;
          case "security":
            url = "/pages/mine/settings/security/index";
            break;
          case "push":
            url = "/pages/mine/settings/notification/index";
            break;
          case "about":
            url = "/pages/mine/settings/about/index";
            break;
          default:
            formatAppLog("log", "at pages/mine/settings/index.vue:104", "Navigate to:", type);
            return;
        }
        uni.navigateTo({ url });
      },
      clearCache() {
        uni.showToast({ title: "缓存已清理", icon: "none" });
      }
    }
  };
  function _sfc_render$j(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode("view", { class: "custom-header" }, [
        vue.createElementVNode("view", {
          class: "header-left",
          onClick: _cache[0] || (_cache[0] = (...args) => $options.navBack && $options.navBack(...args))
        }, [
          vue.createElementVNode("image", {
            class: "back-icon",
            src: _imports_0,
            style: { "transform": "rotate(180deg)" }
          })
        ]),
        vue.createElementVNode("text", { class: "header-title" }, "设置"),
        vue.createElementVNode("view", { class: "header-right" })
      ]),
      vue.createElementVNode("view", { class: "header-placeholder" }),
      vue.createElementVNode("view", { class: "group-card" }, [
        vue.createElementVNode("view", {
          class: "list-item",
          onClick: _cache[1] || (_cache[1] = ($event) => $options.navTo("profile"))
        }, [
          vue.createElementVNode("text", { class: "item-title" }, "个人资料"),
          vue.createElementVNode("image", {
            class: "arrow-icon",
            src: _imports_3
          })
        ]),
        vue.createElementVNode("view", {
          class: "list-item",
          onClick: _cache[2] || (_cache[2] = ($event) => $options.navTo("auth"))
        }, [
          vue.createElementVNode("text", { class: "item-title" }, "认证信息"),
          vue.createElementVNode("image", {
            class: "arrow-icon",
            src: _imports_3
          })
        ]),
        vue.createElementVNode("view", {
          class: "list-item",
          onClick: _cache[3] || (_cache[3] = ($event) => $options.navTo("bank"))
        }, [
          vue.createElementVNode("text", { class: "item-title" }, "银行卡信息"),
          vue.createElementVNode("view", { class: "item-right" }, [
            vue.createElementVNode("view", { class: "tag-status" }, "已完善"),
            vue.createElementVNode("image", {
              class: "arrow-icon",
              src: _imports_3
            })
          ])
        ]),
        vue.createElementVNode("view", {
          class: "list-item no-border",
          onClick: _cache[4] || (_cache[4] = ($event) => $options.navTo("security"))
        }, [
          vue.createElementVNode("text", { class: "item-title" }, "账号与安全"),
          vue.createElementVNode("image", {
            class: "arrow-icon",
            src: _imports_3
          })
        ])
      ]),
      vue.createElementVNode("view", { class: "group-card" }, [
        vue.createElementVNode("view", {
          class: "list-item",
          onClick: _cache[5] || (_cache[5] = ($event) => $options.navTo("push"))
        }, [
          vue.createElementVNode("text", { class: "item-title" }, "推送通知"),
          vue.createElementVNode("view", { class: "item-right" }, [
            vue.createElementVNode("text", { class: "item-value" }, "部分开启"),
            vue.createElementVNode("image", {
              class: "arrow-icon",
              src: _imports_3
            })
          ])
        ]),
        vue.createElementVNode("view", { class: "list-item" }, [
          vue.createElementVNode("view", { class: "item-row-left" }, [
            vue.createElementVNode("text", { class: "item-title" }, "位置上报"),
            vue.createElementVNode("text", { class: "item-subtitle" }, "每隔20分钟自动上报位置")
          ]),
          vue.createElementVNode("switch", {
            checked: "",
            color: "#FF5722",
            style: { "transform": "scale(0.8)" }
          })
        ]),
        vue.createElementVNode("view", {
          class: "list-item",
          onClick: _cache[6] || (_cache[6] = (...args) => $options.clearCache && $options.clearCache(...args))
        }, [
          vue.createElementVNode("text", { class: "item-title" }, "清理缓存"),
          vue.createElementVNode("view", { class: "item-right" }, [
            vue.createElementVNode("text", { class: "item-value" }, "105.14MB"),
            vue.createElementVNode("image", {
              class: "arrow-icon",
              src: _imports_3
            })
          ])
        ]),
        vue.createElementVNode("view", {
          class: "list-item no-border",
          onClick: _cache[7] || (_cache[7] = ($event) => $options.navTo("about"))
        }, [
          vue.createElementVNode("text", { class: "item-title" }, "关于我们"),
          vue.createElementVNode("view", { class: "item-right" }, [
            vue.createElementVNode("text", { class: "item-value" }, "v2.0.6"),
            vue.createElementVNode("image", {
              class: "arrow-icon",
              src: _imports_3
            })
          ])
        ])
      ])
    ]);
  }
  const PagesMineSettingsIndex = /* @__PURE__ */ _export_sfc(_sfc_main$k, [["render", _sfc_render$j], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/mine/settings/index.vue"]]);
  const _sfc_main$j = {
    data() {
      return {
        userInfo: {
          name: "",
          workType: "",
          workStatus: "",
          city: "",
          avatar: "/static/touxiang.png",
          stationName: ""
        },
        isStatusPickerShow: false,
        isCityPickerShow: false,
        // 城市级联选择器（与我要加入页面一致）
        selectStep: 0,
        selectedPathway: [],
        currentCityList: [],
        selectedCityId: null
      };
    },
    onLoad() {
      this.loadUserInfo();
      uni.$on("updateName", (newName) => {
        this.userInfo.name = newName;
      });
    },
    onUnload() {
      uni.$off("updateName");
    },
    methods: {
      // 加载用户信息 @author steelwei
      async loadUserInfo() {
        uni.showLoading({ title: "加载中..." });
        try {
          const res = await getMyProfile();
          if (res.code === 200) {
            const data = res.data;
            this.userInfo = {
              name: data.realName || data.name,
              workType: data.workType === "full_time" ? "全职" : "兼职",
              workStatus: this.formatStatus(data.status),
              city: data.cityName || "",
              avatar: data.avatarUrl || "/static/touxiang.png",
              stationName: data.stationName || "未分配站点"
            };
          } else {
            uni.showToast({ title: res.msg || "加载失败", icon: "none" });
          }
        } catch (error) {
          formatAppLog("error", "at pages/mine/settings/profile/index.vue:173", "加载用户信息失败:", error);
          uni.showToast({ title: "网络错误", icon: "none" });
        } finally {
          uni.hideLoading();
        }
      },
      // 格式化状态 @author steelwei
      formatStatus(status) {
        const statusMap = {
          "busy": "接单中",
          "resting": "休息中",
          "disabled": "已禁用"
        };
        return statusMap[status] || status;
      },
      navBack() {
        uni.navigateBack({ delta: 1 });
      },
      // 修改头像 @author steelwei
      changeAvatar() {
        uni.chooseImage({
          count: 1,
          success: async (res) => {
            const tempFilePath = res.tempFilePaths[0];
            uni.showLoading({ title: "上传中..." });
            try {
              const uploadRes = await uploadFile(tempFilePath);
              if (uploadRes.code === 200) {
                const avatarUrl = uploadRes.data.url;
                const result = await updateAvatar(avatarUrl);
                if (result.code === 200) {
                  this.userInfo.avatar = avatarUrl;
                  uni.showToast({ title: "修改成功", icon: "success" });
                } else {
                  uni.showToast({ title: result.msg || "修改失败", icon: "none" });
                }
              }
            } catch (error) {
              formatAppLog("error", "at pages/mine/settings/profile/index.vue:218", "修改头像失败:", error);
              uni.showToast({ title: "上传失败", icon: "none" });
            } finally {
              uni.hideLoading();
            }
          }
        });
      },
      editName() {
        uni.navigateTo({
          url: `/pages/mine/settings/profile/edit-name?name=${this.userInfo.name}`
        });
      },
      showStatusPicker() {
        this.isStatusPickerShow = true;
      },
      closeStatusPicker() {
        this.isStatusPickerShow = false;
      },
      // 选择状态 @author steelwei
      async selectStatus(statusText) {
        const statusMap = {
          "接单中": "busy",
          "休息中": "resting"
        };
        const status = statusMap[statusText];
        try {
          const res = await updateStatus(status);
          if (res.code === 200) {
            this.userInfo.workStatus = statusText;
            uni.showToast({ title: "状态已更新", icon: "success" });
          } else {
            uni.showToast({ title: res.msg || "修改失败", icon: "none" });
          }
        } catch (error) {
          formatAppLog("error", "at pages/mine/settings/profile/index.vue:258", "修改状态失败:", error);
          uni.showToast({ title: "网络错误", icon: "none" });
        } finally {
          this.closeStatusPicker();
        }
      },
      // 城市级联选择器（与我要加入页面一致） @author steelwei
      async showCityPicker() {
        this.isCityPickerShow = true;
        if (this.selectedPathway.length === 0) {
          await this.resetCityPicker();
        }
      },
      async resetCityPicker() {
        this.selectStep = 0;
        this.selectedPathway = [];
        await this.loadAreaChildren(0);
      },
      closeCityPicker() {
        this.isCityPickerShow = false;
      },
      async loadAreaChildren(parentId) {
        try {
          const res = await getAreaChildren(parentId);
          this.currentCityList = (res.data || []).filter((item) => item.type !== 2).map((item) => ({
            id: item.id,
            name: item.name,
            type: item.type,
            parentId: item.parentId
          }));
        } catch (err) {
          formatAppLog("error", "at pages/mine/settings/profile/index.vue:293", "加载区域数据失败:", err);
          this.currentCityList = [];
        }
      },
      async selectCityItem(item) {
        this.selectedPathway[this.selectStep] = item;
        if (item.type === 0) {
          this.selectStep++;
          this.selectedPathway = this.selectedPathway.slice(0, this.selectStep);
          await this.loadAreaChildren(item.id);
          if (this.currentCityList.length === 0) {
            this.selectedCityId = item.id;
            this.confirmCity();
          }
        } else {
          this.selectedCityId = item.id;
          this.confirmCity();
        }
      },
      async jumpToStep(step) {
        this.selectStep = step;
        if (step === 0) {
          await this.loadAreaChildren(0);
        } else {
          const parent = this.selectedPathway[step - 1];
          if (parent) {
            await this.loadAreaChildren(parent.id);
          }
        }
      },
      // 确认城市选择 @author steelwei
      async confirmCity() {
        if (this.selectedPathway.length === 0) {
          uni.showToast({ title: "请选择城市", icon: "none" });
          return;
        }
        const cityName = this.selectedPathway.map((i) => i.name).join(" ");
        const cityCode = String(this.selectedCityId);
        try {
          const res = await updateCity(cityCode, cityName);
          if (res.code === 200) {
            this.userInfo.city = cityName;
            uni.showToast({ title: "修改成功", icon: "success" });
            this.closeCityPicker();
            this.selectedPathway = [];
          } else {
            uni.showToast({ title: res.msg || "修改失败", icon: "none" });
          }
        } catch (error) {
          formatAppLog("error", "at pages/mine/settings/profile/index.vue:346", "修改城市失败:", error);
          uni.showToast({ title: "网络错误", icon: "none" });
        }
      }
    }
  };
  function _sfc_render$i(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode("view", { class: "custom-header" }, [
        vue.createElementVNode("view", {
          class: "header-left",
          onClick: _cache[0] || (_cache[0] = (...args) => $options.navBack && $options.navBack(...args))
        }, [
          vue.createElementVNode("image", {
            class: "back-icon",
            src: _imports_0,
            style: { "transform": "rotate(180deg)" }
          })
        ]),
        vue.createElementVNode("text", { class: "header-title" }, "个人资料"),
        vue.createElementVNode("view", { class: "header-right" })
      ]),
      vue.createElementVNode("view", { class: "header-placeholder" }),
      vue.createElementVNode("view", { class: "group-card" }, [
        vue.createElementVNode("view", {
          class: "list-item",
          onClick: _cache[1] || (_cache[1] = (...args) => $options.changeAvatar && $options.changeAvatar(...args))
        }, [
          vue.createElementVNode("text", { class: "item-title" }, "头像"),
          vue.createElementVNode("view", { class: "item-right" }, [
            vue.createElementVNode("image", {
              class: "user-avatar",
              src: $data.userInfo.avatar,
              mode: "aspectFill"
            }, null, 8, ["src"]),
            vue.createElementVNode("image", {
              class: "arrow-icon",
              src: _imports_3
            })
          ])
        ]),
        vue.createElementVNode("view", {
          class: "list-item",
          onClick: _cache[2] || (_cache[2] = (...args) => $options.editName && $options.editName(...args))
        }, [
          vue.createElementVNode("text", { class: "item-title" }, "真实姓名"),
          vue.createElementVNode("view", { class: "item-right" }, [
            vue.createElementVNode(
              "text",
              { class: "item-value" },
              vue.toDisplayString($data.userInfo.name),
              1
              /* TEXT */
            ),
            vue.createElementVNode("image", {
              class: "arrow-icon",
              src: _imports_3
            })
          ])
        ])
      ]),
      vue.createElementVNode("view", { class: "group-card" }, [
        vue.createElementVNode("view", { class: "list-item" }, [
          vue.createElementVNode("text", { class: "item-title" }, "工作类型"),
          vue.createElementVNode(
            "view",
            { class: "tag-blue-outline" },
            vue.toDisplayString($data.userInfo.workType),
            1
            /* TEXT */
          )
        ]),
        vue.createElementVNode("view", {
          class: "list-item",
          onClick: _cache[3] || (_cache[3] = (...args) => $options.showStatusPicker && $options.showStatusPicker(...args))
        }, [
          vue.createElementVNode("text", { class: "item-title" }, "工作状态"),
          vue.createElementVNode("view", { class: "item-right" }, [
            vue.createElementVNode(
              "text",
              { class: "item-value-black" },
              vue.toDisplayString($data.userInfo.workStatus),
              1
              /* TEXT */
            ),
            vue.createElementVNode("image", {
              class: "arrow-icon",
              src: _imports_3
            })
          ])
        ])
      ]),
      vue.createElementVNode("view", { class: "group-card" }, [
        vue.createElementVNode("view", {
          class: "list-item",
          onClick: _cache[4] || (_cache[4] = (...args) => $options.showCityPicker && $options.showCityPicker(...args))
        }, [
          vue.createElementVNode("text", { class: "item-title" }, "工作城市"),
          vue.createElementVNode("view", { class: "item-right" }, [
            vue.createElementVNode(
              "text",
              { class: "item-value" },
              vue.toDisplayString($data.userInfo.city),
              1
              /* TEXT */
            ),
            vue.createElementVNode("image", {
              class: "arrow-icon",
              src: _imports_3
            })
          ])
        ]),
        vue.createElementVNode("view", { class: "list-item no-border" }, [
          vue.createElementVNode("text", { class: "item-title" }, "所属站点"),
          vue.createElementVNode("view", { class: "item-right" }, [
            vue.createElementVNode(
              "text",
              { class: "item-value" },
              vue.toDisplayString($data.userInfo.stationName || "未分配站点"),
              1
              /* TEXT */
            )
          ])
        ])
      ]),
      $data.isStatusPickerShow ? (vue.openBlock(), vue.createElementBlock("view", {
        key: 0,
        class: "popup-mask",
        onClick: _cache[9] || (_cache[9] = (...args) => $options.closeStatusPicker && $options.closeStatusPicker(...args))
      }, [
        vue.createElementVNode("view", {
          class: "popup-content",
          onClick: _cache[8] || (_cache[8] = vue.withModifiers(() => {
          }, ["stop"]))
        }, [
          vue.createElementVNode("view", { class: "popup-title" }, "选择工作状态"),
          vue.createElementVNode("view", {
            class: "popup-item",
            onClick: _cache[5] || (_cache[5] = ($event) => $options.selectStatus("接单中"))
          }, "接单中"),
          vue.createElementVNode("view", {
            class: "popup-item",
            onClick: _cache[6] || (_cache[6] = ($event) => $options.selectStatus("休息中"))
          }, "休息中"),
          vue.createElementVNode("view", {
            class: "popup-cancel",
            onClick: _cache[7] || (_cache[7] = (...args) => $options.closeStatusPicker && $options.closeStatusPicker(...args))
          }, "取消")
        ])
      ])) : vue.createCommentVNode("v-if", true),
      $data.isCityPickerShow ? (vue.openBlock(), vue.createElementBlock("view", {
        key: 1,
        class: "popup-mask",
        onClick: _cache[13] || (_cache[13] = (...args) => $options.closeCityPicker && $options.closeCityPicker(...args))
      }, [
        vue.createElementVNode("view", {
          class: "popup-content",
          onClick: _cache[12] || (_cache[12] = vue.withModifiers(() => {
          }, ["stop"]))
        }, [
          vue.createElementVNode("view", { class: "popup-header-row" }, [
            vue.createElementVNode("text", {
              class: "popup-btn-cancel",
              onClick: _cache[10] || (_cache[10] = (...args) => $options.closeCityPicker && $options.closeCityPicker(...args))
            }, "取消"),
            vue.createElementVNode("text", { class: "popup-title-text" }, "请选择工作城市"),
            vue.createElementVNode("text", {
              class: "popup-btn-confirm",
              onClick: _cache[11] || (_cache[11] = (...args) => $options.confirmCity && $options.confirmCity(...args))
            }, "确定")
          ]),
          vue.createElementVNode("view", { class: "picker-body" }, [
            vue.createElementVNode("view", { class: "timeline-area" }, [
              (vue.openBlock(true), vue.createElementBlock(
                vue.Fragment,
                null,
                vue.renderList($data.selectedPathway, (item, index) => {
                  return vue.openBlock(), vue.createElementBlock("view", {
                    class: "timeline-item",
                    key: index,
                    onClick: ($event) => $options.jumpToStep(index)
                  }, [
                    vue.createElementVNode("view", { class: "timeline-dot" }),
                    vue.createElementVNode(
                      "text",
                      null,
                      vue.toDisplayString(item.name),
                      1
                      /* TEXT */
                    )
                  ], 8, ["onClick"]);
                }),
                128
                /* KEYED_FRAGMENT */
              )),
              $data.selectStep === $data.selectedPathway.length ? (vue.openBlock(), vue.createElementBlock("view", {
                key: 0,
                class: "timeline-item active"
              }, [
                vue.createElementVNode("view", { class: "timeline-dot" }),
                vue.createElementVNode("text", null, "请选择")
              ])) : vue.createCommentVNode("v-if", true)
            ]),
            vue.createElementVNode("scroll-view", {
              "scroll-y": "",
              class: "list-area"
            }, [
              (vue.openBlock(true), vue.createElementBlock(
                vue.Fragment,
                null,
                vue.renderList($data.currentCityList, (item) => {
                  return vue.openBlock(), vue.createElementBlock("view", {
                    class: "list-item",
                    key: item.id,
                    onClick: ($event) => $options.selectCityItem(item)
                  }, vue.toDisplayString(item.name), 9, ["onClick"]);
                }),
                128
                /* KEYED_FRAGMENT */
              )),
              $data.currentCityList.length === 0 ? (vue.openBlock(), vue.createElementBlock("view", {
                key: 0,
                style: { "padding": "20rpx", "color": "#999" }
              }, " 无数据 ")) : vue.createCommentVNode("v-if", true)
            ])
          ])
        ])
      ])) : vue.createCommentVNode("v-if", true)
    ]);
  }
  const PagesMineSettingsProfileIndex = /* @__PURE__ */ _export_sfc(_sfc_main$j, [["render", _sfc_render$i], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/mine/settings/profile/index.vue"]]);
  const _sfc_main$i = {
    data() {
      return {
        authInfo: {
          realName: "",
          idCard: "",
          idCardFront: "",
          idCardBack: "",
          serviceTypes: [],
          authId: false,
          authQual: false,
          pendingAudit: false,
          qualImages: []
        }
      };
    },
    onLoad() {
      this.loadAuthInfo();
    },
    methods: {
      navBack() {
        uni.navigateBack({
          delta: 1
        });
      },
      async loadAuthInfo() {
        try {
          const res = await getAuthInfo();
          if (res.code === 200 && res.data) {
            this.authInfo = {
              realName: res.data.realName || "",
              idCard: res.data.idCard || "",
              idCardFront: res.data.idCardFrontUrl || "",
              idCardBack: res.data.idCardBackUrl || "",
              serviceTypes: res.data.serviceTypeList || [],
              authId: res.data.authId || false,
              authQual: res.data.authQual || false,
              pendingAudit: res.data.pendingAudit || false,
              qualImages: res.data.qualImageUrls || []
            };
          }
        } catch (e) {
          formatAppLog("error", "at pages/mine/settings/auth/index.vue:133", "加载认证信息失败", e);
          uni.showToast({ title: "加载失败", icon: "none" });
        }
      },
      maskIdCard(idCard) {
        if (!idCard || idCard.length < 8)
          return idCard;
        return idCard.substring(0, 4) + "**********" + idCard.substring(idCard.length - 4);
      },
      editAuth() {
        uni.showModal({
          title: "提示",
          content: "修改认证信息需要重新审核，审核期间无法接单，确定要继续吗？",
          success: (res) => {
            if (res.confirm) {
              uni.navigateTo({
                url: "/pages/mine/settings/auth/edit"
              });
            }
          }
        });
      }
    }
  };
  function _sfc_render$h(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode("view", { class: "custom-header" }, [
        vue.createElementVNode("view", {
          class: "header-left",
          onClick: _cache[0] || (_cache[0] = (...args) => $options.navBack && $options.navBack(...args))
        }, [
          vue.createElementVNode("image", {
            class: "back-icon",
            src: _imports_0,
            style: { "transform": "rotate(180deg)" }
          })
        ]),
        vue.createElementVNode("text", { class: "header-title" }, "认证信息"),
        vue.createElementVNode("view", { class: "header-right" })
      ]),
      vue.createElementVNode("view", { class: "header-placeholder" }),
      vue.createElementVNode("view", { class: "card" }, [
        vue.createElementVNode("view", { class: "section-header" }, [
          vue.createElementVNode("view", { class: "orange-bar" }),
          vue.createElementVNode("text", { class: "section-title" }, "身份认证"),
          $data.authInfo.pendingAudit ? (vue.openBlock(), vue.createElementBlock("view", {
            key: 0,
            class: "tag-orange"
          }, "认证中")) : $data.authInfo.authId ? (vue.openBlock(), vue.createElementBlock("view", {
            key: 1,
            class: "tag-green"
          }, "已认证")) : (vue.openBlock(), vue.createElementBlock("view", {
            key: 2,
            class: "tag-gray"
          }, "未认证"))
        ]),
        vue.createElementVNode("view", { class: "info-row" }, [
          vue.createElementVNode("text", { class: "label" }, "真实姓名"),
          vue.createElementVNode(
            "text",
            { class: "value" },
            vue.toDisplayString($data.authInfo.realName || "未设置"),
            1
            /* TEXT */
          )
        ]),
        vue.createElementVNode("view", { class: "info-row" }, [
          vue.createElementVNode("text", { class: "label" }, "证件号码"),
          vue.createElementVNode(
            "text",
            { class: "value" },
            vue.toDisplayString($options.maskIdCard($data.authInfo.idCard) || "未设置"),
            1
            /* TEXT */
          )
        ]),
        vue.createElementVNode("view", { class: "id-card-row" }, [
          $data.authInfo.idCardFront ? (vue.openBlock(), vue.createElementBlock("view", {
            key: 0,
            class: "id-card-box green-bg"
          }, [
            vue.createElementVNode("image", {
              class: "id-card-img",
              src: $data.authInfo.idCardFront,
              mode: "aspectFill"
            }, null, 8, ["src"]),
            vue.createElementVNode("view", { class: "corner-tag" }, "人像面")
          ])) : (vue.openBlock(), vue.createElementBlock("view", {
            key: 1,
            class: "id-card-box green-bg"
          }, [
            vue.createElementVNode("text", { class: "id-text" }, "ID Front"),
            vue.createElementVNode("view", { class: "corner-tag" }, "人像面")
          ])),
          $data.authInfo.idCardBack ? (vue.openBlock(), vue.createElementBlock("view", {
            key: 2,
            class: "id-card-box green-bg"
          }, [
            vue.createElementVNode("image", {
              class: "id-card-img",
              src: $data.authInfo.idCardBack,
              mode: "aspectFill"
            }, null, 8, ["src"]),
            vue.createElementVNode("view", { class: "corner-tag" }, "国徽面")
          ])) : (vue.openBlock(), vue.createElementBlock("view", {
            key: 3,
            class: "id-card-box green-bg"
          }, [
            vue.createElementVNode("text", { class: "id-text" }, "ID Back"),
            vue.createElementVNode("view", { class: "corner-tag" }, "国徽面")
          ]))
        ])
      ]),
      vue.createElementVNode("view", { class: "card" }, [
        vue.createElementVNode("view", { class: "section-header" }, [
          vue.createElementVNode("view", { class: "orange-bar" }),
          vue.createElementVNode("text", { class: "section-title" }, "服务类型")
        ]),
        vue.createElementVNode("view", { class: "tags-row" }, [
          (vue.openBlock(true), vue.createElementBlock(
            vue.Fragment,
            null,
            vue.renderList($data.authInfo.serviceTypes, (type, index) => {
              return vue.openBlock(), vue.createElementBlock(
                "view",
                {
                  class: "service-tag",
                  key: index
                },
                vue.toDisplayString(type),
                1
                /* TEXT */
              );
            }),
            128
            /* KEYED_FRAGMENT */
          )),
          $data.authInfo.serviceTypes.length === 0 ? (vue.openBlock(), vue.createElementBlock("text", {
            key: 0,
            class: "empty-text"
          }, "暂无服务类型")) : vue.createCommentVNode("v-if", true)
        ])
      ]),
      vue.createElementVNode("view", { class: "card" }, [
        vue.createElementVNode("view", { class: "section-header" }, [
          vue.createElementVNode("view", { class: "orange-bar" }),
          vue.createElementVNode("text", { class: "section-title" }, "资质证书")
        ]),
        vue.createElementVNode(
          "text",
          { class: "sub-title" },
          vue.toDisplayString($data.authInfo.authQual ? "已认证" : "未认证"),
          1
          /* TEXT */
        ),
        vue.createElementVNode("view", { class: "cert-row" }, [
          (vue.openBlock(true), vue.createElementBlock(
            vue.Fragment,
            null,
            vue.renderList($data.authInfo.qualImages, (img, index) => {
              return vue.openBlock(), vue.createElementBlock("view", {
                class: "cert-box yellow-bg",
                key: index
              }, [
                vue.createElementVNode("image", {
                  class: "cert-img",
                  src: img,
                  mode: "aspectFill"
                }, null, 8, ["src"])
              ]);
            }),
            128
            /* KEYED_FRAGMENT */
          )),
          $data.authInfo.qualImages.length === 0 ? (vue.openBlock(), vue.createElementBlock("text", {
            key: 0,
            class: "empty-text"
          }, "暂无资质证书")) : vue.createCommentVNode("v-if", true)
        ])
      ]),
      vue.createElementVNode("view", { class: "bottom-btn-area" }, [
        $data.authInfo.pendingAudit ? (vue.openBlock(), vue.createElementBlock("button", {
          key: 0,
          class: "action-btn disabled",
          disabled: ""
        }, "认证审核中...")) : (vue.openBlock(), vue.createElementBlock("button", {
          key: 1,
          class: "action-btn",
          onClick: _cache[1] || (_cache[1] = (...args) => $options.editAuth && $options.editAuth(...args))
        }, "修改认证信息")),
        $data.authInfo.pendingAudit ? (vue.openBlock(), vue.createElementBlock("text", {
          key: 2,
          class: "tips"
        }, "认证信息正在审核中，请耐心等待")) : (vue.openBlock(), vue.createElementBlock("text", {
          key: 3,
          class: "tips"
        }, "修改认证信息需要重新审核，审核期间无法接单"))
      ])
    ]);
  }
  const PagesMineSettingsAuthIndex = /* @__PURE__ */ _export_sfc(_sfc_main$i, [["render", _sfc_render$h], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/mine/settings/auth/index.vue"]]);
  const _sfc_main$h = {
    data() {
      return {
        idCardFront: "",
        idCardBack: "",
        idCardFrontOssId: "",
        idCardBackOssId: "",
        serviceOptions: ["宠物接送", "上门喂遛", "上门洗护"],
        selectedServices: [],
        qualifications: {},
        qualOssIds: {}
      };
    },
    onLoad() {
      this.loadAuthInfo();
    },
    methods: {
      async loadAuthInfo() {
        try {
          uni.showLoading({ title: "加载中..." });
          const res = await getAuthInfo();
          if (res.code === 200 && res.data) {
            this.idCardFront = res.data.idCardFrontUrl || "";
            this.idCardBack = res.data.idCardBackUrl || "";
            this.idCardFrontOssId = res.data.idCardFront || "";
            this.idCardBackOssId = res.data.idCardBack || "";
            this.selectedServices = res.data.serviceTypeList || [];
            this.selectedServices.forEach((service) => {
              this.qualifications[service] = [];
              this.qualOssIds[service] = [];
            });
            if (res.data.qualImageUrls && res.data.qualImageUrls.length > 0) {
              const firstService = this.selectedServices[0];
              if (firstService) {
                this.qualifications[firstService] = res.data.qualImageUrls;
              }
            }
          }
          uni.hideLoading();
        } catch (e) {
          uni.hideLoading();
          formatAppLog("error", "at pages/mine/settings/auth/edit.vue:151", "加载认证信息失败", e);
          uni.showToast({ title: "加载失败", icon: "none" });
        }
      },
      navBack() {
        uni.navigateBack({ delta: 1 });
      },
      chooseImage(side) {
        uni.chooseImage({
          count: 1,
          sizeType: ["compressed"],
          sourceType: ["album", "camera"],
          success: async (res) => {
            const tempPath = res.tempFilePaths[0];
            if (side === "front") {
              this.idCardFront = tempPath;
            } else {
              this.idCardBack = tempPath;
            }
            try {
              uni.showLoading({ title: "上传中..." });
              const uploadRes = await uploadFile(tempPath);
              if (side === "front") {
                this.idCardFrontOssId = uploadRes.data.ossId;
              } else {
                this.idCardBackOssId = uploadRes.data.ossId;
              }
              uni.hideLoading();
              uni.showToast({ title: "上传成功", icon: "success" });
            } catch (err) {
              uni.hideLoading();
              formatAppLog("error", "at pages/mine/settings/auth/edit.vue:183", "上传身份证图片失败:", err);
              uni.showToast({ title: "上传失败", icon: "none" });
            }
          }
        });
      },
      deleteImage(side) {
        if (side === "front") {
          this.idCardFront = "";
          this.idCardFrontOssId = "";
        } else {
          this.idCardBack = "";
          this.idCardBackOssId = "";
        }
      },
      toggleService(service) {
        const index = this.selectedServices.indexOf(service);
        if (index > -1) {
          this.selectedServices.splice(index, 1);
          delete this.qualifications[service];
          delete this.qualOssIds[service];
        } else {
          this.selectedServices.push(service);
          this.qualifications[service] = [];
          this.qualOssIds[service] = [];
        }
        this.$forceUpdate();
      },
      chooseQualImage(service) {
        uni.chooseImage({
          count: 9,
          sizeType: ["compressed"],
          sourceType: ["album", "camera"],
          success: async (res) => {
            if (!this.qualifications[service]) {
              this.qualifications[service] = [];
              this.qualOssIds[service] = [];
            }
            for (const tempPath of res.tempFilePaths) {
              this.qualifications[service].push(tempPath);
              this.$forceUpdate();
              try {
                uni.showLoading({ title: "上传中..." });
                const uploadRes = await uploadFile(tempPath);
                this.qualOssIds[service].push(uploadRes.data.ossId);
                uni.hideLoading();
              } catch (err) {
                uni.hideLoading();
                formatAppLog("error", "at pages/mine/settings/auth/edit.vue:233", "上传资质图片失败:", err);
              }
            }
          }
        });
      },
      deleteQualImage(service, index) {
        this.qualifications[service].splice(index, 1);
        if (this.qualOssIds[service]) {
          this.qualOssIds[service].splice(index, 1);
        }
        this.$forceUpdate();
      },
      previewImage(service, index) {
        uni.previewImage({
          urls: this.qualifications[service],
          current: index
        });
      },
      async submitAuth() {
        if (!this.idCardFront || !this.idCardBack) {
          uni.showToast({ title: "请上传身份证正反面", icon: "none" });
          return;
        }
        if (this.selectedServices.length === 0) {
          uni.showToast({ title: "请选择服务类型", icon: "none" });
          return;
        }
        for (const service of this.selectedServices) {
          if (!this.qualifications[service] || this.qualifications[service].length === 0) {
            uni.showToast({ title: `请上传${service}资质`, icon: "none" });
            return;
          }
        }
        uni.showModal({
          title: "提示",
          content: "修改认证信息需要重新审核，审核期间无法接单，确定要继续吗？",
          success: (res) => {
            if (res.confirm) {
              this.doSubmit();
            }
          }
        });
      },
      async doSubmit() {
        const allQualOssIds = [];
        Object.values(this.qualOssIds).forEach((ids) => {
          allQualOssIds.push(...ids);
        });
        const submitData = {
          idCardFront: this.idCardFrontOssId,
          idCardBack: this.idCardBackOssId,
          serviceTypes: JSON.stringify(this.selectedServices),
          qualifications: JSON.stringify(allQualOssIds)
        };
        try {
          uni.showLoading({ title: "提交中..." });
          await updateAuthInfo(submitData);
          uni.hideLoading();
          uni.showToast({ title: "提交成功，等待审核", icon: "success", duration: 1500 });
          setTimeout(() => {
            uni.navigateBack({ delta: 1 });
          }, 1500);
        } catch (err) {
          uni.hideLoading();
          formatAppLog("error", "at pages/mine/settings/auth/edit.vue:303", "提交失败:", err);
          uni.showToast({ title: "提交失败", icon: "none" });
        }
      }
    }
  };
  function _sfc_render$g(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "edit-auth-container" }, [
      vue.createElementVNode("view", { class: "custom-header" }, [
        vue.createElementVNode("view", {
          class: "header-left",
          onClick: _cache[0] || (_cache[0] = (...args) => $options.navBack && $options.navBack(...args))
        }, [
          vue.createElementVNode("image", {
            class: "back-icon",
            src: _imports_0,
            style: { "transform": "rotate(180deg)" }
          })
        ]),
        vue.createElementVNode("text", { class: "header-title" }, "修改认证信息"),
        vue.createElementVNode("view", { class: "header-right" })
      ]),
      vue.createElementVNode("view", { class: "header-placeholder" }),
      vue.createElementVNode("view", { class: "warning-tip" }, [
        vue.createElementVNode("text", { class: "warning-icon" }, "⚠"),
        vue.createElementVNode("text", { class: "warning-text" }, "若修改认证信息，将在审核通过后生效")
      ]),
      vue.createElementVNode("view", { class: "section-card" }, [
        vue.createElementVNode("view", { class: "section-title" }, "身份认证"),
        vue.createElementVNode("text", { class: "section-subtitle" }, "点击图片修改"),
        vue.createElementVNode("view", { class: "id-card-row" }, [
          vue.createElementVNode("view", {
            class: "id-card-upload",
            onClick: _cache[2] || (_cache[2] = ($event) => $options.chooseImage("front"))
          }, [
            $data.idCardFront ? (vue.openBlock(), vue.createElementBlock("image", {
              key: 0,
              src: $data.idCardFront,
              class: "id-card-img",
              mode: "aspectFill"
            }, null, 8, ["src"])) : (vue.openBlock(), vue.createElementBlock("view", {
              key: 1,
              class: "id-card-placeholder"
            }, [
              vue.createElementVNode("text", { class: "placeholder-text" }, "ID Front")
            ])),
            $data.idCardFront ? (vue.openBlock(), vue.createElementBlock("view", {
              key: 2,
              class: "delete-btn",
              onClick: _cache[1] || (_cache[1] = vue.withModifiers(($event) => $options.deleteImage("front"), ["stop"]))
            }, "×")) : vue.createCommentVNode("v-if", true),
            vue.createElementVNode("view", { class: "corner-tag" }, "人像面")
          ]),
          vue.createElementVNode("view", {
            class: "id-card-upload",
            onClick: _cache[4] || (_cache[4] = ($event) => $options.chooseImage("back"))
          }, [
            $data.idCardBack ? (vue.openBlock(), vue.createElementBlock("image", {
              key: 0,
              src: $data.idCardBack,
              class: "id-card-img",
              mode: "aspectFill"
            }, null, 8, ["src"])) : (vue.openBlock(), vue.createElementBlock("view", {
              key: 1,
              class: "id-card-placeholder"
            }, [
              vue.createElementVNode("text", { class: "placeholder-text" }, "ID Back")
            ])),
            $data.idCardBack ? (vue.openBlock(), vue.createElementBlock("view", {
              key: 2,
              class: "delete-btn",
              onClick: _cache[3] || (_cache[3] = vue.withModifiers(($event) => $options.deleteImage("back"), ["stop"]))
            }, "×")) : vue.createCommentVNode("v-if", true),
            vue.createElementVNode("view", { class: "corner-tag" }, "国徽面")
          ])
        ])
      ]),
      vue.createElementVNode("view", { class: "section-card" }, [
        vue.createElementVNode("view", { class: "section-title" }, "服务类型"),
        vue.createElementVNode("text", { class: "section-subtitle" }, "可多选"),
        vue.createElementVNode("view", { class: "service-list" }, [
          (vue.openBlock(true), vue.createElementBlock(
            vue.Fragment,
            null,
            vue.renderList($data.serviceOptions, (service, index) => {
              return vue.openBlock(), vue.createElementBlock("view", {
                class: "service-item",
                key: index,
                onClick: ($event) => $options.toggleService(service)
              }, [
                vue.createElementVNode(
                  "text",
                  { class: "service-name" },
                  vue.toDisplayString(service),
                  1
                  /* TEXT */
                ),
                vue.createElementVNode(
                  "view",
                  {
                    class: vue.normalizeClass(["check-icon", { active: $data.selectedServices.includes(service) }])
                  },
                  [
                    $data.selectedServices.includes(service) ? (vue.openBlock(), vue.createElementBlock("text", { key: 0 }, "✓")) : vue.createCommentVNode("v-if", true)
                  ],
                  2
                  /* CLASS */
                )
              ], 8, ["onClick"]);
            }),
            128
            /* KEYED_FRAGMENT */
          ))
        ])
      ]),
      vue.createElementVNode("view", { class: "section-card" }, [
        vue.createElementVNode("view", { class: "section-title" }, "资质证书"),
        vue.createElementVNode("text", { class: "section-subtitle" }, "请上传对应服务的资质"),
        (vue.openBlock(true), vue.createElementBlock(
          vue.Fragment,
          null,
          vue.renderList($data.selectedServices, (service, index) => {
            return vue.openBlock(), vue.createElementBlock("view", {
              key: index,
              class: "qual-section"
            }, [
              vue.createElementVNode(
                "text",
                { class: "qual-title" },
                vue.toDisplayString(service) + "资质",
                1
                /* TEXT */
              ),
              vue.createElementVNode("view", { class: "qual-upload-row" }, [
                (vue.openBlock(true), vue.createElementBlock(
                  vue.Fragment,
                  null,
                  vue.renderList($data.qualifications[service], (img, imgIndex) => {
                    return vue.openBlock(), vue.createElementBlock("view", {
                      class: "qual-item",
                      key: imgIndex,
                      onClick: ($event) => $options.previewImage(service, imgIndex)
                    }, [
                      vue.createElementVNode("image", {
                        src: img,
                        class: "qual-img",
                        mode: "aspectFill"
                      }, null, 8, ["src"]),
                      vue.createElementVNode("view", {
                        class: "delete-btn",
                        onClick: vue.withModifiers(($event) => $options.deleteQualImage(service, imgIndex), ["stop"])
                      }, "×", 8, ["onClick"])
                    ], 8, ["onClick"]);
                  }),
                  128
                  /* KEYED_FRAGMENT */
                )),
                vue.createElementVNode("view", {
                  class: "qual-upload-btn",
                  onClick: ($event) => $options.chooseQualImage(service)
                }, [
                  vue.createElementVNode("text", { class: "plus-icon" }, "+")
                ], 8, ["onClick"])
              ])
            ]);
          }),
          128
          /* KEYED_FRAGMENT */
        )),
        $data.selectedServices.length === 0 ? (vue.openBlock(), vue.createElementBlock("text", {
          key: 0,
          class: "empty-hint"
        }, "请先选择服务类型")) : vue.createCommentVNode("v-if", true)
      ]),
      vue.createElementVNode("view", { class: "bottom-btn-area" }, [
        vue.createElementVNode("button", {
          class: "submit-btn",
          onClick: _cache[5] || (_cache[5] = (...args) => $options.submitAuth && $options.submitAuth(...args))
        }, "提交审核")
      ])
    ]);
  }
  const PagesMineSettingsAuthEdit = /* @__PURE__ */ _export_sfc(_sfc_main$h, [["render", _sfc_render$g], ["__scopeId", "data-v-10d0f207"], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/mine/settings/auth/edit.vue"]]);
  const _imports_1$3 = "/static/icons/shield.svg";
  const _sfc_main$g = {
    data() {
      return {
        hasShieldIcon: false
        // 如果没有盾牌图标资源，暂时隐藏或用文字代替
      };
    },
    methods: {
      navBack() {
        uni.navigateBack({
          delta: 1
        });
      },
      editBank() {
        uni.showToast({ title: "跳转修改银行卡页", icon: "none" });
      }
    }
  };
  function _sfc_render$f(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode("view", { class: "custom-header" }, [
        vue.createElementVNode("view", {
          class: "header-left",
          onClick: _cache[0] || (_cache[0] = (...args) => $options.navBack && $options.navBack(...args))
        }, [
          vue.createElementVNode("image", {
            class: "back-icon",
            src: _imports_0,
            style: { "transform": "rotate(180deg)" }
          })
        ]),
        vue.createElementVNode("text", { class: "header-title" }, "银行卡信息"),
        vue.createElementVNode("view", { class: "header-right" })
      ]),
      vue.createElementVNode("view", { class: "header-placeholder" }),
      vue.createElementVNode("view", { class: "bank-card" }, [
        vue.createElementVNode("view", { class: "card-top" }, [
          vue.createElementVNode("view", { class: "bank-info" }, [
            vue.createElementVNode("view", { class: "bank-icon-circle" }, [
              vue.createElementVNode("text", { class: "bank-icon-text" }, "招")
            ]),
            vue.createElementVNode("text", { class: "bank-name" }, "招商银行")
          ]),
          vue.createElementVNode("view", { class: "card-type" }, "储蓄卡")
        ]),
        vue.createElementVNode("view", { class: "card-number" }, "622588******1234"),
        vue.createElementVNode("view", { class: "card-bg-circle" })
      ]),
      vue.createElementVNode("button", {
        class: "action-btn",
        onClick: _cache[1] || (_cache[1] = (...args) => $options.editBank && $options.editBank(...args))
      }, "修改银行卡信息"),
      vue.createElementVNode("view", { class: "security-tip" }, [
        $data.hasShieldIcon ? (vue.openBlock(), vue.createElementBlock("image", {
          key: 0,
          class: "shield-icon",
          src: _imports_1$3
        })) : vue.createCommentVNode("v-if", true),
        vue.createElementVNode("text", null, "信息已加密，仅用于收入发放")
      ])
    ]);
  }
  const PagesMineSettingsBankIndex = /* @__PURE__ */ _export_sfc(_sfc_main$g, [["render", _sfc_render$f], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/mine/settings/bank/index.vue"]]);
  const _sfc_main$f = {
    data() {
      return {
        phone: "",
        hasPassword: false
      };
    },
    onLoad() {
      this.loadProfile();
    },
    methods: {
      navBack() {
        uni.navigateBack({
          delta: 1
        });
      },
      async loadProfile() {
        try {
          const res = await getMyProfile();
          if (res.code === 200 && res.data) {
            this.phone = res.data.phone || "";
            this.hasPassword = !!res.data.hasPassword;
          }
        } catch (e) {
          formatAppLog("error", "at pages/mine/settings/security/index.vue:68", "加载个人信息失败", e);
        }
      },
      maskPhone(phone) {
        if (!phone || phone.length < 11)
          return phone;
        return phone.substring(0, 3) + "****" + phone.substring(7);
      },
      changeMobile() {
        uni.navigateTo({
          url: "/pages/mine/settings/security/change-phone"
        });
      },
      changePassword() {
        uni.navigateTo({
          url: "/pages/mine/settings/security/change-password"
        });
      },
      async deleteAccount() {
        uni.showModal({
          title: "警示",
          content: "注销账号后将无法恢复，确定要继续吗？",
          success: async (res) => {
            if (res.confirm) {
              try {
                const result = await deleteAccount();
                if (result.code === 200) {
                  uni.showToast({ title: "账号已注销", icon: "success" });
                  setTimeout(() => {
                    uni.reLaunch({ url: "/pages/login/login" });
                  }, 1500);
                } else {
                  uni.showToast({ title: result.msg || "注销失败", icon: "none" });
                }
              } catch (e) {
                formatAppLog("error", "at pages/mine/settings/security/index.vue:102", "注销账号失败", e);
                uni.showToast({ title: "注销失败", icon: "none" });
              }
            }
          }
        });
      }
    }
  };
  function _sfc_render$e(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode("view", { class: "custom-header" }, [
        vue.createElementVNode("view", {
          class: "header-left",
          onClick: _cache[0] || (_cache[0] = (...args) => $options.navBack && $options.navBack(...args))
        }, [
          vue.createElementVNode("image", {
            class: "back-icon",
            src: _imports_0,
            style: { "transform": "rotate(180deg)" }
          })
        ]),
        vue.createElementVNode("text", { class: "header-title" }, "账号与安全"),
        vue.createElementVNode("view", { class: "header-right" })
      ]),
      vue.createElementVNode("view", { class: "header-placeholder" }),
      vue.createElementVNode("view", { class: "section-title-security" }, "安全设置"),
      vue.createElementVNode("view", { class: "group-card" }, [
        vue.createElementVNode("view", {
          class: "list-item",
          onClick: _cache[1] || (_cache[1] = (...args) => $options.changeMobile && $options.changeMobile(...args))
        }, [
          vue.createElementVNode("text", { class: "item-title" }, "手机号"),
          vue.createElementVNode("view", { class: "item-right" }, [
            vue.createElementVNode(
              "text",
              { class: "item-value" },
              vue.toDisplayString($options.maskPhone($data.phone) || "未设置"),
              1
              /* TEXT */
            ),
            vue.createElementVNode("image", {
              class: "arrow-icon",
              src: _imports_3
            })
          ])
        ]),
        vue.createElementVNode("view", {
          class: "list-item",
          onClick: _cache[2] || (_cache[2] = (...args) => $options.changePassword && $options.changePassword(...args))
        }, [
          vue.createElementVNode("text", { class: "item-title" }, "登录密码"),
          vue.createElementVNode("view", { class: "item-right" }, [
            vue.createElementVNode(
              "text",
              { class: "item-value" },
              vue.toDisplayString($data.hasPassword ? "已设置" : "未设置"),
              1
              /* TEXT */
            ),
            vue.createElementVNode("image", {
              class: "arrow-icon",
              src: _imports_3
            })
          ])
        ])
      ]),
      vue.createElementVNode("view", { class: "section-title-security" }, "高级设置"),
      vue.createElementVNode("view", { class: "group-card" }, [
        vue.createElementVNode("view", {
          class: "list-item no-border",
          onClick: _cache[3] || (_cache[3] = (...args) => $options.deleteAccount && $options.deleteAccount(...args))
        }, [
          vue.createElementVNode("text", { class: "item-title" }, "注销账号"),
          vue.createElementVNode("image", {
            class: "arrow-icon",
            src: _imports_3
          })
        ])
      ])
    ]);
  }
  const PagesMineSettingsSecurityIndex = /* @__PURE__ */ _export_sfc(_sfc_main$f, [["render", _sfc_render$e], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/mine/settings/security/index.vue"]]);
  const _sfc_main$e = {
    data() {
      return {
        name: ""
      };
    },
    onLoad(options) {
      if (options.name) {
        this.name = decodeURIComponent(options.name);
      }
    },
    methods: {
      navBack() {
        uni.navigateBack({ delta: 1 });
      },
      // 提交修改 @author steelwei
      async submitChange() {
        if (!this.name || !this.name.trim()) {
          uni.showToast({ title: "请输入姓名", icon: "none" });
          return;
        }
        if (this.name.trim().length < 2) {
          uni.showToast({ title: "姓名至少2个字符", icon: "none" });
          return;
        }
        uni.showLoading({ title: "提交中..." });
        try {
          const res = await updateName(this.name.trim());
          if (res.code === 200) {
            uni.showToast({
              title: "修改成功",
              icon: "success",
              duration: 2e3
            });
            uni.$emit("updateName", this.name.trim());
            setTimeout(() => {
              uni.navigateBack({ delta: 1 });
            }, 2e3);
          } else {
            uni.showToast({
              title: res.msg || "修改失败",
              icon: "none"
            });
          }
        } catch (error) {
          formatAppLog("error", "at pages/mine/settings/profile/edit-name.vue:94", "修改姓名失败:", error);
          uni.showToast({ title: "网络错误", icon: "none" });
        } finally {
          uni.hideLoading();
        }
      }
    }
  };
  function _sfc_render$d(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode("view", { class: "custom-header" }, [
        vue.createElementVNode("view", {
          class: "header-left",
          onClick: _cache[0] || (_cache[0] = (...args) => $options.navBack && $options.navBack(...args))
        }, [
          vue.createElementVNode("image", {
            class: "back-icon",
            src: _imports_0,
            style: { "transform": "rotate(180deg)" }
          })
        ]),
        vue.createElementVNode("text", { class: "header-title" }, "修改姓名"),
        vue.createElementVNode("view", { class: "header-right" })
      ]),
      vue.createElementVNode("view", { class: "header-placeholder" }),
      vue.createElementVNode("view", { class: "form-card" }, [
        vue.createElementVNode("view", { class: "form-item no-border" }, [
          vue.createElementVNode("text", { class: "form-label" }, "真实姓名"),
          vue.withDirectives(vue.createElementVNode(
            "input",
            {
              class: "form-input",
              type: "text",
              "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => $data.name = $event),
              placeholder: "请输入真实姓名",
              "placeholder-class": "placeholder",
              maxlength: "20"
            },
            null,
            512
            /* NEED_PATCH */
          ), [
            [vue.vModelText, $data.name]
          ])
        ])
      ]),
      vue.createElementVNode("view", { class: "btn-area" }, [
        vue.createElementVNode("button", {
          class: "submit-btn",
          onClick: _cache[2] || (_cache[2] = (...args) => $options.submitChange && $options.submitChange(...args))
        }, "确认修改")
      ]),
      vue.createElementVNode("view", { class: "tips" }, [
        vue.createElementVNode("text", { class: "tips-text" }, "• 请输入您的真实姓名"),
        vue.createElementVNode("text", { class: "tips-text" }, "• 姓名将用于实名认证和订单服务")
      ])
    ]);
  }
  const PagesMineSettingsProfileEditName = /* @__PURE__ */ _export_sfc(_sfc_main$e, [["render", _sfc_render$d], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/mine/settings/profile/edit-name.vue"]]);
  const _sfc_main$d = {
    data() {
      return {
        oldPassword: "",
        newPassword: "",
        confirmPassword: ""
      };
    },
    methods: {
      navBack() {
        uni.navigateBack({ delta: 1 });
      },
      // 提交修改 @author steelwei
      async submitChange() {
        if (!this.oldPassword) {
          uni.showToast({ title: "请输入旧密码", icon: "none" });
          return;
        }
        if (!this.newPassword) {
          uni.showToast({ title: "请输入新密码", icon: "none" });
          return;
        }
        if (this.newPassword.length < 6 || this.newPassword.length > 20) {
          uni.showToast({ title: "密码长度为6-20位", icon: "none" });
          return;
        }
        if (this.newPassword !== this.confirmPassword) {
          uni.showToast({ title: "两次密码输入不一致", icon: "none" });
          return;
        }
        uni.showLoading({ title: "提交中..." });
        try {
          const res = await updatePassword(this.oldPassword, this.newPassword);
          if (res.code === 200) {
            uni.showToast({
              title: "修改成功",
              icon: "success",
              duration: 2e3
            });
            setTimeout(() => {
              uni.navigateBack({ delta: 1 });
            }, 2e3);
          } else {
            uni.showToast({
              title: res.msg || "修改失败",
              icon: "none"
            });
          }
        } catch (error) {
          formatAppLog("error", "at pages/mine/settings/security/change-password.vue:109", "修改密码失败:", error);
          uni.showToast({ title: "网络错误", icon: "none" });
        } finally {
          uni.hideLoading();
        }
      }
    }
  };
  function _sfc_render$c(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode("view", { class: "custom-header" }, [
        vue.createElementVNode("view", {
          class: "header-left",
          onClick: _cache[0] || (_cache[0] = (...args) => $options.navBack && $options.navBack(...args))
        }, [
          vue.createElementVNode("image", {
            class: "back-icon",
            src: _imports_0,
            style: { "transform": "rotate(180deg)" }
          })
        ]),
        vue.createElementVNode("text", { class: "header-title" }, "修改密码"),
        vue.createElementVNode("view", { class: "header-right" })
      ]),
      vue.createElementVNode("view", { class: "header-placeholder" }),
      vue.createElementVNode("view", { class: "form-card" }, [
        vue.createElementVNode("view", { class: "form-item" }, [
          vue.createElementVNode("text", { class: "form-label" }, "旧密码"),
          vue.withDirectives(vue.createElementVNode(
            "input",
            {
              class: "form-input",
              type: "password",
              "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => $data.oldPassword = $event),
              placeholder: "请输入旧密码",
              "placeholder-class": "placeholder"
            },
            null,
            512
            /* NEED_PATCH */
          ), [
            [vue.vModelText, $data.oldPassword]
          ])
        ]),
        vue.createElementVNode("view", { class: "form-item" }, [
          vue.createElementVNode("text", { class: "form-label" }, "新密码"),
          vue.withDirectives(vue.createElementVNode(
            "input",
            {
              class: "form-input",
              type: "password",
              "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => $data.newPassword = $event),
              placeholder: "请输入新密码（6-20位）",
              "placeholder-class": "placeholder"
            },
            null,
            512
            /* NEED_PATCH */
          ), [
            [vue.vModelText, $data.newPassword]
          ])
        ]),
        vue.createElementVNode("view", { class: "form-item no-border" }, [
          vue.createElementVNode("text", { class: "form-label" }, "确认密码"),
          vue.withDirectives(vue.createElementVNode(
            "input",
            {
              class: "form-input",
              type: "password",
              "onUpdate:modelValue": _cache[3] || (_cache[3] = ($event) => $data.confirmPassword = $event),
              placeholder: "请再次输入新密码",
              "placeholder-class": "placeholder"
            },
            null,
            512
            /* NEED_PATCH */
          ), [
            [vue.vModelText, $data.confirmPassword]
          ])
        ])
      ]),
      vue.createElementVNode("view", { class: "btn-area" }, [
        vue.createElementVNode("button", {
          class: "submit-btn",
          onClick: _cache[4] || (_cache[4] = (...args) => $options.submitChange && $options.submitChange(...args))
        }, "确认修改")
      ])
    ]);
  }
  const PagesMineSettingsSecurityChangePassword = /* @__PURE__ */ _export_sfc(_sfc_main$d, [["render", _sfc_render$c], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/mine/settings/security/change-password.vue"]]);
  const _sfc_main$c = {
    data() {
      return {
        phone: "",
        code: "",
        countdown: 0,
        timer: null
      };
    },
    onUnload() {
      if (this.timer) {
        clearInterval(this.timer);
      }
    },
    methods: {
      navBack() {
        uni.navigateBack({ delta: 1 });
      },
      // 发送验证码 @author steelwei
      sendCode() {
        if (!this.phone) {
          uni.showToast({ title: "请输入手机号", icon: "none" });
          return;
        }
        if (!/^1[3-9]\d{9}$/.test(this.phone)) {
          uni.showToast({ title: "手机号格式不正确", icon: "none" });
          return;
        }
        uni.showToast({ title: "验证码已发送", icon: "success" });
        this.countdown = 60;
        this.timer = setInterval(() => {
          this.countdown--;
          if (this.countdown <= 0) {
            clearInterval(this.timer);
          }
        }, 1e3);
      },
      // 提交修改 @author steelwei
      async submitChange() {
        if (!this.phone) {
          uni.showToast({ title: "请输入手机号", icon: "none" });
          return;
        }
        if (!/^1[3-9]\d{9}$/.test(this.phone)) {
          uni.showToast({ title: "手机号格式不正确", icon: "none" });
          return;
        }
        if (!this.code) {
          uni.showToast({ title: "请输入验证码", icon: "none" });
          return;
        }
        uni.showLoading({ title: "提交中..." });
        try {
          const res = await updatePhone(this.phone, this.code);
          if (res.code === 200) {
            uni.showToast({
              title: "修改成功",
              icon: "success",
              duration: 2e3
            });
            setTimeout(() => {
              uni.navigateBack({ delta: 1 });
            }, 2e3);
          } else {
            uni.showToast({
              title: res.msg || "修改失败",
              icon: "none"
            });
          }
        } catch (error) {
          formatAppLog("error", "at pages/mine/settings/security/change-phone.vue:139", "修改手机号失败:", error);
          uni.showToast({ title: "网络错误", icon: "none" });
        } finally {
          uni.hideLoading();
        }
      }
    }
  };
  function _sfc_render$b(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode("view", { class: "custom-header" }, [
        vue.createElementVNode("view", {
          class: "header-left",
          onClick: _cache[0] || (_cache[0] = (...args) => $options.navBack && $options.navBack(...args))
        }, [
          vue.createElementVNode("image", {
            class: "back-icon",
            src: _imports_0,
            style: { "transform": "rotate(180deg)" }
          })
        ]),
        vue.createElementVNode("text", { class: "header-title" }, "修改手机号"),
        vue.createElementVNode("view", { class: "header-right" })
      ]),
      vue.createElementVNode("view", { class: "header-placeholder" }),
      vue.createElementVNode("view", { class: "form-card" }, [
        vue.createElementVNode("view", { class: "form-item" }, [
          vue.createElementVNode("text", { class: "form-label" }, "新手机号"),
          vue.withDirectives(vue.createElementVNode(
            "input",
            {
              class: "form-input",
              type: "number",
              "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => $data.phone = $event),
              placeholder: "请输入新手机号",
              "placeholder-class": "placeholder",
              maxlength: "11"
            },
            null,
            512
            /* NEED_PATCH */
          ), [
            [vue.vModelText, $data.phone]
          ])
        ]),
        vue.createElementVNode("view", { class: "form-item no-border" }, [
          vue.createElementVNode("text", { class: "form-label" }, "验证码"),
          vue.withDirectives(vue.createElementVNode(
            "input",
            {
              class: "form-input",
              type: "number",
              "onUpdate:modelValue": _cache[2] || (_cache[2] = ($event) => $data.code = $event),
              placeholder: "请输入验证码",
              "placeholder-class": "placeholder",
              maxlength: "6"
            },
            null,
            512
            /* NEED_PATCH */
          ), [
            [vue.vModelText, $data.code]
          ]),
          vue.createElementVNode("button", {
            class: "code-btn",
            disabled: $data.countdown > 0,
            onClick: _cache[3] || (_cache[3] = (...args) => $options.sendCode && $options.sendCode(...args))
          }, vue.toDisplayString($data.countdown > 0 ? `${$data.countdown}s` : "获取验证码"), 9, ["disabled"])
        ])
      ]),
      vue.createElementVNode("view", { class: "btn-area" }, [
        vue.createElementVNode("button", {
          class: "submit-btn",
          onClick: _cache[4] || (_cache[4] = (...args) => $options.submitChange && $options.submitChange(...args))
        }, "确认修改")
      ]),
      vue.createElementVNode("view", { class: "tips" }, [
        vue.createElementVNode("text", { class: "tips-text" }, "• 修改手机号后，新手机号将作为登录账号"),
        vue.createElementVNode("text", { class: "tips-text" }, "• 请确保新手机号可以正常接收短信")
      ])
    ]);
  }
  const PagesMineSettingsSecurityChangePhone = /* @__PURE__ */ _export_sfc(_sfc_main$c, [["render", _sfc_render$b], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/mine/settings/security/change-phone.vue"]]);
  const _sfc_main$b = {
    data() {
      return {};
    },
    methods: {
      navBack() {
        uni.navigateBack({
          delta: 1
        });
      },
      switchChange(type, e) {
        formatAppLog("log", "at pages/mine/settings/notification/index.vue:41", "switch change", type, e.detail.value);
      }
    }
  };
  function _sfc_render$a(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode("view", { class: "custom-header" }, [
        vue.createElementVNode("view", {
          class: "header-left",
          onClick: _cache[0] || (_cache[0] = (...args) => $options.navBack && $options.navBack(...args))
        }, [
          vue.createElementVNode("image", {
            class: "back-icon",
            src: _imports_0,
            style: { "transform": "rotate(180deg)" }
          })
        ]),
        vue.createElementVNode("text", { class: "header-title" }, "推送通知设置"),
        vue.createElementVNode("view", { class: "header-right" })
      ]),
      vue.createElementVNode("view", { class: "header-placeholder" }),
      vue.createElementVNode("view", { class: "group-card" }, [
        vue.createElementVNode("view", { class: "list-item" }, [
          vue.createElementVNode("text", { class: "item-title" }, "系统消息通知"),
          vue.createElementVNode(
            "switch",
            {
              checked: "",
              color: "#FF5722",
              style: { "transform": "scale(0.8)" },
              onChange: _cache[1] || (_cache[1] = ($event) => $options.switchChange("system", $event))
            },
            null,
            32
            /* NEED_HYDRATION */
          )
        ]),
        vue.createElementVNode("view", { class: "list-item no-border" }, [
          vue.createElementVNode("text", { class: "item-title" }, "订单消息通知"),
          vue.createElementVNode(
            "switch",
            {
              checked: "",
              color: "#FF5722",
              style: { "transform": "scale(0.8)" },
              onChange: _cache[2] || (_cache[2] = ($event) => $options.switchChange("order", $event))
            },
            null,
            32
            /* NEED_HYDRATION */
          )
        ])
      ]),
      vue.createElementVNode("text", { class: "tips-text" }, "关闭通知后将收不到消息通知推送")
    ]);
  }
  const PagesMineSettingsNotificationIndex = /* @__PURE__ */ _export_sfc(_sfc_main$b, [["render", _sfc_render$a], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/mine/settings/notification/index.vue"]]);
  const _sfc_main$a = {
    data() {
      return {};
    },
    methods: {
      navBack() {
        uni.navigateBack({
          delta: 1
        });
      }
    }
  };
  function _sfc_render$9(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode("view", { class: "custom-header" }, [
        vue.createElementVNode("view", {
          class: "header-left",
          onClick: _cache[0] || (_cache[0] = (...args) => $options.navBack && $options.navBack(...args))
        }, [
          vue.createElementVNode("image", {
            class: "back-icon",
            src: _imports_0,
            style: { "transform": "rotate(180deg)" }
          })
        ]),
        vue.createElementVNode("text", { class: "header-title" }, "关于我们"),
        vue.createElementVNode("view", { class: "header-right" })
      ]),
      vue.createElementVNode("view", { class: "header-placeholder" }),
      vue.createElementVNode("view", { class: "logo-area" }, [
        vue.createElementVNode("image", {
          class: "app-logo",
          src: _imports_1$8,
          mode: "aspectFit"
        }),
        vue.createElementVNode("text", { class: "app-name" }, "履约者APP"),
        vue.createElementVNode("text", { class: "app-version" }, "Version 2.0.6")
      ]),
      vue.createElementVNode("view", { class: "group-card" }, [
        vue.createElementVNode("view", { class: "list-item" }, [
          vue.createElementVNode("text", { class: "item-title" }, "服务协议"),
          vue.createElementVNode("image", {
            class: "arrow-icon",
            src: _imports_3
          })
        ]),
        vue.createElementVNode("view", { class: "list-item" }, [
          vue.createElementVNode("text", { class: "item-title" }, "隐私政策"),
          vue.createElementVNode("image", {
            class: "arrow-icon",
            src: _imports_3
          })
        ]),
        vue.createElementVNode("view", { class: "list-item no-border" }, [
          vue.createElementVNode("text", { class: "item-title" }, "版本更新"),
          vue.createElementVNode("view", { class: "item-right" }, [
            vue.createElementVNode("view", { class: "badge-yellow" }, "1"),
            vue.createElementVNode("image", {
              class: "arrow-icon",
              src: _imports_3
            })
          ])
        ])
      ])
    ]);
  }
  const PagesMineSettingsAboutIndex = /* @__PURE__ */ _export_sfc(_sfc_main$a, [["render", _sfc_render$9], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/mine/settings/about/index.vue"]]);
  const _imports_1$2 = "/static/icons/wallet_white.svg";
  const _imports_2$2 = "/static/icons/arrow_right_gray.svg";
  const _sfc_main$9 = {
    data() {
      return {
        currentTab: 0,
        list: [
          {
            title: "订单服务费用",
            desc: "订单 T1002839 完成结算",
            time: "2026-02-03 14:30",
            amount: "20.00",
            type: "income",
            tag: "订单"
          },
          {
            title: "奖励费用",
            desc: "早高峰冲单奖励",
            time: "2026-02-03 10:00",
            amount: "15.00",
            type: "income",
            tag: "奖励"
          },
          {
            title: "惩罚金额",
            desc: "超时送达扣款",
            time: "2026-02-02 18:20",
            amount: "-10.00",
            type: "expense",
            tag: "惩罚"
          },
          {
            title: "后台转账",
            desc: "2026年1月工资发放",
            time: "2026-02-01 09:00",
            amount: "3500.00",
            type: "income",
            tag: "工资"
          }
        ]
      };
    },
    computed: {
      displayList() {
        if (this.currentTab === 0)
          return this.list;
        if (this.currentTab === 1)
          return this.list.filter((item) => item.type === "income");
        if (this.currentTab === 2)
          return this.list.filter((item) => item.type === "expense");
        return [];
      }
    },
    methods: {
      navBack() {
        uni.navigateBack();
      },
      navToBill() {
        uni.navigateTo({
          url: "/pages/mine/wallet/bill"
        });
      },
      switchTab(index) {
        this.currentTab = index;
      }
    }
  };
  function _sfc_render$8(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode("view", { class: "nav-bar" }, [
        vue.createElementVNode("view", {
          class: "nav-left",
          onClick: _cache[0] || (_cache[0] = (...args) => $options.navBack && $options.navBack(...args))
        }, [
          vue.createElementVNode("image", {
            class: "back-icon",
            src: _imports_0
          })
        ]),
        vue.createElementVNode("text", { class: "nav-title" }, "我的钱包"),
        vue.createElementVNode("view", { class: "nav-right" })
      ]),
      vue.createElementVNode("view", { class: "wallet-card" }, [
        vue.createElementVNode("view", { class: "bg-circle big" }),
        vue.createElementVNode("view", { class: "bg-circle small" }),
        vue.createElementVNode("view", { class: "card-content" }, [
          vue.createElementVNode("view", { class: "card-top" }, [
            vue.createElementVNode("view", { class: "app-info" }, [
              vue.createElementVNode("image", {
                class: "app-logo",
                src: _imports_1$2,
                mode: "aspectFit"
              }),
              vue.createElementVNode("text", { class: "app-name" }, "履约者APP")
            ]),
            vue.createElementVNode("view", {
              class: "bill-btn",
              onClick: _cache[1] || (_cache[1] = (...args) => $options.navToBill && $options.navToBill(...args))
            }, [
              vue.createElementVNode("text", null, "账单")
            ])
          ]),
          vue.createElementVNode("view", { class: "balance-container" }, [
            vue.createElementVNode("view", { class: "balance-main" }, [
              vue.createElementVNode("text", { class: "balance-label" }, "账户余额 (元)"),
              vue.createElementVNode("text", { class: "balance-num" }, "2575.00")
            ]),
            vue.createElementVNode("view", { class: "balance-pending" }, [
              vue.createElementVNode("text", { class: "pending-label" }, "待入账 (元)"),
              vue.createElementVNode("text", { class: "pending-num" }, "580.00")
            ])
          ])
        ])
      ]),
      vue.createElementVNode("view", { class: "record-container" }, [
        vue.createElementVNode("view", { class: "record-header" }, [
          vue.createElementVNode("text", { class: "header-title" }, "最近账户余额变动记录"),
          vue.createElementVNode("view", {
            class: "header-more",
            onClick: _cache[2] || (_cache[2] = (...args) => $options.navToBill && $options.navToBill(...args))
          }, [
            vue.createElementVNode("text", null, "查看全部"),
            vue.createElementVNode("image", {
              class: "more-icon",
              src: _imports_2$2
            })
          ])
        ]),
        vue.createElementVNode("view", { class: "tabs-row" }, [
          vue.createElementVNode(
            "view",
            {
              class: vue.normalizeClass(["tab-item", { active: $data.currentTab === 0 }]),
              onClick: _cache[3] || (_cache[3] = ($event) => $options.switchTab(0))
            },
            [
              vue.createElementVNode("text", null, "全部"),
              $data.currentTab === 0 ? (vue.openBlock(), vue.createElementBlock("view", {
                key: 0,
                class: "tab-line"
              })) : vue.createCommentVNode("v-if", true)
            ],
            2
            /* CLASS */
          ),
          vue.createElementVNode(
            "view",
            {
              class: vue.normalizeClass(["tab-item", { active: $data.currentTab === 1 }]),
              onClick: _cache[4] || (_cache[4] = ($event) => $options.switchTab(1))
            },
            [
              vue.createElementVNode("text", null, "收入"),
              $data.currentTab === 1 ? (vue.openBlock(), vue.createElementBlock("view", {
                key: 0,
                class: "tab-line"
              })) : vue.createCommentVNode("v-if", true)
            ],
            2
            /* CLASS */
          ),
          vue.createElementVNode(
            "view",
            {
              class: vue.normalizeClass(["tab-item", { active: $data.currentTab === 2 }]),
              onClick: _cache[5] || (_cache[5] = ($event) => $options.switchTab(2))
            },
            [
              vue.createElementVNode("text", null, "支出"),
              $data.currentTab === 2 ? (vue.openBlock(), vue.createElementBlock("view", {
                key: 0,
                class: "tab-line"
              })) : vue.createCommentVNode("v-if", true)
            ],
            2
            /* CLASS */
          )
        ]),
        vue.createElementVNode("view", { class: "record-list" }, [
          (vue.openBlock(true), vue.createElementBlock(
            vue.Fragment,
            null,
            vue.renderList($options.displayList, (item, index) => {
              return vue.openBlock(), vue.createElementBlock("view", {
                class: "list-item",
                key: index
              }, [
                vue.createElementVNode("view", { class: "item-left" }, [
                  vue.createElementVNode(
                    "text",
                    { class: "item-title" },
                    vue.toDisplayString(item.title),
                    1
                    /* TEXT */
                  ),
                  vue.createElementVNode(
                    "text",
                    { class: "item-desc" },
                    vue.toDisplayString(item.desc),
                    1
                    /* TEXT */
                  ),
                  vue.createElementVNode(
                    "text",
                    { class: "item-time" },
                    vue.toDisplayString(item.time),
                    1
                    /* TEXT */
                  )
                ]),
                vue.createElementVNode("view", { class: "item-right" }, [
                  vue.createElementVNode(
                    "text",
                    {
                      class: vue.normalizeClass(["item-amount", { income: item.type === "income", expense: item.type === "expense" }])
                    },
                    vue.toDisplayString(item.type === "income" ? "+" : "") + vue.toDisplayString(item.amount),
                    3
                    /* TEXT, CLASS */
                  ),
                  vue.createElementVNode("view", { class: "item-tag" }, [
                    vue.createElementVNode(
                      "text",
                      null,
                      vue.toDisplayString(item.tag),
                      1
                      /* TEXT */
                    )
                  ])
                ])
              ]);
            }),
            128
            /* KEYED_FRAGMENT */
          ))
        ])
      ])
    ]);
  }
  const PagesMineWalletIndex = /* @__PURE__ */ _export_sfc(_sfc_main$9, [["render", _sfc_render$8], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/mine/wallet/index.vue"]]);
  const _sfc_main$8 = {
    data() {
      return {
        currentTab: 0,
        // 模拟数据结构
        groups: [
          {
            month: "2月 2026",
            income: "35.00",
            expense: "10.00",
            items: [
              {
                title: "订单服务费用",
                desc: "订单完成",
                time: "02-03 14:30",
                amount: "20.00",
                type: "income",
                tag: "订单"
              },
              {
                title: "奖励费用",
                desc: "早高峰奖励",
                // shortened to match ui better
                time: "02-03 10:00",
                amount: "15.00",
                type: "income",
                tag: "奖励"
              },
              {
                title: "惩罚金额",
                desc: "超时送达",
                time: "02-02 18:20",
                amount: "-10.00",
                type: "expense",
                tag: "惩罚"
              }
            ]
          },
          {
            month: "1月 2026",
            income: "3500.00",
            expense: "100.00",
            items: [
              {
                title: "后台转账",
                desc: "1月工资发放",
                time: "01-31 09:00",
                amount: "3500.00",
                type: "income",
                tag: "工资"
              },
              {
                title: "装备扣款",
                desc: "装备费用",
                time: "01-15 10:00",
                amount: "-100.00",
                type: "expense",
                tag: "扣款"
              }
            ]
          }
        ]
      };
    },
    computed: {
      displayGroups() {
        if (this.currentTab === 0)
          return this.groups;
        return this.groups.map((group) => {
          const filteredItems = group.items.filter((item) => {
            const type = this.currentTab === 1 ? "income" : "expense";
            return item.type === type;
          });
          return {
            ...group,
            items: filteredItems
          };
        }).filter((group) => group.items.length > 0);
      }
    },
    methods: {
      navBack() {
        uni.navigateBack();
      },
      switchTab(index) {
        this.currentTab = index;
      }
    }
  };
  function _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode("view", { class: "nav-bar" }, [
        vue.createElementVNode("view", {
          class: "nav-left",
          onClick: _cache[0] || (_cache[0] = (...args) => $options.navBack && $options.navBack(...args))
        }, [
          vue.createElementVNode("image", {
            class: "back-icon",
            src: _imports_0
          })
        ]),
        vue.createElementVNode("text", { class: "nav-title" }, "账单明细"),
        vue.createElementVNode("view", { class: "nav-right" })
      ]),
      vue.createElementVNode("view", { class: "content-area" }, [
        vue.createElementVNode("view", { class: "tabs-row" }, [
          vue.createElementVNode(
            "view",
            {
              class: vue.normalizeClass(["tab-item", { active: $data.currentTab === 0 }]),
              onClick: _cache[1] || (_cache[1] = ($event) => $options.switchTab(0))
            },
            [
              vue.createElementVNode("text", null, "全部"),
              $data.currentTab === 0 ? (vue.openBlock(), vue.createElementBlock("view", {
                key: 0,
                class: "tab-line"
              })) : vue.createCommentVNode("v-if", true)
            ],
            2
            /* CLASS */
          ),
          vue.createElementVNode(
            "view",
            {
              class: vue.normalizeClass(["tab-item", { active: $data.currentTab === 1 }]),
              onClick: _cache[2] || (_cache[2] = ($event) => $options.switchTab(1))
            },
            [
              vue.createElementVNode("text", null, "收入"),
              $data.currentTab === 1 ? (vue.openBlock(), vue.createElementBlock("view", {
                key: 0,
                class: "tab-line"
              })) : vue.createCommentVNode("v-if", true)
            ],
            2
            /* CLASS */
          ),
          vue.createElementVNode(
            "view",
            {
              class: vue.normalizeClass(["tab-item", { active: $data.currentTab === 2 }]),
              onClick: _cache[3] || (_cache[3] = ($event) => $options.switchTab(2))
            },
            [
              vue.createElementVNode("text", null, "支出"),
              $data.currentTab === 2 ? (vue.openBlock(), vue.createElementBlock("view", {
                key: 0,
                class: "tab-line"
              })) : vue.createCommentVNode("v-if", true)
            ],
            2
            /* CLASS */
          )
        ]),
        vue.createElementVNode("scroll-view", {
          "scroll-y": "",
          class: "bill-list"
        }, [
          (vue.openBlock(true), vue.createElementBlock(
            vue.Fragment,
            null,
            vue.renderList($options.displayGroups, (group, gIndex) => {
              return vue.openBlock(), vue.createElementBlock("view", {
                key: gIndex,
                class: "month-group"
              }, [
                vue.createElementVNode("view", { class: "group-header" }, [
                  vue.createElementVNode(
                    "text",
                    { class: "month-title" },
                    vue.toDisplayString(group.month),
                    1
                    /* TEXT */
                  ),
                  vue.createElementVNode(
                    "text",
                    { class: "month-summary" },
                    "收入 ¥" + vue.toDisplayString(group.income) + " 支出 ¥" + vue.toDisplayString(group.expense),
                    1
                    /* TEXT */
                  )
                ]),
                (vue.openBlock(true), vue.createElementBlock(
                  vue.Fragment,
                  null,
                  vue.renderList(group.items, (item, index) => {
                    return vue.openBlock(), vue.createElementBlock("view", {
                      class: "list-item",
                      key: index
                    }, [
                      vue.createElementVNode(
                        "view",
                        {
                          class: vue.normalizeClass(["item-icon-box", item.type])
                        },
                        [
                          vue.createElementVNode(
                            "text",
                            { class: "item-icon-symbol" },
                            vue.toDisplayString(item.type === "income" ? "+" : "-"),
                            1
                            /* TEXT */
                          )
                        ],
                        2
                        /* CLASS */
                      ),
                      vue.createElementVNode("view", { class: "item-center" }, [
                        vue.createElementVNode(
                          "text",
                          { class: "item-title" },
                          vue.toDisplayString(item.title),
                          1
                          /* TEXT */
                        ),
                        vue.createElementVNode(
                          "text",
                          { class: "item-desc" },
                          vue.toDisplayString(item.time) + " " + vue.toDisplayString(item.desc),
                          1
                          /* TEXT */
                        )
                      ]),
                      vue.createElementVNode("view", { class: "item-right" }, [
                        vue.createElementVNode(
                          "text",
                          {
                            class: vue.normalizeClass(["item-amount", { income: item.type === "income", expense: item.type === "expense" }])
                          },
                          vue.toDisplayString(item.type === "income" ? "+" : "") + vue.toDisplayString(item.amount),
                          3
                          /* TEXT, CLASS */
                        ),
                        vue.createElementVNode("view", { class: "item-tag" }, [
                          vue.createElementVNode(
                            "text",
                            null,
                            vue.toDisplayString(item.tag),
                            1
                            /* TEXT */
                          )
                        ])
                      ])
                    ]);
                  }),
                  128
                  /* KEYED_FRAGMENT */
                ))
              ]);
            }),
            128
            /* KEYED_FRAGMENT */
          )),
          vue.createElementVNode("view", { class: "list-padding-bottom" })
        ])
      ])
    ]);
  }
  const PagesMineWalletBill = /* @__PURE__ */ _export_sfc(_sfc_main$8, [["render", _sfc_render$7], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/mine/wallet/bill.vue"]]);
  const _sfc_main$7 = {
    data() {
      return {
        currentIndex: 2,
        // 默认选中 L3
        levels: [
          {
            id: "L1",
            name: "青铜履约者",
            score: "需成长值 0",
            isCurrent: false,
            benefits: [
              { name: "新手任务", desc: "完成新手任务可获得额外奖励", icon: "/static/icons/reward.svg" }
            ]
          },
          {
            id: "L2",
            name: "白银履约者",
            score: "需成长值 200",
            isCurrent: false,
            benefits: [
              { name: "新手任务", desc: "完成新手任务可获得额外奖励", icon: "/static/icons/reward.svg" },
              { name: "优先派单", desc: "系统将优先为您派送附近的优质订单", icon: "" }
            ]
          },
          {
            id: "L3",
            name: "黄金履约者",
            score: "需成长值 500",
            isCurrent: true,
            benefits: [
              { name: "极速提现", desc: "提现申请 2 小时内极速到账，无需等待。", icon: "" },
              { name: "晋升奖励", desc: "晋升等级可获得现金红包奖励。", icon: "/static/icons/reward.svg" },
              { name: "优先派单", desc: "系统将优先为您派送附近的优质订单。", icon: "" }
            ]
          },
          {
            id: "L4",
            name: "钻石履约者",
            score: "需成长值 2000",
            isCurrent: false,
            benefits: [
              { name: "专属客服", desc: "享受 7x24 小时专属客服通道。", icon: "/static/icons/service.svg" },
              { name: "生日礼包", desc: "生日当天获赠专属礼包。", icon: "/static/icons/reward.svg" },
              { name: "装备免费换", desc: "每年可免费更换一套履约装备。", icon: "" },
              { name: "医疗互助", desc: "享受平台提供的医疗互助保障。", icon: "" }
            ]
          }
        ],
        isPopupShow: false,
        currentBenefit: null
      };
    },
    computed: {
      currentLevel() {
        return this.levels[this.currentIndex];
      }
    },
    methods: {
      navBack() {
        uni.navigateBack({
          delta: 1
        });
      },
      swiperChange(e) {
        this.currentIndex = e.detail.current;
      },
      changeLevel(index) {
        this.currentIndex = index;
      },
      showBenefitDetail(benefit) {
        this.currentBenefit = benefit;
        this.isPopupShow = true;
      },
      closePopup() {
        this.isPopupShow = false;
      }
    }
  };
  function _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode("view", { class: "custom-header" }, [
        vue.createElementVNode("view", {
          class: "header-left",
          onClick: _cache[0] || (_cache[0] = (...args) => $options.navBack && $options.navBack(...args))
        }, [
          vue.createElementVNode("image", {
            class: "back-icon",
            src: _imports_0,
            style: { "transform": "rotate(180deg)" }
          })
        ]),
        vue.createElementVNode("text", { class: "header-title" }, "履约者等级权益"),
        vue.createElementVNode("view", { class: "header-right" })
      ]),
      vue.createElementVNode("view", { class: "header-placeholder" }),
      vue.createElementVNode("view", { class: "swiper-container" }, [
        vue.createElementVNode("swiper", {
          class: "level-swiper",
          "previous-margin": "80rpx",
          "next-margin": "80rpx",
          current: $data.currentIndex,
          onChange: _cache[1] || (_cache[1] = (...args) => $options.swiperChange && $options.swiperChange(...args))
        }, [
          (vue.openBlock(true), vue.createElementBlock(
            vue.Fragment,
            null,
            vue.renderList($data.levels, (level, index) => {
              return vue.openBlock(), vue.createElementBlock("swiper-item", {
                key: index,
                onClick: ($event) => $options.changeLevel(index)
              }, [
                vue.createElementVNode(
                  "view",
                  {
                    class: vue.normalizeClass(["level-card", "level-card-" + (index + 1)]),
                    style: vue.normalizeStyle({ transform: $data.currentIndex === index ? "scale(1)" : "scale(0.9)" })
                  },
                  [
                    vue.createElementVNode("view", { class: "card-content" }, [
                      vue.createElementVNode("view", { class: "card-header" }, [
                        vue.createElementVNode(
                          "view",
                          { class: "level-badge" },
                          vue.toDisplayString(level.id),
                          1
                          /* TEXT */
                        ),
                        level.isCurrent ? (vue.openBlock(), vue.createElementBlock("view", {
                          key: 0,
                          class: "current-badge"
                        }, "当前等级")) : vue.createCommentVNode("v-if", true)
                      ]),
                      vue.createElementVNode(
                        "text",
                        { class: "level-name" },
                        vue.toDisplayString(level.name),
                        1
                        /* TEXT */
                      ),
                      vue.createElementVNode(
                        "text",
                        { class: "level-score" },
                        vue.toDisplayString(level.score),
                        1
                        /* TEXT */
                      ),
                      vue.createElementVNode("image", {
                        class: "crown-overlay",
                        src: _imports_1$4,
                        mode: "aspectFit"
                      })
                    ])
                  ],
                  6
                  /* CLASS, STYLE */
                )
              ], 8, ["onClick"]);
            }),
            128
            /* KEYED_FRAGMENT */
          ))
        ], 40, ["current"]),
        vue.createElementVNode("view", { class: "swiper-dots" }, [
          (vue.openBlock(true), vue.createElementBlock(
            vue.Fragment,
            null,
            vue.renderList($data.levels, (item, index) => {
              return vue.openBlock(), vue.createElementBlock(
                "view",
                {
                  class: vue.normalizeClass(["dot", { active: $data.currentIndex === index }]),
                  key: index
                },
                null,
                2
                /* CLASS */
              );
            }),
            128
            /* KEYED_FRAGMENT */
          ))
        ])
      ]),
      vue.createElementVNode("view", { class: "benefits-title-row" }, [
        vue.createElementVNode(
          "text",
          { class: "benefits-title" },
          vue.toDisplayString($options.currentLevel.id) + " 专属权益",
          1
          /* TEXT */
        ),
        vue.createElementVNode(
          "text",
          { class: "benefits-count" },
          "(" + vue.toDisplayString($options.currentLevel.benefits.length) + ")",
          1
          /* TEXT */
        )
      ]),
      vue.createElementVNode("view", { class: "benefits-grid" }, [
        (vue.openBlock(true), vue.createElementBlock(
          vue.Fragment,
          null,
          vue.renderList($options.currentLevel.benefits, (benefit, index) => {
            return vue.openBlock(), vue.createElementBlock("view", {
              class: "benefit-item",
              key: index,
              onClick: ($event) => $options.showBenefitDetail(benefit)
            }, [
              vue.createElementVNode("view", { class: "benefit-icon-wrapper" }, [
                benefit.icon ? (vue.openBlock(), vue.createElementBlock("image", {
                  key: 0,
                  class: "benefit-icon",
                  src: benefit.icon,
                  mode: "aspectFit"
                }, null, 8, ["src"])) : (vue.openBlock(), vue.createElementBlock(
                  "view",
                  {
                    key: 1,
                    class: "benefit-icon-placeholder"
                  },
                  vue.toDisplayString(benefit.name[0]),
                  1
                  /* TEXT */
                ))
              ]),
              vue.createElementVNode(
                "text",
                { class: "benefit-name" },
                vue.toDisplayString(benefit.name),
                1
                /* TEXT */
              )
            ], 8, ["onClick"]);
          }),
          128
          /* KEYED_FRAGMENT */
        ))
      ]),
      vue.createElementVNode(
        "view",
        {
          class: vue.normalizeClass(["popup-mask", { "show": $data.isPopupShow }]),
          onClick: _cache[4] || (_cache[4] = (...args) => $options.closePopup && $options.closePopup(...args)),
          onTouchmove: _cache[5] || (_cache[5] = vue.withModifiers(() => {
          }, ["stop", "prevent"]))
        },
        [
          vue.createElementVNode("view", {
            class: "popup-modal",
            onClick: _cache[3] || (_cache[3] = vue.withModifiers(() => {
            }, ["stop"]))
          }, [
            vue.createElementVNode("view", { class: "popup-icon-wrapper" }, [
              $data.currentBenefit && $data.currentBenefit.icon ? (vue.openBlock(), vue.createElementBlock("image", {
                key: 0,
                class: "benefit-icon-large",
                src: $data.currentBenefit.icon,
                mode: "aspectFit"
              }, null, 8, ["src"])) : (vue.openBlock(), vue.createElementBlock(
                "view",
                {
                  key: 1,
                  class: "benefit-icon-placeholder-large"
                },
                vue.toDisplayString($data.currentBenefit ? $data.currentBenefit.name[0] : ""),
                1
                /* TEXT */
              ))
            ]),
            vue.createElementVNode(
              "text",
              { class: "popup-title" },
              vue.toDisplayString($data.currentBenefit ? $data.currentBenefit.name : ""),
              1
              /* TEXT */
            ),
            vue.createElementVNode(
              "text",
              { class: "popup-desc" },
              vue.toDisplayString($data.currentBenefit ? $data.currentBenefit.desc : ""),
              1
              /* TEXT */
            ),
            vue.createElementVNode("button", {
              class: "popup-btn",
              onClick: _cache[2] || (_cache[2] = (...args) => $options.closePopup && $options.closePopup(...args))
            }, "我知道了")
          ])
        ],
        34
        /* CLASS, NEED_HYDRATION */
      )
    ]);
  }
  const PagesMineLevelIndex = /* @__PURE__ */ _export_sfc(_sfc_main$7, [["render", _sfc_render$6], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/mine/level/index.vue"]]);
  const _imports_1$1 = "/static/icons/icon_order_msg.svg";
  const _imports_2$1 = "/static/icons/icon_system_msg.svg";
  const _sfc_main$6 = {
    data() {
      return {};
    },
    methods: {
      navBack() {
        uni.navigateBack();
      },
      navToOrderMsg() {
        uni.navigateTo({
          url: "/pages/mine/message/order"
        });
      },
      navToSystemMsg() {
        uni.navigateTo({
          url: "/pages/mine/message/system"
        });
      }
    }
  };
  function _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode("view", { class: "nav-bar" }, [
        vue.createElementVNode("view", {
          class: "nav-left",
          onClick: _cache[0] || (_cache[0] = (...args) => $options.navBack && $options.navBack(...args))
        }, [
          vue.createElementVNode("image", {
            class: "back-icon",
            src: _imports_0,
            style: { "transform": "rotate(180deg)" }
          })
        ]),
        vue.createElementVNode("text", { class: "nav-title" }, "消息中心"),
        vue.createElementVNode("view", { class: "nav-right" }, [
          vue.createElementVNode("view", { class: "more-dots" }, [
            vue.createElementVNode("view", { class: "dot" }),
            vue.createElementVNode("view", { class: "dot" }),
            vue.createElementVNode("view", { class: "dot" })
          ])
        ])
      ]),
      vue.createElementVNode("view", { class: "nav-placeholder" }),
      vue.createElementVNode("view", { class: "message-list" }, [
        vue.createElementVNode("view", {
          class: "message-item",
          onClick: _cache[1] || (_cache[1] = (...args) => $options.navToOrderMsg && $options.navToOrderMsg(...args))
        }, [
          vue.createElementVNode("view", { class: "icon-wrapper" }, [
            vue.createElementVNode("image", {
              class: "msg-icon",
              src: _imports_1$1
            }),
            vue.createElementVNode("view", { class: "red-dot-badge" })
          ]),
          vue.createElementVNode("view", { class: "content-wrapper" }, [
            vue.createElementVNode("view", { class: "top-row" }, [
              vue.createElementVNode("text", { class: "msg-title" }, "订单消息"),
              vue.createElementVNode("text", { class: "msg-time" }, "5分钟前")
            ]),
            vue.createElementVNode("text", { class: "msg-preview" }, "你收到一个站长手动派单的新订单")
          ])
        ]),
        vue.createElementVNode("view", {
          class: "message-item",
          onClick: _cache[2] || (_cache[2] = (...args) => $options.navToSystemMsg && $options.navToSystemMsg(...args))
        }, [
          vue.createElementVNode("view", { class: "icon-wrapper" }, [
            vue.createElementVNode("image", {
              class: "msg-icon",
              src: _imports_2$1
            })
          ]),
          vue.createElementVNode("view", { class: "content-wrapper" }, [
            vue.createElementVNode("view", { class: "top-row" }, [
              vue.createElementVNode("text", { class: "msg-title" }, "系统消息"),
              vue.createElementVNode("text", { class: "msg-time" }, "7天前")
            ]),
            vue.createElementVNode("text", { class: "msg-preview" }, "你的健康证明认证审核已通过。")
          ])
        ])
      ])
    ]);
  }
  const PagesMineMessageIndex = /* @__PURE__ */ _export_sfc(_sfc_main$6, [["render", _sfc_render$5], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/mine/message/index.vue"]]);
  const _sfc_main$5 = {
    methods: {
      navBack() {
        uni.navigateBack();
      }
    }
  };
  function _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode("view", { class: "nav-bar" }, [
        vue.createElementVNode("view", {
          class: "nav-left",
          onClick: _cache[0] || (_cache[0] = (...args) => $options.navBack && $options.navBack(...args))
        }, [
          vue.createElementVNode("image", {
            class: "back-icon",
            src: _imports_0,
            style: { "transform": "rotate(180deg)" }
          })
        ]),
        vue.createElementVNode("text", { class: "nav-title" }, "订单消息"),
        vue.createElementVNode("view", { class: "nav-right" })
      ]),
      vue.createElementVNode("view", { class: "nav-placeholder" }),
      vue.createElementVNode("view", { class: "msg-group" }, [
        vue.createElementVNode("view", { class: "date-label" }, "2099-12-28"),
        vue.createElementVNode("view", { class: "msg-card" }, [
          vue.createElementVNode("view", { class: "card-header" }, [
            vue.createElementVNode("text", { class: "card-title" }, "站长手动派单"),
            vue.createElementVNode("view", { class: "red-dot" })
          ]),
          vue.createElementVNode("view", { class: "card-body" }, [
            vue.createElementVNode("text", { class: "msg-text" }, "你收到一个新订单，请及时查看并接单。")
          ]),
          vue.createElementVNode("view", { class: "card-footer" }, [
            vue.createElementVNode("text", { class: "order-id" }, "订单: 2099091503521"),
            vue.createElementVNode("image", {
              class: "arrow-icon",
              src: _imports_3
            })
          ])
        ]),
        vue.createElementVNode("view", { class: "msg-card" }, [
          vue.createElementVNode("view", { class: "card-header" }, [
            vue.createElementVNode("text", { class: "card-title" }, "系统自动派单")
          ]),
          vue.createElementVNode("view", { class: "card-body" }, [
            vue.createElementVNode("text", { class: "msg-text" }, "你收到一个新订单，请及时查看并接单。")
          ]),
          vue.createElementVNode("view", { class: "card-footer" }, [
            vue.createElementVNode("text", { class: "order-id" }, "订单: 2099091503523"),
            vue.createElementVNode("image", {
              class: "arrow-icon",
              src: _imports_3
            })
          ])
        ])
      ]),
      vue.createElementVNode("view", { class: "msg-group" }, [
        vue.createElementVNode("view", { class: "date-label" }, "2099-12-27"),
        vue.createElementVNode("view", { class: "msg-card" }, [
          vue.createElementVNode("view", { class: "card-header" }, [
            vue.createElementVNode("text", { class: "card-title" }, "系统取消派单")
          ]),
          vue.createElementVNode("view", { class: "card-body" }, [
            vue.createElementVNode("text", { class: "msg-text" }, "订单由于超时未接单已被系统取消。")
          ]),
          vue.createElementVNode("view", { class: "card-footer" }, [
            vue.createElementVNode("text", { class: "order-id" }, "订单: 2099091503111"),
            vue.createElementVNode("image", {
              class: "arrow-icon",
              src: _imports_3
            })
          ])
        ])
      ])
    ]);
  }
  const PagesMineMessageOrder = /* @__PURE__ */ _export_sfc(_sfc_main$5, [["render", _sfc_render$4], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/mine/message/order.vue"]]);
  const _sfc_main$4 = {
    methods: {
      navBack() {
        uni.navigateBack();
      },
      navToDetail() {
        uni.navigateTo({
          url: "/pages/mine/message/detail"
        });
      }
    }
  };
  function _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode("view", { class: "nav-bar" }, [
        vue.createElementVNode("view", {
          class: "nav-left",
          onClick: _cache[0] || (_cache[0] = (...args) => $options.navBack && $options.navBack(...args))
        }, [
          vue.createElementVNode("image", {
            class: "back-icon",
            src: _imports_0,
            style: { "transform": "rotate(180deg)" }
          })
        ]),
        vue.createElementVNode("text", { class: "nav-title" }, "系统消息"),
        vue.createElementVNode("view", { class: "nav-right" })
      ]),
      vue.createElementVNode("view", { class: "nav-placeholder" }),
      vue.createElementVNode("view", { class: "sys-msg-list" }, [
        vue.createElementVNode("view", { class: "date-label" }, "2023-11-01"),
        vue.createElementVNode("view", {
          class: "sys-card",
          onClick: _cache[1] || (_cache[1] = (...args) => $options.navToDetail && $options.navToDetail(...args))
        }, [
          vue.createElementVNode("view", { class: "sys-header" }, [
            vue.createElementVNode("text", { class: "sys-title" }, "账号审核通过"),
            vue.createElementVNode("view", { class: "red-dot" })
          ]),
          vue.createElementVNode("view", { class: "sys-content" }, [
            vue.createElementVNode("text", { class: "sys-text" }, "恭喜，您的健康证已通过审核，现在可以开始接单了。")
          ]),
          vue.createElementVNode("view", { class: "sys-footer" }, [
            vue.createElementVNode("text", { class: "sys-time" }, "10:00"),
            vue.createElementVNode("view", { class: "check-more" }, [
              vue.createElementVNode("text", null, "查看详情"),
              vue.createElementVNode("image", {
                class: "arrow-icon-small",
                src: _imports_3
              })
            ])
          ])
        ]),
        vue.createElementVNode("view", { class: "sys-card" }, [
          vue.createElementVNode("view", { class: "sys-header" }, [
            vue.createElementVNode("text", { class: "sys-title" }, "活动奖励到账")
          ]),
          vue.createElementVNode("view", { class: "sys-content" }, [
            vue.createElementVNode("text", { class: "sys-text" }, "您参与的“新手启航”活动奖励金 ¥50 已发放到您的账户。")
          ]),
          vue.createElementVNode("view", { class: "sys-footer" }, [
            vue.createElementVNode("text", { class: "sys-time" }, "09:15"),
            vue.createElementVNode("view", { class: "check-more" }, [
              vue.createElementVNode("text", null, "查看详情"),
              vue.createElementVNode("image", {
                class: "arrow-icon-small",
                src: _imports_3
              })
            ])
          ])
        ]),
        vue.createElementVNode("view", { class: "date-label" }, "2023-10-30"),
        vue.createElementVNode("view", { class: "sys-card" }, [
          vue.createElementVNode("view", { class: "sys-header" }, [
            vue.createElementVNode("text", { class: "sys-title" }, "系统维护通知")
          ]),
          vue.createElementVNode("view", { class: "sys-content" }, [
            vue.createElementVNode("text", { class: "sys-text" }, "平台将于 11月5日 凌晨 02:00-04:00 进行系统维护，届时将无法接单。")
          ]),
          vue.createElementVNode("view", { class: "sys-footer" }, [
            vue.createElementVNode("text", { class: "sys-time" }, "18:30"),
            vue.createElementVNode("view", { class: "check-more" }, [
              vue.createElementVNode("text", null, "查看详情"),
              vue.createElementVNode("image", {
                class: "arrow-icon-small",
                src: _imports_3
              })
            ])
          ])
        ])
      ])
    ]);
  }
  const PagesMineMessageSystem = /* @__PURE__ */ _export_sfc(_sfc_main$4, [["render", _sfc_render$3], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/mine/message/system.vue"]]);
  const _sfc_main$3 = {
    methods: {
      navBack() {
        uni.navigateBack();
      }
    }
  };
  function _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode("view", { class: "nav-bar" }, [
        vue.createElementVNode("view", {
          class: "nav-left",
          onClick: _cache[0] || (_cache[0] = (...args) => $options.navBack && $options.navBack(...args))
        }, [
          vue.createElementVNode("image", {
            class: "back-icon",
            src: _imports_0,
            style: { "transform": "rotate(180deg)" }
          })
        ]),
        vue.createElementVNode("text", { class: "nav-title" }, "消息详情"),
        vue.createElementVNode("view", { class: "nav-right" })
      ]),
      vue.createElementVNode("view", { class: "nav-placeholder" }),
      vue.createElementVNode("view", { class: "detail-content" }, [
        vue.createElementVNode("text", { class: "detail-title" }, "账号审核通过"),
        vue.createElementVNode("text", { class: "detail-time" }, "2023-11-01 10:00"),
        vue.createElementVNode("view", { class: "detail-body" }, [
          vue.createElementVNode("text", null, "尊敬的用户，您的健康认证资料已通过平台审核。作为履约者，您现在可以正常接收并处理订单。请确保您熟读平台规则，遵守交通法规，安全配送。祝您工作愉快！")
        ]),
        vue.createElementVNode("view", { class: "detail-footer" }, [
          vue.createElementVNode("view", { class: "divider" }),
          vue.createElementVNode("text", { class: "footer-text" }, "如有疑问，请咨询在线客服。")
        ])
      ])
    ]);
  }
  const PagesMineMessageDetail = /* @__PURE__ */ _export_sfc(_sfc_main$3, [["render", _sfc_render$2], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/mine/message/detail.vue"]]);
  const _imports_1 = "/static/icons/diamond_white.svg";
  const _imports_2 = "/static/icons/star_decor.svg";
  const _sfc_main$2 = {
    data() {
      return {
        currentTab: 0,
        list: [
          {
            title: "订单完成奖励",
            desc: "订单 T1002839 完成",
            time: "2026-02-05 18:42",
            amount: "10",
            type: "income",
            tag: "订单"
          },
          {
            title: "好评奖励",
            desc: "获得五星好评",
            time: "2026-02-05 19:00",
            amount: "5",
            type: "income",
            tag: "奖励"
          },
          {
            title: "超时扣分",
            desc: "订单 T1002830 超时送达",
            time: "2026-02-04 10:20",
            amount: "-10",
            type: "expense",
            tag: "惩罚"
          }
        ]
      };
    },
    computed: {
      displayList() {
        if (this.currentTab === 0)
          return this.list;
        const type = this.currentTab === 1 ? "income" : "expense";
        return this.list.filter((item) => item.type === type);
      }
    },
    methods: {
      navBack() {
        uni.navigateBack();
      },
      navToDetail() {
        uni.navigateTo({
          url: "/pages/mine/points/detail"
        });
      },
      navToEquity() {
      },
      switchTab(index) {
        this.currentTab = index;
      }
    }
  };
  function _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode("view", { class: "nav-bar" }, [
        vue.createElementVNode("view", {
          class: "nav-left",
          onClick: _cache[0] || (_cache[0] = (...args) => $options.navBack && $options.navBack(...args))
        }, [
          vue.createElementVNode("image", {
            class: "back-icon",
            src: _imports_0
          })
        ]),
        vue.createElementVNode("text", { class: "nav-title" }, "我的积分"),
        vue.createElementVNode("view", { class: "nav-right" })
      ]),
      vue.createElementVNode("view", { class: "points-card" }, [
        vue.createElementVNode("view", { class: "card-header" }, [
          vue.createElementVNode("view", {
            class: "equity-btn",
            onClick: _cache[1] || (_cache[1] = (...args) => $options.navToEquity && $options.navToEquity(...args))
          }, [
            vue.createElementVNode("image", {
              class: "equity-icon",
              src: _imports_1
            }),
            vue.createElementVNode("text", null, "积分权益")
          ]),
          vue.createElementVNode("view", {
            class: "detail-link",
            onClick: _cache[2] || (_cache[2] = (...args) => $options.navToDetail && $options.navToDetail(...args))
          }, [
            vue.createElementVNode("text", null, "明细")
          ])
        ]),
        vue.createElementVNode("view", { class: "card-body" }, [
          vue.createElementVNode("text", { class: "label" }, "当前积分"),
          vue.createElementVNode("text", { class: "value" }, "1200")
        ]),
        vue.createElementVNode("image", {
          class: "bg-decor",
          src: _imports_2,
          mode: "aspectFit"
        })
      ]),
      vue.createElementVNode("view", { class: "record-container" }, [
        vue.createElementVNode("view", { class: "record-header" }, [
          vue.createElementVNode("text", { class: "header-title" }, "最近积分变动"),
          vue.createElementVNode("view", {
            class: "header-more",
            onClick: _cache[3] || (_cache[3] = (...args) => $options.navToDetail && $options.navToDetail(...args))
          }, [
            vue.createElementVNode("text", null, "查看全部"),
            vue.createElementVNode("image", {
              class: "more-icon",
              src: _imports_3
            })
          ])
        ]),
        vue.createElementVNode("view", { class: "tabs-row" }, [
          vue.createElementVNode(
            "view",
            {
              class: vue.normalizeClass(["tab-item", { active: $data.currentTab === 0 }]),
              onClick: _cache[4] || (_cache[4] = ($event) => $options.switchTab(0))
            },
            [
              vue.createElementVNode("text", null, "全部"),
              $data.currentTab === 0 ? (vue.openBlock(), vue.createElementBlock("view", {
                key: 0,
                class: "tab-line"
              })) : vue.createCommentVNode("v-if", true)
            ],
            2
            /* CLASS */
          ),
          vue.createElementVNode(
            "view",
            {
              class: vue.normalizeClass(["tab-item", { active: $data.currentTab === 1 }]),
              onClick: _cache[5] || (_cache[5] = ($event) => $options.switchTab(1))
            },
            [
              vue.createElementVNode("text", null, "获取"),
              $data.currentTab === 1 ? (vue.openBlock(), vue.createElementBlock("view", {
                key: 0,
                class: "tab-line"
              })) : vue.createCommentVNode("v-if", true)
            ],
            2
            /* CLASS */
          ),
          vue.createElementVNode(
            "view",
            {
              class: vue.normalizeClass(["tab-item", { active: $data.currentTab === 2 }]),
              onClick: _cache[6] || (_cache[6] = ($event) => $options.switchTab(2))
            },
            [
              vue.createElementVNode("text", null, "扣减"),
              $data.currentTab === 2 ? (vue.openBlock(), vue.createElementBlock("view", {
                key: 0,
                class: "tab-line"
              })) : vue.createCommentVNode("v-if", true)
            ],
            2
            /* CLASS */
          )
        ]),
        vue.createElementVNode("view", { class: "record-list" }, [
          (vue.openBlock(true), vue.createElementBlock(
            vue.Fragment,
            null,
            vue.renderList($options.displayList, (item, index) => {
              return vue.openBlock(), vue.createElementBlock("view", {
                class: "list-item",
                key: index
              }, [
                vue.createElementVNode("view", { class: "item-left" }, [
                  vue.createElementVNode(
                    "text",
                    { class: "item-title" },
                    vue.toDisplayString(item.title),
                    1
                    /* TEXT */
                  ),
                  vue.createElementVNode(
                    "text",
                    { class: "item-desc" },
                    vue.toDisplayString(item.desc),
                    1
                    /* TEXT */
                  ),
                  vue.createElementVNode(
                    "text",
                    { class: "item-time" },
                    vue.toDisplayString(item.time),
                    1
                    /* TEXT */
                  )
                ]),
                vue.createElementVNode("view", { class: "item-right" }, [
                  vue.createElementVNode(
                    "text",
                    {
                      class: vue.normalizeClass(["item-amount", { income: item.type === "income", expense: item.type === "expense" }])
                    },
                    vue.toDisplayString(item.type === "income" ? "+" : "") + vue.toDisplayString(item.amount),
                    3
                    /* TEXT, CLASS */
                  ),
                  vue.createElementVNode("view", { class: "item-tag" }, [
                    vue.createElementVNode(
                      "text",
                      null,
                      vue.toDisplayString(item.tag),
                      1
                      /* TEXT */
                    )
                  ])
                ])
              ]);
            }),
            128
            /* KEYED_FRAGMENT */
          ))
        ])
      ])
    ]);
  }
  const PagesMinePointsIndex = /* @__PURE__ */ _export_sfc(_sfc_main$2, [["render", _sfc_render$1], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/mine/points/index.vue"]]);
  const _sfc_main$1 = {
    data() {
      return {
        currentTab: 0,
        // 模拟数据结构
        groups: [
          {
            month: "2月 2026",
            income: "15",
            expense: "10",
            items: [
              {
                title: "订单完成奖励",
                desc: "订单完成",
                time: "02-05 18:42",
                amount: "10",
                type: "income",
                tag: "订单"
              },
              {
                title: "好评奖励",
                desc: "五星好评",
                time: "02-05 19:00",
                amount: "5",
                type: "income",
                tag: "奖励"
              },
              {
                title: "超时扣分",
                desc: "订单超时",
                time: "02-04 10:20",
                amount: "-10",
                type: "expense",
                tag: "惩罚"
              }
            ]
          },
          {
            month: "1月 2026",
            income: "100",
            expense: "0",
            items: [
              {
                title: "新用户奖励",
                desc: "注册赠送",
                time: "01-10 09:00",
                amount: "100",
                type: "income",
                tag: "系统"
              }
            ]
          }
        ]
      };
    },
    computed: {
      displayGroups() {
        if (this.currentTab === 0)
          return this.groups;
        return this.groups.map((group) => {
          const filteredItems = group.items.filter((item) => {
            const type = this.currentTab === 1 ? "income" : "expense";
            return item.type === type;
          });
          return {
            ...group,
            items: filteredItems
          };
        }).filter((group) => group.items.length > 0);
      }
    },
    methods: {
      navBack() {
        uni.navigateBack();
      },
      switchTab(index) {
        this.currentTab = index;
      }
    }
  };
  function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
    return vue.openBlock(), vue.createElementBlock("view", { class: "container" }, [
      vue.createElementVNode("view", { class: "nav-bar" }, [
        vue.createElementVNode("view", {
          class: "nav-left",
          onClick: _cache[0] || (_cache[0] = (...args) => $options.navBack && $options.navBack(...args))
        }, [
          vue.createElementVNode("image", {
            class: "back-icon",
            src: _imports_0
          })
        ]),
        vue.createElementVNode("text", { class: "nav-title" }, "积分明细"),
        vue.createElementVNode("view", { class: "nav-right" })
      ]),
      vue.createElementVNode("view", { class: "content-area" }, [
        vue.createElementVNode("view", { class: "tabs-row" }, [
          vue.createElementVNode(
            "view",
            {
              class: vue.normalizeClass(["tab-item", { active: $data.currentTab === 0 }]),
              onClick: _cache[1] || (_cache[1] = ($event) => $options.switchTab(0))
            },
            [
              vue.createElementVNode("text", null, "全部"),
              $data.currentTab === 0 ? (vue.openBlock(), vue.createElementBlock("view", {
                key: 0,
                class: "tab-line"
              })) : vue.createCommentVNode("v-if", true)
            ],
            2
            /* CLASS */
          ),
          vue.createElementVNode(
            "view",
            {
              class: vue.normalizeClass(["tab-item", { active: $data.currentTab === 1 }]),
              onClick: _cache[2] || (_cache[2] = ($event) => $options.switchTab(1))
            },
            [
              vue.createElementVNode("text", null, "获取"),
              $data.currentTab === 1 ? (vue.openBlock(), vue.createElementBlock("view", {
                key: 0,
                class: "tab-line"
              })) : vue.createCommentVNode("v-if", true)
            ],
            2
            /* CLASS */
          ),
          vue.createElementVNode(
            "view",
            {
              class: vue.normalizeClass(["tab-item", { active: $data.currentTab === 2 }]),
              onClick: _cache[3] || (_cache[3] = ($event) => $options.switchTab(2))
            },
            [
              vue.createElementVNode("text", null, "扣减"),
              $data.currentTab === 2 ? (vue.openBlock(), vue.createElementBlock("view", {
                key: 0,
                class: "tab-line"
              })) : vue.createCommentVNode("v-if", true)
            ],
            2
            /* CLASS */
          )
        ]),
        vue.createElementVNode("scroll-view", {
          "scroll-y": "",
          class: "bill-list"
        }, [
          (vue.openBlock(true), vue.createElementBlock(
            vue.Fragment,
            null,
            vue.renderList($options.displayGroups, (group, gIndex) => {
              return vue.openBlock(), vue.createElementBlock("view", {
                key: gIndex,
                class: "month-group"
              }, [
                vue.createElementVNode("view", { class: "group-header" }, [
                  vue.createElementVNode(
                    "text",
                    { class: "month-title" },
                    vue.toDisplayString(group.month),
                    1
                    /* TEXT */
                  ),
                  vue.createElementVNode(
                    "text",
                    { class: "month-summary" },
                    "获取 " + vue.toDisplayString(group.income) + " 扣减 " + vue.toDisplayString(group.expense),
                    1
                    /* TEXT */
                  )
                ]),
                (vue.openBlock(true), vue.createElementBlock(
                  vue.Fragment,
                  null,
                  vue.renderList(group.items, (item, index) => {
                    return vue.openBlock(), vue.createElementBlock("view", {
                      class: "list-item",
                      key: index
                    }, [
                      vue.createElementVNode(
                        "view",
                        {
                          class: vue.normalizeClass(["item-icon-box", item.type])
                        },
                        [
                          vue.createElementVNode(
                            "text",
                            { class: "item-icon-symbol" },
                            vue.toDisplayString(item.type === "income" ? "+" : "-"),
                            1
                            /* TEXT */
                          )
                        ],
                        2
                        /* CLASS */
                      ),
                      vue.createElementVNode("view", { class: "item-center" }, [
                        vue.createElementVNode(
                          "text",
                          { class: "item-title" },
                          vue.toDisplayString(item.title),
                          1
                          /* TEXT */
                        ),
                        vue.createElementVNode(
                          "text",
                          { class: "item-desc" },
                          vue.toDisplayString(item.time) + " " + vue.toDisplayString(item.desc),
                          1
                          /* TEXT */
                        )
                      ]),
                      vue.createElementVNode("view", { class: "item-right" }, [
                        vue.createElementVNode(
                          "text",
                          {
                            class: vue.normalizeClass(["item-amount", { income: item.type === "income", expense: item.type === "expense" }])
                          },
                          vue.toDisplayString(item.type === "income" ? "+" : "") + vue.toDisplayString(item.amount),
                          3
                          /* TEXT, CLASS */
                        ),
                        vue.createElementVNode("view", { class: "item-tag" }, [
                          vue.createElementVNode(
                            "text",
                            null,
                            vue.toDisplayString(item.tag),
                            1
                            /* TEXT */
                          )
                        ])
                      ])
                    ]);
                  }),
                  128
                  /* KEYED_FRAGMENT */
                ))
              ]);
            }),
            128
            /* KEYED_FRAGMENT */
          )),
          vue.createElementVNode("view", { class: "list-padding-bottom" })
        ])
      ])
    ]);
  }
  const PagesMinePointsDetail = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["render", _sfc_render], ["__file", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/pages/mine/points/detail.vue"]]);
  __definePage("pages/login/login", PagesLoginLogin);
  __definePage("pages/recruit/landing", PagesRecruitLanding);
  __definePage("pages/recruit/form", PagesRecruitForm);
  __definePage("pages/recruit/auth", PagesRecruitAuth);
  __definePage("pages/recruit/qualifications", PagesRecruitQualifications);
  __definePage("pages/recruit/success", PagesRecruitSuccess);
  __definePage("pages/login/reset-pwd-verify", PagesLoginResetPwdVerify);
  __definePage("pages/login/reset-pwd-set", PagesLoginResetPwdSet);
  __definePage("pages/home/index", PagesHomeIndex);
  __definePage("pages/home/work-status", PagesHomeWorkStatus);
  __definePage("pages/orders/index", PagesOrdersIndex);
  __definePage("pages/orders/detail", PagesOrdersDetail);
  __definePage("pages/orders/anomaly", PagesOrdersAnomaly);
  __definePage("pages/mine/order-stats", PagesMineOrderStats);
  __definePage("pages/mine/rewards", PagesMineRewards);
  __definePage("pages/mine/rewards-all", PagesMineRewardsAll);
  __definePage("pages/mine/index", PagesMineIndex);
  __definePage("pages/mine/settings/index", PagesMineSettingsIndex);
  __definePage("pages/mine/settings/profile/index", PagesMineSettingsProfileIndex);
  __definePage("pages/mine/settings/auth/index", PagesMineSettingsAuthIndex);
  __definePage("pages/mine/settings/auth/edit", PagesMineSettingsAuthEdit);
  __definePage("pages/mine/settings/bank/index", PagesMineSettingsBankIndex);
  __definePage("pages/mine/settings/security/index", PagesMineSettingsSecurityIndex);
  __definePage("pages/mine/settings/profile/edit-name", PagesMineSettingsProfileEditName);
  __definePage("pages/mine/settings/security/change-password", PagesMineSettingsSecurityChangePassword);
  __definePage("pages/mine/settings/security/change-phone", PagesMineSettingsSecurityChangePhone);
  __definePage("pages/mine/settings/notification/index", PagesMineSettingsNotificationIndex);
  __definePage("pages/mine/settings/about/index", PagesMineSettingsAboutIndex);
  __definePage("pages/mine/wallet/index", PagesMineWalletIndex);
  __definePage("pages/mine/wallet/bill", PagesMineWalletBill);
  __definePage("pages/mine/level/index", PagesMineLevelIndex);
  __definePage("pages/mine/message/index", PagesMineMessageIndex);
  __definePage("pages/mine/message/order", PagesMineMessageOrder);
  __definePage("pages/mine/message/system", PagesMineMessageSystem);
  __definePage("pages/mine/message/detail", PagesMineMessageDetail);
  __definePage("pages/mine/points/index", PagesMinePointsIndex);
  __definePage("pages/mine/points/detail", PagesMinePointsDetail);
  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", "E:/CodeProjects/Cursor/pet-system-fulfiller-app/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);
