From f7a3d41075e00498f7033475108c0bcd86cda733 Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期二, 01 七月 2025 14:03:13 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/2.0.1' into 2.0.1

---
 wx/pages/mine/mine.vue |  313 +++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 307 insertions(+), 6 deletions(-)

diff --git a/wx/pages/mine/mine.vue b/wx/pages/mine/mine.vue
index 8c3b35f..d7b8844 100644
--- a/wx/pages/mine/mine.vue
+++ b/wx/pages/mine/mine.vue
@@ -1,19 +1,320 @@
 <template>
-	<view>
-		
+	<view class="content">
+		<view class="content_head" :style="{backgroundImage: 'url(' + backgroundImg + ')'}">
+			<view class="content_head_img">
+				<u-icon name="account-fill" color="#999999" size="38"></u-icon>
+			</view>
+			<view class="content_head_info">
+				<text>{{userInfo.realname}}</text>
+				<view class="content_head_company" @click="show = true">
+					<text>{{userInfo.company.name}}</text>
+					<u-icon name="arrow-down-fill" color="#ffffff" size="16"></u-icon>
+				</view>
+			</view>
+		</view>
+		<view class="content_box">
+			<view class="content_box_list">
+				<view class="content_box_list_item">
+					<text>{{numObj.dataFirst || 0}}</text>
+					<text>淇濋殰涓繚鍗�</text>
+				</view>
+				<view class="content_box_list_item">
+					<text>{{numObj.dataSecond || 0}}</text>
+					<text>鍦ㄤ繚浜烘暟</text>
+				</view>
+				<view class="content_box_list_item">
+					<text>{{numObj.dataThird || 0}}</text>
+					<text>鐞嗚禂涓�</text>
+				</view>
+			</view>
+			<view class="content_box_fun">
+				<view class="content_box_fun_label">鎴戠殑鏈嶅姟</view>
+				<view class="fun_list">
+					<view class="fun_list_item" @click="jump(8)">
+						<image src="/static/icon/wode_ic_yuangong@2x.png" mode="widthFix"></image>
+						<text>鍛樺伐绠$悊</text>
+					</view>
+				</view>
+			</view>
+		</view>
+		<view class="content_loginout">
+			<u-button type="primary" shape="circle" color="#437CB3" :plain="true" text="閫�鍑虹櫥褰�"
+				@click="loginOut"></u-button>
+		</view>
+		<!-- 鍒囨崲浼佷笟 -->
+		<u-picker :show="show" keyName="companyName" @confirm="confirmCompany" @cancel="cancel"
+			:columns="[userInfo.companyPermissionList || []]"></u-picker>
+		<MyTabbar :currentPage="currentPage" />
 	</view>
 </template>
 
 <script>
+	import MyTabbar from '@/components/my-tabbar/my-tabbar.vue'
+	import {
+		mapState
+	} from 'vuex'
 	export default {
+		components: { MyTabbar },
+		computed: {
+			...mapState(['userInfo', 'cookies'])
+		},
 		data() {
 			return {
-				
-			};
+				numObj: null,
+				currentPage: '/pages/mine/mine',
+				show: false,
+				companyList: [],
+				backgroundImg: require('@/static/background/home_bg@2x.png'),
+				backgroundImg1: require('@/static/background/home_ic_toubao@2x.png'),
+				backgroundImg2: require('@/static/background/home_ic_baodan@2x.png'),
+				backgroundImg3: require('@/static/background/home_ic_baoan@2x.png'),
+				backgroundImg4: require('@/static/background/home_ic_jiajianbao@2x.png'),
+				backgroundImg5: require('@/static/background/home_ic_jiajianbaojilu@2x.png'),
+				backgroundImg6: require('@/static/background/home_ic_huanchang@2x.png'),
+				backgroundImg7: require('@/static/background/home_ic_huanchangjilu@2x.png'),
+				backgroundImg8: require('@/static/background/home_ic_yuangong@2x.png'),
+			}
+		},
+		onShow() {
+			this.getNum()
+		},
+		methods: {
+			test() {
+				// 閫夋嫨鍥剧墖
+				wx.chooseImage({
+					count: 1,
+					success: async function(res) {
+						console.log(new wx.serviceMarket.CDN({ type: 'filePath', filePath: res.tempFilePaths[0] }))
+						try {
+							const invokeRes = await wx.serviceMarket.invokeService({
+								service: 'wx79ac3de8be320b71',
+								api: 'OcrAllInOne',
+								data: {
+									// 鐢� CDN 鏂规硶鏍囪瑕佷笂浼犲苟杞崲鎴� HTTP URL 鐨勬枃浠�
+									img_url: new wx.serviceMarket.CDN({
+										type: 'filePath',
+										filePath: res.tempFilePaths[0],
+									}),
+									data_type: 3,
+									ocr_type: 1
+								},
+							})
+							console.log('invokeService success', invokeRes)
+							wx.showModal({ title: 'success', content: JSON.stringify(invokeRes) })
+						} catch (err) {
+							console.log(JSON.stringify(err))
+							wx.showModal({ title: 'fail', content: err })
+						}
+					},
+					fail: function(res) {},
+					complete: function(res) {},
+				})
+			},
+			cancel() {
+				this.show = false
+			},
+			confirmCompany(e) {
+				if (e.value[0].companyId === this.userInfo.companyId) {
+					uni.showToast({
+						title: '涓嶈兘鍒囨崲褰撳墠浼佷笟',
+						icon: 'none'
+					})
+					return
+				}
+				this.$u.api.switchCompany({
+						companyId: e.value[0].companyId
+					})
+					.then(async res => {
+						let user = await this.$u.api.getUserInfo()
+						if (user.code === 200) {
+							this.$store.commit('setUserInfo', user.data)
+							this.show = false
+						}
+					})
+			},
+			getNum() {
+				this.$u.api.getCompanyMiniData()
+					.then(res => {
+						if (res.code === 200) {
+							console.log(res)
+							this.numObj = res.data
+						}
+					})
+			},
+			loginOut() {
+				this.$u.api.logout()
+					.then(res => {
+						if (res.code === 200) {
+							this.$store.commit('empty')
+							uni.navigateTo({
+								url: '/pages/login/login'
+							})
+						}
+					})
+			},
+			jump(type) {
+				if (!this.cookies || !this.userInfo) {
+					uni.navigateTo({
+						url: '/pages/login/login'
+					})
+				}
+				switch (type) {
+					case 8:
+						uni.navigateTo({
+							url: '/pages/employee_management/employee_management'
+						})
+						break
+				}
+			}
 		}
 	}
 </script>
 
