From c5109dd484be07f6c49a3c4c4df7ae79b89f4fb0 Mon Sep 17 00:00:00 2001
From: jiangping <jp@doumee.com>
Date: 星期五, 06 六月 2025 19:18:57 +0800
Subject: [PATCH] 开发更新
---
admin/src/views/workorder/components/detail.vue | 187 ++++++++++++++++++++++++++++++++++------------
1 files changed, 137 insertions(+), 50 deletions(-)
diff --git a/admin/src/views/workorder/components/detail.vue b/admin/src/views/workorder/components/detail.vue
index d5337ea..039bad0 100644
--- a/admin/src/views/workorder/components/detail.vue
+++ b/admin/src/views/workorder/components/detail.vue
@@ -1,14 +1,17 @@
<template>
- <GlobalWindow width="920px" title="宸ュ崟璇︽儏" :visible.sync="visible" :confirm-working="isWorking" @close="close"
- @confirm="confirm">
+ <GlobalWindow width="100%" title="宸ュ崟璇︽儏" :withFooter="withFooter" :visible.sync="visible" :confirm-working="isWorking"
+ @confirm="confirm" @close="closeView">
<div class="main">
<div class="title">
- <span>宸ュ崟璇︽儏</span>
- <div>
- <div class="status primaryColor" v-if="info.dealStatus == 0 || info.dealStatus == null">寰呮寚娲�</div>
- <div class="status" v-if="info.dealStatus == 1">宸叉寚娲�</div>
- <div class="status gray" v-if="info.dealStatus == 2">宸插鐞�</div>
+ <div class="title_left">
+ <span>宸ュ崟璇︽儏</span>
+ <div>
+ <div class="status primaryColor" v-if="info.dealStatus == 0 || info.dealStatus == null">寰呮寚娲�</div>
+ <div class="status green" v-if="info.dealStatus == 1">宸叉寚娲�</div>
+ <div class="status gray" v-if="info.dealStatus == 2">宸插鐞�</div>
+ </div>
</div>
+ <el-button v-if="info.origin === 1 && isShow" @click="openWT">鏌ョ湅闂涓婃姤</el-button>
</div>
<div class="main_content">
<div class="list">
@@ -23,6 +26,11 @@
<div class="item">
<div class="la">宸ュ崟鍒嗙被</div>
<div class="val">{{ info.categoryName }}</div>
+ </div>
+ <div class="item">
+ <div class="la">鏉ユ簮</div>
+ <div class="val" v-if="info.origin === 0">鑷缓</div>
+ <div class="val" v-if="info.origin === 1">闂杞伐鍗�</div>
</div>
<div class="item">
<div class="la">涓婃姤浜�</div>
@@ -49,11 +57,21 @@
<div class="value" v-if="info.fileList == null || !info.fileList.length">鏃�</div>
<div class="value" v-if="info.fileList != null && info.fileList.length">
<div v-for="item in info.fileList" :key="item.id" style="display: inline;margin-right: 20px">
- <video v-if="item.fileurlFull && item.fileurlFull.endsWith('.mp4')" ref="videoRef" controls
- preload="auto" style="width: 80px;height: 80px;object-fit: contain;" :src="item.fileurlFull" />
- <el-image v-else-if="item.fileurlFull" style="width:80px; height: 80px" :src="item.fileurlFull"
+ <!-- <video v-if="item.fileurlFull && item.fileurlFull.endsWith('.mp4')" ref="videoRef" controls
+ preload="auto" style="width: 80px;height: 80px;object-fit: contain;" :src="item.fileurlFull" /> -->
+ <el-image v-if="item.type == 0" style="width:80px; height: 80px" :src="item.fileurlFull"
:preview-src-list="[item.fileurlFull]">
</el-image>
+ </div>
+ </div>
+ </div>
+ <div v-if="info.fileList && info.fileList.length > 0 && info.fileList.filter(i => i.type == 1).length > 0"
+ class="item max">
+ <div class="la">闂瑙嗛</div>
+ <div class="value">
+ <div v-for="item in info.fileList" :key="item.id" style="display: inline;margin-right: 20px">
+ <video v-if="item.type == 1" ref="videoRef" controls preload="auto"
+ style="width: 240px;height: 160px;object-fit: contain;" :src="item.fileurlFull" />
</div>
</div>
</div>
@@ -61,7 +79,7 @@
<div class="side">
<div class="title">宸ュ崟娴佽浆璁板綍</div>
<div class="flow_list">
- <div class="item" v-for="item,i in info.logList">
+ <div class="item" v-for="item, i in info.logList">
<div class="icon">
<div class="dian"></div>
<div v-if="i < info.logList.length - 1" class="line"></div>
@@ -76,7 +94,9 @@
</div>
</div>
</div>
- <div class="title">{{ info.dealStatus == 0 || info.dealStatus == 1 ? '宸ュ崟澶勭悊' : '澶勭悊缁撴灉' }}</div>
+ <div class="title"
+ v-if="info.dealStatus == 2 || info.dealStatus == 0 || (info.dealStatus == 1 && info.dealUserId === userInfo.id)">
+ {{ info.dealStatus == 0 || info.dealStatus == 1 ? '宸ュ崟澶勭悊' : '澶勭悊缁撴灉' }}</div>
<el-form :model="param" ref="form" :rules="rules">
<template v-if="info.dealStatus == 0 || info.dealStatus == null">
<el-form-item label="澶勭悊鏂瑰紡" prop="dealType">
@@ -84,7 +104,7 @@
<el-radio v-model="param.dealType" :label="0">鎸囨淳</el-radio>
<el-radio v-model="param.dealType" :label="1">鐩存帴鍥炲</el-radio>
</div>
- </el-form-item>
+ </el-form-item>
<el-form-item v-if="param.dealType == 0" label="鎸囨淳缁�" prop="dealUserId">
<el-select v-model="param.dealUserId" clearable filterable class="w400">
<el-option v-for="item in staffList" :label="item.realname" :value="item.id"></el-option>
@@ -104,8 +124,8 @@
</el-form-item>
<el-form-item label="鐜板満鍥剧墖">
<div class="file_list">
- <el-upload class="avatar-uploader" :data="uploadData" :auto-upload="true"
- :action="uploadImgUrl" :show-file-list="false" :on-success="uploadAvatarSuccess" :on-error="uploadError"
+ <el-upload class="avatar-uploader" :data="uploadData" :auto-upload="true" :action="uploadImgUrl"
+ :show-file-list="false" :on-success="uploadAvatarSuccess" :on-error="uploadError"
:before-upload="beforeUpload">
<div class="upload_wrap">
<i class="el-icon-plus avatar-uploader-icon"></i>
@@ -151,6 +171,8 @@
</div>
</template>
</el-form>
+ <!-- 闂涓婃姤璇︽儏 -->
+ <ProblemReportingDetails ref="problem_Reporting_Details" @close="closeDetails" />
</div>
</GlobalWindow>
</template>
@@ -158,18 +180,24 @@
<script>
import GlobalWindow from '@/components/common/GlobalWindow'
import BaseOpera from '@/components/base/BaseOpera'
+// import ProblemReportingDetails from './problemReportingDetails'
+// import ProblemReportingDetails from '@/views/workorder/components/problemReportingDetails'
import { detailById, dispatchOrder, dealOrder } from '@/api/workorder/ywWorkorder'
+import { getByWorkorderId } from '@/api/ywProblem'
import { getUserList } from '@/api/system/user'
import { Message, Loading } from 'element-ui'
+import { mapState } from 'vuex'
+import dayjs from 'dayjs'
export default {
+ name: 'detail',
components: {
- GlobalWindow
+ GlobalWindow,
+ ProblemReportingDetails: () => import('./problemReportingDetails')
},
extends: BaseOpera,
data() {
return {
id: '',
- visible: false,
param: {
dealType: 0
},
@@ -185,17 +213,49 @@
uploadData: {
folder: 'YW_WORKORDER_FILE'
},
+ isShow: true,
+ test: false
}
},
computed: {
userInfo() {
return this.$store.state.userInfo
+ },
+ withFooter() {
+ if (this.info) {
+ return this.info.dealStatus === 0 || (this.info.dealStatus === 1 && (this.userInfo.id === this.info.dealUserId));
+ } else {
+ return false;
+ }
}
},
created() {
this.getStaff()
},
methods: {
+ closeDetails() {
+ console.log('1')
+ this.test = false
+ },
+ closeView() {
+ this.$emit('close')
+ this.visible = false
+ },
+ open (title, target, show) {
+ this.title = title
+ this.isShow = show
+ this.id = target.workorderId
+ this.getDetail()
+ },
+ openWT() {
+ getByWorkorderId(this.id)
+ .then(res => {
+ this.test = true
+ this.$nextTick(() => {
+ this.$refs.problem_Reporting_Details.open('闂涓婃姤璇︽儏', res, false)
+ })
+ })
+ },
confirm() {
this.$refs['form'].validate((valid) => {
if (valid) {
@@ -222,6 +282,10 @@
const { id } = this
detailById(id).then(res => {
this.info = res
+ if (this.info.dealStatus == 1) {
+ this.$set(this.param, 'getDate', dayjs().format('YYYY-MM-DD HH:mm:ss'))
+ }
+ this.visible = true
})
},
getStaff() {
@@ -292,32 +356,41 @@
padding-top: 20px;
.title {
- font-weight: 500;
- font-size: 18px;
- color: $primary-color;
+
margin-bottom: 10px;
display: flex;
align-items: center;
-
- .status {
- padding: 0 6px;
- height: 22px;
- line-height: 22px;
- border-radius: 2px;
- border: 1px solid #00BA92;
- color: #00BA92;
- font-weight: 400;
- font-size: 12px;
- margin-left: 10px;
- }
-
- .primaryColor {
- border: 1px solid $primary-color;
- }
-
- .gray {
- color: gray;
- border: 1px solid gray;
+ justify-content: space-between;
+ .title_left {
+ display: flex;
+ align-items: center;
+ font-weight: 500;
+ font-size: 18px;
+ color: $primary-color;
+ .status {
+ padding: 0 12px;
+ height: 24px;
+ line-height: 24px;
+ border-radius: 2px;
+ border: 1px solid #00BA92;
+ color: #00BA92;
+ font-weight: 400;
+ font-size: 12px;
+ margin-left: 10px;
+ }
+ .primaryColor {
+ border: 1px solid rgba(63, 126, 239, .2);
+ background-color: rgba(63, 126, 239, .2);
+ }
+ .green {
+ background-color: rgba(83, 183, 148, .2);
+ border: 1px solid rgba(83, 183, 148, .2);
+ }
+ .gray {
+ color: #333333;
+ background-color: rgba(128, 128, 128, .2);
+ border: 1px solid rgba(128, 128, 128, .2);
+ }
}
}
@@ -343,44 +416,58 @@
width: 100%;
display: flex;
align-items: center;
+
+ .la {
+ margin-bottom: 0;
+ width: 72px;
+ }
}
.max {
width: 100%;
}
}
- .main_content{
+
+ .main_content {
display: flex;
- .side{
+
+ .side {
width: 370px;
- .title{
+
+ .title {
font-size: 14px;
}
- .flow_list{
- .item{
+
+ .flow_list {
+ .item {
display: flex;
- .icon{
+
+ .icon {
width: 28px;
display: flex;
flex-direction: column;
align-items: center;
- .dian{
+
+ .dian {
width: 12px;
height: 12px;
border-radius: 50%;
background-color: #e89e42;
}
- .line{
+
+ .line {
width: 1px;
height: 100%;
background-color: #e89e42;
}
}
- .content{
+
+ .content {
font-size: 12px;
color: #999999;
padding-bottom: 12px;
- .name{
+
+ .name {
font-size: 13px;
color: #333333;
}
--
Gitblit v1.9.3