kevin_zhangl пре 3 година
родитељ
комит
353de2dd3e

+ 1 - 1
.env.development

@@ -2,8 +2,8 @@
 ENV = 'development'
 
 # base api
-VUE_APP_CDN_API = 'http://16.163.228.151:8024'
 VUE_APP_BASE_API = 'http://local.ng.frontend.api.com'
+VUE_APP_CDN_API = 'http://16.163.228.151:8036'
 VUE_APP_BASE_PAY_STACK_PUBLIC_KEY = 'pk_test_2eed10135c4a958c5073795b22854ded9d1a6c55'
 VUE_APP_ACCESS_TOKEN_PREFIX = 'Bearer '
 

+ 17 - 0
src/api/article.js

@@ -37,3 +37,20 @@ export function fetchCategory() {
     params: {}
   })
 }
+
+
+export function fetchList(query) {
+  return request({
+    url: '/vue-element-admin/article/list',
+    method: 'get',
+    params: query
+  })
+}
+
+export function fetchArticle(id) {
+  return request({
+    url: '/vue-element-admin/article/detail',
+    method: 'get',
+    params: { id }
+  })
+}

+ 20 - 2
src/api/atlas.js

@@ -10,7 +10,7 @@ export function fetchMainUserInfo(query) {
 }
 
 // 安置网络列表
