页面样式修改

This commit is contained in:
THK3121 2023-08-19 16:39:16 +08:00
parent 3684c3a7ce
commit 281b61a609
11 changed files with 3367 additions and 3059 deletions

66
App.vue
View File

@ -1,10 +1,30 @@
<script>
//#ifdef APP-PLUS
const jpushModule = uni.requireNativePlugin("JG-JPush");
// #endif
export default {
onLaunch: async function () {
//#ifdef APP-PLUS
const jpushModule = uni.requireNativePlugin("JG-JPush");
// #endif
export default {
onLaunch: async function() {
const audioContext = uni.createInnerAudioContext()
//
audioContext.src = './static/mp3/order.mp3'
let noticeArr = []
//
//#ifdef APP-PLUS
jpushModule.addNotificationListener(res => {
if (!noticeArr.includes(res.messageID)) {
console.log(res.messageID)
audioContext.play()
noticeArr.push(res.messageID)
uni.vibrateLong({
success: function() {
console.log('success');
}
});
}
})
// #endif
console.log('App Launch')
try {
if (!this.$store.state.app.token) uni.redirectTo({
@ -27,34 +47,34 @@ export default {
// ida.push(result.messageID)
// })
},
onShow: function () {
onShow: function() {
console.log('App Show')
//
const audioContext = uni.createInnerAudioContext()
// const audioContext = uni.createInnerAudioContext()
//
audioContext.src = './static/mp3/order.mp3'
// //
// audioContext.src = './static/mp3/order.mp3'
//
//#ifdef APP-PLUS
jpushModule.addNotificationListener(res => {
console.log("监听成功")
audioContext.play()
})
// #endif
// //
// //#ifdef APP-PLUS
// jpushModule.addNotificationListener(res => {
// console.log("")
// audioContext.play()
// })
// // #endif
},
onHide: function () {
onHide: function() {
console.log('App Hide')
}
}
}
</script>
<style>
/*每个页面公共css */
@import "static/css/base.css";
@import "static/css/style.scss";
/*每个页面公共css */
@import "static/css/base.css";
@import "static/css/style.scss";
view {
view {
box-sizing: border-box;
}
}
</style>

View File

@ -1,14 +1,8 @@
<template>
<view>
<view class="item">
<u-skeleton
:loading="skeleton"
:animate="true"
title
rows="1"
rows-width="100%"
rowsHeight="56"
></u-skeleton>
<u-skeleton :loading="skeleton" :animate="true" title rows="1" rows-width="100%"
rowsHeight="56"></u-skeleton>
<!-- <block v-if="!skeleton">
<view class="title">公司基本信息</view>
<view class="card">
@ -75,7 +69,7 @@
</view>
<view class="" @click="copyPhone(company.master_email, '社会代码')">
<text>担任职务 :</text>
<text>{{company.organization_code}}</text>
<text>{{company.master_position}}</text>
</view>
<view class="" @click="copyPhone(company.master_email, '电话')">
<text>联系电话 :</text>
@ -321,22 +315,22 @@
</template>
<script>
import {
import {
contractView
} from "@/api/contract.js"
import {
} from "@/api/contract.js"
import {
companyView
} from "@/api/company.js"
import {
} from "@/api/company.js"
import {
download_file
} from "@/api/junziqian.js"
import {
} from "@/api/junziqian.js"
import {
Toast
} from '@/libs/uniApi.js'
} from '@/libs/uniApi.js'
export default {
export default {
name: "company",
data () {
data() {
return {
skeleton: true,
company: {
@ -353,11 +347,11 @@ export default {
}
},
props: ['id', 'type'],
mounted () {
mounted() {
this.initContract(this.$props.id, this.$props.type || null);
},
computed: {
c_address () {
c_address() {
let str = '';
if (this.company.company_type == 16) {
this.company?.province_name ? str += this.company?.province_name : null;
@ -374,7 +368,7 @@ export default {
}
},
methods: {
navTo (contract_no) {
navTo(contract_no) {
download_file({
applyNo: contract_no
}).then(res => {
@ -386,10 +380,10 @@ export default {
})
})
},
naviBack () {
naviBack() {
uni.navigateBack()
},
async initContract (id, type = "contract") {
async initContract(id, type = "contract") {
let res;
//
if (id && (type == "contract" || type == null)) {
@ -414,22 +408,22 @@ export default {
// console.log(res.data);
},
//
priview (url) {
priview(url) {
uni.previewImage({
urls: [url],
longPressActions: {
itemList: ['保存图片'],
success: function (data) {
success: function(data) {
if (data.tapIndex === 0) {
uni.saveImageToPhotosAlbum({
filePath: url,
success: function () {
success: function() {
uni.showToast({
title: '保存成功',
icon: 'success'
})
},
fail: function () {
fail: function() {
uni.showToast({
title: '保存失败',
icon: 'none'
@ -441,7 +435,7 @@ export default {
}
})
},
copyPhone (str = "", type = "号码") {
copyPhone(str = "", type = "号码") {
if (str) uni.setClipboardData({
data: str + "",
success: (e) => {
@ -453,7 +447,7 @@ export default {
})
}
},
}
}
</script>
<style lang="scss" scoped>
@ -726,6 +720,7 @@ export default {
flex-direction: column;
align-items: center;
padding: 28rpx;
.left {
display: flex;
@ -802,9 +797,9 @@ export default {
}
}
}
}
}
.back_btn {
.back_btn {
width: 694rpx;
height: 84rpx;
background: $theme-oa-color;
@ -814,9 +809,9 @@ export default {
align-items: center;
color: #fff;
margin: 30rpx auto;
}
}
.stop_btn {
.stop_btn {
width: 694rpx;
height: 84rpx;
border-radius: 42rpx 42rpx 42rpx 42rpx;
@ -826,5 +821,5 @@ export default {
color: $theme-oa-color;
background-color: transparent;
margin: 30rpx auto;
}
}
</style>

View File

@ -15,7 +15,14 @@
<view class="f_nav">
<view class="title">账单流水</view>
<view class="right">
<!-- <u-tabs :list="[{
name: '日账单',
}, {
name: '月账单'
}]" @click="changeCurrent" lineColor='#0122C7' :scrollable="false" lineWidth='40' inactiveStyle='color:black'
activeStyle="color:#0122C7"></u-tabs> -->
<view class="btn" :class="current==0?'active':''" @click="current=0;initLoad()">今日账单</view>
<view class="btn" :class="current==0?'active':''" @click="current=0;initLoad()">月账单</view>
<!-- <view class="btn" :class="current==1?'active':''" @click="current=1;initLoad()">月账单</view> -->
<view class="btn" @click="navTo('/subpkg/companyFinance/companyFinance')">更多</view>
</view>
@ -40,33 +47,42 @@
<view class="tips">
<!-- {{current?item.remark:item.type_desc}} -->
<text v-if="item.change_type==202" style="color: #46be61;">{{item.type_desc}}</text>
<text v-else-if="item.change_type==203" style="color: #ff7c32;">{{item.type_desc}}</text>
<text v-else-if="item.change_type==203"
style="color: #ff7c32;">{{item.type_desc}}</text>
<text v-else="item.change_type==203">{{item.type_desc}}</text>
</view>
</view>
</view>
<view class="price">{{current?(item.expenditure==0?'+'+item.income:'-'+item.income):item.change_amount_desc}}</view>
<view class="price">
{{current?(item.expenditure==0?'+'+item.income:'-'+item.income):item.change_amount_desc}}
</view>
</view>
<u-loadmore :status="loadConfig.status" :loading-text="loadConfig.loadingText" :loadmore-text="loadConfig.loadmoreText" :nomore-text="loadConfig.nomoreText" />
</view>
<u-loadmore :status="loadConfig.status" :loading-text="loadConfig.loadingText"
:loadmore-text="loadConfig.loadmoreText" :nomore-text="loadConfig.nomoreText" />
</view>
</view>
</template>
<script>
import { accountMonthList, accountDateList } from "@/api/company.js"
import { Toast } from "../../libs/uniApi";
import {
accountMonthList,
accountDateList
} from "@/api/company.js"
import {
Toast
} from "../../libs/uniApi";
export default {
name: "companyFinance",
data() {
return {
current: 0,
list: [],
company:{
company: {
company_money: "0",
deposit: "0"
},
loadConfig:{
loadConfig: {
page: 1,
limit: 15,
lastpage: '',
@ -78,30 +94,30 @@
};
},
mounted() {
uni.$on('companyInfo', (e)=>{
uni.$on('companyInfo', (e) => {
this.company = e;
console.log(this.company);
this.initLoad();
})
},
methods:{
methods: {
navTo(url) {
url ?
uni.navigateTo({
url: url,
}) : Toast('暂未开放')
},
initLoad(){
initLoad() {
this.loadConfig.page = 1;
this.loadConfig.status = "loadmore";
this.list = [];
this.initList();
},
async initList(){
if(this.loadConfig.status=="nomore")return;
this.loadConfig.status="loading";
async initList() {
if (this.loadConfig.status == "nomore") return;
this.loadConfig.status = "loading";
let res;
if(this.current==0) res = await accountDateList({
if (this.current == 0) res = await accountDateList({
page: this.loadConfig.page,
limit: this.loadConfig.limit,
company_id: this.$store.state.app.userInfo.company_id
@ -111,19 +127,19 @@
limit: this.loadConfig.limit,
company_id: this.$store.state.app.userInfo.company_id
})
this.loadConfig.status="loadmore"
if(res.data.length<this.loadConfig.limit){
this.loadConfig.status="nomore"
}else {
this.loadConfig.status = "loadmore"
if (res.data.length < this.loadConfig.limit) {
this.loadConfig.status = "nomore"
} else {
this.loadConfig.page++;
}
this.list = [...this.list, ...res.data]
},
//
cCount(value=0){
try{
cCount(value = 0) {
try {
return value.toFixed(2);
}catch(e){
} catch (e) {
return "0.00";
}
}
@ -139,7 +155,7 @@
margin: 0 auto;
width: 694rpx;
height: 158rpx;
background: #3175F9;
background: $theme-oa-color;
border-radius: 18rpx 18rpx 18rpx 18rpx;
opacity: 1;
padding: 28rpx;
@ -244,20 +260,24 @@
font-weight: 400;
color: #999999;
line-height: 39rpx;
.t_item{
.t_item {
display: flex;
.t_title{
.t_title {
margin-bottom: 16rpx;
flex-shrink: 0 !important;
}
.tips{
.tips {
font-size: 28rpx;
font-weight: 400;
color: #333333;
}
}
}
.price{
.price {
display: flex;
align-items: center;
font-size: 32rpx;

View File

@ -238,7 +238,7 @@
"style": {
"navigationBarTitleText": "合同管理",
"enablePullDownRefresh": true,
"navigationBarBackgroundColor": "#0122C7",
"navigationBarBackgroundColor": "#0022C7",
"navigationBarTextStyle": "white"
}

View File

@ -2,10 +2,7 @@
<view class="oa_home" style="oaColor">
<!-- <image class="header_bg" src="../../static/img/home/head-bg.png"></image> -->
<view
class="home_header"
:class="!ApproveList.length > 0 ? 'home_header_no_data' : ''"
>
<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>
@ -13,13 +10,8 @@
<view class="my_info">
<view class="head_img">
<view class="img_box">
<u--image
:showLoading="true"
width="131.43rpx"
height="131.43rpx"
:src="myOaInfo.avatar || '../../static/img/public/avatar.png'"
shape="circle"
></u--image>
<u--image :showLoading="true" width="131.43rpx" height="131.43rpx"
:src="myOaInfo.avatar || '../../static/img/public/avatar.png'" shape="circle"></u--image>
</view>
<text class="nickname">工作证: {{ myOaInfo.nickname }}</text>
@ -61,26 +53,18 @@
</block>
</view> -->
<view
class="backlog"
:class="!ApproveList.length > 0 ? 'backlog_no_data' : ''"
>
<view class="backlog" :class="!ApproveList.length > 0 ? 'backlog_no_data' : ''">
<view class="head_title flex_a_c_j_sb">
<view class="title">公告列表</view>
<view class="flex_a_c" @click="navTo('/subpkg/noticeList/noticeList')"
>更多
<view class="flex_a_c" @click="navTo('/subpkg/noticeList/noticeList')">更多
<view class="iconfont icon-you">
<uni-icons type="forward"></uni-icons>
</view>
</view>
</view>
<block v-if="ApproveList.length > 0">
<view
class="backlog_item flex_a_c_j_sb"
v-for="(item, index) in ApproveList.slice(0, 2)"
:key="index"
@click="clickNotice(item.id)"
>
<view class="backlog_item flex_a_c_j_sb" v-for="(item, index) in ApproveList.slice(0, 2)"
:key="index" @click="clickNotice(item.id)">
<view class="text">
<text class="text_time">{{
item.create_time.substring(0, 10)
@ -88,24 +72,19 @@
{{ item.title }}
</view>
<i class="iconfont icon-you"
><uni-icons type="forward"></uni-icons
></i>
<i class="iconfont icon-you"><uni-icons type="forward"></uni-icons></i>
</view>
</block>
<view v-else class="backlog_no flex_a_c_j_sb">
<view class="text">暂无更多消息</view>
<i class="iconfont icon-you"
><uni-icons type="forward"></uni-icons
></i>
<i class="iconfont icon-you"><uni-icons type="forward"></uni-icons></i>
</view>
</view>
</view>
<view class="my_task">
<view class="task_title flex_a_c_j_sb">
<view class="title">工作管理</view>
<view class="flex_a_c"
>更多
<view class="flex_a_c">更多
<view class="iconfont icon-you">
<uni-icons type="forward"></uni-icons>
</view>
@ -116,12 +95,7 @@
<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="item.icon" width="77.19rpx" height="77.19rpx"></u--image>
<view class="title">{{ item.text }}</view>
</view>
</block>
@ -130,8 +104,7 @@
<view class="my_task">
<view class="task_title flex_a_c_j_sb">
<view class="title">配送信息</view>
<view class="flex_a_c" @click="goOrderList"
>更多
<view class="flex_a_c" @click="goOrderList">更多
<view class="iconfont icon-you">
<uni-icons type="forward"></uni-icons>
</view>
@ -143,19 +116,13 @@
</block> -->
<view v-if="orderList.length > 0">
<globalPopup ref="globalPopup"></globalPopup>
<logistiBriefCard
v-for="(item, index) in orderList"
:key="index"
:goodsInfo="item"
>
<logistiBriefCard v-for="(item, index) in orderList" :key="index" :goodsInfo="item">
</logistiBriefCard>
</view>
<view v-else class="no_task">
<view class="title">暂无配送信息</view>
<view class="tips" v-if="!$store.state.app.token"
>登录后查看配送信息详情</view
>
<view class="tips" v-if="!$store.state.app.token">登录后查看配送信息详情</view>
</view>
<!-- <view class="head_title flex_a_c_j_sb">
<view class="">我的任务</view>
@ -194,24 +161,32 @@
</template>
<script>
import logistiBriefCard from "@/components/logistiComptent/logistiCard/logistiBriefCard.vue";
import globalPopup from "@/components/GlobalPopup/GlobalPopup.vue";
import { getList } from "@/api/logistics.js";
import { Toast } from "@/libs/uniApi.js";
import { oaHomeData } from "@/static/server/server.js";
import { noticeList } from "@/api/notice.js";
// import tabbar from '../components/tabbar'
import {
import logistiBriefCard from "@/components/logistiComptent/logistiCard/logistiBriefCard.vue";
import globalPopup from "@/components/GlobalPopup/GlobalPopup.vue";
import {
getList
} from "@/api/logistics.js";
import {
Toast
} from "@/libs/uniApi.js";
import {
oaHomeData
} from "@/static/server/server.js";
import {
noticeList
} from "@/api/notice.js";
// import tabbar from '../components/tabbar'
import {
getIndexListAPI,
getTaskListAPI,
getMyTaskListAPI,
getApproveListAPI,
getUserIndexAPI,
} from "@/api/oaApi.js";
//#ifdef APP-PLUS
var jpushModule = uni.requireNativePlugin("JG-JPush");
// #endif
export default {
} from "@/api/oaApi.js";
//#ifdef APP-PLUS
var jpushModule = uni.requireNativePlugin("JG-JPush");
// #endif
export default {
components: {
// tabbar
logistiBriefCard,
@ -223,8 +198,7 @@ export default {
orderList: [],
oaHomeData: [],
src: "https://cdn.uviewui.com/uview/album/1.jpg",
assessData: [
{
assessData: [{
num: "0",
name: "任务",
},
@ -264,21 +238,21 @@ export default {
});
},
onLoad() {
//#ifdef APP-PLUS
const audioContext = uni.createInnerAudioContext();
audioContext.volume = 1;
audioContext.src = "../../static/mp3/order.mp3";
let that = this;
jpushModule.addNotificationListener(function (result) {
if (!that.notArr.includes(result.messageID)) {
that.$refs.globalPopup.showPopu();
that.getOrderList();
console.log("idnex的");
audioContext.play();
}
that.notArr.push(result.messageID);
});
// #endif
// //#ifdef APP-PLUS
// const audioContext = uni.createInnerAudioContext();
// audioContext.volume = 1;
// audioContext.src = "../../static/mp3/order.mp3";
// let that = this;
// jpushModule.addNotificationListener(function (result) {
// if (!that.notArr.includes(result.messageID)) {
// that.$refs.globalPopup.showPopu();
// that.getOrderList();
// console.log("idnex");
// audioContext.play();
// }
// that.notArr.push(result.messageID);
// });
// // #endif
},
onShow() {
// this.getUserIndex()
@ -320,9 +294,9 @@ export default {
});
},
initUserInfo() {
this.$store.state.app.userInfo
? (this.myOaInfo = this.$store.state.app.userInfo)
: (this.myOaInfo.avatar = "");
this.$store.state.app.userInfo ?
(this.myOaInfo = this.$store.state.app.userInfo) :
(this.myOaInfo.avatar = "");
},
initOaHomeDada() {
if (this.$store.state.app.userInfo.admin_id == 0) {
@ -357,7 +331,10 @@ export default {
this.ApproveList = res.data.lists;
},
async getIndexList() {
const { project, task } = await getIndexListAPI();
const {
project,
task
} = await getIndexListAPI();
console.log(task, "222");
this.assessData[0].num = project.count;
this.assessData[1].num = project.count_ok;
@ -383,15 +360,16 @@ export default {
},
navTo(url) {
url
? uni.navigateTo({
?
uni.navigateTo({
url: url,
fail() {
uni.switchTab({
url: url,
});
},
})
: Toast("暂未开放");
}) :
Toast("暂未开放");
},
navTwo(url, key) {
let role_id = this.$store.state.app?.userInfo?.admin?.role_id || null;
@ -440,21 +418,21 @@ export default {
// this.getIndexList()
uni.stopPullDownRefresh();
},
};
};
</script>
<style lang="scss">
.oa_home {
.oa_home {
padding-bottom: 120rpx;
}
}
.header_bg {
.header_bg {
position: absolute;
width: 100%;
// z-index: -1;
}
}
.home_header {
.home_header {
position: relative;
padding: 28rpx;
// height: 607.02rpx;
@ -475,15 +453,18 @@ export default {
display: flex;
justify-content: space-between;
padding-right: 50rpx;
color: white;
font-size: 34rpx;
padding-left: 150rpx;
box-sizing: border-box;
.img_box {
width: 131.43rpx;
height: 131.43rpx;
position: absolute;
border: 1px dashed #707070;
left: -10rpx;
top: -15rpx;
}
// font-we
@ -607,13 +588,13 @@ export default {
.backlog_no_data {
bottom: -70rpx;
}
}
}
.home_header_no_data {
.home_header_no_data {
margin-bottom: 93.33rpx;
}
}
.fast_track {
.fast_track {
width: 694rpx;
// height: 331rpx;
display: flex;
@ -637,9 +618,9 @@ export default {
margin-top: 14.04rpx;
}
}
}
}
.my_task {
.my_task {
width: 694.74rpx;
margin: 0 auto;
// margin-top: 31.58rpx;
@ -752,9 +733,9 @@ export default {
font-size: 24.56rpx;
}
}
}
}
.no_login {
.no_login {
position: fixed;
left: 0;
bottom: 0;
@ -792,5 +773,5 @@ export default {
align-items: center;
}
}
}
}
</style>

View File

@ -28,8 +28,9 @@
</view>
<view class="work">
电话:{{oaUserInfo.account}}<br />
公司:<text v-if="oaUserInfo.company">{{ oaUserInfo.company.company_name }}</text><br/>
公司类型:<text v-if="oaUserInfo.company">{{ oaUserInfo.company.company_type_name }}</text><br/>
公司:<text v-if="oaUserInfo.company">{{ oaUserInfo.company.company_name }}</text><br />
公司类型:<text
v-if="oaUserInfo.company">{{ oaUserInfo.company.company_type_name }}</text><br />
<!-- {{ oaUserInfo.did_name }}({{ oaUserInfo.label_name }}) -->
</view>
</view>
@ -39,32 +40,12 @@
<view class="">编辑</view>
</view> -->
</view>
<view class="assess">
<view class="ass_cent flex_a_c_j_sb">
<view class="cent_item" @click="navTo('/subpkg/finance/finance')">
<!-- <view class="num">{{ oaUserInfo.achievements_money }}</view> -->
<view class="num" v-if="!$store.state.app.token">*</view>
<view class="num" v-else-if="eyeType">{{oaUserInfo.user_money||'0.00'}}</view>
<view class="num" v-if="!eyeType">****</view>
<view class="name">账户余额()</view>
</view>
<!-- <view class="cent_item" @click="navTo('/subpkg/finance/finance')">
<view class="num">0.00</view>
<view class="name">冻结金额</view>
</view> -->
<view class="cent_item" @click="navTo('/subpkg/finance/finance')">
<!-- <view class="num">{{ oaUserInfo.company_money }}</view> -->
<view class="num" v-if="!$store.state.app.token">*</view>
<view class="num" v-else-if="eyeType">{{oaUserInfo.income||'0.00'}}</view>
<view class="num" v-if="!eyeType">****</view>
<view class="name">收益金额()</view>
</view>
</view>
</view>
</view>
</view>
<view class="other_guide">
<block v-for="(item,i) in myOaData" :key="i">
<view class="other_item flex_a_c_j_sb" @click="navTo(item.url)">
<view class="flex_a_c left">
<!-- <view class="iconfont2" :class="item.icon"></view> -->
@ -78,17 +59,28 @@
<view class="log_out" v-if="$store.state.app.token" @click="modelShow=true">退出登录</view>
<view class="log_out" v-else @click="login">登录账号</view>
<u-modal :show="modelShow" title="警告" content='确定要退出登录吗' closeOnClickOverlay showCancelButton @close="modelShow=false" @cancel="modelShow=false" @confirm="logout"></u-modal>
<u-modal :show="modelShow" title="警告" content='确定要退出登录吗' closeOnClickOverlay showCancelButton
@close="modelShow=false" @cancel="modelShow=false" @confirm="logout"></u-modal>
<!-- <tabbar></tabbar> -->
</view>
</template>
<script>
import { mapActions } from 'vuex'
import { getUserIndexAPI } from '@/api/oaApi.js'
import { userInfo } from '@/api/oaUser.js'
import { Toast } from '@/libs/uniApi.js'
import { myOaData } from '@/static/server/server.js'
import {
mapActions
} from 'vuex'
import {
getUserIndexAPI
} from '@/api/oaApi.js'
import {
userInfo
} from '@/api/oaUser.js'
import {
Toast
} from '@/libs/uniApi.js'
import {
myOaData
} from '@/static/server/server.js'
// import tabbar from '../components/tabbar'
export default {
components: {
@ -118,7 +110,14 @@
return this.$store.state.config.eyeType;
},
oaUserInfo() {
return this.$store.state.app.userInfo || { avatar: '', admin: { company: { company_name: '' } } };
return this.$store.state.app.userInfo || {
avatar: '',
admin: {
company: {
company_name: ''
}
}
};
}
},
methods: {
@ -135,7 +134,7 @@
// success: (e) => {
// if (e.confirm) {
uni.navigateTo({
url: '/pages/oaLogin/oaLogin?clear='+true,
url: '/pages/oaLogin/oaLogin?clear=' + true,
success() {
that.$store.commit('CLEAR');
}

View File

@ -41,8 +41,8 @@
</view>
<view style="margin-top: 40rpx;">
<u-icon style="display: inline-block;margin-left: 10rpx;" color="white"
name="edit-pen-fill"></u-icon> {{item.is_contract?"已签约":"未签约"}}
<u-icon style="display: inline-block;" color="white" name="edit-pen-fill"></u-icon>
{{item.is_contract?"已签约":"未签约"}}
</view>
</view>
<view class="right">
@ -216,9 +216,8 @@
.left {
text-align: center;
// padding: 15rpx 25rpx;
padding: 15rpx 25rpx;
padding-top: 20rpx;
margin-right: 50rpx;
width: 160rpx;
background-color: $theme-oa-color;
@ -229,7 +228,8 @@
width: 120rpx;
height: 120rpx;
background-color: #FFFFFF;
margin-left: 25rpx;
// margin-left: 25rpx;
padding: 0 25rpx;
border-radius: 120rpx;
position: relative;

View File

@ -11,6 +11,69 @@
</view> -->
<view class="contract_list">
<view class="item" v-for="(item,index) in list" :key="item.id">
<view class="personnel_list">
<view class="cards">
<view class="cards_head">
<text style="font-size: 32rpx">电子合同</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> {{item.company.contract_type_name}} </text>
</view>
<view class="">
<text>合同编号 :</text>
<text> {{item.contract_no}} </text>
</view>
</view>
</view>
<view class="hr">
</view>
<view class="contract_box">
<view class="left">
<image class="contract_img" src="../../static/img/contract/pdf.png"></image>
<view class="text">
<view class="name">{{item.company.contract_type_name}}</view>
<view>
<text>{{item.update_time}}</text>
</view>
</view>
</view>
<view class="right" @click="navTo('/subpkg/contractDetail/contractDetail?id='+item.id)">
<uni-icons type="paperclip" color="#0022C7"></uni-icons>
<view>查看</view>
</view>
</view>
</view>
</view>
<!--
<view class="top">
<image src="../../static/img/contract/pdf.png" style="height: 140rpx; width: 140rpx;"></image>
<view class="text">
@ -20,7 +83,7 @@
</view>
</view>
<view class="date">
<!-- <text class="time">2023-04-27 2024-04-28 </text> -->
<view class="number">
<view class="num_left">合同编号:</view>
<text>{{item.contract_no}}</text>
@ -41,8 +104,14 @@
<view class="left" v-if="item.status">已签订</view>
<view class="left yellow" v-else-if="item.check_status>=2">签订中</view>
<view class="left red" v-else>未签订</view>
<button class="right" @click="navTo('/subpkg/contractDetail/contractDetail?id='+item.id)">详情</button>
<button class="right"
@click="navTo('/subpkg/contractDetail/contractDetail?id='+item.id)">详情</button>
</view>
-->
</view>
</view>
<u-empty v-if="loadConfig.status=='nomore'&& list.length==0" text="暂无合同"
@ -53,7 +122,9 @@
</template>
<script>
import { contractList } from "@/api/contract.js"
import {
contractList
} from "@/api/contract.js"
export default {
data() {
return {
@ -159,33 +230,88 @@
}
}
.contract_list {
display: flex;
flex-direction: column;
justify-content: space-between;
align-items: center;
padding: 28rpx;
.personnel_list {
padding: 28rpx 0;
margin-bottom: 130rpx;
.item {
.cards {
margin: 0 auto;
margin-bottom: 28rpx;
width: 694rpx;
min-height: 263rpx;
background: #ffffff;
border-radius: 30rpx;
opacity: 1;
overflow: hidden;
box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.6);
.cards_head {
padding: 28rpx;
margin-bottom: 28rpx;
background: #FFFFFF;
border-radius: 14rpx 14rpx 14rpx 14rpx;
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;
.left {
text-align: center;
// padding: 15rpx 25rpx;
padding-top: 20rpx;
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;
}
}
.right {
display: flex;
flex-direction: column;
justify-content: space-between;
.top {
display: flex;
margin-bottom: 28rpx;
view {
margin-bottom: 10rpx;
image {
width: 87.6rpx;
height: 87.6rpx;
margin-right: 28rpx;
flex-shrink: 0;
text:nth-child(2) {
margin-left: 20rpx;
}
}
}
}
.hr {
border-top: 1px dashed #0022C7;
margin-bottom: 30rpx;
}
.contract_box {
padding: 0 28rpx 20rpx;
display: flex;
justify-content: space-between;
.left {
display: flex;
.contract_img {
width: 102rpx;
height: 102rpx;
background: #F5F5F5;
border-radius: 14rpx 14rpx 14rpx 14rpx;
margin-right: 21rpx;
}
.text {
@ -194,74 +320,156 @@
justify-content: space-between;
.name {
.title {
font-size: 32rpx;
font-weight: 400;
color: #333333;
margin-right: 17.5rpx;
}
;
font-weight: 500;
color: rgba(0, 0, 0, 0.8);
line-height: 35rpx;
}
.date {
font-size: 25rpx;
font-weight: 400;
color: #F9AA32;
line-height: 36rpx;
.number, .time{
display: flex;
justify-content: left;
flex-wrap: wrap;
.num_left{
margin-right: 18rpx;
}
.nickname {
margin-right: 35rpx;
}
.time {
color: #CCCCCCFF;
margin-right: 10rpx;
}
}
}
}
.bottom {
display: flex;
justify-content: space-between;
margin-top: 28rpx;
.left {
text {
height: 39rpx;
font-size: 28rpx;
font-weight: 400;
color: #34A853;
color: #666666;
line-height: 35rpx;
}
.yellow {
color: #F9AA32;
}
.red {
color: #F02828FF;
}
.right {
width: 158rpx;
// height: 53rpx;
// border-radius: 26rpx 26rpx 26rpx 26rpx;
// border: 2rpx solid #3274F9;
// display: flex;
// justify-content: center;
// align-items: center;
text-align: right;
background: #FFFFFF;
opacity: 1;
font-size: 28rpx;
font-weight: 400;
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
}
}
}
}
}
// .contract_list {
// display: flex;
// flex-direction: column;
// justify-content: space-between;
// align-items: center;
// padding: 28rpx;
// .item {
// width: 694rpx;
// min-height: 263rpx;
// padding: 28rpx;
// margin-bottom: 28rpx;
// background: #FFFFFF;
// border-radius: 14rpx 14rpx 14rpx 14rpx;
// display: flex;
// flex-direction: column;
// justify-content: space-between;
// .top {
// display: flex;
// margin-bottom: 28rpx;
// image {
// width: 87.6rpx;
// height: 87.6rpx;
// margin-right: 28rpx;
// flex-shrink: 0;
// }
// .text {
// display: flex;
// flex-direction: column;
// justify-content: space-between;
// .name {
// .title {
// font-size: 32rpx;
// font-weight: 400;
// color: #333333;
// margin-right: 17.5rpx;
// }
// }
// .date {
// font-size: 25rpx;
// font-weight: 400;
// color: #F9AA32;
// line-height: 36rpx;
// .number,
// .time {
// display: flex;
// justify-content: left;
// flex-wrap: wrap;
// .num_left {
// margin-right: 18rpx;
// }
// }
// .time {
// color: #CCCCCCFF;
// margin-right: 10rpx;
// }
// }
// }
// }
// .bottom {
// display: flex;
// justify-content: space-between;
// margin-top: 28rpx;
// .left {
// font-size: 28rpx;
// font-weight: 400;
// color: #34A853;
// }
// .yellow {
// color: #F9AA32;
// }
// .red {
// color: #F02828FF;
// }
// .right {
// width: 158rpx;
// // height: 53rpx;
// // border-radius: 26rpx 26rpx 26rpx 26rpx;
// // border: 2rpx solid #3274F9;
// // display: flex;
// // justify-content: center;
// // align-items: center;
// text-align: right;
// background: #FFFFFF;
// opacity: 1;
// font-size: 28rpx;
// font-weight: 400;
// color: #3274F9;
// }
// }
// }
// }
</style>

View File

@ -2,14 +2,19 @@
<view class="">
<view class="finance_head">
<view class="top">
<view class="left" @click="navTo()">
<view v-if="user_id==0">
<u--image :showLoading="true" :src="userInfo.avatar||'../../static/img/public/man.png'" width="44px" height="44px" shape="circle"></u--image>
<view @click="navTo()">
<view v-if="user_id==0" class="accont">
<u--image :showLoading="true" :src="userInfo.avatar||'../../static/img/public/man.png'"
width="44px" height="44px" shape="circle"></u--image>
<view class="name">{{userInfo.nickname}}</view>
<u-icon name="setting-fill" color="white" size="20"></u-icon>
</view>
<view v-else>
<u--image :showLoading="true" :src="userInfo.avatar||'../../static/img/public/man.png'" width="44px" height="44px" shape="circle"></u--image>
<view v-else class="accont">
<u--image :showLoading="true" :src="userInfo.avatar||'../../static/img/public/man.png'"
width="44px" height="44px" shape="circle"></u--image>
<view class="name">{{userInfo.nickname}}</view>
<u-icon name="setting-fill" color="white" size="20"></u-icon>
</view>
</view>
<!-- <view class="right" @click="navTo('/subpkg/topUp/topUp')">
@ -18,7 +23,8 @@
</view>
<view class="center">
<view class="title">
<text style="margin-right: 20rpx;">账户总金额()</text><uni-icons @click="updateEye()" :type="eyeType?'eye-filled':'eye-slash-filled'" color="#fff"></uni-icons>
<text style="margin-right: 20rpx;">账户总金额()</text><uni-icons @click="updateEye()"
:type="eyeType?'eye-filled':'eye-slash-filled'" color="#fff"></uni-icons>
</view>
<view class="price" v-show="eyeType">{{userInfo.user_money||0.00}}</view>
<view class="price" v-show="!eyeType">****</view>
@ -70,7 +76,7 @@
</view>
</view>
</view> -->
<view class="item" v-for="(item, index) in billList" :key="item.id">
<!-- <view class="item" v-for="(item, index) in billList" :key="item.id">
<view class="top">
账单日期: {{current?item.month:item.create_time}}
</view>
@ -87,18 +93,44 @@
<view class="t_item">
<view class="t_title">收益来源</view>
<view class="tips">
<!-- {{current?item.remark:item.type_desc}} -->
<text v-if="item.change_type==202" style="color: #46be61;">{{item.type_desc}}</text>
<text v-else-if="item.change_type==203" style="color: #ff7c32;">{{item.type_desc}}</text>
<text v-else-if="item.change_type==203"
style="color: #ff7c32;">{{item.type_desc}}</text>
<text v-else="item.change_type==203">{{item.type_desc}}</text>
</view>
</view>
</view>
<view class="price">{{current?(item.expenditure==0?'+'+item.income:'-'+item.income):item.change_amount_desc}}</view>
<view class="price">
{{current?(item.expenditure==0?'+'+item.income:'-'+item.income):item.change_amount_desc}}
</view>
</view>
<u-loadmore :status="loadConfig.status" :loading-text="loadConfig.loadingText" :loadmore-text="loadConfig.loadmoreText" :nomore-text="loadConfig.nomoreText" />
</view>
-->
<view class="card" v-for="(item, index) in billList" :key="index">
<view class="top">
<view class="blue">账单详情</view>
<view>账单日期{{current?item.month:item.create_time}}</view>
</view>
<view class="bottom">
<view class="left">
<view>收益金额()</view>
<view class="num">
{{current?(item.expenditure==0?item.income:'-'+item.income):item.change_amount_desc}}
</view>
</view>
<view class="right">
<view>支出金额:{{item.expenditure>0?item.expenditure:'0.00'}}</view>
<view>入账金额:{{item.income>0?item.income:'0.00'}}</view>
</view>
</view>
</view>
<u-loadmore :status="loadConfig.status" :loading-text="loadConfig.loadingText"
:loadmore-text="loadConfig.loadmoreText" :nomore-text="loadConfig.nomoreText" />
</view>
<!-- 月账单 -->
<view class="bill_list" v-show="current==1">
@ -127,21 +159,28 @@
</template>
<script>
import { accountLogLists, accountLogListsMonth } from "@/api/pay.js"
import { userInfo } from "@/api/oaUser.js"
import {
accountLogLists,
accountLogListsMonth
} from "@/api/pay.js"
import {
userInfo
} from "@/api/oaUser.js"
import { Toast } from '@/libs/uniApi.js'
export default {
import {
Toast
} from '@/libs/uniApi.js'
export default {
data() {
return {
user_id:0,
userInfo:{},
otherUserInfo:{},
billTypeList:['日账单','月账单'],
user_id: 0,
userInfo: {},
otherUserInfo: {},
billTypeList: ['日账单', '月账单'],
current: 0,
billList: [],
billListMonth: [],
loadConfig:{
loadConfig: {
page: 1,
limit: 25,
loadingText: '努力加载中',
@ -152,23 +191,23 @@ export default {
}
},
onLoad(e) {
if(e.id>0){
this.user_id=e.id
if (e.id > 0) {
this.user_id = e.id
}
this.loadBill()
},
onShow() {
// console.log(this.userInfo);
if(this.user_id==0){
if (this.user_id == 0) {
this.userInfo = this.$store.state.app.userInfo;
}else{
} else {
this.OtherUserInfo()
}
},
computed:{
eyeType(){
computed: {
eyeType() {
return this.$store.state.config.eyeType;
}
},
@ -183,41 +222,41 @@ export default {
url: url
}) : Toast('暂未开放')
},
async OtherUserInfo(){
async OtherUserInfo() {
let res = await userInfo({
id:this.user_id
id: this.user_id
});
this.userInfo=res.data
this.userInfo = res.data
},
updateEye(){
updateEye() {
this.$store.commit('SET_EYE_TYPE')
},
//
changeBillType(type){
changeBillType(type) {
this.current = type;
if(type==1)this.loadBillMonth();
if (type == 1) this.loadBillMonth();
},
async loadBill(){
if(this.loadConfig.status=="nomore")return;
this.loadConfig.status="loading"
async loadBill() {
if (this.loadConfig.status == "nomore") return;
this.loadConfig.status = "loading"
let res = await accountLogLists({
type: 'um', //
page_no: this.loadConfig.page,
page_size: this.loadConfig.limit,
user_id:this.user_id
user_id: this.user_id
});
this.loadConfig.status="loadmore"
if(res.data.lists.length<this.loadConfig.limit){
this.loadConfig.status="nomore"
}else {
this.loadConfig.status = "loadmore"
if (res.data.lists.length < this.loadConfig.limit) {
this.loadConfig.status = "nomore"
} else {
this.loadConfig.page++;
}
this.billList = [...this.billList, ...res.data.lists];
},
async loadBillMonth(){
async loadBillMonth() {
let res = await accountLogListsMonth();
let list = [];
for(let key in res.data){
for (let key in res.data) {
list.push(res.data[key])
}
this.billListMonth = list;
@ -230,10 +269,11 @@ export default {
</script>
<style lang="scss">
page{
page {
// background-color: #fff;
}
.finance_head{
}
.finance_head {
background-color: $theme-oa-color;
height: 400rpx;
position: relative;
@ -243,60 +283,80 @@ page{
background-size: 100% 35%;
background-repeat: no-repeat;
background-position: center bottom;
.top{
.top {
display: flex;
justify-content: space-between;
align-items: center;
color: #fff;
padding: 10rpx 28rpx;
.left{
.accont {
// background-color: red;
display: flex;
width: 32vw;
justify-content: space-between;
vertical-align: bottom;
line-height: 44px;
}
.left {
display: flex;
align-items: center;
flex: 1;
font-size: 28rpx;
font-weight: 500;
color: #FFFFFF;
.name{
.name {
margin: 0 17.5rpx;
}
image{
image {
width: 40rpx;
height: 40rpx;
}
}
.right{
.right {
font-size: 24.53rpx;
font-weight: 400;
color: #FFFFFF;
}
}
.center{
.center {
color: #fff;
display: flex;
flex-direction: column;
align-items: center;
.title{
.title {
font-size: 25rpx;
font-weight: 400;
line-height: 39rpx;
}
.price{
.price {
font-size: 60rpx;
font-weight: bold;
line-height: 39rpx;
margin-top: 28rpx;
margin-bottom: 14rpx;
}
.bubble{
.bubble {
padding: 20rpx 28rpx 10rpx 28rpx;
background-image: url('../../static/img/contract/bubble.png');
background-repeat: no-repeat;
background-size: 100% 100%;
.text{
.text {}
}
}
}
.bottom{
.bottom {
position: absolute;
bottom: -78rpx;
left: 50%;
@ -304,18 +364,20 @@ page{
width: 694rpx;
height: 140rpx;
background: #FFFFFF;
box-shadow: 0rpx 0rpx 18rpx 2rpx rgba(50,116,249,0.1);
box-shadow: 0rpx 0rpx 18rpx 2rpx rgba(50, 116, 249, 0.1);
border-radius: 14rpx 14rpx 14rpx 14rpx;
display: flex;
justify-content: space-around;
align-items: center;
.item{
.item {
text-align: center;
font-size: 25rpx;
font-weight: 400;
color: #666666;
line-height: 39rpx;
.num{
.num {
font-size: 39rpx;
font-weight: 500;
color: #F02828;
@ -323,62 +385,73 @@ page{
}
}
}
}
.bill{
}
.bill {
// padding: 28rpx;
// padding-top: 90rpx;
padding-bottom: 32rpx;
background-color: #f5f5f5;
.type_box{
.type_box {
background-color: #fff;
padding: 32rpx 0;
.type{
.type {
height: 53rpx;
width: 333rpx;
display: flex;
align-items: center;
overflow: hidden;
margin: 0 auto;
view{
view {
flex: 1;
color: $theme-oa-color;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
border: 1px solid $theme-oa-color;
&:nth-child(1){
border: 1px solid #3274F9;
&:nth-child(1) {
border-radius: 30rpx 0 0 30rpx;
}
&:nth-child(2){
&:nth-child(2) {
border-radius: 0 30rpx 30rpx 0;
}
}
.active{
background-color: $theme-oa-color;
.active {
background-color: #3274F9;
color: #fff;
}
}
}
.bill_list{
.bill_list {
// background-color: #f5f5f5;
padding-bottom: 100rpx;
padding-top: 28rpx;
.card{
.card {
padding: 28rpx;
background-color: #fff;
margin-bottom: 21rpx;
.top{
.top {
display: flex;
align-items: center;
font-size: 25rpx;
font-weight: 400;
color: #333333FF;
line-height: 39rpx;
.blue{
.blue {
width: 137rpx;
height: 49rpx;
background: $theme-oa-color;
background: #3274F9;
border-radius: 26rpx 26rpx 26rpx 26rpx;
font-size: 25rpx;
font-weight: 400;
@ -390,26 +463,30 @@ page{
margin-right: 28rpx;
}
}
.bottom{
.bottom {
display: flex;
justify-content: space-between;
align-items: center;
height: 160rpx;
.left{
.left {
flex: 1;
text-align: center;
font-size: 25rpx;
font-weight: 400;
color: #666666;
line-height: 39rpx;
.num{
.num {
font-size: 39rpx;
font-weight: 500;
color: #F02828;
line-height: 39rpx;
}
}
.right{
.right {
flex: 1;
font-size: 25rpx;
font-weight: 400;
@ -418,6 +495,7 @@ page{
}
}
}
.item {
margin: 0 auto;
margin-bottom: 28rpx;
@ -458,20 +536,24 @@ page{
font-weight: 400;
color: #999999;
line-height: 39rpx;
.t_item{
.t_item {
display: flex;
.t_title{
.t_title {
margin-bottom: 16rpx;
flex-shrink: 0 !important;
}
.tips{
.tips {
font-size: 28rpx;
font-weight: 400;
color: #333333;
}
}
}
.price{
.price {
display: flex;
align-items: center;
font-size: 32rpx;
@ -482,7 +564,7 @@ page{
}
}
.btn{
.btn {
color: #fff;
border-radius: 100px;
text-align: center;
@ -498,5 +580,5 @@ page{
left: 50%;
transform: translate(-50%, -50%);
}
}
}
</style>

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">创建时间: 2020-25-2</text>
<text style="font-size: 32rpx">创建时间: {{item.create_time||"2020-10-10"}}</text>
<text @click="navTo('/subpkg/finance/finance?id='+item.id)">财务查看</text>
<text @click="navTo('/subpkg/personnelDetails/personnelDetails?id='+item.id)">信息查看</text>
</view>
@ -71,8 +71,8 @@
</view>
<view style="margin-top: 40rpx;" @click="changeSign(item)">
<u-icon style="display: inline-block;margin-left: 10rpx;" color="white"
name="edit-pen-fill"></u-icon> {{item.is_contract?'已签约':'未签约'}}
<u-icon style="display: inline-block;" color="white" name="edit-pen-fill"></u-icon>
{{item.is_contract?'已签约':'未签约'}}
</view>
</view>
<view class="right">
@ -234,7 +234,7 @@
.left {
text-align: center;
// padding: 15rpx 25rpx;
padding: 15rpx 25rpx;
padding-top: 20rpx;
margin-right: 50rpx;
@ -247,7 +247,8 @@
width: 120rpx;
height: 120rpx;
background-color: #FFFFFF;
margin-left: 25rpx;
// margin-left: 25rpx;
padding: 0 25rpx;
border-radius: 120rpx;
position: relative;

View File

@ -11,7 +11,8 @@
<view class="text">
<view class="basic_name">
<view class="name">{{userInfo.name}}</view>
<image class="icon" :src="userInfo.sex==1?'../../static/icons/man.png':'../../static/icons/woman.png'">
<image class="icon"
:src="userInfo.sex==1?'../../static/icons/man.png':'../../static/icons/woman.png'">
</image>
<!-- <view class="role" v-if="userInfo.roles">{{userInfo.roles[0]}}</view> -->
</view>
@ -30,8 +31,8 @@
是否为小队长
<u-radio-group v-model="userInfo.is_captain" style="margin-left: 16rpx;" disabled>
<u-radio :customStyle="{marginRight: '16px'}"
v-for="(item, index) in [{value:1,label:'是'},{value:0,label:'否'}]" :key="index" :label="item.label"
:name="item.value">
v-for="(item, index) in [{value:1,label:'是'},{value:0,label:'否'}]" :key="index"
:label="item.label" :name="item.value">
</u-radio>
</u-radio-group>
<view class="update" @click="updateShow(userInfo.is_captain, 'is_captain')">
@ -48,8 +49,8 @@
是否为小队长
<u-radio-group v-model="updateForm.is_captain" style="margin: 16rpx;">
<u-radio :customStyle="{marginRight: '16px'}"
v-for="(item, index) in [{value:1,label:'是'},{value:0,label:'否'}]" :key="index" :label="item.label"
:name="item.value">
v-for="(item, index) in [{value:1,label:'是'},{value:0,label:'否'}]" :key="index"
:label="item.label" :name="item.value">
</u-radio>
</u-radio-group>
</view>
@ -155,7 +156,8 @@
</view>
</view>
</view>
<picker v-if="!userInfo.is_contract&&!userInfo.contract||(userInfo.contract&&userInfo.contract.check_status==0)"
<picker
v-if="!userInfo.is_contract&&!userInfo.contract||(userInfo.contract&&userInfo.contract.check_status==0)"
:range="contractTypeList" range-key="name" @change="changeType">
<button class="btn">生成合同</button>
</picker>