ll
liukangdong
2024-10-18 9c491f119144c9bc536c1cf39307ad82be96b85b
admin/src/components/business/OperaCarUseBookWindow.vue
@@ -1,9 +1,5 @@
<template>
  <GlobalWindow
      :title="title"
      :visible.sync="visible"
      @confirm="confirm"
  >
  <GlobalWindow :title="title" :visible.sync="visible" @confirm="confirm">
    <div class="modal_wrap">
      <div class="modal_content">
        <div class="header">
@@ -22,7 +18,8 @@
          <div class="list">
            <div class="item" style="width: 100%">
              <div class="label">申请人</div>
              <div class="value">{{model.memberName || ''}} {{model.memberPhone || ''}} ({{model.companyName || ''}})</div>
              <div class="value">{{ model.memberName || '' }} {{ model.memberPhone || '' }} ({{ model.companyName || '' }})
              </div>
            </div>
            <div class="item">
              <div class="label">申请车辆</div>
@@ -30,7 +27,8 @@
            </div>
            <div class="item">
              <div class="label">司机信息</div>
              <div class="value" v-if="model.driverId !=null">{{model.driverName || ''}} {{model.driverPhone || ''}}</div>
              <div class="value" v-if="model.driverId != null">{{ model.driverName || '' }} {{ model.driverPhone || '' }}
              </div>
              <div class="value" v-if="model.driverId ==null">未指派</div>
            </div>
            <div class="item"  >
@@ -63,17 +61,20 @@
      </div>
      <div class="side">
        <div class="side_title">审批流程</div>
        <div class="list"  v-if="model.approveDateVO !=null && model.approveDateVO.approveList !=null">
        <div class="list" v-if="
          model.approveDateVO != null && model.approveDateVO.approveList != null
        ">
          <div class="item" v-for="(item,index) in model.approveDateVO.approveList" :key="item.id">
            <div class="separate" v-if=" (index < model.approveDateVO.approveList.length-1)"></div>
            <div class="separate" v-if="index < model.approveDateVO.approveList.length - 1"></div>
            <div class="info">
              <img src="@/assets/icons/ic_tongguo.png"   class="iconnew" v-if="( item.status ==2)"/>
              <img src="@/assets/icons/ic_dangqian.png"   class="iconnew"  v-if="( item.status==1)"/>
              <img src="@/assets/icons/ic_jujue.png"  class="iconnew"  v-if="( item.status==3)"/>
              <img src="@/assets/icons/ic_grey.png"  class="iconnew" v-if=" (item.status==null || item.status==0 )"/>
              <img src="@/assets/icons/ic_tongguo.png" class="iconnew" v-if="item.status == 2" />
              <img src="@/assets/icons/ic_dangqian.png" class="iconnew" v-if="item.status == 1" />
              <img src="@/assets/icons/ic_jujue.png" class="iconnew" v-if="item.status == 3" />
              <img src="@/assets/icons/ic_grey.png" class="iconnew" v-if="item.status == null || item.status == 0" />
              <div style="display: inline" v-if="item.approveType !=1">
                <img v-if="item.faceImg!=null && item.faceImg !=''" :src="item.faceImg" class="avatar" alt="" />
                <img v-if="item.faceImg ==null ||item.faceImg ==''"  src="@/assets/avatar/man.png" class="avatar" alt="" />
                <img v-if="item.faceImg == null || item.faceImg == ''" src="@/assets/avatar/man.png" class="avatar"
                  alt="" />
              </div>
              <div style="display: inline" v-if="item.approveType  == 1">
                <img  v-if="item.type !=1"  src="@/assets/icons/ic_duoren.png" class="avatar" alt="" />
