skill-home 0.3.12 → 0.3.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/config.d.ts.map +1 -1
- package/dist/cli/config.js +11 -1
- package/dist/cli/config.js.map +1 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +14 -7
- package/dist/config.js.map +1 -1
- package/dist/express/pages/express.d.ts +4 -1
- package/dist/express/pages/express.d.ts.map +1 -1
- package/dist/express/pages/express.js +14 -10
- package/dist/express/pages/express.js.map +1 -1
- package/dist/express/pages/list.d.ts +4 -1
- package/dist/express/pages/list.d.ts.map +1 -1
- package/dist/express/pages/list.js +21 -15
- package/dist/express/pages/list.js.map +1 -1
- package/dist/express/pages/missing.d.ts +4 -1
- package/dist/express/pages/missing.d.ts.map +1 -1
- package/dist/express/pages/missing.js +15 -10
- package/dist/express/pages/missing.js.map +1 -1
- package/dist/express/pages/stock.d.ts +4 -1
- package/dist/express/pages/stock.d.ts.map +1 -1
- package/dist/express/pages/stock.js +29 -17
- package/dist/express/pages/stock.js.map +1 -1
- package/dist/family/pages/family_borrow.d.ts +4 -1
- package/dist/family/pages/family_borrow.d.ts.map +1 -1
- package/dist/family/pages/family_borrow.js +1 -1
- package/dist/family/pages/family_borrow.js.map +1 -1
- package/dist/family/pages/family_members.d.ts +4 -1
- package/dist/family/pages/family_members.d.ts.map +1 -1
- package/dist/family/pages/family_members.js +1 -1
- package/dist/family/pages/family_members.js.map +1 -1
- package/dist/family/routes.js +3 -3
- package/dist/family/routes.js.map +1 -1
- package/dist/fetch/domains.d.ts +89 -0
- package/dist/fetch/domains.d.ts.map +1 -1
- package/dist/fetch/domains.js +163 -25
- package/dist/fetch/domains.js.map +1 -1
- package/dist/fetch/index.d.ts +1 -1
- package/dist/fetch/index.d.ts.map +1 -1
- package/dist/fetch/index.js +5 -1
- package/dist/fetch/index.js.map +1 -1
- package/dist/health.d.ts +9 -0
- package/dist/health.d.ts.map +1 -1
- package/dist/health.js +19 -0
- package/dist/health.js.map +1 -1
- package/dist/items/pages/add_form.d.ts +4 -1
- package/dist/items/pages/add_form.d.ts.map +1 -1
- package/dist/items/pages/add_form.js +8 -3
- package/dist/items/pages/add_form.js.map +1 -1
- package/dist/items/pages/browse.d.ts +4 -1
- package/dist/items/pages/browse.d.ts.map +1 -1
- package/dist/items/pages/browse.js +1 -1
- package/dist/items/pages/browse.js.map +1 -1
- package/dist/items/pages/category_manage.d.ts +4 -1
- package/dist/items/pages/category_manage.d.ts.map +1 -1
- package/dist/items/pages/category_manage.js +1 -1
- package/dist/items/pages/category_manage.js.map +1 -1
- package/dist/items/pages/confirm.d.ts +4 -1
- package/dist/items/pages/confirm.d.ts.map +1 -1
- package/dist/items/pages/confirm.js +4 -2
- package/dist/items/pages/confirm.js.map +1 -1
- package/dist/items/pages/detail.d.ts +4 -1
- package/dist/items/pages/detail.d.ts.map +1 -1
- package/dist/items/pages/detail.js +1 -1
- package/dist/items/pages/detail.js.map +1 -1
- package/dist/items/pages/duplicates.d.ts +4 -1
- package/dist/items/pages/duplicates.d.ts.map +1 -1
- package/dist/items/pages/duplicates.js +1 -1
- package/dist/items/pages/duplicates.js.map +1 -1
- package/dist/items/pages/history.d.ts +4 -1
- package/dist/items/pages/history.d.ts.map +1 -1
- package/dist/items/pages/history.js +1 -1
- package/dist/items/pages/history.js.map +1 -1
- package/dist/items/pages/inventory_diff.d.ts +4 -1
- package/dist/items/pages/inventory_diff.d.ts.map +1 -1
- package/dist/items/pages/inventory_diff.js +1 -1
- package/dist/items/pages/inventory_diff.js.map +1 -1
- package/dist/items/pages/inventory_records.d.ts +4 -1
- package/dist/items/pages/inventory_records.d.ts.map +1 -1
- package/dist/items/pages/inventory_records.js +7 -2
- package/dist/items/pages/inventory_records.js.map +1 -1
- package/dist/items/pages/inventory_round.d.ts +4 -1
- package/dist/items/pages/inventory_round.d.ts.map +1 -1
- package/dist/items/pages/inventory_round.js +1 -1
- package/dist/items/pages/inventory_round.js.map +1 -1
- package/dist/items/pages/locate.d.ts +4 -1
- package/dist/items/pages/locate.d.ts.map +1 -1
- package/dist/items/pages/locate.js +7 -4
- package/dist/items/pages/locate.js.map +1 -1
- package/dist/items/pages/move_checklist.d.ts +4 -1
- package/dist/items/pages/move_checklist.d.ts.map +1 -1
- package/dist/items/pages/move_checklist.js +1 -1
- package/dist/items/pages/move_checklist.js.map +1 -1
- package/dist/items/pages/photo_wall.d.ts +4 -1
- package/dist/items/pages/photo_wall.d.ts.map +1 -1
- package/dist/items/pages/photo_wall.js +1 -1
- package/dist/items/pages/photo_wall.js.map +1 -1
- package/dist/items/pages/photos.d.ts +4 -1
- package/dist/items/pages/photos.d.ts.map +1 -1
- package/dist/items/pages/photos.js +7 -5
- package/dist/items/pages/photos.js.map +1 -1
- package/dist/items/pages/receipt.d.ts +4 -1
- package/dist/items/pages/receipt.d.ts.map +1 -1
- package/dist/items/pages/receipt.js +1 -1
- package/dist/items/pages/receipt.js.map +1 -1
- package/dist/items/pages/relations.d.ts +4 -1
- package/dist/items/pages/relations.d.ts.map +1 -1
- package/dist/items/pages/relations.js +1 -1
- package/dist/items/pages/relations.js.map +1 -1
- package/dist/items/pages/search_list.d.ts +4 -1
- package/dist/items/pages/search_list.d.ts.map +1 -1
- package/dist/items/pages/search_list.js +1 -1
- package/dist/items/pages/search_list.js.map +1 -1
- package/dist/items/pages/tag_manage.d.ts +4 -1
- package/dist/items/pages/tag_manage.d.ts.map +1 -1
- package/dist/items/pages/tag_manage.js +2 -2
- package/dist/items/pages/tag_manage.js.map +1 -1
- package/dist/items/pages/undo_select.d.ts +4 -1
- package/dist/items/pages/undo_select.d.ts.map +1 -1
- package/dist/items/pages/undo_select.js +1 -1
- package/dist/items/pages/undo_select.js.map +1 -1
- package/dist/outfit/pages/outfit_picker.d.ts +4 -1
- package/dist/outfit/pages/outfit_picker.d.ts.map +1 -1
- package/dist/outfit/pages/outfit_picker.js +1 -1
- package/dist/outfit/pages/outfit_picker.js.map +1 -1
- package/dist/outfit/pages/travel_trip.d.ts +4 -1
- package/dist/outfit/pages/travel_trip.d.ts.map +1 -1
- package/dist/outfit/pages/travel_trip.js +1 -1
- package/dist/outfit/pages/travel_trip.js.map +1 -1
- package/dist/outfit/pages/trip_outfit_plan.d.ts +4 -1
- package/dist/outfit/pages/trip_outfit_plan.d.ts.map +1 -1
- package/dist/outfit/pages/trip_outfit_plan.js +1 -1
- package/dist/outfit/pages/trip_outfit_plan.js.map +1 -1
- package/dist/outfit/pages/wardrobe_analyze.d.ts +4 -1
- package/dist/outfit/pages/wardrobe_analyze.d.ts.map +1 -1
- package/dist/outfit/pages/wardrobe_analyze.js +1 -1
- package/dist/outfit/pages/wardrobe_analyze.js.map +1 -1
- package/dist/outfit/pages/wardrobe_season.d.ts +4 -1
- package/dist/outfit/pages/wardrobe_season.d.ts.map +1 -1
- package/dist/outfit/pages/wardrobe_season.js +1 -1
- package/dist/outfit/pages/wardrobe_season.js.map +1 -1
- package/dist/receipt/pages/accounts.d.ts +4 -1
- package/dist/receipt/pages/accounts.d.ts.map +1 -1
- package/dist/receipt/pages/accounts.js +1 -1
- package/dist/receipt/pages/accounts.js.map +1 -1
- package/dist/receipt/pages/certificates.d.ts +4 -1
- package/dist/receipt/pages/certificates.d.ts.map +1 -1
- package/dist/receipt/pages/certificates.js +6 -11
- package/dist/receipt/pages/certificates.js.map +1 -1
- package/dist/receipt/pages/purchase_records.d.ts +4 -1
- package/dist/receipt/pages/purchase_records.d.ts.map +1 -1
- package/dist/receipt/pages/purchase_records.js +19 -2
- package/dist/receipt/pages/purchase_records.js.map +1 -1
- package/dist/receipt/pages/warranty.d.ts +4 -1
- package/dist/receipt/pages/warranty.d.ts.map +1 -1
- package/dist/receipt/pages/warranty.js +1 -1
- package/dist/receipt/pages/warranty.js.map +1 -1
- package/dist/receipt/ticket.d.ts.map +1 -1
- package/dist/receipt/ticket.js +132 -23
- package/dist/receipt/ticket.js.map +1 -1
- package/dist/render/familyPage.d.ts +1 -1
- package/dist/render/familyPage.d.ts.map +1 -1
- package/dist/render/familyPage.js +2 -4
- package/dist/render/familyPage.js.map +1 -1
- package/dist/render/html.d.ts.map +1 -1
- package/dist/render/html.js +59 -3
- package/dist/render/html.js.map +1 -1
- package/dist/render/index.d.ts +1 -1
- package/dist/render/index.d.ts.map +1 -1
- package/dist/render/index.js +1 -1
- package/dist/render/index.js.map +1 -1
- package/dist/render/sceneNaming.d.ts +3 -3
- package/dist/render/sceneNaming.d.ts.map +1 -1
- package/dist/render/sceneNaming.js +122 -120
- package/dist/render/sceneNaming.js.map +1 -1
- package/dist/render/views.d.ts +34 -2
- package/dist/render/views.d.ts.map +1 -1
- package/dist/render/views.js +28 -4
- package/dist/render/views.js.map +1 -1
- package/dist/setup/pages/backup_receipt.d.ts +4 -1
- package/dist/setup/pages/backup_receipt.d.ts.map +1 -1
- package/dist/setup/pages/backup_receipt.js +1 -1
- package/dist/setup/pages/backup_receipt.js.map +1 -1
- package/dist/setup/pages/first_use_wizard.d.ts +4 -1
- package/dist/setup/pages/first_use_wizard.d.ts.map +1 -1
- package/dist/setup/pages/first_use_wizard.js +1 -1
- package/dist/setup/pages/first_use_wizard.js.map +1 -1
- package/dist/setup/pages/health_report.d.ts +4 -1
- package/dist/setup/pages/health_report.d.ts.map +1 -1
- package/dist/setup/pages/health_report.js +1 -1
- package/dist/setup/pages/health_report.js.map +1 -1
- package/dist/setup/pages/import_restore.d.ts +4 -1
- package/dist/setup/pages/import_restore.d.ts.map +1 -1
- package/dist/setup/pages/import_restore.js +1 -1
- package/dist/setup/pages/import_restore.js.map +1 -1
- package/dist/space/pages/fixed_spot.d.ts +4 -1
- package/dist/space/pages/fixed_spot.d.ts.map +1 -1
- package/dist/space/pages/fixed_spot.js +1 -1
- package/dist/space/pages/fixed_spot.js.map +1 -1
- package/dist/space/pages/location_manage.d.ts +4 -1
- package/dist/space/pages/location_manage.d.ts.map +1 -1
- package/dist/space/pages/location_manage.js +1 -1
- package/dist/space/pages/location_manage.js.map +1 -1
- package/dist/space/pages/space_view.d.ts +4 -1
- package/dist/space/pages/space_view.d.ts.map +1 -1
- package/dist/space/pages/space_view.js +1 -1
- package/dist/space/pages/space_view.js.map +1 -1
- package/dist/space/pages/suggest_storage.d.ts +4 -1
- package/dist/space/pages/suggest_storage.d.ts.map +1 -1
- package/dist/space/pages/suggest_storage.js +1 -1
- package/dist/space/pages/suggest_storage.js.map +1 -1
- package/dist/stats/pages/expiring.d.ts +4 -1
- package/dist/stats/pages/expiring.d.ts.map +1 -1
- package/dist/stats/pages/expiring.js +21 -5
- package/dist/stats/pages/expiring.js.map +1 -1
- package/dist/stats/pages/idle.d.ts +4 -1
- package/dist/stats/pages/idle.d.ts.map +1 -1
- package/dist/stats/pages/idle.js +25 -7
- package/dist/stats/pages/idle.js.map +1 -1
- package/dist/stats/pages/inventory_stat.d.ts +4 -1
- package/dist/stats/pages/inventory_stat.d.ts.map +1 -1
- package/dist/stats/pages/inventory_stat.js +43 -11
- package/dist/stats/pages/inventory_stat.js.map +1 -1
- package/dist/stats/pages/overview.d.ts +4 -1
- package/dist/stats/pages/overview.d.ts.map +1 -1
- package/dist/stats/pages/overview.js +74 -15
- package/dist/stats/pages/overview.js.map +1 -1
- package/dist/stats/stats.d.ts.map +1 -1
- package/dist/stats/stats.js +46 -11
- package/dist/stats/stats.js.map +1 -1
- package/package.json +3 -3
package/dist/cli/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAiBA,2EAA2E;AAC3E,eAAO,MAAM,WAAW;;;;CAId,CAAC;AAEX,yBAAyB;AACzB,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhD;AAyCD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAyBjF"}
|
package/dist/cli/config.js
CHANGED
|
@@ -12,6 +12,7 @@
|
|
|
12
12
|
import { ENVELOPE_VERSION } from 'base-link-core';
|
|
13
13
|
import { loadHomeConfig, resetHomeConfig, saveHomeConfig } from '../config.js';
|
|
14
14
|
import { resolvedHomePaths } from '../fetch/paths.js';
|
|
15
|
+
import { homeDataDirAlert } from '../health.js';
|
|
15
16
|
/** 三个 key 的唯一定义地(插件侧镜像同值,见 `packages/plugin-home-ilife/src/bridge.ts`)。 */
|
|
16
17
|
export const CONFIG_KEYS = {
|
|
17
18
|
read: 'home.config.read',
|
|
@@ -73,7 +74,16 @@ export function runConfigKey(key, params) {
|
|
|
73
74
|
if (key === CONFIG_KEYS.read) {
|
|
74
75
|
const c = withHumanError(() => loadHomeConfig());
|
|
75
76
|
const resolved = withHumanError(() => resolvedHomePaths());
|
|
76
|
-
|
|
77
|
+
// #915 第二步:只把「数据目录真用不了」这件事当独立事实交出去,面板原样画;能用就缺席(没问题不显示)。
|
|
78
|
+
const alerts = homeDataDirAlert(c.values, c.dataDir);
|
|
79
|
+
return envelope(key, 'detail', {
|
|
80
|
+
path: c.path,
|
|
81
|
+
dataDir: c.dataDir,
|
|
82
|
+
created: c.created,
|
|
83
|
+
values: c.values,
|
|
84
|
+
resolved,
|
|
85
|
+
...(alerts === undefined ? {} : { alerts }),
|
|
86
|
+
});
|
|
77
87
|
}
|
|
78
88
|
if (key === CONFIG_KEYS.write) {
|
|
79
89
|
const raw = params['values'];
|
package/dist/cli/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,OAAO,EAAE,cAAc,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/cli/config.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,kCAAkC;AAClC,eAAO,MAAM,gBAAgB,EAAG,MAAe,CAAC;AAEhD,6DAA6D;AAC7D,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;CAKhC,CAAC;AAEF;;;;;yBAKyB;AACzB,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAmC,CAAC;AAErF,gCAAgC;AAChC,MAAM,MAAM,gBAAgB,GAAG,OAAO,oBAAoB,CAAC;AAoC3D,sCAAsC;AACtC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;CACnC;
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAEnD,kCAAkC;AAClC,eAAO,MAAM,gBAAgB,EAAG,MAAe,CAAC;AAEhD,6DAA6D;AAC7D,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;CAKhC,CAAC;AAEF;;;;;yBAKyB;AACzB,eAAO,MAAM,mBAAmB,EAAE,SAAS,MAAM,EAAmC,CAAC;AAErF,gCAAgC;AAChC,MAAM,MAAM,gBAAgB,GAAG,OAAO,oBAAoB,CAAC;AAoC3D,sCAAsC;AACtC,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,gBAAgB,CAAC;CACnC;AAQD;;;mDAGmD;AACnD,wBAAgB,cAAc,IAAI,gBAAgB,CAiBjD;AAED,mDAAmD;AACnD,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,CAIrE;AAED,yCAAyC;AACzC,wBAAgB,eAAe,IAAI;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAI7E;AAED;6DAC6D;AAC7D,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAExD"}
|
package/dist/config.js
CHANGED
|
@@ -75,25 +75,32 @@ function withoutBlankEditableDir(values) {
|
|
|
75
75
|
out['db'] = next;
|
|
76
76
|
return out;
|
|
77
77
|
}
|
|
78
|
-
/**
|
|
78
|
+
/** 每进程按**配置文件路径**记一份(#915 就地摆正:与五家兄弟件同形,`skill-bill/src/config.ts` 的
|
|
79
|
+
* 理由逐字相同——「记忆位不绑『进程』而绑『配置文件路径』,是为了不让换目录后的读落到上一份的缓存上」:
|
|
80
|
+
* 测试逐用例换临时家目录、同一进程里连读几份配置,绑进程就会把第二份读成第一份)。
|
|
81
|
+
* 「保存即生效」仍由写路径清记忆保证(见 `saveHomeConfig`/`resetHomeConfig`),不靠长连接。 */
|
|
79
82
|
let memo = null;
|
|
80
83
|
/** 读一份配置(文件不存在即按默认值落一份并把配置目录/数据目录建出来)。
|
|
81
84
|
*
|
|
82
85
|
* 读回来的 `values` 是**文件里那份 ⊕ 默认值**(文件里写空串则仍是空串=按默认落点);
|
|
83
86
|
* 首次落文件时写下去的是 `writableDefaults()`(可改落点=绝对路径)。 */
|
|
84
87
|
export function loadHomeConfig() {
|
|
85
|
-
|
|
88
|
+
const file = configPaths(HOME_CONFIG_STEM).configFile;
|
|
89
|
+
if (memo === null || memo.file !== file) {
|
|
86
90
|
const loaded = loadConfig(HOME_CONFIG_STEM, writableDefaults(), HOME_CONFIG_RETIRED);
|
|
87
91
|
// base-link-core 读回来时已经过了「键齐 + 类型对」两道校验(不认识的键、类型不符一律抛),
|
|
88
92
|
// 故这一处从宽松记录到形状记录的转换是有依据的投影,不是猜测。
|
|
89
93
|
memo = {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
+
file,
|
|
95
|
+
loaded: {
|
|
96
|
+
path: loaded.path,
|
|
97
|
+
dataDir: loaded.dataDir,
|
|
98
|
+
created: loaded.created,
|
|
99
|
+
values: loaded.values,
|
|
100
|
+
},
|
|
94
101
|
};
|
|
95
102
|
}
|
|
96
|
-
return memo;
|
|
103
|
+
return memo.loaded;
|
|
97
104
|
}
|
|
98
105
|
/** 写一份配置(写出去的是完整一份:没给的项按默认值补齐)。写完清记忆,同进程后续读也现取。 */
|
|
99
106
|
export function saveHomeConfig(values) {
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAGlF,kCAAkC;AAClC,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAe,CAAC;AAEhD,6DAA6D;AAC7D,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE;IAChC,IAAI,EAAE,EAAE,GAAG,EAAE,mBAAmB,EAAE;IAClC,GAAG,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE;IAC5B,MAAM,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE;CAC3B,CAAC;AAEF;;;;;yBAKyB;AACzB,MAAM,CAAC,MAAM,mBAAmB,GAAsB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;AAKrF;;;;;;;;;;0DAU0D;AAC1D,SAAS,gBAAgB;IACvB,OAAO;QACL,GAAG,oBAAoB;QACvB,EAAE,EAAE,EAAE,GAAG,oBAAoB,CAAC,EAAE,EAAE,GAAG,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC,OAAO,EAAE;KAC/E,CAAC;AACJ,CAAC;AAED;;oCAEoC;AACpC,SAAS,uBAAuB,CAAC,MAAoB;IACnD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,MAAM,CAAC;IACvF,MAAM,GAAG,GAAI,KAAiC,CAAC,KAAK,CAAC,CAAC;IACtD,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,EAAE;QAAE,OAAO,MAAM,CAAC;IACzD,MAAM,IAAI,GAA4B,EAAE,GAAI,KAAiC,EAAE,CAAC;IAChF,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;IACnB,MAAM,GAAG,GAAiB,EAAE,GAAG,MAAM,EAAE,CAAC;IACxC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;;QAChD,GAAG,CAAC,IAAI,CAAC,GAAG,IAA0B,CAAC;IAC5C,OAAO,GAAG,CAAC;AACb,CAAC;AAUD
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,10 @@ export declare const PAGE_META: {
|
|
|
6
6
|
readonly key: "home.shopping.query";
|
|
7
7
|
readonly shape: "list";
|
|
8
8
|
readonly preset: Record<string, unknown>;
|
|
9
|
-
readonly
|
|
9
|
+
readonly rows: readonly {
|
|
10
|
+
readonly key: string;
|
|
11
|
+
readonly preset: Record<string, unknown>;
|
|
12
|
+
}[];
|
|
10
13
|
};
|
|
11
14
|
export declare const REQUIRED_BLOCKS: {
|
|
12
15
|
readonly fields: readonly string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../../../src/express/pages/express.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,eAAO,MAAM,MAAM,EAAG,SAAkB,CAAC;AAEzC,eAAO,MAAM,SAAS;;;;;qBAKU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"express.d.ts","sourceRoot":"","sources":["../../../src/express/pages/express.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,eAAO,MAAM,MAAM,EAAG,SAAkB,CAAC;AAEzC,eAAO,MAAM,SAAS;;;;;qBAKU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;mBACgB,SAAS;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAAE;CAC1I,CAAC;AAEX,eAAO,MAAM,eAAe,EAyBvB;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,CAAC;AA+CF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAwFvH"}
|
|
@@ -14,7 +14,7 @@ export const PAGE_META = {
|
|
|
14
14
|
key: 'home.shopping.query',
|
|
15
15
|
shape: 'list',
|
|
16
16
|
preset: { "kind": "express" },
|
|
17
|
-
|
|
17
|
+
rows: [{ "key": "home.shopping.query", "preset": { "kind": "express" } }],
|
|
18
18
|
};
|
|
19
19
|
export const REQUIRED_BLOCKS = {
|
|
20
20
|
"empty": [
|
|
@@ -104,6 +104,8 @@ export function renderFamilyPage(env, ctx) {
|
|
|
104
104
|
+ '</style>';
|
|
105
105
|
const P_BACKUP = '请加载居家管家技能,帮我确认收货,收到的放备用';
|
|
106
106
|
const P_NEW = '请加载居家管家技能,帮我录入新到的物品';
|
|
107
|
+
// #890:「我收到了」的初始载荷(点后由页内 `onclick` 按当刻勾选改写 `data-t`)。
|
|
108
|
+
const P_RECEIVE = '请加载居家管家技能,帮我确认收货';
|
|
107
109
|
let body = style;
|
|
108
110
|
body += '<p class="x-lead">勾选收到的快递,点下方的按钮标记到家,超过 ' + timeout + ' 天会标红提醒</p>';
|
|
109
111
|
body += '<div class="x-metrics">'
|
|
@@ -121,22 +123,24 @@ export function renderFamilyPage(env, ctx) {
|
|
|
121
123
|
+ '<span class="x-state ' + (it.overdue ? 'over' : 'days') + '">已等 ' + it.days + ' 天' + (it.overdue ? ' 超时' : '') + '</span></div>'
|
|
122
124
|
+ '<div class="x-meta">' + escapeHtml(it.category_name) + ' ' + escapeHtml(it.location) + ' 数量 ' + it.quantity + '</div></div></div>').join('')
|
|
123
125
|
+ '</div><div class="x-actions">'
|
|
124
|
-
+ '<button class="x-btn" onclick="xReceive()">我收到了</button>'
|
|
125
|
-
+ '<button class="x-btn ghost" data-
|
|
126
|
-
+ '<button class="x-btn ghost" data-
|
|
126
|
+
+ '<button class="x-btn" data-action-id="x-receive" data-t="' + escapeHtml(P_RECEIVE) + '" onclick="xReceive(this)">我收到了</button>'
|
|
127
|
+
+ '<button class="x-btn ghost" data-action-id="x-backup" data-t="' + escapeHtml(P_BACKUP) + '">收到的放备用</button>'
|
|
128
|
+
+ '<button class="x-btn ghost" data-action-id="x-new" data-t="' + escapeHtml(P_NEW) + '">新到物品去录入</button>'
|
|
127
129
|
+ '</div></section>';
|
|
128
130
|
}
|
|
129
131
|
else {
|
|
130
132
|
body += '<section><div class="x-empty">当前没有快递中<br>新到的物品可以先录入<div class="x-actions" style="justify-content:center">'
|
|
131
|
-
+ '<button class="x-btn ghost" data-
|
|
133
|
+
+ '<button class="x-btn ghost" data-action-id="x-new" data-t="' + escapeHtml(P_NEW) + '">新到物品去录入</button>'
|
|
132
134
|
+ '</div></div></section>';
|
|
133
135
|
}
|
|
136
|
+
// #890:复制路径交给公共层共享运行时(`<!--SHARED-HELPERS-->` 槽的 `buildSharedHelpersJs`),
|
|
137
|
+
// 不再页内自造 `xCopy`(无反馈/无 `catch`/无 `execCommand` 降级)。按钮带 `data-action-id`
|
|
138
|
+
// + `data-t` 即由 document 委派复制;按当刻勾选现算的那一颗,用元素级 `onclick` 先把载荷写回
|
|
139
|
+
// 自己的 `data-t`(目标阶段先于 document 冒泡),没勾选时置空并保留拦截提示。
|
|
134
140
|
body += '<script>'
|
|
135
|
-
+ 'function
|
|
136
|
-
+ '
|
|
137
|
-
+ '
|
|
138
|
-
// #886:`xCopyData`/`xCopyLog` 两个空壳随复制区一起删——本页复制数据/复制日志已由
|
|
139
|
-
// `homeCopyArea` 出(三格式菜单+六段日志),这两颗 `function (){}` 没有任何调用方。
|
|
141
|
+
+ 'function xReceive(b){var s=[...document.querySelectorAll("#x-list input:checked")];if(!s.length){b.setAttribute("data-t","");alert("请先勾选收到的物品");return;}'
|
|
142
|
+
+ 'var ids=s.map(function(c){return c.getAttribute("data-id");}).join(",");var names=s.map(function(c){return c.getAttribute("data-name");}).join("、");'
|
|
143
|
+
+ 'b.setAttribute("data-t","请加载居家管家技能,帮我确认收货:"+names+" 编号["+ids+"]");}'
|
|
140
144
|
+ '</script>';
|
|
141
145
|
// 主 operations 唯一复制区(envelope 投影;上下两分支旧按钮已删,只留这一处)。
|
|
142
146
|
body += homeCopyArea({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"express.js","sourceRoot":"","sources":["../../../src/express/pages/express.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,EAAE;AACF,qDAAqD;AACrD,6DAA6D;AAC7D,qDAAqD;AACrD,uEAAuE;AACvE,0CAA0C;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1G,MAAM,CAAC,MAAM,MAAM,GAAG,SAAkB,CAAC;AAEzC,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,MAAM;IACd,GAAG,EAAE,qBAAqB;IAC1B,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,EAAC,MAAM,EAAC,SAAS,EAA4B;IACrD,
|
|
1
|
+
{"version":3,"file":"express.js","sourceRoot":"","sources":["../../../src/express/pages/express.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,EAAE;AACF,qDAAqD;AACrD,6DAA6D;AAC7D,qDAAqD;AACrD,uEAAuE;AACvE,0CAA0C;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1G,MAAM,CAAC,MAAM,MAAM,GAAG,SAAkB,CAAC;AAEzC,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,MAAM;IACd,GAAG,EAAE,qBAAqB;IAC1B,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,EAAC,MAAM,EAAC,SAAS,EAA4B;IACrD,IAAI,EAAE,CAAC,EAAC,KAAK,EAAC,qBAAqB,EAAC,QAAQ,EAAC,EAAC,MAAM,EAAC,SAAS,EAAC,EAAC,CAAkF;CAC1I,CAAC;AAEX,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,OAAO,EAAE;QACP,cAAc;QACd,eAAe;QACf,WAAW;KACZ;IACD,QAAQ,EAAE;QACR,qBAAqB;QACrB,MAAM;QACN,IAAI;KACL;IACD,YAAY,EAAE;QACZ,IAAI;QACJ,MAAM;QACN,QAAQ;QACR,SAAS;QACT,MAAM;QACN,MAAM;KACP;IACD,QAAQ,EAAE;QACR,KAAK;QACL,IAAI;QACJ,IAAI;QACJ,IAAI;KACL;CAMF,CAAC;AAEF,SAAS,SAAS,CAAC,KAAmD,EAAE,KAAa;IACnF,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC7C,oCAAoC;QACpC,gDAAgD;QAChD,MAAM,GAAG,GAAG,CAAC,KAAK,qBAAqB;YACrC,CAAC,CAAC,qBAAqB;YACvB,CAAC,CAAC,CAAC,CAAC;QACN,OAAO,iBAAiB,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC;IAC9E,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACZ,OAAO,8BAA8B,GAAG,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,WAAW,GAAG,KAAK,GAAG,iBAAiB,CAAC;AAC7G,CAAC;AAaD,SAAS,SAAS,CAAC,GAAa;IAC9B,MAAM,CAAC,GAAG,GAAG,CAAC,IAA+B,CAAC;IAC9C,MAAM,GAAG,GAAI,CAAC,CAAC,KAA+B,IAAI,EAAE,CAAC;IACrD,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC1B,MAAM,CAAC,GAAG,CAA4B,CAAC;QACvC,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACrB,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;YAC1B,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC;YACjC,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,aAAa,IAAI,EAAE,CAAC;YAC5C,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,EAAE,CAAC;YAClC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC5B,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC;YACzB,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC;SACrC,CAAC;IACJ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;IACzB,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAE,CAAC,CAAC,YAAmC,IAAI,CAAC,CAAC,EAAE,CAAC;AACjF,CAAC;AAED,uCAAuC;AACvC,8CAA8C;AAC9C,sEAAsE;AACtE,MAAM,UAAU,gBAAgB,CAAC,GAAa,EAAE,GAA+D;IAC7G,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,GAAG,CAAC,yCAAyC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IAC3G,MAAM,IAAI,GAAG,yCAAyC;UAClD,yBAAyB,CAAC;IAC9B,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAE/C,MAAM,KAAK,GAAG,SAAS;UACnB,qEAAqE;UACrE,gEAAgE;UAChE,uGAAuG;UACvG,2GAA2G;QAC7G,6DAA6D;QAC7D,gDAAgD;UAC9C,6HAA6H;UAC7H,6BAA6B;UAC7B,4LAA4L;UAC5L,+DAA+D;UAC/D,oHAAoH;UACpH,6FAA6F;UAC7F,mDAAmD;UACnD,kEAAkE;UAClE,wIAAwI;UACxI,iEAAiE;UACjE,sEAAsE;UACtE,ucAAuc;UACvc,qEAAqE;UACrE,+IAA+I;UAC/I,UAAU,CAAC;IAEf,MAAM,QAAQ,GAAG,yBAAyB,CAAC;IAC3C,MAAM,KAAK,GAAG,qBAAqB,CAAC;IACpC,sDAAsD;IACtD,MAAM,SAAS,GAAG,kBAAkB,CAAC;IAErC,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,IAAI,IAAI,0CAA0C,GAAG,OAAO,GAAG,aAAa,CAAC;IAC7E,IAAI,IAAI,yBAAyB;UAC7B,0BAA0B,GAAG,KAAK,CAAC,MAAM,GAAG,WAAW;UACvD,0BAA0B,GAAG,OAAO,CAAC,MAAM,GAAG,WAAW;UACzD,2BAA2B,GAAG,OAAO,GAAG,WAAW;UACnD,QAAQ,CAAC;IAEb,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,IAAI,IAAI,wDAAwD;cAC5D,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,sEAAsE,GAAG,EAAE,CAAC,EAAE,GAAG,eAAe,GAAG,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,IAAI;kBAC7I,sBAAsB;gBACxB,mDAAmD;kBACjD,CAAC,EAAE,CAAC,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,uBAAuB,GAAG,UAAU,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;kBAClF,sBAAsB,GAAG,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC;kBAC5C,uBAAuB,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,OAAO,GAAG,EAAE,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,eAAe;kBACjI,sBAAsB,GAAG,UAAU,CAAC,EAAE,CAAC,aAAa,CAAC,GAAG,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,MAAM,GAAG,EAAE,CAAC,QAAQ,GAAG,oBAAoB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;cAC/I,+BAA+B;cAC/B,2DAA2D,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,0CAA0C;cAChI,gEAAgE,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,mBAAmB;cAC7G,6DAA6D,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,oBAAoB;cACxG,kBAAkB,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,IAAI,IAAI,2GAA2G;cAC/G,6DAA6D,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,oBAAoB;cACxG,wBAAwB,CAAC;IAC/B,CAAC;IAED,0EAA0E;IAC1E,wEAAwE;IACxE,gEAAgE;IAChE,kDAAkD;IAClD,IAAI,IAAI,UAAU;UACd,0JAA0J;UAC1J,sJAAsJ;UACtJ,qEAAqE;UACrE,WAAW,CAAC;IAEhB,oDAAoD;IACpD,IAAI,IAAI,YAAY,CAAC;QACnB,IAAI,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE;QACvB,GAAG,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,IAAI,gBAAgB,GAAG,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,IAAI,YAAY,EAAE,EAAE,CAAC,EAAE;KACvJ,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI;UAChB,IAAI;UACJ,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC;UACzB,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC;UAC7B,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;UAC3B,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC;QAC5B,sCAAsC;UACpC,qCAAqC,CAAC;IAC1C,OAAO,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -6,7 +6,10 @@ export declare const PAGE_META: {
|
|
|
6
6
|
readonly key: "home.shopping.query";
|
|
7
7
|
readonly shape: "list";
|
|
8
8
|
readonly preset: Record<string, unknown>;
|
|
9
|
-
readonly
|
|
9
|
+
readonly rows: readonly {
|
|
10
|
+
readonly key: string;
|
|
11
|
+
readonly preset: Record<string, unknown>;
|
|
12
|
+
}[];
|
|
10
13
|
};
|
|
11
14
|
export declare const REQUIRED_BLOCKS: {
|
|
12
15
|
readonly fields: readonly string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/express/pages/list.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,eAAO,MAAM,MAAM,EAAG,MAAe,CAAC;AAEtC,eAAO,MAAM,SAAS;;;;;qBAKO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"list.d.ts","sourceRoot":"","sources":["../../../src/express/pages/list.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,eAAO,MAAM,MAAM,EAAG,MAAe,CAAC;AAEtC,eAAO,MAAM,SAAS;;;;;qBAKO,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;mBACgB,SAAS;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAAE;CACvI,CAAC;AAEX,eAAO,MAAM,eAAe,EA0BvB;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,CAAC;AAqCF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAuGvH"}
|
|
@@ -14,7 +14,7 @@ export const PAGE_META = {
|
|
|
14
14
|
key: 'home.shopping.query',
|
|
15
15
|
shape: 'list',
|
|
16
16
|
preset: { "kind": "list" },
|
|
17
|
-
|
|
17
|
+
rows: [{ "key": "home.shopping.query", "preset": { "kind": "list" } }],
|
|
18
18
|
};
|
|
19
19
|
export const REQUIRED_BLOCKS = {
|
|
20
20
|
"empty": [
|
|
@@ -102,8 +102,12 @@ export function renderFamilyPage(env, ctx) {
|
|
|
102
102
|
const P_ADD = '请加载居家管家技能,帮我添加购物清单条目';
|
|
103
103
|
const P_MISSING = '请加载居家管家技能,帮我检测缺货';
|
|
104
104
|
const P_CLEAN = '请加载居家管家技能,帮我清理已买的购物清单条目';
|
|
105
|
+
// #890:「我买到了」的初始载荷(点后由页内 `onclick` 按当刻勾选改写 `data-t`)。
|
|
106
|
+
const P_CHECK = '请加载居家管家技能,帮我标记购物清单条目已买到';
|
|
105
107
|
let body = style;
|
|
106
|
-
|
|
108
|
+
// #890(说明句与真实行为不符):原文写「点下方的按钮划掉」——点下方那颗只把一句指令复制进剪贴板,
|
|
109
|
+
// 页上不会划掉任何条目;划掉是回到对话里让助手执行的那一步。改成两句都说得上的说法。
|
|
110
|
+
body += '<p class="x-lead">勾选买到的条目,点「我买到了」复制指令</p>';
|
|
107
111
|
body += '<div class="x-metrics">'
|
|
108
112
|
+ '<span class="x-pill">待买 ' + pending.length + ' 件</span>'
|
|
109
113
|
+ '<span class="x-pill">已买 ' + done.length + ' 件</span>'
|
|
@@ -124,26 +128,28 @@ export function renderFamilyPage(env, ctx) {
|
|
|
124
128
|
+ '<div class="x-note">数量 ' + it.quantity + '</div></div></div>').join('')
|
|
125
129
|
+ '</div></section>';
|
|
126
130
|
body += '<section><div class="x-actions">'
|
|
127
|
-
+ '<button class="x-btn" onclick="xCheck()">我买到了</button>'
|
|
128
|
-
+ '<button class="x-btn ghost" data-
|
|
129
|
-
+ '<button class="x-btn ghost" data-
|
|
130
|
-
+ '<button class="x-btn ghost" data-
|
|
131
|
-
+ '<button class="x-btn ghost" data-
|
|
132
|
-
+ '<button class="x-btn danger" data-
|
|
131
|
+
+ '<button class="x-btn" data-action-id="x-check" data-t="' + escapeHtml(P_CHECK) + '" onclick="xCheck(this)">我买到了</button>'
|
|
132
|
+
+ '<button class="x-btn ghost" data-action-id="x-new" data-t="' + escapeHtml(P_NEW) + '">清单外新买的</button>'
|
|
133
|
+
+ '<button class="x-btn ghost" data-action-id="x-restock" data-t="' + escapeHtml(P_RESTOCK) + '">给已有物品补数量</button>'
|
|
134
|
+
+ '<button class="x-btn ghost" data-action-id="x-add" data-t="' + escapeHtml(P_ADD) + '">记一笔要买的</button>'
|
|
135
|
+
+ '<button class="x-btn ghost" data-action-id="x-missing" data-t="' + escapeHtml(P_MISSING) + '">看看家里缺什么</button>'
|
|
136
|
+
+ '<button class="x-btn danger" data-action-id="x-clean" data-t="' + escapeHtml(P_CLEAN) + '">清掉已买记录</button>'
|
|
133
137
|
+ '</div></section>';
|
|
134
138
|
}
|
|
135
139
|
else {
|
|
136
140
|
body += '<section><div class="x-empty">清单是空的<br>可以先看看家里缺什么,或者记一笔要买的<div class="x-actions" style="justify-content:center">'
|
|
137
|
-
+ '<button class="x-btn ghost" data-
|
|
138
|
-
+ '<button class="x-btn ghost" data-
|
|
141
|
+
+ '<button class="x-btn ghost" data-action-id="x-missing" data-t="' + escapeHtml(P_MISSING) + '">看看家里缺什么</button>'
|
|
142
|
+
+ '<button class="x-btn ghost" data-action-id="x-add" data-t="' + escapeHtml(P_ADD) + '">记一笔要买的</button>'
|
|
139
143
|
+ '</div></div></section>';
|
|
140
144
|
}
|
|
145
|
+
// #890:复制路径交给公共层共享运行时(`<!--SHARED-HELPERS-->` 槽的 `buildSharedHelpersJs`),
|
|
146
|
+
// 不再页内自造 `xCopy`:按钮带 `data-action-id` + `data-t` 即由 document 委派复制,
|
|
147
|
+
// 双通道复制 + toast + `execCommand` 降级都走共用件。按当刻勾选现算的那一颗,用元素级
|
|
148
|
+
// `onclick` 先把载荷写回自己的 `data-t`(目标阶段先于 document 冒泡),没勾选时置空并保留拦截提示。
|
|
141
149
|
body += '<script>'
|
|
142
|
-
+ 'function
|
|
143
|
-
+ '
|
|
144
|
-
+ '
|
|
145
|
-
// #886:`xCopyData`/`xCopyLog` 两个空壳随复制区一起删(本页复制数据/复制日志已由
|
|
146
|
-
// `homeCopyArea` 出:三格式菜单+六段日志),这两颗 `function (){}` 没有调用方。
|
|
150
|
+
+ 'function xCheck(b){var s=[...document.querySelectorAll("#x-list input:checked")];if(!s.length){b.setAttribute("data-t","");alert("请先勾选买到的条目");return;}'
|
|
151
|
+
+ 'var ids=s.map(function(c){return c.getAttribute("data-id");}).join(",");var names=s.map(function(c){return c.getAttribute("data-name");}).join("、");'
|
|
152
|
+
+ 'b.setAttribute("data-t","请加载居家管家技能,帮我标记购物清单条目已买到:"+names+" 编号["+ids+"]");}'
|
|
147
153
|
+ '</script>';
|
|
148
154
|
// 主 operations 唯一复制区(envelope 投影;旧标题计数按钮已删,只留这一处)。
|
|
149
155
|
body += homeCopyArea({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/express/pages/list.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,kDAAkD;AAClD,6DAA6D;AAC7D,qDAAqD;AACrD,uEAAuE;AACvE,0CAA0C;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1G,MAAM,CAAC,MAAM,MAAM,GAAG,MAAe,CAAC;AAEtC,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,MAAM;IACd,GAAG,EAAE,qBAAqB;IAC1B,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,EAAC,MAAM,EAAC,MAAM,EAA4B;IAClD,
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/express/pages/list.ts"],"names":[],"mappings":"AAAA,6CAA6C;AAC7C,EAAE;AACF,kDAAkD;AAClD,6DAA6D;AAC7D,qDAAqD;AACrD,uEAAuE;AACvE,0CAA0C;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1G,MAAM,CAAC,MAAM,MAAM,GAAG,MAAe,CAAC;AAEtC,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,MAAM;IACd,GAAG,EAAE,qBAAqB;IAC1B,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,EAAC,MAAM,EAAC,MAAM,EAA4B;IAClD,IAAI,EAAE,CAAC,EAAC,KAAK,EAAC,qBAAqB,EAAC,QAAQ,EAAC,EAAC,MAAM,EAAC,MAAM,EAAC,EAAC,CAAkF;CACvI,CAAC;AAEX,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,OAAO,EAAE;QACP,eAAe;QACf,eAAe;QACf,WAAW;KACZ;IACD,QAAQ,EAAE;QACR,kBAAkB;QAClB,SAAS;QACT,IAAI;KACL;IACD,YAAY,EAAE;QACZ,MAAM;QACN,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,SAAS;QACT,QAAQ;QACR,IAAI;QACJ,MAAM;QACN,MAAM;KACP;IACD,QAAQ,EAAE;QACR,IAAI;QACJ,IAAI;KACL;CAMF,CAAC;AAEF,SAAS,SAAS,CAAC,KAAmD,EAAE,KAAa;IACnF,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7H,OAAO,8BAA8B,GAAG,KAAK,GAAG,QAAQ,GAAG,KAAK,GAAG,WAAW,GAAG,KAAK,GAAG,iBAAiB,CAAC;AAC7G,CAAC;AAYD,SAAS,WAAW,CAAC,GAAa;IAChC,MAAM,CAAC,GAAG,GAAG,CAAC,IAA+B,CAAC;IAC9C,MAAM,GAAG,GAAI,CAAC,CAAC,KAA+B,IAAI,EAAE,CAAC;IACrD,OAAO,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACnB,MAAM,CAAC,GAAG,CAA4B,CAAC;QACvC,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YACrB,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;YAC1B,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC;YACjC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,EAAE,CAAC;YAChC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC;YAC/B,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACjE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;SAC7E,CAAC;IACJ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AAC3B,CAAC;AAED,uCAAuC;AACvC,8CAA8C;AAC9C,sEAAsE;AACtE,MAAM,UAAU,gBAAgB,CAAC,GAAa,EAAE,GAA+D;IAC7G,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,GAAG,CAAC,sCAAsC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,CAAC;IACxG,MAAM,IAAI,GAAG,yCAAyC;UAClD,yBAAyB,CAAC;IAC9B,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IAC/B,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;IACvC,KAAK,MAAM,EAAE,IAAI,OAAO;QAAE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IAE3E,MAAM,KAAK,GAAG,SAAS;UACnB,qEAAqE;UACrE,gEAAgE;UAChE,uGAAuG;UACvG,+GAA+G;UAC/G,uEAAuE;UACvE,mDAAmD;UACnD,8GAA8G;UAC9G,8CAA8C;UAC9C,kEAAkE;UAClE,wIAAwI;UACxI,iEAAiE;UACjE,sEAAsE;UACtE,oEAAoE;UACpE,+cAA+c;UAC/c,qEAAqE;QACvE,6DAA6D;QAC7D,qCAAqC;UACnC,yJAAyJ;UACzJ,UAAU,CAAC;IAEf,MAAM,KAAK,GAAG,qBAAqB,CAAC;IACpC,MAAM,SAAS,GAAG,oBAAoB,CAAC;IACvC,MAAM,KAAK,GAAG,sBAAsB,CAAC;IACrC,MAAM,SAAS,GAAG,kBAAkB,CAAC;IACrC,MAAM,OAAO,GAAG,yBAAyB,CAAC;IAC1C,sDAAsD;IACtD,MAAM,OAAO,GAAG,yBAAyB,CAAC;IAE1C,IAAI,IAAI,GAAG,KAAK,CAAC;IACjB,qDAAqD;IACrD,4CAA4C;IAC5C,IAAI,IAAI,2CAA2C,CAAC;IACpD,IAAI,IAAI,yBAAyB;UAC7B,0BAA0B,GAAG,OAAO,CAAC,MAAM,GAAG,WAAW;UACzD,0BAA0B,GAAG,IAAI,CAAC,MAAM,GAAG,WAAW;UACtD,0BAA0B,GAAG,KAAK,CAAC,MAAM,GAAG,WAAW;UACvD,QAAQ,CAAC;IAEb,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,IAAI,IAAI,8BAA8B;cAClC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,2BAA2B,GAAG,UAAU,CAAC,CAAC,CAAC,GAAG,0BAA0B,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;cACnG,kBAAkB,CAAC;IACzB,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,IAAI,IAAI,yCAAyC;cAC7C,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,qEAAqE,GAAG,EAAE,CAAC,EAAE,GAAG,eAAe,GAAG,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,cAAc,GAAG,EAAE,CAAC,QAAQ,GAAG,IAAI;kBAC7K,0CAA0C,GAAG,UAAU,CAAC,EAAE,CAAC,IAAI,CAAC;kBAChE,oBAAoB,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,IAAI,GAAG,UAAU,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,SAAS;kBACpG,6BAA6B,GAAG,UAAU,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,eAAe;gBAC9E,yCAAyC;kBACvC,yBAAyB,GAAG,EAAE,CAAC,QAAQ,GAAG,oBAAoB,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC;cAC1E,kBAAkB,CAAC;QACvB,IAAI,IAAI,kCAAkC;cACtC,yDAAyD,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,wCAAwC;cAC1H,6DAA6D,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,mBAAmB;cACvG,iEAAiE,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,qBAAqB;cACjH,6DAA6D,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,mBAAmB;cACvG,iEAAiE,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,oBAAoB;cAChH,gEAAgE,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,mBAAmB;cAC5G,kBAAkB,CAAC;IACzB,CAAC;SAAM,CAAC;QACN,IAAI,IAAI,kHAAkH;cACtH,iEAAiE,GAAG,UAAU,CAAC,SAAS,CAAC,GAAG,oBAAoB;cAChH,6DAA6D,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,mBAAmB;cACvG,wBAAwB,CAAC;IAC/B,CAAC;IAED,0EAA0E;IAC1E,mEAAmE;IACnE,yDAAyD;IACzD,kEAAkE;IAClE,IAAI,IAAI,UAAU;UACd,wJAAwJ;UACxJ,sJAAsJ;UACtJ,4EAA4E;UAC5E,WAAW,CAAC;IAEhB,mDAAmD;IACnD,IAAI,IAAI,YAAY,CAAC;QACnB,IAAI,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE;QACvB,GAAG,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,IAAI,gBAAgB,GAAG,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,IAAI,YAAY,EAAE,EAAE,CAAC,EAAE;KACvJ,CAAC,CAAC;IAEH,MAAM,OAAO,GAAG,IAAI;UAChB,IAAI;UACJ,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC;UACzB,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC;UAC7B,SAAS,CAAC,OAAO,EAAE,OAAO,CAAC;UAC3B,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC/B,OAAO,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;AACzC,CAAC"}
|
|
@@ -6,7 +6,10 @@ export declare const PAGE_META: {
|
|
|
6
6
|
readonly key: "home.shopping.query";
|
|
7
7
|
readonly shape: "list";
|
|
8
8
|
readonly preset: Record<string, unknown>;
|
|
9
|
-
readonly
|
|
9
|
+
readonly rows: readonly {
|
|
10
|
+
readonly key: string;
|
|
11
|
+
readonly preset: Record<string, unknown>;
|
|
12
|
+
}[];
|
|
10
13
|
};
|
|
11
14
|
export declare const REQUIRED_BLOCKS: {
|
|
12
15
|
readonly fields: readonly string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"missing.d.ts","sourceRoot":"","sources":["../../../src/express/pages/missing.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,eAAO,MAAM,MAAM,EAAG,SAAkB,CAAC;AAEzC,eAAO,MAAM,SAAS;;;;;qBAKU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"missing.d.ts","sourceRoot":"","sources":["../../../src/express/pages/missing.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,eAAO,MAAM,MAAM,EAAG,SAAkB,CAAC;AAEzC,eAAO,MAAM,SAAS;;;;;qBAKU,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;mBACgB,SAAS;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAAE;CAC1I,CAAC;AAEX,eAAO,MAAM,eAAe,EAuBvB;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,CAAC;AAwCF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAmFvH"}
|
|
@@ -14,7 +14,7 @@ export const PAGE_META = {
|
|
|
14
14
|
key: 'home.shopping.query',
|
|
15
15
|
shape: 'list',
|
|
16
16
|
preset: { "kind": "missing" },
|
|
17
|
-
|
|
17
|
+
rows: [{ "key": "home.shopping.query", "preset": { "kind": "missing" } }],
|
|
18
18
|
};
|
|
19
19
|
export const REQUIRED_BLOCKS = {
|
|
20
20
|
"empty": [
|
|
@@ -91,6 +91,8 @@ export function renderFamilyPage(env, ctx) {
|
|
|
91
91
|
+ '</style>';
|
|
92
92
|
const P_SCOPE = '请加载居家管家技能,帮我按范围检测缺货';
|
|
93
93
|
const P_TH = '请加载居家管家技能,帮我查看囤货并设置阈值';
|
|
94
|
+
// #890:「加入购物清单」的初始载荷(点后由页内 `onclick` 按当刻勾选改写 `data-t`)。
|
|
95
|
+
const P_LIST = '请加载居家管家技能,帮我将缺货物品加入购物清单';
|
|
94
96
|
let body = style;
|
|
95
97
|
// #817(③双端不塌)第二波:说明句压到 390 档一行放得下(20 字)——原来 25 字在 390 档折行后
|
|
96
98
|
// 第二行只剩一个「出」孤字。
|
|
@@ -108,22 +110,25 @@ export function renderFamilyPage(env, ctx) {
|
|
|
108
110
|
+ '<div class="x-meta">' + escapeHtml(it.category_name) + ' 当前 ' + it.current + ' 阈值 ' + it.threshold + '</div></div>'
|
|
109
111
|
+ '<span class="x-suggest">建议买 <b>' + it.suggest + '</b></span></div>').join('')
|
|
110
112
|
+ '</div><div class="x-actions">'
|
|
111
|
-
+ '<button class="x-btn" onclick="xToList()">加入购物清单</button>'
|
|
112
|
-
+ '<button class="x-btn ghost" data-
|
|
113
|
-
+ '<button class="x-btn ghost" data-
|
|
113
|
+
+ '<button class="x-btn" data-action-id="x-to-list" data-t="' + escapeHtml(P_LIST) + '" onclick="xToList(this)">加入购物清单</button>'
|
|
114
|
+
+ '<button class="x-btn ghost" data-action-id="x-scope" data-t="' + escapeHtml(P_SCOPE) + '">按范围检测</button>'
|
|
115
|
+
+ '<button class="x-btn ghost" data-action-id="x-th" data-t="' + escapeHtml(P_TH) + '">设置阈值</button>'
|
|
114
116
|
+ '</div></section>';
|
|
115
117
|
}
|
|
116
118
|
else {
|
|
117
119
|
body += '<section><div class="x-empty">库存充足没有缺货<br>范围 ' + escapeHtml(scope) + '<div class="x-actions" style="justify-content:center">'
|
|
118
|
-
+ '<button class="x-btn ghost" data-
|
|
120
|
+
+ '<button class="x-btn ghost" data-action-id="x-th" data-t="' + escapeHtml(P_TH) + '">设置阈值</button>'
|
|
119
121
|
+ '</div></div></section>';
|
|
120
122
|
}
|
|
123
|
+
// #890:复制路径交给公共层共享运行时(`<!--SHARED-HELPERS-->` 槽的 `buildSharedHelpersJs`)——
|
|
124
|
+
// 页内自造 `xCopy`(无反馈/无 `catch`/无 `execCommand` 降级)与 #886 收口时漏删的
|
|
125
|
+
// `xCopyData`/`xCopyLog` 两个空壳(`function (){}`,无调用方)一并清掉。接法=按钮带
|
|
126
|
+
// `data-action-id` + `data-t`;按当刻勾选现算的那一颗,用元素级 `onclick` 先把载荷写回自己的
|
|
127
|
+
// `data-t`(目标阶段先于 document 冒泡),没勾选时置空并保留拦截提示。
|
|
121
128
|
body += '<script>'
|
|
122
|
-
+ 'function
|
|
123
|
-
+ '
|
|
124
|
-
+ '
|
|
125
|
-
+ 'function xCopyData(){}'
|
|
126
|
-
+ 'function xCopyLog(){}'
|
|
129
|
+
+ 'function xToList(b){var s=[...document.querySelectorAll("#x-list input:checked")];if(!s.length){b.setAttribute("data-t","");alert("请先勾选缺货物品");return;}'
|
|
130
|
+
+ 'var ids=s.map(function(c){return c.getAttribute("data-id");}).join(",");var names=s.map(function(c){return c.getAttribute("data-name")+"建议买"+c.getAttribute("data-suggest");}).join("、");'
|
|
131
|
+
+ 'b.setAttribute("data-t","请加载居家管家技能,帮我将缺货物品加入购物清单:"+names+" 编号["+ids+"]");}'
|
|
127
132
|
+ '</script>';
|
|
128
133
|
// 主 operations 唯一复制区(envelope 投影;上下两分支旧按钮已删,只留这一处)。
|
|
129
134
|
body += homeCopyArea({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"missing.js","sourceRoot":"","sources":["../../../src/express/pages/missing.ts"],"names":[],"mappings":"AAAA,gDAAgD;AAChD,EAAE;AACF,qDAAqD;AACrD,6DAA6D;AAC7D,qDAAqD;AACrD,uEAAuE;AACvE,0CAA0C;AAC1C,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAE1G,MAAM,CAAC,MAAM,MAAM,GAAG,SAAkB,CAAC;AAEzC,MAAM,CAAC,MAAM,SAAS,GAAG;IACvB,MAAM,EAAE,SAAS;IACjB,MAAM,EAAE,MAAM;IACd,GAAG,EAAE,qBAAqB;IAC1B,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,EAAC,MAAM,EAAC,SAAS,EAA4B;IACrD,
|
|
1
|
+
{"version":3,"file":"missing.js","sourceRoot":"","sources":["../../../src/express/pages/missing.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,10 @@ export declare const PAGE_META: {
|
|
|
6
6
|
readonly key: "home.shopping.query";
|
|
7
7
|
readonly shape: "list";
|
|
8
8
|
readonly preset: Record<string, unknown>;
|
|
9
|
-
readonly
|
|
9
|
+
readonly rows: readonly {
|
|
10
|
+
readonly key: string;
|
|
11
|
+
readonly preset: Record<string, unknown>;
|
|
12
|
+
}[];
|
|
10
13
|
};
|
|
11
14
|
export declare const REQUIRED_BLOCKS: {
|
|
12
15
|
readonly fields: readonly string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"stock.d.ts","sourceRoot":"","sources":["../../../src/express/pages/stock.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,eAAO,MAAM,MAAM,EAAG,OAAgB,CAAC;AAEvC,eAAO,MAAM,SAAS;;;;;qBAKQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"stock.d.ts","sourceRoot":"","sources":["../../../src/express/pages/stock.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG/C,eAAO,MAAM,MAAM,EAAG,OAAgB,CAAC;AAEvC,eAAO,MAAM,SAAS;;;;;qBAKQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;mBACgB,SAAS;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,EAAE;CACxI,CAAC;AAEX,eAAO,MAAM,eAAe,EA0BvB;IACH,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IACvC,QAAQ,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,CAAC;AA2CF,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,QAAQ,EAAE,GAAG,CAAC,EAAE;IAAE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAwGvH"}
|
|
@@ -18,7 +18,7 @@ export const PAGE_META = {
|
|
|
18
18
|
key: 'home.shopping.query',
|
|
19
19
|
shape: 'list',
|
|
20
20
|
preset: { "kind": "stock" },
|
|
21
|
-
|
|
21
|
+
rows: [{ "key": "home.shopping.query", "preset": { "kind": "stock" } }],
|
|
22
22
|
};
|
|
23
23
|
export const REQUIRED_BLOCKS = {
|
|
24
24
|
"empty": [
|
|
@@ -99,12 +99,17 @@ export function renderFamilyPage(env, ctx) {
|
|
|
99
99
|
+ '.x-check{width:44px;height:44px;flex:none;appearance:none;border:1.5px solid #c7c7cc;border-radius:12px;background:#fff center/22px 22px no-repeat;margin:0 6px 0 0;vertical-align:middle}.x-check:checked{border-color:#0a63ce;background-color:#0a63ce;background-image:url(\'data:image/svg+xml;utf8,<svg xmlns=%22http://www.w3.org/2000/svg%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22%23fff%22 stroke-width=%223%22><path d=%22M4 12l6 6L20 6%22/></svg>\')}'
|
|
100
100
|
+ '.x-empty{text-align:center;color:#666;padding:26px 0;line-height:2}'
|
|
101
101
|
// #817 第二波(③双端不塌):390/820 以下原先把 `.x-btn` 一律拉成整行——行内那颗「设阈值」
|
|
102
|
-
// 因此变整行白条(一页堆出两千多像素)。收窄到动作行 `.x-actions > .x-btn`
|
|
103
|
-
//
|
|
104
|
-
|
|
105
|
-
|
|
102
|
+
// 因此变整行白条(一页堆出两千多像素)。收窄到动作行 `.x-actions > .x-btn` 才拉满。
|
|
103
|
+
// #890:`.x-row` 一并改回横排——上一波只收了 `.x-btn`,行本身仍 `flex-direction:column`,
|
|
104
|
+
// 44px 勾选件因此独占首行(行高 68→128px,一屏少看一条);口径与同域 43/44/45 三页一致
|
|
105
|
+
// (`list.ts:120`/`missing.ts:114`/`express.ts:127` 都是横排)。行内按钮回到垂直居中。
|
|
106
|
+
+ '@media(max-width:820px){.x-row{flex-direction:row;align-items:center}.x-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px}'
|
|
107
|
+
+ '.x-actions>.x-btn{width:100%}.x-row>.x-btn{align-self:center}}'
|
|
106
108
|
+ '</style>';
|
|
107
109
|
const P_MISSING = '请加载居家管家技能,帮我检测缺货';
|
|
110
|
+
// #890:选择区两颗的初始载荷(点了以后由页内监听按当刻勾选改写 `data-t`,见件尾脚本)。
|
|
111
|
+
const P_FIX = '请加载居家管家技能,帮我修正物品实际数量';
|
|
112
|
+
const P_THR = '请加载居家管家技能,帮我设置囤货阈值';
|
|
108
113
|
let body = style;
|
|
109
114
|
body += '<p class="x-lead">阈值是缺货检测的提醒线,盘点时发现数量不对,勾选后修正</p>';
|
|
110
115
|
body += '<div class="x-metrics">'
|
|
@@ -120,14 +125,14 @@ export function renderFamilyPage(env, ctx) {
|
|
|
120
125
|
+ '<div class="x-meta">' + escapeHtml(it.category_name) + ' 阈值 ' + it.threshold + ' 当前 ' + it.current + '</div></div>'
|
|
121
126
|
+ '</div>').join('')
|
|
122
127
|
+ '</div><div class="x-actions">'
|
|
123
|
-
+ '<button class="x-btn" onclick="xFix()">修正实际数量</button>'
|
|
124
|
-
+ '<button class="x-btn ghost" onclick="xThr()">设阈值</button>'
|
|
125
|
-
+ '<button class="x-btn ghost" data-
|
|
128
|
+
+ '<button class="x-btn" data-action-id="x-fix" data-t="' + escapeHtml(P_FIX) + '" onclick="xFix(this)">修正实际数量</button>'
|
|
129
|
+
+ '<button class="x-btn ghost" data-action-id="x-thr" data-t="' + escapeHtml(P_THR) + '" onclick="xThr(this)">设阈值</button>'
|
|
130
|
+
+ '<button class="x-btn ghost" data-action-id="x-missing" data-t="' + escapeHtml(P_MISSING) + '">检测缺货</button>'
|
|
126
131
|
+ '</div></section>';
|
|
127
132
|
}
|
|
128
133
|
else {
|
|
129
134
|
body += '<section><div class="x-empty">还没有设阈值的物品<br>给常用消耗品设个阈值,缺货检测就能自动提醒<div class="x-actions" style="justify-content:center">'
|
|
130
|
-
+ '<button class="x-btn ghost" data-
|
|
135
|
+
+ '<button class="x-btn ghost" data-action-id="x-missing" data-t="' + escapeHtml(P_MISSING) + '">检测缺货</button>'
|
|
131
136
|
+ '</div></div></section>';
|
|
132
137
|
}
|
|
133
138
|
if (hints.length) {
|
|
@@ -136,17 +141,24 @@ export function renderFamilyPage(env, ctx) {
|
|
|
136
141
|
const uniqHints = hints.filter((h) => (seenHint.has(h.name) ? false : seenHint.add(h.name)));
|
|
137
142
|
body += '<section><h2>常用品还没设阈值</h2><div>'
|
|
138
143
|
+ uniqHints.map((h) => '<div class="x-row"><div class="x-name">' + escapeHtml(latinFree(h.name)) + '</div><div class="x-meta">' + escapeHtml(h.category_name) + '</div>'
|
|
139
|
-
+ '<button class="x-btn ghost" data-id="' + h.id + '" data-name="' + escapeHtml(h.name) + '" onclick="xOneThr(this)">设阈值</button></div>').join('')
|
|
144
|
+
+ '<button class="x-btn ghost" data-action-id="x-one-thr" data-t="' + escapeHtml(P_THR) + '" data-id="' + h.id + '" data-name="' + escapeHtml(h.name) + '" onclick="xOneThr(this)">设阈值</button></div>').join('')
|
|
140
145
|
+ '</div></section>';
|
|
141
146
|
}
|
|
147
|
+
// #890:本页原先自带 `xCopy(t){if(navigator.clipboard){…}}`——无反馈、无 `catch`、无 `execCommand`
|
|
148
|
+
// 降级。按铁律一「把对方那份抄一遍不算走了接口」,不在这里再抄一份更厚的 `xCopy`,而是把复制
|
|
149
|
+
// 交给公共层共享运行时(模板 `<!--SHARED-HELPERS-->` 槽的 `buildSharedHelpersJs`,见 `render/html.ts`):
|
|
150
|
+
// 双通道复制 + toast 反馈 + `execCommand` 降级 + 两通道皆败的失败提示。接法=按钮带
|
|
151
|
+
// `data-action-id` + `data-t`,运行时在 document 上委派(与 #886 的复制区同一口径)。
|
|
152
|
+
// 选择区两颗要按当刻勾选现算载荷:元素级 `onclick` 在目标阶段先跑、把载荷写回自己的 `data-t`,
|
|
153
|
+
// 随后才冒泡到 document 被复制;没勾选时把 `data-t` 置空(空串在共享运行时里短路、不出
|
|
154
|
+
// 「已复制」的假反馈)并保留原来的拦截提示。
|
|
142
155
|
body += '<script>'
|
|
143
|
-
+ 'function
|
|
144
|
-
+ '
|
|
145
|
-
+ '
|
|
146
|
-
+ 'function xThr(){var s=[...document.querySelectorAll("#x-list input:checked")];if(!s.length){
|
|
147
|
-
+ '
|
|
148
|
-
|
|
149
|
-
// `homeCopyArea` 出:三格式菜单+六段日志),这两颗 `function (){}` 没有调用方。
|
|
156
|
+
+ 'function xFix(b){var s=[...document.querySelectorAll("#x-list input:checked")];if(!s.length){b.setAttribute("data-t","");alert("请先勾选要修正的物品");return;}'
|
|
157
|
+
+ 'var ids=s.map(function(c){return c.getAttribute("data-id");}).join(",");var names=s.map(function(c){return c.getAttribute("data-name");}).join("、");'
|
|
158
|
+
+ 'b.setAttribute("data-t","请加载居家管家技能,帮我修正物品实际数量:"+names+" 编号["+ids+"] 修正后数量___");}'
|
|
159
|
+
+ 'function xThr(b){var s=[...document.querySelectorAll("#x-list input:checked")];if(!s.length){b.setAttribute("data-t","");alert("请先勾选要设置阈值的物品");return;}'
|
|
160
|
+
+ 'b.setAttribute("data-t","请加载居家管家技能,帮我设置囤货阈值:"+s.map(function(c){return c.getAttribute("data-name");}).join("、")+" 阈值___");}'
|
|
161
|
+
+ 'function xOneThr(b){b.setAttribute("data-t","请加载居家管家技能,帮我设置囤货阈值:"+b.getAttribute("data-name")+" 编号["+b.getAttribute("data-id")+"] 阈值___");}'
|
|
150
162
|
+ '</script>';
|
|
151
163
|
// 主 operations 唯一复制区(envelope 投影;上下两分支旧按钮已删,只留这一处)。
|
|
152
164
|
body += homeCopyArea({
|