Browse Source

请托流程

2213980799@qq.com 1 năm trước cách đây
mục cha
commit
99f63cf361

+ 25 - 0
src/api/bpm/components/entrust/index.js

@@ -0,0 +1,25 @@
+import request from '@/utils/request';
+
+
+
+//新建/修改
+export async function save(data) {
+  const res = await request.post('/mes/please_entrust_management/' + (data.id ? 'update' : 'add'), data);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+
+
+/**
+ * 详情
+ */
+ export async function details(id) {
+  const res = await request.get(`mes/please_entrust_management/details/${id}`);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+  return Promise.reject(new Error(res.data.message));
+}
+

+ 7 - 0
src/api/mes/index.js

@@ -84,3 +84,10 @@ export async function getStorageDetail(id) {
   }
   return Promise.reject(new Error(res.data.message));
 }
+// 工序
+export async function getProduceTaskList(params) {
+  const res = await request.post('/main/producerouting/taskinstance/page',params);
+  if (res.data.code == 0) {
+    return res.data.data;
+  }
+}

+ 1 - 0
src/components/CommomSelect/dept-select.vue

@@ -11,6 +11,7 @@
     :placeholder="placeholder"
     @input="updateValue"
     @change="changeChoose"
+    v-bind="$attrs"
   />
 </template>
 

+ 2 - 2
src/components/bpmnProcessDesigner/package/theme/process-panel.scss

@@ -96,8 +96,8 @@
 .el-collapse-item__content {
   padding-bottom: 0;
 }
