大件运输联网系统前端代码
guoshilong
2022-12-19 6fd27418225f2d36fc206acdfe6c24fb33ae7590
src/views/work/process/audit/handle.vue
@@ -9,7 +9,7 @@
          <el-button @click="handleCancel">关闭</el-button>
        </el-form-item>
      </el-row>
      <el-card shadow="hover">
      <el-card v-if="!isUserTask" shadow="hover">
        <div slot="header">
          <span>审批信息</span>
        </div>
@@ -28,8 +28,27 @@
            <avue-form ref="form" v-model="rejectModel" :option="rejectOption" @submit="handleDisagree"/>
          </el-tab-pane>
        </el-tabs>
      </el-card>
      <el-card v-else shadow="hover">
        <div slot="header">
          <span>审批信息</span>
        </div>
        <avue-form :option="option" v-model="form"/>
        <el-tabs type="border-card" @tab-click="tabsClick">
          <el-tab-pane label="采纳建议" name="userAgree">
            <avue-form ref="form" v-model="userAgreeModel" :option="userAgreeOption" @submit="userHandleAgree"/>
          </el-tab-pane>
          <el-tab-pane label="不采纳建议" name="userPolish">
            <avue-form ref="form" v-model="userPolishModel" :option="userPolishOption" @submit="userHandlePolish"/>
          </el-tab-pane>
          <el-tab-pane label="撤销申请" name="userDisagree">
            <avue-form ref="form" v-model="userRejectModel" :option="userRejectOption" @submit="userHandleDisagree"/>
          </el-tab-pane>
        </el-tabs>
      </el-card>
      <el-card shadow="hover">
@@ -42,7 +61,7 @@
              <el-card shadow="hover">
                <p>{{ flow.assigneeName }} 在 [{{ flow.createTime }}] 开始处理 [{{ flow.historyActivityName }}] 环节</p>
                <p v-if="flow.historyActivityDurationTime!==''">任务历时 [{{ flow.historyActivityDurationTime }}]</p>
                <p v-if="flow.comment!==''">批复意见: [{{ flow.comment }}]</p>
                <p v-if="flow.comment!==''">反馈意见: [{{ flow.comment }}]</p>
                <p v-if="flow.endTime!==''">结束时间: [{{ flow.endTime }}]</p>
              </el-card>
            </el-timeline-item>
@@ -63,9 +82,10 @@
</template>
<script>
import {historyFlowList, leaveDetail} from "@/api/work/process";
import {historyFlowList} from "@/api/work/process";
import option from "@/const/application/application";
import {applicationDetail,completeTask} from "@/api/application/application";
import {applicationDetail, completeTask, userCompleteTask} from "@/api/application/application";
import {deepClone} from "@/util/util";
export default {
  name: "handle",
@@ -76,17 +96,9 @@
      processInstanceId: '',
      src: '',
      flowList: [],
      form: {
        flow: {
          assigneeName: '',
        },
        startTime: '',
        endTime: '',
        reason: '',
        comment: '',
      },
      form: {},
      option: option,
      //批复相关数据
      //审批人员相关字段
      agreeModel: {},
      agreeOption: {
        emptyBtn: false,
@@ -94,14 +106,14 @@
        gutter: 30,
        column: [
          {
            label: "批复意见",
            label: "反馈意见",
            prop: "comment",
            span:24,
            type:'textarea',
            hide: true,
            rules: [{
              required: true,
              message: "请输入批复意见",
              message: "请输入反馈意见",
              trigger: "blur"
            }]
          },
@@ -126,14 +138,14 @@
            }]
          },
          {
            label: "批复意见",
            label: "反馈意见",
            prop: "comment",
            type:'textarea',
            span:24,
            hide: true,
            rules: [{
              required: true,
              message: "请输入批复意见",
              message: "请输入反馈意见",
              trigger: "blur"
            }]
          },
