页面修改
@ -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;
|
||||
|
@ -1,10 +1,13 @@
|
||||
<template>
|
||||
<view class="card" @click="goDetil(goodsInfo.id)">
|
||||
<view class="card">
|
||||
<view class="tit">
|
||||
<view v-if="goodsInfo.status==0">取货点: {{goodsInfo.shop_name}}</view>
|
||||
<view v-else>收货人: {{ 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">店主姓名: {{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 {
|
||||
|
@ -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 {
|
||||
|
@ -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;
|
||||
|
@ -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 => {
|
||||
|
@ -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 {
|
||||
|
@ -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
|
||||
|
@ -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, //6是APP端
|
||||
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, //6是APP端
|
||||
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>
|
@ -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
After Width: | Height: | Size: 2.7 KiB |
BIN
static/img/company/合同 (2)@2x.png
Normal file
After Width: | Height: | Size: 780 B |
BIN
static/img/contract/FQHT.png
Normal file
After Width: | Height: | Size: 398 B |
BIN
static/img/home/DAGL.png
Normal file
After Width: | Height: | Size: 2.4 KiB |
BIN
static/img/home/DAGL2.png
Normal file
After Width: | Height: | Size: 5.8 KiB |
BIN
static/img/home/GRCW (2).png
Normal file
After Width: | Height: | Size: 1.5 KiB |
BIN
static/img/home/GRCW.png
Normal file
After Width: | Height: | Size: 3.1 KiB |
BIN
static/img/home/GSXX (2).png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
static/img/home/GSXX.png
Normal file
After Width: | Height: | Size: 3.0 KiB |
BIN
static/img/home/HTGL (2).png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
static/img/home/HTGL.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
static/img/home/RWGL (2).png
Normal file
After Width: | Height: | Size: 4.4 KiB |
BIN
static/img/home/RWGL.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
static/img/home/RYGL (2).png
Normal file
After Width: | Height: | Size: 3.7 KiB |
BIN
static/img/home/RYGL.png
Normal file
After Width: | Height: | Size: 1.6 KiB |
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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>
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
}
|
||||
|
||||
|
@ -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;
|
||||
|
190
test.vue
@ -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%;
|
||||
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
}
|
||||
}
|
||||
.u_avatar {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
|
||||
transform: translate(-50%, -50%);
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|