@@ -88,19 +89,26 @@
                  <div class="company">
                    {{ item.memberName }}
                    <div style="display: inline" v-if="item.statusInfo!=null && item.statusInfo!=''">
                       (<span class="status-green">{{item.statusInfo ||''}}</span>)
                      (<span :class="{ padding: item.statusInfo == '处理中' || item.status == '1' }">{{
                        item.statusInfo || ""
                      }}</span>)
                    </div>
                  </div>
                </div>
              </div>
            </div>
            <div v-if="item.approveType != 1 && item.checkInfo !=null && item.checkInfo !=''" class="remark">
              {{ item.checkInfo || '' }}
            <div v-if="
              item.approveType != 1 &&
              item.checkInfo != null &&
              item.checkInfo != ''
            " class="remark">
              {{ item.checkInfo || "" }}
            </div>
            <div v-if="item.approveType == 1 "  class="childList">
            <div v-if="item.approveType == 0 || item.type == 1 || item.approveType == 1" class="childList">
              <div class="m_content company" v-for="item1 in item.approveList" :key="item1.id">
                <img v-if="item1.faceImg!=null && item1.faceImg !=''" :src="item1.faceImg" class="avatar" alt="" />
                <img v-if="item1.faceImg ==null ||item1.faceImg ==''"  src="@/assets/avatar/man.png" class="avatar" alt="" />
                <img v-if="item1.faceImg == null || item1.faceImg == ''" src="@/assets/avatar/man.png" class="avatar"
                  alt="" />
                <span > {{item1.memberName}}</span>
              </div>
            </div>
@@ -110,37 +118,26 @@
    </div>
    <!--  -->
    <template   v-slot:footer>
      <el-button @click="agreeOpen"  type="primary"  v-if="model.approveDateVO!=null&& model.approveDateVO.canBeApproved!=null &&model.approveDateVO.canBeApproved ==1 "  class="status-red">同意</el-button>
      <el-button @click="jectOpen"  type="danger"  v-if="model.approveDateVO!=null&& model.approveDateVO.canBeApproved!=null &&model.approveDateVO.canBeApproved ==1 "  >拒绝</el-button>
      <el-button @click="agreeOpen" type="primary"
        v-if="model.approveDateVO != null && model.approveDateVO.canBeApproved != null && model.approveDateVO.canBeApproved == 1"
        class="status-red">同意</el-button>
      <el-button @click="jectOpen" type="danger"
        v-if="model.approveDateVO != null && model.approveDateVO.canBeApproved != null && model.approveDateVO.canBeApproved == 1">拒绝</el-button>
      <el-button @click="visible=false">返回</el-button>
    </template>
    <el-dialog
        append-to-body
        title="同意申请"
        style="text-align: center"
        class="dialogCl"
        :visible.sync="isShowProblem"
        width="480px"
    >
    <el-dialog append-to-body title="同意申请" style="text-align: center" class="dialogCl" :visible.sync="isShowProblem"
      width="480px">
      <el-form :model="dealForm" :rules="rules" ref="dealForm" >
        <!-- <el-form-item label="派车司机" prop="driverId" required v-if="model.approveDateVO!=null && model.approveDateVO.driverParam === 1"> -->
        <el-form-item label="派车司机" prop="driverId" v-if="model.approveDateVO!=null && model.approveDateVO.driverParam == 1">
        <el-form-item label="派车司机" prop="driverId"
          v-if="model.approveDateVO != null && model.approveDateVO.driverParam == 1">
          <el-select v-model="dealForm.driverId" style="width: 300px"  filterable clearable placeholder="请选择派遣司机">
            <el-option
                v-for="item in memberList"
                :key="item.id"
                :label="item.name+'-'+item.phone"
                :value="item.id">
            <el-option v-for="item in memberList" :key="item.id" :label="item.name + '-' + item.phone" :value="item.id">
            </el-option>
          </el-select>
        </el-form-item>
        <el-form-item label="同意说明">
          <el-input
              type="textarea"
              placeholder="请填写说明"
              :rows="4"
              v-model="dealForm.checkInfo"
          />
          <el-input type="textarea" placeholder="请填写说明" :rows="4" v-model="dealForm.checkInfo" />
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
@@ -148,22 +145,11 @@
        <el-button type="primary" :loading="dealing" @click="dealDo">确定</el-button>
      </span>
    </el-dialog>
    <el-dialog
        append-to-body
        title="拒绝申请"
        style="text-align: center"
        class="dialogCl"
        :visible.sync="isBackProblem"
        width="600px"
    >
    <el-dialog append-to-body title="拒绝申请" style="text-align: center" class="dialogCl" :visible.sync="isBackProblem"
      width="600px">
      <el-form :model="backForm"  ref="backForm" label-width="100px">
        <el-form-item label="拒绝说明">
          <el-input
              type="textarea"
              placeholder="请填写说明"
              :rows="4"
              v-model="backForm.checkInfo"
          />
          <el-input type="textarea" placeholder="请填写说明" :rows="4" v-model="backForm.checkInfo" />
        </el-form-item>
      </el-form>
      <span slot="footer" class="dialog-footer">