@@ -166,9 +178,89 @@
            prop: "remark",
            type: "textarea",
            span: 24
          }
          },
          {
            label: "反馈意见",
            prop: "comment",
            type:'textarea',
            span:24,
            hide: true,
            rules: [{
              required: true,
              message: "请输入反馈意见",
              trigger: "blur"
            }]
          },
        ]
      }
      },
      //申请人员相关字段
      isUserTask:false,
      userAgreeModel:{
        comment:'同意',
      },
      userAgreeOption:{
        emptyBtn: false,
        submitText: "提交",
        gutter: 30,
        column: [
          {
            label: "反馈意见",
            prop: "comment",
            span:24,
            type:'textarea',
            hide: true,
            rules: [{
              required: true,
              message: "请输入反馈意见",
              trigger: "blur"
            }]
          },
        ]
      },
      userPolishModel:{},
      userPolishOption:{
        emptyBtn: false,
        submitText: "提交",
        gutter: 30,
        column: [
          {
            label: "反馈意见",
            prop: "comment",
            span:24,
            type:'textarea',
            hide: true,
            rules: [{
              required: true,
              message: "请输入反馈意见",
              trigger: "blur"
            }]
          },
        ]
      },
      userRejectModel:{
        comment:'撤销申请'
      },
      userRejectOption:{
        emptyBtn: false,
        submitText: "提交",
        gutter: 30,
        column: [
          {
            label: "反馈意见",
            prop: "comment",
            type:'textarea',
            span:24,
            hide: true,
            rules: [{
              required: true,
              message: "请输入反馈意见",
              trigger: "blur"
            }]
          },
        ]
      },
      cloneForm:{},
    }
  },
  created() {
@@ -194,25 +286,30 @@
      this.businessId = this.$route.params.businessId;
      this.controlOption('open')
      historyFlowList(this.processInstanceId).then(res => {
        const data = res.data;
        if (data.success) {
          this.flowList = data.data;
          if (this.flowList[this.flowList.length-1].historyActivityId == 'userTask'){
            this.controlOption('userTask')
            this.isUserTask = true
          }
        }
      })
      applicationDetail(this.businessId).then(res => {
        const data = res.data;
        if (data.success) {
          this.form = data.data;
          this.cloneForm = deepClone(this.form)
          this.initForm()
        }
      })
    },
    //==============审批人员审核方法=======================
    //同意
    handleAgree() {
      if (!this.agreeModel.comment) {
        this.$message.warning('请先填写批复意见');
        this.$message.warning('请先填写反馈意见');
        return;
      }
      const params = {
@@ -220,6 +317,7 @@
        processInstanceId: this.processInstanceId,
        flag: 'ok',
        comment: this.agreeModel.comment,
        isSuggestion:false,
      };
      completeTask(params).then(res => {
        const data = res.data;
@@ -234,14 +332,15 @@
    },
    //驳回
    handleDisagree() {
      if (!this.form.comment) {
        this.$message.warning('请先填写批复意见');
      if (!this.rejectModel.comment) {
        this.$message.warning('请先填写反馈意见');
        return;
      }
      const params = {
        taskId: this.taskId,
        processInstanceId: this.processInstanceId,
        comment: this.form.comment,
        comment: this.rejectModel.comment,
        isSuggestion:false
      };
      completeTask(params).then(res => {
        const data = res.data;
@@ -256,7 +355,95 @@
    },
    //完善
    handlePolish() {
      if (!this.polishModel.comment) {
        this.$message.warning('请先填写反馈意见');
        return;
      }
      const params = {
        taskId: this.taskId,
        processInstanceId: this.processInstanceId,
        comment: this.polishModel.comment,
        suggestion:this.polishModel.suggestion,
        isSuggestion:true,
      };
      completeTask(params).then(res => {
        const data = res.data;
        if (data.success) {
          this.$message.success(data.msg);
          this.$router.$avueRouter.closeTag();
          this.$router.push({path: `/work/start`});
        } else {
          this.$message.error(data.msg || '提交失败');
        }
      })
    },
    //===============申请人员审核方法================
    //采纳意见
    userHandleAgree(){
      const params = {
        ...this.form,
        taskId: this.taskId,
        processInstanceId: this.processInstanceId,
        flag: 'ok',
        comment: this.userAgreeModel.comment,
        isSuggestion:true,
      };
      userCompleteTask(params).then(res => {
        const data = res.data;
        if (data.success) {
          this.$message.success(data.msg);
          this.$router.$avueRouter.closeTag();
          this.$router.push({path: `/work/start`});
        } else {
          this.$message.error(data.msg || '提交失败');
        }
      })
    },
    //撤销申请
    userHandleDisagree(){
      if (!this.rejectModel.comment) {
        this.$message.warning('请先填写反馈意见');
        return;
      }
      const params = {
        taskId: this.taskId,
        processInstanceId: this.processInstanceId,
        comment: this.userRejectModel.comment,
      };
      userCompleteTask(params).then(res => {
        const data = res.data;
        if (data.success) {
          this.$message.success(data.msg);
          this.$router.$avueRouter.closeTag();
          this.$router.push({path: `/work/start`});
        } else {
          this.$message.error(data.msg || '提交失败');
        }
      })
    },
    //不采纳意见
    userHandlePolish(){
      const params = {
        taskId: this.taskId,
        processInstanceId: this.processInstanceId,
        flag: 'ok',
        isSuggestion:false,
        comment: this.polishModel.comment,
      };
      userCompleteTask(params).then(res => {
        const data = res.data;
        if (data.success) {
          this.$message.success(data.msg);
          this.$router.$avueRouter.closeTag();
          this.$router.push({path: `/work/start`});
        } else {
          this.$message.error(data.msg || '提交失败');
        }
      })
    },
    handleCancel() {
      this.$router.$avueRouter.closeTag();
      this.$router.push({path: `/work/start`});
@@ -319,8 +506,29 @@
        this.option.submitBtn = true
        this.option.emptyBtn = true
      }
      }else if (arg == 'userTask'){
        //解除禁用状态
        this.option.group.forEach(group => {
          group.column.forEach(item => {
            item.disabled = false
          })
        })
      }else if (arg == 'noPolish'){
        //设置group内全为禁用状态
        this.option.group.forEach(group => {
          group.column.forEach(item => {
            item.disabled = true
          })
        })
      }
    },
    tabsClick(tab){
      if (tab.name == 'userAgree'){
        this.controlOption('userTask')
      }else {
        this.controlOption('noPolish')
      }
    }
  }
}