页面修改

This commit is contained in:
THK3121 2023-08-21 11:35:12 +08:00
parent a6614b7f90
commit 64f7189963
34 changed files with 1506 additions and 1633 deletions

View File

@ -480,7 +480,7 @@
border-radius: 30rpx;
opacity: 1;
overflow: hidden;
box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6);
// box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6);
.cards_head {
padding: 28rpx;

View File

@ -1,10 +1,13 @@
<template>
<view class="card" @click="goDetil(goodsInfo.id)">
<view class="card">
<view class="tit">
<view v-if="goodsInfo.status==0">取货点:&nbsp;&nbsp;{{goodsInfo.shop_name}}</view>
<view v-else>收货人:&nbsp;&nbsp;{{ fuzzyName(goodsInfo.receiver_name) }}</view>
<view style="float: right;">
<u-icon name="arrow-right" color="black" size="20"></u-icon>
</view>
</view>
<view class="content">
<view class="content" @click="callFn(goodsInfo.shop_phone)">
<view v-if="goodsInfo.status==0">
<view class="address">店主姓名:&nbsp;&nbsp;{{goodsInfo.shop_user}}</view>
<view @click.stop="callFn(goodsInfo.shop_phone)" class="address">
@ -24,12 +27,12 @@
</view>
</view>
<view class="qh_btn" v-if='goodsInfo.status==0'>
<view class="qh_btn" v-if='goodsInfo.status==0' @click.stop="goDetil(goodsInfo.id)">
<u-button type="primary" class="custom-style" style="background-color: #0122C7;border: 0;">
<u-icon name="scan" color="white" size="25" style="margin-right: 10rpx;"></u-icon>
待取货/点击查看</u-button>
</view>
<view class="" v-if='goodsInfo.status==1'>
<view class="" v-if='goodsInfo.status==1' @click.stop="goDetil(goodsInfo.id)">
<u-button type="primary" style="background-color: #FF7C32; border: 0;"><u-icon name="car-fill" color="white"
size="25" style="margin-right: 10rpx;"></u-icon> 待配送/点击查看</u-button>
</view>
@ -88,6 +91,8 @@
font-size: 30rpx;
font-weight: bold;
padding: 20rpx 15rpx;
display: flex;
justify-content: space-between
}
.content {

View File

@ -383,7 +383,7 @@
overflow: hidden;
margin: 2vh 2vw;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
/* box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); */
/* padding: 2vh 2vw; */
.tit {

View File

@ -22,14 +22,15 @@
</block>
<block v-else>进行中</block>
</block>
</view>
</view>
</view>
<view style="display: flex;justify-content: space-between;align-items: center;">
<view>
<text>完成时间 :</text>
<text>{{datas.end_time}}</text>
</view>
<text v-if="datas.status==2||datas.status==1" style="background-color: #ff7c32;" class="status">进行中</text>
<text>完成时间 :</text>
<text>{{datas.end_time}}</text>
</view>
<text v-if="datas.status==2||datas.status==1" style="background-color: #ff7c32;"
class="status">进行中</text>
<text v-if="datas.status==3" style="background-color: #488F00;" class="status">已完成</text>
<text v-if="datas.status==5" style="background-color: #ccc;" class="status">已关闭</text>
</view>
@ -221,7 +222,7 @@
.personnel_list {
// padding: 28rpx 0;
padding-bottom: 28rpx;
padding-bottom: 28rpx;
.cards {
@ -232,7 +233,7 @@
border-radius: 30rpx;
opacity: 1;
overflow: hidden;
box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6);
// box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6);
.cards_head {
padding: 28rpx;

View File

@ -105,6 +105,7 @@
export default {
data() {
return {
is_captain: 0,
mapClass: 'custom-map',
showLoading: true,
showPop: false,
@ -290,6 +291,7 @@
},
},
onLoad(options) {
console.log(JSON.parse(uni.getStorageSync("USER_INFO")).is_captain)
getDetil({
logistics_id: options.id
}).then(res => {

View File

@ -346,7 +346,7 @@
overflow: hidden;
margin: 2vh 2vw;
box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
/* box-shadow: 0 0 10px rgba(0, 0, 0, 0.5); */
/* padding: 2vh 2vw; */
.tit {

View File

@ -5,12 +5,12 @@
<view class="home_header" :class="!ApproveList.length > 0 ? 'home_header_no_data' : ''">
<!-- #ifdef APP-PLUS||H5 -->
<view style="height: var(--status-bar-height)"></view>
<view style="height: 100rpx"></view>
<view style="height: 30rpx"></view>
<!-- #endif -->
<view class="my_info">
<view class="head_img">
<view class="img_box">
<u--image :showLoading="true" width="131.43rpx" height="131.43rpx"
<u--image :showLoading="true" width="131.43rpx" height="131.43rpx" class="img_box_img"
:src="myOaInfo.avatar || '../../static/img/public/avatar.png'" shape="circle"></u--image>
</view>
@ -67,7 +67,7 @@
:key="index" @click="clickNotice(item.id)">
<view class="text">
<text class="text_time">{{
item.create_time.substring(0, 10)
item.create_time.substring(0, 10).replace(/-/g, ".")
}}</text>
{{ item.title }}
</view>
@ -95,7 +95,8 @@
<view class="fast_track">
<block v-for="(item, index) in oaHomeData" :key="index">
<view class="track_item" @click="navTwo(item.url, index)">
<u--image :showLoading="true" :src="item.icon" width="77.19rpx" height="77.19rpx"></u--image>
<u--image :showLoading="true" :src="iconList[index]" mode="widthFix" width="77.19rpx"
height="77.19rpx"></u--image>
<view class="title">{{ item.text }}</view>
</view>
</block>
@ -194,6 +195,15 @@
},
data() {
return {
iconList: [
"../../static/img/home/GSXX.png",
"../../static/img/home/RYGL.png",
"../../static/img/home/HTGL.png",
"../../static/img/home/RWGL.png",
"../../static/img/home/DAGL.png",
"../../static/img/home/GRCW.png",
],
notArr: [],
orderList: [],
oaHomeData: [],
@ -421,7 +431,7 @@
<style lang="scss">
.oa_home {
padding-bottom: 120rpx;
// padding-bottom: rpx;
}
.header_bg {
@ -457,12 +467,22 @@
box-sizing: border-box;
.img_box {
width: 131.43rpx;
height: 131.43rpx;
position: absolute;
left: -10rpx;
top: -15rpx;
width: 140rpx;
height: 140rpx;
background-color: white;
border-radius: 140rpx;
.img_box_img {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
}
// font-we

View File

@ -1,337 +1,304 @@
<template>
<view class="login">
<image
class="bg-iamge"
src="../../static/img/login/login_back_img.png"
></image>
<!-- #ifdef APP-PLUS||H5 -->
<view style="height: var(--status-bar-height)"></view>
<!-- #endif -->
<view class="body">
<view class="title">欢迎进入里海供销平台</view>
<view class="login-card">
<view class="top">
<view class="text item">
<u-tabs
:list="tabList"
@click="changeTabs"
lineColor="#0122c7"
itemStyle="padding-left: 15px; padding-right: 15px; height: 34px;font-size: 32rpx;"
></u-tabs>
</view>
<input
v-if="current == 0"
@click="getId"
class="mobile item"
v-model="formData.account"
placeholder="输入账号"
/>
<input
v-if="current == 0"
@click="getId"
class="mobile item"
v-model="formData.password"
maxlength="26"
placeholder="输入密码"
password
type="safe-password"
/>
<input
v-if="current == 1"
class="mobile item"
v-model="formData.account"
placeholder="输入手机号"
/>
<view v-if="current == 1" class="code item">
<input
placeholder="输入验证码"
v-model="formData.code"
maxlength="6"
/>
<u-code
:seconds="seconds"
@end="end"
@start="start"
ref="uCode"
@change="codeChange"
></u-code>
<view class="get-code" @click="getCode">{{ tips }}</view>
</view>
<view class="btn">
<!-- <view>新用户注册</view> -->
<!-- <view @click="forgetPWD">忘记密码?</view> -->
</view>
</view>
<button class="submit_btn" @click="login">登录</button>
</view>
</view>
</view>
<view class="login">
<!-- <image class="bg-iamge" src="../../static/img/login/login_back_img.png"></image> -->
<!-- #ifdef APP-PLUS||H5 -->
<view style="height: var(--status-bar-height)"></view>
<!-- #endif -->
<view class="body">
<view class="title">欢迎进入里海供销平台</view>
<view class="login-card">
<view class="top">
<view class="text item">
<u-tabs :list="tabList" @click="changeTabs" lineColor="#0122c7"
itemStyle="padding-left: 15px; padding-right: 15px; height: 34px;font-size: 32rpx;"></u-tabs>
</view>
<input v-if="current == 0" @click="getId" class="mobile item" v-model="formData.account"
placeholder="输入账号" />
<input v-if="current == 0" @click="getId" class="mobile item" v-model="formData.password"
maxlength="26" placeholder="输入密码" password type="safe-password" />
<input v-if="current == 1" class="mobile item" v-model="formData.account" placeholder="输入手机号" />
<view v-if="current == 1" class="code item">
<input placeholder="输入验证码" v-model="formData.code" maxlength="6" />
<u-code :seconds="seconds" @end="end" @start="start" ref="uCode" @change="codeChange"></u-code>
<view class="get-code" @click="getCode">{{ tips }}</view>
</view>
<view class="btn">
<!-- <view>新用户注册</view> -->
<!-- <view @click="forgetPWD">忘记密码?</view> -->
</view>
</view>
<button class="submit_btn" @click="login">登录</button>
</view>
</view>
</view>
</template>
<script>
import {
loginAccount,
userInfo,
test
} from "@/api/oaUser.js"
import {
Toast
} from "../../libs/uniApi";
// #ifdef APP-PLUS
var jpushModule = uni.requireNativePlugin("JG-JPush");
import {
loginAccount,
userInfo,
test
} from "@/api/oaUser.js"
import {
Toast
} from "../../libs/uniApi";
// #ifdef APP-PLUS
var jpushModule = uni.requireNativePlugin("JG-JPush");
// #endif
// #endif
export default {
data () {
return {
export default {
data() {
return {
tabList: [{
name: '账号登录'
},
// {name:''},
],
current: 0,
formData: {
account: '',
password: '',
code: '',
terminal: 6, //6APP
scene: 1,
register_id: ""
},
tips: '获取验证码',
// refCode: null,
seconds: 60,
};
},
methods: {
changeTabs (e) {
this.current = e.index;
this.formData.scene = e.index + 1;
},
// id
getId () {
// #ifdef APP-PLUS
if (this.formData.register_id) return
jpushModule.initJPushService()
jpushModule.getRegistrationID(result => {
// id
this.formData.register_id = result.registerID || 0
tabList: [{
name: '账号登录'
},
// {name:''},
],
current: 0,
formData: {
account: '',
password: '',
code: '',
terminal: 6, //6APP
scene: 1,
register_id: ""
},
tips: '获取验证码',
// refCode: null,
seconds: 60,
};
},
methods: {
changeTabs(e) {
this.current = e.index;
this.formData.scene = e.index + 1;
},
// id
getId() {
// #ifdef APP-PLUS
if (this.formData.register_id) return
jpushModule.initJPushService()
jpushModule.getRegistrationID(result => {
// id
this.formData.register_id = result.registerID || 0
console.log("设备----", this.formData)
})
// #endif
},
async login () {
if (!this.formData.account) return Toast('账号不能为空');
if (this.formData.scene == 1 && !this.formData.password) return Toast('密码不能为空');
if (this.formData.scene == 2 && !this.formData.code) return Toast('验证码不能为空');
let that = this;
// let res = await test();
// console.log(res);
uni.showLoading({
title: '正在登录中'
})
let res = await loginAccount(that.formData);
console.log(that.formData)
this.$store.commit('SET_USERINFO', {
user: data,
token: res.data.token
})
let {
data
} = await userInfo();
this.$store.commit('setUserInfo', data);
uni.hideLoading()
if (data.is_new_user) {
uni.showLoading({
mask: true,
title: '加载中'
})
uni.switchTab({
url: '/pages/oaHome/oaHome',
success: () => {
uni.$emit('initOaTask'); //
uni.hideLoading()
}
})
} else uni.navigateTo({
url: '/pages/updatePasswprd/updatePasswprd'
});
},
initTerminal () {
// #ifndef APP-PLUS
this.formData.terminal = 6;
// #endif
uni.getSystemInfo({
success: (res) => {
const platform = res.platform.toLowerCase();
if (platform === 'ios') {
this.formData.terminal = 5;
} else if (platform === 'windows') {
this.formData.terminal = 4;
} else if (platform === 'mac') {
this.formData.terminal = 4;
}
}
})
// #ifdef H5
this.formData.terminal = 3;
// #endif
// #ifdef MP-WEIXIN
this.formData.terminal = 1;
// #endif
},
codeChange (text) {
this.tips = text;
},
getCode () {
if (this.$refs.uCode.canGetCode) {
//
uni.showLoading({
title: '正在获取验证码'
})
setTimeout(() => {
uni.hideLoading();
// this.start()
uni.$u.toast('验证码已发送');
//
this.$refs.uCode.start();
}, 2000);
} else {
uni.$u.toast('倒计时结束后再发送');
}
},
end () {
// uni.$u.toast('');
},
start () {
// uni.$u.toast('');
},
//
forgetPWD () {
Toast('暂未开放')
}
},
mounted () {
console.log("设备----", this.formData)
})
// #endif
},
async login() {
if (!this.formData.account) return Toast('账号不能为空');
if (this.formData.scene == 1 && !this.formData.password) return Toast('密码不能为空');
if (this.formData.scene == 2 && !this.formData.code) return Toast('验证码不能为空');
let that = this;
// let res = await test();
// console.log(res);
uni.showLoading({
title: '正在登录中'
})
let res = await loginAccount(that.formData);
console.log(that.formData)
this.$store.commit('SET_USERINFO', {
user: data,
token: res.data.token
})
let {
data
} = await userInfo();
this.$store.commit('setUserInfo', data);
uni.hideLoading()
if (data.is_new_user) {
uni.showLoading({
mask: true,
title: '加载中'
})
uni.switchTab({
url: '/pages/oaHome/oaHome',
success: () => {
uni.$emit('initOaTask'); //
uni.hideLoading()
}
})
} else uni.navigateTo({
url: '/pages/updatePasswprd/updatePasswprd'
});
},
initTerminal() {
// #ifndef APP-PLUS
this.formData.terminal = 6;
// #endif
uni.getSystemInfo({
success: (res) => {
const platform = res.platform.toLowerCase();
if (platform === 'ios') {
this.formData.terminal = 5;
} else if (platform === 'windows') {
this.formData.terminal = 4;
} else if (platform === 'mac') {
this.formData.terminal = 4;
}
}
})
// #ifdef H5
this.formData.terminal = 3;
// #endif
// #ifdef MP-WEIXIN
this.formData.terminal = 1;
// #endif
},
codeChange(text) {
this.tips = text;
},
getCode() {
if (this.$refs.uCode.canGetCode) {
//
uni.showLoading({
title: '正在获取验证码'
})
setTimeout(() => {
uni.hideLoading();
// this.start()
uni.$u.toast('验证码已发送');
//
this.$refs.uCode.start();
}, 2000);
} else {
uni.$u.toast('倒计时结束后再发送');
}
},
end() {
// uni.$u.toast('');
},
start() {
// uni.$u.toast('');
},
//
forgetPWD() {
Toast('暂未开放')
}
},
mounted() {
this.initTerminal();
this.initTerminal();
}
}
}
}
</script>
<style lang="scss">
.login {
width: 100vw;
height: 100vh;
position: relative;
/* #ifdef H5 */
background-image: url("../../static/img/login/login_back_img.png");
.login {
width: 100vw;
height: 100vh;
position: relative;
background-color: $theme-oa-color;
/* #ifdef H5 */
// background-image: url("../../static/img/login/login_back_img.png");
background-color: $theme-oa-color;
/* #endif */
.bg-iamge {
width: 100vw;
height: 100vh;
position: absolute;
z-index: -99;
}
/* #endif */
// .bg-iamge {
// width: 100vw;
// height: 100vh;
// position: absolute;
// z-index: -99;
// }
.body {
display: flex;
flex-direction: column;
align-items: center;
.body {
display: flex;
flex-direction: column;
align-items: center;
.title {
width: 694rpx;
height: 74rpx;
margin-top: 200rpx;
margin-bottom: 51rpx;
font-size: 53rpx;
font-weight: 500;
color: #ffffff;
line-height: 68rpx;
-webkit-background-clip: text;
}
.title {
width: 694rpx;
height: 74rpx;
margin-top: 200rpx;
margin-bottom: 51rpx;
font-size: 53rpx;
font-weight: 500;
color: #ffffff;
line-height: 68rpx;
-webkit-background-clip: text;
}
.login-card {
width: 694rpx;
height: 643rpx;
background: #ffffff;
border-radius: 21rpx 21rpx 21rpx 21rpx;
opacity: 1;
box-sizing: border-box;
padding: 38.5rpx 0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
.login-card {
width: 694rpx;
height: 643rpx;
background: #ffffff;
border-radius: 21rpx 21rpx 21rpx 21rpx;
opacity: 1;
box-sizing: border-box;
padding: 38.5rpx 0;
display: flex;
flex-direction: column;
align-items: center;
justify-content: space-between;
.top {
display: flex;
justify-content: space-evenly;
flex-direction: column;
.top {
display: flex;
justify-content: space-evenly;
flex-direction: column;
.item {
margin-bottom: 35rpx;
}
.item {
margin-bottom: 35rpx;
}
.text {
font-size: 32rpx;
font-weight: 500;
color: rgba(0, 0, 0, 0.8);
line-height: 35rpx;
}
.text {
font-size: 32rpx;
font-weight: 500;
color: rgba(0, 0, 0, 0.8);
line-height: 35rpx;
}
.mobile,
.code {
width: 613rpx;
height: 112rpx;
background: #f5f5f5;
border-radius: 56rpx 56rpx 56rpx 56rpx;
opacity: 1;
padding: 0 45.56rpx;
box-sizing: border-box;
font-size: 28rpx;
font-weight: 400;
color: #333;
line-height: 35rpx;
}
.mobile,
.code {
width: 613rpx;
height: 112rpx;
background: #f5f5f5;
border-radius: 56rpx 56rpx 56rpx 56rpx;
opacity: 1;
padding: 0 45.56rpx;
box-sizing: border-box;
font-size: 28rpx;
font-weight: 400;
color: #333;
line-height: 35rpx;
}
.code {
display: flex;
justify-content: space-between;
align-items: center;
.code {
display: flex;
justify-content: space-between;
align-items: center;
input {
font-size: 28rpx;
}
input {
font-size: 28rpx;
}
.get-code {
color: $theme-oa-color;
}
}
.get-code {
color: $theme-oa-color;
}
}
.btn {
display: flex;
justify-content: space-between;
}
}
.btn {
display: flex;
justify-content: space-between;
}
}
.submit_btn {
width: 613rpx;
height: 112rpx;
background: $theme-oa-color;
border-radius: 56rpx 56rpx 56rpx 56rpx;
opacity: 1;
text-align: center;
line-height: 112rpx;
color: #ffffff;
font-size: 35rpx;
font-weight: 500;
}
}
}
}
.submit_btn {
width: 613rpx;
height: 112rpx;
background: $theme-oa-color;
border-radius: 56rpx 56rpx 56rpx 56rpx;
opacity: 1;
text-align: center;
line-height: 112rpx;
color: #ffffff;
font-size: 35rpx;
font-weight: 500;
}
}
}
}
</style>

View File

@ -178,9 +178,11 @@
padding: 28rpx;
width: 100vw;
margin-bottom: 30rpx;
background-image: url('../../static/img/home/my_bg.png');
background-size: 100% 100%;
background-repeat: no-repeat;
// background-image: url('../../static/img/home/my_bg.png');
background-color: $theme-oa-color;
border-radius: 0 0 30rpx 30rpx;
// background-size 100% 100%;
// background-repeat: no-repeat;
// .head_img {
// position: absolute;
@ -326,7 +328,7 @@
margin-top: 84.21rpx;
width: 614.04rpx;
height: 84.21rpx;
background: #3274F9;
background: $theme-oa-color;
box-shadow: 0px 9px 26px 1px #E9EFF5;
}
</style>

BIN
static/img/company/DAGL.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 780 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 B

BIN
static/img/home/DAGL.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
static/img/home/DAGL2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

BIN
static/img/home/GRCW.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

BIN
static/img/home/GSXX.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

BIN
static/img/home/HTGL.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

BIN
static/img/home/RWGL.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

BIN
static/img/home/RYGL.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@ -32,10 +32,10 @@
:loadmore-text="loadConfig.loadmoreText" :nomore-text="loadConfig.nomoreText" />
</view>
-->
<u-sticky bgColor="#0022C7" v-if="task_id>0&& !is_admin">
<u-tabs :list="tabLists" @click="changeCurrent" lineColor='white' :scrollable="false" lineWidth='40'
inactiveStyle='color:white' activeStyle="color:white"></u-tabs>
</u-sticky>
<u-sticky bgColor="#0022C7" v-if="task_id>0&& !is_admin">
<u-tabs :list="tabLists" @click="changeCurrent" lineColor='white' :scrollable="false" lineWidth='40'
inactiveStyle='color:white' activeStyle="color:white"></u-tabs>
</u-sticky>
<view class="personnel_list">
<view class="card" v-for="(item, index) in list" :key="item.id">
<view class="card_head">
@ -65,7 +65,7 @@
<view class="left">
<view class="cir">
<u--image class="u_avatar" :showLoading="true" :src=" '../../static/img/public/man.png'"
<u--image class="u_avatar" :showLoading="true" :src=" '../../static/img/company/DAGL.png'"
width="112.28rpx" height="112.28rpx" shape="circle"></u--image>
</view>
</view>
@ -144,12 +144,12 @@
task_id: -1,
is_admin: false,
list: [],
current: 0,
tabLists: [{
name: '未更新',
}, {
name: '已更新'
}],
current: 0,
tabLists: [{
name: '未更新',
}, {
name: '已更新'
}],
loadConfig: {
page: 1,
limit: 15,
@ -218,19 +218,18 @@
this.loadConfig.status = "loading"
let res = {};
if (this.is_admin) {
res = await taskInformationgist({
id: this.task_id
});
}
else {
let params = {
page: this.loadConfig.page,
limit: this.loadConfig.limit,
user_id: that.user_id,
};
this.task_id > 0 ? params.is_update = this.current:null;
res = await informationList(params);
}
res = await taskInformationgist({
id: this.task_id
});
} else {
let params = {
page: this.loadConfig.page,
limit: this.loadConfig.limit,
user_id: that.user_id,
};
this.task_id > 0 ? params.is_update = this.current : null;
res = await informationList(params);
}
this.loadConfig.status = "loadmore"
if (res.data.length < this.loadConfig.limit) {
this.loadConfig.status = "nomore"
@ -239,10 +238,10 @@
}
this.list = [...this.list, ...res.data];
},
changeCurrent(e) {
this.current = e.index;
this.initLoad();
}
changeCurrent(e) {
this.current = e.index;
this.initLoad();
}
},
onPullDownRefresh() {
this.initLoad();
@ -279,7 +278,7 @@
border-radius: 30rpx;
opacity: 1;
overflow: hidden;
box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6);
// box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6);
.card_head {
padding: 28rpx;
@ -302,7 +301,7 @@
width: 160rpx;
background-color: $theme-oa-color;
// background-color: $theme-oa-color;
color: white;
border-radius: 40rpx;

View File

@ -459,7 +459,7 @@
border-radius: 30rpx;
opacity: 1;
overflow: hidden;
box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6);
// box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6);
.card_head {
padding: 28rpx;

View File

@ -198,7 +198,7 @@
border-radius: 30rpx;
opacity: 1;
overflow: hidden;
box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6);
// box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6);
.card_head {
padding: 28rpx;

View File

@ -1,349 +1,366 @@
<template>
<view class="">
<company :id="id" type="company"></company>
<view class="need_contract" v-if="!company.contract||!company.contract.status||!company.company.is_contract">
<view class="title">电子合同</view>
<picker v-if="company.contract&&company.contract.check_status==0||!company.contract" :range="contractTypeList" range-key="name" @change="changeType">
<button class="btn">生成合同</button>
<!-- <mybtn text="生成合同" position="false"></mybtn> -->
</picker>
<view v-if="company.contract&&company.contract.check_status==1">
<button class="btn tips_center">合同已生成,请等待审核</button>
<!-- <mybtn text="生成合同" position="false" disabled></mybtn> -->
</view>
<view v-if="company.contract&&company.contract.check_status==2&&company.contract.file" class="card">
<view class="contract_box send">
<view class="left">
<image class="contract_img" src="../../static/img/contract/pdf.png"></image>
<view class="text">
<view class="name">{{company.contract.contract_type_name}}</view>
<view>
<text>{{company.contract&&company.contract.create_time}}</text>
</view>
</view>
</view>
<view class="right" @click="naviToContract(company.contract.file)">
<!-- <image class="icon"></image> -->
<uni-icons type="paperclip" color="#3274F9"></uni-icons>
<view>查看</view>
</view>
</view>
<u-line color="#999999FF" style="margin: 31rpx 0;"></u-line>
<view class="bottom">
<button class="send_btn" @click="addContract">发送合同</button>
</view>
</view>
<view v-if="company.contract&&company.contract.check_status==3" class="card">
<view class="contract_box send">
<view class="left">
<image class="contract_img" src="../../static/img/contract/pdf.png"></image>
<view class="text">
<view class="name">{{company.contract.contract_type_name}}</view>
<view>
<text>{{company.contract&&company.contract.create_time}}</text>
</view>
</view>
</view>
<view class="right" @click="naviToContract(company.contract.file)">
<!-- <image class="icon"></image> -->
<uni-icons type="paperclip" color="#3274F9"></uni-icons>
<view>查看</view>
</view>
</view>
<u-line color="#999999FF" style="margin: 31rpx 0;"></u-line>
<view class="bottom">
<button class="send_btn" @click="getPostsms" v-if="timerCount==0">再次发送短信</button>
<button class="send_btn tips_center" v-else>{{cTimerCount+'秒后可继续再次发送短信'}}</button>
</view>
</view>
</view>
</view>
<view class="">
<company :id="id" type="company"></company>
<view class="need_contract" v-if="!company.contract||!company.contract.status||!company.company.is_contract">
<view class="title">电子合同</view>
<picker v-if="company.contract&&company.contract.check_status==0||!company.contract"
:range="contractTypeList" range-key="name" @change="changeType">
<button class="btn">
<image src="../../static/img/contract/FQHT.png" width="35rpx" height="35rpx" mode="widthFix">
</image> 发起合同
</button>
<!-- <mybtn text="生成合同" position="false"></mybtn> -->
</picker>
<view v-if="company.contract&&company.contract.check_status==1">
<button class="btn tips_center">合同已生成,请等待审核</button>
<!-- <mybtn text="生成合同" position="false" disabled></mybtn> -->
</view>
<view v-if="company.contract&&company.contract.check_status==2&&company.contract.file" class="card">
<view class="contract_box send">
<view class="left">
<image class="contract_img" src="../../static/img/contract/pdf.png"></image>
<view class="text">
<view class="name">{{company.contract.contract_type_name}}</view>
<view>
<text>{{company.contract&&company.contract.create_time}}</text>
</view>
</view>
</view>
<view class="right" @click="naviToContract(company.contract.file)">
<!-- <image class="icon"></image> -->
<uni-icons type="paperclip" color="#3274F9"></uni-icons>
<view>查看</view>
</view>
</view>
<u-line color="#999999FF" style="margin: 31rpx 0;"></u-line>
<view class="bottom">
<button class="send_btn" @click="addContract">发送合同</button>
</view>
</view>
<view v-if="company.contract&&company.contract.check_status==3" class="card">
<view class="contract_box send">
<view class="left">
<image class="contract_img" src="../../static/img/contract/pdf.png"></image>
<view class="text">
<view class="name">{{company.contract.contract_type_name}}</view>
<view>
<text>{{company.contract&&company.contract.create_time}}</text>
</view>
</view>
</view>
<view class="right" @click="naviToContract(company.contract.file)">
<!-- <image class="icon"></image> -->
<uni-icons type="paperclip" color="#3274F9"></uni-icons>
<view>查看</view>
</view>
</view>
<u-line color="#999999FF" style="margin: 31rpx 0;"></u-line>
<view class="bottom">
<button class="send_btn" @click="getPostsms" v-if="timerCount==0">再次发送短信</button>
<button class="send_btn tips_center" v-else>{{cTimerCount+'秒后可继续再次发送短信'}}</button>
</view>
</view>
</view>
</view>
</template>
<script>
import { companyView, initiateContract, Draftingcontracts, postsms } from "@/api/company.js"
import { dictDataLists } from "@/api/oaPbulic.js"
import { Toast } from "../../libs/uniApi";
import {companyContractType} from "@/static/server/contract.js";
export default {
data() {
return {
id: '',
company: {},
skeleton: true,
show: false,
typeShow: false,
timer: null, //
timerCount: 0, //
contractTypeList: []
}
},
onLoad(options) {
this.id = options.id;
this.initCompany();
this.initContractTypeList();
let time = uni.getStorageSync('ctime' + this.id);
if(time>0&&(time - Date.now())/1000>0){
this.startTimer((time - Date.now())/1000);
}
},
onUnload() {
if(this.timerCount>0) uni.setStorageSync('ctime'+this.id, this.timerCount*1000+Date.now());
},
computed: {
cTimerCount() {
return this.timerCount;
}
},
methods: {
async initCompany() {
let res = await companyView({
id: this.id,
})
this.company = res.data;
if (this.company.contract == [] || this.company.contract == {} || this.company.contract.length == 0) this
.company.contract = null;
},
changeType(e) {
// console.log(this.contractTypeList[e.detail.value]);
this.createContract({
party_b: this.id,
contract_type: this.contractTypeList[e.detail.value].id,
type: 1 //1-,2-
})
},
//
naviToContract(file) {
uni.navigateTo({
url: `/subpkg/pdfView/pdfView?url=${file}`
})
},
//
async initContractTypeList() {
let res = await dictDataLists({
type_id: 7
})
res.data = res.data.filter(item=>{
return companyContractType.find(t=>item.id==t);
})
this.contractTypeList = res.data;
},
//
async createContract(data) {
uni.showModal({
content: '请检查信息无误后再生成合同',
confirmText: '确认无误',
cancelText: '我再看看',
confirmColor: '#3175f9',
success: async (e) => {
if (e.confirm) {
uni.showLoading({
title:'合同生成中',
mask: true
})
let res = await initiateContract({
party_b: data.party_b,
contract_type: data.contract_type,
type: data.type
})
this.initCompany();
uni.hideLoading();
Toast(res.msg || '合同已生成');
this.navTo('/subpkg/submit/submit?type=' + 1);
}
}
})
},
//
async addContract(data) {
uni.showModal({
content: '请检查合同无误后再发送',
confirmText: '确认无误',
cancelText: '我再看看',
confirmColor: '#3175f9',
success: async (e) => {
if (e.confirm) {
try{
uni.showLoading({
title:'合同发送中',
mask: true
})
let res = await Draftingcontracts({
id: this.id
});
this.initCompany();
this.startTimer();
uni.hideLoading();
Toast('合同已发送');
// this.navTo('/subpkg/submit/submit');
}catch(e){
uni.hideLoading();
Toast(e.msg||'合同发送失败');
}
}
}
})
},
//
async getPostsms() {
try {
uni.showLoading({
title: '发送中',
mask: true
})
if (this.timerCount == 0) {
this.startTimer();
let res = await postsms({
id: this.id
})
Toast('短信已发送');
// this.navTo('/subpkg/submit/submit');
}
} catch (e) {
uni.hideLoading();
Toast(e.msg || '合同发送失败');
}
},
//
startTimer(time=60){
this.timerCount = time.toFixed(0);
this.timer = setInterval(() => {
this.timerCount--;
if (this.timerCount <= 0) {
clearInterval(this.timer);
this.loadUserDetail();
}
}, 1000);
},
navTo(url) {
url ?
uni.navigateTo({
url: url
}) : Toast('暂未开放')
},
},
onPullDownRefresh() {
uni.stopPullDownRefresh()
}
}
import {
companyView,
initiateContract,
Draftingcontracts,
postsms
} from "@/api/company.js"
import {
dictDataLists
} from "@/api/oaPbulic.js"
import {
Toast
} from "../../libs/uniApi";
import {
companyContractType
} from "@/static/server/contract.js";
export default {
data() {
return {
id: '',
company: {},
skeleton: true,
show: false,
typeShow: false,
timer: null, //
timerCount: 0, //
contractTypeList: []
}
},
onLoad(options) {
this.id = options.id;
this.initCompany();
this.initContractTypeList();
let time = uni.getStorageSync('ctime' + this.id);
if (time > 0 && (time - Date.now()) / 1000 > 0) {
this.startTimer((time - Date.now()) / 1000);
}
},
onUnload() {
if (this.timerCount > 0) uni.setStorageSync('ctime' + this.id, this.timerCount * 1000 + Date.now());
},
computed: {
cTimerCount() {
return this.timerCount;
}
},
methods: {
async initCompany() {
let res = await companyView({
id: this.id,
})
this.company = res.data;
if (this.company.contract == [] || this.company.contract == {} || this.company.contract.length == 0)
this
.company.contract = null;
},
changeType(e) {
// console.log(this.contractTypeList[e.detail.value]);
this.createContract({
party_b: this.id,
contract_type: this.contractTypeList[e.detail.value].id,
type: 1 //1-,2-
})
},
//
naviToContract(file) {
uni.navigateTo({
url: `/subpkg/pdfView/pdfView?url=${file}`
})
},
//
async initContractTypeList() {
let res = await dictDataLists({
type_id: 7
})
res.data = res.data.filter(item => {
return companyContractType.find(t => item.id == t);
})
this.contractTypeList = res.data;
},
//
async createContract(data) {
uni.showModal({
content: '请检查信息无误后再生成合同',
confirmText: '确认无误',
cancelText: '我再看看',
confirmColor: '#3175f9',
success: async (e) => {
if (e.confirm) {
uni.showLoading({
title: '合同生成中',
mask: true
})
let res = await initiateContract({
party_b: data.party_b,
contract_type: data.contract_type,
type: data.type
})
this.initCompany();
uni.hideLoading();
Toast(res.msg || '合同已生成');
this.navTo('/subpkg/submit/submit?type=' + 1);
}
}
})
},
//
async addContract(data) {
uni.showModal({
content: '请检查合同无误后再发送',
confirmText: '确认无误',
cancelText: '我再看看',
confirmColor: '#3175f9',
success: async (e) => {
if (e.confirm) {
try {
uni.showLoading({
title: '合同发送中',
mask: true
})
let res = await Draftingcontracts({
id: this.id
});
this.initCompany();
this.startTimer();
uni.hideLoading();
Toast('合同已发送');
// this.navTo('/subpkg/submit/submit');
} catch (e) {
uni.hideLoading();
Toast(e.msg || '合同发送失败');
}
}
}
})
},
//
async getPostsms() {
try {
uni.showLoading({
title: '发送中',
mask: true
})
if (this.timerCount == 0) {
this.startTimer();
let res = await postsms({
id: this.id
})
Toast('短信已发送');
// this.navTo('/subpkg/submit/submit');
}
} catch (e) {
uni.hideLoading();
Toast(e.msg || '合同发送失败');
}
},
//
startTimer(time = 60) {
this.timerCount = time.toFixed(0);
this.timer = setInterval(() => {
this.timerCount--;
if (this.timerCount <= 0) {
clearInterval(this.timer);
this.loadUserDetail();
}
}, 1000);
},
navTo(url) {
url ?
uni.navigateTo({
url: url
}) : Toast('暂未开放')
},
},
onPullDownRefresh() {
uni.stopPullDownRefresh()
}
}
</script>
<style lang="scss">
.need_contract {
padding-bottom: 30rpx;
.title{
font-size: 35rpx;
font-weight: 500;
color: #333333;
margin-bottom: 21rpx;
margin-left: 28rpx;
}
.need_contract {
padding-bottom: 30rpx;
.card {
padding-top: 0;
margin: 28rpx;
padding: 28rpx;
background-color: #fff;
border-radius: 14rpx;
.title {
font-size: 35rpx;
font-weight: 500;
color: #333333;
margin-bottom: 21rpx;
margin-left: 28rpx;
}
.contract_box {
display: flex;
justify-content: space-between;
.card {
padding-top: 0;
margin: 28rpx;
padding: 28rpx;
background-color: #fff;
border-radius: 14rpx;
.left {
display: flex;
.contract_box {
display: flex;
justify-content: space-between;
.contract_img {
width: 102rpx;
height: 102rpx;
background: #F5F5F5;
border-radius: 14rpx 14rpx 14rpx 14rpx;
margin-right: 21rpx;
}
.left {
display: flex;
.text {
display: flex;
flex-direction: column;
justify-content: space-between;
.contract_img {
width: 102rpx;
height: 102rpx;
background: #F5F5F5;
border-radius: 14rpx 14rpx 14rpx 14rpx;
margin-right: 21rpx;
}
.name {
font-size: 32rpx;
;
font-weight: 500;
color: rgba(0, 0, 0, 0.8);
line-height: 35rpx;
}
.text {
display: flex;
flex-direction: column;
justify-content: space-between;
.nickname {
margin-right: 35rpx;
}
.name {
font-size: 32rpx;
;
font-weight: 500;
color: rgba(0, 0, 0, 0.8);
line-height: 35rpx;
}
text {
height: 39rpx;
font-size: 28rpx;
font-weight: 400;
color: #666666;
line-height: 35rpx;
}
}
}
.nickname {
margin-right: 35rpx;
}
.right {
font-size: 28rpx;
font-weight: 500;
color: #3274F9;
line-height: 35rpx;
display: flex;
justify-content: center;
align-items: center;
text {
height: 39rpx;
font-size: 28rpx;
font-weight: 400;
color: #666666;
line-height: 35rpx;
}
}
}
.icon {
width: 35rpx;
height: 39rpx;
background-color: #3274F9;
opacity: 1;
margin-right: 10rpx
}
}
.right {
font-size: 28rpx;
font-weight: 500;
color: #3274F9;
line-height: 35rpx;
display: flex;
justify-content: center;
align-items: center;
}
.icon {
width: 35rpx;
height: 39rpx;
background-color: #3274F9;
opacity: 1;
margin-right: 10rpx
}
}
.send {
padding-top: 28rpx;
}
}
.send_btn {
width: 100%;
height: 84rpx;
background: $theme-oa-color;
border-radius: 42rpx 42rpx 42rpx 42rpx;
color: #fff;
line-height: 80rpx;
text-align: center;
}
.send {
padding-top: 28rpx;
}
.tips_center {
background-color: #666;
color: #eee;
}
}
.send_btn {
width: 100%;
height: 84rpx;
background: $theme-oa-color;
border-radius: 42rpx 42rpx 42rpx 42rpx;
color: #fff;
line-height: 80rpx;
text-align: center;
}
.btn {
margin: 0 auto;
margin-top: 32rpx;
// margin-bottom: 40rpx;
width: 694rpx;
height: 84rpx;
background: $theme-oa-color;
border-radius: 42rpx 42rpx 42rpx 42rpx;
color: #fff;
line-height: 80rpx;
text-align: center;
}
.tips_center {
background-color: #666;
color: #eee;
}
}
.tips_center {
background-color: #666;
color: #eee;
}
}
.btn {
margin: 0 auto;
margin-top: 32rpx;
// margin-bottom: 40rpx;
width: 694rpx;
height: 84rpx;
background: $theme-oa-color;
border-radius: 42rpx 42rpx 42rpx 42rpx;
color: #fff;
line-height: 80rpx;
text-align: center;
}
.tips_center {
background-color: #666;
color: #eee;
}
}
</style>

View File

@ -182,7 +182,7 @@
border-radius: 30rpx;
opacity: 1;
overflow: hidden;
box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6);
// box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6);
.cards_head {
padding: 28rpx;

View File

@ -10,7 +10,8 @@
</view>
</view> -->
<view class="contract_list">
<view class="item" v-for="(item,index) in list" :key="item.id" @click="navTo('/subpkg/contractDetail/contractDetail?id='+item.id)">
<view class="item" v-for="(item,index) in list" :key="item.id"
@click="navTo('/subpkg/contractDetail/contractDetail?id='+item.id)">
<view class="personnel_list">
<view class="cards">
<view class="cards_head">
@ -25,7 +26,8 @@
<view class="">
<text>乙方 :</text>
<text v-if="item.party_b_info">{{item.party_b_info.company_name}}</text>
<text v-else-if="item.party_b==$store.state.app.userInfo.id">{{$store.state.app.userInfo.nickname}}</text>
<text
v-else-if="item.party_b==$store.state.app.userInfo.id">{{$store.state.app.userInfo.nickname}}</text>
</view>
<view class="">
<text>合同类型 :</text>
@ -125,7 +127,7 @@
contractList
} from "@/api/contract.js"
import {
download_file
download_file
} from "@/api/junziqian.js"
export default {
data() {
@ -153,17 +155,17 @@
url: url
}) : Toast('暂未开放')
},
navToContract (contract_no) {
download_file({
applyNo: contract_no
}).then(res => {
if (res.code != 1) {
Toast(res.msg)
}
uni.navigateTo({
url: `/subpkg/pdfView/pdfView?url=${res.data.url}`
})
})
navToContract(contract_no) {
download_file({
applyNo: contract_no
}).then(res => {
if (res.code != 1) {
Toast(res.msg)
}
uni.navigateTo({
url: `/subpkg/pdfView/pdfView?url=${res.data.url}`
})
})
},
initLoadConfig() {
this.loadConfig.page = 1;
@ -250,7 +252,7 @@
border-radius: 30rpx;
opacity: 1;
overflow: hidden;
box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6);
// box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6);
.cards_head {
padding: 28rpx;

View File

@ -202,10 +202,10 @@
// console.log(this.userInfo);
if (this.user_id == 0) {
// this.userInfo = this.$store.state.app.userInfo;
userInfo().then((res)=>{
this.$store.commit('setUserInfo', res.data);
this.userInfo = res.data;
})
userInfo().then((res) => {
this.$store.commit('setUserInfo', res.data);
this.userInfo = res.data;
})
} else {
this.OtherUserInfo()
}
@ -291,7 +291,7 @@
display: flex;
justify-content: space-between;
align-items: center;
flex: 1;
flex: 1;
color: #fff;
padding: 10rpx 28rpx;
@ -299,7 +299,7 @@
// background-color: red;
display: flex;
justify-content: space-between;
vertical-align: bottom;
width: 24vw;
line-height: 44px;
}
@ -311,7 +311,7 @@
font-size: 28rpx;
font-weight: 500;
color: #FFFFFF;
.name {
margin: 0 17.5rpx;

View File

@ -58,7 +58,7 @@
<view class="personnel_list">
<view class="card" v-for="(item, index) in userList" :key="item.id">
<view class="card_head">
<text style="font-size: 32rpx;">创建时间: {{creTime(item.create_time)}}
<text>创建时间: {{creTime(item.create_time)}}
</text>
<text @click="navTo('/subpkg/finance/finance?id='+item.id)">财务查看</text>
<text @click="navTo('/subpkg/personnelDetails/personnelDetails?id='+item.id)">信息查看</text>
@ -223,7 +223,7 @@
border-radius: 30rpx;
opacity: 1;
overflow: hidden;
box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6);
// box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6);
.card_head {
padding: 28rpx;

File diff suppressed because it is too large Load Diff

192
test.vue
View File

@ -1,119 +1,111 @@
<template>
<view class="personnel_list">
<view class="cards">
<view class="cards_head">
<text style="font-size: 32rpx">最后更新:2020-25-2</text>
<text>更新档案</text>
<text>查看档案</text>
</view>
<view class="cards_content">
<view class="right">
<view class="">
<text>人员姓名 :</text>
<text> { item.name }</text>
</view>
<view class="">
<text>联系电话 :</text>
<text>{ item.phone }</text>
</view>
<view class="">
<text>所属片区 :</text>
<text> 所属片区 </text>
</view>
</view>
<view class="personnel_list">
<view class="cards">
<view class="cards_head">
<text style="font-size: 32rpx">最后更新:2020-25-2</text>
<text>更新档案</text>
<text>查看档案</text>
</view>
<view class="cards_content">
<view class="right">
<view class="">
<text>人员姓名 :</text>
<text> { item.name }</text>
</view>
<view class="">
<text>联系电话 :</text>
<text>{ item.phone }</text>
</view>
<view class="">
<text>所属片区 :</text>
<text> 所属片区 </text>
</view>
</view>
<view class="left">
<view class="cir">
<u--image
class="u_avatar"
:showLoading="true"
:src="'../../static/img/public/man.png'"
width="112.28rpx"
height="112.28rpx"
shape="circle"
></u--image>
</view>
</view>
</view>
</view>
</view>
<view class="left">
<view class="cir">
<u--image class="u_avatar" :showLoading="true" :src="'../../static/img/public/man.png'"
width="112.28rpx" height="112.28rpx" shape="circle"></u--image>
</view>
</view>
</view>
</view>
</view>
</template>
<style lang="scss">
.personnel_list {
padding: 28rpx 0;
margin-bottom: 130rpx;
.personnel_list {
padding: 28rpx 0;
margin-bottom: 130rpx;
.cards {
margin: 0 auto;
margin-bottom: 28rpx;
width: 694rpx;
background: #ffffff;
border-radius: 30rpx;
opacity: 1;
overflow: hidden;
// box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6);
.cards {
margin: 0 auto;
margin-bottom: 28rpx;
width: 694rpx;
background: #ffffff;
border-radius: 30rpx;
opacity: 1;
overflow: hidden;
box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6);
.cards_head {
padding: 28rpx;
background-color: $theme-oa-color;
color: white;
height: 100rpx;
display: flex;
justify-content: space-between;
}
.cards_head {
padding: 28rpx;
background-color: $theme-oa-color;
color: white;
height: 100rpx;
display: flex;
justify-content: space-between;
}
.cards_content {
padding: 28rpx;
display: flex;
justify-content: space-between;
.cards_content {
padding: 28rpx;
display: flex;
justify-content: space-between;
.left {
text-align: center;
// padding: 15rpx 25rpx;
padding-top: 20rpx;
.left {
text-align: center;
// padding: 15rpx 25rpx;
padding-top: 20rpx;
width: 160rpx;
background-color: $theme-oa-color;
color: white;
border-radius: 40rpx;
width: 160rpx;
background-color: $theme-oa-color;
color: white;
border-radius: 40rpx;
.cir {
width: 120rpx;
height: 120rpx;
background-color: #ffffff;
margin-left: 25rpx;
border-radius: 120rpx;
position: relative;
}
}
.cir {
width: 120rpx;
height: 120rpx;
background-color: #ffffff;
margin-left: 25rpx;
border-radius: 120rpx;
position: relative;
}
}
.right {
display: flex;
flex-direction: column;
justify-content: space-between;
.right {
display: flex;
flex-direction: column;
justify-content: space-between;
view {
text:nth-child(2) {
margin-left: 20rpx;
}
}
}
}
view {
text:nth-child(2) {
margin-left: 20rpx;
}
}
}
}
.u_avatar {
position: absolute;
top: 50%;
left: 50%;
.u_avatar {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
}
}
}
</style>
transform: translate(-50%, -50%);
}
}
}
</style>