Merge branch 'master' of https://codeup.aliyun.com/bsdtec/biz-mobile-react-cloud
This commit is contained in:
commit
0803025d23
13 files changed
+353
-42
No files matched your search
+8
-8
@@ -28,14 +28,6 @@ const tabbar: TabbarItem[] = [
|
||||
launchParam: ["selfMerchant"],
|
||||
auth: ["user"],
|
||||
},
|
||||
{
|
||||
pagePath: "pages/tabbar/onlineShop",
|
||||
text: "在线商城",
|
||||
iconPath: "/static/tabbar/online-shop.png",
|
||||
selectedIconPath: "/static/tabbar/online-shop-select.png",
|
||||
launchParam: ["onlineShop"],
|
||||
auth: ["user"],
|
||||
},
|
||||
{
|
||||
pagePath: "pages/tabbar/coopMerchant",
|
||||
text: "合作商家",
|
||||
@@ -44,6 +36,14 @@ const tabbar: TabbarItem[] = [
|
||||
launchParam: ["coopMerchant"],
|
||||
auth: ["user"],
|
||||
},
|
||||
{
|
||||
pagePath: "pages/tabbar/onlineShop",
|
||||
text: "在线商城",
|
||||
iconPath: "/static/tabbar/online-shop.png",
|
||||
selectedIconPath: "/static/tabbar/online-shop-select.png",
|
||||
launchParam: ["onlineShop"],
|
||||
auth: ["user"],
|
||||
},
|
||||
{
|
||||
pagePath: "pages/tabbar/cabinet",
|
||||
text: "智能柜",
|
||||
|
||||
@@ -0,0 +1,65 @@
|
||||
<template>
|
||||
<view class="tabbar">
|
||||
<view
|
||||
class="tabbar-item"
|
||||
:class="{ active: activeTab === 'home' }"
|
||||
@tap="goHome"
|
||||
>
|
||||
<image src="/static/icons/home.png" class="tabbar-icon" />
|
||||
<text>首页</text>
|
||||
</view>
|
||||
<view
|
||||
class="tabbar-item"
|
||||
:class="{ active: activeTab === 'mine' }"
|
||||
@tap="goMine"
|
||||
>
|
||||
<image src="/static/icons/mine.png" class="tabbar-icon" />
|
||||
<text>我的</text>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
const props = defineProps<{ activeTab: 'home' | 'mine' }>()
|
||||
function goHome() {
|
||||
uni.reLaunch({
|
||||
url: '/pages/integrated/meeting/index'
|
||||
})
|
||||
}
|
||||
function goMine() {
|
||||
uni.reLaunch({
|
||||
url: '/pages/integrated/meeting/my-reservations'
|
||||
})
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.tabbar {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
height: 100rpx;
|
||||
background: #fff;
|
||||
display: flex;
|
||||
border-top: 1px solid #eee;
|
||||
z-index: 999;
|
||||
}
|
||||
.tabbar-item {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: #888;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
.tabbar-icon {
|
||||
width: 48rpx;
|
||||
height: 48rpx;
|
||||
margin-bottom: 4rpx;
|
||||
}
|
||||
.tabbar-item.active {
|
||||
color: #1777FF;
|
||||
}
|
||||
</style>
|
||||
+8
-2
@@ -472,6 +472,12 @@
|
||||
"style": {
|
||||
"navigationBarTitleText": "预约会议"
|
||||
}
|
||||
},
|
||||
{
|
||||
"path": "meeting/my-reservations",
|
||||
"style": {
|
||||
"navigationBarTitleText": "我的预约"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -498,13 +504,13 @@
|
||||
"selectedIconPath": ""
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/tabbar/onlineShop",
|
||||
"pagePath": "pages/tabbar/coopMerchant",
|
||||
"text": "",
|
||||
"iconPath": "",
|
||||
"selectedIconPath": ""
|
||||
},
|
||||
{
|
||||
"pagePath": "pages/tabbar/coopMerchant",
|
||||
"pagePath": "pages/tabbar/onlineShop",
|
||||
"text": "",
|
||||
"iconPath": "",
|
||||
"selectedIconPath": ""
|
||||
|
||||
@@ -41,11 +41,13 @@
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<MeetingTabbar activeTab="home" />
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, onMounted } from 'vue'
|
||||
import meetingRoomApi from '@/sheep/api/meetingRoom'
|
||||
import MeetingTabbar from '@/components/MeetingTabbar.vue'
|
||||
|
||||
const goBack = () => {
|
||||
uni.navigateBack()
|
||||
@@ -228,4 +230,4 @@ function goDetail(room) {
|
||||
color: #bbb;
|
||||
font-size: 20rpx;
|
||||
}
|
||||
</style>
|
||||
</style>
|
||||
@@ -0,0 +1,199 @@
|
||||
<template>
|
||||
<view class="container">
|
||||
<!-- 顶部自定义导航栏 -->
|
||||
<view class="custom-nav">
|
||||
<view class="nav-title">我的预约</view>
|
||||
</view>
|
||||
|
||||
<!-- 顶部tab -->
|
||||
<view class="tabs">
|
||||
<view
|
||||
v-for="(tab, idx) in tabs"
|
||||
:key="tab"
|
||||
:class="['tab', idx === activeTab ? 'active' : '']"
|
||||
@tap="activeTab = idx"
|
||||
>{{ tab }}</view>
|
||||
</view>
|
||||
|
||||
<!-- 优惠礼包(可选) -->
|
||||
<view class="coupon-box">
|
||||
<text class="coupon-title">优惠礼包</text>
|
||||
<text class="coupon-desc">还未购买过优惠礼包</text>
|
||||
<text class="arrow">></text>
|
||||
</view>
|
||||
|
||||
<!-- 预约卡片列表 -->
|
||||
<view v-for="item in reservationList" :key="item.id" class="card">
|
||||
<view class="card-header">
|
||||
<image src="/static/icons/meeting.png" class="card-icon" />
|
||||
<text class="card-title">{{ item.roomName }} → {{ item.location }}</text>
|
||||
<text class="card-status" :class="item.statusClass">{{ item.statusText }}</text>
|
||||
</view>
|
||||
<view class="card-info">
|
||||
<view>预约时间:{{ item.time }}</view>
|
||||
<view>会议主题:{{ item.subject }}</view>
|
||||
<view>参会人:{{ item.attendees }}</view>
|
||||
</view>
|
||||
<view class="card-footer">
|
||||
<view class="card-btn" v-for="btn in item.actions" :key="btn">{{ btn }}</view>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
<MeetingTabbar activeTab="mine" />
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue'
|
||||
import MeetingTabbar from '@/components/MeetingTabbar.vue'
|
||||
|
||||
const tabs = ['全部', '未开始', '已结束', '已取消']
|
||||
const activeTab = ref(0)
|
||||
|
||||
// 静态假数据,等你有接口后再对接
|
||||
const reservationList = ref([
|
||||
{
|
||||
id: 1,
|
||||
roomName: '一号会议室',
|
||||
location: '总部大厦A座',
|
||||
time: '2025-06-20 14:00~15:00',
|
||||
subject: '周例会',
|
||||
attendees: '张三、李四、王五',
|
||||
statusText: '已结束',
|
||||
statusClass: 'done',
|
||||
actions: ['更多', '再次预约']
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
roomName: '二号会议室',
|
||||
location: '总部大厦B座',
|
||||
time: '2025-06-22 09:00~10:00',
|
||||
subject: '项目讨论',
|
||||
attendees: '张三、赵六',
|
||||
statusText: '未开始',
|
||||
statusClass: 'pending',
|
||||
actions: ['取消预约', '查看详情']
|
||||
}
|
||||
])
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.container {
|
||||
min-height: 100vh;
|
||||
background: #f5f6fa;
|
||||
padding-bottom: 120rpx;
|
||||
}
|
||||
.custom-nav {
|
||||
height: 88rpx;
|
||||
background: #fff;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 32rpx;
|
||||
font-weight: 600;
|
||||
border-bottom: 1px solid #f0f0f0;
|
||||
}
|
||||
.tabs {
|
||||
display: flex;
|
||||
background: #fff;
|
||||
border-bottom: 1px solid #f0f0f0;
|
||||
}
|
||||
.tab {
|
||||
flex: 1;
|
||||
text-align: center;
|
||||
padding: 24rpx 0;
|
||||
font-size: 28rpx;
|
||||
color: #888;
|
||||
position: relative;
|
||||
}
|
||||
.tab.active {
|
||||
color: #1777FF;
|
||||
font-weight: 600;
|
||||
}
|
||||
.tab.active::after {
|
||||
content: '';
|
||||
display: block;
|
||||
width: 60rpx;
|
||||
height: 6rpx;
|
||||
background: #1777FF;
|
||||
border-radius: 3rpx;
|
||||
margin: 0 auto;
|
||||
position: absolute;
|
||||
left: 0; right: 0; bottom: 0;
|
||||
}
|
||||
.coupon-box {
|
||||
margin: 24rpx;
|
||||
background: #fffbe6;
|
||||
border-radius: 12rpx;
|
||||
padding: 24rpx;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
font-size: 26rpx;
|
||||
color: #bfa243;
|
||||
position: relative;
|
||||
}
|
||||
.coupon-title {
|
||||
font-weight: 600;
|
||||
margin-right: 16rpx;
|
||||
}
|
||||
.coupon-desc {
|
||||
flex: 1;
|
||||
}
|
||||
.arrow {
|
||||
color: #bfa243;
|
||||
font-size: 32rpx;
|
||||
margin-left: 16rpx;
|
||||
}
|
||||
.card {
|
||||
margin: 24rpx;
|
||||
background: #fff;
|
||||
border-radius: 16rpx;
|
||||
box-shadow: 0 2px 8px rgba(0,0,0,0.04);
|
||||
padding: 24rpx;
|
||||
margin-bottom: 16rpx;
|
||||
}
|
||||
.card-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 12rpx;
|
||||
}
|
||||
.card-icon {
|
||||
width: 40rpx;
|
||||
height: 40rpx;
|
||||
margin-right: 12rpx;
|
||||
}
|
||||
.card-title {
|
||||
font-size: 30rpx;
|
||||
font-weight: 600;
|
||||
flex: 1;
|
||||
}
|
||||
.card-status {
|
||||
font-size: 26rpx;
|
||||
margin-left: 12rpx;
|
||||
}
|
||||
.card-status.done {
|
||||
color: #888;
|
||||
}
|
||||
.card-status.pending {
|
||||
color: #1777FF;
|
||||
}
|
||||
.card-status.cancel {
|
||||
color: #ff4d4f;
|
||||
}
|
||||
.card-info {
|
||||
font-size: 26rpx;
|
||||
color: #666;
|
||||
margin-bottom: 12rpx;
|
||||
line-height: 1.7;
|
||||
}
|
||||
.card-footer {
|
||||
display: flex;
|
||||
gap: 24rpx;
|
||||
}
|
||||
.card-btn {
|
||||
background: #f2f6ff;
|
||||
color: #1777FF;
|
||||
border-radius: 8rpx;
|
||||
padding: 8rpx 24rpx;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
</style>
|
||||
@@ -59,7 +59,16 @@
|
||||
<view v-if="!loading && visitorList.length === 0" class="empty">暂无访客记录</view>
|
||||
</scroll-view>
|
||||
|
||||
<tabbar :tabBarList="tabBarList" :current="tabbarStore.current" />
|
||||
<view class="tabbar">
|
||||
<view class="tabbar-item" @tap="goHome">
|
||||
<image src="/static/icons/home.png" class="tabbar-icon" />
|
||||
<text>首页</text>
|
||||
</view>
|
||||
<view class="tabbar-item" @tap="goMine">
|
||||
<image src="/static/icons/mine.png" class="tabbar-icon" />
|
||||
<text>我的</text>
|
||||
</view>
|
||||
</view>
|
||||
</view>
|
||||
</template>
|
||||
|
||||
@@ -480,5 +489,37 @@ onMounted(() => {
|
||||
color: #999;
|
||||
font-size: 26rpx;
|
||||
}
|
||||
|
||||
.tabbar {
|
||||
position: fixed;
|
||||
left: 0;
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
height: 100rpx;
|
||||
background: #fff;
|
||||
display: flex;
|
||||
border-top: 1px solid #eee;
|
||||
z-index: 999;
|
||||
}
|
||||
|
||||
.tabbar-item {
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: #888;
|
||||
font-size: 24rpx;
|
||||
}
|
||||
|
||||
.tabbar-icon {
|
||||
width: 48rpx;
|
||||
height: 48rpx;
|
||||
margin-bottom: 4rpx;
|
||||
}
|
||||
|
||||
.tabbar-item.active {
|
||||
color: #1777FF;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
@@ -27,7 +27,7 @@
|
||||
<view>
|
||||
<view v-if="state.detail.phone" class="flex items-center">
|
||||
<image class="w-24rpx h-24rpx" src="@/static/page/phone.svg" />
|
||||
<view class="second-text-28 ml-1">{{ state.detail.phone }}</view>
|
||||
<view class="second-text-28 ml-1">{{ state.detail.phone?.slice(0, 11) }}</view>
|
||||
<view
|
||||
class="second-text-20 bg-#f8f8f8 ml-1 p-0.3 flex items-center rounded-1 border border-solid border-b-coolGray"
|
||||
@tap="doPhone"
|
||||
@@ -69,7 +69,7 @@
|
||||
</tm-alert>
|
||||
|
||||
<!-- start 商品 start -->
|
||||
<view class="flex-row">
|
||||
<view v-if="false" class="flex-row">
|
||||
<scroll-view
|
||||
v-if="state.classifyList.length"
|
||||
scroll-y
|
||||
@@ -108,7 +108,7 @@
|
||||
<!-- end 商品 end -->
|
||||
|
||||
<template #main-bottom>
|
||||
<view v-if="state.classifyList.length" class="car z-200 p-x-30rpx p-y-30rpx bg-white">
|
||||
<view v-if="false && state.classifyList.length" class="car z-200 p-x-30rpx p-y-30rpx bg-white">
|
||||
<product-total :totPrice="state.totPrice" :totCount="state.totCount" @doContainer="doVisibleCart" @submit="doBuy" />
|
||||
</view>
|
||||
</template>
|
||||
@@ -337,7 +337,7 @@ const doPhone = () => {
|
||||
return
|
||||
}
|
||||
;(window as any).dd
|
||||
.callPhone({ phoneNum: state.detail.phone })
|
||||
.callPhone({ phoneNum: state.detail.phone.slice(0, 11) })
|
||||
.then((res) => {})
|
||||
.catch((err) => {})
|
||||
}
|
||||
|
||||
@@ -18,14 +18,15 @@
|
||||
<template #top>
|
||||
<view class="flex justify-between items-center my-1 z-1000">
|
||||
<tm-text font-size="40" color="#0779FD" class="font-bold">欢迎选购</tm-text>
|
||||
<view class="flex justify-center items-baseline" @tap="changeShop">
|
||||
<tm-icon name="map-pin-2-line" color="#0779FD" />
|
||||
<view class="flex justify-center items-center" @tap="changeShop">
|
||||
<image class="size-40rpx" src="@/static/page/address-blue.svg" />
|
||||
<tm-text font-size="32" color="#0779FD">{{ state.curMerchant.name }}</tm-text>
|
||||
<tm-icon name="arrow-down-s-fill" color="#0779FD" size="40" />
|
||||
<image class="size-30rpx ml-1" src="@/static/page/arrow-down-s-fill.svg" />
|
||||
</view>
|
||||
</view>
|
||||
<view class="flex-row justify-between items-center">
|
||||
<view class="w-full flex items-center">
|
||||
<tm-input
|
||||
class="flex-1"
|
||||
v-model="state.params.productName"
|
||||
type="text"
|
||||
:height="66"
|
||||
@@ -34,8 +35,9 @@
|
||||
:showClear="true"
|
||||
:focus="true"
|
||||
placeholder="请输入商品名称"
|
||||
style="border: 2px solid #0779fd; border-radius: 14rpx"
|
||||
style="border: 2rpx solid #0779fd; border-radius: 14rpx"
|
||||
:focus-highlight="false"
|
||||
color="#ECF4F9"
|
||||
>
|
||||
<template v-slot:rightIcon>
|
||||
<tm-button class="mr-1 py-3" size="xs" @click="searchProduct">搜索</tm-button>
|
||||
@@ -51,7 +53,7 @@
|
||||
|
||||
<scroll-view scroll-x class="whitespace-nowrap my-2">
|
||||
<tm-tag
|
||||
class="mx-1"
|
||||
class="mr-2"
|
||||
size="s"
|
||||
:skin="state.params.categoryId == v.id ? 'normal' : 'outlined'"
|
||||
v-for="(v, i) in state.classifyList"
|
||||
@@ -148,7 +150,7 @@ import { LazyImg, Waterfall } from "vue-waterfall-plugin-next"
|
||||
import "vue-waterfall-plugin-next/dist/style.css"
|
||||
import { isEmpty } from "radash"
|
||||
import { filePath } from "@@/utils/file"
|
||||
import { foodApi, merchantApi, shopApi } from "@@/api"
|
||||
import { merchantApi, shopApi } from "@@/api"
|
||||
import { hooks, router } from "@@/index"
|
||||
import { useCartStore } from "@/sheep/stores/cart"
|
||||
|
||||
@@ -177,6 +179,7 @@ onLoad(async () => {
|
||||
|
||||
await getAllMerchant()
|
||||
await getClassify()
|
||||
cartStore.saveShopMerchantId(state.curMerchant.id)
|
||||
await cartStore.getShopCart()
|
||||
})
|
||||
|
||||
@@ -209,6 +212,7 @@ const getClassify = async () => {
|
||||
if (state.curMerchant.id) {
|
||||
const { data } = await shopApi.getSupermarketSpuCategory({ merchantId: state.curMerchant.id })
|
||||
state.classifyList = data ?? []
|
||||
state.classifyList.unshift({ id: "", name: "全部分类" })
|
||||
if (!isEmpty(state.classifyList)) {
|
||||
state.params.categoryId = state.classifyList[0].id
|
||||
pageRef.value && pageRef.value.reload(true)
|
||||
@@ -227,11 +231,13 @@ const confirmRadioMerchant = async () => {
|
||||
state.curMerchant = state.merchantList.find((item: any) => item.id == state.curMerchantRadioId)
|
||||
state.showDrawer = false
|
||||
await getClassify()
|
||||
cartStore.saveShopMerchantId(state.curMerchant.id)
|
||||
await cartStore.getShopCart()
|
||||
}
|
||||
|
||||
// 点击搜索
|
||||
const searchProduct = () => {
|
||||
state.params.categoryId = ""
|
||||
pageRef.value && pageRef.value.reload(true)
|
||||
}
|
||||
|
||||
|
||||
@@ -4,36 +4,26 @@ import { foodApi } from "../api"
|
||||
export const useCartStore = defineStore("cartStore", {
|
||||
state: () => ({
|
||||
cart: JSON.parse(uni.getStorageSync("cart") || "[]"),
|
||||
shopMerchantId: uni.getStorageSync("shopMerchantId") || "",
|
||||
}),
|
||||
getters: {
|
||||
totCount(state) {
|
||||
return state.cart.reduce((prev, cur) => {
|
||||
return state.cart.reduce((prev: string, cur: any) => {
|
||||
return prev + cur.productCount
|
||||
}, 0)
|
||||
},
|
||||
totPrice(state) {
|
||||
return state.cart
|
||||
.map((item) => Number(item.totalPrice))
|
||||
.reduce((prev, cur) => prev + cur, 0)
|
||||
.map((item: any) => Number(item.totalPrice))
|
||||
.reduce((prev: number, cur: number) => prev + cur, 0)
|
||||
.toFixed(2)
|
||||
},
|
||||
},
|
||||
actions: {
|
||||
// 更新购物车中商品数量的方法
|
||||
updataGoodsCount(goods) {
|
||||
// 从购物车数组对象中查找到需要更新的这件商品
|
||||
const findResult = this.cart.find((item) => {
|
||||
return item.goods_id === goods.goods_id
|
||||
})
|
||||
// 如果查找到,就把这件商品传递的最新数量保存,并本地存储
|
||||
if (findResult) {
|
||||
findResult.goods_count = goods.goods_count
|
||||
this.saveToStorage()
|
||||
}
|
||||
saveShopMerchantId(shopMerchantId: string) {
|
||||
this.shopMerchantId = shopMerchantId
|
||||
uni.setStorageSync("shopMerchantId", this.shopMerchantId)
|
||||
},
|
||||
|
||||
// ===================================================================
|
||||
|
||||
saveToStorage() {
|
||||
uni.setStorageSync("cart", JSON.stringify(this.cart))
|
||||
},
|
||||
@@ -71,7 +61,7 @@ export const useCartStore = defineStore("cartStore", {
|
||||
await this.getShopCart()
|
||||
},
|
||||
async getShopCart() {
|
||||
const { data } = await foodApi.getShopCar({ merchantId: "1931916121241079810", hardType: "SUPERMARKET" })
|
||||
const { data } = await foodApi.getShopCar({ merchantId: this.shopMerchantId, hardType: "SUPERMARKET" })
|
||||
this.saveShoppingCart(data ?? [])
|
||||
},
|
||||
async updateShopCart() {
|
||||
@@ -83,7 +73,7 @@ export const useCartStore = defineStore("cartStore", {
|
||||
productId: v.productId,
|
||||
}
|
||||
})
|
||||
const { code }: any = await foodApi.updateShopCar({ merchantId: "1931916121241079810", list, hardType: "SUPERMARKET" })
|
||||
const { code }: any = await foodApi.updateShopCar({ merchantId: this.shopMerchantId, list, hardType: "SUPERMARKET" })
|
||||
if (code == 0) return await this.getShopCart()
|
||||
uni.showToast({ title: "更新购物车失败", icon: "none" })
|
||||
},
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1750384226152" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4917" data-spm-anchor-id="a313x.search_index.0.i6.81863a81aL498c" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><path d="M761.906 443.743c4.075-23.209 26.193-38.72 49.402-34.646 23.21 4.075 38.721 26.193 34.646 49.402C825.75 573.584 723.823 721.972 540.66 908.62c-16.725 17.043-44.18 17.043-60.905 0-205.386-209.293-309.088-370.672-309.088-491.875 0-183.302 152.278-331.41 339.54-331.41 136.446 0 258.175 79.33 311.633 199.64 9.569 21.535-0.132 46.748-21.666 56.316-21.534 9.569-46.747-0.132-56.316-21.666-39.78-89.528-130.972-148.957-233.65-148.957C369.55 170.667 256 281.109 256 416.744c0 86.412 84.168 222.13 254.208 400.62C662.761 657.25 746.527 531.34 761.906 443.745zM510.207 574.91c-88.886 0-161.416-70.544-161.416-158.165 0-87.62 72.53-158.164 161.416-158.164 88.887 0 161.417 70.543 161.417 158.164 0 87.621-72.53 158.165-161.417 158.165z m0-85.334c42.28 0 76.083-32.877 76.083-72.83 0-39.955-33.802-72.832-76.083-72.832-42.28 0-76.083 32.877-76.083 72.831s33.803 72.831 76.083 72.831z" fill="#3496F9" p-id="4918"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
@@ -0,0 +1 @@
|
||||
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1750384429039" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="7956" xmlns:xlink="http://www.w3.org/1999/xlink" width="64" height="64"><path d="M905.386667 278.613333c28.501333 0 42.773333 34.474667 22.613333 54.634667L533.333333 727.914667a32 32 0 0 1-45.248 0l-394.666666-394.666667c-20.16-20.16-5.888-54.613333 22.613333-54.613333h789.333333z" fill="#3496F9" p-id="7957" data-spm-anchor-id="a313x.search_index.0.i14.81863a81aL498c" class="selected"></path></svg>
|
||||
|
After Width: | Height: | Size: 652 B |
Binary file not shown.
|
After Width: | Height: | Size: 746 B |
Binary file not shown.
|
After Width: | Height: | Size: 734 B |
Reference in new issue
Block a user