diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/.gitignore" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/.gitignore" new file mode 100644 index 0000000000000000000000000000000000000000..dc4e6353bf3caf74c5953d0bec81c72a3635bf33 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/.gitignore" @@ -0,0 +1,9 @@ +/node_modules +/local.properties +/.idea +**/build +/.hvigor +.cxx +/.clangd +/.clang-format +/.clang-tidy \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/AppScope/app.json5" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/AppScope/app.json5" new file mode 100644 index 0000000000000000000000000000000000000000..24be5a9f454d17e907891191d3f0f873385049d3 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/AppScope/app.json5" @@ -0,0 +1,11 @@ +{ + "app": { + "bundleName": "com.atomlab.atomlabshopping", + "vendor": "example", + "versionCode": 1000000, + "versionName": "1.0.0", + "icon": "$media:app_icon", + "label": "$string:app_name", + "distributedNotificationEnabled": true + } +} diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/AppScope/resources/base/element/string.json" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/AppScope/resources/base/element/string.json" new file mode 100644 index 0000000000000000000000000000000000000000..8aa18b9b1d4e167342e905a275533f05e99f31f3 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/AppScope/resources/base/element/string.json" @@ -0,0 +1,8 @@ +{ + "string": [ + { + "name": "app_name", + "value": "邮印象" + } + ] +} diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/AppScope/resources/base/media/app_icon.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/AppScope/resources/base/media/app_icon.png" new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/AppScope/resources/base/media/app_icon.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/README.md" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/README.md" new file mode 100644 index 0000000000000000000000000000000000000000..558808a87749113a7e8fd027752e2916bb770bc3 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/README.md" @@ -0,0 +1,124 @@ +# #HarmonyOS线上Codelabs挑战赛#【第三期】动起来 +# 一、序 +第二期还没有结束,HarmonyOS线上Codelabs系列挑战赛第三期又来了~~这一期的主题是[:玩转ArkUI动效](https://developer.huawei.com/consumer/cn/forum/topic/0202105184144967482)。 + +![](https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/227/622/407/0260086000227622407.20221209172048.59199713616493136336365826838019:50531208092939:2800:72339DCB9655FD99A1DB16BAC8301E10439F8928EDB74836EE2ABEC9518C323A.gif) +## 二、程序展示 +详情见第二期作品[#HarmonyOS线上Codelabs挑战赛#【第二期】三方库拓展的魅力](https://developer.huawei.com/consumer/cn/forum/topic/0201104173769490288) +这里重点内容: +1、显式动画 + +![](https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/227/622/407/0260086000227622407.20221209172233.12306633586790850340485145986452:50531208092939:2800:A80D6273BB84F154DC11F6972B248E53473B2C1F5E94E5F7B48C093F9310D0E1.gif) + +核心代码: + +```apache +animateTo( + { + delay: Common.DELAY_10, + tempo: Common.TEMPO, + iterations: 2, + duration: Common.DURATION_500, + curve: Curve.Smooth, + playMode: PlayMode.Normal + }, () => { + this.mainFlag = !this.mainFlag; + }) +``` + +2、属性动画 + +![](https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/227/622/407/0260086000227622407.20221209172321.00201262032292435636775401598697:50531208092939:2800:CB0712DA1BD99835BF2C7D1FCB2AE833066F1855B5F7925D692F0228B22591E5.gif) + +核心代码: + +```apache +.rotate({ + x: 0, + y: 1, + z: 0, + angle: this.mainFlag ? Common.ROTATE_ANGLE_180 : 0 + }) + .animation( + { + delay: Common.DELAY_10, + duration: Common.DURATION_1000, + iterations: 1, + curve: Curve.Smooth, + playMode: PlayMode.Normal + } + ) +``` + +3、Slider +效果见上图动画 +核心代码: + +```apache +Slider({ + value: this.quantity, + min: Common.IMAGES_MIN, + max: Common.IMAGES_TOTAL, + step: 1, + style: SliderStyle.InSet + }) + .blockColor(Color.White) + .selectedColor('#007DFF') + .margin({ + top: $r('app.float.size_5') + }) + .showSteps(true) + .trackThickness($r('app.float.size_20')) + .onChange((value: number) => { + this.quantity = value; + }) +``` + +## 三、知识点 +1、显式动画 +提供全局animateTo显式动画接口来指定由于闭包代码导致的状态变化插入过渡动效。 +![](https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/227/622/407/0260086000227622407.20221209170827.75036301101661735064808072713340:50531208092939:2800:6D012223001719D1E957E8E4B64AE66B6F8DDA9076EA0D2CF4A706541269C0CA.gif) + +```apache +animateTo({ + duration: 200, // 动画时长 + curve: Curve.Ease, // 动画曲线 + delay: 200, // 动画延迟 + iterations: 1, // 播放次数 + playMode: PlayMode.Normal, // 动画模式 + onFinish: () => { + console.info('play end') + } + }, () => { + this.widthSize = 200 + this.heightSize = 100 + }) +``` +2、属性动画 +组件的某些通用属性变化时,可以通过属性动画实现渐变效果,提升用户体验。支持的属性包括width、height、backgroundColor、opacity、scale、rotate、translate等。 +![](https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/227/622/407/0260086000227622407.20221209171001.00225718158152785105490953484292:50531208092939:2800:07FD568509066149CF52927E505701CB18DD47D82A6666F8F83BA177A2EB3216.gif) + +```apache +.animation({ + duration: 2000, // 动画时长 + curve: Curve.EaseOut, // 动画曲线 + delay: 500, // 动画延迟 + iterations: 1, // 播放次数 + playMode: PlayMode.Normal // 动画模式 + }) // 对Button组件的宽高属性进行动画配置 +``` +3、Slider +滑动条组件,通常用于快速调节设置值,如音量调节、亮度调节等应用场景。 +![](https://alliance-communityfile-drcn.dbankcdn.com/FileServer/getFile/cmtybbs/227/622/407/0260086000227622407.20221209171102.05931201760075033272472597192287:50531208092939:2800:C47F8B02F0ADDE147071820D412A751D0776736E911EEE65C7A7B2B0C82820D3.gif) + +```apache +Slider({ + value: this.vInSetValueOne, + style: SliderStyle.InSet, + direction: Axis.Vertical, + reverse: true // 竖向的Slider默认是上端是min值,下端是max值,因此想要从下往上滑动,需要设置reverse为true + }) +``` + +# 四、小结 +经过三期的学习,对Harmony开发有了新的认识,特别是Stage模型设计的概念和知识点又有了实践后的收获。在添加更多的特效之后,本应用AtomLabShopping越来越丰富了,希望以后能有更多的学习和挑战赛机会~ \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/build-profile.json5" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/build-profile.json5" new file mode 100644 index 0000000000000000000000000000000000000000..b8f6730ccd6bee0b9f8e2b856cb28510e95a1da3 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/build-profile.json5" @@ -0,0 +1,41 @@ +{ + "app": { + "signingConfigs": [ + { + "name": "default", + "type": "HarmonyOS", + "material": { + "certpath": "C:\\Users\\Administrator\\.ohos\\config\\auto_debug_AtomLabShopping_com.atomlab.atomlabshopping_260086000227622407.cer", + "storePassword": "0000001BCD8BF50F6E7D3DE4BB7D2FD0709C0FA0A2875CA1C10382D287F27525A61D72D950E36DF05404E2", + "keyAlias": "debugKey", + "keyPassword": "0000001BA94DA6679488E3C50D52DFEFCF920208BC31DC2F836F32120D9CF9572A36845A0AE85EE1496B7B", + "profile": "C:\\Users\\Administrator\\.ohos\\config\\auto_debug_AtomLabShopping_com.atomlab.atomlabshopping_260086000227622407.p7b", + "signAlg": "SHA256withECDSA", + "storeFile": "C:\\Users\\Administrator\\.ohos\\config\\auto_debug_AtomLabShopping_com.atomlab.atomlabshopping_260086000227622407.p12" + } + } + ], + "compileSdkVersion": 9, + "compatibleSdkVersion": 9, + "products": [ + { + "name": "default", + "signingConfig": "default", + } + ] + }, + "modules": [ + { + "name": "entry", + "srcPath": "./entry", + "targets": [ + { + "name": "default", + "applyToProducts": [ + "default" + ] + } + ] + } + ] +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/.gitignore" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/.gitignore" new file mode 100644 index 0000000000000000000000000000000000000000..5a6ba80fa3d9498a23ae8ae7d9518f8743fa8a96 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/.gitignore" @@ -0,0 +1,4 @@ +/node_modules +/.preview +/build +/.cxx \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/build-profile.json5" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/build-profile.json5" new file mode 100644 index 0000000000000000000000000000000000000000..20c75049f2d45e57d267899b6547c79fb6aa84c1 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/build-profile.json5" @@ -0,0 +1,14 @@ +{ + "apiType": 'stageMode', + "buildOption": { + }, + "targets": [ + { + "name": "default", + "runtimeOS": "HarmonyOS" + }, + { + "name": "ohosTest", + } + ] +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/hvigorfile.ts" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/hvigorfile.ts" new file mode 100644 index 0000000000000000000000000000000000000000..80e4ec5b81689f238c34614b167a0b9e9c83e8d9 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/hvigorfile.ts" @@ -0,0 +1,2 @@ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +export { hapTasks } from '@ohos/hvigor-ohos-plugin'; diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/package-lock.json" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/package-lock.json" new file mode 100644 index 0000000000000000000000000000000000000000..15bc7145be1490029883067847743ea7134cf545 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/package-lock.json" @@ -0,0 +1,5 @@ +{ + "name": "entry", + "version": "1.0.0", + "lockfileVersion": 1 +} diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/package.json" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/package.json" new file mode 100644 index 0000000000000000000000000000000000000000..c7685ac4e7c0d79df04c96744f0d8f22cb4a9025 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/package.json" @@ -0,0 +1,14 @@ +{ + "license": "ISC", + "devDependencies": {}, + "name": "entry", + "ohos": { + "org": "huawei", + "directoryLevel": "module", + "buildTool": "hvigor" + }, + "description": "example description", + "repository": {}, + "version": "1.0.0", + "dependencies": {} +} diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ets/pages/ProductDetailPage.js" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ets/pages/ProductDetailPage.js" new file mode 100644 index 0000000000000000000000000000000000000000..af518a04e034699c4b6bb9fd5c9a760a1d076582 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ets/pages/ProductDetailPage.js" @@ -0,0 +1 @@ +var _f5aea2d5fa7509f36fa1f924021d383b;\n/******/ (() => { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ \"../../../../../../../../../DevEcoStudioProjects/AtomLabShopping/entry/src/main/ets/model/ProductData.ets\":\n/*!****************************************************************************************************************!*\\\n !*** ../../../../../../../../../DevEcoStudioProjects/AtomLabShopping/entry/src/main/ets/model/ProductData.ets ***!\n \\****************************************************************************************************************/\n/***/ ((__unused_webpack_module, exports) => {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nexports.ProductData = exports.Category = void 0;\nlet __generate__Id = 0;\nfunction generateId() {\n return \"ProductData_\" + ++__generate__Id;\n}\n/*\n * Copyright (c) 2021 Huawei Device Co., Ltd.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nvar Category;\n(function (Category) {\n Category[Category[\"Post\"] = 0] = \"Post\";\n Category[Category[\"Pic\"] = 1] = \"Pic\";\n Category[Category[\"Date\"] = 2] = \"Date\";\n Category[Category[\"Pose\"] = 3] = \"Pose\";\n Category[Category[\"Class\"] = 4] = \"Class\";\n Category[Category[\"Cup\"] = 5] = \"Cup\";\n Category[Category[\"Show\"] = 6] = \"Show\";\n Category[Category[\"T\"] = 7] = \"T\";\n Category[Category[\"Z\"] = 8] = \"Z\";\n})(Category = exports.Category || (exports.Category = {}));\nlet NextId = 0;\nclass ProductData {\n constructor(name, image, category, price, size, fat, carbohydrates, vitaminC) {\n this.id = `${NextId++}`;\n this.name = name;\n this.image = image;\n this.category = category;\n this.price = price;\n this.size = size;\n this.fat = fat;\n this.carbohydrates = carbohydrates;\n this.vitaminC = vitaminC;\n }\n}\nexports.ProductData = ProductData;\n\n\n/***/ }),\n\n/***/ \"../../../../../../../../../DevEcoStudioProjects/AtomLabShopping/entry/src/main/ets/pages/ProductDetailPage.ets?entry\":\n/*!****************************************************************************************************************************!*\\\n !*** ../../../../../../../../../DevEcoStudioProjects/AtomLabShopping/entry/src/main/ets/pages/ProductDetailPage.ets?entry ***!\n \\****************************************************************************************************************************/\n/***/ (function(__unused_webpack_module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nlet __generate__Id = 0;\nfunction generateId() {\n return \"ProductDetailPage_\" + ++__generate__Id;\n}\n/*\n * Copyright (c) 2021 Huawei Device Co., Ltd.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n__webpack_require__(/*! @ohos.application.context */ \"../../api/@ohos.application.context.d.ts\");\n__webpack_require__(/*! ../model/ProductData */ \"../../../../../../../../../DevEcoStudioProjects/AtomLabShopping/entry/src/main/ets/model/ProductData.ets\");\nconst ProductDetailViewModel_1 = __importDefault(__webpack_require__(/*! ../viewmodel/ProductDetailViewModel */ \"../../../../../../../../../DevEcoStudioProjects/AtomLabShopping/entry/src/main/ets/viewmodel/ProductDetailViewModel.ets\"));\nlet viewModel = new ProductDetailViewModel_1.default();\nconst KEY = 'ProductData';\nlet productItem = AppStorage.Get(KEY);\nclass PageTitle extends View {\n constructor(compilerAssignedUniqueChildId, parent, params) {\n super(compilerAssignedUniqueChildId, parent);\n this.updateWithValueParams(params);\n }\n updateWithValueParams(params) {\n }\n aboutToBeDeleted() {\n SubscriberManager.Get().delete(this.id());\n }\n render() {\n // Row() {\n // Image($r('app.media.arrow'))\n // .width(21.8)\n // .height(19.6)\n //// .key('back')\n // Text('产品详情')\n // .fontSize(21.8)\n // .margin({ left: 17.4 })\n // }\n // .alignItems(VerticalAlign.Top)\n // .height(61)\n // .backgroundColor('#FFedf2f5')\n // .padding({ top: 13, bottom: 15, left: 28.3 })\n // .onClick(() => {\n // router.back()\n // })\n Row.create();\n // Row() {\n // Image($r('app.media.arrow'))\n // .width(21.8)\n // .height(19.6)\n //// .key('back')\n // Text('产品详情')\n // .fontSize(21.8)\n // .margin({ left: 17.4 })\n // }\n // .alignItems(VerticalAlign.Top)\n // .height(61)\n // .backgroundColor('#FFedf2f5')\n // .padding({ top: 13, bottom: 15, left: 28.3 })\n // .onClick(() => {\n // router.back()\n // })\n Row.width('100%');\n // Row() {\n // Image($r('app.media.arrow'))\n // .width(21.8)\n // .height(19.6)\n //// .key('back')\n // Text('产品详情')\n // .fontSize(21.8)\n // .margin({ left: 17.4 })\n // }\n // .alignItems(VerticalAlign.Top)\n // .height(61)\n // .backgroundColor('#FFedf2f5')\n // .padding({ top: 13, bottom: 15, left: 28.3 })\n // .onClick(() => {\n // router.back()\n // })\n Row.height(56);\n // Row() {\n // Image($r('app.media.arrow'))\n // .width(21.8)\n // .height(19.6)\n //// .key('back')\n // Text('产品详情')\n // .fontSize(21.8)\n // .margin({ left: 17.4 })\n // }\n // .alignItems(VerticalAlign.Top)\n // .height(61)\n // .backgroundColor('#FFedf2f5')\n // .padding({ top: 13, bottom: 15, left: 28.3 })\n // .onClick(() => {\n // router.back()\n // })\n Row.backgroundColor(Color.White);\n Image.create({ \"id\": 16777298, \"type\": 20000, params: [], \"bundleName\": \"com.atomlab.atomlabshopping\", \"moduleName\": \"entry\" });\n Image.width('8%');\n Image.height('50%');\n Image.objectFit(ImageFit.Contain);\n Image.margin({ left: 10 });\n Image.onClick(() => {\n let handler = getContext(this);\n handler.terminateSelf();\n });\n Image.rotate({ y: 1, angle: 180 });\n Text.create('产品详情');\n Text.fontSize(20);\n Text.fontColor(Color.Black);\n Text.margin({ left: 10 });\n Text.pop();\n // Row() {\n // Image($r('app.media.arrow'))\n // .width(21.8)\n // .height(19.6)\n //// .key('back')\n // Text('产品详情')\n // .fontSize(21.8)\n // .margin({ left: 17.4 })\n // }\n // .alignItems(VerticalAlign.Top)\n // .height(61)\n // .backgroundColor('#FFedf2f5')\n // .padding({ top: 13, bottom: 15, left: 28.3 })\n // .onClick(() => {\n // router.back()\n // })\n Row.pop();\n }\n}\nclass ProductImageDisplay extends View {\n constructor(compilerAssignedUniqueChildId, parent, params) {\n super(compilerAssignedUniqueChildId, parent);\n this.productItem = undefined;\n this.updateWithValueParams(params);\n }\n updateWithValueParams(params) {\n if (params.productItem !== undefined) {\n this.productItem = params.productItem;\n }\n }\n aboutToBeDeleted() {\n SubscriberManager.Get().delete(this.id());\n }\n render() {\n Stack.create({ alignContent: Alignment.BottomStart });\n Stack.backgroundColor({ \"id\": 16777281, \"type\": 10001, params: [], \"bundleName\": \"com.atomlab.atomlabshopping\", \"moduleName\": \"entry\" });\n Stack.height(480);\n Image.create(this.productItem.image);\n Image.objectFit(ImageFit.Auto);\n Stack.pop();\n }\n}\nclass ContentTable extends View {\n constructor(compilerAssignedUniqueChildId, parent, params) {\n super(compilerAssignedUniqueChildId, parent);\n this.productItem = undefined;\n this.updateWithValueParams(params);\n }\n updateWithValueParams(params) {\n if (params.productItem !== undefined) {\n this.productItem = params.productItem;\n }\n }\n aboutToBeDeleted() {\n SubscriberManager.Get().delete(this.id());\n }\n IngredientItem(title, name, value, parent = undefined) {\n Row.create();\n Text.create(title);\n Text.fontSize(17.4);\n Text.fontWeight(FontWeight.Bold);\n Text.layoutWeight(1);\n Text.pop();\n Row.create();\n Row.width('100%');\n Row.alignItems(VerticalAlign.Center);\n Row.layoutWeight(2);\n Text.create(name);\n Text.fontSize(17.4);\n Text.flexGrow(1);\n Text.pop();\n Text.create(value);\n Text.fontSize(17.4);\n Text.pop();\n Row.pop();\n Row.pop();\n }\n render() {\n Column.create();\n Column.alignItems(HorizontalAlign.Start);\n Column.padding({ top: 20, right: 20, left: 20 });\n Column.height(250);\n this.IngredientItem(' ', '名称', this.productItem.name + '', this);\n this.IngredientItem(' ', '价格', this.productItem.price + '元', this);\n this.IngredientItem(' ', '尺寸', this.productItem.size + 'mm', this);\n Column.pop();\n }\n}\nclass ProductDetailPage extends View {\n constructor(compilerAssignedUniqueChildId, parent, params) {\n super(compilerAssignedUniqueChildId, parent);\n this.productItem = undefined;\n this.updateWithValueParams(params);\n }\n updateWithValueParams(params) {\n if (params.productItem !== undefined) {\n this.productItem = params.productItem;\n }\n }\n aboutToBeDeleted() {\n SubscriberManager.Get().delete(this.id());\n }\n aboutToAppear() {\n this.productItem = (productItem);\n }\n render() {\n Column.create();\n Column.alignItems(HorizontalAlign.Center);\n Column.width('100%');\n Column.height('100%');\n Column.backgroundColor({ \"id\": 16777281, \"type\": 10001, params: [], \"bundleName\": \"com.atomlab.atomlabshopping\", \"moduleName\": \"entry\" });\n Stack.create({ alignContent: Alignment.TopStart });\n let earlierCreatedChild_2 = (this && this.findChildById) ? this.findChildById(\"2\") : undefined;\n if (earlierCreatedChild_2 == undefined) {\n View.create(new ProductImageDisplay(\"2\", this, { productItem: this.productItem }));\n }\n else {\n earlierCreatedChild_2.updateWithValueParams({\n productItem: this.productItem\n });\n if (!earlierCreatedChild_2.needsUpdate()) {\n earlierCreatedChild_2.markStatic();\n }\n View.create(earlierCreatedChild_2);\n }\n let earlierCreatedChild_3 = (this && this.findChildById) ? this.findChildById(\"3\") : undefined;\n if (earlierCreatedChild_3 == undefined) {\n View.create(new PageTitle(\"3\", this, {}));\n }\n else {\n earlierCreatedChild_3.updateWithValueParams({});\n if (!earlierCreatedChild_3.needsUpdate()) {\n earlierCreatedChild_3.markStatic();\n }\n View.create(earlierCreatedChild_3);\n }\n Stack.pop();\n let earlierCreatedChild_4 = (this && this.findChildById) ? this.findChildById(\"4\") : undefined;\n if (earlierCreatedChild_4 == undefined) {\n View.create(new ContentTable(\"4\", this, { productItem: this.productItem }));\n }\n else {\n earlierCreatedChild_4.updateWithValueParams({\n productItem: this.productItem\n });\n if (!earlierCreatedChild_4.needsUpdate()) {\n earlierCreatedChild_4.markStatic();\n }\n View.create(earlierCreatedChild_4);\n }\n Column.pop();\n }\n}\nloadDocument(new ProductDetailPage(\"1\", undefined, {}));\n\n\n/***/ }),\n\n/***/ \"../../../../../../../../../DevEcoStudioProjects/AtomLabShopping/entry/src/main/ets/viewmodel/ProductDetailViewModel.ets\":\n/*!*******************************************************************************************************************************!*\\\n !*** ../../../../../../../../../DevEcoStudioProjects/AtomLabShopping/entry/src/main/ets/viewmodel/ProductDetailViewModel.ets ***!\n \\*******************************************************************************************************************************/\n/***/ ((__unused_webpack_module, exports, __webpack_require__) => {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", ({ value: true }));\nlet __generate__Id = 0;\nfunction generateId() {\n return \"ProductDetailViewModel_\" + ++__generate__Id;\n}\n__webpack_require__(/*! ../model/ProductData */ \"../../../../../../../../../DevEcoStudioProjects/AtomLabShopping/entry/src/main/ets/model/ProductData.ets\");\n/*\n * Copyright (c) 2022 Huawei Device Co., Ltd.\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nclass ProductDetailViewModel {\n loadDetails(productItem) {\n return productItem;\n }\n}\nexports[\"default\"] = ProductDetailViewModel;\n\n\n/***/ }),\n\n/***/ \"../../api/@ohos.application.context.d.ts\":\n/*!************************************************!*\\\n !*** ../../api/@ohos.application.context.d.ts ***!\n \\************************************************/\n/***/ (() => {\n\n\n\n/***/ })\n\n/******/ \t});\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\tvar commonCachedModule = globalThis[\"__common_module_cache___f5aea2d5fa7509f36fa1f924021d383b\"] ? globalThis[\"__common_module_cache___f5aea2d5fa7509f36fa1f924021d383b\"][moduleId]: null;\n/******/ \t\tif (commonCachedModule) { return commonCachedModule.exports; }\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\tfunction isCommonModue(moduleId) {\n/******/ \t\t if (globalThis[\"webpackChunk_f5aea2d5fa7509f36fa1f924021d383b\"]) {\n/******/ \t\t const length = globalThis[\"webpackChunk_f5aea2d5fa7509f36fa1f924021d383b\"].length;\n/******/ \t\t switch (length) {\n/******/ \t\t case 1:\n/******/ \t\t return globalThis[\"webpackChunk_f5aea2d5fa7509f36fa1f924021d383b\"][0][1][moduleId];\n/******/ \t\t case 2:\n/******/ \t\t return globalThis[\"webpackChunk_f5aea2d5fa7509f36fa1f924021d383b\"][0][1][moduleId] ||\n/******/ \t\t globalThis[\"webpackChunk_f5aea2d5fa7509f36fa1f924021d383b\"][1][1][moduleId];\n/******/ \t\t }\n/******/ \t\t }\n/******/ \t\t return undefined;\n/******/ \t\t }\n/******/ \t\tif (globalThis[\"__common_module_cache___f5aea2d5fa7509f36fa1f924021d383b\"] && String(moduleId).indexOf(\"?name=\") < 0 && isCommonModue(moduleId)) {\n/******/ \t\t globalThis[\"__common_module_cache___f5aea2d5fa7509f36fa1f924021d383b\"][moduleId] = module;\n/******/ \t\t}\n/******/ \t\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t\n/******/ \t// startup\n/******/ \t// Load entry module and return exports\n/******/ \t// This entry module is referenced by other modules so it can't be inlined\n/******/ \tvar __webpack_exports__ = __webpack_require__(\"../../../../../../../../../DevEcoStudioProjects/AtomLabShopping/entry/src/main/ets/pages/ProductDetailPage.ets?entry\");\n/******/ \t_f5aea2d5fa7509f36fa1f924021d383b = __webpack_exports__;\n/******/ \t\n/******/ })()\n;\n//# sourceMappingURL=ProductDetailPage.js.map \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/DetailsAbility/DetailsAbility.ts" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/DetailsAbility/DetailsAbility.ts" new file mode 100644 index 0000000000000000000000000000000000000000..5e2886ea51e558614a51d7fbf0559602c7a97ba2 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/DetailsAbility/DetailsAbility.ts" @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; +import Ability from '@ohos.application.Ability'; + +const TAG: string = 'DetailsAbility'; +const KEY: string = 'GoodsPosition'; +const DETAIL_ABILITY_DOMAIN = 0x00002; + +export default class DetailsAbility extends Ability { + onCreate(want, launchParam) { + let index: number = want?.parameters?.position; + AppStorage.SetOrCreate(KEY, index); + hilog.info(DETAIL_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onCreate'); + } + + onDestroy() { + hilog.info(DETAIL_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onDestroy'); + } + + onWindowStageCreate(windowStage) { + // Main window is created, set main page for this ability + hilog.info(0x0000, TAG, '%{public}s', 'Ability onWindowStageCreate'); + + windowStage.loadContent('pages/DetailsPage', (err, data) => { + if (err.code) { + hilog.error(DETAIL_ABILITY_DOMAIN, TAG, 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); + return; + } + hilog.info(DETAIL_ABILITY_DOMAIN, TAG, 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? ''); + }); + } + + onWindowStageDestroy() { + // Main window is destroyed, release UI related resources + hilog.info(DETAIL_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onWindowStageDestroy'); + } + + onForeground() { + // Ability has brought to foreground + hilog.info(DETAIL_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onForeground'); + } + + onBackground() { + // Ability has back to background + hilog.info(DETAIL_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onBackground'); + } +}; diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/DetailsAbility/HomePictureAbility.ts" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/DetailsAbility/HomePictureAbility.ts" new file mode 100644 index 0000000000000000000000000000000000000000..96cb0a55dba24589affb5600db39a2d33e1aa451 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/DetailsAbility/HomePictureAbility.ts" @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; +import Ability from '@ohos.application.Ability'; + +const TAG: string = 'HomePictureAbility'; +const KEY: string = 'HomePicturePosition'; +const HOME_PICTURE_ABILITY_DOMAIN = 0x00009; + +export default class HomePictureAbility extends Ability { + onCreate(want, launchParam) { + let imageUrl: number = want?.parameters?.data; + AppStorage.SetOrCreate(KEY, imageUrl); + hilog.info(HOME_PICTURE_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onCreate'); + } + + onDestroy() { + hilog.info(HOME_PICTURE_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onDestroy'); + } + + onWindowStageCreate(windowStage) { + // Main window is created, set main page for this ability + hilog.info(0x0000, TAG, '%{public}s', 'Ability onWindowStageCreate'); + + windowStage.loadContent('pages/HomePicturePage', (err, data) => { + if (err.code) { + hilog.error(HOME_PICTURE_ABILITY_DOMAIN, TAG, 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); + return; + } + hilog.info(HOME_PICTURE_ABILITY_DOMAIN, TAG, 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? ''); + }); + } + + onWindowStageDestroy() { + // Main window is destroyed, release UI related resources + hilog.info(HOME_PICTURE_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onWindowStageDestroy'); + } + + onForeground() { + // Ability has brought to foreground + hilog.info(HOME_PICTURE_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onForeground'); + } + + onBackground() { + // Ability has back to background + hilog.info(HOME_PICTURE_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onBackground'); + } +}; diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/DetailsAbility/ModelDetailAbility.ts" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/DetailsAbility/ModelDetailAbility.ts" new file mode 100644 index 0000000000000000000000000000000000000000..203e3ad0ae7730fb844aa7f5c4134760ba4b8946 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/DetailsAbility/ModelDetailAbility.ts" @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; +import Ability from '@ohos.application.Ability'; + +const TAG: string = 'ModelDetailAbility'; +const KEY: string = 'ModelDetailPosition'; +const MODEL_DETAIL_ABILITY_DOMAIN = 0x00008; + +export default class ModelDetailAbility extends Ability { + onCreate(want, launchParam) { + let imageUrl: string = want?.parameters?.data; + AppStorage.SetOrCreate(KEY, imageUrl); + hilog.info(MODEL_DETAIL_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onCreate'); + } + + onDestroy() { + hilog.info(MODEL_DETAIL_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onDestroy'); + } + + onWindowStageCreate(windowStage) { + // Main window is created, set main page for this ability + hilog.info(0x0000, TAG, '%{public}s', 'Ability onWindowStageCreate'); + + windowStage.loadContent('pages/ModelDetailPage', (err, data) => { + if (err.code) { + hilog.error(MODEL_DETAIL_ABILITY_DOMAIN, TAG, 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); + return; + } + hilog.info(MODEL_DETAIL_ABILITY_DOMAIN, TAG, 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? ''); + }); + } + + onWindowStageDestroy() { + // Main window is destroyed, release UI related resources + hilog.info(MODEL_DETAIL_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onWindowStageDestroy'); + } + + onForeground() { + // Ability has brought to foreground + hilog.info(MODEL_DETAIL_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onForeground'); + } + + onBackground() { + // Ability has back to background + hilog.info(MODEL_DETAIL_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onBackground'); + } +}; diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/DetailsAbility/ProductListAbility.ts" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/DetailsAbility/ProductListAbility.ts" new file mode 100644 index 0000000000000000000000000000000000000000..b1ffca3c275895390f8ff88991413991b187fa0e --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/DetailsAbility/ProductListAbility.ts" @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; +import Ability from '@ohos.application.Ability'; + +const TAG: string = 'ProductListAbility'; +const KEY: string = 'ProductPosition'; +const PRODUCT_LIST_ABILITY_DOMAIN = 0x00007; + +export default class ProductListAbility extends Ability { + onCreate(want, launchParam) { + let imageUrl: string = want?.parameters?.imageUrl; + AppStorage.SetOrCreate(KEY, imageUrl); + hilog.info(PRODUCT_LIST_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onCreate'); + } + + onDestroy() { + hilog.info(PRODUCT_LIST_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onDestroy'); + } + + onWindowStageCreate(windowStage) { + // Main window is created, set main page for this ability + hilog.info(0x0000, TAG, '%{public}s', 'Ability onWindowStageCreate'); + + windowStage.loadContent('pages/ProductListPage', (err, data) => { + if (err.code) { + hilog.error(PRODUCT_LIST_ABILITY_DOMAIN, TAG, 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); + return; + } + hilog.info(PRODUCT_LIST_ABILITY_DOMAIN, TAG, 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? ''); + }); + } + + onWindowStageDestroy() { + // Main window is destroyed, release UI related resources + hilog.info(PRODUCT_LIST_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onWindowStageDestroy'); + } + + onForeground() { + // Ability has brought to foreground + hilog.info(PRODUCT_LIST_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onForeground'); + } + + onBackground() { + // Ability has back to background + hilog.info(PRODUCT_LIST_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onBackground'); + } +}; diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/ProductDetailAbility/ProductDetailAbility.ts" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/ProductDetailAbility/ProductDetailAbility.ts" new file mode 100644 index 0000000000000000000000000000000000000000..93aabb6f7dc661d2bac45a744882f72315087fdf --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/ProductDetailAbility/ProductDetailAbility.ts" @@ -0,0 +1,63 @@ +import { ProductData } from '../model/ProductData'; + +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; +import Ability from '@ohos.application.Ability'; + +const TAG: string = 'ProductDetailAbility'; +const KEY: string = 'ProductData'; +const PRODUCT_DETAIL_ABILITY_DOMAIN = 0x00006; + +export default class ProductDetailAbility extends Ability { + onCreate(want, launchParam) { + let productItem: ProductData = want?.parameters?.productData; + AppStorage.SetOrCreate(KEY, productItem); + hilog.info(PRODUCT_DETAIL_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onCreate'); + } + + onDestroy() { + hilog.info(PRODUCT_DETAIL_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onDestroy'); + } + + onWindowStageCreate(windowStage) { + // Main window is created, set main page for this ability + hilog.info(0x0000, TAG, '%{public}s', 'Ability onWindowStageCreate'); + + windowStage.loadContent('pages/DetailsPage', (err, data) => { + if (err.code) { + hilog.error(PRODUCT_DETAIL_ABILITY_DOMAIN, TAG, 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); + return; + } + hilog.info(PRODUCT_DETAIL_ABILITY_DOMAIN, TAG, 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? ''); + }); + } + + onWindowStageDestroy() { + // Main window is destroyed, release UI related resources + hilog.info(PRODUCT_DETAIL_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onWindowStageDestroy'); + } + + onForeground() { + // Ability has brought to foreground + hilog.info(PRODUCT_DETAIL_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onForeground'); + } + + onBackground() { + // Ability has back to background + hilog.info(PRODUCT_DETAIL_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onBackground'); + } +}; diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/bean/BannerData.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/bean/BannerData.ets" new file mode 100644 index 0000000000000000000000000000000000000000..13f364912be1a0164df057ed455392a9c53a6cc2 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/bean/BannerData.ets" @@ -0,0 +1,21 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * BannerData is used to initialize the BannerComponent. + */ +export default class BannerData { + imgSrc: Resource; +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/bean/GoodsData.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/bean/GoodsData.ets" new file mode 100644 index 0000000000000000000000000000000000000000..f2a3e00f37110126663453324234961e287a285e --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/bean/GoodsData.ets" @@ -0,0 +1,28 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * GoodsData is used to initialize the GoodsComponent. + */ +export default class GoodsData { + goodsName: Resource; + price: string; + count: number; + originalPrice: string; + discounts: Resource; + label: Resource; + goodsImg: Resource; + goodsDescription: Resource; +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/bean/GoodsServiceData.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/bean/GoodsServiceData.ets" new file mode 100644 index 0000000000000000000000000000000000000000..6f7e1d69747622b73116b58470d853207f252186 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/bean/GoodsServiceData.ets" @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * GoodsData is used to initialize ServicesComponent. + */ +export default class GoodsServiceData { + id: number; + name: Resource; + description: Resource; +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/bean/IconItem.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/bean/IconItem.ets" new file mode 100644 index 0000000000000000000000000000000000000000..0532b9697d4206836b88d91091a20a4df3dfc9cb --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/bean/IconItem.ets" @@ -0,0 +1,26 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License,Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export default class IconItem { + index: number = 0; + clicked: boolean = false; + image: Resource = $r('app.media.app_icon'); + + constructor(index: number, image: Resource, clicked: boolean) { + this.index = index; + this.image = image; + this.clicked = clicked; + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/bean/MenuData.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/bean/MenuData.ets" new file mode 100644 index 0000000000000000000000000000000000000000..8a30e9a5337f8ec4398af0c45c934c4d891b87d8 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/bean/MenuData.ets" @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * MenuData is used to initialize MenusComponent. + */ +export default class MenuData { + menuName: Resource; + menuContent: Resource; + fontWeight: string; + fontColor: string; +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/bean/Point.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/bean/Point.ets" new file mode 100644 index 0000000000000000000000000000000000000000..0a566de05727d1181a96426dfef6fe43298980ad --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/bean/Point.ets" @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License,Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export default class Point { + public x: number = 0; + public y: number = 0; + + constructor(x: number, y: number) { + this.x = x; + this.y = y; + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/bean/ToolBarData.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/bean/ToolBarData.ets" new file mode 100644 index 0000000000000000000000000000000000000000..568009c17e21a624928aaacd067af0c2cdd2524a --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/bean/ToolBarData.ets" @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * ToolBarData is used to initialize ToolBarComponent. + */ +export default class ToolBarData { + num: number; + text: Resource; + icon_after: Resource; + icon: Resource; +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/constants/CommonConst.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/constants/CommonConst.ets" new file mode 100644 index 0000000000000000000000000000000000000000..5661df2cc5e0588f11cecc5ac8e6f834651c05d3 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/constants/CommonConst.ets" @@ -0,0 +1,71 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License,Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export class CommonConstants { + /** + * The space of column component. + */ + static readonly SPACE_12 = 12; + + /** + * The font weight of needed component. + */ + static readonly FONT_WEIGHT_400 = 400; + + /** + * The opacity of needed component. + */ + static readonly OPACITY_4 = 0.4; + static readonly OPACITY_6 = 0.6; + + /** + * The ratio of component's width and height. + */ + static readonly ASPECT_RATIO_176 = 1.76; + static readonly ASPECT_RATIO_100 = 1.00; + + /** + * The percent of component's width and height. + */ + static readonly CONTAINER_WIDTH = '100%' + static readonly CONTAINER_HALF_WIDTH = '49%' + static readonly CONTAINER_HEIGHT = '100%' + static readonly BAR_WIDTH = '80%' + + /** + * The logger tag of outer component. + */ + static readonly OUTER_TAG = 'Outer'; + + /** + * The order number of tab component. + */ + static readonly FIRST_TAB = 0; + static readonly SECOND_TAB = 1; + + /** + * The animate name of the third library. + */ + static readonly ANIMATE_NAME = 'data'; + + /** + * The zero frame of the third library. + */ + static readonly ZERO_FRAME = 0; + static readonly LAST_FRAME = 60; +} + + + diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/constants/Const.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/constants/Const.ets" new file mode 100644 index 0000000000000000000000000000000000000000..4b19a98d5ae4696cd7eee851283930abc8a9533d --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/constants/Const.ets" @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License,Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +const IMAGE_ARR = [ + $r('app.media.date31'), + $r('app.media.date32'), + $r('app.media.date33'), + $r('app.media.date34'), + $r('app.media.date35'), + $r('app.media.date36') +]; + +export default class Common { + static readonly IMAGE_RESOURCE: Resource[] = IMAGE_ARR; + static readonly IMAGES_TOTAL: number = IMAGE_ARR.length; + static readonly IMAGES_MIN: number = 1; + static readonly IMAGES_NOM: number = 2; + static readonly ROTATE_ANGLE_180: number = 180; + static readonly ROTATE_ANGLE_360: number = 360; + static readonly DELAY_10: number = 10; + static readonly DEFAULT_FULL_WIDTH: string = '100%'; + static readonly DEFAULT_FULL_HEIGHT: string = '100%'; + static readonly ICON_WIDTH: number = 58; + static readonly ICON_HEIGHT: number = 58; + + static readonly CONTROLLER_WIDTH: string = '97vp'; + static readonly CONTROLLER_HEIGHT: string = '336vp'; + static readonly FONT_WEIGHT_500: number = 500; + + static readonly OPACITY_06: number = 0.6; + static readonly OFFSET_RADIUS: number = 145; + + static readonly INIT_SCALE: number = 0.75; + static readonly DURATION_500: number = 500; + static readonly TEMPO: number = 0.68; + + static readonly SCALE_RATIO: number = 1.25; + static readonly DURATION_1000: number = 1000; +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/constants/Constants.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/constants/Constants.ets" new file mode 100644 index 0000000000000000000000000000000000000000..0968a9f981df4bab51d5708eedb4ebe88057db99 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/constants/Constants.ets" @@ -0,0 +1,247 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * The font weight of application. + */ +enum AppFontWeight { + BOLD = '400', + BOLDER = '500', +}; + +/** + * The font size of application. + */ +enum AppFontSize { + SMALLER = 13, + SMALL = 14, + MIDDLE = 16, + LARGE = 20, + LARGER = 35, +}; + +export { AppFontSize, AppFontWeight }; + +/** + * The percentage of 100. + */ +export const CAR_KEY = 'CarGoodsData'; +/** + * The percentage of 100. + */ +export const PERCENTAGE_100 = '100%'; + +/** + * The percentage of 20. + */ +export const PERCENTAGE_20 = '20%'; + +/** + * The percentage of 50. + */ +export const PERCENTAGE_50 = '50%'; + +/** + * The style of CardComponent. + */ +export const CardStyle = { + /** + * The horizontal margin of CardComponent. + */ + CARD_MARGIN_HORIZONTAL: 16, + + /** + * The top margin of CardComponent. + */ + CARD_MARGIN_TOP: 24, + + /** + * The vertical padding of CardComponent. + */ + CARD_PADDING_VERTICAL: 25, + + /** + * The horizontal padding of CardComponent. + */ + CARD_PADDING_HORIZONTAL: 16, + + /** + * The border radius of CardComponent. + */ + CARD_RADIUS: 18, +}; + +/** + * The style of BalanceComponent. + */ +export const BalanceStyle = { + /** + * The layout weight of BalanceComponent. + */ + LAYOUT_WEIGHT: 1, + + LAYOUT_WEIGHT_MAX: 10, +}; + +/** + * The style of ToolBarComponent. + */ +export const ToolBarStyle = { + /** + * The bottom margin. + */ + MARGIN_BOTTOM: 10, + + /** + * The size of image. + */ + IMAGE_SIZE: 24, + + /** + * The weight of layout. + */ + LAYOUT_WEIGHT: '25%', + + /** + * The height of divider. + */ + DIVIDER_HEIGHT: 0.5, + + /** + * The opacity of divider. + */ + DIVIDER_OPACITY: 0.05 +}; + +/** + * The style of NavPage. + */ +export const NavPageStyle = { + /** + * The height of Tabs. + */ + BAR_HEIGHT: 0, + + /** + * The default position of Tabs. + */ + POSITION_INITIAL: 0, +}; + +/** + * The style of HomePage. + */ +export const HomePageStyle = { + /** + * The vertical padding. + */ + PADDING_VERTICAL: 8, + + /** + * The horizontal padding. + */ + PADDING_HORIZONTAL: 16, + + /** + * The height of blank. + */ + BLANK_HEIGHT: 15, +}; + +/** + * The style of DetailsPage. + */ +export const DetailsPageStyle = { + /** + * The size of top image. + */ + TOP_IMAGE_SIZE: 32, + + /** + * The margin of top. + */ + MARGIN_TOP_LAYOUT: 16, + + /** + * The top margin of title. + */ + TITLE_MARGIN_TOP: 4, + + /** + * The bottom margin of title. + */ + TITLE_MARGIN_BOTTOM: 20, + + /** + * The height of divider. + */ + DIVIDER_HEIGHT: 0.25, + + /** + * The left margin of divider. + */ + DIVIDER_MARGIN_LEFT: '12%', + + /** + * The top margin of divider. + */ + DIVIDER_MARGIN_TOP: 10, + + /** + * The bottom margin of divider. + */ + DIVIDER_MARGIN_BOTTOM: 18, + + /** + * The top margin of comment list. + */ + COMMENT_LIST_MARGIN_TOP: 10, + + /** + * The height of top layout. + */ + TOP_LAYOUT_HEIGHT: '45%', + + /** + * The height of scroll layout. + */ + SCROLL_LAYOUT_WEIGHT: '93%', + + /** + * The weight of tool bar layout. + */ + TOOLBAR_WEIGHT: '7%', + + /** + * The image size for more action. + */ + IMAGE_SIZE_MORE: 14, +}; + + + + + + + + + + + + + + + + diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/constants/DetailsConstants.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/constants/DetailsConstants.ets" new file mode 100644 index 0000000000000000000000000000000000000000..2ea238ed5490bccb6e2446eb93b8937b130cd55e --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/constants/DetailsConstants.ets" @@ -0,0 +1,379 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * The constant of GoodsTitleComponent. + */ +export const GoodsTitle = { + /** + * The max lines of title text. + */ + MAX_LINE: 2, + /** + * The line height of title text. + */ + LINE_HEIGHT: 32, +}; + +/** + * The constant of PanelComponent. + */ +export const ActionPanel = { + + /** + * The image height of PanelComponent. + */ + IMAGE_HEIGHT: 18, + + /** + * The blank width of PanelComponent. + */ + BLANK_WIDTH: 4, +}; + +/** + * The constant of AddressComponent. + */ +export const AddressPicker = { + + /** + * The size of image to show loaction. + */ + IMAGE_SIZE_LOCATION: 18, + + /** + * The image size for more operations. + */ + IMAGE_SIZE_MORE: 14, + + /** + * The max lines. + */ + MAX_LINES: 1, + + /** + * The layout weight of left. + */ + LAYOUT_WEIGHT_LEFT: '12%', + + /** + * The layout weight of center. + */ + LAYOUT_WEIGHT_CENTER: '80%', + + /** + * The layout weight of right. + */ + LAYOUT_WEIGHT_RIGHT: '8%', + + /** + * The margin of right image. + */ + MARGIN_RIGHT_IMAGE: '2%', +}; + +/** + * The constant of CommentsComponent. + */ +export const CommentList = { + + /** + * The space of List. + */ + SPACE: 5, + + /** + * The image size of head portrait. + */ + IMAGE_SIZE_HEAD_PORTRAIT: 45, + + /** + * The margin of head portrait. + */ + MARGIN_HEAD_PORTRAIT: 16, + + /** + * The line height of phone number text. + */ + LINE_HEIGHT_PHONE: 32, + + /** + * The blank height of phone number text. + */ + BLANK_HEIGHT_PHONE: 6, + + /** + * The width of blank. + */ + MARK_BLANK_WIDTH: 15, + + /** + * The width of image. + */ + IMAGE_MARK_WIDTH: 20, + + /** + * The max lines. + */ + COMMENT_MAX_LINES: 1, + + /** + * The line height. + */ + COMMENT_LINE_HEIGHT: 26, + + /** + * The margin of text. + */ + MARGIN_TEXT: 5, + + /** + * The height of List. + */ + HEIGHT: '40%', +}; + +/** + * The constant of CommentsHeaderComponent. + */ +export const CommentHeader = { + + /** + * The layout weight. + */ + LAYOUT_WEIGHT: '50%', + + /** + * The arrow text. + */ + ARROW: ' >', + + /** + * The line height. + */ + LINE_HEIGHT: 20, +}; + +/** + * The constant of BottomBarComponent. + */ +export const BottomBar = { + + /** + * The height of divider. + */ + DIVIDER_HEIGHT: 0.5, + + /** + * The line height of text. + */ + TEXT_LINE_HEIGHT: 20, + + /** + * The width of container. + */ + CONTAINER_SIZE_WIDTH: 195, + + /** + * The height of container. + */ + CONTAINER_SIZE_HEIGHT: 40, + + /** + * The padding of right. + */ + BAR_PADDING_RIGHT: 12, + + /** + * The padding of top. + */ + BAR_PADDING_TOP: 9, + + /** + * The padding of bottom. + */ + BAR_PADDING_BOTTOM: 7, + + /** + * The width of text. + */ + TEXT_WIDTH: '50%', +}; + +/** + * The constant of PickerComponent. + */ +export const GoodsPicker = { + + /** + * The line height of GoodsPicker text. + */ + LINE_HEIGHT_TEXT_SELECTED: 25, + + /** + * The max lines. + */ + MAX_LINES: 2, + + /** + * The lines height of description text. + */ + LINE_HEIGHT_DESCRIPTION: 25, + + /** + * The left margin of description text. + */ + MARGIN_LEFT_DESCRIPTION: 15, + + /** + * The left weight of layout. + */ + LAYOUT_WEIGHT_LEFT: '10%', + + /** + * The center weight of layout. + */ + LAYOUT_WEIGHT_CENTER: '80%', + + /** + * The right weight of layout. + */ + LAYOUT_WEIGHT_RIGHT: '10%', +}; + +/** + * The constant of PreviewerComponent. + */ +export const GoodsPreviewer = { + /** + * The bottom padding of image. + */ + PADDING_IMAGE_BOTTOM: 40, + + /** + * The top padding of image. + */ + PADDING_IMAGE_TOP: 20, + + /** + * The text of indicator. + */ + INDICATOR_TEXT: '1/4', + + /** + * The right margin of indicator. + */ + INDICATOR_MARGIN_RIGHT: 24, + + /** + * The bottom margin of indicator. + */ + INDICATOR_MARGIN_BOTTOM: 17, + + /** + * The horizontal padding of indicator. + */ + INDICATOR_PADDING_HORIZONTAL: 10, + + /** + * The top padding of indicator. + */ + INDICATOR_PADDING_TOP: 3, + + /** + * The bottom padding of indicator. + */ + INDICATOR_PADDING_BOTTOM: 2, + + /** + * The border radius. + */ + BORDER_RADIUS: 9, + + /** + * The location text. + */ + LOCATION: "86%", + + /** + * The zIndex of layout. + */ + INDEX: 2, +}; + +/** + * The constant of ServiceItemComponent. + */ +export const GoodsServiceItem = { + /** + * The max lines of text. + */ + MAX_LINES: 1, + + /** + * The size of service image. + */ + IMAGE_SIZE_SERVICE: 18, + + /** + * The size of more action image. + */ + IMAGE_SIZE_MORE: 14, + + /** + * The layout weight of left. + */ + LAYOUT_WEIGHT_LEFT: '12%', + + /** + * The layout weight of center. + */ + LAYOUT_WEIGHT_CENTER: '80%', + + /** + * The layout weight of right. + */ + LAYOUT_WEIGHT_RIGHT: '8%', + + /** + * The right margin of image. + */ + MARGIN_RIGHT_IMAGE: '2%', +}; + +/** + * The constant of ServicesComponent. + */ +export const GoodsService = { + /** + * The space of List. + */ + SPACE: 20, + + /** + * The height of List. + */ + LIST_HEIGHT: 94, +}; + + + + + + + + + + diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/constants/HomeConstants.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/constants/HomeConstants.ets" new file mode 100644 index 0000000000000000000000000000000000000000..d8710a5d50bc7ff991a10a9d08d5313c1ad6ad11 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/constants/HomeConstants.ets" @@ -0,0 +1,298 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * The constant of BannerComponent. + */ +export const Banner = { + /** + * The size of indicator. + */ + INDICATOR_SIZE: 12, + + /** + * The width of banner. + */ + WIDTH: '93%', + + /** + * The space of column. + */ + SPACE: 5, + + /** + * The cache count of Swiper. + */ + CACHE_COUNT: 2, + + /** + * The default index of Swiper. + */ + POSITION: 1, + + /** + * The interval time of Swiper. + */ + TIME: 4000, + + /** + * The duration of Swiper. + */ + DURATION: 1000, + + /** + * The item space of Swiper. + */ + ITEM_SPACE: 0 +}; + +/** + * The constant of GoodsComponent. + */ +export const GoodsList = { + /** + * The padding of grid. + */ + GRID_PADDING: 12, + + /** + * The columnsGap of grid. + */ + SPACE: 8, + + + /** + * The layout direction of grid. + */ + HORIZONTAL: 0, + + /** + * The columns template of grid. + */ + GRID_STYLE: '1fr 1fr', +}; + +/** + * The constant of GoodsItemComponent. + */ +export const GoodsListItem = { + /** + * The container height of goods name. + */ + CONTAINER_GOODS_NAME_HEIGHT: 40, + + /** + * The max line of goods name. + */ + MAX_LINE_GOODS_NAME: 2, + + /** + * The margin of goods discounts. + */ + MARGIN_DISCOUNTS: 5, + + /** + * The size of goods image. + */ + GOODS_IMAGE_SIZE: 130, + + /** + * The top margin of goods image. + */ + GOODS_IMAGE_MARGIN_TOP: 10, + + /** + * The border radius of goods label. + */ + BORDER_RADIUS_LABEL: 5, + + /** + * The verical padding of goods label. + */ + PADDING_LABEL_VERTICAL: 8, + + /** + * The horizontal padding of goods label. + */ + PADDING_LABEL_HORIZONTAL: 2, + + /** + * The top margin of goods label container. + */ + CONTAINER_LABEL_MARGIN_TOP: 6, + + /** + * The bottom margin of goods label container. + */ + CONTAINER_LABEL_MARGIN_BOTTOM: 12, + + /** + * The top margin of text container. + */ + TEXT_LAYER_MARGIN_TOP: 20, + + /** + * The width of text container. + */ + TEXT_LAYER_WIDTH: "98%", + + /** + * The horizontal padding of item. + */ + ITEM_PADDING_HORIZONTAL: 10, + + /** + * The width of border. + */ + BORDER_WIDTH: 1, + + /** + * The value of border radius. + */ + BORDER_RADIUS: 10, +}; + +/** + * The constant of TabsComponent. + */ +export const GoodsTabs = { + /** + * The height of GoodsTabs. + */ + BAR_HEIGHT: 50, + + /** + * The default index of GoodsTabs. + */ + TABVIEW_POSITION_INDEX_PAGE: 0, + + /** + * The width of image. + */ + IMAGE_SIZE_WIDTH: 12, + + /** + * The height of image. + */ + IMAGE_SIZE_HEIGHT: 16, + + + /** + * The width of tab. + */ + TAB_WIDTH: '90%', + + /** + * The animation duration of Tabs. + */ + TIME: 400, + + /** + * The blank width of Tabs setting. + */ + SETTING_BLANK_WIDTH: 4, + + /** + * The layout weight of Tabs setting. + */ + SETTING_LAYOUT: '10%', + + /** + * The padding of right. + */ + PADDING_RIGHT: '9%', +}; + +/** + * The constant of MenusComponent. + */ +export const Menus = { + /** + * The vertical padding of container. + */ + CONTAINER_PADDING_VERTICAL: 12, + + /** + * The vertical padding of item. + */ + ITEM_PADDING_VERTICAL: 16, + + /** + * The weight of layout. + */ + LAYOUT_WEIGHT: '25%', +}; + +/** + * The constant of SearchComponent. + */ +export const SearchBar = { + /** + * The width of layout. + */ + WEIGHT: '90%', + + /** + * The size of image. + */ + IMAGE_SIZE: 20, + + /** + * The height of SearchBar. + */ + BAR_HEIGHT: 40, + + /** + * The right margin of input. + */ + TEXT_INPUT_MARGIN_RIGHT: 20, + + /** + * The left padding of container. + */ + CONTAINER_PADDING_LEFT: 10, + + /** + * The border radius. + */ + BORDER_RADIUS: 6, +}; + +/** + * The constant of TopBarComponent. + */ +export const TopBar = { + /** + * The size of image. + */ + IMAGE_SIZE: 30, + + /** + * The height of BalanceComponent. + */ + HEIGHT: '4%', +}; + + + + + + + + + + + + diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/lottie/data.json" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/lottie/data.json" new file mode 100644 index 0000000000000000000000000000000000000000..609221b5e993f8de881b7e59584cfbd54f776475 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/lottie/data.json" @@ -0,0 +1 @@ +{"v":"5.9.6","fr":60,"ip":0,"op":180,"w":830,"h":472,"nm":"OH收藏点亮","ddd":0,"assets":[],"layers":[{"ddd":0,"ind":2,"ty":4,"nm":"亮 6","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":55,"s":[100]},{"t":60,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":40,"s":[415,236,0],"to":[-25.75,6,0],"ti":[25.75,-6,0]},{"t":55,"s":[260.5,272,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":40,"s":[13,13,100]},{"t":55,"s":[17,17,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[21,-2.075],[5.015,-9.113],[3.5,-4.036],[17.175,-1.623],[3.637,-17.11],[-13.234,-13.172],[-0.737,-0.871],[3.589,-16.87],[-8.956,-7.886],[-16.933,10.062],[-1.677,0.11],[-15.287,-8.087],[-15.25,7.576],[3.872,21.919],[-1.324,2.099],[-17.073,15.142],[0.186,11.001],[21.775,2.871],[0.869,1.654],[2.937,6.336]],"o":[[-18.944,1.872],[-2.999,5.45],[-0.68,0.784],[-20.496,1.937],[-4.25,19.993],[12.585,12.527],[1.5,1.772],[-4.043,19.002],[14,12.328],[15.641,-9.294],[3,-0.196],[16.192,8.565],[17.397,-8.643],[-3.517,-19.911],[1.25,-1.981],[9.938,-8.814],[-0.25,-14.776],[-24.813,-3.271],[-4.75,-9.038],[-5.225,-11.27]],"v":[[-1.75,-129.75],[-30.015,-95.696],[-48,-58.5],[-83.749,-52.514],[-129,-32.25],[-104.938,11.194],[-79.375,38.751],[-84.45,77.108],[-81.75,124.25],[-34.045,115.819],[0,98.002],[30.037,113.146],[77.75,127.251],[85.216,76.549],[79.5,36.501],[110.562,5.312],[130.5,-26.247],[97.475,-50.648],[48,-58],[30.225,-95.041]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.968627510819,0.807843197093,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,99.943],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":40,"op":269,"st":-31,"ct":1,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"亮 5","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":55,"s":[100]},{"t":60,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":40,"s":[415,236,0],"to":[-1.167,25.917,0],"ti":[1.167,-25.917,0]},{"t":55,"s":[408,391.5,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":40,"s":[0,0,100]},{"t":55,"s":[16,16,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[21,-2.075],[5.015,-9.113],[3.5,-4.036],[17.175,-1.623],[3.637,-17.11],[-13.234,-13.172],[-0.737,-0.871],[3.589,-16.87],[-8.956,-7.886],[-16.933,10.062],[-1.677,0.11],[-15.287,-8.087],[-15.25,7.576],[3.872,21.919],[-1.324,2.099],[-17.073,15.142],[0.186,11.001],[21.775,2.871],[0.869,1.654],[2.937,6.336]],"o":[[-18.944,1.872],[-2.999,5.45],[-0.68,0.784],[-20.496,1.937],[-4.25,19.993],[12.585,12.527],[1.5,1.772],[-4.043,19.002],[14,12.328],[15.641,-9.294],[3,-0.196],[16.192,8.565],[17.397,-8.643],[-3.517,-19.911],[1.25,-1.981],[9.938,-8.814],[-0.25,-14.776],[-24.813,-3.271],[-4.75,-9.038],[-5.225,-11.27]],"v":[[-1.75,-129.75],[-30.015,-95.696],[-48,-58.5],[-83.749,-52.514],[-129,-32.25],[-104.938,11.194],[-79.375,38.751],[-84.45,77.108],[-81.75,124.25],[-34.045,115.819],[0,98.002],[30.037,113.146],[77.75,127.251],[85.216,76.549],[79.5,36.501],[110.562,5.312],[130.5,-26.247],[97.475,-50.648],[48,-58],[30.225,-95.041]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.968627510819,0.807843197093,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,99.943],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":40,"op":269,"st":-31,"ct":1,"bm":0},{"ddd":0,"ind":4,"ty":4,"nm":"亮 7","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":55,"s":[100]},{"t":60,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":40,"s":[415,236,0],"to":[29.667,-0.167,0],"ti":[-29.667,0.167,0]},{"t":55,"s":[593,235,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":40,"s":[0,0,100]},{"t":55,"s":[13,13,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[21,-2.075],[5.015,-9.113],[3.5,-4.036],[17.175,-1.623],[3.637,-17.11],[-13.234,-13.172],[-0.737,-0.871],[3.589,-16.87],[-8.956,-7.886],[-16.933,10.062],[-1.677,0.11],[-15.287,-8.087],[-15.25,7.576],[3.872,21.919],[-1.324,2.099],[-17.073,15.142],[0.186,11.001],[21.775,2.871],[0.869,1.654],[2.937,6.336]],"o":[[-18.944,1.872],[-2.999,5.45],[-0.68,0.784],[-20.496,1.937],[-4.25,19.993],[12.585,12.527],[1.5,1.772],[-4.043,19.002],[14,12.328],[15.641,-9.294],[3,-0.196],[16.192,8.565],[17.397,-8.643],[-3.517,-19.911],[1.25,-1.981],[9.938,-8.814],[-0.25,-14.776],[-24.813,-3.271],[-4.75,-9.038],[-5.225,-11.27]],"v":[[-1.75,-129.75],[-30.015,-95.696],[-48,-58.5],[-83.749,-52.514],[-129,-32.25],[-104.938,11.194],[-79.375,38.751],[-84.45,77.108],[-81.75,124.25],[-34.045,115.819],[0,98.002],[30.037,113.146],[77.75,127.251],[85.216,76.549],[79.5,36.501],[110.562,5.312],[130.5,-26.247],[97.475,-50.648],[48,-58],[30.225,-95.041]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.968627510819,0.807843197093,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,99.943],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":40,"op":269,"st":-31,"ct":1,"bm":0},{"ddd":0,"ind":5,"ty":4,"nm":"亮 4","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":55,"s":[100]},{"t":60,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":40,"s":[415,236,0],"to":[23.833,15.083,0],"ti":[-23.833,-15.083,0]},{"t":55,"s":[558,326.5,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":40,"s":[0,0,100]},{"t":55,"s":[13,13,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[21,-2.075],[5.015,-9.113],[3.5,-4.036],[17.175,-1.623],[3.637,-17.11],[-13.234,-13.172],[-0.737,-0.871],[3.589,-16.87],[-8.956,-7.886],[-16.933,10.062],[-1.677,0.11],[-15.287,-8.087],[-15.25,7.576],[3.872,21.919],[-1.324,2.099],[-17.073,15.142],[0.186,11.001],[21.775,2.871],[0.869,1.654],[2.937,6.336]],"o":[[-18.944,1.872],[-2.999,5.45],[-0.68,0.784],[-20.496,1.937],[-4.25,19.993],[12.585,12.527],[1.5,1.772],[-4.043,19.002],[14,12.328],[15.641,-9.294],[3,-0.196],[16.192,8.565],[17.397,-8.643],[-3.517,-19.911],[1.25,-1.981],[9.938,-8.814],[-0.25,-14.776],[-24.813,-3.271],[-4.75,-9.038],[-5.225,-11.27]],"v":[[-1.75,-129.75],[-30.015,-95.696],[-48,-58.5],[-83.749,-52.514],[-129,-32.25],[-104.938,11.194],[-79.375,38.751],[-84.45,77.108],[-81.75,124.25],[-34.045,115.819],[0,98.002],[30.037,113.146],[77.75,127.251],[85.216,76.549],[79.5,36.501],[110.562,5.312],[130.5,-26.247],[97.475,-50.648],[48,-58],[30.225,-95.041]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.968627510819,0.807843197093,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,99.943],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":40,"op":269,"st":-31,"ct":1,"bm":0},{"ddd":0,"ind":6,"ty":4,"nm":"亮 3","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":55,"s":[100]},{"t":60,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":40,"s":[415,236,0],"to":[-15.5,-16.583,0],"ti":[15.5,16.583,0]},{"t":55,"s":[322,136.5,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":40,"s":[0,0,100]},{"t":55,"s":[18,18,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[21,-2.075],[5.015,-9.113],[3.5,-4.036],[17.175,-1.623],[3.637,-17.11],[-13.234,-13.172],[-0.737,-0.871],[3.589,-16.87],[-8.956,-7.886],[-16.933,10.062],[-1.677,0.11],[-15.287,-8.087],[-15.25,7.576],[3.872,21.919],[-1.324,2.099],[-17.073,15.142],[0.186,11.001],[21.775,2.871],[0.869,1.654],[2.937,6.336]],"o":[[-18.944,1.872],[-2.999,5.45],[-0.68,0.784],[-20.496,1.937],[-4.25,19.993],[12.585,12.527],[1.5,1.772],[-4.043,19.002],[14,12.328],[15.641,-9.294],[3,-0.196],[16.192,8.565],[17.397,-8.643],[-3.517,-19.911],[1.25,-1.981],[9.938,-8.814],[-0.25,-14.776],[-24.813,-3.271],[-4.75,-9.038],[-5.225,-11.27]],"v":[[-1.75,-129.75],[-30.015,-95.696],[-48,-58.5],[-83.749,-52.514],[-129,-32.25],[-104.938,11.194],[-79.375,38.751],[-84.45,77.108],[-81.75,124.25],[-34.045,115.819],[0,98.002],[30.037,113.146],[77.75,127.251],[85.216,76.549],[79.5,36.501],[110.562,5.312],[130.5,-26.247],[97.475,-50.648],[48,-58],[30.225,-95.041]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.968627510819,0.807843197093,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,99.943],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":40,"op":269,"st":-31,"ct":1,"bm":0},{"ddd":0,"ind":7,"ty":4,"nm":"亮 2","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":55,"s":[100]},{"t":60,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":40,"s":[415,236,0],"to":[16.125,-18.958,0],"ti":[-16.125,18.958,0]},{"t":55,"s":[511.75,122.25,0]}],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":40,"s":[0,0,100]},{"t":55,"s":[16,16,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[21,-2.075],[5.015,-9.113],[3.5,-4.036],[17.175,-1.623],[3.637,-17.11],[-13.234,-13.172],[-0.737,-0.871],[3.589,-16.87],[-8.956,-7.886],[-16.933,10.062],[-1.677,0.11],[-15.287,-8.087],[-15.25,7.576],[3.872,21.919],[-1.324,2.099],[-17.073,15.142],[0.186,11.001],[21.775,2.871],[0.869,1.654],[2.937,6.336]],"o":[[-18.944,1.872],[-2.999,5.45],[-0.68,0.784],[-20.496,1.937],[-4.25,19.993],[12.585,12.527],[1.5,1.772],[-4.043,19.002],[14,12.328],[15.641,-9.294],[3,-0.196],[16.192,8.565],[17.397,-8.643],[-3.517,-19.911],[1.25,-1.981],[9.938,-8.814],[-0.25,-14.776],[-24.813,-3.271],[-4.75,-9.038],[-5.225,-11.27]],"v":[[-1.75,-129.75],[-30.015,-95.696],[-48,-58.5],[-83.749,-52.514],[-129,-32.25],[-104.938,11.194],[-79.375,38.751],[-84.45,77.108],[-81.75,124.25],[-34.045,115.819],[0,98.002],[30.037,113.146],[77.75,127.251],[85.216,76.549],[79.5,36.501],[110.562,5.312],[130.5,-26.247],[97.475,-50.648],[48,-58],[30.225,-95.041]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.968627510819,0.807843197093,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,99.943],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":40,"op":269,"st":-31,"ct":1,"bm":0},{"ddd":0,"ind":8,"ty":4,"nm":"亮","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":133,"s":[100]},{"t":141,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[415,236,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.2,0.2,0.667],"y":[1,1,1]},"o":{"x":[0.2,0.2,0.333],"y":[0,0,0]},"t":40,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":55,"s":[110,110,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":67,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":76,"s":[106,106,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":85,"s":[100,100,100]},{"i":{"x":[0.2,0.2,0.833],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":133,"s":[100,100,100]},{"t":141,"s":[94,94,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[21,-2.075],[5.015,-9.113],[3.5,-4.036],[17.175,-1.623],[3.637,-17.11],[-13.234,-13.172],[-0.737,-0.871],[3.589,-16.87],[-8.956,-7.886],[-16.933,10.062],[-1.677,0.11],[-15.287,-8.087],[-15.25,7.576],[3.872,21.919],[-1.324,2.099],[-17.073,15.142],[0.186,11.001],[21.775,2.871],[0.869,1.654],[2.937,6.336]],"o":[[-18.944,1.872],[-2.999,5.45],[-0.68,0.784],[-20.496,1.937],[-4.25,19.993],[12.585,12.527],[1.5,1.772],[-4.043,19.002],[14,12.328],[15.641,-9.294],[3,-0.196],[16.192,8.565],[17.397,-8.643],[-3.517,-19.911],[1.25,-1.981],[9.938,-8.814],[-0.25,-14.776],[-24.813,-3.271],[-4.75,-9.038],[-5.225,-11.27]],"v":[[-1.75,-129.75],[-30.015,-95.696],[-48,-58.5],[-83.749,-52.514],[-129,-32.25],[-104.938,11.194],[-79.375,38.751],[-84.45,77.108],[-81.75,124.25],[-34.045,115.819],[0,98.002],[30.037,113.146],[77.75,127.251],[85.216,76.549],[79.5,36.501],[110.562,5.312],[130.5,-26.247],[97.475,-50.648],[48,-58],[30.225,-95.041]],"c":true},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"fl","c":{"a":0,"k":[0.968627510819,0.807843197093,0,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,99.943],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":16,"op":269,"st":-31,"ct":1,"bm":0},{"ddd":0,"ind":9,"ty":4,"nm":"灰","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":39,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":40,"s":[0]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":133,"s":[0]},{"t":141,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[415,236,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":29,"s":[100,100,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":40,"s":[90,90,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1.01,1.01,2.008]},"o":{"x":[0.167,0.167,0.167],"y":[0,0,0]},"t":133,"s":[90,90,100]},{"t":142,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ind":0,"ty":"sh","ix":1,"ks":{"a":0,"k":{"i":[[0,0],[-4.5,4.5],[1.75,12.25],[13.866,2.447],[4.591,8.321],[4.535,9.483],[15.246,-0.424],[3.75,-9.25],[3.723,-3.384],[8.75,-2],[1.813,-15.595],[-9.72,-9.442],[-0.761,-7.611],[1.75,-8.25],[-7.69,-7.066],[-11.791,6.78],[-6.999,-0.28],[-9.5,-5.25],[-7.287,5.779],[2.33,13.974],[0,0]],"o":[[0,0],[4.5,-4.5],[-1.93,-13.51],[-8.5,-1.5],[-4,-7.25],[-5.5,-11.5],[-9,0.25],[-2.032,5.012],[-2.75,2.5],[-7.085,1.619],[-1.25,10.75],[8.75,8.5],[0.75,7.5],[-1.384,6.526],[9.25,8.5],[10,-5.75],[6.25,0.25],[7.889,4.36],[7.25,-5.75],[-2.341,-14.038],[0,0]],"v":[[71.75,28.5],[96.25,3.5],[116.75,-27.5],[81.25,-41.75],[39,-53],[24.75,-83.25],[-1.5,-117.5],[-24,-81.75],[-42.25,-48.75],[-83.25,-41.25],[-117.25,-26.25],[-92.75,6.75],[-68,35.25],[-73.75,77.75],[-73,113.5],[-32.25,101.5],[0.5,85.5],[37,103.25],[71.75,115.5],[75.297,81.784],[70,54]],"c":false},"ix":2},"nm":"路径 1","mn":"ADBE Vector Shape - Group","hd":false},{"ty":"st","c":{"a":0,"k":[0.376470618154,0.380392186782,0.384313755409,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":16,"ix":5},"lc":2,"lj":2,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"形状 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":271,"st":-29,"ct":1,"bm":0},{"ddd":0,"ind":10,"ty":4,"nm":"形状图层 1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[415,236,0],"ix":2,"l":2},"a":{"a":0,"k":[0,0,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"ty":"rc","d":1,"s":{"a":0,"k":[830,472],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"r":{"a":0,"k":0,"ix":4},"nm":"矩形路径 1","mn":"ADBE Vector Shape - Rect","hd":false},{"ty":"fl","c":{"a":0,"k":[1,1,1,1],"ix":4},"o":{"a":0,"k":100,"ix":5},"r":1,"bm":0,"nm":"填充 1","mn":"ADBE Vector Graphic - Fill","hd":false},{"ty":"tr","p":{"a":0,"k":[0,0],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"矩形 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":300,"st":0,"ct":1,"bm":0}],"markers":[{"tm":29,"cm":"1","dr":0},{"tm":72,"cm":"2","dr":0}]} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/pic.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/pic.ets" new file mode 100644 index 0000000000000000000000000000000000000000..b2e422492eec5240a10a14026653e77e6ac3a243 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/pic.ets" @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import reminderAgent from '@ohos.reminderAgent' +import { SubscribeData, getModelData } from '../model/subscribeDataModels' + +let calendar = null +let subscribeItems: SubscribeData[] = getModelData() +let num = 0 + +@Component +export struct SwiperItem { + private index: number + private isSubscribe: boolean + + onAccept() { + console.log("onAccept") + if (calendar == null) { + console.log("the calendar reminder is null") + return + } + reminderAgent.publishReminder(calendar, (err, reminderId) => { + console.info('num=' + num + ', reminderId:' + reminderId) + subscribeItems[num].isSubscribe = true + subscribeItems[num].reminderId = reminderId + }) + } + + + build() { + Stack({ alignContent: Alignment.BottomStart }) { + Image(subscribeItems[this.index].image) + .objectFit(ImageFit.Auto) + Text(subscribeItems[this.index].title) + .fontSize(15) + .fontColor(Color.White) + .margin({ left: '5%', bottom: '10%' }) + } + } +} + +@Component +export struct SubscribeSwiper { + private index: number = 0 + + build() { + Swiper() { + ForEach(subscribeItems, item => { + SwiperItem({ index: item.id }) + }, item => item.title) + } + .width('100%') + .height('203') + .indicator(false) + .index(this.index) + .autoPlay(true) + .itemSpace(15) + .displayMode(SwiperDisplayMode.AutoLinear) + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/subscribe.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/subscribe.ets" new file mode 100644 index 0000000000000000000000000000000000000000..633e948d74b1e763f3a727abf588bad9a6d98e3d --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/common/subscribe.ets" @@ -0,0 +1,72 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import reminderAgent from '@ohos.reminderAgent' +import { SubscribeData, getSubscribeData } from '../model/SubscribeDataModels' + +let calendar = null +let subscribeItems: SubscribeData[] = getSubscribeData() +let num = 0 + +@Component +export struct SwiperItem { + private index: number + private isSubscribe: boolean + + onAccept() { + console.log("onAccept") + if (calendar == null) { + console.log("the calendar reminder is null") + return + } + reminderAgent.publishReminder(calendar, (err, reminderId) => { + console.info('num=' + num + ', reminderId:' + reminderId) + subscribeItems[num].isSubscribe = true + subscribeItems[num].reminderId = reminderId + }) + } + + + build() { + Stack({ alignContent: Alignment.BottomStart }) { + Image(subscribeItems[this.index].image) + .objectFit(ImageFit.Auto) + Text(subscribeItems[this.index].title) + .fontSize(15) + .fontColor(Color.White) + .margin({ left: '5%', bottom: '10%' }) + } + } +} + +@Component +export struct SubscribeSwiper { + private index: number = 0 + + build() { + Swiper() { + ForEach(subscribeItems, item => { + SwiperItem({ index: item.id }) + }, item => item.title) + } + .width('100%') + .height('203') + .indicator(false) + .index(this.index) + .autoPlay(true) + .itemSpace(15) + .displayMode(SwiperDisplayMode.AutoLinear) + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/entryability/EntryAbility.ts" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/entryability/EntryAbility.ts" new file mode 100644 index 0000000000000000000000000000000000000000..f4b294e47d804cf65bc1cd2656a140703858cfa5 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/entryability/EntryAbility.ts" @@ -0,0 +1,69 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; +import Ability from '@ohos.application.Ability' +import Window from '@ohos.window' + +const TAG: string = 'EntryAbility'; +const ENTRY_ABILITY_DOMAIN = 0x00001; + +export default class EntryAbility extends Ability { + onCreate(want, launchParam) { + hilog.isLoggable(ENTRY_ABILITY_DOMAIN, TAG, hilog.LogLevel.INFO); + hilog.info(ENTRY_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onCreate'); + hilog.info(ENTRY_ABILITY_DOMAIN, TAG, '%{public}s', 'want param:' + JSON.stringify(want) ?? ''); + hilog.info(ENTRY_ABILITY_DOMAIN, TAG, '%{public}s', 'launchParam:' + JSON.stringify(launchParam) ?? ''); + } + + onDestroy() { + hilog.isLoggable(ENTRY_ABILITY_DOMAIN, TAG, hilog.LogLevel.INFO); + hilog.info(ENTRY_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onDestroy'); + } + + onWindowStageCreate(windowStage: Window.WindowStage) { + // Main window is created, set main page for this ability + hilog.isLoggable(ENTRY_ABILITY_DOMAIN, TAG, hilog.LogLevel.INFO); + hilog.info(ENTRY_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onWindowStageCreate'); + + windowStage.loadContent('pages/NavPage', (err, data) => { + if (err.code) { + hilog.isLoggable(ENTRY_ABILITY_DOMAIN, TAG, hilog.LogLevel.ERROR); + hilog.error(ENTRY_ABILITY_DOMAIN, TAG, 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); + return; + } + hilog.isLoggable(ENTRY_ABILITY_DOMAIN, TAG, hilog.LogLevel.INFO); + hilog.info(ENTRY_ABILITY_DOMAIN, TAG, 'Succeeded in loading the content. Data: %{public}s', JSON.stringify(data) ?? ''); + }); + } + + onWindowStageDestroy() { + // Main window is destroyed, release UI related resources + hilog.isLoggable(ENTRY_ABILITY_DOMAIN, TAG, hilog.LogLevel.INFO); + hilog.info(ENTRY_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onWindowStageDestroy'); + } + + onForeground() { + // Ability has brought to foreground + hilog.isLoggable(ENTRY_ABILITY_DOMAIN, TAG, hilog.LogLevel.INFO); + hilog.info(ENTRY_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onForeground'); + } + + onBackground() { + // Ability has back to background + hilog.isLoggable(ENTRY_ABILITY_DOMAIN, TAG, hilog.LogLevel.INFO); + hilog.info(ENTRY_ABILITY_DOMAIN, TAG, '%{public}s', 'Ability onBackground'); + } +} diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/model/DataModel.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/model/DataModel.ets" new file mode 100644 index 0000000000000000000000000000000000000000..9d8fef404620ff75aecdde9e50ceab7aa8ab50a7 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/model/DataModel.ets" @@ -0,0 +1,158 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import BannerData from '../common/bean/BannerData'; +import MenuData from '../common/bean/MenuData'; +import GoodsData from '../common/bean/GoodsData'; +import ToolBarData from '../common/bean/ToolBarData'; +import GoodsServiceData from '../common/bean/GoodsServiceData'; + +/* + * The DataModel file instead of network data. + */ +export default class DataModel { + public static readonly TAB_VIEW_MENU: Resource[] = [ + $r('app.string.home_tab_index'), + $r('app.string.home_tab_food'), + $r('app.string.home_tab_men_clothing'), + $r('app.string.home_tab_fresh_food'), + $r('app.string.home_tab_furniture'), + $r('app.string.home_tab_mom_and_infant'), + $r('app.string.home_tab_kitchen_things'), + ]; + public static readonly BANNER: BannerData[] = [ + { + imgSrc: $rawfile('index/banner1.png') + }, + { + imgSrc: $rawfile('index/banner2.png') + }, + { + imgSrc: $rawfile('index/banner3.jpg') + } + ]; + public static readonly HOME_MENU: MenuData[] = [ + { + menuName: $r('app.string.home_menu_all'), + menuContent: $r('app.string.home_menu_all_content'), + fontWeight: '500', + fontColor: '#FFE92F4F' + }, + { + menuName: $r('app.string.home_menu_select'), + menuContent: $r('app.string.home_menu_select_content'), + fontWeight: '400', + fontColor: '#FF000000' + }, + { + menuName: $r('app.string.home_menu_new'), + menuContent: $r('app.string.home_menu_new_content'), + fontWeight: '400', + fontColor: '#FF000000', + }, + { + menuName: $r('app.string.home_menu_discounts'), + menuContent: $r('app.string.home_menu_discounts_content'), + fontWeight: '400', + fontColor: '#FF000000' + } + ]; + public static readonly GOOD_LIST: GoodsData[] = [ + { + goodsName: $r('app.string.goods_list_item_1'), + price: '176', + count: 1, + originalPrice: '276', + discounts: $r('app.string.goods_list_item_1_save'), + label: $r('app.string.goods_list_activity_new'), + goodsImg: $rawfile('index/good1.jpg'), + goodsDescription: $r('app.string.goods_list_item_1_desc') + }, + { + goodsName: $r('app.string.goods_list_item_2'), + price: '39', + count: 1, + originalPrice: '59', + discounts: $r('app.string.goods_list_item_2_save'), + label: $r('app.string.goods_list_activity_time'), + goodsImg: $rawfile('index/good2.jpg'), + goodsDescription: $r('app.string.goods_list_item_2_desc') + }, + { + goodsName: $r('app.string.goods_list_item_3'), + price: '238', + count: 1, + originalPrice: '338', + discounts: $r('app.string.goods_list_item_3_save'), + label: $r('app.string.goods_list_activity_new'), + goodsImg: $rawfile('index/good3.jpg'), + goodsDescription: $r('app.string.goods_list_item_3_desc') + }, + { + goodsName: $r('app.string.goods_list_item_4'), + price: '48', + count: 1, + originalPrice: '98', + discounts: $r('app.string.goods_list_item_4_save'), + label: $r('app.string.goods_list_activity_time'), + goodsImg: $rawfile('index/good4.jpg'), + goodsDescription: $r('app.string.goods_list_item_4_desc') + } + ]; + public static readonly TOOL_BAR: ToolBarData[] = [ + { + num: 0, + text: $r('app.string.nav_index'), + icon: $rawfile('index/home.png'), + icon_after: $rawfile('index/home_selected.png'), + }, + { + num: 1, + text: $r('app.string.nav_new'), + icon: $rawfile('index/news.png'), + icon_after: $rawfile('index/news_selected.png'), + }, + { + num: 2, + text: $r('app.string.nav_shopping_cart'), + icon: $rawfile('index/shopping_cart.png'), + icon_after: $rawfile('index/shopping_cart_selected.png'), + }, + { + num: 3, + text: $r('app.string.nav_mine'), + icon: $rawfile('index/mine.png'), + icon_after: $rawfile('index/mine_selected.png'), + } + ]; + public static readonly GOOD_SERVICE: GoodsServiceData[] = [ + { + id: 1, + name: $r('app.string.goods_service_1_name'), + description: $r('app.string.goods_service_1_desc') + }, + { + id: 2, + name: null, + description: $r('app.string.goods_service_2_desc') + }, + { + id: 3, + name: null, + description: $r('app.string.goods_service_3_desc') + } + ]; +} + diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/model/ProductData.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/model/ProductData.ets" new file mode 100644 index 0000000000000000000000000000000000000000..4cdfcbe574f7245abcdf4ab21d59fd05d4034e36 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/model/ProductData.ets" @@ -0,0 +1,51 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export enum Category { + Post, + Pic, + Date, + Pose, + Class, + Cup, + Show, + T, + Z, +} + +let NextId = 0; +export class ProductData { + id: string; + name: string; + image: Resource + category: Category; + price: number; + size: number; + fat: number; + carbohydrates: number; + vitaminC: number; + + constructor(name: string, image: Resource, category: Category, price: number, size: number, fat: number, carbohydrates: number, vitaminC: number) { + this.id = `${ NextId++ }`; + this.name = name; + this.image = image; + this.category = category; + this.price = price; + this.size = size; + this.fat = fat; + this.carbohydrates = carbohydrates; + this.vitaminC = vitaminC; + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/model/ProductDataModels.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/model/ProductDataModels.ets" new file mode 100644 index 0000000000000000000000000000000000000000..2faf0bd02a608f57d6e7d6f1a540fb4603bc57a8 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/model/ProductDataModels.ets" @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { ProductData, Category } from './ProductData' +let ProductDataArray: Array = [] +const ProductComposition: any[] = [ + { 'name': '平邮明信片', 'image': $r('app.media.post11'), 'category': Category.Post, 'price': 5, 'size': '148x100', 'fat': 0.2, 'carbohydrates': 3.9, 'vitaminC': 17.8 }, + { 'name': '乐凯金圣莱4D光面', 'image': $r('app.media.post12'), 'category': Category.Post, 'price': 1 , 'size': '152x114', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': 'Lomo卡-18P', 'image': $r('app.media.post13'), 'category': Category.Post, 'price': 27 , 'size': '85x58', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': '8寸方款 | 普通相册', 'image': $r('app.media.pic21'), 'category': Category.Pic, 'price': 63 , 'size': '198x198', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': '8寸方款 | 简装相册', 'image': $r('app.media.pic22'), 'category': Category.Pic, 'price': 140 , 'size': '198x198', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': '8寸方款 | 精装相册', 'image': $r('app.media.pic23'), 'category': Category.Pic, 'price': 176 , 'size': '198x198', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': '8寸横款 | 普通相册', 'image': $r('app.media.pic24'), 'category': Category.Pic, 'price': 36 , 'size': '198x140', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': '8寸横款 | 简装相册', 'image': $r('app.media.pic25'), 'category': Category.Pic, 'price': 101 , 'size': '198x140', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': '8寸横款 | 精装相册', 'image': $r('app.media.pic26'), 'category': Category.Pic, 'price': 112 , 'size': '198x140', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': '7寸经典台历竖款单面', 'image': $r('app.media.date31'), 'category': Category.Date, 'price': 33 , 'size': '140x145', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': '8寸经典台历横款单面', 'image': $r('app.media.date32'), 'category': Category.Date, 'price': 39 , 'size': '210x143', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': '7寸经典台历竖款双面', 'image': $r('app.media.date33'), 'category': Category.Date, 'price': 40 , 'size': '140x145', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': '8寸经典台历横款双面', 'image': $r('app.media.date34'), 'category': Category.Date, 'price': 39 , 'size': '210x143', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': '唯品台历横款', 'image': $r('app.media.date35'), 'category': Category.Date, 'price': 97 , 'size': '210x143', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': '唯品台历竖款', 'image': $r('app.media.date36'), 'category': Category.Date, 'price': 108 , 'size': '143x210', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': 'A3竖式挂历', 'image': $r('app.media.date37'), 'category': Category.Date, 'price': 83 , 'size': '297x420', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': 'B2竖式挂历', 'image': $r('app.media.date38'), 'category': Category.Date, 'price': 164 , 'size': '500x730', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': '个性海报A3竖式', 'image': $r('app.media.pose41'), 'category': Category.Pose, 'price': 15 , 'size': '297x420', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': '个性海报B2竖式x3张', 'image': $r('app.media.pose42'), 'category': Category.Pose, 'price': 40 , 'size': '530x750', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': '蝴蝶精装8寸方款', 'image': $r('app.media.class51'), 'category': Category.Class, 'price': 176 , 'size': '198x198', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': '蝴蝶精装12寸竖款', 'image': $r('app.media.class52'), 'category': Category.Class, 'price': 176 , 'size': '211x291', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': '蝴蝶精装绒面12寸竖款', 'image': $r('app.media.class53'), 'category': Category.Class, 'price': 147 , 'size': '205x285', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': '典雅水晶12寸竖款', 'image': $r('app.media.class54'), 'category': Category.Class, 'price': 238 , 'size': '210x290', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': '马克杯', 'image': $r('app.media.cup61'), 'category': Category.Cup, 'price': 48 , 'size': '265x97', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': '变色杯', 'image': $r('app.media.cup62'), 'category': Category.Cup, 'price': 93 , 'size': '265x97', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': '亚米奇烤瓷水晶摆台', 'image': $r('app.media.show71'), 'category': Category.Show, 'price': 54 , 'size': '270x220', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': '木版画竖款10寸', 'image': $r('app.media.show72'), 'category': Category.Show, 'price': 90 , 'size': '203x254', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': '木版画横款10寸', 'image': $r('app.media.show73'), 'category': Category.Show, 'price': 75 , 'size': '254x203', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': '个性T恤', 'image': $r('app.media.t81'), 'category': Category.T, 'price': 96 , 'size': '200x290', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': '个性杂志8寸横款', 'image': $r('app.media.z91'), 'category': Category.Z, 'price': 46 , 'size': '198x140', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': '个性杂志12寸竖款', 'image': $r('app.media.z92'), 'category': Category.Z, 'price': 57 , 'size': '210x285', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, + { 'name': '个性杂志8寸横款', 'image': $r('app.media.z93'), 'category': Category.Z, 'price': 57 , 'size': '285x210', 'fat': 65, 'carbohydrates': 14, 'vitaminC': 1.3 }, +] + +export function initializeOnStartup(): Array { + if(ProductData.length>0) + { + ProductComposition.forEach(item => { + ProductDataArray.push(new ProductData(item.name, item.image, item.category, item.price, item.size, item.fat, item.carbohydrates, item.vitaminC)); + }) + } + return ProductDataArray; +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/model/SubscribeDataModels.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/model/SubscribeDataModels.ets" new file mode 100644 index 0000000000000000000000000000000000000000..a44d33a7081293942d3c7aa495a1c9e52565c7bd --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/model/SubscribeDataModels.ets" @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +@Observed +export class SubscribeData { + id: number + title: string + image: Resource + isSubscribe: boolean + reminderId: number + clicked: boolean = false + + constructor(id: number, title: string, image: Resource, isSubscribe: boolean, reminderId: number, clicked: boolean) { + this.id = id + this.image = image + this.title = title + this.isSubscribe = isSubscribe + this.reminderId = reminderId + this.clicked = clicked + } +} + +let subscribeDataArray:Array = null + +export function getSubscribeData(): Array { + if(subscribeDataArray === null) { + subscribeDataArray = [ + { "id": 0, "title": '图一', "image": $rawfile('index/banner1.png'), "isSubscribe": false, "reminderId": 0, "clicked":false}, + { "id": 1, "title": '图二', "image": $rawfile('index/banner2.png'), "isSubscribe": false, "reminderId": 0, "clicked":false }, + { "id": 2, "title": '图三', "image": $rawfile('index/banner3.jpg'), "isSubscribe": false, "reminderId": 0, "clicked":false } + ] + } + return subscribeDataArray +} + +let modelDataArray:Array = null + +export function getModelData(): Array { + if(modelDataArray === null) { +// modelDataArray = [ +// { "id": 0, "title": '图一', "image": $rawfile('model/personal'+'0'+'.jpg'), "isSubscribe": false, "reminderId": 0 }, +// { "id": 1, "title": '图二', "image": $rawfile('model/personal'+'1'+'.jpg'), "isSubscribe": false, "reminderId": 0 }, +// { "id": 2, "title": '图三', "image": $rawfile('model/personal'+'2'+'.jpg'), "isSubscribe": false, "reminderId": 0 } +// ] + modelDataArray = new Array() + for(var i=0,len = 22;i < len; i++) + { + let path = 'model/personal'+ i +'.jpg' + let data = new SubscribeData( i, '图'+ i, $rawfile(path), false, i, false ) + modelDataArray.push(data) + } + } + return modelDataArray +} + +let settingsSwitchState = false + +export function getSwitchState(): boolean { + settingsSwitchState = false + subscribeDataArray.forEach(item => { + if (item.isSubscribe) { + settingsSwitchState = true + } + }) + return settingsSwitchState +} + +let productDataArray:Array = null + +export function getProductData(): Array { + + productDataArray = [ + { "id": 0, "title": '乐凯金圣莱4D光面', "image": $r('app.media.product1'), "isSubscribe": false, "reminderId": 0, "clicked":false }, + { "id": 1, "title": 'Lomo卡-18P', "image": $r('app.media.product2'), "isSubscribe": false, "reminderId": 1, "clicked":false }, + { "id": 2, "title": '乐凯金圣莱4D光面', "image": $r('app.media.product_21'), "isSubscribe": false, "reminderId": 2, "clicked":false }, + { "id": 3, "title": 'Lomo卡-18P', "image": $r('app.media.product_22'), "isSubscribe": false, "reminderId": 3, "clicked":false } + ] + + return productDataArray +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/pages/DetailsPage.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/pages/DetailsPage.ets" new file mode 100644 index 0000000000000000000000000000000000000000..a71a8fc5a9a9571b2da93687453a13dcd5eedaa2 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/pages/DetailsPage.ets" @@ -0,0 +1,146 @@ +import { initializeOnStartup } from '../model/ProductDataModels'; +import { ProductData } from '../model/ProductData'; +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import AppContext from '@ohos.application.context'; +import { DetailsPageStyle, PERCENTAGE_100 } from '../common/constants/Constants'; +import AddressComponent from '../view/details/AddressComponent'; +import PickerComponent from '../view/details/PickerComponent'; +import PriceComponent from '../view/details/PriceComponent'; +import GoodsTitleComponent from '../view/details/GoodsTitleComponent'; +import PanelComponent from '../view/details/PanelComponent'; +import CommentsComponent from '../view/details/CommentsComponent'; +import CommentsHeaderComponent from '../view/details/CommentsHeaderComponent'; +import BottomBarComponent from '../view/details/BottomBarComponent'; +import ServicesComponent from '../view/details/ServicesComponent'; +import BalanceComponent from '../view/BalanceComponent'; +import CardComponent from '../view/CardComponent'; +import PreviewerComponent from '../view/details/PreviewerComponent'; +import GoodsData from '../common/bean/GoodsData'; +import DetailsViewModel from '../viewmodel/DetailsViewModel'; + +let viewModel: DetailsViewModel = new DetailsViewModel(); +const KEY: string = 'GoodsPosition'; +let position = AppStorage.Get(KEY); + +//const KEY: string = 'ProductData'; +//let pitem = AppStorage.Get(KEY); + +@Extend(Image) function setTopImageStyle () { + .width(DetailsPageStyle.TOP_IMAGE_SIZE) + .height(DetailsPageStyle.TOP_IMAGE_SIZE) +} + +@Entry +@Component +struct DetailsPage { +// private goodsDetails: GoodsData; + private goodsDetails: ProductData; + private productItems: ProductData[]; + + aboutToAppear() { +// this.goodsDetails = viewModel.loadDetails(position); + + this.productItems = initializeOnStartup(); + this.goodsDetails = this.productItems[position] + + + } + + build() { + Column() { + Scroll() { + Column() { + Stack({ alignContent: Alignment.Top }) { + // GoodsPreviewer displays images about goods. + PreviewerComponent({ goodsImg: this.goodsDetails.image }) + this.TopBarLayout() + } + .height(DetailsPageStyle.TOP_LAYOUT_HEIGHT) + .width(PERCENTAGE_100) + .backgroundColor($r('app.color.background1')) + // the card layout style about goods information. + this.CardsLayout() + }.width(PERCENTAGE_100) + } + .height(DetailsPageStyle.SCROLL_LAYOUT_WEIGHT) + .backgroundColor($r('app.color.background')) + // tool bar in the bottom. + BottomBarComponent().height(DetailsPageStyle.TOOLBAR_WEIGHT) + } + .height(PERCENTAGE_100) + .width(PERCENTAGE_100) + } + + @Builder BackLayout() { + Image($rawfile('detail/detail_back.png')) + .setTopImageStyle() + .onClick(() => { + let handler = getContext(this) as AppContext.AbilityContext; + handler.terminateSelf(); + }) + } + + @Builder ShareLayout() { + Image($rawfile('detail/detail_share.png')).setTopImageStyle() + } + + @Builder TopBarLayout() { + BalanceComponent({ left: this.BackLayout(),center:null, right: this.ShareLayout() }) + .width(PERCENTAGE_100) + .padding(DetailsPageStyle.MARGIN_TOP_LAYOUT) + } + + @Builder MoreActionBuilder() { + Image($rawfile('detail/detail_pick_up_more.png')) + .objectFit(ImageFit.Contain) + .height(DetailsPageStyle.IMAGE_SIZE_MORE) + .width(DetailsPageStyle.IMAGE_SIZE_MORE) + } + + @Builder CardsLayout() { + CardComponent() { + PriceComponent({ price: this.goodsDetails.price.toString() }) + GoodsTitleComponent({ title: this.goodsDetails.name }) + .margin({ top: DetailsPageStyle.TITLE_MARGIN_TOP, + bottom: DetailsPageStyle.TITLE_MARGIN_BOTTOM }) + PanelComponent() + } + + CardComponent() { + PickerComponent({ goodsDescription: this.goodsDetails.size.toString(), + actionMoreBuilder: this.MoreActionBuilder }) + } + + CardComponent() { + AddressComponent() + Divider() + .height(DetailsPageStyle.DIVIDER_HEIGHT) + .backgroundColor($r('app.color.detail_goods_address_line')) + .margin({ + left: DetailsPageStyle.DIVIDER_MARGIN_LEFT, + bottom: DetailsPageStyle.DIVIDER_MARGIN_BOTTOM, + top: DetailsPageStyle.DIVIDER_MARGIN_TOP + }) + ServicesComponent() + } + + CardComponent() { + CommentsHeaderComponent() + CommentsComponent().margin({ top: DetailsPageStyle.COMMENT_LIST_MARGIN_TOP }) + } + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/pages/HomePicturePage.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/pages/HomePicturePage.ets" new file mode 100644 index 0000000000000000000000000000000000000000..1a9f820a2223ccecaf0a6e8c0893ad28b025d7ee --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/pages/HomePicturePage.ets" @@ -0,0 +1,85 @@ +import { SubscribeData } from '../model/SubscribeDataModels'; +import { getModelData } from '../model/SubscribeDataModels'; +import AppContext from '@ohos.application.context'; +import Point from '../common/bean/Point'; +import Common from '../common/constants/Const'; +const KEY: string = 'HomePicturePosition'; +let imageUrl = AppStorage.Get(KEY); + +@Entry +@Component +export struct HomePicturePage { + @State mainFlag: boolean = false; + @State point: Point = new Point(0, 0); + private subscribeItems: SubscribeData[]; + @State item: SubscribeData = new SubscribeData( + 0, '图一', $rawfile('index/banner1.png'), false, 0, false + ); + + aboutToAppear() { + this.subscribeItems = getModelData() + this.item = this.subscribeItems[imageUrl] + this.animate(); + } + animate() { + animateTo( + { + delay: Common.DELAY_10, + tempo: Common.TEMPO, + iterations: 2, + duration: Common.DURATION_500, + curve: Curve.Smooth, + playMode: PlayMode.Normal + }, () => { + this.mainFlag = !this.mainFlag; + }) + } + build() { + Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.End, justifyContent: FlexAlign.End }) { + Row() { + Image($r('app.media.arrow')) + .width('8%').height('50%') + .objectFit(ImageFit.Contain) + .margin({ left: 10 }) + .onClick(() => { + let handler = getContext(this) as AppContext.AbilityContext; + handler.terminateSelf(); + }) + .rotate({ y: 1, angle: 180 }) + Text('') + .fontSize(20) + .fontColor(Color.Black) + .margin({ left: 10 }) + } + .width('100%').height(56) + .backgroundColor(Color.White) + + Image(this.item.image) +// .sharedTransition(this.imageId, { duration: 1000, curve: Curve.Smooth, delay: 100 }) + .objectFit(ImageFit.Contain) + .width('100%') + .height('100%') + .translate( + this.mainFlag + ? { x: this.point.x, y: this.point.y } + : { x: 0, y: 0 } + ) + .rotate({ + x: 0, + y: 0, + z: 1, + angle: this.mainFlag ? Common.ROTATE_ANGLE_360 : 0 + }) + .scale({ + x: this.mainFlag ? Common.INIT_SCALE : 1, + y: this.mainFlag ? Common.INIT_SCALE : 1 + }) + .onClick(() => { + this.animate(); + }) + } + .width('100%') + .height('100%') + .backgroundColor($r('app.color.backgroundColor')) + } +} diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/pages/ModelDetailPage.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/pages/ModelDetailPage.ets" new file mode 100644 index 0000000000000000000000000000000000000000..c5a371ec7ff6870344f7ad3dad5934f65ba4a4d5 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/pages/ModelDetailPage.ets" @@ -0,0 +1,86 @@ +import ModelDetailViewModel from '../viewmodel/ModelDetailViewModel'; +import router from '@system.router' +import { SwiperItem } from '../common/pic' +import { SubscribeData, getModelData } from '../model/subscribeDataModels' + + +import AppContext from '@ohos.application.context'; +import { AnimationWidgets } from '../view/AnimationWidgets'; +import { CountController } from '../view/CountController'; +import { ItemComponent } from '../view/ItemComponent'; +import Common from '../common/constants/Const'; +import { AxisModel } from '../viewmodel/AxisModel'; +import {IconsModel} from '../viewmodel/IconsModel'; + +let viewModel: ModelDetailViewModel = new ModelDetailViewModel(); +let subscribeItems: SubscribeData[] = getModelData() +@Entry +@Component +export struct ModelDetailPage { + + @State quantity: number = Common.IMAGES_NOM; + @State axis: AxisModel = new AxisModel(Common.OFFSET_RADIUS, this.quantity); + @State iconModel: IconsModel = new IconsModel(this.quantity); + private index: number = 0 + scroller: Scroller = new Scroller() + + build() { + Stack({ alignContent: Alignment.TopStart }) { + Column() { + Row() { + Image($r('app.media.arrow')) + .width('8%').height('50%') + .objectFit(ImageFit.Contain) + .margin({ left: 10 }) + .onClick(() => { + router.back() + }) + .rotate({ y: 1, angle: 180 }) + Text('照片书模板') + .fontSize(20) + .fontColor(Color.Black) + .margin({ left: 10 }) + } + .width('100%').height(56) + .backgroundColor(Color.White) + +// Swiper() { +// ForEach(subscribeItems, item => { +// SwiperItem({ index: item.id }) +// }, item => item.title) +// } +// .width('100%') +// .height('360') +// .indicator(false) +// .index(this.index) +// .autoPlay(true) +// .itemSpace(15) +// .displayMode(SwiperDisplayMode.AutoLinear) + + Column() { +// AnimationWidgets({ +// quantity: $quantity, +// axis: this.axis, +// iconModel: this.iconModel +// }) + + CountController({ + quantity: $quantity + }) + ItemComponent({ + quantity: $quantity, + iconModel: this.iconModel, + subscribeItems: subscribeItems + }) + } + .width(Common.DEFAULT_FULL_WIDTH) +// .height(Common.DEFAULT_FULL_HEIGHT) +// .backgroundColor($r('app.color.bgColor')) + + } + } + .width('100%') + .height('100%') + .backgroundColor($r('app.color.backgroundColor')) + } +} diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/pages/NavPage.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/pages/NavPage.ets" new file mode 100644 index 0000000000000000000000000000000000000000..e316404e7a76e5d6c8b7804ca8e607c314f91bc2 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/pages/NavPage.ets" @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import HomePage from '../view/home/HomePage'; +import DIYPage from '../view/home/DIYPage'; +import NewPage from '../view/new/NewPage'; +import ShoppingCart from '../view/car/ShoppingCartPage'; +import UserPage from '../view/home/UserPage'; +import NavViewModel from '../viewmodel/NavViewModel'; +import ToolBarData from '../common/bean/ToolBarData'; +import ToolBarComponent from '../view/ToolBarComponent'; +import { AppFontSize, NavPageStyle, PERCENTAGE_100 } from '../common/constants/Constants'; + +const HOME: number = 0; +const NEW: number = 1; +const CAR: number = 2; +const USER: number = 3; +let viewModel: NavViewModel = new NavViewModel(); + +@Extend(Navigation) function setNavStyle () { + .hideTitleBar(true) + .width(PERCENTAGE_100) + .height(PERCENTAGE_100) +} + +@Extend(Tabs) function setTabStyle () { + .barHeight(NavPageStyle.BAR_HEIGHT) + .scrollable(false) +} + +@Entry +@Component +struct NavPage { + @State toolBarConfigs: ToolBarData[] = []; // bottom navigation data. + @State navCurrentPosition: number = NavPageStyle.POSITION_INITIAL; + private controller: TabsController = new TabsController(); + + aboutToAppear() { + this.toolBarConfigs = viewModel.loadNavigationTab(); + } + + build() { + Navigation() { + Tabs({ barPosition: BarPosition.Start, controller: this.controller }) { + ForEach(this.toolBarConfigs, (item: ToolBarData, index) => { + TabContent() { + if (index === HOME) { + HomePage() + } else if (index === NEW) { + NewPage() + } else if (index === CAR) { + ShoppingCart() + } else if (index === USER) { + UserPage() + } else{ + this.HolderPage(item?.text) + } + } + }, item => item.toString()) + }.setTabStyle() + } + .toolBar(this.ToolBarBuilder()) + .setNavStyle() + } + + @Builder ToolBarBuilder() { + ToolBarComponent({ + controller: this.controller, + toolBarConfigs: this.toolBarConfigs, + navCurrentPosition: $navCurrentPosition + }) + } + + @Builder HolderPage(text: Resource) { + Column() { + Text(text) + .fontSize(AppFontSize.LARGER) + .backgroundColor(Color.White) + .height(PERCENTAGE_100) + .width(PERCENTAGE_100) + .textAlign(TextAlign.Center) + }.justifyContent(FlexAlign.Center) + } +} diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/pages/ProductDetailPage.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/pages/ProductDetailPage.ets" new file mode 100644 index 0000000000000000000000000000000000000000..cfb8d4021d1687cab33ee4ffb6d9b4ce39246210 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/pages/ProductDetailPage.ets" @@ -0,0 +1,131 @@ +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import AppContext from '@ohos.application.context'; +import { ProductData } from '../model/ProductData' +import ProductDetailViewModel from '../viewmodel/ProductDetailViewModel'; + +let viewModel: ProductDetailViewModel = new ProductDetailViewModel(); +const KEY: string = 'ProductData'; +let pitem = AppStorage.Get(KEY); + +@Entry +@Component +struct ProductDetailPage { + private item: ProductData + + aboutToAppear() { + this.item = new ProductData(pitem.name,pitem.image,pitem.category,pitem.price, + pitem.size,pitem.fat,pitem.carbohydrates,pitem.vitaminC) + this.item = viewModel.loadDetails(pitem) + } + + build() { + Column() { + Stack({ alignContent: Alignment.TopStart }) { + ProductImageDisplay({ productItem: pitem }) + PageTitle() + } + + ContentTable({ productItem: pitem }) + } + .alignItems(HorizontalAlign.Center) + .width('100%') + .height('100%') + .backgroundColor($r('app.color.backgroundColor')) + } +} + +@Component +struct PageTitle { + build() { + Row() { + Image($r('app.media.arrow')) + .width('8%').height('50%') + .objectFit(ImageFit.Contain) + .margin({ left: 10 }) + .onClick(() => { + let handler = getContext(this) as AppContext.AbilityContext; + handler.terminateSelf(); + }) + .rotate({ y: 1, angle: 180 }) + Text('产品详情') + .fontSize(20) + .fontColor(Color.Black) + .margin({ left: 10 }) + } + .width('100%').height(56) + .backgroundColor(Color.White) + } +} + +@Component +struct ProductImageDisplay { + private productItem: ProductData + + build() { + Stack({ alignContent: Alignment.BottomStart }) { + Image(this.productItem.image) + .objectFit(ImageFit.Auto) +// .sharedTransition(this.productItem.image.id.toString(), { duration: 1000, curve: Curve.Smooth, delay: 100 }) + +// Text(this.productItem.name) +// .fontSize(26) +// .fontWeight(500) +// .margin({ left: 26, bottom: 17.4 }) + } + .backgroundColor($r('app.color.backgroundColor')) + .height(480) + } +} + +@Component +struct ContentTable { + private productItem: ProductData + + @Builder IngredientItem(title: string, name: string, value: string) { + Row() { + Text(title) + .fontSize(17.4) + .fontWeight(FontWeight.Bold) + .layoutWeight(1) + Row() { + Text(name) + .fontSize(17.4) + .flexGrow(1) + Text(value) + .fontSize(17.4) + } + .width('100%') + .alignItems(VerticalAlign.Center) + .layoutWeight(2) + } + } + + build() { + Column() { + this.IngredientItem(' ', '名称', this.productItem.name + '') + this.IngredientItem(' ', '价格', this.productItem.price + '元') + this.IngredientItem(' ', '尺寸', this.productItem.size + 'mm') +// this.IngredientItem(' ', 'Fat', this.productItem.fat + 'g') +// this.IngredientItem(' ', 'Carbohydrates', this.productItem.carbohydrates + 'g') +// this.IngredientItem(' ', 'VitaminC', this.productItem.vitaminC + 'mg') + } + .alignItems(HorizontalAlign.Start) +// .justifyContent(FlexAlign.SpaceBetween) + .padding({ top: 20, right: 20, left: 20 }) + .height(250) + } +} diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/pages/ProductListPage.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/pages/ProductListPage.ets" new file mode 100644 index 0000000000000000000000000000000000000000..b49a91525b5c8a01a4899485d13aa04af1da10df --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/pages/ProductListPage.ets" @@ -0,0 +1,84 @@ +import router from '@system.router' +import {SubscribeData,getProductData} from '../model/SubscribeDataModels' + +const KEY: string = 'ProductPosition'; +let imageUrl = AppStorage.Get(KEY); +@Preview +@Entry +@Component +export struct productList { + + private data: SubscribeData[] = getProductData() + + + build() { + Stack({ alignContent: Alignment.TopStart }) { + Column({space: 0}) { + + Row() { + Image($r('app.media.arrow')) + .width('8%').height('50%') + .objectFit(ImageFit.Contain) + .margin({ left: 10 }) + .onClick(() => { + router.back() + }) + .rotate({ y: 1, angle: 180 }) + Text('产品列表') + .fontSize(20) + .fontColor(Color.Black) + .margin({ left: 10 }) + } + .width('100%').height(56) + .backgroundColor(Color.White) + +// Image($r('app.media.product1')) + Image($rawfile(imageUrl)) +// .sharedTransition(this.imageId, { duration: 1000, curve: Curve.Smooth, delay: 100 }) + .objectFit(ImageFit.Auto) + .height(240) + Grid() { + ForEach(this.data, (item: SubscribeData) => { + GridItem() { + GridItemView({ gridItem: item }) + } + }, (item: SubscribeData) => item.id.toString()) + } + .columnsGap(10) + .rowsGap(10) + .columnsTemplate('1fr 1fr') + .padding(10) + } + .backgroundColor($r('app.color.backgroundColor')) + } + .backgroundColor($r('app.color.backgroundColor')) + } +} + + +@Component +export struct GridItemView { + private gridItem: SubscribeData; + + build() { + Column({space: 10}) { + Image(this.gridItem.image) + .objectFit(ImageFit.Auto) + .height(152) + .width('100%') + .sharedTransition(this.gridItem.image.id.toString(), { duration: 600, curve: Curve.Smooth, delay: 100 }) + Text(this.gridItem.title) + .fontSize(15) + .fontColor(Color.Black) + .margin(20) + .textAlign(TextAlign.Center) + } + .onClick(() => { + router.push({ + uri: 'pages/homePicture', + params: { imageUrl: this.gridItem.image, imageId: this.gridItem.image.id.toString() } + }) + }) + .backgroundColor(Color.White) + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/AnimationWidgets.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/AnimationWidgets.ets" new file mode 100644 index 0000000000000000000000000000000000000000..add96b41facc83eda9a9db564645e0e330feba9b --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/AnimationWidgets.ets" @@ -0,0 +1,100 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License,Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AxisModel } from '../viewmodel/AxisModel'; +import { IconsModel } from '../viewmodel/IconsModel'; +import { IconAnimation } from './IconAnimation'; +import Common from '../common/constants/Const'; +import IconItem from '../common/bean/IconItem'; + +@Component +export struct AnimationWidgets { + @State mainFlag: boolean = false; + @Link @Watch('onQuantityChange') quantity: number; + @ObjectLink axis: AxisModel; + @ObjectLink iconModel: IconsModel; + + onQuantityChange() { + this.iconModel.addImage(this.quantity); + this.axis.addPoints(this.quantity); + } + + aboutToAppear() { + this.onQuantityChange(); + } + + animate() { + animateTo( + { + delay: Common.DELAY_10, + tempo: Common.TEMPO, + iterations: 1, + duration: Common.DURATION_500, + curve: Curve.Smooth, + playMode: PlayMode.Normal + }, () => { + this.mainFlag = !this.mainFlag; + }) + } + + build() { + Stack() { + Stack() { + ForEach(this.iconModel.imagerArr, (item: IconItem) => { + IconAnimation({ + item: item, + point: this.axis.points[item.index], + mainFlag: $mainFlag + }) + }, item => JSON.stringify(item)) + } + .rotate({ + x: 0, + y: 0, + z: 1, + angle: this.mainFlag ? Common.ROTATE_ANGLE_360 : 0 + }) + + Image( + this.mainFlag + ? $r("app.media.imgActive") + : $r("app.media.imgInit") + ) + .width($r('app.float.size_64')) + .height($r('app.float.size_64')) + .objectFit(ImageFit.Contain) + .scale({ + x: this.mainFlag ? Common.INIT_SCALE : 1, + y: this.mainFlag ? Common.INIT_SCALE : 1 + }) + .onClick(() => { + this.iconModel.reset(); + this.animate(); + }) + + Text($r('app.string.please_click_button')) + .fontSize($r('app.float.size_16')) + .opacity(Common.OPACITY_06) + .fontColor($r('app.color.fontGrayColor')) + .fontWeight(Common.FONT_WEIGHT_500) + .margin({ + top: $r('app.float.size_100') + }) + } + .width(Common.DEFAULT_FULL_WIDTH) + .layoutWeight(1) + + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/BalanceComponent.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/BalanceComponent.ets" new file mode 100644 index 0000000000000000000000000000000000000000..db61a8002fc5dd09acac8154c04398cf21eac739 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/BalanceComponent.ets" @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { BalanceStyle } from '../common/constants/Constants'; + +/* + * BalanceComponent + * right: The right component align start. + * left: The left component align end. + */ +@Component +export default struct BalanceComponent { + @BuilderParam right: any; + @BuilderParam left: any; + @BuilderParam center: any; + + build() { + Row() { + Row() { + this.left() + } + .layoutWeight(BalanceStyle.LAYOUT_WEIGHT) + .align(Alignment.Start) + + Row() { + this.center() + } + .layoutWeight(BalanceStyle.LAYOUT_WEIGHT_MAX) + .align(Alignment.Center) + .justifyContent(FlexAlign.Center) + + Row() { + this.right() + } + .layoutWeight(BalanceStyle.LAYOUT_WEIGHT) + .justifyContent(FlexAlign.End) + + } + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/CardComponent.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/CardComponent.ets" new file mode 100644 index 0000000000000000000000000000000000000000..9c17fd2e3d3652c4ec59c61b5a77884771f69b23 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/CardComponent.ets" @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { CardStyle } from '../common/constants/Constants'; + +/* + * CardComponent is a container with round corner. + */ +@Component +export default struct CardComponent { + @BuilderParam children: () => void; + paddingValue: Padding | Length; + marginValue: Margin | Length; + colorValue: ResourceColor; + radiusValue: Length; + + build() { + Column() { + this.children() + } + .padding(this.paddingValue??{ + top: CardStyle.CARD_PADDING_VERTICAL, + bottom: CardStyle.CARD_PADDING_VERTICAL, + left: CardStyle.CARD_PADDING_HORIZONTAL, + right: CardStyle.CARD_PADDING_HORIZONTAL + }) + .margin(this.marginValue??{ + top: CardStyle.CARD_MARGIN_TOP, + left: CardStyle.CARD_MARGIN_HORIZONTAL, + right: CardStyle.CARD_MARGIN_HORIZONTAL + }) + .backgroundColor(this.colorValue??$r('app.color.background1')) + .borderRadius(this.radiusValue??CardStyle.CARD_RADIUS) + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/CountController.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/CountController.ets" new file mode 100644 index 0000000000000000000000000000000000000000..5748b07dfa68673ac21730f976a9a35fbff217d5 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/CountController.ets" @@ -0,0 +1,59 @@ +import Common from '../common/constants/Const'; + +@Extend(Text) function textStyle () { + .fontSize($r('app.float.size_16')) + .fontWeight(Common.FONT_WEIGHT_500) +} + +@Component +export struct CountController { + @Link quantity: number; + + build() { + Column() { + Row() { + Text($r('app.string.count')) + .textStyle() + + Text(this.quantity.toFixed(0)) + .textStyle() + } + .justifyContent(FlexAlign.SpaceBetween) + .width(Common.DEFAULT_FULL_WIDTH) + .margin({ + top: $r('app.float.size_4') + }) + + Slider({ + value: this.quantity, + min: Common.IMAGES_MIN, + max: Common.IMAGES_TOTAL, + step: 1, + style: SliderStyle.InSet + }) + .blockColor(Color.White) + .selectedColor('#007DFF') + .margin({ + top: $r('app.float.size_5') + }) + .showSteps(true) + .trackThickness($r('app.float.size_20')) + .onChange((value: number) => { + this.quantity = value; + }) + } + .height(Common.CONTROLLER_WIDTH) + .padding({ + top: $r('app.float.size_12'), + bottom: $r('app.float.size_12'), + left: $r('app.float.size_16'), + right: $r('app.float.size_16') + }) +// .margin({ +// bottom: $r('app.float.size_48') +// }) +// .width(Common.CONTROLLER_HEIGHT) + .borderRadius($r('app.float.size_24')) + .backgroundColor($r('app.color.white')) + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/IconAnimation.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/IconAnimation.ets" new file mode 100644 index 0000000000000000000000000000000000000000..2fe33a54065a9e0809893e6ccac1a9dec0a7e064 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/IconAnimation.ets" @@ -0,0 +1,61 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License,Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import IconItem from '../common/bean/IconItem'; +import Point from '../common/bean/Point'; +import Common from '../common/constants/Const'; + +@Component +export struct IconAnimation { + @Link mainFlag: boolean; + @State point: Point = new Point(0, 0); + @State item: IconItem = new IconItem(0, $r('app.media.app_icon'), false); + + build() { + Image(this.item.image) + .width(Common.ICON_WIDTH) + .height(Common.ICON_HEIGHT) + .objectFit(ImageFit.Contain) + .translate( + this.mainFlag + ? { x: this.point.x, y: this.point.y } + : { x: 0, y: 0 } + ) + .rotate({ + x: 0, + y: 1, + z: 0, + angle: this.item.clicked ? Common.ROTATE_ANGLE_360 : 0 + }) + .scale( + this.item.clicked + ? { x: Common.SCALE_RATIO, y: Common.SCALE_RATIO } + : { x: 1, y: 1 } + ) + .opacity(this.item.clicked ? Common.OPACITY_06 : 1) + .onClick(() => { + this.item.clicked = !this.item.clicked; + }) + .animation( + { + delay: Common.DELAY_10, + duration: Common.DURATION_1000, + iterations: 1, + curve: Curve.Smooth, + playMode: PlayMode.Normal + } + ) + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/ItemComponent.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/ItemComponent.ets" new file mode 100644 index 0000000000000000000000000000000000000000..77bded9af97efb547d2c00d0a0c762fb8ca084b9 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/ItemComponent.ets" @@ -0,0 +1,99 @@ +import ModelDetailViewModel from '../viewmodel/ModelDetailViewModel'; +import { IconsModel } from '../viewmodel/IconsModel'; +import { SubscribeData } from '../model/SubscribeDataModels'; +import Common from '../common/constants/Const'; +import AppContext from '@ohos.application.context'; + +let viewModel: ModelDetailViewModel = new ModelDetailViewModel(); + +@Component +export struct ItemComponent { + @State mainFlag: boolean = false; + @Link @Watch('onQuantityChange') quantity: number; + subscribeItems: SubscribeData[]; + @ObjectLink iconModel: IconsModel; + + onQuantityChange() { + this.iconModel.addImage(this.quantity); + this.mainFlag = !this.mainFlag; + } + + aboutToAppear() { + this.onQuantityChange(); + } + + + build() { + Grid() { + ForEach(this.subscribeItems, (item: SubscribeData) => { + GridItem() { + GridItemView({ gridItem: item, + mainFlag: $mainFlag}) + } + .rotate({ + x: 0, + y: 1, + z: 0, + angle: this.mainFlag ? Common.ROTATE_ANGLE_180 : 0 + }) + .animation( + { + delay: Common.DELAY_10, + duration: Common.DURATION_1000, + iterations: 1, + curve: Curve.Smooth, + playMode: PlayMode.Normal + } + ) + }, (item: SubscribeData) => item.id.toString()) + } + .columnsGap(10) + .rowsGap(10) + .columnsTemplate(this.iconModel.columnsTemplate) + .padding(10) + .width('100%') + .height('100%') + } +} + +@Component +struct GridItemView { + @Link mainFlag: boolean; + @State gridItem: SubscribeData = new SubscribeData( + 0, '图一', $rawfile('index/banner1.png'), false, 0, false + ); + aboutToAppear() { + this.gridItem.clicked = !this.mainFlag; + } + build() { + Column({space: 10}) { + Image(this.gridItem.image) + .objectFit(ImageFit.Auto) +// .height(152) + .width('100%') + .rotate({ + x: 0, + y: 1, + z: 0, + angle: this.gridItem.clicked ? Common.ROTATE_ANGLE_180 : 0 + }) +// .scale( +// this.gridItem.clicked +// ? { x: Common.SCALE_RATIO, y: Common.SCALE_RATIO } +// : { x: 1, y: 1 } +// ) +// .opacity(this.gridItem.clicked ? Common.OPACITY_06 : 1) +// Text(this.gridItem.title) +// .fontSize(15) +// .fontColor(Color.Black) +// .margin(10) +// .textAlign(TextAlign.Center) + } + .onClick(() => { + this.gridItem.clicked = !this.gridItem.clicked; + let handler = getContext(this) as AppContext.Context; + viewModel.startModelDetailAbility(handler, this.gridItem.id); + }) + .backgroundColor(Color.White) + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/ToolBarComponent.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/ToolBarComponent.ets" new file mode 100644 index 0000000000000000000000000000000000000000..1f504ffd00e8fb7d6e31248cbd3d4e3350df46e0 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/ToolBarComponent.ets" @@ -0,0 +1,56 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import ToolBarData from '../common/bean/ToolBarData'; +import { AppFontSize, AppFontWeight, PERCENTAGE_100, ToolBarStyle } from '../common/constants/Constants'; + +@Component +export default struct ToolBarComponent { + @Link navCurrentPosition: number; + toolBarConfigs: ToolBarData[]; + controller: TabsController; + + build() { + Column() { + Divider() + .backgroundColor(Color.Black) + .height(ToolBarStyle.DIVIDER_HEIGHT) + .opacity(ToolBarStyle.DIVIDER_OPACITY) + Row() { + ForEach(this.toolBarConfigs, (item, index) => { + Column() { + Image(this.navCurrentPosition === index ? item?.icon_after : item?.icon) + .height(ToolBarStyle.IMAGE_SIZE) + .margin({ bottom: ToolBarStyle.MARGIN_BOTTOM }) + .objectFit(ImageFit.Contain) + Text(item?.text) + .fontColor(this.navCurrentPosition === index ? $r('app.color.index_navigation_selected_text') : $r('app.color.text')) + .fontWeight(AppFontWeight.BOLDER) + .fontSize(AppFontSize.SMALLER) + .textAlign(TextAlign.Center) + } + .width(ToolBarStyle.LAYOUT_WEIGHT) + .onClick(() => { + this.navCurrentPosition = item.num + this.controller.changeIndex(this.navCurrentPosition) + }) + }) + } + } + .backgroundColor(Color.White) + .height(PERCENTAGE_100) + } +} + diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/car/ShoppingCartPage.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/car/ShoppingCartPage.ets" new file mode 100644 index 0000000000000000000000000000000000000000..5d286ff39a7c727ef15ad1cd986ce94a460baf4f --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/car/ShoppingCartPage.ets" @@ -0,0 +1,161 @@ + +import GoodsData from '../../common/bean/GoodsData'; +import DataModel from '../../model/DataModel'; +import prompt from '@system.prompt'; + +@Entry +@Component +export default struct ShoppingCart { + @Provide totalPrice : number =0 + @State goodsItems: GoodsData[] = DataModel.GOOD_LIST + build() { + Column() { + Column() { + Text('购物车') + .fontColor(Color.White) + .fontSize(20) + .margin({ top:10,bottom:10,left: 60,right:60 }) + .align(Alignment.Center) + .textAlign(TextAlign.Center) + } + .backgroundColor($r('app.color.primaryColor')) + .width('100%') + .height(40) + + ShopCartList({ goodsItems: this.goodsItems }); + ShopCartBottom() + } + .backgroundColor($r('app.color.bottom_navigation')) + .alignItems(HorizontalAlign.Start) + } +} + +@Component +struct ShopCartList { + + private goodsItems: GoodsData[] + + build() { + Column() { + List() { + ForEach(this.goodsItems, item => { + ListItem() { + ShopCartListItem({ goodsItem: item }) + } + }) + } + .height('100%') + .width('100%') + .align(Alignment.Top) + .margin({top: 5}) + .backgroundColor(Color.White) + } + .height(600) + } +} + +@Component +struct ShopCartListItem { + @Consume totalPrice: number + private goodsItem: GoodsData + + build() { + Row() { + Toggle({type: ToggleType.Checkbox}) + .width(10) + .height(10) + .selectedColor($r('app.color.primaryColor')) + .onChange((isOn:boolean) => { + if(isOn){ + this.totalPrice +=parseInt((parseInt(this.goodsItem.price)*this.goodsItem.count)+'',0) + }else{ + this.totalPrice -= parseInt((parseInt(this.goodsItem.price)*this.goodsItem.count)+'',0) + } + }) + Image(this.goodsItem.goodsImg) + .objectFit(ImageFit.ScaleDown) + .height(100) + .width(100) + .renderMode(ImageRenderMode.Original) + + Column() { + Text(this.goodsItem.goodsName) + .fontSize(14) + Text('¥' + this.goodsItem.price) + .fontSize(14) + .fontColor(Color.Red) + } + .margin({left: 10}) + .align(Alignment.Start) + .alignItems(HorizontalAlign.Start) + .width('85%') + +// Row() { +// Text('-').fontSize(10) +// .width(18).height(18).textAlign(TextAlign.Center) +// .onClick(() => { +// if(this.goodsItem.count>0) +// { +// this.goodsItem.count-- +// } +// }) +// +// Divider().strokeWidth(1).vertical(true).height(18) +// +// Text('' + this.goodsItem.count).width(30).height(18).fontSize(11) +// .textAlign(TextAlign.Center) +// +// Divider().strokeWidth(1).vertical(true).height(18) +// +// Text('+').fontSize(14) +// .width(18).height(18).textAlign(TextAlign.Center) +// .onClick(() => { +// this.goodsItem.count++ +// }) +// } +// .border({ width: 1, radius: 3 }) +// .justifyContent(FlexAlign.End) +// .align(Alignment.End) + } + .height(100) + .width(180) + .margin({left: 20}) + .alignItems(VerticalAlign.Center) + .backgroundColor(Color.White) + } +} + +@Component +struct ShopCartBottom { + @Consume totalPrice: number + build() { + Row() { + Text('合计: '+this.totalPrice+'元') + .fontColor(Color.Red) + .fontSize(16) + .margin({left:40}) + .width(150) + Text('去结算') + .fontColor(Color.Black) + .fontSize(16) + .padding({left:20,right:20,top:10,bottom:10}) + .margin({left:140}) + .fontColor(Color.White) + .border({ width: 1 }) + .borderColor($r('app.color.primaryColor')) + .borderRadius(20) + .backgroundColor($r('app.color.primaryColor')) + .onClick(()=>{ + prompt.showToast({ + message: '提交订单', + duration: 50, + bottom:100 + }) + }) + } + .height(40) + .width('100%') + .backgroundColor(Color.White) + .alignItems(VerticalAlign.Center) + } +} diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/AddressComponent.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/AddressComponent.ets" new file mode 100644 index 0000000000000000000000000000000000000000..f757188e021f043323b334edca0b75ec091c5068 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/AddressComponent.ets" @@ -0,0 +1,63 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AppFontSize, AppFontWeight, PERCENTAGE_100 } from '../../common/constants/Constants'; +import { AddressPicker } from '../../common/constants/DetailsConstants'; + +@Component +export default struct AddressComponent { + build() { + Row() { + Column() { + Text($r('app.string.detail_address_text')) + .maxLines(AddressPicker.MAX_LINES) + .textOverflow({ overflow: TextOverflow.Ellipsis }) + .textCase(TextCase.UpperCase) + .fontSize(AppFontSize.SMALL) + .fontColor($r('app.color.text')) + .fontWeight(AppFontWeight.BOLDER) + } + .width(AddressPicker.LAYOUT_WEIGHT_LEFT) + .alignItems(HorizontalAlign.Start) + + Row() { + Image($rawfile('detail/detail_location.png')) + .objectFit(ImageFit.Contain) + .height(AddressPicker.IMAGE_SIZE_LOCATION) + .width(AddressPicker.IMAGE_SIZE_LOCATION) + .margin({ right: AddressPicker.MARGIN_RIGHT_IMAGE }) + Text($r('app.string.detail_address_holder_text')) + .maxLines(AddressPicker.MAX_LINES) + .textOverflow({ overflow: TextOverflow.Ellipsis }) + .textCase(TextCase.UpperCase) + .fontSize(AppFontSize.SMALL) + .fontColor(Color.Black) + .fontWeight(AppFontWeight.BOLD) + } + .justifyContent(FlexAlign.Start) + .width(AddressPicker.LAYOUT_WEIGHT_CENTER) + + Row() { + Image($rawfile('detail/detail_pick_up_more.png')) + .objectFit(ImageFit.Contain) + .height(AddressPicker.IMAGE_SIZE_MORE) + .width(AddressPicker.IMAGE_SIZE_MORE) + } + .width(AddressPicker.LAYOUT_WEIGHT_RIGHT) + .justifyContent(FlexAlign.End) + } + .width(PERCENTAGE_100) + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/BottomBarComponent.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/BottomBarComponent.ets" new file mode 100644 index 0000000000000000000000000000000000000000..1e48ab91076d9509797a6fff282bb0dc8d4b4b89 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/BottomBarComponent.ets" @@ -0,0 +1,77 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AppFontSize, PERCENTAGE_100 } from '../../common/constants/Constants'; +import { BottomBar } from '../../common/constants/DetailsConstants'; +import prompt from '@system.prompt'; +import { CAR_KEY } from '../../common/constants/Constants'; + +@Extend(Text) function setTextStyle () { + .width(BottomBar.TEXT_WIDTH) + .lineHeight(BottomBar.TEXT_LINE_HEIGHT) + .textAlign(TextAlign.Center) + .fontColor($r('app.color.background')) + .fontSize(AppFontSize.MIDDLE) +} + +@Component +export default struct BottomBarComponent { + private barHeight: Length; + + build() { + Column() { + Divider() + .height(BottomBar.DIVIDER_HEIGHT) + .backgroundColor($r('app.color.navigation_line')) + Row() { + Row() { + Text($r('app.string.put_in_shopping_cart')) + .setTextStyle() + .onClick(()=>{ + +// AppStorage.SetOrCreate(CAR_KEY, index); + prompt.showToast({ + message: '已加入到购物车', + duration: 50, + bottom:100 + }) + }) + Text($r('app.string.buy_now')) + .setTextStyle() + .onClick(()=>{ + prompt.showToast({ + message: '可进入支付流程', + duration: 50, + bottom:100 + }) + }) + } + .width(BottomBar.CONTAINER_SIZE_WIDTH) + .height(BottomBar.CONTAINER_SIZE_HEIGHT) + .backgroundImage($rawfile('detail/detail_bottom_panel_background.png'), ImageRepeat.NoRepeat) + .backgroundImageSize(ImageSize.Cover) + } + .padding({ + top: BottomBar.BAR_PADDING_TOP, + bottom: BottomBar.BAR_PADDING_BOTTOM, + right: BottomBar.BAR_PADDING_RIGHT + }) + .width(PERCENTAGE_100) + .height(this.barHeight) + .backgroundColor($r('app.color.bottom_navigation')) + .justifyContent(FlexAlign.End) + } + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/CommentsComponent.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/CommentsComponent.ets" new file mode 100644 index 0000000000000000000000000000000000000000..dbbe320ceb234a9990f184c96c0d6c33526e28a8 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/CommentsComponent.ets" @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AppFontSize, AppFontWeight, PERCENTAGE_100 } from '../../common/constants/Constants'; +import { CommentList } from '../../common/constants/DetailsConstants'; + +@Extend(Image) function setImageStyle () { + .objectFit(ImageFit.Contain) + .size({ width: CommentList.IMAGE_MARK_WIDTH }) +} + +@Component +export default struct CommentsComponent { + build() { + List({ space: CommentList.SPACE }) { + ListItem() { + this.CommentItem() + } + + ListItem() { + this.CommentItem() + } + + ListItem() { + this.CommentItem() + } + } + .height(CommentList.HEIGHT) + .width(PERCENTAGE_100) + .backgroundColor(Color.White) + .edgeEffect(EdgeEffect.None) + } + + @Builder CommentItem() { + Column() { + Row() { + Image($rawfile('detail/head_portrait.png')) + .objectFit(ImageFit.Contain) + .size({ width: CommentList.IMAGE_SIZE_HEAD_PORTRAIT }) + .margin({ right: CommentList.MARGIN_HEAD_PORTRAIT }) + Column() { + Text($r('app.string.detail_comment_phone')) + .lineHeight(CommentList.LINE_HEIGHT_PHONE) + .textOverflow({ overflow: TextOverflow.Ellipsis }) + .textCase(TextCase.UpperCase) + .fontSize(AppFontSize.SMALL) + .fontWeight(AppFontWeight.BOLDER) + Blank() + .height(CommentList.BLANK_HEIGHT_PHONE) + Row() { + Image($rawfile('detail/detail_comment_mark.png')) + .setImageStyle() + Blank().width(CommentList.MARK_BLANK_WIDTH) + Image($rawfile('detail/detail_comment_mark.png')) + .setImageStyle() + Blank().width(CommentList.MARK_BLANK_WIDTH) + Image($rawfile('detail/detail_comment_mark.png')) + .setImageStyle() + Blank().width(CommentList.MARK_BLANK_WIDTH) + Image($rawfile('detail/detail_comment_mark.png')) + .setImageStyle() + } + } + .width(PERCENTAGE_100) + .alignItems(HorizontalAlign.Start) + } + + Text($r('app.string.detail_comment')) + .maxLines(CommentList.COMMENT_MAX_LINES) + .lineHeight(CommentList.COMMENT_LINE_HEIGHT) + .textOverflow({ overflow: TextOverflow.Ellipsis }) + .textCase(TextCase.UpperCase) + .fontSize(AppFontSize.SMALL) + .fontWeight(AppFontWeight.BOLD) + .margin({ top: CommentList.MARGIN_TEXT }) + } + .alignItems(HorizontalAlign.Start) + .width(PERCENTAGE_100) + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/CommentsHeaderComponent.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/CommentsHeaderComponent.ets" new file mode 100644 index 0000000000000000000000000000000000000000..8b83dcdf6a6d4ad586671d6c7c70108a7b0cdf05 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/CommentsHeaderComponent.ets" @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AppFontSize, AppFontWeight } from '../../common/constants/Constants'; +import { CommentHeader } from '../../common/constants/DetailsConstants'; + +@Component +export default struct CommentsHeaderComponent { + build() { + Row() { + Text($r('app.string.detail_comment_header_left')) + .lineHeight(CommentHeader.LINE_HEIGHT) + .textOverflow({ overflow: TextOverflow.Ellipsis }) + .textCase(TextCase.UpperCase) + .fontSize(AppFontSize.MIDDLE) + .fontColor($r('app.color.text')) + .fontWeight(AppFontWeight.BOLDER) + .width(CommentHeader.LAYOUT_WEIGHT) + .textAlign(TextAlign.Start) + Row() { + Text() { + Span($r('app.string.commentRatio')) + .textCase(TextCase.UpperCase) + .fontSize(AppFontSize.SMALL) + .fontColor(Color.Red) + .fontWeight(AppFontWeight.BOLD) + Span($r('app.string.detail_comment_header_right')) + .textCase(TextCase.UpperCase) + .fontSize(AppFontSize.SMALL) + .fontColor($r('app.color.commentRate')) + .fontWeight(AppFontWeight.BOLD) + Span(CommentHeader.ARROW) + .textCase(TextCase.UpperCase) + .fontSize(AppFontSize.MIDDLE) + .decoration({ type: TextDecorationType.None, color: Color.Red }) + .fontColor($r('app.color.commentRate')) + .fontWeight(AppFontWeight.BOLD) + } + .width(CommentHeader.LAYOUT_WEIGHT) + .textAlign(TextAlign.End) + + } + } + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/GoodsTitleComponent.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/GoodsTitleComponent.ets" new file mode 100644 index 0000000000000000000000000000000000000000..f4a2a0170e12e542ea7ca85c0f814f1f14d810dc --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/GoodsTitleComponent.ets" @@ -0,0 +1,38 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AppFontSize, AppFontWeight, PERCENTAGE_100 } from '../../common/constants/Constants'; +import { GoodsTitle } from '../../common/constants/DetailsConstants'; + +@Component +export default struct GoodsTitleComponent { + private title: Resource | string + + build() { + Column() { + Text(this.title) + .maxLines(GoodsTitle.MAX_LINE) + .lineHeight(GoodsTitle.LINE_HEIGHT) + .textOverflow({ overflow: TextOverflow.Ellipsis }) + .textCase(TextCase.UpperCase) + .fontSize(AppFontSize.MIDDLE) + .textAlign(TextAlign.Start) + .fontColor($r('app.color.text')) + .fontWeight(AppFontWeight.BOLD) + } + .width(PERCENTAGE_100) + .alignItems(HorizontalAlign.Start) + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/PanelComponent.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/PanelComponent.ets" new file mode 100644 index 0000000000000000000000000000000000000000..0cf5208ffa56c694107ea089cf4db9e0d5df2d9c --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/PanelComponent.ets" @@ -0,0 +1,95 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AppFontSize, PERCENTAGE_100 } from '../../common/constants/Constants'; +import { ActionPanel } from '../../common/constants/DetailsConstants'; +import lottie from '@ohos/lottieETS'; +import { CommonConstants } from '../../common/constants/CommonConst'; +@Entry +@Component +export default struct PanelComponent { + + private renderingSettings: RenderingContextSettings = new RenderingContextSettings(true); + private renderingContext: CanvasRenderingContext2D = new CanvasRenderingContext2D(this.renderingSettings); + private animateName: string = CommonConstants.ANIMATE_NAME; + private animateItem: any = null; + @State canvasTitle: Resource = undefined; + private img:ImageBitmap = new ImageBitmap("resources/rawfile/detail/detail_action_add_to_favorites.png") + @Styles globalSize() { + .size({ width: ActionPanel.IMAGE_HEIGHT }) + } + + build() { + Row() { + Row() { + Image($rawfile('detail/detail_action_share_to.png')) + .globalSize() + Blank() + .width(ActionPanel.BLANK_WIDTH) + Text($r('app.string.detail_enjoy')) + .fontSize(AppFontSize.SMALLER) + .fontColor($r('app.color.text')) + } + + Row() { +// Image($rawfile('detail/detail_action_add_to_favorites.png')) +// .globalSize() + if(true){} + Canvas(this.renderingContext) + .width(CommonConstants.CONTAINER_WIDTH) + .aspectRatio(CommonConstants.ASPECT_RATIO_176) + .backgroundImage($rawfile('detail/detail_action_add_to_favorites.png')) + .backgroundImageSize(ImageSize.Auto) + .backgroundImagePosition(Alignment.Center) +// .onReady(() =>{ +// this.renderingContext.imageSmoothingEnabled = true +// this.renderingContext.drawImage( this.img,9,0,18,18) +// }) + .onDisAppear(() => { + lottie.destroy(this.animateName); + }) + .size({ width: 48 }) +// Blank() +// .width(ActionPanel.BLANK_WIDTH) + Text($r('app.string.detail_collection')) + .fontSize(AppFontSize.SMALLER) + .fontColor($r('app.color.text')) + } + .onClick(() => { + this.animateItem = lottie.loadAnimation({ + container: this.renderingContext, + renderer: 'canvas', + loop: 1, + autoplay: true, + name: this.animateName, + path: 'common/lottie/data.json' + }); + this.animateItem.setSegment(0,55); + }) + + Row() { + Image($rawfile('detail/detail_action_price_notify.png')) + .globalSize() + Blank() + .width(ActionPanel.BLANK_WIDTH) + Text($r('app.string.detail_price_notify')) + .fontSize(AppFontSize.SMALLER) + .fontColor($r('app.color.text')) + } + } + .width(PERCENTAGE_100) + .justifyContent(FlexAlign.SpaceAround) + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/PickerComponent.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/PickerComponent.ets" new file mode 100644 index 0000000000000000000000000000000000000000..2e695fbfeda5bb3e84168eb21bc2f08412e873d4 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/PickerComponent.ets" @@ -0,0 +1,59 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AppFontSize, AppFontWeight, PERCENTAGE_100 } from '../../common/constants/Constants'; +import { GoodsPicker } from '../../common/constants/DetailsConstants'; + +@Component +export default struct PickerComponent { + private goodsDescription: string | Resource + @BuilderParam actionMoreBuilder: () => void; + + build() { + Row() { + Text($r('app.string.detail_goods_picker_left_text')) + .maxLines(GoodsPicker.MAX_LINES) + .lineHeight(GoodsPicker.LINE_HEIGHT_TEXT_SELECTED) + .textOverflow({ overflow: TextOverflow.Ellipsis }) + .textCase(TextCase.UpperCase) + .fontSize(AppFontSize.SMALL) + .fontColor(Color.Black) + .fontWeight(AppFontWeight.BOLDER) + .width(GoodsPicker.LAYOUT_WEIGHT_LEFT) + + Row() { + Text(this.goodsDescription) + .maxLines(GoodsPicker.MAX_LINES) + .lineHeight(GoodsPicker.LINE_HEIGHT_DESCRIPTION) + .textOverflow({ overflow: TextOverflow.Ellipsis }) + .textCase(TextCase.UpperCase) + .fontSize(AppFontSize.SMALL) + .fontColor($r('app.color.text')) + .fontWeight(AppFontWeight.BOLD) + .padding({ left: GoodsPicker.MARGIN_LEFT_DESCRIPTION }) + } + .width(GoodsPicker.LAYOUT_WEIGHT_CENTER) + .justifyContent(FlexAlign.Start) + + Row() { + this.actionMoreBuilder() + } + .width(GoodsPicker.LAYOUT_WEIGHT_RIGHT) + .justifyContent(FlexAlign.End) + + } + .width(PERCENTAGE_100) + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/PreviewerComponent.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/PreviewerComponent.ets" new file mode 100644 index 0000000000000000000000000000000000000000..6b7c20336efa6775eb0c5929340a3777736a6666 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/PreviewerComponent.ets" @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AppFontSize, PERCENTAGE_100 } from '../../common/constants/Constants'; +import { GoodsPreviewer } from '../../common/constants/DetailsConstants'; + +@Component +export default struct PreviewerComponent { + goodsImg: string | Resource; + + build() { + Column() { + Row() { + Image(this.goodsImg) + .height(PERCENTAGE_100) + .width(PERCENTAGE_100) + .objectFit(ImageFit.Contain) + .padding({ top: GoodsPreviewer.PADDING_IMAGE_TOP, + bottom: GoodsPreviewer.PADDING_IMAGE_BOTTOM }) + } + .width(PERCENTAGE_100) + .height(PERCENTAGE_100) + + Row() { + Text(GoodsPreviewer.INDICATOR_TEXT) + .fontColor(Color.White) + .fontSize(AppFontSize.SMALLER) + } + .zIndex(GoodsPreviewer.INDEX) + .alignSelf(ItemAlign.End) + .position({ x: GoodsPreviewer.LOCATION, + y: GoodsPreviewer.LOCATION }) + .backgroundColor($r('app.color.detail_goods_previewer_indicator')) + .borderRadius(GoodsPreviewer.BORDER_RADIUS) + .padding({ + top: GoodsPreviewer.INDICATOR_PADDING_TOP, + bottom: GoodsPreviewer.INDICATOR_PADDING_BOTTOM, + right: GoodsPreviewer.INDICATOR_PADDING_HORIZONTAL, + left: GoodsPreviewer.INDICATOR_PADDING_HORIZONTAL + }) + .margin({ bottom: GoodsPreviewer.INDICATOR_MARGIN_BOTTOM, + right: GoodsPreviewer.INDICATOR_MARGIN_RIGHT }) + } + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/PriceComponent.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/PriceComponent.ets" new file mode 100644 index 0000000000000000000000000000000000000000..9c8184c078489a34dddc2af4ba3e381d64418dda --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/PriceComponent.ets" @@ -0,0 +1,42 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AppFontSize, AppFontWeight, PERCENTAGE_100 } from '../../common/constants/Constants'; + +@Component +export default struct PriceComponent { + private price: string + + build() { + Column() { + Text() { + Span($r('app.string.detail_price_symbol')) + .textCase(TextCase.UpperCase) + .fontSize(AppFontSize.SMALL) + .decoration({ type: TextDecorationType.None }) + .fontColor(Color.Red) + .fontWeight(AppFontWeight.BOLD) + Span(this.price) + .textCase(TextCase.UpperCase) + .fontSize(AppFontSize.LARGE) + .decoration({ type: TextDecorationType.None, color: Color.Red }) + .fontColor(Color.Red) + .fontWeight(AppFontWeight.BOLDER) + } + } + .alignItems(HorizontalAlign.Start) + .width(PERCENTAGE_100) + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/ServiceItemComponent.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/ServiceItemComponent.ets" new file mode 100644 index 0000000000000000000000000000000000000000..fafc9db80afda5ba07cd114331f1370d07080c51 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/ServiceItemComponent.ets" @@ -0,0 +1,76 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AppFontSize, AppFontWeight, PERCENTAGE_100 } from '../../common/constants/Constants'; +import { GoodsServiceItem } from '../../common/constants/DetailsConstants'; + +@Component +export default struct ServiceItemComponent { + serviceName: string; + @Prop description: string; + isShowActionMore: boolean; + + build() { + Row() { + Column() { + Text(this.serviceName??'') + .maxLines(GoodsServiceItem.MAX_LINES) + .textOverflow({ overflow: TextOverflow.Ellipsis }) + .textCase(TextCase.UpperCase) + .fontSize(AppFontSize.SMALL) + .fontColor($r('app.color.text')) + .fontWeight(AppFontWeight.BOLDER) + + } + .width(GoodsServiceItem.LAYOUT_WEIGHT_LEFT) + .alignItems(HorizontalAlign.Start) + + Row() { + Image($rawfile('detail/detail_services.png')) + .objectFit(ImageFit.Contain) + .height(GoodsServiceItem.IMAGE_SIZE_SERVICE) + .width(GoodsServiceItem.IMAGE_SIZE_SERVICE) + .margin({ right: GoodsServiceItem.MARGIN_RIGHT_IMAGE }) + Text(this.description??'') + .maxLines(GoodsServiceItem.MAX_LINES) + .textOverflow({ overflow: TextOverflow.Ellipsis }) + .textCase(TextCase.UpperCase) + .fontSize(AppFontSize.SMALL) + .fontColor($r('app.color.text')) + .fontWeight(AppFontWeight.BOLDER) + + } + .justifyContent(FlexAlign.Start) + .width(GoodsServiceItem.LAYOUT_WEIGHT_CENTER) + + Row() { + if (this.isShowActionMore) { + Image($rawfile('detail/detail_pick_up_more.png')) + .objectFit(ImageFit.Contain) + .height(GoodsServiceItem.IMAGE_SIZE_MORE) + .width(GoodsServiceItem.IMAGE_SIZE_MORE) + } else { + Row() { + } + .height(GoodsServiceItem.IMAGE_SIZE_MORE) + .width(GoodsServiceItem.IMAGE_SIZE_MORE) + } + } + .width(GoodsServiceItem.LAYOUT_WEIGHT_RIGHT) + .justifyContent(FlexAlign.End) + } + .width(PERCENTAGE_100) + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/ServicesComponent.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/ServicesComponent.ets" new file mode 100644 index 0000000000000000000000000000000000000000..b2dfe7f0d1f4eae829372e02b80d54f30ee44856 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/details/ServicesComponent.ets" @@ -0,0 +1,49 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import ServiceItemComponent from './ServiceItemComponent'; +import ServicesViewModel from '../../viewmodel/ServicesViewModel'; +import GoodsServiceData from '../../common/bean/GoodsServiceData'; +import { PERCENTAGE_100 } from '../../common/constants/Constants'; +import { GoodsService } from '../../common/constants/DetailsConstants'; + +let viewModel: ServicesViewModel = new ServicesViewModel(); +let goodsServiceList: GoodsServiceData[]; + +@Component +export default struct ServicesComponent { + aboutToAppear() { + goodsServiceList = viewModel.loadGoodsService(); + } + + build() { + List({ space: GoodsService.SPACE }) { + ForEach(goodsServiceList, (item) => { + ListItem() { + ServiceItemComponent({ + serviceName: item?.name, + description: item?.description, + isShowActionMore: item?.name != null + }) + } + }, (item) => (item?.id).toString()) + + } + .width(PERCENTAGE_100) + .height(GoodsService.LIST_HEIGHT) + .backgroundColor(Color.White) + .edgeEffect(EdgeEffect.None) + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/BannerComponent.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/BannerComponent.ets" new file mode 100644 index 0000000000000000000000000000000000000000..5a42154a8cf3e621a01a13d4e9a655add96f10c4 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/BannerComponent.ets" @@ -0,0 +1,52 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import BannerData from '../../common/bean/BannerData'; +import { Banner } from '../../common/constants/HomeConstants'; +import { PERCENTAGE_100, PERCENTAGE_20 } from '../../common/constants/Constants'; + +@Component +export default struct BannerComponent { + bannerList: BannerData[]; + + build() { + Column({ space: Banner.SPACE }) { + Swiper() { + ForEach(this.bannerList, (item) => { + Image(item.imgSrc) + .width(PERCENTAGE_100) + .objectFit(ImageFit.Contain) + }) + } + .cachedCount(Banner.CACHE_COUNT) + .index(Banner.POSITION) + .autoPlay(true) + .interval(Banner.TIME) + .indicator(true) + .loop(true) + .duration(Banner.DURATION) + .vertical(false) + .itemSpace(Banner.ITEM_SPACE) + .indicatorStyle({ + size: Banner.INDICATOR_SIZE, + color: $r('app.color.background'), + selectedColor: $r('app.color.homepage_indicator_selected') + }) + .curve(Curve.Linear) + } + .width(Banner.WIDTH) + .height(PERCENTAGE_20) + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/DIYPage.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/DIYPage.ets" new file mode 100644 index 0000000000000000000000000000000000000000..522d9fe2f67ac2c59e168658c55eca2dbf4e2f72 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/DIYPage.ets" @@ -0,0 +1,81 @@ +import router from '@system.router' +import { SubscribeSwiper } from '../../common/subscribe' +import AppContext from '@ohos.application.context'; +import HomeViewModel from '../../viewmodel/HomeViewModel'; +let viewModel: HomeViewModel = new HomeViewModel(); +@Entry +@Component +export default struct DIYPage { + + build() { + Stack({ alignContent: Alignment.TopStart }) { + Column() { +// SubscribeSwiper() + + Flex({ direction: FlexDirection.Column, alignItems: ItemAlign.Start, + justifyContent: FlexAlign.Start }) { + + Row({ space: 5 }) { + Image($rawfile('ic_photobook.jpg')) + .objectFit(ImageFit.Auto) + .width("50%") + .onClick(() => { +// router.push({ +// uri: 'pages/modelDetail', +// params: { imageUrl: 'ic_photobook.jpg', imageId: 'ic_photobook' } +// }) + + let handler = getContext(this) as AppContext.Context; + viewModel.startModelDetailAbility(handler, 'ic_photobook.jpg'); + }) + Column() { + Image($rawfile('ic_decoration.jpg')) + .objectFit(ImageFit.Auto) + Image($rawfile('ic_classmate.jpg')) + .objectFit(ImageFit.Auto) + }.width("50%") + }.margin({ top: 5 }) + + Image($rawfile('ic_calendar.jpg')) + .objectFit(ImageFit.Auto) + .margin({ top: 5 }) + + Row({ space: 5 }) { + Image($rawfile('ic_poster.jpg')) + .objectFit(ImageFit.Auto) + .width("50%") + .sharedTransition('ic_poster', { duration: 600, curve: Curve.Smooth, delay: 100 }) + .onClick(() => { + let handler = getContext(this) as AppContext.Context; + viewModel.startProductListAbility(handler, 'ic_poster.jpg'); + }) + Image($rawfile('ic_print.jpg')) + .objectFit(ImageFit.Auto) + .width("50%") + .sharedTransition('ic_print', { duration: 600, curve: Curve.Smooth, delay: 100 }) + .onClick(() => { + router.push({ + uri: 'pages/productList', + params: { imageUrl: 'ic_print.jpg', imageId: 'ic_print' } + }) + }) + }.margin({ top: 5 }) + + Image($rawfile('ic_funny.jpg')) + .objectFit(ImageFit.Auto) + .margin({ top: 5 }) + + Row({ space: 5 }) { + Image($rawfile('ic_postcard.jpg')) + .objectFit(ImageFit.Auto) + .width("50%") + Image($rawfile('ic_mark.jpg')) + .objectFit(ImageFit.Auto) + .width("50%") + }.margin({ top: 5 }) + } + } + } + + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/GoodsComponent.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/GoodsComponent.ets" new file mode 100644 index 0000000000000000000000000000000000000000..a5fa68c7d6f36281963bb17c407596088a8502c7 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/GoodsComponent.ets" @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import GoodsItemComponent from './GoodsItemComponent'; +import { GoodsList } from '../../common/constants/HomeConstants'; +import GoodsData from '../../common/bean/GoodsData'; +import { PERCENTAGE_100, PERCENTAGE_50 } from '../../common/constants/Constants'; + +@Component +export default struct GoodsComponent { + private goodsList: GoodsData[]; + private startPage: (index: number) => void; + + build() { + Grid() { + ForEach(this.goodsList, (item, index) => { + GridItem() { + GoodsItemComponent({ config: item }) + }.onClick(() => { + this.startPage(index); + }) + }) + } + .columnsTemplate(GoodsList.GRID_STYLE) + .columnsGap(GoodsList.SPACE) + .rowsGap(GoodsList.SPACE) + .layoutDirection(GoodsList.HORIZONTAL) + .padding({ left: GoodsList.GRID_PADDING, + right: GoodsList.GRID_PADDING, + top:GoodsList.GRID_PADDING}) + .width(PERCENTAGE_100) + .height(PERCENTAGE_50) + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/GoodsItemComponent.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/GoodsItemComponent.ets" new file mode 100644 index 0000000000000000000000000000000000000000..eabfccbabb231a91e921c194eb8cfd897d563808 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/GoodsItemComponent.ets" @@ -0,0 +1,104 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AppFontSize, AppFontWeight, PERCENTAGE_100 } from '../../common/constants/Constants'; +import GoodsData from '../../common/bean/GoodsData'; +import { GoodsListItem } from '../../common/constants/HomeConstants'; + +@Component +export default struct GoodsItemComponent { + private config: GoodsData; + + build() { + Column() { + Image(this.config?.goodsImg) + .width(GoodsListItem.GOODS_IMAGE_SIZE) + .height(GoodsListItem.GOODS_IMAGE_SIZE) + .margin({ top: GoodsListItem.GOODS_IMAGE_MARGIN_TOP }) + Column() { + Row() { + Text(this.config?.goodsName) + .fontSize(AppFontSize.MIDDLE) + .fontWeight(AppFontWeight.BOLD) + .maxLines(GoodsListItem.MAX_LINE_GOODS_NAME) + .textOverflow({ overflow: TextOverflow.Ellipsis }) + } + .height(GoodsListItem.CONTAINER_GOODS_NAME_HEIGHT) + .alignItems(VerticalAlign.Top) + + Text(this.config?.discounts) + .fontSize(AppFontSize.SMALLER) + .margin({ bottom: GoodsListItem.MARGIN_DISCOUNTS }) + .fontWeight(AppFontWeight.BOLD) + .fontColor($r('app.color.description')) + Text() { + Span($r('app.string.detail_price_symbol')) + .textCase(TextCase.UpperCase) + .fontSize(AppFontSize.SMALL) + .fontColor(Color.Red) + .fontWeight(AppFontWeight.BOLD) + Span(this.config?.price) + .textCase(TextCase.UpperCase) + .fontSize(AppFontSize.MIDDLE) + .fontColor(Color.Red) + .fontWeight(AppFontWeight.BOLD) + if (this.config?.originalPrice !== '') { + Span($r('app.string.detail_price_symbol')) + .textCase(TextCase.UpperCase) + .fontSize(AppFontSize.SMALLER) + .fontColor($r('app.color.description')) + .fontWeight(AppFontWeight.BOLD) + } + Span(this.config?.originalPrice) + .textCase(TextCase.UpperCase) + .fontSize(AppFontSize.SMALLER) + .decoration({ type: TextDecorationType.LineThrough, color: $r('app.color.description') }) + .fontColor($r('app.color.description')) + .fontWeight(AppFontWeight.BOLD) + } + + Button({ type: ButtonType.Normal }) { + Text(this.config?.label) + .fontColor(Color.White) + .fontSize(AppFontSize.SMALLER) + .padding({ + left: GoodsListItem.PADDING_LABEL_HORIZONTAL, + right: GoodsListItem.PADDING_LABEL_HORIZONTAL, + bottom: GoodsListItem.PADDING_LABEL_VERTICAL, + top: GoodsListItem.PADDING_LABEL_VERTICAL + }) + .fontWeight(AppFontWeight.BOLDER) + } + .borderRadius(GoodsListItem.BORDER_RADIUS_LABEL) + .margin({ top: GoodsListItem.CONTAINER_LABEL_MARGIN_TOP, + bottom: GoodsListItem.CONTAINER_LABEL_MARGIN_BOTTOM }) + .backgroundColor($r('app.color.homepage_goodsList_activity_background')) + + } + .width(GoodsListItem.TEXT_LAYER_WIDTH) + .alignItems(HorizontalAlign.Start) + .margin({ top: GoodsListItem.TEXT_LAYER_MARGIN_TOP }) + } + .width(PERCENTAGE_100) + .border({ + width: GoodsListItem.BORDER_WIDTH, + color: Color.White, + radius: GoodsListItem.BORDER_RADIUS + }) + .backgroundColor(Color.White) + .padding({ left: GoodsListItem.ITEM_PADDING_HORIZONTAL, + right: GoodsListItem.ITEM_PADDING_HORIZONTAL }) + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/HomePage.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/HomePage.ets" new file mode 100644 index 0000000000000000000000000000000000000000..6fc53e998ffca399db31dea1fc9c8d01d56859b1 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/HomePage.ets" @@ -0,0 +1,94 @@ +import ProductComponent from './ProductComponent'; +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import AppContext from '@ohos.application.context'; +import HomeViewModel from '../../viewmodel/HomeViewModel'; +import TopBarComponent from './TopBarComponent'; +import TabsComponent from './TabsComponent'; +import SearchComponent from './SearchComponent'; +import MenusComponent from './MenusComponent'; +import BannerComponent from './BannerComponent'; +import GoodsComponent from './GoodsComponent'; +import BannerData from '../../common/bean/BannerData'; +import MenuData from '../../common/bean/MenuData'; +import GoodsData from '../../common/bean/GoodsData'; +import { HomePageStyle, PERCENTAGE_100 } from '../../common/constants/Constants'; +import DIYPage from './DIYPage' +import { ProductData } from '../../model/ProductData'; + +let viewModel: HomeViewModel = new HomeViewModel(); + +@Component +export default struct HomePage { + @State menus: MenuData[] = []; + @State tabMenus: Resource[] = []; + @State bannerList: BannerData[] = []; + @State goodsList: GoodsData[] = []; + @State productList: ProductData[] = []; + + scroller: Scroller = new Scroller() + aboutToAppear() { + this.productList = viewModel.getProductList(); + this.goodsList = viewModel.getGoodsList(); + this.bannerList = viewModel.loadBanner(); + this.tabMenus = viewModel.loadTabViewMenu(); + this.menus = viewModel.loadMenus(); + } + + build() { + + Stack({ alignContent: Alignment.Top }) { + + Scroll(this.scroller) { + Column() { + Rect({ width: '100%', height: 360 }) + .position({x:0,y:-140}) + .radiusHeight(180) + .radiusWidth(960) + .fill(Color.Red) + Blank().height(HomePageStyle.BLANK_HEIGHT) + // Logo and QR code + TopBarComponent() + .padding({ + top: HomePageStyle.PADDING_VERTICAL, + bottom: HomePageStyle.PADDING_VERTICAL, + left: HomePageStyle.PADDING_HORIZONTAL, + right: HomePageStyle.PADDING_HORIZONTAL + }) + // SearchComponent() + TabsComponent({ tabMenus: this.tabMenus }) + BannerComponent({ bannerList: this.bannerList }) + MenusComponent({ menus: this.menus }) + DIYPage() + // Goods list view +// GoodsComponent({ goodsList: this.goodsList, startPage: (index) => { +// let handler = getContext(this) as AppContext.Context; +// viewModel.startDetailsAbility(handler, index); +// } }) + // Product list view + ProductComponent({ goodsList: this.productList, startPage: (index) => { + let handler = getContext(this) as AppContext.Context; + viewModel.startDetailsAbility(handler, index); + } }) + } + }.scrollBar(BarState.Off) + + } + .width('100%') + .height('100%') + + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/MenusComponent.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/MenusComponent.ets" new file mode 100644 index 0000000000000000000000000000000000000000..c40d426240e0f74f49dd5e996a69dedbeba4397a --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/MenusComponent.ets" @@ -0,0 +1,46 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AppFontSize } from '../../common/constants/Constants'; +import MenuData from '../../common/bean/MenuData'; +import { Menus } from '../../common/constants/HomeConstants'; + +@Component +export default struct MenusComponent { + menus: MenuData[]; + + build() { + Row() { + ForEach(this.menus, (item) => { + Column() { + Text(item?.menuName) + .fontColor(item?.fontColor) + .fontSize(AppFontSize.MIDDLE) + .fontWeight(item?.fontWeight) + Text(item?.menuContent) + .fontColor(item?.fontColor) + .fontSize(AppFontSize.SMALL) + .fontWeight(item?.fontWeight) + } + .width(Menus.LAYOUT_WEIGHT) + .padding({ top: Menus.ITEM_PADDING_VERTICAL, + bottom: Menus.ITEM_PADDING_VERTICAL }) + }) + } + .justifyContent(FlexAlign.Center) + .padding({ top: Menus.CONTAINER_PADDING_VERTICAL, + bottom: 0 }) + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/ProductComponent.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/ProductComponent.ets" new file mode 100644 index 0000000000000000000000000000000000000000..0be5094839393066927ad0678984fa330073d79e --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/ProductComponent.ets" @@ -0,0 +1,47 @@ + +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import ProductItemComponent from './ProductItemComponent'; +import { GoodsList } from '../../common/constants/HomeConstants'; +import { PERCENTAGE_100, PERCENTAGE_50 } from '../../common/constants/Constants'; +import { ProductData } from '../../model/ProductData'; + +@Component +export default struct ProductComponent { + private goodsList: ProductData[]; + private startPage: (index: number) => void; + + build() { + Grid() { + ForEach(this.goodsList, (item, index) => { + GridItem() { + ProductItemComponent({ config: item }) + }.onClick(() => { + this.startPage(index); + }) + }) + } + .columnsTemplate(GoodsList.GRID_STYLE) + .columnsGap(GoodsList.SPACE) + .rowsGap(GoodsList.SPACE) + .layoutDirection(GoodsList.HORIZONTAL) + .padding({ left: GoodsList.GRID_PADDING, + right: GoodsList.GRID_PADDING, + top:GoodsList.GRID_PADDING}) + .width(PERCENTAGE_100) + .height(PERCENTAGE_50) + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/ProductItemComponent.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/ProductItemComponent.ets" new file mode 100644 index 0000000000000000000000000000000000000000..22040cda0d899a23868ba07278ee9347f1415536 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/ProductItemComponent.ets" @@ -0,0 +1,107 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AppFontSize, AppFontWeight, PERCENTAGE_100 } from '../../common/constants/Constants'; +import { GoodsListItem } from '../../common/constants/HomeConstants'; +import { ProductData } from '../../model/ProductData'; +@Component +export default struct ProductItemComponent { + private config: ProductData; + + build() { + Column() { + Image(this.config?.image) + .width(GoodsListItem.GOODS_IMAGE_SIZE) + .height(GoodsListItem.GOODS_IMAGE_SIZE) + .margin({ top: GoodsListItem.GOODS_IMAGE_MARGIN_TOP }) + .objectFit(ImageFit.Auto) + Column() { + Row() { + Text(this.config?.name) + .fontSize(AppFontSize.MIDDLE) + .fontWeight(AppFontWeight.BOLD) + .maxLines(GoodsListItem.MAX_LINE_GOODS_NAME) + .textOverflow({ overflow: TextOverflow.Ellipsis }) + } + .height(GoodsListItem.CONTAINER_GOODS_NAME_HEIGHT) + .alignItems(VerticalAlign.Top) + + Text(this.config?.size.toString()) + .fontSize(AppFontSize.SMALLER) + .margin({ bottom: GoodsListItem.MARGIN_DISCOUNTS }) + .fontWeight(AppFontWeight.BOLD) + .fontColor($r('app.color.description')) + Row() + { + Button({ type: ButtonType.Normal }) { + Text("限时") + .fontColor(Color.White) + .fontSize(AppFontSize.SMALLER) + .padding({ + left: GoodsListItem.PADDING_LABEL_HORIZONTAL, + right: GoodsListItem.PADDING_LABEL_HORIZONTAL, + bottom: GoodsListItem.PADDING_LABEL_VERTICAL, + top: GoodsListItem.PADDING_LABEL_VERTICAL + }) + .fontWeight(AppFontWeight.BOLDER) + } + .borderRadius(GoodsListItem.BORDER_RADIUS_LABEL) + .margin({ top: GoodsListItem.CONTAINER_LABEL_MARGIN_TOP, + bottom: GoodsListItem.CONTAINER_LABEL_MARGIN_BOTTOM }) + .backgroundColor($r('app.color.homepage_goodsList_activity_background')) + + Text() { + Span($r('app.string.detail_price_symbol')) + .textCase(TextCase.UpperCase) + .fontSize(AppFontSize.SMALL) + .fontColor(Color.Red) + .fontWeight(AppFontWeight.BOLD) + Span(this.config?.price.toString()) + .textCase(TextCase.UpperCase) + .fontSize(AppFontSize.MIDDLE) + .fontColor(Color.Red) + .fontWeight(AppFontWeight.BOLD) + if ((this.config?.price+50).toString() !== '') { + Span($r('app.string.detail_price_symbol')) + .textCase(TextCase.UpperCase) + .fontSize(AppFontSize.SMALLER) + .fontColor($r('app.color.description')) + .fontWeight(AppFontWeight.BOLD) + } + Span((this.config?.price+50).toString() ) + .textCase(TextCase.UpperCase) + .fontSize(AppFontSize.SMALLER) + .decoration({ type: TextDecorationType.LineThrough, color: $r('app.color.description') }) + .fontColor($r('app.color.description')) + .fontWeight(AppFontWeight.BOLD) + } + } + + } + .width(GoodsListItem.TEXT_LAYER_WIDTH) + .alignItems(HorizontalAlign.Start) + .margin({ top: GoodsListItem.TEXT_LAYER_MARGIN_TOP }) + } + .width(PERCENTAGE_100) + .border({ + width: GoodsListItem.BORDER_WIDTH, + color: Color.White, + radius: GoodsListItem.BORDER_RADIUS + }) + .backgroundColor($r('app.color.backgroundColor')) + .padding({ left: GoodsListItem.ITEM_PADDING_HORIZONTAL, + right: GoodsListItem.ITEM_PADDING_HORIZONTAL }) + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/SearchComponent.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/SearchComponent.ets" new file mode 100644 index 0000000000000000000000000000000000000000..83a7233a01508d555e40571793134867a0dbf95c --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/SearchComponent.ets" @@ -0,0 +1,45 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AppFontSize, AppFontWeight } from '../../common/constants/Constants'; +import { SearchBar } from '../../common/constants/HomeConstants'; + +@Component +export default struct SearchComponent { + build() { + Row() { + Row() { + Image($rawfile('index/search.png')) + .width(SearchBar.IMAGE_SIZE) + .height(SearchBar.IMAGE_SIZE) + } + + TextInput({ placeholder: $r('app.string.homepage_search_hot_word') }) + .placeholderColor($r('app.color.index_search_hot_word')) + .placeholderFont({ size: AppFontSize.SMALL, weight: AppFontWeight.BOLD, }) + .width(SearchBar.WEIGHT) + .margin({ right: SearchBar.TEXT_INPUT_MARGIN_RIGHT }) + .backgroundColor($r('app.color.background')) + .fontSize(AppFontSize.SMALL) + .fontWeight(FontWeight.Bold) + .fontStyle(FontStyle.Normal) + } + .padding({ left: SearchBar.CONTAINER_PADDING_LEFT }) + .borderRadius(SearchBar.BORDER_RADIUS) + .backgroundColor($r('app.color.background')) + .width(SearchBar.WEIGHT) + .height(SearchBar.BAR_HEIGHT) + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/TabsComponent.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/TabsComponent.ets" new file mode 100644 index 0000000000000000000000000000000000000000..ad39b95606c1fc48346e24ce12c007e6f443dfd1 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/TabsComponent.ets" @@ -0,0 +1,73 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import { AppFontSize, AppFontWeight, PERCENTAGE_100 } from '../../common/constants/Constants'; +import { GoodsTabs } from '../../common/constants/HomeConstants'; + +@Component +export default struct TabsComponent { + private tabMenus: Resource[]; + + build() { + Row() { + Tabs({ barPosition: BarPosition.Start, }) { + ForEach(this.tabMenus, (item, index) => { + TabContent() { + } + .tabBar(this.TabBuilder(index)) + }) + } + .vertical(false) + .scrollable(true) + .barMode(BarMode.Scrollable) + .barHeight(PERCENTAGE_100) + .animationDuration(GoodsTabs.TIME) + .width(GoodsTabs.TAB_WIDTH) + + Row() { + Image($rawfile('index/tab_menu_setting.png')) + .width(GoodsTabs.IMAGE_SIZE_WIDTH) + .height(GoodsTabs.IMAGE_SIZE_HEIGHT) + Blank() + .width(GoodsTabs.SETTING_BLANK_WIDTH) + Text($r('app.string.homepage_tab_more')) + .fontSize(AppFontSize.MIDDLE) + .fontColor(Color.White) + .fontWeight(AppFontWeight.BOLD) + } + .width(GoodsTabs.SETTING_LAYOUT) + .height(PERCENTAGE_100) + } + .width(PERCENTAGE_100) + .padding({ right: GoodsTabs.PADDING_RIGHT }) + .height(GoodsTabs.BAR_HEIGHT) + } + + @Builder TabBuilder(position: number) { + Column() { + Text(this.tabMenus[position]) + .fontColor(this.isIndexPageWithinTabs(position) ? Color.White : Color.White) + .fontWeight(this.isIndexPageWithinTabs(position) ? FontWeight.Bold : FontWeight.Normal) + .fontSize(AppFontSize.MIDDLE) + } + .height(PERCENTAGE_100) + .justifyContent(FlexAlign.Center) + .align(Alignment.Start) + } + + isIndexPageWithinTabs(position): boolean { + return GoodsTabs.TABVIEW_POSITION_INDEX_PAGE === position; + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/TopBarComponent.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/TopBarComponent.ets" new file mode 100644 index 0000000000000000000000000000000000000000..8f00df2e93d26e4090fbcf628300844ccd183884 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/TopBarComponent.ets" @@ -0,0 +1,66 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import BalanceComponent from '../BalanceComponent'; +import { TopBar } from '../../common/constants/HomeConstants'; +import { PERCENTAGE_100 } from '../../common/constants/Constants'; +import { AppFontSize, AppFontWeight } from '../../common/constants/Constants'; +import { SearchBar } from '../../common/constants/HomeConstants'; + +@Component +export default struct TopBarComponent { + build() { + BalanceComponent({ left: this.LogoLayout(),center:this.SearchLayout(), right: this.QRCodeLayout() }) + .width(PERCENTAGE_100) + .height(TopBar.HEIGHT) + } + + @Builder LogoLayout() { + Image($rawfile('index/icon.png')) + .size({ width: TopBar.IMAGE_SIZE }) + .objectFit(ImageFit.Contain) + } + + @Builder SearchLayout() { + Row() { + Row() { + Image($rawfile('index/search.png')) + .width(SearchBar.IMAGE_SIZE) + .height(SearchBar.IMAGE_SIZE) + } + + TextInput({ placeholder: $r('app.string.homepage_search_hot_word') }) + .placeholderColor($r('app.color.index_search_hot_word')) + .placeholderFont({ size: AppFontSize.SMALL, weight: AppFontWeight.BOLD, }) + .width(SearchBar.WEIGHT) + .margin({ right: SearchBar.TEXT_INPUT_MARGIN_RIGHT }) + .backgroundColor($r('app.color.background')) + .fontSize(AppFontSize.SMALL) + .fontWeight(FontWeight.Bold) + .fontStyle(FontStyle.Normal) + } + .padding({ left: SearchBar.CONTAINER_PADDING_LEFT }) + .borderRadius(SearchBar.BORDER_RADIUS) + .backgroundColor($r('app.color.background')) + .width(SearchBar.WEIGHT) + .height(SearchBar.BAR_HEIGHT) + } + + @Builder QRCodeLayout() { + Image($rawfile('index/qrcode.png')) + .size({ width: TopBar.IMAGE_SIZE }) + .objectFit(ImageFit.Contain) + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/UserPage.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/UserPage.ets" new file mode 100644 index 0000000000000000000000000000000000000000..ccc644598acec003340d561f263596f24f9ba452 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/home/UserPage.ets" @@ -0,0 +1,188 @@ +import UserViewModel from '../../viewmodel/UserViewModel'; + +let viewModel: UserViewModel = new UserViewModel(); +@Entry +@Component +export default struct UserPage { + + build() { + Stack({ alignContent: Alignment.Top }) { + + Rect({ width: '100%', height: 360 }) + .position({x:0,y:-140}) + .radiusHeight(180) + .radiusWidth(960) + .fill(Color.Red) + + Column() { + Column() { + Image($r('app.media.avatar_default')) + .objectFit(ImageFit.Contain) + .width(80) + .height(80) + + Text('登录/注册') + .fontSize(18) + .margin(5) + .fontColor(Color.White) + .align(Alignment.Center) + } + .padding({ top:50 }) + .width('100%') + + Row() { + Column() { + Image($r('app.media.header_menu1')) + .width(28) + .height(28) + Text('定制订单') + .fontSize(14) + .margin(8) + } + .layoutWeight(1) + + Column() { + Image($r('app.media.header_menu2')) + .width(28) + .height(28) + Text('商城订单') + .fontSize(14) + .margin(8) + } + .layoutWeight(1) + + Column() { + Image($r('app.media.header_menu3')) + .width(28) + .height(28) + Text('待收货') + .fontSize(14) + .margin(8) + } + .layoutWeight(1) + } + .height(120) + .width('90%') + .borderRadius(5) + .margin({left:20,right:20,top:10}) + .backgroundColor(Color.White) + + Column() { + Row() { + Image($r('app.media.menu_addr')) + .width(18) + .height(18) + Text('我的地址') + .fontSize(14) + .margin(8) + .width('85%') + Image($r('app.media.arrow')) + .width(18) + .height(18) + } + .padding({top:5,bottom:5}) + .width('90%') + + Divider().color('#EEEEEE') + + Row() { + Image($r('app.media.menu_cart')) + .width(18) + .height(18) + Text('定制购物车') + .fontSize(14) + .margin(8) + .width('85%') + Image($r('app.media.arrow')) + .width(18) + .height(18) + } + .padding({top:5,bottom:5}) + .width('90%') + + Divider().color('#EEEEEE') + + Row() { + Image($r('app.media.menu_cart')) + .width(18) + .height(18) + Text('商城购物车') + .fontSize(14) + .margin(8) + .width('85%') + Image($r('app.media.arrow')) + .width(18) + .height(18) + } + .padding({top:5,bottom:5}) + .width('90%') + } + .width('95%') + .borderRadius(5) + .margin({left:20,right:20,top:20}) + .backgroundColor(Color.White) + + Column() { + Row() { + Image($r('app.media.menu_card')) + .width(18) + .height(18) + Text('邮福卡') + .fontSize(14) + .margin(8) + .width('85%') + Image($r('app.media.arrow')) + .width(18) + .height(18) + } + .padding({top:5,bottom:5}) + .width('90%') + + Divider().color('#EEEEEE') + + Row() { + Image($r('app.media.menu_coupon')) + .width(18) + .height(18) + Text('兑换码') + .fontSize(14) + .margin(8) + .width('85%') + Image($r('app.media.arrow')) + .width(18) + .height(18) + } + .padding({top:5,bottom:5}) + .width('90%') + } + .width('95%') + .borderRadius(5) + .margin({left:20,right:20,top:20}) + .backgroundColor(Color.White) + + Column() { + Row() { + Image($r('app.media.menu_setting')) + .width(18) + .height(18) + Text('设置') + .fontSize(14) + .margin(8) + .width('85%') + Image($r('app.media.arrow')) + .width(18) + .height(18) + } + .padding({top:5,bottom:5}) + .width('90%') + } + .width('95%') + .borderRadius(5) + .margin({left:20,right:20,top:20}) + .backgroundColor(Color.White) + } + } + .width('100%') + .height('100%') + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/new/NewPage.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/new/NewPage.ets" new file mode 100644 index 0000000000000000000000000000000000000000..9c6bea37ac1b29bf364edf82e335a25c062599a1 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/view/new/NewPage.ets" @@ -0,0 +1,312 @@ + +/* + * Copyright (c) 2021 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import AppContext from '@ohos.application.context'; +import NewViewModel from '../../viewmodel/NewViewModel'; +import HomeViewModel from '../../viewmodel/HomeViewModel'; +import { Category, ProductData } from '../../model/ProductData' +import { initializeOnStartup } from '../../model/ProductDataModels' + +let viewModel: HomeViewModel = new HomeViewModel(); + +class BasicDataSource implements IDataSource { + private listeners: DataChangeListener[] = [] + + public totalCount(): number { + return 0 + } + + public getData(index: number): any { + return undefined + } + + registerDataChangeListener(listener: DataChangeListener): void { + if (this.listeners.indexOf(listener) < 0) { + this.listeners.push(listener) + } + } + + unregisterDataChangeListener(listener: DataChangeListener): void { + const pos = this.listeners.indexOf(listener); + if (pos >= 0) { + this.listeners.splice(pos, 1) + } + } + + notifyDataReload(): void { + this.listeners.forEach(listener => { + listener.onDataReloaded() + }) + } + + notifyDataAdd(index: number): void { + this.listeners.forEach(listener => { + listener.onDataAdded(index) + }) + } + + notifyDataChange(index: number): void { + this.listeners.forEach(listener => { + listener.onDataChanged(index) + }) + } +} + +class MyDataSource extends BasicDataSource { + public dataArray: string[] = [] + + constructor(ele) { + super() + for (var index = 0;index < ele.length; index++) { + this.dataArray.push(ele[index]) + } + } + + public totalCount(): number { + return this.dataArray.length + } + + public getData(index: number): any { + return this.dataArray[index] + } + + public addData(index: number, data: string): void { + this.dataArray.splice(index, 0) + this.notifyDataAdd(index) + } +} + +@Component +struct ProductListItem { + private productItem: ProductData + + build() { + Navigator({ target: 'pages/ProductDetailPage' }) { + Row() { + Row() { + Image(this.productItem.image) + .objectFit(ImageFit.Contain) + .autoResize(false) + .height(40) + .width(40) + } + .backgroundColor('#FFf1f3f5') + .margin({ right: 16 }) + + Text(this.productItem.name) + .fontSize(14) + .flexGrow(1) + Blank() + Text(this.productItem.price + ' 元') + .fontSize(14) + } + .alignItems(VerticalAlign.Center) + .height(64) + .width('100%') + } + .width('100%') + .params({ productId: this.productItem }) + .padding({ right: 24, left: 24 }) + } +} + + +@Component +struct ProductList { + private productItems: ProductData[] + + build() { + Column() { + Row() { + Text('产品列表') + .fontSize(20) + .margin({ left: 20 }) + } + .alignItems(VerticalAlign.Center) +// .justifyContent(FlexAlign.Start) + .height('7%') + .width('100%') + .backgroundColor('#FFf1f3f5') + + List() { + LazyForEach(new MyDataSource(this.productItems), (item, index) => { + ListItem() { + ProductListItem({ productItem: item }) + } +// .key('productListItem' + (index + 1)) + }, item => item.id.toString()) + } + .width('100%') + .height('93%') + } + .width('100%') + } +} + +@Component +struct ProductGridItem { + private productItem: ProductData + + build() { + Column() { + Row() { + Image(this.productItem.image) + .sharedTransition(this.productItem.image.id.toString(), { duration: 600, curve: Curve.Smooth, delay: 100 }) + .objectFit(ImageFit.Auto) + .height(152) + .width('100%') + }.backgroundColor('#FFf1f3f5') + + Row() { + Text(this.productItem.name) + .fontSize(10) + .flexGrow(1) + .padding({ left: 8 }) + Text(this.productItem.price + '元') + .fontSize(14) + .margin({ right: 6 }) + } + .alignItems(VerticalAlign.Center) +// .justifyContent(FlexAlign.Start) + .height(32) + .width('100%') + .backgroundColor('#FFe5e5e5') + } + .height(184) + .width('100%') + .onClick(() => { + let handler = getContext(this) as AppContext.Context; + viewModel.startDetailsAbility(handler, parseInt(this.productItem.id)); + }) + } +} + +@Component +struct ProductGrid { + private productItems: ProductData[] + private gridRowTemplate: string = '' + private heightValue: number + + aboutToAppear() { + var rows = Math.round(this.productItems.length / 2); + this.gridRowTemplate = '1fr '.repeat(rows); + this.heightValue = rows * 192 - 8; + } + + build() { + Scroll() { + Grid() { + LazyForEach(new MyDataSource(this.productItems), (item: ProductData, index) => { + GridItem() { + ProductGridItem({ productItem: item }) + } +// .key('productGridItem' + (index + 1)) + }, (item: ProductData) => item.id.toString()) + } + .rowsTemplate(this.gridRowTemplate) + .columnsTemplate('1fr 1fr') + .columnsGap(8) + .rowsGap(8) + .height(this.heightValue) + } + .scrollBar(BarState.Off) + .padding({ left: 16, right: 16 }) + } +} + +@Component +struct ProductCategory { + private productItems: ProductData[] + + build() { + Tabs() { + TabContent() { + ProductGrid({ productItems: this.productItems }) + }.tabBar('全 部') + + TabContent() { + ProductGrid({ productItems: this.productItems.filter(item => (item.category === Category.Post)) }) + }.tabBar('明信片') + + TabContent() { + ProductGrid({ productItems: this.productItems.filter(item => (item.category === Category.Pic)) }) + }.tabBar('照片书') + + TabContent() { + ProductGrid({ productItems: this.productItems.filter(item => (item.category === Category.Date)) }) + }.tabBar('台历挂历') + + TabContent() { + ProductGrid({ productItems: this.productItems.filter(item => (item.category === Category.Pose)) }) + }.tabBar('写真海报') + + TabContent() { + ProductGrid({ productItems: this.productItems.filter(item => (item.category === Category.Class)) }) + }.tabBar('同学录') + + TabContent() { + ProductGrid({ productItems: this.productItems.filter(item => (item.category === Category.Cup)) }) + }.tabBar('马克杯') + + TabContent() { + ProductGrid({ productItems: this.productItems.filter(item => (item.category === Category.Show)) }) + }.tabBar('摆件') + + TabContent() { + ProductGrid({ productItems: this.productItems.filter(item => (item.category === Category.T)) }) + }.tabBar('T恤衫') + + TabContent() { + ProductGrid({ productItems: this.productItems.filter(item => (item.category === Category.Z)) }) + }.tabBar('影像杂志') + } + .width('100%') + .barWidth('80%') + .barHeight(70) + .barMode(BarMode.Scrollable) + } +} + +@Entry +@Component +export default struct NewPage { + private productItems: ProductData[] = initializeOnStartup() + @State private showList: boolean = false + + build() { + Column() { + Stack({ alignContent: Alignment.TopEnd }) { + if (this.showList) { + ProductList({ productItems: this.productItems }) + } else { + ProductCategory({ productItems: this.productItems }) + } + Image($r('app.media.Switch')) + .height(40) + .width(24) + .objectFit(ImageFit.Contain) +// .key('switch') + .margin({ top: 15, right: 10 }) + .onClick(() => { + this.showList = !this.showList + }) + } + } + .width('100%') + .height('100%') + .backgroundColor($r('app.color.backgroundColor')) + } +} diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/AxisModel.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/AxisModel.ets" new file mode 100644 index 0000000000000000000000000000000000000000..afe7b8d32c05ab7efef389a4eb3b0d04be499b30 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/AxisModel.ets" @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License,Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import Point from '../common/bean/Point'; + +const TWO_PI: number = 2 * Math.PI; + +@Observed +export class AxisModel { + private radius: number; + private num: number; + public points: Point[] = []; + + constructor(radius: number, num: number) { + this.radius = radius; + this.addPoints(num); + } + + addPoints(num: number) { + if (num <= 0) { + return; + } + this.points = []; + this.num = num; + for (let i = 0; i < num; i++) { + let x = this.radius * Math.cos(TWO_PI * i / this.num); + let y = this.radius * Math.sin(TWO_PI * i / this.num); + this.points.push(new Point(x, y)); + } + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/DetailsViewModel.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/DetailsViewModel.ets" new file mode 100644 index 0000000000000000000000000000000000000000..a988d2e8923716899bb4f99fafd014c00ffa9ef5 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/DetailsViewModel.ets" @@ -0,0 +1,24 @@ + +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import DataModel from '../model/DataModel'; +import GoodsData from '../common/bean/GoodsData'; + +export default class DetailsViewModel { + public loadDetails(position: number): GoodsData { + return DataModel.GOOD_LIST[position]; + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/HomeViewModel.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/HomeViewModel.ets" new file mode 100644 index 0000000000000000000000000000000000000000..95d02a8a5e8ee2501341fa620995e33c4a730ad4 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/HomeViewModel.ets" @@ -0,0 +1,91 @@ +import { initializeOnStartup } from '../model/ProductDataModels'; +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; +import DataModel from '../model/DataModel'; +import GoodsData from '../common/bean/GoodsData'; +import BannerData from '../common/bean/BannerData'; +import MenuData from '../common/bean/MenuData'; +import { ProductData } from '../model/ProductData'; + +const TAG = 'HomeViewModel'; +const HOME_PAGE_DOMAIN = 0x00004; + +export default class HomeViewModel { + + public getProductList(): ProductData[] { + + return initializeOnStartup(); + } + public getGoodsList(): GoodsData[] { + return DataModel.GOOD_LIST; + } + + public loadTabViewMenu(): Resource[] { + return DataModel.TAB_VIEW_MENU; + } + + public loadMenus(): MenuData[] { + return DataModel.HOME_MENU; + } + + public loadBanner(): BannerData[] { + return DataModel.BANNER; + } + + public startDetailsAbility(context, index: number): void { + const want = { + bundleName: 'com.atomlab.atomlabshopping', + abilityName: 'DetailsAbility', + parameters: { + position: index + } + }; + try { + context.startAbility(want); + } catch (error) { + hilog.error(HOME_PAGE_DOMAIN, TAG, '%{public}s', error); + } + } + public startProductListAbility(context, imageUrl: string): void { + const want = { + bundleName: 'com.atomlab.atomlabshopping', + abilityName: 'ProductListAbility', + parameters: { + imageUrl: imageUrl + } + }; + try { + context.startAbility(want); + } catch (error) { + hilog.error(HOME_PAGE_DOMAIN, TAG, '%{public}s', error); + } + } + public startModelDetailAbility(context, imageUrl: string): void { + const want = { + bundleName: 'com.atomlab.atomlabshopping', + abilityName: 'ModelDetailAbility', + parameters: { + imageUrl: imageUrl + } + }; + try { + context.startAbility(want); + } catch (error) { + hilog.error(HOME_PAGE_DOMAIN, TAG, '%{public}s', error); + } + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/IconsModel.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/IconsModel.ets" new file mode 100644 index 0000000000000000000000000000000000000000..bd5fa41e19bebe18c46ac2bb21c88e86f9d729e7 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/IconsModel.ets" @@ -0,0 +1,47 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License,Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import Common from '../common/constants/Const'; +import IconItem from '../common/bean/IconItem'; + +@Observed +export class IconsModel { + public imagerArr: Array = []; + private num: number = Common.IMAGES_MIN; + public columnsTemplate: string = '1fr'; + + constructor(num: number) { + this.addImage(num); + } + + public addImage(num) { + this.imagerArr = []; + this.num = num; + this.columnsTemplate = '1fr'; + for (let i = 1; i < num; i++) { + this.imagerArr.push(new IconItem(i, Common.IMAGE_RESOURCE[i], false)); + this.columnsTemplate += ' 1fr'; + } + } + + public reset() { + for (let i = 0; i < this.num; i++) { + if (this.imagerArr[i].clicked) { + this.imagerArr[i].clicked = false; + this.columnsTemplate = '1fr'; + } + } + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/ModelDetailViewModel.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/ModelDetailViewModel.ets" new file mode 100644 index 0000000000000000000000000000000000000000..a45f12d79323d99d642f74cfceb6991ead51d3ef --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/ModelDetailViewModel.ets" @@ -0,0 +1,38 @@ +import { ProductData } from '../model/ProductData'; +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; + +const TAG = 'ModelDetailViewModel'; +const NEW_PAGE_DOMAIN = 0x00010; + +export default class ModelDetailViewModel { + + public startModelDetailAbility(context, imageUrl: number): void { + const want = { + bundleName: 'com.atomlab.atomlabshopping', + abilityName: 'HomePictureAbility', + parameters: { + data: imageUrl + } + }; + try { + context.startAbility(want); + } catch (error) { + hilog.error(NEW_PAGE_DOMAIN, TAG, '%{public}s', error); + } + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/NavViewModel.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/NavViewModel.ets" new file mode 100644 index 0000000000000000000000000000000000000000..e89a35dcaa66b5dd410d69be946da19d3b5f0ed6 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/NavViewModel.ets" @@ -0,0 +1,23 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import DataModel from '../model/DataModel'; +import ToolBarConfig from '../common/bean/ToolBarData'; + +export default class NavViewModel { + public loadNavigationTab(): ToolBarConfig[] { + return DataModel.TOOL_BAR; + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/NewViewModel.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/NewViewModel.ets" new file mode 100644 index 0000000000000000000000000000000000000000..ce5a8299a67a4dde2848f749c145e0c710e18f93 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/NewViewModel.ets" @@ -0,0 +1,38 @@ +import { ProductData } from '../model/ProductData'; +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; + +const TAG = 'NewViewModel'; +const NEW_PAGE_DOMAIN = 0x00005; + +export default class NewViewModel { + + public startNewAbility(context, productItem: ProductData): void { + const want = { + bundleName: 'com.atomlab.atomlabshopping', + abilityName: 'ProductDetailAbility', + parameters: { + productData: productItem + } + }; + try { + context.startAbility(want); + } catch (error) { + hilog.error(NEW_PAGE_DOMAIN, TAG, '%{public}s', error); + } + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/ProductDetailViewModel.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/ProductDetailViewModel.ets" new file mode 100644 index 0000000000000000000000000000000000000000..6125a93a1eef1cc456b116d9dae1919e47e6256b --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/ProductDetailViewModel.ets" @@ -0,0 +1,22 @@ +import { ProductData } from '../model/ProductData'; +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +export default class ProductDetailViewModel { + public loadDetails(productItem:ProductData): ProductData { + return productItem; + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/ServicesViewModel.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/ServicesViewModel.ets" new file mode 100644 index 0000000000000000000000000000000000000000..35100cef76ad7d688010e8715a74726a8427d117 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/ServicesViewModel.ets" @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import DataModel from '../model/DataModel'; +import Service from '../common/bean/GoodsServiceData'; + +export default class ServicesViewModel { + // Load the data of goods service for the GoodsServiceList view. + public loadGoodsService(): Service[] { + return DataModel.GOOD_SERVICE; + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/UserViewModel.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/UserViewModel.ets" new file mode 100644 index 0000000000000000000000000000000000000000..00a958ee956f75469d9d24f008d34a05d7dd7289 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/ets/viewmodel/UserViewModel.ets" @@ -0,0 +1,22 @@ +/* + * Copyright (c) 2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import hilog from '@ohos.hilog'; + +const TAG = 'UserViewModel'; + +export default class UserViewModel { + +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/module.json5" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/module.json5" new file mode 100644 index 0000000000000000000000000000000000000000..cf270284d4b4913f7e10891e05ae66feb7889171 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/module.json5" @@ -0,0 +1,92 @@ +{ + "module": { + "name": "entry", + "type": "entry", + "description": "$string:module_desc", + "mainElement": "entryAbility", + "deviceTypes": [ + "phone" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:main_pages", + "abilities": [ + { + "name": "entryAbility", + "srcEntrance": "./ets/entryability/EntryAbility.ts", + "description": "$string:entryAbility_desc", + "icon": "$media:icon", + "label": "$string:entryAbility_label", + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:start_window_background", + "visible": true, + "orientation": "portrait", + "skills": [ + { + "entities": [ + "entity.system.home" + ], + "actions": [ + "action.system.home" + ] + } + ] + }, + { + "name": "DetailsAbility", + "srcEntrance": "./ets/DetailsAbility/DetailsAbility.ts", + "description": "$string:details_ability_desc", + "icon": "$media:icon", + "label": "$string:details_ability_label", + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:white", + "orientation": "portrait", + "visible": true + }, + { + "name": "ProductDetailAbility", + "srcEntrance": "./ets/ProductDetailAbility/ProductDetailAbility.ts", + "description": "$string:product_detail_ability_desc", + "icon": "$media:icon", + "label": "$string:product_detail_ability_label", + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:white", + "orientation": "portrait", + "visible": true + }, + { + "name": "ProductListAbility", + "srcEntrance": "./ets/DetailsAbility/ProductListAbility.ts", + "description": "$string:product_detail_ability_desc", + "icon": "$media:icon", + "label": "$string:product_detail_ability_label", + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:white", + "orientation": "portrait", + "visible": true + }, + { + "name": "ModelDetailAbility", + "srcEntrance": "./ets/DetailsAbility/ModelDetailAbility.ts", + "description": "$string:product_detail_ability_desc", + "icon": "$media:icon", + "label": "$string:product_detail_ability_label", + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:white", + "orientation": "portrait", + "visible": true + }, + { + "name": "HomePictureAbility", + "srcEntrance": "./ets/DetailsAbility/HomePictureAbility.ts", + "description": "$string:product_detail_ability_desc", + "icon": "$media:icon", + "label": "$string:product_detail_ability_label", + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:white", + "orientation": "portrait", + "visible": true + } + ] + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/element/color.json" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/element/color.json" new file mode 100644 index 0000000000000000000000000000000000000000..cdb325da9fec9ac7d7b6f6cbcdce8a723e8c9384 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/element/color.json" @@ -0,0 +1,84 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + }, + { + "name": "text", + "value": "#2c2c2c" + }, + { + "name": "description", + "value": "#a3a3a3" + }, + { + "name": "bottom_navigation", + "value": "#FFF1F3F5" + }, + { + "name": "navigation_line", + "value": "#bac0c6" + }, + { + "name": "background", + "value": "#f1f3f5" + }, + { + "name": "background1", + "value": "#ffffff" + }, + { + "name": "white", + "value": "#FFFFFF" + }, + { + "name": "commentRate", + "value": "#99000000" + }, + { + "name": "detail_bottom_panel_background", + "value": "#FFF1F3F5" + }, + { + "name": "homepage_indicator_selected", + "value": "#F74E42" + }, + { + "name": "homepage_goodsList_activity_background", + "value": "#FA2F22" + }, + { + "name": "index_navigation_selected_text", + "value": "#E92F4F" + }, + { + "name": "detail_goods_previewer_indicator", + "value": "#66000000" + }, + { + "name": "detail_goods_address_line", + "value": "#33000000" + }, + { + "name": "index_search_hot_word", + "value": "#FF000000" + }, + { + "name": "backgroundColor", + "value": "#F1F3F5" + }, + { + "name": "primaryColor", + "value": "#cd0c20" + }, + { + "name": "bgColor", + "value": "#f1f3f5" + }, + { + "name": "fontGrayColor", + "value": "#182431" + } + ] +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/element/dimention.json" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/element/dimention.json" new file mode 100644 index 0000000000000000000000000000000000000000..37d4af09da84eca15f15614095b95bd20dffdee4 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/element/dimention.json" @@ -0,0 +1,80 @@ +{ + "float": [ + { + "name": "default_1", + "value": "1vp" + }, + { + "name": "default_4", + "value": "4vp" + }, + { + "name": "default_8", + "value": "8vp" + }, + { + "name": "default_10", + "value": "10vp" + }, + { + "name": "default_12", + "value": "12vp" + }, + { + "name": "default_16", + "value": "16vp" + }, + { + "name": "default_21", + "value": "21vp" + }, + { + "name": "default_23", + "value": "23vp" + }, + { + "name": "default_24", + "value": "24vp" + }, + { + "name": "default_33", + "value": "33vp" + }, + { + "name": "default_40", + "value": "40vp" + }, + { + "name": "default_41", + "value": "41vp" + }, + { + "name": "default_56", + "value": "56vp" + }, + { + "name": "default_90", + "value": "90vp" + }, + { + "name": "default_260", + "value": "260vp" + }, + { + "name": "fontSize_12", + "value": "12fp" + }, + { + "name": "fontSize_14", + "value": "14fp" + }, + { + "name": "fontSize_16", + "value": "16fp" + }, + { + "name": "fontSize_24", + "value": "24fp" + } + ] +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/element/string.json" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/element/string.json" new file mode 100644 index 0000000000000000000000000000000000000000..1053c8cbfdd66e9d39823e220b0171119b465916 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/element/string.json" @@ -0,0 +1,256 @@ +{ + "string": [ + { + "name": "module_desc", + "value": "description" + }, + { + "name": "entryAbility_desc", + "value": "定制印出我个性" + }, + { + "name": "entryAbility_label", + "value": "邮印象" + }, + { + "name": "details_ability_desc", + "value": "description" + }, + { + "name": "details_ability_label", + "value": "StageAbilityDemoDetail" + }, + { + "name": "product_detail_ability_desc", + "value": "产品详情描述" + }, + { + "name": "product_detail_ability_label", + "value": "产品详情" + }, + { + "name": "put_in_shopping_cart", + "value": "加入购物车" + }, + { + "name": "buy_now", + "value": "立即购买" + }, + { + "name": "homepage_tab_more", + "value": "分类" + }, + { + "name": "homepage_search_hot_word", + "value": "照片书" + }, + { + "name": "detail_comment", + "value": "和描述相符合很喜欢,做工细致,颜色好看,原装正品" + }, + { + "name": "detail_comment_phone", + "value": "188******1765" + }, + { + "name": "detail_comment_header_left", + "value": "用户评价 (2万+)" + }, + { + "name": "detail_comment_header_right", + "value": "好评" + }, + { + "name": "detail_enjoy", + "value": "分享" + }, + { + "name": "detail_collection", + "value": "收藏" + }, + { + "name": "detail_price_notify", + "value": "降价通知" + }, + { + "name": "detail_address_text", + "value": "送至" + }, + { + "name": "detail_address_holder_text", + "value": "请选择您的收货地址" + }, + { + "name": "detail_goods_picker_left_text", + "value": "已选" + }, + { + "name": "detail_price_symbol", + "value": "¥" + }, + { + "name": "commentRatio", + "value": "99%" + }, + { + "name": "home_tab_index", + "value": "首页" + }, + { + "name": "home_tab_phone", + "value": "明信片" + }, + { + "name": "home_tab_food", + "value": "照片书" + }, + { + "name": "home_tab_men_clothing", + "value": "台历挂历" + }, + { + "name": "home_tab_fresh_food", + "value": "写真海报" + }, + { + "name": "home_tab_furniture", + "value": "同学录" + }, + { + "name": "home_tab_mom_and_infant", + "value": "马克杯" + }, + { + "name": "home_tab_kitchen_things", + "value": "T恤衫" + }, + { + "name": "home_menu_all", + "value": "全部" + }, + { + "name": "home_menu_all_content", + "value": "为你推荐" + }, + { + "name": "home_menu_select", + "value": "精选" + }, + { + "name": "home_menu_select_content", + "value": "发现好货" + }, + { + "name": "home_menu_new", + "value": "新品" + }, + { + "name": "home_menu_new_content", + "value": "新品首发" + }, + { + "name": "home_menu_discounts", + "value": "实惠" + }, + { + "name": "home_menu_discounts_content", + "value": "便宜好货" + }, + { + "name": "goods_list_item_1", + "value": "蝴蝶精装8寸方款" + }, + { + "name": "goods_list_item_2", + "value": "8寸经典台历横款单面" + }, + { + "name": "goods_list_item_3", + "value": "典雅水晶12寸竖款" + }, + { + "name": "goods_list_item_4", + "value": "马克杯" + }, + { + "name": "goods_list_item_1_save", + "value": "限时省100" + }, + { + "name": "goods_list_item_2_save", + "value": "限时省20" + }, + { + "name": "goods_list_item_3_save", + "value": "限时省100" + }, + { + "name": "goods_list_item_4_save", + "value": "限时省50" + }, + { + "name": "goods_list_item_1_desc", + "value": "蝴蝶精装8寸方款·x1" + }, + { + "name": "goods_list_item_2_desc", + "value": "8寸经典台历横款单面·x1" + }, + { + "name": "goods_list_item_3_desc", + "value": "典雅水晶12寸竖款·x1" + }, + { + "name": "goods_list_item_4_desc", + "value": "马克杯·x1" + }, + { + "name": "goods_list_activity_new", + "value": "新品" + }, + { + "name": "goods_list_activity_time", + "value": "限时" + }, + { + "name": "nav_index", + "value": "主页" + }, + { + "name": "nav_new", + "value": "分类" + }, + { + "name": "nav_shopping_cart", + "value": "购物车" + }, + { + "name": "nav_mine", + "value": "我的" + }, + { + "name": "goods_service_1_name", + "value": "服务" + }, + { + "name": "goods_service_1_desc", + "value": "免运费(请以提交订单时为准)" + }, + { + "name": "goods_service_2_desc", + "value": "店铺发货&售后" + }, + { + "name": "goods_service_3_desc", + "value": "7天无理由退货" + }, + { + "name": "please_click_button", + "value": "请点击按钮" + }, + { + "name": "count", + "value": "数量" + } + ] +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/element/style_size.json" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/element/style_size.json" new file mode 100644 index 0000000000000000000000000000000000000000..be19a1c5a65bb0cb9e169ffa349cb5fb4ef4937e --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/element/style_size.json" @@ -0,0 +1,48 @@ +{ + "float": [ + { + "name": "size_4", + "value": "4vp" + }, + { + "name": "size_5", + "value": "5vp" + }, + { + "name": "size_12", + "value": "12vp" + }, + { + "name": "size_14", + "value": "14vp" + }, + { + "name": "size_15", + "value": "15vp" + }, + { + "name": "size_16", + "value": "16vp" + }, + { + "name": "size_20", + "value": "20vp" + }, + { + "name": "size_24", + "value": "24vp" + }, + { + "name": "size_48", + "value": "48vp" + }, + { + "name": "size_64", + "value": "64vp" + }, + { + "name": "size_100", + "value": "100vp" + } + ] +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/Switch.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/Switch.png" new file mode 100644 index 0000000000000000000000000000000000000000..51aa0fc19aeb19ee0599d09f9802fd1f344818ec Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/Switch.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/arrow.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/arrow.png" new file mode 100644 index 0000000000000000000000000000000000000000..a2d0e53e4fee910c35c551d1de9c8838e971b1cf Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/arrow.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/avatar_default.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/avatar_default.png" new file mode 100644 index 0000000000000000000000000000000000000000..c6cac0fc5c57c0c263ba32316a28bacef95863ed Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/avatar_default.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/back.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/back.png" new file mode 100644 index 0000000000000000000000000000000000000000..3b5908efe6b386b453fd72d87558bf513e563599 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/back.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/class51.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/class51.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..38dfa46ef18f1a76edaeb5e46c9624e633dbbbf1 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/class51.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/class52.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/class52.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..b2e1b805147bc0cbeb7bff49a0e8a91f148fa04c Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/class52.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/class53.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/class53.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..cf5c09c43f25752e56ad29ac2d00fd50c7dff3e3 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/class53.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/class54.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/class54.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..a48ee81d9687247e96fbbc8c27dedbd29e650d19 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/class54.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/contact.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/contact.png" new file mode 100644 index 0000000000000000000000000000000000000000..2d1c1199727a32090b1ef8713752241f58896c22 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/contact.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/cup61.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/cup61.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..36da1e3fb65c1b0f3236e55a6c28a595f0237557 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/cup61.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/cup62.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/cup62.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..e3743f3aad643fca2a5e461c0e7fc2bf48a4fcdd Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/cup62.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/date31.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/date31.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..68527b9dc78133ea41ddb7d16946858fc29bd5d0 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/date31.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/date32.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/date32.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..f5f48b270d5bddb09526fabd45421747ddda0ab1 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/date32.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/date33.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/date33.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..30e0b3911671a6024a12d99d17048c7dee688e1b Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/date33.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/date34.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/date34.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..5d3b5d0441a7348d129b78f5db9b83f2391bfa7d Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/date34.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/date35.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/date35.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..04cdefa5357b560120fb51212a6e600b9471176d Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/date35.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/date36.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/date36.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..ae71bdf6b134e103102c71f3d1e8f312ca5d3b00 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/date36.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/date37.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/date37.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..dd52c10cbfc5d39f497f78ff32f9dace6ffc40fb Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/date37.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/date38.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/date38.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..a00855641a6ee6847b7838e072fd5bbcea0afe4a Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/date38.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/header_menu1.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/header_menu1.png" new file mode 100644 index 0000000000000000000000000000000000000000..7122b706661741f0803b84b5902a922516667670 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/header_menu1.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/header_menu2.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/header_menu2.png" new file mode 100644 index 0000000000000000000000000000000000000000..09b1a1222fcf2a90966fb78bcbcc07fcfd0c9ed3 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/header_menu2.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/header_menu3.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/header_menu3.png" new file mode 100644 index 0000000000000000000000000000000000000000..e30a31a08e92e9e26f1a3e972c643f8197c8bed7 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/header_menu3.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/ic_setting_version.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/ic_setting_version.png" new file mode 100644 index 0000000000000000000000000000000000000000..7d20fa3394bdc58abd780de9944df91fa4169580 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/ic_setting_version.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/icon.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/icon.png" new file mode 100644 index 0000000000000000000000000000000000000000..417a60db06d6514b34edae6345d9b70e864a86a9 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/icon.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/imgActive.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/imgActive.png" new file mode 100644 index 0000000000000000000000000000000000000000..caaa3b033d03af78e1f6f31aa29bfb6b3ebb1781 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/imgActive.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/imgInit.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/imgInit.png" new file mode 100644 index 0000000000000000000000000000000000000000..fa016e6070f35017fbd924a054cbdbf18659db66 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/imgInit.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/menu_addr.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/menu_addr.png" new file mode 100644 index 0000000000000000000000000000000000000000..df1a9a4de9ae5a96f957022aed92ce98f8b13786 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/menu_addr.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/menu_card.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/menu_card.png" new file mode 100644 index 0000000000000000000000000000000000000000..e1630ce8027e1be98f43c85985e66f8eb18519fd Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/menu_card.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/menu_cart.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/menu_cart.png" new file mode 100644 index 0000000000000000000000000000000000000000..7a45975e1d6cd3c259218df85e85472d7de26e26 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/menu_cart.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/menu_coupon.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/menu_coupon.png" new file mode 100644 index 0000000000000000000000000000000000000000..53e90c1fda4c32e05140fad2ee7036382b19c205 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/menu_coupon.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/menu_custom.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/menu_custom.png" new file mode 100644 index 0000000000000000000000000000000000000000..f6cc0cc802a02bd7ed8d6814d3127c1c80fa48a3 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/menu_custom.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/menu_prize.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/menu_prize.png" new file mode 100644 index 0000000000000000000000000000000000000000..776cf0a34cbd7694cf3b8419e76a83a4074a0e38 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/menu_prize.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/menu_sale.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/menu_sale.png" new file mode 100644 index 0000000000000000000000000000000000000000..90ca02b48edce7e570ceac778f1bbd303443a938 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/menu_sale.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/menu_setting.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/menu_setting.png" new file mode 100644 index 0000000000000000000000000000000000000000..bdf30835fb200a360601c05f94c1ea5c3be13775 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/menu_setting.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/pic21.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/pic21.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..95bf163258a5bd1df8f5b950a5f0ab58b5d420f6 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/pic21.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/pic22.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/pic22.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..bfcbda23d551ac01a948589593c2cbf353065801 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/pic22.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/pic23.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/pic23.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..a48ee81d9687247e96fbbc8c27dedbd29e650d19 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/pic23.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/pic24.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/pic24.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..2efd7d9760a8f71317a27550dfb1e69b2ffe3a89 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/pic24.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/pic25.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/pic25.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..58f36472d9c588f2e06df96a5f28310a324e018b Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/pic25.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/pic26.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/pic26.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..a11016bd4011d6b2b6f58107f32f92ed3f966e7d Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/pic26.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/pose41.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/pose41.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..68d4efb449c1aaac93e7c75bc1f58435ce7faa02 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/pose41.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/pose42.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/pose42.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..64b562d59b18c4c5f83ff593b66c7c45e2954704 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/pose42.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/post11.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/post11.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..d3c45db7f49c68852eba6c3fb1565cf5ea668059 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/post11.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/post12.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/post12.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..2ceb4de55f4cbc1051a419480a9beb8116d32058 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/post12.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/post13.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/post13.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..9242de0f517adf7ee1fd985dfd12b07a6f41a45b Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/post13.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/product1.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/product1.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..2ceb4de55f4cbc1051a419480a9beb8116d32058 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/product1.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/product2.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/product2.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..9242de0f517adf7ee1fd985dfd12b07a6f41a45b Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/product2.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/product_21.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/product_21.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..68d4efb449c1aaac93e7c75bc1f58435ce7faa02 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/product_21.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/product_22.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/product_22.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..64b562d59b18c4c5f83ff593b66c7c45e2954704 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/product_22.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/show71.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/show71.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..f0b30287190669be1e78da973a9616dcc26adcf1 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/show71.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/show72.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/show72.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..131cafc8a6f2dd150e71a6c05ea00159eff65c42 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/show72.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/show73.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/show73.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..4e27a6607cba65fb18554a6ab240b3b798686f1b Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/show73.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/t81.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/t81.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..46e339f757ebe1acb8e8b83733ac1a369450f34f Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/t81.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/z91.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/z91.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..316d9c19e48f9b9658e041192f7bfa12894b921d Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/z91.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/z92.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/z92.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..97064d8efe77c1872d64c730b1546708ec6f7709 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/z92.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/z93.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/z93.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..f3a6b88d773b0feeb2930c5f23681d3d7e768336 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/media/z93.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/profile/main_pages.json" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/profile/main_pages.json" new file mode 100644 index 0000000000000000000000000000000000000000..043acb5f22c17ac315630dc2f080ebdc9faa0e64 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/base/profile/main_pages.json" @@ -0,0 +1,10 @@ +{ + "src": [ + "pages/NavPage", + "pages/DetailsPage", + "pages/ProductDetailPage", + "pages/ProductListPage", + "pages/ModelDetailPage", + "pages/HomePicturePage" + ] +} diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_action_add_to_favorites.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_action_add_to_favorites.png" new file mode 100644 index 0000000000000000000000000000000000000000..4204c86fee65987d487916321d73b6547020dc74 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_action_add_to_favorites.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_action_price_notify.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_action_price_notify.png" new file mode 100644 index 0000000000000000000000000000000000000000..1258b82052ab167c6b3687d4836f753f9f7eba88 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_action_price_notify.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_action_share_to.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_action_share_to.png" new file mode 100644 index 0000000000000000000000000000000000000000..45145c08faa90927943d02a61c68610e5d9015e5 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_action_share_to.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_back.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_back.png" new file mode 100644 index 0000000000000000000000000000000000000000..a29b367409d7b49b7251ec379bd466db9475d4e9 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_back.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_bottom_panel_background.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_bottom_panel_background.png" new file mode 100644 index 0000000000000000000000000000000000000000..c7a109ae593e36a580e9b032df911aef60647b17 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_bottom_panel_background.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_comment_mark.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_comment_mark.png" new file mode 100644 index 0000000000000000000000000000000000000000..d03325c540882db483151d9f781f3e81f132b95a Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_comment_mark.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_location.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_location.png" new file mode 100644 index 0000000000000000000000000000000000000000..3d8a576354debe546814be799aac7fb979c13d82 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_location.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_pick_up_more.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_pick_up_more.png" new file mode 100644 index 0000000000000000000000000000000000000000..b0beec435c05f6eb229101f69ceea2244e917f18 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_pick_up_more.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_services.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_services.png" new file mode 100644 index 0000000000000000000000000000000000000000..2852874a9094f1fc5244654dd1cfc9e0a7de1390 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_services.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_share.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_share.png" new file mode 100644 index 0000000000000000000000000000000000000000..14b156a4042e043c1c40a3910b1464078134d255 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/detail_share.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/head_portrait.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/head_portrait.png" new file mode 100644 index 0000000000000000000000000000000000000000..297632e1cc0d801d4759a781861b249112c14b91 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/detail/head_portrait.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/ic_calendar.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/ic_calendar.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..e6df057a21b59379089707ceb34810f1d18b8ab2 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/ic_calendar.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/ic_classmate.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/ic_classmate.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..825d16a1e849f571e44ccc93df8831cac2c83f2c Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/ic_classmate.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/ic_decoration.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/ic_decoration.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..247da63f1f180a84b9839be4d56a1ff6f6135d75 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/ic_decoration.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/ic_funny.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/ic_funny.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..a7e427a503cd3ffeb780bdc4b997b99eeb16abad Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/ic_funny.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/ic_mark.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/ic_mark.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..2a3b899e2820995b0250b76f55b7dac9cb84f463 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/ic_mark.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/ic_photobook.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/ic_photobook.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..a516f186f8f4f188a5bcbe71bb4107999dd91549 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/ic_photobook.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/ic_postcard.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/ic_postcard.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..24f74de65cbbd34822de57a10117f5c036183b44 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/ic_postcard.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/ic_poster.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/ic_poster.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..64eb3fef5c71979af5914ebf8bf145aefe7fc859 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/ic_poster.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/ic_print.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/ic_print.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..b8e19da765b18d40038760592c1dbdc348c2404c Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/ic_print.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/banner1.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/banner1.png" new file mode 100644 index 0000000000000000000000000000000000000000..5ef534ab7963b67c63a3eb70cfbb5f9d27065213 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/banner1.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/banner2.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/banner2.png" new file mode 100644 index 0000000000000000000000000000000000000000..56684b1b0beac16f295a7bc58a2d2c80a805aae7 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/banner2.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/banner3.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/banner3.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..41a5f0029ce23e93efb1d05771e82fe28c3f4bd1 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/banner3.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/good1.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/good1.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..38dfa46ef18f1a76edaeb5e46c9624e633dbbbf1 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/good1.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/good2.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/good2.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..f5f48b270d5bddb09526fabd45421747ddda0ab1 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/good2.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/good3.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/good3.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..a48ee81d9687247e96fbbc8c27dedbd29e650d19 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/good3.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/good4.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/good4.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..36da1e3fb65c1b0f3236e55a6c28a595f0237557 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/good4.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/home.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/home.png" new file mode 100644 index 0000000000000000000000000000000000000000..1b7b4cf32c9368cd55522d9250ee0662a212de2e Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/home.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/home_selected.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/home_selected.png" new file mode 100644 index 0000000000000000000000000000000000000000..80c45392c5daa27f3fad6997c792d1e7c3801bda Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/home_selected.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/icon.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/icon.png" new file mode 100644 index 0000000000000000000000000000000000000000..417a60db06d6514b34edae6345d9b70e864a86a9 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/icon.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/index_background.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/index_background.png" new file mode 100644 index 0000000000000000000000000000000000000000..8203d3507ce0e53a6db7263843adc59ecd0b5309 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/index_background.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/mine.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/mine.png" new file mode 100644 index 0000000000000000000000000000000000000000..6e1834d968a0146b95d031a1850ebd8f402dd62c Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/mine.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/mine_selected.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/mine_selected.png" new file mode 100644 index 0000000000000000000000000000000000000000..16eca61d2a63ae1115c78d1b0c500ae0432462dd Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/mine_selected.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/news.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/news.png" new file mode 100644 index 0000000000000000000000000000000000000000..640cd62657420938148bd315d16ac000dbb86249 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/news.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/news_selected.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/news_selected.png" new file mode 100644 index 0000000000000000000000000000000000000000..125a6e410924181310a7581d498d4ef95e0de5d6 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/news_selected.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/qrcode.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/qrcode.png" new file mode 100644 index 0000000000000000000000000000000000000000..9070ca152f934de909d9963e7d508ef52d46c335 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/qrcode.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/search.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/search.png" new file mode 100644 index 0000000000000000000000000000000000000000..8bc3b1eec293469c3dcadc6dd5a39649b6de1bea Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/search.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/shopping_cart.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/shopping_cart.png" new file mode 100644 index 0000000000000000000000000000000000000000..eb5f04f3d17ff7e14331f610473e6dbf3a345dfd Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/shopping_cart.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/shopping_cart_selected.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/shopping_cart_selected.png" new file mode 100644 index 0000000000000000000000000000000000000000..2487af5d236eaa4911dd62942ebd38585b5b5f8e Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/shopping_cart_selected.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/tab_menu_setting.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/tab_menu_setting.png" new file mode 100644 index 0000000000000000000000000000000000000000..cc5f794d423eb156ec5d4480a09bdf3f201817c5 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/index/tab_menu_setting.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal0.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal0.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..80f10e62149b87a5f3e21e42acc4bd75d49d19f2 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal0.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal1.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal1.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..87ffd542d9d34b967a57271b71b8e69b581f4e38 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal1.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal10.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal10.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..c82b60dedc0d223df5e6a73ab71acb6866644b03 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal10.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal11.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal11.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..1223aa1a93f6c4d6cf7fec053d83dd15394fa81e Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal11.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal12.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal12.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..cec570ddabe6d4cc70b546a22ed9824454e4d67c Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal12.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal13.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal13.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..b426b0450db6d68144782117c1212cad68aca09c Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal13.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal14.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal14.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..a3d501d08aa854a841ae92fd9a6121f328ae6f52 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal14.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal15.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal15.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..e2c867c50d391e0e559931e2afa9870a4aace05e Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal15.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal16.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal16.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..a2aca1e5e07e9276c3efba09a52b197e64562c8b Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal16.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal17.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal17.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..a5ccb44a59279de686d00ff18b1f642e4a0e481a Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal17.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal18.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal18.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..b4b9508025cfef0e48497222148e47938d9c1aff Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal18.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal19.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal19.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..5c1e16176ca92d2b4a940fe845b29899eb23ad61 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal19.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal2.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal2.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..27152ec58ec71739a3291a882e388d6bb498f003 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal2.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal20.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal20.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..11116fa8eb5a5f270f69bedb9f5d1568a48573c0 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal20.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal21.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal21.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..0e323748b126dcf52da93cb7ea7965562b34629f Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal21.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal3.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal3.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..d1f2fd72507db1ada8227dab497c421d41dc5524 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal3.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal4.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal4.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..7deb14feaefd4d0e0f503373df9a7d94f41a99c9 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal4.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal5.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal5.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..92cdff064a0476045e111866f9acf2359abbe9ec Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal5.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal6.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal6.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..73fdb46431acf869b2f7fcc4a4aa3f3336019fe3 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal6.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal7.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal7.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..f97a3ee8d64380a637a0c2c3c306536f481c25b0 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal7.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal8.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal8.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..b09a84b0f97cb43186661771ababddbf6af63028 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal8.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal9.jpg" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal9.jpg" new file mode 100644 index 0000000000000000000000000000000000000000..550e6b00a13d0a0995c272993389e9986f25d183 Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/main/resources/rawfile/model/personal9.jpg" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/ets/test/Ability.test.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/ets/test/Ability.test.ets" new file mode 100644 index 0000000000000000000000000000000000000000..460fe8c8c124c821c5451615acc8949f619dbc3f --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/ets/test/Ability.test.ets" @@ -0,0 +1,36 @@ +import hilog from '@ohos.hilog'; +import { describe, beforeAll, beforeEach, afterEach, afterAll, it, expect } from '@ohos/hypium' + +export default function abilityTest() { + describe('ActsAbilityTest', function () { + // Defines a test suite. Two parameters are supported: test suite name and test suite function. + beforeAll(function () { + // Presets an action, which is performed only once before all test cases of the test suite start. + // This API supports only one parameter: preset action function. + }) + beforeEach(function () { + // Presets an action, which is performed before each unit test case starts. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: preset action function. + }) + afterEach(function () { + // Presets a clear action, which is performed after each unit test case ends. + // The number of execution times is the same as the number of test cases defined by **it**. + // This API supports only one parameter: clear action function. + }) + afterAll(function () { + // Presets a clear action, which is performed after all test cases of the test suite end. + // This API supports only one parameter: clear action function. + }) + it('assertContain',0, function () { + // Defines a test case. This API supports three parameters: test case name, filter parameter, and test case function. + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'it begin'); + let a = 'abc' + let b = 'b' + // Defines a variety of assertion methods, which are used to declare expected boolean conditions. + expect(a).assertContain(b) + expect(a).assertEqual(a) + }) + }) +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/ets/test/List.test.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/ets/test/List.test.ets" new file mode 100644 index 0000000000000000000000000000000000000000..d766fe249dfc3ada636f27e64d9b64451ce32c93 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/ets/test/List.test.ets" @@ -0,0 +1,5 @@ +import abilityTest from './Ability.test' + +export default function testsuite() { + abilityTest() +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/ets/testability/TestAbility.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/ets/testability/TestAbility.ets" new file mode 100644 index 0000000000000000000000000000000000000000..84765c417cbff3b90c08d4c9accb2ea581ba2df1 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/ets/testability/TestAbility.ets" @@ -0,0 +1,57 @@ +import hilog from '@ohos.hilog'; +import Ability from '@ohos.application.Ability' +import AbilityDelegatorRegistry from '@ohos.application.abilityDelegatorRegistry' +import { Hypium } from '@ohos/hypium' +import testsuite from '../test/List.test' +import Window from '@ohos.window' + +export default class TestAbility extends Ability { + onCreate(want, launchParam) { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onCreate'); + hilog.info(0x0000, 'testTag', '%{public}s', 'want param:' + JSON.stringify(want) ?? ''); + hilog.info(0x0000, 'testTag', '%{public}s', 'launchParam:'+ JSON.stringify(launchParam) ?? ''); + var abilityDelegator: any + abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + var abilityDelegatorArguments: any + abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments() + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'start run testcase!!!'); + Hypium.hypiumTest(abilityDelegator, abilityDelegatorArguments, testsuite) + } + + onDestroy() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onDestroy'); + } + + onWindowStageCreate(windowStage: Window.WindowStage) { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onWindowStageCreate'); + windowStage.loadContent('testability/pages/Index', (err, data) => { + if (err.code) { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.ERROR); + hilog.error(0x0000, 'testTag', 'Failed to load the content. Cause: %{public}s', JSON.stringify(err) ?? ''); + return; + } + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', 'Succeeded in loading the content. Data: %{public}s', + JSON.stringify(data) ?? ''); + }); + } + + onWindowStageDestroy() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onWindowStageDestroy'); + } + + onForeground() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onForeground'); + } + + onBackground() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility onBackground'); + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/ets/testability/pages/Index.ets" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/ets/testability/pages/Index.ets" new file mode 100644 index 0000000000000000000000000000000000000000..954dfe0e29874c9ef11a5ace1673f79e27999864 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/ets/testability/pages/Index.ets" @@ -0,0 +1,35 @@ +import hilog from '@ohos.hilog'; + +@Entry +@Component +struct Index { + aboutToAppear() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'TestAbility index aboutToAppear'); + } + @State message: string = 'Hello World' + build() { + Row() { + Column() { + Text(this.message) + .fontSize(50) + .fontWeight(FontWeight.Bold) + Button() { + Text('next page') + .fontSize(20) + .fontWeight(FontWeight.Bold) + }.type(ButtonType.Capsule) + .margin({ + top: 20 + }) + .backgroundColor('#0D9FFB') + .width('35%') + .height('5%') + .onClick(()=>{ + }) + } + .width('100%') + } + .height('100%') + } + } \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/ets/testrunner/OpenHarmonyTestRunner.ts" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/ets/testrunner/OpenHarmonyTestRunner.ts" new file mode 100644 index 0000000000000000000000000000000000000000..94579b9c1535bc11ee56ee53b48fc90a9977e33a --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/ets/testrunner/OpenHarmonyTestRunner.ts" @@ -0,0 +1,71 @@ +import hilog from '@ohos.hilog'; +import TestRunner from '@ohos.application.testRunner' +import AbilityDelegatorRegistry from '@ohos.application.abilityDelegatorRegistry' + +var abilityDelegator = undefined +var abilityDelegatorArguments = undefined + +function translateParamsToString(parameters) { + const keySet = new Set([ + '-s class', '-s notClass', '-s suite', '-s it', + '-s level', '-s testType', '-s size', '-s timeout', + '-s dryRun' + ]) + let targetParams = ''; + for (const key in parameters) { + if (keySet.has(key)) { + targetParams = `${targetParams} ${key} ${parameters[key]}` + } + } + return targetParams.trim() +} + +async function onAbilityCreateCallback() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'onAbilityCreateCallback'); +} + +async function addAbilityMonitorCallback(err: any) { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', 'addAbilityMonitorCallback : %{public}s', JSON.stringify(err) ?? ''); +} + +export default class OpenHarmonyTestRunner implements TestRunner { + constructor() { + } + + onPrepare() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner OnPrepare '); + } + + async onRun() { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner onRun run'); + abilityDelegatorArguments = AbilityDelegatorRegistry.getArguments() + abilityDelegator = AbilityDelegatorRegistry.getAbilityDelegator() + var testAbilityName = abilityDelegatorArguments.bundleName + '.TestAbility' + let lMonitor = { + abilityName: testAbilityName, + onAbilityCreate: onAbilityCreateCallback, + }; + abilityDelegator.addAbilityMonitor(lMonitor, addAbilityMonitorCallback) + var cmd = 'aa start -d 0 -a TestAbility' + ' -b ' + abilityDelegatorArguments.bundleName + cmd += ' '+translateParamsToString(abilityDelegatorArguments.parameters) + var debug = abilityDelegatorArguments.parameters['-D'] + if (debug == 'true') + { + cmd += ' -D' + } + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', 'cmd : %{public}s', cmd); + abilityDelegator.executeShellCommand(cmd, + (err: any, d: any) => { + hilog.isLoggable(0x0000, 'testTag', hilog.LogLevel.INFO); + hilog.info(0x0000, 'testTag', 'executeShellCommand : err : %{public}s', JSON.stringify(err) ?? ''); + hilog.info(0x0000, 'testTag', 'executeShellCommand : data : %{public}s', d.stdResult ?? ''); + hilog.info(0x0000, 'testTag', 'executeShellCommand : data : %{public}s', d.exitCode ?? ''); + }) + hilog.info(0x0000, 'testTag', '%{public}s', 'OpenHarmonyTestRunner onRun end'); + } +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/module.json5" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/module.json5" new file mode 100644 index 0000000000000000000000000000000000000000..46d95d62f1d98834e61853653bc2369cbe5907de --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/module.json5" @@ -0,0 +1,36 @@ +{ + "module": { + "name": "entry_test", + "type": "feature", + "description": "$string:module_test_desc", + "mainElement": "TestAbility", + "deviceTypes": [ + "phone" + ], + "deliveryWithInstall": true, + "installationFree": false, + "pages": "$profile:test_pages", + "abilities": [ + { + "name": "TestAbility", + "srcEntrance": "./ets/testability/TestAbility.ets", + "description": "$string:TestAbility_desc", + "icon": "$media:icon", + "label": "$string:TestAbility_label", + "visible": true, + "startWindowIcon": "$media:icon", + "startWindowBackground": "$color:start_window_background", + "skills": [ + { + "actions": [ + "action.system.home" + ], + "entities": [ + "entity.system.home" + ] + } + ] + } + ] + } +} diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/resources/base/element/color.json" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/resources/base/element/color.json" new file mode 100644 index 0000000000000000000000000000000000000000..3c712962da3c2751c2b9ddb53559afcbd2b54a02 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/resources/base/element/color.json" @@ -0,0 +1,8 @@ +{ + "color": [ + { + "name": "start_window_background", + "value": "#FFFFFF" + } + ] +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/resources/base/element/string.json" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/resources/base/element/string.json" new file mode 100644 index 0000000000000000000000000000000000000000..65d8fa5a7cf54aa3943dcd0214f58d1771bc1f6c --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/resources/base/element/string.json" @@ -0,0 +1,16 @@ +{ + "string": [ + { + "name": "module_test_desc", + "value": "test ability description" + }, + { + "name": "TestAbility_desc", + "value": "the test ability" + }, + { + "name": "TestAbility_label", + "value": "test label" + } + ] +} \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/resources/base/media/icon.png" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/resources/base/media/icon.png" new file mode 100644 index 0000000000000000000000000000000000000000..ce307a8827bd75456441ceb57d530e4c8d45d36c Binary files /dev/null and "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/resources/base/media/icon.png" differ diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/resources/base/profile/test_pages.json" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/resources/base/profile/test_pages.json" new file mode 100644 index 0000000000000000000000000000000000000000..b7e7343cacb32ce982a45e76daad86e435e054fe --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/entry/src/ohosTest/resources/base/profile/test_pages.json" @@ -0,0 +1,5 @@ +{ + "src": [ + "testability/pages/Index" + ] +} diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/hvigorfile.ts" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/hvigorfile.ts" new file mode 100644 index 0000000000000000000000000000000000000000..6478186902c0c1ad7c966a929c7d6b7d8ae7a9f3 --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/hvigorfile.ts" @@ -0,0 +1,2 @@ +// Script for compiling build behavior. It is built in the build plug-in and cannot be modified currently. +export { appTasks } from '@ohos/hvigor-ohos-plugin'; \ No newline at end of file diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/package-lock.json" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/package-lock.json" new file mode 100644 index 0000000000000000000000000000000000000000..19ba7083876abb3ae531a853f957ebbcb311946a --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/package-lock.json" @@ -0,0 +1,1108 @@ +{ + "name": "atomlabshopping", + "version": "1.0.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@ohos/hos-sdkmanager-common": { + "version": "2.0.7", + "resolved": "https://repo.harmonyos.com/npm/@ohos/hos-sdkmanager-common/-/@ohos/hos-sdkmanager-common-2.0.7.tgz", + "integrity": "sha512-1dbZlFPImIatThlZWds8sCe6VMKMWCNqOGhoRoEa8FJACKwlUrTybOjCi+MgR5X+vahQDLtDTvMJoZnfMMig6Q==", + "requires": { + "@ohos/sdkmanager-common": "^2.1.5" + } + }, + "@ohos/hvigor": { + "version": "1.3.1", + "resolved": "https://repo.harmonyos.com/npm/@ohos/hvigor/-/@ohos/hvigor-1.3.1.tgz", + "integrity": "sha512-YxIrzzKOPUrXgAe8isUG5q8CTRsP4TIF4Y4KrCeF+uLhMT2FMsd6LYkVj2X9Ib3+siZA+klIUv1Y+kKXMQ55tg==", + "requires": { + "@ohos/hvigor-base": "1.3.1", + "fs-extra": "10.0.1", + "interpret": "1.4.0", + "liftoff": "4.0.0", + "mute-stdout": "1.0.0", + "pretty-hrtime": "1.0.0", + "typescript": "4.7.4", + "v8flags": "3.2.0", + "yargs": "17.5.1" + } + }, + "@ohos/hvigor-base": { + "version": "1.3.1", + "resolved": "https://repo.harmonyos.com/npm/@ohos/hvigor-base/-/@ohos/hvigor-base-1.3.1.tgz", + "integrity": "sha512-0NBF9DGtrdG5YmEXPOgXokgd/ukIF7EDUqYSwYY0utwUJ08A1ukR+V+dcywrczu2erb80NCWbMyCeZOtrGNPMQ==", + "requires": { + "fs-extra": "10.0.1", + "iconv-lite": "0.6.3", + "json5": "2.2.0", + "lodash": "4.17.21", + "log4js": "6.4.1", + "once": "1.4.0", + "pretty-hrtime": "1.0.0" + } + }, + "@ohos/hvigor-ohos-plugin": { + "version": "1.3.1", + "resolved": "https://repo.harmonyos.com/npm/@ohos/hvigor-ohos-plugin/-/@ohos/hvigor-ohos-plugin-1.3.1.tgz", + "integrity": "sha512-K6Nk2tXNMTJlNf1Ad6nV3+DIQ7iFhBibrelUfHHWqDVlfFUWMxUtpk1Nvs/5RgKIu6O+BJRWJURDgm7mUooAWA==", + "requires": { + "@ohos/hos-sdkmanager-common": "2.0.7", + "@ohos/hvigor-base": "1.3.1", + "@ohos/sdkmanager-common": "2.1.5", + "adm-zip": "0.5.9", + "ajv": "8.10.0", + "deasync": "0.1.28", + "execa": "5.1.1", + "fast-xml-parser": "4.0.3", + "fs-extra": "10.0.1", + "glob": "7.2.0", + "iconv-lite": "0.6.3", + "json5": "2.2.0", + "lodash": "4.17.21", + "pretty-hrtime": "1.0.3", + "resolve-package-path": "4.0.3" + }, + "dependencies": { + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==" + } + } + }, + "@ohos/hypium": { + "version": "1.0.3", + "resolved": "https://repo.harmonyos.com/npm/@ohos/hypium/-/@ohos/hypium-1.0.3.tgz", + "integrity": "sha512-QKh8ngJk1ySbAiKpSTLP5EJIbT8Oja1zV3zwgLD7U9+KX7w2gjNIk3qoP+d13CwpEfaSR3Lxt3exlQLwWSFx3g==" + }, + "@ohos/lottieETS": { + "version": "1.0.3", + "resolved": "https://repo.harmonyos.com/npm/@ohos/lottieETS/-/@ohos/lottieETS-1.0.3.tgz", + "integrity": "sha512-rA9GsLd2MVxHxTYC8VsNbD7ss5b4/03ZqLHYKUWBd005ojkv7UJxAY6UusL3qMuIBOrO0Mrv+V8h2l6bPn8a3g==" + }, + "@ohos/photoview": { + "version": "1.1.0", + "resolved": "https://repo.harmonyos.com/npm/@ohos/photoview/-/@ohos/photoview-1.1.0.tgz", + "integrity": "sha512-XIB7HY9XXVWwB+PTbxqCXzlPi8w0yLDpSFYBQ4Ao20Fu4HlrelDFa8pYZ+th9TnpBRTL37eSAtDjzLaRchIkOg==" + }, + "@ohos/sdkmanager-common": { + "version": "2.1.5", + "resolved": "https://repo.harmonyos.com/npm/@ohos/sdkmanager-common/-/@ohos/sdkmanager-common-2.1.5.tgz", + "integrity": "sha512-Ka6DncGdEkZ5A9/8aR0oea/PL6yZtPudXTalAX+oXCLIGUxUu400TBcETFZ4fsIePbxmWyOSQW5T1VqUYYIdOg==", + "requires": { + "axios": "0.24.0", + "jszip": "^3.7.0" + } + }, + "adm-zip": { + "version": "0.5.9", + "resolved": "https://repo.huaweicloud.com/repository/npm/adm-zip/-/adm-zip-0.5.9.tgz", + "integrity": "sha512-s+3fXLkeeLjZ2kLjCBwQufpI5fuN+kIGBxu6530nVQZGVol0d7Y/M88/xw9HGGUcJjKf8LutN3VPRUBq6N7Ajg==" + }, + "ajv": { + "version": "8.10.0", + "resolved": "http://repo.huaweicloud.com/repository/npm/ajv/-/ajv-8.10.0.tgz", + "integrity": "sha512-bzqAEZOjkrUMl2afH8dknrq5KEk2SrwdBROR+vH1EKVQTqaUbJVPdc/gEdggTMM0Se+s+Ja4ju4TlNcStKl2Hw==", + "requires": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + } + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "array-each": { + "version": "1.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/array-each/-/array-each-1.0.1.tgz", + "integrity": "sha512-zHjL5SZa68hkKHBFBK6DJCTtr9sfTCPCaph/L7tMSLcTFgy+zX7E+6q5UArbtOtMBCtxdICpfTCspRse+ywyXA==" + }, + "array-slice": { + "version": "1.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/array-slice/-/array-slice-1.1.0.tgz", + "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==" + }, + "axios": { + "version": "0.24.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/axios/-/axios-0.24.0.tgz", + "integrity": "sha512-Q6cWsys88HoPgAaFAVUb0WpPk0O8iTeisR9IMqy9G8AbO4NlpVknrnQS03zzF9PGAWgO3cgletO3VjV/P7VztA==", + "requires": { + "follow-redirects": "^1.14.4" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "http://repo.huaweicloud.com/repository/npm/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "bindings": { + "version": "1.5.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "requires": { + "file-uri-to-path": "1.0.0" + } + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "http://repo.huaweicloud.com/repository/npm/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "requires": { + "fill-range": "^7.0.1" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "http://repo.huaweicloud.com/repository/npm/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "dependencies": { + "which": { + "version": "2.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "date-format": { + "version": "4.0.14", + "resolved": "https://repo.huaweicloud.com/repository/npm/date-format/-/date-format-4.0.14.tgz", + "integrity": "sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==" + }, + "deasync": { + "version": "0.1.28", + "resolved": "https://repo.huaweicloud.com/repository/npm/deasync/-/deasync-0.1.28.tgz", + "integrity": "sha512-QqLF6inIDwiATrfROIyQtwOQxjZuek13WRYZ7donU5wJPLoP67MnYxA6QtqdvdBy2mMqv5m3UefBVdJjvevOYg==", + "requires": { + "bindings": "^1.5.0", + "node-addon-api": "^1.7.1" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } + }, + "detect-file": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/detect-file/-/detect-file-1.0.0.tgz", + "integrity": "sha512-DtCOLG98P007x7wiiOmfI0fi3eIKyWiLTGJ2MDnVi/E04lWGbf+JzrRHMm0rgIIZJGtHpKpbVgLWHrv8xXpc3Q==" + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "escalade": { + "version": "3.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==" + }, + "execa": { + "version": "5.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "expand-tilde": { + "version": "2.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/expand-tilde/-/expand-tilde-2.0.2.tgz", + "integrity": "sha512-A5EmesHW6rfnZ9ysHQjPdJRni0SRar0tjtG5MNtm9n5TUvsYU8oozprtRD4AqHxcZWWlVuAmQo2nWKfN9oyjTw==", + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "http://repo.huaweicloud.com/repository/npm/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-xml-parser": { + "version": "4.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/fast-xml-parser/-/fast-xml-parser-4.0.3.tgz", + "integrity": "sha512-xhQbg3a/EYNHwK0cxIG1nZmVkHX/0tWihamn5pU4Mhd9KEVE2ga8ZJiqEUgB2sApElvAATOdMTLjgqIpvYDUkQ==", + "requires": { + "strnum": "^1.0.5" + } + }, + "file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "findup-sync": { + "version": "5.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/findup-sync/-/findup-sync-5.0.0.tgz", + "integrity": "sha512-MzwXju70AuyflbgeOhzvQWAvvQdo1XL0A9bVvlXsYcFEBM87WR4OakL4OfZq+QRmr+duJubio+UtNQCPsVESzQ==", + "requires": { + "detect-file": "^1.0.0", + "is-glob": "^4.0.3", + "micromatch": "^4.0.4", + "resolve-dir": "^1.0.1" + } + }, + "fined": { + "version": "2.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/fined/-/fined-2.0.0.tgz", + "integrity": "sha512-OFRzsL6ZMHz5s0JrsEr+TpdGNCtrVtnuG3x1yzGNiQHT0yaDnXAj8V/lWcpJVrnoDpcwXcASxAZYbuXda2Y82A==", + "requires": { + "expand-tilde": "^2.0.2", + "is-plain-object": "^5.0.0", + "object.defaults": "^1.1.0", + "object.pick": "^1.3.0", + "parse-filepath": "^1.0.2" + } + }, + "flagged-respawn": { + "version": "2.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/flagged-respawn/-/flagged-respawn-2.0.0.tgz", + "integrity": "sha512-Gq/a6YCi8zexmGHMuJwahTGzXlAZAOsbCVKduWXC6TlLCjjFRlExMJc4GC2NYPYZ0r/brw9P7CpRgQmlPVeOoA==" + }, + "flatted": { + "version": "3.2.7", + "resolved": "http://repo.huaweicloud.com/repository/npm/flatted/-/flatted-3.2.7.tgz", + "integrity": "sha512-5nqDSxl8nn5BSNxyR3n4I6eDmbolI6WT+QqR547RwxQapgjQBmtktdP+HTBb/a/zLsbzERTONyUB5pefh5TtjQ==" + }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==" + }, + "for-own": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/for-own/-/for-own-1.0.0.tgz", + "integrity": "sha512-0OABksIGrxKK8K4kynWkQ7y1zounQxP+CWnyclVwj81KW3vlLlGUx57DKGcP/LH216GzqnstnPocF16Nxs0Ycg==", + "requires": { + "for-in": "^1.0.1" + } + }, + "fs-extra": { + "version": "10.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/fs-extra/-/fs-extra-10.0.1.tgz", + "integrity": "sha512-NbdoVMZso2Lsrn/QwLXOy6rm0ufY2zEOKCDzJR/0kBsb0E6qed0P3iYK+Ath3BfvXEeu4JhEtXLgILx5psUfag==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "http://repo.huaweicloud.com/repository/npm/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==" + }, + "glob": { + "version": "7.2.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "global-modules": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/global-modules/-/global-modules-1.0.0.tgz", + "integrity": "sha512-sKzpEkf11GpOFuw0Zzjzmt4B4UZwjOcG757PPvrfhxcLFbq0wpsgpOqxpxtxFiCG4DtG93M6XRVbF2oGdev7bg==", + "requires": { + "global-prefix": "^1.0.1", + "is-windows": "^1.0.1", + "resolve-dir": "^1.0.0" + } + }, + "global-prefix": { + "version": "1.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/global-prefix/-/global-prefix-1.0.2.tgz", + "integrity": "sha512-5lsx1NUDHtSjfg0eHlmYvZKv8/nVqX4ckFbM+FrGcQ+04KWcWFo9P5MxPZYSzUvyzmdTbI7Eix8Q4IbELDqzKg==", + "requires": { + "expand-tilde": "^2.0.2", + "homedir-polyfill": "^1.0.1", + "ini": "^1.3.4", + "is-windows": "^1.0.1", + "which": "^1.2.14" + } + }, + "graceful-fs": { + "version": "4.2.10", + "resolved": "http://repo.huaweicloud.com/repository/npm/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "has": { + "version": "1.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "requires": { + "function-bind": "^1.1.1" + } + }, + "homedir-polyfill": { + "version": "1.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/homedir-polyfill/-/homedir-polyfill-1.0.3.tgz", + "integrity": "sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==", + "requires": { + "parse-passwd": "^1.0.0" + } + }, + "human-signals": { + "version": "2.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==" + }, + "iconv-lite": { + "version": "0.6.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "immediate": { + "version": "3.0.6", + "resolved": "https://repo.huaweicloud.com/repository/npm/immediate/-/immediate-3.0.6.tgz", + "integrity": "sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://repo.huaweicloud.com/repository/npm/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "ini": { + "version": "1.3.8", + "resolved": "https://repo.huaweicloud.com/repository/npm/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + }, + "is-absolute": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-absolute/-/is-absolute-1.0.0.tgz", + "integrity": "sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==", + "requires": { + "is-relative": "^1.0.0", + "is-windows": "^1.0.1" + } + }, + "is-core-module": { + "version": "2.11.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "requires": { + "has": "^1.0.3" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "http://repo.huaweicloud.com/repository/npm/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "http://repo.huaweicloud.com/repository/npm/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==" + }, + "is-relative": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-relative/-/is-relative-1.0.0.tgz", + "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "requires": { + "is-unc-path": "^1.0.0" + } + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==" + }, + "is-unc-path": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-unc-path/-/is-unc-path-1.0.0.tgz", + "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "requires": { + "unc-path-regex": "^0.1.2" + } + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==" + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "http://repo.huaweicloud.com/repository/npm/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "json5": { + "version": "2.2.0", + "resolved": "http://repo.huaweicloud.com/repository/npm/json5/-/json5-2.2.0.tgz", + "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", + "requires": { + "minimist": "^1.2.5" + } + }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, + "jszip": { + "version": "3.10.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/jszip/-/jszip-3.10.1.tgz", + "integrity": "sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==", + "requires": { + "lie": "~3.3.0", + "pako": "~1.0.2", + "readable-stream": "~2.3.6", + "setimmediate": "^1.0.5" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==" + }, + "lie": { + "version": "3.3.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/lie/-/lie-3.3.0.tgz", + "integrity": "sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==", + "requires": { + "immediate": "~3.0.5" + } + }, + "liftoff": { + "version": "4.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/liftoff/-/liftoff-4.0.0.tgz", + "integrity": "sha512-rMGwYF8q7g2XhG2ulBmmJgWv25qBsqRbDn5gH0+wnuyeFt7QBJlHJmtg5qEdn4pN6WVAUMgXnIxytMFRX9c1aA==", + "requires": { + "extend": "^3.0.2", + "findup-sync": "^5.0.0", + "fined": "^2.0.0", + "flagged-respawn": "^2.0.0", + "is-plain-object": "^5.0.0", + "object.map": "^1.0.1", + "rechoir": "^0.8.0", + "resolve": "^1.20.0" + } + }, + "lodash": { + "version": "4.17.21", + "resolved": "http://repo.huaweicloud.com/repository/npm/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "log4js": { + "version": "6.4.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/log4js/-/log4js-6.4.1.tgz", + "integrity": "sha512-iUiYnXqAmNKiIZ1XSAitQ4TmNs8CdZYTAWINARF3LjnsLN8tY5m0vRwd6uuWj/yNY0YHxeZodnbmxKFUOM2rMg==", + "requires": { + "date-format": "^4.0.3", + "debug": "^4.3.3", + "flatted": "^3.2.4", + "rfdc": "^1.3.0", + "streamroller": "^3.0.2" + } + }, + "make-iterator": { + "version": "1.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/make-iterator/-/make-iterator-1.0.1.tgz", + "integrity": "sha512-pxiuXh0iVEq7VM7KMIhs5gxsfxCux2URptUQaXo4iZZJxBAzTPOLE2BumO5dbfVYq/hBJFBR/a1mFDmOx5AGmw==", + "requires": { + "kind-of": "^6.0.2" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==" + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "micromatch": { + "version": "4.0.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", + "requires": { + "braces": "^3.0.2", + "picomatch": "^2.3.1" + } + }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==" + }, + "minimatch": { + "version": "3.1.2", + "resolved": "http://repo.huaweicloud.com/repository/npm/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.7", + "resolved": "https://repo.huaweicloud.com/repository/npm/minimist/-/minimist-1.2.7.tgz", + "integrity": "sha512-bzfL1YUZsP41gmu/qjrEk0Q6i2ix/cVeAhbCbqH9u3zYutS1cLg00qhrD0M2MVdCcx4Sc0UpP2eBWo9rotpq6g==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "mute-stdout": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/mute-stdout/-/mute-stdout-1.0.0.tgz", + "integrity": "sha512-MaSQenn0f9oxIjtCufclpV00MuYTiHaXPbdcfPIM+quMqoa8cXywjHHx4LhhIAZlXqPWMdcUpYviajfmHtHRJw==" + }, + "node-addon-api": { + "version": "1.7.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==" + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "requires": { + "path-key": "^3.0.0" + } + }, + "object.defaults": { + "version": "1.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/object.defaults/-/object.defaults-1.1.0.tgz", + "integrity": "sha512-c/K0mw/F11k4dEUBMW8naXUuBuhxRCfG7W+yFy8EcijU/rSmazOUd1XAEEe6bC0OuXY4HUKjTJv7xbxIMqdxrA==", + "requires": { + "array-each": "^1.0.1", + "array-slice": "^1.0.0", + "for-own": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "object.map": { + "version": "1.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/object.map/-/object.map-1.0.1.tgz", + "integrity": "sha512-3+mAJu2PLfnSVGHwIWubpOFLscJANBKuB/6A4CxBstc4aqwQY0FWcsppuy4jU5GSB95yES5JHSI+33AWuS4k6w==", + "requires": { + "for-own": "^1.0.0", + "make-iterator": "^1.0.0" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==", + "requires": { + "isobject": "^3.0.1" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "requires": { + "mimic-fn": "^2.1.0" + } + }, + "pako": { + "version": "1.0.11", + "resolved": "https://repo.huaweicloud.com/repository/npm/pako/-/pako-1.0.11.tgz", + "integrity": "sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==" + }, + "parse-filepath": { + "version": "1.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/parse-filepath/-/parse-filepath-1.0.2.tgz", + "integrity": "sha512-FwdRXKCohSVeXqwtYonZTXtbGJKrn+HNyWDYVcp5yuJlesTwNH4rsmRZ+GrKAPJ5bLpRxESMeS+Rl0VCHRvB2Q==", + "requires": { + "is-absolute": "^1.0.0", + "map-cache": "^0.2.0", + "path-root": "^0.1.1" + } + }, + "parse-passwd": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/parse-passwd/-/parse-passwd-1.0.0.tgz", + "integrity": "sha512-1Y1A//QUXEZK7YKz+rD9WydcE1+EuPr6ZBgKecAB8tmoW6UFv0NREVJe1p+jRxtThkcbbKkfwIbWJe/IeE6m2Q==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "path-key": { + "version": "3.1.1", + "resolved": "http://repo.huaweicloud.com/repository/npm/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://repo.huaweicloud.com/repository/npm/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-root": { + "version": "0.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/path-root/-/path-root-0.1.1.tgz", + "integrity": "sha512-QLcPegTHF11axjfojBIoDygmS2E3Lf+8+jI6wOVmNVenrKSo3mFdSGiIgdSHenczw3wPtlVMQaFVwGmM7BJdtg==", + "requires": { + "path-root-regex": "^0.1.0" + } + }, + "path-root-regex": { + "version": "0.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/path-root-regex/-/path-root-regex-0.1.2.tgz", + "integrity": "sha512-4GlJ6rZDhQZFE0DPVKh0e9jmZ5egZfxTkp7bcRDuPlJXbAwhxcl2dINPUAsjLdejqaLsCeg8axcLjIbvBjN4pQ==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "http://repo.huaweicloud.com/repository/npm/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "pretty-hrtime": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/pretty-hrtime/-/pretty-hrtime-1.0.0.tgz", + "integrity": "sha512-CU2l5CYUAptUYq/671ajexQfXuxJFwwg0n243Kdkx8bTjeenedsWgu8TGHPm03vLfNtk3aTXgySKPp3Usykudw==" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "punycode": { + "version": "2.1.1", + "resolved": "http://repo.huaweicloud.com/repository/npm/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==" + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://repo.huaweicloud.com/repository/npm/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rechoir": { + "version": "0.8.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", + "requires": { + "resolve": "^1.20.0" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "http://repo.huaweicloud.com/repository/npm/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, + "resolve": { + "version": "1.22.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "requires": { + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-dir": { + "version": "1.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/resolve-dir/-/resolve-dir-1.0.1.tgz", + "integrity": "sha512-R7uiTjECzvOsWSfdM0QKFNBVFcK27aHOUwdvK53BcW8zqnGdYp0Fbj82cy54+2A4P2tFM22J5kRfe1R+lM/1yg==", + "requires": { + "expand-tilde": "^2.0.0", + "global-modules": "^1.0.0" + } + }, + "resolve-package-path": { + "version": "4.0.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/resolve-package-path/-/resolve-package-path-4.0.3.tgz", + "integrity": "sha512-SRpNAPW4kewOaNUt8VPqhJ0UMxawMwzJD8V7m1cJfdSTK9ieZwS6K7Dabsm4bmLFM96Z5Y/UznrpG5kt1im8yA==", + "requires": { + "path-root": "^0.1.1" + } + }, + "rfdc": { + "version": "1.3.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/rfdc/-/rfdc-1.3.0.tgz", + "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "setimmediate": { + "version": "1.0.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "http://repo.huaweicloud.com/repository/npm/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "signal-exit": { + "version": "3.0.7", + "resolved": "https://repo.huaweicloud.com/repository/npm/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "streamroller": { + "version": "3.1.3", + "resolved": "https://repo.huaweicloud.com/repository/npm/streamroller/-/streamroller-3.1.3.tgz", + "integrity": "sha512-CphIJyFx2SALGHeINanjFRKQ4l7x2c+rXYJ4BMq0gd+ZK0gi4VT8b+eHe2wi58x4UayBAKx4xtHpXT/ea1cz8w==", + "requires": { + "date-format": "^4.0.14", + "debug": "^4.3.4", + "fs-extra": "^8.1.0" + }, + "dependencies": { + "fs-extra": { + "version": "8.1.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==" + } + } + }, + "string-width": { + "version": "4.2.3", + "resolved": "http://repo.huaweicloud.com/repository/npm/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "http://repo.huaweicloud.com/repository/npm/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==" + }, + "strnum": { + "version": "1.0.5", + "resolved": "https://repo.huaweicloud.com/repository/npm/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==" + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "typescript": { + "version": "4.7.4", + "resolved": "https://repo.huaweicloud.com/repository/npm/typescript/-/typescript-4.7.4.tgz", + "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==" + }, + "unc-path-regex": { + "version": "0.1.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/unc-path-regex/-/unc-path-regex-0.1.2.tgz", + "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==" + }, + "universalify": { + "version": "2.0.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==" + }, + "uri-js": { + "version": "4.4.1", + "resolved": "http://repo.huaweicloud.com/repository/npm/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "v8flags": { + "version": "3.2.0", + "resolved": "https://repo.huaweicloud.com/repository/npm/v8flags/-/v8flags-3.2.0.tgz", + "integrity": "sha512-mH8etigqMfiGWdeXpaaqGfs6BndypxusHHcv2qSHyZkGEznCd/qAXCWWRzeowtL54147cktFOC4P5y+kl8d8Jg==", + "requires": { + "homedir-polyfill": "^1.0.1" + } + }, + "which": { + "version": "1.3.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "requires": { + "isexe": "^2.0.0" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "http://repo.huaweicloud.com/repository/npm/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://repo.huaweicloud.com/repository/npm/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "y18n": { + "version": "5.0.8", + "resolved": "http://repo.huaweicloud.com/repository/npm/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, + "yargs": { + "version": "17.5.1", + "resolved": "http://repo.huaweicloud.com/repository/npm/yargs/-/yargs-17.5.1.tgz", + "integrity": "sha512-t6YAJcxDkNX7NFYiVtKvWUz8l+PaKTLiL63mJYWR2GnHq2gjEWISzsLp9wg3aY36dY1j+gfIEL3pIF+XlJJfbA==", + "requires": { + "cliui": "^7.0.2", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.0.0" + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://repo.huaweicloud.com/repository/npm/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==" + } + } +} diff --git "a/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/package.json" "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/package.json" new file mode 100644 index 0000000000000000000000000000000000000000..320e94e46bcb7cf2cf1a31780276ecf21d27444a --- /dev/null +++ "b/\343\200\220\346\214\221\346\210\230\350\265\233\347\254\254\344\270\211\346\234\237\343\200\221AtomLabShopping/package.json" @@ -0,0 +1,20 @@ +{ + "license": "ISC", + "devDependencies": {}, + "name": "atomlabshopping", + "ohos": { + "org": "huawei", + "directoryLevel": "project", + "buildTool": "hvigor" + }, + "description": "example description", + "repository": {}, + "version": "1.0.0", + "dependencies": { + "@ohos/hvigor": "1.3.1", + "@ohos/hvigor-ohos-plugin": "1.3.1", + "@ohos/hypium": "1.0.3", + "@ohos/lottieETS": "^1.0.3", + "@ohos/photoview": "^1.1.0" + } +}