PropertyApp/pages/work/workDetail.vue
2025-03-31 11:53:31 +08:00

327 lines
8.8 KiB
Vue

<template>
<view>
<view class="flex justify-between">
<view class="block__title">工作单详情</view>
<view class="" style="padding: 32rpx 30rpx 20rpx;" v-if="staffId == workTaskDetailInfo.createUserId">
<button class="cu-btn round sm line-blue margin-left-sm" @tap="_toEditWork()">修改</button>
<button class="cu-btn round sm line-red margin-left-sm" @tap="_openDeleteWork()">删除</button>
</view>
</view>
<view class="cu-list menu ">
<view class="cu-item">
<view class="content">
<text class="text-grey">工单编号</text>
</view>
<view class="action">
<text class="text-grey text-sm">{{workTaskDetailInfo.workId}}</text>
</view>
</view>
<view class="cu-item">
<view class="content">
<text class="text-grey">工单名称</text>
</view>
<view class="action">
<text class="text-grey text-sm">{{workTaskDetailInfo.workName}}</text>
</view>
</view>
<view class="cu-item">
<view class="content">
<text class="text-grey">类型名称</text>
</view>
<view class="action">
<text class="text-grey text-sm">{{workTaskDetailInfo.typeName}}</text>
</view>
</view>
<view class="cu-item">
<view class="content">
<text class="text-grey">标识</text>
</view>
<view class="action">
<text class="text-grey text-sm">{{workTaskDetailInfo.workCycle == '1001'?'一次性工单':'周期性工单'}}</text>
</view>
</view>
<view class="cu-item">
<view class="content">
<text class="text-grey">时间段</text>
</view>
<view class="action">
<view><text class="text-grey text-sm">{{workTaskDetailInfo.startTime}}</text> </view>
<view><text class="text-grey text-sm">~{{workTaskDetailInfo.endTime}}</text> </view>
</view>
</view>
<view class="cu-item">
<view class="content">
<text class="text-grey">发起人</text>
</view>
<view class="action">
<text class="text-grey text-sm">{{workTaskDetailInfo.createUserName}}</text>
</view>
</view>
<view class="cu-item">
<view class="content">
<text class="text-grey">处理人</text>
</view>
<view class="action">
<text class="text-grey text-sm">{{workTaskDetailInfo.staffName || '-'}}</text>
</view>
</view>
<view class="cu-item">
<view class="content">
<text class="text-grey">抄送人</text>
</view>
<view class="action">
<text class="text-grey text-sm">{{workTaskDetailInfo.copyName || '-'}}</text>
</view>
</view>
<view class="cu-item">
<view class="content">
<text class="text-grey">状态</text>
</view>
<view class="action">
<text class="text-grey text-sm">{{workTaskDetailInfo.stateName}}</text>
</view>
</view>
<view class="cu-item">
<view class="content">
<text class="text-grey">创建时间</text>
</view>
<view class="action">
<text class="text-grey text-sm">{{workTaskDetailInfo.createTime}}</text>
</view>
</view>
<view class="cu-item" v-if="workTaskDetailInfo.pathUrls">
<view class="content">
<text class="text-grey">附件</text>
</view>
<view class="action" v-for="(pathUrl,index) in workTaskDetailInfo.pathUrls" :key="index">
<view v-if="pathUrl.endsWith('jpg') || pathUrl.endsWith('png')">
<image class="file-image" :data-url="pathUrl" :src="pathUrl"
@tap="openViewImage(pathUrl)">
</image>
</view>
<view v-else>
<text class="text-grey text-sm" @click="_downloadFile(pathUrl)">下载</text>
</view>
</view>
</view>
<view class="cu-item margin-top-sm" v-for="(content,index) in workTaskDetailInfo.contents" :key="index">
<view class="content">
<text class="text-grey">内容{{index+1}}</text>
</view>
<view class="action">
<text class="text-grey text-sm">{{content.content}}</text>
</view>
</view>
</view>
<view class="cu-timeline margin-top" v-if="events && events.length>0">
<view class="cu-time">流转</view>
<view class="cu-item " v-for="(item,index) in events" :key="index">
<view class="bg-cyan content">
<text>{{item.staffName}} </text> 在 {{item.createTime}} 处理任务
</view>
<view class="bg-cyan content">
<text>处理意见:</text> {{item.remark}}
</view>
</view>
</view>
<view v-if="files && files.length>0">
<view class="block__title">附件</view>
<view class="cu-list menu ">
<view class="cu-item" v-for="(file,index) in files" :key="index">
<view class="content">
<text class="text-grey">{{file.staffName}}</text>
</view>
<view class="action" v-if="file.pathUrl">
<view v-if="file.pathUrl.endsWith('jpg') || file.pathUrl.endsWith('png')">
<image class="file-image" :data-url="file.pathUrl" :src="file.pathUrl"
@tap="openViewImage(file.pathUrl)">
</image>
</view>
<view v-else>
<text class="text-grey text-sm" @click="_downloadFile(file.pathUrl)">下载</text>
</view>
</view>
</view>
</view>
</view>
<view class="cu-modal" :class="delWorkDetailFlag==true?'show':''">
<view class="cu-dialog">
<view class="cu-bar bg-white justify-end">
<view class="content">温馨提示</view>
<view class="action" @tap="_cancleCall()">
<text class="cuIcon-close text-red"></text>
</view>
</view>
<view class="padding-xl">
您确认删除工作单?
</view>
<view class="cu-bar bg-white justify-end">
<view class="action margin-0 flex-sub solid-left" @tap="_cancleDelete()">取消</view>
<view class="action margin-0 flex-sub text-green solid-left" @tap="_doDeleteWork()">确认</view>
</view>
</view>
</view>
<view-image ref="viewImageRef"></view-image>
</view>
</template>
<script>
import url from '../../constant/url.js'
import {
getCurrentCommunity
} from '../../api/community/community.js';
// #ifdef H5
import {
saveAs
} from 'file-saver';
// #endif
import {
getStaffId
} from '@/api/staff/staff.js'
import {
getWorkPool,
getWorkEvent,
getWorkPoolFile,
deleteWorkPool
} from '@/api/oa/workApi.js';
import viewImage from '@/components/view-image/view-image.vue';
export default {
data() {
return {
viewImage: false,
viewImageSrc: '',
workTaskDetailInfo: {},
workId: '',
taskId: '',
events: [],
files: [],
delWorkDetailFlag: false,
staffId: '',
}
},
onLoad(options) {
this.java110Context.onLoad();
this.workId = options.workId;
this.taskId = options.taskId;
this.srcPath = url.hcBaseUrl;
this.staffId = getStaffId();
this._queryWorkDetail();
this._queryWorkEvent();
this._queryWorkFiles();
},
components: {
viewImage
},
methods: {
_queryWorkDetail: function() {
let _that = this;
getWorkPool(this, {
page: 1,
row: 1,
workId: this.workId,
taskId: this.taskId
}).then(_data => {
_that.workTaskDetailInfo = _data.data[0];
})
},
_queryWorkEvent: function() {
let _that = this;
getWorkEvent(this, {
page: 1,
row: 100,
workId: this.workId,
taskId: this.taskId
}).then(_data => {
_that.events = _data.data;
})
},
_queryWorkFiles: function() {
let _that = this;
getWorkPoolFile(this, {
page: 1,
row: 100,
workId: this.workId,
taskId: this.taskId
}).then(_data => {
_that.files = _data.data;
})
},
_toEditWork: function() {
uni.navigateTo({
url: '/pages/work/editWrok?workId=' + this.workId
});
},
_openDeleteWork: function() {
this.delWorkDetailFlag = true;
},
_doDeleteWork: function() {
let _that = this;
deleteWorkPool(this, {
workId: this.workId,
}).then(_data => {
uni.navigateBack({
delta: 2
});
})
},
_cancleDelete: function() {
this.delWorkDetailFlag = false;
},
_downloadFile: function(_url) {
uni.downloadFile({
url: _url, //仅为示例,并非真实的资源
success: (res) => {
if (res.statusCode === 200) {
let tempFile = res.tempFilePath;
//保存成功之后 打开文件
// #ifndef H5
uni.saveFile({
tempFilePath: tempFile,
// filePath: wx.env.USER_DATA_PATH + '/' + '上传成员.pdf',//自定义文件名
success(res) {
uni.showToast({
icon: 'none',
title: '保存成功'
})
return;
}
});
// #endif
// #ifdef H5
saveAs(res.tempFilePath, _url.substring(_url.lastIndexOf('/') + 1));
// #endif
}
}
});
},
openViewImage: function(_url) {
this.$refs.viewImageRef.showThis(_url);
}
}
}
</script>
<style lang="scss">
.block__title {
margin: 0;
font-weight: 400;
font-size: 14px;
color: rgba(69, 90, 100, .6);
padding: 40rpx 30rpx 20rpx;
}
.file-image {
width: 120upx;
height: 120upx;
border-radius: 10upx;
margin-left: 10upx;
}
</style>