Browse Source

feat(mc): 商户项目,添加基础结构和组件

EvilDragon 5 months ago
parent
commit
d2e35c3cda

BIN
packages/merchant/src/assets/pngs/member-text-v1.png


+ 9 - 0
packages/merchant/src/assets/svgs/member-icon-v1.svg

@@ -0,0 +1,9 @@
+<svg width="20" height="19" viewBox="0 0 20 19" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M9.99989 0C10.2827 0 10.5505 0.124446 10.7316 0.338893L14.9455 5.34561L18.5194 2.9867C18.6776 2.88258 18.8631 2.82756 19.0525 2.82855C19.2419 2.82954 19.4268 2.88649 19.5839 2.99226C19.9044 3.20837 20.0606 3.5956 19.9783 3.97116L17.5972 14.8129C17.55 15.0243 17.432 15.2131 17.2627 15.3482C17.0935 15.4833 16.8832 15.5565 16.6666 15.5557H3.33315C3.11661 15.5565 2.9063 15.4833 2.73706 15.3482C2.56782 15.2131 2.44981 15.0243 2.40258 14.8129L0.0214436 3.97116C-0.0185619 3.78725 -0.00233997 3.59556 0.0680023 3.42099C0.138345 3.24643 0.259556 3.09705 0.415892 2.99226C0.573009 2.88649 0.757885 2.82954 0.947281 2.82855C1.13668 2.82756 1.32214 2.88258 1.48035 2.9867L5.05428 5.34561L9.26821 0.338893C9.44988 0.124446 9.71711 0 9.99989 0ZM2.22202 17.963C2.22202 17.4519 2.65758 17.0374 3.19426 17.0374H16.8055C17.1527 17.0374 17.4739 17.2135 17.6478 17.5002C17.733 17.6396 17.7781 17.7998 17.7781 17.9633C17.7781 18.1267 17.733 18.2869 17.6478 18.4263C17.4739 18.7124 17.1533 18.8891 16.8055 18.8891H3.19426C2.65758 18.8891 2.22202 18.4746 2.22202 17.963ZM8.54154 11.4818C8.54154 11.9929 8.9771 12.4074 9.51377 12.4074H10.486C11.0227 12.4074 11.4582 11.9929 11.4582 11.4818C11.4582 10.9707 11.0227 10.5557 10.486 10.5557H9.51377C8.9771 10.5557 8.54154 10.9701 8.54154 11.4818Z" fill="url(#paint0_linear_460_15303)"/>
+<defs>
+<linearGradient id="paint0_linear_460_15303" x1="7.5" y1="1.5" x2="18.5" y2="19" gradientUnits="userSpaceOnUse">
+<stop stop-color="#8FB8DB"/>
+<stop offset="0.745494" stop-color="#3D556B"/>
+</linearGradient>
+</defs>
+</svg>

+ 9 - 0
packages/merchant/src/assets/svgs/member-icon-v2.svg

@@ -0,0 +1,9 @@
+<svg width="20" height="19" viewBox="0 0 20 19" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M9.99989 0C10.2827 0 10.5505 0.124446 10.7316 0.338893L14.9455 5.34561L18.5194 2.9867C18.6776 2.88258 18.8631 2.82756 19.0525 2.82855C19.2419 2.82954 19.4268 2.88649 19.5839 2.99226C19.9044 3.20837 20.0606 3.5956 19.9783 3.97116L17.5972 14.8129C17.55 15.0243 17.432 15.2131 17.2627 15.3482C17.0935 15.4833 16.8832 15.5565 16.6666 15.5557H3.33315C3.11661 15.5565 2.9063 15.4833 2.73706 15.3482C2.56782 15.2131 2.44981 15.0243 2.40258 14.8129L0.0214436 3.97116C-0.0185619 3.78725 -0.00233997 3.59556 0.0680023 3.42099C0.138345 3.24643 0.259556 3.09705 0.415892 2.99226C0.573009 2.88649 0.757885 2.82954 0.947281 2.82855C1.13668 2.82756 1.32214 2.88258 1.48035 2.9867L5.05428 5.34561L9.26821 0.338893C9.44988 0.124446 9.71711 0 9.99989 0ZM2.22202 17.963C2.22202 17.4519 2.65758 17.0374 3.19426 17.0374H16.8055C17.1527 17.0374 17.4739 17.2135 17.6478 17.5002C17.733 17.6396 17.7781 17.7998 17.7781 17.9633C17.7781 18.1267 17.733 18.2869 17.6478 18.4263C17.4739 18.7124 17.1533 18.8891 16.8055 18.8891H3.19426C2.65758 18.8891 2.22202 18.4746 2.22202 17.963ZM8.54154 11.4818C8.54154 11.9929 8.9771 12.4074 9.51377 12.4074H10.486C11.0227 12.4074 11.4582 11.9929 11.4582 11.4818C11.4582 10.9707 11.0227 10.5557 10.486 10.5557H9.51377C8.9771 10.5557 8.54154 10.9701 8.54154 11.4818Z" fill="url(#paint0_linear_460_14619)"/>
+<defs>
+<linearGradient id="paint0_linear_460_14619" x1="7.5" y1="1.5" x2="18.5" y2="19" gradientUnits="userSpaceOnUse">
+<stop stop-color="#CCD0D5"/>
+<stop offset="0.745494" stop-color="#A5A6A8"/>
+</linearGradient>
+</defs>
+</svg>

+ 9 - 0
packages/merchant/src/assets/svgs/member-icon-v3.svg

@@ -0,0 +1,9 @@
+<svg width="20" height="19" viewBox="0 0 20 19" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M9.99989 0C10.2827 0 10.5505 0.124446 10.7316 0.338893L14.9455 5.34561L18.5194 2.9867C18.6776 2.88258 18.8631 2.82756 19.0525 2.82855C19.2419 2.82954 19.4268 2.88649 19.5839 2.99226C19.9044 3.20837 20.0606 3.5956 19.9783 3.97116L17.5972 14.8129C17.55 15.0243 17.432 15.2131 17.2627 15.3482C17.0935 15.4833 16.8832 15.5565 16.6666 15.5557H3.33315C3.11661 15.5565 2.9063 15.4833 2.73706 15.3482C2.56782 15.2131 2.44981 15.0243 2.40258 14.8129L0.0214436 3.97116C-0.0185619 3.78725 -0.00233997 3.59556 0.0680023 3.42099C0.138345 3.24643 0.259556 3.09705 0.415892 2.99226C0.573009 2.88649 0.757885 2.82954 0.947281 2.82855C1.13668 2.82756 1.32214 2.88258 1.48035 2.9867L5.05428 5.34561L9.26821 0.338893C9.44988 0.124446 9.71711 0 9.99989 0ZM2.22202 17.963C2.22202 17.4519 2.65758 17.0374 3.19426 17.0374H16.8055C17.1527 17.0374 17.4739 17.2135 17.6478 17.5002C17.733 17.6396 17.7781 17.7998 17.7781 17.9633C17.7781 18.1267 17.733 18.2869 17.6478 18.4263C17.4739 18.7124 17.1533 18.8891 16.8055 18.8891H3.19426C2.65758 18.8891 2.22202 18.4746 2.22202 17.963ZM8.54154 11.4818C8.54154 11.9929 8.9771 12.4074 9.51377 12.4074H10.486C11.0227 12.4074 11.4582 11.9929 11.4582 11.4818C11.4582 10.9707 11.0227 10.5557 10.486 10.5557H9.51377C8.9771 10.5557 8.54154 10.9701 8.54154 11.4818Z" fill="url(#paint0_linear_460_14943)"/>
+<defs>
+<linearGradient id="paint0_linear_460_14943" x1="7.5" y1="1.5" x2="18.5" y2="19" gradientUnits="userSpaceOnUse">
+<stop stop-color="#C18E52"/>
+<stop offset="0.745494" stop-color="#896232"/>
+</linearGradient>
+</defs>
+</svg>

+ 9 - 0
packages/merchant/src/assets/svgs/member-icon-v4.svg

@@ -0,0 +1,9 @@
+<svg width="20" height="19" viewBox="0 0 20 19" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M9.99989 0C10.2827 0 10.5505 0.124446 10.7316 0.338893L14.9455 5.34561L18.5194 2.9867C18.6776 2.88258 18.8631 2.82756 19.0525 2.82855C19.2419 2.82954 19.4268 2.88649 19.5839 2.99226C19.9044 3.20837 20.0606 3.5956 19.9783 3.97116L17.5972 14.8129C17.55 15.0243 17.432 15.2131 17.2627 15.3482C17.0935 15.4833 16.8832 15.5565 16.6666 15.5557H3.33315C3.11661 15.5565 2.9063 15.4833 2.73706 15.3482C2.56782 15.2131 2.44981 15.0243 2.40258 14.8129L0.0214436 3.97116C-0.0185619 3.78725 -0.00233997 3.59556 0.0680023 3.42099C0.138345 3.24643 0.259556 3.09705 0.415892 2.99226C0.573009 2.88649 0.757885 2.82954 0.947281 2.82855C1.13668 2.82756 1.32214 2.88258 1.48035 2.9867L5.05428 5.34561L9.26821 0.338893C9.44988 0.124446 9.71711 0 9.99989 0ZM2.22202 17.963C2.22202 17.4519 2.65758 17.0374 3.19426 17.0374H16.8055C17.1527 17.0374 17.4739 17.2135 17.6478 17.5002C17.733 17.6396 17.7781 17.7998 17.7781 17.9633C17.7781 18.1267 17.733 18.2869 17.6478 18.4263C17.4739 18.7124 17.1533 18.8891 16.8055 18.8891H3.19426C2.65758 18.8891 2.22202 18.4746 2.22202 17.963ZM8.54154 11.4818C8.54154 11.9929 8.9771 12.4074 9.51377 12.4074H10.486C11.0227 12.4074 11.4582 11.9929 11.4582 11.4818C11.4582 10.9707 11.0227 10.5557 10.486 10.5557H9.51377C8.9771 10.5557 8.54154 10.9701 8.54154 11.4818Z" fill="url(#paint0_linear_460_15169)"/>
+<defs>
+<linearGradient id="paint0_linear_460_15169" x1="7.5" y1="1.5" x2="18.5" y2="19" gradientUnits="userSpaceOnUse">
+<stop stop-color="#AF542F"/>
+<stop offset="0.745494" stop-color="#592E1A"/>
+</linearGradient>
+</defs>
+</svg>

File diff suppressed because it is too large
+ 2 - 0
packages/merchant/src/assets/svgs/scan.svg


+ 6 - 0
packages/merchant/src/assets/svgs/success.svg

@@ -0,0 +1,6 @@
+<svg width="76" height="76" viewBox="0 0 76 76" fill="none" xmlns="http://www.w3.org/2000/svg">
+<circle cx="38" cy="38" r="30" fill="black" fill-opacity="0.85"/>
+<circle cx="38" cy="38" r="30" fill="black" fill-opacity="0.65"/>
+<circle cx="38" cy="38" r="30" fill="black" fill-opacity="0.45"/>
+<path d="M35.8672 47.4909C35.3092 47.4909 34.7534 47.2816 34.3277 46.8653L25.6183 38.3116C24.7692 37.4767 24.7692 36.1219 25.6183 35.287C26.4696 34.4522 27.848 34.4522 28.6971 35.287L35.8672 42.3285L49.5676 28.8734C50.4168 28.0363 51.7952 28.0363 52.6465 28.8734C53.4956 29.7083 53.4956 31.0609 52.6465 31.8958L37.4066 46.8653C36.9809 47.2816 36.423 47.4909 35.8672 47.4909Z" fill="white"/>
+</svg>

+ 3 - 0
packages/merchant/src/assets/svgs/thumbs-up-active.svg

@@ -0,0 +1,3 @@
+<svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M7.42562 3.17929C7.57957 1.71038 9.23209 0.656373 10.6019 1.47823C10.7337 1.55734 10.8976 1.67514 11.0236 1.857C11.2162 2.13509 11.5 2.68535 11.5 3.50021V5.50035C11.5 5.77641 11.7238 6.00021 12 6.00021H14.6126C15.6364 6.00021 16.3594 7.00326 16.0356 7.97456L13.7023 14.9746C13.4981 15.5871 12.9249 16.0002 12.2792 16.0002H6.5C5.67157 16.0002 5 15.3286 5 14.5002V9.50021C5 9.22407 5.22386 9.00021 5.5 9.00021C5.77614 9.00021 6 9.22407 6 9.50021V14.5002C6 14.7764 6.22386 15.0002 6.5 15.0002H12.2792C12.4945 15.0002 12.6855 14.8625 12.7536 14.6583L15.0869 7.65833C15.1948 7.33456 14.9539 7.00021 14.6126 7.00021H12C11.1717 7.00021 10.5 6.32887 10.5 5.50035V3.50021C10.5 2.92943 10.3038 2.57405 10.2016 2.4265C10.1905 2.41049 10.1619 2.38047 10.0874 2.33572C9.4464 1.95115 8.51064 2.42033 8.42017 3.28353C8.34714 3.98034 8.21299 4.73388 7.93961 5.23841C7.41288 6.21053 6.74468 6.67516 6.39904 6.86295C6.20019 6.97099 5.99384 7.00021 5.82167 7.00021H3C2.72386 7.00021 2.5 7.22407 2.5 7.50021V14.5002C2.5 14.7764 2.72386 15.0002 3 15.0002H3.5C3.77614 15.0002 4 15.2241 4 15.5002C4 15.7764 3.77614 16.0002 3.5 16.0002H3C2.17157 16.0002 1.5 15.3286 1.5 14.5002V7.50021C1.5 6.67179 2.17157 6.00021 3 6.00021H5.82167C5.88541 6.00021 5.91319 5.98886 5.92163 5.98427C6.13346 5.86918 6.6437 5.53104 7.06039 4.76201C7.23082 4.44746 7.35308 3.87135 7.42562 3.17929Z" fill="black" fill-opacity="0.85"/>
+</svg>

+ 4 - 0
packages/merchant/src/components/nav-bar.vue

@@ -0,0 +1,4 @@
+<script setup lang="ts"></script>
+<template>
+  <div></div>
+</template>

+ 27 - 0
packages/merchant/src/core/libs/actions.ts

@@ -0,0 +1,27 @@
+import { title } from 'radash'
+import { cancelCircleReviewUpvote, cancelCircleUpvote, createCircleUpvote } from './requests'
+
+const toast = (title: string) => uni.showToast({ title, icon: 'none' })
+export const handleUpvoteClick = async (
+  {
+    upvote,
+    circleId,
+    userId,
+    userName,
+  }: {
+    upvote: boolean
+    circleId: number
+    userId: number
+    userName: string
+  },
+  callback?: () => void,
+) => {
+  if (!upvote) {
+    const { code, msg } = await createCircleUpvote({ circleId, userId, userName })
+    code === 0 && toast('点赞成功')
+  } else {
+    const { code } = await cancelCircleUpvote({ id: circleId.toString() })
+    code === 0 && toast('取消点赞成功')
+  }
+  callback && callback()
+}

+ 6 - 0
packages/merchant/src/core/themes/default.scss

@@ -0,0 +1,6 @@
+:root,
+page {
+}
+.wd-button {
+  line-height: 0;
+}

+ 66 - 0
packages/merchant/src/layouts/back.vue

@@ -0,0 +1,66 @@
+<script lang="ts" setup>
+import { defaultThemeVars } from '../core/themes/default'
+import { ref } from 'vue'
+
+const slots = useSlots()
+const childRef = ref()
+const menuBtnClientRect = ref<UniNamespace.GetMenuButtonBoundingClientRectRes>({
+  width: 0,
+  height: 0,
+  top: 0,
+  right: 0,
+  bottom: 0,
+  left: 0,
+})
+const startMenuBtnStyle = ref({
+  width: '0px',
+  height: '0px',
+  left: '0px',
+  top: '0px',
+})
+const navHeight = ref('0px')
+onMounted(async () => {
+  menuBtnClientRect.value = await uni.getMenuButtonBoundingClientRect()
+  const { windowWidth } = await uni.getWindowInfo()
+  startMenuBtnStyle.value = {
+    width: menuBtnClientRect.value.width + 'px',
+    height: menuBtnClientRect.value.height + 'px',
+    top: `${menuBtnClientRect.value.top}px`,
+    left: `${windowWidth - menuBtnClientRect.value.right}px`,
+  }
+  navHeight.value = `${menuBtnClientRect.value.top + menuBtnClientRect.value.height + 8}px`
+  console.log(menuBtnClientRect.value)
+})
+const handleBack = () => {
+  uni.navigateBack()
+}
+</script>
+<template>
+  <wd-config-provider
+    class="flex-grow flex flex-col"
+    custom-class="flex-grow"
+    :themeVars="defaultThemeVars"
+  >
+    <view class="bg-[#f6f6f6] flex-grow flex flex-col">
+      <div v-if="childRef?.navBarFixed ?? false" class="" :style="{ height: navHeight }"></div>
+      <div
+        class="fixed rounded-full flex items-center justify-start px-3 box-border z-1"
+        :style="startMenuBtnStyle"
+      >
+        <wd-button
+          type="icon"
+          size="small"
+          icon="thin-arrow-left"
+          custom-class="ml--3 text-white!"
+          @click="handleBack"
+        ></wd-button>
+      </div>
+      <!-- {{ slots }} -->
+      <!-- <div ref="childRef"> -->
+      <slot></slot>
+      <!-- </div> -->
+    </view>
+    <wd-toast />
+    <wd-message-box />
+  </wd-config-provider>
+</template>

+ 113 - 0
packages/merchant/src/pages/mine/authentication/index.vue

@@ -0,0 +1,113 @@
+<route lang="yaml">
+style:
+  navigationBarTitleText: 设计师认证
+  navigationStyle: custom
+</route>
+<script lang="ts" setup>
+import Card from '@/components/card.vue'
+import DataForm from '@/components/data-form.vue'
+import SectionHeading from '@/components/section-heading.vue'
+import StartMenuButton from '@/components/start-menu-button.vue'
+import { createUserAuthInfo, getByDictType } from '@/core/libs/requests'
+import { scan } from '@/core/libs/svgs'
+import { useUserStore } from '@/store'
+import { storeToRefs } from 'pinia'
+import { useMessage, useToast } from 'wot-design-uni'
+
+const userStore = useUserStore()
+const { userInfo } = storeToRefs(userStore)
+const { alert } = useMessage()
+const { error } = useToast()
+const formData = ref({})
+const schema = ref({
+  channelSource: {
+    type: 'Select',
+    label: '来源',
+    props: {
+      labelWidth: '126rpx',
+      placeholder: '请选择通过哪个渠道入驻的筑巢荟',
+      columns: [],
+    },
+  },
+  referrer: {
+    type: 'TextField',
+    label: '推荐人',
+    props: {
+      labelWidth: '126rpx',
+      placeholder: '请如实填写推荐人编号,设计师会员编号或渠道编号',
+    },
+  },
+  designerName: {
+    type: 'TextField',
+    label: '姓名',
+    props: {
+      labelWidth: '126rpx',
+      placeholder: '请输入真实姓名',
+    },
+  },
+  mobile: {
+    type: 'TextField',
+    label: '电话',
+    props: {
+      labelWidth: '126rpx',
+      placeholder: '请输入电话号码',
+    },
+  },
+  employer: {
+    type: 'TextField',
+    label: '公司',
+    props: {
+      labelWidth: '126rpx',
+      placeholder: '请输入所在公司或自己公司名称',
+    },
+  },
+  spatialExpertiseType: {
+    type: 'TextField',
+    label: '擅长空间类型',
+    props: {
+      placeholder: ' ',
+    },
+  },
+})
+const handleSubmit = async () => {
+  const { code, msg } = await createUserAuthInfo({
+    gender: userInfo.value.sex,
+    attachment: 'https://via.placeholder.com/319x204',
+    userId: userInfo.value.userId,
+    ...formData.value,
+  })
+  if (code === 0) {
+    uni.navigateTo({ url: '/pages/mine/authentication/submit/success/index' })
+  } else {
+    error(msg)
+  }
+}
+onMounted(async () => {
+  const { data } = await getByDictType('member_channel_source')
+  console.log()
+  schema.value.channelSource.props.columns = data
+  alert({ title: '提示', msg: '您的认证申请已提交,请耐心等待审核,审核通过后您将获得通知' })
+})
+</script>
+<template>
+  <div class="flex-grow flex flex-col p-3.5 gap-3.5">
+    <StartMenuButton>
+      1
+      <!-- <wd-button type="icon">
+        <wd-img wdith="25" height="25" :src="scan"></wd-img>
+      </wd-button> -->
+    </StartMenuButton>
+    <Card>
+      <SectionHeading size="base" title="基本信息"></SectionHeading>
+      <DataForm v-model="formData" :schema="schema" direction="horizontal"></DataForm>
+    </Card>
+    <Card>
+      <SectionHeading size="base" title="上传附件"></SectionHeading>
+      <wd-upload></wd-upload>
+    </Card>
+    <div class="flex-1"></div>
+    <div>
+      <wd-button block :round="false" @click="handleSubmit">提交</wd-button>
+    </div>
+  </div>
+</template>

+ 22 - 0
packages/merchant/src/pages/mine/authentication/submit/success/index.vue

@@ -0,0 +1,22 @@
+<route lang="yaml">
+style:
+  navigationBarTitleText: 提交成功
+</route>
+<script setup lang="ts">
+import { success } from '@/core/libs/svgs'
+</script>
+<template>
+  <div class="flex-grow flex flex-col justify-center items-center">
+    <wd-img width="60" height="60" :src="success" custom-class="mb-4.5"></wd-img>
+    <div class="mb-10 text-black/90 text-xl font-normal font-['PingFang SC'] leading-none">
+      提交成功
+    </div>
+    <div
+      class="text-center text-black/40 text-base font-normal font-['PingFang SC'] leading-relaxed"
+    >
+      我们会有专属客户与您联系
+      <br />
+      请您注意接听电话
+    </div>
+  </div>
+</template>

+ 108 - 0
packages/merchant/src/pages/mine/homepage/index.vue

@@ -0,0 +1,108 @@
+<route lang="yaml">
+layout: back
+style:
+  navigationStyle: custom
+</route>
+<script setup lang="ts">
+import MomentItem from '@/components/moment-item.vue'
+import { getByDictType, getCircles } from '../../../core/libs/requests'
+import { useUserStore } from '../../../store'
+import { storeToRefs } from 'pinia'
+
+const userStore = useUserStore()
+const { userInfo } = storeToRefs(userStore)
+const tab = ref('2')
+const { data: circleTypes, run: getCircleType } = useRequest(() =>
+  getByDictType('member_circle_type'),
+)
+const circlesData = ref({ list: [] })
+// const { data: circlesData, run } = useRequest(
+//   () =>
+//     getCircles({
+//       circleType: tab.value,
+//       // stylistName: userInfo.value.nickname,
+//       stylistId: userInfo.value.userId,
+//     }),
+//   { initialData: { list: [] } },
+// )
+const setCirclesData = async (circleType) => {
+  const { data } = await getCircles({
+    circleType,
+    stylistId: userInfo.value.userId,
+  })
+  circlesData.value = data
+}
+const tabs = ref([
+  { label: '案例', value: '2' },
+  { label: '动态', value: '1' },
+  { label: '视频', value: '0' },
+])
+const handleTabsChange = async ({ name }: any) => {
+  if (['1', '2'].includes(name)) {
+    await setCirclesData(name)
+  }
+}
+onMounted(async () => {
+  // await getCircleType()
+  await setCirclesData(tab.value)
+  console.log(circleTypes.value)
+
+  // await run()
+})
+defineExpose({
+  navBarFixed: false,
+})
+</script>
+<template>
+  <div class="">
+    <div class="relative">
+      <wd-img
+        width="100%"
+        :src="'https://via.placeholder.com/375x329'"
+        mode="widthFix"
+        custom-class="aspect-[1.14/1]"
+      />
+      <div class="absolute bottom-0 left-0 right-0">
+        <div class="h-[107px] bg-gradient-to-t from-black to-transparent">
+          <div class="flex">
+            <div
+              class="w-18 h-18 border-white border border-solid mx-3.5 rounded-full overflow-hidden"
+            >
+              <wd-img width="100%" height="100%" :src="userInfo?.avatar"></wd-img>
+            </div>
+            <div>
+              <div class="text-white text-2xl font-normal font-['PingFang SC'] leading-normal">
+                {{ userInfo?.nickname }}
+              </div>
+              <div>
+                <div
+                  class="h-6 px-2 bg-black/10 rounded-[30px] border border-white/60 justify-center items-center gap-2.5 inline-flex"
+                >
+                  <div
+                    class="text-center text-white text-[10px] font-normal font-['PingFang SC'] leading-normal"
+                  >
+                    创设空间事务所创始人
+                  </div>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </div>
+    <div class="bg-white rounded-t-2xl relative bottom-4">
+      <wd-tabs v-model="tab" @change="handleTabsChange">
+        <template v-for="({ label, value }, index) in tabs" :key="index">
+          <wd-tab :title="label" :name="value"></wd-tab>
+        </template>
+      </wd-tabs>
+      <div class="p-3.5 flex flex-col bg-[#f6f6f6] gap-3.5">
+        <template v-for="it of circlesData.list" :key="it.id">
+          <view class="">
+            <MomentItem :options="it"></MomentItem>
+          </view>
+        </template>
+      </div>
+    </div>
+  </div>
+</template>

Some files were not shown because too many files changed in this diff