Переглянути джерело

基础架构+散户加气3.1

chenlei 1 рік тому
батько
коміт
c3a7ddc0f6

+ 20 - 25
src/components/business/carNumber.vue

@@ -7,23 +7,14 @@
           <span>(绿色背景为新能源车牌)</span>
         </div>
         <div class="cn-center">
-          <ul class="input_box">
+          <div class="input_box">
             <template v-for="(n, i) in cnumbers" :key="i">
-              <li :class="{ active: n.active }">
+              <div class="ibitem" :class="{ active: n.active }">
                 {{ n.value }}
-              </li>
+              </div>
               <span class="center point" v-if="n.afterPoint">•</span>
             </template>
-            <!-- <li>{{ data.first }}</li>
-            <li class="active">{{ data.numArr[0] }}</li>
-            <span class="center point">•</span>
-            <li>{{ data.numArr[1] }}</li>
-            <li>{{ data.numArr[2] }}</li>
-            <li>{{ data.numArr[3] }}</li>
-            <li>{{ data.numArr[4] }}</li>
-            <li>{{ data.numArr[5] }}</li>
-            <li>{{ data.numArr[6] }}</li> -->
-          </ul>
+          </div>
           <button type="green" @click="methods.submitNumber">确定</button>
         </div>
         <!-- 键盘-中英文 -->
@@ -32,29 +23,31 @@
           <div class="key_box">
             <!-- 中文 -->
             <div v-show="showChineseList" class="chinese">
-              <ul v-for="(item, index) in data.chineseList" :key="index">
-                <li
+              <div class="kbrow" v-for="(item, index) in data.chineseList" :key="index">
+                <div
+                  class="kbitem"
                   v-for="val in item"
                   :key="val.id"
                   :class="{ del: val.id === 99 || val.id === 98 }"
                   @click="methods.choose(val)"
                 >
                   {{ val.name }}
-                </li>
-              </ul>
+                </div>
+              </div>
             </div>
             <!-- 数字英文 -->
             <div v-show="!showChineseList" class="english">
-              <ul v-for="(item, index) in data.englishList" :key="index">
-                <li
+              <div class="kbrow" v-for="(item, index) in data.englishList" :key="index">
+                <div
+                  class="kbitem"
                   v-for="val in item"
                   :key="val.id"
                   :class="{ del: val.id === 99 || val.id === 97 }"
                   @click="methods.choose(val)"
                 >
                   {{ val.name }}
-                </li>
-              </ul>
+                </div>
+              </div>
             </div>
           </div>
         </div>
