diff --git a/miniapp/assets/measurements.js b/miniapp/assets/measurements.js
index 61ba516..af7ea17 100644
--- a/miniapp/assets/measurements.js
+++ b/miniapp/assets/measurements.js
@@ -369,26 +369,94 @@ const Measurements = (function () {
/* ===================== Пикер клиента ===================== */
function renderClientPicker() {
+ // Разбивает строку адреса на поля (локальная копия splitAddress из clients.js)
+ function _splitAddr(s) {
+ if (!s) return { city: "Санкт-Петербург", street: "", house: "", apt: "", entrance: "", floor: "" };
+ s = s.trim();
+ const grab = (re) => { const m = s.match(re); if (m) { s = s.replace(m[0], ""); return m[1]; } return ""; };
+ const floor = grab(/,\s*этаж\s+([^\s,]+)/i);
+ const entrance = grab(/,\s*подъезд\s+([^\s,]+)/i);
+ const apt = grab(/,\s*кв\.?\s*([^\s,]+)/i);
+ const house = grab(/,\s*д\.?\s*([^\s,]+)/i);
+ s = s.replace(/,$/, "").trim();
+ const parts = s.split(",").map(p => p.trim()).filter(Boolean);
+ let city = "", street = "";
+ if (parts.length >= 2) { city = parts[0]; street = parts.slice(1).join(", "); }
+ else if (parts.length === 1) { city = parts[0]; }
+ if (!city) city = "Санкт-Петербург";
+ return { city, street, house, apt, entrance, floor };
+ }
+
+ const initParts = _splitAddr(state.address || "");
+
const wrap = el(`
`);
const choiceRow = wrap.querySelector("#pcChoiceRow");
- const addrInput = wrap.querySelector("#pcAddr");
- addrInput.addEventListener("input", e => {
- state.address = e.target.value;
+ function readAndSaveAddr() {
+ const city = (wrap.querySelector("#pcCity").value || "").trim();
+ const street = (wrap.querySelector("#pcStreet").value || "").trim();
+ const house = (wrap.querySelector("#pcHouse").value || "").trim();
+ const apt = (wrap.querySelector("#pcApt").value || "").trim();
+ const entrance = (wrap.querySelector("#pcEntrance").value || "").trim();
+ const floor = (wrap.querySelector("#pcFloor").value || "").trim();
+ state.address = [
+ city, street,
+ house ? "д. " + house : "",
+ apt ? "кв. " + apt : "",
+ entrance ? "подъезд " + entrance : "",
+ floor ? "этаж " + floor : "",
+ ].filter(Boolean).join(", ");
saveState();
+ }
+
+ function fillAddrFields(address) {
+ const p = _splitAddr(address || "");
+ wrap.querySelector("#pcCity").value = p.city;
+ wrap.querySelector("#pcStreet").value = p.street;
+ wrap.querySelector("#pcHouse").value = p.house;
+ wrap.querySelector("#pcApt").value = p.apt;
+ wrap.querySelector("#pcEntrance").value = p.entrance;
+ wrap.querySelector("#pcFloor").value = p.floor;
+ readAndSaveAddr();
+ }
+
+ ["#pcCity","#pcStreet","#pcHouse","#pcApt","#pcEntrance","#pcFloor"].forEach(sel => {
+ wrap.querySelector(sel).addEventListener("input", readAndSaveAddr);
});
function refresh() {
@@ -407,10 +475,8 @@ const Measurements = (function () {
`);
card.querySelector(".picker-change-btn").addEventListener("click", openOverlay);
choiceRow.appendChild(card);
- if (!addrInput.value && pickedClient.address) {
- addrInput.value = pickedClient.address;
- state.address = pickedClient.address;
- saveState();
+ if (!state.address && pickedClient.address) {
+ fillAddrFields(pickedClient.address);
}
} else {
const empty = el(`
diff --git a/miniapp/index.html b/miniapp/index.html
index 9950fd7..83dac2b 100644
--- a/miniapp/index.html
+++ b/miniapp/index.html
@@ -12,14 +12,14 @@
-
-
+
+
-

+
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+