<template>
  <a-card :bordered="false">
    <a-row>
      <a-col :md="2" :sm="4">
        <a-select defaultValue="POST" style="width: 90px" @change="handleChange" size="large">
          <a-select-option value="POST">POST</a-select-option>
          <!--<a-select-option value="GET">GET</a-select-option>-->
        </a-select>
      </a-col>
      <a-col :md="22" :sm="20">
        <a-input-search
          placeholder="input send url"
          v-model="url"
          @search="onSearch"
          enterButton="Send"
          size="large"/>
      </a-col>
    </a-row>

    <a-tabs defaultActiveKey="2">
      <a-tab-pane tab="params" key="2">
        <textarea style="width:100%;font-size: 16px;font-weight:500" :rows="13" @input="changeVal">
        </textarea>
      </a-tab-pane>
    </a-tabs>

    <a-tabs defaultActiveKey="1">
      <a-tab-pane tab="response" key="1">
        <textarea style="width:100%;font-size: 16px;font-weight:500" :rows="10" v-html="resultJson" readonly>
        </textarea>
      </a-tab-pane>
    </a-tabs>
  </a-card>
</template>
<script>
  import {postAction, getAction} from '@/api/manage'
  import {ACCESS_TOKEN} from "@/store/mutation-types"
  import Vue from 'vue'

  export default {
    name: 'FlowTest',
    data() {
      return {
        url: "",
        paramJson: "",
        resultJson: {},
        requestMethod: "POST"
      }
    },
    methods: {
      onSearch(value) {
        let that = this
        this.resultJson = {};
        if ("POST" === this.requestMethod.toUpperCase()) {
          postAction(value, this.paramJson).then((res) => {
            console.log(res)
            this.resultJson = res
          }).catch((err) => {
            that.$message.error("请求异常：" + err)
          })
        } else {
          getAction(value, this.paramJson).then((res) => {
            console.log(res)
            this.resultJson = res;
          }).catch((err) => {
            that.$message.error("请求异常：" + err)
          })
        }
      },
      changeVal(e) {
        try {
          let json = e.target.value;
          json = json.replace(/\n/g, "");
          json = json.replace(/\s*/g, "");
          if (json.indexOf(",}") > 0) {
            json = json.replace(",}", "}");
          }
          this.paramJson = JSON.parse(json);
        } catch (e) {
          console.log(e);
          this.$message.error("非法的JSON字符串")
        }
      },
      handleChange(value) {
        this.requestMethod = value;
      },
      created() {
        const token = Vue.ls.get(ACCESS_TOKEN);
        this.headers = {"X-Access-Token": token}

      }
    }
  }
</script>