@@ -296,6 +282,18 @@
      this.api.detail(this.dataId)
        .then(res => {
          this.model = res
          if (this.model.approveDateVO && this.model.approveDateVO.approveList.length > 0) {
            this.model.approveDateVO.approveList.forEach(item => {
              if (item.approveList && item.approveList.length == 1 && item.type !== 1) {
                item.title = item.approveList[0].title
                item.faceImg = item.approveList[0].faceImg
                item.memberName = item.approveList[0].memberName
                item.statusInfo = item.approveList[0].statusInfo
                item.status = item.approveList[0].status
                item.approveList = []
              }
            })
          }
          this.dealForm.driveId = res.driveId
        })
    },
@@ -309,6 +307,8 @@
</script>
<style lang="scss" scoped>
@import "@/assets/style/variables.scss";
.upload_box {
  width: 84px;
  height: 84px;
@@ -320,13 +320,16 @@
  align-items: center;
  color: #999999;
  border: 1px solid #e4e4e4;
  .icon {
    font-size: 24px;
  }
  .text {
    font-size: 12px;
  }
}
.side_title{
  font-weight: 600;
  font-size: 18px;
@@ -335,9 +338,11 @@
  margin-left: 20px;
  margin-top: 20px;
}
.modal_wrap {
  display: flex;
  height: 100%;
  .modal_content {
    flex: 1;
    padding: 0px 30px;
@@ -352,6 +357,7 @@
      margin-bottom: 20px;
      margin-top: 30px;
    }
    .info {
      .list {
        display: flex;
@@ -361,6 +367,7 @@
          display: flex;
          width: 40%;
          margin-bottom: 20px;
          &:nth-of-type(2n) {
            width: 60%;
          }
@@ -410,20 +417,24 @@
        border-radius: 16px 0px 16px 0px;
      }
    }
    .table_info {
      .name_wrap {
        display: flex;
        align-items: center;
        .avatar {
          width: 40px;
          height: 40px;
          border-radius: 50%;
          margin-right: 12px;
        }
        .content {
          .line {
            display: flex;
          }
          .tag {
            color: #b2cbf9;
            border: 1px solid #b2cbf9;
@@ -441,17 +452,20 @@
    width: 420px;
    background: #ffffff;
    border-left: 20px solid #f7f7f7;
    .list {
      .item {
        padding: 8px 0;
        position: relative;
        .separate {
          position: absolute;
          border-left: 2px dashed #cccccc;
          left: 31px;
          height: calc(100% - 36px);
          height: calc(100% - 30px);
          top: 49px;
        }
        .avatar {
          width: 40px;
          height: 40px;
@@ -459,18 +473,22 @@
          margin: 0 12px 0 16px;
          //border: 1px solid;
        }
        .childList{
          display: flex;
          flex-wrap: wrap;
          margin-left: 100px;
        }
        .company {
          font-size: 13px;
          color: #888888;
          .status {
            color: #00ba67;
            color: $primaryColor;
          }
        }
        .m_content{
          display: flex;
          flex-direction: column;
@@ -478,56 +496,75 @@
          justify-content: center;
          margin-bottom: 4px;
        }
        .info {
          display: flex;
          align-items: center;
          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: #dc362e;
            font-size: 24px;
          }
          .iconnew{
            width: 24px;
            height: 24px;
          }
          .icon3 {
            position: relative;
            z-index: 11;
            color:gray;
            font-size: 24px;
          }
          .content {
            flex: 1;
            .line {
              display: flex;
              justify-content: space-between;
              align-content: center;
              margin-bottom: 6px;
              .status {
                color: #888888;
              }
              .padding {
                color: $primaryColor;
              }
              .name {
                font-weight: 600;
                font-size: 16px;
                color: #111111;
              }
              .time {
                color: #888888;
              }
            }
          }
        }
        .remark {
          background: #f7f7f7;
          border-radius: 4px;
@@ -535,7 +572,6 @@
          color: #666666;
          margin-left: 100px;
        }
      }
    }
  }