From 21f11949452248769ca26f4c4dfb97a3cd642a10 Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期二, 28 五月 2024 16:24:00 +0800
Subject: [PATCH] Merge branch 'master' of http://139.186.142.91:10010/r/productDev/dmvisit
---
admin/src/components/business/OperaHiddenDangerWindow.vue | 324 ++++++++++++++++++++++++++++++++++++++++-------------
1 files changed, 243 insertions(+), 81 deletions(-)
diff --git a/admin/src/components/business/OperaHiddenDangerWindow.vue b/admin/src/components/business/OperaHiddenDangerWindow.vue
index ae6acc1..78dc481 100644
--- a/admin/src/components/business/OperaHiddenDangerWindow.vue
+++ b/admin/src/components/business/OperaHiddenDangerWindow.vue
@@ -1,9 +1,9 @@
<template>
<GlobalWindow
- :title="title"
- :visible.sync="visible"
- @confirm="confirm"
- @close="reject"
+ :title="title"
+ :visible.sync="visible"
+ @confirm="confirm"
+ @close="reject"
>
<div class="modal_wrap">
<div class="modal_content">
@@ -35,23 +35,76 @@
<div class="label">闅愭偅鎻忚堪</div>
<div class="value">{{model.content || ''}}</div>
</div>
- <div class="item">
+ <div class="item" style="width: 100%">
<div class="label">鐜板満鎯呭喌</div>
<div class="value" v-if="model.submitFileList ==null || !model.submitFileList.length">鏃�</div>
<div class="value" v-if="model.submitFileList !=null && model.submitFileList.length">
- <span v-for="item in model.submitFileList" :key="item.id">{{item.fileurlFull}}</span>
+ <div v-for="item in model.submitFileList" :key="item.id" style="display: inline;margin-right: 20px">
+ <video
+ v-if="item.fileurlFull && item.fileurlFull.endsWith('.mp4')"
+ ref="videoRef"
+ autoplay
+ 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"
+ :preview-src-list="[item.fileurlFull]">
+ </el-image>
+ </div>
</div>
</div>
- <div class="item" v-if="model.status==1">
+ <div class="item" v-if="model.status==1||model.status==2" style="width: 100%">
<div class="label">澶勭悊鍓�</div>
- <div class="value"></div>
+ <div class="value" v-if="model.dealBeforeFileList !=null && model.dealBeforeFileList.length">
+ <div v-for="item in model.dealBeforeFileList" :key="item.id" style="display: inline;margin-right: 20px">
+ <video
+ v-if="item.fileurlFull && item.fileurlFull.endsWith('.mp4')"
+ ref="videoRef"
+ autoplay
+ 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"
+ :preview-src-list="[item.fileurlFull]">
+ </el-image>
+ </div>
+ </div>
</div>
- <div class="item" v-if="model.status==1">
+ <div class="item" v-if="model.status==1" style="width: 100%">
<div class="label">澶勭悊鍚�</div>
- <div class="value"></div>
+ <div class="value" v-if="model.dealAfterFileList !=null && model.dealAfterFileList.length">
+ <div v-for="item in model.dealAfterFileList" :key="item.id" style="display: inline;margin-right: 20px">
+ <video
+ v-if="item.fileurlFull && item.fileurlFull.endsWith('.mp4')"
+ ref="videoRef"
+ autoplay
+ 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"
+ :preview-src-list="[item.fileurlFull]">
+ </el-image>
+ </div>
+ </div>
</div>
<div class="item" v-if="model.status==1 || model.status==2">
- <div class="label">澶勭悊璇存槑</div>
+ <div class="label" v-if="model.status==1">澶勭悊璇存槑</div>
+ <div class="label" v-if="model.status==2">閫�鍥炶鏄�</div>
<div class="value">{{model.checkInfo}}</div>
</div>
</div>
@@ -60,95 +113,110 @@
<div class="side">
<div class="side_title">瀹℃壒娴佺▼</div>
<div class="list">
- <div class="item">
- <div class="separate"></div>
+ <div class="item" v-for="(item,index) in logList" :key="item.id">
+ <div class="separate" v-if="index < logList.length-1"></div>
<div class="info">
- <i class="el-icon-success icon"></i>
- <img src="" class="avatar" alt="" />
+ <i class="el-icon-success icon" v-if="(model.status ==1) || index < logList.length-1"></i>
+ <i class="el-icon-question icon1" v-if="(model.status==0) && index == logList.length-1"></i>
+ <i class="el-icon-error icon2" v-if="(model.status==2) && index == logList.length-1"></i>
+ <img v-if="item.avatar!=null && item.avatar !=''" :src="item.avatar" class="avatar" alt="" />
+ <img v-if="item.avatar ==null ||item.avatar ==''" src="@/assets/avatar/man.png" class="avatar" alt="" />
<div class="content">
<div class="line">
- <div class="name">鍒樻煇鍒樻煇</div>
- <div class="time">2020-02-02 12:20</div>
- </div>
- <div class="line">
- <div class="company">涓浗绉诲姩鏈夐檺鍏徃</div>
- </div>
- </div>
- </div>
- </div>
- <div class="item">
- <!-- <div v-if="" class="separate"></div> -->
- <div class="info">
- <i class="el-icon-success icon"></i>
- <img src="" class="avatar" alt="" />
- <div class="content">
- <div class="line">
- <div class="name">鍒樻煇鍒樻煇</div>
- <div class="time">2020-02-02 12:20</div>
+ <div class="name">{{ item.title}}</div>
+ <div class="time">{{ item.createDate }}</div>
</div>
<div class="line">
<div class="company">
- 涓浗绉诲姩鏈夐檺鍏徃( <span class="status">宸插悓鎰�</span> )
+ {{ item.createUserName }} {{ item.companyName }}
+ <div style="display: inline" v-if="index == logList.length-1">
+ 锛�<span class="status-green" v-if="model.status==1">宸插鐞�</span>
+ <span class="status-blue" v-if="model.status==0">寰呭鐞�</span>
+ <span class="status-red" v-if="model.status==2">宸查��鍥�</span>锛�
+ </div>
</div>
</div>
</div>
</div>
- <div class="remark">鎻愪氦绾﹀ソ鐨�</div>
</div>
</div>
</div>
</div>
<!-- -->
<template v-slot:footer>
- <el-button @click="dealDo" type="primary" v-if="model.status==0" class="status-red">澶勭悊</el-button>
- <el-button type="primary" plain v-if="model.status==0" @click="handleTransfer">杞氦</el-button>
- <el-button @click="backDo" v-if="model.status==0" type="danger" >閫�鍥�</el-button>
+ <el-button @click="dealDo" type="primary" v-if="model.status==0&& model.checkUserId == userInfo.memberId" class="status-red">澶勭悊</el-button>
+ <el-button type="primary" plain v-if="model.status==0 && model.checkUserId == userInfo.memberId" @click="handleTransfer">杞氦</el-button>
+ <el-button @click="backDo" v-if="model.status==0&& model.checkUserId == userInfo.memberId" type="danger" >閫�鍥�</el-button>
<el-button @click="visible=false">杩斿洖</el-button>
</template>
<!-- 鍚屾剰/鎷掔粷 -->
<el-dialog
- append-to-body
- :title="apprTitle"
- :visible.sync="isShowAppr"
- width="480px"
+ append-to-body
+ :title="apprTitle"
+ :visible.sync="isShowAppr"
+ width="480px"
>
<el-input
- type="textarea"
- :placeholder="apprTitle + '璇存槑锛岄潪蹇呭~'"
- :rows="4"
- v-model="param.explain"
+ type="textarea"
+ :placeholder="apprTitle + '璇存槑锛岄潪蹇呭~'"
+ :rows="4"
+ v-model="param.explain"
/>
<span slot="footer" class="dialog-footer">
<el-button @click="isShowAppr = false">鍙栨秷</el-button>
<el-button type="primary" @click="isShowAppr = false">纭畾</el-button>
</span>
</el-dialog>
+ <el-dialog
+ append-to-body
+ title="杞氦"
+ style="text-align: center"
+ :visible.sync="isShowTransfer"
+ width="480px"
+ >
+ <el-form :model="transForm" ref="transForm" :rules="rulesTrans">
+ <el-form-item label="闅愭偅杞氦浜�" prop="memberId">
+ <el-select v-model="transForm.memberId" style="width: 300px" filterable clearable placeholder="璇烽�夋嫨杞氦瀹夊叏鍛�">
+ <el-option
+ v-for="item in memberList"
+ :key="item.id"
+ :label="item.name"
+ :value="item.id">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="isShowTransfer = false">鍙栨秷</el-button>
+ <el-button type="primary" @click="transferSubmit">纭畾</el-button>
+ </span>
+ </el-dialog>
<!-- 闅愭偅 -->
<el-dialog
- append-to-body
- title="闅愭偅"
- :visible.sync="isShowProblem"
- width="480px"
+ append-to-body
+ title="闅愭偅"
+ :visible.sync="isShowProblem"
+ width="480px"
>
<el-form :model="param" :rules="rules" ref="ruleForm" label-width="100px">
<el-form-item label="閫�鍥炴椂闂�">
<el-date-picker
- class="w300"
- value-format="yyyy-MM-dd"
- type="date"
- placeholder="閫夋嫨鏃ユ湡"
- v-model="param.date"
+ class="w300"
+ value-format="yyyy-MM-dd"
+ type="date"
+ placeholder="閫夋嫨鏃ユ湡"
+ v-model="param.date"
/>
</el-form-item>
<el-form-item label="鏁存敼鍓�">
<div class="df_ac">
<img src="@/assets/avatar/man.png" />
<el-upload
- class="avatar-uploader"
- action="https://jsonplaceholder.typicode.com/posts/"
- :show-file-list="false"
- :on-success="handleAvatarSuccess"
- :before-upload="beforeAvatarUpload"
+ class="avatar-uploader"
+ action="https://jsonplaceholder.typicode.com/posts/"
+ :show-file-list="false"
+ :on-success="handleAvatarSuccess"
+ :before-upload="beforeAvatarUpload"
>
<img v-if="param.url" :src="param.url" class="avatar" />
<div v-else class="upload_box">
@@ -160,17 +228,17 @@
</el-form-item>
<el-form-item label="閫�鍥炶鏄�">
<el-input
- type="textarea"
- placeholder="璇峰~鍐欒鏄�"
- :rows="4"
- v-model="param.explain"
+ type="textarea"
+ placeholder="璇峰~鍐欒鏄�"
+ :rows="4"
+ v-model="param.explain"
/>
</el-form-item>
</el-form>
<span slot="footer" class="dialog-footer">
<el-button @click="isShowProblem = false">鍙栨秷</el-button>
- <el-button type="primary" @click="isShowProblem = false"
- >纭畾</el-button
+ <el-button type="primary" :loading="transfering" @click="isShowProblem = false"
+ >纭畾</el-button
>
</span>
</el-dialog>
@@ -178,41 +246,123 @@
</template>
<script>
+import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
+import { memberList } from '@/api/business/hiddenDangerParam'
+import {mapMutations} from "vuex";
export default {
components: { GlobalWindow },
- data() {
+ extends: BaseOpera,
+ data () {
return {
title: '璁垮棰勭害璇︽儏',
visible: false,
+ transfering: false,
+ dataId: null,
model: { },
+ logList: [],
isShowAppr: false,
apprTitle: '鍚屾剰',
param: {},
isShowProblem: false,
- rules: {}
+ isShowTransfer: false,
+ rules: {},
+ rulesTrans: {
+ memberId: [
+ { required: true, message: '璇烽�夋嫨' }
+ ]
+ },
+ memberList: [],
+ transForm: {
+ memberId: null
+ }
}
},
+ created () {
+ this.config({
+ api: '/business/hiddenDanger',
+ 'field.id': 'id'
+ })
+ },
methods: {
- open(title,target){
- this.title =title
- this.visible=true
- this.model = target
+ ...mapMutations(['userInfo']),
+ dealDo () { this.isShowProblem = true },
+ backDo () { this.isShowProblem = true },
+ open (title, target) {
+ this.title = title
+ this.visible = true
+ this.model = {}
+ this.dataId = target.id
+ this.getDetail()
+ this.getLogList()
},
- confirm() {
+ transferSubmit () {
+ this.$refs.transForm.validate((valid) => {
+ // debugger
+ if (!valid) {
+ return
+ }
+ this.$dialog.actionConfirm('鎿嶄綔纭', '鎮ㄧ‘璁よ浆浜よ闅愭偅鎻愭姤鍚楋紵')
+ .then(() => {
+ this.transfering = true
+ this.api.transferHiddenDanger({
+ id: this.dataId,
+ checkUserId: this.transForm.memberId
+ })
+ .then(res => {
+ this.$tip.apiSuccess('杞氦鎴愬姛')
+ this.getDetail()
+ this.getLogList()
+ })
+ .catch(e => {
+ })
+ .finally(() => {
+ this.transfering = false
+ })
+ })
+ .catch(() => {})
+ })
+ },
+ getLogList () {
+ this.api.findLogList({ hiddenDangerId: this.dataId })
+ .then(res => {
+ this.logList = res
+ })
+ },
+ getDetail () {
+ this.api.detail(this.dataId)
+ .then(res => {
+ this.model = res
+ })
+ },
+ confirm () {
console.log('--')
},
- handleTransfer() {
- this.isShowProblem = true
+ handleTransfer () {
+ this.isShowTransfer = true
+ this.loadMemberList()
},
- reject() { },
- handleAvatarSuccess() { },
- beforeAvatarUpload() { }
+ loadMemberList () {
+ memberList({}).then(res => {
+ this.memberList = res
+ })
+ },
+ reject () { },
+ handleAvatarSuccess () { },
+ beforeAvatarUpload () { }
}
}
</script>
<style lang="scss" scoped>
+.side_title{
+ font-weight: 600;
+ font-size: 18px;
+ color: #111111;
+ margin-bottom: 20px;
+ margin-left: 20px;
+ margin-top: 20px;
+}
.upload_box {
width: 84px;
height: 84px;
@@ -231,6 +381,7 @@
font-size: 12px;
}
}
+
.modal_wrap {
display: flex;
height: 100%;
@@ -248,7 +399,6 @@
margin-bottom: 20px;
margin-top: 30px;
}
-
.info {
.list {
display: flex;
@@ -344,20 +494,32 @@
.separate {
position: absolute;
border-left: 2px dashed #cccccc;
- left: 51px;
+ left: 31px;
height: calc(100% - 24px);
top: 46px;
}
.info {
display: flex;
align-items: center;
- margin-left: 40px;
+ margin-left: 20px;
.icon {
position: relative;
z-index: 11;
color: #53b76f;
font-size: 24px;
}
+ .icon1 {
+ position: relative;
+ z-index: 11;
+ color: deepskyblue;
+ font-size: 24px;
+ }
+ .icon2 {
+ position: relative;
+ z-index: 11;
+ color: red;
+ font-size: 24px;
+ }
.avatar {
width: 40px;
height: 40px;
--
Gitblit v1.9.3