spyj.vue 6.3 KB
<!--
 * @Description: 审批意见
 * @Autor: renchao
 * @LastEditTime: 2023-05-17 10:41:24
-->
<template>
  <div class='spyj loadingtext'>
    <div class="box">
      <b class="spyj_title">审批表</b>
      <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="120px">
        <div class="spyj_form" v-for="(item, index) in tableData" :key="index">
          <div class="item_left">
            {{ item.jdmc }}意见
          </div>
          <div class="item_right">
            <el-row>
              <el-col :span="24">
                <el-form-item label-width="0" class="opinion_item" prop="shyj">
                  <el-input type="textarea" :rows="4" class="opinion" placeholder="请输入审批意见"
                    v-if="item.stepShjy == '1' && ableOperation" v-model="ruleForm.shyj"></el-input>
                  <el-input type="textarea" :rows="4" class="opinion" v-model="item.shyj" v-else :disabled="true">
                  </el-input>
                  <el-button class="opinion_btn" @click="commonOpinion"
                    v-if="item.stepShjy == '1' && ableOperation">常用意见</el-button>
                </el-form-item>
              </el-col>
            </el-row>
            <el-row>
              <el-col :span="16">
                <el-form-item label="审查人" prop="shryxm">
                  {{ item.shryxm }}
                </el-form-item>
              </el-col>
              <el-col :span="8">
                <el-form-item label="审核时间" prop="shjssj" :key="refresh">
                  {{ item.shjssj }}
                </el-form-item>
              </el-col>
            </el-row>
          </div>
        </div>
        <div class="submit_button" v-if="ableOperation">
          <el-button type="primary" @click="onSubmit">保存</el-button>
        </div>
      </el-form>
    </div>
    <el-empty v-if="isNoData" description="暂无数据"></el-empty>
  </div>
</template>
<script>
  import { getSpyjList, saveSpyj, saveSpyjBySlsq } from "@/api/fqsq.js";
  import { mapGetters } from 'vuex'
  export default {
    computed: {
      ...mapGetters(['userData', 'yjsqOptions'])
    },
    data () {
      return {
        isNoData: false,
        bsmSlsq: '',
        //刷新值
        refresh: 10,
        ableOperation: true,
        bsmSlsq: this.$route.query.bsmSlsq,
        bestepid: this.$route.query.bestepid,
        ruleForm: {},
        rules: {
          shyj: [
            { required: true, message: '请输入审批意见', trigger: 'blur' }
          ],
        },
        tableData: [],
        propsParam: {}
      }
    },
    watch: {
      yjsqOptions: {
        handler (val) {
          this.ruleForm.shyj = val
        },
        deep: true,
        immediate: true
      },
    },
    mounted () {
      this.propsParam = this.$attrs;
      if (this.$route.query.viewtype) {
        this.ableOperation = false
      }
      this.list();
    },
    methods: {
      //审批意见数据初始化
      list () {
        let that = this
        this.$startLoading()
        var formdata = new FormData();
        formdata.append("bsmBusiness", this.propsParam.bsmRepair);
        formdata.append("bestepid", this.$route.query.bestepid);
        formdata.append("ableOperation", this.ableOperation)
        getSpyjList(formdata).then((res) => {
          this.$endLoading()
          if (res.code === 200 && res.result) {
            console.log("this.tableData this.tableData this.tableData ",this.tableData );
            this.tableData = res.result ? res.result : []
              console.log("this.tableDatathis.tableDatathis.tableDatathis.tableData",this.tableData);
            if (res.result.length == 0) {
              that.isNoData = true
            }
            this.ruleForm = res.result[res.result.length - 1]
          }
        })
      },
      onSubmit () {
        this.ruleForm.bsmSlsq = this.bsmSlsq
        this.ruleForm.bestepid = this.bestepid
        saveSpyjBySlsq(this.ruleForm).then(res => {
          if (res.code === 200) {
            this.$message.success("保存成功")
            this.refresh += 1
          } else {
            this.$message.error(res.message)
          }
        })
      },
      //打开常用意见列表弹窗
      commonOpinion () {
        this.$popupDialog("常用意见", "djbworkflow/components/dialog/commonOpinion", {}, "70%", true)
      },
      //使用常用意见
      useOpinion (opinion) {
        this.ruleForm.shyj = opinion
      }
    }
  }
</script>
<style scoped lang='scss'>
  @import "~@/styles/mixin.scss";

  .spyj {
    width: 100%;
    height: 100%;
    background-color: #f5f5f5;
    padding: 5px;
    .box {
      overflow-x: auto;
      width: 100%;
      height: 95%;
      background: #fff;
      text-align: center;
      padding: 4px;
      overflow-y: scroll;
      padding-top: 20px;
      padding: 20px 40px;
    }
    .spyj_title {
      line-height: 68px;
      border: 1px solid $borderColor;
      text-align: center;
      font-size: 22px;
      font-weight: 400;
      background-color: #eceef2;
      display: block;
      border-bottom: none;
    }

    /deep/.el-form-item {
      margin-bottom: 0;
    }

    .bottom10 {
      margin-bottom: 15px;
    }

    .spyj_form {
      display: flex;
      border: 1px solid $borderColor;

      .item_left {
        width: 150px;
        background-color: #f8f8fa;
        color: #606266;
        display: flex;
        font-size: 14px;
        text-indent: 80px;
        align-items: center;
        border-right: 1px solid $borderColor;
      }

      .item_right {
        flex: 1;
        width: 100%;

        /deep/.el-form-item__label {
          background-color: #f8f8fa;
        }
        /deep/.el-form-item__content {
          display: block;
          text-align: left;
          text-indent: 10px;
        }
        .opinion_item {
          /deep/.el-form-item__error {
            margin-top: -16px !important;
            left: 3px;
          }

          border-bottom: 1px solid $borderColor;
        }

        .opinion {
          position: relative;
          font-size: 14px;

          /deep/.el-textarea__inner {
            border: none;
          }
        }

        .opinion_btn {
          position: absolute;
          right: 15px;
          bottom: 10px;
        }
      }
    }

    .submit_button {
      text-align: center;
      margin: 15px 0;
    }
  }
</style>