liukangdong
2024-05-27 efcdc8c49b0452d9c7f192ab351da09bf8aafc80
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,20 +35,72 @@
              <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" 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>
@@ -60,40 +112,31 @@
      <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>
@@ -107,16 +150,16 @@
    </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>
@@ -125,30 +168,30 @@
    </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 +203,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
        >
      </span>
    </el-dialog>
@@ -178,14 +221,19 @@
</template>
<script>
import BaseOpera from '@/components/base/BaseOpera'
import GlobalWindow from '@/components/common/GlobalWindow'
import {findLogList} from "@/api/business/hiddenDanger";
export default {
  components: { GlobalWindow },
  extends: BaseOpera,
  data() {
    return {
      title: '访客预约详情',
      visible: false,
      dataId:null,
      model: { },
      logList:[],
      isShowAppr: false,
      apprTitle: '同意',
      param: {},
@@ -193,11 +241,35 @@
      rules: {}
    }
  },
  created () {
    this.config({
      api: '/business/hiddenDanger',
      'field.id': 'id'
    })
  },
  methods: {
    dealDo(){},
    backDo(){},
    open(title,target){
      this.title =title
      this.visible=true
      this.model = target
      this.model = {}
      this.dataId =target.id
      this.getDetail()
      this.getLogList()
    },
    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('--')
@@ -213,6 +285,14 @@
</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 +311,7 @@
    font-size: 12px;
  }
}
.modal_wrap {
  display: flex;
  height: 100%;
@@ -248,7 +329,6 @@
      margin-bottom: 20px;
      margin-top: 30px;
    }
    .info {
      .list {
        display: flex;
@@ -344,20 +424,26 @@
        .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;
          }
          .avatar {
            width: 40px;
            height: 40px;