-export function fetchNetworkList(query) {
+export function fetchPlacementNetworkList(query) {
   return request({
     url: '/v1/atlas/network-list',
     method: 'get',
@@ -19,7 +19,7 @@ export function fetchNetworkList(query) {
 }
 
 // 安置网络
-export function fetchNetwork(query) {
+export function fetchPlacementNetwork(query) {
   return request({
     url: '/v1/atlas/network',
     method: 'get',
@@ -27,6 +27,24 @@ export function fetchNetwork(query) {
   })
 }
 
+// 推荐网络列表
+export function fetchSponsorNetworkList(query) {
+  return request({
+    url: '/v1/atlas/relation-list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 推荐网络
+export function fetchSponsorNetwork(query) {
+  return request({
+    url: '/v1/atlas/relation',
+    method: 'get',
+    params: query
+  })
+}
+
 // BA会员列表
 export function fetchBrandAmbassadorList(query) {
   return request({

+ 2 - 1
src/components/LangSelect/index.vue

@@ -30,9 +30,10 @@ export default {
   methods: {
     handleSetLanguage(lang) {
       this.$i18n.locale = lang
+			// 调用setLanguage方法,设置语言,存储到cookie
       this.$store.dispatch('app/setLanguage', lang)
       this.$message({
-        message: 'Switch Language Success',
+        message: this.$t('common.switchLanguageHints'),
         type: 'success'
       })
     }

+ 139 - 143
src/components/Upload/Uploader.vue

@@ -1,156 +1,152 @@
 <template>
-  <div class="leo-uploader" v-loading="uploaderLoading">
-    <el-upload
-        class="uploader-box"
-        v-show="uploaderShow"
-        :action="uploaderRequestUrl"
-        name="file"
-        :headers="uploaderHeaders"
-        :data="uploaderFormData"
-        :show-file-list="false"
-        :before-upload="uploaderHandleBefore"
-        :on-success="uploaderHandleSuccess"
-        :disabled="uploaderDisabled"
-        :style="`width:${width};height:${height};`"
-    >
-      <i v-if="uploaderImageUrl" class="el-icon-plus uploader-icon" :style="`line-height:${height};background-image: ${uploaderImageUrl}`">
-        <img :src="uploaderImageUrl" class="image-preview" :style="`width:${width};height:${height};display: block;margin-top:-${height}`" alt="">
-      </i>
-      <i v-else class="el-icon-plus uploader-icon"
-         :style="`width:${width};height:${height};line-height:${height};`"></i>
-    </el-upload>
-    <div class="image-show" v-show="!uploaderShow">
-      <img :src="uploaderImageUrl" alt="" :width="width" :height="height">
-    </div>
-  </div>
+	<div class="leo-uploader" v-loading="uploaderLoading">
+		<el-upload
+			class="uploader-box"
+			v-show="uploaderShow"
+			:action="uploaderRequestUrl"
+			name="file"
+			:headers="uploaderHeaders"
+			:data="uploaderFormData"
+			:show-file-list="false"
+			:before-upload="uploaderHandleBefore"
+			:on-success="uploaderHandleSuccess"
+			:disabled="uploaderDisabled"
+			:style="`width:${width};height:${height};`"
+		>
+			<i v-if="uploaderImageUrl" class="el-icon-plus uploader-icon" :style="`line-height:${height};background-image: ${uploaderImageUrl}`">
+				<img :src="uploaderImageUrl" class="image-preview" :style="`width:${width};height:${height};display: block;margin-top:-${height}`" alt="">
+			</i>
+			<i v-else class="el-icon-plus uploader-icon"
+				 :style="`width:${width};height:${height};line-height:${height};`"></i>
+		</el-upload>
+		<div class="image-show" v-show="!uploaderShow">
+			<img :src="uploaderImageUrl" alt="" :width="width" :height="height">
+		</div>
+	</div>
 </template>
 
 <script>
 import {fetchToken} from "@/api/file"
 
-  export default {
-    name: 'LeoUploader',
-    props: {
-      requestRoute: {
-        type: String,
-        required: true,
-      },
-      defaultImageUrl: {
-        type: String,
-        default: null,
-      },
-      uploaderSuccessCanChange: {
-        type: Boolean,
-        default: true,
-      },
-      width: {
-        type: String,
-        default: '720px',
-      },
-      height: {
-        type: String,
-        default: '480px',
-      }
-    },
-    data() {
-      return {
-        uploaderShow: true,
-        uploaderLoading: false,
-        uploaderFormData: {
-          'uploadToken': '',
-        },
-        uploaderRequestUrl: `${REQUEST_URL}${this.requestRoute}`,
-        uploaderHeaders: {
-          'Device-Type': 'pc',
-          'Suppress-Response-Code': '1',
-          'Authorization': '',
-        },
-        uploaderDisabled: false,
-        successImageUrl: null,
-      }
-    },
-    computed: {
-      uploaderImageUrl() {
-        if (this.successImageUrl !== null) {
-          return this.successImageUrl
-        }
-        else if (this.defaultImageUrl !== null) {
-          this.uploaderShow = false
-          this.uploaderDisabled = true
-          this.uploaderLoading = false
-          return this.defaultImageUrl
-        }
-      }
-    },
-    watch: {
-      requestRoute(newVal) {
-        Object.assign(this.$data, this.$options.data())
-        this.uploaderRequestUrl = `${REQUEST_URL}${this.requestRoute}`
-      },
-    },
-    methods: {
-      uploaderHandleBefore() {
-        this.$message({
-          message: 'Uploading, please hold on. Do not close the window!', // 正在上传,请稍后。请勿关闭窗口!
-          type: 'warning',
-          duration: 0,
-        })
-        this.uploaderLoading = true
-				fetchToken().then(response => {
-						this.uploaderHeaders.Authorization = response.data
+export default {
+	name: 'LeoUploader',
+	props: {
+		requestRoute: {
+			type: String,
+			required: true,
+		},
+		defaultImageUrl: {
+			type: String,
+			default: null,
+		},
+		uploaderSuccessCanChange: {
+			type: Boolean,
+			default: true,
+		},
+		width: {
+			type: String,
+			default: '720px',
+		},
+		height: {
+			type: String,
+			default: '480px',
+		}
+	},
+	data() {
+		return {
+			requestUrl: process.env.VUE_APP_CDN_API + '/v1/',
+			uploaderShow: true,
+			uploaderLoading: false,
+			uploaderFormData: {
+				'uploadToken': '',
+			},
+			uploaderRequestUrl: this.requestUrl + `${this.requestRoute}`,
+			uploaderHeaders: {
+				'Device-Type': 'pc',
+				'Suppress-Response-Code': '1',
+				'Authorization': '',
+			},
+			uploaderDisabled: false,
+			successImageUrl: null,
+		}
+	},
+	computed: {
+		uploaderImageUrl() {
+			if (this.successImageUrl !== null) {
+				return this.successImageUrl
+			}
+			else if (this.defaultImageUrl !== null) {
+				this.uploaderShow = false
+				this.uploaderDisabled = true
+				this.uploaderLoading = false
+				return this.defaultImageUrl
+			}
+		}
+	},
+	watch: {
+		requestRoute(newVal) {
+			Object.assign(this.$data, this.$options.data())
+			this.uploaderRequestUrl = this.requestUrl + `${this.requestRoute}`
+		},
+	},
+	methods: {
+		uploaderHandleBefore() {
+			this.$message({
+				message: 'Uploading, please hold on. Do not close the window!', // 正在上传,请稍后。请勿关闭窗口!
+				type: 'warning',
+				duration: 0,
+			})
+			this.uploaderLoading = true
 
-        return network.updateToken().then(accessToken => {
-          this.uploaderHeaders.Authorization = ACCESS_TOKEN_PREFIX + accessToken
-          return network.getData(`file/token`)
-        }).then(response => {
-          this.uploaderFormData.uploadToken = response
-        }).catch(response => {
-
-        })
-      },
-      uploaderHandleSuccess(response, file) {
-        this.$message.closeAll()
-        if (response.success) {
-          this.$message({
-            message: 'Successful',
-            type: 'success'
-          })
-          this.successImageUrl = URL.createObjectURL(file.raw)
-          if (!this.uploaderSuccessCanChange) {
-            this.uploaderShow = false
-            this.uploaderDisabled = true
-            this.uploaderLoading = false
-          }
-          this.uploaderLoading = false
-          this.$emit('on-success', response.data)
-        } else {
-          this.$message({
-            message: response.data.message,
-            type: 'warning'
-          })
-          this.uploaderLoading = false
-        }
-      },
-    }
-  }
+			fetchToken().then(response => {
+				this.uploaderHeaders.Authorization = process.env.VUE_APP_ACCESS_TOKEN_PREFIX + response.data
+				return response.data
+			}).then(response => {
+				this.uploaderFormData.uploadToken = response.data
+			})
+		},
+		uploaderHandleSuccess(response, file) {
+			if (response.success) {
+				this.$message({
+					message: 'Successful',
+					type: 'success'
+				})
+				this.successImageUrl = URL.createObjectURL(file.raw)
+				if (!this.uploaderSuccessCanChange) {
+					this.uploaderShow = false
+					this.uploaderDisabled = true
+					this.uploaderLoading = false
+				}
+				this.uploaderLoading = false
+				this.$emit('on-success', response.data)
+			} else {
+				this.$message({
+					message: response.data.message,
+					type: 'warning'
+				})
+				this.uploaderLoading = false
+			}
+		},
+	}
+}
 </script>
 
 <style scoped>
-  .uploader-box {
-    border: 1px dashed #d9d9d9;
-    border-radius: 6px;
-    cursor: pointer;
-    position: relative;
-    overflow: hidden;
-  }
+.uploader-box {
+	border: 1px dashed #d9d9d9;
+	border-radius: 6px;
+	cursor: pointer;
+	position: relative;
+	overflow: hidden;
+}
 
-  .uploader-box:hover {
-    border-color: #409EFF;
-  }
+.uploader-box:hover {
+	border-color: #409EFF;
+}
 
-  .uploader-icon {
-    font-size: 28px;
-    color: #8c939d;
-    text-align: center;
-  }
+.uploader-icon {
+	font-size: 28px;
+	color: #8c939d;
+	text-align: center;
+}
 </style>

+ 3 - 0
src/lang/en.js

@@ -244,6 +244,7 @@ export default {
     close: 'Close',
     note: 'Note',
     awaitData: 'Retrieving data, please wait.',
+    switchLanguageHints: 'Switch Language Success',
   },
 
   shop: {
@@ -406,6 +407,8 @@ export default {
     transAmount: 'Trans Amount',
     postTransactionBalance: 'Post Trans Balance',
     remark: 'Remark',
+    whetherActive: 'Whether Active',
+    directorPGSPerformance: 'Director PGS Performance',
   },
   finance: {
     applyTransfer: 'Apply For Transfer',

+ 2 - 0
src/lang/index.js

@@ -48,6 +48,8 @@ const i18n = new VueI18n({
   // set locale
   // options: en | zh | es
   locale: getLanguage(),
+  // 默认语言设置,当其他语言没有的情况下,使用en作为默认语言
+  fallbackLocale: 'zh',
   // set locale messages
   messages
 })

+ 3 - 0
src/lang/zh.js

@@ -243,6 +243,7 @@ export default {
     close: '关闭',
     note: '备注',
     awaitData: '正在获取数据,请稍后',
+    switchLanguageHints: '语言切换成功',
   },
   shop: {
     product: '商品',
@@ -402,6 +403,8 @@ export default {
     transAmount: '交易额',
     postTransactionBalance: '交易后余额',
     remark: '备注',
+    whetherActive: '是否活跃',
+    directorPGSPerformance: '管理奖个人小组业绩',
   },
   finance: {
     applyTransfer: '转账',

+ 7 - 1
src/router/modules/atlas.js

@@ -9,9 +9,15 @@ const atlasRouter = {
     {
       path: 'network',  // 安置网络
       component: () => import('@/views/atlas/placement-network'),
-      name: 'network',
+      name: 'placementNetwork',
       meta: { title: 'Placement Network', icon: 'user', noCache: true }
     },
+    {
+      path: 'relation',  // 推荐网络
+      component: () => import('@/views/atlas/sponsor-network'),
+      name: 'sponsorNetwork',
+      meta: { title: 'Sponsor Network', icon: 'user', noCache: true }
+    },
     {
       path: 'brand-ambassador-list',  // BA会员列表
       component: () => import('@/views/atlas/brand-ambassador-list'),

+ 9 - 3
src/router/modules/bonus.js

@@ -13,21 +13,27 @@ const bonusRouter = {
     {
       path: 'index',  // 会员账户
       component: () => import('@/views/bonus/account-list'),
-      name: 'AccountList',
+      name: 'memberAccount',
       meta: { title: 'My Account', icon: 'el-icon-coin' }
     },
     {
       path: 'other',  // 奖金列表
       component: () => import('@/views/bonus/bonus-list'),
-      name: 'BonusList',
+      name: 'previousBonus',
       meta: { title: 'Previous Bonus', icon: 'el-icon-coin' }
     },
     {
       path: 'historical-cumulative-bonus',  // 历史奖金
       component: () => import('@/views/bonus/historical-cumulative-bonus'),
-      name: 'HistoricalCumulativeBonus',
+      name: 'historicalCumulativeBonus',
       meta: { title: 'Historical Cumulative Bonus', icon: 'el-icon-coin' }
     },
+    {
+      path: 'teams',  // 团队查询
+      component: () => import('@/views/bonus/team-inquiry'),
+      name: 'teamInquiry',
+      meta: { title: 'Team Inquiry', icon: 'el-icon-coin' }
+    },
   ]
 }
 export default bonusRouter

+ 1 - 1
src/utils/index.js

@@ -348,7 +348,7 @@ export function addClass(ele, cls) {
 
 /**
  * Remove class from element
- * @param {HTMLElement} elm
+ * @param ele
  * @param {string} cls
  */
 export function removeClass(ele, cls) {

+ 12 - 4
src/views/article/article-list.vue

@@ -14,7 +14,7 @@
 					</span>
         </template>
       </el-table-column>
-			<el-table-column align="center" :label="$t('article.category')" prop="CATE_NAME">
+			<el-table-column align="center" :label="$t('article.category')" prop="CATE_NAME" v-if="['windows', 'linux'].includes(system)">
 				<template slot-scope="{row}">
           {{ row.CATE_NAME }}
 				</template>
@@ -45,7 +45,8 @@
 import {fetchArticleList, fetchArticleOne} from '@/api/article'
 import waves from '@/directive/waves'
 import Pagination from '@/components/Pagination'
-import {getScreenWidth} from "@/utils"
+import {formatAmount, getOperatingSystem, getScreenWidth} from "@/utils"
+import tool from "@/utils/tool";
 
 export default {
   name: 'ArticleList',
@@ -57,6 +58,7 @@ export default {
       list: null,
       total: 0,
       listLoading: true,
+			category: {},
 			listQuery: {
 				page: 1,
 				pageSize: 20
@@ -73,6 +75,7 @@ export default {
 
 			screenWidth: getScreenWidth() > 600 ? '70%' : getScreenWidth() + 'px',
 			labelPosition: getScreenWidth() > 600 ? 'right' : 'top',
+			system: getOperatingSystem(),
     }
   },
   created() {
@@ -83,9 +86,14 @@ export default {
       this.listLoading = true
 			fetchArticleList(this.listQuery).then(response => {
         this.list = response.data.list
-        this.total = response.data.totalCount
+        this.total = +response.data.totalCount
+				this.category = response.data.allCategory
 
-        setTimeout(() => {
+				this.list.forEach(item => {
+					item.CATE_NAME = this.category[item.CID].CATE_NAME ?? ''
+				})
+
+				setTimeout(() => {
           this.listLoading = false
         }, 0.5 * 1000)
       })

+ 5 - 15
src/views/atlas/placement-network.vue

@@ -21,7 +21,7 @@
           <span>
             <el-tag type="danger">{{countTopDeep(data.TOP_NETWORK_DEEP, topDeep)}}</el-tag>
             <el-tag>{{ node.label }}</el-tag>
-            <el-tag type="info">{{data.REAL_NAME}}</el-tag>
+            <el-tag>{{data.REAL_NAME}}</el-tag>
             <el-tag type="danger">{{ $t('atlas.location') }}: {{ data.RELATIVE_LOCATION }}</el-tag>
             <el-tag type="success">{{ data.DEC_LV_NAME }}</el-tag>
             <el-tag type="warning">{{ $t('atlas.highest') }}: {{ data.EMP_LV_NAME }}, {{ data.CROWN_LV_NAME }}</el-tag>
@@ -34,25 +34,15 @@
 </template>
 
 <script>
-import {fetchMainUserInfo, fetchNetwork, fetchNetworkList} from '@/api/atlas'
+import {fetchMainUserInfo, fetchPlacementNetwork, fetchPlacementNetworkList} from '@/api/atlas'
 import Pagination from '@/components/Pagination'
 import waves from '@/directive/waves'
 import tool from '@/utils/tool'
 
 export default {
-  name: 'network',
+  name: 'placementNetwork',
   components: { Pagination },
   directives: { waves },
-  filters: {
-    statusFilter(status) {
-			status = parseInt(status)
-      const statusMap = {
-        0: 'info',
-        1: 'success'
-      }
-      return statusMap[status]
-    }
-  },
   data() {
     return {
 			loading: true,
@@ -128,7 +118,7 @@ export default {
 			that.displayNone = ''
 
 			this.loading = true
-			fetchNetwork({id: userId, deep: this.expandDeep, periodNum: this.periodNum}).then(response => {
+			fetchPlacementNetwork({id: userId, deep: this.expandDeep, periodNum: this.periodNum}).then(response => {
 				this.$refs.tree.updateKeyChildren(userId, response.data.allData)
 				this.listPeriodNum = response.data.periodNum
 				that.displayNone = 'display-none'
@@ -142,7 +132,7 @@ export default {
 		getListData(page, pageSize) {
 			this.filterForm.page = page
 			this.filterForm.pageSize = pageSize
-			fetchNetworkList(this.filterForm).then(response => {
+			fetchPlacementNetworkList(this.filterForm).then(response => {
 				this.allData = response.data
 				this.listTopDeep = response.data.listTopDeep
 

+ 231 - 0
src/views/atlas/sponsor-network.vue

@@ -0,0 +1,231 @@
+<template>
+  <div class="app-container">
+		<div class="white-box">
+			<div class="filter-user" @keyup.enter="getMainData()" style="margin: 5px">
+				<el-input v-model="mainUserName" size="small" style="width:300px; margin-top: 10px;" class="top-member">
+					<template slot="prepend">{{ $t('atlas.topMember') }}</template>
+				</el-input>
+				<el-input v-model="expandDeep" size="small" style="width:200px; margin-top: 10px;" class="spread-depth">
+					<template slot="prepend">{{ $t('atlas.spreadDepth') }}</template>
+				</el-input>
+				<el-input v-model="periodNum" size="small" style="width:150px; margin-top: 10px;" v-show="false">
+					<template slot="prepend">{{ $t('atlas.periodNumber') }}</template>
+				</el-input>
+				<el-button type="primary" size="small" @click="getMainData()" style="margin-top: 10px;">{{ $t('common.confirm') }}</el-button>
+			</div>
+			<el-tree :props="props" :data="treeData" node-key="USER_ID" @node-click="getChildData" ref="tree" :indent="0" default-expand-all :height="tool.getTableHeight(true)" style="margin-top: 15px;">
+        <span :id="'node_'+data.USER_ID" :class="'custom-tree-node '+data.className" slot-scope="{ node, data }">
+          <span :class="'el-icon-loading '+ data.displayNone"></span>
+          <span :class="data.icon"></span>
+          <span>
+            <el-tag type="danger">{{ node.label }}</el-tag>
+            <el-tag>{{data.REAL_NAME}}</el-tag>
+            <el-tag type="success">{{data.DEC_LV_NAME}}</el-tag>
+            <el-tag type="warning">Highest: {{data.EMP_LV_NAME}}, {{data.CROWN_LV_NAME}}</el-tag>
+            <el-tag>{{data.PERIOD_AT}}</el-tag>
+          </span>
+        </span>
+			</el-tree>
+		</div>
+  </div>
+</template>
+
+<script>
+import {fetchMainUserInfo, fetchSponsorNetwork, fetchSponsorNetworkList} from '@/api/atlas'
+import Pagination from '@/components/Pagination'
+import waves from '@/directive/waves'
+import tool from '@/utils/tool'
+
+export default {
+  name: 'sponsorNetwork',
+  components: { Pagination },
+  directives: { waves },
+  data() {
+    return {
+			loading: true,
+			tabActiveName: 'first',
+			props: {
+				label: 'USER_NAME',
+				children: 'children',
+				icon: 'icon',
+			},
+			treeData: null,
+			expandDeep: 5,
+			topDeep: 0,
+			mainUserName: '',
+			periodNum: null,
+			listPeriodNum: null,
+			allData: null,
+			tableHeaders: null,
+			tableData: null,
+			currentPage: 1,
+			totalPages: 1,
+			totalCount: 1,
+			tool: tool,
+			filterForm: {
+				userName: null,
+				deep: 5,
+				periodNum: null,
+				page: 1,
+				pageSize: 20
+			},
+			listTopDeep: 0,
+    }
+  },
+  created() {
+		this.getMainData(null,true)
+  },
+  methods: {
+		getMainData(userName = null, getList = false) {
+			this.$message({
+				message: this.$t('common.awaitData')
+			})
+			let params = {
+				periodNum: this.periodNum
+			}
+			if (this.mainUserName !== null) {
+				params = {userName: this.mainUserName, periodNum: this.periodNum}
+			}
+			this.loading = true
+			fetchMainUserInfo(params).then(response => {
+				this.treeData = response.data
+				this.topDeep = Number(response.data[0].TOP_NETWORK_DEEP)
+				this.listPeriodNum = response.data[0].listPeriodNum
+				if (getList) {
+					this.getListData()
+				}
+
+				setTimeout(() => {
+					this.loading = false
+				}, 1.5 * 1000)
+			})
+		},
+		getChildData(data, node) {
+			let userId = data.USER_ID
+			let that = data
+			if (that.leaf) {
+				return ''
+			}
+			if (that.isExpanded) {
+				return ''
+			}
+			if (that.children !== null && that.children.length > 0) {
+				return ''
+			}
+			that.displayNone = ''
+
+			this.loading = true
+			fetchSponsorNetwork({id: userId, deep: this.expandDeep, periodNum: this.periodNum}).then(response => {
+				this.$refs.tree.updateKeyChildren(userId, response.data.allData)
+				this.listPeriodNum = response.data.periodNum
+				that.displayNone = 'display-none'
+				that.isExpanded = true
+
+				setTimeout(() => {
+					this.loading = false
+				}, 1.5 * 1000)
+			})
+		},
+		getListData(page, pageSize) {
+			this.filterForm.page = page
+			this.filterForm.pageSize = pageSize
+			fetchSponsorNetworkList(this.filterForm).then(response => {
+				this.allData = response.data
+				this.listTopDeep = response.data.listTopDeep
+
+        setTimeout(() => {
+          this.loading = false
+        }, 1.5 * 1000)
+      })
+    },
+		countTopDeep (deep, topDeep) {
+			return Number(deep) - Number(topDeep)
+		},
+		handleCurrentChange (page) {
+			this.getListData(page, this.pageSize)
+		},
+		handleSizeChange (pageSize) {
+			this.getListData(this.currentPage, pageSize)
+		},
+		handleFilter () {
+			this.getListData(1, this.pageSize)
+			this.tabActiveName = 'two'
+		},
+		handleShow (row) {
+			this.loading = true
+			this.filterForm.userName = row.SEE_USER_NAME
+			this.getListData(1, this.pageSize)
+			this.tabActiveName = 'two'
+		},
+  }
+}
+</script>
+
+<style>
+.filter-user{font-size: 14px;margin-bottom: 20px;}
+.filter-user:after{content: '';display: table;
+	clear: both;}
+.filter-user .el-input-group{float: left;margin-right: 15px;}
+.el-tree {
+	padding-bottom: 20px;
+	font-size: 14px;
+	overflow-x: auto;
+}
+
+.el-tree .el-tag {
+	height: 20px;
+	line-height: 18px;vertical-align: middle;
+}
+.el-tree-node{position: relative;}
+
+.el-tree-node__content {
+	height: 30px;
+	line-height: 30px;
+}
+
+.el-tree-node__children {
+	overflow: unset;
+	position: relative;
+	padding: 0 0 0 16px;
+}
+
+.el-tree-node > .el-tree-node__children {
+	overflow: unset;
+}
+
+.el-tree-node:before {
+	position: absolute;
+	content: '';
+	top: 0px;
+	left: -4px;
+	height: 100%;
+	border-left: 1px solid #ccc;
+}
+.el-tree-node:last-child:before{height: 15px;}
+
+.custom-tree-node {
+	position: relative;
+	padding-left: 5px;
+}
+
+.first-node:before {
+	display: none;
+}
+
+.custom-tree-node:before {
+	position: absolute;
+	width: 8px;
+	content: '';
+	top: 15px;
+	left: -4px;
+	border-bottom: 1px solid #ccc;
+}
+
+.el-tree-node__expand-icon {
+	display: none !important;
+}
+
+.display-none {
+	display: none!important;
+}
+</style>

+ 15 - 10
src/views/bonus/account-list.vue

@@ -3,7 +3,7 @@
 		<el-row :gutter="20">
 			<el-col :xs="24" :sm="12" :lg="6" :span="6" v-for="item in walletData" :key="item.walletType">
 				<el-card shadow="hover" style="margin: 10px auto;">
-					<el-result icon="info" :title="item.walletName" :subTitle="item.amount">
+					<el-result icon="info" :title="item.walletName" :subTitle="item.amount | amountFilter">
 <!--						<template slot="icon">-->
 <!--							<el-image fit="cover" :src="tool.getArImage(item.walletType + '.png', '/files/')" style="width: 100px; height: 100px; border-radius: 50%;"></el-image>-->
 <!--						</template>-->
@@ -15,7 +15,7 @@
 			</el-col>
 		</el-row>
 
-		<el-dialog :title="bonusFlowType" :visible.sync="dialog" :width="screenWidth" v-loading="loading" style="margin-top: -70px;">
+		<el-dialog :title="bonusFlowType" :visible.sync="dialog" :width="screenWidth" v-loading="loading" style="margin-top: -80px;">
 			<el-row :gutter="10" style="margin-top: -30px;">
 						<el-col :xs="24" :sm="24" :lg="6">
 							<el-date-picker
@@ -71,24 +71,24 @@
 							<span>{{ row.DEAL_TYPE_NAME }}</span>
 						</template>
 					</el-table-column>
-					<el-table-column :label="$t('bonus.preTransactionBalance')" align="center" min-width="120px">
+					<el-table-column :label="$t('bonus.preTransactionBalance')" align="center" min-width="150px">
 						<template slot-scope="{row}">
-							<span>{{ tool.formatPrice(row.TOTAL - row.AMOUNT) }}</span>
+							<span>{{ tool.formatPrice(row.TOTAL - row.AMOUNT) | amountFilter }}</span>
 						</template>
 					</el-table-column>
-					<el-table-column :label="$t('bonus.postTransactionBalance')" align="center" min-width="120px">
+					<el-table-column :label="$t('bonus.postTransactionBalance')" align="center" min-width="160px">
 						<template slot-scope="{row}">
-							<span>{{ row.AMOUNT }}</span>
+							<span>{{ row.AMOUNT | amountFilter }}</span>
 						</template>
 					</el-table-column>
 					<el-table-column :label="$t('bonus.transAmount')" align="center" min-width="120px">
 						<template slot-scope="{row}">
 							<el-tag :type="row.IS_INCR > 0 ? 'danger' : 'info'" size="small" class="no-border">
-								<span class="text-danger">{{ row.IS_INCR > 0 ? '+' : '' }}  {{row.AMOUNT}}</span>
+								<span class="text-danger">{{ row.IS_INCR > 0 ? '+' : '' }}  {{ row.AMOUNT | amountFilter }}</span>
 							</el-tag>
 						</template>
 					</el-table-column>
-					<el-table-column :label="$t('bonus.remark')" align="center" min-width="150px">
+					<el-table-column :label="$t('bonus.remark')" align="center" min-width="240px">
 						<template slot-scope="{row}">
 							<span>{{ row.REMARK }}</span>
 						</template>
@@ -108,11 +108,16 @@
 import {fetchAccount,fetchAccountFlow} from '@/api/bonus'
 import Pagination from '@/components/Pagination'
 import tool from "@/utils/tool"
-import {getScreenWidth} from "@/utils";
+import {formatAmount, getScreenWidth} from "@/utils"
 
 export default {
-  name: 'MyAccount',
+  name: 'memberAccount',
 	components: { Pagination },
+	filters: {
+		amountFilter(amount) {
+			return formatAmount(amount)
+		},
+	},
   data() {
     return {
 			tool: tool,

+ 22 - 14
src/views/bonus/bonus-list.vue

@@ -6,14 +6,14 @@
       fit
       highlight-current-row
     >
-      <el-table-column align="center" :label="$t('bonus.payCycle')" prop="PERIOD_NUM.value"></el-table-column>
-			<el-table-column align="center" :label="$t('bonus.welcomeBonus')" prop="BONUS_TG.value" v-show="welcomeBonusSwitch === 1"></el-table-column>
-      <el-table-column align="center" :label="$t('bonus.teamBonus')" prop="ORI_BONUS_QY.value" v-show="teamBonusSwitch === 1"></el-table-column>
-      <el-table-column align="center" :label="$t('bonus.directorBonus')" prop="ORI_BONUS_BS.value"></el-table-column>
-      <el-table-column align="center" :label="$t('bonus.quarterlyBonus')" prop="ORI_BONUS_QUARTER.value"></el-table-column>
-			<el-table-column align="center" :label="$t('bonus.stockistCommission')" prop="BONUS_BD.value" v-show="stockistCommissionSwitch === 1"></el-table-column>
-			<el-table-column align="center" :label="$t('bonus.actualBonus')" prop="BONUS_REAL.value"></el-table-column>
-      <el-table-column align="center" :label="$t('common.action')">
+      <el-table-column align="center" min-width="100px" :label="$t('bonus.payCycle')" prop="PERIOD_NUM.value"></el-table-column>
+			<el-table-column align="center" min-width="150px" :label="$t('bonus.welcomeBonus')" prop="BONUS_TG.value" v-show="welcomeBonusSwitch === 1"></el-table-column>
+      <el-table-column align="center" min-width="130px" :label="$t('bonus.teamBonus')" prop="ORI_BONUS_QY.value" v-show="teamBonusSwitch === 1"></el-table-column>
+      <el-table-column align="center" min-width="130px" :label="$t('bonus.directorBonus')" prop="ORI_BONUS_BS.value"></el-table-column>
+      <el-table-column align="center" min-width="150px" :label="$t('bonus.quarterlyBonus')" prop="ORI_BONUS_QUARTER.value"></el-table-column>
+			<el-table-column align="center" min-width="170px" :label="$t('bonus.stockistCommission')" prop="BONUS_BD.value" v-show="stockistCommissionSwitch === 1"></el-table-column>
+			<el-table-column align="center" min-width="120px" :label="$t('bonus.actualBonus')" prop="BONUS_REAL.value"></el-table-column>
+      <el-table-column align="center" min-width="100px" :label="$t('common.action')">
         <template slot-scope="{row}">
 					<el-button-group>
 						<el-button type="primary" size="mini" @click="getOne(row.PERIOD_NUM.value)">{{ $t('common.view') }}</el-button>
@@ -22,16 +22,18 @@
       </el-table-column>
     </el-table>
 
-		<el-dialog :title="bonusPayCycle" :visible.sync="dialog" :width="screenWidth" v-if="bonusData" style="margin-top: -70px">
-			<el-descriptions title="" class="bonus-list" :column="2" border size="medium" style="width: 100%">
+		<el-dialog :title="bonusPayCycle" :visible.sync="dialog" :width="screenWidth" v-if="bonusData" style="margin-top: -80px">
+			<el-descriptions title="" class="bonus-list" :column="column" border size="medium" style="width: 100%">
 				<el-descriptions-item class="bonus-item" :label="$t('shop.memberCode')">{{ bonusData.USER_NAME.value }}</el-descriptions-item>
 				<el-descriptions-item class="bonus-item" :label="$t('bonus.payCycle')">{{ bonusData.PERIOD_NUM.value }}</el-descriptions-item>
 				<el-descriptions-item class="bonus-item" :label="$t('profile.memberLevel')">{{ bonusData.LAST_DEC_LV.value }}</el-descriptions-item>
+				<el-descriptions-item class="bonus-item" :label="$t('bonus.whetherActive')">{{ bonusData.IS_ACTIVE.value === 1 ? $t('common.yes') : $t('common.no') }}</el-descriptions-item>
 				<el-descriptions-item class="bonus-item" :label="$t('profile.latestDirector')">{{ bonusData.LAST_EMP_LV.value }}</el-descriptions-item>
 				<el-descriptions-item class="bonus-item" :label="$t('profile.latestCrown')">{{ bonusData.LAST_CROWN_LV.value }}</el-descriptions-item>
+				<el-descriptions-item class="bonus-item" :label="$t('bonus.directorPGSPerformance')">{{ bonusData.DIRECTOR_BONUS_PGS.value }}</el-descriptions-item>
+				<el-descriptions-item class="bonus-item" :label="$t('bonus.directorBonus')">{{ bonusData.ORI_BONUS_BS.value }}</el-descriptions-item>
 				<el-descriptions-item class="bonus-item" :label="$t('bonus.welcomeBonus')" v-if="bonusData.ORI_BONUS_TG_SWITCH === 1">{{ bonusData.ORI_BONUS_TG.value }}</el-descriptions-item>
 				<el-descriptions-item class="bonus-item" :label="$t('bonus.teamBonus')" v-if="bonusData.ORI_BONUS_QY_SWITCH === 1">{{ bonusData.ORI_BONUS_QY.value }}</el-descriptions-item>
-				<el-descriptions-item class="bonus-item" :label="$t('bonus.directorBonus')">{{ bonusData.ORI_BONUS_BS.value }}</el-descriptions-item>
 				<el-descriptions-item class="bonus-item" :label="$t('bonus.quarterlyBonus')">{{ bonusData.ORI_BONUS_QUARTER.value }}</el-descriptions-item>
 				<el-descriptions-item class="bonus-item" :label="$t('bonus.stockistCommission')" v-if="bonusData.BONUS_BD_SWITCH === 1">{{ bonusData.BONUS_BD.value }}</el-descriptions-item>
 				<el-descriptions-item class="bonus-item" :label="$t('bonus.totalBonus')">{{ bonusData.BONUS_TOTAL.value }}</el-descriptions-item>
@@ -47,10 +49,15 @@
 
 <script>
 import {fetchBonusList, fetchBonusDetail} from '@/api/bonus'
-import {getScreenWidth} from "@/utils";
+import {formatAmount, getOperatingSystem, getScreenWidth} from "@/utils";
 
 export default {
-  name: 'PreviousBonus',
+  name: 'previousBonus',
+	filters: {
+		amountFilter(amount) {
+			return formatAmount(amount)
+		},
+	},
   data() {
     return {
 			tableData: [],
@@ -65,7 +72,8 @@ export default {
 			bonusData: null,
 			bonusPayCycle: '',
 
-			screenWidth: getScreenWidth() > 600 ? '70%' : getScreenWidth() + 'px'
+			screenWidth: getScreenWidth() > 600 ? '70%' : getScreenWidth() + 'px',
+			column: ['Android', 'ios'].includes(getOperatingSystem()) ? 1 : 2,
     }
   },
   created() {

+ 7 - 7
src/views/bonus/historical-cumulative-bonus.vue

@@ -7,12 +7,12 @@
       highlight-current-row
       style="width: 100%; margin-top: 25px;"
     >
-			<el-table-column align="center" :label="$t('bonus.welcomeBonus')" prop="BONUS_TG.value" v-show="welcomeBonusSwitch === 1"></el-table-column>
-      <el-table-column align="center" :label="$t('bonus.teamBonus')" prop="ORI_BONUS_QY.value" v-show="teamBonusSwitch === 1"></el-table-column>
-      <el-table-column align="center" :label="$t('bonus.directorBonus')" prop="ORI_BONUS_BS.value"></el-table-column>
-      <el-table-column align="center" :label="$t('bonus.quarterlyBonus')" prop="ORI_BONUS_QUARTER.value"></el-table-column>
-			<el-table-column align="center" :label="$t('bonus.stockistCommission')" prop="BONUS_BD.value" v-show="stockistCommissionSwitch === 1"></el-table-column>
-			<el-table-column align="center" :label="$t('bonus.totalBonus')" prop="BONUS_TOTAL.value"></el-table-column>
+			<el-table-column align="center" min-width="130px" :label="$t('bonus.welcomeBonus')" prop="BONUS_TG.value" v-show="welcomeBonusSwitch === 1"></el-table-column>
+      <el-table-column align="center" min-width="120px" :label="$t('bonus.teamBonus')" prop="ORI_BONUS_QY.value" v-show="teamBonusSwitch === 1"></el-table-column>
+      <el-table-column align="center" min-width="130px" :label="$t('bonus.directorBonus')" prop="ORI_BONUS_BS.value"></el-table-column>
+      <el-table-column align="center" min-width="140px" :label="$t('bonus.quarterlyBonus')" prop="ORI_BONUS_QUARTER.value"></el-table-column>
+			<el-table-column align="center" min-width="170px" :label="$t('bonus.stockistCommission')" prop="BONUS_BD.value" v-show="stockistCommissionSwitch === 1"></el-table-column>
+			<el-table-column align="center" min-width="120px" :label="$t('bonus.totalBonus')" prop="BONUS_TOTAL.value"></el-table-column>
     </el-table>
 	</div>
 </template>
@@ -21,7 +21,7 @@
 import {fetchHistoricalCumulativeBonus} from '@/api/bonus'
 
 export default {
-  name: 'HistoricalCumulativeBonus',
+  name: 'historicalCumulativeBonus',
   data() {
     return {
 			tableData: [],

+ 54 - 0
src/views/bonus/team-inquiry.vue

@@ -0,0 +1,54 @@
+<template>
+  <div class="app-container" v-loading="loading">
+    <el-table
+      :data="tableData"
+      border
+      fit
+      highlight-current-row
+      style="width: 100%; margin-top: 25px;"
+    >
+			<el-table-column align="center" :label="$t('bonus.welcomeBonus')" prop="BONUS_TG.value" v-show="welcomeBonusSwitch === 1"></el-table-column>
+      <el-table-column align="center" :label="$t('bonus.teamBonus')" prop="ORI_BONUS_QY.value" v-show="teamBonusSwitch === 1"></el-table-column>
+      <el-table-column align="center" :label="$t('bonus.directorBonus')" prop="ORI_BONUS_BS.value"></el-table-column>
+      <el-table-column align="center" :label="$t('bonus.quarterlyBonus')" prop="ORI_BONUS_QUARTER.value"></el-table-column>
+			<el-table-column align="center" :label="$t('bonus.stockistCommission')" prop="BONUS_BD.value" v-show="stockistCommissionSwitch === 1"></el-table-column>
+			<el-table-column align="center" :label="$t('bonus.totalBonus')" prop="BONUS_TOTAL.value"></el-table-column>
+    </el-table>
+	</div>
+</template>
+
+<script>
+import {fetchHistoricalCumulativeBonus} from '@/api/bonus'
+
+export default {
+  name: 'teamInquiry',
+  data() {
+    return {
+			tableData: [],
+      total: 0,
+			loading: true,
+
+			welcomeBonusSwitch: 0,
+			teamBonusSwitch: 0,
+			stockistCommissionSwitch: 0,
+    }
+  },
+  created() {
+    this.getList()
+  },
+	methods: {
+    getList() {
+      this.loading = true
+			fetchHistoricalCumulativeBonus().then(response => {
+				const {tableData, bonusSwitch} = response.data
+				this.tableData = tableData
+				this.welcomeBonusSwitch = bonusSwitch.welcomeBonusSwitch
+				this.teamBonusSwitch = bonusSwitch.teamBonusSwitch
+				this.stockistCommissionSwitch = bonusSwitch.stockistCommissionSwitch
+
+				this.loading = false
+      })
+    },
+  }
+}
+</script>

+ 5 - 3
src/views/config/shipping-address-list.vue

@@ -36,10 +36,12 @@
 					<el-switch size="small" v-model="row.IS_DEFAULT" active-value="1" inactive-value="0" @change="changeDefault($event, row)"></el-switch>
         </template>
       </el-table-column>
-      <el-table-column align="center" :label="$t('common.action')">
+      <el-table-column align="center" :label="$t('common.action')" min-width="150px">
         <template slot-scope="{row}">
-						<el-button type="text" size="mini" @click="handleEdit(row)">{{ $t('common.edit') }}</el-button>
-						<el-button type="text" size="mini" @click="handleDelete(row.ID)" style="color: red;">{{ $t('common.delete') }}</el-button>
+					<el-button-group>
+						<el-button type="primary" size="mini" @click="handleEdit(row)">{{ $t('common.edit') }}</el-button>
+						<el-button type="danger" size="mini" @click="handleDelete(row.ID)">{{ $t('common.delete') }}</el-button>
+					</el-button-group>
         </template>
       </el-table-column>
     </el-table>

+ 16 - 9
src/views/finance/recharge-list.vue

@@ -1,20 +1,24 @@
 <template>
 	<div class="app-container" v-loading="listLoading">
 		<el-table :data="list" border fit highlight-current-row>
-			<el-table-column align="center" :label="$t('finance.createdTime')" prop="CREATED_AT" min-width="100px" width="160px">
+			<el-table-column align="center" :label="$t('finance.createdTime')" prop="CREATED_AT" min-width="140px">
 				<template slot-scope="{row}">
-					<span>{{ row.CREATED_AT | parseTime('{y}-{m}-{d} {h}:{i}:{s}') }}</span>
+					<span>{{ row.CREATED_AT | parseTime('{y}-{m}-{d} {h}:{i}') }}</span>
 				</template>
 			</el-table-column>
-			<el-table-column align="center" :label="$t('finance.rechargeAmount')" prop="AMOUNT"  width="160px"></el-table-column>
-			<el-table-column align="center" :label="$t('finance.rechargeStatus')" prop="STATUS_NAME" width="150px">
+			<el-table-column align="center" min-width="160px" :label="$t('finance.rechargeAmount')" prop="AMOUNT">
+				<template slot-scope="{row}">
+					{{ row.AMOUNT | amountFilter }}
+				</template>
+			</el-table-column>
+			<el-table-column align="center" min-width="150px" :label="$t('finance.rechargeStatus')" prop="STATUS_NAME">
 				<template slot-scope="{row}">
 					<el-tag :type="row.AUDIT_STATUS | statusFilter">{{row.STATUS_NAME}}</el-tag>
 				</template>
 			</el-table-column>
-			<el-table-column align="center" :label="$t('finance.bankName')" prop="OPEN_BANK_NAME"></el-table-column>
-			<el-table-column align="center" :label="$t('finance.bankAccount')" prop="BANK_NO"></el-table-column>
-			<el-table-column align="center" :label="$t('finance.printVoucher')" min-width="100px" width="120px">
+			<el-table-column align="center" min-width="180px" :label="$t('finance.bankName')" prop="OPEN_BANK_NAME"></el-table-column>
+			<el-table-column align="center" min-width="150px" :label="$t('finance.bankAccount')" prop="BANK_NO"></el-table-column>
+			<el-table-column align="center" min-width="150px" :label="$t('finance.printVoucher')">
 				<template slot-scope="{row}">
 					<el-button type="primary" size="mini" v-if="row.AUDIT_STATUS === '0'" @click="handleUpload(row.ID)">{{ $t('finance.uploadVoucher') }}</el-button>
 					<el-button type="success" size="mini" v-if="row.AUDIT_STATUS !== '0'" @click="handleView(row)">{{ $t('finance.viewVoucher') }}</el-button>
@@ -84,7 +88,7 @@ import {fetchToken} from "@/api/file"
 import waves from '@/directive/waves'
 import Pagination from '@/components/Pagination'
 import tool from "@/utils/tool"
-import {getScreenWidth} from "@/utils"
+import {formatAmount, getScreenWidth} from "@/utils"
 import {integer, range, required} from "@/utils/rules"
 import LeoUploader from "@/components/Upload/Uploader"
 
@@ -101,7 +105,10 @@ export default {
 				'3': 'danger',
 			}
 			return statusEnums[status] || 'warning'
-		}
+		},
+		amountFilter(amount) {
+			return formatAmount(amount)
+		},
 	},
 	data() {
 		return {

+ 19 - 14
src/views/finance/transfer-list.vue

@@ -55,31 +55,31 @@
 			fit
 			highlight-current-row
 		>
-			<el-table-column align="center" :label="$t('finance.transferAccounts')" prop="OUT_WALLET_NAME"></el-table-column>
-			<el-table-column align="center" :label="$t('finance.receivingMemberCode')" prop="LAST_IN_USER_NAME"></el-table-column>
-			<el-table-column align="center" :label="$t('finance.receivingMemberName')" prop="LAST_IN_REAL_NAME"></el-table-column>
-			<el-table-column align="center" :label="$t('finance.transferIntoAccount')" prop="IN_WALLET_NAME"></el-table-column>
-			<el-table-column align="center" :label="$t('finance.transferAmount')" prop="ORI_AMOUNT">
+			<el-table-column align="center" min-width="150px" :label="$t('finance.transferAccounts')" prop="OUT_WALLET_NAME"></el-table-column>
+			<el-table-column align="center" min-width="190px" :label="$t('finance.receivingMemberCode')" prop="LAST_IN_USER_NAME"></el-table-column>
+			<el-table-column align="center" min-width="200px" :label="$t('finance.receivingMemberName')" prop="LAST_IN_REAL_NAME"></el-table-column>
+			<el-table-column align="center" min-width="170px" :label="$t('finance.transferIntoAccount')" prop="IN_WALLET_NAME"></el-table-column>
+			<el-table-column align="center" min-width="150px" :label="$t('finance.transferAmount')" prop="ORI_AMOUNT">
 				<template slot-scope="{row}">
-					<span>{{ tool.formatPrice(row.ORI_AMOUNT) }}</span>
+					<span>{{ tool.formatPrice(row.ORI_AMOUNT) | amountFilter }}</span>
 				</template>
 			</el-table-column>
-			<el-table-column align="center" :label="$t('finance.serviceCharge')" prop="FEE" v-if="showFee">
+			<el-table-column align="center" min-width="150px" :label="$t('finance.serviceCharge')" prop="FEE" v-if="showFee">
 				<template slot-scope="{row}">
-					<span>{{ tool.formatPrice(row.FEE) }}</span>
+					<span>{{ tool.formatPrice(row.FEE) | amountFilter}}</span>
 				</template>
 			</el-table-column>
-			<el-table-column align="center" :label="$t('finance.actualAmountTransferredInto')" prop="AMOUNT" v-if="showFee">
+			<el-table-column align="center" min-width="150px" :label="$t('finance.actualAmountTransferredInto')" prop="AMOUNT" v-if="showFee">
 				<template slot-scope="{row}">
-					<span>{{ tool.formatPrice(row.AMOUNT) }}</span>
+					<span>{{ tool.formatPrice(row.AMOUNT) | amountFilter}}</span>
 				</template>
 			</el-table-column>
-			<el-table-column min-width="100px" align="center" :label="$t('finance.transferTime')" prop="CREATED_AT">
+			<el-table-column min-width="160px"  align="center" :label="$t('finance.transferTime')" prop="CREATED_AT">
 				<template slot-scope="{row}">
 					<span>{{ row.CREATED_AT | parseTime('{y}-{m}-{d} {h}:{i}:{s}') }}</span>
 				</template>
 			</el-table-column>
-			<el-table-column align="center" :label="$t('finance.remark')" prop="REMARK"></el-table-column>
+			<el-table-column align="center" min-width="150px" :label="$t('finance.remark')" prop="REMARK"></el-table-column>
 		</el-table>
 
 		<div class="white-box-footer" style="margin-top: 5px;">
@@ -87,7 +87,7 @@
 			<pagination v-show="total>0" :total="total" :page.sync="listQuery.page" :limit.sync="listQuery.pageSize" @pagination="getList" />
 		</div>
 
-		<el-dialog :title="$t('finance.applyTransfer')" :visible.sync="dialog" :width="screenWidth" v-loading="loading" :close-on-click-modal="false" :destroy-on-close="true" style="margin-top: -70px;">
+		<el-dialog :title="$t('finance.applyTransfer')" :visible.sync="dialog" :width="screenWidth" v-loading="loading" :close-on-click-modal="false" :destroy-on-close="true" style="margin-top: -80px;">
 			<el-form ref="form" :model="form" :label-position="labelPosition" v-loading="loading" style="margin-top: -20px; margin-bottom: -30px;">
 				<el-row :gutter="5">
 					<el-col :xs="24" :sm="24" :lg="24">
@@ -157,13 +157,18 @@ import waves from '@/directive/waves'
 import Pagination from '@/components/Pagination'
 import tool from "@/utils/tool"
 import usersInfo from "@/utils/usersInfo"
-import {getScreenWidth} from "@/utils"
+import {formatAmount, getScreenWidth} from "@/utils"
 import {fetchFullInfo} from "@/api/user"
 
 export default {
 	name: 'Transfer',
 	components: { Pagination },
 	directives: { waves },
+	filters: {
+		amountFilter(amount) {
+			return formatAmount(amount)
+		},
+	},
 	data() {
 		return {
 			tool: tool,

+ 2 - 2
src/views/user/welcome-pack.vue

@@ -92,10 +92,10 @@
 						</el-form-item>
 						<el-form-item><!--自动安置区位-->
 							<el-row :gutter="5">
-								<el-col :xs="24" :sm="24" :lg="12">
+								<el-col :xs="24" :sm="12" :lg="12">
 									<el-button size="small" type="primary" @click="setAutoPlace('left')">{{ $t('atlas.placementAutoLeft') }}</el-button>
 								</el-col>
-								<el-col :xs="24" :sm="24" :lg="12">
+								<el-col :xs="24" :sm="12" :lg="12">
 									<el-button size="small" type="primary" @click="setAutoPlace('right')">{{ $t('atlas.placementAutoRight') }}</el-button>
 								</el-col>
 							</el-row>