Browse Source

Merge branch 'main' of https://github.com/omnia96/designer-hub into main

EvilDragon 3 months ago
parent
commit
7d3f13257e

+ 50 - 3
packages/merchant/src/components/data-form.vue

@@ -25,7 +25,7 @@ withDefaults(
   defineProps<{
     schema: {
       [key: symbol]: {
-        type: 'TextField' | 'Select' | 'Radio' | 'Submit'
+        type: 'TextField' | 'Select' | 'Radio' | 'Submit' | 'timePick'
         label?: string
         existing?: boolean
         props?: any
@@ -95,7 +95,7 @@ defineExpose({
 </script>
 <template>
   <wd-config-provider :theme-vars="themeVars">
-    <wd-form ref="form" :model="modelValue" >
+    <wd-form ref="form" :model="modelValue">
       <template
         v-for="([prop, { type, label, existing, props }], index) in Object.entries(schema)"
         :key="index"
@@ -113,9 +113,14 @@ defineExpose({
           <label
             v-if="type !== 'Submit'"
             class="text-sm font-normal leading-relaxed"
-            :class="[direction === 'horizontal' ? 'text-black/60' : 'mb-1 text-black/40']"
+            :class="[
+              direction === 'horizontal'
+                ?  'text-black/60'
+                : 'mb-1 text-black/40',
+            ]"
             :for="prop"
           >
+            <span v-if="props?.required" style="color: #ff2e2e">*</span>
             {{ label || prop }}
           </label>
           <wd-input
@@ -128,6 +133,28 @@ defineExpose({
             }"
             v-model="modelValue[prop]"
           ></wd-input>
+          <wd-datetime-picker
+            v-model="modelValue[prop]"
+            v-if="type === 'timePick'"
+            v-bind="{
+              ...(direction === 'vertical'
+                ? verticalDefaultProps[type]
+                : horizontalDefaultProps[type]),
+              cell: false,
+              ...props,
+            }"
+          />
+          <wd-textarea
+            v-if="type === 'textarea'"
+            v-model="modelValue[prop]"
+            v-bind="{
+              ...(direction === 'vertical'
+                ? verticalDefaultProps[type]
+                : horizontalDefaultProps[type]),
+              cell: false,
+              ...props,
+            }"
+          />
           <wd-picker
             v-if="type === 'Select'"
             v-bind="{
@@ -171,3 +198,23 @@ defineExpose({
     </wd-form>
   </wd-config-provider>
 </template>
+<style lang="less" scoped>
+:deep(.wd-input) {
+  background-color: #f5f7f9;
+  border-radius: 8px;
+  padding: 5px;
+  margin-left: 5px;
+}
+.wd-input::after {
+  height: 0;
+}
+:deep(.wd-picker) {
+  background-color: #f5f7f9;
+  border-radius: 8px;
+  padding: 5px;
+  margin-left: 5px;
+}
+:deep(.wd-picker__cell) {
+  background: transparent;
+}
+</style>

+ 3 - 4
packages/merchant/src/pages.json

@@ -136,10 +136,9 @@
     {
       "path": "pages/home/tasks/index",
       "type": "page",
-      "style": {
-        "navigationBarTitleText": "全部任务",
-        "navigationBarBackgroundColor": "#fff"
-      }
+      "style": null,
+      "navigationBarTitleText": "全部任务",
+      "navigationBarBackgroundColor": "#fff"
     },
     {
       "path": "pages/mine/merchant/merchant_settings",

+ 19 - 15
packages/merchant/src/pages/home/merchant/add-reporting-information.vue

@@ -15,11 +15,12 @@ const stylistIdName = ref('')
 const merchantSchema = ref({
   stylistId: {
     type: 'Select',
-    label: '设计师',
+    label: '设计师:',
     props: {
-      labelWidth: '126rpx',
-      placeholder: '请选择通过哪个渠道入驻的筑巢荟',
+      labelWidth: '150rpx',
+      placeholder: '请选择设计师',
       columns: [],
+      required: true,
       // disabled: userAuthInfo.value != null,
       'onUpdate:modelValue': (value) => {
         // console.log(value),
@@ -34,10 +35,11 @@ const merchantSchema = ref({
     },
   },
   arrivalTime: {
-    type: 'TextField',
-    label: '到店时间',
+    type: 'timePick',
+    label: '到店时间:',
     props: {
-      labelWidth: '126rpx',
+      required: true,
+      labelWidth: '150rpx',
       placeholder: '请选择到店时间',
       // disabled: userAuthInfo.value != null,
     },
@@ -47,24 +49,27 @@ const merchantSchema = ref({
     label: '店面名称',
     existing: true,
     props: {
-      labelWidth: '126rpx',
+      required: true,
+      labelWidth: '150rpx',
       placeholder: '店面名称',
       // disabled: userAuthInfo.value != null,
     },
   },
   receptionist: {
     type: 'TextField',
-    label: '接待人员',
+    label: '接待人员:',
     props: {
-      labelWidth: '126rpx',
+      required: true,
+      labelWidth: '150rpx',
       placeholder: '请输入接待人员',
     },
   },
   contactNumber: {
     type: 'TextField',
-    label: '联系电话',
+    label: '联系电话:',
     props: {
-      labelWidth: '126rpx',
+      required: true,
+      labelWidth: '150rpx',
       placeholder: '请输入联系电话',
     },
   },
@@ -72,7 +77,7 @@ const merchantSchema = ref({
 const customerSchema = ref({
   customerName: {
     type: 'TextField',
-    label: '客户姓名',
+    label: '客户姓名:',
     props: {
       labelWidth: '126rpx',
       placeholder: '请输入客户姓名',
@@ -80,7 +85,7 @@ const customerSchema = ref({
   },
   customerPhoneNumbe: {
     type: 'TextField',
-    label: '客户电话',
+    label: '客户电话:',
     props: {
       labelWidth: '126rpx',
       placeholder: '请输入客户电话',
@@ -88,7 +93,7 @@ const customerSchema = ref({
   },
   customerAddress: {
     type: 'TextField',
-    label: '客户地址',
+    label: '客户地址:',
     props: {
       labelWidth: '126rpx',
       placeholder: '请输入客户地址',
@@ -97,7 +102,6 @@ const customerSchema = ref({
 })
 const SubmitClick = async () => {
   console.log(formData.value)
-  formData.value.arrivalTime = 1730292340000
   formData.value.stylistName = stylistIdName.value
   uni.showLoading()
   const {code, msg} = await createReportInfo(formData.value)

+ 124 - 75
packages/merchant/src/pages/home/tasks/detail/index.vue

@@ -11,14 +11,15 @@ const types = ref({
   1: { title: '到店', bg: '', bgClass: 'bg-gradient-to-r from-[#cfe0ff] to-[#e1ecff]' },
   2: { title: '订单', bg: '', bgClass: 'bg-gradient-to-r from-[#ffe8cf] to-[#fff3e1]' },
 })
+const current = ref<number>(10)
 const type = ref(1)
 </script>
 <template>
   <view class="flex-grow flex flex-col p-4 gap-4">
-    <Card :custom-class="[types[type].bgClass, 'p-0']">
-      <div class="flex p-4 items-center">
-        <div class="text-black/90 text-lg font-normal font-['PingFang_SC'] leading-none">
-          目标{{ types[type].title }}(30)量
+    <Card :custom-class="`${types[type].bgClass} px-0 py-0`">
+      <div class="flex items-center py-[20px] px-[15px]">
+        <div class="text-black/90 text-lg font-normal font-['PingFang SC'] leading-none">
+          团队任务
         </div>
         <div class="flex-1"></div>
         <div
@@ -29,110 +30,158 @@ const type = ref(1)
           </div>
         </div>
       </div>
-      <div class="flex flex-col gap-4 bg-white p-5 rounded-2xl">
-        <div
-          class="grid grid-cols-[2fr_2fr_3fr] items-center border-b border-b-solid border-b-[#efefef] pb-1.5"
-        >
-          <div class="flex items-center">
-            <div class="text-black/90 text-sm font-normal font-['PingFang_SC']">目标</div>
-            <div class="ml-2 text-black/90 text-lg font-medium font-['DIN'] leading-normal">30</div>
-          </div>
-          <div class="flex items-center justify-center">
-            <div class="text-[#2357e9] text-sm font-normal font-['PingFang_SC']">完成</div>
-            <div class="ml-2 text-[#2357e9] text-lg font-medium font-['DIN'] leading-normal">
-              22
-            </div>
+      <div class="bg-[#f6f7ff]" style="border-top-left-radius: 8px; border-top-right-radius: 8px">
+        <div class="flex flex-row items-center justify-start p-[15px] gap-2">
+
+          <div style="width: 50px;height: 50px">
+            <wd-circle v-model="current" :size="50" color="rgba(66, 113, 255, 1)"></wd-circle>
           </div>
-          <div class="flex items-center justify-end">
-            <div class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-none">
-              奖励积分
+          <div class="flex flex-row items-center justify-start ml-[37px]">
+            <div class="text-black/60 text-sm font-normal font-['PingFang SC']">奖励积分:</div>
+            <div class="text-[#ff2d2d] text-[22px] font-medium font-['DIN'] leading-normal">
+              6000
             </div>
-            <div class="ml-2 text-[#ff2e2e] text-[22px] font-medium font-['DIN'] leading-none">
-              2000
+            <div class="text-[#ff2d2d] text-xs font-normal font-['PingFang SC'] leading-normal">
+              积分
             </div>
           </div>
         </div>
-        <div>
-          <span class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-none">
-            材料商:
+        <div class="flex flex-row items-center justify-between gap-2 p-[20px]">
+          <div class="flex items-center justify-center flex-col">
+            <div class="text-black/60 text-xs font-normal font-['PingFang SC']">目标</div>
+            <div class="w-5 text-black/90 text-lg font-medium font-['DIN'] leading-normal">30</div>
+          </div>
+          <div style="background: #e8e8e8; height: 10px; width: 1px"></div>
+          <div class="flex items-center justify-center flex-col">
+            <div class="text-black/60 text-xs font-normal font-['PingFang SC']">个人完成</div>
+            <div class="w-5 text-black/90 text-lg font-medium font-['DIN'] leading-normal">30</div>
+          </div>
+          <div style="background: #e8e8e8; height: 5px; width: 1px"></div>
+          <div class="flex items-center justify-center flex-col">
+            <div class="text-black/60 text-xs font-normal font-['PingFang SC']">累计完成</div>
+            <div class="w-5 text-black/90 text-lg font-medium font-['DIN'] leading-normal">30</div>
+          </div>
+          <!--            </div>-->
+        </div>
+      </div>
+      <div class="bg-[#ffffff] p-[14px] pt-[24px]">
+        <div class="mb-[19px]">
+          <span class="text-black/40 text-sm font-normal font-['PingFang SC'] leading-none">
+            任务名称:
           </span>
-          <span class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-none">
-            imola
+          <span class="text-black/60 text-sm font-normal font-['PingFang SC'] leading-none">
+            邀请30位设计师带客到店
           </span>
         </div>
-        <div>
-          <span class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-none">
-            品牌:
+        <div class="mb-[19px]">
+          <span class="text-black/40 text-sm font-normal font-['PingFang SC'] leading-none">
+            发起方
           </span>
-          <span class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-none">
+          <span class="text-black/60 text-sm font-normal font-['PingFang SC'] leading-none">
             imola瓷砖
           </span>
         </div>
-        <div>
-          <span class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-none">
+        <div class="mb-[19px]">
+          <span class="text-black/40 text-sm font-normal font-['PingFang SC'] leading-none">
+            适用店面:
+          </span>
+          <span class="text-black/60 text-sm font-normal font-['PingFang SC'] leading-none">
+            曲江新区店
+          </span>
+        </div>
+        <div class="mb-[19px]">
+          <span class="text-black/40 text-sm font-normal font-['PingFang SC'] leading-none">
             任务时间:
           </span>
-          <span class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-none">
+          <span class="text-black/60 text-sm font-normal font-['PingFang SC'] leading-none">
             2024/06/07-2024/09/16
           </span>
         </div>
-        <div>
-          <span class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-none">
-            提前结束时间
+        <div class="mb-[19px]">
+          <span class="text-black/40 text-sm font-normal font-['PingFang SC'] leading-none">
+            详细说明
           </span>
-          <span class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-none">
-            2024/06/07 10:20
+          <span class="text-black/60 text-sm font-normal font-['PingFang SC'] leading-none">
+            邀请设计师带客到店,扫码获取积分
           </span>
         </div>
-        <div class="w-[310px] h-[42px]">
-          <span class="text-black/40 text-sm font-normal font-['PingFang_SC'] leading-normal">
-            备注说明
+        <div>
+          <span class="text-black/40 text-sm font-normal font-['PingFang SC'] leading-none">
+            完成方式
           </span>
-          <span class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-normal">
-            平台统计预计在本月底进行截止请注意时间
+          <span class="text-black/60 text-sm font-normal font-['PingFang SC'] leading-none">
+            到店扫码
           </span>
         </div>
       </div>
-    </Card>
-    <Card>
-      <div class="flex items-center">
-        <div class="mr-2.5 w-1 h-4 rotate-180 bg-[#2357e9] rounded-[20px]"></div>
-        <SectionHeading title="数据明细" size="base"></SectionHeading>
-      </div>
-      <div class="flex flex-col gap-4 mt-5">
-        <div class="flex gap-2.5 p-3.5 bg-[#f7fbff] items-center rounded-[10px]">
-          <img class="w-11 h-11 rounded-full" src="https://via.placeholder.com/44x44" />
-          <div class="flex-1 flex flex-col gap-2">
-            <div class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-normal">
-              王一博
-            </div>
-            <div class="text-black/30 text-sm font-normal font-['PingFang_SC'] leading-none">
-              打卡imola瓷砖
-            </div>
+      <div class="bg-[#ffffff] p-[14px]">
+        <div class="flex items-center justify-between">
+          <div class="text-black/90 text-sm font-normal font-['PingFang SC'] leading-none">
+            已接单经纪人
           </div>
-          <div class="flex items-start h-full">
-            <div class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-normal">
-              2024/04/01 11:25
-            </div>
+          <div class="text-black/40 text-sm font-normal font-['PingFang SC'] leading-none">
+            共2人
           </div>
         </div>
-        <div class="flex gap-2.5 p-3.5 bg-[#f7fbff] items-center rounded-[10px]">
-          <img class="w-11 h-11 rounded-full" src="https://via.placeholder.com/44x44" />
-          <div class="flex-1 flex flex-col gap-2">
-            <div class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-normal">
-              王一博
-            </div>
-            <div class="text-black/30 text-sm font-normal font-['PingFang_SC'] leading-none">
-              打卡imola瓷砖
+        <div class="flex items-center justify-start gap-3">
+          <div class="my-[23px]">
+            <img class="w-[46px] h-[46px] rounded-full" src="https://via.placeholder.com/46x46" />
+            <div
+              class="text-black/60 text-sm font-normal font-['PingFang SC'] leading-none mt-[10px]"
+            >
+              王世东
             </div>
           </div>
-          <div class="h-full flex items-start">
-            <div class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-normal">
-              2024/04/01 11:25
+          <div>
+            <img class="w-[46px] h-[46px] rounded-full" src="https://via.placeholder.com/46x46" />
+            <div
+              class="text-black/60 text-sm font-normal font-['PingFang SC'] leading-none mt-[10px]"
+            >
+              王世东
             </div>
           </div>
         </div>
       </div>
     </Card>
+<!--    <Card>-->
+<!--      <div class="flex items-center">-->
+<!--        <div class="mr-2.5 w-1 h-4 rotate-180 bg-[#2357e9] rounded-[20px]"></div>-->
+<!--        <SectionHeading title="数据明细" size="base"></SectionHeading>-->
+<!--      </div>-->
+<!--      <div class="flex flex-col gap-4 mt-5">-->
+<!--        <div class="flex gap-2.5 p-3.5 bg-[#f7fbff] items-center rounded-[10px]">-->
+<!--          <img class="w-11 h-11 rounded-full" src="https://via.placeholder.com/44x44" />-->
+<!--          <div class="flex-1 flex flex-col gap-2">-->
+<!--            <div class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-normal">-->
+<!--              王一博-->
+<!--            </div>-->
+<!--            <div class="text-black/30 text-sm font-normal font-['PingFang_SC'] leading-none">-->
+<!--              打卡imola瓷砖-->
+<!--            </div>-->
+<!--          </div>-->
+<!--          <div class="flex items-start h-full">-->
+<!--            <div class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-normal">-->
+<!--              2024/04/01 11:25-->
+<!--            </div>-->
+<!--          </div>-->
+<!--        </div>-->
+<!--        <div class="flex gap-2.5 p-3.5 bg-[#f7fbff] items-center rounded-[10px]">-->
+<!--          <img class="w-11 h-11 rounded-full" src="https://via.placeholder.com/44x44" />-->
+<!--          <div class="flex-1 flex flex-col gap-2">-->
+<!--            <div class="text-black/60 text-sm font-normal font-['PingFang_SC'] leading-normal">-->
+<!--              王一博-->
+<!--            </div>-->
+<!--            <div class="text-black/30 text-sm font-normal font-['PingFang_SC'] leading-none">-->
+<!--              打卡imola瓷砖-->
+<!--            </div>-->
+<!--          </div>-->
+<!--          <div class="h-full flex items-start">-->
+<!--            <div class="text-black/40 text-xs font-normal font-['PingFang_SC'] leading-normal">-->
+<!--              2024/04/01 11:25-->
+<!--            </div>-->
+<!--          </div>-->
+<!--        </div>-->
+<!--      </div>-->
+<!--    </Card>-->
   </view>
 </template>

+ 19 - 9
packages/merchant/src/pages/home/tasks/index.vue

@@ -1,7 +1,7 @@
 <route lang="yaml">
 style:
-  navigationBarTitleText: 全部任务
-  navigationBarBackgroundColor: '#fff'
+navigationBarTitleText: 全部任务
+navigationBarBackgroundColor: '#fff'
 </route>
 <script setup lang="ts">
 import Card from '@designer-hub/app/src/components/card.vue'
@@ -47,10 +47,18 @@ const toDetail = async () => {
 }
 </script>
 <template>
+  <div class="bg-white rounded-lg shadow flex m-[18px] p-[11px]">
+    <div class="text-black/90 text-base font-normal font-['PingFang SC'] leading-relaxed">
+      任务积分
+    </div>
+    <div class="flex-1"></div>
+    <div class="text-[#ff2e2e] text-[22px] font-medium font-['DIN'] leading-none">6153</div>
+    <div class="w-6 h-6 relative"></div>
+  </div>
   <div class="flex-grow flex flex-col gap-4 p-4">
     <template v-for="({ type }, i) of tasks" :key="i">
       <div @click="toDetail()">
-        <Card :custom-class="`${types[type].bgClass} p-0`">
+        <Card :custom-class="`${types[type].bgClass} p-0`" style="padding: 0">
           <div class="flex p-4 items-center">
             <div
               class="w-[47px] h-[23px] px-1 bg-[#2357e9] rounded border justify-center items-center gap-2.5 inline-flex"
@@ -96,13 +104,15 @@ const toDetail = async () => {
               </span>
             </div>
             <div class="flex items-center border-t border-t-solid border-t-[#efefef] pt-1.5">
-              <div class="text-black/90 text-sm font-normal font-['PingFang_SC']">目标</div>
-              <div class="ml-2 text-black/90 text-lg font-medium font-['DIN'] leading-normal">
-                30
+              <div class="text-black/90 text-sm font-normal font-['PingFang SC']">目标 30</div>
+              <div class="flex-1"></div>
+              <div class="mr-[16px] w-[68px] h-7 px-2.5 py-[3px] rounded-[30px] border border-[#fe5053] justify-center items-center gap-2.5 inline-flex" style="border: 1px solid #fe5053">
+                <div class="w-9 text-[#ff2d2d] text-xs font-normal font-['PingFang SC']">不接单</div>
               </div>
-              <div class="ml-12 text-[#2357e9] text-sm font-normal font-['PingFang_SC']">完成</div>
-              <div class="ml-2 text-[#2357e9] text-lg font-medium font-['DIN'] leading-normal">
-                22
+              <div
+                class="w-[68px] h-7 px-2.5 py-[3px] bg-[#2357e9] rounded-[30px] justify-center items-center gap-2.5 inline-flex"
+              >
+                <div class="text-white text-xs font-normal font-['PingFang SC']">接单</div>
               </div>
             </div>
           </div>