From 1df1e9daa4d33a0e975db7ef0a73ee4dd45d216b Mon Sep 17 00:00:00 2001
From: liukangdong <898885815@qq.com>
Date: 星期一, 26 八月 2024 09:19:58 +0800
Subject: [PATCH] lll
---
admin/src/components/business/OperaHiddenDangerWindow.vue | 434 ++++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 356 insertions(+), 78 deletions(-)
diff --git a/admin/src/components/business/OperaHiddenDangerWindow.vue b/admin/src/components/business/OperaHiddenDangerWindow.vue
index 6882524..6937591 100644
--- a/admin/src/components/business/OperaHiddenDangerWindow.vue
+++ b/admin/src/components/business/OperaHiddenDangerWindow.vue
@@ -13,8 +13,8 @@
<div class="time">鎻愭姤鏃堕棿锛歿{model.createDate}}</div>
</div>
<div class="right" v-if="model.status==0">寰呭鐞�</div>
- <div class="right" v-if="model.status==1">宸插鐞�</div>
- <div class="right" v-if="model.status==2">宸叉挙閿�</div>
+ <div class="right" style="background:#53b76f " v-if="model.status==1">宸插鐞�</div>
+ <div class="right" style="background:#dc362e " v-if="model.status==2">宸查��鍥�</div>
</div>
<div class="info">
<div class="title">闅愭偅鎻愭姤璇︽儏</div>
@@ -43,7 +43,6 @@
<video
v-if="item.fileurlFull && item.fileurlFull.endsWith('.mp4')"
ref="videoRef"
- autoplay
controls
preload="auto"
style="width: 80px;height: 80px;object-fit: contain;"
@@ -58,7 +57,7 @@
</div>
</div>
</div>
- <div class="item" v-if="model.status==1" style="width: 100%">
+ <div class="item" v-if="model.status==1||model.status==2" style="width: 100%">
<div class="label">澶勭悊鍓�</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">
@@ -103,7 +102,8 @@
</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>
@@ -115,9 +115,9 @@
<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" 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 src="@/assets/icons/ic_tongguo.png" class="iconnew" v-if="(model.status ==1) || index < logList.length-1"/>
+ <img src="@/assets/icons/ic_dangqian.png" class="iconnew" v-if="(model.status==0) && index == logList.length-1"/>
+ <img src="@/assets/icons/ic_jujue.png" class="iconnew" v-if="(model.status==2) && index == logList.length-1"/>
<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">
@@ -143,62 +143,101 @@
</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="openHandModal" 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="openBackModal" 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"
+ title="杞氦"
+ class="dialogCl"
+ :visible.sync="isShowTransfer"
width="480px"
>
- <el-input
- type="textarea"
- :placeholder="apprTitle + '璇存槑锛岄潪蹇呭~'"
- :rows="4"
- v-model="param.explain"
- />
+ <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="isShowAppr = false">鍙栨秷</el-button>
- <el-button type="primary" @click="isShowAppr = false">纭畾</el-button>
+ <el-button @click="isShowTransfer = false">鍙栨秷</el-button>
+ <el-button type="primary" :loading="transfering" @click="transferSubmit">纭畾</el-button>
</span>
</el-dialog>
<!-- 闅愭偅 -->
<el-dialog
append-to-body
- title="闅愭偅"
+ title="闅愭偅澶勭悊"
+ class="dialogCl"
:visible.sync="isShowProblem"
- width="480px"
+ width="600px"
>
- <el-form :model="param" :rules="rules" ref="ruleForm" label-width="100px">
- <el-form-item label="閫�鍥炴椂闂�">
+ <el-form :model="dealForm" :rules="rulesDeal" ref="dealForm" label-width="100px">
+ <el-form-item label="鏁存敼鏃堕棿" prop="checkDate">
<el-date-picker
class="w300"
- value-format="yyyy-MM-dd"
- type="date"
- placeholder="閫夋嫨鏃ユ湡"
- v-model="param.date"
+ type="datetime"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ placeholder="閫夋嫨鏁存敼鏃堕棿"
+ v-model="dealForm.checkDate"
/>
</el-form-item>
- <el-form-item label="鏁存敼鍓�">
+ <el-form-item label="鏁存敼鍓�" prop="dealBeforeFileList">
<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"
- >
- <img v-if="param.url" :src="param.url" class="avatar" />
- <div v-else class="upload_box">
- <el-icon class="el-icon-plus icon" />
- <div class="text">鍥剧墖/瑙嗛</div>
- </div>
- </el-upload>
+ <upload width="80px" height="80px" :list="dealForm.dealBeforeFileList" :tips="'鍥剧墖/瑙嗛'" accept=".png,.jpg,.jpeg,.mp4" folder="hiddendanger" @loading="uploading = true" @dele="dele($event,0)" @success="uploadFileList($event, 0)" />
+ </div>
+ </el-form-item>
+ <el-form-item label="鏁存敼鍚�" prop="dealAfterFileList">
+ <div class="df_ac">
+ <upload width="80px" height="80px" :list="dealForm.dealAfterFileList" :tips="'鍥剧墖/瑙嗛'" accept=".png,.jpg,.jpeg,.mp4" folder="hiddendanger" @loading="uploading = true" @dele="dele($event,1)" @success="uploadFileList($event, 1)" />
+ </div>
+ </el-form-item>
+ <el-form-item label="澶勭悊璇存槑">
+ <el-input
+ type="textarea"
+ placeholder="璇峰~鍐欒鏄�"
+ :rows="4"
+ v-model="dealForm.checkInfo"
+ />
+ </el-form-item>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="isShowProblem = false">鍙栨秷</el-button>
+ <el-button type="primary" :loading="dealing" @click="dealDo"
+ >纭畾</el-button
+ >
+ </span>
+ </el-dialog>
+ <el-dialog
+ append-to-body
+ title="闅愭偅閫�鍥�"
+
+ class="dialogCl"
+ :visible.sync="isBackProblem"
+ width="600px"
+ >
+ <el-form :model="backForm" :rules="rulesBack" ref="backForm" label-width="100px">
+ <el-form-item label="閫�鍥炴椂闂�" prop="checkDate">
+ <el-date-picker
+ class="w300"
+ value-format="yyyy-MM-dd HH:mm:ss"
+ type="datetime"
+ placeholder="閫夋嫨閫�鍥炴椂闂�"
+ v-model="backForm.checkDate"
+ />
+ </el-form-item>
+ <el-form-item label="鍥剧墖/瑙嗛" prop="dealBeforeFileList">
+ <div class="df_ac">
+ <upload width="80px" height="80px" :list="backForm.dealBeforeFileList" :tips="'鍥剧墖/瑙嗛'" accept=".png,.jpg,.jpeg,.mp4" folder="hiddendanger" @loading="uploading = true" @dele="dele($event,2)" @success="uploadFileList($event, 2)" />
</div>
</el-form-item>
<el-form-item label="閫�鍥炶鏄�">
@@ -206,13 +245,13 @@
type="textarea"
placeholder="璇峰~鍐欒鏄�"
:rows="4"
- v-model="param.explain"
+ v-model="backForm.checkInfo"
/>
</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 @click="isBackProblem= false">鍙栨秷</el-button>
+ <el-button type="primary" :loading="transfering" @click="backDo"
>纭畾</el-button
>
</span>
@@ -223,23 +262,74 @@
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
-import {findLogList} from "@/api/business/hiddenDanger";
+import upload from '@/components/common/upload'
+import dayjs from 'dayjs'
+import { memberList } from '@/api/business/hiddenDangerParam'
+import { mapState } from 'vuex'
export default {
- components: { GlobalWindow },
+ components: { GlobalWindow, upload },
extends: BaseOpera,
- data() {
+ data () {
return {
title: '璁垮棰勭害璇︽儏',
visible: false,
- dataId:null,
+ transfering: false,
+ dataId: null,
model: { },
- logList:[],
+ logList: [],
isShowAppr: false,
apprTitle: '鍚屾剰',
param: {},
+ uploading: false,
+ dealing: false,
isShowProblem: false,
- rules: {}
+ isBackProblem: false,
+ isShowTransfer: false,
+ rules: {},
+ rulesTrans: {
+ memberId: [
+ { required: true, message: '璇烽�夋嫨' }
+ ]
+ },
+ rulesDeal: {
+ checkDate: [
+ { required: true, message: '璇烽�夋嫨鏁存敼鏃堕棿' }
+ ],
+ dealBeforeFileList: [
+ { required: true, message: '璇蜂笂浼犳暣鏀瑰墠鎯呭喌' }
+ ],
+ dealAfterFileList: [
+ { required: true, message: '璇蜂笂浼犳暣鏀瑰悗鎯呭喌' }
+ ]
+ },
+ rulesBack: {
+ checkDate: [
+ { required: true, message: '璇烽�夋嫨閫�鍥炴椂闂�' }
+ ]
+ /*,
+ dealBeforeFileList: [
+ { required: true, message: '璇蜂笂浼犳暣鏀瑰墠鎯呭喌' }
+ ] */
+ },
+ memberList: [],
+ transForm: {
+ memberId: null
+ },
+ dealForm: {
+ checkDate: null,
+ checkInfo: null,
+ dealBeforeFileList: [],
+ dealAfterFileList: []
+ },
+ backForm: {
+ checkDate: null,
+ checkInfo: null,
+ dealBeforeFileList: []
+ }
}
+ },
+ computed: {
+ ...mapState(['userInfo'])
},
created () {
this.config({
@@ -248,38 +338,214 @@
})
},
methods: {
- dealDo(){},
- backDo(){},
- open(title,target){
- this.title =title
- this.visible=true
+ openHandModal () {
+ const { model } = this
+ this.isShowProblem = true
+ this.$set(this.dealForm, 'checkDate', dayjs().format('YYYY-MM-DD HH:mm:ss'))
+ if (model.submitFileList && model.submitFileList.length > 0) {
+ this.$set(this.dealForm, 'dealBeforeFileList', model.submitFileList.map(item => {
+ return {
+ fileurl: item.fileurl,
+ name: item.name,
+ url: item.fileurlFull
+ }
+ }))
+ }
+ },
+ openBackModal () {
+ this.isBackProblem = true
+ this.$set(this.backForm, 'checkDate', dayjs().format('YYYY-MM-DD HH:mm:ss'))
+ },
+ dele (index, type) {
+ if (type == 0) {
+ if (this.dealForm.dealBeforeFileList != null && this.dealForm.dealBeforeFileList.length > index) {
+ this.dealForm.dealBeforeFileList.splice(index, 1)
+ }
+ } else if (type == 1) {
+ if (this.dealForm.dealAfterFileList != null && this.dealForm.dealAfterFileList.length > index) {
+ this.dealForm.dealAfterFileList.splice(index, 1)
+ }
+ } else if (type == 2) {
+ if (this.backForm.dealBeforeFileList != null && this.backForm.dealBeforeFileList.length > index) {
+ this.backForm.dealBeforeFileList.splice(index, 1)
+ }
+ }
+ },
+ uploadFileList (e, objType) {
+ if (objType === 0) {
+ if (this.dealForm.dealBeforeFileList == null) {
+ this.dealForm.dealBeforeFileList = []
+ }
+ this.dealForm.dealBeforeFileList.push({
+ fileurl: e.imgaddr,
+ url: e.url,
+ name: e.originname,
+ fileType: e.type
+ })
+ } else if (objType === 1) {
+ if (this.dealForm.dealAfterFileList == null) {
+ this.dealForm.dealAfterFileList = []
+ }
+ this.dealForm.dealAfterFileList.push({
+ fileurl: e.imgaddr,
+ url: e.url,
+ name: e.originname,
+ fileType: e.type
+ })
+ } else if (objType === 2) {
+ if (this.backForm.dealBeforeFileList == null) {
+ this.backForm.dealBeforeFileList = []
+ }
+ this.backForm.dealBeforeFileList.push({
+ fileurl: e.imgaddr,
+ url: e.url,
+ name: e.originname,
+ fileType: e.type
+ })
+ }
+ },
+ dealDo () {
+ this.$refs.dealForm.validate((valid) => {
+ // debugger
+ if (!valid) {
+ return
+ }
+ this.$dialog.actionConfirm('鎿嶄綔纭', '鎮ㄧ‘璁ゆ彁浜よ闅愭偅澶勭悊鎯呭喌鍚楋紵')
+ .then(() => {
+ this.dealing = true
+ this.api.dealHiddenDanger({
+ id: this.dataId,
+ status: 1,
+ dealTime: this.dealForm.checkDate,
+ checkInfo: this.dealForm.checkInfo,
+ dealBeforeFileList: this.dealForm.dealBeforeFileList,
+ dealAfterFileList: this.dealForm.dealAfterFileList
+ })
+ .then(res => {
+ this.$tip.apiSuccess('澶勭悊鎴愬姛')
+ this.getDetail()
+ this.getLogList()
+ this.$emit('success')
+ this.isShowProblem = false
+ })
+ .catch(e => {
+ })
+ .finally(() => {
+ this.dealing = false
+ })
+ })
+ })
+ },
+ backDo () {
+ this.$refs.backForm.validate((valid) => {
+ if (!valid) {
+ return
+ }
+ this.$dialog.actionConfirm('鎿嶄綔纭', '鎮ㄧ‘璁ら��鍥炶闅愭偅澶勭悊鎯呭喌鍚楋紵')
+ .then(() => {
+ this.dealing = true
+ this.api.dealHiddenDanger({
+ id: this.dataId,
+ status: 2,
+ dealTime: this.backForm.checkDate,
+ checkInfo: this.backForm.checkInfo,
+ dealBeforeFileList: this.backForm.dealBeforeFileList
+ })
+ .then(res => {
+ this.$tip.apiSuccess('閫�鍥炴垚鍔�')
+ this.getDetail()
+ this.getLogList()
+ this.$emit('success')
+ this.isBackProblem = false
+ })
+ .catch(e => {
+ })
+ .finally(() => {
+ this.dealing = false
+ })
+ })
+ })
+ },
+ open (title, target) {
+ this.title = title
+ this.visible = true
this.model = {}
- this.dataId =target.id
- this.getDetail()
- this.getLogList()
-
+ this.dataId = target.id
+ this.$nextTick(() => {
+ this.memberList = []
+ this.transForm = {
+ memberId: null
+ }
+ this.dealForm = {
+ checkDate: null,
+ checkInfo: null,
+ dealBeforeFileList: [],
+ dealAfterFileList: []
+ }
+ this.backForm = {
+ checkDate: null,
+ checkInfo: null,
+ dealBeforeFileList: []
+ }
+ this.getDetail()
+ this.getLogList()
+ })
},
- getLogList(){
- this.api.findLogList({hiddenDangerId:this.dataId})
- .then(res =>{
- this.logList = res
+ 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()
+ this.$emit('success')
+ this.isShowTransfer = false
+ })
+ .catch(e => {
+ })
+ .finally(() => {
+ this.transfering = false
+ })
})
+ })
},
- getDetail(){
+ getLogList () {
+ this.api.findLogList({ hiddenDangerId: this.dataId })
+ .then(res => {
+ this.logList = res
+ })
+ },
+ getDetail () {
this.api.detail(this.dataId)
- .then(res =>{
- this.model = res
- })
+ .then(res => {
+ this.model = res
+ })
},
- confirm() {
+ 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>
@@ -349,6 +615,7 @@
.value {
color: #111111;
+ flex: 1;
}
}
}
@@ -438,10 +705,21 @@
color: #53b76f;
font-size: 24px;
}
+
+ .iconnew{
+ width: 24px;
+ height: 24px;
+ }
.icon1 {
position: relative;
z-index: 11;
color: deepskyblue;
+ font-size: 24px;
+ }
+ .icon2 {
+ position: relative;
+ z-index: 11;
+ color: #dc362e;
font-size: 24px;
}
.avatar {
@@ -449,7 +727,7 @@
height: 40px;
border-radius: 50%;
margin: 0 12px 0 16px;
- border: 1px solid;
+ //border: 1px solid;
}
.content {
flex: 1;
--
Gitblit v1.9.3