From bff3d0414d226f8592308bb4e5e4fde0f82fa226 Mon Sep 17 00:00:00 2001 From: Wdp-ab <2182606194@qq.com> Date: Thu, 18 Sep 2025 21:17:44 +0800 Subject: [PATCH] 9.18/3 --- .../demo/common/GlobalExceptionHandler.java | 43 +++++ .../controller/CustomerController.java | 6 +- .../customer/service/CustomerService.java | 19 ++- .../com/example/demo/order/OrderService.java | 93 ++++++++--- .../controller/SupplierController.java | 55 ++++++ .../demo/supplier/dto/SupplierDtos.java | 49 ++++++ .../supplier/service/SupplierService.java | 96 +++++++++++ doc/database_documentation.md | 11 +- doc/openapi.yaml | 73 ++++++-- frontend/common/http.js | 4 +- frontend/pages.json | 12 ++ frontend/pages/customer/detail.vue | 86 ++++++++++ frontend/pages/customer/form.vue | 17 +- frontend/pages/customer/select.vue | 15 +- frontend/pages/index/index.vue | 4 + frontend/pages/order/create.vue | 52 +++++- frontend/pages/product/select.vue | 3 +- frontend/pages/supplier/form.vue | 50 ++++++ frontend/pages/supplier/select.vue | 15 +- .../dist/dev/.sourcemap/mp-weixin/app.js.map | 2 +- .../.sourcemap/mp-weixin/common/http.js.map | 2 +- .../mp-weixin/pages/customer/detail.js.map | 1 + .../mp-weixin/pages/customer/form.js.map | 2 +- .../mp-weixin/pages/customer/select.js.map | 2 +- .../mp-weixin/pages/detail/index.js.map | 2 +- .../mp-weixin/pages/index/index.js.map | 2 +- .../mp-weixin/pages/order/create.js.map | 2 +- .../mp-weixin/pages/product/select.js.map | 2 +- .../mp-weixin/pages/supplier/form.js.map | 1 + .../mp-weixin/pages/supplier/select.js.map | 2 +- frontend/unpackage/dist/dev/mp-weixin/app.js | 2 + .../unpackage/dist/dev/mp-weixin/app.json | 2 + .../dist/dev/mp-weixin/common/http.js | 4 +- .../dev/mp-weixin/pages/customer/detail.js | 156 ++++++++++++++++++ .../dev/mp-weixin/pages/customer/detail.json | 4 + .../dev/mp-weixin/pages/customer/detail.wxml | 1 + .../dev/mp-weixin/pages/customer/detail.wxss | 23 +++ .../dist/dev/mp-weixin/pages/customer/form.js | 7 +- .../dev/mp-weixin/pages/customer/select.js | 18 +- .../dist/dev/mp-weixin/pages/index/index.js | 6 +- .../dist/dev/mp-weixin/pages/order/create.js | 79 ++++++++- .../dev/mp-weixin/pages/product/select.js | 3 +- .../dist/dev/mp-weixin/pages/supplier/form.js | 60 +++++++ .../dev/mp-weixin/pages/supplier/form.json | 4 + .../dev/mp-weixin/pages/supplier/form.wxml | 1 + .../dev/mp-weixin/pages/supplier/form.wxss | 15 ++ .../dev/mp-weixin/pages/supplier/select.js | 30 +++- .../dev/mp-weixin/pages/supplier/select.wxml | 2 +- 沟通.md | 13 +- 49 files changed, 1063 insertions(+), 90 deletions(-) create mode 100644 backend/src/main/java/com/example/demo/common/GlobalExceptionHandler.java create mode 100644 backend/src/main/java/com/example/demo/supplier/controller/SupplierController.java create mode 100644 backend/src/main/java/com/example/demo/supplier/dto/SupplierDtos.java create mode 100644 backend/src/main/java/com/example/demo/supplier/service/SupplierService.java create mode 100644 frontend/pages/customer/detail.vue create mode 100644 frontend/pages/supplier/form.vue create mode 100644 frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/customer/detail.js.map create mode 100644 frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/supplier/form.js.map create mode 100644 frontend/unpackage/dist/dev/mp-weixin/pages/customer/detail.js create mode 100644 frontend/unpackage/dist/dev/mp-weixin/pages/customer/detail.json create mode 100644 frontend/unpackage/dist/dev/mp-weixin/pages/customer/detail.wxml create mode 100644 frontend/unpackage/dist/dev/mp-weixin/pages/customer/detail.wxss create mode 100644 frontend/unpackage/dist/dev/mp-weixin/pages/supplier/form.js create mode 100644 frontend/unpackage/dist/dev/mp-weixin/pages/supplier/form.json create mode 100644 frontend/unpackage/dist/dev/mp-weixin/pages/supplier/form.wxml create mode 100644 frontend/unpackage/dist/dev/mp-weixin/pages/supplier/form.wxss diff --git a/backend/src/main/java/com/example/demo/common/GlobalExceptionHandler.java b/backend/src/main/java/com/example/demo/common/GlobalExceptionHandler.java new file mode 100644 index 0000000..b3f64e4 --- /dev/null +++ b/backend/src/main/java/com/example/demo/common/GlobalExceptionHandler.java @@ -0,0 +1,43 @@ +package com.example.demo.common; + +import org.springframework.dao.DataAccessException; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.ExceptionHandler; +import org.springframework.web.bind.annotation.RestControllerAdvice; + +import java.util.HashMap; +import java.util.Map; + +@RestControllerAdvice +public class GlobalExceptionHandler { + + private ResponseEntity> badRequest(String message) { + Map body = new HashMap<>(); + body.put("message", message); + return ResponseEntity.badRequest().body(body); + } + + @ExceptionHandler(IllegalArgumentException.class) + public ResponseEntity handleIllegalArgument(IllegalArgumentException ex) { + return badRequest(ex.getMessage()); + } + + @ExceptionHandler(IllegalStateException.class) + public ResponseEntity handleIllegalState(IllegalStateException ex) { + return badRequest(ex.getMessage()); + } + + @ExceptionHandler(DataAccessException.class) + public ResponseEntity handleDataAccess(DataAccessException ex) { + return badRequest("数据库操作失败"); + } + + @ExceptionHandler(Exception.class) + public ResponseEntity handleAny(Exception ex) { + Map body = new HashMap<>(); + body.put("message", ex.getMessage() == null ? "Internal Server Error" : ex.getMessage()); + return ResponseEntity.status(500).body(body); + } +} + + diff --git a/backend/src/main/java/com/example/demo/customer/controller/CustomerController.java b/backend/src/main/java/com/example/demo/customer/controller/CustomerController.java index 88e8edf..e25ae81 100644 --- a/backend/src/main/java/com/example/demo/customer/controller/CustomerController.java +++ b/backend/src/main/java/com/example/demo/customer/controller/CustomerController.java @@ -45,7 +45,11 @@ public class CustomerController { body.put("priceLevel", c.getPriceLevel()); body.put("remark", c.getRemark()); body.put("address", c.getAddress()); - body.put("receivable", new java.math.BigDecimal("0")); // 详情页如需可扩展计算 + body.put("arOpening", c.getArOpening()); + Long sid = (shopId == null ? null : shopId); + if (sid != null) { + body.put("receivable", customerService.computeReceivable(sid, id)); + } return ResponseEntity.ok(body); } diff --git a/backend/src/main/java/com/example/demo/customer/service/CustomerService.java b/backend/src/main/java/com/example/demo/customer/service/CustomerService.java index ae72040..dca85e9 100644 --- a/backend/src/main/java/com/example/demo/customer/service/CustomerService.java +++ b/backend/src/main/java/com/example/demo/customer/service/CustomerService.java @@ -45,7 +45,7 @@ public class CustomerService { public Long create(Long shopId, Long userId, CustomerDtos.CreateOrUpdateCustomerRequest req) { Customer c = new Customer(); c.setShopId(shopId); c.setUserId(userId); - c.setName(req.name); c.setLevel(req.level); c.setPriceLevel(nullToDefaultPriceLevel(req.priceLevel)); + c.setName(req.name); c.setLevel(req.level); c.setPriceLevel(cnPriceLevelOrDefault(req.priceLevel)); c.setContactName(req.contactName); c.setMobile(req.mobile); c.setPhone(req.phone); c.setAddress(req.address); c.setStatus(1); c.setArOpening(req.arOpening == null ? BigDecimal.ZERO : req.arOpening); @@ -60,7 +60,7 @@ public class CustomerService { public void update(Long id, Long shopId, Long userId, CustomerDtos.CreateOrUpdateCustomerRequest req) { Customer c = customerRepository.findById(id).orElseThrow(); if (!c.getShopId().equals(shopId)) throw new IllegalArgumentException("跨店铺修改"); - c.setName(req.name); c.setLevel(req.level); c.setPriceLevel(nullToDefaultPriceLevel(req.priceLevel)); + c.setName(req.name); c.setLevel(req.level); c.setPriceLevel(cnPriceLevelOrDefault(req.priceLevel)); c.setContactName(req.contactName); c.setMobile(req.mobile); c.setPhone(req.phone); c.setAddress(req.address); if (req.arOpening != null) c.setArOpening(req.arOpening); c.setRemark(req.remark); @@ -68,7 +68,20 @@ public class CustomerService { customerRepository.save(c); } - private String nullToDefaultPriceLevel(String v) { return (v == null || v.isBlank()) ? "retail" : v; } + private String cnPriceLevelOrDefault(String v) { + if (v == null || v.isBlank()) return "零售价"; + // 兼容历史英文值 + if ("retail".equalsIgnoreCase(v)) return "零售价"; + if ("wholesale".equalsIgnoreCase(v) || "distribution".equalsIgnoreCase(v)) return "批发价"; + if ("big_client".equalsIgnoreCase(v)) return "大单报价"; + return v; // 已是中文 + } + + public BigDecimal computeReceivable(Long shopId, Long customerId) { + Optional oc = customerRepository.findById(customerId); + BigDecimal opening = oc.map(Customer::getArOpening).orElse(BigDecimal.ZERO); + return calcReceivable(shopId, customerId, opening); + } private BigDecimal calcReceivable(Long shopId, Long customerId, BigDecimal opening) { BigDecimal open = opening == null ? BigDecimal.ZERO : opening; diff --git a/backend/src/main/java/com/example/demo/order/OrderService.java b/backend/src/main/java/com/example/demo/order/OrderService.java index 0d3c898..1739265 100644 --- a/backend/src/main/java/com/example/demo/order/OrderService.java +++ b/backend/src/main/java/com/example/demo/order/OrderService.java @@ -91,43 +91,66 @@ public class OrderService { String headTable = isSaleOut ? "sales_orders" : (isPurchaseIn ? "purchase_orders" : (isSaleReturn ? "sales_return_orders" : "purchase_return_orders")); String itemTable = isSaleOut ? "sales_order_items" : (isPurchaseIn ? "purchase_order_items" : (isSaleReturn ? "sales_return_order_items" : "purchase_return_order_items")); - // insert head + // insert head(按表结构分别处理 sales*/purchase* 的 customer_id/supplier_id 列) KeyHolder kh = new GeneratedKeyHolder(); - String headSql = "INSERT INTO " + headTable + " (shop_id,user_id,customer_id,supplier_id,order_no,order_time,status,amount,paid_amount,remark,created_at,updated_at) " + - "VALUES (?,?,?,?,?,?, 'approved', ?, 0, ?, NOW(), NOW())"; + boolean isSalesHead = headTable.startsWith("sales"); + boolean isPurchaseHead = headTable.startsWith("purchase"); + String headSql; + if (isSalesHead) { + headSql = "INSERT INTO " + headTable + " (shop_id,user_id,customer_id,order_no,order_time,status,amount,paid_amount,remark,created_at,updated_at) " + + "VALUES (?,?,?,?,?, 'approved', ?, 0, ?, NOW(), NOW())"; + } else if (isPurchaseHead) { + headSql = "INSERT INTO " + headTable + " (shop_id,user_id,supplier_id,order_no,order_time,status,amount,paid_amount,remark,created_at,updated_at) " + + "VALUES (?,?,?,?,?, 'approved', ?, 0, ?, NOW(), NOW())"; + } else { + // 理论不会到这里,兜底为 sales 结构 + headSql = "INSERT INTO " + headTable + " (shop_id,user_id,order_no,order_time,status,amount,paid_amount,remark,created_at,updated_at) " + + "VALUES (?,?,?,?,'approved', ?, 0, ?, NOW(), NOW())"; + } + Long customerId = req.customerId; Long supplierId = req.supplierId; jdbcTemplate.update(con -> { java.sql.PreparedStatement ps = con.prepareStatement(headSql, new String[]{"id"}); - ps.setLong(1, shopId); - ps.setLong(2, userId); - if (headTable.startsWith("sales")) { - ps.setObject(3, customerId, java.sql.Types.BIGINT); - ps.setObject(4, null); - } else if (headTable.startsWith("purchase")) { - ps.setObject(3, null); - ps.setObject(4, supplierId, java.sql.Types.BIGINT); - } else { - ps.setObject(3, null); - ps.setObject(4, null); + int idx = 1; + ps.setLong(idx++, shopId); + ps.setLong(idx++, userId); + if (isSalesHead) { + ps.setObject(idx++, customerId, java.sql.Types.BIGINT); + } else if (isPurchaseHead) { + ps.setObject(idx++, supplierId, java.sql.Types.BIGINT); } - ps.setString(5, orderNo); - ps.setTimestamp(6, java.sql.Timestamp.from(now.atZone(java.time.ZoneOffset.UTC).toInstant())); - ps.setBigDecimal(7, scale2(totalRef[0])); - ps.setString(8, req.remark); + ps.setString(idx++, orderNo); + ps.setTimestamp(idx++, java.sql.Timestamp.from(now.atZone(java.time.ZoneOffset.UTC).toInstant())); + ps.setBigDecimal(idx++, scale2(totalRef[0])); + ps.setString(idx, req.remark); return ps; }, kh); Number orderKey = kh.getKey(); Long orderId = (orderKey == null ? null : orderKey.longValue()); - // insert items - String itemSql = "INSERT INTO " + itemTable + " (order_id,product_id,quantity,unit_price,discount_rate,amount) VALUES (?,?,?,?,?,?)"; + // insert items(销售类有折扣列,采购类无折扣列) + boolean itemsHasDiscount = isSaleOut || isSaleReturn; + String itemSql = itemsHasDiscount + ? ("INSERT INTO " + itemTable + " (order_id,product_id,quantity,unit_price,discount_rate,amount) VALUES (?,?,?,?,?,?)") + : ("INSERT INTO " + itemTable + " (order_id,product_id,quantity,unit_price,amount) VALUES (?,?,?,?,?)"); for (OrderDtos.Item it : req.items) { BigDecimal qty = n(it.quantity); BigDecimal price = n(it.unitPrice); BigDecimal dr = n(it.discountRate); BigDecimal line = scale2(qty.multiply(price).multiply(BigDecimal.ONE.subtract(dr.divide(new BigDecimal("100"))))); - jdbcTemplate.update(itemSql, orderId, it.productId, qty, price, dr, line); + if (itemsHasDiscount) { + jdbcTemplate.update(itemSql, orderId, it.productId, qty, price, dr, line); + } else { + jdbcTemplate.update(itemSql, orderId, it.productId, qty, price, line); + } + } + + // 维护供应商应付:采购入库增加,应付=+amount;采购退货减少,应付=-amount + if (isPurchaseHead && supplierId != null) { + java.math.BigDecimal delta = scale2(totalRef[0]); + if (isPurchaseReturn) delta = delta.negate(); + adjustSupplierPayable(supplierId, delta); } return new OrderDtos.CreateOrderResponse(orderId, orderNo); @@ -163,6 +186,14 @@ public class OrderService { if (p.orderId != null) { String table = "sale".equals(bizType) ? "sales_orders" : "purchase_orders"; jdbcTemplate.update("UPDATE " + table + " SET paid_amount = paid_amount + ? WHERE id = ?", n(p.amount), p.orderId); + + // 采购付款联动应付:应付 -= 付款金额 + if ("purchase".equals(bizType)) { + java.util.List sids = jdbcTemplate.query("SELECT supplier_id FROM purchase_orders WHERE id=?", (rs,rn)-> rs.getLong(1), p.orderId); + if (!sids.isEmpty() && sids.get(0) != null) { + adjustSupplierPayable(sids.get(0), n(p.amount).negate()); + } + } } } return new OrderDtos.CreatePaymentsResponse(ids); @@ -198,6 +229,21 @@ public class OrderService { } // 更新状态 jdbcTemplate.update("UPDATE " + headTable + " SET status='void' WHERE id = ?", id); + + // 采购单作废回滚应付 + if ("purchase.out".equals(type) || "purchase.in".equals(type) || "purchase.return".equals(type)) { + boolean purchaseIn = "purchase.in".equals(type); + boolean purchaseRet = "purchase.return".equals(type); + if (purchaseIn || purchaseRet) { + java.util.List> h = jdbcTemplate.queryForList("SELECT supplier_id, amount FROM " + headTable + " WHERE id=?", id); + if (!h.isEmpty()) { + Long sid = ((Number)h.get(0).get("supplier_id")).longValue(); + java.math.BigDecimal amt = new java.math.BigDecimal(h.get(0).get("amount").toString()); + java.math.BigDecimal delta = purchaseIn ? amt.negate() : amt; // 入库作废应付减少;退货作废应付增加 + adjustSupplierPayable(sid, delta); + } + } + } } public java.util.Map list(Long shopId, String biz, String type, String kw, int page, int size, String startDate, String endDate) { @@ -312,6 +358,11 @@ public class OrderService { private static BigDecimal scale2(BigDecimal v) { return v.setScale(2, java.math.RoundingMode.HALF_UP); } private static LocalDateTime nowUtc() { return LocalDateTime.now(java.time.Clock.systemUTC()); } + private void adjustSupplierPayable(Long supplierId, java.math.BigDecimal delta) { + if (supplierId == null || delta == null) return; + jdbcTemplate.update("UPDATE suppliers SET ap_payable = ap_payable + ? WHERE id = ?", delta, supplierId); + } + private void ensureDefaultAccounts(Long shopId, Long userId) { // 为 cash/bank/wechat 分别确保存在一条账户记录;按 type→name 顺序检查,避免同名唯一冲突 ensureAccount(shopId, userId, "cash", "现金"); diff --git a/backend/src/main/java/com/example/demo/supplier/controller/SupplierController.java b/backend/src/main/java/com/example/demo/supplier/controller/SupplierController.java new file mode 100644 index 0000000..2e286b4 --- /dev/null +++ b/backend/src/main/java/com/example/demo/supplier/controller/SupplierController.java @@ -0,0 +1,55 @@ +package com.example.demo.supplier.controller; + +import com.example.demo.common.AppDefaultsProperties; +import com.example.demo.supplier.dto.SupplierDtos; +import com.example.demo.supplier.service.SupplierService; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + +@RestController +@RequestMapping("/api/suppliers") +public class SupplierController { + + private final SupplierService supplierService; + private final AppDefaultsProperties defaults; + + public SupplierController(SupplierService supplierService, AppDefaultsProperties defaults) { + this.supplierService = supplierService; + this.defaults = defaults; + } + + @GetMapping + public ResponseEntity search(@RequestHeader(name = "X-Shop-Id", required = false) Long shopId, + @RequestParam(name = "kw", required = false) String kw, + @RequestParam(name = "debtOnly", required = false, defaultValue = "false") boolean debtOnly, + @RequestParam(name = "page", defaultValue = "1") int page, + @RequestParam(name = "size", defaultValue = "50") int size) { + Long sid = (shopId == null ? defaults.getShopId() : shopId); + return ResponseEntity.ok(supplierService.search(sid, kw, debtOnly, Math.max(0, page-1), size)); + } + + @PostMapping + public ResponseEntity create(@RequestHeader(name = "X-Shop-Id", required = false) Long shopId, + @RequestHeader(name = "X-User-Id", required = false) Long userId, + @RequestBody SupplierDtos.CreateOrUpdateSupplierRequest req) { + Long sid = (shopId == null ? defaults.getShopId() : shopId); + Long uid = (userId == null ? defaults.getUserId() : userId); + Long id = supplierService.create(sid, uid, req); + java.util.Map body = new java.util.HashMap<>(); + body.put("id", id); + return ResponseEntity.ok(body); + } + + @PutMapping("/{id}") + public ResponseEntity update(@PathVariable("id") Long id, + @RequestHeader(name = "X-Shop-Id", required = false) Long shopId, + @RequestHeader(name = "X-User-Id", required = false) Long userId, + @RequestBody SupplierDtos.CreateOrUpdateSupplierRequest req) { + Long sid = (shopId == null ? defaults.getShopId() : shopId); + Long uid = (userId == null ? defaults.getUserId() : userId); + supplierService.update(id, sid, uid, req); + return ResponseEntity.ok().build(); + } +} + + diff --git a/backend/src/main/java/com/example/demo/supplier/dto/SupplierDtos.java b/backend/src/main/java/com/example/demo/supplier/dto/SupplierDtos.java new file mode 100644 index 0000000..499cf81 --- /dev/null +++ b/backend/src/main/java/com/example/demo/supplier/dto/SupplierDtos.java @@ -0,0 +1,49 @@ +package com.example.demo.supplier.dto; + +public class SupplierDtos { + + public static class CreateOrUpdateSupplierRequest { + public String name; + public String contactName; + public String mobile; + public String phone; + public String address; + public java.math.BigDecimal apOpening; + public java.math.BigDecimal apPayable; + public String remark; + } + + public static class SupplierListItem { + public Long id; + public String name; + public String contactName; + public String mobile; + public String phone; + public String address; + public java.math.BigDecimal apOpening; + public java.math.BigDecimal apPayable; + public String remark; + + public SupplierListItem(Long id, + String name, + String contactName, + String mobile, + String phone, + String address, + java.math.BigDecimal apOpening, + java.math.BigDecimal apPayable, + String remark) { + this.id = id; + this.name = name; + this.contactName = contactName; + this.mobile = mobile; + this.phone = phone; + this.address = address; + this.apOpening = apOpening; + this.apPayable = apPayable; + this.remark = remark; + } + } +} + + diff --git a/backend/src/main/java/com/example/demo/supplier/service/SupplierService.java b/backend/src/main/java/com/example/demo/supplier/service/SupplierService.java new file mode 100644 index 0000000..238e9ec --- /dev/null +++ b/backend/src/main/java/com/example/demo/supplier/service/SupplierService.java @@ -0,0 +1,96 @@ +package com.example.demo.supplier.service; + +import com.example.demo.supplier.dto.SupplierDtos; +import org.springframework.jdbc.core.JdbcTemplate; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.math.BigDecimal; +import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; + +@Service +public class SupplierService { + + private final JdbcTemplate jdbcTemplate; + + public SupplierService(JdbcTemplate jdbcTemplate) { + this.jdbcTemplate = jdbcTemplate; + } + + public Map search(Long shopId, String kw, boolean debtOnly, int page, int size) { + StringBuilder sql = new StringBuilder("SELECT id,name,contact_name,mobile,phone,address,ap_opening,ap_payable,remark FROM suppliers WHERE shop_id=? AND status=1"); + java.util.List ps = new java.util.ArrayList<>(); + ps.add(shopId); + if (kw != null && !kw.isBlank()) { + sql.append(" AND (name LIKE ? OR phone LIKE ? OR mobile LIKE ?)"); + String like = '%'+kw+'%'; + ps.add(like); ps.add(like); ps.add(like); + } + if (debtOnly) { + sql.append(" AND ap_payable > 0"); + } + sql.append(" ORDER BY id DESC LIMIT ? OFFSET ?"); + ps.add(size); ps.add(Math.max(0, page) * size); + List> rows = jdbcTemplate.queryForList(sql.toString(), ps.toArray()); + List items = rows.stream().map(r -> new SupplierDtos.SupplierListItem( + ((Number)r.get("id")).longValue(), + (String) r.get("name"), + (String) r.get("contact_name"), + (String) r.get("mobile"), + (String) r.get("phone"), + (String) r.get("address"), + toBig((java.lang.Number) r.get("ap_opening")), + toBig((java.lang.Number) r.get("ap_payable")), + (String) r.get("remark") + )).collect(Collectors.toList()); + java.util.Map resp = new java.util.HashMap<>(); + resp.put("list", items); + return resp; + } + + @Transactional + public Long create(Long shopId, Long userId, SupplierDtos.CreateOrUpdateSupplierRequest req) { + BigDecimal open = nz(req.apOpening); + BigDecimal payable = nz(req.apPayable); + String sql = "INSERT INTO suppliers (shop_id,user_id,name,contact_name,mobile,phone,address,status,ap_opening,ap_payable,remark,created_at,updated_at) " + + "VALUES (?,?,?,?,?,?,?,?,?,?,?,NOW(),NOW())"; + org.springframework.jdbc.support.GeneratedKeyHolder kh = new org.springframework.jdbc.support.GeneratedKeyHolder(); + jdbcTemplate.update(con -> { + java.sql.PreparedStatement ps = con.prepareStatement(sql, new String[]{"id"}); + int i = 1; + ps.setLong(i++, shopId); + ps.setLong(i++, userId); + ps.setString(i++, req.name); + ps.setString(i++, req.contactName); + ps.setString(i++, req.mobile); + ps.setString(i++, req.phone); + ps.setString(i++, req.address); + ps.setInt(i++, 1); + ps.setBigDecimal(i++, open); + ps.setBigDecimal(i++, payable); + ps.setString(i, req.remark); + return ps; + }, kh); + Number key = kh.getKey(); + return key == null ? null : key.longValue(); + } + + @Transactional + public void update(Long id, Long shopId, Long userId, SupplierDtos.CreateOrUpdateSupplierRequest req) { + String sql = "UPDATE suppliers SET name=?, contact_name=?, mobile=?, phone=?, address=?, ap_opening=?, ap_payable=?, remark=?, updated_at=NOW() WHERE id=? AND shop_id=?"; + jdbcTemplate.update(sql, req.name, req.contactName, req.mobile, req.phone, req.address, nz(req.apOpening), nz(req.apPayable), req.remark, id, shopId); + } + + public java.util.Optional> findById(Long id) { + List> rows = jdbcTemplate.queryForList("SELECT id,name,contact_name,mobile,phone,address,ap_opening,ap_payable,remark FROM suppliers WHERE id=?", id); + if (rows.isEmpty()) return java.util.Optional.empty(); + return java.util.Optional.of(rows.get(0)); + } + + private static BigDecimal toBig(Number n) { return n == null ? BigDecimal.ZERO : new BigDecimal(n.toString()); } + private static BigDecimal nz(BigDecimal v) { return v == null ? BigDecimal.ZERO : v.setScale(2, java.math.RoundingMode.HALF_UP); } +} + + diff --git a/doc/database_documentation.md b/doc/database_documentation.md index 4c3b6b7..1bca6cc 100644 --- a/doc/database_documentation.md +++ b/doc/database_documentation.md @@ -223,7 +223,7 @@ | mobile | VARCHAR(32) | YES | | 手机 | | level | VARCHAR(32) | YES | | 客户等级标签 | | contact_name | VARCHAR(64) | YES | | 联系人 | -| price_level | ENUM('retail','distribution','wholesale','big_client') | NOT NULL | retail | 默认售价列 | +| price_level | ENUM('零售价','批发价','大单报价') | NOT NULL | 零售价 | 默认售价列(中文存储) | | status | TINYINT UNSIGNED | NOT NULL | 1 | | | ar_opening | DECIMAL(18,2) | NOT NULL | 0.00 | 期初应收 | | remark | VARCHAR(255) | YES | | | @@ -241,14 +241,19 @@ | shop_id | BIGINT UNSIGNED | NOT NULL | | | | user_id | BIGINT UNSIGNED | NOT NULL | | | | name | VARCHAR(120) | NOT NULL | | | -| phone | VARCHAR(32) | YES | | | +| contact_name | VARCHAR(64) | YES | | 联系人 | +| mobile | VARCHAR(32) | YES | | 手机 | +| phone | VARCHAR(32) | YES | | 电话 | +| address | VARCHAR(255) | YES | | 经营地址 | | status | TINYINT UNSIGNED | NOT NULL | 1 | | +| ap_opening | DECIMAL(18,2) | NOT NULL | 0.00 | 期初应付 | +| ap_payable | DECIMAL(18,2) | NOT NULL | 0.00 | 当前应付(实时维护) | | remark | VARCHAR(255) | YES | | | | created_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | | | updated_at | TIMESTAMP | NOT NULL | CURRENT_TIMESTAMP | | | deleted_at | DATETIME | YES | | | -**Indexes**: - PRIMARY KEY: `id` - KEY: `idx_suppliers_shop` (`shop_id`) - KEY: `idx_suppliers_phone` (`phone`) +**Indexes**: - PRIMARY KEY: `id` - KEY: `idx_suppliers_shop` (`shop_id`) - KEY: `idx_suppliers_phone` (`phone`) - KEY: `idx_suppliers_mobile` (`mobile`) **Foreign Keys**: - `fk_suppliers_shop`: `shop_id` → `shops(id)` - `fk_suppliers_user`: `user_id` → `users(id)` ### accounts diff --git a/doc/openapi.yaml b/doc/openapi.yaml index abb801b..c906c7f 100644 --- a/doc/openapi.yaml +++ b/doc/openapi.yaml @@ -84,12 +84,26 @@ paths: $ref: '#/components/schemas/Account' /api/suppliers: get: - summary: 供应商搜索(❌ Partially Implemented) + summary: 供应商搜索(✅ Fully Implemented) parameters: - in: query name: kw schema: type: string + - in: query + name: debtOnly + schema: + type: boolean + - in: query + name: page + schema: + type: integer + default: 1 + - in: query + name: size + schema: + type: integer + default: 50 responses: '200': description: 成功 @@ -106,6 +120,32 @@ paths: type: array items: $ref: '#/components/schemas/Supplier' + post: + summary: 新建供应商(✅ Fully Implemented) + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateSupplierRequest' + responses: + '200': { description: 成功 } + /api/suppliers/{id}: + put: + summary: 更新供应商(✅ Fully Implemented) + parameters: + - in: path + name: id + required: true + schema: { type: integer, format: int64 } + requestBody: + required: true + content: + application/json: + schema: + $ref: '#/components/schemas/CreateSupplierRequest' + responses: + '200': { description: 成功 } /api/other-transactions: post: summary: 新建其他收入/支出(❌ Partially Implemented) @@ -735,13 +775,26 @@ components: Supplier: type: object properties: - id: - type: integer - format: int64 - name: - type: string - mobile: - type: string + id: { type: integer, format: int64 } + name: { type: string } + contactName: { type: string, nullable: true } + mobile: { type: string, nullable: true } + phone: { type: string, nullable: true } + address: { type: string, nullable: true } + apOpening: { type: number } + apPayable: { type: number } + remark: { type: string, nullable: true } + CreateSupplierRequest: + type: object + properties: + name: { type: string } + contactName: { type: string, nullable: true } + mobile: { type: string, nullable: true } + phone: { type: string, nullable: true } + address: { type: string, nullable: true } + apOpening: { type: number, nullable: true } + apPayable: { type: number, nullable: true } + remark: { type: string, nullable: true } CreateOtherTransactionRequest: type: object properties: @@ -860,7 +913,7 @@ components: mobile: { type: string } phone: { type: string } level: { type: string } - priceLevel: { type: string, enum: [retail, distribution, wholesale, big_client] } + priceLevel: { type: string, enum: [零售价, 批发价, 大单报价] } remark: { type: string } receivable: { type: number } CreateCustomerRequest: @@ -868,7 +921,7 @@ components: properties: name: { type: string } level: { type: string, nullable: true } - priceLevel: { type: string, enum: [retail, distribution, wholesale, big_client] } + priceLevel: { type: string, enum: [零售价, 批发价, 大单报价] } contactName: { type: string, nullable: true } mobile: { type: string, nullable: true } phone: { type: string, nullable: true } diff --git a/frontend/common/http.js b/frontend/common/http.js index 65d5bdc..3e778ff 100644 --- a/frontend/common/http.js +++ b/frontend/common/http.js @@ -12,8 +12,10 @@ function requestWithFallback(options, candidates, idx, resolve, reject) { uni.request({ ...options, url, success: (res) => { const { statusCode, data } = res if (statusCode >= 200 && statusCode < 300) return resolve(data) + const msg = (data && (data.message || data.error || data.msg)) || ('HTTP ' + statusCode) + uni.showToast({ title: msg, icon: 'none' }) if (idx + 1 < candidates.length) return requestWithFallback(options, candidates, idx + 1, resolve, reject) - reject(new Error('HTTP ' + statusCode)) + reject(new Error(msg)) }, fail: (err) => { if (idx + 1 < candidates.length) return requestWithFallback(options, candidates, idx + 1, resolve, reject) reject(err) diff --git a/frontend/pages.json b/frontend/pages.json index 3f7be88..4b8de97 100644 --- a/frontend/pages.json +++ b/frontend/pages.json @@ -60,12 +60,24 @@ "navigationBarTitleText": "新增客户" } }, + { + "path": "pages/customer/detail", + "style": { + "navigationBarTitleText": "客户详情" + } + }, { "path": "pages/supplier/select", "style": { "navigationBarTitleText": "选择供应商" } }, + { + "path": "pages/supplier/form", + "style": { + "navigationBarTitleText": "新增/编辑供应商" + } + }, { "path": "pages/account/select", "style": { diff --git a/frontend/pages/customer/detail.vue b/frontend/pages/customer/detail.vue new file mode 100644 index 0000000..02595bc --- /dev/null +++ b/frontend/pages/customer/detail.vue @@ -0,0 +1,86 @@ + + + + + + + diff --git a/frontend/pages/customer/form.vue b/frontend/pages/customer/form.vue index 17b74f5..b1a7a6a 100644 --- a/frontend/pages/customer/form.vue +++ b/frontend/pages/customer/form.vue @@ -2,12 +2,12 @@ 客户名称 客户等级 - - 售价档位 - - {{ priceLevels[priceIdx] }} - - + + 售价档位 + + {{ priceLabels[priceIdx] }} + + 联系人 手机 电话 @@ -26,13 +26,14 @@ export default { return { id: null, form: { name:'', level:'', priceLevel:'retail', contactName:'', mobile:'', phone:'', address:'', arOpening:0, remark:'' }, - priceLevels: ['retail','distribution','wholesale','big_client'], + priceLevels: ['零售价','批发价','大单报价'], + priceLabels: ['零售价','批发价','大单报价'], priceIdx: 0 } }, onLoad(query) { if (query && query.id) { this.id = Number(query.id) } }, methods: { - onPriceChange(e){ this.priceIdx = Number(e.detail.value); this.form.priceLevel = this.priceLevels[this.priceIdx] }, + onPriceChange(e){ this.priceIdx = Number(e.detail.value); this.form.priceLevel = this.priceLevels[this.priceIdx] }, async save() { if (!this.form.name) return uni.showToast({ title:'请填写客户名称', icon:'none' }) try { diff --git a/frontend/pages/customer/select.vue b/frontend/pages/customer/select.vue index d08bad1..a014e1f 100644 --- a/frontend/pages/customer/select.vue +++ b/frontend/pages/customer/select.vue @@ -6,7 +6,7 @@ - + {{ c.name }} {{ c.mobile || '—' }} @@ -25,6 +25,7 @@ export default { data() { return { kw: '', debtOnly: false, customers: [] } }, onLoad() { this.search() }, + onShow() { this.search() }, methods: { toggleDebtOnly() { this.debtOnly = !this.debtOnly; this.search() }, async search() { @@ -35,13 +36,17 @@ }, createCustomer() { uni.navigateTo({ url: '/pages/customer/form' }) }, select(c) { - const opener = getCurrentPages()[getCurrentPages().length-2] - if (opener && opener.$vm) { - opener.$vm.order.customerId = c.id - opener.$vm.customerName = c.name + const pages = getCurrentPages() + const prev = pages.length >= 2 ? pages[pages.length - 2] : null + const vm = prev && prev.$vm ? prev.$vm : null + if (vm && vm.order) { + vm.order.customerId = c.id + vm.customerName = c.name } uni.navigateBack() } + , + openDetail(c) { uni.navigateTo({ url: '/pages/customer/detail?id=' + c.id }) } } } diff --git a/frontend/pages/index/index.vue b/frontend/pages/index/index.vue index b1798f1..42177b6 100644 --- a/frontend/pages/index/index.vue +++ b/frontend/pages/index/index.vue @@ -156,6 +156,10 @@ uni.navigateTo({ url: '/pages/customer/select' }) return } + if (item.key === 'supplier') { + uni.navigateTo({ url: '/pages/supplier/select' }) + return + } uni.showToast({ title: item.title + '(开发中)', icon: 'none' }) }, goProduct() { diff --git a/frontend/pages/order/create.vue b/frontend/pages/order/create.vue index 51d3f8f..556e809 100644 --- a/frontend/pages/order/create.vue +++ b/frontend/pages/order/create.vue @@ -124,7 +124,7 @@ - + ¥ {{ (Number(it.quantity)*Number(it.unitPrice)).toFixed(2) }} @@ -139,7 +139,7 @@ + + + + diff --git a/frontend/pages/supplier/select.vue b/frontend/pages/supplier/select.vue index e541d3b..5052a62 100644 --- a/frontend/pages/supplier/select.vue +++ b/frontend/pages/supplier/select.vue @@ -3,28 +3,37 @@ + {{ s.name }} - {{ s.mobile || '—' }} + + {{ s.mobile || '—' }} + |应付:¥ {{ Number(s.apPayable).toFixed(2) }} + + + + \r\n\r\n\r\n","import App from './App'\r\n\r\n// #ifndef VUE3\r\nimport Vue from 'vue'\r\nimport './uni.promisify.adaptor'\r\nVue.config.productionTip = false\r\nApp.mpType = 'app'\r\nconst app = new Vue({\r\n ...App\r\n})\r\napp.$mount()\r\n// #endif\r\n\r\n// #ifdef VUE3\r\nimport { createSSRApp } from 'vue'\r\nexport function createApp() {\r\n const app = createSSRApp(App)\r\n return {\r\n app\r\n }\r\n}\r\n// #endif\r\n\r\n// 规范化 WebSocket 关闭码(仅微信小程序)\r\n// #ifdef MP-WEIXIN\r\nif (typeof uni !== 'undefined' && typeof uni.connectSocket === 'function') {\r\n const _connectSocket = uni.connectSocket\r\n uni.connectSocket = function(options) {\r\n const task = _connectSocket.call(this, options)\r\n if (task && typeof task.close === 'function') {\r\n const _close = task.close\r\n task.close = function(params = {}) {\r\n if (params && typeof params === 'object') {\r\n const codeNum = Number(params.code)\r\n const isValid = codeNum === 1000 || (codeNum >= 3000 && codeNum <= 4999)\r\n if (!isValid) {\r\n params.code = 1000\r\n if (!params.reason) params.reason = 'normalized from invalid close code'\r\n }\r\n }\r\n return _close.call(this, params)\r\n }\r\n }\r\n return task\r\n }\r\n}\r\n// #endif"],"names":["uni","createSSRApp","App"],"mappings":";;;;;;;;;;;;;;;;;;AACC,MAAK,YAAU;AAAA,EACd,UAAU,WAAW;AACpBA,kBAAAA,MAAA,MAAA,OAAA,gBAAY,YAAY;AAAA,EACxB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,gBAAA,UAAU;AAAA,EACtB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,iBAAA,UAAU;AAAA,EACvB;AACD;ACIM,SAAS,YAAY;AAC1B,QAAM,MAAMC,cAAY,aAACC,SAAG;AAC5B,SAAO;AAAA,IACL;AAAA,EACD;AACH;AAKA,IAAI,OAAOF,cAAG,UAAK,eAAe,OAAOA,cAAAA,MAAI,kBAAkB,YAAY;AACzE,QAAM,iBAAiBA,cAAAA,MAAI;AAC3BA,sBAAI,gBAAgB,SAAS,SAAS;AACpC,UAAM,OAAO,eAAe,KAAK,MAAM,OAAO;AAC9C,QAAI,QAAQ,OAAO,KAAK,UAAU,YAAY;AAC5C,YAAM,SAAS,KAAK;AACpB,WAAK,QAAQ,SAAS,SAAS,IAAI;AACjC,YAAI,UAAU,OAAO,WAAW,UAAU;AACxC,gBAAM,UAAU,OAAO,OAAO,IAAI;AAClC,gBAAM,UAAU,YAAY,OAAS,WAAW,OAAQ,WAAW;AACnE,cAAI,CAAC,SAAS;AACZ,mBAAO,OAAO;AACd,gBAAI,CAAC,OAAO;AAAQ,qBAAO,SAAS;AAAA,UACrC;AAAA,QACF;AACD,eAAO,OAAO,KAAK,MAAM,MAAM;AAAA,MAChC;AAAA,IACF;AACD,WAAO;AAAA,EACR;AACH;;;"} \ No newline at end of file +{"version":3,"file":"app.js","sources":["App.vue","main.js"],"sourcesContent":["\r\n\r\n\r\n","import App from './App'\r\n\r\n// #ifndef VUE3\r\nimport Vue from 'vue'\r\nimport './uni.promisify.adaptor'\r\nVue.config.productionTip = false\r\nApp.mpType = 'app'\r\nconst app = new Vue({\r\n ...App\r\n})\r\napp.$mount()\r\n// #endif\r\n\r\n// #ifdef VUE3\r\nimport { createSSRApp } from 'vue'\r\nexport function createApp() {\r\n const app = createSSRApp(App)\r\n return {\r\n app\r\n }\r\n}\r\n// #endif\r\n\r\n// 规范化 WebSocket 关闭码(仅微信小程序)\r\n// #ifdef MP-WEIXIN\r\nif (typeof uni !== 'undefined' && typeof uni.connectSocket === 'function') {\r\n const _connectSocket = uni.connectSocket\r\n uni.connectSocket = function(options) {\r\n const task = _connectSocket.call(this, options)\r\n if (task && typeof task.close === 'function') {\r\n const _close = task.close\r\n task.close = function(params = {}) {\r\n if (params && typeof params === 'object') {\r\n const codeNum = Number(params.code)\r\n const isValid = codeNum === 1000 || (codeNum >= 3000 && codeNum <= 4999)\r\n if (!isValid) {\r\n params.code = 1000\r\n if (!params.reason) params.reason = 'normalized from invalid close code'\r\n }\r\n }\r\n return _close.call(this, params)\r\n }\r\n }\r\n return task\r\n }\r\n}\r\n// #endif"],"names":["uni","createSSRApp","App"],"mappings":";;;;;;;;;;;;;;;;;;;;AACC,MAAK,YAAU;AAAA,EACd,UAAU,WAAW;AACpBA,kBAAAA,MAAA,MAAA,OAAA,gBAAY,YAAY;AAAA,EACxB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,gBAAA,UAAU;AAAA,EACtB;AAAA,EACD,QAAQ,WAAW;AAClBA,kBAAAA,MAAY,MAAA,OAAA,iBAAA,UAAU;AAAA,EACvB;AACD;ACIM,SAAS,YAAY;AAC1B,QAAM,MAAMC,cAAY,aAACC,SAAG;AAC5B,SAAO;AAAA,IACL;AAAA,EACD;AACH;AAKA,IAAI,OAAOF,cAAG,UAAK,eAAe,OAAOA,cAAAA,MAAI,kBAAkB,YAAY;AACzE,QAAM,iBAAiBA,cAAAA,MAAI;AAC3BA,sBAAI,gBAAgB,SAAS,SAAS;AACpC,UAAM,OAAO,eAAe,KAAK,MAAM,OAAO;AAC9C,QAAI,QAAQ,OAAO,KAAK,UAAU,YAAY;AAC5C,YAAM,SAAS,KAAK;AACpB,WAAK,QAAQ,SAAS,SAAS,IAAI;AACjC,YAAI,UAAU,OAAO,WAAW,UAAU;AACxC,gBAAM,UAAU,OAAO,OAAO,IAAI;AAClC,gBAAM,UAAU,YAAY,OAAS,WAAW,OAAQ,WAAW;AACnE,cAAI,CAAC,SAAS;AACZ,mBAAO,OAAO;AACd,gBAAI,CAAC,OAAO;AAAQ,qBAAO,SAAS;AAAA,UACrC;AAAA,QACF;AACD,eAAO,OAAO,KAAK,MAAM,MAAM;AAAA,MAChC;AAAA,IACF;AACD,WAAO;AAAA,EACR;AACH;;;"} \ No newline at end of file diff --git a/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/common/http.js.map b/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/common/http.js.map index 78f1b0d..d2fea6f 100644 --- a/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/common/http.js.map +++ b/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/common/http.js.map @@ -1 +1 @@ -{"version":3,"file":"http.js","sources":["common/http.js"],"sourcesContent":["import { API_BASE_URL, API_BASE_URL_CANDIDATES, SHOP_ID, ENABLE_DEFAULT_USER, DEFAULT_USER_ID } from './config.js'\n\nfunction buildUrl(path) {\n if (!path) return API_BASE_URL\n if (path.startsWith('http')) return path\n return API_BASE_URL + (path.startsWith('/') ? path : '/' + path)\n}\n\nfunction requestWithFallback(options, candidates, idx, resolve, reject) {\n const base = candidates[idx] || API_BASE_URL\n const url = options.url.replace(/^https?:\\/\\/[^/]+/, base)\n uni.request({ ...options, url, success: (res) => {\n const { statusCode, data } = res\n if (statusCode >= 200 && statusCode < 300) return resolve(data)\n if (idx + 1 < candidates.length) return requestWithFallback(options, candidates, idx + 1, resolve, reject)\n reject(new Error('HTTP ' + statusCode))\n }, fail: (err) => {\n if (idx + 1 < candidates.length) return requestWithFallback(options, candidates, idx + 1, resolve, reject)\n reject(err)\n } })\n}\n\nexport function get(path, params = {}) {\n return new Promise((resolve, reject) => {\n const headers = { 'X-Shop-Id': SHOP_ID }\n if (ENABLE_DEFAULT_USER && DEFAULT_USER_ID) headers['X-User-Id'] = DEFAULT_USER_ID\n const options = { url: buildUrl(path), method: 'GET', data: params, header: headers }\n requestWithFallback(options, API_BASE_URL_CANDIDATES, 0, resolve, reject)\n })\n}\n\n\nexport function post(path, body = {}) {\n return new Promise((resolve, reject) => {\n const headers = { 'Content-Type': 'application/json', 'X-Shop-Id': SHOP_ID }\n if (ENABLE_DEFAULT_USER && DEFAULT_USER_ID) headers['X-User-Id'] = DEFAULT_USER_ID\n const options = { url: buildUrl(path), method: 'POST', data: body, header: headers }\n requestWithFallback(options, API_BASE_URL_CANDIDATES, 0, resolve, reject)\n })\n}\n\n\nexport function put(path, body = {}) {\n return new Promise((resolve, reject) => {\n const headers = { 'Content-Type': 'application/json', 'X-Shop-Id': SHOP_ID }\n if (ENABLE_DEFAULT_USER && DEFAULT_USER_ID) headers['X-User-Id'] = DEFAULT_USER_ID\n const options = { url: buildUrl(path), method: 'PUT', data: body, header: headers }\n requestWithFallback(options, API_BASE_URL_CANDIDATES, 0, resolve, reject)\n })\n}\n\nexport function del(path, body = {}) {\n return new Promise((resolve, reject) => {\n const headers = { 'Content-Type': 'application/json', 'X-Shop-Id': SHOP_ID }\n if (ENABLE_DEFAULT_USER && DEFAULT_USER_ID) headers['X-User-Id'] = DEFAULT_USER_ID\n const options = { url: buildUrl(path), method: 'DELETE', data: body, header: headers }\n requestWithFallback(options, API_BASE_URL_CANDIDATES, 0, resolve, reject)\n })\n}\n\nfunction uploadWithFallback(options, candidates, idx, resolve, reject) {\n const base = candidates[idx] || API_BASE_URL\n const url = options.url.replace(/^https?:\\/\\/[^/]+/, base)\n const uploadOptions = { ...options, url }\n uni.uploadFile({\n ...uploadOptions,\n success: (res) => {\n const statusCode = res.statusCode || 0\n if (statusCode >= 200 && statusCode < 300) {\n try {\n const data = typeof res.data === 'string' ? JSON.parse(res.data) : res.data\n return resolve(data)\n } catch (e) {\n return resolve(res.data)\n }\n }\n if (idx + 1 < candidates.length) return uploadWithFallback(options, candidates, idx + 1, resolve, reject)\n reject(new Error('HTTP ' + statusCode))\n },\n fail: (err) => {\n if (idx + 1 < candidates.length) return uploadWithFallback(options, candidates, idx + 1, resolve, reject)\n reject(err)\n }\n })\n}\n\n// 文件上传封装:自动注入租户/用户头并进行多地址回退\nexport function upload(path, filePath, formData = {}, name = 'file') {\n return new Promise((resolve, reject) => {\n const header = { 'X-Shop-Id': SHOP_ID }\n if (ENABLE_DEFAULT_USER && DEFAULT_USER_ID) header['X-User-Id'] = DEFAULT_USER_ID\n const options = { url: buildUrl(path), filePath, name, formData, header }\n uploadWithFallback(options, API_BASE_URL_CANDIDATES, 0, resolve, reject)\n })\n}\n\n"],"names":["API_BASE_URL","uni","SHOP_ID","ENABLE_DEFAULT_USER","DEFAULT_USER_ID","API_BASE_URL_CANDIDATES"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"http.js","sources":["common/http.js"],"sourcesContent":["import { API_BASE_URL, API_BASE_URL_CANDIDATES, SHOP_ID, ENABLE_DEFAULT_USER, DEFAULT_USER_ID } from './config.js'\n\nfunction buildUrl(path) {\n if (!path) return API_BASE_URL\n if (path.startsWith('http')) return path\n return API_BASE_URL + (path.startsWith('/') ? path : '/' + path)\n}\n\nfunction requestWithFallback(options, candidates, idx, resolve, reject) {\n const base = candidates[idx] || API_BASE_URL\n const url = options.url.replace(/^https?:\\/\\/[^/]+/, base)\n uni.request({ ...options, url, success: (res) => {\n const { statusCode, data } = res\n if (statusCode >= 200 && statusCode < 300) return resolve(data)\n const msg = (data && (data.message || data.error || data.msg)) || ('HTTP ' + statusCode)\n uni.showToast({ title: msg, icon: 'none' })\n if (idx + 1 < candidates.length) return requestWithFallback(options, candidates, idx + 1, resolve, reject)\n reject(new Error(msg))\n }, fail: (err) => {\n if (idx + 1 < candidates.length) return requestWithFallback(options, candidates, idx + 1, resolve, reject)\n reject(err)\n } })\n}\n\nexport function get(path, params = {}) {\n return new Promise((resolve, reject) => {\n const headers = { 'X-Shop-Id': SHOP_ID }\n if (ENABLE_DEFAULT_USER && DEFAULT_USER_ID) headers['X-User-Id'] = DEFAULT_USER_ID\n const options = { url: buildUrl(path), method: 'GET', data: params, header: headers }\n requestWithFallback(options, API_BASE_URL_CANDIDATES, 0, resolve, reject)\n })\n}\n\n\nexport function post(path, body = {}) {\n return new Promise((resolve, reject) => {\n const headers = { 'Content-Type': 'application/json', 'X-Shop-Id': SHOP_ID }\n if (ENABLE_DEFAULT_USER && DEFAULT_USER_ID) headers['X-User-Id'] = DEFAULT_USER_ID\n const options = { url: buildUrl(path), method: 'POST', data: body, header: headers }\n requestWithFallback(options, API_BASE_URL_CANDIDATES, 0, resolve, reject)\n })\n}\n\n\nexport function put(path, body = {}) {\n return new Promise((resolve, reject) => {\n const headers = { 'Content-Type': 'application/json', 'X-Shop-Id': SHOP_ID }\n if (ENABLE_DEFAULT_USER && DEFAULT_USER_ID) headers['X-User-Id'] = DEFAULT_USER_ID\n const options = { url: buildUrl(path), method: 'PUT', data: body, header: headers }\n requestWithFallback(options, API_BASE_URL_CANDIDATES, 0, resolve, reject)\n })\n}\n\nexport function del(path, body = {}) {\n return new Promise((resolve, reject) => {\n const headers = { 'Content-Type': 'application/json', 'X-Shop-Id': SHOP_ID }\n if (ENABLE_DEFAULT_USER && DEFAULT_USER_ID) headers['X-User-Id'] = DEFAULT_USER_ID\n const options = { url: buildUrl(path), method: 'DELETE', data: body, header: headers }\n requestWithFallback(options, API_BASE_URL_CANDIDATES, 0, resolve, reject)\n })\n}\n\nfunction uploadWithFallback(options, candidates, idx, resolve, reject) {\n const base = candidates[idx] || API_BASE_URL\n const url = options.url.replace(/^https?:\\/\\/[^/]+/, base)\n const uploadOptions = { ...options, url }\n uni.uploadFile({\n ...uploadOptions,\n success: (res) => {\n const statusCode = res.statusCode || 0\n if (statusCode >= 200 && statusCode < 300) {\n try {\n const data = typeof res.data === 'string' ? JSON.parse(res.data) : res.data\n return resolve(data)\n } catch (e) {\n return resolve(res.data)\n }\n }\n if (idx + 1 < candidates.length) return uploadWithFallback(options, candidates, idx + 1, resolve, reject)\n reject(new Error('HTTP ' + statusCode))\n },\n fail: (err) => {\n if (idx + 1 < candidates.length) return uploadWithFallback(options, candidates, idx + 1, resolve, reject)\n reject(err)\n }\n })\n}\n\n// 文件上传封装:自动注入租户/用户头并进行多地址回退\nexport function upload(path, filePath, formData = {}, name = 'file') {\n return new Promise((resolve, reject) => {\n const header = { 'X-Shop-Id': SHOP_ID }\n if (ENABLE_DEFAULT_USER && DEFAULT_USER_ID) header['X-User-Id'] = DEFAULT_USER_ID\n const options = { url: buildUrl(path), filePath, name, formData, header }\n uploadWithFallback(options, API_BASE_URL_CANDIDATES, 0, resolve, reject)\n })\n}\n\n"],"names":["API_BASE_URL","uni","SHOP_ID","ENABLE_DEFAULT_USER","DEFAULT_USER_ID","API_BASE_URL_CANDIDATES"],"mappings":";;;AAEA,SAAS,SAAS,MAAM;AACtB,MAAI,CAAC;AAAM,WAAOA,cAAY;AAC9B,MAAI,KAAK,WAAW,MAAM;AAAG,WAAO;AACpC,SAAOA,cAAAA,gBAAgB,KAAK,WAAW,GAAG,IAAI,OAAO,MAAM;AAC7D;AAEA,SAAS,oBAAoB,SAAS,YAAY,KAAK,SAAS,QAAQ;AACtE,QAAM,OAAO,WAAW,GAAG,KAAKA,cAAY;AAC5C,QAAM,MAAM,QAAQ,IAAI,QAAQ,qBAAqB,IAAI;AACzDC,gBAAG,MAAC,QAAQ,EAAE,GAAG,SAAS,KAAK,SAAS,CAAC,QAAQ;AAC/C,UAAM,EAAE,YAAY,KAAI,IAAK;AAC7B,QAAI,cAAc,OAAO,aAAa;AAAK,aAAO,QAAQ,IAAI;AAC9D,UAAM,MAAO,SAAS,KAAK,WAAW,KAAK,SAAS,KAAK,QAAU,UAAU;AAC7EA,kBAAG,MAAC,UAAU,EAAE,OAAO,KAAK,MAAM,QAAQ;AAC1C,QAAI,MAAM,IAAI,WAAW;AAAQ,aAAO,oBAAoB,SAAS,YAAY,MAAM,GAAG,SAAS,MAAM;AACzG,WAAO,IAAI,MAAM,GAAG,CAAC;AAAA,EACzB,GAAK,MAAM,CAAC,QAAQ;AAChB,QAAI,MAAM,IAAI,WAAW;AAAQ,aAAO,oBAAoB,SAAS,YAAY,MAAM,GAAG,SAAS,MAAM;AACzG,WAAO,GAAG;AAAA,EACd,GAAK;AACL;AAEO,SAAS,IAAI,MAAM,SAAS,IAAI;AACrC,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAM,UAAU,EAAE,aAAaC,sBAAS;AACxC,QAAIC,cAAmB,uBAAIC,cAAe;AAAE,cAAQ,WAAW,IAAIA,cAAe;AAClF,UAAM,UAAU,EAAE,KAAK,SAAS,IAAI,GAAG,QAAQ,OAAO,MAAM,QAAQ,QAAQ,QAAS;AACrF,wBAAoB,SAASC,cAAAA,yBAAyB,GAAG,SAAS,MAAM;AAAA,EAC5E,CAAG;AACH;AAGO,SAAS,KAAK,MAAM,OAAO,IAAI;AACpC,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAM,UAAU,EAAE,gBAAgB,oBAAoB,aAAaH,cAAAA,QAAS;AAC5E,QAAIC,cAAmB,uBAAIC,cAAe;AAAE,cAAQ,WAAW,IAAIA,cAAe;AAClF,UAAM,UAAU,EAAE,KAAK,SAAS,IAAI,GAAG,QAAQ,QAAQ,MAAM,MAAM,QAAQ,QAAS;AACpF,wBAAoB,SAASC,cAAAA,yBAAyB,GAAG,SAAS,MAAM;AAAA,EAC5E,CAAG;AACH;AAGO,SAAS,IAAI,MAAM,OAAO,IAAI;AACnC,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAM,UAAU,EAAE,gBAAgB,oBAAoB,aAAaH,cAAAA,QAAS;AAC5E,QAAIC,cAAmB,uBAAIC,cAAe;AAAE,cAAQ,WAAW,IAAIA,cAAe;AAClF,UAAM,UAAU,EAAE,KAAK,SAAS,IAAI,GAAG,QAAQ,OAAO,MAAM,MAAM,QAAQ,QAAS;AACnF,wBAAoB,SAASC,cAAAA,yBAAyB,GAAG,SAAS,MAAM;AAAA,EAC5E,CAAG;AACH;AAEO,SAAS,IAAI,MAAM,OAAO,IAAI;AACnC,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAM,UAAU,EAAE,gBAAgB,oBAAoB,aAAaH,cAAAA,QAAS;AAC5E,QAAIC,cAAmB,uBAAIC,cAAe;AAAE,cAAQ,WAAW,IAAIA,cAAe;AAClF,UAAM,UAAU,EAAE,KAAK,SAAS,IAAI,GAAG,QAAQ,UAAU,MAAM,MAAM,QAAQ,QAAS;AACtF,wBAAoB,SAASC,cAAAA,yBAAyB,GAAG,SAAS,MAAM;AAAA,EAC5E,CAAG;AACH;AAEA,SAAS,mBAAmB,SAAS,YAAY,KAAK,SAAS,QAAQ;AACrE,QAAM,OAAO,WAAW,GAAG,KAAKL,cAAY;AAC5C,QAAM,MAAM,QAAQ,IAAI,QAAQ,qBAAqB,IAAI;AACzD,QAAM,gBAAgB,EAAE,GAAG,SAAS,IAAK;AACzCC,gBAAAA,MAAI,WAAW;AAAA,IACb,GAAG;AAAA,IACH,SAAS,CAAC,QAAQ;AAChB,YAAM,aAAa,IAAI,cAAc;AACrC,UAAI,cAAc,OAAO,aAAa,KAAK;AACzC,YAAI;AACF,gBAAM,OAAO,OAAO,IAAI,SAAS,WAAW,KAAK,MAAM,IAAI,IAAI,IAAI,IAAI;AACvE,iBAAO,QAAQ,IAAI;AAAA,QACpB,SAAQ,GAAG;AACV,iBAAO,QAAQ,IAAI,IAAI;AAAA,QACxB;AAAA,MACF;AACD,UAAI,MAAM,IAAI,WAAW;AAAQ,eAAO,mBAAmB,SAAS,YAAY,MAAM,GAAG,SAAS,MAAM;AACxG,aAAO,IAAI,MAAM,UAAU,UAAU,CAAC;AAAA,IACvC;AAAA,IACD,MAAM,CAAC,QAAQ;AACb,UAAI,MAAM,IAAI,WAAW;AAAQ,eAAO,mBAAmB,SAAS,YAAY,MAAM,GAAG,SAAS,MAAM;AACxG,aAAO,GAAG;AAAA,IACX;AAAA,EACL,CAAG;AACH;AAGO,SAAS,OAAO,MAAM,UAAU,WAAW,CAAE,GAAE,OAAO,QAAQ;AACnE,SAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,UAAM,SAAS,EAAE,aAAaC,sBAAS;AACvC,QAAIC,cAAmB,uBAAIC,cAAe;AAAE,aAAO,WAAW,IAAIA,cAAe;AACjF,UAAM,UAAU,EAAE,KAAK,SAAS,IAAI,GAAG,UAAU,MAAM,UAAU,OAAQ;AACzE,uBAAmB,SAASC,cAAAA,yBAAyB,GAAG,SAAS,MAAM;AAAA,EAC3E,CAAG;AACH;;;;;;"} \ No newline at end of file diff --git a/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/customer/detail.js.map b/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/customer/detail.js.map new file mode 100644 index 0000000..39df100 --- /dev/null +++ b/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/customer/detail.js.map @@ -0,0 +1 @@ +{"version":3,"file":"detail.js","sources":["pages/customer/detail.vue","../../../../Downloads/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvY3VzdG9tZXIvZGV0YWlsLnZ1ZQ"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/21826/Desktop/Wj/PartsInquiry/frontend/pages/customer/detail.vue'\nwx.createPage(MiniProgramPage)"],"names":["get","uni","put"],"mappings":";;;AA2BA,MAAK,YAAU;AAAA,EACd,OAAM;AAAE,WAAO,EAAE,IAAI,MAAM,GAAG,CAAE,GAAE,SAAS,OAAO,MAAM,EAAE,MAAK,IAAI,aAAY,IAAI,QAAO,IAAI,OAAM,IAAI,SAAQ,IAAI,OAAM,IAAI,YAAW,OAAO,WAAU,GAAG,QAAO,MAAM,aAAY,CAAC,OAAM,OAAM,MAAM,GAAG,aAAY,CAAC,OAAM,OAAM,MAAM,GAAG,UAAS;EAAK;AAAA,EAC5P,OAAO,GAAE;AAAE,QAAI,KAAK,EAAE,IAAI;AAAE,WAAK,KAAK,OAAO,EAAE,EAAE;AAAG,WAAK,MAAK;AAAA;EAAM;AAAA,EACpE,SAAS;AAAA,IACR,MAAM,QAAO;AACZ,UAAI;AACH,aAAK,IAAI,MAAMA,YAAG,IAAC,kBAAkB,KAAK,EAAE,EAAE;AAE9C,aAAK,OAAO;AAAA,UACX,MAAM,KAAK,EAAE,QAAQ;AAAA,UAAI,aAAa,KAAK,EAAE,eAAe;AAAA,UAAI,QAAQ,KAAK,EAAE,UAAU;AAAA,UAAI,OAAO,KAAK,EAAE,SAAS;AAAA,UACpH,SAAS,KAAK,EAAE,WAAW;AAAA,UAAI,OAAO,KAAK,EAAE,SAAS;AAAA,UAAI,YAAY,KAAK,EAAE,cAAc;AAAA,UAAU,WAAW,OAAO,KAAK,EAAE,aAAW,CAAC;AAAA,UAAG,QAAQ,KAAK,EAAE,UAAU;AAAA,QACvK;AACA,cAAM,MAAM,KAAK,YAAY,QAAQ,KAAK,KAAK,UAAU;AAAG,aAAK,WAAW,OAAO,IAAI,MAAM;AAAA,eACtF,GAAE;AAAEC,sBAAAA,MAAI,UAAU,EAAE,OAAM,QAAQ,MAAK,OAAO,CAAC;AAAA,MAAE;AAAA,IACzD;AAAA,IACD,aAAY;AAAE,WAAK,UAAU,CAAC,KAAK;AAAA,IAAS;AAAA,IAC5C,cAAc,GAAE;AAAE,WAAK,WAAW,OAAO,EAAE,OAAO,KAAK;AAAG,WAAK,KAAK,aAAa,KAAK,YAAY,KAAK,QAAQ;AAAA,IAAG;AAAA,IAClH,SAAQ;AACP,YAAM,QAAQ,gBAAgB;AAC9B,UAAI,YAAY;AAChB,eAAS,IAAI,MAAM,SAAS,GAAG,KAAK,GAAG,KAAK;AAC3C,cAAM,KAAK,MAAM,CAAC,KAAK,MAAM,CAAC,EAAE,MAAM,MAAM,CAAC,EAAE,MAAM;AACrD,YAAI,MAAM,GAAG,OAAO;AAAE,aAAG,MAAM,aAAa,KAAK,EAAE;AAAI,aAAG,eAAe,KAAK,EAAE;AAAM,sBAAY;AAAG;AAAA,QAAM;AAAA,MAC5G;AACA,UAAI,aAAa,GAAG;AACnB,cAAM,QAAS,MAAM,SAAS,IAAK;AACnCA,4BAAI,aAAa,EAAE,OAAO;AAAA,aACpB;AACNA,sBAAAA,MAAI,aAAa;AAAA,MAClB;AAAA,IACA;AAAA,IACD,MAAM,OAAM;AACX,UAAI,CAAC,KAAK,KAAK;AAAM,eAAOA,cAAG,MAAC,UAAU,EAAE,OAAM,WAAW,MAAK,QAAQ;AAC1E,UAAI;AACH,cAAMC,YAAAA,IAAI,kBAAkB,KAAK,EAAE,IAAI,KAAK,IAAI;AAChDD,sBAAG,MAAC,UAAU,EAAE,OAAM,OAAO,MAAK,WAAW;AAC7C,aAAK,UAAU;AACf,cAAM,KAAK,MAAM;AAAA,MAClB,SAAQ,GAAG;AAAEA,sBAAG,MAAC,UAAU,EAAE,QAAO,uBAAG,YAAW,QAAQ,MAAK,OAAQ,CAAA;AAAA,MAAE;AAAA,IAC1E;AAAA,EACD;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnEA,GAAG,WAAW,eAAe;"} \ No newline at end of file diff --git a/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/customer/form.js.map b/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/customer/form.js.map index 6835896..3f8bff3 100644 --- a/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/customer/form.js.map +++ b/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/customer/form.js.map @@ -1 +1 @@ -{"version":3,"file":"form.js","sources":["pages/customer/form.vue","../../../../Downloads/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvY3VzdG9tZXIvZm9ybS52dWU"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/21826/Desktop/Wj/PartsInquiry/frontend/pages/customer/form.vue'\nwx.createPage(MiniProgramPage)"],"names":["uni","put","post"],"mappings":";;;AAuBA,MAAK,YAAU;AAAA,EACd,OAAO;AACN,WAAO;AAAA,MACN,IAAI;AAAA,MACJ,MAAM,EAAE,MAAK,IAAI,OAAM,IAAI,YAAW,UAAU,aAAY,IAAI,QAAO,IAAI,OAAM,IAAI,SAAQ,IAAI,WAAU,GAAG,QAAO,GAAI;AAAA,MACzH,aAAa,CAAC,UAAS,gBAAe,aAAY,YAAY;AAAA,MAC9D,UAAU;AAAA,IACX;AAAA,EACA;AAAA,EACD,OAAO,OAAO;AAAE,QAAI,SAAS,MAAM,IAAI;AAAE,WAAK,KAAK,OAAO,MAAM,EAAE;AAAA,IAAE;AAAA,EAAG;AAAA,EACvE,SAAS;AAAA,IACR,cAAc,GAAE;AAAE,WAAK,WAAW,OAAO,EAAE,OAAO,KAAK;AAAG,WAAK,KAAK,aAAa,KAAK,YAAY,KAAK,QAAQ;AAAA,IAAG;AAAA,IAClH,MAAM,OAAO;AACZ,UAAI,CAAC,KAAK,KAAK;AAAM,eAAOA,cAAG,MAAC,UAAU,EAAE,OAAM,WAAW,MAAK,QAAQ;AAC1E,UAAI;AACH,YAAI,KAAK;AAAI,gBAAMC,YAAAA,IAAI,kBAAkB,KAAK,EAAE,IAAI,KAAK,IAAI;AAAA;AACxD,gBAAMC,iBAAK,kBAAkB,KAAK,IAAI;AAC3CF,sBAAG,MAAC,UAAU,EAAE,OAAM,QAAQ,MAAK,WAAW;AAC9C,mBAAW,MAAMA,cAAAA,MAAI,aAAY,GAAI,GAAG;AAAA,MACzC,SAAQ,GAAG;AAAEA,sBAAG,MAAC,UAAU,EAAE,QAAO,uBAAG,YAAW,QAAQ,MAAK,OAAQ,CAAA;AAAA,MAAE;AAAA,IAC1E;AAAA,EACD;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5CA,GAAG,WAAW,eAAe;"} \ No newline at end of file +{"version":3,"file":"form.js","sources":["pages/customer/form.vue","../../../../Downloads/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvY3VzdG9tZXIvZm9ybS52dWU"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/21826/Desktop/Wj/PartsInquiry/frontend/pages/customer/form.vue'\nwx.createPage(MiniProgramPage)"],"names":["uni","put","post"],"mappings":";;;AAuBA,MAAK,YAAU;AAAA,EACd,OAAO;AACN,WAAO;AAAA,MACN,IAAI;AAAA,MACJ,MAAM,EAAE,MAAK,IAAI,OAAM,IAAI,YAAW,UAAU,aAAY,IAAI,QAAO,IAAI,OAAM,IAAI,SAAQ,IAAI,WAAU,GAAG,QAAO,GAAI;AAAA,MACtH,aAAa,CAAC,OAAM,OAAM,MAAM;AAAA,MAChC,aAAa,CAAC,OAAM,OAAM,MAAM;AAAA,MACnC,UAAU;AAAA,IACX;AAAA,EACA;AAAA,EACD,OAAO,OAAO;AAAE,QAAI,SAAS,MAAM,IAAI;AAAE,WAAK,KAAK,OAAO,MAAM,EAAE;AAAA,IAAE;AAAA,EAAG;AAAA,EACvE,SAAS;AAAA,IACN,cAAc,GAAE;AAAE,WAAK,WAAW,OAAO,EAAE,OAAO,KAAK;AAAG,WAAK,KAAK,aAAa,KAAK,YAAY,KAAK,QAAQ;AAAA,IAAG;AAAA,IACpH,MAAM,OAAO;AACZ,UAAI,CAAC,KAAK,KAAK;AAAM,eAAOA,cAAG,MAAC,UAAU,EAAE,OAAM,WAAW,MAAK,QAAQ;AAC1E,UAAI;AACH,YAAI,KAAK;AAAI,gBAAMC,YAAAA,IAAI,kBAAkB,KAAK,EAAE,IAAI,KAAK,IAAI;AAAA;AACxD,gBAAMC,iBAAK,kBAAkB,KAAK,IAAI;AAC3CF,sBAAG,MAAC,UAAU,EAAE,OAAM,QAAQ,MAAK,WAAW;AAC9C,mBAAW,MAAMA,cAAAA,MAAI,aAAY,GAAI,GAAG;AAAA,MACzC,SAAQ,GAAG;AAAEA,sBAAG,MAAC,UAAU,EAAE,QAAO,uBAAG,YAAW,QAAQ,MAAK,OAAQ,CAAA;AAAA,MAAE;AAAA,IAC1E;AAAA,EACD;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7CA,GAAG,WAAW,eAAe;"} \ No newline at end of file diff --git a/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/customer/select.js.map b/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/customer/select.js.map index 5911ff2..98e68d8 100644 --- a/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/customer/select.js.map +++ b/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/customer/select.js.map @@ -1 +1 @@ -{"version":3,"file":"select.js","sources":["pages/customer/select.vue","../../../../Downloads/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvY3VzdG9tZXIvc2VsZWN0LnZ1ZQ"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/21826/Desktop/Wj/PartsInquiry/frontend/pages/customer/select.vue'\nwx.createPage(MiniProgramPage)"],"names":["get","uni"],"mappings":";;;AAwBC,MAAK,YAAU;AAAA,EACd,OAAO;AAAE,WAAO,EAAE,IAAI,IAAI,UAAU,OAAO,WAAW,CAAA;EAAM;AAAA,EAC5D,SAAS;AAAE,SAAK;EAAU;AAAA,EAC1B,SAAS;AAAA,IACR,iBAAiB;AAAE,WAAK,WAAW,CAAC,KAAK;AAAU,WAAK;IAAU;AAAA,IAClE,MAAM,SAAS;AACd,UAAI;AACH,cAAM,MAAM,MAAMA,YAAG,IAAC,kBAAkB,EAAE,IAAI,KAAK,IAAI,UAAU,KAAK,UAAU,MAAM,GAAG,MAAM,IAAI;AACnG,aAAK,YAAY,MAAM,QAAQ,2BAAK,IAAI,IAAI,IAAI,OAAQ,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAA;AAAA,eAC5E,GAAG;AAAEC,sBAAAA,MAAI,UAAU,EAAE,OAAO,QAAQ,MAAM,OAAO,CAAC;AAAA,MAAE;AAAA,IAC5D;AAAA,IACD,iBAAiB;AAAEA,oBAAAA,MAAI,WAAW,EAAE,KAAK,uBAAqB,CAAG;AAAA,IAAG;AAAA,IACpE,OAAO,GAAG;AACT,YAAM,SAAS,gBAAiB,EAAC,gBAAe,EAAG,SAAO,CAAC;AAC3D,UAAI,UAAU,OAAO,KAAK;AACzB,eAAO,IAAI,MAAM,aAAa,EAAE;AAChC,eAAO,IAAI,eAAe,EAAE;AAAA,MAC7B;AACAA,oBAAAA,MAAI,aAAa;AAAA,IAClB;AAAA,EACD;AACD;;;;;;;;;;;;;;;;;;;;;;;;;AC5CD,GAAG,WAAW,eAAe;"} \ No newline at end of file +{"version":3,"file":"select.js","sources":["pages/customer/select.vue","../../../../Downloads/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvY3VzdG9tZXIvc2VsZWN0LnZ1ZQ"],"sourcesContent":["\n\n\n\n\n\n\n\n","import MiniProgramPage from 'C:/Users/21826/Desktop/Wj/PartsInquiry/frontend/pages/customer/select.vue'\nwx.createPage(MiniProgramPage)"],"names":["get","uni"],"mappings":";;;AAwBC,MAAK,YAAU;AAAA,EACd,OAAO;AAAE,WAAO,EAAE,IAAI,IAAI,UAAU,OAAO,WAAW,CAAA;EAAM;AAAA,EAC5D,SAAS;AAAE,SAAK;EAAU;AAAA,EAC1B,SAAS;AAAE,SAAK;EAAU;AAAA,EAC1B,SAAS;AAAA,IACR,iBAAiB;AAAE,WAAK,WAAW,CAAC,KAAK;AAAU,WAAK;IAAU;AAAA,IAClE,MAAM,SAAS;AACd,UAAI;AACH,cAAM,MAAM,MAAMA,YAAG,IAAC,kBAAkB,EAAE,IAAI,KAAK,IAAI,UAAU,KAAK,UAAU,MAAM,GAAG,MAAM,IAAI;AACnG,aAAK,YAAY,MAAM,QAAQ,2BAAK,IAAI,IAAI,IAAI,OAAQ,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAA;AAAA,eAC5E,GAAG;AAAEC,sBAAAA,MAAI,UAAU,EAAE,OAAO,QAAQ,MAAM,OAAO,CAAC;AAAA,MAAE;AAAA,IAC5D;AAAA,IACD,iBAAiB;AAAEA,oBAAAA,MAAI,WAAW,EAAE,KAAK,uBAAqB,CAAG;AAAA,IAAG;AAAA,IACpE,OAAO,GAAG;AACT,YAAM,QAAQ,gBAAgB;AAC9B,YAAM,OAAO,MAAM,UAAU,IAAI,MAAM,MAAM,SAAS,CAAC,IAAI;AAC3D,YAAM,KAAK,QAAQ,KAAK,MAAM,KAAK,MAAM;AACzC,UAAI,MAAM,GAAG,OAAO;AACnB,WAAG,MAAM,aAAa,EAAE;AACxB,WAAG,eAAe,EAAE;AAAA,MACrB;AACAA,oBAAAA,MAAI,aAAa;AAAA,IAClB;AAAA,IAEA,WAAW,GAAG;AAAEA,oBAAAA,MAAI,WAAW,EAAE,KAAK,+BAA+B,EAAE,GAAC,CAAG;AAAA,IAAE;AAAA,EAC9E;AACD;;;;;;;;;;;;;;;;;;;;;;;;;ACjDD,GAAG,WAAW,eAAe;"} \ No newline at end of file diff --git a/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/detail/index.js.map b/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/detail/index.js.map index a429554..e70c990 100644 --- a/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/detail/index.js.map +++ b/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/detail/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["pages/detail/index.vue","../../../../Downloads/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvZGV0YWlsL2luZGV4LnZ1ZQ"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/21826/Desktop/Wj/PartsInquiry/frontend/pages/detail/index.vue'\nwx.createPage(MiniProgramPage)"],"names":["uni","get"],"mappings":";;;AAuDA,MAAM,SAAS;AAAA,EACd,MAAM;AAAA,EACN,UAAU;AAAA,EACV,SAAS;AAAA,EACT,MAAM;AAAA,EACN,OAAO;AACR;AAEA,MAAK,YAAU;AAAA,EACd,OAAO;AACN,WAAO;AAAA,MACN,KAAK;AAAA,MACL,SAAS;AAAA,QACR,EAAE,KAAK,QAAQ,MAAM,KAAM;AAAA,QAC3B,EAAE,KAAK,YAAY,MAAM,KAAM;AAAA,QAC/B,EAAE,KAAK,WAAW,MAAM,KAAM;AAAA,QAC9B,EAAE,KAAK,QAAQ,MAAM,KAAM;AAAA,QAC3B,EAAE,KAAK,SAAS,MAAM,KAAK;AAAA,MAC3B;AAAA,MACD,OAAO;AAAA,MACP,OAAO,EAAE,IAAI,GAAI;AAAA,MACjB,OAAO,CAAE;AAAA,MACT,MAAM;AAAA,MACN,MAAM;AAAA,MACN,UAAU;AAAA,MACV,SAAS;AAAA,MACT,WAAW;AAAA,MACX,SAAS;AAAA,IACV;AAAA,EACA;AAAA,EACD,UAAU;AAAA,IACT,cAAc;AAAE,aAAO;AAAA,IAAoB;AAAA,IAC3C,cAAc;AAAE,aAAO,KAAK,aAAa,KAAK,UAAU,GAAG,KAAK,SAAS,IAAI,KAAK,OAAO,KAAK;AAAA,IAAI;AAAA,IAClG,cAAc;AAAE,aAAO,KAAK,MAAM,OAAO,CAAC,GAAG,OAAO,IAAI,OAAO,GAAG,UAAU,CAAC,GAAG,CAAC;AAAA,IAAE;AAAA,EACnF;AAAA,EACD,SAAS;AACR,QAAI;AAAEA,oBAAAA,MAAA,MAAA,OAAA,gCAAY,4CAA4C;AAAA,IAAE,SAAQ,GAAE;AAAA,IAAC;AAC3E,SAAK,aAAa;AAClB,SAAK,OAAO;AAAA,EACZ;AAAA,EACD,SAAS;AAAA,IACR,UAAU,GAAG;AAAE,UAAI,KAAK,QAAQ;AAAG;AAAQ,WAAK,MAAM;AAAG,WAAK,OAAM;AAAA,IAAI;AAAA,IACxE,YAAY,GAAG;AAAE,WAAK,QAAQ;AAAG,WAAK,aAAc;AAAE,WAAK,OAAM;AAAA,IAAI;AAAA,IACrE,eAAe;AACd,YAAM,MAAM,oBAAI,KAAK;AACrB,YAAM,MAAM,OAAK,OAAO,CAAC,EAAE,SAAS,GAAG,GAAG;AAC1C,YAAM,MAAM,OAAK,GAAG,EAAE,YAAa,CAAA,IAAI,IAAI,EAAE,SAAU,IAAC,CAAC,CAAC,IAAI,IAAI,EAAE,QAAS,CAAA,CAAC;AAC9E,UAAI,QAAQ,KAAK,MAAM;AACvB,UAAI,KAAK,UAAU,SAAS;AAAE,gBAAQ,MAAM;AAAA,MAAI,WACvC,KAAK,UAAU,QAAQ;AAAE,cAAM,MAAM,IAAI,YAAY;AAAG,gBAAQ,IAAI,KAAK,IAAI,eAAe,IAAI,SAAQ,GAAI,IAAI,YAAY,MAAM,CAAC;AAAG,cAAM;AAAA,MAAI,WAChJ,KAAK,UAAU,SAAS;AAAE,gBAAQ,IAAI,KAAK,IAAI,eAAe,IAAI,SAAU,GAAE,CAAC;AAAG,cAAM,IAAI,KAAK,IAAI,eAAe,IAAI,SAAQ,IAAK,GAAG,CAAC;AAAA,MAAE,WAC3I,KAAK,UAAU,QAAQ;AAAE,gBAAQ,IAAI,KAAK,IAAI,eAAe,GAAG,CAAC;AAAG,cAAM,IAAI,KAAK,IAAI,YAAa,GAAE,IAAI,EAAE;AAAA,MAAE,OAClH;AAAE,gBAAQ,IAAI,KAAK,IAAI,YAAW,GAAI,IAAI,SAAU,GAAE,CAAC;AAAG,cAAM,IAAI,KAAK,IAAI,YAAa,GAAE,IAAI,aAAa,GAAG,CAAC;AAAA,MAAE;AACxH,WAAK,YAAY,IAAI,KAAK;AAAG,WAAK,UAAU,IAAI,GAAG;AAAA,IACnD;AAAA,IACD,SAAS;AAAE,WAAK,QAAQ,CAAA;AAAI,WAAK,OAAO;AAAG,WAAK,WAAW;AAAO,WAAK,SAAQ;AAAA,IAAI;AAAA,IACnF,MAAM,WAAW;AAChB,UAAI,KAAK,WAAW,KAAK;AAAU;AACnC,WAAK,UAAU;AACf,UAAI;AACH,cAAM,OAAO,OAAO,KAAK,GAAG,KAAK;AACjC,cAAM,SAAS,EAAE,IAAI,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,MAAM,KAAK,MAAM,WAAW,KAAK,WAAW,SAAS,KAAK,SAAS,KAAK,KAAK,IAAI;AACtI,YAAI,KAAK,QAAQ;AAAQ,iBAAO,OAAO;AACvC,cAAM,MAAM,MAAMC,gBAAI,MAAM,MAAM;AAClC,cAAM,OAAO,MAAM,QAAQ,2BAAK,IAAI,IAAI,IAAI,OAAQ,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAA;AAC/E,aAAK,QAAQ,KAAK,MAAM,OAAO,IAAI;AACnC,YAAI,KAAK,SAAS,KAAK;AAAM,eAAK,WAAW;AAC7C,aAAK,QAAQ;AAAA,MACd,SAAS,GAAG;AACXD,sBAAG,MAAC,UAAU,EAAE,OAAO,QAAQ,MAAM,QAAQ;AAAA;AAClC,aAAK,UAAU;AAAA,MAAM;AAAA,IACjC;AAAA,IACD,WAAW,GAAG;AAAE,UAAI,CAAC;AAAG,eAAO;AAAI,UAAI;AAAE,cAAM,IAAI,IAAI,KAAK,CAAC;AAAG,cAAM,MAAM,OAAK,OAAO,CAAC,EAAE,SAAS,GAAG,GAAG;AAAG,eAAO,GAAG,EAAE,aAAa,IAAI,IAAI,EAAE,aAAW,CAAC,CAAC,IAAI,IAAI,EAAE,SAAS,CAAC;AAAA,MAAK,SAAO,GAAG;AAAE,eAAO,OAAO,CAAC,EAAE,MAAM,GAAE,EAAE;AAAA,MAAE;AAAA,IAAG;AAAA,IAClO,WAAW;AAAE,UAAI,KAAK,QAAQ,QAAQ;AAAEA,4BAAI,WAAW,EAAE,KAAK,sBAAsB,CAAC;AAAG;AAAA,MAAK;AAAIA,oBAAG,MAAC,UAAU,EAAE,OAAO,aAAa,MAAM,OAAO,CAAC;AAAA,IAAG;AAAA,IACtJ,WAAW,IAAI;AAAEA,oBAAAA,MAAI,UAAU,EAAE,OAAO,SAAS,MAAM,OAAO,CAAC;AAAA,IAAE;AAAA,EAClE;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClIA,GAAG,WAAW,eAAe;"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["pages/detail/index.vue","../../../../Downloads/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvZGV0YWlsL2luZGV4LnZ1ZQ"],"sourcesContent":["\n\n\n\n\n","import MiniProgramPage from 'C:/Users/21826/Desktop/Wj/PartsInquiry/frontend/pages/detail/index.vue'\nwx.createPage(MiniProgramPage)"],"names":["uni","get"],"mappings":"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"} \ No newline at end of file diff --git a/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map b/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map index e96c7b9..ae31b43 100644 --- a/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map +++ b/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/index/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["pages/index/index.vue","../../../../Downloads/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvaW5kZXgvaW5kZXgudnVl"],"sourcesContent":["\n\n\n\n\n","import MiniProgramPage from 'C:/Users/21826/Desktop/Wj/PartsInquiry/frontend/pages/index/index.vue'\nwx.createPage(MiniProgramPage)"],"names":["get","uni"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"index.js","sources":["pages/index/index.vue","../../../../Downloads/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvaW5kZXgvaW5kZXgudnVl"],"sourcesContent":["\n\n\n\n\n","import MiniProgramPage from 'C:/Users/21826/Desktop/Wj/PartsInquiry/frontend/pages/index/index.vue'\nwx.createPage(MiniProgramPage)"],"names":["get","uni"],"mappings":"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"} \ No newline at end of file diff --git a/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/order/create.js.map b/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/order/create.js.map index 781b73a..550ce9a 100644 --- a/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/order/create.js.map +++ b/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/order/create.js.map @@ -1 +1 @@ -{"version":3,"file":"create.js","sources":["pages/order/create.vue","../../../../Downloads/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvb3JkZXIvY3JlYXRlLnZ1ZQ"],"sourcesContent":["\n\n\n\n\n\n\n","import MiniProgramPage from 'C:/Users/21826/Desktop/Wj/PartsInquiry/frontend/pages/order/create.vue'\nwx.createPage(MiniProgramPage)"],"names":["INCOME_CATEGORIES","EXPENSE_CATEGORIES","uni","post"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"create.js","sources":["pages/order/create.vue","../../../../Downloads/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvb3JkZXIvY3JlYXRlLnZ1ZQ"],"sourcesContent":["\n\n\n\n\n\n\n","import MiniProgramPage from 'C:/Users/21826/Desktop/Wj/PartsInquiry/frontend/pages/order/create.vue'\nwx.createPage(MiniProgramPage)"],"names":["INCOME_CATEGORIES","EXPENSE_CATEGORIES","get","uni","post"],"mappings":"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"} \ No newline at end of file diff --git a/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/product/select.js.map b/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/product/select.js.map index e6841cf..f56c2e0 100644 --- a/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/product/select.js.map +++ b/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/product/select.js.map @@ -1 +1 @@ -{"version":3,"file":"select.js","sources":["pages/product/select.vue","../../../../Downloads/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvcHJvZHVjdC9zZWxlY3QudnVl"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/21826/Desktop/Wj/PartsInquiry/frontend/pages/product/select.vue'\nwx.createPage(MiniProgramPage)"],"names":["get","uni"],"mappings":";;;AAiBC,MAAK,YAAU;AAAA,EACd,OAAO;AAAE,WAAO,EAAE,IAAI,IAAI,UAAU,CAAA;EAAM;AAAA,EAC1C,SAAS;AAAE,SAAK;EAAU;AAAA,EAC1B,SAAS;AAAA,IACR,MAAM,SAAS;AACd,UAAI;AACH,cAAM,MAAM,MAAMA,gBAAI,iBAAiB,EAAE,IAAI,KAAK,IAAI,MAAM,GAAG,MAAM,GAAC,CAAG;AACzE,aAAK,WAAW,MAAM,QAAQ,2BAAK,IAAI,IAAI,IAAI,OAAQ,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAA;AAAA,eAC3E,GAAG;AAAEC,sBAAAA,MAAI,UAAU,EAAE,OAAO,QAAQ,MAAM,OAAO,CAAC;AAAA,MAAE;AAAA,IAC5D;AAAA,IACD,OAAO,GAAG;AACT,YAAM,SAAS,gBAAiB,EAAC,gBAAe,EAAG,SAAO,CAAC;AAC3D,UAAI,UAAU,OAAO,OAAO,OAAO,IAAI,OAAO;AAC7C,eAAO,IAAI,MAAM,KAAK,EAAE,WAAW,EAAE,IAAI,aAAa,EAAE,MAAM,UAAU,GAAG,WAAW,OAAO,EAAE,SAAS,CAAC,GAAG;AAAA,MAC7G;AACAA,oBAAAA,MAAI,aAAa;AAAA,IAClB;AAAA,EACD;AACD;;;;;;;;;;;;;;;;;;;AClCD,GAAG,WAAW,eAAe;"} \ No newline at end of file +{"version":3,"file":"select.js","sources":["pages/product/select.vue","../../../../Downloads/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvcHJvZHVjdC9zZWxlY3QudnVl"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/21826/Desktop/Wj/PartsInquiry/frontend/pages/product/select.vue'\nwx.createPage(MiniProgramPage)"],"names":["get","uni"],"mappings":";;;AAiBC,MAAK,YAAU;AAAA,EACd,OAAO;AAAE,WAAO,EAAE,IAAI,IAAI,UAAU,CAAA;EAAM;AAAA,EAC1C,SAAS;AAAE,SAAK;EAAU;AAAA,EAC1B,SAAS;AAAA,IACR,MAAM,SAAS;AACd,UAAI;AACH,cAAM,MAAM,MAAMA,gBAAI,iBAAiB,EAAE,IAAI,KAAK,IAAI,MAAM,GAAG,MAAM,GAAC,CAAG;AACzE,aAAK,WAAW,MAAM,QAAQ,2BAAK,IAAI,IAAI,IAAI,OAAQ,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAA;AAAA,eAC3E,GAAG;AAAEC,sBAAAA,MAAI,UAAU,EAAE,OAAO,QAAQ,MAAM,OAAO,CAAC;AAAA,MAAE;AAAA,IAC5D;AAAA,IACD,OAAO,GAAG;AACT,YAAM,SAAS,gBAAiB,EAAC,gBAAe,EAAG,SAAO,CAAC;AAC3D,UAAI,UAAU,OAAO,OAAO,OAAO,IAAI,OAAO;AAC7C,cAAM,YAAY,OAAQ,EAAE,eAAe,OAAO,EAAE,cAAe,EAAE,SAAS,CAAG;AACjF,eAAO,IAAI,MAAM,KAAK,EAAE,WAAW,EAAE,IAAI,aAAa,EAAE,MAAM,UAAU,GAAG,WAAW,WAAW,YAAY,MAAM;AAAA,MACpH;AACAA,oBAAAA,MAAI,aAAa;AAAA,IAClB;AAAA,EACD;AACD;;;;;;;;;;;;;;;;;;;ACnCD,GAAG,WAAW,eAAe;"} \ No newline at end of file diff --git a/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/supplier/form.js.map b/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/supplier/form.js.map new file mode 100644 index 0000000..d31141e --- /dev/null +++ b/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/supplier/form.js.map @@ -0,0 +1 @@ +{"version":3,"file":"form.js","sources":["pages/supplier/form.vue","../../../../Downloads/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvc3VwcGxpZXIvZm9ybS52dWU"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/21826/Desktop/Wj/PartsInquiry/frontend/pages/supplier/form.vue'\nwx.createPage(MiniProgramPage)"],"names":["uni","put","post"],"mappings":";;;AAiBA,MAAK,YAAU;AAAA,EACd,OAAO;AACN,WAAO;AAAA,MACN,IAAI;AAAA,MACJ,MAAM,EAAE,MAAK,IAAI,aAAY,IAAI,QAAO,IAAI,OAAM,IAAI,SAAQ,IAAI,WAAU,GAAG,WAAU,GAAG,QAAO,GAAG;AAAA,IACvG;AAAA,EACA;AAAA,EACD,OAAO,OAAO;AAAE,QAAI,SAAS,MAAM,IAAI;AAAE,WAAK,KAAK,OAAO,MAAM,EAAE;AAAA,IAAE;AAAA,EAAG;AAAA,EACvE,SAAS;AAAA,IACR,MAAM,OAAO;AACZ,UAAI,CAAC,KAAK,KAAK;AAAM,eAAOA,cAAG,MAAC,UAAU,EAAE,OAAM,YAAY,MAAK,QAAQ;AAC3E,UAAI;AACH,YAAI,KAAK;AAAI,gBAAMC,YAAAA,IAAI,kBAAkB,KAAK,EAAE,IAAI,KAAK,IAAI;AAAA;AACxD,gBAAMC,iBAAK,kBAAkB,KAAK,IAAI;AAC3CF,sBAAG,MAAC,UAAU,EAAE,OAAM,QAAQ,MAAK,WAAW;AAC9C,mBAAW,MAAMA,cAAAA,MAAI,aAAY,GAAI,GAAG;AAAA,MACzC,SAAQ,GAAG;AAAEA,sBAAG,MAAC,UAAU,EAAE,QAAO,uBAAG,YAAW,QAAQ,MAAK,OAAQ,CAAA;AAAA,MAAE;AAAA,IAC1E;AAAA,EACD;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnCA,GAAG,WAAW,eAAe;"} \ No newline at end of file diff --git a/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/supplier/select.js.map b/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/supplier/select.js.map index 6d230be..61a3ac3 100644 --- a/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/supplier/select.js.map +++ b/frontend/unpackage/dist/dev/.sourcemap/mp-weixin/pages/supplier/select.js.map @@ -1 +1 @@ -{"version":3,"file":"select.js","sources":["pages/supplier/select.vue","../../../../Downloads/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvc3VwcGxpZXIvc2VsZWN0LnZ1ZQ"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/21826/Desktop/Wj/PartsInquiry/frontend/pages/supplier/select.vue'\nwx.createPage(MiniProgramPage)"],"names":["get","uni"],"mappings":";;;AAiBC,MAAK,YAAU;AAAA,EACd,OAAO;AAAE,WAAO,EAAE,IAAI,IAAI,WAAW,CAAA;EAAM;AAAA,EAC3C,SAAS;AAAE,SAAK;EAAU;AAAA,EAC1B,SAAS;AAAA,IACR,MAAM,SAAS;AACd,UAAI;AACH,cAAM,MAAM,MAAMA,gBAAI,kBAAkB,EAAE,IAAI,KAAK,IAAI,MAAM,GAAG,MAAM,GAAC,CAAG;AAC1E,aAAK,YAAY,MAAM,QAAQ,2BAAK,IAAI,IAAI,IAAI,OAAQ,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAA;AAAA,eAC5E,GAAG;AAAEC,sBAAAA,MAAI,UAAU,EAAE,OAAO,QAAQ,MAAM,OAAO,CAAC;AAAA,MAAE;AAAA,IAC5D;AAAA,IACD,OAAO,GAAG;AACT,YAAM,SAAS,gBAAiB,EAAC,gBAAe,EAAG,SAAO,CAAC;AAC3D,UAAI,UAAU,OAAO,KAAK;AACzB,eAAO,IAAI,MAAM,aAAa,EAAE;AAChC,eAAO,IAAI,eAAe,EAAE;AAAA,MAC7B;AACAA,oBAAAA,MAAI,aAAa;AAAA,IAClB;AAAA,EACD;AACD;;;;;;;;;;;;;;;;;;ACnCD,GAAG,WAAW,eAAe;"} \ No newline at end of file +{"version":3,"file":"select.js","sources":["pages/supplier/select.vue","../../../../Downloads/HBuilderX.4.76.2025082103/HBuilderX/plugins/uniapp-cli-vite/uniPage:/cGFnZXMvc3VwcGxpZXIvc2VsZWN0LnZ1ZQ"],"sourcesContent":["\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import MiniProgramPage from 'C:/Users/21826/Desktop/Wj/PartsInquiry/frontend/pages/supplier/select.vue'\nwx.createPage(MiniProgramPage)"],"names":["get","uni"],"mappings":";;;AAwBC,MAAK,YAAU;AAAA,EACZ,OAAO;AAAE,WAAO,EAAE,IAAI,IAAI,UAAU,OAAO,WAAW,CAAA;EAAM;AAAA,EAC9D,SAAS;AAAE,SAAK;EAAU;AAAA,EAC1B,SAAS;AAAA,IACR,iBAAiB;AAAE,WAAK,WAAW,CAAC,KAAK;AAAU,WAAK;IAAU;AAAA,IAClE,MAAM,SAAS;AACd,UAAI;AACH,cAAM,MAAM,MAAMA,YAAG,IAAC,kBAAkB,EAAE,IAAI,KAAK,IAAI,UAAU,KAAK,UAAU,MAAM,GAAG,MAAM,IAAI;AACnG,aAAK,YAAY,MAAM,QAAQ,2BAAK,IAAI,IAAI,IAAI,OAAQ,MAAM,QAAQ,GAAG,IAAI,MAAM,CAAA;AAAA,eAC5E,GAAG;AAAEC,sBAAAA,MAAI,UAAU,EAAE,OAAO,QAAQ,MAAM,OAAO,CAAC;AAAA,MAAE;AAAA,IAC5D;AAAA,IACD,iBAAiB;AAAEA,oBAAAA,MAAI,WAAW,EAAE,KAAK,uBAAqB,CAAG;AAAA,IAAG;AAAA,IACpE,OAAO,GAAG;AACT,YAAM,SAAS,gBAAiB,EAAC,gBAAe,EAAG,SAAO,CAAC;AAC3D,UAAI,UAAU,OAAO,KAAK;AACzB,eAAO,IAAI,MAAM,aAAa,EAAE;AAChC,eAAO,IAAI,eAAe,EAAE;AAAA,MAC7B;AACAA,oBAAAA,MAAI,aAAa;AAAA,IAClB;AAAA,EACD;AACD;;;;;;;;;;;;;;;;;;;;;;;;;AC5CD,GAAG,WAAW,eAAe;"} \ No newline at end of file diff --git a/frontend/unpackage/dist/dev/mp-weixin/app.js b/frontend/unpackage/dist/dev/mp-weixin/app.js index 8170840..a48928a 100644 --- a/frontend/unpackage/dist/dev/mp-weixin/app.js +++ b/frontend/unpackage/dist/dev/mp-weixin/app.js @@ -12,7 +12,9 @@ if (!Math) { "./pages/product/settings.js"; "./pages/customer/select.js"; "./pages/customer/form.js"; + "./pages/customer/detail.js"; "./pages/supplier/select.js"; + "./pages/supplier/form.js"; "./pages/account/select.js"; "./pages/detail/index.js"; } diff --git a/frontend/unpackage/dist/dev/mp-weixin/app.json b/frontend/unpackage/dist/dev/mp-weixin/app.json index 3e573a9..d40b9ad 100644 --- a/frontend/unpackage/dist/dev/mp-weixin/app.json +++ b/frontend/unpackage/dist/dev/mp-weixin/app.json @@ -10,7 +10,9 @@ "pages/product/settings", "pages/customer/select", "pages/customer/form", + "pages/customer/detail", "pages/supplier/select", + "pages/supplier/form", "pages/account/select", "pages/detail/index" ], diff --git a/frontend/unpackage/dist/dev/mp-weixin/common/http.js b/frontend/unpackage/dist/dev/mp-weixin/common/http.js index d3f9685..42dfc64 100644 --- a/frontend/unpackage/dist/dev/mp-weixin/common/http.js +++ b/frontend/unpackage/dist/dev/mp-weixin/common/http.js @@ -15,9 +15,11 @@ function requestWithFallback(options, candidates, idx, resolve, reject) { const { statusCode, data } = res; if (statusCode >= 200 && statusCode < 300) return resolve(data); + const msg = data && (data.message || data.error || data.msg) || "HTTP " + statusCode; + common_vendor.index.showToast({ title: msg, icon: "none" }); if (idx + 1 < candidates.length) return requestWithFallback(options, candidates, idx + 1, resolve, reject); - reject(new Error("HTTP " + statusCode)); + reject(new Error(msg)); }, fail: (err) => { if (idx + 1 < candidates.length) return requestWithFallback(options, candidates, idx + 1, resolve, reject); diff --git a/frontend/unpackage/dist/dev/mp-weixin/pages/customer/detail.js b/frontend/unpackage/dist/dev/mp-weixin/pages/customer/detail.js new file mode 100644 index 0000000..985b488 --- /dev/null +++ b/frontend/unpackage/dist/dev/mp-weixin/pages/customer/detail.js @@ -0,0 +1,156 @@ +"use strict"; +const common_vendor = require("../../common/vendor.js"); +const common_http = require("../../common/http.js"); +const _sfc_main = { + data() { + return { id: null, d: {}, editing: false, form: { name: "", contactName: "", mobile: "", phone: "", address: "", level: "", priceLevel: "零售价", arOpening: 0, remark: "" }, priceLevels: ["零售价", "批发价", "大单报价"], priceLabels: ["零售价", "批发价", "大单报价"], priceIdx: 0 }; + }, + onLoad(q) { + if (q && q.id) { + this.id = Number(q.id); + this.fetch(); + } + }, + methods: { + async fetch() { + try { + this.d = await common_http.get(`/api/customers/${this.id}`); + this.form = { + name: this.d.name || "", + contactName: this.d.contactName || "", + mobile: this.d.mobile || "", + phone: this.d.phone || "", + address: this.d.address || "", + level: this.d.level || "", + priceLevel: this.d.priceLevel || "retail", + arOpening: Number(this.d.arOpening || 0), + remark: this.d.remark || "" + }; + const idx = this.priceLevels.indexOf(this.form.priceLevel); + this.priceIdx = idx >= 0 ? idx : 0; + } catch (e) { + common_vendor.index.showToast({ title: "加载失败", icon: "none" }); + } + }, + toggleEdit() { + this.editing = !this.editing; + }, + onPriceChange(e) { + this.priceIdx = Number(e.detail.value); + this.form.priceLevel = this.priceLevels[this.priceIdx]; + }, + choose() { + const pages = getCurrentPages(); + let targetIdx = -1; + for (let i = pages.length - 2; i >= 0; i--) { + const vm = pages[i] && pages[i].$vm ? pages[i].$vm : null; + if (vm && vm.order) { + vm.order.customerId = this.d.id; + vm.customerName = this.d.name; + targetIdx = i; + break; + } + } + if (targetIdx >= 0) { + const delta = pages.length - 1 - targetIdx; + common_vendor.index.navigateBack({ delta }); + } else { + common_vendor.index.navigateBack(); + } + }, + async save() { + if (!this.form.name) + return common_vendor.index.showToast({ title: "请填写客户名称", icon: "none" }); + try { + await common_http.put(`/api/customers/${this.id}`, this.form); + common_vendor.index.showToast({ title: "已保存", icon: "success" }); + this.editing = false; + await this.fetch(); + } catch (e) { + common_vendor.index.showToast({ title: (e == null ? void 0 : e.message) || "保存失败", icon: "none" }); + } + } + } +}; +function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + return common_vendor.e({ + a: !$data.editing + }, !$data.editing ? { + b: common_vendor.t($data.d.name) + } : { + c: $data.form.name, + d: common_vendor.o(($event) => $data.form.name = $event.detail.value) + }, { + e: !$data.editing + }, !$data.editing ? { + f: common_vendor.t($data.d.contactName || "—") + } : { + g: $data.form.contactName, + h: common_vendor.o(($event) => $data.form.contactName = $event.detail.value) + }, { + i: !$data.editing + }, !$data.editing ? { + j: common_vendor.t($data.d.mobile || "—") + } : { + k: $data.form.mobile, + l: common_vendor.o(($event) => $data.form.mobile = $event.detail.value) + }, { + m: !$data.editing + }, !$data.editing ? { + n: common_vendor.t($data.d.phone || "—") + } : { + o: $data.form.phone, + p: common_vendor.o(($event) => $data.form.phone = $event.detail.value) + }, { + q: !$data.editing + }, !$data.editing ? { + r: common_vendor.t($data.d.address || "—") + } : { + s: $data.form.address, + t: common_vendor.o(($event) => $data.form.address = $event.detail.value) + }, { + v: !$data.editing + }, !$data.editing ? { + w: common_vendor.t($data.d.level || "—") + } : { + x: $data.form.level, + y: common_vendor.o(($event) => $data.form.level = $event.detail.value) + }, { + z: !$data.editing + }, !$data.editing ? { + A: common_vendor.t($data.d.priceLevel) + } : { + B: common_vendor.t($data.priceLabels[$data.priceIdx]), + C: $data.priceLabels, + D: $data.priceIdx, + E: common_vendor.o((...args) => $options.onPriceChange && $options.onPriceChange(...args)) + }, { + F: !$data.editing + }, !$data.editing ? { + G: common_vendor.t(Number($data.d.arOpening || 0).toFixed(2)) + } : { + H: $data.form.arOpening, + I: common_vendor.o(common_vendor.m(($event) => $data.form.arOpening = $event.detail.value, { + number: true + })) + }, { + J: common_vendor.t(Number($data.d.receivable || 0).toFixed(2)), + K: !$data.editing + }, !$data.editing ? { + L: common_vendor.t($data.d.remark || "—") + } : { + M: $data.form.remark, + N: common_vendor.o(($event) => $data.form.remark = $event.detail.value) + }, { + O: common_vendor.t($data.editing ? "取消" : "编辑"), + P: common_vendor.o((...args) => $options.toggleEdit && $options.toggleEdit(...args)), + Q: $data.editing + }, $data.editing ? { + R: common_vendor.o((...args) => $options.save && $options.save(...args)) + } : { + S: common_vendor.o((...args) => $options.choose && $options.choose(...args)) + }); +} +const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]); +wx.createPage(MiniProgramPage); +//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/customer/detail.js.map diff --git a/frontend/unpackage/dist/dev/mp-weixin/pages/customer/detail.json b/frontend/unpackage/dist/dev/mp-weixin/pages/customer/detail.json new file mode 100644 index 0000000..a5c0fa5 --- /dev/null +++ b/frontend/unpackage/dist/dev/mp-weixin/pages/customer/detail.json @@ -0,0 +1,4 @@ +{ + "navigationBarTitleText": "客户详情", + "usingComponents": {} +} \ No newline at end of file diff --git a/frontend/unpackage/dist/dev/mp-weixin/pages/customer/detail.wxml b/frontend/unpackage/dist/dev/mp-weixin/pages/customer/detail.wxml new file mode 100644 index 0000000..bd6b565 --- /dev/null +++ b/frontend/unpackage/dist/dev/mp-weixin/pages/customer/detail.wxml @@ -0,0 +1 @@ +名称{{b}}联系人{{f}}手机{{j}}电话{{n}}地址{{r}}等级{{w}}售价档位{{A}}{{B}}初始应收¥ {{G}}当前应收¥ {{J}}备注{{L}} \ No newline at end of file diff --git a/frontend/unpackage/dist/dev/mp-weixin/pages/customer/detail.wxss b/frontend/unpackage/dist/dev/mp-weixin/pages/customer/detail.wxss new file mode 100644 index 0000000..7301728 --- /dev/null +++ b/frontend/unpackage/dist/dev/mp-weixin/pages/customer/detail.wxss @@ -0,0 +1,23 @@ + +.page { padding-bottom: 140rpx; +} +.card { background:#fff; margin: 16rpx; padding: 12rpx 16rpx; border-radius: 16rpx; +} +.row { display:flex; justify-content: space-between; padding: 18rpx 8rpx; border-bottom: 1rpx solid #f3f3f3; +} +.row:last-child { border-bottom: 0; +} +.label { color:#666; +} +.value { color:#333; max-width: 60%; text-align: right; +} +.value-input { color:#333; text-align: right; flex: 1; +} +.emp { color:#107e9b; font-weight: 700; +} +.bottom { position: fixed; left:0; right:0; bottom:0; background:#fff; padding: 16rpx 24rpx calc(env(safe-area-inset-bottom) + 16rpx); box-shadow: 0 -4rpx 12rpx rgba(0,0,0,0.06); display:flex; gap: 12rpx; +} +.primary { flex:1; background: linear-gradient(135deg, #A0E4FF 0%, #17A2C4 100%); color:#fff; border-radius: 999rpx; padding: 20rpx 0; +} +.ghost { flex:1; background:#fff; color:#107e9b; border: 2rpx solid #A0E4FF; border-radius: 999rpx; padding: 18rpx 0; +} diff --git a/frontend/unpackage/dist/dev/mp-weixin/pages/customer/form.js b/frontend/unpackage/dist/dev/mp-weixin/pages/customer/form.js index 076a8f0..519a379 100644 --- a/frontend/unpackage/dist/dev/mp-weixin/pages/customer/form.js +++ b/frontend/unpackage/dist/dev/mp-weixin/pages/customer/form.js @@ -6,7 +6,8 @@ const _sfc_main = { return { id: null, form: { name: "", level: "", priceLevel: "retail", contactName: "", mobile: "", phone: "", address: "", arOpening: 0, remark: "" }, - priceLevels: ["retail", "distribution", "wholesale", "big_client"], + priceLevels: ["零售价", "批发价", "大单报价"], + priceLabels: ["零售价", "批发价", "大单报价"], priceIdx: 0 }; }, @@ -42,8 +43,8 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { b: common_vendor.o(($event) => $data.form.name = $event.detail.value), c: $data.form.level, d: common_vendor.o(($event) => $data.form.level = $event.detail.value), - e: common_vendor.t($data.priceLevels[$data.priceIdx]), - f: $data.priceLevels, + e: common_vendor.t($data.priceLabels[$data.priceIdx]), + f: $data.priceLabels, g: $data.priceIdx, h: common_vendor.o((...args) => $options.onPriceChange && $options.onPriceChange(...args)), i: $data.form.contactName, diff --git a/frontend/unpackage/dist/dev/mp-weixin/pages/customer/select.js b/frontend/unpackage/dist/dev/mp-weixin/pages/customer/select.js index a016c09..b2aa50a 100644 --- a/frontend/unpackage/dist/dev/mp-weixin/pages/customer/select.js +++ b/frontend/unpackage/dist/dev/mp-weixin/pages/customer/select.js @@ -8,6 +8,9 @@ const _sfc_main = { onLoad() { this.search(); }, + onShow() { + this.search(); + }, methods: { toggleDebtOnly() { this.debtOnly = !this.debtOnly; @@ -25,12 +28,17 @@ const _sfc_main = { common_vendor.index.navigateTo({ url: "/pages/customer/form" }); }, select(c) { - const opener = getCurrentPages()[getCurrentPages().length - 2]; - if (opener && opener.$vm) { - opener.$vm.order.customerId = c.id; - opener.$vm.customerName = c.name; + const pages = getCurrentPages(); + const prev = pages.length >= 2 ? pages[pages.length - 2] : null; + const vm = prev && prev.$vm ? prev.$vm : null; + if (vm && vm.order) { + vm.order.customerId = c.id; + vm.customerName = c.name; } common_vendor.index.navigateBack(); + }, + openDetail(c) { + common_vendor.index.navigateTo({ url: "/pages/customer/detail?id=" + c.id }); } } }; @@ -51,7 +59,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { d: common_vendor.t(Number(c.receivable).toFixed(2)) } : {}, { e: c.id, - f: common_vendor.o(($event) => $options.select(c), c.id) + f: common_vendor.o(($event) => $options.openDetail(c), c.id) }); }), h: common_vendor.o((...args) => $options.createCustomer && $options.createCustomer(...args)) diff --git a/frontend/unpackage/dist/dev/mp-weixin/pages/index/index.js b/frontend/unpackage/dist/dev/mp-weixin/pages/index/index.js index ad1a225..e848385 100644 --- a/frontend/unpackage/dist/dev/mp-weixin/pages/index/index.js +++ b/frontend/unpackage/dist/dev/mp-weixin/pages/index/index.js @@ -67,6 +67,10 @@ const _sfc_main = { common_vendor.index.navigateTo({ url: "/pages/customer/select" }); return; } + if (item.key === "supplier") { + common_vendor.index.navigateTo({ url: "/pages/supplier/select" }); + return; + } common_vendor.index.showToast({ title: item.title + "(开发中)", icon: "none" }); }, goProduct() { @@ -79,7 +83,7 @@ const _sfc_main = { goDetail() { this.activeTab = "detail"; try { - common_vendor.index.__f__("log", "at pages/index/index.vue:170", "[index] goDetail → /pages/detail/index"); + common_vendor.index.__f__("log", "at pages/index/index.vue:174", "[index] goDetail → /pages/detail/index"); } catch (e) { } common_vendor.index.navigateTo({ url: "/pages/detail/index" }); diff --git a/frontend/unpackage/dist/dev/mp-weixin/pages/order/create.js b/frontend/unpackage/dist/dev/mp-weixin/pages/order/create.js index 778a57f..aef56d5 100644 --- a/frontend/unpackage/dist/dev/mp-weixin/pages/order/create.js +++ b/frontend/unpackage/dist/dev/mp-weixin/pages/order/create.js @@ -22,6 +22,9 @@ const _sfc_main = { remark: "" }, customerName: "", + customerPriceLevel: "零售价", + _lastCustomerId: null, + _priceCache: {}, supplierName: "", items: [], activeCategory: "sale_income", @@ -64,7 +67,70 @@ const _sfc_main = { return Number(p.cash || 0) + Number(p.bank || 0) + Number(p.wechat || 0); } }, + onShow() { + if (this.biz === "sale") { + if (this.order.customerId && this.order.customerId !== this._lastCustomerId) { + this.loadCustomerLevel(this.order.customerId).then(() => { + this._lastCustomerId = this.order.customerId; + for (const it of this.items) { + if (it && (it._autoPrice || !it.unitPrice)) + this.autoPriceItem(it); + } + }); + } + for (const it of this.items) { + if (it && !it.unitPrice) + this.autoPriceItem(it); + } + } + }, methods: { + async loadCustomerLevel(customerId) { + try { + const d = await common_http.get(`/api/customers/${customerId}`); + this.customerPriceLevel = d && d.priceLevel ? d.priceLevel : "零售价"; + } catch (e) { + this.customerPriceLevel = "零售价"; + } + }, + priceFieldForLevel() { + const lvl = this.customerPriceLevel || "零售价"; + if (lvl === "批发价") + return "wholesalePrice"; + if (lvl === "大单报价") + return "bigClientPrice"; + return "retailPrice"; + }, + async autoPriceItem(it) { + if (this.biz !== "sale") + return; + if (!it || !it.productId) + return; + const pid = it.productId; + let detail = this._priceCache[pid]; + if (!detail) { + try { + detail = await common_http.get(`/api/products/${pid}`); + this._priceCache[pid] = detail; + } catch (e) { + return; + } + } + const field = this.priceFieldForLevel(); + let price = Number(detail && detail[field] != null ? detail[field] : 0); + if (!price && field !== "retailPrice") { + price = Number(detail && detail.retailPrice != null ? detail.retailPrice : 0); + } + it.unitPrice = price; + it._autoPrice = true; + this.recalc(); + }, + onPriceInput(it) { + if (it) { + it._autoPrice = false; + this.recalc(); + } + }, switchBiz(type) { this.biz = type; }, @@ -98,6 +164,17 @@ const _sfc_main = { const isSaleOrPurchase = this.biz === "sale" || this.biz === "purchase"; const isCollectOrPay = this.biz === "sale" && this.saleType === "collect" || this.biz === "purchase" && this.purchaseType === "pay"; const saleTypeValue = this.biz === "sale" ? "sale." + this.saleType : "purchase." + this.purchaseType; + if (isSaleOrPurchase && !isCollectOrPay) { + if (!this.items.length) { + common_vendor.index.showToast({ title: "请先选择商品", icon: "none" }); + return; + } + const invalid = this.items.find((it) => !it.productId || Number(it.quantity || 0) <= 0); + if (invalid) { + common_vendor.index.showToast({ title: "数量需大于0", icon: "none" }); + return; + } + } const payload = isSaleOrPurchase ? isCollectOrPay ? [ { method: "cash", amount: Number(this.payments.cash || 0) }, { method: "bank", amount: Number(this.payments.bank || 0) }, @@ -244,7 +321,7 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { c: it.quantity, d: common_vendor.o([common_vendor.m(($event) => it.unitPrice = $event.detail.value, { number: true - }), ($event) => $options.recalc()], idx), + }), ($event) => $options.onPriceInput(it)], idx), e: it.unitPrice, f: common_vendor.t((Number(it.quantity) * Number(it.unitPrice)).toFixed(2)), g: idx diff --git a/frontend/unpackage/dist/dev/mp-weixin/pages/product/select.js b/frontend/unpackage/dist/dev/mp-weixin/pages/product/select.js index 36fd16f..1491b31 100644 --- a/frontend/unpackage/dist/dev/mp-weixin/pages/product/select.js +++ b/frontend/unpackage/dist/dev/mp-weixin/pages/product/select.js @@ -20,7 +20,8 @@ const _sfc_main = { select(p) { const opener = getCurrentPages()[getCurrentPages().length - 2]; if (opener && opener.$vm && opener.$vm.items) { - opener.$vm.items.push({ productId: p.id, productName: p.name, quantity: 1, unitPrice: Number(p.price || 0) }); + const initPrice = Number(p.retailPrice != null ? p.retailPrice : p.price || 0); + opener.$vm.items.push({ productId: p.id, productName: p.name, quantity: 1, unitPrice: initPrice, _autoPrice: true }); } common_vendor.index.navigateBack(); } diff --git a/frontend/unpackage/dist/dev/mp-weixin/pages/supplier/form.js b/frontend/unpackage/dist/dev/mp-weixin/pages/supplier/form.js new file mode 100644 index 0000000..361a842 --- /dev/null +++ b/frontend/unpackage/dist/dev/mp-weixin/pages/supplier/form.js @@ -0,0 +1,60 @@ +"use strict"; +const common_vendor = require("../../common/vendor.js"); +const common_http = require("../../common/http.js"); +const _sfc_main = { + data() { + return { + id: null, + form: { name: "", contactName: "", mobile: "", phone: "", address: "", apOpening: 0, apPayable: 0, remark: "" } + }; + }, + onLoad(query) { + if (query && query.id) { + this.id = Number(query.id); + } + }, + methods: { + async save() { + if (!this.form.name) + return common_vendor.index.showToast({ title: "请填写供应商名称", icon: "none" }); + try { + if (this.id) + await common_http.put(`/api/suppliers/${this.id}`, this.form); + else + await common_http.post("/api/suppliers", this.form); + common_vendor.index.showToast({ title: "保存成功", icon: "success" }); + setTimeout(() => common_vendor.index.navigateBack(), 500); + } catch (e) { + common_vendor.index.showToast({ title: (e == null ? void 0 : e.message) || "保存失败", icon: "none" }); + } + } + } +}; +function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { + return { + a: $data.form.name, + b: common_vendor.o(($event) => $data.form.name = $event.detail.value), + c: $data.form.contactName, + d: common_vendor.o(($event) => $data.form.contactName = $event.detail.value), + e: $data.form.mobile, + f: common_vendor.o(($event) => $data.form.mobile = $event.detail.value), + g: $data.form.phone, + h: common_vendor.o(($event) => $data.form.phone = $event.detail.value), + i: $data.form.address, + j: common_vendor.o(($event) => $data.form.address = $event.detail.value), + k: $data.form.apOpening, + l: common_vendor.o(common_vendor.m(($event) => $data.form.apOpening = $event.detail.value, { + number: true + })), + m: $data.form.apPayable, + n: common_vendor.o(common_vendor.m(($event) => $data.form.apPayable = $event.detail.value, { + number: true + })), + o: $data.form.remark, + p: common_vendor.o(($event) => $data.form.remark = $event.detail.value), + q: common_vendor.o((...args) => $options.save && $options.save(...args)) + }; +} +const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]); +wx.createPage(MiniProgramPage); +//# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/supplier/form.js.map diff --git a/frontend/unpackage/dist/dev/mp-weixin/pages/supplier/form.json b/frontend/unpackage/dist/dev/mp-weixin/pages/supplier/form.json new file mode 100644 index 0000000..10286d4 --- /dev/null +++ b/frontend/unpackage/dist/dev/mp-weixin/pages/supplier/form.json @@ -0,0 +1,4 @@ +{ + "navigationBarTitleText": "新增/编辑供应商", + "usingComponents": {} +} \ No newline at end of file diff --git a/frontend/unpackage/dist/dev/mp-weixin/pages/supplier/form.wxml b/frontend/unpackage/dist/dev/mp-weixin/pages/supplier/form.wxml new file mode 100644 index 0000000..31ea7a9 --- /dev/null +++ b/frontend/unpackage/dist/dev/mp-weixin/pages/supplier/form.wxml @@ -0,0 +1 @@ +供应商名称联系人手机电话经营地址初始应付款应付款 \ No newline at end of file diff --git a/frontend/unpackage/dist/dev/mp-weixin/pages/supplier/form.wxss b/frontend/unpackage/dist/dev/mp-weixin/pages/supplier/form.wxss new file mode 100644 index 0000000..9c45cda --- /dev/null +++ b/frontend/unpackage/dist/dev/mp-weixin/pages/supplier/form.wxss @@ -0,0 +1,15 @@ + +.page { padding-bottom: 140rpx; +} +.field { display:flex; justify-content: space-between; padding: 22rpx 24rpx; background:#fff; border-bottom:1rpx solid #eee; +} +.label { color:#666; +} +.value { color:#333; text-align: right; flex: 1; +} +.textarea { padding: 16rpx 24rpx; background:#fff; margin-top: 12rpx; +} +.bottom { position: fixed; left:0; right:0; bottom:0; background:#fff; padding: 16rpx 24rpx calc(env(safe-area-inset-bottom) + 16rpx); box-shadow: 0 -4rpx 12rpx rgba(0,0,0,0.06); +} +.primary { width: 100%; background: linear-gradient(135deg, #A0E4FF 0%, #17A2C4 100%); color:#fff; border-radius: 999rpx; padding: 20rpx 0; +} diff --git a/frontend/unpackage/dist/dev/mp-weixin/pages/supplier/select.js b/frontend/unpackage/dist/dev/mp-weixin/pages/supplier/select.js index 82e0744..0e7d988 100644 --- a/frontend/unpackage/dist/dev/mp-weixin/pages/supplier/select.js +++ b/frontend/unpackage/dist/dev/mp-weixin/pages/supplier/select.js @@ -3,20 +3,27 @@ const common_vendor = require("../../common/vendor.js"); const common_http = require("../../common/http.js"); const _sfc_main = { data() { - return { kw: "", suppliers: [] }; + return { kw: "", debtOnly: false, suppliers: [] }; }, onLoad() { this.search(); }, methods: { + toggleDebtOnly() { + this.debtOnly = !this.debtOnly; + this.search(); + }, async search() { try { - const res = await common_http.get("/api/suppliers", { kw: this.kw, page: 1, size: 50 }); + const res = await common_http.get("/api/suppliers", { kw: this.kw, debtOnly: this.debtOnly, page: 1, size: 50 }); this.suppliers = Array.isArray(res == null ? void 0 : res.list) ? res.list : Array.isArray(res) ? res : []; } catch (e) { common_vendor.index.showToast({ title: "加载失败", icon: "none" }); } }, + createSupplier() { + common_vendor.index.navigateTo({ url: "/pages/supplier/form" }); + }, select(s) { const opener = getCurrentPages()[getCurrentPages().length - 2]; if (opener && opener.$vm) { @@ -33,14 +40,21 @@ function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) { b: $data.kw, c: common_vendor.o(($event) => $data.kw = $event.detail.value), d: common_vendor.o((...args) => $options.search && $options.search(...args)), - e: common_vendor.f($data.suppliers, (s, k0, i0) => { - return { + e: $data.debtOnly ? "primary" : "default", + f: common_vendor.o((...args) => $options.toggleDebtOnly && $options.toggleDebtOnly(...args)), + g: common_vendor.f($data.suppliers, (s, k0, i0) => { + return common_vendor.e({ a: common_vendor.t(s.name), b: common_vendor.t(s.mobile || "—"), - c: s.id, - d: common_vendor.o(($event) => $options.select(s), s.id) - }; - }) + c: typeof s.apPayable === "number" + }, typeof s.apPayable === "number" ? { + d: common_vendor.t(Number(s.apPayable).toFixed(2)) + } : {}, { + e: s.id, + f: common_vendor.o(($event) => $options.select(s), s.id) + }); + }), + h: common_vendor.o((...args) => $options.createSupplier && $options.createSupplier(...args)) }; } const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render]]); diff --git a/frontend/unpackage/dist/dev/mp-weixin/pages/supplier/select.wxml b/frontend/unpackage/dist/dev/mp-weixin/pages/supplier/select.wxml index 84648f8..cb5eeaa 100644 --- a/frontend/unpackage/dist/dev/mp-weixin/pages/supplier/select.wxml +++ b/frontend/unpackage/dist/dev/mp-weixin/pages/supplier/select.wxml @@ -1 +1 @@ -{{s.a}}{{s.b}} \ No newline at end of file +{{s.a}}{{s.b}} |应付:¥ {{s.d}} \ No newline at end of file diff --git a/沟通.md b/沟通.md index 1b61f0f..8de017e 100644 --- a/沟通.md +++ b/沟通.md @@ -21,11 +21,20 @@ 3.开单(未全完成) 9.18王德鹏2: -前端:1.客户功能 +前端:1.客户功能√ 后端:1.客户功能√(未全完成) 数据库:1.客户表更改 +9.18王德鹏3: +前端:1.供应商功能√ +后端:1.客户功能√ + 2.供应商功能√ + 3.开单功能(销售进货)√ -※※我前端都只做了小程序的,就没看过安卓端,还需要做双端适配※※ \ No newline at end of file + + +前端问题: +1.都只做了小程序的,就没看过安卓端,还需要做双端适配 +2.图标 \ No newline at end of file