@@ -267,6 +260,7 @@ const methods = {
   submitNumber() {
     const carNumberReg =
       /^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领][A-HJ-NP-Z][A-HJ-NP-Z0-9]{4,5}[A-HJ-NP-Z0-9挂学警港澳]$/
+
     if (carNumberReg.test(carNumber.value)) {
       staticData.releaser.s(carNumber.value)
       staticData.releaser = func.releaser()
@@ -302,7 +296,8 @@ defineExpose(methods)
     margin: $p-spac;
     text-align: left;
 
-    span {
+    span,
+    label {
       color: #45b94d;
     }
   }
@@ -315,7 +310,7 @@ defineExpose(methods)
     justify-content: center;
     margin: $p-spac 0;
     font-size: $b-fz;
-    li {
+    .ibitem {
       position: relative;
 
       flex: 1;
@@ -367,12 +362,12 @@ defineExpose(methods)
     background-color: rgb(211, 214, 221);
 
     .key_box {
-      ul {
+      .kbrow {
         box-sizing: border-box;
         display: flex;
         justify-content: center;
 
-        li {
+        .kbitem {
           width: 62rpx;
           padding: 4rpx;
           margin: 4rpx;

+ 6 - 2
src/components/countdown/index.vue

@@ -1,5 +1,5 @@
 <template>
-  <div>{{ data.countdown }}</div>
+  <div class="countdown">{{ data.countdown }}</div>
 </template>
 <script lang="ts" setup>
 defineOptions({
@@ -42,4 +42,8 @@ const methods = {
 }
 defineExpose(methods)
 </script>
-<style lang="scss" scoped></style>
+<style lang="scss" scoped>
+.countdown {
+  margin-top: 2rpx;
+}
+</style>

+ 7 - 5
src/components/flowLine/index.vue

@@ -1,9 +1,11 @@
 <template>
   <div class="flow-line">
-    <span class="line"></span>
-    <span class="line"></span>
-    <span class="line"></span>
-    <span class="line"></span>
+    <template v-if="props.loading">
+      <span class="line"></span>
+      <span class="line"></span>
+      <span class="line"></span>
+      <span class="line"></span>
+    </template>
     <slot />
   </div>
 </template>
@@ -11,7 +13,7 @@
 defineOptions({
   name: 'flow-line',
 })
-
+const props = defineProps<{ loading: boolean }>()
 const data = {}
 const methods = {}
 </script>

+ 36 - 0
src/components/refresh/index.vue

@@ -0,0 +1,36 @@
+<template>
+  <div class="center p-color ml-spacd2 refresh" @click="emits('refresh')">
+    <uni-icons
+      type="refresh"
+      color=""
+      size="none"
+      :class="{ rotater: props.loading }"
+      :style="{ 'font-size': props.iconSize + 'rpx' }"
+    ></uni-icons>
+    刷新
+  </div>
+</template>
+<script lang="ts" setup>
+const emits = defineEmits(['refresh'])
+const props = withDefaults(defineProps<{ loading: boolean; iconSize: number }>(), {
+  iconSize: 30,
+})
+</script>
+
+<style lang="scss" scoped>
+.refresh {
+  max-height: $p-fz;
+}
+.rotater {
+  animation: rotate 0.5s linear infinite;
+}
+
+@keyframes rotate {
+  from {
+    transform: rotate(0deg);
+  }
+  to {
+    transform: rotate(360deg);
+  }
+}
+</style>

+ 1 - 1
src/pages/account/index.vue

@@ -25,7 +25,7 @@
 const methods = {}
 const userTitle = computed(() => {
   const ui = store.user.userInfo
-  return `${ui.user_name}[${ui.mobile}]`
+  return `${ui.user_name}[${ui.mobileDes}]`
 })
 const data = reactive({
   accountInfo: { showBalance: {} } as IAccountInfo,

+ 155 - 74
src/pages/index/index.vue

@@ -3,22 +3,10 @@
     <div class="chunk">
       <div class="center justify-between top">
         <div class="center" @click="methods.goPerson">
-          <image
-            class="personal"
-            v-if="store.user.userInfo.head_url"
-            :src="store.user.userInfo.head_url"
-            mode="scaleToFill"
-          />
-          <image
-            class="personal"
-            v-else
-            src="@img/icons/turnk_number_head.png"
-            mode="scaleToFill"
-          />
-          <!-- <uni-icons type="contact" size="50" class="personal"></uni-icons> -->
+          <image class="personal" :src="store.user.userInfo.head_url" mode="scaleToFill" />
           <div>
             <div>{{ store.user.userInfo.user_name }}</div>
-            <div class="mobile">{{ store.user.userInfo.mobile }}</div>
+            <div class="mobile">{{ store.user.userInfo.mobileDes }}</div>
           </div>
         </div>
         <uni-icons
@@ -30,30 +18,34 @@
         ></uni-icons>
       </div>
       <div class="center">
-        <ay-flowLine class="mt-spac mb-spac">
+        <ay-flowLine class="mt-spac mb-spac" :loading="store.webapi.strategy.get_user_qrcode.ing">
           <div class="qrcode">
             <image
               src="@img/qr@3x.png"
               class="image"
               mode="aspectFit"
-              v-if="data.qrcode.expire"
+              v-if="data.hasnopayfordriver || data.qrcode.expire"
               @click="methods.getQrcode"
             />
             <image :src="data.qrcode.img" class="image" mode="aspectFit" v-else />
           </div>
         </ay-flowLine>
       </div>
-      <div class="center">
-        <template v-if="data.qrcode.expire">
-          二维码已失效
-          <div class="center p-color" @click="methods.getQrcode(true)">
-            <uni-icons type="refresh" color="" size="24"></uni-icons>
-            刷新
-          </div>
-        </template>
-        <template v-else>
-          有效时间:
-          <ay-countdown :seconds="300" @ender="data.qrcode.expire = true" />
+      <div class="center qrcode-text">
+        <template v-if="!data.firstUnload">
+          <template v-if="data.hasnopayfordriver">存在未支付完成订单</template>
+          <template v-else-if="data.qrcode.expire">
+            二维码已失效
+            <ay-refresh
+              :iconSize="36"
+              :loading="store.webapi.strategy.get_user_qrcode.ing"
+              @refresh="methods.getQrcode"
+            ></ay-refresh>
+          </template>
+          <template v-else>
+            有效时间:
+            <ay-countdown :seconds="data.qrcode.seconds" @ender="data.qrcode.expire = true" />
+          </template>
         </template>
       </div>
     </div>
@@ -116,6 +108,27 @@
         查看附近加气站
       </div>
     </div>
+    <uni-popup ref="inputDialog" type="dialog">
+      <uni-popup-dialog
+        mode="input"
+        title="邀请通知"
+        confirmText="加入"
+        cancelText="拒绝"
+        :beforeClose="true"
+        @confirm="methods.agree"
+        @close="methods.disagree"
+      >
+        <div class="text-center w-100%">
+          <div class="mb-spacd2 text-center">
+            【{{ data.invite?.org?.orgName }}】邀请您加入成为其司机
+            <span class="p-color" @click="methods.phone(data.invite?.org?.mobile)">
+              <uni-icons type="phone" color="" class="mr-spacd4" size="none"></uni-icons>
+              <span>{{ data.invite?.org?.mobile }}</span>
+            </span>
+          </div>
+        </div>
+      </uni-popup-dialog>
+    </uni-popup>
 
     <uni-drawer
       ref="drawer"
@@ -145,7 +158,7 @@ import card from '@img/icons/card.png'
 const drawer = ref()
 const indexedList = ref()
 const carNumber = ref()
-
+const inputDialog = ref()
 const staticData = {
   /** 选择的城市 缓存key名 */
   cctkn: 'chooseCity',
@@ -163,12 +176,18 @@ const staticData = {
   scrollTop: 0,
 }
 const data = reactive({
+  firstUnload: true,
+  // 存在未支付完成订单
+  hasnopayfordriver: true,
+  invite: {} as 预添加司机详情,
   truckInfo: [] as PersonDriver对象[],
   accountInfo: { showBalance: { balance: '', suffix: '' } } as IAccountInfo,
   /** 用户已授权定位 */
   userLocation: false,
   /** 二维码相关 */
   qrcode: {
+    /** 有效时长 m */
+    seconds: 300, // 10,
     /** 二维码 */
     img: null,
     /** 已过期 */
@@ -206,9 +225,14 @@ const data = reactive({
     indexedListShow: false,
   },
 })
-const methods =
-  // ay.initMethods(
+const methods = ay.initMethods(
   {
+    phone(num) {
+      uni.makePhoneCall({
+        phoneNumber: num,
+      })
+    },
+
     getTruckInfo() {
       webapi.strategy.get_truck_info().then((res) => {
         data.truckInfo = aop.request.AR.truckInfo(res)
@@ -239,7 +263,7 @@ const methods =
     goPage(menu) {
       const maps = {
         0() {
-          methods.goPrePay()
+          methods.checkNopayfordriver(1)
         },
         1() {
           ay.goPage(config.pages.order_index)
@@ -344,50 +368,58 @@ const methods =
         JSON.stringify({ content: '1212' }),
       )
     },
-    async goPrePay(type: 0 | 1 = 0) {
+    /** 检查未支付
+     * type 0:仅检查 1:点击待支付订单 2:点击扫码
+     * */
+    async checkNopayfordriver(type: 0 | 1 | 2 = 0) {
       const nopayfordriver = await webapi.pay.find_unpayfordriver()
+      // 存在 未支付(待支付、支付中、支付异常)
       if (nopayfordriver) {
-        // 跳未支付
-        ay.goPage(config.pages.order_prePay, { params: { orderId: nopayfordriver.orderId } })
+        if (type === 1) {
+          if (nopayfordriver.settleStatus === 1) {
+            // 跳未支付
+            ay.goPage(config.pages.order_prePay, { params: { orderId: nopayfordriver.orderId } })
+          }
+        }
+        if (type === 2) {
+          func.native
+            .showModal({
+              title: '温馨提示',
+              content: '存在未支付完成订单',
+              showCancel: true,
+            })
+            .then((res) => {
+              if (res.confirm) {
+                if (nopayfordriver.settleStatus === 1) {
+                  ay.goPage(config.pages.order_prePay, {
+                    params: { orderId: nopayfordriver.orderId },
+                  })
+                } else {
+                  ay.goPage(config.pages.order_orderDetail, {
+                    params: { orderId: nopayfordriver.orderId },
+                  })
+                }
+              }
+            })
+        }
         return true
       } else {
-        if (type === 0) {
+        if (type === 1) {
           func.native.showToast('暂无待支付订单!')
         }
         return false
       }
     },
     async scanCode() {
-      if (await methods.goPrePay(1)) {
+      if (await methods.checkNopayfordriver(2)) {
         return
       }
-      const reqStr = await uni
-        .scanCode({
-          scanType: ['qrcode'],
-        })
-        .catch((err) => {
-          // 二维码解析失败
-          if (err.errMsg !== 'scanCode:fail cancel') {
-            func.native.showToast('二维码无效')
-          }
-          return Promise.reject(err)
-        })
-      let ret = { gasstationId: '', cashierId: '' }
-      try {
-        ret = JSON.parse(reqStr.result)
-        // 没有包含必要信息
-        if (!(ret.gasstationId && ret.cashierId)) {
-          func.native.showToast('二维码无效')
-        }
-      } catch {
-        // 反序列化失败
+
+      const ret: { gasstationId?: string; cashierId?: string } = await func.native.scan()
+      if (!(ret.gasstationId && ret.cashierId)) {
         func.native.showToast('二维码无效')
-        return
       }
-      // const ret = {
-      //   cashierId: '710613333157822464',
-      //   gasstationId: '710613333157822464',
-      // }
+
       const user = await webapi.user.find_6({ userId: ret.cashierId })
       if (ret.gasstationId === user.user.orgId) {
         const price = await webapi.strategy.find_price({
@@ -425,8 +457,36 @@ const methods =
         })
       }
     },
-    sdfsdf() {
-      webapi.strategy.get_truck_info().then((res) => {})
+    /** 同意加入 */
+    agree() {
+      webapi.user.agree({ id: data.invite.driverWhiteList.id }).then((res) => {
+        if (res) {
+          func.native.showToast('加入成功,请重新登录').then(() => {
+            store.user.clearUserInfo()
+          })
+          inputDialog.value.close()
+        }
+      })
+    },
+    /** 拒绝加入 */
+    disagree() {
+      webapi.user.disagree({ id: data.invite.driverWhiteList.id }).then((res) => {
+        if (res) {
+          func.native.showToast('已拒绝')
+          inputDialog.value.close()
+        }
+      })
+    },
+    /** 获取邀请信息 */
+    getInvite() {
+      webapi.user
+        .find_by_driver_mobile({ driverMobile: store.user.userInfo.mobile })
+        .then((res) => {
+          if (res.driverWhiteList && res.org) {
+            data.invite = res
+            inputDialog.value.open()
+          }
+        })
     },
     getCityList() {
       webapi.strategy.city_list().then((res) => {
@@ -477,20 +537,22 @@ const methods =
         })
     },
 
-    getQrcode(refresh = false) {
-      return webapi.strategy.get_user_qrcode().then(async (res) => {
-        // await func.awaiter()
+    getQrcode() {
+      if (data.hasnopayfordriver || store.webapi.strategy.get_user_qrcode.ing) {
+        return
+      }
+      return webapi.strategy.get_user_qrcode({}, { minRTime: 1000 }).then(async (res) => {
         data.qrcode.img = res
         data.qrcode.expire = false
       })
     },
-  }
-//   {
-//     scanCode: { showLoading: true },
-//   },
-// )
+  },
+  {
+    scanCode: { showLoading: true },
+  },
+)
 ay.entrance(
-  (args) => {
+  async (args) => {
     // staticData.entranceArgs = args
     const init = async () => {
       webapi.strategy.get_driver_balance().then((res) => {
@@ -513,19 +575,30 @@ ay.entrance(
       // #endif
       methods.getListApp({ cras: args.cras })
       methods.getTruckInfo()
+      const nopayfordriver = await methods.checkNopayfordriver()
+      data.hasnopayfordriver = nopayfordriver
     }
     if (args.loadType === enums.LoadType.onLoad) {
       methods.initWS()
-      methods.getQrcode()
       methods.getCityList()
       data.station.curCity = uni.getStorageSync(staticData.cctkn) || staticData.defCity
-      init()
+      await init()
+      // 无未支付订单
+      if (!data.hasnopayfordriver) {
+        await methods.getQrcode()
+      }
+      data.firstUnload = false
+      // 小程序环境:时机过早会inputDialog.value为null
+      // h5环境:当页面data内的值改变时,弹框会消失
+      // 所有先放这里吧
+      methods.getInvite()
     }
 
     if (args.loadType === enums.LoadType.refresh) {
       if (args.cras.isAdd) {
         methods.getListApp({ cras: args.cras })
       } else {
+        // 下拉更新
         init()
       }
     }
@@ -591,6 +664,9 @@ onPageScroll((res) => {
     margin: -40rpx;
   }
 }
+.qrcode-text {
+  height: $p-fz;
+}
 .truck {
   width: 152rpx;
   height: 116rpx;
@@ -661,4 +737,9 @@ $bgc: rgba($p-color, 0.4);
 ::v-deep .uni-indexed-list__menu-item {
   width: 20px;
 }
+::v-deep .uni-popup__info {
+  @apply: font-bold;
+  font-size: $bs-fz;
+  color: unset;
+}
 </style>

+ 40 - 8
src/pages/order/createOrder.vue

@@ -1,34 +1,59 @@
 <template>
   <ay-container>
     <ayb-station type="2" :stationInfo="data.stationInfo" />
-    <div class="station">驾驶员信息</div>
+    <div class="section">本次加气驾驶员</div>
+    <div class="chunk childs-fc-mbd2">
+      <div>
+        <image class="personal" :src="store.user.userInfo.head_url" mode="scaleToFill" />
+        <div>
+          <div class="p-fz">{{ store.user.userInfo.user_name }}</div>
+          <div class="mt-spacd2 s-fz">{{ store.user.userInfo.mobileDes }}</div>
+        </div>
+      </div>
+    </div>
     <div class="station">
-      本次加气量(公斤):
+      <div class="section">本次加气量(公斤)</div>
       <uni-easyinput
         v-model="data.gasQty"
         type="digit"
         placeholder="请输入"
+        @input="methods.input"
         @confirm="methods.confirm"
       />
     </div>
-    <button @click="methods.confirm">确定</button>
+    <div class="btns">
+      <button
+        type="primary"
+        @click="methods.confirm"
+        :loading="store.webapi.pay.add.ing"
+        :disabled="store.webapi.pay.add.ing"
+      >
+        确定
+      </button>
+    </div>
   </ay-container>
 </template>
 
 <script lang="ts" setup>
 const data = reactive({
   stationInfo: {},
-  gasQty: 0,
+  gasQty: '',
 })
+const gasQty = computed(() => Number(data.gasQty))
 const user = computed(() => store.user.userInfo)
 const pageConfig = computed(() => store.curPage.pageConfig)
 const methods = {
+  input() {
+    nextTick(() => {
+      data.gasQty = data.gasQty.replace(/^\D*(\d*\.{0,1}\d{0,2}).*/, '$1')
+    })
+  },
   confirm() {
-    if (data.gasQty <= 0) {
+    if (gasQty.value <= 0) {
       func.native.showToast('加气量需大于零')
       return false
     }
-    if (data.gasQty > store.common.data.preferWeight) {
+    if (gasQty.value > store.common.data.preferWeight) {
       func.native.showToast('加气量不能超过' + store.common.data.preferWeight)
       return
     }
@@ -37,7 +62,7 @@ const methods = {
       .add({
         cashierId: pageConfig.value.params.cashierId,
         driverId: user.value.user_id,
-        gasQty: data.gasQty,
+        gasQty: gasQty.value,
         gasstationId: pageConfig.value.params.gasstationId,
         createRole: 'driver', // 1 平台管理员 2 平台运营人员 filler 加气站企业管理者 cashier 收银员 carrier 物流公司管理者 driver 司机
         creater: user.value.user_id,
@@ -62,4 +87,11 @@ ay.entrance(async (args) => {
 })
 </script>
 
-<style lang="scss"></style>
+<style lang="scss">
+.personal {
+  width: 100rpx;
+  height: 100rpx;
+  margin-right: $p-spac;
+  border-radius: $p-spac;
+}
+</style>

+ 8 - 24
src/pages/order/prePay.vue

@@ -1,6 +1,6 @@
 <template>
   <ay-container>
-    <ay-skeletons :rowList="data.rowList" :loading="data.firstLoad">
+    <ay-skeletons :rowList="data.rowList" :loading="data.firstUnload">
       <div class="station">
         <ayb-station type="2" :stationInfo="data.stationInfo" />
       </div>
@@ -62,15 +62,10 @@
             <div>[{{ carrierPay.carNumber }}]</div>
             <div class="justify-start">
               <div>可用余额¥{{ carrierPay.balance }}元</div>
-              <div class="center p-color ml-spacd2" @click="methods.paysel">
-                <uni-icons
-                  type="refresh"
-                  color=""
-                  size="20"
-                  :class="{ rotater: store.webapi.strategy.paysel.ing }"
-                ></uni-icons>
-                刷新
-              </div>
+              <ay-refresh
+                :loading="store.webapi.strategy.paysel.ing"
+                @refresh="methods.paysel"
+              ></ay-refresh>
             </div>
           </div>
         </div>
@@ -105,7 +100,8 @@
 
 <script lang="ts" setup>
 const data = reactive({
-  firstLoad: true,
+  /** 数据未加载完毕 */
+  firstUnload: true,
   /** 页面选择支付类型: -1:未选择 0:个人:1:物流 */
   fpayType: -1,
   orderDetail: {} as 订单详情,
@@ -276,7 +272,7 @@ const methods = {
       })
       .catch(() => {})
     if (first) {
-      data.firstLoad = false
+      data.firstUnload = false
     }
   },
 }
@@ -311,16 +307,4 @@ onUnload(() => {
   border-top-right-radius: 10px;
   transform: translateY(1px);
 }
-.rotater {
-  animation: rotate 0.5s linear infinite;
-}
-
-@keyframes rotate {
-  from {
-    transform: rotate(0deg);
-  }
-  to {
-    transform: rotate(360deg);
-  }
-}
 </style>

+ 16 - 17
src/pages/org/index.vue

@@ -18,7 +18,7 @@
         ></uni-easyinput>
         <img :src="topbgimg" class="bgimg" />
       </div>
-      <div v-if="orgIdVerified" class="chunk1 bs-fz">
+      <div v-if="orgInfoSuccess" class="chunk1 bs-fz">
         <div>
           <image src="@img/icons/org_icon.png" class="mr-spac org-icon" />
           <div>{{ data.orgInfo.orgName }}</div>
@@ -43,7 +43,7 @@
       <div class="btns">
         <button
           type="primary"
-          :disabled="!orgIdVerified"
+          :disabled="!orgInfoSuccess"
           v-if="showApply"
           @click="methods.enterMsg"
         >
@@ -152,6 +152,8 @@ const btnText = computed(() => {
 })
 /** 物流id验证成功 */
 const orgIdVerified = computed(() => data.orgId.length === 18)
+/** 物流信息获取成功 */
+const orgInfoSuccess = computed(() => orgIdVerified.value && store.webapi.user.find_4.success)
 
 watch(
   () => data.orgId,
@@ -171,19 +173,12 @@ const methods = {
     })
   },
   async scan() {
-    uni
-      .scanCode({
-        scanType: ['qrcode'],
-      })
-      .then((res) => {
-        // res.result
-      })
-      .catch((err) => {
-        // 二维码解析失败
-        if (err.errMsg !== 'scanCode:fail cancel') {
-          func.native.showToast('二维码无效')
-        }
-      })
+    const rt: { orgId?: string } = await func.native.scan()
+    if (!rt.orgId) {
+      func.native.showToast('二维码无效')
+      return
+    }
+    data.orgId = rt.orgId
   },
   closePopup() {
     inputDialog.value.close()
@@ -194,7 +189,11 @@ const methods = {
     })
   },
   enterMsg() {
-    inputDialog.value.open()
+    if (data.orgDetail.driverApply?.auditStatus === 3) {
+      data.orgDetail.driverApply = null
+    } else {
+      inputDialog.value.open()
+    }
   },
   apply() {
     if (!data.reqMsg) {
@@ -267,7 +266,7 @@ ay.entrance(async (args) => {
 .uni-easyinput__placeholder-class {
   font-size: $p-fz;
 }
-.getorg ::v-deep .uni-easyinput__content {
+::v-deep .uni-easyinput__content {
   .uni-easyinput__content-input {
     height: $p-spac * 3;
     font-size: $bs-fz;

+ 59 - 61
src/pagesSubExample/index.vue

@@ -1,72 +1,70 @@
 <template>
-  <ay-container>
-    <uni-popup ref="addCar" type="dialog">
-      <uni-popup-dialog
-        ref="inputClose"
-        mode="input"
-        title="输入内容"
-        value="对话框预置提示内容!"
-        placeholder="请输入内容"
-      >
-        666
-      </uni-popup-dialog>
-    </uni-popup>
-    <button @click="methods.addCar">添加</button>
-    <view class="mt-12">
-      <image src="/static/logo.png" alt="" class="w-28 h-28 block mx-auto" />
-    </view>
-    <view class="text-center text-4xl main-title-color mt-4">auyen-mobile</view>
-    <view class="text-center text-2xl mt-2 mb-8">最好用的 uniapp 开发模板</view>
+  <!-- reflect滑动效果占位dom -->
+  <div class="reflect"></div>
+</template>
 
-    <view class="text-justify max-w-100 m-auto text-4 indent mb-2">{{ description }}</view>
+<script>
+export default {}
+</script>
 
-    <button @click="methods.show">弹出日期组件</button>
-    <button @click="methods.gopage">跳转webview</button>
-    <uni-calendar ref="calendar" :insert="false" @confirm="methods.confirm" />
-    <!-- <ayb-carNumber></ayb-carNumber> -->
-  </ay-container>
-</template>
+<style lang="scss" scoped>
+.reflect {
+  position: absolute;
+  left: 0;
+  width: 100%;
+  height: 100%;
+  overflow: hidden;
+}
 
-<script lang="ts" setup>
-import dayjs from 'dayjs'
-const addCar = ref()
-defineOptions({
-  name: 'Home',
-})
+.reflect::before {
+  position: absolute;
+  width: 200%;
+  height: 160%;
+  content: '';
+  background: linear-gradient(to right bottom, #07070700, #0b0b0b00, #0b0b0b00, #0b0b0b07, #022783);
+  filter: blur(5px);
+  // -webkit-transform: rotate(-60deg);
+  // -moz-transform: rotate(-60deg);
+  // -ms-transform: rotate(-59deg);
+  // transform: rotate(-59deg);
+  // -webkit-animation: searchLights 8s ease-in 8s infinite;
+  animation: searchLights 0.8s ease-in 8s infinite;
+}
 
-// 获取屏幕边界到安全区域距离
-const { safeAreaInsets } = uni.getSystemInfoSync()
-const author = ref('大象移动端')
-const description = ref(
-  'auyen-mobile 是一个集成了多种工具和技术的 uniapp 开发模板,由 uniapp + Vue3 + Ts + Vite4 + UnoCss + UniUI + VSCode 构建,模板具有代码提示、自动格式化、统一配置、代码片段等功能,并内置了许多常用的基本组件和基本功能,让你编写 uniapp 拥有 best 体验。',
-)
-ay.entrance((args) => {
-  console.log(args)
-  // webapi.account.add().catch()
-  ay.containerLoaded()
-})
+@-webkit-keyframes searchLights {
+  0% {
+    top: 0;
+    left: 0%;
+  }
 
-const calendar = ref(null)
+  to {
+    top: 100px;
+    left: 0%;
+  }
+}
+
+@-moz-keyframes searchLights {
+  0% {
+    top: 0;
+    left: 0%;
+  }
 
-const methods = {
-  addCar() {
-    addCar.value.open()
-  },
-  gopage() {
-    ay.goPage(config.subPages.pagesSubExample.webview_index)
-  },
-  show() {
-    calendar.value.open()
-  },
-  confirm(date) {
-    console.log(date)
-    console.log(dayjs(date.fulldate).format('YYYY-MM-DD HH:mm:ss'), 33)
-  },
+  to {
+    top: 100px;
+    left: 0%;
+  }
 }
-</script>
 
-<style>
-.main-title-color {
-  color: #d14328;
+@keyframes searchLights {
+  0% {
+    top: 0;
+    left: -200%;
+  }
+
+  to {
+    top: 30%;
+    left: 120%;
+    height: 200%;
+  }
 }
 </style>