shizhongqi 10 månader sedan
förälder
incheckning
611f998973

+ 82 - 0
front_end/前端项目文档/子组件如何改变父组件上的数据.md

@@ -0,0 +1,82 @@
+请问如何能实现在  app-ght/admin/home/components/OrderItem.vue 中改变了 item 中变量的值能传导到 app-ght/admin/home/order.vue 的 list.data 上
+
+## AI 给的解决方案
+
+### 核心结论
+- 不要在子组件 `OrderItem.vue` 里直接改 `props`(如 `item.sendStatus = 3`)。这会被父级重渲染覆盖,且在不同端(小程序/App)可能不触发视图更新。
+- 正确做法:子组件“上抛事件”,由父组件 `order.vue` 去改自己维护的源数据 `list.data`(并用 `this.$set` 确保响应式)。
+- 备选做法:使用 `.sync`,在父组件用 `:item.sync="list.data[index]"`,子组件发 `this.$emit('update:item', newItem)`。注意必须用 `list.data[index]`,不能用 `item`。
+
+---
+
+### 推荐做法:事件上抛 + 父组件更新
+1) 子组件 `OrderItem.vue`:把直接改 `item` 的地方改成发事件
+```javascript
+// 例如:取消跑腿
+// 原:item.sendStatus = 3;
+this.$emit('update-field', { id: item.id, key: 'sendStatus', value: 3 });
+
+// 例如:创建跑腿订单成功
+// 原:item.sendStatus = 0;
+this.$emit('update-field', { id: item.id, key: 'sendStatus', value: 0 });
+```
+
+2) 父组件 `order.vue`:模板监听事件,并在 methods 里更新 `list.data`
+```vue
+<OrderItem
+  :ref="`orderRef${item.id}`"
+  :item="item"
+  :isScanEnv="isScanEnv"
+  @printOrder="printOrder"
+  @directFh="directFh"
+  @fillNoFh="fillNoFh"
+  @shareOrder="shareOrder"
+  @update-field="onUpdateItemField"
+/>
+```
+
+```javascript
+methods: {
+  onUpdateItemField({ id, key, value }) {
+    const index = this.list.data.findIndex(it => it.id === id);
+    if (index !== -1) {
+      // 确保响应式(数组/对象的嵌套字段)
+      this.$set(this.list.data[index], key, value);
+      // 若需要强制替换对象触发更深层渲染,可用:
+      // this.$set(this.list.data, index, { ...this.list.data[index], [key]: value });
+    }
+  }
+}
+```
+
+这样,`OrderItem.vue` 中对 `item` 的“意图”通过事件通知给父组件,父组件去改 `list.data` 的源数据,UI 会稳定刷新,且没有直接改 `props` 的警告。
+
+---
+
+### 备选做法:.sync 简化双向(谨慎用)
+父组件在 `v-for` 中绑定:
+```vue
+<view v-for="(item, index) in list.data" :key="item.id">
+  <OrderItem
+    :item.sync="list.data[index]"
+    :isScanEnv="isScanEnv"
+    ...
+  />
+</view>
+```
+
+子组件 `OrderItem.vue` 在需要改值时:
+```javascript
+this.$emit('update:item', { ...item, sendStatus: 3 });
+// 或 this.$emit('update:item', Object.assign({}, item, { sendStatus: 0 }));
+```
+
+要点:
+- 必须写成 `:item.sync="list.data[index]"`,不要写成 `:item.sync="item"`,否则赋值目标不是父级的响应式源数据。
+- `.sync` 会整体替换该条目对象,若对象很大或修改频繁,建议用“事件上抛 + 精准字段更新”的方式。
+
+---
+
+### 小提示
+- 在数组项或对象新增字段时,一定用 `this.$set` 保证响应式。
+- 子组件里直接改 `props` 虽然有时“能动”,但会有 Vue 警告且在部分端不刷新,建议统一改为上述两种正规方式。

+ 6 - 1
server/有用的信息.md

@@ -10,4 +10,9 @@
 - **管理后台**
 	网址:http://pt.hzghd.com/
 	15280215347
