Commit 0247fd5c692292439795fae5c67f481ea01c4afc
Merge remote-tracking branch 'origin/feature/1.8.0-uniapp' into feature/1.8.0-uniapp
Showing
5 changed files
with
138 additions
and
88 deletions
yudao-ui-app/components/yd-text-price/yd-text-price.vue
| 1 | 1 | <template> |
| 2 | 2 | <view> |
| 3 | - <text v-for="(item, index) in textArray" :key="index" :style="{ 'font-size': (index === 1 ? integerSize : size) + 'px', 'color': color }"> | |
| 3 | + <text v-for="(item, index) in textArray" :key="index" :style="{ fontSize: (index === 1 ? integerSize : size) + 'px', color, textDecoration }"> | |
| 4 | 4 | {{ item }} |
| 5 | 5 | </text> |
| 6 | 6 | </view> |
| ... | ... | @@ -8,15 +8,20 @@ |
| 8 | 8 | |
| 9 | 9 | <script> |
| 10 | 10 | /** |
| 11 | - * 此组件简单的显示特定样式的(人名币)价格数字 | |
| 11 | + * 此组件简单的显示(驼峰式)的价格 | |
| 12 | 12 | */ |
| 13 | 13 | export default { |
| 14 | 14 | name: 'yd-text-price', |
| 15 | 15 | components: {}, |
| 16 | 16 | props: { |
| 17 | + //货币符号 | |
| 18 | + symbol: { | |
| 19 | + type: String, | |
| 20 | + default: '¥' | |
| 21 | + }, | |
| 17 | 22 | price: { |
| 18 | 23 | type: [String, Number], |
| 19 | - default: '0.00' | |
| 24 | + default: '' | |
| 20 | 25 | }, |
| 21 | 26 | color: { |
| 22 | 27 | type: String, |
| ... | ... | @@ -30,14 +35,28 @@ export default { |
| 30 | 35 | //整形部分字体大小可单独定义 |
| 31 | 36 | intSize: { |
| 32 | 37 | type: [String, Number], |
| 33 | - default: 15 | |
| 38 | + default: '' | |
| 39 | + }, | |
| 40 | + //文字装饰,下划线,中划线等 | |
| 41 | + decoration: { | |
| 42 | + type: String, | |
| 43 | + default: 'none' | |
| 44 | + } | |
| 45 | + }, | |
| 46 | + data() { | |
| 47 | + return { | |
| 48 | + textDecoration: this.decoration | |
| 34 | 49 | } |
| 35 | 50 | }, |
| 36 | 51 | computed: { |
| 37 | 52 | textArray() { |
| 38 | - let array = ['¥'] | |
| 53 | + let array = [] | |
| 54 | + if (this.price === '' || this.price === undefined) { | |
| 55 | + return [] | |
| 56 | + } | |
| 57 | + array.push(this.symbol) | |
| 39 | 58 | if (!/^\d+(\.\d+)?$/.test(this.price)) { |
| 40 | - console.error('组件<custom-text-price :text="???" 此处参数应为金额数字') | |
| 59 | + console.error('组件<yd-text-price :text="???" 此处参数应为金额数字') | |
| 41 | 60 | } else { |
| 42 | 61 | let arr = parseFloat(this.price).toFixed(2).split('.') |
| 43 | 62 | array.push(arr[0]) | ... | ... |
yudao-ui-app/pages/index/index.vue
| ... | ... | @@ -28,7 +28,7 @@ |
| 28 | 28 | <!--商品展示栏--> |
| 29 | 29 | <yd-product-box :product-list="productList" :title="'每日上新'" show-type="normal"></yd-product-box> |
| 30 | 30 | <yd-product-box :product-list="productList" :title="'热卖商品'" show-type="half"></yd-product-box> |
| 31 | - <yd-product-more :product-list="productList" more-status="moreStatus"></yd-product-more> | |
| 31 | + <yd-product-more :product-list="productList" :more-status="moreStatus"></yd-product-more> | |
| 32 | 32 | |
| 33 | 33 | <u-gap height="5px"></u-gap> |
| 34 | 34 | </view> | ... | ... |
yudao-ui-app/store/getters.js
0 → 100644
yudao-ui-app/store/index.js
| 1 | 1 | import Vue from 'vue' |
| 2 | 2 | import Vuex from 'vuex' |
| 3 | -import { logout } from '@/api/auth' | |
| 4 | -import { getUserInfo } from '@/api/user' | |
| 5 | -import { passwordLogin, smsLogin, weixinMiniAppLogin } from '@/api/auth' | |
| 6 | - | |
| 7 | -const AccessTokenKey = 'ACCESS_TOKEN' | |
| 8 | -const RefreshTokenKey = 'REFRESH_TOKEN' | |
| 3 | +import user from './mudules/user' | |
| 4 | +import getters from './getters' | |
| 9 | 5 | |
| 10 | 6 | Vue.use(Vuex) // vue的插件机制 |
| 11 | 7 | |
| 12 | 8 | // Vuex.Store 构造器选项 |
| 13 | 9 | const store = new Vuex.Store({ |
| 14 | - state: { | |
| 15 | - accessToken: uni.getStorageSync(AccessTokenKey), // 访问令牌 | |
| 16 | - refreshToken: uni.getStorageSync(RefreshTokenKey), // 刷新令牌 | |
| 17 | - userInfo: {} | |
| 18 | - }, | |
| 19 | - getters: { | |
| 20 | - accessToken: state => state.accessToken, | |
| 21 | - refreshToken: state => state.refreshToken, | |
| 22 | - userInfo: state => state.userInfo, | |
| 23 | - hasLogin: state => !!state.accessToken | |
| 10 | + modules: { | |
| 11 | + user | |
| 24 | 12 | }, |
| 25 | - mutations: { | |
| 26 | - // 更新 state 的通用方法 | |
| 27 | - SET_STATE_ATTR(state, param) { | |
| 28 | - if (param instanceof Array) { | |
| 29 | - for (let item of param) { | |
| 30 | - state[item.key] = item.val | |
| 31 | - } | |
| 32 | - } else { | |
| 33 | - state[param.key] = param.val | |
| 34 | - } | |
| 35 | - }, | |
| 36 | - // 更新令牌 | |
| 37 | - SET_TOKEN(state, data) { | |
| 38 | - // 设置令牌 | |
| 39 | - const { accessToken, refreshToken } = data | |
| 40 | - state.accessToken = accessToken | |
| 41 | - state.refreshToken = refreshToken | |
| 42 | - uni.setStorageSync(AccessTokenKey, accessToken) | |
| 43 | - uni.setStorageSync(RefreshTokenKey, refreshToken) | |
| 44 | - | |
| 45 | - // 加载用户信息 | |
| 46 | - this.dispatch('ObtainUserInfo') | |
| 47 | - }, | |
| 48 | - // 更新用户信息 | |
| 49 | - SET_USER_INFO(state, data) { | |
| 50 | - state.userInfo = data | |
| 51 | - }, | |
| 52 | - // 清空令牌 和 用户信息 | |
| 53 | - CLEAR_LOGIN_INFO(state) { | |
| 54 | - uni.removeStorageSync(AccessTokenKey) | |
| 55 | - uni.removeStorageSync(RefreshTokenKey) | |
| 56 | - state.accessToken = '' | |
| 57 | - state.refreshToken = '' | |
| 58 | - state.userInfo = {} | |
| 59 | - } | |
| 60 | - }, | |
| 61 | - actions: { | |
| 62 | - //账号登录 | |
| 63 | - Login({ state, commit }, { type, data }) { | |
| 64 | - if (type === 0) { | |
| 65 | - return passwordLogin(data).then(res => { | |
| 66 | - commit('SET_TOKEN', res.data) | |
| 67 | - }) | |
| 68 | - } else if (type === 1) { | |
| 69 | - return smsLogin(data).then(res => { | |
| 70 | - commit('SET_TOKEN', res.data) | |
| 71 | - }) | |
| 72 | - } else { | |
| 73 | - return weixinMiniAppLogin(data).then(res => { | |
| 74 | - commit('SET_TOKEN', res.data) | |
| 75 | - }) | |
| 76 | - } | |
| 77 | - }, | |
| 78 | - // 退出登录 | |
| 79 | - async Logout({ state, commit }) { | |
| 80 | - commit('CLEAR_LOGIN_INFO') | |
| 81 | - await logout() | |
| 82 | - }, | |
| 83 | - // 获得用户基本信息 | |
| 84 | - async ObtainUserInfo({ state, commit }) { | |
| 85 | - const res = await getUserInfo() | |
| 86 | - commit('SET_USER_INFO', res.data) | |
| 87 | - } | |
| 88 | - } | |
| 13 | + getters | |
| 89 | 14 | }) |
| 90 | - | |
| 91 | 15 | export default store | ... | ... |
yudao-ui-app/store/mudules/user.js
0 → 100644
| 1 | +import { getUserInfo } from '@/api/user' | |
| 2 | +import { passwordLogin, smsLogin, weixinMiniAppLogin, logout } from '@/api/auth' | |
| 3 | + | |
| 4 | +const AccessTokenKey = 'ACCESS_TOKEN' | |
| 5 | +const RefreshTokenKey = 'REFRESH_TOKEN' | |
| 6 | + | |
| 7 | +const user = { | |
| 8 | + state: { | |
| 9 | + accessToken: uni.getStorageSync(AccessTokenKey), // 访问令牌 | |
| 10 | + refreshToken: uni.getStorageSync(RefreshTokenKey), // 刷新令牌 | |
| 11 | + userInfo: {} | |
| 12 | + }, | |
| 13 | + mutations: { | |
| 14 | + // 更新 state 的通用方法 | |
| 15 | + SET_STATE_ATTR(state, param) { | |
| 16 | + if (param instanceof Array) { | |
| 17 | + for (let item of param) { | |
| 18 | + state[item.key] = item.val | |
| 19 | + } | |
| 20 | + } else { | |
| 21 | + state[param.key] = param.val | |
| 22 | + } | |
| 23 | + }, | |
| 24 | + // 更新令牌 | |
| 25 | + SET_TOKEN(state, data) { | |
| 26 | + // 设置令牌 | |
| 27 | + const { accessToken, refreshToken } = data | |
| 28 | + state.accessToken = accessToken | |
| 29 | + state.refreshToken = refreshToken | |
| 30 | + uni.setStorageSync(AccessTokenKey, accessToken) | |
| 31 | + uni.setStorageSync(RefreshTokenKey, refreshToken) | |
| 32 | + | |
| 33 | + // 加载用户信息 | |
| 34 | + this.dispatch('ObtainUserInfo') | |
| 35 | + }, | |
| 36 | + // 更新用户信息 | |
| 37 | + SET_USER_INFO(state, data) { | |
| 38 | + state.userInfo = data | |
| 39 | + }, | |
| 40 | + // 清空令牌 和 用户信息 | |
| 41 | + CLEAR_LOGIN_INFO(state) { | |
| 42 | + uni.removeStorageSync(AccessTokenKey) | |
| 43 | + uni.removeStorageSync(RefreshTokenKey) | |
| 44 | + state.accessToken = '' | |
| 45 | + state.refreshToken = '' | |
| 46 | + state.userInfo = {} | |
| 47 | + } | |
| 48 | + }, | |
| 49 | + actions: { | |
| 50 | + //账号登录 | |
| 51 | + Login({ state, commit }, { type, data }) { | |
| 52 | + if (type === 0) { | |
| 53 | + return passwordLogin(data) | |
| 54 | + .then(res => { | |
| 55 | + commit('SET_TOKEN', res.data) | |
| 56 | + return Promise.resolve(res) | |
| 57 | + }) | |
| 58 | + .catch(err => { | |
| 59 | + return Promise.reject(err) | |
| 60 | + }) | |
| 61 | + } else if (type === 1) { | |
| 62 | + return smsLogin(data) | |
| 63 | + .then(res => { | |
| 64 | + commit('SET_TOKEN', res.data) | |
| 65 | + return Promise.resolve(res) | |
| 66 | + }) | |
| 67 | + .catch(err => { | |
| 68 | + return Promise.reject(err) | |
| 69 | + }) | |
| 70 | + } else { | |
| 71 | + return weixinMiniAppLogin(data) | |
| 72 | + .then(res => { | |
| 73 | + commit('SET_TOKEN', res.data) | |
| 74 | + return Promise.resolve(res) | |
| 75 | + }) | |
| 76 | + .catch(err => { | |
| 77 | + return Promise.reject(err) | |
| 78 | + }) | |
| 79 | + } | |
| 80 | + }, | |
| 81 | + // 退出登录 | |
| 82 | + Logout({ state, commit }) { | |
| 83 | + return logout() | |
| 84 | + .then(res => { | |
| 85 | + return Promise.resolve(res) | |
| 86 | + }) | |
| 87 | + .catch(err => { | |
| 88 | + return Promise.reject(err) | |
| 89 | + }) | |
| 90 | + .finally(() => { | |
| 91 | + commit('CLEAR_LOGIN_INFO') | |
| 92 | + }) | |
| 93 | + }, | |
| 94 | + // 获得用户基本信息 | |
| 95 | + async ObtainUserInfo({ state, commit }) { | |
| 96 | + const res = await getUserInfo() | |
| 97 | + commit('SET_USER_INFO', res.data) | |
| 98 | + } | |
| 99 | + } | |
| 100 | +} | |
| 101 | +export default user | ... | ... |