li.shaoyi 1 år sedan
förälder
incheckning
5316b7a617

+ 10 - 2
src/packages/mobile/views/user/forget/Index.vue

@@ -4,7 +4,7 @@
             <app-navbar :title="$t('user.forget.title')" />
         </template>
         <Form ref="formRef" class="g-form__container" @submit="formSubmit">
-            <CellGroup inset>
+            <CellGroup :inset="insetStyle">
                 <Field v-model="formData.mobile" type="tel" name="mobile" :placeholder="$t('common.pleaseenter')"
                     autocomplete="off" :rules="formRules.mobile">
                     <template #label>
@@ -43,7 +43,8 @@
         </Form>
         <template #footer>
             <div class="g-form__footer inset">
-                <Button type="danger" @click="formRef?.submit()" round block>{{ $t('user.forget.resetpwd') }}</Button>
+                <Button type="danger" @click="formRef?.submit()" :round="insetStyle" block>{{ $t('user.forget.resetpwd')
+                    }}</Button>
             </div>
         </template>
     </app-view>
@@ -63,6 +64,13 @@ import cryptojs from 'crypto-js'
 import { i18n, useUserStore } from '@/stores'
 import { getCountryCodeList } from '@/constants/unit'
 
+defineProps({
+    insetStyle: {
+        type: Boolean,
+        default: true
+    }
+})
+
 const datalist = computed(() => {
     return getCountryCodeList().map(e => {
         return { text: e.value, value: e.value }

+ 9 - 5
src/packages/mobile/views/user/register/Index.vue

@@ -4,7 +4,7 @@
       <app-navbar :title="$t('user.register.title')" />
     </template>
     <Form ref="formRef" class="g-form__container register__form" @submit="formSubmit">
-      <CellGroup inset>
+      <CellGroup :inset="insetStyle">
         <Field v-model="formData.mobilephone" type="digit" name="mobilephone" :placeholder="$t('common.required')"
           :rules="formRules.mobilephone">
           <template #label>
@@ -32,7 +32,7 @@
           </template>
         </Field>
       </CellGroup>
-      <CellGroup inset>
+      <CellGroup :inset="insetStyle">
         <Field v-model="formData.loginpwd" name="loginpwd" type="password" :label="$t('user.register.logipwd')"
           :placeholder="$t('common.required')" :rules="formRules.loginpwd" />
         <Field v-model="confirmpassword" name="confirmpassword" type="password" :label="$t('user.register.confirmpwd')"
@@ -47,7 +47,7 @@
           </template> -->
         </Field>
       </CellGroup>
-      <CellGroup inset>
+      <CellGroup :inset="insetStyle">
         <Cell>
           <template #title>
             <div style="display: flex;align-items: center;font-size: 13px;">
@@ -67,7 +67,7 @@
     </Form>
     <template #footer>
       <div class="g-form__footer inset">
-        <Button type="danger" @click="formRef?.submit" round block>{{ $t('user.register.freeregister') }}</Button>
+        <Button type="danger" @click="formRef?.submit" :round="insetStyle" block>{{ $t('user.register.freeregister') }}</Button>
       </div>
       <app-reward :show="showReward" :value="redEnvelope" :title="$t('user.register.registersuccess')"
         @click="router.back()" />
@@ -94,11 +94,15 @@ defineProps({
   showYhkhfxgzs: {
     type: Boolean,
     default: true
+  },
+  insetStyle: {
+    type: Boolean,
+    default: true
   }
 })
 
 // 是否弹出选择器
-const show = shallowRef(false) 
+const show = shallowRef(false)
 const datalist = computed(() => {
   return getCountryCodeList().map(e => {
     return { text: e.value, value: e.value }

+ 1 - 0
src/packages/tss/assets/images/icons/clock.svg

@@ -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="1732007276762" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3237" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M512.033322 0a511.992451 511.992451 0 1 0 511.966419 511.992451A511.992451 511.992451 0 0 0 512.033322 0z" fill="#93CBA3" p-id="3238"></path><path d="M120.932317 513.137848A391.101006 391.101006 0 1 0 512.033322 122.036842 391.101006 391.101006 0 0 0 120.932317 513.137848z" fill="#57AB61" p-id="3239"></path><path d="M709.510175 501.970227h-186.2832v-186.413359a37.277465 37.277465 0 0 0-74.554931 0v223.508602a37.355561 37.355561 0 0 0 37.277465 37.277466h223.508602a37.251434 37.251434 0 0 0 0-74.502868z" fill="#FFFFFF" p-id="3240"></path></svg>

+ 1 - 0
src/packages/tss/assets/images/icons/lock.svg

@@ -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="1732170126151" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3237" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M265.066462 359.428699l19.980933-161.079165 62.178109-111.628636 139.86653-30.792533h119.110081l97.121932 73.993317 40.554907 96.20956v79.193835l19.889696 79.01136h144.154675v593.908139H99.927246v-579.355816l144.291531-14.369849z" fill="#93CBA3" p-id="3238"></path><path d="M902.67719 350.304985H794.834895v-65.690738a282.835123 282.835123 0 1 0-565.670246 0v65.690738H121.322354A53.921148 53.921148 0 0 0 67.401206 404.226133v565.670245a53.82991 53.82991 0 0 0 53.921148 53.921148h781.53731a53.82991 53.82991 0 0 0 53.921148-53.921148V404.089277a53.82991 53.82991 0 0 0-54.103622-53.784292z m-593.041387-65.690738a202.135876 202.135876 0 1 1 404.226133 0v65.690738H309.635803z m565.670246 658.504032H147.689886V431.049851h727.616163z" fill="#57AB61" p-id="3239"></path><path d="M471.490483 720.089099v142.193077a26.914955 26.914955 0 0 0 26.960574 26.960574h26.960574a26.914955 26.914955 0 0 0 26.960574-26.960574v-142.193077a121.299773 121.299773 0 1 0-80.881722 0z m40.509289-154.236379a40.418051 40.418051 0 1 1-40.372433 40.372433 40.46367 40.46367 0 0 1 40.372433-40.372433z" fill="#57AB61" p-id="3240"></path></svg>

+ 1 - 0
src/packages/tss/assets/images/icons/order.svg

@@ -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="1732007266784" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3093" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M649.247031 1024a46.247677 46.247677 0 0 1-43.367582-48.68468V511.536969a46.081518 46.081518 0 0 1 43.367582-48.68468h196.012609v151.149593a9.831093 9.831093 0 0 0 9.221842 10.329571h138.826111v350.983867a46.19229 46.19229 0 0 1-43.367582 48.68468z m224.31508-414.23518a14.788179 14.788179 0 0 1-13.348132-15.840522v-121.850167l119.080845 137.746075z" fill="#1FAA4C" opacity=".773" p-id="3094"></path><path d="M123.463562 1018.129037A90.833761 90.833761 0 0 1 30.220491 929.759973V88.439959A90.473749 90.473749 0 0 1 123.463562 0.070895h421.407724v274.38442a19.385254 19.385254 0 0 0 19.772959 18.692924h298.505215v636.528655a90.833761 90.833761 0 0 1-93.243071 88.369064zM605.851756 266.673521a28.856335 28.856335 0 0 1-28.690176-28.717869V16.769906l256.356135 249.875922z" fill="#119F3D" opacity=".5" p-id="3095"></path><path d="M278.213274 376.781762H196.29673a28.247084 28.247084 0 1 1 0-56.466475h81.445759a28.247084 28.247084 0 0 1 0.470785 56.466475z m229.521405 153.61429H196.379809a28.247084 28.247084 0 1 1 0-56.466475h311.410256a28.053232 28.053232 0 0 1 28.219391 28.219391 28.634789 28.634789 0 0 1-28.219391 28.247084z m123.539453 153.171198H196.379809a28.247084 28.247084 0 1 1 0-56.466475h434.977402a28.053232 28.053232 0 0 1 28.219391 28.219391 28.330164 28.330164 0 0 1-28.247084 28.247084z" fill="#FFFFFF" p-id="3096"></path></svg>

+ 1 - 0
src/packages/tss/assets/images/icons/package.svg

@@ -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="1732007296815" class="icon" viewBox="0 0 1079 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3381" xmlns:xlink="http://www.w3.org/1999/xlink" width="210.7421875" height="200"><path d="M857.495935 620.499962a184.425297 184.425297 0 1 1-184.425297 184.425297 184.425297 184.425297 0 0 1 184.425297-184.425297z" fill="#FFFFFF" p-id="3382"></path><path d="M858.948307 583.101385a220.449307 220.449307 0 1 0 220.449307 220.449308 220.449307 220.449307 0 0 0-220.449307-220.449308z m123.321936 178.330522l-143.369855 146.767369a18.31026 18.31026 0 0 1-25.935213 0l-77.131322-76.871971a24.405035 24.405035 0 0 1 0-33.067396 23.549173 23.549173 0 0 1 31.822505 0l58.354229 58.354229 123.425677-127.679052a28.191576 28.191576 0 0 1 33.093331 0 26.81701 26.81701 0 0 1 0 32.211534z m0 0" fill="#57AB61" p-id="3383"></path><path d="M912.712003 289.307297v243.635387a286.661905 286.661905 0 0 0-248.22592 84.989692 238.007446 238.007446 0 0 0-51.870426 269.000025l-126.382291 104.259555V520.519717l426.452701-231.16055z m-912.737938-0.959603l426.530507 231.264291v471.605906L0 756.91918z m94.015146 152.810273l-0.233417 2.360104v63.048502a12.345161 12.345161 0 0 0 4.512727 8.55862l1.919205 1.400502 202.554011 109.16131a12.293291 12.293291 0 0 0 17.895297-7.780564l0.259352-2.308234V552.679381a12.13768 12.13768 0 0 0-4.512727-8.55862l-1.919206-1.400502-202.528075-109.16131a12.293291 12.293291 0 0 0-17.895297 7.780564zM456.330066 0l428.631259 235.310184-427.49011 231.316162L29.9033 234.272776 456.304131 0z" fill="#91CEA6" opacity=".842" p-id="3384"></path></svg>

+ 1 - 0
src/packages/tss/assets/images/icons/phone.svg

@@ -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="1732170119692" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3093" xmlns:xlink="http://www.w3.org/1999/xlink" width="200" height="200"><path d="M194.013549 43.840399h639.868827v955.537449h-639.868827z" fill="#93CBA3" p-id="3094"></path><path d="M792.76014 0.11603H231.253915A97.217404 97.217404 0 0 0 129.856035 92.811694v838.398795A97.217404 97.217404 0 0 0 231.253915 1023.906153h561.506225a97.217404 97.217404 0 0 0 101.227248-92.695664V92.811694A96.87614 96.87614 0 0 0 792.76014 0.11603z m35.789996 931.606354a34.638232 34.638232 0 0 1-35.789996 32.761284H231.253915a34.638232 34.638232 0 0 1-35.789996-32.761284V92.811694a34.638232 34.638232 0 0 1 35.789996-32.761284h561.506225a34.638232 34.638232 0 0 1 35.789996 32.761284z" fill="#57AB61" p-id="3095"></path><path d="M623.322874 106.931466H400.733838a27.258412 27.258412 0 0 0-28.538149 25.594753v7.507794a27.258412 27.258412 0 0 0 28.538149 25.594753h222.589036a27.258412 27.258412 0 0 0 28.53815-25.594753v-7.59311a27.258412 27.258412 0 0 0-28.53815-25.509437zM512.028356 720.693644a92.610348 92.610348 0 1 0 102.890908 92.055796 98.11322 98.11322 0 0 0-102.890908-92.055796z m0 125.073027a35.064812 35.064812 0 0 1-36.899102-33.017231 37.15505 37.15505 0 0 1 73.840863 0 35.064812 35.064812 0 0 1-36.941761 33.017231z" fill="#57AB61" p-id="3096"></path></svg>

BIN
src/packages/tss/assets/images/login-bg.png


BIN
src/packages/tss/assets/images/login-logo.png


BIN
src/packages/tss/assets/images/mine-bg.png


Filskillnaden har hållts tillbaka eftersom den är för stor
+ 0 - 0
src/packages/tss/assets/themes/base/iconfont.less


+ 3 - 2
src/packages/tss/assets/themes/default/default.less

@@ -35,13 +35,14 @@
     --van-button-danger-background: #305C3E;
 
     /* Vant-Checkbox */
-    --van-checkbox-checked-icon-color: #DD364A !important;
+    --van-checkbox-checked-icon-color: #C19239 !important;
 
     /* Vant-Tabs */
     --van-tabs-bottom-bar-color: #72533B;
 
-    --van-dialog-confirm-button-text-color: #DD364A;
+    --van-dialog-confirm-button-text-color: #C19239;
 
+    .app-page,
     .app-view {
         background-color: #EEF6F3;
     }

+ 71 - 21
src/packages/tss/assets/themes/global/global.less

@@ -54,13 +54,13 @@
         padding-bottom: 16px;
 
         /* 父元素的第一个子元素 */
-        .van-cell-group--inset:first-of-type {
-            margin-top: 16px;
+        .van-cell-group:first-of-type {
+            margin-top: 5px;
         }
 
         /* 相邻兄弟元素 */
-        .van-cell-group--inset+.van-cell-group--inset {
-            margin-top: 12px;
+        .van-cell-group+.van-cell-group {
+            margin-top: 5px;
         }
 
         .van-field {
@@ -138,9 +138,10 @@
         height: 100%;
 
         .g-icon {
-            width: 18px;
-            height: 18px;
-            font-size: 18px;
+            width: 24px;
+            height: 24px;
+            font-size: 24px;
+            color: rgb(48, 92, 62);
         }
 
         &__label {
@@ -233,7 +234,7 @@
 
     .goods {
         background-color: #fff;
-        box-shadow: 0px 2px 5px 1px rgba(52,35,23,0.15);
+        box-shadow: 0px 2px 5px 1px rgba(52, 35, 23, 0.15);
         border-radius: 8px;
         overflow: hidden;
 
@@ -373,16 +374,13 @@
 
 /* 商品列表 */
 .g-product-list {
-    padding: 10px;
-    padding-bottom: 0;
-
     &__box {
         &:not(:first-child) {
-            margin-top: 12px;
+            margin-top: 5px;
         }
 
         background-color: #fff;
-        border-radius: 8px;
+        box-shadow: 0px 2px 5px 1px rgba(52, 35, 23, 0.15);
         padding: 16px;
     }
 
@@ -390,21 +388,54 @@
         display: flex;
         justify-content: space-between;
         align-items: center;
+        border-bottom: 1px solid #F2F2F2;
+        padding-bottom: 12px;
         margin-bottom: 12px;
+
+        .left {
+            span {
+                font-size: 12px;
+                color: #A39E99;
+                margin-left: 20px;
+            }
+        }
+
+        .right {
+            font-size: 12px;
+        }
     }
 
     &__content {
-        display: flex;
+        color: #5D5D5D;
 
-        .left {
-            margin-right: 12px;
+        .top {
+            display: flex;
+
+            &-left {
+                margin-right: 12px;
+            }
+
+            &-right {
+                flex: 1;
+                font-size: 12px;
+                line-height: 1.6;
+            }
         }
 
-        .right {
-            flex: 1;
-            font-size: 13px;
-            line-height: 1.6;
-            color: #777;
+        .bottom {
+            display: flex;
+            justify-content: space-between;
+            margin-top: 30px;
+
+            label {
+                font-size: 12px;
+                margin-right: 5px;
+            }
+
+            span {
+                font-size: 22px;
+                color: #C19239;
+            }
         }
     }
 
@@ -628,10 +659,29 @@
     }
 
     &-tabs {
+        &__wrap {
+            margin-top: 5px;
+        }
+
         &--list {
+            --van-tab-text-color: #A39E99;
+            --van-tab-active-text-color: #31AE58;
+            --van-tabs-bottom-bar-color: var(--van-tab-active-text-color);
+            --van-tabs-bottom-bar-height: 2px;
+
             display: flex;
             flex-direction: column;
             height: 100%;
+
+            .van-list {
+                padding-top: 5px;
+            }
+
+            .van-tab {
+                &:not(:first-child) {
+                    border-left: 1px solid #f2f2f2;
+                }
+            }
         }
 
         &--list &__content {

+ 5 - 1
src/packages/tss/router/index.ts

@@ -99,7 +99,8 @@ const routes: Array<RouteRecordRaw> = [
           ignoreAuth: true,
         },
         props: {
-          showYhkhfxgzs: false
+          showYhkhfxgzs: false,
+          insetStyle: false
         }
       },
       {
@@ -109,6 +110,9 @@ const routes: Array<RouteRecordRaw> = [
         meta: {
           ignoreAuth: true,
         },
+        props: {
+          insetStyle: false
+        }
       },
       {
         path: 'cancel',

+ 21 - 27
src/packages/tss/views/mine/Index.vue

@@ -1,10 +1,10 @@
 <template>
-    <app-view class="mine">
-        <template #header>
-            <app-navbar :title="$t('mine.title')" :show-back-button="false" @ready="onReady" />
+    <app-scroll-view class="mine">
+        <template #afterHeader>
+            <app-navbar :title="$t('mine.title')" :show-back-button="false" />
         </template>
         <div ref="headerRef" class="mine-header">
-            <div class="mine-header__wrapper">
+            <div class="mine-header__info">
                 <div class="profile">
                     <div class="profile-user">
                         <div class="profile-user__avatar" @click="routerTo('user-avatar')">
@@ -43,25 +43,24 @@
                     </ul>
                 </div>
                 <div class="button">
-                    <Button type="danger" size="small" round @click="doInOutMoney('0')">{{ $t('mine.cashin') }}</Button>
-                    <Button size="small" round @click="doInOutMoney('1')">{{ $t('mine.cashout') }}</Button>
+                    <Button type="danger" size="small" @click="doInOutMoney('0')">{{ $t('mine.cashin') }}</Button>
+                    <Button size="small" @click="doInOutMoney('1')">{{ $t('mine.cashout') }}</Button>
                 </div>
             </div>
+            <div class="mine-header__iconbar">
+                <ul>
+                    <li @click="routerTo('order-position')">
+                        <span>{{ $t('mine.myposition') }}</span>
+                    </li>
+                    <li @click="routerTo('order-list')">
+                        <span>{{ $t('mine.myorder') }}</span>
+                    </li>
+                    <li @click="routerTo('order-delivery')">
+                        <span>{{ $t('mine.delivery') }}</span>
+                    </li>
+                </ul>
+            </div>
         </div>
-        <app-block class="mine-iconbar">
-            <ul>
-                <li @click="routerTo('order-position')">
-                    <Iconfont label-direction="bottom" icon="g-icon-position--line">{{ $t('mine.myposition') }}
-                    </Iconfont>
-                </li>
-                <li @click="routerTo('order-list')">
-                    <Iconfont label-direction="bottom" icon="g-icon-order--line">{{ $t('mine.myorder') }}</Iconfont>
-                </li>
-                <li @click="routerTo('order-delivery')">
-                    <Iconfont label-direction="bottom" icon="g-icon-case--line">{{ $t('mine.delivery') }}</Iconfont>
-                </li>
-            </ul>
-        </app-block>
         <app-block class="g-navmenu">
             <CellGroup>
                 <Cell is-link :to="{ name: 'bank-capital' }">
@@ -118,11 +117,11 @@
             </CellGroup>
         </app-block>
         <div class="mine-footer">
-            <Button class="button-logout" type="danger" size="small" round @click="userLogout">
+            <Button class="button-logout" type="danger" @click="userLogout" style="width: 80%;">
                 {{ $t('common.logout') }}
             </Button>
         </div>
-    </app-view>
+    </app-scroll-view>
 </template>
 
 <script lang="ts" setup>
@@ -148,11 +147,6 @@ const { currentAccount } = accountStore.$toRefs()
 const headerRef = shallowRef<HTMLDivElement>()
 const authStatus = computed(() => userStore.userAccount.hasauth) // 实名认证状态
 
-const onReady = (el: HTMLDivElement) => {
-    // 设置背景图位置
-    headerRef.value?.style.setProperty('background-position', `0 -${el.clientHeight}px`)
-}
-
 /// 进行出入金操作判断
 const doInOutMoney = (tab: string) => {
     if (authStatus.value === AuthStatus.Certified) {

+ 135 - 95
src/packages/tss/views/mine/index.less

@@ -1,10 +1,12 @@
 @import '@mobile/assets/themes/base/mixin.less';
 
 .mine {
-    @backgroundImage: linear-gradient(#0C5824, #0C5824 150px, transparent 150px);
+    --box-shadow: 0px 2px 5px 1px rgba(52, 35, 23, 0.15);
+
+    @backgroundImage: url(../../assets/images/mine-bg.png);
 
     .app-navbar {
-        background-image: @backgroundImage;
+        background-color: #0C5824;
 
         &__wrapper {
             color: #fff;
@@ -12,135 +14,173 @@
         }
     }
 
+    .app-block__wrapper{
+        box-shadow: var(--box-shadow);
+    }
+
     &-header {
-        color: #000;
-        background-color: #fff;
         background-image: @backgroundImage;
-        padding: 0 18px;
+        background-position: center top;
+        background-size: 100% auto;
+        padding: 0 10px;
 
-        &__wrapper {
-            background-color: #fff;
+        &__info {
+            color: #fff;
             border-top-left-radius: 10px;
             border-top-right-radius: 10px;
-            padding: 12px;
-        }
+            padding: 20px 12px;
 
-        .profile {
-            display: flex;
-
-            &-user {
-                flex: 1;
+            .profile {
                 display: flex;
-                align-items: center;
-
-                .g-image--avatar {
-                    width: 40px;
-                    height: 40px;
-                    border-radius: 50%;
-                    font-size: 0;
-                    margin-right: 8px;
-                }
+                justify-content: space-around;
 
-                &__info {
-                    flex: 1;
-                    padding-right: 16px;
+                &-user {
+                    display: flex;
+                    align-items: center;
+
+                    &__avatar {
+                        font-size: 0;
+
+                        .g-image--avatar {
+                            width: 69px;
+                            height: 69px;
+                            border-radius: 50%;
+                            font-size: 0;
+                            margin-right: 8px;
+                            border: 3px solid rgba(255, 255, 255, .5);
+                        }
+                    }
 
-                    .top {
-                        display: flex;
-                        align-items: center;
-                        font-size: 12px;
-                        color: #A1B1C5;
+                    &__info {
+                        flex: 1;
+                        padding-right: 16px;
 
-                        span {
-                            .mixin-text-overflow()
-                        }
+                        .top {
+                            display: flex;
+                            align-items: center;
+                            font-size: 12px;
 
-                        .van-icon {
-                            line-height: normal;
-                            margin-left: 2px;
-                        }
-                    }
+                            span {
+                                .mixin-text-overflow()
+                            }
 
-                    .bottom {
-                        line-height: 20px;
-                        font-size: 15px;
-                        font-weight: bold;
-                    }
-                }
-            }
+                            .van-icon {
+                                line-height: normal;
+                                margin-left: 2px;
+                            }
+                        }
 
-            &-account {
-                display: flex;
-                flex-direction: column;
-                justify-content: center;
-
-                span {
-                    line-height: 20px;
-                    font-size: 12px;
-                    
-                    &:first-child {
-                        margin-right: 5px;
-                        color: #A1B1C5;
+                        .bottom {
+                            line-height: 20px;
+                            font-size: 15px;
+                            font-weight: bold;
+                        }
                     }
                 }
-            }
-        }
-
-        .bank {
-            display: flex;
-            justify-content: space-around;
-            padding: 18px 0;
 
-            ul {
-                li {
+                &-account {
                     display: flex;
                     flex-direction: column;
-                    padding-bottom: 5px;
-                    
+                    justify-content: center;
+
                     span {
                         line-height: 20px;
 
                         &:first-child {
-                            font-size: 12px;
+                            margin-right: 5px;
                             color: #A1B1C5;
                         }
+                    }
+                }
+            }
 
-                        &:last-child {
-                            font-size: 15px;
-                            font-weight: bold;
+            .bank {
+                display: flex;
+                justify-content: space-around;
+                text-align: center;
+                padding-bottom: 16px;
+
+                ul {
+                    li {
+                        display: flex;
+                        flex-direction: column;
+                        padding-bottom: 5px;
+
+                        span {
+                            line-height: 28px;
+
+                            &:first-child {
+                                font-size: 12px;
+                            }
+
+                            &:last-child {
+                                color: #F2CD88;
+                                font-size: 20px;
+                                font-weight: 500;
+                            }
                         }
+
                     }
-                    
                 }
             }
-        }
 
-        .button {
-            display: flex;
-            justify-content: space-around;
+            .button {
+                --van-button-danger-background: #FFBC40;
+
+                display: flex;
+                justify-content: space-around;
 
-            .van-button {
-                width: 140px;
-                box-shadow: 0 3px 7px 0 #e0e2e8;
+                .van-button {
+                    width: 140px;
+                    box-shadow: 1px 2px 2px 1px rgba(0, 0, 0, 0.2);
+                }
             }
         }
-    }
-
-    &-iconbar {
-        ul {
-            display: flex;
-            background-color: #fff;
-            padding: 12px;
 
-            li {
-                flex: 1;
+        &__iconbar {
+            ul {
                 display: flex;
-                flex-direction: column;
-                align-items: center;
+                background-color: #fff;
+                border-radius: 10px;
+                box-shadow: var(--box-shadow);
+                padding: 20px 0;
+
+                li {
+                    flex: 1;
+                    display: flex;
+                    flex-direction: column;
+                    align-items: center;
+                    text-align: center;
+                    font-size: 13px;
+                    font-weight: 500;
+
+                    &::before {
+                        content: '';
+                        width: 48px;
+                        height: 48px;
+                        background-size: contain;
+                        background-repeat: no-repeat;
+                        background-position: center;
+                        margin-bottom: 5px;
+                    }
 
-                .g-icon {
-                    font-size: 28px;
-                    margin-bottom: 2px;
+                    &:nth-child(1) {
+                        &::before {
+                            background-image: url(../../assets/images/icons/order.svg);
+                        }
+                    }
+
+                    &:nth-child(2) {
+                        &::before {
+                            background-image: url(../../assets/images/icons/clock.svg);
+                        }
+                    }
+
+                    &:nth-child(3) {
+                        &::before {
+                            background-image: url(../../assets/images/icons/package.svg);
+                        }
+                    }
                 }
             }
         }

+ 6 - 1
src/packages/tss/views/order/delivery/Index.vue

@@ -44,5 +44,10 @@ const components = [
 ]
 
 const active = shallowRef(0)
+</script>
 
-</script>
+<style lang="less" scoped>
+.van-tabs--list {
+    --van-tabs-bottom-bar-width: calc(~'100% / 3');
+}
+</style>

+ 35 - 34
src/packages/tss/views/order/delivery/components/offline/Index.vue

@@ -6,7 +6,8 @@
             <div class="g-product-list__box" v-for="(item, index) in dataList" :key="index">
                 <div class="g-product-list__titlebar">
                     <div class="left">
-                        <b>{{ $t('position.goods.orderid') }}:{{ item.deliveryorderid }}</b>
+                        <b>{{ item.goodscode }}</b>
+                        <span>{{ formatDate(item.reqtime) }}</span>
                     </div>
                     <div class="right">
                         <b :class="!item.buyorsell ? 'g-price-up' : 'g-price-down'">
@@ -15,40 +16,40 @@
                     </div>
                 </div>
                 <div class="g-product-list__content">
-                    <div class="left">
-                        <Image width="100" height="100" radius="8" :src="getImageUrl(item.thumurls)" />
+                    <div class="top">
+                        <div class="top-left">
+                            <Image width="80" height="80" radius="8" :src="getImageUrl(item.thumurls)" />
+                        </div>
+                        <div class="top-right">
+                            <ul>
+                                <li>
+                                    <span>{{ $t('position.goods.orderid') }}:</span>
+                                    <span>{{ item.deliveryorderid }}</span>
+                                </li>
+                                <li>
+                                    <span>{{ $t('position.goods.agreeunit') }}:</span>
+                                    <span>{{ item.agreeunit }}{{ item.goodsunit }}</span>
+                                </li>
+                                <li>
+                                    <span>{{ $t('delivery.offline.deliveryqty') }}:</span>
+                                    <span>{{ item.deliveryqty }}</span>
+                                </li>
+                                <li>
+                                    <span>{{ $t('delivery.offline.deliveryinfo') }}:</span>
+                                    <span>{{ item.deliveryinfo }}</span>
+                                </li>
+                            </ul>
+                        </div>
                     </div>
-                    <div class="right">
-                        <ul>
-                            <li>
-                                <span>{{ $t('position.goodscode') }}:</span>
-                                <span>{{ item.goodscode }}</span>
-                            </li>
-                            <li>
-                                <span>{{ $t('position.goods.agreeunit') }}:</span>
-                                <span>{{ item.agreeunit }}{{ item.goodsunit }}</span>
-                            </li>
-                            <li>
-                                <span>{{ $t('delivery.offline.deliveryqty') }}:</span>
-                                <span>{{ item.deliveryqty }}</span>
-                            </li>
-                            <li>
-                                <span>{{ $t('delivery.offline.deliveryprice') }}:</span>
-                                <span>{{ item.orderstatus === 1 ? '--' : item.deliveryprice }}</span>
-                            </li>
-                            <li>
-                                <span>{{ $t('delivery.offline.deliveryamount') }}:</span>
-                                <span>{{ item.orderstatus === 1 ? '--' : item.deliveryamount }}</span>
-                            </li>
-                            <li>
-                                <span>{{ $t('delivery.offline.applydate') }}:</span>
-                                <span>{{ formatDate(item.reqtime) }}</span>
-                            </li>
-                            <li>
-                                <span>{{ $t('delivery.offline.deliveryinfo') }}:</span>
-                                <span>{{ item.deliveryinfo }}</span>
-                            </li>
-                        </ul>
+                    <div class="bottom">
+                        <div class="bottom-left">
+                            <label>{{ $t('delivery.offline.deliveryprice') }}</label>
+                            <span>{{ item.orderstatus === 1 ? '--' : item.deliveryprice }}</span>
+                        </div>
+                        <div class="bottom-right">
+                            <label>{{ $t('delivery.offline.deliveryamount') }}</label>
+                            <span>{{ item.orderstatus === 1 ? '--' : item.deliveryamount }}</span>
+                        </div>
                     </div>
                 </div>
             </div>

+ 37 - 35
src/packages/tss/views/order/delivery/components/online/Index.vue

@@ -6,7 +6,8 @@
             <div class="g-product-list__box" v-for="(item, index) in dataList" :key="index">
                 <div class="g-product-list__titlebar">
                     <div class="left">
-                        <b>{{ $t('position.goods.orderid') }}:{{ item.deliveryorderid }}</b>
+                        <b>{{ item.goodsnamedisplay }}</b>
+                        <span>{{ formatDate(item.reqtime) }}</span>
                     </div>
                     <div class="right">
                         <b :class="!item.buyorsell ? 'g-price-up' : 'g-price-down'">
@@ -15,44 +16,45 @@
                     </div>
                 </div>
                 <div class="g-product-list__content">
-                    <div class="left">
-                        <Image width="100" height="100" radius="8" :src="getImageUrl(item.thumurls)" />
+                    <div class="top">
+                        <div class="top-left">
+                            <Image width="80" height="80" radius="8" :src="getImageUrl(item.thumurls)" />
+                        </div>
+                        <div class="top-right">
+                            <ul>
+                                <li>
+                                    <span>{{ $t('position.goods.orderid') }}:</span>
+                                    <span>{{ item.deliveryorderid }}</span>
+                                </li>
+                                <li>
+                                    <span>{{ $t('position.goods.agreeunit') }}:</span>
+                                    <span>{{ item.agreeunit }}{{ item.goodsunit }}</span>
+                                </li>
+                                <li>
+                                    <span>{{ $t('delivery.offline.deliveryqty') }}:</span>
+                                    <span>{{ item.deliveryqty }}</span>
+                                </li>
+                                <li>
+                                    <span>{{ $t('delivery.offline.deliveryinfo1') }}:</span>
+                                    <span>{{ item.deliveryinfo }}</span>
+                                </li>
+                            </ul>
+                        </div>
                     </div>
-                    <div class="right">
-                        <ul>
-                            <li>
-                                <span>{{ $t('position.goodscode') }}:</span>
-                                <span>{{ item.goodsnamedisplay }}</span>
-                            </li>
-                            <li>
-                                <span>{{ $t('position.goods.agreeunit') }}:</span>
-                                <span>{{ item.agreeunit }}{{ item.goodsunit }}</span>
-                            </li>
-                            <li>
-                                <span>{{ $t('delivery.offline.deliveryqty') }}:</span>
-                                <span>{{ item.deliveryqty }}</span>
-                            </li>
-                            <li>
-                                <span>{{ $t('delivery.offline.deliveryprice') }}:</span>
-                                <span>{{ item.orderstatus === 1 ? '--' : item.deliveryprice }}</span>
-                            </li>
-                            <li>
-                                <span>{{ $t('delivery.offline.deliveryamount') }}:</span>
-                                <span>{{ item.orderstatus === 1 ? '--' : item.deliveryamount }}</span>
-                            </li>
-                            <li>
-                                <span>{{ $t('delivery.offline.applydate') }}:</span>
-                                <span>{{ formatDate(item.reqtime) }}</span>
-                            </li>
-                            <li>
-                                <span>{{ $t('delivery.offline.deliveryinfo1') }}:</span>
-                                <span>{{ item.deliveryinfo }}</span>
-                            </li>
-                        </ul>
+                    <div class="bottom">
+                        <div class="bottom-left">
+                            <label>{{ $t('delivery.offline.deliveryprice') }}</label>
+                            <span>{{ item.orderstatus === 1 ? '--' : item.deliveryprice }}</span>
+                        </div>
+                        <div class="bottom-right">
+                            <label>{{ $t('delivery.offline.deliveryamount') }}</label>
+                            <span>{{ item.orderstatus === 1 ? '--' : item.deliveryamount }}</span>
+                        </div>
                     </div>
                 </div>
                 <div class="g-product-list__btnbar">
-                    <Button size="small" @click="onCancel(item)" v-if="item.orderstatus === 1" round>{{ $t('operation.cancel2') }}</Button>
+                    <Button size="small" @click="onCancel(item)" v-if="item.orderstatus === 1" round>{{
+                        $t('operation.cancel2') }}</Button>
                 </div>
             </div>
         </div>

+ 6 - 1
src/packages/tss/views/order/list/Index.vue

@@ -34,5 +34,10 @@ const components = [
 ]
 
 const active = shallowRef(0)
+</script>
 
-</script>
+<style lang="less" scoped>
+.van-tabs--list {
+    --van-tabs-bottom-bar-width: 50%;
+}
+</style>

+ 34 - 31
src/packages/tss/views/order/list/fullpayment/Index.vue

@@ -6,7 +6,8 @@
             <div class="g-product-list__box" v-for="(item, index) in dataList" :key="index">
                 <div class="g-product-list__titlebar">
                     <div class="left">
-                        <b>{{ $t('position.goods.orderid') }}:{{ item.deliveryorderid }}</b>
+                        <b>{{ item.goodsnamedisplay }}</b>
+                        <span>{{ formatDate(item.reqtime) }}</span>
                     </div>
                     <div class="right">
                         <b :class="!item.buyorsell ? 'g-price-up' : 'g-price-down'">
@@ -15,41 +16,43 @@
                     </div>
                 </div>
                 <div class="g-product-list__content">
-                    <div class="left">
-                        <Image width="100" height="100" radius="8" :src="getImageUrl(item.thumurls)" />
+                    <div class="top">
+                        <div class="top-left">
+                            <Image width="80" height="80" radius="8" :src="getImageUrl(item.thumurls)" />
+                        </div>
+                        <div class="top-right">
+                            <ul>
+                                <li>
+                                    <label>{{ $t('position.goods.orderid') }}:</label>
+                                    <span>{{ item.deliveryorderid }}</span>
+                                </li>
+                                <li>
+                                    <label>{{ $t('position.goods.agreeunit') }}:</label>
+                                    <span>{{ item.agreeunit }}{{ item.goodsunit }}</span>
+                                </li>
+                                <li>
+                                    <label>{{ $t('delivery.offline.deliveryqty') }}:</label>
+                                    <span>{{ item.deliveryqty }}</span>
+                                </li>
+                            </ul>
+                        </div>
                     </div>
-                    <div class="right">
-                        <ul>
-                            <li>
-                                <span>{{ $t('position.goodscode') }}:</span>
-                                <span>{{ item.goodsnamedisplay }}</span>
-                            </li>
-                            <li>
-                                <span>{{ $t('position.goods.agreeunit') }}:</span>
-                                <span>{{ item.agreeunit }}{{ item.goodsunit }}</span>
-                            </li>
-                            <li>
-                                <span>{{ $t('delivery.offline.deliveryqty') }}:</span>
-                                <span>{{ item.deliveryqty }}</span>
-                            </li>
-                            <li>
-                                <span>{{ $t('delivery.offline.deliveryprice') }}:</span>
-                                <span>{{ item.orderstatus === 1 ? '--' : item.deliveryprice }}</span>
-                            </li>
-                            <li>
-                                <span>{{ $t('delivery.offline.deliveryamount') }}:</span>
-                                <span>{{ item.orderstatus === 1 ? '--' : item.deliveryamount }}</span>
-                            </li>
-                            <li>
-                                <span>{{ $t('delivery.offline.applydate') }}:</span>
-                                <span>{{ formatDate(item.reqtime) }}</span>
-                            </li>
-                        </ul>
+                    <div class="bottom">
+                        <div class="bottom-left">
+                            <label>{{ $t('delivery.offline.deliveryprice') }}</label>
+                            <span>{{ item.orderstatus === 1 ? '--' : item.deliveryprice }}</span>
+                        </div>
+                        <div class="bottom-right">
+                            <label>{{ $t('delivery.offline.deliveryamount') }}</label>
+                            <span>{{ item.orderstatus === 1 ? '--' : item.deliveryamount }}</span>
+                        </div>
                     </div>
                 </div>
                 <div class="g-product-list__btnbar">
-                    <Button size="small" @click="onCancel(item)" v-if="item.orderstatus === 1" round>{{ $t('operation.cancel2') }}</Button>
+                    <Button size="small" @click="onCancel(item)" v-if="item.orderstatus === 1" round>{{
+                        $t('operation.cancel2') }}</Button>
                 </div>
+
             </div>
         </div>
     </app-pull-refresh>

+ 39 - 39
src/packages/tss/views/order/list/prepayment/Index.vue

@@ -1,11 +1,12 @@
 <template>
-    <app-pull-refresh ref="pullRefreshRef" v-model:loading="loading" v-model:error="error"
-            v-model:pageIndex="pageIndex" :page-count="pageCount" @refresh="run">
+    <app-pull-refresh ref="pullRefreshRef" v-model:loading="loading" v-model:error="error" v-model:pageIndex="pageIndex"
+        :page-count="pageCount" @refresh="run">
         <div class="g-product-list">
             <div class="g-product-list__box" v-for="(item, index) in dataList" :key="index">
                 <div class="g-product-list__titlebar">
                     <div class="left">
-                        <b>{{ $t('position.goods.orderid') }}:{{ item.tradeid }}</b>
+                        <b>{{ item.goodsname }}</b>
+                        <span>{{ formatDate(item.tradetime) }}</span>
                     </div>
                     <div class="right">
                         <b :class="!item.buyorsell ? 'g-price-up' : 'g-price-down'">
@@ -14,43 +15,42 @@
                     </div>
                 </div>
                 <div class="g-product-list__content">
-                    <div class="left">
-                        <Image width="100" height="100" radius="8" :src="getImageUrl(item.thumurls)" />
+                    <div class="top">
+                        <div class="top-left">
+                            <Image width="80" height="80" radius="8" :src="getImageUrl(item.thumurls)" />
+                        </div>
+                        <div class="top-right">
+                            <ul>
+                                <li>
+                                    <span>{{ $t('position.goods.orderid') }}:</span>
+                                    <span>{{ item.tradeid }}</span>
+                                </li>
+                                <li>
+                                    <span>{{ $t('position.goods.agreeunit') }}:</span>
+                                    <span>{{ item.agreeunit }}{{ item.goodsunit }}</span>
+                                </li>
+                                <li>
+                                    <span>{{ $t('delivery.offline.deliveryqty') }}:</span>
+                                    <span>{{ item.openqty }}</span>
+                                </li>
+                                <li>
+                                    <span>{{ $t('position.goods.closepl') }}:</span>
+                                    <span :class="handlePriceColor(item.floatpl)">
+                                        {{ formatDecimal(item.floatpl) }}
+                                    </span>
+                                </li>
+                            </ul>
+                        </div>
                     </div>
-                    <div class="right">
-                        <ul>
-                            <li>
-                                <span>{{ $t('position.goodscode') }}:</span>
-                                <span>{{ item.goodsname }}</span>
-                            </li>
-                            <li>
-                                <span>{{ $t('position.goods.agreeunit') }}:</span>
-                                <span>{{ item.agreeunit }}{{ item.goodsunit }}</span>
-                            </li>
-                            <li>
-                                <span>{{ $t('delivery.offline.deliveryqty') }}:</span>
-                                <span>{{ item.openqty }}</span>
-                            </li>
-                            <li>
-                                <span>{{ $t('position.goods.holddetail.holderamount') }}:</span>
-                                <span>{{ formatDecimal(item.tradeamount, item.decimalplace) }}</span>
-                            </li>
-                            <li>
-                                <span>{{ $t('position.goods.preamounts') }}:</span>
-                                <span>{{ formatDecimal(item.payeddeposit+item.restockdeposit, item.decimalplace) }}</span>
-                            </li>
-                            <li>
-                                <span>{{ $t('position.goods.closepl') }}:</span>
-                                <span :class="handlePriceColor(item.floatpl)">
-                                    {{ formatDecimal(item.floatpl) }}
-                                </span>
-                            </li>
-                            
-                            <li>
-                                <span>{{ $t('position.goods.holddetail.tradetime') }}:</span>
-                                <span>{{ formatDate(item.tradetime) }}</span>
-                            </li>
-                        </ul>
+                    <div class="bottom">
+                        <div class="bottom-left">
+                            <label>{{ $t('position.goods.holddetail.holderamount') }}</label>
+                            <span>{{ formatDecimal(item.tradeamount, item.decimalplace) }}</span>
+                        </div>
+                        <div class="bottom-right">
+                            <label>{{ $t('position.goods.preamounts') }}</label>
+                            <span>{{ formatDecimal(item.payeddeposit + item.restockdeposit, item.decimalplace)}}</span>
+                        </div>
                     </div>
                 </div>
             </div>

+ 123 - 24
src/packages/tss/views/user/login/Index.vue

@@ -1,31 +1,130 @@
 <template>
-  <AppLogin :logo-src="logoImage" :show-yhkhfxgzs="false" :show-yszc="false" :show-report="false" />
+  <app-statusbar class="login">
+    <app-navback class="login-navback" />
+    <app-statusbar class="login-luanguage">
+      <app-luanguage v-if="globalStore.getSystemInfo('i18nEnabled')" />
+    </app-statusbar>
+    <div class="login-logo">
+      <slot name="logo">
+        <img src="../../../assets/images/login-logo.png" />
+      </slot>
+    </div>
+    <Form class="login-form" @submit="formSubmit">
+      <CellGroup inset>
+        <Field v-model="formData.userName" name="account" size="large"
+          :placeholder="$t('user.login.Pleaseenterausername')"
+          :rules="[{ required: true, message: $t('user.login.Pleaseenterausername') }]">
+          <template #left-icon>
+            <img src="../../../assets/images/icons/phone.svg" width="24" />
+          </template>
+        </Field>
+        <Field v-model="formData.password" name="password" type="password" size="large"
+          :placeholder="$t('user.login.Pleaseenterthepassword')"
+          :rules="[{ required: true, message: $t('user.login.Pleaseenterthepassword') }]" autocomplete="off">
+          <template #left-icon>
+            <img src="../../../assets/images/icons/lock.svg" width="24" />
+          </template>
+        </Field>
+        <Cell>
+          <template #value>
+            <SliderVerify @statu="slide" style="width: 100%;" v-if="showSliderVerify" />
+          </template>
+        </Cell>
+      </CellGroup>
+      <div class="login-footer__trem" style="padding-top: 10px;">
+        <Checkbox shape="square" icon-size="16px" v-model="checked">{{ $t('user.login.checked') }}</Checkbox>
+        <span @click="routerTo('rules-zcxy')">{{ $t('user.login.ruleszcxy') }}</span>
+      </div>
+      <div class="button-submit">
+        <Button type="danger" native-type="submit" block>{{ $t('user.login.login') }}</Button>
+      </div>
+    </Form>
+    <div class="login-link">
+      <span @click="navigationTo('user-register')" v-if="globalStore.hasSystemModule('register')">{{
+        $t('user.login.register') }}</span>
+      <span @click="navigationTo('user-forget')">{{ $t('user.login.forgetpassword') }}</span>
+    </div>
+    <div class="login-footer">
+      <div class="login-footer__version">
+        <span>v1.0.{{ appVersion }}</span>
+      </div>
+    </div>
+  </app-statusbar>
 </template>
 
 <script lang="ts" setup>
-import { onMounted, onUnmounted } from 'vue'
-// import { dialog } from '@/utils/vant'
-// import { useLoginStore, i18n } from '@/stores'
-import plus from '@/utils/h5plus'
-import AppLogin from '@mobile/components/layouts/login/index.vue'
-import logoImage from '../../../assets/images/login-logo.png'
-
-// const { t } = i18n.global
-// const loginStore = useLoginStore()
-
-onMounted(() => {
-  plus.setStatusBarStyle('dark')
-})
-
-onUnmounted(() => {
-  plus.setStatusBarStyle('light')
-
-  // setTimeout(() => {
-  //   if (loginStore.token) {
-  //     dialog({ message: t('user.login.tips7'), confirmButtonText: t('operation.confirm') })
-  //   }
-  // }, 500)
-})
+import { shallowRef } from 'vue'
+import { Button, Field, CellGroup, Cell, Form, Checkbox, showFailToast, showToast } from 'vant'
+import { fullloading, dialog } from '@/utils/vant'
+import { useLogin } from '@/business/login'
+import { useNavigation } from '@mobile/router/navigation'
+import { useGlobalStore, i18n } from '@/stores'
+import service from '@/services'
+import SliderVerify from '@/components/base/slider-verify/index.vue' // 临时调用,待优化
+import AppLuanguage from '@mobile/components/modules/luanguage/index.vue'
+
+const { global: { t } } = i18n
+const globalStore = useGlobalStore()
+const { setGlobalUrlParams, routerTo, routerBack } = useNavigation()
+const { formData, userLogin } = useLogin()
+const checked = shallowRef(false) // 是否同意协议管理
+const showSliderVerify = shallowRef(true) // 验证滑块组件重载
+const sliderVerifyStatus = shallowRef(false) // 滑块验证状态
+
+const meta = document.getElementsByTagName('meta')
+const appVersion = meta.namedItem('revised')?.content ?? '0'
+
+// 导航跳转
+const navigationTo = (name: string) => {
+  fullloading((hideLoading) => {
+    service.onReady().then(() => {
+      hideLoading()
+      routerTo(name)
+    }).catch(() => {
+      showFailToast(t('user.login.startfailure'))
+    })
+  }, t('user.login.loading'))
+}
+
+// 滑块验证 
+const slide = (vfcStatu: { statu: string }) => {
+  if (vfcStatu.statu === 'success') {
+    sliderVerifyStatus.value = true
+  } else {
+    sliderVerifyStatus.value = false
+  }
+}
+
+const formSubmit = () => {
+  if (sliderVerifyStatus.value) {
+    if (checked.value) {
+      fullloading((hideLoading) => {
+        userLogin().then((forcedPasswordChange) => {
+          hideLoading()
+          if (forcedPasswordChange) {
+            dialog(t('user.login.tips1')).then(() => {
+              setGlobalUrlParams({ forcedPasswordChange })
+              routerTo('user-password', true)
+            })
+          } else {
+            routerBack()
+          }
+        }).catch((err) => {
+          showSliderVerify.value = false
+          sliderVerifyStatus.value = false
+          formData.password = ''
+          hideLoading(err, 'fail')
+
+          setTimeout(() => {
+            showSliderVerify.value = true
+          }, 0)
+        })
+      }, t('user.login.logining'))
+    } else {
+      showToast(t('user.login.tips2'))
+    }
+  }
+}
 </script>
 
 <style lang="less">

+ 107 - 5
src/packages/tss/views/user/login/index.less

@@ -1,13 +1,115 @@
 .login {
-    background: linear-gradient(325deg, #f9f9f9, #f9f6f4);
+    display: flex;
+    flex-direction: column;
+    background: url(../../../assets/images/login-bg.png) no-repeat center top;
+    background-size: 100% auto;
+
+    &-navback {
+        >.van-icon {
+            color: #fff;
+        }
+    }
+
+    &-luanguage {
+        position: fixed;
+        right: 0;
+        top: 0;
+        z-index: 1;
+        display: inline-flex;
+        color: #fff;
+
+        .app-luanguage {
+            display: inline-flex;
+            justify-content: center;
+            align-items: center;
+            height: var(--navbar-height);
+            padding: 0 14px;
+        }
+    }
+
+    &-logo {
+        text-align: center;
+        padding: 120px 0;
+
+        img {
+            height: 90px;
+        }
+    }
 
     &-form {
-        .button-submit {
-            --van-button-primary-background: #c19239;
+        padding: 0 16px;
+
+        .van-cell {
+            &::after {
+                display: none;
+            }
+
+            &-group {
+                background-color: transparent;
+
+                &--inset {
+                    margin: 0;
+                }
+            }
+        }
+
+        .van-field {
+            background-color: transparent;
+
+            &__control {
+                border-bottom: 1px solid #ccc;
+                padding: 6px 10px;
+            }
+
+            &__left-icon {
+                padding-top: 5px;
+            }
+        }
+
+        .button {
+            &-submit {
+                padding: 12px;
+            }
+        }
+    }
+
+    &-link {
+        display: flex;
+        justify-content: space-between;
+        font-size: 13px;
+        color: #C19239;
+        padding: 0 48px;
+
+        span:only-child {
+            margin-left: auto;
+        }
+    }
+
+    &-footer {
+        padding: 18px;
+        margin-top: auto;
+
+        &__trem {
+            display: flex;
+            justify-content: center;
+            align-items: center;
+            flex-wrap: wrap;
+            font-size: 12px;
+
+            .van-checkbox {
+                margin-right: 6px;
+            }
+
+            >span {
+                color: #C19239;
+            }
         }
 
-        .van-field__control{
-            background-color: #f7f7f7;
+        &__version {
+            font-size: 12px;
+            color: #DFDEE2;
+            text-align: center;
+            margin-top: 4px;
         }
     }
 }

+ 0 - 14
src/stores/modules/goods.ts

@@ -1,14 +0,0 @@
-import { shallowRef, reactive, computed, toRefs, onUnmounted } from 'vue'
-import { queryErmcpGoods, queryQuoteDay } from '@/services/api/goods'
-import { defineStore } from '../store'
-
-export const useGoods = defineStore(() => {
-    const state = reactive({
-        loading: false,
-        goodsList: <Model.GoodsRsp[]>[], // 商品列表
-    })
-
-    return {
-
-    }
-})

Vissa filer visades inte eftersom för många filer har ändrats