<template>
  <view class="">
    <u--form
      style="margin: 0 20px"
      labelPosition="left"
      :model="form"
      :rules="rules"
      ref="uForm"
      labelWidth="140rpx"
    >
      <u-form-item label="审批建议" prop="reason" required>
        <u--textarea
          style="width: 100%"
          height="120"
          border="surround"
          placeholder="请输入审批建议"
          v-model="form.reason"
        ></u--textarea>
      </u-form-item>
    </u--form>
    <view class="btnList">
      <u-button
        style="width: 45%; margin-bottom: 10rpx"
        :loading="loading"
        type="success"
        text="通过"
        @click="handleAudit(1)"
      >
      </u-button>
      <u-button
        style="width: 45%"
        :loading="loading"
        type="error"
        text="驳回"
        @click="handleAudit(0)"
      ></u-button>
    </view>
  </view>
</template>

<script>
import {
  approveTaskWithVariables,
  rejectTask,
} from "@/api/wt/index.js";

export default {
  name: "taskSubmit",
  props: {
    businessId: {
      default: "",
    },
    taskId: {
      default: "",
    },
    id: {
      default: "",
    },
    taskDefinitionKey: {
      default: "",
    },
  },
  data() {
    return {
      loading: false,
      form: {
        reason: "同意",
      },
      rules: {
        reason: {
          type: "string",
          required: true,
          message: "请输入审批建议",
          trigger: "blur",
        },
      },
    };
  },
  mounted() {
    this.$refs.uForm.setRules(this.rules);
  },
  methods: {
    async handleAudit(status) {
      try {
        await this.$refs.uForm.validate();
      } catch (e) {
        return;
      }
      await this._approveTaskWithVariables(status);
    },

    async _approveTaskWithVariables(status) {
      this.loading = true;
      try {
        let variables = {
          pass: !!status,
        };
        const API = !!status ? approveTaskWithVariables : rejectTask;
        const res = await API({
          id: this.taskId,
          reason: this.form.reason,
          variables,
        });
        if (res && res.code !== "-1") {
          this.$emit("handleAudit", {
            status,
            title: status === 0 ? "驳回" : "",
          });
        }
      } catch (error) {
        console.error("审批操作失败", error);
        uni.showToast({
          title: status === 1 ? "审批失败" : "驳回失败",
          icon: "none",
        });
      } finally {
        this.loading = false;
      }
    },

    getTableValue() {
      return new Promise((resolve, reject) => {
        this.$emit("getTableValue", async (data) => {
          resolve(await data);
        });
      });
    },
  },
};
</script>

<style scoped>
.btnList {
  display: flex;
}
</style>
