Compare commits

...

55 Commits

Author SHA1 Message Date
姜鑫 2c6be366e6 chore(release): 1.0.0-B.28 2 years ago
姜鑫 cb6286d44f style: 🎨 修改 2 years ago
姜鑫 92dfda2ccd chore(release): 1.0.0-B.27 2 years ago
姜鑫 7080ef0209 chore(release): 1.0.0-B.26 2 years ago
姜鑫 f2cbfa8378 refactor: ♻️ 修改 2 years ago
姜鑫 dccd69e44c feat: 🚀 新建杭州永旺顾客心声分支 2 years ago
姜鑫 d4ae9bbedd chore(release): 1.0.0-B.25 2 years ago
姜鑫 76e3d3424d build: 📦️ 去除sourcemap 2 years ago
姜鑫 083ce97df8 chore(release): 1.0.0-B.24 2 years ago
姜鑫 0e1398b5ff refactor: ♻️ 修改 2 years ago
姜鑫 440ee3cf8e chore(release): 1.0.0-B.23 2 years ago
姜鑫 3ac73dcd33 refactor: ♻️ 修改 2 years ago
姜鑫 49401814b5 chore(release): 1.0.0-B.22 2 years ago
姜鑫 1a344b4bf4 feat: 🚀 添加返回首页按钮 2 years ago
姜鑫 47977cae9d chore(release): 1.0.0-B.21 2 years ago
姜鑫 a66c4d65db ci: 🎡 修改淘宝镜像源 2 years ago
姜鑫 13e78e4fe2 chore(release): 1.0.0-B.20 2 years ago
姜鑫 93f556e8d7 refactor: ♻️ 去除顾客心声自动播放 修改自动返回时长为1分钟 2 years ago
姜鑫 75ba7eb1a6 chore(release): 1.0.0-B.19 2 years ago
姜鑫 1966785118 refactor: ♻️ 修改排序方式为竖向 2 years ago
姜鑫 679782ca22 chore(release): 1.0.0-B.18 2 years ago
姜鑫 b937b41e08 Merge branch 'dev' of https://git.1000my.com/project_yongwangyun/YongWang_Customer into dev 2 years ago
姜鑫 368535c03d chore(release): 1.0.0-B.17 2 years ago
姜鑫 e9e0c3f734 fix: 🧩 修复问题文字过长时 超出矩形框 2 years ago
千目管理员 5f9c9ea90e fix: YongWang_Customer 2 years ago
姜鑫 74a7643986 chore(release): 1.0.0-B.16 2 years ago
姜鑫 3e417e4caf chore(release): 1.0.0-B.15 2 years ago
姜鑫 20fa21fa84 chore(release): 1.0.0-B.14 2 years ago
姜鑫 a708abec87 feat: 🚀 间隔5分钟刷新一次数据 2 years ago
姜鑫 df7ef8d9bb chore(release): 1.0.0-B.13 2 years ago
姜鑫 057fef0d52 style: 🎨 提示文案字号修改 2 years ago
姜鑫 1ca219103f chore(release): 1.0.0-B.12 2 years ago
姜鑫 aa544dec91 refactor: ♻️ 回复内容更改为富文本 2 years ago
姜鑫 5602f6f182 chore(release): 1.0.0-B.11 2 years ago
姜鑫 685ea7545f style: 🎨 修改字体大小 2 years ago
姜鑫 ac3d58d348 chore(release): 1.0.0-B.10 3 years ago
姜鑫 32274bc8e1 fix: 🧩 修复图片显示多余 3 years ago
姜鑫 eb74b1ac36 chore(release): 1.0.0-B.9 3 years ago
姜鑫 7cb80ea49b feat: 🚀 添加负责人签字 3 years ago
姜鑫 871d21100f chore(release): 1.0.0-B.8 3 years ago
姜鑫 748fe3fb0a refactor: ♻️ 调整轮播 3 years ago
姜鑫 14729f4bb6 chore(release): 1.0.0-B.7 3 years ago
姜鑫 66f9086f9d refactor: ♻️ 修改初始化时间 3 years ago
姜鑫 541fa7ed3f chore(release): 1.0.0-B.6 3 years ago
姜鑫 c78d5b3155 refactor: ♻️ 轮播时长修改 3 years ago
姜鑫 9ef772e31a chore(release): 1.0.0-B.5 3 years ago
姜鑫 8f6a428fc8 refactor: ♻️ 修改轮播时长 3 years ago
姜鑫 c0e4f9be58 chore(release): 1.0.0-B.4 3 years ago
姜鑫 c6af813654 refactor: ♻️ 大屏顾客心声列表ui重构 3 years ago
姜鑫 9c8aa0e59a chore(release): 1.0.0-B.3 3 years ago
姜鑫 5e2e8c6dbf style: 🎨 样式调优 3 years ago
姜鑫 bb75dd574b chore(release): 1.0.0-B.2 3 years ago
姜鑫 db1650206a refactor: ♻️ 修改mallCode从url地址获取 3 years ago
姜鑫 f2addeb030 chore(release): 1.0.0-B.1 3 years ago
姜鑫 e31a067acf feat: 🚀 commit 3 years ago
  1. 12
      .drone.yml
  2. 4
      .tpl
  3. 100
      CHANGELOG.md
  4. 29
      package-lock.json
  5. 6
      package.json
  6. 2
      public/static/offline/JSON/GetDevCoordinateByIP.json
  7. 4
      public/static/offline/JSON/getConfig.json
  8. BIN
      public/static/qr.png
  9. 52
      src/App.vue
  10. 6
      src/assets/images/a.svg
  11. 5
      src/assets/images/arrow.svg
  12. 13
      src/assets/images/back_index_icon.svg
  13. BIN
      src/assets/images/bg.webp
  14. 3
      src/assets/images/heart.svg
  15. 41
      src/assets/images/logo.svg
  16. 14
      src/assets/images/manager.svg
  17. 6
      src/assets/images/q.svg
  18. 109
      src/components/ScrollList/ScrollList.vue
  19. 55
      src/components/ScrollListItem/ScrollListItem.vue
  20. 42
      src/components/WeatherAndTime/WeatherAndTime.vue
  21. 6
      src/composables/useConfig.ts
  22. 17
      src/composables/useWeather.ts
  23. 2
      src/enums/index.ts
  24. 5
      src/http/api/base/index.ts
  25. 2
      src/http/http.ts
  26. 8
      src/types/customer.d.ts
  27. 3
      vue.config.js

12
.drone.yml

@ -20,7 +20,7 @@ trigger:
volumes:
- name: node
host:
path: /data/drone/node_modules_daoshi/
path: /data/drone/node_modules_YongWang_Customer/
- name: svn
host:
path: /data/drone/svndir/
@ -35,8 +35,8 @@ steps:
settings:
mirror: https://docker.mirrors.ustc.edu.cn
commands:
- npm config set registry https://registry.npm.taobao.org
- npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/
- npm config set registry https://registry.npmmirror.com/
# - npm config set sass_binary_site https://npm.taobao.org/mirrors/node-sass/
- npm install
- npm run build
- ls dist
@ -62,13 +62,13 @@ steps:
svn_password: yanfa
commands:
# zip包
- zip_name=Navigation_h5_V3.0.0_${DRONE_REPO_NAME}_$(cat /drone/src/.tags).zip
- zip_name=Navigation_h5_V3.0.0_${DRONE_REPO_NAME}_HangZhou_QianTang_Customer_$(cat /drone/src/.tags).zip
- cd /drone/src/dist
- zip -q -r $zip_name ./*
- mv $zip_name ../
# svn目录定义 开头和结尾不能有/,且不能出现中文乱码,复制地址时建议只复制02项目定制后的目录,会影响到变量取值
- svndir="2022研发/Prd007_智能导视/02项目定制/BJ006北京京西大悦城/导视前端"
- svndir="2022研发/Prd007_智能导视/02项目定制/XT001永旺集团/前端导视"
# - svn_reponame=${svndir%%/*}
# - svn_path=${svndir##*/}
# - echo 仓库内部子路径取值 $svn_path
@ -104,7 +104,7 @@ steps:
image: lddsb/drone-dingtalk-message
failure: ignore
settings:
token: 'your dingTalk robot token'
token: 9f380535bacb93870b721a596da85cfd344734481e73095a93b9ad5589659895
type: markdown
message_color: true
message_pic: true

4
.tpl

@ -1,9 +1,9 @@
<font color=[TPL_STATUS_COLOR] size="3">
项目svn地址:http://svn.1000my.com/svn/2022研发/Prd007_智能导视/02项目定制/
项目svn地址:http://svn.1000my.com/svn/2022研发/Prd007_智能导视/02项目定制/XT001永旺集团/前端导视
</font>
<font color=[TPL_STATUS_COLOR] size="3">
项目git地址:https://git.1000my.com/
项目git地址:https://git.1000my.com/project_yongwangyun/YongWang_Customer.git
</font>
<font color=[TPL_STATUS_COLOR] size="3">

100
CHANGELOG.md

