295 lines
6.9 KiB
Vue
295 lines
6.9 KiB
Vue
<template>
|
||
<view class="deetailPage">
|
||
<headers :showBack="true">
|
||
<view class="headerName">
|
||
进度管理系统
|
||
</view>
|
||
</headers>
|
||
<view class="content">
|
||
<view class="title">
|
||
任务内容
|
||
</view>
|
||
<view class="type">
|
||
<view class="textColor">分部分项工程名称:<span class="textStyle">{{itemFrom.taskName}}</span></view>
|
||
</view>
|
||
<view class="type">
|
||
<view class="textColor">计划开始日期:<span class="textStyle">{{itemFrom.startDate}}</span></view>
|
||
</view>
|
||
<view class="type">
|
||
<view class="textColor">计划完成日期:<span class="textStyle">{{itemFrom.finishDate}}</span></view>
|
||
</view>
|
||
<view class="type">
|
||
<view class="textColor">实际开始日期:<span class="textStyle">{{itemFrom.actualStartDate}}</span></view>
|
||
</view>
|
||
<view class="type">
|
||
<view class="textColor">实际完成日期:<span class="textStyle">{{itemFrom.actualFinishDate}}</span></view>
|
||
</view>
|
||
<view class="type">
|
||
<view class="textColor">负责人:<span class="textStyle">{{itemFrom.dutyUserName}}</span></view>
|
||
</view>
|
||
<view class="type">
|
||
<view class="textColor">进度:<span class="textStyle">{{itemFrom.progressRatio}}%</span></view>
|
||
</view>
|
||
<view class="type">
|
||
<view class="textColor">执行状态:<span
|
||
class="textStyle">{{itemFrom.status==0?'未开始':itemFrom.status==1?'进行中':itemFrom.status==2?'已完成':'已逾期'}}</span>
|
||
</view>
|
||
</view>
|
||
<view class="type">
|
||
<view class="textColor">开始预警:<span class="textStyle"
|
||
:class="{'greenText': itemFrom.beginWarning === 1, 'blueText': itemFrom.beginWarning === 2, 'redText': itemFrom.beginWarning === 3}">{{itemFrom.beginWarning==1?'提前':itemFrom.beginWarning==2?'正常':'逾期'}}</span>
|
||
</view>
|
||
</view>
|
||
<view class="type">
|
||
<view class="textColor">结束预警:<span class="textStyle"
|
||
:class="{'greenText': itemFrom.endWarning === 1, 'blueText': itemFrom.endWarning === 2, 'redText': itemFrom.endWarning === 3}">{{itemFrom.endWarning==1?'提前':itemFrom.endWarning==2?'正常':'逾期'}}</span>
|
||
</view>
|
||
</view>
|
||
<view class="type">
|
||
<view class="textColor">备注:<span class="textStyle">{{itemFrom.remark}}</span></view>
|
||
</view>
|
||
<view class="line"></view>
|
||
<view class="title" style="margin-top: 40rpx;">
|
||
材料用量
|
||
</view>
|
||
<view class="container">
|
||
<view class="table-header">
|
||
<view class="header-cell">材料类型</view>
|
||
<view class="header-cell">计划用量</view>
|
||
<view class="header-cell">实际用量</view>
|
||
</view>
|
||
<view class="table-body">
|
||
<view class="table-row" v-for="(item, index) in tableData" :key="index">
|
||
<view class="table-cell" :title="item.name">{{ item.name? (item.name + '('+ item.unit +')') : "" }}</view>
|
||
<view class="table-cell">{{ item.planUsage || "" }}</view>
|
||
<view class="table-cell">{{ item.actualUsage || "" }}</view>
|
||
</view>
|
||
</view>
|
||
</view>
|
||
|
||
<view class="closeProgess" v-if="itemFrom.status==2">
|
||
任务已闭合
|
||
</view>
|
||
<view class="addProgess" @click="addProgessBtn"
|
||
v-if="itemFrom.dutyUserId === userInfo.userId && itemFrom.status!==2">
|
||
上报进度
|
||
</view>
|
||
</view>
|
||
</view>
|
||
</template>
|
||
|
||
<script>
|
||
export default {
|
||
data() {
|
||
return {
|
||
itemFrom: {},
|
||
userInfo: {},
|
||
tableData: [],
|
||
projectSn: '',
|
||
}
|
||
},
|
||
onLoad(option) {
|
||
this.itemFrom = JSON.parse(option.itemFrom);
|
||
console.log("进入详情",this.itemFrom)
|
||
if (this.itemFrom.status === 0) {
|
||
this.startTask();
|
||
}
|
||
this.userInfo = JSON.parse(uni.getStorageSync('userInfo'));
|
||
this.projectSn = JSON.parse(uni.getStorageSync('projectDetail')).projectSn;
|
||
},
|
||
// onUnload(option) {
|
||
// this.itemFrom = JSON.parse(option.itemFrom);
|
||
// this.userInfo = JSON.parse(uni.getStorageSync('userInfo'));
|
||
// this.projectSn = JSON.parse(uni.getStorageSync('projectDetail')).projectSn;
|
||
// // 进行数据刷新操作,比如重新请求接口获取最新数据
|
||
// this.getMarList();
|
||
// },
|
||
onShow() {
|
||
console.log("返回上传")
|
||
this.getMarList()
|
||
this.getListDetail()
|
||
},
|
||
methods: {
|
||
//点击上报
|
||
addProgessBtn() {
|
||
uni.navigateTo({
|
||
url: './addFrom?id=' + this.itemFrom.id
|
||
})
|
||
|
||
},
|
||
// 开始任务
|
||
startTask() {
|
||
let data = {
|
||
id: this.itemFrom.id,
|
||
status: 1
|
||
}
|
||
this.sendRequest({
|
||
url: 'xmgl/taskProgress/startTask',
|
||
method: 'post',
|
||
data,
|
||
success: res => {
|
||
console.log("开始任务",res)
|
||
// this.getListDetail()
|
||
this.itemFrom.status = 1
|
||
}
|
||
})
|
||
},
|
||
//获取材料用量
|
||
getMarList() {
|
||
let data = {
|
||
taskProgressId: this.itemFrom.id,
|
||
projectSn: this.projectSn
|
||
}
|
||
this.sendRequest({
|
||
url: 'xmgl/taskProgressMaterialRel/detailList',
|
||
method: 'get',
|
||
data,
|
||
success: res => {
|
||
if (res.result.length > 0) {
|
||
this.tableData = res.result
|
||
}
|
||
|
||
}
|
||
})
|
||
},
|
||
// 获取详情
|
||
getListDetail() {
|
||
let data = {
|
||
id: this.itemFrom.id,
|
||
}
|
||
this.sendRequest({
|
||
url: 'xmgl/taskProgress/queryById',
|
||
method: 'get',
|
||
data,
|
||
success: res => {
|
||
if (res.success) {
|
||
console.log("详情接口", res.result);
|
||
this.itemFrom = res.result
|
||
}
|
||
|
||
}
|
||
})
|
||
},
|
||
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style lang="less">
|
||
.content {
|
||
width: 100%;
|
||
box-sizing: border-box;
|
||
padding: 20rpx 16rpx;
|
||
|
||
.title {
|
||
margin: 20rpx;
|
||
font-weight: bold;
|
||
font-size: 28rpx;
|
||
}
|
||
|
||
.type {
|
||
color: #9f9f9f;
|
||
margin: 40rpx 20rpx 0 20rpx;
|
||
font-size: 28rpx;
|
||
|
||
.textStyle {
|
||
float: right;
|
||
color: #000;
|
||
}
|
||
|
||
}
|
||
|
||
.line {
|
||
border-bottom: 1px solid #e6e6e6;
|
||
margin-top: 60rpx;
|
||
}
|
||
|
||
.container {
|
||
width: 100%;
|
||
height: 100%;
|
||
display: flex;
|
||
flex-direction: column;
|
||
font-size: 28rpx;
|
||
margin-top: 40rpx;
|
||
}
|
||
|
||
.table-header {
|
||
display: flex;
|
||
background-color: #f7f8fa;
|
||
|
||
text-align: center;
|
||
height: 70rpx;
|
||
line-height: 70rpx;
|
||
|
||
}
|
||
|
||
.header-cell {
|
||
flex: 1;
|
||
border: 1px solid #f0f0f0;
|
||
}
|
||
|
||
.table-body {
|
||
display: flex;
|
||
flex-direction: column;
|
||
text-align: center;
|
||
|
||
}
|
||
|
||
.table-row {
|
||
display: flex;
|
||
|
||
height: 70rpx;
|
||
line-height: 70rpx;
|
||
}
|
||
|
||
.table-cell {
|
||
flex: 1;
|
||
border: 1px solid #f0f0f0;
|
||
width: 50rpx;
|
||
white-space: nowrap;
|
||
/* 防止换行 */
|
||
overflow: hidden;
|
||
/* 超出部分隐藏 */
|
||
text-overflow: ellipsis;
|
||
/* 超出部分显示省略号 */
|
||
}
|
||
|
||
.addProgess {
|
||
width: 50%;
|
||
background: #5181f6;
|
||
text-align: center;
|
||
margin: auto;
|
||
height: 60rpx;
|
||
color: #fff;
|
||
border-radius: 40rpx;
|
||
line-height: 60rpx;
|
||
margin-top: 110rpx;
|
||
font-size: 28rpx;
|
||
}
|
||
|
||
.closeProgess {
|
||
width: 50%;
|
||
text-align: center;
|
||
margin: auto;
|
||
height: 60rpx;
|
||
border-radius: 40rpx;
|
||
line-height: 60rpx;
|
||
margin-top: 110rpx;
|
||
font-size: 28rpx;
|
||
background: #f7f8fa;
|
||
color: #8c8c8c;
|
||
}
|
||
|
||
.greenText {
|
||
color: green !important;
|
||
}
|
||
|
||
.blueText {
|
||
color: #5181f6 !important;
|
||
}
|
||
|
||
.redText {
|
||
color: red !important;
|
||
}
|
||
}
|
||
</style> |