-<style lang="scss">
-
+<style>
+	page {
+		background-color: #F7F7F7;
+	}
 </style>
+
+<style lang="scss" scoped>
+	.content {
+		width: 100%;
+
+		.content_loginout {
+			width: 200rpx;
+			left: 50%;
+			transform: translate(-50%, 0);
+			position: fixed;
+			bottom: calc(env(safe-area-inset-bottom) + 110upx + 80rpx);
+		}
+
+		.content_head {
+			width: 100%;
+			height: 292rpx;
+			padding: 40rpx;
+			box-sizing: border-box;
+			background-repeat: no-repeat;
+			background-size: 100% 100%;
+			display: flex;
+			position: relative;
+			
+			.content_head_img {
+				flex-shrink: 0;
+				background-color: #ffffff;
+				width: 104rpx;
+				height: 104rpx;
+				border-radius: 50%;
+				margin-right: 20rpx;
+				display: flex;
+				align-items: center;
+				justify-content: center;
+				border: 4rpx solid #FFFFFF;
+			}
+			
+			.content_head_info {
+				flex: 1;
+				height: 104rpx;
+				display: flex;
+				flex-direction: column;
+				justify-content: space-around;
+				.content_head_company {
+					width: 100%;
+					display: flex;
+					align-items: center;
+				
+					text {
+						font-weight: 400;
+						font-size: 26rpx;
+						color: #FFFFFF;
+						margin-right: 15rpx;
+					}
+				}
+				
+				text {
+					font-weight: 500;
+					font-size: 32rpx;
+					color: #FFFFFF;
+				}
+			}
+			
+		}
+
+		.content_box {
+			width: 100%;
+			padding: 0 30rpx;
+			box-sizing: border-box;
+			position: relative;
+			top: -100rpx;
+			left: 0;
+			
+			.content_box_fun {
+				width: 100%;
+				margin-top: 34rpx;
+				background: #FFFFFF;
+				padding: 30rpx;
+				box-sizing: border-box;
+				border-radius: 16rpx;
+				.content_box_fun_label {
+					font-weight: 500;
+					font-size: 32rpx;
+					color: #222222;
+					margin-bottom: 30rpx;
+				}
+				.fun_list {
+					width: 100%;
+					display: flex;
+					align-items: center;
+					.fun_list_item {
+						width: 25%;
+						display: flex;
+						flex-direction: column;
+						align-items: center;
+						justify-content: center;
+						image {
+							width: 60rpx;
+							height: 60rpx;
+						}
+						text {
+							font-weight: 400;
+							font-size: 26rpx;
+							color: #333333;
+							margin-top: 16rpx;
+						}
+					}
+				}
+			}
+
+			.content_box_list {
+				width: 100%;
+				height: 172rpx;
+				padding: 30rpx 40rpx;
+				box-sizing: border-box;
+				background: #FFFFFF;
+				border-radius: 16rpx;
+				display: flex;
+				align-items: center;
+
+				.content_box_list_item {
+					flex: 1;
+					display: flex;
+					flex-direction: column;
+					align-items: center;
+					justify-content: center;
+					text {
+						&:nth-child(1) {
+							font-weight: 600;
+							font-size: 48rpx;
+							color: #279BAA;
+						}
+						&:nth-child(2) {
+							font-weight: 400;
+							font-size: 26rpx;
+							color: #222222;
+							magrin-top: 10rpx;
+						}
+					}
+				}
+			}
+		}
+	}
+</style>
\ No newline at end of file

--
Gitblit v1.9.3