@ -0,0 +1,100 @@
# Changelog
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
## [1.0.0-B.28](https://git.1000my.com/project_yongwangyun/YongWang_Customer/compare/v1.0.0-B.27...v1.0.0-B.28) (2024-05-08)
## [1.0.0-B.27](https://git.1000my.com/project_yongwangyun/YongWang_Customer/compare/v1.0.0-B.26...v1.0.0-B.27) (2024-05-07)
## [1.0.0-B.26](https://git.1000my.com/project_yongwangyun/YongWang_Customer/compare/v1.0.0-B.25...v1.0.0-B.26) (2024-05-07)
### Features
* 🚀 新建杭州永旺顾客心声分支 ([dccd69e](https://git.1000my.com/project_yongwangyun/YongWang_Customer/commit/dccd69e44ce6568313ca5b4e29790a062eec2406))
## [1.0.0-B.25](https://git.1000my.com/project_yongwangyun/YongWang_Customer/compare/v1.0.0-B.24...v1.0.0-B.25) (2024-04-01)
## [1.0.0-B.24](https://git.1000my.com/project_yongwangyun/YongWang_Customer/compare/v1.0.0-B.23...v1.0.0-B.24) (2024-03-28)
## [1.0.0-B.23](https://git.1000my.com/project_yongwangyun/YongWang_Customer/compare/v1.0.0-B.22...v1.0.0-B.23) (2024-03-28)
## [1.0.0-B.22](https://git.1000my.com/project_yongwangyun/YongWang_Customer/compare/v1.0.0-B.21...v1.0.0-B.22) (2024-03-28)
### Features
* 🚀 添加返回首页按钮 ([1a344b4](https://git.1000my.com/project_yongwangyun/YongWang_Customer/commit/1a344b4bf4e2e00446f9673b6b7b73ee8676e563))
## [1.0.0-B.21](https://git.1000my.com/project_yongwangyun/YongWang_Customer/compare/v1.0.0-B.20...v1.0.0-B.21) (2024-03-25)
## [1.0.0-B.20](https://git.1000my.com/project_yongwangyun/YongWang_Customer/compare/v1.0.0-B.19...v1.0.0-B.20) (2024-03-25)
## [1.0.0-B.19](https://git.1000my.com/project_yongwangyun/YongWang_Customer/compare/v1.0.0-B.18...v1.0.0-B.19) (2024-01-16)
## [1.0.0-B.18](https://git.1000my.com/project_yongwangyun/YongWang_Customer/compare/v1.0.0-B.17...v1.0.0-B.18) (2024-01-16)
### Bug Fixes
* YongWang_Customer ([5f9c9ea](https://git.1000my.com/project_yongwangyun/YongWang_Customer/commit/5f9c9ea90ebbd29ccf5dcbb77a522fc18f3ade5f))
## [1.0.0-B.17](https://git.1000my.com/project_yongwangyun/YongWang_Customer/compare/v1.0.0-B.16...v1.0.0-B.17) (2024-01-16)
### Bug Fixes
* 🧩 修复问题文字过长时 超出矩形框 ([e9e0c3f](https://git.1000my.com/project_yongwangyun/YongWang_Customer/commit/e9e0c3f7342c19a3f778133117343c68ba97ff0a))
## [1.0.0-B.16](https://git.1000my.com/project_yongwangyun/YongWang_Customer/compare/v1.0.0-B.15...v1.0.0-B.16) (2024-01-05)
## [1.0.0-B.15](https://git.1000my.com/project_yongwangyun/YongWang_Customer/compare/v1.0.0-B.14...v1.0.0-B.15) (2024-01-05)
## [1.0.0-B.14](https://git.1000my.com/project_yongwangyun/YongWang_Customer/compare/v1.0.0-B.13...v1.0.0-B.14) (2024-01-05)
### Features
* 🚀 间隔5分钟刷新一次数据 ([a708abe](https://git.1000my.com/project_yongwangyun/YongWang_Customer/commit/a708abec873464a8ed23a48a6c7711b2675f5614))
## [1.0.0-B.13](https://git.1000my.com/project_yongwangyun/YongWang_Customer/compare/v1.0.0-B.12...v1.0.0-B.13) (2024-01-03)
## [1.0.0-B.12](https://git.1000my.com/project_yongwangyun/YongWang_Customer/compare/v1.0.0-B.11...v1.0.0-B.12) (2024-01-03)
## [1.0.0-B.11](https://git.1000my.com/project_yongwangyun/YongWang_Customer/compare/v1.0.0-B.10...v1.0.0-B.11) (2023-12-29)
## [1.0.0-B.10](https://git.1000my.com/project_yongwangyun/YongWang_Customer/compare/v1.0.0-B.9...v1.0.0-B.10) (2023-11-17)
### Bug Fixes
* 🧩 修复图片显示多余 ([32274bc](https://git.1000my.com/project_yongwangyun/YongWang_Customer/commit/32274bc8e1d1192108f82cc86f867e5fc9671ec4))
## [1.0.0-B.9](https://git.1000my.com/project_yongwangyun/YongWang_Customer/compare/v1.0.0-B.8...v1.0.0-B.9) (2023-11-17)
### Features
* 🚀 添加负责人签字 ([7cb80ea](https://git.1000my.com/project_yongwangyun/YongWang_Customer/commit/7cb80ea49bb70a0676d3cbf3265db9e503314739))
## [1.0.0-B.8](https://git.1000my.com/project_yongwangyun/YongWang_Customer/compare/v1.0.0-B.7...v1.0.0-B.8) (2023-11-08)
## [1.0.0-B.7](https://git.1000my.com/project_yongwangyun/YongWang_Customer/compare/v1.0.0-B.6...v1.0.0-B.7) (2023-11-08)
## [1.0.0-B.6](https://git.1000my.com/project_yongwangyun/YongWang_Customer/compare/v1.0.0-B.5...v1.0.0-B.6) (2023-11-08)
## [1.0.0-B.5](https://git.1000my.com/project_yongwangyun/YongWang_Customer/compare/v1.0.0-B.4...v1.0.0-B.5) (2023-11-08)
## [1.0.0-B.4](https://git.1000my.com/project_yongwangyun/YongWang_Customer/compare/v1.0.0-B.3...v1.0.0-B.4) (2023-11-08)
## [1.0.0-B.3](https://git.1000my.com/project_yongwangyun/YongWang_Customer/compare/v1.0.0-B.2...v1.0.0-B.3) (2023-10-30)
## [1.0.0-B.2](https://git.1000my.com/project_yongwangyun/YongWang_Customer/compare/v1.0.0-B.1...v1.0.0-B.2) (2023-10-27)
## 1.0.0-B.1 (2023-10-25)
### Features
* 🚀 commit ([e31a067](https://git.1000my.com/project_yongwangyun/YongWang_Customer/commit/e31a067acf66fdbc0d41e9ec04905b066ee3325d))
* 🚀 first commit ([26b3c78](https://git.1000my.com/project_yongwangyun/YongWang_Customer/commit/26b3c78b13b9e7b083bd918a77aceba1fc257355))

29
package-lock.json

@ -1,6 +1,6 @@
{
"name": "vue_cli_ts",
"version": "0.1.0",
"version": "1.0.0-B.28",
"lockfileVersion": 1,
"requires": true,
"dependencies": {
@ -5858,6 +5858,14 @@
"entities": "^2.0.0"
}
},
"dom7": {
"version": "4.0.6",
"resolved": "https://registry.npmmirror.com/dom7/-/dom7-4.0.6.tgz",
"integrity": "sha512-emjdpPLhpNubapLFdjNL9tP06Sr+GZkrIHEXLWvOGsytACUrkbeIdjO5g77m00BrHTznnlcNqgmn7pCN192TBA==",
"requires": {
"ssr-window": "^4.0.0"
}
},
"domelementtype": {
"version": "2.3.0",
"resolved": "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz",
@ -9290,6 +9298,11 @@
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"dev": true
},
"lodash-es": {
"version": "4.17.21",
"resolved": "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz",
"integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw=="
},
"lodash.camelcase": {
"version": "4.3.0",
"resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz",
@ -12235,6 +12248,11 @@
"integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==",
"dev": true
},
"ssr-window": {
"version": "4.0.2",
"resolved": "https://registry.npmmirror.com/ssr-window/-/ssr-window-4.0.2.tgz",
"integrity": "sha512-ISv/Ch+ig7SOtw7G2+qkwfVASzazUnvlDTwypdLoPoySv+6MqlOV10VwPSE6EWkGjhW50lUmghPmpYZXMu/+AQ=="
},
"ssri": {
"version": "8.0.1",
"resolved": "https://registry.npmmirror.com/ssri/-/ssri-8.0.1.tgz",
@ -12885,6 +12903,15 @@
}
}
},
"swiper": {
"version": "8.4.5",
"resolved": "https://registry.npmmirror.com/swiper/-/swiper-8.4.5.tgz",
"integrity": "sha512-zveyEFBBv4q1sVkbJHnuH4xCtarKieavJ4SxP0QEHvdpPLJRuD7j/Xg38IVVLbp7Db6qrPsLUePvxohYx39Agw==",
"requires": {
"dom7": "^4.0.4",
"ssr-window": "^4.0.2"
}
},
"table": {
"version": "6.8.1",
"resolved": "https://registry.npmmirror.com/table/-/table-6.8.1.tgz",

6
package.json

@ -1,6 +1,6 @@
{
"name": "vue_cli_ts",
"version": "0.1.0",
"version": "1.0.0-B.28",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
@ -22,7 +22,9 @@
"@better-scroll/scroll-bar": "^2.5.0",
"axios": "^1.3.3",
"core-js": "^3.8.3",
"lodash-es": "^4.17.21",
"pinia": "^2.0.30",
"swiper": "^8.4.5",
"vue": "^3.2.13"
},
"devDependencies": {
@ -83,7 +85,7 @@
},
"standard-version": {
"scripts": {
"posttag": "git push --follow-tags origin dev"
"posttag": "git push --follow-tags origin HangZhou"
}
}
}

2
public/static/offline/JSON/GetDevCoordinateByIP.json

@ -8,7 +8,7 @@
"xaxis": "93",
"yaxis": "93",
"angle": "0",
"mallCode": "79b73dae-5d30-4f2f-ad07-d6bc648fb6dfhh",
"mallCode": "6686390f-1331-4275-81b7-0561545957d1",
"buildingCode": "79b73dae-5d30-4f2f-ad07-d6bc648fb66e",
"buildingName": "A",
"buildingOrder": 0,

4
public/static/offline/JSON/getConfig.json

@ -1,8 +1,8 @@
{
"code": "200",
"data": {
"smallUrl": "http://121.199.30.36:8012/daoshi",
"bigUrl": "http://121.199.30.36:8012/mall",
"smallUrl": "http://192.168.1.130:8012/daoshi",
"bigUrl": "http://192.168.1.130:8012/Mall",
"baseUrl": "/static/offline"
},
"msg": ""

BIN
public/static/qr.png

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

52
src/App.vue

@ -1,20 +1,66 @@
<template>
<WeatherAndTime />
<ScrollList />
<WeatherAndTime :mall-code="mallCode" />
<ScrollList ref="scrollList" :customer-list="customerList" :mall-code="mallCode" />
<img src="./assets/images/back_index_icon.svg" class="fixed bottom-11 left-[52px] w-28 h-12 z-100" alt="" @click="back" />
</template>
<script setup lang="ts">
import { onMounted, onBeforeUnmount, ref, toRefs, shallowRef } from 'vue'
import { useRootStore } from '@/store/root'
import { getCustomerList } from '@/http/api/base'
import { HTTP_CODE } from '@/enums'
import WeatherAndTime from '@/components/WeatherAndTime/WeatherAndTime.vue'
import ScrollList from '@/components/ScrollList/ScrollList.vue'
const store = useRootStore()
const { config } = toRefs(store)
const scrollList = ref<InstanceType<typeof ScrollList> | null>(null)
const mallCode = ref<string>('')
const pageIndex = ref(1)
const customerList = shallowRef<Customer[]>([])
function _getCustomerList() {
const params = {
pageIndex: pageIndex.value,
pageSize: 1000,
mallCode: mallCode.value
}
getCustomerList(config.value.smallUrl, params).then(({ code, data }) => {
if (code === HTTP_CODE.ERR_OK) {
customerList.value = data.list
}
})
}
let timer: any
onMounted(() => {
const href = window.location.href
mallCode.value = href.split('=')[1]
_getCustomerList()
timer = setInterval(() => {
_getCustomerList()
scrollList.value?.scroll()
}, 1000 * 60)
})
onBeforeUnmount(() => {
clearInterval(timer)
})
function back() {
scrollList.value?.scroll()
}
</script>
<style>
html,
body,
#app {
overflow: hidden;
width: 1920px;
height: 1080px;
}
#app {
background: #000;
background: url('./assets/images/bg.webp') no-repeat center center;
background-size: 1920px 1080px;
}
</style>

6
src/assets/images/a.svg

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="18" viewBox="0 0 16 18" fill="none">
<path
d="M0.535889 17.8438L6.39189 0.155762H9.60789L15.4639 17.8438H12.5119L11.0239 12.8278H4.87989L3.39189 17.8438H0.535889ZM5.55189 10.6198H10.3519L9.65589 8.24376C9.07989 6.32376 8.55189 4.35576 7.99989 2.36376H7.90389C7.37589 4.37976 6.82389 6.32376 6.24789 8.24376L5.55189 10.6198Z"
fill="#808080"
/>
</svg>

After

Width:  |  Height:  |  Size: 470 B

5
src/assets/images/arrow.svg

@ -0,0 +1,5 @@
<svg width="48" height="48" viewBox="0 0 48 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="48" height="48" rx="24" fill="white"/>
<rect x="3" y="3" width="42" height="42" rx="21" stroke="#C70082"/>
<path d="M35 24L24.75 34.25L20.5074 34.25L29.2574 25.5L13.3756 25.5L13.3756 22.5L29.2574 22.5L20.5074 13.75L24.75 13.75L35 24Z" fill="#C70082"/>
</svg>

After

Width:  |  Height:  |  Size: 368 B

13
src/assets/images/back_index_icon.svg

@ -0,0 +1,13 @@
<svg width="112" height="48" viewBox="0 0 112 48" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="112" height="48" rx="24" fill="#C70082"/>
<path d="M42.918 17.66C43.842 18.388 44.626 19.13 45.27 19.858L44.318 20.796C43.772 20.096 43.002 19.34 41.994 18.528L42.918 17.66ZM50.912 30.19C50.156 30.19 49.344 30.176 48.462 30.162C47.566 30.148 46.838 30.064 46.264 29.924C45.704 29.756 45.228 29.434 44.808 28.958C44.626 28.72 44.458 28.608 44.29 28.608C43.996 28.608 43.492 29.238 42.778 30.498L41.798 29.588C42.498 28.454 43.142 27.74 43.702 27.46V23.498H41.812V22.266H44.948V27.586C45.004 27.642 45.074 27.712 45.13 27.782C45.466 28.174 45.788 28.454 46.124 28.636C46.53 28.846 47.146 28.972 47.958 29C48.742 29.014 49.68 29.028 50.744 29.028C51.43 29.028 52.13 29.014 52.83 29C53.53 28.972 54.076 28.958 54.454 28.93L54.16 30.19H50.912ZM53.166 17.604L53.824 18.738C52.032 19.186 50.044 19.438 47.846 19.508L47.86 20.81H53.656V21.748C53.292 23.008 52.76 24.128 52.088 25.122C52.872 25.822 53.586 26.55 54.244 27.306L53.348 28.37C52.732 27.586 52.046 26.844 51.29 26.13C50.436 27.068 49.414 27.88 48.224 28.552L47.412 27.488C48.56 26.872 49.526 26.13 50.324 25.262C49.61 24.646 48.854 24.058 48.056 23.498L48.826 22.56C49.638 23.12 50.394 23.694 51.122 24.282C51.626 23.554 52.046 22.77 52.354 21.93H47.846C47.762 24.632 47.314 26.676 46.502 28.048L45.298 27.46C46.138 26.06 46.572 24.1 46.614 21.58V18.346C49.19 18.29 51.374 18.038 53.166 17.604ZM60.214 21.37H65.814V26.55H60.214V21.37ZM64.554 25.444V22.49H61.446V25.444H64.554ZM68.74 18.304V30.176H67.452V29.686H58.548V30.176H57.26V18.304H68.74ZM58.548 28.51H67.452V19.48H58.548V28.51ZM82.774 21.678V30.456H81.458V29.952H74.542V30.456H73.226V21.678H77.02C77.104 21.314 77.16 20.936 77.216 20.544H71.756V19.256H75.13C74.934 18.78 74.71 18.346 74.458 17.926L75.76 17.436C76.04 17.94 76.292 18.556 76.53 19.256H79.4C79.694 18.668 79.96 18.052 80.184 17.408L81.5 17.87C81.304 18.374 81.094 18.836 80.87 19.256H84.244V20.544H78.63C78.56 20.936 78.476 21.314 78.392 21.678H82.774ZM74.542 28.748H81.458V27.544H74.542V28.748ZM74.542 26.382H81.458V25.206H74.542V26.382ZM74.542 24.058H81.458V22.882H74.542V24.058ZM97.48 20.488V27.278H96.136V21.79H89.808V27.292H88.464V20.488H92.034C92.118 20.082 92.202 19.676 92.258 19.256H86.798V17.996H99.202V19.256H93.7C93.616 19.676 93.532 20.096 93.42 20.488H97.48ZM94.022 27.124C95.814 27.698 97.452 28.398 98.922 29.224L98.096 30.484C96.528 29.532 94.932 28.776 93.294 28.23L94.022 27.124ZM92.328 22.462H93.672V24.688C93.588 26.242 93.084 27.488 92.16 28.426C91.264 29.294 89.78 29.952 87.736 30.428L86.98 29.238C89.024 28.79 90.41 28.23 91.138 27.544C91.866 26.816 92.258 25.864 92.328 24.688V22.462Z" fill="white"/>
<g clip-path="url(#clip0_1162_5572)">
<path d="M18.828 18.9998L21.364 21.5358L19.95 22.9498L15 17.9998L19.95 13.0498L21.364 14.4638L18.828 16.9998H26C28.1217 16.9998 30.1566 17.8427 31.6569 19.3429C33.1571 20.8432 34 22.8781 34 24.9998C34 27.1215 33.1571 29.1564 31.6569 30.6567C30.1566 32.1569 28.1217 32.9998 26 32.9998H17V30.9998H26C27.5913 30.9998 29.1174 30.3677 30.2426 29.2424C31.3679 28.1172 32 26.5911 32 24.9998C32 23.4085 31.3679 21.8824 30.2426 20.7572C29.1174 19.6319 27.5913 18.9998 26 18.9998H18.828Z" fill="white"/>
</g>
<rect x="3" y="3" width="106" height="42" rx="20" stroke="white"/>
<defs>
<clipPath id="clip0_1162_5572">
<rect width="24" height="24" fill="white" transform="translate(13 12)"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.4 KiB

BIN
src/assets/images/bg.webp

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

3
src/assets/images/heart.svg

@ -0,0 +1,3 @@
<svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M20.0014 7.5483C23.9163 4.0333 29.9663 4.14997 33.738 7.9283C37.508 11.7083 37.638 17.7283 34.1313 21.655L19.998 35.8083L5.86802 21.655C2.36135 17.7283 2.49302 11.6983 6.26135 7.9283C10.0364 4.15497 16.0747 4.0283 20.0014 7.5483ZM31.378 10.2833C28.878 7.77997 24.8447 7.6783 22.228 10.0283L20.003 12.025L17.7764 10.03C15.1514 7.67663 11.1264 7.77997 8.61968 10.2866C6.13635 12.77 6.01135 16.745 8.29968 19.3716L19.9997 31.09L31.6997 19.3733C33.9897 16.745 33.8647 12.775 31.378 10.2833Z" fill="black" fill-opacity="0.6"/>
</svg>

After

Width:  |  Height:  |  Size: 634 B

41
src/assets/images/logo.svg

@ -0,0 +1,41 @@
<svg width="240" height="62" viewBox="0 0 240 62" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_59_36879)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M48.8672 17.0752C48.8672 7.8103 56.3219 0.549316 65.8469 0.549316C75.4177 0.549316 82.9081 7.8001 82.9081 17.0752C82.9081 26.3503 75.3718 33.6062 65.8469 33.6062C56.3219 33.6062 48.8672 26.3401 48.8672 17.0752ZM53.028 17.065C53.028 24.1934 58.8052 29.9757 65.9336 29.9757C73.0671 29.9757 78.8493 24.1934 78.8493 17.065C78.8493 9.93659 73.062 4.15431 65.9336 4.15431C58.8052 4.15431 53.028 9.93659 53.028 17.065Z" fill="#B60081"/>
<path d="M156.32 4.35523H156.233L146.106 32.8638H141.981L131.855 4.35523H131.768V32.8638H127.383V1.19385H135.23L144.347 27.2906H144.434L153.388 1.19385H160.705V32.8587H156.32V4.35523Z" fill="#B60081"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M163.789 32.8638L163.791 32.8587H168.307L171.723 24.6187H186.413L189.835 32.8587H194.613L181.809 1.19385H177.123L163.791 32.8587H163.789V32.8638ZM173.217 20.8556H185.011L179.27 5.5382L173.217 20.8556Z" fill="#B60081"/>
<path d="M197.812 1.19385V32.8587H216.929V29.0905H202.193V1.19385H197.812Z" fill="#B60081"/>
<path d="M220.904 32.8638V32.8587H240.015V29.0905H225.284V1.19385H220.904V32.8587H220.898L220.904 32.8638Z" fill="#B60081"/>
<path d="M4.65539 32.8858H0L23.9602 1.27197H47.0128V4.98915H32.2614V29.1788H47.3647V32.9011H28.1465V1.89915L4.65539 32.8858Z" fill="#B60081"/>
<path d="M106.537 1.27197V25.4515L89.1906 1.27197H86.0547V32.9011H89.9401V8.71652L107.328 32.9011H110.418V1.27197H106.537Z" fill="#B60081"/>
<path d="M52.9468 58.546C53.3752 58.2298 53.7678 57.8066 54.1247 57.2763C54.4816 56.7409 54.7621 56.2361 54.9609 55.7619C55.1649 55.2877 55.2873 54.8594 55.3332 54.4821L55.3842 54.0792H53.4261L52.0953 54.1149V52.4527L53.2987 52.4832H55.9349L57.2606 52.4527C57.2453 52.8351 57.23 53.1869 57.2096 53.4979C57.1892 53.809 57.1331 54.2322 57.0413 54.7625C56.9496 55.2928 56.8017 55.8027 56.5977 56.2922C56.3938 56.7817 56.1541 57.2508 55.8737 57.7097C55.5983 58.1635 55.3332 58.5409 55.0833 58.8468C54.8335 59.1527 54.5173 59.4791 54.14 59.836C53.7627 60.1878 53.3802 60.4938 53.0029 60.7487C52.6664 60.2337 52.3553 59.8615 52.0596 59.6321L51.6211 59.2802C52.08 59.1069 52.5236 58.8621 52.9519 58.546H52.9468Z" fill="#231815"/>
<path d="M54.4816 49.8114L54.4918 49.8118V51.5093L55.787 51.4634H58.0611V58.597C58.0611 58.8213 58.0509 58.9641 58.0407 59.0202C58.0254 59.0814 57.9999 59.1272 57.9592 59.168C57.8623 59.2649 57.3473 59.27 56.4193 59.1731L56.6742 59.734C56.7711 59.9533 56.8425 60.1725 56.8782 60.3867C56.9139 60.6009 56.9445 60.7895 56.9699 60.9527C57.3626 60.9782 57.847 60.9527 58.4181 60.8762C58.9892 60.8048 59.3512 60.6722 59.5092 60.4887C59.6673 60.3051 59.7438 60.0808 59.7438 59.8105V54.8951C60.1415 55.6905 60.5545 56.3942 60.9829 57.0061C61.4112 57.623 61.8956 58.1737 62.4361 58.6581C62.9766 59.1476 63.3896 59.4893 63.67 59.6881C63.9505 59.887 64.3533 60.1369 64.8785 60.4428C65.1946 59.8564 65.4394 59.4689 65.6077 59.2751C65.7708 59.0814 65.9238 58.908 66.0666 58.7601C65.6128 58.5868 65.2099 58.3981 64.8581 58.189C64.5063 57.98 64.0627 57.6332 63.5273 57.1437C62.9919 56.6542 62.4565 56.0525 61.916 55.3336C63.0531 54.0282 64.1646 52.6413 65.2558 51.1626C64.44 50.6833 63.9046 50.3315 63.6394 50.1173C63.3539 50.6323 63.0123 51.1779 62.6196 51.7541C62.227 52.3354 61.6865 53.0033 61.0033 53.7733L60.733 53.2889C60.6412 53.1308 60.5138 52.8504 60.3506 52.4476C60.1874 52.0447 60.0599 51.6827 59.9682 51.3564C59.8713 51.0249 59.8152 50.7394 59.7897 50.4895C59.7642 50.2397 59.7438 50.0204 59.7285 49.8369L58.0509 49.8726H55.8584L54.4918 49.8118V49.8012L54.4816 49.8114Z" fill="#231815"/>
<path d="M56.5773 46.4868C57.077 46.6653 58.7444 47.267 61.5743 48.2919C61.2888 48.9241 61.1154 49.3372 61.0492 49.5258L60.8452 50.102C59.856 49.6431 58.6628 49.1536 57.2504 48.6386L56.0011 48.1899L55.3434 47.9451C55.7972 47.4913 56.2051 47.0069 56.5722 46.4919L56.5773 46.4868Z" fill="#231815"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M67.3242 58.999L67.3701 57.301V49.6219L67.3242 48.0565L68.6143 48.0973H71.1077L72.2906 48.0565L72.2295 49.6372V57.301L72.2906 58.8868H75.7784V54.5985H74.2589L72.9127 54.6495V52.8394L74.2385 52.9006H75.7784V49.2395H74.0039L72.6425 49.3007V47.5415L74.0396 47.5925H79.3018L80.9182 47.5415V49.3007L79.2865 49.2395H77.5936V52.9006H79.2151L80.6071 52.8394V54.6495L79.2304 54.5985H77.5936V58.8868H79.5414L81.1629 58.8358V60.6459L79.5159 60.5848H73.7694L72.102 60.6459V59.0296H70.506V58.693H69.0783V58.999H67.3242ZM69.0783 52.5844H70.506V49.6576H69.0783V52.5844ZM69.0783 57.0817H70.506V54.2467H69.0783V57.0817Z" fill="#231815"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M84.0765 50.1969H84.617V50.202C84.3468 50.5844 84.0459 50.9362 83.7145 51.2524C83.3831 51.5685 82.9344 51.849 82.3633 52.0886L82.7355 52.6189C82.8936 52.8382 83.0669 53.2206 83.2505 53.7713L83.8114 53.3379C84.1173 53.1033 84.6629 52.6036 85.4329 51.8235V52.3691L85.3819 53.5265H87.2226L87.1767 52.3691V51.2371L87.5796 51.6705C87.707 51.8031 87.9212 52.1141 88.2322 52.5985L88.4566 52.313C88.5586 52.1855 88.839 51.9306 89.303 51.5583L88.9818 51.1453C88.9563 51.1198 88.6554 50.8037 88.0844 50.1969L89.252 50.2479V48.5499L88.3036 48.6009H87.1818V47.9482L87.2277 46.8774H85.387L85.438 47.9482V48.6009H84.0765L82.812 48.5499V50.2479L84.0765 50.1969ZM87.4776 50.615C87.3909 50.666 87.2889 50.7221 87.1818 50.7782V50.1969H87.962C87.7274 50.4212 87.5643 50.5589 87.4776 50.615Z" fill="#231815"/>
<path d="M85.8663 59.1049C85.1065 59.1456 84.5711 59.1609 84.2601 59.1456L84.2703 59.1558C83.9593 59.1405 83.5564 59.1049 83.0567 59.0437L83.3423 59.7473C83.4341 59.9819 83.5106 60.3592 83.5717 60.8946C85.8714 60.8079 87.4674 60.6397 88.3546 60.3898C89.2469 60.1349 90.0169 59.8442 90.6798 59.5128C91.3375 59.1813 91.9137 58.8295 92.3981 58.4624C92.8825 58.0952 93.3975 57.6261 93.9431 57.0602C94.4836 56.4942 94.8303 56.0862 94.9731 55.8415C95.1159 55.5916 95.2383 55.3571 95.3453 55.1327L94.6876 54.2098H89.0838C89.2571 53.9753 89.4254 53.7407 89.5835 53.5061C88.8492 53.2767 88.4056 53.1186 88.2526 53.037C88.0997 52.9555 87.9365 52.8586 87.7682 52.7362C87.5949 53.0778 87.3705 53.4348 87.0952 53.7917C86.8249 54.1486 86.3609 54.5667 85.7133 55.046C85.0657 55.5254 84.1989 55.8925 83.1179 56.1525L83.5004 56.6318C83.6278 56.795 83.8063 57.1723 84.0307 57.7638C84.9332 57.3865 85.5502 57.1009 85.8918 56.897C86.2283 56.693 86.7484 56.331 87.447 55.8058H92.7296C92.3012 56.3157 91.8525 56.7644 91.3732 57.1468C90.8939 57.5293 90.3687 57.8556 89.7976 58.1309C89.609 57.876 89.3744 57.5599 89.1042 57.1978C88.8934 56.9168 88.6976 56.6478 88.5122 56.393C88.4555 56.3151 88.3993 56.2379 88.3444 56.1627C87.8549 56.5044 87.3603 56.7848 86.8555 57.0092L87.3807 57.6006C87.5643 57.8046 87.8141 58.1666 88.1455 58.6918L87.5898 58.855C87.1971 58.9774 86.626 59.0641 85.8663 59.1049Z" fill="#231815"/>
<path d="M89.4509 51.8541C89.2673 51.9458 89.0685 52.0325 88.8594 52.109H88.8441C89.201 52.5577 89.4203 52.8688 89.5121 53.037C89.6019 53.2016 89.6868 53.3809 89.7763 53.57L89.7823 53.5826C90.8276 52.7821 91.4089 52.3334 91.5262 52.2365V52.573L91.465 53.6489H93.321L93.27 52.5577V51.441L93.6525 51.9509C93.7901 52.1447 94.0451 52.3997 94.4224 52.7158C94.7997 53.0268 95.2638 53.343 95.8195 53.6642C96.0541 53.1237 96.2122 52.7821 96.2989 52.6444C96.3855 52.5067 96.5181 52.3283 96.6966 52.109C96.0082 51.8286 95.4932 51.5226 95.1465 51.1861C94.8048 50.8445 94.504 50.513 94.2491 50.1918H95.172L96.1969 50.2428V48.5448L95.172 48.5958H93.2803V47.9431L93.3312 46.8927H91.4752L91.5364 47.9431V48.5958H90.6696L89.5937 48.5448V50.2428L90.7613 50.1918H91.1591C91.0979 50.2428 91.001 50.3754 90.8684 50.5895C90.7358 50.8037 90.5166 51.0433 90.2004 51.3136C89.8843 51.5838 89.6345 51.7674 89.4509 51.8541Z" fill="#231815"/>
<path d="M103.443 55.9921C103.05 56.6091 102.693 57.119 102.367 57.5167C102.046 57.9145 101.791 58.2204 101.597 58.4244C101.403 58.6283 101.097 58.9496 100.669 59.3728C100.24 59.796 99.9906 60.0357 99.9193 60.0917L99.3074 60.5863C99.1748 60.4436 99.0473 60.311 98.9249 60.1886C98.8077 60.0662 98.4303 59.7348 97.793 59.1943C98.0887 59.0362 98.3437 58.8833 98.5629 58.7405C98.7822 58.5926 99.0932 58.3275 99.5011 57.9298C99.9091 57.5371 100.302 57.0986 100.689 56.6193C101.072 56.1349 101.316 55.7678 101.423 55.5128L101.694 54.901C102.209 55.2732 102.79 55.6403 103.443 55.9921Z" fill="#231815"/>
<path d="M100.052 47.8592C100.266 47.8745 100.679 47.8694 101.286 47.8541C102.316 47.8235 103.32 47.7827 104.294 47.7267C105.268 47.6706 106.268 47.5431 107.287 47.3493C108.312 47.1556 108.914 47.0077 109.108 46.921L109.893 46.5845C110.046 46.8292 110.168 47.0077 110.25 47.125L110.857 47.9612L111.214 48.4609C110.051 48.7006 109.036 48.8841 108.169 49.0167C107.303 49.1442 106.257 49.2615 105.028 49.3634C103.8 49.4654 102.484 49.547 101.072 49.6082L100.786 52.9378H104.141V51.1991L104.09 49.6796H106.058L106.007 51.2348V52.9327H109.495L111.489 52.8817V54.8194L109.521 54.7582H106.013V59.6583C106.013 59.9694 105.982 60.1937 105.926 60.3416C105.87 60.4844 105.63 60.6169 105.212 60.7291C104.794 60.8464 104.371 60.9076 103.942 60.9178C103.642 60.928 103.366 60.9178 103.111 60.8974C103.009 60.2498 102.923 59.8266 102.841 59.6277L102.591 58.9853C103.234 59.0413 103.636 59.0566 103.8 59.0362C103.963 59.0107 104.06 58.9802 104.09 58.9343C104.121 58.8884 104.136 58.8476 104.141 58.8119C104.146 58.7711 104.151 58.6028 104.151 58.2969V54.7633H100.444L98.5221 54.8245C98.5884 54.5236 98.6547 54.2024 98.7261 53.8506C98.7975 53.4987 98.8689 53.0347 98.9402 52.4483C99.0116 51.867 99.0779 51.1991 99.1391 50.4444C99.2003 49.6949 99.236 49.2003 99.2462 48.9759L99.2819 47.7776C99.5827 47.8184 99.8377 47.8439 100.052 47.8592Z" fill="#231815"/>
<path d="M107.67 55.2987L108.006 54.8857L108.97 55.8494C109.155 56.0346 109.345 56.2258 109.54 56.4219L109.541 56.4225L109.544 56.4256C109.75 56.6331 109.962 56.846 110.178 57.0629C110.602 57.4861 110.969 57.8533 111.29 58.1694C111.606 58.4856 111.78 58.6538 111.805 58.6691L112.305 59.23L112.242 59.2912C112.11 59.4187 112.01 59.5156 111.948 59.5818L111.407 60.1427L110.816 60.724C110.576 60.3824 110.362 60.0968 110.173 59.8572C109.985 59.6175 109.5 59.0872 108.725 58.2612C107.95 57.4352 107.425 56.9202 107.15 56.706L106.594 56.2777C107.226 55.7168 107.583 55.3905 107.665 55.2885L107.67 55.2987Z" fill="#231815"/>
<path d="M114.683 51.5729V55.5196C114.112 55.6725 113.536 55.7796 112.949 55.851C113.225 56.6312 113.383 57.0901 113.423 57.2379C113.464 57.3685 113.5 57.511 113.54 57.6655L113.556 57.7274C114.03 57.5235 114.576 57.3195 115.198 57.1156C115.658 56.9685 116.017 56.8466 116.279 56.758L116.413 56.7126L116.469 56.6937L116.519 56.677C116.773 56.5853 116.957 56.5292 117.059 56.4986C117.133 56.4726 117.232 56.4467 117.352 56.4148C117.398 56.4029 117.446 56.3901 117.498 56.3762L117.472 55.8918C117.457 55.6827 117.457 55.489 117.472 55.3054C117.487 55.1218 117.508 54.9281 117.538 54.7241L117.268 54.8363C117.258 54.8414 116.957 54.9332 116.371 55.1066V51.5729H116.702L117.487 51.6035V49.9413L116.702 49.9872H116.371V48.1974L116.432 46.8156H114.622L114.683 48.1974V49.9872H114.056L113.179 49.9413V51.6035L114.056 51.5729H114.683Z" fill="#231815"/>
<path d="M116.304 59.0481C116.034 59.2724 115.743 59.4866 115.422 59.6855L115.438 59.7059C116.034 60.0118 116.401 60.2565 116.539 60.435C116.669 60.6042 116.772 60.7459 116.852 60.8558L116.865 60.8735C117.38 60.4095 117.803 59.9761 118.125 59.5733C118.446 59.1705 118.716 58.7319 118.941 58.2577C119.16 57.7835 119.313 57.2736 119.389 56.728C119.466 56.1773 119.517 55.7286 119.542 55.3666C119.568 55.0046 119.593 54.6374 119.619 54.2448H120.353V55.4992C120.343 55.7337 120.322 56.0091 120.297 56.3303C120.271 56.6516 120.205 56.8555 120.103 56.9524C119.996 57.0493 119.741 57.1054 119.333 57.1258L119.619 57.707C119.726 57.9212 119.818 58.2577 119.904 58.7166C120.18 58.681 120.486 58.5841 120.822 58.4209C121.154 58.2577 121.393 58.0742 121.531 57.86C121.669 57.651 121.755 57.4011 121.791 57.1207C121.827 56.8402 121.837 56.4731 121.832 56.0193C121.821 55.5706 121.821 54.9536 121.832 54.1683L121.867 52.7457L121.031 52.7814H119.619V51.2007L121.781 51.1905L121.867 52.0675C121.918 52.608 122.02 53.3117 122.178 54.1785C122.336 55.0454 122.469 55.6674 122.571 56.0499C122.664 56.3995 122.77 56.7449 122.877 57.0939L122.908 57.192C122.561 57.6255 122.173 58.0436 121.745 58.4464C121.317 58.8441 120.73 59.196 119.976 59.4968C120.491 59.9812 120.802 60.3024 120.899 60.4656C120.981 60.6042 121.052 60.7318 121.115 60.8452L121.148 60.9041C121.495 60.7155 121.852 60.4809 122.209 60.1954C122.566 59.9098 123.05 59.4764 123.652 58.9002L124.065 59.4611C124.182 59.6294 124.458 59.92 124.896 60.333C125.335 60.741 125.676 60.9245 125.921 60.8735C126.166 60.8225 126.375 60.6849 126.543 60.4503C126.717 60.2209 126.839 60.022 126.915 59.8639C126.981 59.737 127.056 59.5673 127.149 59.3574L127.221 59.196C127.344 58.9104 127.456 58.6555 127.558 58.4362C127.094 58.2118 126.783 58.0283 126.625 57.8804C126.462 57.7325 126.309 57.5796 126.166 57.4266C125.967 58.1456 125.783 58.4821 125.615 58.4413C125.447 58.3954 125.309 58.2883 125.197 58.115L124.937 57.7427C124.886 57.6663 124.83 57.5286 124.764 57.3399L125.09 56.6872C125.33 56.2232 125.523 55.7745 125.671 55.3462C125.819 54.9179 125.982 54.4131 126.166 53.8216C126.231 53.613 126.289 53.4276 126.339 53.2657C126.43 52.9725 126.497 52.7562 126.543 52.6182C125.977 52.4806 125.37 52.2817 124.733 52.0166L124.657 52.7049C124.641 52.8528 124.585 53.1434 124.488 53.5718C124.391 54.0001 124.31 54.3009 124.254 54.4794C124.216 54.5948 124.17 54.726 124.119 54.8701L124.118 54.8721C124.093 54.9438 124.067 55.0187 124.04 55.0964C123.892 54.617 123.764 54.0154 123.662 53.2964C123.56 52.5723 123.504 52.093 123.489 51.8585C123.474 51.6188 123.463 51.3996 123.458 51.1956L125.518 51.1854L126.829 51.2211V49.5435L125.518 49.5945H123.372L123.356 48.7583C123.346 48.4574 123.351 48.1107 123.377 47.713L123.38 47.6677L123.38 47.6665C123.404 47.2901 123.423 46.9844 123.443 46.7493L122.836 46.7901C122.581 46.8156 122.153 46.7748 121.551 46.6626L121.618 47.5753C121.643 47.8864 121.658 48.5594 121.669 49.5894H119.124L117.783 49.5231L117.895 52.608C117.916 53.1026 117.921 53.6431 117.911 54.2142C117.885 55.5094 117.798 56.3609 117.656 56.7739C117.508 57.1869 117.314 57.6153 117.074 58.0538C116.83 58.4923 116.575 58.8237 116.304 59.0481Z" fill="#231815"/>
<path d="M124.555 46.994C124.422 47.1317 124.116 47.3459 123.632 47.6467L123.637 47.6518C124.091 48.1158 124.412 48.4829 124.595 48.7583C124.779 49.0336 124.957 49.3039 125.126 49.5741C125.416 49.2478 125.845 48.8654 126.395 48.4269C125.977 47.8864 125.452 47.3204 124.815 46.734L124.555 46.994Z" fill="#231815"/>
<path d="M133.131 56.1952C132.887 55.7057 132.519 55.0174 132.122 54.3596V61.0291H130.454V54.8185C130.011 55.9658 129.506 57.006 128.955 57.7096C128.787 57.2201 128.405 56.4094 128.145 55.9199C129.047 54.9103 129.888 53.0746 130.363 51.4532H128.527V49.7705H130.454V46.757H132.122V49.7705H133.483V51.4532H132.122V51.9121C132.672 52.5392 133.927 54.2525 134.217 54.6502L133.131 56.1952Z" fill="#231815"/>
<path d="M141.116 59.3464C141.193 59.3464 141.269 59.3311 141.331 59.2852C141.376 59.2087 141.407 59.0864 141.422 58.7804C141.438 58.5051 141.453 57.832 141.468 56.9907C141.789 57.2813 142.34 57.572 142.784 57.7096C142.768 58.5204 142.707 59.4841 142.615 59.8818C142.508 60.2642 142.34 60.509 142.111 60.6926C141.866 60.8761 141.499 60.9373 141.178 60.9373H140.352C139.984 60.9373 139.556 60.8149 139.296 60.5396C139.021 60.2336 138.898 59.9124 138.898 58.7498V53.8701H136.803V54.9562C136.803 56.9754 136.298 59.6218 133.804 61.1668C133.575 60.7843 132.902 60.0501 132.581 59.7747C134.768 58.4439 134.998 56.5165 134.998 54.9256V52.1874H140.703V58.6886C140.703 59.0252 140.719 59.2087 140.749 59.2699C140.795 59.3311 140.841 59.3464 140.918 59.3464H141.116Z" fill="#231815"/>
<path d="M142.386 50.9637H134.019V49.2351H137.154C136.986 48.6232 136.65 47.7207 136.344 47.0629L138.103 46.604C138.455 47.2924 138.822 48.2102 139.021 48.8068L137.598 49.2351H142.386V50.9637Z" fill="#231815"/>
<path d="M145.033 55.3536C145.645 54.2216 145.966 52.4013 146.195 50.8716L144.635 50.4739C144.436 51.9577 144.069 53.6098 143.457 54.7112L145.033 55.3536Z" fill="#231815"/>
<path d="M150.815 54.6347C150.662 53.6251 150.142 52.0189 149.591 50.7645L148.413 51.254V47.0168H146.608V51.8506C146.608 54.497 146.333 57.5105 143.824 59.6062C144.237 59.9274 144.864 60.5852 145.14 61.0288C148.031 58.6272 148.398 55.1548 148.413 52.0036C148.826 53.1662 149.163 54.4817 149.27 55.3536L150.815 54.6347Z" fill="#231815"/>
<path d="M157.056 60.8758V46.9556H155.236V54.0075C154.93 53.0285 154.333 51.6976 153.752 50.6574L152.635 51.2081V47.3533H150.861V60.0345H152.635V51.82C153.186 52.9826 153.691 54.3287 153.874 55.216L155.236 54.4664V60.8758H157.056Z" fill="#231815"/>
<path d="M164.768 56.9966C164.813 57.5014 165.012 58.205 165.135 58.5721C162.167 60.3313 161.647 60.6678 161.341 60.9891C161.188 60.6372 160.744 60.0407 160.5 59.7806C160.821 59.5359 161.341 58.9699 161.341 58.1591V55.8187H159.337V54.1972H161.341V52.6981H160.148V51.5814C160.046 51.6936 159.944 51.7921 159.842 51.8907C159.791 51.94 159.74 51.9893 159.689 52.0403C159.551 51.6579 159.108 50.6942 158.848 50.2659C159.75 49.4245 160.576 48.1396 161.035 46.7934L162.626 47.2829C162.519 47.5736 162.397 47.8948 162.259 48.2008H164.783V49.9293H161.356C161.159 50.2621 160.942 50.565 160.729 50.8622C160.678 50.9339 160.627 51.0052 160.576 51.0766H164.553V52.6981H162.963V54.1972H164.783V55.8187H162.963V58.0062L164.768 56.9966Z" fill="#231815"/>
<path d="M173.12 54.9926C172.416 56.1858 171.498 57.2413 170.443 58.1285C170.764 58.8475 171.131 59.2758 171.483 59.2758C171.774 59.2758 171.911 58.8781 171.988 57.6543C172.324 58.0673 172.86 58.4498 173.227 58.6333C172.936 60.4843 172.493 60.9891 171.299 60.9891C170.366 60.9891 169.632 60.3007 169.051 59.1687C168.056 59.8418 166.955 60.3772 165.823 60.8361C165.594 60.3772 165.15 59.7806 164.722 59.3676C166.037 58.924 167.307 58.3274 168.424 57.5778C168.164 56.7212 167.949 55.7422 167.766 54.6714L165.196 55.1456L164.905 53.5394L167.552 53.0652C167.49 52.5757 167.445 52.0862 167.399 51.5967L165.532 51.8873L165.227 50.2659L167.292 49.9446C167.23 48.8738 167.2 47.7725 167.2 46.7017H168.944C168.928 47.696 168.944 48.7056 168.99 49.6846L172.34 49.1645L172.63 50.7554L169.097 51.3214C169.143 51.8109 169.188 52.2851 169.25 52.7593L172.737 52.1168L173.013 53.6771L169.464 54.3502C169.586 55.0997 169.724 55.8187 169.877 56.4459C170.565 55.8034 171.146 55.0997 171.59 54.3349L173.12 54.9926Z" fill="#231815"/>
<path d="M171.101 49.2869C170.672 48.8891 169.816 48.262 169.204 47.8489L170.259 46.9005C170.886 47.2676 171.743 47.8336 172.187 48.2161L171.101 49.2869Z" fill="#231815"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M183.292 51.7965V52.5002H180.921V49.6549H188.402V48.1252H184.96C184.776 47.651 184.486 47.0391 184.21 46.5649L182.451 46.9933C182.619 47.3298 182.803 47.7428 182.956 48.1252H179.346V53.0509C179.346 54.1676 179.315 55.4678 179.101 56.7528L178.81 55.4678C178.367 55.6666 177.923 55.8656 177.48 56.0338V52.1025H179.025V50.3739H177.48V46.9627H175.812V50.3739H174.283V52.1025H175.812V56.7375C175.185 56.9975 174.634 57.1964 174.16 57.3646L174.741 59.2462C174.905 59.1686 175.073 59.0886 175.246 59.0066C176.4 58.4585 177.745 57.8198 179.009 57.1811C178.795 58.2366 178.428 59.2615 177.847 60.1028C178.229 60.2711 178.918 60.7147 179.208 60.99C180.57 59.032 180.876 56.0338 180.921 53.7239H183.292V54.4123H181.304V55.6514H183.292V56.3703H181.059V61.0512H182.635V60.577H186V61.0359H187.637V56.3703H184.883V55.6514H187.499V53.8616H188.31V52.3625H187.499V50.5575H184.883V49.915H183.292V50.5575H181.35V51.7965H183.292ZM182.635 57.8082H186V59.1391H182.635V57.8082ZM185.969 52.5002H184.883V51.7965H185.969V52.5002ZM185.969 53.7239V54.4123H184.883V53.7239H185.969Z" fill="#231815"/>
<path d="M55.0266 13.1343C61.0996 13.6799 62.3182 15.2402 62.1755 15.9694C61.8032 17.8407 53.9865 19.452 43.921 19.452C33.8556 19.452 25.6462 17.8815 25.6462 15.9694C25.6462 14.0573 35.0079 12.4001 45.7516 12.4001C45.7516 12.4001 46.5368 12.4409 46.5368 12.0992C46.5164 11.6964 45.7822 11.7423 45.7822 11.7423C30.5514 11.7423 22.3828 14.0063 22.3828 17.0657C22.3828 19.9568 32.025 22.3329 43.921 22.3329C55.817 22.3329 65.4235 19.9568 65.4235 17.0657C65.4235 15.3932 62.9046 13.2261 54.9451 12.4664C54.9451 12.4664 54.3536 12.395 54.3128 12.7468C54.272 13.0935 55.0215 13.1394 55.0215 13.1394L55.0266 13.1343Z" fill="#B60081"/>
<path d="M32.2399 8.40088H28.125V16.1463H32.2399V8.40088Z" fill="#B60081"/>
</g>
<defs>
<clipPath id="clip0_59_36879">
<rect width="240" height="62" fill="white"/>
</clipPath>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 20 KiB

14
src/assets/images/manager.svg

@ -0,0 +1,14 @@
<svg
width="48"
height="48"
viewBox="0 0 48 48"
fill="none"
xmlns="http://www.w3.org/2000/svg"
>
<circle cx="24" cy="24" r="22.9655" stroke="#E62222" stroke-width="2.06897" />
<path
d="M21.3975 14.2267H17.723V15.6568H21.3975V14.2267ZM15.9751 12.6576H23.2446V21.953C23.2446 22.8468 23.0857 23.3434 22.47 23.6214C21.8742 23.8995 20.9804 23.9392 19.7688 23.9392C19.6695 23.4427 19.3914 22.7078 19.1332 22.2311C19.9873 22.2708 20.8016 22.2708 21.0797 22.251C21.318 22.251 21.3975 22.1715 21.3975 21.9332V20.0463H17.723V23.9591H15.9751V12.6576ZM17.723 17.0868V18.5963H21.3975V17.0868H17.723ZM31.0107 6.93731L32.2422 8.30779C30.6929 9.04268 28.667 9.718 26.8198 10.2543V11.9028C26.8198 12.5781 26.9588 12.6774 27.8129 12.6774C28.1903 12.6774 30.0375 12.6774 30.534 12.6774C31.249 12.6774 31.3881 12.3596 31.4874 10.4926C31.8449 10.7905 32.6195 11.0686 33.1359 11.1878C32.9175 13.6705 32.401 14.3459 30.7128 14.3459C30.2559 14.3459 28.0115 14.3459 27.5944 14.3459C25.489 14.3459 24.9726 13.7897 24.9726 11.9227V5.58668H26.8198V8.74475C28.369 8.18862 29.958 7.5133 31.0107 6.93731ZM31.2093 15.8157L32.4606 17.206C30.9114 18.0799 28.7862 18.8148 26.8397 19.3908V21.377C26.8397 22.0523 27.0184 22.1715 27.8725 22.1715C28.2499 22.1715 30.1368 22.1715 30.6532 22.1715C31.4278 22.1715 31.5668 21.7941 31.6463 19.649C32.0435 19.947 32.7983 20.225 33.3147 20.3442C33.0962 23.0852 32.5798 23.8201 30.8121 23.8201C30.3553 23.8201 28.0711 23.8201 27.6342 23.8201C25.5288 23.8201 24.9925 23.2639 24.9925 21.377V14.8623H26.8397V17.8416C28.4882 17.2457 30.1566 16.5108 31.2093 15.8157ZM15.7566 11.4659C15.6573 11.0885 15.3395 10.1947 15.121 9.69813C15.4388 9.61868 15.7368 9.34062 16.0744 8.90365C16.3922 8.50641 17.425 6.99689 18.0209 5.48737L20.0071 6.04351C19.3715 7.29482 18.5175 8.566 17.6833 9.59882L21.4173 9.36048C21.0399 8.66531 20.603 7.97013 20.1859 7.35441L21.755 6.73868C22.7481 8.08931 23.8206 9.87689 24.198 11.0885L22.5296 11.8035C22.4303 11.4857 22.2913 11.1481 22.1125 10.7707C16.9484 11.1679 16.2135 11.2871 15.7566 11.4659ZM17.5839 27.0962H22.1522C22.3508 26.5401 22.5495 25.9243 22.6488 25.4675L24.8733 25.686C24.6548 26.1825 24.3768 26.6592 24.1384 27.0962H29.9977V33.3726H19.4311V34.6041H32.977V36.0341H19.4311V37.1265H32.262C32.262 37.1265 32.2422 37.6032 32.2024 37.8416C31.9244 41.3373 31.6264 42.7872 31.11 43.3632C30.7326 43.7406 30.3751 43.8797 29.8388 43.9392C29.382 43.9988 28.5478 43.9988 27.6342 43.9392C27.6143 43.4625 27.4355 42.7674 27.1773 42.3304C27.9519 42.4099 28.667 42.4297 28.945 42.4297C29.243 42.4297 29.4217 42.3701 29.5806 42.2112C29.8786 41.8934 30.1169 40.9202 30.3354 38.5368H17.5839V27.0962ZM28.1108 30.87H19.4311V32.0419H28.1108V30.87ZM28.1108 29.6584V28.427H19.4311V29.6584H28.1108ZM15.8758 39.371H17.5839V41.2976H20.5235V38.8347H22.2515V41.2976H25.1514V39.3312H26.8595V43.3434H25.1514V42.7475H15.8758V39.371Z"
fill="#E62222"
/>
</svg>

After

Width:  |  Height:  |  Size: 3.0 KiB

6
src/assets/images/q.svg

@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="16" height="24" viewBox="0 0 16 24" fill="none">
<path
d="M7.71206 16.7038C10.6401 16.7038 12.5601 14.0638 12.5601 9.7918C12.5601 5.6638 10.6401 3.1198 7.71206 3.1198C4.78406 3.1198 2.88806 5.6638 2.88806 9.7918C2.88806 14.0638 4.78406 16.7038 7.71206 16.7038ZM13.2561 23.3038C9.84806 23.3038 7.49606 21.4318 6.39206 18.9358C2.57606 18.3118 0.00805664 14.9038 0.00805664 9.7918C0.00805664 4.0798 3.17606 0.695801 7.71206 0.695801C12.2721 0.695801 15.4161 4.1038 15.4161 9.7918C15.4161 14.7598 13.0161 18.0958 9.39206 18.8638C10.1841 20.3278 11.7921 20.9998 13.5681 20.9998C14.3361 20.9998 14.9601 20.8798 15.4641 20.7118L15.9921 22.8238C15.3921 23.0878 14.4081 23.3038 13.2561 23.3038Z"
fill="white"
/>
</svg>

After

Width:  |  Height:  |  Size: 818 B

109
src/components/ScrollList/ScrollList.vue

@ -1,70 +1,77 @@
<template>
<div class="relative rounded-[10px] bg-[#E9E9E9] mx-10 h-[936px]">
<ScrollView pull-up class="relative w-[1840px]" :list="[]" scroll-x @scroll-end="scrollEnd">
<div class="inline-grid grid-rows-[repeat(2,430px)] grid-flow-col gap-4 px-6 whitespace-nowrap pt-[30px] pb-3">
<ScrollListItem v-for="item of customerList" :key="item.addTime" />
<div class="flex-center row-span-2" :class="[isFirst ? 'col-end-[56]' : '']">
<Loading v-if="!loaded" />
</div>
</div>
<img
v-if="!customerList.length && loaded"
class="absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2"
src="../../assets/images/nodata.svg"
alt=""
/>
<div class="absolute left-1/2 -translate-x-1/2 bottom-5 flex flex-col items-center">
<img src="../../assets/images/hand.png" class="fadeInRight mb-[6px]" alt="" />
<p class="text-14 text-[#666]">左右滑动查看更多</p>
</div>
</ScrollView>
<div class="flex h-[936px] relative rounded-xl overflow-hidden border border-solid border-white bg-[rgba(245,245,245,0.60)] mx-10">
<div class="swiper-containers py-5 w-[1840px]">
<Swiper
v-if="chunkList.length"
rewind
observer
observe-parents
:slides-offset-before="24"
:slides-offset-after="24"
observe-slide-children
:modules="modules"
style="overflow: visible"
@swiper="swiperInit"
>
<SwiperSlide v-for="item of chunkList" :key="JSON.stringify(item)">
<div class="grid grid-cols-[repeat(4,436px)] grid-rows-[repeat(2,440px)] grid-flow-col gap-4">
<ScrollListItem v-for="customer of item" :key="customer.addTime" :customer="customer" />
</div>
</SwiperSlide>
</Swiper>
</div>
<div
class="absolute right-5 bottom-5 w-[436px] h-[440px] px-[138px] pt-16 pb-[148px] bg-white rounded-xl shadow-[0px_4px_10px_0px_rgba(0,0,0,0.06)] flex-col justify-start items-center gap-4 inline-flex"
>
<img src="/static/qr.png" class="w-40 h-40" alt="" />
<div class="text-center text-[#333] text-lg font-normal leading-relaxed">欢迎微信扫码留言<br />期待您的宝贵意见</div>
</div>
</div>
</template>
<script setup lang="ts">
import { ref, toRefs, onMounted } from 'vue'
import { useRootStore } from '@/store/root'
import { getCustomerList } from '@/http/api/base'
import { HTTP_CODE } from '@/enums'
import ScrollView from '@/base/ScrollView/ScrollView.vue'
import { shallowRef, computed } from 'vue'
import { chunk } from 'lodash-es'
import ScrollListItem from '@/components/ScrollListItem/ScrollListItem.vue'
import Loading from '@/base/Loading/Loading.vue'
import SwiperCore, { Autoplay } from 'swiper'
import { Swiper, SwiperSlide } from 'swiper/vue'
const store = useRootStore()
const { config, device } = toRefs(store)
import 'swiper/css'
const customerList = ref<Customer[]>([])
const pageIndex = ref(1)
const loaded = ref(false)
const isFirst = ref(true)
const modules = [Autoplay]
SwiperCore.use(modules)
function scrollEnd() {
console.log('scrollEnd')
type Props = {
mallCode: string
customerList: Customer[]
}
onMounted(_getCustomerList)
const props = withDefaults(defineProps<Props>(), {
mallCode: '',
customerList: () => []
})
function _getCustomerList() {
loaded.value = false
const params = {
pageIndex: pageIndex.value,
pageSize: 10,
mallCode: device.value.mallCode
}
getCustomerList(config.value.smallUrl, params)
.then(({ code, data }) => {
if (code === HTTP_CODE.ERR_OK) {
customerList.value.push(...data.list)
}
})
.finally(() => {
// isFirst.value = false
loaded.value = true
})
const chunkList = computed(() => chunk(props.customerList, 7))
const swiper = shallowRef()
function swiperInit(_swiper: any) {
swiper.value = _swiper
}
function scroll() {
swiper.value?.slideTo(0)
}
defineExpose({
scroll
})
</script>
<style>
.tb {
writing-mode: tb;
}
.fadeInRight {
animation: fade-in-right 1s infinite;
}

55
src/components/ScrollListItem/ScrollListItem.vue

@ -1,19 +1,35 @@
<template>
<div class="flex flex-wrap pt-6 pl-6 pr-[6px] space-x-8 relative w-[720px] rounded-xl bg-white shadow-[3px_3px_0_0_rgba(0,0,0,0.10)]">
<div class="flex-1 justify-between">
<div class="text-justify text-[#808080] text-12 font-normal leading-[18px] mb-2">{{ customer.addTime }}</div>
<ScrollView class="relative h-[356px]" scrollbar :list="[]">
<div class="text-justify text-[#C70082] text-16 font-normal leading-normal whitespace-normal pr-[14px]">
Q:{{ customer.suggestionContent }}
<div
class="flex flex-wrap pt-6 pl-6 pr-[6px] gap-x-8 relative w-[436px] h-[440px] rounded-xl bg-white shadow-[0px_4px_10px_0px_rgba(0,0,0,0.06)]"
>
<div class="flex-1 shrink-0 justify-between">
<div class="flex items-center text-justify text-[#808080] text-16 font-normal leading-[18px] mb-2">
<div class="flex-center mr-3 w-6 h-6 bg-[#B60081] rounded-xl">
<img src="../../assets/images/q.svg" class="w-3 h-5" alt="" />
</div>
{{ formatDate(customer.addTime) }}
</div>
<ScrollView class="relative h-[355px]" scrollbar :list="customer.suggestionContent">
<div class="text-black/50 text-20 font-normal leading-normal pr-[14px] pb-10 break-all">
<div v-html="customer.suggestionContent"></div>
</div>
</ScrollView>
</div>
<div class="flex-1">
<div class="text-justify text-[#808080] text-12 font-normal leading-[18px] mb-2">{{ customer.updateTime }}</div>
<ScrollView class="relative h-[356px]" scrollbar observe-image :list="[]">
<div class="text-justify text-[##333333] text-16 font-normal leading-normal whitespace-normal pr-[14px]">
A:
<div v-html="customer.replyContent"></div>
<div class="flex-1 shrink-0">
<div class="flex items-center text-justify text-[#333] text-16 font-normal leading-[18px] mb-2">
<div class="flex-center mr-3 w-6 h-6 rounded-xl bg-[#F5F5F5] border border-solid border-[#808080]">
<img src="../../assets/images/a.svg" class="w-3 h-5" alt="" />
</div>
{{ formatDate(customer.updateTime) }}
</div>
<ScrollView class="relative h-[356px]" scrollbar observe-image :list="customer.replyContent">
<div class="text-[##333333] text-20 font-normal leading-normal break-all pr-2">
<div class="mb-2" v-html="customer.replyContent"></div>
<div v-if="customer.sign" class="text-[#333] text-16">店铺店长: {{ customer.sign }}</div>
<div class="flex items-center text-[#333] text-16 pt-2">
总经理: 能岛拓也
<img src="../../assets/images/manager.svg" class="w-10 h-10 ml-2.5 shrink-0" />
</div>
</div>
</ScrollView>
</div>
@ -27,9 +43,20 @@ type Props = {
customer: Customer
}
withDefault(defineProps<Props>(), {
customer: {} as Customer
withDefaults(defineProps<Props>(), {
customer: () => ({} as Customer)
})
function formatDate(date: string) {
if (!date) {
return
}
const newDate = new Date(date)
const year = newDate.getFullYear()
const month = String(newDate.getMonth() + 1).padStart(2, '0')
const week = String(newDate.getDate()).padStart(2, '0')
return `${year}-${month}-${week} ${newDate.getHours().toString().padStart(2, '0')}:${newDate.getMinutes().toString().padStart(2, '0')}`
}
</script>
<style>

42
src/components/WeatherAndTime/WeatherAndTime.vue

@ -1,33 +1,53 @@
<template>
<div class="flex justify-between items-center py-7 px-10">
<img src="../../assets/images/logo.png" class="w-16 h-16" alt="" />
<div class="flex-1">
<img src="../../assets/images/logo.svg" class="w-60 h-[62px]" alt="" />
</div>
<div class="flex items-center space-x-4">
<img src="../../assets/images/heart.png" class="w-10 h-10" alt="" />
<p class="text-36 text-white font-bold">顾客心声</p>
<img src="../../assets/images/heart.svg" class="w-10 h-10" alt="" />
<p class="text-36 text-black/80 font-bold">顾客心声</p>
</div>
<div class="flex items-center">
<div class="flex-1 flex items-center justify-end">
<div class="w-9 h-9 mr-2">
<Icon :type="icon.type" color="#fff" />
<Icon :type="icon.type" color="rgba(0, 0, 0, 0.4)" />
</div>
<p class="text-white text-40 font-bold">{{ weather.temperature_Now }}°</p>
<p class="text-black/70 text-40 font-bold">{{ weather.temperature_Now }}°</p>
<div class="w-px h-6 mx-5 bg-[#808080]"></div>
<div class="text-40 font-bold text-white mr-3">{{ currentTime }}</div>
<div class="flex flex-col text-white text-16">
<p>{{ formatDay('y/m/d') }}</p>
<p>{{ whichWeek }}</p>
<div class="text-40 font-bold text-black/70 mr-3">{{ currentTime }}</div>
<div class="flex flex-col text-black/70 text-16">
<p class="font-bold">{{ formatDay() }}</p>
<p class="font-bold">{{ whichWeek }}</p>
</div>
</div>
</div>
</template>
<script setup lang="ts">
import { watch } from 'vue'
import { formatDay } from '@/utils/utils'
import { useWeather } from '@/composables/useWeather'
import { useTime } from '@/composables/useTime'
import { useDay } from '@/composables/useDay'
import Icon from '@/base/Icon/Icon.vue'
const { weather, icon } = useWeather()
type Props = {
mallCode: string
}
const props = withDefaults(defineProps<Props>(), {
mallCode: ''
})
const { weather, icon, getWeatherStatus } = useWeather()
const { currentTime } = useTime()
const { whichWeek } = useDay()
watch(
() => props.mallCode,
(newVal: string) => {
if (newVal.length) {
getWeatherStatus(props.mallCode)
}
}
)
</script>

6
src/composables/useConfig.ts

@ -1,13 +1,11 @@
import { getWeather, getConfig, getDevice } from '@/http/api/base'
import { getConfig } from '@/http/api/base'
import { useRootStore } from '@/store/root'
export const useConfig = async () => {
const store = useRootStore()
try {
const [_weather, _config, _device] = await Promise.all([getWeather(), getConfig(), getDevice()])
store.SET_WEATHER(_weather.data)
const [_config] = await Promise.all([getConfig()])
store.SET_CONFIG(_config.data)
store.SET_DEVICE(_device.data)
Promise.resolve()
} catch (error) {
console.log('error: ', error)

17
src/composables/useWeather.ts

@ -1,12 +1,19 @@
import { ref, toRefs } from 'vue'
import { ref, toRefs, computed } from 'vue'
import { useRootStore } from '@/store/root'
import { getWeather } from '@/http/api/base'
type IconMap = { type: ExtractIcons<'sunny' | 'cloudy' | 'rain' | 'snow' | 'shade'>; status: string }
export const useWeather = () => {
const store = useRootStore()
const { weather } = toRefs(store)
const icon = ref({} as IconMap)
const { config } = toRefs(store)
const weather = ref({} as Weather)
function getWeatherStatus(mallCode: string) {
getWeather(config.value.smallUrl, mallCode).then(({ data }) => {
weather.value = data ?? {}
})
}
const status: IconMap[] = [
{ type: 'sunny', status: '晴' },
@ -15,7 +22,7 @@ export const useWeather = () => {
{ type: 'snow', status: '雪' },
{ type: 'shade', status: '阴' }
]
icon.value = status.find(item => weather.value.status?.includes(item.status)) ?? status[0]
const icon = computed(() => status.find(item => weather.value.status?.includes(item.status)) ?? status[0])
return { weather, icon }
return { weather, icon, getWeatherStatus }
}

2
src/enums/index.ts

@ -19,7 +19,7 @@ export enum FEATURED {
}
export enum HTTP_CODE {
ERR_OK = 200, //数据请求成功(可用于语音状态码)
ERR_OK = '200', //数据请求成功(可用于语音状态码)
ERR_DATA_NULL = 500, //语音无查询信息
ERR_OVER = 100, //语音播报完毕
ERR_NULL = '401', //未识别到语音

5
src/http/api/base/index.ts

@ -4,11 +4,8 @@ import { PREFIX } from '@/enums'
//获取配置项
export const getConfig = () => request<Config>({ url: `${PREFIX.STATIC_URL}/JSON/getConfig.json` })
//获取设备
export const getDevice = () => request<Device>({ url: `${PREFIX.STATIC_URL}/JSON/GetDevCoordinateByIP.json` })
//获取天气
export const getWeather = () => request<Weather>({ url: `${PREFIX.STATIC_URL}/JSON/GetWeathers.json` })
export const getWeather = (url: string, mallCode: string) => request<Weather>({ url: `${url}/Api/Cdn/GetWeathers?mallCode=${mallCode}` })
//获取心声列表
export const getCustomerList = (url: string, params: { pageIndex: number; pageSize: number; mallCode: string }) => {

2
src/http/http.ts

@ -96,7 +96,7 @@ const _request = new Request({
export type Response<T> = {
msg: string
data: T
code: number
code: number | string
}
export const request = <T = any>(config: RequestConfig<Response<T>>) => _request.request(config)

8
src/types/customer.d.ts

@ -1,6 +1,14 @@
interface Customer {
suggestionContent: string
replyContent: string
sign: null | string
fileList: {
extCode: string
fileCode: string
fileName: string
filePath: string
type: string
}[]
addTime: string
updateTime: string
}

3
vue.config.js

@ -4,5 +4,6 @@ const prod = process.env.NODE_ENV === 'production'
module.exports = defineConfig({
transpileDependencies: true,
publicPath: prod ? './' : '/'
publicPath: prod ? './' : '/',
productionSourceMap: false
})

Loading…
Cancel
Save