"use strict"; const common_vendor = require("./common/vendor.js"); const common_config = require("./common/config.js"); const _sfc_main = { name: "ReceptionForm", props: { // 表单初始数据 initialData: { type: Object, default: () => ({}) } }, data() { return { genderOptions: ["男", "女"], customerSourceOptions: ["自然到店", "网络媒体", "其他类型"], showCustomerSourceDropdown: false, isFetchingContact: false, formData: { id: "", customerName: "", contact: "", customerSource: "", gender: "女", age: "", dealershipId: "", dealershipName: "", salesId: "", salesName: "", salesPhone: "", recordingCount: 0, intendedModel: "", infoCard: "", remark: "", detailedAddress: "", contactCount: 0 } }; }, watch: { initialData: { handler(newVal) { if (newVal && Object.keys(newVal).length > 0) { this.formData = { ...this.formData, ...newVal }; } }, immediate: true, deep: true } }, mounted() { this.loadCurrentUserInfo(); common_vendor.index.onWindowResize(() => { if (this.showCustomerSourceDropdown) { this.updateDropdownPosition(); } }); }, methods: { /** * 加载当前登录用户信息,填充销售姓名和电话 */ loadCurrentUserInfo() { try { const loginResponse = common_vendor.index.getStorageSync("backend-login-response") || {}; if (loginResponse.userName) { this.formData.salesName = loginResponse.userName; } if (loginResponse.phone) { this.formData.salesPhone = loginResponse.phone; } else if (loginResponse.userName) { this.formData.salesPhone = loginResponse.userName; } if (loginResponse.userId) { this.formData.salesId = String(loginResponse.userId); } } catch (e) { common_vendor.index.__f__("error", "at pages/furniture_reception/common_begin_reception.vue:247", "加载当前登录用户信息失败:", e); } }, onGenderChange(e) { this.formData.gender = e.detail.value; }, toggleCustomerSourceDropdown() { this.showCustomerSourceDropdown = !this.showCustomerSourceDropdown; if (this.showCustomerSourceDropdown) { this.$nextTick(() => { this.updateDropdownPosition(); }); } }, updateDropdownPosition() { const selectEl = this.$refs.customerSourceSelect; if (selectEl) { const rect = selectEl.getBoundingClientRect(); const dropdownEl = this.$refs.customerSourceDropdown; if (dropdownEl) { dropdownEl.style.top = rect.bottom + 8 + "px"; dropdownEl.style.left = rect.left + "px"; dropdownEl.style.width = rect.width + "px"; } } }, selectCustomerSource(option) { this.formData.customerSource = option; this.showCustomerSourceDropdown = false; }, closeCustomerSourceDropdown() { this.showCustomerSourceDropdown = false; }, onContactBlur() { var _a; const contact = (_a = this.formData.contact) == null ? void 0 : _a.trim(); if (!contact) { return; } if (!this.isValidPhoneNumber(contact)) { common_vendor.index.showToast({ title: "请输入有效的手机号", icon: "none" }); return; } this.fetchCustomerByContact(); }, isValidPhoneNumber(phone) { const normalizedPhone = phone == null ? void 0 : phone.trim(); if (!normalizedPhone) { return false; } return /^1[3-9]\d{9}$/.test(normalizedPhone); }, async fetchCustomerByContact() { var _a, _b, _c; const contact = (_a = this.formData.contact) == null ? void 0 : _a.trim(); if (!contact || this.isFetchingContact) { return; } if (!this.isValidPhoneNumber(contact)) { return; } try { this.isFetchingContact = true; const url = `${common_config.getApiUrl("/api/customerManagement/getByContact")}?contact=${encodeURIComponent(contact)}`; let tenantId = ""; let token = ""; try { tenantId = common_vendor.index.getStorageSync("backend-tenant-id") || ""; token = common_vendor.index.getStorageSync("backend-token") || ""; } catch (e) { common_vendor.index.__f__("error", "at pages/furniture_reception/common_begin_reception.vue:321", "获取认证信息失败:", e); } const headers = {}; if (token) { headers["Authorization"] = `Bearer ${token}`; } if (tenantId) { headers["X-Tenant-Id"] = tenantId; } const res = await common_vendor.index.request({ url, method: "GET", header: headers, timeout: 3e4 // 增加超时时间到30秒 }); const list = (_b = res.data) == null ? void 0 : _b.data; if (res.statusCode === 200 && ((_c = res.data) == null ? void 0 : _c.success) && Array.isArray(list) && list.length) { const customer = list[0]; const retrievedId = customer.id || customer.customerId || ""; const resolvedSalesPhone = customer.salesPhone || customer.salesMobile || customer.salesTel || this.formData.salesPhone || ""; this.formData = { ...this.formData, id: retrievedId ? String(retrievedId) : this.formData.id, customerName: customer.customerName || this.formData.customerName, customerSource: customer.customerSource || this.formData.customerSource, dealershipId: customer.dealershipId ? String(customer.dealershipId) : this.formData.dealershipId, dealershipName: customer.dealershipName || this.formData.dealershipName, salesId: customer.salesId ? String(customer.salesId) : this.formData.salesId, salesName: customer.salesName || this.formData.salesName, salesPhone: String(resolvedSalesPhone), recordingCount: Number(customer.recordingCount) || 0, intendedModel: customer.intendedModel || this.formData.intendedModel, infoCard: customer.infoCard || this.formData.infoCard, remark: customer.remark || this.formData.remark, detailedAddress: customer.detailedAddress || this.formData.detailedAddress, contactCount: customer.contactCount ?? this.formData.contactCount }; common_vendor.index.showToast({ title: "已填充客户信息", icon: "none" }); } } catch (error) { common_vendor.index.__f__("error", "at pages/furniture_reception/common_begin_reception.vue:373", "查询客户信息失败:", error); } finally { this.isFetchingContact = false; } }, handleCancel() { this.formData = { id: "", customerName: "", contact: "", customerSource: "", gender: "女", age: "", dealershipId: "", dealershipName: "", salesId: "", salesName: "", salesPhone: "", recordingCount: 0, intendedModel: "", infoCard: "", remark: "", detailedAddress: "", contactCount: 0 }; this.loadCurrentUserInfo(); this.$emit("cancel"); common_vendor.index.showToast({ title: "已取消", icon: "none" }); }, async handleSave(action = "save") { var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k, _l, _m; const trimmedContact = (_a = this.formData.contact) == null ? void 0 : _a.trim(); if (trimmedContact && !this.isValidPhoneNumber(trimmedContact)) { common_vendor.index.showToast({ title: "请输入有效的客户电话", icon: "none" }); return; } const trimmedSalesPhone = (_b = this.formData.salesPhone) == null ? void 0 : _b.trim(); if (trimmedSalesPhone && !this.isValidPhoneNumber(trimmedSalesPhone)) { common_vendor.index.showToast({ title: "请输入有效的销售电话", icon: "none" }); return; } const normalizedCustomerId = ((_c = this.formData.id) == null ? void 0 : _c.toString().trim()) || ""; const params = { id: normalizedCustomerId, customerName: (_d = this.formData.customerName) == null ? void 0 : _d.trim(), contact: trimmedContact, customerSource: ((_e = this.formData.customerSource) == null ? void 0 : _e.trim()) || "", dealershipId: String(this.formData.dealershipId || "").trim() || "", dealershipName: ((_f = this.formData.dealershipName) == null ? void 0 : _f.trim()) || "", salesId: String(this.formData.salesId || "").trim() || "", salesName: ((_g = this.formData.salesName) == null ? void 0 : _g.trim()) || "", recordingCount: Number(this.formData.recordingCount) || 0, intendedModel: ((_h = this.formData.intendedModel) == null ? void 0 : _h.trim()) || "", infoCard: ((_i = this.formData.infoCard) == null ? void 0 : _i.trim()) || "", remark: ((_j = this.formData.remark) == null ? void 0 : _j.trim()) || "", detailedAddress: ((_k = this.formData.detailedAddress) == null ? void 0 : _k.trim()) || "", salesPhone: trimmedSalesPhone || "", contactCount: Number(this.formData.contactCount) || 0, operationType: action, scenario: "furniture" }; try { common_vendor.index.showLoading({ title: "保存中..." }); let tenantId = ""; let token = ""; try { tenantId = common_vendor.index.getStorageSync("backend-tenant-id") || ""; token = common_vendor.index.getStorageSync("backend-token") || ""; } catch (e) { common_vendor.index.__f__("error", "at pages/furniture_reception/common_begin_reception.vue:462", "获取认证信息失败:", e); } const headers = { "Content-Type": "application/json" }; if (token) { headers["Authorization"] = `Bearer ${token}`; } if (tenantId) { headers["X-Tenant-Id"] = tenantId; } const res = await common_vendor.index.request({ url: common_config.getApiUrl("/api/customerManagement/add"), method: "POST", data: params, header: headers, timeout: 3e4 // 增加超时时间到30秒 }); common_vendor.index.hideLoading(); if (res.statusCode === 200 && res.data && res.data.success) { common_vendor.index.showToast({ title: "保存成功", icon: "success" }); this.handleCancel(); this.$emit("save-success", { action, data: params }); } else { common_vendor.index.showToast({ title: ((_l = res.data) == null ? void 0 : _l.message) || "保存失败", icon: "none" }); this.$emit("save-error", { action, error: ((_m = res.data) == null ? void 0 : _m.message) || "保存失败" }); } } catch (error) { common_vendor.index.hideLoading(); common_vendor.index.__f__("error", "at pages/furniture_reception/common_begin_reception.vue:505", "保存失败:", error); common_vendor.index.showToast({ title: "保存失败,请重试", icon: "none" }); this.$emit("save-error", { action, error: error.message || "保存失败,请重试" }); } } } }; if (!Array) { const _easycom_uni_icons2 = common_vendor.resolveComponent("uni-icons"); _easycom_uni_icons2(); } const _easycom_uni_icons = () => "./uni_modules/uni-icons/components/uni-icons/uni-icons.js"; if (!Math) { _easycom_uni_icons(); } function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { return common_vendor.e({ a: common_vendor.t($data.formData.recordingCount || 0), b: $data.formData.customerName, c: common_vendor.o(($event) => $data.formData.customerName = $event.detail.value, "34"), d: common_vendor.o((...args) => $options.onContactBlur && $options.onContactBlur(...args), "2c"), e: $data.formData.contact, f: common_vendor.o(($event) => $data.formData.contact = $event.detail.value, "35"), g: common_vendor.t($data.formData.customerSource || "请选择客户来源"), h: common_vendor.n($data.formData.customerSource ? "form-item__picker-text" : "form-item__picker-placeholder"), i: common_vendor.p({ type: "bottom", size: "16", color: "#9ca3af" }), j: common_vendor.o((...args) => $options.toggleCustomerSourceDropdown && $options.toggleCustomerSourceDropdown(...args), "cf"), k: $data.showCustomerSourceDropdown }, $data.showCustomerSourceDropdown ? { l: common_vendor.f($data.customerSourceOptions, (option, k0, i0) => { return { a: common_vendor.t(option), b: option === $data.formData.customerSource ? 1 : "", c: option, d: common_vendor.o(($event) => $options.selectCustomerSource(option), option) }; }), m: common_vendor.o(() => { }, "66") } : {}, { n: $data.formData.dealershipName, o: common_vendor.o(($event) => $data.formData.dealershipName = $event.detail.value, "c4"), p: common_vendor.f($data.genderOptions, (option, index, i0) => { return { a: option, b: $data.formData.gender === option, c: common_vendor.t(option), d: index }; }), q: common_vendor.o((...args) => $options.onGenderChange && $options.onGenderChange(...args), "22"), r: $data.formData.age, s: common_vendor.o(($event) => $data.formData.age = $event.detail.value, "5c"), t: $data.formData.salesName, v: common_vendor.o(($event) => $data.formData.salesName = $event.detail.value, "42"), w: $data.formData.salesPhone, x: common_vendor.o(($event) => $data.formData.salesPhone = $event.detail.value, "ed"), y: $data.formData.remarks, z: common_vendor.o(($event) => $data.formData.remarks = $event.detail.value, "96"), A: common_vendor.p({ type: "close", size: "16", color: "#007AFF" }), B: common_vendor.o((...args) => $options.handleCancel && $options.handleCancel(...args), "75"), C: common_vendor.p({ type: "checkmarkempty", size: "16", color: "#007AFF" }), D: common_vendor.o(($event) => $options.handleSave("save"), "99"), E: common_vendor.p({ type: "checkmarkempty", size: "16", color: "#007AFF" }), F: common_vendor.o(($event) => $options.handleSave("start"), "b4"), G: $data.showCustomerSourceDropdown }, $data.showCustomerSourceDropdown ? { H: common_vendor.o((...args) => $options.closeCustomerSourceDropdown && $options.closeCustomerSourceDropdown(...args), "f4") } : {}); } const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]); exports.MiniProgramPage = MiniProgramPage; //# sourceMappingURL=../.sourcemap/mp-weixin/common_begin_reception.js.map