Ver código fonte

AI优化设备启停页面

skyline 4 meses atrás
pai
commit
497c4f78ed

+ 19 - 6
src/components/station/index.vue

@@ -19,7 +19,7 @@
         </view>
         <view class="station_item-content-left-position">
           <uv-icon name="empty-address" size="18" color="#999999"></uv-icon>
-          <text>{{ item.address }}</text>
+          <text class="station_address">{{ item.address }}</text>
         </view>
       </view>
       <view class="station_item-content-right">
@@ -28,7 +28,7 @@
     </view>
 
     <view class="station_item-distance">
-      <text>营业时间: {{ item.businessHours }}</text>
+      <text class="business_hours">营业时间: {{ item.businessHours }}</text>
       <uv-text class="parking-fee" color="#C6171E" :text="item.parkingFee" size="13"></uv-text>
     </view>
   </view>
@@ -138,11 +138,13 @@ defineExpose({
     align-items: flex-start;
     width: 100%;
     margin-bottom: 16rpx;
+    box-sizing: border-box;
 
     &-left {
       flex: 1;
       display: flex;
       flex-direction: column;
+      min-width: 0;
 
       &-label {
         display: flex;
@@ -183,6 +185,17 @@ defineExpose({
         font-size: $uni-font-size-sm;
         color: $uni-text-color-secondary;
         line-height: $uni-line-height-sm;
+        overflow: hidden;
+        text-overflow: ellipsis;
+        white-space: nowrap;
+
+        .station_address {
+          flex: 1;
+          overflow: hidden;
+          text-overflow: ellipsis;
+          white-space: nowrap;
+          min-width: 0;
+        }
       }
     }
 
@@ -190,12 +203,12 @@ defineExpose({
       display: flex;
       flex-direction: column;
       align-items: center;
-      gap: 8rpx;
-      padding: 16rpx;
+      gap: 4rpx;
+      padding: 8rpx 12rpx;
       background: $uni-bg-color-hover;
-      border-radius: 12rpx;
-      min-width: 100rpx;
+      border-radius: 8rpx;
       transition: all 0.2s ease;
+      flex-shrink: 0;
 
       text {
         font-size: $uni-font-size-base;

+ 49 - 25
src/pages-order/detail/index.vue

@@ -160,38 +160,62 @@ onHide(() => {
 
 
 const handleCopy = () => {
-  // 确保orderId存在且为字符串
-  let orderId = state.detail.orderId;
+  let orderId = '';
   
-  // 使用微信小程序原生API复制文本
-  wx.setClipboardData({
+  // 安全获取订单编号,确保类型正确
+  if (state.detail && typeof state.detail === 'object') {
+    if (state.detail.orderId) {
+      orderId = String(state.detail.orderId);
+    } else if (state.detail.orderNo) {
+      orderId = String(state.detail.orderNo);
+    } else if (state.detail.id) {
+      orderId = String(state.detail.id);
+    }
+  }
+  
+  if (!orderId) {
+    uni.showToast({ title: '订单编号不存在', icon: 'none' });
+    return;
+  }
+  
+  // 尝试使用微信原生API
+  try {
+    wx.setClipboardData({
+      data: orderId,
+      success: () => {
+        wx.showToast({
+          title: '复制成功',
+          icon: 'success',
+          duration: 2000
+        });
+      },
+      fail: () => {
+        // 备选方案:使用uni-app API
+        fallbackCopy(orderId);
+      }
+    });
+  } catch (e) {
+    // 如果微信API不可用,直接使用uni-app API
+    fallbackCopy(orderId);
+  }
+};
+
+// 备选复制函数
+const fallbackCopy = (orderId: string) => {
+  uni.setClipboardData({
     data: orderId,
-    success: function() {
-      wx.showToast({
+    success: () => {
+      uni.showToast({
         title: '复制成功',
         icon: 'success',
         duration: 2000
       });
     },
-    fail: function(error) {
-      console.error('复制到剪贴板失败:', error);
-
-      // 尝试使用uni-app API作为备选方案
-      uni.setClipboardData({
-        data: orderId,
-        success: function() {
-          uni.showToast({
-            title: '复制成功',
-            icon: 'success',
-            duration: 2000
-          });
-        },
-        fail: function() {
-          uni.showToast({
-            title: '复制失败',
-            icon: 'none'
-          });
-        }
+    fail: (err) => {
+      console.error('复制失败:', err);
+      uni.showToast({
+        title: '复制失败',
+        icon: 'none'
       });
     }
   });

+ 64 - 1
src/pages-order/list/index.vue

@@ -9,7 +9,10 @@
               <view class="order-card_left">
                 <view class="order-card_info">
                   <text class="order-card_label">订单编号</text>
-                  <text class="order-card_value">{{ item.orderId }}</text>
+                  <text class="order-card_value">
+                    {{ item.orderId }}
+                    <text class="copy-icon" @click.stop="handleCopy(item.orderId)">复制</text>
+                  </text>
                 </view>
                 <view class="order-card_info">
                   <text class="order-card_label">消费时间</text>
@@ -119,6 +122,44 @@ const handleClickDetail = (orderDetail: any) => {
   });
 };
 
+const handleCopy = (orderId: string) => {
+  if (!orderId) {
+    uni.showToast({ title: '订单编号不存在', icon: 'none' });
+    return;
+  }
+  
+  // 尝试使用微信原生API
+  wx.setClipboardData({
+    data: orderId,
+    success: () => {
+      wx.showToast({
+        title: '复制成功',
+        icon: 'success',
+        duration: 2000
+      });
+    },
+    fail: () => {
+      // 备选方案:使用uni-app API
+      uni.setClipboardData({
+        data: orderId,
+        success: () => {
+          uni.showToast({
+            title: '复制成功',
+            icon: 'success',
+            duration: 2000
+          });
+        },
+        fail: () => {
+          uni.showToast({
+            title: '复制失败',
+            icon: 'none'
+          });
+        }
+      });
+    }
+  });
+};
+
 </script>
 
 <style lang="scss" scoped>
@@ -170,6 +211,28 @@ const handleClickDetail = (orderDetail: any) => {
   font-weight: 500;
   word-break: break-all;
   line-height: 1.4;
+  display: flex;
+  align-items: center;
+  gap: 10rpx;
+  flex-wrap: wrap;
+}
+
+.copy-icon {
+  background-color: $uni-color-primary;
+  color: white;
+  padding: 4rpx 12rpx;
+  border-radius: 12rpx;
+  font-size: 20rpx;
+  cursor: pointer;
+  display: inline-block;
+  transition: all 0.2s ease;
+  font-weight: normal;
+  margin-left: 8rpx;
+
+  &:active {
+    opacity: 0.8;
+    transform: scale(0.95);
+  }
 }
 
 .order-card_right {

+ 162 - 50
src/pages-wash/device/index.vue

@@ -1,40 +1,74 @@
 <template>
   <view :class="['page']">
-    <view class="device-header">
-      <view class="device-header_name">
-        <text>洗车机编号:No.{{ state.device?.shortId }}</text>
-      </view>
-      <view class="device-header_fun">
-        <view class="device-header_func-tag" v-for="f in state.device?.functionList" :key="f" style="margin-right: 10px;">
-          <uv-tags :text="f" size="mini" plain plainFill bgColor="#C6171E" color="white" type="error"></uv-tags>
+    <view class="device-card">
+      <view class="device-header">
+        <view class="device-header_name">
+          <text>洗车机编号:No.{{ state.device?.shortId }}</text>
+        </view>
+        <view class="device-header_status">
+          <uv-tags plain size="mini" type="error" :text="fmtDictName('WashDevice.state',state.device?.state)"></uv-tags>
+        </view>
+        <view class="device-header_fun">
+          <uv-tags 
+            v-for="f in state.device?.functionList" 
+            :key="f" 
+            :text="f" 
+            size="mini" 
+            plain 
+            plainFill 
+            bgColor="#C6171E" 
+            color="white" 
+            type="error"
+            class="device-function-tag"
+          ></uv-tags>
         </view>
       </view>
-      <view class="device-header_fun">
-        <uv-tags plain size="mini" type="error" :text="fmtDictName('WashDevice.state',state.device?.state)"></uv-tags>
-      </view>
-
     </view>
-    <view class="device-body">
-      <view class="device-body_ops" @click="debounceStartStopDevice">
-        <text v-if="state.device?.state==='idle'">启动设备</text>
-        <text v-else>停止设备</text>
-      </view>
 
-      <view class="device-body_guide">
-        <view>●点击上方【启动设备】按钮启动设备;
+    <view class="device-card device-main">
+      <view class="device-body">
+        <view 
+          class="device-body_ops"
+          :class="{ 'device-body_ops--active': state.device?.state === 'busy' }"
+          @click="debounceStartStopDevice"
+        >
+          <text v-if="state.device?.state==='idle'">启动设备</text>
+          <text v-else>停止设备</text>
         </view>
-        <view>●设备启动后,请在设备功能面板按下功能按键以选择服务项目;
-        </view>
-        <view>●洗车过程中再次按下功能按键可以暂停功能,暂停过程中将停止计费,如需恢复请再次按下功能按键;
-        </view>
-        <view>●洗车结束后,请按下结算按键或小程序【停止设备】按钮,设备停止运行之后将结束计费;
+      </view>
+    </view>
+
+    <view class="device-card">
+      <view class="device-guide">
+        <view class="device-guide_title">
+          <text>操作指南</text>
         </view>
-        <view>●请在洗车完成后尽快将车辆驶离工位以方便后续用户,谢谢配合。
+        <view class="device-guide_content">
+          <view class="device-guide_item">
+            <text class="device-guide_item-icon">●</text>
+            <text class="device-guide_item-text">点击上方【启动设备】按钮启动设备;</text>
+          </view>
+          <view class="device-guide_item">
+            <text class="device-guide_item-icon">●</text>
+            <text class="device-guide_item-text">设备启动后,请在设备功能面板按下功能按键以选择服务项目;</text>
+          </view>
+          <view class="device-guide_item">
+            <text class="device-guide_item-icon">●</text>
+            <text class="device-guide_item-text">洗车过程中再次按下功能按键可以暂停功能,暂停过程中将停止计费,如需恢复请再次按下功能按键;</text>
+          </view>
+          <view class="device-guide_item">
+            <text class="device-guide_item-icon">●</text>
+            <text class="device-guide_item-text">洗车结束后,请按下结算按键或小程序【停止设备】按钮,设备停止运行之后将结束计费;</text>
+          </view>
+          <view class="device-guide_item">
+            <text class="device-guide_item-icon">●</text>
+            <text class="device-guide_item-text">请在洗车完成后尽快将车辆驶离工位以方便后续用户,谢谢配合。</text>
+          </view>
         </view>
-
       </view>
-      <!--      <view class="device-body_ops-time">{{ state.time }}</view>-->
+    </view>
 
+    <view class="device-card">
       <view class="device-body_recharge">
         <uv-button
             v-if="state.isLogin"
@@ -46,7 +80,6 @@
       </view>
     </view>
 
-
     <login-bar class="w100 text-center"></login-bar>
   </view>
 </template>
@@ -276,36 +309,55 @@ const handleGotoRechage = () => {
   height: 100vh;
   width: 100%;
   background-color: #f6f7fa;
+  padding: 20rpx;
+  box-sizing: border-box;
+}
+
+.device-card {
+  background: white;
+  border-radius: 16rpx;
+  padding: 30rpx;
+  margin-bottom: 20rpx;
+  box-shadow: 0 2rpx 12rpx rgba(0, 0, 0, 0.08);
+}
+
+.device-card.device-main {
+  display: flex;
+  justify-content: center;
+  align-items: center;
+  padding: 60rpx 30rpx;
 }
 
 .device-header {
-  padding: 20rpx;
   display: flex;
   flex-direction: column;
-  justify-content: center;
   align-items: center;
+  text-align: center;
 
   &_name {
-    font-weight: 500;
-    margin: 15rpx 0;
+    font-size: 32rpx;
+    font-weight: 600;
+    color: #333;
+    margin-bottom: 20rpx;
+  }
+
+  &_status {
+    margin-bottom: 20rpx;
   }
 
   &_fun {
-    font-size: 13px;
-    color: #7a7a7a;
-    margin: 10rpx 0;
-    display: inline-flex;
+    display: flex;
+    flex-wrap: wrap;
+    justify-content: center;
+    gap: 10rpx;
 
-    &-tag {
-      margin-right: 10px;
+    .device-function-tag {
+      margin: 0;
     }
   }
-
 }
 
 .device-body {
-  flex-grow: 1;
-  margin-top: 60rpx;
   display: flex;
   flex-direction: column;
   justify-content: center;
@@ -313,9 +365,9 @@ const handleGotoRechage = () => {
   align-content: center;
 
   &_recharge {
-    margin-top: 30px;
-    width: 96%;
-    height: 36px;
+    width: 100%;
+    display: flex;
+    justify-content: center;
   }
 
   &_ops {
@@ -326,16 +378,76 @@ const handleGotoRechage = () => {
     width: 300rpx;
     height: 300rpx;
     border-radius: 50%;
-    background-color: $uni-color-primary;
+    background: linear-gradient(135deg, #C6171E 0%, #E63946 100%);
     color: white;
-    font-size: 28px;
-    font-weight: 500;
+    font-size: 36rpx;
+    font-weight: 600;
+    box-shadow: 0 10rpx 30rpx rgba(198, 23, 30, 0.4);
+    transition: all 0.3s ease;
+    position: relative;
+    overflow: hidden;
+
+    &::before {
+      content: '';
+      position: absolute;
+      top: 0;
+      left: 0;
+      right: 0;
+      bottom: 0;
+      background: rgba(255, 255, 255, 0.1);
+      border-radius: 50%;
+      transform: scale(0);
+      transition: transform 0.3s ease;
+    }
+
+    &:active {
+      transform: scale(0.95);
+      box-shadow: 0 5rpx 20rpx rgba(198, 23, 30, 0.3);
+
+      &::before {
+        transform: scale(1);
+      }
+    }
+
+    &--active {
+      background: linear-gradient(135deg, #4CAF50 0%, #45a049 100%);
+      box-shadow: 0 10rpx 30rpx rgba(76, 175, 80, 0.4);
+    }
+  }
+}
+
+.device-guide {
+  &_title {
+    font-size: 30rpx;
+    font-weight: 600;
+    color: #333;
+    margin-bottom: 20rpx;
+    border-bottom: 2rpx solid #f0f0f0;
+    padding-bottom: 15rpx;
   }
 
-  &_guide {
-    width: 80%;
-    margin-top: 40px;
-    font-size: 14px;
+  &_content {
+    font-size: 26rpx;
+    color: #666;
+    line-height: 1.6;
+  }
+
+  &_item {
+    margin-bottom: 15rpx;
+    display: flex;
+    align-items: flex-start;
+
+    &-icon {
+      color: #C6171E;
+      margin-right: 15rpx;
+      font-size: 20rpx;
+      margin-top: 8rpx;
+      flex-shrink: 0;
+    }
+
+    &-text {
+      flex: 1;
+    }
   }
 }
 </style>

+ 163 - 93
src/pages-wash/station/index.vue

@@ -1,38 +1,42 @@
 <template>
   <uv-navbar leftIcon="arrow-left" @leftClick="handleLeftClick" title="门店详情"></uv-navbar>
   <view class="page">
-    <image :src="state.station.pictures" mode="widthFix" class="station-bg" :style="state.imageStyle"></image>
+    <view class="station-container">
+      <swiper class="station-swiper" indicator-dots indicator-color="rgba(255,255,255,0.5)" indicator-active-color="#fff" autoplay circular>
+        <swiper-item v-for="(img, index) in (state.station.pictures || '').split('|')" :key="index">
+          <image :src="img" mode="aspectFit" class="station-bg"></image>
+        </swiper-item>
+      </swiper>
+    </view>
 
-    <view class="station-box">
-      <view class=" station_wrapper">
-        <WashStation :item=" state.station" ref="station_ref"></WashStation>
+    <view class="station-info-wrapper">
+      <view class="station-box">
+        <view class="station_wrapper">
+          <WashStation :item="state.station" ref="station_ref"></WashStation>
+        </view>
       </view>
     </view>
 
     <view class="device-box">
       <view class="device-item" v-for="device in state.deviceList" :key="device.id" @click="handleClickDevice(device)">
-        <div class="device-item_header">
+        <view class="device-item_header">
           <text class="device-item_header-seq">{{ device.seqName }}</text>
-          <text class="device-item_header-status" :class="device.state=='idle'?'success':''">{{ fmtDictName('WashDevice.state', device.state) }}</text>
-        </div>
-        <div class="device-item_body">
+          <text class="device-item_header-status" 
+                :class="getDeviceStatusClass(device.state)">
+            {{ fmtDictName('WashDevice.state', device.state) }}
+          </text>
+        </view>
+        <view class="device-item_body">
           <view class="device-item_body_header">
             <text class="device-item_body_header-short">编号:{{ device.shortId }}</text>
-            <view></view>
-            <text class="device-item_body_header-short">服务:{{ device.functionList.join("、") }}</text>
           </view>
-          <!--          <view class="device-item_body_func">
-                      <view class="device-item_body_func-tag">
-                        <uv-text text="服务:" size="mini" plain plainFill  color="black" ></uv-text>
-                      </view>
-                      <view class="device-item_body_func-tag" v-for="f in device.functionList" :key="f">
-                        <uv-text :text="f" size="mini" plain plainFill  color="black" ></uv-text>
-                      </view>
-                    </view>-->
-        </div>
-
+          <view class="device-item_body_func">
+            <view class="device-item_body_func-tag" v-for="(f, index) in device.functionList" :key="index">
+              {{ f }}
+            </view>
+          </view>
+        </view>
       </view>
-
     </view>
 
     <view class="station-bottom">
@@ -63,11 +67,7 @@ const initState = () => ({
   station: {
     id: 0
   },
-  currentUserId: 0,
-  imageStyle: {
-    height: '180px',
-    width: '100%',
-  }
+  currentUserId: 0
 })
 
 const state = reactive(initState())
@@ -93,13 +93,6 @@ onLoad((options) => {
 });
 
 onShow(() => {
-  //设置图片的宽高
-  let width = uni.getWindowInfo().windowWidth - rpxToPx(20)
-  let height = uni.getWindowInfo().windowHeight * 3 / 4
-  state.imageStyle = {
-    width: `${width}px`,
-    height: `${height}px`,
-  }
   // let station = getApp<any>().globalData.last.station;
   // if (station) {
   //   state.station = station;
@@ -148,138 +141,215 @@ const handleClickDevice = (device: any) => {
   })
 }
 
+// 获取设备状态对应的CSS类
+const getDeviceStatusClass = (state: string) => {
+  switch (state) {
+    case 'idle':
+      return 'success';
+    case 'working':
+      return 'warning';
+    case 'fault':
+      return 'error';
+    default:
+      return '';
+  }
+}
+
 
 </script>
 
 <style lang="scss" scoped>
+// 品牌主色调
+$brand-primary: #C6171E;
+$brand-primary-light: #F8E4E5;
+$brand-success: #07C160;
+$brand-warning: #FAAD14;
+$brand-error: #F56C6C;
+$text-primary: #333333;
+$text-secondary: #666666;
+$text-tertiary: #999999;
+$border-color: #E4E7ED;
+$background-light: #F5F7FA;
+
 .page {
-  margin-top: 104px;
-  height: calc(100vh - 164px);
+  height: 100vh;
   width: 100%;
-  background-color: #eee;
+  background-color: $background-light;
   display: flex;
   flex-direction: column;
+  padding: 88rpx 0 120rpx;
+  box-sizing: border-box;
+  overflow-x: hidden;
 }
 
-.station-bg {
+.station-container {
+  width: 100%;
+  padding: 0 20rpx;
+  margin: 20rpx auto 0;
+  position: relative;
   z-index: 1;
-  border-radius: 10px;
-  //width: calc(100vw - 20rpx);
-  margin: 10px auto 0 auto;
+  box-sizing: border-box;
+}
+
+.station-swiper {
+  height: 400rpx;
+  border-radius: 20rpx;
+  overflow: hidden;
+  box-shadow: 0 8rpx 24rpx rgba(0, 0, 0, 0.12);
 }
 
-.block {
+.station-bg {
+  width: 100%;
+  height: 100%;
+  display: block;
+  margin: auto;
   border-radius: 20rpx;
-  background: #fff;
 }
 
-.content_station {
-  height: calc(100vh - 480px);
+.station-info-wrapper {
+  width: 100%;
+  padding: 0 20rpx;
+  margin: 20rpx 0;
+  z-index: 10;
+  position: relative;
+  box-sizing: border-box;
 }
 
 .station-box {
-  width: calc(100vw - 80rpx);
-  margin: -80rpx auto 0 auto;
-  border-radius: 15rpx;
+  width: 100%;
+  border-radius: 16rpx;
+  background-color: #fff;
+  box-shadow: 0 8rpx 24rpx rgba(0, 0, 0, 0.1);
+  padding: 24rpx;
+  position: relative;
   z-index: 10;
+  box-sizing: border-box;
 }
 
 .device-box {
-  flex:1;
+  flex: 1;
   overflow-y: scroll;
-  width: calc(100vw - 80rpx);
-  margin: 30rpx auto 30rpx;
+  width: 100%;
+  padding: 0 30rpx;
+  margin: 30rpx 0 0 0;
+  padding-bottom: 150rpx;
+  max-height: calc(100vh - 600rpx);
+  box-sizing: border-box;
 }
 
 .device-item {
   background-color: #fff;
-  border-radius: 10rpx;
-  //width: calc(100vw - 80rpx);
-  margin: 20rpx auto;
-  padding: 10rpx;
+  border-radius: 16rpx;
+  margin: 0 auto 24rpx;
+  padding: 20rpx 24rpx;
   display: flex;
   flex-direction: column;
+  box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.06);
+  transition: all 0.2s ease;
+  border: 1rpx solid $border-color;
+
+  &:active {
+    transform: scale(0.99);
+    box-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.04);
+  }
 
   &_header {
     display: flex;
     justify-content: space-between;
-
+    align-items: center;
+    margin-bottom: 16rpx;
 
     &-seq {
-      font-size: 28rpx;
+      font-size: 30rpx;
+      font-weight: 600;
+      color: $text-primary;
     }
 
     &-status {
-      font-size: 20rpx;
-      background-color: $uni-color-primary;
+      font-size: 22rpx;
+      border-radius: 20rpx;
+      padding: 6rpx 20rpx;
+      font-weight: 500;
+      background-color: $brand-primary;
       color: #fff;
-      border-radius: 6rpx;
-      padding: 6rpx 10rpx;
-      margin-left: 30rpx;
     }
   }
 
   &_body {
-    margin-top: 8rpx;
-    border-top: 1rpx solid #eee;
+    border-top: 1rpx solid $border-color;
+    padding-top: 16rpx;
     display: flex;
     flex-direction: column;
 
     &_header {
-      font-size: 24rpx;
-      padding: 10rpx 0;
+      margin-bottom: 12rpx;
 
       &-short {
-        font-size: 24rpx;
+        font-size: 26rpx;
         font-weight: 500;
-        transform: scale(0.8);
+        color: $text-secondary;
       }
-
-
     }
 
     &_func {
-      display: inline-flex;
+          display: flex;
+          flex-wrap: wrap;
+          margin-right: -8rpx;
+
+          &-tag {
+            font-size: 18rpx;
+            padding: 2rpx 14rpx;
+            margin-right: 8rpx;
+            margin-bottom: 8rpx;
+            background-color: $brand-primary-light;
+            color: $brand-primary;
+            border-radius: 16rpx;
+            font-weight: 500;
+            line-height: 1.4;
+          }
+        }
+  }
+}
 
-      &-label {
-        font-size: 24rpx;
-        color: #aaa;
-      }
+.device-item_header-status.success {
+  background-color: $brand-success;
+  color: #fff;
+}
 
-      &-tag {
-        margin-right: 6px;
-        transform: scale(0.8);
-        padding: 10rpx 0;
-      }
-    }
-  }
+.device-item_header-status.warning {
+  background-color: $brand-warning;
+  color: #fff;
+}
 
+.device-item_header-status.error {
+  background-color: $brand-error;
+  color: #fff;
 }
 
 .station-bottom {
   width: 100%;
-
   position: fixed;
-  bottom: 20rpx;
-  left: 20rpx;
+  bottom: 0;
+  left: 0;
+  background-color: #fff;
+  box-shadow: 0 -4rpx 16rpx rgba(0, 0, 0, 0.06);
+  padding: 20rpx;
+  box-sizing: border-box;
+  z-index: 100;
 
   &-box {
-    width: calc(100vw - 40rpx);
+    width: 100%;
     display: flex;
-    justify-content: space-around;
+    justify-content: space-between;
   }
 
   .bottom-left {
-    width: 200rpx;
+    flex: 1;
+    margin-right: 20rpx;
   }
 
   .bottom-right {
-    flex: 1
+    flex: 2;
   }
 }
-
-.success {
-  background-color: $uni-color-success;
-  color: #fff;
-}
 </style>

+ 1 - 1
src/pages.json

@@ -111,7 +111,7 @@
           "style": {
             "navigationStyle": "default",
             "navigationBarTitleText": "登录",
-            "navigationBarBackgroundColor": "#ffffff",
+            "navigationBarBackgroundColor": "#ffffff"
           }
         },
         {