Commit 0247fd5c692292439795fae5c67f481ea01c4afc

Authored by YunaiV
2 parents 87989440 b4cde69d

Merge remote-tracking branch 'origin/feature/1.8.0-uniapp' into feature/1.8.0-uniapp

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
  1 +const getters = {
  2 + accessToken: state => state.user.accessToken,
  3 + userInfo: state => state.user.userInfo,
  4 + hasLogin: state => !!state.user.accessToken
  5 +}
  6 +export default getters
... ...
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
... ...