-	a.1234
+	a.1234
+
+- 微信开放平台
+	hzghdcom@126.com  
+	xhb.2020  
+	[https://open.weixin.qq.com](https://open.weixin.qq.com/)微信开放平台

+ 1 - 0
任务小笔记/25-0828:go webSocket 服务.md

@@ -52,6 +52,7 @@ server_name 修改为线上域名
 上传线上域名的证书,并修改以上的:
 ssl_certificate     /usr/local/nginx/cert/webSocket/xxx.pem;
 ssl_certificate_key /usr/local/nginx/cert/webSocket/xxx.key;
+
 ### 编译
 1. 拉取代码,执行:`go build main.go`
 	- 要安装 go , 不想安装,那直接在测试服务编译,然后下载下来。

+ 27 - 0
任务小笔记/25-0909:采购设置.md

@@ -0,0 +1,27 @@
+零售采购库存 ==是否== 入库
+1.  xhShopExt 新建字段 cgIn( 0-不入库(default), 1-入库)
+	- cgIn = 1 时,不允许商家直接确认送达,要客户自己确认
+	- 是否要在 xhCg 采购单上记录历史值,同时也方便取值(省得要查询 xhShopExt)
+2. xhGhs(xhGhsCustom)表中 live=0,则要入库存(覆盖优先级,不管 cgIn 等于多少)
+3. 默认是不入库的,就是你现在已经做好的(现根据以上要求进行修改)
+
+
+计算成本:
+1. xhShopExt 增加字段 cgIsCost(0-不算成本,1-算成本(默认) )
+	- 传递给下面 xhCg 的 isCost
+2. xhCg 也增加字段 isCost
+3. 如果 xhGhs表 live=0虚拟供货商,则必算成本 ---- 最高优先级
+	- 如果live=1真实供货商,则根据门店 xhShopExt 表的 cgIsCost 进行计算成本逻辑
+
+
+数据统计相关
+
+
+```
+ALTER TABLE xhShopExt ADD `cgIn` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '零售采购入库:0-不入库(默认),1-入库' AFTER `gatherRepeat`;
+ALTER TABLE xhCg ADD `cgIn` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '零售采购入库历史值(生成采购单时写入,然后就不会变了):0-不入库(默认),1-入库' AFTER `hasSavePrice`;
+
+
+ALTER TABLE xhShopExt ADD `cgIsCost` TINYINT(4) NOT NULL DEFAULT '1' COMMENT '零售采购入库是否算成本:0-不算成本,1-算成本(默认)' AFTER `cgIn`;
+ALTER TABLE xhCg ADD `isCost` TINYINT(4) NOT NULL DEFAULT '1' COMMENT '采购入库是否算成本:0-不算成本,1-算成本(默认)' AFTER `cgIn`;
+```

+ 21 - 0
任务小笔记/25-0910:测试.md

@@ -0,0 +1,21 @@
+### 【线上测试】
+- [ ] 花掌柜 - 开单、扫码、收银功能要测试过
+- [ ] 二维码收款,扣库存要开发好,手机上和收银机上都要测
+- 如果花材总金额超过订单金额,则增加优惠金额;
+- 如果不足,增加人工包装费;补扣只有一次机会
+- [ ] 国兰的收款功能不能受影响,几个支付宝收款流程不能受影响
+- [ ] 门店的创建修改等
+- [ ] 开单时,价格修改了,跟原价不一样,要有提示,已完成,要测试
+- [ ] 花掌柜 和 销花宝 注册等10处,修改地址,根据字典表来走,hasMap 10处要测试,同测跑腿
+- [ ] 收银机端的余额支付也要加上,商城上买花材和买花束能否用余额支付,然后统计上有没问题
+- [ ] 售后流程、余额回滚、余额充值、统计等要再测一测
+- [ ] 要测试天天鲜花的任务下单功能有没受影响
+- [ ] yii日志等配置文件有改要走一走
+- [ ] 发跑腿功能要测试完
+- [ ] 手机端花束也要支持开单,已经开发完要测试
+- [ ] 零售采购和线下结账功能完成,要测试
+- [ ] 设置头像,生日等测试
+- [ ] 商城跑腿费那块要多测试
+- [ ] 采购要测一下
+- [ ] xhCgSn 加了 shopId mainId ghsId customId 要测试
+- [ ] 花掌柜和销花宝登录页增加了去买花

+ 28 - 0
任务小笔记/25-0914:销花宝--呼叫跑腿.md

@@ -0,0 +1,28 @@
+```
+CREATE TABLE `xhGhsExpressOrder` (
+  `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
+  `mainId` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '中央id',
+  `shopId` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '门店id',
+  `deliveryId` varchar(30) NOT NULL DEFAULT '' COMMENT '快递ID',
+  `wxOrderId` varchar(100) NOT NULL DEFAULT '' COMMENT '微信订单编号',
+  `wxStoreId` varchar(100) NOT NULL DEFAULT '' COMMENT '微信门店编号',
+  `storeOrderId` varchar(100) NOT NULL DEFAULT '' COMMENT '门店订单编号',
+  `orderId` int(11) NOT NULL DEFAULT '0' COMMENT '门店订单id',
+  `transOrderId` varchar(100) NOT NULL DEFAULT '' COMMENT '运力订单号',
+  `distance` int(11) unsigned NOT NULL DEFAULT '1' COMMENT '距离,单位:米',
+  `fee` int(11) unsigned NOT NULL DEFAULT '0' COMMENT '配送费用,单位:分',
+  `fetchCode` varchar(100) NOT NULL DEFAULT '' COMMENT '取货码',
+  `orderSeq` varchar(100) NOT NULL DEFAULT '' COMMENT '取货序号',
+  `orderStatus` tinyint(2) unsigned NOT NULL DEFAULT '0' COMMENT '1已叫跑腿,等跑腿接单 2商家取消订单 3配送方取消订单 4跑腿接单 5跑腿到店 6配送中 7跑腿撤单 8配送完成 9配送异常',
+  `status` tinyint(2) unsigned NOT NULL DEFAULT '1' COMMENT '0无效配送单 1有效',
+  `cancelTime` timestamp NULL DEFAULT NULL COMMENT '取消时间',
+  `deductfee` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '违约金,单位:分',
+  `addTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
+  `updateTime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+  PRIMARY KEY (`id`) USING BTREE,
+  KEY `shopId` (`shopId`),
+  KEY `storeOrderId_wxStoreId_idx` (`storeOrderId`,`wxStoreId`),
+  KEY `mainId_storeOrderId_idx` (`mainId`,`storeOrderId`),
+  KEY `mainId_orderId_idx` (`mainId`,`orderId`)
+) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='批发配送订单表';
+```