p_test.vue 4.86 KB
<template>
  <div style="margin-top: 1rem;">
    <van-form @submit="onSubmit">
      <van-cell-group inset>
        <!-- <van-field
          v-model="openid"
          name="openid"
          label="openid"
          placeholder="openid"
        /> -->
        <van-field
          v-model="fieldValue"
          is-link
          readonly
          label="openid"
          placeholder="选择openid"
          @click="showPicker = true"
        />
        <van-field
          v-model="count"
          name="count"
          label="count"
          placeholder="循环次数"
        />
        <van-field
          v-model="offset"
          name="offset"
          label="offset"
          placeholder="起始值"
        />
      </van-cell-group>
      <div style="margin: 16px;">
        <van-row gutter="20">
          <van-col span="12">
            <van-button round block type="primary" native-type="submit">
              提交
            </van-button>
          </van-col>
          <van-col span="12">
            <van-button round block type="danger" @click="stop=true">
              终止
            </van-button>
          </van-col>
        </van-row>
      </div>
    </van-form>
    <div style="padding: 1rem;">
      <p>成功次数:{{ success_count }}</p>
      <div>
        <p>失败信息:</p>
        <p v-for="(item, index) in error_msg" :key="index">{{ item }}</p>
      </div>
      <div>
        <p>错误信息:</p>
        <p v-for="(item, index) in fail_msg" :key="index">{{ item }}</p>
      </div>
    </div>


    <van-popup v-model:show="showPicker" round position="bottom">
      <van-picker
        :columns="columns"
        @cancel="showPicker = false"
        @confirm="onConfirm"
      />
    </van-popup>
  </div>
</template>

<script setup>
import { ref } from 'vue'
import { useRoute, useRouter } from 'vue-router'
import dayjs from 'dayjs';
import { Cookies, $, _, axios, storeToRefs, mainStore, Toast, useTitle } from '@/utils/generatePackage.js'
//import { } from '@/utils/generateModules.js'
//import { } from '@/utils/generateIcons.js'
//import { } from '@/composables'
const $route = useRoute();
const $router = useRouter();
useTitle($route.meta.title);

const openid = ref('');
const count = ref(null);
const offset = ref(0);
const success_count = ref(0);
const error_msg = ref([]);
const fail_msg = ref([]);
const stop = ref(false);

watch(
  () => count.value,
  () => {
    if (!count.value) {
      console.warn('开始时间', dayjs().format('HH:mm:ss'));
    }
  }
)

const onSubmit = async () => {
  if (openid.value) {
    // for (let i = offset.value; count.value > 0; i--) {
    //   count.value--;
    //   offset.value++;
    //   axios.get(`/srv/?a=no_auth_api&t=test_add_reserve&openid=${openid.value}&offset=${offset.value}`)
    //   .then(res => {
    //     if (res.data.code === 1) {
    //       success_count.value++;
    //     } else {
    //       error_msg.value.push(res.data.msg);
    //     }
    //   })
    //   .catch(err => {
    //     fail_msg.value.push(err);
    //   })
    //   .finally(() => { // 最终执行
    //   })
    //   await sleep(1); // 等待1毫秒
    //   if (stop.value) {
    //     break;
    //   }
    // }
    // 定义并发请求的 URL 列表
    const urls = [
    ];

    for (let i = offset.value; count.value > 0; i--) {
      count.value--;
      offset.value++;
      urls.push(`/srv/?a=no_auth_api&t=test_add_reserve&openid=${openid.value}&offset=${offset.value}`);
      await sleep(1); // 等待1毫秒
      if (stop.value) {
        break;
      }
    }

    // 创建一个存储请求 Promise 的数组
    const requests = urls.map(url => axios.get(url));

    // 发送并发请求
    Promise.all(requests)
      .then(responses => {
        // 处理所有请求的响应
        responses.forEach(response => {
          if (response.data.code === 1) {
            success_count.value++;
          } else {
            error_msg.value.push(response.data.msg);
          }
        });

        console.warn('结束时间', dayjs().format('HH:mm:ss'));
      })
      .catch(error => {
        // 处理错误
        console.log('请求出错:', error);
      });
  }
};

const sleep = (ms) => {
  return new Promise(resolve => setTimeout(resolve, ms));
}

const columns = [
  { text: '李琛', value: 'o5CsxuLo0afvJXB8xu6quygh4MPY' },
  { text: '王鸿军', value: 'o5CsxuJLNcOYFPDDhO78q_jcIVQQ' },
  { text: 'Doris', value: 'o5CsxuI7VnvA1df1_Z6fjKm5fAQw' },
  { text: '胡一锐', value: 'o5CsxuF5AfUirRn4VUwaCSNZrUoM' },
  { text: '王佳琪', value: 'o5CsxuPn6EZ6_IMeCWJuxamDls1Y' },
  { text: '汪安军', value: 'o5CsxuEZkErN-51QKCb9r4LOCbtg' },
];
const showPicker = ref(false);
const fieldValue = ref('');

const onConfirm = ({ selectedOptions }) => {
  showPicker.value = false;
  fieldValue.value = selectedOptions[0].text;
  openid.value = selectedOptions[0].value;
};
</script>

<style lang="less" scoped>

</style>