-.el-input.is-disabled .el-input__inner {
-  color: #999999;
+.el-input.is-disabled .el-input__inner{
+  color: #606266;
 }
 .el-form-item.el-form-item--mini {
   margin-bottom: 0;

+ 2 - 0
src/enum/dict.js

@@ -78,6 +78,8 @@ export default {
   异常处置: 'Exception_dispose',
   问题类型: 'question_type',
   变更类型: 'change_type',
+  请托类型: 'entrust_type',
+
 };
 
 export const numberList = [

+ 424 - 0
src/views/bpm/handleTask/components/entrust/create.vue

@@ -0,0 +1,424 @@
+<template>
+  <div>
+    <el-form
+      ref="form"
+      :model="form"
+      :rules="rules"
+      label-width="100px"
+      class="create-form"
+    >
+      <headerTitle title="基本信息" style="margin-top: 15px"></headerTitle>
+
+      <el-row :gutter="15">
+        <el-col v-bind="styleResponsive ? { lg: 8, md: 12 } : { span: 8 }">
+          <el-form-item label="类型:" prop="type">
+            <DictSelection
+              dictName="请托类型"
+              v-model="form.type"
+              :disabled="type == 'detail'"
+            ></DictSelection>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="紧急程度:" prop="priority">
+            <el-select
+              style="width: 100%"
+              v-model="form.priority"
+              placeholder="请选择"
+              clearable
+              :disabled="type == 'detail'"
+            >
+              <el-option
+                v-for="item in options"
+                :key="item.value"
+                :label="item.name"
+                :value="item.value"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col v-bind="styleResponsive ? { lg: 8, md: 24 } : { span: 8 }">
+          <el-form-item label="编码:" prop="code">
+            <el-input v-model="form.code" disabled />
+          </el-form-item>
+        </el-col>
+        <el-col v-bind="styleResponsive ? { lg: 8, md: 24 } : { span: 8 }">
+          <el-form-item label="名称:" prop="name">
+            <el-input v-model="form.name" :disabled="type == 'detail'" />
+          </el-form-item>
+        </el-col>
+        <el-col v-bind="styleResponsive ? { lg: 8, md: 24 } : { span: 8 }">
+          <el-form-item label="生产工单:" prop="workOrderCode">
+            <el-input
+              v-model="form.workOrderCode"
+              placeholder="请选择"
+              style="width: 100%"
+              clearable
+              :disabled="type == 'detail'"
+              @click.native="addProduct"
+            >
+            </el-input>
+          </el-form-item>
+        </el-col>
+        <el-col v-bind="styleResponsive ? { lg: 8, md: 24 } : { span: 8 }">
+          <el-form-item label="工序:" prop="procedureList">
+            <el-select
+              style="width: 100%"
+              v-model="form.procedureList"
+              multiple
+              placeholder="请选择"
+              clearable
+              :disabled="type == 'detail'"
+            >
+              <el-option
+                v-for="item in produceTaskList"
+                :key="item.id"
+                :label="item.name"
+                :value="item.id"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="请托部门:" prop="pleaseEntrustDeptId">
+            <el-input v-model="form.pleaseEntrustDeptName" clearable disabled>
+            </el-input>
+            <!-- <deptSelect
+              :disabled="type == 'detail'"
+              v-model="form.pleaseEntrustDeptId"
+              @changeGroup="searchDeptNodeClick"
+            /> -->
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="请托人:" prop="pleaseEntrustUserId">
+            <el-input v-model="form.pleaseEntrustUserName" clearable disabled />
+          </el-form-item>
+        </el-col>
+        <el-col v-bind="styleResponsive ? { lg: 8, md: 8 } : { span: 8 }">
+          <el-form-item label="所属工厂:" prop="factoriesName">
+            <el-input v-model="form.factoriesName" style="width: 100%" disabled>
+            </el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="受托工厂:" prop="beEntrustedFactoriesId">
+            <el-select
+              style="width: 100%"
+              v-model="form.beEntrustedFactoriesId"
+              placeholder="请选择"
+              clearable
+              :disabled="type == 'detail'"
+            >
+              <el-option
+                v-for="item in factoryList"
+                :key="item.id"
+                :label="item.name"
+                :value="item.id"
+                @click.native="factoryListChange(item)"
+              >
+              </el-option>
+            </el-select>
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="受托部门:" prop="beEntrustedDeptId">
+            <deptSelect
+              :disabled="type == 'detail'"
+              v-model="form.beEntrustedDeptId"
+              @changeGroup="beEntrustedDeptIdChange"
+            />
+          </el-form-item>
+        </el-col>
+        <el-col :span="8">
+          <el-form-item label="完成时间:" prop="finishTime">
+            <el-date-picker
+              v-model="form.finishTime"
+              type="date"
+              value-format="yyyy-MM-dd"
+              style="width: 100%"
+              :disabled="type == 'detail'"
+            ></el-date-picker>
+          </el-form-item>
+        </el-col>
+     
+        <el-col v-bind="styleResponsive ? { lg: 24, md: 24 } : { span: 24 }">
+          <el-form-item label="需求描述:">
+            <el-input
+              v-model="form.describes"
+              type="textarea"
+              :rows="2"
+              :disabled="type == 'detail'"
+            />
+          </el-form-item>
+        </el-col>
+        <!-- <el-col :span="8">
+          s
+        </el-col> -->
+      </el-row>
+      <headerTitle title="产品信息" style="margin-top: 15px"></headerTitle>
+
+      <el-table :data="form.pleaseEntrustObjList" border height="40vh">
+        <el-table-column label="序号" align="center" width="60">
+          <template slot-scope="scope">
+            <span>{{ scope.$index + 1 }}</span>
+          </template>
+        </el-table-column>
+
+        <el-table-column label="产品名称" align="center" prop="productName">
+        </el-table-column>
+        <el-table-column label="产品编号" align="center" prop="productCode">
+        </el-table-column>
+        <el-table-column label="牌号" align="center" prop="brandNo">
+        </el-table-column>
+        <el-table-column label="批号" align="center" prop="batchNo">
+        </el-table-column>
+        <!-- <el-table-column label="型号" align="center" prop="model">
+        </el-table-column> -->
+        <el-table-column label="规格" align="center" prop="specification">
+        </el-table-column>
+        <el-table-column label="数量" align="center" prop="productNumber">
+          <template slot-scope="scope">
+            <el-form-item
+              label-width="0px"
+              :prop="'pleaseEntrustObjList.' + scope.$index + '.productNumber'"
+              :rules="[
+                {
+                  required: true,
+                  message: '请输入数量',
+                  trigger: 'blur'
+                }
+              ]"
+            >
+              <el-input
+                :disabled="type == 'detail'"
+                v-model.number="scope.row.productNumber"
+                size="small"
+                oninput="value=value.replace(/[^\d]/g,'')"
+                style="width: 100%"
+                placeholder="输入数量"
+              ></el-input>
+            </el-form-item>
+          </template>
+        </el-table-column>
+        <el-table-column
+          label="完成时间"
+          align="center"
+          prop="finishTime"
+          width="180"
+        >
+          <template slot-scope="scope">
+            <el-form-item
+              label-width="0px"
+              :prop="'pleaseEntrustObjList.' + scope.$index + '.finishTime'"
+              :rules="[
+                {
+                  required: true,
+                  message: '请选择',
+                  trigger: 'blur'
+                }
+              ]"
+            >
+              <el-date-picker
+                :disabled="type == 'detail'"
+                style="width: 100%"
+                v-model="scope.row.finishTime"
+                type="date"
+                value-format="yyyy-MM-dd"
+              ></el-date-picker>
+            </el-form-item>
+          </template>
+        </el-table-column>
+      </el-table>
+    </el-form>
+
+    <produceOrder ref="produceOrderRef" @choose="choose" />
+  </div>
+</template>
+
+<script>
+import produceOrder from './produceOrder';
+import deptSelect from '@/components/CommomSelect/dept-select.vue';
+import { getProduceTaskList } from '@/api/mes';
+import warehouseDefinition from '@/api/warehouseManagement/warehouseDefinition';
+import { details } from '@/api/bpm/components/entrust';
+
+const defaultForm = function () {
+  return {
+    createTime: '', //创建时间
+    code: '', //编码
+    name: '', //名称
+    workOrderCode: '', //工单编码
+    pleaseEntrustUserId: '', //请托人id
+    pleaseEntrustUserName: '', //请托人名称
+    pleaseEntrustDeptId: '', //请托人部门id
+    pleaseEntrustDeptName: '', //请托人部门名称
+    beEntrustedDeptId: '', //受托人部门id.
+    beEntrustedDeptName: '', //受托人部门名称
+    produceRoutingId: null,
+    produceRoutingName: '',
+    procedureList: [],
+    pleaseEntrustObjList: [], //具体请托对象
+    type: '', //类型
+    status: '',
+    describes: '', //描述
+    finishTime: '', //完成时间
+    processInstanceId: '', //流程实例id
+    factoriesName: '',
+    factoriesId: '',
+    priority: '',
+    beEntrustedFactoriesId: '', //受托工厂id
+    beEntrustedFactoriesName: '' //受托工厂名称
+  };
+};
+export default {
+  components: { produceOrder, deptSelect },
+  data() {
+    return {
+      loading: false,
+      form: { ...defaultForm() },
+      options: [
+        {
+          name: '一般',
+          value: 1
+        },
+        {
+          name: '紧急',
+          value: 2
+        }
+      ],
+      // 表单验证规则
+      rules: {
+        type: [{ required: true, message: '请选择', trigger: 'change' }],
+        name: [{ required: true, message: '请输入', trigger: 'change' }],
+
+        workOrderCode: [
+          { required: true, message: '请选择', trigger: 'change' }
+        ],
+        beEntrustedDeptId: [
+          { required: true, message: '请选择', trigger: 'change' }
+        ],
+        finishTime: [{ required: true, message: '请选择', trigger: 'change' }]
+      },
+      type: '',
+      produceTaskList: [],
+      factoryList: []
+    };
+  },
+  props: {
+    businessId: {
+      default: ''
+    },
+    taskDefinitionKey: {
+      default: ''
+    }
+  },
+  computed: {
+    // 是否开启响应式布局
+    styleResponsive() {
+      return this.$store.state.theme.styleResponsive;
+    }
+  },
+  created() {
+    this.getFactoryList();
+    this.init();
+  },
+  methods: {
+    async init() {
+      const data = await details(this.businessId);
+      this.type = this.taskDefinitionKey == 'starter' ? 'edit' : 'detail';
+      this.form = data;
+      this.getProduceTaskList();
+      this.form.procedureList = this.form.procedureList.map(
+        (item) => item.produceTaskId
+      );
+      this.form.type = this.form.type + '';
+    },
+
+    addProduct() {
+      this.$refs.produceOrderRef.open();
+    },
+
+    beEntrustedDeptIdChange(val, row) {
+      this.form.beEntrustedDeptName = row.name;
+    },
+    factoryListChange(row) {
+      this.form.beEntrustedFactoriesName = row.name;
+    },
+    async getFactoryList() {
+      const { list } = await warehouseDefinition.getFactoryarea({
+        pageNum: 1,
+        size: 999,
+        type: 1
+      });
+      this.factoryList = list || [];
+    },
+
+    choose(data) {
+      this.form.workOrderCode = data.code;
+      this.form.produceRoutingId = data.produceRoutingId;
+      this.form.produceRoutingName = data.produceRoutingName;
+      this.form.pleaseEntrustObjList = [data];
+      this.form.procedureList = [];
+      this.getProduceTaskList();
+    },
+    async getProduceTaskList() {
+      const res = await getProduceTaskList({
+        isDetail: true,
+        pageNum: 1,
+        routingId: this.form.produceRoutingId,
+        size: -1
+      });
+      this.produceTaskList = res.list;
+    },
+    async getTableValue() {
+      let data = JSON.parse(JSON.stringify(this.form));
+      data.procedureList = data.procedureList.map((item) => {
+        return {
+          produceTaskId: item,
+          produceTaskName: this.produceTaskList.find((val) => val.id == item)
+            .name
+        };
+      });
+      if (await this.getValidate()) {
+        return data;
+      }
+      return false;
+    },
+
+    getValidate() {
+      return new Promise((resolve, reject) => {
+        this.$refs.form.validate((valid) => {
+          if (!valid) {
+            resolve(false);
+          } else {
+            resolve(true);
+          }
+        });
+      });
+    }
+  }
+};
+</script>
+<style lang="scss" scoped>
+.basic-details-title {
+  margin: 10px 0;
+}
+
+.add-product {
+  width: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: flex-end;
+  font-size: 30px;
+  color: #1890ff;
+  margin: 10px 0;
+  cursor: pointer;
+}
+
+.create-form .el-form-item {
+  margin-bottom: 15px !important;
+}
+</style>

+ 268 - 0
src/views/bpm/handleTask/components/entrust/produceOrder.vue

@@ -0,0 +1,268 @@
+<template>
+  <el-dialog
+    :visible.sync="equipmentdialog"
+    :before-close="handleClose"
+    :close-on-click-modal="true"
+    :close-on-press-escape="false"
+    append-to-body
+    width="70%"
+    title="生产工单"
+  >
+    <div>
+      <el-row>
+        <el-col :span="24" class="table_col" v-if="equipmentdialog">
+          <ele-pro-table
+            ref="equiTable"
+            :columns="columns"
+            :datasource="datasource"
+            :selection.sync="selection"
+            :current.sync="current"
+            highlight-current-row
+            row-key="id"
+            height="50vh"
+            @done="onDone"
+          >
+          </ele-pro-table>
+        </el-col>
+      </el-row>
+    </div>
+    <div class="btns">
+      <el-button type="primary" size="small" @click="selected">选择</el-button>
+      <el-button size="small" @click="handleClose">关闭</el-button>
+    </div>
+  </el-dialog>
+</template>
+
+<script>
+import { produceOrder } from '@/api/bpm/components/exceptionManagement';
+
+export default {
+  components: {},
+  props: {
+    selectList: Array,
+    type: {
+      default: 2 //1多选 2单选
+    }
+  },
+  data() {
+    return {
+      planType: [
+        { label: '所有计划类型', value: null },
+        { label: '内销计划', value: '1' },
+        { label: '外销计划', value: '2' },
+        { label: '预制计划', value: '3' }
+      ],
+      equipmentdialog: false,
+      current: null,
+      columns: [
+        {
+          width: 45,
+          type: 'selection',
+          columnKey: 'selection',
+          align: 'center',
+          reserveSelection: true,
+          show: this.type == 1
+        },
+        {
+          label: '生产工单号',
+          align: 'center',
+          prop: 'code',
+
+          minWidth: 110
+        },
+
+        {
+          prop: 'productionPlanCode',
+          label: '计划编号',
+          align: 'center',
+          minWidth: 110
+        },
+        {
+          prop: 'planType',
+          label: '计划类型',
+          align: 'center',
+          formatter: (row) => {
+            const obj = this.planType.find((i) => i.value == row.planType);
+            return obj && obj.label;
+          }
+        },
+        {
+          prop: 'produceRoutingName',
+          label: '工艺路线',
+          align: 'center'
+        },
+        {
+          prop: 'productCode',
+          label: '产品编号',
+          align: 'center'
+        },
+        {
+          prop: 'productName',
+          label: '产品名称',
+          align: 'center'
+        },
+        {
+          prop: 'brandNo',
+          label: '牌号',
+          align: 'center'
+        },
+        {
+          prop: 'specification',
+          label: '规格',
+          align: 'center'
+        },
+        {
+          prop: 'model',
+          label: '型号',
+          align: 'center'
+        },
+        {
+          prop: 'batchNo',
+          label: '批号',
+          align: 'center',
+          minWidth: 100,
+          showOverflowTooltip: true
+        },
+
+        {
+          prop: 'priority',
+          label: '优先级',
+          align: 'center',
+          minWidth: 120,
+          sortable: 'custom'
+        },
+
+        {
+          prop: 'formingNum',
+          label: '要求生产数量',
+          align: 'center',
+          showOverflowTooltip: true,
+          minWidth: 110
+        },
+        {
+          prop: 'formingWeight',
+          label: '要求生产重量',
+          align: 'center',
+          showOverflowTooltip: true,
+          minWidth: 110
+        },
+        {
+          prop: 'formedNum',
+          label: '已生产数量',
+          align: 'center',
+          showOverflowTooltip: true,
+          minWidth: 110
+        },
+        {
+          prop: 'formedWeight',
+          label: '已生产重量',
+          align: 'center',
+          showOverflowTooltip: true,
+          minWidth: 110
+        },
+        {
+          prop: 'planStartTime',
+          label: '计划开始时间',
+          align: 'center',
+          showOverflowTooltip: true,
+          minWidth: 110
+        },
+        {
+          prop: 'planCompleteTime',
+          label: '计划结束时间',
+          align: 'center',
+          showOverflowTooltip: true,
+          minWidth: 110
+        },
+        {
+          prop: 'startTime',
+          label: '实际开始时间',
+          align: 'center',
+          showOverflowTooltip: true,
+          minWidth: 110
+        },
+
+        {
+          prop: 'createTime',
+          label: '创建时间',
+          align: 'center',
+          showOverflowTooltip: true,
+          minWidth: 110
+        },
+
+        {
+          prop: 'teamName',
+          label: '班组',
+          align: 'center',
+          showOverflowTooltip: true
+        }
+      ],
+      categoryLevelId: null,
+      code: null,
+      selection: [],
+      ids: []
+    };
+  },
+
+  watch: {},
+  methods: {
+    datasource({ page, where, limit }) {
+      return produceOrder({
+        ...where,
+        pageNum: page,
+        size: limit
+      });
+    },
+    open(ids) {
+      this.equipmentdialog = true;
+    },
+    onDone() {
+      this.$nextTick(() => {
+        this.$refs.equiTable.setSelectedRowKeys(this.ids);
+      });
+    },
+    handleClose() {
+      this.equipmentdialog = false;
+      this.$refs.equiTable.clearSelection();
+    },
+    // 选择
+    selected() {
+      let data =
+        this.type == 1
+          ? JSON.parse(JSON.stringify(this.selection))
+          : JSON.parse(JSON.stringify(this.current));
+      data['productNumber'] = data.formingNum;
+
+      this.$emit('choose', data);
+      this.handleClose();
+    }
+  }
+};
+</script>
+
+<style lang="scss" scoped>
+.tree_col {
+  border: 1px solid #eee;
+  padding: 10px 0;
+  box-sizing: border-box;
+  max-height: 530px;
+  overflow: auto;
+}
+.table_col {
+  padding-left: 10px;
+  ::v-deep .el-table th.el-table__cell {
+    background: #f2f2f2;
+  }
+}
+.pagination {
+  text-align: right;
+  padding: 10px 0;
+}
+.btns {
+  text-align: center;
+  padding: 10px 0;
+}
+.topsearch {
+  margin-bottom: 15px;
+}
+</style>

+ 205 - 0
src/views/bpm/handleTask/components/entrust/submit.vue

@@ -0,0 +1,205 @@
+<template>
+  <el-col :span="16" :offset="6">
+    <el-form label-width="100px" ref="formRef" :model="form">
+      <!-- <el-form-item label="完成时间:" prop="finishTime">
+        <el-date-picker
+          v-model="form.finishTime"
+          type="date"
+          value-format="yyyy-MM-dd"
+        ></el-date-picker>
+      </el-form-item> -->
+
+      <el-form-item
+        label="审批建议"
+        prop="reason"
+        style="margin-bottom: 20px"
+        :rules="{
+          required: true,
+          message: '请选择',
+          trigger: 'change'
+        }"
+      >
+        <el-input
+          type="textarea"
+          v-model="form.reason"
+          placeholder="请输入审批建议"
+        />
+      </el-form-item>
+    </el-form>
+    <div style="margin-left: 10%; margin-bottom: 20px; font-size: 14px">
+      <el-button
+        icon="el-icon-edit-outline"
+        type="success"
+        size="mini"
+        @click="handleAudit(1)"
+        >通过
+      </el-button>
+      <el-button
+        icon="el-icon-edit-outline"
+        type="warning"
+        size="mini"
+        @click="edit"
+        >修改完成时间
+      </el-button>
+
+      <el-button
+        icon="el-icon-circle-close"
+        type="danger"
+        size="mini"
+        @click="handleAudit(0)"
+        v-if="taskDefinitionKey != 'starter'"
+        >驳回
+      </el-button>
+      <!-- <el-dropdown
+        @command="(command) => handleCommand(command)"
+        style="margin-left: 30px"
+      >
+        <span class="el-dropdown-link">
+          更多<i class="el-icon-arrow-down el-icon--right"></i>
+        </span>
+        <el-dropdown-menu slot="dropdown">
+          <el-dropdown-item command="cancel">作废</el-dropdown-item>
+        </el-dropdown-menu>
+      </el-dropdown> -->
+    </div>
+    <ele-modal
+      :visible.sync="visible"
+      title="修改完成时间"
+      width="20vw"
+      append-to-body
+      @close="cancel"
+    >
+      <el-form label-width="100px" ref="formRef1" :model="formData">
+        <el-form-item
+          label="完成时间:"
+          prop="finishTime"
+          :rules="{
+            required: true,
+            message: '请输入',
+            trigger: 'change'
+          }"
+        >
+          <el-date-picker
+            v-model="formData.finishTime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            style="width: 100%"
+          ></el-date-picker>
+        </el-form-item>
+        <el-form-item
+          label="审批建议"
+          prop="reason"
+          style="margin-bottom: 20px"
+          :rules="{
+            required: true,
+            message: '请选择',
+            trigger: 'change'
+          }"
+        >
+          <el-input
+            type="textarea"
+            v-model="formData.reason"
+            placeholder="请输入审批建议"
+          />
+        </el-form-item>
+      </el-form>
+      <template v-slot:footer>
+        <el-button @click="visible = false">取消</el-button>
+        <el-button type="primary" @click="save"> 确定 </el-button>
+      </template>
+    </ele-modal>
+  </el-col>
+</template>
+
+<script>
+import { approveTaskWithVariables } from '@/api/bpm/task';
+import dictMixins from '@/mixins/dictMixins';
+import { save } from '@/api/bpm/components/entrust';
+
+// import {
+//   assign,
+//   cancel
+// } from '@/api/bpm/components/purchasingManage/purchasePlanManage';
+
+// 流程实例的详情页,可用于审批
+export default {
+  mixins: [dictMixins],
+
+  name: '',
+  components: {
+    //   Parser
+  },
+  props: {
+    businessId: {
+      default: ''
+    },
+    taskId: {
+      default: ''
+    },
+    id: {
+      default: ''
+    },
+    taskDefinitionKey: {
+      default: ''
+    }
+  },
+  data() {
+    return {
+      visible: false,
+      form: {
+        reason: ''
+      },
+      formData: {
+        finishTime: ''
+      }
+    };
+  },
+  created() {},
+  methods: {
+    async edit() {
+      this.visible = true;
+      this.formData = await this.getTableValue();
+    },
+    async handleAudit(status) {
+      //申请人申请
+      if (this.taskDefinitionKey === 'starter') {
+        const data = await this.getTableValue();
+        // return
+        if (data) {
+          await save(data);
+        }
+      }
+      await this._approveTaskWithVariables(status);
+    },
+    async save() {
+      await save(this.formData);
+    },
+    async _approveTaskWithVariables(status) {
+      let variables = {
+        pass: !!status
+      };
+      approveTaskWithVariables({
+        id: this.taskId,
+        reason: this.form.reason,
+        variables
+      }).then((res) => {
+        if (res.data.code != '-1') {
+          this.$emit('handleAudit', {
+            status,
+            title: status === 0 ? '驳回' : ''
+          });
+        }
+      });
+    },
+    getTableValue() {
+      return new Promise((resolve, reject) => {
+        this.$emit('getTableValue', async (data) => {
+          resolve(await data);
+        });
+      });
+    }
+  }
+};
+</script>
+
+<style lang="scss"></style>