Kaynağa Gözat

merge henan

mingfu 1 gün önce
ebeveyn
işleme
44e1c68bb6
93 değiştirilmiş dosya ile 19538 ekleme ve 8372 silme
  1. BIN
      back-ui/admin.zip
  2. 9 5
      back-ui/src/api/dz/cards.js
  3. 44 0
      back-ui/src/api/system/EcardPrice.js
  4. 0 340
      back-ui/src/views/dz/cards copy/components/ApplyCardDialog.vue
  5. 0 472
      back-ui/src/views/dz/cards copy/components/AssignCardDialog.vue
  6. 0 247
      back-ui/src/views/dz/cards copy/components/AssociateCampusDialog.vue
  7. 0 299
      back-ui/src/views/dz/cards copy/components/CardGenerationDialog.vue
  8. 0 181
      back-ui/src/views/dz/cards copy/components/CloseCardDialog.vue
  9. 0 249
      back-ui/src/views/dz/cards copy/components/EditStudentDialog.vue
  10. 0 181
      back-ui/src/views/dz/cards copy/components/PaymentDialog.vue
  11. 0 181
      back-ui/src/views/dz/cards copy/components/RefundDialog.vue
  12. 0 181
      back-ui/src/views/dz/cards copy/components/ReopenCardDialog.vue
  13. 0 291
      back-ui/src/views/dz/cards copy/config/form.js
  14. 0 195
      back-ui/src/views/dz/cards copy/config/table.js
  15. 0 950
      back-ui/src/views/dz/cards copy/index.vue
  16. 7 2
      back-ui/src/views/dz/cards/components/CardTable.vue
  17. 84 2
      back-ui/src/views/dz/cards/components/EditDialog.vue
  18. 26 7
      back-ui/src/views/dz/cards/index.vue
  19. 114 218
      back-ui/src/views/dz/orders/index.vue
  20. 2 2
      back-ui/src/views/login.vue
  21. 306 0
      back-ui/src/views/system/EcardPrice/index.vue
  22. 0 4172
      back-ui/yarn.lock
  23. 11 0
      ie-admin/pom.xml
  24. 105 0
      ie-admin/src/main/java/com/ruoyi/web/controller/dz/BusiEcardPriceController.java
  25. 26 19
      ie-admin/src/main/java/com/ruoyi/web/controller/dz/DzCardsController.java
  26. 407 0
      ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontECardController.java
  27. 3 2
      ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontExamController.java
  28. 11 12
      ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontNewsController.java
  29. 30 1
      ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontPaperController.java
  30. 12 0
      ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontPracticeController.java
  31. 8 4
      ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontStudentController.java
  32. 176 0
      ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontSyzyYfydController.java
  33. 271 0
      ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontSyzyZytbController.java
  34. 2 2
      ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontUniversitiesController.java
  35. 37 16
      ie-admin/src/main/java/com/ruoyi/web/controller/front/UserController.java
  36. 0 1
      ie-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
  37. 44 0
      ie-admin/src/main/java/com/ruoyi/web/core/config/WxPayConfiguration.java
  38. 41 0
      ie-admin/src/main/java/com/ruoyi/web/core/config/WxPayProperties.java
  39. 4 0
      ie-admin/src/main/java/com/ruoyi/web/domain/CardUserBody.java
  40. 14 0
      ie-admin/src/main/java/com/ruoyi/web/service/CommService.java
  41. 69 39
      ie-admin/src/main/java/com/ruoyi/web/service/ExamService.java
  42. 2 2
      ie-admin/src/main/java/com/ruoyi/web/service/LearnStatService.java
  43. 7 5
      ie-admin/src/main/java/com/ruoyi/web/service/PaperService.java
  44. 123 0
      ie-admin/src/main/java/com/ruoyi/web/service/ScoreGroupCalculator.java
  45. 267 0
      ie-admin/src/main/java/com/ruoyi/web/service/ScoreRankService.java
  46. 26 8
      ie-admin/src/main/java/com/ruoyi/web/service/StudentService.java
  47. 12 0
      ie-admin/src/main/java/com/ruoyi/web/service/SysLoginService.java
  48. 30 9
      ie-admin/src/main/java/com/ruoyi/web/service/SysRegisterService.java
  49. 8 0
      ie-admin/src/main/java/com/ruoyi/web/service/UserDetailsServiceImpl.java
  50. 418 0
      ie-admin/src/main/java/com/ruoyi/web/service/WeixinPayService.java
  51. 1683 0
      ie-admin/src/main/java/com/ruoyi/web/service/ZyService.java
  52. 28 0
      ie-admin/src/main/java/com/ruoyi/web/util/PageUtil.java
  53. 2 1
      ie-admin/src/main/java/com/ruoyi/web/util/VolunteerExporter.java
  54. 6163 0
      ie-admin/src/main/resources/templates/mht_report.xml
  55. 7156 0
      ie-admin/src/main/resources/templates/multiply_way_report.xml
  56. BIN
      ie-admin/src/main/resources/templates/wish_template.xlsx
  57. 22 1
      ie-common/src/main/java/com/ruoyi/common/core/content/VistorContextHolder.java
  58. 59 6
      ie-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
  59. 2 0
      ie-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java
  60. 21 0
      ie-common/src/main/java/com/ruoyi/common/enums/BindStatus.java
  61. 61 0
      ie-common/src/main/java/com/ruoyi/common/enums/ECardPayStatus.java
  62. 83 0
      ie-common/src/main/java/com/ruoyi/common/enums/NewgaokaoType.java
  63. 14 1
      ie-common/src/main/java/com/ruoyi/common/enums/UserRegStatus.java
  64. 10 4
      ie-common/src/main/java/com/ruoyi/common/utils/DateUtils.java
  65. 13 0
      ie-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java
  66. 22 0
      ie-system/src/main/java/com/ruoyi/dz/domain/DzCards.java
  67. 3 0
      ie-system/src/main/java/com/ruoyi/dz/mapper/DzCardsMapper.java
  68. 6 4
      ie-system/src/main/java/com/ruoyi/dz/service/IDzCardsService.java
  69. 14 5
      ie-system/src/main/java/com/ruoyi/dz/service/impl/DzCardsServiceImpl.java
  70. 1 1
      ie-system/src/main/java/com/ruoyi/learn/mapper/LearnExamineeMapper.java
  71. 1 1
      ie-system/src/main/java/com/ruoyi/learn/mapper/LearnPaperMapper.java
  72. 1 0
      ie-system/src/main/java/com/ruoyi/learn/service/ILearnPaperService.java
  73. 6 0
      ie-system/src/main/java/com/ruoyi/learn/service/impl/LearnPaperServiceImpl.java
  74. 1 1
      ie-system/src/main/java/com/ruoyi/syzy/service/impl/BBusiWishUniversitiesServiceImpl.java
  75. 108 0
      ie-system/src/main/java/com/ruoyi/voluntary/domain/BBusiEcardPrice.java
  76. 406 0
      ie-system/src/main/java/com/ruoyi/voluntary/domain/BBusiPaymentOrders.java
  77. 62 0
      ie-system/src/main/java/com/ruoyi/voluntary/mapper/BBusiEcardPriceMapper.java
  78. 64 0
      ie-system/src/main/java/com/ruoyi/voluntary/mapper/BBusiPaymentOrdersMapper.java
  79. 63 0
      ie-system/src/main/java/com/ruoyi/voluntary/service/IBBusiEcardPriceService.java
  80. 65 0
      ie-system/src/main/java/com/ruoyi/voluntary/service/IBBusiPaymentOrdersService.java
  81. 94 0
      ie-system/src/main/java/com/ruoyi/voluntary/service/impl/BBusiEcardPriceServiceImpl.java
  82. 122 0
      ie-system/src/main/java/com/ruoyi/voluntary/service/impl/BBusiPaymentOrdersServiceImpl.java
  83. 44 0
      ie-system/src/main/resources/mapper/dz/DzCardsMapper.xml
  84. 10 9
      ie-system/src/main/resources/mapper/dz/DzPaymentOrdersMapper.xml
  85. 2 2
      ie-system/src/main/resources/mapper/dz/DzSubjectMapper.xml
  86. 2 1
      ie-system/src/main/resources/mapper/learn/LearnExamineeMapper.xml
  87. 24 0
      ie-system/src/main/resources/mapper/learn/LearnPaperMapper.xml
  88. 2 0
      ie-system/src/main/resources/mapper/learn/LearnQuestionsMapper.xml
  89. 40 27
      ie-system/src/main/resources/mapper/learn/LearnStudentMapper.xml
  90. 32 9
      ie-system/src/main/resources/mapper/system/SysUserMapper.xml
  91. 2 4
      ie-system/src/main/resources/mapper/syzy/BBusiWishUniversitiesMapper.xml
  92. 76 0
      ie-system/src/main/resources/mapper/voluntary/BBusiEcardPriceMapper.xml
  93. 192 0
      ie-system/src/main/resources/mapper/voluntary/BBusiPaymentOrdersMapper.xml

BIN
back-ui/admin.zip


+ 9 - 5
back-ui/src/api/dz/cards.js

@@ -151,14 +151,18 @@ export function settleCard(cardIds) {
 }
 
 // 续费
-export function renewCard(cardIds) {
+export function renewCard(cardIds, days) {
+  const params = {
+    action: "Renew",
+    cardIds: Array.isArray(cardIds) ? cardIds.join(",") : cardIds,
+  };
+  if (days != null) {
+    params.days = days;
+  }
   return request({
     url: "/dz/cards/change/renew",
     method: "post",
-    params: {
-      action: "Renew",
-      cardIds: Array.isArray(cardIds) ? cardIds.join(",") : cardIds,
-    },
+    params: params,
   });
 }
 

+ 44 - 0
back-ui/src/api/system/EcardPrice.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询电子卡费用列表
+export function listEcardPrice(query) {
+  return request({
+    url: '/system/EcardPrice/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询电子卡费用详细
+export function getEcardPrice(id) {
+  return request({
+    url: '/system/EcardPrice/' + id,
+    method: 'get'
+  })
+}
+
+// 新增电子卡费用
+export function addEcardPrice(data) {
+  return request({
+    url: '/system/EcardPrice',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改电子卡费用
+export function updateEcardPrice(data) {
+  return request({
+    url: '/system/EcardPrice',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除电子卡费用
+export function delEcardPrice(id) {
+  return request({
+    url: '/system/EcardPrice/' + id,
+    method: 'delete'
+  })
+}

+ 0 - 340
back-ui/src/views/dz/cards copy/components/ApplyCardDialog.vue

@@ -1,340 +0,0 @@
-<template>
-  <el-dialog
-    title="直接开卡"
-    v-model="visible"
-    width="500px"
-    append-to-body
-    align-center
-    :center="true"
-    :destroy-on-close="true"
-  >
-    <div class="apply-card-content">
-      <el-form
-        ref="applyCardFormRef"
-        :model="form"
-        :rules="rules"
-        label-width="100px"
-      >
-        <!-- 卡号段 -->
-        <el-form-item label="卡号段" :required="true">
-          <div style="display: flex; align-items: center; gap: 10px">
-            <el-form-item prop="beginCardNo" style="flex: 1; margin-bottom: 0">
-              <el-input
-                v-model="form.beginCardNo"
-                placeholder="开始卡号"
-                style="width: 100%"
-              />
-            </el-form-item>
-            <span>-</span>
-            <el-form-item prop="endCardNo" style="flex: 1; margin-bottom: 0">
-              <el-input
-                v-model="form.endCardNo"
-                placeholder="结束卡号"
-                style="width: 100%"
-              />
-            </el-form-item>
-          </div>
-        </el-form-item>
-        <!-- 代理商 -->
-        <el-form-item label="代理商" prop="agentId" :required="true">
-          <el-select
-              v-model="form.agentId"
-              placeholder="请选择代理商"
-              style="width: 100%"
-              clearable
-          >
-            <el-option
-                v-for="agent in agentList"
-                :key="agent.id"
-                :label="agent.name"
-                :value="agent.id"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <!-- 省份 -->
-        <el-form-item label="省份" prop="province">
-          <el-select
-              v-model="form.province"
-              placeholder="请选择省份"
-              style="width: 100%"
-              clearable
-          >
-            <el-option
-                v-for="province in provinceList"
-                :key="province.dictValue"
-                :label="province.dictLabel"
-                :value="province.dictValue"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-        <!-- 学校 -->
-        <el-form-item label="学校" prop="schoolId">
-          <el-select
-            v-model="form.schoolId"
-            placeholder="请选择学校"
-            :disabled="!form.province"
-            style="width: 100%"
-          >
-            <el-option
-              v-for="school in campusList"
-              :key="school.id"
-              :label="school.name"
-              :value="school.id"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-      </el-form>
-    </div>
-
-    <template #footer>
-      <div class="dialog-footer">
-        <el-button @click="handleCancel">取消</el-button>
-        <el-button type="primary" @click="handleSubmit" :loading="loading">
-          <svg-icon
-            icon-class="lightning"
-            class="mr-1"
-            style="font-size: 14px"
-          />
-          提交
-        </el-button>
-      </div>
-    </template>
-  </el-dialog>
-</template>
-
-<script setup>
-import { ref, computed, watch } from "vue";
-import {getAgentList, requestOpenCard} from "@/api/dz/cards";
-import { listUniversity } from "@/api/dz/school";
-import { associateCampus, getCampusSchoolList } from "@/api/dz/cards";
-import {getPaperProvinces} from "@/api/dz/papers.js";
-
-const props = defineProps({
-  modelValue: {
-    type: Boolean,
-    default: false,
-  },
-  selectedCards: {
-    type: Array,
-    default: () => [],
-  },
-});
-
-const emit = defineEmits(["update:modelValue", "confirm", "success"]);
-
-const visible = computed({
-  get: () => props.modelValue,
-  set: (value) => emit("update:modelValue", value),
-});
-
-const applyCardFormRef = ref();
-const loading = ref(false);
-const provinceList = ref([]); // 省份列表
-const agentList = ref([]); // 代理商列表
-const schoolList = ref([]);
-const campusList = ref([]);
-
-const form = ref({
-  agentId: null,
-  beginCardNo: "",
-  endCardNo: "",
-  schoolId: null,
-});
-
-const rules = {
-  province: [{ required: true, message: "省份不能为空", trigger: "change" }],
-  beginCardNo: [
-    { required: true, message: "开始卡号不能为空", trigger: "blur" },
-  ],
-  endCardNo: [{ required: true, message: "结束卡号不能为空", trigger: "blur" }],
-  schoolId: [{ required: true, message: "学校不能为空", trigger: "change" }],
-};
-
-
-// 获取代理商列表
-async function getAgentListData() {
-  try {
-    const response = await getAgentList({});
-    if (response.code === 200) {
-      // 处理代理商数据,映射字段名
-      agentList.value = (response.data || []).map((item) => ({
-        id: item.agentId,
-        name: item.name,
-        agentId: item.agentId,
-        deptId: item.deptId,
-        phonenumber: item.phonenumber,
-        schoolName: item.schoolName,
-      }));
-    }
-  } catch (error) {
-    console.error("获取代理商列表失败:", error);
-  }
-}
-
-// 获取省份列表
-async function getProvinceList() {
-  try {
-    const response = await getPaperProvinces();
-    if (response.code === 200) {
-      provinceList.value = response.data || [];
-    }
-    campusList.value = []
-  } catch (error) {
-    console.error("获取省份列表失败:", error);
-  }
-}
-
-// 获取校区列表
-async function getCampusListData() {
-  try {
-    const response = await getCampusSchoolList({ campus: false, location: form.value.province, pageNum: 1, pageSize: 1000 });
-    if (response.code === 200) {
-      campusList.value = response.data || [];
-    }
-  } catch (error) {
-    console.error("获取校区列表失败:", error);
-  }
-}
-
-// 获取所有学校列表
-async function getAllSchools() {
-  try {
-    const response = await listUniversity({
-      pageNum: 1,
-      pageSize: 1000,
-    });
-    if (response.code === 200) {
-      // 处理API返回的数据结构
-      let schoolData = [];
-
-      // 检查是否有rows字段(直接在response中)
-      if (response.rows) {
-        schoolData = response.rows;
-      }
-      // 检查是否有data.rows字段
-      else if (response.data && response.data.rows) {
-        schoolData = response.data.rows;
-      }
-      // 检查是否有data数组
-      else if (response.data && Array.isArray(response.data)) {
-        schoolData = response.data;
-      }
-      // 检查是否有data对象
-      else if (response.data && response.data.id) {
-        schoolData = [response.data];
-      }
-
-      schoolList.value = schoolData;
-      console.log("所有学校数据:", schoolData);
-    }
-  } catch (error) {
-    console.error("获取所有学校列表失败:", error);
-    schoolList.value = [];
-  }
-}
-
-// 自动填充卡号段
-function autoFillCardRange() {
-  if (props.selectedCards && props.selectedCards.length > 0) {
-    const cardNos = props.selectedCards
-      .map((card) => card.cardNo || card.id)
-      .filter((cardNo) => cardNo && cardNo !== "未知")
-      .sort();
-
-    if (cardNos.length > 0) {
-      const minCardNo = cardNos[0];
-      const maxCardNo = cardNos[cardNos.length - 1];
-
-      // 开始卡号段是最小卡号段的整十数部分
-      const minCardNoNum = parseInt(minCardNo);
-      const beginCardNo = Math.floor(minCardNoNum / 10) * 10;
-
-      form.value.beginCardNo = beginCardNo.toString();
-      form.value.endCardNo = maxCardNo;
-    }
-  }
-}
-
-// 重置表单
-function resetForm() {
-  form.value = {
-    beginCardNo: "",
-    endCardNo: "",
-    agentId: null,
-    schoolId: null,
-  };
-}
-
-// 取消
-function handleCancel() {
-  visible.value = false;
-  resetForm();
-}
-
-// 提交申请
-async function handleSubmit() {
-  applyCardFormRef.value.validate(async (valid) => {
-    if (valid) {
-      try {
-        loading.value = true;
-        const begin = form.value.beginCardNo;
-        const end = form.value.endCardNo;
-        const schoolId = form.value.schoolId;
-        const province = form.value.province;
-        const agentId = form.value.agentId;
-
-        if (!begin || !end) {
-          throw new Error("请填写完整的卡号段");
-        }
-        if (!schoolId) {
-          throw new Error("请选择学校");
-        }
-
-        await requestOpenCard(agentId, province, schoolId, begin, end);
-        emit("success", "申请开卡成功!");
-        visible.value = false;
-        resetForm();
-      } catch (error) {
-        console.error("申请开卡失败:", error);
-        emit("confirm", { error: error.message });
-      } finally {
-        loading.value = false;
-      }
-    }
-  });
-}
-
-// 监听弹窗关闭,重置表单
-watch(visible, (newVal) => {
-  if (!newVal) {
-    resetForm();
-  } else {
-    // 获取代理商列表
-    getAgentListData();
-    // 弹窗打开时获取省份列表
-    getProvinceList();
-    autoFillCardRange();
-  }
-});
-
-// 监听省份变化,获取对应学校
-watch(
-    () => form.value.province,
-    (newProvince) => {
-      // 重置学校选择
-      form.value.schoolId = null;
-      // 获取对应省份的学校列表
-      getCampusListData(newProvince);
-    }
-);
-</script>
-
-<style scoped>
-.apply-card-content {
-  padding: 20px 0;
-}
-
-.dialog-footer {
-  text-align: right;
-}
-</style>

+ 0 - 472
back-ui/src/views/dz/cards copy/components/AssignCardDialog.vue

@@ -1,472 +0,0 @@
-<template>
-  <el-dialog
-    title="分配卡"
-    v-model="visible"
-    width="500px"
-    append-to-body
-    align-center
-    :center="true"
-    :destroy-on-close="true"
-  >
-    <el-form
-      ref="assignCardFormRef"
-      :model="form"
-      :rules="rules"
-      label-width="100px"
-    >
-      <!-- 卡类型 -->
-      <el-form-item label="卡类型" prop="cardType" :required="true">
-        <el-select
-          v-model="form.cardType"
-          placeholder="请选择卡类型"
-          style="width: 100%"
-          clearable
-        >
-          <el-option
-            v-for="dict in cardTypeOptions"
-            :key="dict.value"
-            :label="dict.label"
-            :value="parseInt(dict.value)"
-          ></el-option>
-        </el-select>
-      </el-form-item>
-
-      <!-- 卡号段 -->
-      <el-form-item label="卡号段" :required="true">
-        <div style="display: flex; align-items: center; gap: 10px">
-          <el-form-item prop="beginCardNo" style="flex: 1; margin-bottom: 0">
-            <el-input
-              v-model="form.beginCardNo"
-              placeholder="开始卡号"
-              style="width: 100%"
-            />
-          </el-form-item>
-          <span>-</span>
-          <el-form-item prop="endCardNo" style="flex: 1; margin-bottom: 0">
-            <el-input
-              v-model="form.endCardNo"
-              placeholder="结束卡号"
-              style="width: 100%"
-            />
-          </el-form-item>
-        </div>
-      </el-form-item>
-
-      <!-- 代理商 -->
-      <el-form-item label="代理商" prop="agentId" :required="true">
-        <el-select
-          v-model="form.agentId"
-          placeholder="请选择代理商"
-          style="width: 100%"
-          clearable
-        >
-          <el-option
-            v-for="agent in agentList"
-            :key="agent.id"
-            :label="agent.name"
-            :value="agent.id"
-          ></el-option>
-        </el-select>
-      </el-form-item>
-
-      <!-- 省份 -->
-      <el-form-item label="省份" prop="province">
-        <el-select
-          v-model="form.province"
-          placeholder="请选择省份"
-          style="width: 100%"
-          clearable
-        >
-          <el-option
-            v-for="province in provinceList"
-            :key="province.dictValue"
-            :label="province.dictLabel"
-            :value="province.dictValue"
-          ></el-option>
-        </el-select>
-      </el-form-item>
-
-      <!-- 学校 -->
-      <el-form-item label="学校" prop="school">
-        <el-select
-          v-model="form.school"
-          placeholder="请选择学校"
-          style="width: 100%"
-          :disabled="!form.province"
-          clearable
-        >
-          <el-option
-            v-for="school in schoolList"
-            :key="school.id"
-            :label="school.name"
-            :value="school.id"
-          ></el-option>
-        </el-select>
-      </el-form-item>
-
-      <!-- 考生类别 -->
-      <el-form-item label="考生类别" prop="studentCategory">
-        <el-select
-          v-model="form.studentCategory"
-          placeholder="请选择考生类别"
-          style="width: 100%"
-          clearable
-        >
-          <el-option label="全部" value="all"></el-option>
-          <el-option
-            v-for="examType in examTypeList"
-            :key="examType.dictValue"
-            :label="examType.dictLabel"
-            :value="examType.dictValue"
-          ></el-option>
-        </el-select>
-      </el-form-item>
-    </el-form>
-
-    <template #footer>
-      <div class="dialog-footer">
-        <el-button type="primary" @click="handleSubmit" :loading="loading"
-          >分配</el-button
-        >
-        <el-button @click="handleCancel">取消</el-button>
-        <!--        <el-button @click="handleReassign" :loading="reassignLoading"-->
-<!--          >重新分配</el-button-->
-<!--        >-->
-      </div>
-    </template>
-  </el-dialog>
-</template>
-
-<script setup>
-import { ref, computed, watch } from "vue";
-import {
-  assignCard,
-  getExamTypes,
-  getAgentList,
-  getCampusSchoolList,
-} from "@/api/dz/cards";
-import { getPaperProvinces } from "@/api/dz/papers";
-
-const props = defineProps({
-  modelValue: {
-    type: Boolean,
-    default: false,
-  },
-  selectedCards: {
-    type: Array,
-    default: () => [],
-  },
-  schoolList: {
-    type: Array,
-    default: () => [],
-  },
-  cardTypeOptions: {
-    type: Array,
-    default: () => [],
-  },
-});
-
-const emit = defineEmits(["update:modelValue", "success"]);
-
-const visible = computed({
-  get: () => props.modelValue,
-  set: (value) => emit("update:modelValue", value),
-});
-
-const assignCardFormRef = ref();
-const loading = ref(false);
-const reassignLoading = ref(false);
-const provinceList = ref([]); // 省份列表
-const schoolList = ref([]); // 学校列表
-const examTypeList = ref([]); // 考生类型列表
-const agentList = ref([]); // 代理商列表
-
-const form = ref({
-  cardType: null,
-  beginCardNo: "",
-  endCardNo: "",
-  agentId: null,
-  province: null,
-  school: null,
-  studentCategory: "all",
-});
-
-const rules = {
-  cardType: [{ required: true, message: "卡类型不能为空", trigger: "change" }],
-  beginCardNo: [
-    { required: true, message: "开始卡号不能为空", trigger: "blur" },
-  ],
-  endCardNo: [{ required: true, message: "结束卡号不能为空", trigger: "blur" }],
-  agentId: [{ required: true, message: "代理商不能为空", trigger: "change" }],
-};
-
-// 重置表单
-function resetForm() {
-  form.value = {
-    cardType: null,
-    beginCardNo: "",
-    endCardNo: "",
-    agentId: null,
-    province: null,
-    school: null,
-    studentCategory: "all",
-  };
-}
-
-// 获取省份列表
-async function getProvinceList() {
-  try {
-    const response = await getPaperProvinces();
-    if (response.code === 200) {
-      provinceList.value = response.data || [];
-    }
-  } catch (error) {
-    console.error("获取省份列表失败:", error);
-  }
-}
-
-// 获取考生类型列表
-async function getExamTypeList(location) {
-  try {
-    const response = await getExamTypes(location);
-    if (response.code === 200) {
-      examTypeList.value = response.data || [];
-    }
-  } catch (error) {
-    console.error("获取考生类型列表失败:", error);
-  }
-}
-
-// 获取代理商列表
-async function getAgentListData() {
-  try {
-    const response = await getAgentList({});
-    if (response.code === 200) {
-      // 处理代理商数据,映射字段名
-      agentList.value = (response.data || []).map((item) => ({
-        id: item.agentId,
-        name: item.name,
-        agentId: item.agentId,
-        deptId: item.deptId,
-        phonenumber: item.phonenumber,
-        schoolName: item.schoolName,
-      }));
-    }
-  } catch (error) {
-    console.error("获取代理商列表失败:", error);
-  }
-}
-
-// 根据省份获取学校列表
-async function getSchoolListByProvince(province) {
-  try {
-    if (!province || province === "all") {
-      schoolList.value = [];
-      return;
-    }
-
-    const response = await getCampusSchoolList({
-      campus: false,
-      location: province,
-      pageNum: 1,
-      pageSize: 9999,
-    });
-    if (response.code === 200) {
-      // 处理API返回的数据结构
-      let schoolData = [];
-
-      // 检查是否有data字段
-      if (response.data) {
-        schoolData = Array.isArray(response.data) ? response.data : [];
-      }
-      // 检查是否有rows字段
-      else if (response.rows) {
-        schoolData = response.rows;
-      }
-      // 检查是否有list字段
-      else if (response.list) {
-        schoolData = response.list;
-      }
-
-      // 确保数据格式符合配置要求
-      schoolData = schoolData.map((item) => {
-        // 如果API返回的是 {id, name, ...} 格式,直接使用
-        if (item.id && item.name) {
-          return item;
-        }
-        // 如果是其他格式,需要转换
-        return {
-          id: item.id || item.value || item.schoolId,
-          name: item.name || item.label || item.schoolName || item.title,
-        };
-      });
-
-      schoolList.value = schoolData;
-      console.log("学校数据:", schoolData); // 添加调试日志
-    }
-  } catch (error) {
-    console.error("获取学校列表失败:", error);
-    schoolList.value = [];
-  }
-}
-
-// 自动填充卡号段
-function autoFillCardRange() {
-  console.log("autoFillCardRange called, selectedCards:", props.selectedCards);
-  if (props.selectedCards && props.selectedCards.length > 0) {
-    const cardNos = props.selectedCards
-      .map((card) => card.cardNo || card.id)
-      .filter((cardNo) => cardNo && cardNo !== "未知")
-      .sort();
-
-    console.log("cardNos:", cardNos);
-    if (cardNos.length > 0) {
-      const minCardNo = cardNos[0];
-      const maxCardNo = cardNos[cardNos.length - 1];
-
-      // 开始卡号段是最小卡号段的整十数部分
-      const minCardNoNum = parseInt(minCardNo);
-      const beginCardNo = Math.floor(minCardNoNum / 10) * 10;
-
-      // form.value.beginCardNo = beginCardNo.toString();
-      // form.value.endCardNo = maxCardNo;
-    }
-  }
-}
-
-// 取消
-function handleCancel() {
-  visible.value = false;
-  resetForm();
-}
-
-// 提交
-async function handleSubmit() {
-  assignCardFormRef.value.validate(async (valid) => {
-    if (valid) {
-      try {
-        loading.value = true;
-        // 获取开始号和结束号
-        const begin = form.value.beginCardNo;
-        const end = form.value.endCardNo;
-
-        if (!begin || !end) {
-          throw new Error("请填写完整的卡号段");
-        }
-
-        // 调用分配卡API,传递所有参数
-        // 将 "all" 转换为 null,因为后端 ExamType 枚举不接受 "all" 值
-        const examType =
-          form.value.studentCategory === "all"
-            ? null
-            : form.value.studentCategory;
-
-        await assignCard(
-          form.value.cardType,
-          form.value.agentId,
-          begin,
-          end,
-          form.value.province,
-          examType,
-          form.value.school
-        );
-
-        emit("success", "分配卡成功!");
-        visible.value = false;
-        resetForm();
-      } catch (error) {
-        console.error("分配卡失败:", error);
-        throw error;
-      } finally {
-        loading.value = false;
-      }
-    }
-  });
-}
-
-// 重新分配
-async function handleReassign() {
-  assignCardFormRef.value.validate(async (valid) => {
-    if (valid) {
-      try {
-        reassignLoading.value = true;
-        // 获取开始号和结束号
-        const begin = form.value.beginCardNo;
-        const end = form.value.endCardNo;
-
-        if (!begin || !end) {
-          throw new Error("请填写完整的卡号段");
-        }
-
-        // 再次调用分配卡API
-        // 将 "all" 转换为 null,因为后端 ExamType 枚举不接受 "all" 值
-        const examType =
-          form.value.studentCategory === "all"
-            ? null
-            : form.value.studentCategory;
-
-        await assignCard(
-          form.value.cardType,
-          form.value.agentId,
-          begin,
-          end,
-          form.value.province,
-          examType,
-          form.value.school
-        );
-
-        emit("success", "重新分配卡成功!");
-        visible.value = false;
-        resetForm();
-      } catch (error) {
-        console.error("重新分配卡失败:", error);
-        throw error;
-      } finally {
-        reassignLoading.value = false;
-      }
-    } else {
-      // 如果表单验证失败,提示用户
-      console.warn("表单验证失败,请检查必填项");
-    }
-  });
-}
-
-// 监听弹窗关闭,重置表单
-watch(visible, (newVal) => {
-  console.log("AssignCardDialog visible changed to:", newVal);
-  if (!newVal) {
-    resetForm();
-  } else {
-    console.log("AssignCardDialog opened, selectedCards:", props.selectedCards);
-    // 弹窗打开时获取省份列表
-    getProvinceList();
-    // 获取默认考生类型列表(可以根据需要调整)
-    getExamTypeList("湖南省"); // 默认获取湖南省的考生类型
-    // 获取代理商列表
-    getAgentListData();
-    // 自动填充卡号段
-    autoFillCardRange();
-  }
-});
-
-// 监听省份变化,获取对应学校
-watch(
-  () => form.value.province,
-  (newProvince) => {
-    // 重置学校选择
-    form.value.school = null;
-    // 获取对应省份的学校列表
-    getSchoolListByProvince(newProvince);
-    // 获取对应省份的考生类型列表
-    if (newProvince) {
-      getExamTypeList(newProvince);
-    }
-  }
-);
-</script>
-
-<style scoped>
-.dialog-footer {
-  text-align: right;
-}
-</style>

+ 0 - 247
back-ui/src/views/dz/cards copy/components/AssociateCampusDialog.vue

@@ -1,247 +0,0 @@
-<template>
-  <el-dialog
-    title="关联校区"
-    v-model="visible"
-    width="500px"
-    append-to-body
-    align-center
-    :center="true"
-    :destroy-on-close="true"
-  >
-    <div class="associate-campus-content">
-      <el-form
-        ref="associateCampusFormRef"
-        :model="form"
-        :rules="rules"
-        label-width="100px"
-      >
-        <!-- 卡号段 -->
-        <el-form-item label="卡号段" :required="true">
-          <div style="display: flex; align-items: center; gap: 10px">
-            <el-form-item prop="beginCardNo" style="flex: 1; margin-bottom: 0">
-              <el-input
-                v-model="form.beginCardNo"
-                placeholder="开始卡号"
-                style="width: 100%"
-              />
-            </el-form-item>
-            <span>-</span>
-            <el-form-item prop="endCardNo" style="flex: 1; margin-bottom: 0">
-              <el-input
-                v-model="form.endCardNo"
-                placeholder="结束卡号"
-                style="width: 100%"
-              />
-            </el-form-item>
-          </div>
-        </el-form-item>
-
-        <!-- 校区 -->
-        <el-form-item label="校区" prop="campusId" :required="true">
-          <el-select
-            v-model="form.campusId"
-            placeholder="请选择校区"
-            style="width: 100%"
-          >
-            <el-option
-              v-for="campus in campusList"
-              :key="campus.id"
-              :label="campus.name"
-              :value="campus.id"
-            ></el-option>
-          </el-select>
-        </el-form-item>
-      </el-form>
-    </div>
-
-    <template #footer>
-      <div class="dialog-footer">
-        <el-button @click="handleCancel">取消</el-button>
-        <el-button type="primary" @click="handleConfirm" :loading="loading">
-          <svg-icon
-            icon-class="lightning"
-            class="mr-1"
-            style="font-size: 14px"
-          />
-          确认
-        </el-button>
-      </div>
-    </template>
-  </el-dialog>
-</template>
-
-<script setup>
-import { ref, computed, watch } from "vue";
-import { associateCampus, getCampusSchoolList } from "@/api/dz/cards";
-
-const props = defineProps({
-  modelValue: {
-    type: Boolean,
-    default: false,
-  },
-  selectedCards: {
-    type: Array,
-    default: () => [],
-  },
-});
-
-const emit = defineEmits(["update:modelValue", "confirm", "success"]);
-
-const visible = computed({
-  get: () => props.modelValue,
-  set: (value) => emit("update:modelValue", value),
-});
-
-const associateCampusFormRef = ref();
-const loading = ref(false);
-const campusList = ref([]);
-
-const form = ref({
-  beginCardNo: "",
-  endCardNo: "",
-  campusId: null,
-});
-
-const rules = {
-  beginCardNo: [
-    { required: true, message: "开始卡号不能为空", trigger: "blur" },
-  ],
-  endCardNo: [{ required: true, message: "结束卡号不能为空", trigger: "blur" }],
-  campusId: [{ required: true, message: "校区不能为空", trigger: "change" }],
-};
-
-// 获取校区列表
-async function getCampusListData() {
-  try {
-    const response = await getCampusSchoolList({
-      campus: true,
-      pageNum: 1,
-      pageSize: 9999, // 获取所有校区
-    });
-    if (response.code === 200) {
-      // 处理API返回的数据结构
-      let campusData = [];
-      if (response.data) {
-        campusData = Array.isArray(response.data) ? response.data : [];
-      } else if (response.rows) {
-        campusData = response.rows;
-      } else if (response.list) {
-        campusData = response.list;
-      }
-
-      // 确保数据格式符合配置要求
-      campusData = campusData.map((item) => {
-        // 如果API返回的是 {id, name, ...} 格式,直接使用
-        if (item.id && item.name) {
-          return item;
-        }
-        // 如果是其他格式,需要转换
-        return {
-          id: item.id || item.value || item.campusId,
-          name: item.name || item.label || item.campusName || item.title,
-        };
-      });
-
-      campusList.value = campusData;
-    }
-  } catch (error) {
-    console.error("获取校区列表失败:", error);
-    campusList.value = [];
-  }
-}
-
-// 自动填充卡号段
-function autoFillCardRange() {
-  if (props.selectedCards && props.selectedCards.length > 0) {
-    const cardNos = props.selectedCards
-      .map((card) => card.cardNo || card.id)
-      .filter((cardNo) => cardNo && cardNo !== "未知")
-      .sort();
-
-    if (cardNos.length > 0) {
-      const minCardNo = cardNos[0];
-      const maxCardNo = cardNos[cardNos.length - 1];
-
-      // 开始卡号段是最小卡号段的整十数部分
-      const minCardNoNum = parseInt(minCardNo);
-      const beginCardNo = Math.floor(minCardNoNum / 10) * 10;
-
-      form.value.beginCardNo = beginCardNo.toString();
-      form.value.endCardNo = maxCardNo;
-    }
-  }
-}
-
-// 重置表单
-function resetForm() {
-  form.value = {
-    beginCardNo: "",
-    endCardNo: "",
-    campusId: null,
-  };
-}
-
-// 取消
-function handleCancel() {
-  visible.value = false;
-  resetForm();
-}
-
-// 确认关联
-async function handleConfirm() {
-  associateCampusFormRef.value.validate(async (valid) => {
-    if (valid) {
-      try {
-        loading.value = true;
-        const begin = form.value.beginCardNo;
-        const end = form.value.endCardNo;
-        const campusId = form.value.campusId;
-
-        if (!begin || !end) {
-          throw new Error("请填写完整的卡号段");
-        }
-        if (!campusId) {
-          throw new Error("请选择校区");
-        }
-
-        await associateCampus(begin, end, campusId);
-        emit("success", "关联校区成功!");
-        visible.value = false;
-        resetForm();
-      } catch (error) {
-        console.error("关联校区失败:", error);
-        emit("confirm", { error: error.message });
-      } finally {
-        loading.value = false;
-      }
-    }
-  });
-}
-
-// 监听弹窗关闭,重置表单
-watch(visible, (newVal) => {
-  if (!newVal) {
-    resetForm();
-  } else {
-    getCampusListData();
-    autoFillCardRange();
-  }
-});
-</script>
-
-<style scoped>
-.associate-campus-content {
-  padding: 20px 0;
-}
-
-.hint-text {
-  color: #1890ff;
-  font-size: 12px;
-  margin-bottom: 20px;
-  padding-left: 100px;
-}
-
-.dialog-footer {
-  text-align: right;
-}
-</style>

+ 0 - 299
back-ui/src/views/dz/cards copy/components/CardGenerationDialog.vue

@@ -1,299 +0,0 @@
-<template>
-  <el-dialog
-    title="制卡"
-    v-model="visible"
-    width="500px"
-    append-to-body
-    align-center
-    :center="true"
-    :destroy-on-close="true"
-  >
-    <el-form
-      ref="cardGenerationFormRef"
-      :model="form"
-      :rules="rules"
-      label-width="100px"
-    >
-      <!-- 机构 -->
-      <el-form-item label="机构" prop="institutionId" :required="true">
-        <el-select
-          v-model="form.institutionId"
-          placeholder="请选择机构"
-          style="width: 100%"
-        >
-          <el-option
-            v-for="institution in institutionList"
-            :key="institution.deptId"
-            :label="institution.deptName"
-            :value="institution.deptId"
-          ></el-option>
-        </el-select>
-      </el-form-item>
-
-      <!-- 卡类型 -->
-      <el-form-item label="卡类型" prop="type" :required="true">
-        <el-select
-          v-model="form.type"
-          placeholder="请选择卡类型"
-          style="width: 100%"
-        >
-          <el-option
-            v-for="dict in cardTypeOptions"
-            :key="dict.value"
-            :label="dict.label"
-            :value="parseInt(dict.value)"
-          ></el-option>
-        </el-select>
-      </el-form-item>
-
-      <!-- 省份 -->
-      <!-- <el-form-item label="省份">
-        <el-select
-          v-model="form.province"
-          placeholder="请选择省份"
-          style="width: 100%"
-        >
-          <el-option label="全部" value="all"></el-option>
-          <el-option
-            v-for="province in provinceList"
-            :key="province.dictValue"
-            :label="province.dictLabel"
-            :value="province.dictValue"
-          ></el-option>
-        </el-select>
-      </el-form-item> -->
-
-      <!-- 学校 -->
-      <!-- <el-form-item label="学校">
-        <el-select
-          v-model="form.school"
-          placeholder="请选择学校"
-          style="width: 100%"
-          :disabled="form.province === 'all'"
-        >
-          <el-option label="全部" value="all"></el-option>
-          <el-option
-            v-for="school in schoolList"
-            :key="school.id"
-            :label="school.name"
-            :value="school.id"
-          ></el-option>
-        </el-select>
-      </el-form-item> -->
-
-      <!-- 卡数量 -->
-      <el-form-item label="卡数量" prop="cardQuantity" :required="true">
-        <el-input-number
-          v-model="form.cardQuantity"
-          :min="1"
-          :max="1000"
-          placeholder="请输入卡数量"
-          style="width: 100%"
-        />
-      </el-form-item>
-    </el-form>
-
-    <template #footer>
-      <div class="dialog-footer">
-        <el-button @click="handleCancel">取消</el-button>
-        <el-button type="primary" @click="handleSubmit">开始制卡</el-button>
-      </div>
-    </template>
-  </el-dialog>
-</template>
-
-<script setup>
-import { ref, computed, watch } from "vue";
-import { issueCard } from "@/api/dz/cards";
-import { getPaperProvinces } from "@/api/dz/papers";
-import { listUniversity } from "@/api/dz/school";
-const props = defineProps({
-  modelValue: {
-    type: Boolean,
-    default: false,
-  },
-  institutionList: {
-    type: Array,
-    default: () => [],
-  },
-  schoolList: {
-    type: Array,
-    default: () => [],
-  },
-  cardTypeOptions: {
-    type: Array,
-    default: () => [],
-  },
-});
-
-const emit = defineEmits(["update:modelValue", "success"]);
-
-const visible = computed({
-  get: () => props.modelValue,
-  set: (value) => emit("update:modelValue", value),
-});
-
-const cardGenerationFormRef = ref();
-const provinceList = ref([]); // 省份列表
-const schoolList = ref([]); // 学校列表
-const form = ref({
-  institutionId: null,
-  type: null,
-  province: "all",
-  school: "all",
-  cardQuantity: 1,
-});
-
-const rules = {
-  institutionId: [
-    { required: true, message: "机构不能为空", trigger: "change" },
-  ],
-  type: [{ required: true, message: "卡类型不能为空", trigger: "change" }],
-  cardQuantity: [
-    { required: true, message: "卡数量不能为空", trigger: "blur" },
-    {
-      type: "number",
-      min: 1,
-      max: 1000,
-      message: "请输入正确的卡数量",
-      trigger: "blur",
-    },
-  ],
-};
-
-// 获取卡类型枚举
-function getCardTypeEnum(typeValue) {
-  const cardTypeMap = {
-    6: "Platform",
-    2: "Dept",
-    7: "ECard",
-    8: "Test",
-  };
-  return cardTypeMap[typeValue] || "ECard"; // 默认返回电子卡
-}
-
-// 获取省份列表
-async function getProvinceList() {
-  try {
-    const response = await getPaperProvinces();
-    if (response.code === 200) {
-      provinceList.value = response.data || [];
-    }
-  } catch (error) {
-    console.error("获取省份列表失败:", error);
-  }
-}
-
-// 根据省份获取学校列表
-async function getSchoolListByProvince(province) {
-  try {
-    if (province === "all" || !province) {
-      schoolList.value = [];
-      return;
-    }
-
-    const response = await listUniversity({
-      location: province,
-      pageNum: 1,
-      pageSize: 1000,
-    });
-    if (response.code === 200) {
-      // 处理API返回的数据结构
-      let schoolData = [];
-
-      // 检查是否有rows字段(直接在response中)
-      if (response.rows) {
-        schoolData = response.rows;
-      }
-      // 检查是否有data.rows字段
-      else if (response.data && response.data.rows) {
-        schoolData = response.data.rows;
-      }
-      // 检查是否有data数组
-      else if (response.data && Array.isArray(response.data)) {
-        schoolData = response.data;
-      }
-      // 检查是否有data对象
-      else if (response.data && response.data.id) {
-        schoolData = [response.data];
-      }
-
-      schoolList.value = schoolData;
-      console.log("学校数据:", schoolData); // 添加调试日志
-    }
-  } catch (error) {
-    console.error("获取学校列表失败:", error);
-    schoolList.value = [];
-  }
-}
-
-function resetForm() {
-  form.value = {
-    institutionId: null,
-    type: null,
-    province: "all",
-    school: "all",
-    cardQuantity: 1,
-  };
-}
-
-// 取消
-function handleCancel() {
-  visible.value = false;
-  resetForm();
-}
-
-// 提交
-async function handleSubmit() {
-  cardGenerationFormRef.value.validate(async (valid) => {
-    if (valid) {
-      try {
-        const cardData = {
-          institutionId: form.value.institutionId,
-          type: form.value.type,
-          count: parseInt(form.value.cardQuantity),
-        };
-        await issueCard(
-          cardData.institutionId,
-          getCardTypeEnum(cardData.type),
-          cardData.count
-        );
-
-        emit("success", "制卡成功!");
-        visible.value = false;
-        resetForm();
-      } catch (error) {
-        console.error("制卡失败:", error);
-        throw error;
-      }
-    }
-  });
-}
-
-// 监听弹窗关闭,重置表单
-watch(visible, (newVal) => {
-  if (!newVal) {
-    resetForm();
-  } else {
-    // 弹窗打开时获取省份列表
-    // getProvinceList(); // 暂时屏蔽
-  }
-});
-
-// 监听省份变化,获取对应学校
-// watch(
-//   () => form.value.province,
-//   (newProvince) => {
-//     // 重置学校选择
-//     form.value.school = "all";
-//     // 获取对应省份的学校列表
-//     getSchoolListByProvince(newProvince);
-//   }
-// );
-</script>
-
-<style scoped>
-.dialog-footer {
-  text-align: right;
-}
-</style>

+ 0 - 181
back-ui/src/views/dz/cards copy/components/CloseCardDialog.vue

@@ -1,181 +0,0 @@
-<template>
-  <el-dialog
-    title="关卡"
-    v-model="visible"
-    width="400px"
-    append-to-body
-    align-center
-    :center="true"
-    :destroy-on-close="true"
-  >
-    <div class="close-card-confirm-content">
-      <div class="confirm-item">
-        <el-icon class="warning-icon">
-          <Warning />
-        </el-icon>
-        <span class="confirm-text">
-          {{ getConfirmMessage() }}
-        </span>
-      </div>
-    </div>
-
-    <template #footer>
-      <div class="dialog-footer">
-        <el-button @click="handleCancel">取消</el-button>
-        <el-button type="primary" @click="handleConfirm" :loading="loading"
-          >确定</el-button
-        >
-      </div>
-    </template>
-  </el-dialog>
-</template>
-
-<script setup>
-import { ref, computed } from "vue";
-import { Warning } from "@element-plus/icons-vue";
-import { closeCard, listCards } from "@/api/dz/cards";
-
-const props = defineProps({
-  modelValue: {
-    type: Boolean,
-    default: false,
-  },
-  cardNo: {
-    type: [String, Number, Array],
-    default: "",
-    // 卡号(字符串),关卡时会自动转换为 cardId
-  },
-  cardIds: {
-    type: Array,
-    default: () => [],
-    // 卡ID(数字数组),直接用于关卡API
-  },
-});
-
-const emit = defineEmits(["update:modelValue", "confirm", "success"]);
-
-const loading = ref(false);
-
-const visible = computed({
-  get: () => props.modelValue,
-  set: (value) => emit("update:modelValue", value),
-});
-
-// 获取确认消息
-function getConfirmMessage() {
-  // 处理 cardNo 为数组的情况
-  if (Array.isArray(props.cardNo) && props.cardNo.length > 0) {
-    if (props.cardNo.length === 1) {
-      return `是否确认关卡vip卡编号为${props.cardNo[0]}的数据项?`;
-    } else {
-      return `是否确认关卡以下${
-        props.cardNo.length
-      }张vip卡?\n${props.cardNo.join("、")}`;
-    }
-  }
-  // 处理 cardNo 为单个值的情况
-  else if (props.cardNo) {
-    return `是否确认关卡vip卡编号为${props.cardNo}的数据项?`;
-  }
-  // 处理 cardIds 的情况
-  else if (props.cardIds && props.cardIds.length > 0) {
-    return `是否确认关卡选中的${props.cardIds.length}张学习卡?`;
-  }
-  return "是否确认关卡?";
-}
-
-// 取消
-function handleCancel() {
-  visible.value = false;
-}
-
-// 确认关卡
-async function handleConfirm() {
-  try {
-    loading.value = true;
-
-    // 确定要关卡的卡ID
-    let cardIdsToClose = [];
-
-    // 处理 cardNo 为数组的情况
-    if (Array.isArray(props.cardNo) && props.cardNo.length > 0) {
-      // 根据 cardNo 数组查询对应的 cardId
-      for (const cardNo of props.cardNo) {
-        const cardInfo = await getCardIdByCardNo(cardNo);
-        if (cardInfo) {
-          cardIdsToClose.push(cardInfo.cardId);
-        }
-      }
-    }
-    // 处理 cardNo 为单个值的情况
-    else if (props.cardNo) {
-      const cardInfo = await getCardIdByCardNo(props.cardNo);
-      if (cardInfo) {
-        cardIdsToClose.push(cardInfo.cardId);
-      }
-    }
-    // 处理 cardIds 的情况(直接使用 cardId)
-    else if (props.cardIds && props.cardIds.length > 0) {
-      cardIdsToClose = props.cardIds;
-    }
-
-    if (cardIdsToClose.length === 0) {
-      throw new Error("没有选择要关卡的卡片");
-    }
-
-    // 调用关卡API
-    await closeCard(cardIdsToClose);
-
-    emit("success", "关卡成功!");
-    visible.value = false;
-  } catch (error) {
-    console.error("关卡失败:", error);
-    emit("confirm", { error: error.message });
-  } finally {
-    loading.value = false;
-  }
-}
-
-// 根据 cardNo 查询 cardId
-async function getCardIdByCardNo(cardNo) {
-  try {
-    const response = await listCards({ cardNo: cardNo });
-    if (response.code === 200 && response.rows && response.rows.length > 0) {
-      return response.rows[0]; // 返回第一个匹配的卡片信息
-    }
-    return null;
-  } catch (error) {
-    console.error(`根据卡号 ${cardNo} 查询卡片信息失败:`, error);
-    return null;
-  }
-}
-</script>
-
-<style scoped>
-.close-card-confirm-content {
-  padding: 20px 0;
-}
-
-.confirm-item {
-  display: flex;
-  align-items: flex-start;
-  gap: 12px;
-}
-
-.warning-icon {
-  color: #e6a23c;
-  font-size: 20px;
-  margin-top: 2px;
-  flex-shrink: 0;
-}
-
-.confirm-text {
-  font-size: 14px;
-  line-height: 1.5;
-  color: #ffffff;
-}
-
-.dialog-footer {
-  text-align: right;
-}
-</style>

+ 0 - 249
back-ui/src/views/dz/cards copy/components/EditStudentDialog.vue

@@ -1,249 +0,0 @@
-<template>
-  <el-dialog
-    title="编辑"
-    v-model="visible"
-    width="500px"
-    append-to-body
-    align-center
-    :center="true"
-    :destroy-on-close="true"
-  >
-    <el-form ref="formRef" :model="form" :rules="rules" label-width="100px">
-      <!-- 学校 -->
-      <el-form-item label="学校" prop="schoolId">
-        <el-select
-          v-model="form.schoolId"
-          placeholder="请选择学校"
-          style="width: 100%"
-        >
-          <el-option
-            v-for="school in schoolList"
-            :key="school.id"
-            :label="school.name"
-            :value="school.id"
-          ></el-option>
-        </el-select>
-      </el-form-item>
-
-      <!-- 班级 -->
-      <el-form-item label="班级" prop="classId">
-        <el-select
-          v-model="form.classId"
-          placeholder="请选择班级"
-          style="width: 100%"
-        >
-          <el-option
-            v-for="classItem in classList"
-            :key="classItem.id"
-            :label="classItem.name"
-            :value="classItem.id"
-          ></el-option>
-        </el-select>
-      </el-form-item>
-
-      <!-- 姓名 -->
-      <el-form-item label="姓名" prop="nickName">
-        <el-input v-model="form.nickName" placeholder="请输入姓名" />
-      </el-form-item>
-
-      <!-- 手机号 -->
-      <el-form-item label="手机号" prop="phone">
-        <el-input v-model="form.phone" placeholder="请输入手机号" />
-      </el-form-item>
-
-      <!-- 语数英 -->
-      <el-form-item label="语数英" prop="chineseMathEnglish">
-        <el-input
-          v-model="form.chineseMathEnglish"
-          placeholder="请输入语数英成绩"
-        />
-      </el-form-item>
-
-      <!-- 职业技能 -->
-      <el-form-item label="职业技能" prop="vocationalSkills">
-        <el-input
-          v-model="form.vocationalSkills"
-          placeholder="请输入职业技能成绩"
-        />
-      </el-form-item>
-    </el-form>
-
-    <template #footer>
-      <div class="dialog-footer">
-        <el-button type="primary" @click="handleSubmit">保 存</el-button>
-        <el-button @click="handleCancel">取 消</el-button>
-      </div>
-    </template>
-  </el-dialog>
-</template>
-
-<script setup>
-import { ref, computed, watch } from "vue";
-import { getCards, addCards, updateCards } from "@/api/dz/cards";
-import { listUniversity } from "@/api/dz/school";
-
-const props = defineProps({
-  modelValue: {
-    type: Boolean,
-    default: false,
-  },
-  cardId: {
-    type: [String, Number],
-    default: null,
-  },
-  schoolList: {
-    type: Array,
-    default: () => [],
-  },
-  classList: {
-    type: Array,
-    default: () => [],
-  },
-});
-
-const emit = defineEmits(["update:modelValue", "success"]);
-
-const visible = computed({
-  get: () => props.modelValue,
-  set: (value) => emit("update:modelValue", value),
-});
-
-const formRef = ref();
-const schoolList = ref([]); // 学校列表
-
-const form = ref({
-  cardId: null,
-  schoolId: null,
-  classId: null,
-  nickName: "",
-  phone: "",
-  chineseMathEnglish: "",
-  vocationalSkills: "",
-});
-
-const rules = {
-  schoolId: [{ required: true, message: "学校不能为空", trigger: "change" }],
-  classId: [{ required: true, message: "班级不能为空", trigger: "change" }],
-  nickName: [{ required: true, message: "姓名不能为空", trigger: "blur" }],
-  phone: [
-    { required: true, message: "手机号不能为空", trigger: "blur" },
-    {
-      pattern: /^1[3-9]\d{9}$/,
-      message: "请输入正确的手机号",
-      trigger: "blur",
-    },
-  ],
-  chineseMathEnglish: [
-    { required: true, message: "语数英成绩不能为空", trigger: "blur" },
-  ],
-  vocationalSkills: [
-    { required: true, message: "职业技能成绩不能为空", trigger: "blur" },
-  ],
-};
-
-// 重置表单
-function resetForm() {
-  form.value = {
-    cardId: null,
-    schoolId: null,
-    classId: null,
-    nickName: "",
-    phone: "",
-    chineseMathEnglish: "",
-    vocationalSkills: "",
-  };
-}
-
-// 获取所有学校列表
-async function getAllSchools() {
-  try {
-    const response = await listUniversity({
-      pageNum: 1,
-      pageSize: 1000,
-    });
-    if (response.code === 200) {
-      // 处理API返回的数据结构
-      let schoolData = [];
-
-      // 检查是否有rows字段(直接在response中)
-      if (response.rows) {
-        schoolData = response.rows;
-      }
-      // 检查是否有data.rows字段
-      else if (response.data && response.data.rows) {
-        schoolData = response.data.rows;
-      }
-      // 检查是否有data数组
-      else if (response.data && Array.isArray(response.data)) {
-        schoolData = response.data;
-      }
-      // 检查是否有data对象
-      else if (response.data && response.data.id) {
-        schoolData = [response.data];
-      }
-
-      schoolList.value = schoolData;
-      console.log("所有学校数据:", schoolData);
-    }
-  } catch (error) {
-    console.error("获取所有学校列表失败:", error);
-    schoolList.value = [];
-  }
-}
-
-// 取消
-function handleCancel() {
-  visible.value = false;
-  resetForm();
-}
-
-// 提交
-async function handleSubmit() {
-  formRef.value.validate(async (valid) => {
-    if (valid) {
-      try {
-        if (form.value.cardId != null) {
-          await updateCards(form.value);
-        } else {
-          await addCards(form.value);
-        }
-
-        emit("success", "保存成功!");
-        visible.value = false;
-        resetForm();
-      } catch (error) {
-        console.error("保存失败:", error);
-        throw error;
-      }
-    }
-  });
-}
-
-// 获取卡片数据
-async function fetchCardData() {
-  if (props.cardId) {
-    try {
-      const response = await getCards(props.cardId);
-      form.value = response.data;
-    } catch (error) {
-      console.error("获取卡片数据失败:", error);
-    }
-  }
-}
-
-// 监听弹窗打开,获取数据
-watch(visible, (newVal) => {
-  if (newVal && props.cardId) {
-    fetchCardData();
-    getAllSchools(); // 获取所有学校列表
-  } else if (!newVal) {
-    resetForm();
-  }
-});
-</script>
-
-<style scoped>
-.dialog-footer {
-  text-align: right;
-}
-</style>

+ 0 - 181
back-ui/src/views/dz/cards copy/components/PaymentDialog.vue

@@ -1,181 +0,0 @@
-<template>
-  <el-dialog
-    title="缴费"
-    v-model="visible"
-    width="400px"
-    append-to-body
-    align-center
-    :center="true"
-    :destroy-on-close="true"
-  >
-    <div class="payment-confirm-content">
-      <div class="confirm-item">
-        <el-icon class="warning-icon">
-          <Warning />
-        </el-icon>
-        <span class="confirm-text">
-          {{ getConfirmMessage() }}
-        </span>
-      </div>
-    </div>
-
-    <template #footer>
-      <div class="dialog-footer">
-        <el-button @click="handleCancel">取消</el-button>
-        <el-button type="primary" @click="handleConfirm" :loading="loading"
-          >确定</el-button
-        >
-      </div>
-    </template>
-  </el-dialog>
-</template>
-
-<script setup>
-import { ref, computed } from "vue";
-import { Warning } from "@element-plus/icons-vue";
-import { payCard, listCards } from "@/api/dz/cards";
-
-const props = defineProps({
-  modelValue: {
-    type: Boolean,
-    default: false,
-  },
-  cardNo: {
-    type: [String, Number, Array],
-    default: "",
-    // 卡号(字符串),缴费时会自动转换为 cardId
-  },
-  cardIds: {
-    type: Array,
-    default: () => [],
-    // 卡ID(数字数组),直接用于缴费API
-  },
-});
-
-const emit = defineEmits(["update:modelValue", "confirm", "success"]);
-
-const loading = ref(false);
-
-const visible = computed({
-  get: () => props.modelValue,
-  set: (value) => emit("update:modelValue", value),
-});
-
-// 获取确认消息
-function getConfirmMessage() {
-  // 处理 cardNo 为数组的情况
-  if (Array.isArray(props.cardNo) && props.cardNo.length > 0) {
-    if (props.cardNo.length === 1) {
-      return `是否确认缴费vip卡编号为${props.cardNo[0]}的数据项?`;
-    } else {
-      return `是否确认缴费以下${
-        props.cardNo.length
-      }张vip卡?\n${props.cardNo.join("、")}`;
-    }
-  }
-  // 处理 cardNo 为单个值的情况
-  else if (props.cardNo) {
-    return `是否确认缴费vip卡编号为${props.cardNo}的数据项?`;
-  }
-  // 处理 cardIds 的情况
-  else if (props.cardIds && props.cardIds.length > 0) {
-    return `是否确认缴费选中的${props.cardIds.length}张学习卡?`;
-  }
-  return "是否确认缴费?";
-}
-
-// 取消
-function handleCancel() {
-  visible.value = false;
-}
-
-// 确认缴费
-async function handleConfirm() {
-  try {
-    loading.value = true;
-
-    // 确定要缴费的卡ID
-    let cardIdsToPay = [];
-
-    // 处理 cardNo 为数组的情况
-    if (Array.isArray(props.cardNo) && props.cardNo.length > 0) {
-      // 根据 cardNo 数组查询对应的 cardId
-      for (const cardNo of props.cardNo) {
-        const cardInfo = await getCardIdByCardNo(cardNo);
-        if (cardInfo) {
-          cardIdsToPay.push(cardInfo.cardId);
-        }
-      }
-    }
-    // 处理 cardNo 为单个值的情况
-    else if (props.cardNo) {
-      const cardInfo = await getCardIdByCardNo(props.cardNo);
-      if (cardInfo) {
-        cardIdsToPay.push(cardInfo.cardId);
-      }
-    }
-    // 处理 cardIds 的情况(直接使用 cardId)
-    else if (props.cardIds && props.cardIds.length > 0) {
-      cardIdsToPay = props.cardIds;
-    }
-
-    if (cardIdsToPay.length === 0) {
-      throw new Error("没有选择要缴费的卡片");
-    }
-
-    // 调用缴费API
-    await payCard(cardIdsToPay);
-
-    emit("success", "缴费成功!");
-    visible.value = false;
-  } catch (error) {
-    console.error("缴费失败:", error);
-    emit("confirm", { error: error.message });
-  } finally {
-    loading.value = false;
-  }
-}
-
-// 根据 cardNo 查询 cardId
-async function getCardIdByCardNo(cardNo) {
-  try {
-    const response = await listCards({ cardNo: cardNo });
-    if (response.code === 200 && response.rows && response.rows.length > 0) {
-      return response.rows[0]; // 返回第一个匹配的卡片信息
-    }
-    return null;
-  } catch (error) {
-    console.error(`根据卡号 ${cardNo} 查询卡片信息失败:`, error);
-    return null;
-  }
-}
-</script>
-
-<style scoped>
-.payment-confirm-content {
-  padding: 20px 0;
-}
-
-.confirm-item {
-  display: flex;
-  align-items: flex-start;
-  gap: 12px;
-}
-
-.warning-icon {
-  color: #e6a23c;
-  font-size: 20px;
-  margin-top: 2px;
-  flex-shrink: 0;
-}
-
-.confirm-text {
-  font-size: 14px;
-  line-height: 1.5;
-  color: #ffffff;
-}
-
-.dialog-footer {
-  text-align: right;
-}
-</style>

+ 0 - 181
back-ui/src/views/dz/cards copy/components/RefundDialog.vue

@@ -1,181 +0,0 @@
-<template>
-  <el-dialog
-    title="退费"
-    v-model="visible"
-    width="400px"
-    append-to-body
-    align-center
-    :center="true"
-    :destroy-on-close="true"
-  >
-    <div class="refund-confirm-content">
-      <div class="confirm-item">
-        <el-icon class="warning-icon">
-          <Warning />
-        </el-icon>
-        <span class="confirm-text">
-          {{ getConfirmMessage() }}
-        </span>
-      </div>
-    </div>
-
-    <template #footer>
-      <div class="dialog-footer">
-        <el-button @click="handleCancel">取消</el-button>
-        <el-button type="primary" @click="handleConfirm" :loading="loading"
-          >确定</el-button
-        >
-      </div>
-    </template>
-  </el-dialog>
-</template>
-
-<script setup>
-import { ref, computed } from "vue";
-import { Warning } from "@element-plus/icons-vue";
-import { refundCard, listCards } from "@/api/dz/cards";
-
-const props = defineProps({
-  modelValue: {
-    type: Boolean,
-    default: false,
-  },
-  cardNo: {
-    type: [String, Number, Array],
-    default: "",
-    // 卡号(字符串),退费时会自动转换为 cardId
-  },
-  cardIds: {
-    type: Array,
-    default: () => [],
-    // 卡ID(数字数组),直接用于退费API
-  },
-});
-
-const emit = defineEmits(["update:modelValue", "confirm", "success"]);
-
-const loading = ref(false);
-
-const visible = computed({
-  get: () => props.modelValue,
-  set: (value) => emit("update:modelValue", value),
-});
-
-// 获取确认消息
-function getConfirmMessage() {
-  // 处理 cardNo 为数组的情况
-  if (Array.isArray(props.cardNo) && props.cardNo.length > 0) {
-    if (props.cardNo.length === 1) {
-      return `是否确认退费vip卡编号为${props.cardNo[0]}的数据项?`;
-    } else {
-      return `是否确认退费以下${
-        props.cardNo.length
-      }张vip卡?\n${props.cardNo.join("、")}`;
-    }
-  }
-  // 处理 cardNo 为单个值的情况
-  else if (props.cardNo) {
-    return `是否确认退费vip卡编号为${props.cardNo}的数据项?`;
-  }
-  // 处理 cardIds 的情况
-  else if (props.cardIds && props.cardIds.length > 0) {
-    return `是否确认退费选中的${props.cardIds.length}张学习卡?`;
-  }
-  return "是否确认退费?";
-}
-
-// 取消
-function handleCancel() {
-  visible.value = false;
-}
-
-// 确认退费
-async function handleConfirm() {
-  try {
-    loading.value = true;
-
-    // 确定要退费的卡ID
-    let cardIdsToRefund = [];
-
-    // 处理 cardNo 为数组的情况
-    if (Array.isArray(props.cardNo) && props.cardNo.length > 0) {
-      // 根据 cardNo 数组查询对应的 cardId
-      for (const cardNo of props.cardNo) {
-        const cardInfo = await getCardIdByCardNo(cardNo);
-        if (cardInfo) {
-          cardIdsToRefund.push(cardInfo.cardId);
-        }
-      }
-    }
-    // 处理 cardNo 为单个值的情况
-    else if (props.cardNo) {
-      const cardInfo = await getCardIdByCardNo(props.cardNo);
-      if (cardInfo) {
-        cardIdsToRefund.push(cardInfo.cardId);
-      }
-    }
-    // 处理 cardIds 的情况(直接使用 cardId)
-    else if (props.cardIds && props.cardIds.length > 0) {
-      cardIdsToRefund = props.cardIds;
-    }
-
-    if (cardIdsToRefund.length === 0) {
-      throw new Error("没有选择要退费的卡片");
-    }
-
-    // 调用退费API
-    await refundCard(cardIdsToRefund);
-
-    emit("success", "退费成功!");
-    visible.value = false;
-  } catch (error) {
-    console.error("退费失败:", error);
-    emit("confirm", { error: error.message });
-  } finally {
-    loading.value = false;
-  }
-}
-
-// 根据 cardNo 查询 cardId
-async function getCardIdByCardNo(cardNo) {
-  try {
-    const response = await listCards({ cardNo: cardNo });
-    if (response.code === 200 && response.rows && response.rows.length > 0) {
-      return response.rows[0]; // 返回第一个匹配的卡片信息
-    }
-    return null;
-  } catch (error) {
-    console.error(`根据卡号 ${cardNo} 查询卡片信息失败:`, error);
-    return null;
-  }
-}
-</script>
-
-<style scoped>
-.refund-confirm-content {
-  padding: 20px 0;
-}
-
-.confirm-item {
-  display: flex;
-  align-items: flex-start;
-  gap: 12px;
-}
-
-.warning-icon {
-  color: #e6a23c;
-  font-size: 20px;
-  margin-top: 2px;
-  flex-shrink: 0;
-}
-
-.confirm-text {
-  font-size: 14px;
-  line-height: 1.5;
-  color: #ffffff;
-}
-
-.dialog-footer {
-  text-align: right;
-}
-</style>

+ 0 - 181
back-ui/src/views/dz/cards copy/components/ReopenCardDialog.vue

@@ -1,181 +0,0 @@
-<template>
-  <el-dialog
-    title="重开"
-    v-model="visible"
-    width="400px"
-    append-to-body
-    align-center
-    :center="true"
-    :destroy-on-close="true"
-  >
-    <div class="reopen-card-confirm-content">
-      <div class="confirm-item">
-        <el-icon class="warning-icon">
-          <Warning />
-        </el-icon>
-        <span class="confirm-text">
-          {{ getConfirmMessage() }}
-        </span>
-      </div>
-    </div>
-
-    <template #footer>
-      <div class="dialog-footer">
-        <el-button @click="handleCancel">取消</el-button>
-        <el-button type="primary" @click="handleConfirm" :loading="loading"
-          >确定</el-button
-        >
-      </div>
-    </template>
-  </el-dialog>
-</template>
-
-<script setup>
-import { ref, computed } from "vue";
-import { Warning } from "@element-plus/icons-vue";
-import { reopenCard, listCards } from "@/api/dz/cards";
-
-const props = defineProps({
-  modelValue: {
-    type: Boolean,
-    default: false,
-  },
-  cardNo: {
-    type: [String, Number, Array],
-    default: "",
-    // 卡号(字符串),重开时会自动转换为 cardId
-  },
-  cardIds: {
-    type: Array,
-    default: () => [],
-    // 卡ID(数字数组),直接用于重开API
-  },
-});
-
-const emit = defineEmits(["update:modelValue", "confirm", "success"]);
-
-const loading = ref(false);
-
-const visible = computed({
-  get: () => props.modelValue,
-  set: (value) => emit("update:modelValue", value),
-});
-
-// 获取确认消息
-function getConfirmMessage() {
-  // 处理 cardNo 为数组的情况
-  if (Array.isArray(props.cardNo) && props.cardNo.length > 0) {
-    if (props.cardNo.length === 1) {
-      return `是否确认重开VIP卡编号为${props.cardNo[0]}的数据项?`;
-    } else {
-      return `是否确认重开以下${
-        props.cardNo.length
-      }张VIP卡?\n${props.cardNo.join("、")}`;
-    }
-  }
-  // 处理 cardNo 为单个值的情况
-  else if (props.cardNo) {
-    return `是否确认重开VIP卡编号为${props.cardNo}的数据项?`;
-  }
-  // 处理 cardIds 的情况
-  else if (props.cardIds && props.cardIds.length > 0) {
-    return `是否确认重开选中的${props.cardIds.length}张学习卡?`;
-  }
-  return "是否确认重开?";
-}
-
-// 取消
-function handleCancel() {
-  visible.value = false;
-}
-
-// 确认重开
-async function handleConfirm() {
-  try {
-    loading.value = true;
-
-    // 确定要重开的卡ID
-    let cardIdsToReopen = [];
-
-    // 处理 cardNo 为数组的情况
-    if (Array.isArray(props.cardNo) && props.cardNo.length > 0) {
-      // 根据 cardNo 数组查询对应的 cardId
-      for (const cardNo of props.cardNo) {
-        const cardInfo = await getCardIdByCardNo(cardNo);
-        if (cardInfo) {
-          cardIdsToReopen.push(cardInfo.cardId);
-        }
-      }
-    }
-    // 处理 cardNo 为单个值的情况
-    else if (props.cardNo) {
-      const cardInfo = await getCardIdByCardNo(props.cardNo);
-      if (cardInfo) {
-        cardIdsToReopen.push(cardInfo.cardId);
-      }
-    }
-    // 处理 cardIds 的情况(直接使用 cardId)
-    else if (props.cardIds && props.cardIds.length > 0) {
-      cardIdsToReopen = props.cardIds;
-    }
-
-    if (cardIdsToReopen.length === 0) {
-      throw new Error("没有选择要重开的卡片");
-    }
-
-    // 调用重开API
-    await reopenCard(cardIdsToReopen);
-
-    emit("success", "重开成功!");
-    visible.value = false;
-  } catch (error) {
-    console.error("重开失败:", error);
-    emit("confirm", { error: error.message });
-  } finally {
-    loading.value = false;
-  }
-}
-
-// 根据 cardNo 查询 cardId
-async function getCardIdByCardNo(cardNo) {
-  try {
-    const response = await listCards({ cardNo: cardNo });
-    if (response.code === 200 && response.rows && response.rows.length > 0) {
-      return response.rows[0]; // 返回第一个匹配的卡片信息
-    }
-    return null;
-  } catch (error) {
-    console.error(`根据卡号 ${cardNo} 查询卡片信息失败:`, error);
-    return null;
-  }
-}
-</script>
-
-<style scoped>
-.reopen-card-confirm-content {
-  padding: 20px 0;
-}
-
-.confirm-item {
-  display: flex;
-  align-items: flex-start;
-  gap: 12px;
-}
-
-.warning-icon {
-  color: #e6a23c;
-  font-size: 20px;
-  margin-top: 2px;
-  flex-shrink: 0;
-}
-
-.confirm-text {
-  font-size: 14px;
-  line-height: 1.5;
-  color: #ffffff;
-}
-
-.dialog-footer {
-  text-align: right;
-}
-</style>

+ 0 - 291
back-ui/src/views/dz/cards copy/config/form.js

@@ -1,291 +0,0 @@
-const info = [
-  // 第一行
-  {
-    label: "省份筛选",
-    name: "areaIds",
-    value: [],
-    type: "slot",
-    slotName: "areaSelect",
-    search: true,
-  },
-  {
-    label: "分配学校",
-    name: "assignSchoolId",
-    value: "",
-    type: "select",
-    option: [],
-    optionLabel: "name",
-    optionValue: "id",
-    search: true,
-  },
-  {
-    label: "注册学校",
-    name: "registerSchoolId",
-    value: "",
-    type: "select",
-    option: [],
-    optionLabel: "name",
-    optionValue: "id",
-    search: true,
-  },
-  {
-    label: "培训学校",
-    name: "campusId",
-    value: "",
-    type: "select",
-    option: [],
-    optionLabel: "name",
-    optionValue: "id",
-    search: true,
-  },
-  {
-    label: "代理商",
-    name: "agentId",
-    value: "",
-    type: "select",
-    option: [],
-    optionLabel: "name",
-    optionValue: "id",
-    search: true,
-  },
-
-  // 第二行
-  {
-    label: "手机",
-    name: "cardNo",
-    value: "",
-    type: "text",
-    search: true,
-  },
-  {
-    label: "卡号段",
-    name: "cardNoRange",
-    value: "",
-    type: "range",
-    search: true,
-    placeholder: "请选择卡号段",
-    startPlaceholder: "开始卡号",
-    endPlaceholder: "结束卡号",
-    beginField: "begin",
-    endField: "end",
-  },
-  {
-    label: "平台机构",
-    name: "type",
-    value: "",
-    type: "select",
-    option: [],
-    optionLabel: "label",
-    optionValue: "value",
-    search: true,
-  },
-  {
-    label: "考生类型",
-    name: "examType",
-    value: "",
-    type: "select",
-    option: [],
-    optionLabel: "label",
-    optionValue: "value",
-    search: true,
-  },
-
-  // 第三行
-  {
-    label: "分配状态",
-    name: "distributeStatus",
-    value: "",
-    type: "select",
-    option: [],
-    optionLabel: "label",
-    optionValue: "value",
-    search: true,
-  },
-  {
-    label: "使用状态",
-    name: "status",
-    value: "",
-    type: "select",
-    option: [],
-    optionLabel: "label",
-    optionValue: "value",
-    search: true,
-  },
-  {
-    label: "过期状态",
-    name: "timeStatus",
-    value: "",
-    type: "select",
-    option: [],
-    optionLabel: "label",
-    optionValue: "value",
-    search: true,
-  },
-  {
-    label: "结算状态",
-    name: "payStatus",
-    value: "",
-    type: "select",
-    option: [],
-    optionLabel: "label",
-    optionValue: "value",
-    search: true,
-  },
-
-  // 其他字段(不在搜索表单显示但保留的)
-  {
-    label: "卡号",
-    name: "cardNo",
-    value: "",
-    type: "text",
-    search: false,
-  },
-  {
-    label: "密码",
-    name: "password",
-    value: "",
-    type: "text",
-    search: false,
-  },
-  {
-    label: "末级代理商ID",
-    name: "leftAgentId",
-    value: "",
-    type: "select",
-    option: [],
-    optionLabel: "name",
-    optionValue: "id",
-    search: false,
-  },
-  {
-    label: "学校班级ID",
-    name: "schoolId",
-    value: "",
-    type: "text",
-    search: false,
-  },
-  {
-    label: "班级ID",
-    name: "classId",
-    value: "",
-    type: "text",
-    search: false,
-  },
-  {
-    label: "入学年份",
-    name: "year",
-    value: "",
-    type: "text",
-    search: false,
-  },
-  {
-    label: "高考年份",
-    name: "endYear",
-    value: "",
-    type: "text",
-    search: false,
-  },
-  {
-    label: "开卡ID",
-    name: "openId",
-    value: "",
-    type: "text",
-    search: false,
-  },
-  {
-    label: "分配时间",
-    name: "distributeTime",
-    value: "",
-    type: "date",
-    dateType: "date",
-    valueFormat: "YYYY-MM-DD",
-    search: false,
-  },
-  {
-    label: "过期时间",
-    name: "outDate",
-    value: "",
-    type: "date",
-    dateType: "date",
-    valueFormat: "YYYY-MM-DD",
-    search: false,
-  },
-  {
-    label: "开卡时间",
-    name: "openTime",
-    value: "",
-    type: "date",
-    dateType: "date",
-    valueFormat: "YYYY-MM-DD",
-    search: false,
-  },
-  {
-    label: "缴费时间",
-    name: "payTime",
-    value: "",
-    type: "date",
-    dateType: "date",
-    valueFormat: "YYYY-MM-DD",
-    search: false,
-  },
-  {
-    label: "激活时间",
-    name: "activeTime",
-    value: "",
-    type: "date",
-    dateType: "date",
-    valueFormat: "YYYY-MM-DD",
-    search: false,
-  },
-  {
-    label: "结算时间",
-    name: "settlementTime",
-    value: "",
-    type: "date",
-    dateType: "date",
-    valueFormat: "YYYY-MM-DD",
-    search: false,
-  },
-  {
-    label: "退费时间",
-    name: "refundTime",
-    value: "",
-    type: "date",
-    dateType: "date",
-    valueFormat: "YYYY-MM-DD",
-    search: false,
-  },
-  {
-    label: "关卡时间",
-    name: "closeTime",
-    value: "",
-    type: "date",
-    dateType: "date",
-    valueFormat: "YYYY-MM-DD",
-    search: false,
-  },
-  {
-    label: "创建时间",
-    name: "createTime",
-    value: "",
-    type: "date",
-    dateType: "date",
-    valueFormat: "YYYY-MM-DD",
-    search: false,
-  },
-  {
-    label: "更新时间",
-    name: "updateTime",
-    value: "",
-    type: "date",
-    dateType: "date",
-    valueFormat: "YYYY-MM-DD",
-    search: false,
-  },
-];
-
-const formInfo = {
-  info,
-};
-
-export default formInfo;

+ 0 - 195
back-ui/src/views/dz/cards copy/config/table.js

@@ -1,195 +0,0 @@
-const tableConfig = {
-  // 表格列配置
-  columns: [
-    {
-      label: "序号",
-      type: "slot",
-      slotName: "index",
-      align: "center",
-      width: 80,
-    },
-    {
-      label: "卡号",
-      prop: "cardNo",
-      align: "center",
-      width: 120,
-      showOverflowTooltip: true,
-    },
-    {
-      label: "密码",
-      prop: "password",
-      align: "center",
-      width: 100,
-    },
-    {
-      label: "姓名—手机",
-      prop: "studentInfo",
-      align: "center",
-      type: "slot",
-      slotName: "studentInfo", // 自定义插槽显示姓名-手机
-      width: 150,
-    },
-    {
-      label: "卡类型",
-      prop: "type",
-      align: "center",
-      type: "dict",
-      options: [], // 动态设置
-      width: 100,
-    },
-    {
-      label: "分配学校",
-      prop: "assignSchoolName",
-      align: "center",
-
-      width: 120,
-    },
-    {
-      label: "机构",
-      prop: "deptName",
-      align: "center",
-      width: 120,
-    },
-    {
-      label: "代理商",
-      prop: "agentName",
-      align: "center",
-      width: 120,
-    },
-    {
-      label: "注册学校",
-      prop: "schoolName",
-      align: "center",
-
-      width: 120,
-    },
-    {
-      label: "班级",
-      prop: "className",
-      align: "center",
-
-      width: 100,
-    },
-    {
-      label: "校区",
-      prop: "campusName",
-      align: "center",
-      width: 100,
-    },
-    {
-      label: "校区班级",
-      prop: "className",
-      align: "center",
-      type: "dict",
-      options: [], // 动态设置校区班级选项
-      width: 120,
-    },
-    {
-      label: "分配考生类型",
-      prop: "assignExamType",
-      align: "center",
-      type: "dict",
-      options: [], // 动态设置
-      width: 120,
-    },
-    {
-      label: "分配状态",
-      prop: "distributeStatus",
-      align: "center",
-      type: "dict",
-      options: [], // 动态设置
-      width: 100,
-    },
-    {
-      label: "使用状态",
-      prop: "status",
-      align: "center",
-      type: "dict",
-      options: [], // 动态设置
-      width: 100,
-    },
-    {
-      label: "过期状态",
-      prop: "timeStatus",
-      align: "center",
-      type: "dict",
-      options: [], // 动态设置
-      width: 100,
-    },
-    {
-      label: "结算状态",
-      prop: "isSettlement",
-      align: "center",
-      type: "dict",
-      options: [], // 动态设置
-      width: 100,
-    },
-    {
-      label: "激活时间",
-      prop: "activeTime",
-      align: "center",
-      type: "time",
-      format: "{y}-{m}-{d}",
-      width: 120,
-    },
-    {
-      label: "到期时间",
-      prop: "outDate",
-      align: "center",
-      type: "time",
-      format: "{y}-{m}-{d}",
-      width: 120,
-    },
-    {
-      label: "缴费时间",
-      prop: "payTime",
-      align: "center",
-      type: "time",
-      format: "{y}-{m}-{d}",
-      width: 120,
-    },
-    {
-      label: "开卡时间",
-      prop: "openTime",
-      align: "center",
-      type: "time",
-      format: "{y}-{m}-{d}",
-      width: 120,
-    },
-  ],
-
-  // 操作按钮配置
-  actions: [
-    // {
-    //   key: "edit",
-    //   label: "修改",
-    //   type: "primary",
-    //   icon: "Edit",
-    //   link: true,
-    //   permission: ["dz:cards:edit"],
-    // },
-    {
-      key: "delete",
-      label: "删除",
-      type: "primary",
-      icon: "Delete",
-      link: true,
-      permission: ["dz:cards:remove"],
-    },
-  ],
-
-  // 表格属性配置
-  tableProps: {
-    stripe: true,
-    border: false,
-    showSelection: true, // 启用多选列
-    showIndex: false, // 使用自定义序号列
-    showPagination: true,
-    actionWidth: "auto",
-    // 选择模式配置
-    selectionMode: "multiple", // 'single' | 'multiple' | 'none'
-    rowKey: "cardId", // 选择键字段名
-  },
-};
-
-export default tableConfig;

+ 0 - 950
back-ui/src/views/dz/cards copy/index.vue

@@ -1,950 +0,0 @@
-<template>
-  <div class="app-container">
-    <!-- 搜索表单组件 -->
-    <SearchForm v-show="showSearch" :config="searchConfig" :model-value="queryParams"
-      @update:model-value="handleSearchFormUpdate" :on-search="handleQuery" :on-reset="resetQuery" :show-expand="true"
-      :expand-count="6" label-width="68px" />
-
-    <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
-        <el-button type="primary" plain icon="Plus" @click="handleAdd" v-hasPermi="['dz:cards:add']">制卡</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button type="success" plain @click="handleAssignCard" v-hasPermi="['dz:cards:assign']"
-          style="border-color: #67c23a; color: #67c23a; font-weight: 500">
-          <svg-icon icon-class="peoples" class="mr-1" style="font-size: 16px" />
-          分配卡
-        </el-button>
-      </el-col>
-      <!-- <el-col :span="1.5">
-        <el-button
-                type="success"
-                plain
-                icon="Edit"
-                :disabled="single"
-                @click="handleUpdate"
-                v-hasPermi="['dz:cards:edit']"
-          >修改</el-button
-        >
-      </el-col> -->
-      <el-col :span="1.5">
-        <el-button type="warning" plain :disabled="multiple" @click="handlePayment" v-hasPermi="['dz:cards:pay']"
-          style="border-color: #e6a23c; color: #e6a23c; font-weight: 500">
-          <svg-icon icon-class="money" class="mr-1" style="font-size: 16px" />
-          缴费
-        </el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button type="danger" plain :disabled="multiple" @click="handleCloseCard" v-hasPermi="['dz:cards:close']"
-          style="border-color: #f56c6c; color: #f56c6c; font-weight: 500">
-          <svg-icon icon-class="lock" class="mr-1" style="font-size: 16px" />
-          关卡
-        </el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button type="primary" plain :disabled="multiple" @click="handleReopenCard" v-hasPermi="['dz:cards:reopen']"
-          style="border-color: #13c2c2; color: #13c2c2; font-weight: 500">
-          <svg-icon icon-class="enter" class="mr-1" style="font-size: 16px" />
-          重开
-        </el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button type="danger" plain :disabled="multiple" @click="handleRefund" v-hasPermi="['dz:cards:refund']"
-          style="border-color: #ff4d4f; color: #ff4d4f; font-weight: 500">
-          <svg-icon icon-class="money" class="mr-1" style="font-size: 16px" />
-          退费
-        </el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button type="primary" plain @click="handleAssociateCampus" v-hasPermi="['dz:cards:associateCampus']"
-          style="border-color: #1890ff; color: #1890ff; font-weight: 500">
-          <svg-icon icon-class="link" class="mr-1" style="font-size: 16px" />
-          关联校区
-        </el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button type="success" plain @click="handleApplyCard" v-hasPermi="['dz:cards:openFinished']"
-          style="border-color: #52c41a; color: #52c41a; font-weight: 500">
-          <svg-icon icon-class="edit" class="mr-1" style="font-size: 16px" />
-          直接开卡
-        </el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button type="danger" plain :disabled="multiple" icon="Delete" @click="handleDelete"
-          v-hasPermi="['dz:cards:remove']" style="border-color: #ff4d4f; color: #ff4d4f; font-weight: 500">
-          删除
-        </el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button type="primary" plain icon="Download" @click="handleExport" v-hasPermi="['dz:cards:export']"
-          style="border-color: #722ed1; color: #722ed1; font-weight: 500">导出</el-button>
-      </el-col>
-      <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
-    </el-row>
-
-    <!-- Table组件 -->
-    <Table :data="cardsList" :columns="tableColumns" :actions="tableActions" :loading="loading" :total="total"
-      :queryParams="queryParams" v-bind="tableProps" @action="handleTableAction"
-      @selection-change="handleSelectionChange" @getList="getList">
-      <!-- 序号插槽 -->
-      <template #index="{ row, $index }">
-        {{ getRowIndex($index) }}
-      </template>
-
-      <!-- 姓名-手机插槽 -->
-      <template #studentInfo="{ row }">
-        <div class="student-info">
-          <div class="student-name">{{ row.nickName || "-" }}</div>
-          <div class="student-phone">{{ row.phonenumber || "-" }}</div>
-        </div>
-      </template>
-    </Table>
-
-    <!-- 弹窗组件 -->
-    <CardGenerationDialog v-model="cardGenerationOpen" :institution-list="institutionList" :school-list="schoolList"
-      :card-type-options="card_type" @success="handleDialogSuccess" />
-
-    <AssignCardDialog v-model="assignCardOpen" :selected-cards="selectedRows" :school-list="schoolList"
-      :card-type-options="card_type" @success="handleDialogSuccess" />
-
-    <EditStudentDialog v-model="open" :card-id="currentCardId" :class-list="classList" @success="handleDialogSuccess" />
-
-    <PaymentDialog v-model="paymentOpen" :card-no="currentCardNo" :card-ids="selectedCardIds"
-      :selected-cards="selectedRows" @success="handlePaymentSuccess" />
-
-    <CloseCardDialog v-model="closeCardOpen" :card-no="currentCloseCardNo" :card-ids="selectedCardIds"
-      @success="handleCloseCardSuccess" />
-
-    <ReopenCardDialog v-model="reopenCardOpen" :card-no="currentReopenCardNo" :card-ids="selectedCardIds"
-      @success="handleReopenCardSuccess" />
-
-    <RefundDialog v-model="refundOpen" :card-no="currentRefundCardNo" @confirm="handleRefundConfirm" />
-
-    <AssociateCampusDialog v-model="associateCampusOpen" :selected-cards="selectedRows"
-      @success="handleAssociateCampusSuccess" />
-
-    <ApplyCardDialog v-model="applyCardOpen" :selected-cards="selectedRows" @success="handleApplyCardSuccess" />
-  </div>
-</template>
-
-<style scoped>
-.student-info {
-  display: flex;
-  flex-direction: column;
-  align-items: center;
-}
-
-.student-name {
-  font-weight: 500;
-  margin-bottom: 2px;
-}
-
-.student-phone {
-  font-size: 12px;
-  color: #909399;
-}
-</style>
-
-<script setup name="Cards">
-import {
-  listCards,
-  getCards,
-  delCards,
-  addCards,
-  updateCards,
-} from "@/api/dz/cards";
-import SearchForm from "@/components/SearchForm/index.vue";
-import Table from "@/components/Table/index.vue";
-import CardGenerationDialog from "./components/CardGenerationDialog.vue";
-import AssignCardDialog from "./components/AssignCardDialog.vue";
-import EditStudentDialog from "./components/EditStudentDialog.vue";
-import PaymentDialog from "./components/PaymentDialog.vue";
-import CloseCardDialog from "./components/CloseCardDialog.vue";
-import ReopenCardDialog from "./components/ReopenCardDialog.vue";
-import RefundDialog from "./components/RefundDialog.vue";
-import AssociateCampusDialog from "./components/AssociateCampusDialog.vue";
-import ApplyCardDialog from "./components/ApplyCardDialog.vue";
-import formInfo from "./config/form.js";
-import tableConfig from "./config/table.js";
-// import { listUniversity } from "@/api/dz/school";
-import { assignCard, issueCard, getCampusSchoolList } from "@/api/dz/cards";
-import { listDept } from "@/api/system/dept";
-import { listAgent } from "@/api/dz/agent";
-import { getClassesBySchoolId } from "@/api/dz/classes";
-
-const { proxy } = getCurrentInstance();
-const {
-  exam_type,
-  card_status,
-  card_distribute_status,
-  card_time_status,
-  bool_values,
-  card_pay_status,
-  card_type,
-} = proxy.useDict(
-  "exam_type",
-  "card_status",
-  "card_distribute_status",
-  "card_time_status",
-  "bool_values",
-  "card_pay_status",
-  "card_type"
-);
-
-const cardsList = ref([]);
-const schoolList = ref([]);
-const campusList = ref([]); // 校区列表
-const classList = ref([]); // 班级列表
-const open = ref(false);
-const cardGenerationOpen = ref(false); // 制卡对话框
-const assignCardOpen = ref(false); // 分配卡对话框
-const paymentOpen = ref(false); // 缴费对话框
-const closeCardOpen = ref(false); // 关卡对话框
-const reopenCardOpen = ref(false); // 重开对话框
-const refundOpen = ref(false); // 退费对话框
-const associateCampusOpen = ref(false); // 关联校区对话框
-const applyCardOpen = ref(false); // 直接开卡对话框
-const currentCardNo = ref([]); // 当前缴费的卡号(支持数组)
-const currentCloseCardNo = ref([]); // 当前关卡的卡号(支持数组)
-const currentReopenCardNo = ref([]); // 当前重开的卡号(支持数组)
-const currentRefundCardNo = ref(""); // 当前退费的卡号
-const agentList = ref([]); // 代理商列表
-const institutionList = ref([]); // 机构列表
-const selectedRows = ref([]); // 选中的行
-const selectedCardIds = computed(() =>
-  selectedRows.value.map((row) => row.cardId)
-); // 选中的卡ID列表
-const currentCardId = ref(null); // 当前编辑的卡片ID
-const loading = ref(true);
-const showSearch = ref(true);
-const ids = ref([]);
-const single = ref(true);
-const multiple = ref(true);
-const total = ref(0);
-const title = ref("");
-
-// 搜索配置
-const searchConfig = computed(() => {
-  const config = [...formInfo.info];
-
-  // 动态设置选项数据
-  config.forEach((item) => {
-    switch (item.name) {
-      case "type":
-        item.option = card_type.value || [];
-        break;
-      case "status":
-        item.option = card_status.value || [];
-        break;
-      case "distributeStatus":
-        item.option = card_distribute_status.value || [];
-        break;
-      // 移除registerSchoolId,实体类中不存在
-      case "timeStatus":
-        item.option = card_time_status.value || [];
-        break;
-      case "payStatus":
-        item.option = card_pay_status.value || [];
-        break;
-      case "isSettlement":
-        item.option = bool_values.value || [];
-        break;
-      case "assignSchoolId":
-        item.option = schoolList.value || [];
-        break;
-      case "registerSchoolId":
-        item.option = schoolList.value || [];
-        break;
-      case "campusId":
-        item.option = campusList.value || [];
-        break;
-      case "examType":
-        item.option = exam_type.value || [];
-        break;
-    }
-  });
-
-  return config;
-});
-
-// 表格配置
-const tableColumns = computed(() => {
-  const columns = [...tableConfig.columns];
-
-  // 动态设置字典选项
-  columns.forEach((column) => {
-    switch (column.prop) {
-      case "type":
-        column.options = card_type.value || [];
-        break;
-      case "status":
-        column.options = card_status.value || [];
-        break;
-      case "distributeStatus":
-        column.options = card_distribute_status.value || [];
-        break;
-      case "timeStatus":
-        column.options = card_time_status.value || [];
-        break;
-      case "payStatus":
-        column.options = card_pay_status.value || [];
-        break;
-      case "isSettlement":
-        column.options = bool_values.value || [];
-        break;
-      // 移除studentCategory,实体类中不存在
-      case "registerSchoolId":
-      case "assignSchoolId":
-        column.options = schoolList.value || [];
-        break;
-      case "studentCategory":
-      case "classId":
-      case "schoolClassId":
-      case "campusId":
-        column.options = []; // 需要从相应API获取
-        break;
-    }
-  });
-
-  return columns;
-});
-
-const tableActions = computed(() => tableConfig.actions);
-const tableProps = computed(() => tableConfig.tableProps);
-
-const data = reactive({
-  form: {},
-  queryParams: {
-    pageNum: 1,
-    pageSize: 10,
-    // 搜索表单字段
-    areaIds: [],
-    assignSchoolId: null,
-    registerSchoolId: null,
-    campusId: null,
-    agentId: null,
-    cardNo: null,
-    password: null,
-    cardNoRange: null,
-    begin: null,
-    end: null,
-    type: null,
-    studentCategory: null, // 分配考生类型
-    studentName: null, // 学生姓名
-    phone: null, // 手机号
-    registerSchoolId: null, // 注册学校
-    schoolClassId: null, // 校区班级
-    distributeStatus: null,
-    status: null,
-    timeStatus: null,
-    isSettlement: null,
-
-    // 其他字段(用于数据传输)
-    cardNo: null,
-    password: null,
-    payStatus: null,
-    isSettlement: null,
-    deptId: null,
-    leftAgentId: null,
-    schoolId: null,
-    classId: null,
-    year: null,
-    endYear: null,
-    openId: null,
-    distributeTime: null,
-    outDate: null,
-    openTime: null,
-    payTime: null,
-    activeTime: null,
-    settlementTime: null,
-    refundTime: null,
-    closeTime: null,
-    createTime: null,
-    updateTime: null,
-  },
-  rules: {
-    schoolId: [{ required: true, message: "学校不能为空", trigger: "change" }],
-    classId: [{ required: true, message: "班级不能为空", trigger: "change" }],
-    nickName: [{ required: true, message: "姓名不能为空", trigger: "blur" }],
-    phone: [
-      { required: true, message: "手机号不能为空", trigger: "blur" },
-      {
-        pattern: /^1[3-9]\d{9}$/,
-        message: "请输入正确的手机号",
-        trigger: "blur",
-      },
-    ],
-    chineseMathEnglish: [
-      { required: true, message: "语数英成绩不能为空", trigger: "blur" },
-    ],
-    vocationalSkills: [
-      { required: true, message: "职业技能成绩不能为空", trigger: "blur" },
-    ],
-  },
-});
-
-const { queryParams, form } = toRefs(data);
-
-// 监听queryParams的原始变化
-watch(
-  () => data.queryParams,
-  (newParams) => {
-    if (newParams.areaIds && newParams.areaIds.length > 0) {
-      getSchoolList();
-    }
-  },
-  { immediate: true, deep: true }
-);
-
-/** 获取行序号 */
-function getRowIndex(index) {
-  const pageNum = queryParams.value?.pageNum || 1;
-  const pageSize = queryParams.value?.pageSize || 10;
-  return (pageNum - 1) * pageSize + index + 1;
-}
-
-/** 查询学习卡列表 */
-function getList() {
-  loading.value = true;
-  listCards(queryParams.value).then((response) => {
-    cardsList.value = response.rows;
-    total.value = response.total;
-    loading.value = false;
-  });
-}
-
-/** 获取学校列表 */
-function getSchoolList() {
-  // 如果没有选择省市区,则不获取学校列表
-  if (!queryParams.value.areaIds || queryParams.value.areaIds.length === 0) {
-    schoolList.value = [];
-    return;
-  }
-
-  // 构造location参数:如果有省市区选择,取最后一个值(区)作为location
-  const location =
-    queryParams.value.areaIds[queryParams.value.areaIds.length - 1];
-
-  // 传递pageNum和pageSize参数
-  const requestParams = {
-    location,
-    pageNum: 1,
-    pageSize: 9999, // 获取所有学校选项
-  };
-
-  // listUniversity(requestParams)
-  //   .then((response) => {
-  //     // 根据API返回数据结构处理
-  //     let schoolData = [];
-  //     if (response.data) {
-  //       schoolData = Array.isArray(response.data)
-  //         ? response.data
-  //         : response.data.rows || response.data.list || [];
-  //     } else if (response.rows) {
-  //       schoolData = response.rows;
-  //     } else if (response.list) {
-  //       schoolData = response.list;
-  //     } else if (Array.isArray(response)) {
-  //       schoolData = response;
-  //     }
-  //
-  //     // 确保数据格式符合配置要求
-  //     schoolData = schoolData.map((item) => {
-  //       // 如果API返回的是 {id, name, ...} 格式,直接使用
-  //       if (item.id && item.name) {
-  //         return item;
-  //       }
-  //       // 如果是其他格式,需要转换
-  //       return {
-  //         id: item.id || item.value || item.schoolId,
-  //         name: item.name || item.label || item.schoolName || item.title,
-  //       };
-  //     });
-  //
-  //     schoolList.value = schoolData;
-  //   })
-  //   .catch((error) => {
-  //     console.error("获取学校列表失败:", error);
-  //     schoolList.value = [];
-  //   });
-}
-
-/** 获取校区列表 */
-function getCampusListData() {
-  getCampusSchoolList({
-    campus: true,
-    pageNum: 1,
-    pageSize: 9999, // 获取所有校区
-  })
-    .then((response) => {
-      if (response.code === 200) {
-        // 处理API返回的数据结构
-        let campusData = [];
-        if (response.data) {
-          campusData = Array.isArray(response.data) ? response.data : [];
-        } else if (response.rows) {
-          campusData = response.rows;
-        } else if (response.list) {
-          campusData = response.list;
-        }
-
-        // 确保数据格式符合配置要求
-        campusData = campusData.map((item) => {
-          // 如果API返回的是 {id, name, ...} 格式,直接使用
-          if (item.id && item.name) {
-            return item;
-          }
-          // 如果是其他格式,需要转换
-          return {
-            id: item.id || item.value || item.campusId,
-            name: item.name || item.label || item.campusName || item.title,
-          };
-        });
-
-        campusList.value = campusData;
-      }
-    })
-    .catch((error) => {
-      console.error("获取校区列表失败:", error);
-      campusList.value = [];
-    });
-}
-
-// 取消按钮
-// 处理弹窗成功事件
-function handleDialogSuccess(message) {
-  proxy.$modal.msgSuccess(message);
-  getList(); // 刷新列表
-}
-
-// 获取机构列表
-async function getInstitutionList() {
-  try {
-    const response = await listDept({});
-    institutionList.value = response.data || response.rows || response || [];
-  } catch (error) {
-    console.error("获取机构列表失败:", error);
-    institutionList.value = [];
-  }
-}
-
-// 获取班级列表
-async function getClassList() {
-  try {
-    // 这里应该调用获取班级列表的API
-    // 暂时使用模拟数据
-    classList.value = [
-      { id: 1, name: "2501" },
-      { id: 2, name: "2502" },
-      { id: 3, name: "2503" },
-    ];
-  } catch (error) {
-    console.error("获取班级列表失败:", error);
-    classList.value = [];
-  }
-}
-
-// 获取代理商列表
-async function getAgentList() {
-  try {
-    const response = await listAgent({});
-    const agentData = response.data || response.rows || response || [];
-
-    // 确保数据格式符合前端期望
-    agentList.value = agentData.map((item) => ({
-      id: item.agentId,
-      name: item.name,
-    }));
-  } catch (error) {
-    console.error("获取代理商列表失败:", error);
-    agentList.value = [];
-  }
-}
-
-function cancel() {
-  open.value = false;
-  reset();
-}
-
-// 表单重置
-function reset() {
-  form.value = {
-    cardId: null,
-    cardNo: null,
-    password: null,
-    type: null,
-    status: null,
-    distributeStatus: null,
-    timeStatus: null,
-    payStatus: null,
-    isSettlement: null,
-    deptId: null,
-    agentId: null,
-    leftAgentId: null,
-    campusId: null,
-    assignSchoolId: null,
-    schoolId: null,
-    classesId: null,
-    year: null,
-    endYear: null,
-    openId: null,
-    remark: null,
-    distributeTime: null,
-    outDate: null,
-    openTime: null,
-    payTime: null,
-    activeTime: null,
-    settlementTime: null,
-    refundTime: null,
-    closeTime: null,
-    createTime: null,
-    updateTime: null,
-  };
-  proxy.resetForm("cardsRef");
-}
-
-/** 搜索按钮操作 */
-/** 表格操作处理 */
-function handleTableAction(action, row) {
-  switch (action.key) {
-    case "edit":
-      handleUpdate(row); // 修改时获取行数据
-      break;
-    case "delete":
-      handleDelete(row);
-      break;
-    default:
-      console.warn("Unknown action:", action.key);
-  }
-}
-
-function handleQuery() {
-  queryParams.value.pageNum = 1;
-  getList();
-}
-
-/** 重置按钮操作 */
-function resetQuery() {
-  proxy.resetForm("queryRef");
-  handleQuery();
-}
-
-/** 处理SearchForm组件的update:model-value事件 */
-function handleSearchFormUpdate(newData) {
-  Object.assign(data.queryParams, newData);
-}
-
-// 多选框选中数据
-function handleSelectionChange(selection) {
-  console.log("Selection changed:", selection);
-  selectedRows.value = selection;
-  ids.value = selection.map((item) => item.cardId);
-  single.value = selection.length != 1;
-  multiple.value = !selection.length;
-}
-
-/** 制卡按钮操作 */
-function handleAdd() {
-  cardGenerationOpen.value = true;
-  getInstitutionList(); // 获取机构列表
-}
-
-/** 缴费按钮操作 */
-function handlePayment() {
-  if (selectedRows.value.length === 0) {
-    proxy.$modal.msgWarning("请选择要缴费的卡片");
-    return;
-  }
-
-  // 获取所有选中卡片的卡号数组
-  const cardNos = selectedRows.value.map(
-    (card) => card.cardNo || card.id || "未知"
-  );
-  currentCardNo.value = cardNos;
-  paymentOpen.value = true;
-}
-
-// 处理缴费成功
-function handlePaymentSuccess(message) {
-  proxy.$modal.msgSuccess(message);
-  getList(); // 刷新列表
-}
-
-// 处理缴费确认(保留兼容性)
-function handlePaymentConfirm(cardNo) {
-  proxy.$modal.msgSuccess(`缴费成功!卡号:${cardNo}`);
-  getList(); // 刷新列表
-}
-
-/** 关卡按钮操作 */
-function handleCloseCard() {
-  if (selectedRows.value.length === 0) {
-    proxy.$modal.msgWarning("请选择要关卡的卡片");
-    return;
-  }
-
-  // 获取所有选中卡片的卡号数组
-  const cardNos = selectedRows.value.map(
-    (card) => card.cardNo || card.id || "未知"
-  );
-  currentCloseCardNo.value = cardNos;
-  closeCardOpen.value = true;
-}
-
-// 处理关卡成功
-function handleCloseCardSuccess(message) {
-  proxy.$modal.msgSuccess(message);
-  getList(); // 刷新列表
-}
-
-// 处理关卡确认(保留兼容性)
-function handleCloseCardConfirm(cardNo) {
-  proxy.$modal.msgSuccess(`关卡成功!卡号:${cardNo}`);
-  getList(); // 刷新列表
-}
-
-/** 重开按钮操作 */
-function handleReopenCard() {
-  if (selectedRows.value.length === 0) {
-    proxy.$modal.msgWarning("请选择要重开的卡片");
-    return;
-  }
-
-  // 获取所有选中卡片的卡号数组
-  const cardNos = selectedRows.value.map(
-    (card) => card.cardNo || card.id || "未知"
-  );
-  currentReopenCardNo.value = cardNos;
-  reopenCardOpen.value = true;
-}
-
-// 处理重开成功
-function handleReopenCardSuccess(message) {
-  proxy.$modal.msgSuccess(message);
-  getList(); // 刷新列表
-}
-
-// 处理重开确认(保留兼容性)
-function handleReopenCardConfirm(cardNo) {
-  proxy.$modal.msgSuccess(`重开成功!卡号:${cardNo}`);
-  getList(); // 刷新列表
-}
-
-/** 退费按钮操作 */
-function handleRefund() {
-  if (selectedRows.value.length === 0) {
-    proxy.$modal.msgWarning("请选择要退费的卡片");
-    return;
-  }
-
-  // 获取第一个选中卡片的卡号
-  const firstCard = selectedRows.value[0];
-  currentRefundCardNo.value = firstCard.cardNo || firstCard.id || "未知";
-  refundOpen.value = true;
-}
-
-// 处理退费确认
-function handleRefundConfirm(cardNo) {
-  proxy.$modal.msgSuccess(`退费成功!卡号:${cardNo}`);
-  getList(); // 刷新列表
-}
-
-/** 关联校区按钮操作 */
-function handleAssociateCampus() {
-  if (selectedRows.value.length === 0) {
-    // proxy.$modal.msgWarning("请选择要关联校区的卡片");
-    // return;
-  }
-  associateCampusOpen.value = true;
-}
-
-// 处理关联校区成功
-function handleAssociateCampusSuccess(message) {
-  proxy.$modal.msgSuccess(message);
-  getList();
-}
-
-// 处理关联校区确认
-function handleAssociateCampusConfirm(data) {
-  proxy.$modal.msgSuccess(
-    `关联校区成功!卡号段:${data.beginCardNo}-${data.endCardNo}`
-  );
-  getList(); // 刷新列表
-}
-
-// 获取代理商列表
-async function getAgentListData() {
-  try {
-    const response = await getAgentList({ pageNum: 1, pageSize: 1000 });
-    if (response.code === 200) {
-      agentList.value = response.data || [];
-    }
-  } catch (error) {
-    console.error("获取代理商列表失败:", error);
-    agentList.value = [];
-  }
-}
-
-/** 直接开卡按钮操作 */
-function handleApplyCard() {
-  if (selectedRows.value.length === 0) {
-    // proxy.$modal.msgWarning("请选择要申请开卡的卡片");
-    // return;
-  }
-  applyCardOpen.value = true;
-}
-
-// 处理直接开卡成功
-function handleApplyCardSuccess(message) {
-  proxy.$modal.msgSuccess(message);
-  getList();
-}
-
-// 处理直接开卡确认
-function handleApplyCardConfirm(data) {
-  proxy.$modal.msgSuccess(
-    `直接开卡成功!卡号段:${data.beginCardNo}-${data.endCardNo}`
-  );
-  getList(); // 刷新列表
-}
-
-/** 分配卡按钮操作 */
-function handleAssignCard() {
-  console.log("分配卡按钮点击,当前选中的行:", selectedRows.value);
-  assignCardOpen.value = true;
-  getInstitutionList(); // 获取机构列表
-  getAgentList(); // 获取代理商列表
-}
-
-/** 修改按钮操作 */
-async function handleUpdate(row) {
-  reset();
-  const _cardId = row.cardId || ids.value;
-  currentCardId.value = _cardId;
-
-  try {
-    // 获取学习卡详细信息
-    const response = await getCards(_cardId);
-    if (response.code === 200) {
-      const cardData = response.data;
-
-      // 将后端数据对应到表单字段
-      form.value = {
-        cardId: cardData.cardId,
-        cardNo: cardData.cardNo,
-        password: cardData.password,
-        type: cardData.type,
-        status: cardData.status,
-        distributeStatus: cardData.distributeStatus,
-        timeStatus: cardData.timeStatus,
-        payStatus: cardData.payStatus,
-        isSettlement: cardData.isSettlement,
-        deptId: cardData.deptId,
-        agentId: cardData.agentId,
-        leftAgentId: cardData.leftAgentId,
-        campusId: cardData.campusId,
-        assignSchoolId: cardData.assignSchoolId,
-        schoolId: cardData.schoolId,
-        classId: cardData.classId,
-        year: cardData.year,
-        endYear: cardData.endYear,
-        openId: cardData.openId,
-        nickName: cardData.nickName,
-        mobile: cardData.mobile,
-        chineseMathEnglish: cardData.chineseMathEnglish,
-        vocationalSkills: cardData.vocationalSkills,
-        studentCategory: cardData.studentCategory,
-        assignExamType: cardData.assignExamType,
-        areaIds: cardData.areaIds,
-        remark: cardData.remark,
-      };
-
-      // 获取班级列表
-      await getClassList();
-
-      // 打开编辑弹窗
-      open.value = true;
-    } else {
-      proxy.$modal.msgError("获取学习卡信息失败");
-    }
-  } catch (error) {
-    console.error("获取学习卡详细信息失败:", error);
-    proxy.$modal.msgError("获取学习卡信息失败");
-  }
-}
-
-/** 提交按钮 */
-function submitForm() {
-  proxy.$refs["cardsRef"].validate((valid) => {
-    if (valid) {
-      if (form.value.cardId != null) {
-        updateCards(form.value).then((response) => {
-          proxy.$modal.msgSuccess("修改成功");
-          open.value = false;
-          getList();
-        });
-      } else {
-        addCards(form.value).then((response) => {
-          proxy.$modal.msgSuccess("新增成功");
-          open.value = false;
-          getList();
-        });
-      }
-    }
-  });
-}
-
-/** 删除按钮操作 */
-function handleDelete(row) {
-  const _cardIds = row.cardId || ids.value;
-  const cardIdsArray = Array.isArray(_cardIds) ? _cardIds : [_cardIds];
-
-  if (cardIdsArray.length === 0) {
-    proxy.$modal.msgWarning("请选择要删除的数据");
-    return;
-  }
-
-  const message =
-    cardIdsArray.length === 1
-      ? `是否确认删除学习卡编号为"${cardIdsArray[0]}"的数据项?`
-      : `是否确认删除选中的${cardIdsArray.length}条学习卡数据?`;
-
-  proxy.$modal
-    .confirm(message)
-    .then(function () {
-      return delCards(cardIdsArray);
-    })
-    .then(() => {
-      getList();
-      proxy.$modal.msgSuccess("删除成功");
-    })
-    .catch(() => { });
-}
-
-/** 导出按钮操作 */
-function handleExport() {
-  proxy.download(
-    "dz/cards/export",
-    {
-      ...queryParams.value,
-    },
-    `cards_${new Date().getTime()}.xlsx`
-  );
-}
-
-getList();
-getCampusListData(); // 获取校区列表
-
-// 监听地址选择变化,自动获取学校列表
-watch(
-  () => queryParams.value.areaIds,
-  (newAreaIds) => {
-    if (newAreaIds && newAreaIds.length > 0) {
-      getSchoolList();
-    } else {
-      schoolList.value = [];
-    }
-  },
-  { immediate: true, deep: true }
-);
-</script>

+ 7 - 2
back-ui/src/views/dz/cards/components/CardTable.vue

@@ -60,9 +60,14 @@
         </el-table-column>
         <el-table-column label="考生类型(注册)" prop="examType" align="center" min-width="140">
           <template #default="scope">
-            <template v-if="scope.row && scope.row.examType && exam_type">
+            <div v-if="scope.row && scope.row.examType && exam_type">
               <dict-tag :options="exam_type" :value="scope.row.examType" />
-            </template>
+              <div v-if="scope.row.examMajorName || scope.row.examMajor" class="text-[12px] text-gray-600 mt-1">
+                <span v-if="scope.row.examMajor">{{ scope.row.examMajor }}</span>
+                <span v-if="scope.row.examMajor && scope.row.examMajorName"> - </span>
+                <span v-if="scope.row.examMajorName">{{ scope.row.examMajorName }}</span>
+              </div>
+            </div>
             <span v-else>-</span>
           </template>
         </el-table-column>

+ 84 - 2
back-ui/src/views/dz/cards/components/EditDialog.vue

@@ -23,6 +23,11 @@
             <ie-select v-model="selectedExamType" :options="examTypeList" label-key="dictLabel" value-key="dictValue" />
           </el-form-item>
         </el-col>
+        <el-col :span="12" prop="examMajor"  v-if="selectedExamType === 'VHS'">
+          <el-form-item label="专业类别" prop="examMajor">
+            <ie-select v-model="selectedExamMajor" :options="examMajorList" label-key="dictLabel" value-key="dictValue" placeholder="请选择专业类别" />
+          </el-form-item>
+        </el-col>
 
         <el-col :span="12">
           <el-form-item label="注册学校" prop="schoolId">
@@ -119,9 +124,10 @@ import IeSelect from '@/components/IeSelect/index.vue';
 import IeUniversitySelect from '@/components/IeUniversitySelect/index.vue';
 import DirectionDialog from './DirectionDialog.vue';
 import { updateCardUser, getUserByCardId } from '@/api/dz/cards';
+import { listAllSubject } from '@/api/dz/subject';
 import { getCurrentInstance, nextTick, watch, watchEffect } from 'vue';
 import draggable from 'vuedraggable';
-import { Rank } from '@element-plus/icons-vue';
+import { Rank, Close } from '@element-plus/icons-vue';
 
 const { proxy } = getCurrentInstance();
 
@@ -132,6 +138,10 @@ const form = ref({
   directionStudy: []
 })
 
+// 专业类别相关
+const examMajorList = ref([]);
+const selectedExamMajor = ref(null);
+
 const {
   reset,
   area,
@@ -155,8 +165,56 @@ watchEffect(() => {
   form.value.classId = selectedClass.value;
   form.value.campusSchoolId = selectedCampus.value;
   form.value.campusClassId = selectedCampusClass.value;
+  form.value.examMajor = selectedExamMajor.value;
+  // 同步 examMajorName:从 examMajorList 中找到对应的 dictLabel
+  if (selectedExamMajor.value != null) {
+    const selectedMajor = examMajorList.value.find(item => item.dictValue === selectedExamMajor.value);
+    form.value.examMajorName = selectedMajor ? selectedMajor.dictLabel : null;
+  } else {
+    form.value.examMajorName = null;
+  }
 });
 
+// 监听考生类型和省份变化,加载专业类别列表
+watch([selectedExamType, () => form.value.location], ([examType, location], [oldExamType, oldLocation]) => {
+  // 避免初始化时执行(第一次加载时 oldExamType 和 oldLocation 都是 undefined)
+  if (oldExamType === undefined && oldLocation === undefined) {
+    return;
+  }
+  // 如果考生类型变为 VHS 且有省份,加载专业类别列表
+  if (examType === 'VHS' && location) {
+    loadExamMajorList(location, examType).then(() => {
+      // 如果列表加载完成但 selectedExamMajor 还没有值,保持原值不变
+      // 这里不需要重新设置 selectedExamMajor,因为它在 getUserInfo 中已经设置过了
+    });
+  } else if (examType !== 'VHS') {
+    // 如果考生类型不是 VHS,清空专业类别相关数据
+    examMajorList.value = [];
+    selectedExamMajor.value = null;
+    form.value.examMajor = null;
+    form.value.examMajorName = null;
+  }
+});
+
+// 加载专业类别列表
+const loadExamMajorList = async (location, examType) => {
+  try {
+    const res = await listAllSubject({
+      location: location,
+      examType: examType
+    });
+    // 转换数据格式,dictValue 对应 subject_id,dictLabel 对应 subject_name
+    // 确保 dictValue 是 Number 类型,与 examMajor 的 Integer 类型匹配
+    examMajorList.value = (res.data || []).map(item => ({
+      dictValue: Number(item.subjectId),
+      dictLabel: item.subjectName
+    }));
+  } catch (error) {
+    console.error('加载专业类别列表失败:', error);
+    examMajorList.value = [];
+  }
+};
+
 
 
 const rules = ref({
@@ -179,6 +237,10 @@ const handleBeforeClose = () => {
     scores: {},
     directionStudy: []
   };
+  examMajorList.value = [];
+  selectedExamMajor.value = null;
+  form.value.examMajor = null;
+  form.value.examMajorName = null;
 }
 
 const open = (cardInfo) => {
@@ -207,6 +269,19 @@ const getUserInfo = (cardInfo) => {
       area.selected = targetArea.areaId;
       area.selectedItem = targetArea;
     }
+    // 先初始化专业类别(在设置 selectedExamType 之前,避免触发 watch)
+    if (res.data.examType === 'VHS' && form.value.location) {
+      await loadExamMajorList(form.value.location, res.data.examType);
+      // 确保类型一致,将 examMajor 转换为 Number 类型
+      if (res.data.examMajor != null) {
+        selectedExamMajor.value = Number(res.data.examMajor);
+      } else {
+        selectedExamMajor.value = null;
+      }
+    } else {
+      selectedExamMajor.value = null;
+    }
+    // 然后设置考生类型(这会触发 watch,但此时数据已经加载完成)
     selectedExamType.value = res.data.examType;
     selectedCampus.value = res.data.campusSchoolId;
     selectedCampusClass.value = res.data.campusClassId;
@@ -233,7 +308,14 @@ const handleConfirm = () => {
   formRef.value.validate((valid) => {
     if (valid) {
       modalRef.value.showLoading()
-      updateCardUser(form.value).then(res => {
+      // 准备提交的数据
+      const submitData = { ...form.value };
+      // 如果考生类型不是 VHS,则不传递 examMajor 和 examMajorName
+      if (selectedExamType.value !== 'VHS') {
+        delete submitData.examMajor;
+        delete submitData.examMajorName;
+      }
+      updateCardUser(submitData).then(res => {
         proxy.$modal.msgSuccess('修改成功')
         close();
         emit('refresh')

+ 26 - 7
back-ui/src/views/dz/cards/index.vue

@@ -175,10 +175,10 @@
         <svg-icon icon-class="chart" class="mr-1" style="font-size: 12px" />
         结算
       </CustomButton>
-      <!-- <CustomButton color="#009688" :disabled="batchDisabled" @click="handleRenew">
+      <CustomButton color="#009688" :disabled="batchDisabled" @click="handleRenew">
         <svg-icon icon-class="time" class="mr-1" style="font-size: 14px" />
         续期
-      </CustomButton> -->
+      </CustomButton>
       <CustomButton color="#673AB7" v-hasPermi="['dz:cards:updateuser']"  :disabled="editDisabled" @click="handleEdit">
         <svg-icon icon-class="edit" class="mr-1" style="font-size: 12px" />
         修改
@@ -219,6 +219,7 @@ import RelateDialog from './components/RelateDialog.vue';
 import { listCards, delCards, payCard, closeCard, reopenCard, refundCard, settleCard, renewCard } from '@/api/dz/cards';
 import { CARD_STATUS, EnumCardType } from '@/common/enum';
 import { getCurrentInstance, nextTick } from 'vue';
+import { ElMessageBox } from 'element-plus';
 
 const { proxy } = getCurrentInstance();
 const {
@@ -413,11 +414,29 @@ const handleSettle = () => {
 }
 
 const handleRenew = () => {
-  proxy.$modal.confirm(`是否确认续费所选数据 (${ids.value.length}项) ?`).then(() => {
-    renewCard(ids.value).then(() => {
-      proxy.$modal.msgSuccess('续费成功')
-      getList()
+  // 使用 ElMessageBox.prompt 让用户输入续期天数
+  ElMessageBox.prompt('请输入续期天数', '续期', {
+    confirmButtonText: '确定',
+    cancelButtonText: '取消',
+    inputPattern: /^[1-9]\d*$/,
+    inputErrorMessage: '请输入有效的天数(大于0的整数)',
+    inputPlaceholder: '请输入续期天数,默认30天',
+    inputValue: '30', // 默认值30天
+  }).then(({ value }) => {
+    const days = value ? parseInt(value) : 30; // 如果为空,默认30天
+    if (isNaN(days) || days <= 0) {
+      proxy.$modal.msgError('请输入有效的天数(大于0的整数)');
+      return;
+    }
+    // 确认续期
+    proxy.$modal.confirm(`是否确认续期所选数据 (${ids.value.length}项) ${days}天?`).then(() => {
+      renewCard(ids.value, days).then(() => {
+        proxy.$modal.msgSuccess('续期成功')
+        getList()
+      })
     })
+  }).catch(() => {
+    // 用户取消输入,不做任何操作
   })
 }
 
@@ -458,7 +477,7 @@ onMounted(() => {
   // 即使没有选择省份,也调用接口获取所有数据(areaCode 为 undefined 时接口会返回所有数据)
   getSchoolList()
   getCampusList()
-  
+
   // 加载列表数据
   handleQuery()
 })

+ 114 - 218
back-ui/src/views/dz/orders/index.vue

@@ -1,50 +1,50 @@
 <template>
   <div class="app-container">
     <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
-      <el-form-item label="订单号" prop="code">
+      <!-- <el-form-item label="订单号" prop="code">
         <el-input
           v-model="queryParams.code"
           placeholder="请输入订单号"
           clearable
           @keyup.enter="handleQuery"
         />
-      </el-form-item>
-      <el-form-item label="传微信单号" prop="outTradeNo">
-        <el-input
-          v-model="queryParams.outTradeNo"
-          placeholder="请输入传微信单号"
-          clearable
-          @keyup.enter="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="二维码标识" prop="qrcodeId">
-        <el-input
-          v-model="queryParams.qrcodeId"
-          placeholder="请输入二维码标识"
-          clearable
-          @keyup.enter="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="电子卡" prop="cardId">
-        <el-input
-          v-model="queryParams.cardId"
-          placeholder="请输入电子卡"
-          clearable
-          @keyup.enter="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="号" prop="cardNo">
+      </el-form-item> -->
+<!--      <el-form-item label="单号" prop="outTradeNo">-->
+<!--        <el-input-->
+<!--          v-model="queryParams.outTradeNo"-->
+<!--          placeholder="请输入传微信单号"-->
+<!--          clearable-->
+<!--          @keyup.enter="handleQuery"-->
+<!--        />-->
+<!--      </el-form-item>-->
+<!--      <el-form-item label="二维码标识" prop="qrcodeId">-->
+<!--        <el-input-->
+<!--          v-model="queryParams.qrcodeId"-->
+<!--          placeholder="请输入二维码标识"-->
+<!--          clearable-->
+<!--          @keyup.enter="handleQuery"-->
+<!--        />-->
+<!--      </el-form-item>-->
+<!--      <el-form-item label="电子卡" prop="cardId">-->
+<!--        <el-input-->
+<!--          v-model="queryParams.cardId"-->
+<!--          placeholder="请输入电子卡"-->
+<!--          clearable-->
+<!--          @keyup.enter="handleQuery"-->
+<!--        />-->
+<!--      </el-form-item>-->
+      <el-form-item label="号" prop="cardNo">
         <el-input
           v-model="queryParams.cardNo"
-          placeholder="请输入号"
+          placeholder="请输入号"
           clearable
           @keyup.enter="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="价目标识" prop="year">
+      <el-form-item label="年份" prop="year">
         <el-input
           v-model="queryParams.year"
-          placeholder="请输入价目标识"
+          placeholder="年份"
           clearable
           @keyup.enter="handleQuery"
         />
@@ -57,141 +57,20 @@
           @keyup.enter="handleQuery"
         />
       </el-form-item>
-      <el-form-item label="微信订单号" prop="transactionId">
-        <el-input
-          v-model="queryParams.transactionId"
-          placeholder="请输入微信订单号"
-          clearable
-          @keyup.enter="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="用户" prop="customerCode">
-        <el-input
-          v-model="queryParams.customerCode"
-          placeholder="请输入用户"
-          clearable
-          @keyup.enter="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="失效期" prop="outTime">
-        <el-date-picker clearable
-          v-model="queryParams.outTime"
-          type="date"
-          value-format="YYYY-MM-DD"
-          placeholder="请选择失效期">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="单价" prop="price">
-        <el-input
-          v-model="queryParams.price"
-          placeholder="请输入单价"
-          clearable
-          @keyup.enter="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="数量" prop="num">
-        <el-input
-          v-model="queryParams.num"
-          placeholder="请输入数量"
-          clearable
-          @keyup.enter="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="金额" prop="fee">
-        <el-input
-          v-model="queryParams.fee"
-          placeholder="请输入金额"
-          clearable
-          @keyup.enter="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="应付金额" prop="totalFee">
-        <el-input
-          v-model="queryParams.totalFee"
-          placeholder="请输入应付金额"
-          clearable
-          @keyup.enter="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="实付金额" prop="payFee">
-        <el-input
-          v-model="queryParams.payFee"
-          placeholder="请输入实付金额"
-          clearable
-          @keyup.enter="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="创建时间" prop="createTime">
-        <el-date-picker clearable
-          v-model="queryParams.createTime"
-          type="date"
-          value-format="YYYY-MM-DD"
-          placeholder="请选择创建时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="创建者" prop="creator">
-        <el-input
-          v-model="queryParams.creator"
-          placeholder="请输入创建者"
-          clearable
-          @keyup.enter="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="描述" prop="body">
-        <el-input
-          v-model="queryParams.body"
-          placeholder="请输入描述"
-          clearable
-          @keyup.enter="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="附加数据" prop="attach">
-        <el-input
-          v-model="queryParams.attach"
-          placeholder="请输入附加数据"
-          clearable
-          @keyup.enter="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="微信预支付标识" prop="prepayId">
-        <el-input
-          v-model="queryParams.prepayId"
-          placeholder="请输入微信预支付标识"
-          clearable
-          @keyup.enter="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="支付者" prop="payer">
-        <el-input
-          v-model="queryParams.payer"
-          placeholder="请输入支付者"
-          clearable
-          @keyup.enter="handleQuery"
-        />
-      </el-form-item>
-      <el-form-item label="支付时间" prop="payTime">
-        <el-date-picker clearable
-          v-model="queryParams.payTime"
-          type="date"
-          value-format="YYYY-MM-DD"
-          placeholder="请选择支付时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="确认时间" prop="syncTime">
-        <el-date-picker clearable
-          v-model="queryParams.syncTime"
-          type="date"
-          value-format="YYYY-MM-DD"
-          placeholder="请选择确认时间">
-        </el-date-picker>
-      </el-form-item>
-      <el-form-item label="状态(-2:已退费,-1:支付失败,0:无效,1:未支付,2:已支付)" prop="status">
-        <el-input
+      <el-form-item label="订单状态" prop="status">
+        <el-select
           v-model="queryParams.status"
-          placeholder="请输入状态(-2:已退费,-1:支付失败,0:无效,1:未支付,2:已支付)"
+          placeholder="请选择状态"
           clearable
-          @keyup.enter="handleQuery"
-        />
+          style="width: 180px"
+        >
+          <el-option
+            v-for="dict in order_status"
+            :key="dict.value"
+            :label="dict.label"
+            :value="parseInt(dict.value)"
+          />
+        </el-select>
       </el-form-item>
       <el-form-item>
         <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
@@ -200,7 +79,7 @@
     </el-form>
 
     <el-row :gutter="10" class="mb8">
-      <el-col :span="1.5">
+      <!-- <el-col :span="1.5">
         <el-button
           type="primary"
           plain
@@ -228,73 +107,80 @@
           @click="handleDelete"
           v-hasPermi="['dz:orders:remove']"
         >删除</el-button>
-      </el-col>
-      <el-col :span="1.5">
-        <el-button
-          type="warning"
-          plain
-          icon="Download"
-          @click="handleExport"
-          v-hasPermi="['dz:orders:export']"
-        >导出</el-button>
-      </el-col>
+      </el-col> -->
+<!--      <el-col :span="1.5">-->
+<!--        <el-button-->
+<!--          type="warning"-->
+<!--          plain-->
+<!--          icon="Download"-->
+<!--          @click="handleExport"-->
+<!--          v-hasPermi="['dz:orders:export']"-->
+<!--        >导出</el-button>-->
+<!--      </el-col>-->
       <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
     </el-row>
 
     <el-table v-loading="loading" :data="ordersList" @selection-change="handleSelectionChange">
       <el-table-column type="selection" width="55" align="center" />
-      <el-table-column label="${comment}" align="center" prop="id" />
-      <el-table-column label="订单号" align="center" prop="code" />
-      <el-table-column label="传微信单号" align="center" prop="outTradeNo" />
-      <el-table-column label="二维码标识" align="center" prop="qrcodeId" />
-      <el-table-column label="${comment}" align="center" prop="type" />
-      <el-table-column label="电子卡" align="center" prop="cardId" />
-      <el-table-column label="账号" align="center" prop="cardNo" />
-      <el-table-column label="价目标识" align="center" prop="year" />
-      <el-table-column label="手机号码" align="center" prop="phonenumber" />
-      <el-table-column label="微信订单号" align="center" prop="transactionId" />
-      <el-table-column label="用户" align="center" prop="customerCode" />
-      <el-table-column label="失效期" align="center" prop="outTime" width="180">
+      <el-table-column label="ID" align="center" prop="id" />
+<!--      <el-table-column label="订单号" align="center" prop="code" />-->
+<!--      <el-table-column label="传微信单号" align="center" prop="outTradeNo" />-->
+<!--      <el-table-column label="二维码标识" align="center" prop="qrcodeId" />-->
+<!--      <el-table-column label="${comment}" align="center" prop="type" />-->
+      <el-table-column label="卡号" align="center" prop="cardNo">
         <template #default="scope">
-          <span>{{ parseTime(scope.row.outTime, '{y}-{m}-{d}') }}</span>
+          <span>{{ scope.row.cardId ? `${scope.row.cardId}-${scope.row.cardNo || ''}` : (scope.row.cardNo || '-') }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="单价" align="center" prop="price" />
-      <el-table-column label="数量" align="center" prop="num" />
-      <el-table-column label="金额" align="center" prop="fee" />
-      <el-table-column label="应付金额" align="center" prop="totalFee" />
-      <el-table-column label="实付金额" align="center" prop="payFee" />
+      <el-table-column label="年份" align="center" prop="year" />
+      <el-table-column label="手机号码" align="center" prop="phonenumber" />
+<!--      <el-table-column label="微信订单号" align="center" prop="transactionId" />-->
+      <el-table-column label="用户ID" align="center" prop="customerCode" />
+<!--      <el-table-column label="失效期" align="center" prop="outTime" width="180">-->
+<!--        <template #default="scope">-->
+<!--          <span>{{ parseTime(scope.row.outTime, '{y}-{m}-{d}') }}</span>-->
+<!--        </template>-->
+<!--      </el-table-column>-->
+<!--      <el-table-column label="单价" align="center" prop="price" />-->
+<!--      <el-table-column label="数量" align="center" prop="num" />-->
+<!--      <el-table-column label="金额" align="center" prop="fee" />-->
+<!--      <el-table-column label="应付金额" align="center" prop="totalFee" />-->
+      <el-table-column label="金额(分)" align="center" prop="payFee" />
       <el-table-column label="创建时间" align="center" prop="createTime" width="180">
         <template #default="scope">
-          <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="创建者" align="center" prop="creator" />
-      <el-table-column label="描述" align="center" prop="body" />
-      <el-table-column label="详情" align="center" prop="detail" />
-      <el-table-column label="附加数据" align="center" prop="attach" />
-      <el-table-column label="微信预支付标识" align="center" prop="prepayId" />
-      <el-table-column label="支付者" align="center" prop="payer" />
-      <el-table-column label="支付时间" align="center" prop="payTime" width="180">
-        <template #default="scope">
-          <span>{{ parseTime(scope.row.payTime, '{y}-{m}-{d}') }}</span>
-        </template>
-      </el-table-column>
-      <el-table-column label="支付回调结果" align="center" prop="feedBack" />
-      <el-table-column label="确认时间" align="center" prop="syncTime" width="180">
-        <template #default="scope">
-          <span>{{ parseTime(scope.row.syncTime, '{y}-{m}-{d}') }}</span>
+          <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</span>
         </template>
       </el-table-column>
-      <el-table-column label="状态(-2:已退费,-1:支付失败,0:无效,1:未支付,2:已支付)" align="center" prop="status" />
-      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+<!--      <el-table-column label="创建者" align="center" prop="creator" />-->
+<!--      <el-table-column label="描述" align="center" prop="body" />-->
+<!--      <el-table-column label="详情" align="center" prop="detail" />-->
+<!--      <el-table-column label="附加数据" align="center" prop="attach" />-->
+<!--      <el-table-column label="微信预支付标识" align="center" prop="prepayId" />-->
+<!--      <el-table-column label="支付者" align="center" prop="payer" />-->
+<!--      <el-table-column label="支付时间" align="center" prop="payTime" width="180">-->
+<!--        <template #default="scope">-->
+<!--          <span>{{ parseTime(scope.row.payTime, '{y}-{m}-{d}') }}</span>-->
+<!--        </template>-->
+<!--      </el-table-column>-->
+<!--      <el-table-column label="支付回调结果" align="center" prop="feedBack" />-->
+<!--      <el-table-column label="确认时间" align="center" prop="syncTime" width="180">-->
+<!--        <template #default="scope">-->
+<!--          <span>{{ parseTime(scope.row.syncTime, '{y}-{m}-{d}') }}</span>-->
+<!--        </template>-->
+<!--      </el-table-column>-->
+      <el-table-column label="状态" align="center" prop="status">
         <template #default="scope">
-          <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['dz:orders:edit']">修改</el-button>
-          <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['dz:orders:remove']">删除</el-button>
+          <dict-tag :options="order_status" :value="scope.row.status" />
         </template>
       </el-table-column>
+<!--      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">-->
+<!--        <template #default="scope">-->
+<!--          <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['dz:orders:edit']">修改</el-button>-->
+<!--          <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['dz:orders:remove']">删除</el-button>-->
+<!--        </template>-->
+<!--      </el-table-column>-->
     </el-table>
-    
+
     <pagination
       v-show="total>0"
       :total="total"
@@ -393,8 +279,15 @@
             placeholder="请选择确认时间">
           </el-date-picker>
         </el-form-item>
-        <el-form-item label="状态(-2:已退费,-1:支付失败,0:无效,1:未支付,2:已支付)" prop="status">
-          <el-input v-model="form.status" placeholder="请输入状态(-2:已退费,-1:支付失败,0:无效,1:未支付,2:已支付)" />
+        <el-form-item label="状态" prop="status">
+          <el-select v-model="form.status" placeholder="请选择状态" clearable style="width: 100%">
+            <el-option
+              v-for="dict in order_status"
+              :key="dict.value"
+              :label="dict.label"
+              :value="parseInt(dict.value)"
+            />
+          </el-select>
         </el-form-item>
       </el-form>
       <template #footer>
@@ -412,6 +305,9 @@ import { listOrders, getOrders, delOrders, addOrders, updateOrders } from "@/api
 
 const { proxy } = getCurrentInstance()
 
+// 获取字典数据
+const { order_status } = proxy.useDict("order_status")
+
 const ordersList = ref([])
 const open = ref(false)
 const loading = ref(true)
@@ -481,7 +377,7 @@ const data = reactive({
       { required: true, message: "创建时间不能为空", trigger: "blur" }
     ],
     status: [
-      { required: true, message: "状态(-2:已退费,-1:支付失败,0:无效,1:未支付,2:已支付)不能为空", trigger: "blur" }
+      { required: true, message: "状态不能为空", trigger: "change" }
     ]
   }
 })

+ 2 - 2
back-ui/src/views/login.vue

@@ -163,8 +163,8 @@ getCode()
 getCookie()
 
 if (import.meta.env.DEV) {
-  loginForm.value.username = "admin"
-  loginForm.value.password = "admin123"
+  loginForm.value.username = ""
+  loginForm.value.password = ""
 }
 </script>
 

+ 306 - 0
back-ui/src/views/system/EcardPrice/index.vue

@@ -0,0 +1,306 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="地区" prop="location">
+        <el-input
+          v-model="queryParams.location"
+          placeholder="请输入地区"
+          clearable
+          @keyup.enter="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="考生类型" prop="examType">
+        <el-select v-model="queryParams.examType" placeholder="请选择考生类型" clearable style="width: 180px">
+          <el-option
+            v-for="dict in exam_type"
+            :key="dict.value"
+            :label="dict.label"
+            :value="dict.value"
+          />
+        </el-select>
+      </el-form-item>
+<!--      <el-form-item label="价格(分)" prop="price">-->
+<!--        <el-input-->
+<!--          v-model="queryParams.price"-->
+<!--          placeholder="请输入价格(分)"-->
+<!--          clearable-->
+<!--          @keyup.enter="handleQuery"-->
+<!--        />-->
+<!--      </el-form-item>-->
+<!--      <el-form-item label="学年" prop="year">-->
+<!--        <el-input-->
+<!--          v-model="queryParams.year"-->
+<!--          placeholder="请输入学年"-->
+<!--          clearable-->
+<!--          @keyup.enter="handleQuery"-->
+<!--        />-->
+<!--      </el-form-item>-->
+<!--      <el-form-item label="到期时间" prop="outTime">-->
+<!--        <el-date-picker clearable-->
+<!--          v-model="queryParams.outTime"-->
+<!--          type="date"-->
+<!--          value-format="YYYY-MM-DD"-->
+<!--          placeholder="请选择到期时间">-->
+<!--        </el-date-picker>-->
+<!--      </el-form-item>-->
+      <el-form-item>
+        <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
+        <el-button icon="Refresh" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="Plus"
+          @click="handleAdd"
+          v-hasPermi="['system:EcardPrice:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="Edit"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['system:EcardPrice:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="Delete"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['system:EcardPrice:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="Download"
+          @click="handleExport"
+          v-hasPermi="['system:EcardPrice:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="EcardPriceList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="ID" align="center" prop="id" />
+      <el-table-column label="地区" align="center" prop="location" />
+      <el-table-column label="考生类型" align="center" prop="examType">
+        <template #default="scope">
+          <dict-tag :options="exam_type" :value="scope.row.examType"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="价格(分)" align="center" prop="price" />
+      <el-table-column label="年份" align="center" prop="year" />
+      <el-table-column label="到期时间" align="center" prop="outTime" width="180">
+        <template #default="scope">
+          <span>{{ parseTime(scope.row.outTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template #default="scope">
+          <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['system:EcardPrice:edit']">修改</el-button>
+          <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['system:EcardPrice:remove']">删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      v-model:page="queryParams.pageNum"
+      v-model:limit="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改电子卡费用对话框 -->
+    <el-dialog :title="title" v-model="open" width="500px" append-to-body>
+      <el-form ref="EcardPriceRef" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="地区" prop="location">
+          <el-input v-model="form.location" placeholder="请输入地区" />
+        </el-form-item>
+        <el-form-item label="考生类型" prop="examType">
+          <el-select v-model="form.examType" placeholder="请选择考生类型">
+            <el-option
+              v-for="dict in exam_type"
+              :key="dict.value"
+              :label="dict.label"
+              :value="dict.value"
+            ></el-option>
+          </el-select>
+        </el-form-item>
+        <el-form-item label="价格(分)" prop="price">
+          <el-input v-model="form.price" placeholder="请输入价格(分)" />
+        </el-form-item>
+        <el-form-item label="学年" prop="year">
+          <el-input v-model="form.year" placeholder="请输入学年" />
+        </el-form-item>
+        <el-form-item label="到期时间" prop="outTime">
+          <el-date-picker clearable
+            v-model="form.outTime"
+            type="date"
+            value-format="YYYY-MM-DD"
+            placeholder="请选择到期时间">
+          </el-date-picker>
+        </el-form-item>
+      </el-form>
+      <template #footer>
+        <div class="dialog-footer">
+          <el-button type="primary" @click="submitForm">确 定</el-button>
+          <el-button @click="cancel">取 消</el-button>
+        </div>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup name="EcardPrice">
+import { listEcardPrice, getEcardPrice, delEcardPrice, addEcardPrice, updateEcardPrice } from "@/api/system/EcardPrice"
+
+const { proxy } = getCurrentInstance()
+const { exam_type } = proxy.useDict('exam_type')
+
+const EcardPriceList = ref([])
+const open = ref(false)
+const loading = ref(true)
+const showSearch = ref(true)
+const ids = ref([])
+const single = ref(true)
+const multiple = ref(true)
+const total = ref(0)
+const title = ref("")
+
+const data = reactive({
+  form: {},
+  queryParams: {
+    pageNum: 1,
+    pageSize: 10,
+    location: null,
+    examType: null,
+    price: null,
+    year: null,
+    outTime: null
+  },
+  rules: {
+  }
+})
+
+const { queryParams, form, rules } = toRefs(data)
+
+/** 查询电子卡费用列表 */
+function getList() {
+  loading.value = true
+  listEcardPrice(queryParams.value).then(response => {
+    EcardPriceList.value = response.rows
+    total.value = response.total
+    loading.value = false
+  })
+}
+
+// 取消按钮
+function cancel() {
+  open.value = false
+  reset()
+}
+
+// 表单重置
+function reset() {
+  form.value = {
+    id: null,
+    location: null,
+    examType: null,
+    price: null,
+    year: null,
+    outTime: null
+  }
+  proxy.resetForm("EcardPriceRef")
+}
+
+/** 搜索按钮操作 */
+function handleQuery() {
+  queryParams.value.pageNum = 1
+  getList()
+}
+
+/** 重置按钮操作 */
+function resetQuery() {
+  proxy.resetForm("queryRef")
+  handleQuery()
+}
+
+// 多选框选中数据
+function handleSelectionChange(selection) {
+  ids.value = selection.map(item => item.id)
+  single.value = selection.length != 1
+  multiple.value = !selection.length
+}
+
+/** 新增按钮操作 */
+function handleAdd() {
+  reset()
+  open.value = true
+  title.value = "添加电子卡费用"
+}
+
+/** 修改按钮操作 */
+function handleUpdate(row) {
+  reset()
+  const _id = row.id || ids.value
+  getEcardPrice(_id).then(response => {
+    form.value = response.data
+    open.value = true
+    title.value = "修改电子卡费用"
+  })
+}
+
+/** 提交按钮 */
+function submitForm() {
+  proxy.$refs["EcardPriceRef"].validate(valid => {
+    if (valid) {
+      if (form.value.id != null) {
+        updateEcardPrice(form.value).then(response => {
+          proxy.$modal.msgSuccess("修改成功")
+          open.value = false
+          getList()
+        })
+      } else {
+        addEcardPrice(form.value).then(response => {
+          proxy.$modal.msgSuccess("新增成功")
+          open.value = false
+          getList()
+        })
+      }
+    }
+  })
+}
+
+/** 删除按钮操作 */
+function handleDelete(row) {
+  const _ids = row.id || ids.value
+  proxy.$modal.confirm('是否确认删除电子卡费用编号为"' + _ids + '"的数据项?').then(function() {
+    return delEcardPrice(_ids)
+  }).then(() => {
+    getList()
+    proxy.$modal.msgSuccess("删除成功")
+  }).catch(() => {})
+}
+
+/** 导出按钮操作 */
+function handleExport() {
+  proxy.download('system/EcardPrice/export', {
+    ...queryParams.value
+  }, `EcardPrice_${new Date().getTime()}.xlsx`)
+}
+
+getList()
+</script>

+ 0 - 4172
back-ui/yarn.lock

@@ -1,4172 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-"@antfu/utils@^0.7.10":
-  version "0.7.10"
-  resolved "https://registry.npmmirror.com/@antfu/utils/-/utils-0.7.10.tgz#ae829f170158e297a9b6a28f161a8e487d00814d"
-  integrity sha512-+562v9k4aI80m1+VuMHehNJWLOFjBnXn3tdOitzD0il5b7smkSBal4+a3oKiQTbrwMmN/TBUMDvbdoWDehgOww==
-
-"@babel/helper-string-parser@^7.27.1":
-  version "7.27.1"
-  resolved "https://registry.npmmirror.com/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz#54da796097ab19ce67ed9f88b47bb2ec49367687"
-  integrity sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==
-
-"@babel/helper-validator-identifier@^7.27.1":
-  version "7.27.1"
-  resolved "https://registry.npmmirror.com/@babel/helper-validator-identifier/-/helper-validator-identifier-7.27.1.tgz#a7054dcc145a967dd4dc8fee845a57c1316c9df8"
-  integrity sha512-D2hP9eA+Sqx1kBZgzxZh0y1trbuU+JoDkiEwqhQ36nodYqJwyEIhPSdMNd7lOm/4io72luTPWH20Yda0xOuUow==
-
-"@babel/parser@^7.27.2", "@babel/parser@^7.28.4":
-  version "7.28.4"
-  resolved "https://registry.npmmirror.com/@babel/parser/-/parser-7.28.4.tgz#da25d4643532890932cc03f7705fe19637e03fa8"
-  integrity sha512-yZbBqeM6TkpP9du/I2pUZnJsRMGGvOuIrhjzC1AwHwW+6he4mni6Bp/m8ijn0iOuZuPI2BfkCoSRunpyjnrQKg==
-  dependencies:
-    "@babel/types" "^7.28.4"
-
-"@babel/types@^7.28.4":
-  version "7.28.4"
-  resolved "https://registry.npmmirror.com/@babel/types/-/types-7.28.4.tgz#0a4e618f4c60a7cd6c11cb2d48060e4dbe38ac3a"
-  integrity sha512-bkFqkLhh3pMBUQQkpVgWDWq/lqzc2678eUyDlTBhRqhCHFguYYGM0Efga7tYk4TogG/3x0EEl66/OQ+WGbWB/Q==
-  dependencies:
-    "@babel/helper-string-parser" "^7.27.1"
-    "@babel/helper-validator-identifier" "^7.27.1"
-
-"@bufbuild/protobuf@^2.0.0":
-  version "2.9.0"
-  resolved "https://registry.npmmirror.com/@bufbuild/protobuf/-/protobuf-2.9.0.tgz#ff8827be3d8e56d74a03530cff8b0e1952aa115e"
-  integrity sha512-rnJenoStJ8nvmt9Gzye8nkYd6V22xUAnu4086ER7h1zJ508vStko4pMvDeQ446ilDTFpV5wnoc5YS7XvMwwMqA==
-
-"@ctrl/tinycolor@^3.4.1":
-  version "3.6.1"
-  resolved "https://registry.npmmirror.com/@ctrl/tinycolor/-/tinycolor-3.6.1.tgz#b6c75a56a1947cc916ea058772d666a2c8932f31"
-  integrity sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==
-
-"@element-plus/icons-vue@2.3.1":
-  version "2.3.1"
-  resolved "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.1.tgz#1f635ad5fdd5c85ed936481525570e82b5a8307a"
-  integrity sha512-XxVUZv48RZAd87ucGS48jPf6pKu0yV5UCg9f4FFwtrYxXOwWuVJo6wOvSLKEoMQKjv8GsX/mhP6UsC1lRwbUWg==
-
-"@element-plus/icons-vue@^2.3.1":
-  version "2.3.2"
-  resolved "https://registry.npmmirror.com/@element-plus/icons-vue/-/icons-vue-2.3.2.tgz#7e9cb231fb738b2056f33e22c3a29e214b538dcf"
-  integrity sha512-OzIuTaIfC8QXEPmJvB4Y4kw34rSXdCJzxcD1kFStBvr8bK6X1zQAYDo0CNMjojnfTqRQCJ0I7prlErcoRiET2A==
-
-"@emnapi/core@^1.5.0":
-  version "1.5.0"
-  resolved "https://registry.npmmirror.com/@emnapi/core/-/core-1.5.0.tgz#85cd84537ec989cebb2343606a1ee663ce4edaf0"
-  integrity sha512-sbP8GzB1WDzacS8fgNPpHlp6C9VZe+SJP3F90W9rLemaQj2PzIuTEl1qDOYQf58YIpyjViI24y9aPWCjEzY2cg==
-  dependencies:
-    "@emnapi/wasi-threads" "1.1.0"
-    tslib "^2.4.0"
-
-"@emnapi/runtime@^1.5.0":
-  version "1.5.0"
-  resolved "https://registry.npmmirror.com/@emnapi/runtime/-/runtime-1.5.0.tgz#9aebfcb9b17195dce3ab53c86787a6b7d058db73"
-  integrity sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==
-  dependencies:
-    tslib "^2.4.0"
-
-"@emnapi/wasi-threads@1.1.0", "@emnapi/wasi-threads@^1.1.0":
-  version "1.1.0"
-  resolved "https://registry.npmmirror.com/@emnapi/wasi-threads/-/wasi-threads-1.1.0.tgz#60b2102fddc9ccb78607e4a3cf8403ea69be41bf"
-  integrity sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==
-  dependencies:
-    tslib "^2.4.0"
-
-"@esbuild/aix-ppc64@0.25.11":
-  version "0.25.11"
-  resolved "https://registry.npmmirror.com/@esbuild/aix-ppc64/-/aix-ppc64-0.25.11.tgz#2ae33300598132cc4cf580dbbb28d30fed3c5c49"
-  integrity sha512-Xt1dOL13m8u0WE8iplx9Ibbm+hFAO0GsU2P34UNoDGvZYkY8ifSiy6Zuc1lYxfG7svWE2fzqCUmFp5HCn51gJg==
-
-"@esbuild/android-arm64@0.25.11":
-  version "0.25.11"
-  resolved "https://registry.npmmirror.com/@esbuild/android-arm64/-/android-arm64-0.25.11.tgz#927708b3db5d739d6cb7709136924cc81bec9b03"
-  integrity sha512-9slpyFBc4FPPz48+f6jyiXOx/Y4v34TUeDDXJpZqAWQn/08lKGeD8aDp9TMn9jDz2CiEuHwfhRmGBvpnd/PWIQ==
-
-"@esbuild/android-arm@0.25.11":
-  version "0.25.11"
-  resolved "https://registry.npmmirror.com/@esbuild/android-arm/-/android-arm-0.25.11.tgz#571f94e7f4068957ec4c2cfb907deae3d01b55ae"
-  integrity sha512-uoa7dU+Dt3HYsethkJ1k6Z9YdcHjTrSb5NUy66ZfZaSV8hEYGD5ZHbEMXnqLFlbBflLsl89Zke7CAdDJ4JI+Gg==
-
-"@esbuild/android-x64@0.25.11":
-  version "0.25.11"
-  resolved "https://registry.npmmirror.com/@esbuild/android-x64/-/android-x64-0.25.11.tgz#8a3bf5cae6c560c7ececa3150b2bde76e0fb81e6"
-  integrity sha512-Sgiab4xBjPU1QoPEIqS3Xx+R2lezu0LKIEcYe6pftr56PqPygbB7+szVnzoShbx64MUupqoE0KyRlN7gezbl8g==
-
-"@esbuild/darwin-arm64@0.25.11":
-  version "0.25.11"
-  resolved "https://registry.npmmirror.com/@esbuild/darwin-arm64/-/darwin-arm64-0.25.11.tgz#0a678c4ac4bf8717e67481e1a797e6c152f93c84"
-  integrity sha512-VekY0PBCukppoQrycFxUqkCojnTQhdec0vevUL/EDOCnXd9LKWqD/bHwMPzigIJXPhC59Vd1WFIL57SKs2mg4w==
-
-"@esbuild/darwin-x64@0.25.11":
-  version "0.25.11"
-  resolved "https://registry.npmmirror.com/@esbuild/darwin-x64/-/darwin-x64-0.25.11.tgz#70f5e925a30c8309f1294d407a5e5e002e0315fe"
-  integrity sha512-+hfp3yfBalNEpTGp9loYgbknjR695HkqtY3d3/JjSRUyPg/xd6q+mQqIb5qdywnDxRZykIHs3axEqU6l1+oWEQ==
-
-"@esbuild/freebsd-arm64@0.25.11":
-  version "0.25.11"
-  resolved "https://registry.npmmirror.com/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.11.tgz#4ec1db687c5b2b78b44148025da9632397553e8a"
-  integrity sha512-CmKjrnayyTJF2eVuO//uSjl/K3KsMIeYeyN7FyDBjsR3lnSJHaXlVoAK8DZa7lXWChbuOk7NjAc7ygAwrnPBhA==
-
-"@esbuild/freebsd-x64@0.25.11":
-  version "0.25.11"
-  resolved "https://registry.npmmirror.com/@esbuild/freebsd-x64/-/freebsd-x64-0.25.11.tgz#4c81abd1b142f1e9acfef8c5153d438ca53f44bb"
-  integrity sha512-Dyq+5oscTJvMaYPvW3x3FLpi2+gSZTCE/1ffdwuM6G1ARang/mb3jvjxs0mw6n3Lsw84ocfo9CrNMqc5lTfGOw==
-
-"@esbuild/linux-arm64@0.25.11":
-  version "0.25.11"
-  resolved "https://registry.npmmirror.com/@esbuild/linux-arm64/-/linux-arm64-0.25.11.tgz#69517a111acfc2b93aa0fb5eaeb834c0202ccda5"
-  integrity sha512-Qr8AzcplUhGvdyUF08A1kHU3Vr2O88xxP0Tm8GcdVOUm25XYcMPp2YqSVHbLuXzYQMf9Bh/iKx7YPqECs6ffLA==
-
-"@esbuild/linux-arm@0.25.11":
-  version "0.25.11"
-  resolved "https://registry.npmmirror.com/@esbuild/linux-arm/-/linux-arm-0.25.11.tgz#58dac26eae2dba0fac5405052b9002dac088d38f"
-  integrity sha512-TBMv6B4kCfrGJ8cUPo7vd6NECZH/8hPpBHHlYI3qzoYFvWu2AdTvZNuU/7hsbKWqu/COU7NIK12dHAAqBLLXgw==
-
-"@esbuild/linux-ia32@0.25.11":
-  version "0.25.11"
-  resolved "https://registry.npmmirror.com/@esbuild/linux-ia32/-/linux-ia32-0.25.11.tgz#b89d4efe9bdad46ba944f0f3b8ddd40834268c2b"
-  integrity sha512-TmnJg8BMGPehs5JKrCLqyWTVAvielc615jbkOirATQvWWB1NMXY77oLMzsUjRLa0+ngecEmDGqt5jiDC6bfvOw==
-
-"@esbuild/linux-loong64@0.25.11":
-  version "0.25.11"
-  resolved "https://registry.npmmirror.com/@esbuild/linux-loong64/-/linux-loong64-0.25.11.tgz#11f603cb60ad14392c3f5c94d64b3cc8b630fbeb"
-  integrity sha512-DIGXL2+gvDaXlaq8xruNXUJdT5tF+SBbJQKbWy/0J7OhU8gOHOzKmGIlfTTl6nHaCOoipxQbuJi7O++ldrxgMw==
-
-"@esbuild/linux-mips64el@0.25.11":
-  version "0.25.11"
-  resolved "https://registry.npmmirror.com/@esbuild/linux-mips64el/-/linux-mips64el-0.25.11.tgz#b7d447ff0676b8ab247d69dac40a5cf08e5eeaf5"
-  integrity sha512-Osx1nALUJu4pU43o9OyjSCXokFkFbyzjXb6VhGIJZQ5JZi8ylCQ9/LFagolPsHtgw6himDSyb5ETSfmp4rpiKQ==
-
-"@esbuild/linux-ppc64@0.25.11":
-  version "0.25.11"
-  resolved "https://registry.npmmirror.com/@esbuild/linux-ppc64/-/linux-ppc64-0.25.11.tgz#b3a28ed7cc252a61b07ff7c8fd8a984ffd3a2f74"
-  integrity sha512-nbLFgsQQEsBa8XSgSTSlrnBSrpoWh7ioFDUmwo158gIm5NNP+17IYmNWzaIzWmgCxq56vfr34xGkOcZ7jX6CPw==
-
-"@esbuild/linux-riscv64@0.25.11":
-  version "0.25.11"
-  resolved "https://registry.npmmirror.com/@esbuild/linux-riscv64/-/linux-riscv64-0.25.11.tgz#ce75b08f7d871a75edcf4d2125f50b21dc9dc273"
-  integrity sha512-HfyAmqZi9uBAbgKYP1yGuI7tSREXwIb438q0nqvlpxAOs3XnZ8RsisRfmVsgV486NdjD7Mw2UrFSw51lzUk1ww==
-
-"@esbuild/linux-s390x@0.25.11":
-  version "0.25.11"
-  resolved "https://registry.npmmirror.com/@esbuild/linux-s390x/-/linux-s390x-0.25.11.tgz#cd08f6c73b6b6ff9ccdaabbd3ff6ad3dca99c263"
-  integrity sha512-HjLqVgSSYnVXRisyfmzsH6mXqyvj0SA7pG5g+9W7ESgwA70AXYNpfKBqh1KbTxmQVaYxpzA/SvlB9oclGPbApw==
-
-"@esbuild/linux-x64@0.25.11":
-  version "0.25.11"
-  resolved "https://registry.npmmirror.com/@esbuild/linux-x64/-/linux-x64-0.25.11.tgz#3c3718af31a95d8946ebd3c32bb1e699bdf74910"
-  integrity sha512-HSFAT4+WYjIhrHxKBwGmOOSpphjYkcswF449j6EjsjbinTZbp8PJtjsVK1XFJStdzXdy/jaddAep2FGY+wyFAQ==
-
-"@esbuild/netbsd-arm64@0.25.11":
-  version "0.25.11"
-  resolved "https://registry.npmmirror.com/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.11.tgz#b4c767082401e3a4e8595fe53c47cd7f097c8077"
-  integrity sha512-hr9Oxj1Fa4r04dNpWr3P8QKVVsjQhqrMSUzZzf+LZcYjZNqhA3IAfPQdEh1FLVUJSiu6sgAwp3OmwBfbFgG2Xg==
-
-"@esbuild/netbsd-x64@0.25.11":
-  version "0.25.11"
-  resolved "https://registry.npmmirror.com/@esbuild/netbsd-x64/-/netbsd-x64-0.25.11.tgz#f2a930458ed2941d1f11ebc34b9c7d61f7a4d034"
-  integrity sha512-u7tKA+qbzBydyj0vgpu+5h5AeudxOAGncb8N6C9Kh1N4n7wU1Xw1JDApsRjpShRpXRQlJLb9wY28ELpwdPcZ7A==
-
-"@esbuild/openbsd-arm64@0.25.11":
-  version "0.25.11"
-  resolved "https://registry.npmmirror.com/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.11.tgz#b4ae93c75aec48bc1e8a0154957a05f0641f2dad"
-  integrity sha512-Qq6YHhayieor3DxFOoYM1q0q1uMFYb7cSpLD2qzDSvK1NAvqFi8Xgivv0cFC6J+hWVw2teCYltyy9/m/14ryHg==
-
-"@esbuild/openbsd-x64@0.25.11":
-  version "0.25.11"
-  resolved "https://registry.npmmirror.com/@esbuild/openbsd-x64/-/openbsd-x64-0.25.11.tgz#b42863959c8dcf9b01581522e40012d2c70045e2"
-  integrity sha512-CN+7c++kkbrckTOz5hrehxWN7uIhFFlmS/hqziSFVWpAzpWrQoAG4chH+nN3Be+Kzv/uuo7zhX716x3Sn2Jduw==
-
-"@esbuild/openharmony-arm64@0.25.11":
-  version "0.25.11"
-  resolved "https://registry.npmmirror.com/@esbuild/openharmony-arm64/-/openharmony-arm64-0.25.11.tgz#b2e717141c8fdf6bddd4010f0912e6b39e1640f1"
-  integrity sha512-rOREuNIQgaiR+9QuNkbkxubbp8MSO9rONmwP5nKncnWJ9v5jQ4JxFnLu4zDSRPf3x4u+2VN4pM4RdyIzDty/wQ==
-
-"@esbuild/sunos-x64@0.25.11":
-  version "0.25.11"
-  resolved "https://registry.npmmirror.com/@esbuild/sunos-x64/-/sunos-x64-0.25.11.tgz#9fbea1febe8778927804828883ec0f6dd80eb244"
-  integrity sha512-nq2xdYaWxyg9DcIyXkZhcYulC6pQ2FuCgem3LI92IwMgIZ69KHeY8T4Y88pcwoLIjbed8n36CyKoYRDygNSGhA==
-
-"@esbuild/win32-arm64@0.25.11":
-  version "0.25.11"
-  resolved "https://registry.npmmirror.com/@esbuild/win32-arm64/-/win32-arm64-0.25.11.tgz#501539cedb24468336073383989a7323005a8935"
-  integrity sha512-3XxECOWJq1qMZ3MN8srCJ/QfoLpL+VaxD/WfNRm1O3B4+AZ/BnLVgFbUV3eiRYDMXetciH16dwPbbHqwe1uU0Q==
-
-"@esbuild/win32-ia32@0.25.11":
-  version "0.25.11"
-  resolved "https://registry.npmmirror.com/@esbuild/win32-ia32/-/win32-ia32-0.25.11.tgz#8ac7229aa82cef8f16ffb58f1176a973a7a15343"
-  integrity sha512-3ukss6gb9XZ8TlRyJlgLn17ecsK4NSQTmdIXRASVsiS2sQ6zPPZklNJT5GR5tE/MUarymmy8kCEf5xPCNCqVOA==
-
-"@esbuild/win32-x64@0.25.11":
-  version "0.25.11"
-  resolved "https://registry.npmmirror.com/@esbuild/win32-x64/-/win32-x64-0.25.11.tgz#5ecda6f3fe138b7e456f4e429edde33c823f392f"
-  integrity sha512-D7Hpz6A2L4hzsRpPaCYkQnGOotdUpDzSGRIv9I+1ITdHROSFUWW95ZPZWQmGka1Fg7W3zFJowyn9WGwMJ0+KPA==
-
-"@floating-ui/core@^1.7.3":
-  version "1.7.3"
-  resolved "https://registry.npmmirror.com/@floating-ui/core/-/core-1.7.3.tgz#462d722f001e23e46d86fd2bd0d21b7693ccb8b7"
-  integrity sha512-sGnvb5dmrJaKEZ+LDIpguvdX3bDlEllmv4/ClQ9awcmCZrlx5jQyyMWFM5kBI+EyNOCDDiKk8il0zeuX3Zlg/w==
-  dependencies:
-    "@floating-ui/utils" "^0.2.10"
-
-"@floating-ui/dom@^1.0.1":
-  version "1.7.4"
-  resolved "https://registry.npmmirror.com/@floating-ui/dom/-/dom-1.7.4.tgz#ee667549998745c9c3e3e84683b909c31d6c9a77"
-  integrity sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==
-  dependencies:
-    "@floating-ui/core" "^1.7.3"
-    "@floating-ui/utils" "^0.2.10"
-
-"@floating-ui/utils@^0.2.10":
-  version "0.2.10"
-  resolved "https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.2.10.tgz#a2a1e3812d14525f725d011a73eceb41fef5bc1c"
-  integrity sha512-aGTxbpbg8/b5JfU1HXSrbH3wXZuLPJcNEcZQFMxLs3oSzgtVu6nFPkbbGGUvBcUjKV2YyB9Wxxabo+HEH9tcRQ==
-
-"@isaacs/cliui@^8.0.2":
-  version "8.0.2"
-  resolved "https://registry.npmmirror.com/@isaacs/cliui/-/cliui-8.0.2.tgz#b37667b7bc181c168782259bab42474fbf52b550"
-  integrity sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==
-  dependencies:
-    string-width "^5.1.2"
-    string-width-cjs "npm:string-width@^4.2.0"
-    strip-ansi "^7.0.1"
-    strip-ansi-cjs "npm:strip-ansi@^6.0.1"
-    wrap-ansi "^8.1.0"
-    wrap-ansi-cjs "npm:wrap-ansi@^7.0.0"
-
-"@isaacs/fs-minipass@^4.0.0":
-  version "4.0.1"
-  resolved "https://registry.npmmirror.com/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz#2d59ae3ab4b38fb4270bfa23d30f8e2e86c7fe32"
-  integrity sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==
-  dependencies:
-    minipass "^7.0.4"
-
-"@jridgewell/gen-mapping@^0.3.5":
-  version "0.3.13"
-  resolved "https://registry.npmmirror.com/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz#6342a19f44347518c93e43b1ac69deb3c4656a1f"
-  integrity sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==
-  dependencies:
-    "@jridgewell/sourcemap-codec" "^1.5.0"
-    "@jridgewell/trace-mapping" "^0.3.24"
-
-"@jridgewell/remapping@^2.3.4":
-  version "2.3.5"
-  resolved "https://registry.npmmirror.com/@jridgewell/remapping/-/remapping-2.3.5.tgz#375c476d1972947851ba1e15ae8f123047445aa1"
-  integrity sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==
-  dependencies:
-    "@jridgewell/gen-mapping" "^0.3.5"
-    "@jridgewell/trace-mapping" "^0.3.24"
-
-"@jridgewell/resolve-uri@^3.1.0":
-  version "3.1.2"
-  resolved "https://registry.npmmirror.com/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz#7a0ee601f60f99a20c7c7c5ff0c80388c1189bd6"
-  integrity sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==
-
-"@jridgewell/sourcemap-codec@^1.4.14", "@jridgewell/sourcemap-codec@^1.5.0", "@jridgewell/sourcemap-codec@^1.5.5":
-  version "1.5.5"
-  resolved "https://registry.npmmirror.com/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz#6912b00d2c631c0d15ce1a7ab57cd657f2a8f8ba"
-  integrity sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==
-
-"@jridgewell/trace-mapping@^0.3.24":
-  version "0.3.31"
-  resolved "https://registry.npmmirror.com/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz#db15d6781c931f3a251a3dac39501c98a6082fd0"
-  integrity sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==
-  dependencies:
-    "@jridgewell/resolve-uri" "^3.1.0"
-    "@jridgewell/sourcemap-codec" "^1.4.14"
-
-"@napi-rs/wasm-runtime@^1.0.5":
-  version "1.0.7"
-  resolved "https://registry.npmmirror.com/@napi-rs/wasm-runtime/-/wasm-runtime-1.0.7.tgz#dcfea99a75f06209a235f3d941e3460a51e9b14c"
-  integrity sha512-SeDnOO0Tk7Okiq6DbXmmBODgOAb9dp9gjlphokTUxmt8U3liIP1ZsozBahH69j/RJv+Rfs6IwUKHTgQYJ/HBAw==
-  dependencies:
-    "@emnapi/core" "^1.5.0"
-    "@emnapi/runtime" "^1.5.0"
-    "@tybys/wasm-util" "^0.10.1"
-
-"@nodelib/fs.scandir@2.1.5":
-  version "2.1.5"
-  resolved "https://registry.npmmirror.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5"
-  integrity sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==
-  dependencies:
-    "@nodelib/fs.stat" "2.0.5"
-    run-parallel "^1.1.9"
-
-"@nodelib/fs.stat@2.0.5", "@nodelib/fs.stat@^2.0.2":
-  version "2.0.5"
-  resolved "https://registry.npmmirror.com/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz#5bd262af94e9d25bd1e71b05deed44876a222e8b"
-  integrity sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==
-
-"@nodelib/fs.walk@^1.2.3":
-  version "1.2.8"
-  resolved "https://registry.npmmirror.com/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz#e95737e8bb6746ddedf69c556953494f196fe69a"
-  integrity sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==
-  dependencies:
-    "@nodelib/fs.scandir" "2.1.5"
-    fastq "^1.6.0"
-
-"@one-ini/wasm@0.1.1":
-  version "0.1.1"
-  resolved "https://registry.npmmirror.com/@one-ini/wasm/-/wasm-0.1.1.tgz#6013659736c9dbfccc96e8a9c2b3de317df39323"
-  integrity sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==
-
-"@pkgjs/parseargs@^0.11.0":
-  version "0.11.0"
-  resolved "https://registry.npmmirror.com/@pkgjs/parseargs/-/parseargs-0.11.0.tgz#a77ea742fab25775145434eb1d2328cf5013ac33"
-  integrity sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==
-
-"@popperjs/core@npm:@sxzz/popperjs-es@^2.11.7":
-  version "2.11.7"
-  resolved "https://registry.npmmirror.com/@sxzz/popperjs-es/-/popperjs-es-2.11.7.tgz#a7f69e3665d3da9b115f9e71671dae1b97e13671"
-  integrity sha512-Ccy0NlLkzr0Ex2FKvh2X+OyERHXJ88XJ1MXtsI9y9fGexlaXaVTPzBCRBwIxFkORuOb+uBqeu+RqnpgYTEZRUQ==
-
-"@rollup/pluginutils@^5.1.3", "@rollup/pluginutils@^5.1.4":
-  version "5.3.0"
-  resolved "https://registry.npmmirror.com/@rollup/pluginutils/-/pluginutils-5.3.0.tgz#57ba1b0cbda8e7a3c597a4853c807b156e21a7b4"
-  integrity sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==
-  dependencies:
-    "@types/estree" "^1.0.0"
-    estree-walker "^2.0.2"
-    picomatch "^4.0.2"
-
-"@rollup/rollup-android-arm-eabi@4.52.5":
-  version "4.52.5"
-  resolved "https://registry.npmmirror.com/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.52.5.tgz#0f44a2f8668ed87b040b6fe659358ac9239da4db"
-  integrity sha512-8c1vW4ocv3UOMp9K+gToY5zL2XiiVw3k7f1ksf4yO1FlDFQ1C2u72iACFnSOceJFsWskc2WZNqeRhFRPzv+wtQ==
-
-"@rollup/rollup-android-arm64@4.52.5":
-  version "4.52.5"
-  resolved "https://registry.npmmirror.com/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.52.5.tgz#25b9a01deef6518a948431564c987bcb205274f5"
-  integrity sha512-mQGfsIEFcu21mvqkEKKu2dYmtuSZOBMmAl5CFlPGLY94Vlcm+zWApK7F/eocsNzp8tKmbeBP8yXyAbx0XHsFNA==
-
-"@rollup/rollup-darwin-arm64@4.52.5":
-  version "4.52.5"
-  resolved "https://registry.npmmirror.com/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.52.5.tgz#8a102869c88f3780c7d5e6776afd3f19084ecd7f"
-  integrity sha512-takF3CR71mCAGA+v794QUZ0b6ZSrgJkArC+gUiG6LB6TQty9T0Mqh3m2ImRBOxS2IeYBo4lKWIieSvnEk2OQWA==
-
-"@rollup/rollup-darwin-x64@4.52.5":
-  version "4.52.5"
-  resolved "https://registry.npmmirror.com/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.52.5.tgz#8e526417cd6f54daf1d0c04cf361160216581956"
-  integrity sha512-W901Pla8Ya95WpxDn//VF9K9u2JbocwV/v75TE0YIHNTbhqUTv9w4VuQ9MaWlNOkkEfFwkdNhXgcLqPSmHy0fA==
-
-"@rollup/rollup-freebsd-arm64@4.52.5":
-  version "4.52.5"
-  resolved "https://registry.npmmirror.com/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.52.5.tgz#0e7027054493f3409b1f219a3eac5efd128ef899"
-  integrity sha512-QofO7i7JycsYOWxe0GFqhLmF6l1TqBswJMvICnRUjqCx8b47MTo46W8AoeQwiokAx3zVryVnxtBMcGcnX12LvA==
-
-"@rollup/rollup-freebsd-x64@4.52.5":
-  version "4.52.5"
-  resolved "https://registry.npmmirror.com/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.52.5.tgz#72b204a920139e9ec3d331bd9cfd9a0c248ccb10"
-  integrity sha512-jr21b/99ew8ujZubPo9skbrItHEIE50WdV86cdSoRkKtmWa+DDr6fu2c/xyRT0F/WazZpam6kk7IHBerSL7LDQ==
-
-"@rollup/rollup-linux-arm-gnueabihf@4.52.5":
-  version "4.52.5"
-  resolved "https://registry.npmmirror.com/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.52.5.tgz#ab1b522ebe5b7e06c99504cc38f6cd8b808ba41c"
-  integrity sha512-PsNAbcyv9CcecAUagQefwX8fQn9LQ4nZkpDboBOttmyffnInRy8R8dSg6hxxl2Re5QhHBf6FYIDhIj5v982ATQ==
-
-"@rollup/rollup-linux-arm-musleabihf@4.52.5":
-  version "4.52.5"
-  resolved "https://registry.npmmirror.com/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.52.5.tgz#f8cc30b638f1ee7e3d18eac24af47ea29d9beb00"
-  integrity sha512-Fw4tysRutyQc/wwkmcyoqFtJhh0u31K+Q6jYjeicsGJJ7bbEq8LwPWV/w0cnzOqR2m694/Af6hpFayLJZkG2VQ==
-
-"@rollup/rollup-linux-arm64-gnu@4.52.5":
-  version "4.52.5"
-  resolved "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.52.5.tgz#7af37a9e85f25db59dc8214172907b7e146c12cc"
-  integrity sha512-a+3wVnAYdQClOTlyapKmyI6BLPAFYs0JM8HRpgYZQO02rMR09ZcV9LbQB+NL6sljzG38869YqThrRnfPMCDtZg==
-
-"@rollup/rollup-linux-arm64-musl@4.52.5":
-  version "4.52.5"
-  resolved "https://registry.npmmirror.com/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.52.5.tgz#a623eb0d3617c03b7a73716eb85c6e37b776f7e0"
-  integrity sha512-AvttBOMwO9Pcuuf7m9PkC1PUIKsfaAJ4AYhy944qeTJgQOqJYJ9oVl2nYgY7Rk0mkbsuOpCAYSs6wLYB2Xiw0Q==
-
-"@rollup/rollup-linux-loong64-gnu@4.52.5":
-  version "4.52.5"
-  resolved "https://registry.npmmirror.com/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.52.5.tgz#76ea038b549c5c6c5f0d062942627c4066642ee2"
-  integrity sha512-DkDk8pmXQV2wVrF6oq5tONK6UHLz/XcEVow4JTTerdeV1uqPeHxwcg7aFsfnSm9L+OO8WJsWotKM2JJPMWrQtA==
-
-"@rollup/rollup-linux-ppc64-gnu@4.52.5":
-  version "4.52.5"
-  resolved "https://registry.npmmirror.com/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.52.5.tgz#d9a4c3f0a3492bc78f6fdfe8131ac61c7359ccd5"
-  integrity sha512-W/b9ZN/U9+hPQVvlGwjzi+Wy4xdoH2I8EjaCkMvzpI7wJUs8sWJ03Rq96jRnHkSrcHTpQe8h5Tg3ZzUPGauvAw==
-
-"@rollup/rollup-linux-riscv64-gnu@4.52.5":
-  version "4.52.5"
-  resolved "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.52.5.tgz#87ab033eebd1a9a1dd7b60509f6333ec1f82d994"
-  integrity sha512-sjQLr9BW7R/ZiXnQiWPkErNfLMkkWIoCz7YMn27HldKsADEKa5WYdobaa1hmN6slu9oWQbB6/jFpJ+P2IkVrmw==
-
-"@rollup/rollup-linux-riscv64-musl@4.52.5":
-  version "4.52.5"
-  resolved "https://registry.npmmirror.com/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.52.5.tgz#bda3eb67e1c993c1ba12bc9c2f694e7703958d9f"
-  integrity sha512-hq3jU/kGyjXWTvAh2awn8oHroCbrPm8JqM7RUpKjalIRWWXE01CQOf/tUNWNHjmbMHg/hmNCwc/Pz3k1T/j/Lg==
-
-"@rollup/rollup-linux-s390x-gnu@4.52.5":
-  version "4.52.5"
-  resolved "https://registry.npmmirror.com/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.52.5.tgz#f7bc10fbe096ab44694233dc42a2291ed5453d4b"
-  integrity sha512-gn8kHOrku8D4NGHMK1Y7NA7INQTRdVOntt1OCYypZPRt6skGbddska44K8iocdpxHTMMNui5oH4elPH4QOLrFQ==
-
-"@rollup/rollup-linux-x64-gnu@4.52.5":
-  version "4.52.5"
-  resolved "https://registry.npmmirror.com/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.52.5.tgz#a151cb1234cc9b2cf5e8cfc02aa91436b8f9e278"
-  integrity sha512-hXGLYpdhiNElzN770+H2nlx+jRog8TyynpTVzdlc6bndktjKWyZyiCsuDAlpd+j+W+WNqfcyAWz9HxxIGfZm1Q==
-
-"@rollup/rollup-linux-x64-musl@4.52.5":
-  version "4.52.5"
-  resolved "https://registry.npmmirror.com/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.52.5.tgz#7859e196501cc3b3062d45d2776cfb4d2f3a9350"
-  integrity sha512-arCGIcuNKjBoKAXD+y7XomR9gY6Mw7HnFBv5Rw7wQRvwYLR7gBAgV7Mb2QTyjXfTveBNFAtPt46/36vV9STLNg==
-
-"@rollup/rollup-openharmony-arm64@4.52.5":
-  version "4.52.5"
-  resolved "https://registry.npmmirror.com/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.52.5.tgz#85d0df7233734df31e547c1e647d2a5300b3bf30"
-  integrity sha512-QoFqB6+/9Rly/RiPjaomPLmR/13cgkIGfA40LHly9zcH1S0bN2HVFYk3a1eAyHQyjs3ZJYlXvIGtcCs5tko9Cw==
-
-"@rollup/rollup-win32-arm64-msvc@4.52.5":
-  version "4.52.5"
-  resolved "https://registry.npmmirror.com/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.52.5.tgz#e62357d00458db17277b88adbf690bb855cac937"
-  integrity sha512-w0cDWVR6MlTstla1cIfOGyl8+qb93FlAVutcor14Gf5Md5ap5ySfQ7R9S/NjNaMLSFdUnKGEasmVnu3lCMqB7w==
-
-"@rollup/rollup-win32-ia32-msvc@4.52.5":
-  version "4.52.5"
-  resolved "https://registry.npmmirror.com/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.52.5.tgz#fc7cd40f44834a703c1f1c3fe8bcc27ce476cd50"
-  integrity sha512-Aufdpzp7DpOTULJCuvzqcItSGDH73pF3ko/f+ckJhxQyHtp67rHw3HMNxoIdDMUITJESNE6a8uh4Lo4SLouOUg==
-
-"@rollup/rollup-win32-x64-gnu@4.52.5":
-  version "4.52.5"
-  resolved "https://registry.npmmirror.com/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.52.5.tgz#1a22acfc93c64a64a48c42672e857ee51774d0d3"
-  integrity sha512-UGBUGPFp1vkj6p8wCRraqNhqwX/4kNQPS57BCFc8wYh0g94iVIW33wJtQAx3G7vrjjNtRaxiMUylM0ktp/TRSQ==
-
-"@rollup/rollup-win32-x64-msvc@4.52.5":
-  version "4.52.5"
-  resolved "https://registry.npmmirror.com/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.52.5.tgz#1657f56326bbe0ac80eedc9f9c18fc1ddd24e107"
-  integrity sha512-TAcgQh2sSkykPRWLrdyy2AiceMckNf5loITqXxFI5VuQjS5tSuw3WlwdN8qv8vzjLAUTvYaH/mVjSFpbkFbpTg==
-
-"@tailwindcss/node@4.1.14":
-  version "4.1.14"
-  resolved "https://registry.npmmirror.com/@tailwindcss/node/-/node-4.1.14.tgz#cf3864490c746db6b06b46aa235df9021a289bad"
-  integrity sha512-hpz+8vFk3Ic2xssIA3e01R6jkmsAhvkQdXlEbRTk6S10xDAtiQiM3FyvZVGsucefq764euO/b8WUW9ysLdThHw==
-  dependencies:
-    "@jridgewell/remapping" "^2.3.4"
-    enhanced-resolve "^5.18.3"
-    jiti "^2.6.0"
-    lightningcss "1.30.1"
-    magic-string "^0.30.19"
-    source-map-js "^1.2.1"
-    tailwindcss "4.1.14"
-
-"@tailwindcss/oxide-android-arm64@4.1.14":
-  version "4.1.14"
-  resolved "https://registry.npmmirror.com/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.1.14.tgz#8903678d75715d913b8f7c5f6fa0517af83b5111"
-  integrity sha512-a94ifZrGwMvbdeAxWoSuGcIl6/DOP5cdxagid7xJv6bwFp3oebp7y2ImYsnZBMTwjn5Ev5xESvS3FFYUGgPODQ==
-
-"@tailwindcss/oxide-darwin-arm64@4.1.14":
-  version "4.1.14"
-  resolved "https://registry.npmmirror.com/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.1.14.tgz#72d56afadce829047a83d8512f29ee16cf6fbea5"
-  integrity sha512-HkFP/CqfSh09xCnrPJA7jud7hij5ahKyWomrC3oiO2U9i0UjP17o9pJbxUN0IJ471GTQQmzwhp0DEcpbp4MZTA==
-
-"@tailwindcss/oxide-darwin-x64@4.1.14":
-  version "4.1.14"
-  resolved "https://registry.npmmirror.com/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.1.14.tgz#ac1af82da01299143129fdf615f6fcc046b4094e"
-  integrity sha512-eVNaWmCgdLf5iv6Qd3s7JI5SEFBFRtfm6W0mphJYXgvnDEAZ5sZzqmI06bK6xo0IErDHdTA5/t7d4eTfWbWOFw==
-
-"@tailwindcss/oxide-freebsd-x64@4.1.14":
-  version "4.1.14"
-  resolved "https://registry.npmmirror.com/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.1.14.tgz#a955cedf9b020147d222f92490e9d331db9b5c36"
-  integrity sha512-QWLoRXNikEuqtNb0dhQN6wsSVVjX6dmUFzuuiL09ZeXju25dsei2uIPl71y2Ic6QbNBsB4scwBoFnlBfabHkEw==
-
-"@tailwindcss/oxide-linux-arm-gnueabihf@4.1.14":
-  version "4.1.14"
-  resolved "https://registry.npmmirror.com/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.1.14.tgz#5474bee4d377144107f3f0198a3c0225a46c02e6"
-  integrity sha512-VB4gjQni9+F0VCASU+L8zSIyjrLLsy03sjcR3bM0V2g4SNamo0FakZFKyUQ96ZVwGK4CaJsc9zd/obQy74o0Fw==
-
-"@tailwindcss/oxide-linux-arm64-gnu@4.1.14":
-  version "4.1.14"
-  resolved "https://registry.npmmirror.com/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.1.14.tgz#b06ca140083b353735414e32f7a8786f55ce2dd6"
-  integrity sha512-qaEy0dIZ6d9vyLnmeg24yzA8XuEAD9WjpM5nIM1sUgQ/Zv7cVkharPDQcmm/t/TvXoKo/0knI3me3AGfdx6w1w==
-
-"@tailwindcss/oxide-linux-arm64-musl@4.1.14":
-  version "4.1.14"
-  resolved "https://registry.npmmirror.com/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.1.14.tgz#85f4cabea2a07609274d1f747bd098c5da2a7cd2"
-  integrity sha512-ISZjT44s59O8xKsPEIesiIydMG/sCXoMBCqsphDm/WcbnuWLxxb+GcvSIIA5NjUw6F8Tex7s5/LM2yDy8RqYBQ==
-
-"@tailwindcss/oxide-linux-x64-gnu@4.1.14":
-  version "4.1.14"
-  resolved "https://registry.npmmirror.com/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.1.14.tgz#0d7fbf91763a2f6886044a050298489107d120bd"
-  integrity sha512-02c6JhLPJj10L2caH4U0zF8Hji4dOeahmuMl23stk0MU1wfd1OraE7rOloidSF8W5JTHkFdVo/O7uRUJJnUAJg==
-
-"@tailwindcss/oxide-linux-x64-musl@4.1.14":
-  version "4.1.14"
-  resolved "https://registry.npmmirror.com/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.1.14.tgz#93578713064ba4c16df517df01b3c546ecc9878d"
-  integrity sha512-TNGeLiN1XS66kQhxHG/7wMeQDOoL0S33x9BgmydbrWAb9Qw0KYdd8o1ifx4HOGDWhVmJ+Ul+JQ7lyknQFilO3Q==
-
-"@tailwindcss/oxide-wasm32-wasi@4.1.14":
-  version "4.1.14"
-  resolved "https://registry.npmmirror.com/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.1.14.tgz#9e55999129a952a3dcc2196cc9cc55248cc1b1fe"
-  integrity sha512-uZYAsaW/jS/IYkd6EWPJKW/NlPNSkWkBlaeVBi/WsFQNP05/bzkebUL8FH1pdsqx4f2fH/bWFcUABOM9nfiJkQ==
-  dependencies:
-    "@emnapi/core" "^1.5.0"
-    "@emnapi/runtime" "^1.5.0"
-    "@emnapi/wasi-threads" "^1.1.0"
-    "@napi-rs/wasm-runtime" "^1.0.5"
-    "@tybys/wasm-util" "^0.10.1"
-    tslib "^2.4.0"
-
-"@tailwindcss/oxide-win32-arm64-msvc@4.1.14":
-  version "4.1.14"
-  resolved "https://registry.npmmirror.com/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.1.14.tgz#097c00bfc60cd84943a9cb5e853b25fa25525c77"
-  integrity sha512-Az0RnnkcvRqsuoLH2Z4n3JfAef0wElgzHD5Aky/e+0tBUxUhIeIqFBTMNQvmMRSP15fWwmvjBxZ3Q8RhsDnxAA==
-
-"@tailwindcss/oxide-win32-x64-msvc@4.1.14":
-  version "4.1.14"
-  resolved "https://registry.npmmirror.com/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.1.14.tgz#eaa49fa930ce16b23478d3b58c079a40ac0b6622"
-  integrity sha512-ttblVGHgf68kEE4om1n/n44I0yGPkCPbLsqzjvybhpwa6mKKtgFfAzy6btc3HRmuW7nHe0OOrSeNP9sQmmH9XA==
-
-"@tailwindcss/oxide@4.1.14":
-  version "4.1.14"
-  resolved "https://registry.npmmirror.com/@tailwindcss/oxide/-/oxide-4.1.14.tgz#acfc7869142665693b3b08e4e51d0f419ca13662"
-  integrity sha512-23yx+VUbBwCg2x5XWdB8+1lkPajzLmALEfMb51zZUBYaYVPDQvBSD/WYDqiVyBIo2BZFa3yw1Rpy3G2Jp+K0dw==
-  dependencies:
-    detect-libc "^2.0.4"
-    tar "^7.5.1"
-  optionalDependencies:
-    "@tailwindcss/oxide-android-arm64" "4.1.14"
-    "@tailwindcss/oxide-darwin-arm64" "4.1.14"
-    "@tailwindcss/oxide-darwin-x64" "4.1.14"
-    "@tailwindcss/oxide-freebsd-x64" "4.1.14"
-    "@tailwindcss/oxide-linux-arm-gnueabihf" "4.1.14"
-    "@tailwindcss/oxide-linux-arm64-gnu" "4.1.14"
-    "@tailwindcss/oxide-linux-arm64-musl" "4.1.14"
-    "@tailwindcss/oxide-linux-x64-gnu" "4.1.14"
-    "@tailwindcss/oxide-linux-x64-musl" "4.1.14"
-    "@tailwindcss/oxide-wasm32-wasi" "4.1.14"
-    "@tailwindcss/oxide-win32-arm64-msvc" "4.1.14"
-    "@tailwindcss/oxide-win32-x64-msvc" "4.1.14"
-
-"@tailwindcss/vite@^4.1.14":
-  version "4.1.14"
-  resolved "https://registry.npmmirror.com/@tailwindcss/vite/-/vite-4.1.14.tgz#94d0fb87b11030138a45cef8ae9c3a7b080d4007"
-  integrity sha512-BoFUoU0XqgCUS1UXWhmDJroKKhNXeDzD7/XwabjkDIAbMnc4ULn5e2FuEuBbhZ6ENZoSYzKlzvZ44Yr6EUDUSA==
-  dependencies:
-    "@tailwindcss/node" "4.1.14"
-    "@tailwindcss/oxide" "4.1.14"
-    tailwindcss "4.1.14"
-
-"@trysound/sax@0.2.0":
-  version "0.2.0"
-  resolved "https://registry.npmmirror.com/@trysound/sax/-/sax-0.2.0.tgz#cccaab758af56761eb7bf37af6f03f326dd798ad"
-  integrity sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==
-
-"@tybys/wasm-util@^0.10.1":
-  version "0.10.1"
-  resolved "https://registry.npmmirror.com/@tybys/wasm-util/-/wasm-util-0.10.1.tgz#ecddd3205cf1e2d5274649ff0eedd2991ed7f414"
-  integrity sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==
-  dependencies:
-    tslib "^2.4.0"
-
-"@types/estree@1.0.8", "@types/estree@^1.0.0":
-  version "1.0.8"
-  resolved "https://registry.npmmirror.com/@types/estree/-/estree-1.0.8.tgz#958b91c991b1867ced318bedea0e215ee050726e"
-  integrity sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==
-
-"@types/lodash-es@^4.17.6":
-  version "4.17.12"
-  resolved "https://registry.npmmirror.com/@types/lodash-es/-/lodash-es-4.17.12.tgz#65f6d1e5f80539aa7cfbfc962de5def0cf4f341b"
-  integrity sha512-0NgftHUcV4v34VhXm8QBSftKVXtbkBG3ViCjs6+eJ5a6y6Mi/jiFGPc1sC7QK+9BFhWrURE3EOggmWaSxL9OzQ==
-  dependencies:
-    "@types/lodash" "*"
-
-"@types/lodash@*", "@types/lodash@^4.14.182":
-  version "4.17.20"
-  resolved "https://registry.npmmirror.com/@types/lodash/-/lodash-4.17.20.tgz#1ca77361d7363432d29f5e55950d9ec1e1c6ea93"
-  integrity sha512-H3MHACvFUEiujabxhaI/ImO6gUrd8oOurg7LQtS7mbwIXA/cUqWrvBsaeJ23aZEPk1TAYkurjfMbSELfoCXlGA==
-
-"@types/node@*":
-  version "24.8.1"
-  resolved "https://registry.npmmirror.com/@types/node/-/node-24.8.1.tgz#74c8ae00b045a0a351f2837ec00f25dfed0053be"
-  integrity sha512-alv65KGRadQVfVcG69MuB4IzdYVpRwMG/mq8KWOaoOdyY617P5ivaDiMCGOFDWD2sAn5Q0mR3mRtUOgm99hL9Q==
-  dependencies:
-    undici-types "~7.14.0"
-
-"@types/svgo@^2.6.1":
-  version "2.6.4"
-  resolved "https://registry.npmmirror.com/@types/svgo/-/svgo-2.6.4.tgz#b7298fc1dd687539fd63fc818b00146d96e68836"
-  integrity sha512-l4cmyPEckf8moNYHdJ+4wkHvFxjyW6ulm9l4YGaOxeyBWPhBOT0gvni1InpFPdzx1dKf/2s62qGITwxNWnPQng==
-  dependencies:
-    "@types/node" "*"
-
-"@types/web-bluetooth@^0.0.16":
-  version "0.0.16"
-  resolved "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.16.tgz#1d12873a8e49567371f2a75fe3e7f7edca6662d8"
-  integrity sha512-oh8q2Zc32S6gd/j50GowEjKLoOVOwHP/bWVjKJInBwQqdOYMdPrf1oVlelTlyfFK3CKxL1uahMDAr+vy8T7yMQ==
-
-"@types/web-bluetooth@^0.0.21":
-  version "0.0.21"
-  resolved "https://registry.npmmirror.com/@types/web-bluetooth/-/web-bluetooth-0.0.21.tgz#525433c784aed9b457aaa0ee3d92aeb71f346b63"
-  integrity sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==
-
-"@vitejs/plugin-vue@5.2.4":
-  version "5.2.4"
-  resolved "https://registry.npmmirror.com/@vitejs/plugin-vue/-/plugin-vue-5.2.4.tgz#9e8a512eb174bfc2a333ba959bbf9de428d89ad8"
-  integrity sha512-7Yx/SXSOcQq5HiiV3orevHUFn+pmMB4cgbEkDYgnkUWb0WfeQ/wa2yFv6D5ICiCQOVpjA7vYDXrC7AGO8yjDHA==
-
-"@vue/compiler-core@3.5.16":
-  version "3.5.16"
-  resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.16.tgz#2f95f4f17c16c09c57bbf64399075b921506630b"
-  integrity sha512-AOQS2eaQOaaZQoL1u+2rCJIKDruNXVBZSiUD3chnUrsoX5ZTQMaCvXlWNIfxBJuU15r1o7+mpo5223KVtIhAgQ==
-  dependencies:
-    "@babel/parser" "^7.27.2"
-    "@vue/shared" "3.5.16"
-    entities "^4.5.0"
-    estree-walker "^2.0.2"
-    source-map-js "^1.2.1"
-
-"@vue/compiler-core@3.5.22":
-  version "3.5.22"
-  resolved "https://registry.npmmirror.com/@vue/compiler-core/-/compiler-core-3.5.22.tgz#bb8294a0dd31df540563cc6ffa0456f1f7687b97"
-  integrity sha512-jQ0pFPmZwTEiRNSb+i9Ow/I/cHv2tXYqsnHKKyCQ08irI2kdF5qmYedmF8si8mA7zepUFmJ2hqzS8CQmNOWOkQ==
-  dependencies:
-    "@babel/parser" "^7.28.4"
-    "@vue/shared" "3.5.22"
-    entities "^4.5.0"
-    estree-walker "^2.0.2"
-    source-map-js "^1.2.1"
-
-"@vue/compiler-dom@3.5.16":
-  version "3.5.16"
-  resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.16.tgz#151d8390252975c0b1a773029220fdfcfaa2d743"
-  integrity sha512-SSJIhBr/teipXiXjmWOVWLnxjNGo65Oj/8wTEQz0nqwQeP75jWZ0n4sF24Zxoht1cuJoWopwj0J0exYwCJ0dCQ==
-  dependencies:
-    "@vue/compiler-core" "3.5.16"
-    "@vue/shared" "3.5.16"
-
-"@vue/compiler-dom@3.5.22":
-  version "3.5.22"
-  resolved "https://registry.npmmirror.com/@vue/compiler-dom/-/compiler-dom-3.5.22.tgz#6c9c2c9843520f6d3dbc685e5d0e1e12a2c04c56"
-  integrity sha512-W8RknzUM1BLkypvdz10OVsGxnMAuSIZs9Wdx1vzA3mL5fNMN15rhrSCLiTm6blWeACwUwizzPVqGJgOGBEN/hA==
-  dependencies:
-    "@vue/compiler-core" "3.5.22"
-    "@vue/shared" "3.5.22"
-
-"@vue/compiler-sfc@3.5.16":
-  version "3.5.16"
-  resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.16.tgz#577f7fd42a46fac8357ffed46e8fb34d32698419"
-  integrity sha512-rQR6VSFNpiinDy/DVUE0vHoIDUF++6p910cgcZoaAUm3POxgNOOdS/xgoll3rNdKYTYPnnbARDCZOyZ+QSe6Pw==
-  dependencies:
-    "@babel/parser" "^7.27.2"
-    "@vue/compiler-core" "3.5.16"
-    "@vue/compiler-dom" "3.5.16"
-    "@vue/compiler-ssr" "3.5.16"
-    "@vue/shared" "3.5.16"
-    estree-walker "^2.0.2"
-    magic-string "^0.30.17"
-    postcss "^8.5.3"
-    source-map-js "^1.2.1"
-
-"@vue/compiler-sfc@^3.2.37":
-  version "3.5.22"
-  resolved "https://registry.npmmirror.com/@vue/compiler-sfc/-/compiler-sfc-3.5.22.tgz#663a8483b1dda8de83b6fa1aab38a52bf73dd965"
-  integrity sha512-tbTR1zKGce4Lj+JLzFXDq36K4vcSZbJ1RBu8FxcDv1IGRz//Dh2EBqksyGVypz3kXpshIfWKGOCcqpSbyGWRJQ==
-  dependencies:
-    "@babel/parser" "^7.28.4"
-    "@vue/compiler-core" "3.5.22"
-    "@vue/compiler-dom" "3.5.22"
-    "@vue/compiler-ssr" "3.5.22"
-    "@vue/shared" "3.5.22"
-    estree-walker "^2.0.2"
-    magic-string "^0.30.19"
-    postcss "^8.5.6"
-    source-map-js "^1.2.1"
-
-"@vue/compiler-ssr@3.5.16":
-  version "3.5.16"
-  resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.16.tgz#3b7874dff771ab2f85fb09be71f6c76a75fcc5ac"
-  integrity sha512-d2V7kfxbdsjrDSGlJE7my1ZzCXViEcqN6w14DOsDrUCHEA6vbnVCpRFfrc4ryCP/lCKzX2eS1YtnLE/BuC9f/A==
-  dependencies:
-    "@vue/compiler-dom" "3.5.16"
-    "@vue/shared" "3.5.16"
-
-"@vue/compiler-ssr@3.5.22":
-  version "3.5.22"
-  resolved "https://registry.npmmirror.com/@vue/compiler-ssr/-/compiler-ssr-3.5.22.tgz#a0ef16e364731b25e79a13470569066af101320f"
-  integrity sha512-GdgyLvg4R+7T8Nk2Mlighx7XGxq/fJf9jaVofc3IL0EPesTE86cP/8DD1lT3h1JeZr2ySBvyqKQJgbS54IX1Ww==
-  dependencies:
-    "@vue/compiler-dom" "3.5.22"
-    "@vue/shared" "3.5.22"
-
-"@vue/devtools-api@^6.6.4":
-  version "6.6.4"
-  resolved "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-6.6.4.tgz#cbe97fe0162b365edc1dba80e173f90492535343"
-  integrity sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==
-
-"@vue/devtools-api@^7.7.2":
-  version "7.7.7"
-  resolved "https://registry.npmmirror.com/@vue/devtools-api/-/devtools-api-7.7.7.tgz#5ef5f55f60396220725a273548c0d7ee983d5d34"
-  integrity sha512-lwOnNBH2e7x1fIIbVT7yF5D+YWhqELm55/4ZKf45R9T8r9dE2AIOy8HKjfqzGsoTHFbWbr337O4E0A0QADnjBg==
-  dependencies:
-    "@vue/devtools-kit" "^7.7.7"
-
-"@vue/devtools-kit@^7.7.7":
-  version "7.7.7"
-  resolved "https://registry.npmmirror.com/@vue/devtools-kit/-/devtools-kit-7.7.7.tgz#41a64f9526e9363331c72405544df020ce2e3641"
-  integrity sha512-wgoZtxcTta65cnZ1Q6MbAfePVFxfM+gq0saaeytoph7nEa7yMXoi6sCPy4ufO111B9msnw0VOWjPEFCXuAKRHA==
-  dependencies:
-    "@vue/devtools-shared" "^7.7.7"
-    birpc "^2.3.0"
-    hookable "^5.5.3"
-    mitt "^3.0.1"
-    perfect-debounce "^1.0.0"
-    speakingurl "^14.0.1"
-    superjson "^2.2.2"
-
-"@vue/devtools-shared@^7.7.7":
-  version "7.7.7"
-  resolved "https://registry.npmmirror.com/@vue/devtools-shared/-/devtools-shared-7.7.7.tgz#ff14aa8c1262ebac8c0397d3b09f767cd489750c"
-  integrity sha512-+udSj47aRl5aKb0memBvcUG9koarqnxNM5yjuREvqwK6T3ap4mn3Zqqc17QrBFTqSMjr3HK1cvStEZpMDpfdyw==
-  dependencies:
-    rfdc "^1.4.1"
-
-"@vue/reactivity@3.5.16":
-  version "3.5.16"
-  resolved "https://registry.npmmirror.com/@vue/reactivity/-/reactivity-3.5.16.tgz#528c535a088b3c1b67f285f1f2211be79425b962"
-  integrity sha512-FG5Q5ee/kxhIm1p2bykPpPwqiUBV3kFySsHEQha5BJvjXdZTUfmya7wP7zC39dFuZAcf/PD5S4Lni55vGLMhvA==
-  dependencies:
-    "@vue/shared" "3.5.16"
-
-"@vue/runtime-core@3.5.16":
-  version "3.5.16"
-  resolved "https://registry.npmmirror.com/@vue/runtime-core/-/runtime-core-3.5.16.tgz#0a828c322224ada26f81a2e227c3d4aebcb72c7a"
-  integrity sha512-bw5Ykq6+JFHYxrQa7Tjr+VSzw7Dj4ldR/udyBZbq73fCdJmyy5MPIFR9IX/M5Qs+TtTjuyUTCnmK3lWWwpAcFQ==
-  dependencies:
-    "@vue/reactivity" "3.5.16"
-    "@vue/shared" "3.5.16"
-
-"@vue/runtime-dom@3.5.16":
-  version "3.5.16"
-  resolved "https://registry.npmmirror.com/@vue/runtime-dom/-/runtime-dom-3.5.16.tgz#c1bcbcca862b77186f81c92edd5176e74670f078"
-  integrity sha512-T1qqYJsG2xMGhImRUV9y/RseB9d0eCYZQ4CWca9ztCuiPj/XWNNN+lkNBuzVbia5z4/cgxdL28NoQCvC0Xcfww==
-  dependencies:
-    "@vue/reactivity" "3.5.16"
-    "@vue/runtime-core" "3.5.16"
-    "@vue/shared" "3.5.16"
-    csstype "^3.1.3"
-
-"@vue/server-renderer@3.5.16":
-  version "3.5.16"
-  resolved "https://registry.npmmirror.com/@vue/server-renderer/-/server-renderer-3.5.16.tgz#5a68cd1d423d843f74c9e6b37133850abab07c13"
-  integrity sha512-BrX0qLiv/WugguGsnQUJiYOE0Fe5mZTwi6b7X/ybGB0vfrPH9z0gD/Y6WOR1sGCgX4gc25L1RYS5eYQKDMoNIg==
-  dependencies:
-    "@vue/compiler-ssr" "3.5.16"
-    "@vue/shared" "3.5.16"
-
-"@vue/shared@3.5.16":
-  version "3.5.16"
-  resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.16.tgz#d5ea7671182742192938a4b4cbf86ef12bef7418"
-  integrity sha512-c/0fWy3Jw6Z8L9FmTyYfkpM5zklnqqa9+a6dz3DvONRKW2NEbh46BP0FHuLFSWi2TnQEtp91Z6zOWNrU6QiyPg==
-
-"@vue/shared@3.5.22":
-  version "3.5.22"
-  resolved "https://registry.npmmirror.com/@vue/shared/-/shared-3.5.22.tgz#9d56a1644a3becb8af1e34655928b0e288d827f8"
-  integrity sha512-F4yc6palwq3TT0u+FYf0Ns4Tfl9GRFURDN2gWG7L1ecIaS/4fCIuFOjMTnCyjsu/OK6vaDKLCrGAa+KvvH+h4w==
-
-"@vueup/vue-quill@1.2.0":
-  version "1.2.0"
-  resolved "https://registry.npmmirror.com/@vueup/vue-quill/-/vue-quill-1.2.0.tgz#cd0d93559256d069f639723dd91c044e8162c72a"
-  integrity sha512-kd5QPSHMDpycklojPXno2Kw2JSiKMYduKYQckTm1RJoVDA557MnyUXgcuuDpry4HY/Rny9nGNcK+m3AHk94wag==
-  dependencies:
-    quill "^1.3.7"
-    quill-delta "^4.2.2"
-
-"@vueuse/core@^13.3.0":
-  version "13.9.0"
-  resolved "https://registry.npmmirror.com/@vueuse/core/-/core-13.9.0.tgz#051aeff47a259e9e4d7d0cc3e54879817b0cbcad"
-  integrity sha512-ts3regBQyURfCE2BcytLqzm8+MmLlo5Ln/KLoxDVcsZ2gzIwVNnQpQOL/UKV8alUqjSZOlpFZcRNsLRqj+OzyA==
-  dependencies:
-    "@types/web-bluetooth" "^0.0.21"
-    "@vueuse/metadata" "13.9.0"
-    "@vueuse/shared" "13.9.0"
-
-"@vueuse/core@^9.1.0":
-  version "9.13.0"
-  resolved "https://registry.npmmirror.com/@vueuse/core/-/core-9.13.0.tgz#2f69e66d1905c1e4eebc249a01759cf88ea00cf4"
-  integrity sha512-pujnclbeHWxxPRqXWmdkKV5OX4Wk4YeK7wusHqRwU0Q7EFusHoqNA/aPhB6KCh9hEqJkLAJo7bb0Lh9b+OIVzw==
-  dependencies:
-    "@types/web-bluetooth" "^0.0.16"
-    "@vueuse/metadata" "9.13.0"
-    "@vueuse/shared" "9.13.0"
-    vue-demi "*"
-
-"@vueuse/metadata@13.9.0":
-  version "13.9.0"
-  resolved "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-13.9.0.tgz#57c738d99661c33347080c0bc4cd11160e0d0881"
-  integrity sha512-1AFRvuiGphfF7yWixZa0KwjYH8ulyjDCC0aFgrGRz8+P4kvDFSdXLVfTk5xAN9wEuD1J6z4/myMoYbnHoX07zg==
-
-"@vueuse/metadata@9.13.0":
-  version "9.13.0"
-  resolved "https://registry.npmmirror.com/@vueuse/metadata/-/metadata-9.13.0.tgz#bc25a6cdad1b1a93c36ce30191124da6520539ff"
-  integrity sha512-gdU7TKNAUVlXXLbaF+ZCfte8BjRJQWPCa2J55+7/h+yDtzw3vOoGQDRXzI6pyKyo6bXFT5/QoPE4hAknExjRLQ==
-
-"@vueuse/shared@13.9.0":
-  version "13.9.0"
-  resolved "https://registry.npmmirror.com/@vueuse/shared/-/shared-13.9.0.tgz#7168b4ed647e625b05eb4e7e80fe8aabd00e3923"
-  integrity sha512-e89uuTLMh0U5cZ9iDpEI2senqPGfbPRTHM/0AaQkcxnpqjkZqDYP8rpfm7edOz8s+pOCOROEy1PIveSW8+fL5g==
-
-"@vueuse/shared@9.13.0":
-  version "9.13.0"
-  resolved "https://registry.npmmirror.com/@vueuse/shared/-/shared-9.13.0.tgz#089ff4cc4e2e7a4015e57a8f32e4b39d096353b9"
-  integrity sha512-UrnhU+Cnufu4S6JLCPZnkWh0WwZGUp72ktOF2DFptMlOs3TOdVv8xJN53zhHGARmVOsz5KqOls09+J1NR6sBKw==
-  dependencies:
-    vue-demi "*"
-
-abbrev@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npmmirror.com/abbrev/-/abbrev-2.0.0.tgz#cf59829b8b4f03f89dda2771cb7f3653828c89bf"
-  integrity sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==
-
-acorn@^8.14.0, acorn@^8.15.0:
-  version "8.15.0"
-  resolved "https://registry.npmmirror.com/acorn/-/acorn-8.15.0.tgz#a360898bc415edaac46c8241f6383975b930b816"
-  integrity sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==
-
-ansi-regex@^2.0.0:
-  version "2.1.1"
-  resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
-  integrity sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==
-
-ansi-regex@^5.0.1:
-  version "5.0.1"
-  resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-5.0.1.tgz#082cb2c89c9fe8659a311a53bd6a4dc5301db304"
-  integrity sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==
-
-ansi-regex@^6.0.1:
-  version "6.2.2"
-  resolved "https://registry.npmmirror.com/ansi-regex/-/ansi-regex-6.2.2.tgz#60216eea464d864597ce2832000738a0589650c1"
-  integrity sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==
-
-ansi-styles@^2.2.1:
-  version "2.2.1"
-  resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-2.2.1.tgz#b432dd3358b634cf75e1e4664368240533c1ddbe"
-  integrity sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==
-
-ansi-styles@^4.0.0, ansi-styles@^4.1.0:
-  version "4.3.0"
-  resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz#edd803628ae71c04c85ae7a0906edad34b648937"
-  integrity sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==
-  dependencies:
-    color-convert "^2.0.1"
-
-ansi-styles@^6.1.0:
-  version "6.2.3"
-  resolved "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-6.2.3.tgz#c044d5dcc521a076413472597a1acb1f103c4041"
-  integrity sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==
-
-arr-diff@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.npmmirror.com/arr-diff/-/arr-diff-4.0.0.tgz#d6461074febfec71e7e15235761a329a5dc7c520"
-  integrity sha512-YVIQ82gZPGBebQV/a8dar4AitzCQs0jjXwMPZllpXMaGjXPYVUawSxQrRsjhjupyVxEvbHgUmIhKVlND+j02kA==
-
-arr-flatten@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.npmmirror.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
-  integrity sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==
-
-arr-union@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.npmmirror.com/arr-union/-/arr-union-3.1.0.tgz#e39b09aea9def866a8f206e288af63919bae39c4"
-  integrity sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==
-
-array-buffer-byte-length@^1.0.1, array-buffer-byte-length@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npmmirror.com/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz#384d12a37295aec3769ab022ad323a18a51ccf8b"
-  integrity sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==
-  dependencies:
-    call-bound "^1.0.3"
-    is-array-buffer "^3.0.5"
-
-array-unique@^0.3.2:
-  version "0.3.2"
-  resolved "https://registry.npmmirror.com/array-unique/-/array-unique-0.3.2.tgz#a894b75d4bc4f6cd679ef3244a9fd8f46ae2d428"
-  integrity sha512-SleRWjh9JUud2wH1hPs9rZBZ33H6T9HOiL0uwGnGx9FpE6wKGyfWugmbkEOIs6qWrZhg0LWeLziLrEwQJhs5mQ==
-
-arraybuffer.prototype.slice@^1.0.4:
-  version "1.0.4"
-  resolved "https://registry.npmmirror.com/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz#9d760d84dbdd06d0cbf92c8849615a1a7ab3183c"
-  integrity sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==
-  dependencies:
-    array-buffer-byte-length "^1.0.1"
-    call-bind "^1.0.8"
-    define-properties "^1.2.1"
-    es-abstract "^1.23.5"
-    es-errors "^1.3.0"
-    get-intrinsic "^1.2.6"
-    is-array-buffer "^3.0.4"
-
-assign-symbols@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npmmirror.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367"
-  integrity sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==
-
-async-function@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npmmirror.com/async-function/-/async-function-1.0.0.tgz#509c9fca60eaf85034c6829838188e4e4c8ffb2b"
-  integrity sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==
-
-async-validator@^4.2.5:
-  version "4.2.5"
-  resolved "https://registry.npmmirror.com/async-validator/-/async-validator-4.2.5.tgz#c96ea3332a521699d0afaaceed510a54656c6339"
-  integrity sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==
-
-asynckit@^0.4.0:
-  version "0.4.0"
-  resolved "https://registry.npmmirror.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
-  integrity sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==
-
-atob@^2.1.2:
-  version "2.1.2"
-  resolved "https://registry.npmmirror.com/atob/-/atob-2.1.2.tgz#6d9517eb9e030d2436666651e86bd9f6f13533c9"
-  integrity sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==
-
-available-typed-arrays@^1.0.7:
-  version "1.0.7"
-  resolved "https://registry.npmmirror.com/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz#a5cc375d6a03c2efc87a553f3e0b1522def14846"
-  integrity sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==
-  dependencies:
-    possible-typed-array-names "^1.0.0"
-
-axios@1.9.0:
-  version "1.9.0"
-  resolved "https://registry.npmmirror.com/axios/-/axios-1.9.0.tgz#25534e3b72b54540077d33046f77e3b8d7081901"
-  integrity sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==
-  dependencies:
-    follow-redirects "^1.15.6"
-    form-data "^4.0.0"
-    proxy-from-env "^1.1.0"
-
-balanced-match@^1.0.0:
-  version "1.0.2"
-  resolved "https://registry.npmmirror.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee"
-  integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==
-
-base@^0.11.1:
-  version "0.11.2"
-  resolved "https://registry.npmmirror.com/base/-/base-0.11.2.tgz#7bde5ced145b6d551a90db87f83c558b4eb48a8f"
-  integrity sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==
-  dependencies:
-    cache-base "^1.0.1"
-    class-utils "^0.3.5"
-    component-emitter "^1.2.1"
-    define-property "^1.0.0"
-    isobject "^3.0.1"
-    mixin-deep "^1.2.0"
-    pascalcase "^0.1.1"
-
-big.js@^5.2.2:
-  version "5.2.2"
-  resolved "https://registry.npmmirror.com/big.js/-/big.js-5.2.2.tgz#65f0af382f578bcdc742bd9c281e9cb2d7768328"
-  integrity sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==
-
-birpc@^2.3.0:
-  version "2.6.1"
-  resolved "https://registry.npmmirror.com/birpc/-/birpc-2.6.1.tgz#c73463590928897e80f3263d9fbb7da63515014b"
-  integrity sha512-LPnFhlDpdSH6FJhJyn4M0kFO7vtQ5iPw24FnG0y21q09xC7e8+1LeR31S1MAIrDAHp4m7aas4bEkTDTvMAtebQ==
-
-bluebird@^3.5.0:
-  version "3.7.2"
-  resolved "https://registry.npmmirror.com/bluebird/-/bluebird-3.7.2.tgz#9f229c15be272454ffa973ace0dbee79a1b0c36f"
-  integrity sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==
-
-boolbase@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npmmirror.com/boolbase/-/boolbase-1.0.0.tgz#68dff5fbe60c51eb37725ea9e3ed310dcc1e776e"
-  integrity sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==
-
-brace-expansion@^2.0.1:
-  version "2.0.2"
-  resolved "https://registry.npmmirror.com/brace-expansion/-/brace-expansion-2.0.2.tgz#54fc53237a613d854c7bd37463aad17df87214e7"
-  integrity sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==
-  dependencies:
-    balanced-match "^1.0.0"
-
-braces@^2.2.2:
-  version "2.3.2"
-  resolved "https://registry.npmmirror.com/braces/-/braces-2.3.2.tgz#5979fd3f14cd531565e5fa2df1abfff1dfaee729"
-  integrity sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==
-  dependencies:
-    arr-flatten "^1.1.0"
-    array-unique "^0.3.2"
-    extend-shallow "^2.0.1"
-    fill-range "^4.0.0"
-    isobject "^3.0.1"
-    repeat-element "^1.1.2"
-    snapdragon "^0.8.1"
-    snapdragon-node "^2.0.1"
-    split-string "^3.0.2"
-    to-regex "^3.0.1"
-
-braces@^3.0.3:
-  version "3.0.3"
-  resolved "https://registry.npmmirror.com/braces/-/braces-3.0.3.tgz#490332f40919452272d55a8480adc0c441358789"
-  integrity sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==
-  dependencies:
-    fill-range "^7.1.1"
-
-buffer-builder@^0.2.0:
-  version "0.2.0"
-  resolved "https://registry.npmmirror.com/buffer-builder/-/buffer-builder-0.2.0.tgz#3322cd307d8296dab1f604618593b261a3fade8f"
-  integrity sha512-7VPMEPuYznPSoR21NE1zvd2Xna6c/CloiZCfcMXR1Jny6PjX0N4Nsa38zcBFo/FMK+BlA+FLKbJCQ0i2yxp+Xg==
-
-cache-base@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npmmirror.com/cache-base/-/cache-base-1.0.1.tgz#0a7f46416831c8b662ee36fe4e7c59d76f666ab2"
-  integrity sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==
-  dependencies:
-    collection-visit "^1.0.0"
-    component-emitter "^1.2.1"
-    get-value "^2.0.6"
-    has-value "^1.0.0"
-    isobject "^3.0.1"
-    set-value "^2.0.0"
-    to-object-path "^0.3.0"
-    union-value "^1.0.0"
-    unset-value "^1.0.0"
-
-call-bind-apply-helpers@^1.0.0, call-bind-apply-helpers@^1.0.1, call-bind-apply-helpers@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npmmirror.com/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz#4b5428c222be985d79c3d82657479dbe0b59b2d6"
-  integrity sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==
-  dependencies:
-    es-errors "^1.3.0"
-    function-bind "^1.1.2"
-
-call-bind@^1.0.7, call-bind@^1.0.8:
-  version "1.0.8"
-  resolved "https://registry.npmmirror.com/call-bind/-/call-bind-1.0.8.tgz#0736a9660f537e3388826f440d5ec45f744eaa4c"
-  integrity sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==
-  dependencies:
-    call-bind-apply-helpers "^1.0.0"
-    es-define-property "^1.0.0"
-    get-intrinsic "^1.2.4"
-    set-function-length "^1.2.2"
-
-call-bound@^1.0.2, call-bound@^1.0.3, call-bound@^1.0.4:
-  version "1.0.4"
-  resolved "https://registry.npmmirror.com/call-bound/-/call-bound-1.0.4.tgz#238de935d2a2a692928c538c7ccfa91067fd062a"
-  integrity sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==
-  dependencies:
-    call-bind-apply-helpers "^1.0.2"
-    get-intrinsic "^1.3.0"
-
-chalk@^1.1.3:
-  version "1.1.3"
-  resolved "https://registry.npmmirror.com/chalk/-/chalk-1.1.3.tgz#a8115c55e4a702fe4d150abd3872822a7e09fc98"
-  integrity sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==
-  dependencies:
-    ansi-styles "^2.2.1"
-    escape-string-regexp "^1.0.2"
-    has-ansi "^2.0.0"
-    strip-ansi "^3.0.0"
-    supports-color "^2.0.0"
-
-chalk@^4.1.2:
-  version "4.1.2"
-  resolved "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01"
-  integrity sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==
-  dependencies:
-    ansi-styles "^4.1.0"
-    supports-color "^7.1.0"
-
-chownr@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npmmirror.com/chownr/-/chownr-3.0.0.tgz#9855e64ecd240a9cc4267ce8a4aa5d24a1da15e4"
-  integrity sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==
-
-class-utils@^0.3.5:
-  version "0.3.6"
-  resolved "https://registry.npmmirror.com/class-utils/-/class-utils-0.3.6.tgz#f93369ae8b9a7ce02fd41faad0ca83033190c463"
-  integrity sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==
-  dependencies:
-    arr-union "^3.1.0"
-    define-property "^0.2.5"
-    isobject "^3.0.0"
-    static-extend "^0.1.1"
-
-clipboard@2.0.11:
-  version "2.0.11"
-  resolved "https://registry.npmmirror.com/clipboard/-/clipboard-2.0.11.tgz#62180360b97dd668b6b3a84ec226975762a70be5"
-  integrity sha512-C+0bbOqkezLIsmWSvlsXS0Q0bmkugu7jcfMIACB+RDEntIzQIkdr148we28AfSloQLRdZlYL/QYyrq05j/3Faw==
-  dependencies:
-    good-listener "^1.2.2"
-    select "^1.1.2"
-    tiny-emitter "^2.0.0"
-
-clone@^2.1.1:
-  version "2.1.2"
-  resolved "https://registry.npmmirror.com/clone/-/clone-2.1.2.tgz#1b7f4b9f591f1e8f83670401600345a02887435f"
-  integrity sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==
-
-collection-visit@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npmmirror.com/collection-visit/-/collection-visit-1.0.0.tgz#4bc0373c164bc3291b4d368c829cf1a80a59dca0"
-  integrity sha512-lNkKvzEeMBBjUGHZ+q6z9pSJla0KWAQPvtzhEV9+iGyQYG+pBpl7xKDhxoNSOZH2hhv0v5k0y2yAM4o4SjoSkw==
-  dependencies:
-    map-visit "^1.0.0"
-    object-visit "^1.0.0"
-
-color-convert@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz#72d3a68d598c9bdb3af2ad1e84f21d896abd4de3"
-  integrity sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==
-  dependencies:
-    color-name "~1.1.4"
-
-color-name@~1.1.4:
-  version "1.1.4"
-  resolved "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz#c2a09a87acbde69543de6f63fa3995c826c536a2"
-  integrity sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==
-
-colorjs.io@^0.5.0:
-  version "0.5.2"
-  resolved "https://registry.npmmirror.com/colorjs.io/-/colorjs.io-0.5.2.tgz#63b20139b007591ebc3359932bef84628eb3fcef"
-  integrity sha512-twmVoizEW7ylZSN32OgKdXRmo1qg+wT5/6C3xu5b9QsWzSFAhHLn2xd8ro0diCsKfCj1RdaTP/nrcW+vAoQPIw==
-
-combined-stream@^1.0.8:
-  version "1.0.8"
-  resolved "https://registry.npmmirror.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f"
-  integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==
-  dependencies:
-    delayed-stream "~1.0.0"
-
-commander@^10.0.0:
-  version "10.0.1"
-  resolved "https://registry.npmmirror.com/commander/-/commander-10.0.1.tgz#881ee46b4f77d1c1dccc5823433aa39b022cbe06"
-  integrity sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==
-
-commander@^7.2.0:
-  version "7.2.0"
-  resolved "https://registry.npmmirror.com/commander/-/commander-7.2.0.tgz#a36cb57d0b501ce108e4d20559a150a391d97ab7"
-  integrity sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==
-
-component-emitter@^1.2.1:
-  version "1.3.1"
-  resolved "https://registry.npmmirror.com/component-emitter/-/component-emitter-1.3.1.tgz#ef1d5796f7d93f135ee6fb684340b26403c97d17"
-  integrity sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==
-
-confbox@^0.1.8:
-  version "0.1.8"
-  resolved "https://registry.npmmirror.com/confbox/-/confbox-0.1.8.tgz#820d73d3b3c82d9bd910652c5d4d599ef8ff8b06"
-  integrity sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==
-
-confbox@^0.2.2:
-  version "0.2.2"
-  resolved "https://registry.npmmirror.com/confbox/-/confbox-0.2.2.tgz#8652f53961c74d9e081784beed78555974a9c110"
-  integrity sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==
-
-config-chain@^1.1.13:
-  version "1.1.13"
-  resolved "https://registry.npmmirror.com/config-chain/-/config-chain-1.1.13.tgz#fad0795aa6a6cdaff9ed1b68e9dff94372c232f4"
-  integrity sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==
-  dependencies:
-    ini "^1.3.4"
-    proto-list "~1.2.1"
-
-copy-anything@^3.0.2:
-  version "3.0.5"
-  resolved "https://registry.npmmirror.com/copy-anything/-/copy-anything-3.0.5.tgz#2d92dce8c498f790fa7ad16b01a1ae5a45b020a0"
-  integrity sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w==
-  dependencies:
-    is-what "^4.1.8"
-
-copy-descriptor@^0.1.0:
-  version "0.1.1"
-  resolved "https://registry.npmmirror.com/copy-descriptor/-/copy-descriptor-0.1.1.tgz#676f6eb3c39997c2ee1ac3a924fd6124748f578d"
-  integrity sha512-XgZ0pFcakEUlbwQEVNg3+QAis1FyTL3Qel9FYy8pSkQqoG3PNoT0bOCQtOXcOkur21r2Eq2kI+IE+gsmAEVlYw==
-
-cors@^2.8.5:
-  version "2.8.5"
-  resolved "https://registry.npmmirror.com/cors/-/cors-2.8.5.tgz#eac11da51592dd86b9f06f6e7ac293b3df875d29"
-  integrity sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==
-  dependencies:
-    object-assign "^4"
-    vary "^1"
-
-cross-spawn@^7.0.6:
-  version "7.0.6"
-  resolved "https://registry.npmmirror.com/cross-spawn/-/cross-spawn-7.0.6.tgz#8a58fe78f00dcd70c370451759dfbfaf03e8ee9f"
-  integrity sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==
-  dependencies:
-    path-key "^3.1.0"
-    shebang-command "^2.0.0"
-    which "^2.0.1"
-
-css-select@^4.1.3:
-  version "4.3.0"
-  resolved "https://registry.npmmirror.com/css-select/-/css-select-4.3.0.tgz#db7129b2846662fd8628cfc496abb2b59e41529b"
-  integrity sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==
-  dependencies:
-    boolbase "^1.0.0"
-    css-what "^6.0.1"
-    domhandler "^4.3.1"
-    domutils "^2.8.0"
-    nth-check "^2.0.1"
-
-css-tree@^1.1.2, css-tree@^1.1.3:
-  version "1.1.3"
-  resolved "https://registry.npmmirror.com/css-tree/-/css-tree-1.1.3.tgz#eb4870fb6fd7707327ec95c2ff2ab09b5e8db91d"
-  integrity sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==
-  dependencies:
-    mdn-data "2.0.14"
-    source-map "^0.6.1"
-
-css-what@^6.0.1:
-  version "6.2.2"
-  resolved "https://registry.npmmirror.com/css-what/-/css-what-6.2.2.tgz#cdcc8f9b6977719fdfbd1de7aec24abf756b9dea"
-  integrity sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==
-
-csso@^4.2.0:
-  version "4.2.0"
-  resolved "https://registry.npmmirror.com/csso/-/csso-4.2.0.tgz#ea3a561346e8dc9f546d6febedd50187cf389529"
-  integrity sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==
-  dependencies:
-    css-tree "^1.1.2"
-
-csstype@^3.1.3:
-  version "3.1.3"
-  resolved "https://registry.npmmirror.com/csstype/-/csstype-3.1.3.tgz#d80ff294d114fb0e6ac500fbf85b60137d7eff81"
-  integrity sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==
-
-data-view-buffer@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npmmirror.com/data-view-buffer/-/data-view-buffer-1.0.2.tgz#211a03ba95ecaf7798a8c7198d79536211f88570"
-  integrity sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==
-  dependencies:
-    call-bound "^1.0.3"
-    es-errors "^1.3.0"
-    is-data-view "^1.0.2"
-
-data-view-byte-length@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npmmirror.com/data-view-byte-length/-/data-view-byte-length-1.0.2.tgz#9e80f7ca52453ce3e93d25a35318767ea7704735"
-  integrity sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==
-  dependencies:
-    call-bound "^1.0.3"
-    es-errors "^1.3.0"
-    is-data-view "^1.0.2"
-
-data-view-byte-offset@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npmmirror.com/data-view-byte-offset/-/data-view-byte-offset-1.0.1.tgz#068307f9b71ab76dbbe10291389e020856606191"
-  integrity sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==
-  dependencies:
-    call-bound "^1.0.2"
-    es-errors "^1.3.0"
-    is-data-view "^1.0.1"
-
-dayjs@^1.11.13:
-  version "1.11.18"
-  resolved "https://registry.npmmirror.com/dayjs/-/dayjs-1.11.18.tgz#835fa712aac52ab9dec8b1494098774ed7070a11"
-  integrity sha512-zFBQ7WFRvVRhKcWoUh+ZA1g2HVgUbsZm9sbddh8EC5iv93sui8DVVz1Npvz+r6meo9VKfa8NyLWBsQK1VvIKPA==
-
-debug@^2.2.0, debug@^2.3.3:
-  version "2.6.9"
-  resolved "https://registry.npmmirror.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
-  integrity sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==
-  dependencies:
-    ms "2.0.0"
-
-debug@^4.3.3:
-  version "4.4.3"
-  resolved "https://registry.npmmirror.com/debug/-/debug-4.4.3.tgz#c6ae432d9bd9662582fce08709b038c58e9e3d6a"
-  integrity sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==
-  dependencies:
-    ms "^2.1.3"
-
-decode-uri-component@^0.2.0:
-  version "0.2.2"
-  resolved "https://registry.npmmirror.com/decode-uri-component/-/decode-uri-component-0.2.2.tgz#e69dbe25d37941171dd540e024c444cd5188e1e9"
-  integrity sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==
-
-deep-equal@^1.0.1:
-  version "1.1.2"
-  resolved "https://registry.npmmirror.com/deep-equal/-/deep-equal-1.1.2.tgz#78a561b7830eef3134c7f6f3a3d6af272a678761"
-  integrity sha512-5tdhKF6DbU7iIzrIOa1AOUt39ZRm13cmL1cGEh//aqR8x9+tNfbywRf0n5FD/18OKMdo7DNEtrX2t22ZAkI+eg==
-  dependencies:
-    is-arguments "^1.1.1"
-    is-date-object "^1.0.5"
-    is-regex "^1.1.4"
-    object-is "^1.1.5"
-    object-keys "^1.1.1"
-    regexp.prototype.flags "^1.5.1"
-
-define-data-property@^1.0.1, define-data-property@^1.1.4:
-  version "1.1.4"
-  resolved "https://registry.npmmirror.com/define-data-property/-/define-data-property-1.1.4.tgz#894dc141bb7d3060ae4366f6a0107e68fbe48c5e"
-  integrity sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==
-  dependencies:
-    es-define-property "^1.0.0"
-    es-errors "^1.3.0"
-    gopd "^1.0.1"
-
-define-properties@^1.2.1:
-  version "1.2.1"
-  resolved "https://registry.npmmirror.com/define-properties/-/define-properties-1.2.1.tgz#10781cc616eb951a80a034bafcaa7377f6af2b6c"
-  integrity sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==
-  dependencies:
-    define-data-property "^1.0.1"
-    has-property-descriptors "^1.0.0"
-    object-keys "^1.1.1"
-
-define-property@^0.2.5:
-  version "0.2.5"
-  resolved "https://registry.npmmirror.com/define-property/-/define-property-0.2.5.tgz#c35b1ef918ec3c990f9a5bc57be04aacec5c8116"
-  integrity sha512-Rr7ADjQZenceVOAKop6ALkkRAmH1A4Gx9hV/7ZujPUN2rkATqFO0JZLZInbAjpZYoJ1gUx8MRMQVkYemcbMSTA==
-  dependencies:
-    is-descriptor "^0.1.0"
-
-define-property@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npmmirror.com/define-property/-/define-property-1.0.0.tgz#769ebaaf3f4a63aad3af9e8d304c9bbe79bfb0e6"
-  integrity sha512-cZTYKFWspt9jZsMscWo8sc/5lbPC9Q0N5nBLgb+Yd915iL3udB1uFgS3B8YCx66UVHq018DAVFoee7x+gxggeA==
-  dependencies:
-    is-descriptor "^1.0.0"
-
-define-property@^2.0.2:
-  version "2.0.2"
-  resolved "https://registry.npmmirror.com/define-property/-/define-property-2.0.2.tgz#d459689e8d654ba77e02a817f8710d702cb16e9d"
-  integrity sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==
-  dependencies:
-    is-descriptor "^1.0.2"
-    isobject "^3.0.1"
-
-delayed-stream@~1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npmmirror.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
-  integrity sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==
-
-delegate@^3.1.2:
-  version "3.2.0"
-  resolved "https://registry.npmmirror.com/delegate/-/delegate-3.2.0.tgz#b66b71c3158522e8ab5744f720d8ca0c2af59166"
-  integrity sha512-IofjkYBZaZivn0V8nnsMJGBr4jVLxHDheKSW88PyxS5QC4Vo9ZbZVvhzlSxY87fVq3STR6r+4cGepyHkcWOQSw==
-
-detect-libc@^2.0.3, detect-libc@^2.0.4:
-  version "2.1.2"
-  resolved "https://registry.npmmirror.com/detect-libc/-/detect-libc-2.1.2.tgz#689c5dcdc1900ef5583a4cb9f6d7b473742074ad"
-  integrity sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==
-
-dom-serializer@0:
-  version "0.2.2"
-  resolved "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-0.2.2.tgz#1afb81f533717175d478655debc5e332d9f9bb51"
-  integrity sha512-2/xPb3ORsQ42nHYiSunXkDjPLBaEj/xTwUO4B7XCZQTRk7EBtTOPaygh10YAAh2OI1Qrp6NWfpAhzswj0ydt9g==
-  dependencies:
-    domelementtype "^2.0.1"
-    entities "^2.0.0"
-
-dom-serializer@^1.0.1:
-  version "1.4.1"
-  resolved "https://registry.npmmirror.com/dom-serializer/-/dom-serializer-1.4.1.tgz#de5d41b1aea290215dc45a6dae8adcf1d32e2d30"
-  integrity sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==
-  dependencies:
-    domelementtype "^2.0.1"
-    domhandler "^4.2.0"
-    entities "^2.0.0"
-
-domelementtype@1, domelementtype@^1.3.1:
-  version "1.3.1"
-  resolved "https://registry.npmmirror.com/domelementtype/-/domelementtype-1.3.1.tgz#d048c44b37b0d10a7f2a3d5fee3f4333d790481f"
-  integrity sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==
-
-domelementtype@^2.0.1, domelementtype@^2.2.0:
-  version "2.3.0"
-  resolved "https://registry.npmmirror.com/domelementtype/-/domelementtype-2.3.0.tgz#5c45e8e869952626331d7aab326d01daf65d589d"
-  integrity sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==
-
-domhandler@^2.3.0:
-  version "2.4.2"
-  resolved "https://registry.npmmirror.com/domhandler/-/domhandler-2.4.2.tgz#8805097e933d65e85546f726d60f5eb88b44f803"
-  integrity sha512-JiK04h0Ht5u/80fdLMCEmV4zkNh2BcoMFBmZ/91WtYZ8qVXSKjiw7fXMgFPnHcSZgOo3XdinHvmnDUeMf5R4wA==
-  dependencies:
-    domelementtype "1"
-
-domhandler@^4.2.0, domhandler@^4.3.1:
-  version "4.3.1"
-  resolved "https://registry.npmmirror.com/domhandler/-/domhandler-4.3.1.tgz#8d792033416f59d68bc03a5aa7b018c1ca89279c"
-  integrity sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==
-  dependencies:
-    domelementtype "^2.2.0"
-
-domutils@^1.5.1:
-  version "1.7.0"
-  resolved "https://registry.npmmirror.com/domutils/-/domutils-1.7.0.tgz#56ea341e834e06e6748af7a1cb25da67ea9f8c2a"
-  integrity sha512-Lgd2XcJ/NjEw+7tFvfKxOzCYKZsdct5lczQ2ZaQY8Djz7pfAD3Gbp8ySJWtreII/vDlMVmxwa6pHmdxIYgttDg==
-  dependencies:
-    dom-serializer "0"
-    domelementtype "1"
-
-domutils@^2.8.0:
-  version "2.8.0"
-  resolved "https://registry.npmmirror.com/domutils/-/domutils-2.8.0.tgz#4437def5db6e2d1f5d6ee859bd95ca7d02048135"
-  integrity sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==
-  dependencies:
-    dom-serializer "^1.0.1"
-    domelementtype "^2.2.0"
-    domhandler "^4.2.0"
-
-dunder-proto@^1.0.0, dunder-proto@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npmmirror.com/dunder-proto/-/dunder-proto-1.0.1.tgz#d7ae667e1dc83482f8b70fd0f6eefc50da30f58a"
-  integrity sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==
-  dependencies:
-    call-bind-apply-helpers "^1.0.1"
-    es-errors "^1.3.0"
-    gopd "^1.2.0"
-
-eastasianwidth@^0.2.0:
-  version "0.2.0"
-  resolved "https://registry.npmmirror.com/eastasianwidth/-/eastasianwidth-0.2.0.tgz#696ce2ec0aa0e6ea93a397ffcf24aa7840c827cb"
-  integrity sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==
-
-echarts@5.6.0:
-  version "5.6.0"
-  resolved "https://registry.npmmirror.com/echarts/-/echarts-5.6.0.tgz#2377874dca9fb50f104051c3553544752da3c9d6"
-  integrity sha512-oTbVTsXfKuEhxftHqL5xprgLoc0k7uScAwtryCgWF6hPYFLRwOUHiFmHGCBKP5NPFNkDVopOieyUqYGH8Fa3kA==
-  dependencies:
-    tslib "2.3.0"
-    zrender "5.6.1"
-
-editorconfig@^1.0.3:
-  version "1.0.4"
-  resolved "https://registry.npmmirror.com/editorconfig/-/editorconfig-1.0.4.tgz#040c9a8e9a6c5288388b87c2db07028aa89f53a3"
-  integrity sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==
-  dependencies:
-    "@one-ini/wasm" "0.1.1"
-    commander "^10.0.0"
-    minimatch "9.0.1"
-    semver "^7.5.3"
-
-element-plus@2.10.7:
-  version "2.10.7"
-  resolved "https://registry.npmmirror.com/element-plus/-/element-plus-2.10.7.tgz#daf19a50a51166ac08861ebd29497bbf0b6c74ac"
-  integrity sha512-bL4yhepL8/0NEQA5+N2Q6ZVKLipIDkiQjK2mqtSmGh6CxJk1yaBMdG5HXfYkbk1htNcT3ULk9g23lzT323JGcA==
-  dependencies:
-    "@ctrl/tinycolor" "^3.4.1"
-    "@element-plus/icons-vue" "^2.3.1"
-    "@floating-ui/dom" "^1.0.1"
-    "@popperjs/core" "npm:@sxzz/popperjs-es@^2.11.7"
-    "@types/lodash" "^4.14.182"
-    "@types/lodash-es" "^4.17.6"
-    "@vueuse/core" "^9.1.0"
-    async-validator "^4.2.5"
-    dayjs "^1.11.13"
-    escape-html "^1.0.3"
-    lodash "^4.17.21"
-    lodash-es "^4.17.21"
-    lodash-unified "^1.0.2"
-    memoize-one "^6.0.0"
-    normalize-wheel-es "^1.2.0"
-
-emoji-regex@^8.0.0:
-  version "8.0.0"
-  resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-8.0.0.tgz#e818fd69ce5ccfcb404594f842963bf53164cc37"
-  integrity sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==
-
-emoji-regex@^9.2.2:
-  version "9.2.2"
-  resolved "https://registry.npmmirror.com/emoji-regex/-/emoji-regex-9.2.2.tgz#840c8803b0d8047f4ff0cf963176b32d4ef3ed72"
-  integrity sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==
-
-emojis-list@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npmmirror.com/emojis-list/-/emojis-list-3.0.0.tgz#5570662046ad29e2e916e71aae260abdff4f6a78"
-  integrity sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==
-
-enhanced-resolve@^5.18.3:
-  version "5.18.3"
-  resolved "https://registry.npmmirror.com/enhanced-resolve/-/enhanced-resolve-5.18.3.tgz#9b5f4c5c076b8787c78fe540392ce76a88855b44"
-  integrity sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==
-  dependencies:
-    graceful-fs "^4.2.4"
-    tapable "^2.2.0"
-
-entities@^1.1.1:
-  version "1.1.2"
-  resolved "https://registry.npmmirror.com/entities/-/entities-1.1.2.tgz#bdfa735299664dfafd34529ed4f8522a275fea56"
-  integrity sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==
-
-entities@^2.0.0:
-  version "2.2.0"
-  resolved "https://registry.npmmirror.com/entities/-/entities-2.2.0.tgz#098dc90ebb83d8dffa089d55256b351d34c4da55"
-  integrity sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==
-
-entities@^4.5.0:
-  version "4.5.0"
-  resolved "https://registry.npmmirror.com/entities/-/entities-4.5.0.tgz#5d268ea5e7113ec74c4d033b79ea5a35a488fb48"
-  integrity sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==
-
-es-abstract@^1.23.5, es-abstract@^1.23.9:
-  version "1.24.0"
-  resolved "https://registry.npmmirror.com/es-abstract/-/es-abstract-1.24.0.tgz#c44732d2beb0acc1ed60df840869e3106e7af328"
-  integrity sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==
-  dependencies:
-    array-buffer-byte-length "^1.0.2"
-    arraybuffer.prototype.slice "^1.0.4"
-    available-typed-arrays "^1.0.7"
-    call-bind "^1.0.8"
-    call-bound "^1.0.4"
-    data-view-buffer "^1.0.2"
-    data-view-byte-length "^1.0.2"
-    data-view-byte-offset "^1.0.1"
-    es-define-property "^1.0.1"
-    es-errors "^1.3.0"
-    es-object-atoms "^1.1.1"
-    es-set-tostringtag "^2.1.0"
-    es-to-primitive "^1.3.0"
-    function.prototype.name "^1.1.8"
-    get-intrinsic "^1.3.0"
-    get-proto "^1.0.1"
-    get-symbol-description "^1.1.0"
-    globalthis "^1.0.4"
-    gopd "^1.2.0"
-    has-property-descriptors "^1.0.2"
-    has-proto "^1.2.0"
-    has-symbols "^1.1.0"
-    hasown "^2.0.2"
-    internal-slot "^1.1.0"
-    is-array-buffer "^3.0.5"
-    is-callable "^1.2.7"
-    is-data-view "^1.0.2"
-    is-negative-zero "^2.0.3"
-    is-regex "^1.2.1"
-    is-set "^2.0.3"
-    is-shared-array-buffer "^1.0.4"
-    is-string "^1.1.1"
-    is-typed-array "^1.1.15"
-    is-weakref "^1.1.1"
-    math-intrinsics "^1.1.0"
-    object-inspect "^1.13.4"
-    object-keys "^1.1.1"
-    object.assign "^4.1.7"
-    own-keys "^1.0.1"
-    regexp.prototype.flags "^1.5.4"
-    safe-array-concat "^1.1.3"
-    safe-push-apply "^1.0.0"
-    safe-regex-test "^1.1.0"
-    set-proto "^1.0.0"
-    stop-iteration-iterator "^1.1.0"
-    string.prototype.trim "^1.2.10"
-    string.prototype.trimend "^1.0.9"
-    string.prototype.trimstart "^1.0.8"
-    typed-array-buffer "^1.0.3"
-    typed-array-byte-length "^1.0.3"
-    typed-array-byte-offset "^1.0.4"
-    typed-array-length "^1.0.7"
-    unbox-primitive "^1.1.0"
-    which-typed-array "^1.1.19"
-
-es-define-property@^1.0.0, es-define-property@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npmmirror.com/es-define-property/-/es-define-property-1.0.1.tgz#983eb2f9a6724e9303f61addf011c72e09e0b0fa"
-  integrity sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==
-
-es-errors@^1.3.0:
-  version "1.3.0"
-  resolved "https://registry.npmmirror.com/es-errors/-/es-errors-1.3.0.tgz#05f75a25dab98e4fb1dcd5e1472c0546d5057c8f"
-  integrity sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==
-
-es-object-atoms@^1.0.0, es-object-atoms@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.npmmirror.com/es-object-atoms/-/es-object-atoms-1.1.1.tgz#1c4f2c4837327597ce69d2ca190a7fdd172338c1"
-  integrity sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==
-  dependencies:
-    es-errors "^1.3.0"
-
-es-set-tostringtag@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.npmmirror.com/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz#f31dbbe0c183b00a6d26eb6325c810c0fd18bd4d"
-  integrity sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==
-  dependencies:
-    es-errors "^1.3.0"
-    get-intrinsic "^1.2.6"
-    has-tostringtag "^1.0.2"
-    hasown "^2.0.2"
-
-es-to-primitive@^1.3.0:
-  version "1.3.0"
-  resolved "https://registry.npmmirror.com/es-to-primitive/-/es-to-primitive-1.3.0.tgz#96c89c82cc49fd8794a24835ba3e1ff87f214e18"
-  integrity sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==
-  dependencies:
-    is-callable "^1.2.7"
-    is-date-object "^1.0.5"
-    is-symbol "^1.0.4"
-
-esbuild@^0.25.0:
-  version "0.25.11"
-  resolved "https://registry.npmmirror.com/esbuild/-/esbuild-0.25.11.tgz#0f31b82f335652580f75ef6897bba81962d9ae3d"
-  integrity sha512-KohQwyzrKTQmhXDW1PjCv3Tyspn9n5GcY2RTDqeORIdIJY8yKIF7sTSopFmn/wpMPW4rdPXI0UE5LJLuq3bx0Q==
-  optionalDependencies:
-    "@esbuild/aix-ppc64" "0.25.11"
-    "@esbuild/android-arm" "0.25.11"
-    "@esbuild/android-arm64" "0.25.11"
-    "@esbuild/android-x64" "0.25.11"
-    "@esbuild/darwin-arm64" "0.25.11"
-    "@esbuild/darwin-x64" "0.25.11"
-    "@esbuild/freebsd-arm64" "0.25.11"
-    "@esbuild/freebsd-x64" "0.25.11"
-    "@esbuild/linux-arm" "0.25.11"
-    "@esbuild/linux-arm64" "0.25.11"
-    "@esbuild/linux-ia32" "0.25.11"
-    "@esbuild/linux-loong64" "0.25.11"
-    "@esbuild/linux-mips64el" "0.25.11"
-    "@esbuild/linux-ppc64" "0.25.11"
-    "@esbuild/linux-riscv64" "0.25.11"
-    "@esbuild/linux-s390x" "0.25.11"
-    "@esbuild/linux-x64" "0.25.11"
-    "@esbuild/netbsd-arm64" "0.25.11"
-    "@esbuild/netbsd-x64" "0.25.11"
-    "@esbuild/openbsd-arm64" "0.25.11"
-    "@esbuild/openbsd-x64" "0.25.11"
-    "@esbuild/openharmony-arm64" "0.25.11"
-    "@esbuild/sunos-x64" "0.25.11"
-    "@esbuild/win32-arm64" "0.25.11"
-    "@esbuild/win32-ia32" "0.25.11"
-    "@esbuild/win32-x64" "0.25.11"
-
-escape-html@^1.0.3:
-  version "1.0.3"
-  resolved "https://registry.npmmirror.com/escape-html/-/escape-html-1.0.3.tgz#0258eae4d3d0c0974de1c169188ef0051d1d1988"
-  integrity sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==
-
-escape-string-regexp@1.0.5, escape-string-regexp@^1.0.2:
-  version "1.0.5"
-  resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz#1b61c0562190a8dff6ae3bb2cf0200ca130b86d4"
-  integrity sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==
-
-escape-string-regexp@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.npmmirror.com/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz#4683126b500b61762f2dbebace1806e8be31b1c8"
-  integrity sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==
-
-estree-walker@^2.0.2:
-  version "2.0.2"
-  resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-2.0.2.tgz#52f010178c2a4c117a7757cfe942adb7d2da4cac"
-  integrity sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==
-
-estree-walker@^3.0.3:
-  version "3.0.3"
-  resolved "https://registry.npmmirror.com/estree-walker/-/estree-walker-3.0.3.tgz#67c3e549ec402a487b4fc193d1953a524752340d"
-  integrity sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==
-  dependencies:
-    "@types/estree" "^1.0.0"
-
-etag@^1.8.1:
-  version "1.8.1"
-  resolved "https://registry.npmmirror.com/etag/-/etag-1.8.1.tgz#41ae2eeb65efa62268aebfea83ac7d79299b0887"
-  integrity sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==
-
-eventemitter3@^2.0.3:
-  version "2.0.3"
-  resolved "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-2.0.3.tgz#b5e1079b59fb5e1ba2771c0a993be060a58c99ba"
-  integrity sha512-jLN68Dx5kyFHaePoXWPsCGW5qdyZQtLYHkxkg02/Mz6g0kYpDx4FyP6XfArhQdlOC4b8Mv+EMxPo/8La7Tzghg==
-
-expand-brackets@^2.1.4:
-  version "2.1.4"
-  resolved "https://registry.npmmirror.com/expand-brackets/-/expand-brackets-2.1.4.tgz#b77735e315ce30f6b6eff0f83b04151a22449622"
-  integrity sha512-w/ozOKR9Obk3qoWeY/WDi6MFta9AoMR+zud60mdnbniMcBxRuFJyDt2LdX/14A1UABeqk+Uk+LDfUpvoGKppZA==
-  dependencies:
-    debug "^2.3.3"
-    define-property "^0.2.5"
-    extend-shallow "^2.0.1"
-    posix-character-classes "^0.1.0"
-    regex-not "^1.0.0"
-    snapdragon "^0.8.1"
-    to-regex "^3.0.1"
-
-exsolve@^1.0.7:
-  version "1.0.7"
-  resolved "https://registry.npmmirror.com/exsolve/-/exsolve-1.0.7.tgz#3b74e4c7ca5c5f9a19c3626ca857309fa99f9e9e"
-  integrity sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==
-
-extend-shallow@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-2.0.1.tgz#51af7d614ad9a9f610ea1bafbb989d6b1c56890f"
-  integrity sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==
-  dependencies:
-    is-extendable "^0.1.0"
-
-extend-shallow@^3.0.0, extend-shallow@^3.0.2:
-  version "3.0.2"
-  resolved "https://registry.npmmirror.com/extend-shallow/-/extend-shallow-3.0.2.tgz#26a71aaf073b39fb2127172746131c2704028db8"
-  integrity sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==
-  dependencies:
-    assign-symbols "^1.0.0"
-    is-extendable "^1.0.1"
-
-extend@^3.0.2:
-  version "3.0.2"
-  resolved "https://registry.npmmirror.com/extend/-/extend-3.0.2.tgz#f8b1136b4071fbd8eb140aff858b1019ec2915fa"
-  integrity sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==
-
-extglob@^2.0.2:
-  version "2.0.4"
-  resolved "https://registry.npmmirror.com/extglob/-/extglob-2.0.4.tgz#ad00fe4dc612a9232e8718711dc5cb5ab0285543"
-  integrity sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==
-  dependencies:
-    array-unique "^0.3.2"
-    define-property "^1.0.0"
-    expand-brackets "^2.1.4"
-    extend-shallow "^2.0.1"
-    fragment-cache "^0.2.1"
-    regex-not "^1.0.0"
-    snapdragon "^0.8.1"
-    to-regex "^3.0.1"
-
-fast-diff@1.1.2:
-  version "1.1.2"
-  resolved "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.1.2.tgz#4b62c42b8e03de3f848460b639079920695d0154"
-  integrity sha512-KaJUt+M9t1qaIteSvjc6P3RbMdXsNhK61GRftR6SNxqmhthcd9MGIi4T+o0jD8LUSpSnSKXE20nLtJ3fOHxQig==
-
-fast-diff@1.2.0:
-  version "1.2.0"
-  resolved "https://registry.npmmirror.com/fast-diff/-/fast-diff-1.2.0.tgz#73ee11982d86caaf7959828d519cfe927fac5f03"
-  integrity sha512-xJuoT5+L99XlZ8twedaRf6Ax2TgQVxvgZOYoPKqZufmJib0tL2tegPBOZb1pVNgIhlqDlA0eO0c3wBvQcmzx4w==
-
-fast-glob@^3.3.2, fast-glob@^3.3.3:
-  version "3.3.3"
-  resolved "https://registry.npmmirror.com/fast-glob/-/fast-glob-3.3.3.tgz#d06d585ce8dba90a16b0505c543c3ccfb3aeb818"
-  integrity sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==
-  dependencies:
-    "@nodelib/fs.stat" "^2.0.2"
-    "@nodelib/fs.walk" "^1.2.3"
-    glob-parent "^5.1.2"
-    merge2 "^1.3.0"
-    micromatch "^4.0.8"
-
-fastq@^1.6.0:
-  version "1.19.1"
-  resolved "https://registry.npmmirror.com/fastq/-/fastq-1.19.1.tgz#d50eaba803c8846a883c16492821ebcd2cda55f5"
-  integrity sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==
-  dependencies:
-    reusify "^1.0.4"
-
-fdir@^6.4.4, fdir@^6.5.0:
-  version "6.5.0"
-  resolved "https://registry.npmmirror.com/fdir/-/fdir-6.5.0.tgz#ed2ab967a331ade62f18d077dae192684d50d350"
-  integrity sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==
-
-file-saver@2.0.5:
-  version "2.0.5"
-  resolved "https://registry.npmmirror.com/file-saver/-/file-saver-2.0.5.tgz#d61cfe2ce059f414d899e9dd6d4107ee25670c38"
-  integrity sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==
-
-fill-range@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.npmmirror.com/fill-range/-/fill-range-4.0.0.tgz#d544811d428f98eb06a63dc402d2403c328c38f7"
-  integrity sha512-VcpLTWqWDiTerugjj8e3+esbg+skS3M9e54UuR3iCeIDMXCLTsAH8hTSzDQU/X6/6t3eYkOKoZSef2PlU6U1XQ==
-  dependencies:
-    extend-shallow "^2.0.1"
-    is-number "^3.0.0"
-    repeat-string "^1.6.1"
-    to-regex-range "^2.1.0"
-
-fill-range@^7.1.1:
-  version "7.1.1"
-  resolved "https://registry.npmmirror.com/fill-range/-/fill-range-7.1.1.tgz#44265d3cac07e3ea7dc247516380643754a05292"
-  integrity sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==
-  dependencies:
-    to-regex-range "^5.0.1"
-
-follow-redirects@^1.15.6:
-  version "1.15.11"
-  resolved "https://registry.npmmirror.com/follow-redirects/-/follow-redirects-1.15.11.tgz#777d73d72a92f8ec4d2e410eb47352a56b8e8340"
-  integrity sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==
-
-for-each@^0.3.3, for-each@^0.3.5:
-  version "0.3.5"
-  resolved "https://registry.npmmirror.com/for-each/-/for-each-0.3.5.tgz#d650688027826920feeb0af747ee7b9421a41d47"
-  integrity sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==
-  dependencies:
-    is-callable "^1.2.7"
-
-for-in@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npmmirror.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
-  integrity sha512-7EwmXrOjyL+ChxMhmG5lnW9MPt1aIeZEwKhQzoBUdTV0N3zuwWDZYVJatDvZ2OyzPUvdIAZDsCetk3coyMfcnQ==
-
-foreground-child@^3.1.0:
-  version "3.3.1"
-  resolved "https://registry.npmmirror.com/foreground-child/-/foreground-child-3.3.1.tgz#32e8e9ed1b68a3497befb9ac2b6adf92a638576f"
-  integrity sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==
-  dependencies:
-    cross-spawn "^7.0.6"
-    signal-exit "^4.0.1"
-
-form-data@^4.0.0:
-  version "4.0.4"
-  resolved "https://registry.npmmirror.com/form-data/-/form-data-4.0.4.tgz#784cdcce0669a9d68e94d11ac4eea98088edd2c4"
-  integrity sha512-KrGhL9Q4zjj0kiUt5OO4Mr/A/jlI2jDYs5eHBpYHPcBEVSiipAvn2Ko2HnPe20rmcuuvMHNdZFp+4IlGTMF0Ow==
-  dependencies:
-    asynckit "^0.4.0"
-    combined-stream "^1.0.8"
-    es-set-tostringtag "^2.1.0"
-    hasown "^2.0.2"
-    mime-types "^2.1.12"
-
-fragment-cache@^0.2.1:
-  version "0.2.1"
-  resolved "https://registry.npmmirror.com/fragment-cache/-/fragment-cache-0.2.1.tgz#4290fad27f13e89be7f33799c6bc5a0abfff0d19"
-  integrity sha512-GMBAbW9antB8iZRHLoGw0b3HANt57diZYFO/HL1JGIC1MjKrdmhxvrJbupnVvpys0zsz7yBApXdQyfepKly2kA==
-  dependencies:
-    map-cache "^0.2.2"
-
-fs-extra@^10.0.0:
-  version "10.1.0"
-  resolved "https://registry.npmmirror.com/fs-extra/-/fs-extra-10.1.0.tgz#02873cfbc4084dde127eaa5f9905eef2325d1abf"
-  integrity sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==
-  dependencies:
-    graceful-fs "^4.2.0"
-    jsonfile "^6.0.1"
-    universalify "^2.0.0"
-
-fsevents@~2.3.2, fsevents@~2.3.3:
-  version "2.3.3"
-  resolved "https://registry.npmmirror.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6"
-  integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==
-
-function-bind@^1.1.2:
-  version "1.1.2"
-  resolved "https://registry.npmmirror.com/function-bind/-/function-bind-1.1.2.tgz#2c02d864d97f3ea6c8830c464cbd11ab6eab7a1c"
-  integrity sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==
-
-function.prototype.name@^1.1.6, function.prototype.name@^1.1.8:
-  version "1.1.8"
-  resolved "https://registry.npmmirror.com/function.prototype.name/-/function.prototype.name-1.1.8.tgz#e68e1df7b259a5c949eeef95cdbde53edffabb78"
-  integrity sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==
-  dependencies:
-    call-bind "^1.0.8"
-    call-bound "^1.0.3"
-    define-properties "^1.2.1"
-    functions-have-names "^1.2.3"
-    hasown "^2.0.2"
-    is-callable "^1.2.7"
-
-functions-have-names@^1.2.3:
-  version "1.2.3"
-  resolved "https://registry.npmmirror.com/functions-have-names/-/functions-have-names-1.2.3.tgz#0404fe4ee2ba2f607f0e0ec3c80bae994133b834"
-  integrity sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==
-
-fuse.js@6.6.2:
-  version "6.6.2"
-  resolved "https://registry.npmmirror.com/fuse.js/-/fuse.js-6.6.2.tgz#fe463fed4b98c0226ac3da2856a415576dc9a111"
-  integrity sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA==
-
-generator-function@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.npmmirror.com/generator-function/-/generator-function-2.0.1.tgz#0e75dd410d1243687a0ba2e951b94eedb8f737a2"
-  integrity sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==
-
-get-intrinsic@^1.2.4, get-intrinsic@^1.2.5, get-intrinsic@^1.2.6, get-intrinsic@^1.2.7, get-intrinsic@^1.3.0:
-  version "1.3.0"
-  resolved "https://registry.npmmirror.com/get-intrinsic/-/get-intrinsic-1.3.0.tgz#743f0e3b6964a93a5491ed1bffaae054d7f98d01"
-  integrity sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==
-  dependencies:
-    call-bind-apply-helpers "^1.0.2"
-    es-define-property "^1.0.1"
-    es-errors "^1.3.0"
-    es-object-atoms "^1.1.1"
-    function-bind "^1.1.2"
-    get-proto "^1.0.1"
-    gopd "^1.2.0"
-    has-symbols "^1.1.0"
-    hasown "^2.0.2"
-    math-intrinsics "^1.1.0"
-
-get-proto@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npmmirror.com/get-proto/-/get-proto-1.0.1.tgz#150b3f2743869ef3e851ec0c49d15b1d14d00ee1"
-  integrity sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==
-  dependencies:
-    dunder-proto "^1.0.1"
-    es-object-atoms "^1.0.0"
-
-get-symbol-description@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.npmmirror.com/get-symbol-description/-/get-symbol-description-1.1.0.tgz#7bdd54e0befe8ffc9f3b4e203220d9f1e881b6ee"
-  integrity sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==
-  dependencies:
-    call-bound "^1.0.3"
-    es-errors "^1.3.0"
-    get-intrinsic "^1.2.6"
-
-get-value@^2.0.3, get-value@^2.0.6:
-  version "2.0.6"
-  resolved "https://registry.npmmirror.com/get-value/-/get-value-2.0.6.tgz#dc15ca1c672387ca76bd37ac0a395ba2042a2c28"
-  integrity sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==
-
-glob-parent@^5.1.2:
-  version "5.1.2"
-  resolved "https://registry.npmmirror.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4"
-  integrity sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==
-  dependencies:
-    is-glob "^4.0.1"
-
-glob@^10.3.3:
-  version "10.4.5"
-  resolved "https://registry.npmmirror.com/glob/-/glob-10.4.5.tgz#f4d9f0b90ffdbab09c9d77f5f29b4262517b0956"
-  integrity sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==
-  dependencies:
-    foreground-child "^3.1.0"
-    jackspeak "^3.1.2"
-    minimatch "^9.0.4"
-    minipass "^7.1.2"
-    package-json-from-dist "^1.0.0"
-    path-scurry "^1.11.1"
-
-globalthis@^1.0.4:
-  version "1.0.4"
-  resolved "https://registry.npmmirror.com/globalthis/-/globalthis-1.0.4.tgz#7430ed3a975d97bfb59bcce41f5cabbafa651236"
-  integrity sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==
-  dependencies:
-    define-properties "^1.2.1"
-    gopd "^1.0.1"
-
-good-listener@^1.2.2:
-  version "1.2.2"
-  resolved "https://registry.npmmirror.com/good-listener/-/good-listener-1.2.2.tgz#d53b30cdf9313dffb7dc9a0d477096aa6d145c50"
-  integrity sha512-goW1b+d9q/HIwbVYZzZ6SsTr4IgE+WA44A0GmPIQstuOrgsFcT7VEJ48nmr9GaRtNu0XTKacFLGnBPAM6Afouw==
-  dependencies:
-    delegate "^3.1.2"
-
-gopd@^1.0.1, gopd@^1.2.0:
-  version "1.2.0"
-  resolved "https://registry.npmmirror.com/gopd/-/gopd-1.2.0.tgz#89f56b8217bdbc8802bd299df6d7f1081d7e51a1"
-  integrity sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==
-
-graceful-fs@^4.1.6, graceful-fs@^4.2.0, graceful-fs@^4.2.4:
-  version "4.2.11"
-  resolved "https://registry.npmmirror.com/graceful-fs/-/graceful-fs-4.2.11.tgz#4183e4e8bf08bb6e05bbb2f7d2e0c8f712ca40e3"
-  integrity sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==
-
-has-ansi@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npmmirror.com/has-ansi/-/has-ansi-2.0.0.tgz#34f5049ce1ecdf2b0649af3ef24e45ed35416d91"
-  integrity sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==
-  dependencies:
-    ansi-regex "^2.0.0"
-
-has-bigints@^1.0.2:
-  version "1.1.0"
-  resolved "https://registry.npmmirror.com/has-bigints/-/has-bigints-1.1.0.tgz#28607e965ac967e03cd2a2c70a2636a1edad49fe"
-  integrity sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==
-
-has-flag@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npmmirror.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa"
-  integrity sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==
-
-has-flag@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b"
-  integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==
-
-has-property-descriptors@^1.0.0, has-property-descriptors@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npmmirror.com/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz#963ed7d071dc7bf5f084c5bfbe0d1b6222586854"
-  integrity sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==
-  dependencies:
-    es-define-property "^1.0.0"
-
-has-proto@^1.2.0:
-  version "1.2.0"
-  resolved "https://registry.npmmirror.com/has-proto/-/has-proto-1.2.0.tgz#5de5a6eabd95fdffd9818b43055e8065e39fe9d5"
-  integrity sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==
-  dependencies:
-    dunder-proto "^1.0.0"
-
-has-symbols@^1.0.3, has-symbols@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.npmmirror.com/has-symbols/-/has-symbols-1.1.0.tgz#fc9c6a783a084951d0b971fe1018de813707a338"
-  integrity sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==
-
-has-tostringtag@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npmmirror.com/has-tostringtag/-/has-tostringtag-1.0.2.tgz#2cdc42d40bef2e5b4eeab7c01a73c54ce7ab5abc"
-  integrity sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==
-  dependencies:
-    has-symbols "^1.0.3"
-
-has-value@^0.3.1:
-  version "0.3.1"
-  resolved "https://registry.npmmirror.com/has-value/-/has-value-0.3.1.tgz#7b1f58bada62ca827ec0a2078025654845995e1f"
-  integrity sha512-gpG936j8/MzaeID5Yif+577c17TxaDmhuyVgSwtnL/q8UUTySg8Mecb+8Cf1otgLoD7DDH75axp86ER7LFsf3Q==
-  dependencies:
-    get-value "^2.0.3"
-    has-values "^0.1.4"
-    isobject "^2.0.0"
-
-has-value@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npmmirror.com/has-value/-/has-value-1.0.0.tgz#18b281da585b1c5c51def24c930ed29a0be6b177"
-  integrity sha512-IBXk4GTsLYdQ7Rvt+GRBrFSVEkmuOUy4re0Xjd9kJSUQpnTrWR4/y9RpfexN9vkAPMFuQoeWKwqzPozRTlasGw==
-  dependencies:
-    get-value "^2.0.6"
-    has-values "^1.0.0"
-    isobject "^3.0.0"
-
-has-values@^0.1.4:
-  version "0.1.4"
-  resolved "https://registry.npmmirror.com/has-values/-/has-values-0.1.4.tgz#6d61de95d91dfca9b9a02089ad384bff8f62b771"
-  integrity sha512-J8S0cEdWuQbqD9//tlZxiMuMNmxB8PlEwvYwuxsTmR1G5RXUePEX/SJn7aD0GMLieuZYSwNH0cQuJGwnYunXRQ==
-
-has-values@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npmmirror.com/has-values/-/has-values-1.0.0.tgz#95b0b63fec2146619a6fe57fe75628d5a39efe4f"
-  integrity sha512-ODYZC64uqzmtfGMEAX/FvZiRyWLpAC3vYnNunURUnkGVTS+mI0smVsWaPydRBsE3g+ok7h960jChO8mFcWlHaQ==
-  dependencies:
-    is-number "^3.0.0"
-    kind-of "^4.0.0"
-
-hasown@^2.0.0, hasown@^2.0.2:
-  version "2.0.2"
-  resolved "https://registry.npmmirror.com/hasown/-/hasown-2.0.2.tgz#003eaf91be7adc372e84ec59dc37252cedb80003"
-  integrity sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==
-  dependencies:
-    function-bind "^1.1.2"
-
-he@^1.1.1:
-  version "1.2.0"
-  resolved "https://registry.npmmirror.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f"
-  integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==
-
-hookable@^5.5.3:
-  version "5.5.3"
-  resolved "https://registry.npmmirror.com/hookable/-/hookable-5.5.3.tgz#6cfc358984a1ef991e2518cb9ed4a778bbd3215d"
-  integrity sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==
-
-htmlparser2@^3.8.3:
-  version "3.10.1"
-  resolved "https://registry.npmmirror.com/htmlparser2/-/htmlparser2-3.10.1.tgz#bd679dc3f59897b6a34bb10749c855bb53a9392f"
-  integrity sha512-IgieNijUMbkDovyoKObU1DUhm1iwNYE/fuifEoEHfd1oZKZDaONBSkal7Y01shxsM49R4XaMdGez3WnF9UfiCQ==
-  dependencies:
-    domelementtype "^1.3.1"
-    domhandler "^2.3.0"
-    domutils "^1.5.1"
-    entities "^1.1.1"
-    inherits "^2.0.1"
-    readable-stream "^3.1.1"
-
-image-size@^0.5.1:
-  version "0.5.5"
-  resolved "https://registry.npmmirror.com/image-size/-/image-size-0.5.5.tgz#09dfd4ab9d20e29eb1c3e80b8990378df9e3cb9c"
-  integrity sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==
-
-immutable@^5.0.2:
-  version "5.1.4"
-  resolved "https://registry.npmmirror.com/immutable/-/immutable-5.1.4.tgz#e3f8c1fe7b567d56cf26698f31918c241dae8c1f"
-  integrity sha512-p6u1bG3YSnINT5RQmx/yRZBpenIl30kVxkTLDyHLIMk0gict704Q9n+thfDI7lTRm9vXdDYutVzXhzcThxTnXA==
-
-inherits@^2.0.1, inherits@^2.0.3:
-  version "2.0.4"
-  resolved "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c"
-  integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==
-
-ini@^1.3.4:
-  version "1.3.8"
-  resolved "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz#a29da425b48806f34767a4efce397269af28432c"
-  integrity sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==
-
-internal-slot@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.npmmirror.com/internal-slot/-/internal-slot-1.1.0.tgz#1eac91762947d2f7056bc838d93e13b2e9604961"
-  integrity sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==
-  dependencies:
-    es-errors "^1.3.0"
-    hasown "^2.0.2"
-    side-channel "^1.1.0"
-
-is-accessor-descriptor@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npmmirror.com/is-accessor-descriptor/-/is-accessor-descriptor-1.0.1.tgz#3223b10628354644b86260db29b3e693f5ceedd4"
-  integrity sha512-YBUanLI8Yoihw923YeFUS5fs0fF2f5TSFTNiYAAzhhDscDa3lEqYuz1pDOEP5KvX94I9ey3vsqjJcLVFVU+3QA==
-  dependencies:
-    hasown "^2.0.0"
-
-is-arguments@^1.1.1:
-  version "1.2.0"
-  resolved "https://registry.npmmirror.com/is-arguments/-/is-arguments-1.2.0.tgz#ad58c6aecf563b78ef2bf04df540da8f5d7d8e1b"
-  integrity sha512-7bVbi0huj/wrIAOzb8U1aszg9kdi3KN/CyU19CTI7tAoZYEZoL9yCDXpbXN+uPsuWnP02cyug1gleqq+TU+YCA==
-  dependencies:
-    call-bound "^1.0.2"
-    has-tostringtag "^1.0.2"
-
-is-array-buffer@^3.0.4, is-array-buffer@^3.0.5:
-  version "3.0.5"
-  resolved "https://registry.npmmirror.com/is-array-buffer/-/is-array-buffer-3.0.5.tgz#65742e1e687bd2cc666253068fd8707fe4d44280"
-  integrity sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==
-  dependencies:
-    call-bind "^1.0.8"
-    call-bound "^1.0.3"
-    get-intrinsic "^1.2.6"
-
-is-async-function@^2.0.0:
-  version "2.1.1"
-  resolved "https://registry.npmmirror.com/is-async-function/-/is-async-function-2.1.1.tgz#3e69018c8e04e73b738793d020bfe884b9fd3523"
-  integrity sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==
-  dependencies:
-    async-function "^1.0.0"
-    call-bound "^1.0.3"
-    get-proto "^1.0.1"
-    has-tostringtag "^1.0.2"
-    safe-regex-test "^1.1.0"
-
-is-bigint@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.npmmirror.com/is-bigint/-/is-bigint-1.1.0.tgz#dda7a3445df57a42583db4228682eba7c4170672"
-  integrity sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==
-  dependencies:
-    has-bigints "^1.0.2"
-
-is-boolean-object@^1.2.1:
-  version "1.2.2"
-  resolved "https://registry.npmmirror.com/is-boolean-object/-/is-boolean-object-1.2.2.tgz#7067f47709809a393c71ff5bb3e135d8a9215d9e"
-  integrity sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==
-  dependencies:
-    call-bound "^1.0.3"
-    has-tostringtag "^1.0.2"
-
-is-buffer@^1.1.5:
-  version "1.1.6"
-  resolved "https://registry.npmmirror.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
-  integrity sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==
-
-is-callable@^1.2.7:
-  version "1.2.7"
-  resolved "https://registry.npmmirror.com/is-callable/-/is-callable-1.2.7.tgz#3bc2a85ea742d9e36205dcacdd72ca1fdc51b055"
-  integrity sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==
-
-is-data-descriptor@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npmmirror.com/is-data-descriptor/-/is-data-descriptor-1.0.1.tgz#2109164426166d32ea38c405c1e0945d9e6a4eeb"
-  integrity sha512-bc4NlCDiCr28U4aEsQ3Qs2491gVq4V8G7MQyws968ImqjKuYtTJXrl7Vq7jsN7Ly/C3xj5KWFrY7sHNeDkAzXw==
-  dependencies:
-    hasown "^2.0.0"
-
-is-data-view@^1.0.1, is-data-view@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npmmirror.com/is-data-view/-/is-data-view-1.0.2.tgz#bae0a41b9688986c2188dda6657e56b8f9e63b8e"
-  integrity sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==
-  dependencies:
-    call-bound "^1.0.2"
-    get-intrinsic "^1.2.6"
-    is-typed-array "^1.1.13"
-
-is-date-object@^1.0.5, is-date-object@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.npmmirror.com/is-date-object/-/is-date-object-1.1.0.tgz#ad85541996fc7aa8b2729701d27b7319f95d82f7"
-  integrity sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==
-  dependencies:
-    call-bound "^1.0.2"
-    has-tostringtag "^1.0.2"
-
-is-descriptor@^0.1.0:
-  version "0.1.7"
-  resolved "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-0.1.7.tgz#2727eb61fd789dcd5bdf0ed4569f551d2fe3be33"
-  integrity sha512-C3grZTvObeN1xud4cRWl366OMXZTj0+HGyk4hvfpx4ZHt1Pb60ANSXqCK7pdOTeUQpRzECBSTphqvD7U+l22Eg==
-  dependencies:
-    is-accessor-descriptor "^1.0.1"
-    is-data-descriptor "^1.0.1"
-
-is-descriptor@^1.0.0, is-descriptor@^1.0.2:
-  version "1.0.3"
-  resolved "https://registry.npmmirror.com/is-descriptor/-/is-descriptor-1.0.3.tgz#92d27cb3cd311c4977a4db47df457234a13cb306"
-  integrity sha512-JCNNGbwWZEVaSPtS45mdtrneRWJFp07LLmykxeFV5F6oBvNF8vHSfJuJgoT472pSfk+Mf8VnlrspaFBHWM8JAw==
-  dependencies:
-    is-accessor-descriptor "^1.0.1"
-    is-data-descriptor "^1.0.1"
-
-is-extendable@^0.1.0, is-extendable@^0.1.1:
-  version "0.1.1"
-  resolved "https://registry.npmmirror.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
-  integrity sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==
-
-is-extendable@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npmmirror.com/is-extendable/-/is-extendable-1.0.1.tgz#a7470f9e426733d81bd81e1155264e3a3507cab4"
-  integrity sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==
-  dependencies:
-    is-plain-object "^2.0.4"
-
-is-extglob@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.npmmirror.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2"
-  integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==
-
-is-finalizationregistry@^1.1.0:
-  version "1.1.1"
-  resolved "https://registry.npmmirror.com/is-finalizationregistry/-/is-finalizationregistry-1.1.1.tgz#eefdcdc6c94ddd0674d9c85887bf93f944a97c90"
-  integrity sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==
-  dependencies:
-    call-bound "^1.0.3"
-
-is-fullwidth-code-point@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npmmirror.com/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz#f116f8064fe90b3f7844a38997c0b75051269f1d"
-  integrity sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==
-
-is-generator-function@^1.0.10:
-  version "1.1.2"
-  resolved "https://registry.npmmirror.com/is-generator-function/-/is-generator-function-1.1.2.tgz#ae3b61e3d5ea4e4839b90bad22b02335051a17d5"
-  integrity sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==
-  dependencies:
-    call-bound "^1.0.4"
-    generator-function "^2.0.0"
-    get-proto "^1.0.1"
-    has-tostringtag "^1.0.2"
-    safe-regex-test "^1.1.0"
-
-is-glob@^4.0.1:
-  version "4.0.3"
-  resolved "https://registry.npmmirror.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084"
-  integrity sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==
-  dependencies:
-    is-extglob "^2.1.1"
-
-is-map@^2.0.3:
-  version "2.0.3"
-  resolved "https://registry.npmmirror.com/is-map/-/is-map-2.0.3.tgz#ede96b7fe1e270b3c4465e3a465658764926d62e"
-  integrity sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==
-
-is-negative-zero@^2.0.3:
-  version "2.0.3"
-  resolved "https://registry.npmmirror.com/is-negative-zero/-/is-negative-zero-2.0.3.tgz#ced903a027aca6381b777a5743069d7376a49747"
-  integrity sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==
-
-is-number-object@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.npmmirror.com/is-number-object/-/is-number-object-1.1.1.tgz#144b21e95a1bc148205dcc2814a9134ec41b2541"
-  integrity sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==
-  dependencies:
-    call-bound "^1.0.3"
-    has-tostringtag "^1.0.2"
-
-is-number@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npmmirror.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
-  integrity sha512-4cboCqIpliH+mAvFNegjZQ4kgKc3ZUhQVr3HvWbSh5q3WH2v82ct+T2Y1hdU5Gdtorx/cLifQjqCbL7bpznLTg==
-  dependencies:
-    kind-of "^3.0.2"
-
-is-number@^7.0.0:
-  version "7.0.0"
-  resolved "https://registry.npmmirror.com/is-number/-/is-number-7.0.0.tgz#7535345b896734d5f80c4d06c50955527a14f12b"
-  integrity sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==
-
-is-plain-obj@^1.1:
-  version "1.1.0"
-  resolved "https://registry.npmmirror.com/is-plain-obj/-/is-plain-obj-1.1.0.tgz#71a50c8429dfca773c92a390a4a03b39fcd51d3e"
-  integrity sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==
-
-is-plain-object@^2.0.3, is-plain-object@^2.0.4:
-  version "2.0.4"
-  resolved "https://registry.npmmirror.com/is-plain-object/-/is-plain-object-2.0.4.tgz#2c163b3fafb1b606d9d17928f05c2a1c38e07677"
-  integrity sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==
-  dependencies:
-    isobject "^3.0.1"
-
-is-regex@^1.1.4, is-regex@^1.2.1:
-  version "1.2.1"
-  resolved "https://registry.npmmirror.com/is-regex/-/is-regex-1.2.1.tgz#76d70a3ed10ef9be48eb577887d74205bf0cad22"
-  integrity sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==
-  dependencies:
-    call-bound "^1.0.2"
-    gopd "^1.2.0"
-    has-tostringtag "^1.0.2"
-    hasown "^2.0.2"
-
-is-set@^2.0.3:
-  version "2.0.3"
-  resolved "https://registry.npmmirror.com/is-set/-/is-set-2.0.3.tgz#8ab209ea424608141372ded6e0cb200ef1d9d01d"
-  integrity sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==
-
-is-shared-array-buffer@^1.0.4:
-  version "1.0.4"
-  resolved "https://registry.npmmirror.com/is-shared-array-buffer/-/is-shared-array-buffer-1.0.4.tgz#9b67844bd9b7f246ba0708c3a93e34269c774f6f"
-  integrity sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==
-  dependencies:
-    call-bound "^1.0.3"
-
-is-string@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.npmmirror.com/is-string/-/is-string-1.1.1.tgz#92ea3f3d5c5b6e039ca8677e5ac8d07ea773cbb9"
-  integrity sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==
-  dependencies:
-    call-bound "^1.0.3"
-    has-tostringtag "^1.0.2"
-
-is-symbol@^1.0.4, is-symbol@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.npmmirror.com/is-symbol/-/is-symbol-1.1.1.tgz#f47761279f532e2b05a7024a7506dbbedacd0634"
-  integrity sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==
-  dependencies:
-    call-bound "^1.0.2"
-    has-symbols "^1.1.0"
-    safe-regex-test "^1.1.0"
-
-is-typed-array@^1.1.13, is-typed-array@^1.1.14, is-typed-array@^1.1.15:
-  version "1.1.15"
-  resolved "https://registry.npmmirror.com/is-typed-array/-/is-typed-array-1.1.15.tgz#4bfb4a45b61cee83a5a46fba778e4e8d59c0ce0b"
-  integrity sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==
-  dependencies:
-    which-typed-array "^1.1.16"
-
-is-weakmap@^2.0.2:
-  version "2.0.2"
-  resolved "https://registry.npmmirror.com/is-weakmap/-/is-weakmap-2.0.2.tgz#bf72615d649dfe5f699079c54b83e47d1ae19cfd"
-  integrity sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==
-
-is-weakref@^1.0.2, is-weakref@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.npmmirror.com/is-weakref/-/is-weakref-1.1.1.tgz#eea430182be8d64174bd96bffbc46f21bf3f9293"
-  integrity sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==
-  dependencies:
-    call-bound "^1.0.3"
-
-is-weakset@^2.0.3:
-  version "2.0.4"
-  resolved "https://registry.npmmirror.com/is-weakset/-/is-weakset-2.0.4.tgz#c9f5deb0bc1906c6d6f1027f284ddf459249daca"
-  integrity sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==
-  dependencies:
-    call-bound "^1.0.3"
-    get-intrinsic "^1.2.6"
-
-is-what@^4.1.8:
-  version "4.1.16"
-  resolved "https://registry.npmmirror.com/is-what/-/is-what-4.1.16.tgz#1ad860a19da8b4895ad5495da3182ce2acdd7a6f"
-  integrity sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A==
-
-is-windows@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npmmirror.com/is-windows/-/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
-  integrity sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==
-
-isarray@1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npmmirror.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
-  integrity sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==
-
-isarray@^2.0.5:
-  version "2.0.5"
-  resolved "https://registry.npmmirror.com/isarray/-/isarray-2.0.5.tgz#8af1e4c1221244cc62459faf38940d4e644a5723"
-  integrity sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==
-
-isexe@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npmmirror.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10"
-  integrity sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==
-
-isobject@^2.0.0, isobject@^2.1.0:
-  version "2.1.0"
-  resolved "https://registry.npmmirror.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
-  integrity sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==
-  dependencies:
-    isarray "1.0.0"
-
-isobject@^3.0.0, isobject@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.npmmirror.com/isobject/-/isobject-3.0.1.tgz#4e431e92b11a9731636aa1f9c8d1ccbcfdab78df"
-  integrity sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==
-
-jackspeak@^3.1.2:
-  version "3.4.3"
-  resolved "https://registry.npmmirror.com/jackspeak/-/jackspeak-3.4.3.tgz#8833a9d89ab4acde6188942bd1c53b6390ed5a8a"
-  integrity sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==
-  dependencies:
-    "@isaacs/cliui" "^8.0.2"
-  optionalDependencies:
-    "@pkgjs/parseargs" "^0.11.0"
-
-jiti@^2.6.0:
-  version "2.6.1"
-  resolved "https://registry.npmmirror.com/jiti/-/jiti-2.6.1.tgz#178ef2fc9a1a594248c20627cd820187a4d78d92"
-  integrity sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==
-
-js-base64@^2.1.9:
-  version "2.6.4"
-  resolved "https://registry.npmmirror.com/js-base64/-/js-base64-2.6.4.tgz#f4e686c5de1ea1f867dbcad3d46d969428df98c4"
-  integrity sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==
-
-js-beautify@1.14.11:
-  version "1.14.11"
-  resolved "https://registry.npmmirror.com/js-beautify/-/js-beautify-1.14.11.tgz#57b17e009549ac845bdc58eddf8e1862e311314e"
-  integrity sha512-rPogWqAfoYh1Ryqqh2agUpVfbxAhbjuN1SmU86dskQUKouRiggUTCO4+2ym9UPXllc2WAp0J+T5qxn7Um3lCdw==
-  dependencies:
-    config-chain "^1.1.13"
-    editorconfig "^1.0.3"
-    glob "^10.3.3"
-    nopt "^7.2.0"
-
-js-cookie@3.0.5:
-  version "3.0.5"
-  resolved "https://registry.npmmirror.com/js-cookie/-/js-cookie-3.0.5.tgz#0b7e2fd0c01552c58ba86e0841f94dc2557dcdbc"
-  integrity sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==
-
-js-tokens@^9.0.1:
-  version "9.0.1"
-  resolved "https://registry.npmmirror.com/js-tokens/-/js-tokens-9.0.1.tgz#2ec43964658435296f6761b34e10671c2d9527f4"
-  integrity sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==
-
-jsencrypt@3.3.2:
-  version "3.3.2"
-  resolved "https://registry.npmmirror.com/jsencrypt/-/jsencrypt-3.3.2.tgz#b0f1a2278810c7ba1cb8957af11195354622df7c"
-  integrity sha512-arQR1R1ESGdAxY7ZheWr12wCaF2yF47v5qpB76TtV64H1pyGudk9Hvw8Y9tb/FiTIaaTRUyaSnm5T/Y53Ghm/A==
-
-json5@^1.0.1:
-  version "1.0.2"
-  resolved "https://registry.npmmirror.com/json5/-/json5-1.0.2.tgz#63d98d60f21b313b77c4d6da18bfa69d80e1d593"
-  integrity sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==
-  dependencies:
-    minimist "^1.2.0"
-
-jsonfile@^6.0.1:
-  version "6.2.0"
-  resolved "https://registry.npmmirror.com/jsonfile/-/jsonfile-6.2.0.tgz#7c265bd1b65de6977478300087c99f1c84383f62"
-  integrity sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==
-  dependencies:
-    universalify "^2.0.0"
-  optionalDependencies:
-    graceful-fs "^4.1.6"
-
-kind-of@^3.0.2, kind-of@^3.0.3, kind-of@^3.2.0:
-  version "3.2.2"
-  resolved "https://registry.npmmirror.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
-  integrity sha512-NOW9QQXMoZGg/oqnVNoNTTIFEIid1627WCffUBJEdMxYApq7mNE7CpzucIPc+ZQg25Phej7IJSmX3hO+oblOtQ==
-  dependencies:
-    is-buffer "^1.1.5"
-
-kind-of@^4.0.0:
-  version "4.0.0"
-  resolved "https://registry.npmmirror.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
-  integrity sha512-24XsCxmEbRwEDbz/qz3stgin8TTzZ1ESR56OMCN0ujYg+vRutNSiOj9bHH9u85DKgXguraugV5sFuvbD4FW/hw==
-  dependencies:
-    is-buffer "^1.1.5"
-
-kind-of@^5.0.2:
-  version "5.1.0"
-  resolved "https://registry.npmmirror.com/kind-of/-/kind-of-5.1.0.tgz#729c91e2d857b7a419a1f9aa65685c4c33f5845d"
-  integrity sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==
-
-kind-of@^6.0.2:
-  version "6.0.3"
-  resolved "https://registry.npmmirror.com/kind-of/-/kind-of-6.0.3.tgz#07c05034a6c349fa06e24fa35aa76db4580ce4dd"
-  integrity sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==
-
-lightningcss-darwin-arm64@1.30.1:
-  version "1.30.1"
-  resolved "https://registry.npmmirror.com/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.30.1.tgz#3d47ce5e221b9567c703950edf2529ca4a3700ae"
-  integrity sha512-c8JK7hyE65X1MHMN+Viq9n11RRC7hgin3HhYKhrMyaXflk5GVplZ60IxyoVtzILeKr+xAJwg6zK6sjTBJ0FKYQ==
-
-lightningcss-darwin-x64@1.30.1:
-  version "1.30.1"
-  resolved "https://registry.npmmirror.com/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.30.1.tgz#e81105d3fd6330860c15fe860f64d39cff5fbd22"
-  integrity sha512-k1EvjakfumAQoTfcXUcHQZhSpLlkAuEkdMBsI/ivWw9hL+7FtilQc0Cy3hrx0AAQrVtQAbMI7YjCgYgvn37PzA==
-
-lightningcss-freebsd-x64@1.30.1:
-  version "1.30.1"
-  resolved "https://registry.npmmirror.com/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.30.1.tgz#a0e732031083ff9d625c5db021d09eb085af8be4"
-  integrity sha512-kmW6UGCGg2PcyUE59K5r0kWfKPAVy4SltVeut+umLCFoJ53RdCUWxcRDzO1eTaxf/7Q2H7LTquFHPL5R+Gjyig==
-
-lightningcss-linux-arm-gnueabihf@1.30.1:
-  version "1.30.1"
-  resolved "https://registry.npmmirror.com/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.30.1.tgz#1f5ecca6095528ddb649f9304ba2560c72474908"
-  integrity sha512-MjxUShl1v8pit+6D/zSPq9S9dQ2NPFSQwGvxBCYaBYLPlCWuPh9/t1MRS8iUaR8i+a6w7aps+B4N0S1TYP/R+Q==
-
-lightningcss-linux-arm64-gnu@1.30.1:
-  version "1.30.1"
-  resolved "https://registry.npmmirror.com/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.30.1.tgz#eee7799726103bffff1e88993df726f6911ec009"
-  integrity sha512-gB72maP8rmrKsnKYy8XUuXi/4OctJiuQjcuqWNlJQ6jZiWqtPvqFziskH3hnajfvKB27ynbVCucKSm2rkQp4Bw==
-
-lightningcss-linux-arm64-musl@1.30.1:
-  version "1.30.1"
-  resolved "https://registry.npmmirror.com/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.30.1.tgz#f2e4b53f42892feeef8f620cbb889f7c064a7dfe"
-  integrity sha512-jmUQVx4331m6LIX+0wUhBbmMX7TCfjF5FoOH6SD1CttzuYlGNVpA7QnrmLxrsub43ClTINfGSYyHe2HWeLl5CQ==
-
-lightningcss-linux-x64-gnu@1.30.1:
-  version "1.30.1"
-  resolved "https://registry.npmmirror.com/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.30.1.tgz#2fc7096224bc000ebb97eea94aea248c5b0eb157"
-  integrity sha512-piWx3z4wN8J8z3+O5kO74+yr6ze/dKmPnI7vLqfSqI8bccaTGY5xiSGVIJBDd5K5BHlvVLpUB3S2YCfelyJ1bw==
-
-lightningcss-linux-x64-musl@1.30.1:
-  version "1.30.1"
-  resolved "https://registry.npmmirror.com/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.30.1.tgz#66dca2b159fd819ea832c44895d07e5b31d75f26"
-  integrity sha512-rRomAK7eIkL+tHY0YPxbc5Dra2gXlI63HL+v1Pdi1a3sC+tJTcFrHX+E86sulgAXeI7rSzDYhPSeHHjqFhqfeQ==
-
-lightningcss-win32-arm64-msvc@1.30.1:
-  version "1.30.1"
-  resolved "https://registry.npmmirror.com/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.30.1.tgz#7d8110a19d7c2d22bfdf2f2bb8be68e7d1b69039"
-  integrity sha512-mSL4rqPi4iXq5YVqzSsJgMVFENoa4nGTT/GjO2c0Yl9OuQfPsIfncvLrEW6RbbB24WtZ3xP/2CCmI3tNkNV4oA==
-
-lightningcss-win32-x64-msvc@1.30.1:
-  version "1.30.1"
-  resolved "https://registry.npmmirror.com/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.30.1.tgz#fd7dd008ea98494b85d24b4bea016793f2e0e352"
-  integrity sha512-PVqXh48wh4T53F/1CCu8PIPCxLzWyCnn/9T5W1Jpmdy5h9Cwd+0YQS6/LwhHXSafuc61/xg9Lv5OrCby6a++jg==
-
-lightningcss@1.30.1:
-  version "1.30.1"
-  resolved "https://registry.npmmirror.com/lightningcss/-/lightningcss-1.30.1.tgz#78e979c2d595bfcb90d2a8c0eb632fe6c5bfed5d"
-  integrity sha512-xi6IyHML+c9+Q3W0S4fCQJOym42pyurFiJUHEcEyHS0CeKzia4yZDEsLlqOFykxOdHpNy0NmvVO31vcSqAxJCg==
-  dependencies:
-    detect-libc "^2.0.3"
-  optionalDependencies:
-    lightningcss-darwin-arm64 "1.30.1"
-    lightningcss-darwin-x64 "1.30.1"
-    lightningcss-freebsd-x64 "1.30.1"
-    lightningcss-linux-arm-gnueabihf "1.30.1"
-    lightningcss-linux-arm64-gnu "1.30.1"
-    lightningcss-linux-arm64-musl "1.30.1"
-    lightningcss-linux-x64-gnu "1.30.1"
-    lightningcss-linux-x64-musl "1.30.1"
-    lightningcss-win32-arm64-msvc "1.30.1"
-    lightningcss-win32-x64-msvc "1.30.1"
-
-loader-utils@^1.1.0:
-  version "1.4.2"
-  resolved "https://registry.npmmirror.com/loader-utils/-/loader-utils-1.4.2.tgz#29a957f3a63973883eb684f10ffd3d151fec01a3"
-  integrity sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==
-  dependencies:
-    big.js "^5.2.2"
-    emojis-list "^3.0.0"
-    json5 "^1.0.1"
-
-local-pkg@^0.5.1:
-  version "0.5.1"
-  resolved "https://registry.npmmirror.com/local-pkg/-/local-pkg-0.5.1.tgz#69658638d2a95287534d4c2fff757980100dbb6d"
-  integrity sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==
-  dependencies:
-    mlly "^1.7.3"
-    pkg-types "^1.2.1"
-
-local-pkg@^1.0.0:
-  version "1.1.2"
-  resolved "https://registry.npmmirror.com/local-pkg/-/local-pkg-1.1.2.tgz#c03d208787126445303f8161619dc701afa4abb5"
-  integrity sha512-arhlxbFRmoQHl33a0Zkle/YWlmNwoyt6QNZEIJcqNbdrsix5Lvc4HyyI3EnwxTYlZYc32EbYrQ8SzEZ7dqgg9A==
-  dependencies:
-    mlly "^1.7.4"
-    pkg-types "^2.3.0"
-    quansync "^0.2.11"
-
-lodash-es@^4.17.21:
-  version "4.17.21"
-  resolved "https://registry.npmmirror.com/lodash-es/-/lodash-es-4.17.21.tgz#43e626c46e6591b7750beb2b50117390c609e3ee"
-  integrity sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==
-
-lodash-unified@^1.0.2:
-  version "1.0.3"
-  resolved "https://registry.npmmirror.com/lodash-unified/-/lodash-unified-1.0.3.tgz#80b1eac10ed2eb02ed189f08614a29c27d07c894"
-  integrity sha512-WK9qSozxXOD7ZJQlpSqOT+om2ZfcT4yO+03FuzAHD0wF6S0l0090LRPDx3vhTTLZ8cFKpBn+IOcVXK6qOcIlfQ==
-
-lodash.clonedeep@^4.5.0:
-  version "4.5.0"
-  resolved "https://registry.npmmirror.com/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz#e23f3f9c4f8fbdde872529c1071857a086e5ccef"
-  integrity sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==
-
-lodash.isequal@^4.5.0:
-  version "4.5.0"
-  resolved "https://registry.npmmirror.com/lodash.isequal/-/lodash.isequal-4.5.0.tgz#415c4478f2bcc30120c22ce10ed3226f7d3e18e0"
-  integrity sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==
-
-lodash@^4.17.21:
-  version "4.17.21"
-  resolved "https://registry.npmmirror.com/lodash/-/lodash-4.17.21.tgz#679591c564c3bffaae8454cf0b3df370c3d6911c"
-  integrity sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==
-
-lru-cache@^10.2.0:
-  version "10.4.3"
-  resolved "https://registry.npmmirror.com/lru-cache/-/lru-cache-10.4.3.tgz#410fc8a17b70e598013df257c2446b7f3383f119"
-  integrity sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==
-
-magic-string@^0.26.2:
-  version "0.26.7"
-  resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.26.7.tgz#caf7daf61b34e9982f8228c4527474dac8981d6f"
-  integrity sha512-hX9XH3ziStPoPhJxLq1syWuZMxbDvGNbVchfrdCtanC7D13888bMFow61x8axrx+GfHLtVeAx2kxL7tTGRl+Ow==
-  dependencies:
-    sourcemap-codec "^1.4.8"
-
-magic-string@^0.30.14, magic-string@^0.30.17, magic-string@^0.30.19:
-  version "0.30.19"
-  resolved "https://registry.npmmirror.com/magic-string/-/magic-string-0.30.19.tgz#cebe9f104e565602e5d2098c5f2e79a77cc86da9"
-  integrity sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==
-  dependencies:
-    "@jridgewell/sourcemap-codec" "^1.5.5"
-
-map-cache@^0.2.2:
-  version "0.2.2"
-  resolved "https://registry.npmmirror.com/map-cache/-/map-cache-0.2.2.tgz#c32abd0bd6525d9b051645bb4f26ac5dc98a0dbf"
-  integrity sha512-8y/eV9QQZCiyn1SprXSrCmqJN0yNRATe+PO8ztwqrvrbdRLA3eYJF0yaR0YayLWkMbsQSKWS9N2gPcGEc4UsZg==
-
-map-visit@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npmmirror.com/map-visit/-/map-visit-1.0.0.tgz#ecdca8f13144e660f1b5bd41f12f3479d98dfb8f"
-  integrity sha512-4y7uGv8bd2WdM9vpQsiQNo41Ln1NvhvDRuVt0k2JZQ+ezN2uaQes7lZeZ+QQUHOLQAtDaBJ+7wCbi+ab/KFs+w==
-  dependencies:
-    object-visit "^1.0.0"
-
-math-intrinsics@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.npmmirror.com/math-intrinsics/-/math-intrinsics-1.1.0.tgz#a0dd74be81e2aa5c2f27e65ce283605ee4e2b7f9"
-  integrity sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==
-
-mdn-data@2.0.14:
-  version "2.0.14"
-  resolved "https://registry.npmmirror.com/mdn-data/-/mdn-data-2.0.14.tgz#7113fc4281917d63ce29b43446f701e68c25ba50"
-  integrity sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==
-
-memoize-one@^6.0.0:
-  version "6.0.0"
-  resolved "https://registry.npmmirror.com/memoize-one/-/memoize-one-6.0.0.tgz#b2591b871ed82948aee4727dc6abceeeac8c1045"
-  integrity sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==
-
-merge-options@1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npmmirror.com/merge-options/-/merge-options-1.0.1.tgz#2a64b24457becd4e4dc608283247e94ce589aa32"
-  integrity sha512-iuPV41VWKWBIOpBsjoxjDZw8/GbSfZ2mk7N1453bwMrfzdrIk7EzBd+8UVR6rkw67th7xnk9Dytl3J+lHPdxvg==
-  dependencies:
-    is-plain-obj "^1.1"
-
-merge2@^1.3.0:
-  version "1.4.1"
-  resolved "https://registry.npmmirror.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae"
-  integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==
-
-micromatch@3.1.0:
-  version "3.1.0"
-  resolved "https://registry.npmmirror.com/micromatch/-/micromatch-3.1.0.tgz#5102d4eaf20b6997d6008e3acfe1c44a3fa815e2"
-  integrity sha512-3StSelAE+hnRvMs8IdVW7Uhk8CVed5tp+kLLGlBP6WiRAXS21GPGu/Nat4WNPXj2Eoc24B02SaeoyozPMfj0/g==
-  dependencies:
-    arr-diff "^4.0.0"
-    array-unique "^0.3.2"
-    braces "^2.2.2"
-    define-property "^1.0.0"
-    extend-shallow "^2.0.1"
-    extglob "^2.0.2"
-    fragment-cache "^0.2.1"
-    kind-of "^5.0.2"
-    nanomatch "^1.2.1"
-    object.pick "^1.3.0"
-    regex-not "^1.0.0"
-    snapdragon "^0.8.1"
-    to-regex "^3.0.1"
-
-micromatch@^4.0.8:
-  version "4.0.8"
-  resolved "https://registry.npmmirror.com/micromatch/-/micromatch-4.0.8.tgz#d66fa18f3a47076789320b9b1af32bd86d9fa202"
-  integrity sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==
-  dependencies:
-    braces "^3.0.3"
-    picomatch "^2.3.1"
-
-mime-db@1.52.0:
-  version "1.52.0"
-  resolved "https://registry.npmmirror.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70"
-  integrity sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==
-
-mime-types@^2.1.12:
-  version "2.1.35"
-  resolved "https://registry.npmmirror.com/mime-types/-/mime-types-2.1.35.tgz#381a871b62a734450660ae3deee44813f70d959a"
-  integrity sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==
-  dependencies:
-    mime-db "1.52.0"
-
-minimatch@9.0.1:
-  version "9.0.1"
-  resolved "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.1.tgz#8a555f541cf976c622daf078bb28f29fb927c253"
-  integrity sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==
-  dependencies:
-    brace-expansion "^2.0.1"
-
-minimatch@^9.0.4, minimatch@^9.0.5:
-  version "9.0.5"
-  resolved "https://registry.npmmirror.com/minimatch/-/minimatch-9.0.5.tgz#d74f9dd6b57d83d8e98cfb82133b03978bc929e5"
-  integrity sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==
-  dependencies:
-    brace-expansion "^2.0.1"
-
-minimist@^1.2.0:
-  version "1.2.8"
-  resolved "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c"
-  integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==
-
-"minipass@^5.0.0 || ^6.0.2 || ^7.0.0", minipass@^7.0.4, minipass@^7.1.2:
-  version "7.1.2"
-  resolved "https://registry.npmmirror.com/minipass/-/minipass-7.1.2.tgz#93a9626ce5e5e66bd4db86849e7515e92340a707"
-  integrity sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==
-
-minizlib@^3.1.0:
-  version "3.1.0"
-  resolved "https://registry.npmmirror.com/minizlib/-/minizlib-3.1.0.tgz#6ad76c3a8f10227c9b51d1c9ac8e30b27f5a251c"
-  integrity sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==
-  dependencies:
-    minipass "^7.1.2"
-
-mitt@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.npmmirror.com/mitt/-/mitt-3.0.1.tgz#ea36cf0cc30403601ae074c8f77b7092cdab36d1"
-  integrity sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==
-
-mixin-deep@^1.2.0:
-  version "1.3.2"
-  resolved "https://registry.npmmirror.com/mixin-deep/-/mixin-deep-1.3.2.tgz#1120b43dc359a785dce65b55b82e257ccf479566"
-  integrity sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==
-  dependencies:
-    for-in "^1.0.2"
-    is-extendable "^1.0.1"
-
-mlly@^1.7.3, mlly@^1.7.4:
-  version "1.8.0"
-  resolved "https://registry.npmmirror.com/mlly/-/mlly-1.8.0.tgz#e074612b938af8eba1eaf43299cbc89cb72d824e"
-  integrity sha512-l8D9ODSRWLe2KHJSifWGwBqpTZXIXTeo8mlKjY+E2HAakaTeNpqAyBZ8GSqLzHgw4XmHmC8whvpjJNMbFZN7/g==
-  dependencies:
-    acorn "^8.15.0"
-    pathe "^2.0.3"
-    pkg-types "^1.3.1"
-    ufo "^1.6.1"
-
-ms@2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npmmirror.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
-  integrity sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==
-
-ms@^2.1.3:
-  version "2.1.3"
-  resolved "https://registry.npmmirror.com/ms/-/ms-2.1.3.tgz#574c8138ce1d2b5861f0b44579dbadd60c6615b2"
-  integrity sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==
-
-nanoid@^3.3.11:
-  version "3.3.11"
-  resolved "https://registry.npmmirror.com/nanoid/-/nanoid-3.3.11.tgz#4f4f112cefbe303202f2199838128936266d185b"
-  integrity sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==
-
-nanomatch@^1.2.1:
-  version "1.2.13"
-  resolved "https://registry.npmmirror.com/nanomatch/-/nanomatch-1.2.13.tgz#b87a8aa4fc0de8fe6be88895b38983ff265bd119"
-  integrity sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==
-  dependencies:
-    arr-diff "^4.0.0"
-    array-unique "^0.3.2"
-    define-property "^2.0.2"
-    extend-shallow "^3.0.2"
-    fragment-cache "^0.2.1"
-    is-windows "^1.0.2"
-    kind-of "^6.0.2"
-    object.pick "^1.3.0"
-    regex-not "^1.0.0"
-    snapdragon "^0.8.1"
-    to-regex "^3.0.1"
-
-nopt@^7.2.0:
-  version "7.2.1"
-  resolved "https://registry.npmmirror.com/nopt/-/nopt-7.2.1.tgz#1cac0eab9b8e97c9093338446eddd40b2c8ca1e7"
-  integrity sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==
-  dependencies:
-    abbrev "^2.0.0"
-
-normalize-wheel-es@^1.2.0:
-  version "1.2.0"
-  resolved "https://registry.npmmirror.com/normalize-wheel-es/-/normalize-wheel-es-1.2.0.tgz#0fa2593d619f7245a541652619105ab076acf09e"
-  integrity sha512-Wj7+EJQ8mSuXr2iWfnujrimU35R2W4FAErEyTmJoJ7ucwTn2hOUSsRehMb5RSYkxXGTM7Y9QpvPmp++w5ftoJw==
-
-nprogress@0.2.0:
-  version "0.2.0"
-  resolved "https://registry.npmmirror.com/nprogress/-/nprogress-0.2.0.tgz#cb8f34c53213d895723fcbab907e9422adbcafb1"
-  integrity sha512-I19aIingLgR1fmhftnbWWO3dXc0hSxqHQHQb3H8m+K3TnEn/iSeTZZOyvKXWqQESMwuUVnatlCnZdLBZZt2VSA==
-
-nth-check@^2.0.1:
-  version "2.1.1"
-  resolved "https://registry.npmmirror.com/nth-check/-/nth-check-2.1.1.tgz#c9eab428effce36cd6b92c924bdb000ef1f1ed1d"
-  integrity sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==
-  dependencies:
-    boolbase "^1.0.0"
-
-object-assign@^4, object-assign@^4.1.0:
-  version "4.1.1"
-  resolved "https://registry.npmmirror.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
-  integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==
-
-object-copy@^0.1.0:
-  version "0.1.0"
-  resolved "https://registry.npmmirror.com/object-copy/-/object-copy-0.1.0.tgz#7e7d858b781bd7c991a41ba975ed3812754e998c"
-  integrity sha512-79LYn6VAb63zgtmAteVOWo9Vdj71ZVBy3Pbse+VqxDpEP83XuujMrGqHIwAXJ5I/aM0zU7dIyIAhifVTPrNItQ==
-  dependencies:
-    copy-descriptor "^0.1.0"
-    define-property "^0.2.5"
-    kind-of "^3.0.3"
-
-object-inspect@^1.13.3, object-inspect@^1.13.4:
-  version "1.13.4"
-  resolved "https://registry.npmmirror.com/object-inspect/-/object-inspect-1.13.4.tgz#8375265e21bc20d0fa582c22e1b13485d6e00213"
-  integrity sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==
-
-object-is@^1.1.5:
-  version "1.1.6"
-  resolved "https://registry.npmmirror.com/object-is/-/object-is-1.1.6.tgz#1a6a53aed2dd8f7e6775ff870bea58545956ab07"
-  integrity sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==
-  dependencies:
-    call-bind "^1.0.7"
-    define-properties "^1.2.1"
-
-object-keys@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.npmmirror.com/object-keys/-/object-keys-1.1.1.tgz#1c47f272df277f3b1daf061677d9c82e2322c60e"
-  integrity sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==
-
-object-visit@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.npmmirror.com/object-visit/-/object-visit-1.0.1.tgz#f79c4493af0c5377b59fe39d395e41042dd045bb"
-  integrity sha512-GBaMwwAVK9qbQN3Scdo0OyvgPW7l3lnaVMj84uTOZlswkX0KpF6fyDBJhtTthf7pymztoN36/KEr1DyhF96zEA==
-  dependencies:
-    isobject "^3.0.0"
-
-object.assign@^4.1.7:
-  version "4.1.7"
-  resolved "https://registry.npmmirror.com/object.assign/-/object.assign-4.1.7.tgz#8c14ca1a424c6a561b0bb2a22f66f5049a945d3d"
-  integrity sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==
-  dependencies:
-    call-bind "^1.0.8"
-    call-bound "^1.0.3"
-    define-properties "^1.2.1"
-    es-object-atoms "^1.0.0"
-    has-symbols "^1.1.0"
-    object-keys "^1.1.1"
-
-object.pick@^1.3.0:
-  version "1.3.0"
-  resolved "https://registry.npmmirror.com/object.pick/-/object.pick-1.3.0.tgz#87a10ac4c1694bd2e1cbf53591a66141fb5dd747"
-  integrity sha512-tqa/UMy/CCoYmj+H5qc07qvSL9dqcs/WZENZ1JbtWBlATP+iVOe778gE6MSijnyCnORzDuX6hU+LA4SZ09YjFQ==
-  dependencies:
-    isobject "^3.0.1"
-
-own-keys@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npmmirror.com/own-keys/-/own-keys-1.0.1.tgz#e4006910a2bf913585289676eebd6f390cf51358"
-  integrity sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==
-  dependencies:
-    get-intrinsic "^1.2.6"
-    object-keys "^1.1.1"
-    safe-push-apply "^1.0.0"
-
-package-json-from-dist@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.npmmirror.com/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz#4f1471a010827a86f94cfd9b0727e36d267de505"
-  integrity sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==
-
-parchment@^1.1.4:
-  version "1.1.4"
-  resolved "https://registry.npmmirror.com/parchment/-/parchment-1.1.4.tgz#aeded7ab938fe921d4c34bc339ce1168bc2ffde5"
-  integrity sha512-J5FBQt/pM2inLzg4hEWmzQx/8h8D0CiDxaG3vyp9rKrQRSDgBlhjdP5jQGgosEajXPSQouXGHOmVdgo7QmJuOg==
-
-pascalcase@^0.1.1:
-  version "0.1.1"
-  resolved "https://registry.npmmirror.com/pascalcase/-/pascalcase-0.1.1.tgz#b363e55e8006ca6fe21784d2db22bd15d7917f14"
-  integrity sha512-XHXfu/yOQRy9vYOtUDVMN60OEJjW013GoObG1o+xwQTpB9eYJX/BjXMsdW13ZDPruFhYYn0AG22w0xgQMwl3Nw==
-
-path-key@^3.1.0:
-  version "3.1.1"
-  resolved "https://registry.npmmirror.com/path-key/-/path-key-3.1.1.tgz#581f6ade658cbba65a0d3380de7753295054f375"
-  integrity sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==
-
-path-scurry@^1.11.1:
-  version "1.11.1"
-  resolved "https://registry.npmmirror.com/path-scurry/-/path-scurry-1.11.1.tgz#7960a668888594a0720b12a911d1a742ab9f11d2"
-  integrity sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==
-  dependencies:
-    lru-cache "^10.2.0"
-    minipass "^5.0.0 || ^6.0.2 || ^7.0.0"
-
-pathe@^0.2.0:
-  version "0.2.0"
-  resolved "https://registry.npmmirror.com/pathe/-/pathe-0.2.0.tgz#30fd7bbe0a0d91f0e60bae621f5d19e9e225c339"
-  integrity sha512-sTitTPYnn23esFR3RlqYBWn4c45WGeLcsKzQiUpXJAyfcWkolvlYpV8FLo7JishK946oQwMFUCHXQ9AjGPKExw==
-
-pathe@^2.0.1, pathe@^2.0.3:
-  version "2.0.3"
-  resolved "https://registry.npmmirror.com/pathe/-/pathe-2.0.3.tgz#3ecbec55421685b70a9da872b2cff3e1cbed1716"
-  integrity sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==
-
-perfect-debounce@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npmmirror.com/perfect-debounce/-/perfect-debounce-1.0.0.tgz#9c2e8bc30b169cc984a58b7d5b28049839591d2a"
-  integrity sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==
-
-picocolors@^1.0.0, picocolors@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz#3d321af3eab939b083c8f929a1d12cda81c26b6b"
-  integrity sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==
-
-picomatch@^2.3.1:
-  version "2.3.1"
-  resolved "https://registry.npmmirror.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42"
-  integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==
-
-picomatch@^4.0.2, picomatch@^4.0.3:
-  version "4.0.3"
-  resolved "https://registry.npmmirror.com/picomatch/-/picomatch-4.0.3.tgz#796c76136d1eead715db1e7bad785dedd695a042"
-  integrity sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==
-
-pinia@3.0.2:
-  version "3.0.2"
-  resolved "https://registry.npmmirror.com/pinia/-/pinia-3.0.2.tgz#0616c2e1b39915f253c7626db3c81b7cdad695da"
-  integrity sha512-sH2JK3wNY809JOeiiURUR0wehJ9/gd9qFN2Y828jCbxEzKEmEt0pzCXwqiSTfuRsK9vQsOflSdnbdBOGrhtn+g==
-  dependencies:
-    "@vue/devtools-api" "^7.7.2"
-
-pkg-types@^1.2.1, pkg-types@^1.3.0, pkg-types@^1.3.1:
-  version "1.3.1"
-  resolved "https://registry.npmmirror.com/pkg-types/-/pkg-types-1.3.1.tgz#bd7cc70881192777eef5326c19deb46e890917df"
-  integrity sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==
-  dependencies:
-    confbox "^0.1.8"
-    mlly "^1.7.4"
-    pathe "^2.0.1"
-
-pkg-types@^2.3.0:
-  version "2.3.0"
-  resolved "https://registry.npmmirror.com/pkg-types/-/pkg-types-2.3.0.tgz#037f2c19bd5402966ff6810e32706558cb5b5726"
-  integrity sha512-SIqCzDRg0s9npO5XQ3tNZioRY1uK06lA41ynBC1YmFTmnY6FjUjVt6s4LoADmwoig1qqD0oK8h1p/8mlMx8Oig==
-  dependencies:
-    confbox "^0.2.2"
-    exsolve "^1.0.7"
-    pathe "^2.0.3"
-
-posix-character-classes@^0.1.0:
-  version "0.1.1"
-  resolved "https://registry.npmmirror.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab"
-  integrity sha512-xTgYBc3fuo7Yt7JbiuFxSYGToMoz8fLoE6TC9Wx1P/u+LfeThMOAqmuyECnlBaaJb+u1m9hHiXUEtwW4OzfUJg==
-
-possible-typed-array-names@^1.0.0:
-  version "1.1.0"
-  resolved "https://registry.npmmirror.com/possible-typed-array-names/-/possible-typed-array-names-1.1.0.tgz#93e3582bc0e5426586d9d07b79ee40fc841de4ae"
-  integrity sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==
-
-postcss-prefix-selector@^1.6.0:
-  version "1.16.1"
-  resolved "https://registry.npmmirror.com/postcss-prefix-selector/-/postcss-prefix-selector-1.16.1.tgz#87a77523838b79c0e8aec29f173234b2987cdc04"
-  integrity sha512-Umxu+FvKMwlY6TyDzGFoSUnzW+NOfMBLyC1tAkIjgX+Z/qGspJeRjVC903D7mx7TuBpJlwti2ibXtWuA7fKMeQ==
-
-postcss@^5.2.17:
-  version "5.2.18"
-  resolved "https://registry.npmmirror.com/postcss/-/postcss-5.2.18.tgz#badfa1497d46244f6390f58b319830d9107853c5"
-  integrity sha512-zrUjRRe1bpXKsX1qAJNJjqZViErVuyEkMTRrwu4ud4sbTtIBRmtaYDrHmcGgmrbsW3MHfmtIf+vJumgQn+PrXg==
-  dependencies:
-    chalk "^1.1.3"
-    js-base64 "^2.1.9"
-    source-map "^0.5.6"
-    supports-color "^3.2.3"
-
-postcss@^8.5.3, postcss@^8.5.6:
-  version "8.5.6"
-  resolved "https://registry.npmmirror.com/postcss/-/postcss-8.5.6.tgz#2825006615a619b4f62a9e7426cc120b349a8f3c"
-  integrity sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==
-  dependencies:
-    nanoid "^3.3.11"
-    picocolors "^1.1.1"
-    source-map-js "^1.2.1"
-
-posthtml-parser@^0.2.0, posthtml-parser@^0.2.1:
-  version "0.2.1"
-  resolved "https://registry.npmmirror.com/posthtml-parser/-/posthtml-parser-0.2.1.tgz#35d530de386740c2ba24ff2eb2faf39ccdf271dd"
-  integrity sha512-nPC53YMqJnc/+1x4fRYFfm81KV2V+G9NZY+hTohpYg64Ay7NemWWcV4UWuy/SgMupqQ3kJ88M/iRfZmSnxT+pw==
-  dependencies:
-    htmlparser2 "^3.8.3"
-    isobject "^2.1.0"
-
-posthtml-rename-id@^1.0:
-  version "1.0.12"
-  resolved "https://registry.npmmirror.com/posthtml-rename-id/-/posthtml-rename-id-1.0.12.tgz#cf7f6eb37146bf1afac31e68f18c6cc19ae61433"
-  integrity sha512-UKXf9OF/no8WZo9edRzvuMenb6AD5hDLzIepJW+a4oJT+T/Lx7vfMYWT4aWlGNQh0WMhnUx1ipN9OkZ9q+ddEw==
-  dependencies:
-    escape-string-regexp "1.0.5"
-
-posthtml-render@^1.0.5, posthtml-render@^1.0.6:
-  version "1.4.0"
-  resolved "https://registry.npmmirror.com/posthtml-render/-/posthtml-render-1.4.0.tgz#40114070c45881cacb93347dae3eff53afbcff13"
-  integrity sha512-W1779iVHGfq0Fvh2PROhCe2QhB8mEErgqzo1wpIt36tCgChafP+hbXIhLDOM8ePJrZcFs0vkNEtdibEWVqChqw==
-
-posthtml-svg-mode@^1.0.3:
-  version "1.0.3"
-  resolved "https://registry.npmmirror.com/posthtml-svg-mode/-/posthtml-svg-mode-1.0.3.tgz#abd554face81223cab0cb367e18e4efd2a4e74b0"
-  integrity sha512-hEqw9NHZ9YgJ2/0G7CECOeuLQKZi8HjWLkBaSVtOWjygQ9ZD8P7tqeowYs7WrFdKsWEKG7o+IlsPY8jrr0CJpQ==
-  dependencies:
-    merge-options "1.0.1"
-    posthtml "^0.9.2"
-    posthtml-parser "^0.2.1"
-    posthtml-render "^1.0.6"
-
-posthtml@^0.9.2:
-  version "0.9.2"
-  resolved "https://registry.npmmirror.com/posthtml/-/posthtml-0.9.2.tgz#f4c06db9f67b61fd17c4e256e7e3d9515bf726fd"
-  integrity sha512-spBB5sgC4cv2YcW03f/IAUN1pgDJWNWD8FzkyY4mArLUMJW+KlQhlmUdKAHQuPfb00Jl5xIfImeOsf6YL8QK7Q==
-  dependencies:
-    posthtml-parser "^0.2.0"
-    posthtml-render "^1.0.5"
-
-proto-list@~1.2.1:
-  version "1.2.4"
-  resolved "https://registry.npmmirror.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849"
-  integrity sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==
-
-proxy-from-env@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.npmmirror.com/proxy-from-env/-/proxy-from-env-1.1.0.tgz#e102f16ca355424865755d2c9e8ea4f24d58c3e2"
-  integrity sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==
-
-quansync@^0.2.11:
-  version "0.2.11"
-  resolved "https://registry.npmmirror.com/quansync/-/quansync-0.2.11.tgz#f9c3adda2e1272e4f8cf3f1457b04cbdb4ee692a"
-  integrity sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==
-
-query-string@^4.3.2:
-  version "4.3.4"
-  resolved "https://registry.npmmirror.com/query-string/-/query-string-4.3.4.tgz#bbb693b9ca915c232515b228b1a02b609043dbeb"
-  integrity sha512-O2XLNDBIg1DnTOa+2XrIwSiXEV8h2KImXUnjhhn2+UsvZ+Es2uyd5CCRTNQlDGbzUQOW3aYCBx9rVA6dzsiY7Q==
-  dependencies:
-    object-assign "^4.1.0"
-    strict-uri-encode "^1.0.0"
-
-queue-microtask@^1.2.2:
-  version "1.2.3"
-  resolved "https://registry.npmmirror.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243"
-  integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==
-
-quill-delta@^3.6.2:
-  version "3.6.3"
-  resolved "https://registry.npmmirror.com/quill-delta/-/quill-delta-3.6.3.tgz#b19fd2b89412301c60e1ff213d8d860eac0f1032"
-  integrity sha512-wdIGBlcX13tCHOXGMVnnTVFtGRLoP0imqxM696fIPwIf5ODIYUHIvHbZcyvGlZFiFhK5XzDC2lpjbxRhnM05Tg==
-  dependencies:
-    deep-equal "^1.0.1"
-    extend "^3.0.2"
-    fast-diff "1.1.2"
-
-quill-delta@^4.2.2:
-  version "4.2.2"
-  resolved "https://registry.npmmirror.com/quill-delta/-/quill-delta-4.2.2.tgz#015397d046e0a3bed087cd8a51f98c11a1b8f351"
-  integrity sha512-qjbn82b/yJzOjstBgkhtBjN2TNK+ZHP/BgUQO+j6bRhWQQdmj2lH6hXG7+nwwLF41Xgn//7/83lxs9n2BkTtTg==
-  dependencies:
-    fast-diff "1.2.0"
-    lodash.clonedeep "^4.5.0"
-    lodash.isequal "^4.5.0"
-
-quill@^1.3.7:
-  version "1.3.7"
-  resolved "https://registry.npmmirror.com/quill/-/quill-1.3.7.tgz#da5b2f3a2c470e932340cdbf3668c9f21f9286e8"
-  integrity sha512-hG/DVzh/TiknWtE6QmWAF/pxoZKYxfe3J/d/+ShUWkDvvkZQVTPeVmUJVu1uE6DDooC4fWTiCLh84ul89oNz5g==
-  dependencies:
-    clone "^2.1.1"
-    deep-equal "^1.0.1"
-    eventemitter3 "^2.0.3"
-    extend "^3.0.2"
-    parchment "^1.1.4"
-    quill-delta "^3.6.2"
-
-readable-stream@^3.1.1:
-  version "3.6.2"
-  resolved "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967"
-  integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==
-  dependencies:
-    inherits "^2.0.3"
-    string_decoder "^1.1.1"
-    util-deprecate "^1.0.1"
-
-reflect.getprototypeof@^1.0.6, reflect.getprototypeof@^1.0.9:
-  version "1.0.10"
-  resolved "https://registry.npmmirror.com/reflect.getprototypeof/-/reflect.getprototypeof-1.0.10.tgz#c629219e78a3316d8b604c765ef68996964e7bf9"
-  integrity sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==
-  dependencies:
-    call-bind "^1.0.8"
-    define-properties "^1.2.1"
-    es-abstract "^1.23.9"
-    es-errors "^1.3.0"
-    es-object-atoms "^1.0.0"
-    get-intrinsic "^1.2.7"
-    get-proto "^1.0.1"
-    which-builtin-type "^1.2.1"
-
-regex-not@^1.0.0, regex-not@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npmmirror.com/regex-not/-/regex-not-1.0.2.tgz#1f4ece27e00b0b65e0247a6810e6a85d83a5752c"
-  integrity sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==
-  dependencies:
-    extend-shallow "^3.0.2"
-    safe-regex "^1.1.0"
-
-regexp.prototype.flags@^1.5.1, regexp.prototype.flags@^1.5.4:
-  version "1.5.4"
-  resolved "https://registry.npmmirror.com/regexp.prototype.flags/-/regexp.prototype.flags-1.5.4.tgz#1ad6c62d44a259007e55b3970e00f746efbcaa19"
-  integrity sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==
-  dependencies:
-    call-bind "^1.0.8"
-    define-properties "^1.2.1"
-    es-errors "^1.3.0"
-    get-proto "^1.0.1"
-    gopd "^1.2.0"
-    set-function-name "^2.0.2"
-
-repeat-element@^1.1.2:
-  version "1.1.4"
-  resolved "https://registry.npmmirror.com/repeat-element/-/repeat-element-1.1.4.tgz#be681520847ab58c7568ac75fbfad28ed42d39e9"
-  integrity sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==
-
-repeat-string@^1.6.1:
-  version "1.6.1"
-  resolved "https://registry.npmmirror.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
-  integrity sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==
-
-resolve-url@^0.2.1:
-  version "0.2.1"
-  resolved "https://registry.npmmirror.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a"
-  integrity sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==
-
-ret@~0.1.10:
-  version "0.1.15"
-  resolved "https://registry.npmmirror.com/ret/-/ret-0.1.15.tgz#b8a4825d5bdb1fc3f6f53c2bc33f81388681c7bc"
-  integrity sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==
-
-reusify@^1.0.4:
-  version "1.1.0"
-  resolved "https://registry.npmmirror.com/reusify/-/reusify-1.1.0.tgz#0fe13b9522e1473f51b558ee796e08f11f9b489f"
-  integrity sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==
-
-rfdc@^1.4.1:
-  version "1.4.1"
-  resolved "https://registry.npmmirror.com/rfdc/-/rfdc-1.4.1.tgz#778f76c4fb731d93414e8f925fbecf64cce7f6ca"
-  integrity sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==
-
-rollup@^4.34.9:
-  version "4.52.5"
-  resolved "https://registry.npmmirror.com/rollup/-/rollup-4.52.5.tgz#96982cdcaedcdd51b12359981f240f94304ec235"
-  integrity sha512-3GuObel8h7Kqdjt0gxkEzaifHTqLVW56Y/bjN7PSQtkKr0w3V/QYSdt6QWYtd7A1xUtYQigtdUfgj1RvWVtorw==
-  dependencies:
-    "@types/estree" "1.0.8"
-  optionalDependencies:
-    "@rollup/rollup-android-arm-eabi" "4.52.5"
-    "@rollup/rollup-android-arm64" "4.52.5"
-    "@rollup/rollup-darwin-arm64" "4.52.5"
-    "@rollup/rollup-darwin-x64" "4.52.5"
-    "@rollup/rollup-freebsd-arm64" "4.52.5"
-    "@rollup/rollup-freebsd-x64" "4.52.5"
-    "@rollup/rollup-linux-arm-gnueabihf" "4.52.5"
-    "@rollup/rollup-linux-arm-musleabihf" "4.52.5"
-    "@rollup/rollup-linux-arm64-gnu" "4.52.5"
-    "@rollup/rollup-linux-arm64-musl" "4.52.5"
-    "@rollup/rollup-linux-loong64-gnu" "4.52.5"
-    "@rollup/rollup-linux-ppc64-gnu" "4.52.5"
-    "@rollup/rollup-linux-riscv64-gnu" "4.52.5"
-    "@rollup/rollup-linux-riscv64-musl" "4.52.5"
-    "@rollup/rollup-linux-s390x-gnu" "4.52.5"
-    "@rollup/rollup-linux-x64-gnu" "4.52.5"
-    "@rollup/rollup-linux-x64-musl" "4.52.5"
-    "@rollup/rollup-openharmony-arm64" "4.52.5"
-    "@rollup/rollup-win32-arm64-msvc" "4.52.5"
-    "@rollup/rollup-win32-ia32-msvc" "4.52.5"
-    "@rollup/rollup-win32-x64-gnu" "4.52.5"
-    "@rollup/rollup-win32-x64-msvc" "4.52.5"
-    fsevents "~2.3.2"
-
-run-parallel@^1.1.9:
-  version "1.2.0"
-  resolved "https://registry.npmmirror.com/run-parallel/-/run-parallel-1.2.0.tgz#66d1368da7bdf921eb9d95bd1a9229e7f21a43ee"
-  integrity sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==
-  dependencies:
-    queue-microtask "^1.2.2"
-
-rxjs@^7.4.0:
-  version "7.8.2"
-  resolved "https://registry.npmmirror.com/rxjs/-/rxjs-7.8.2.tgz#955bc473ed8af11a002a2be52071bf475638607b"
-  integrity sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==
-  dependencies:
-    tslib "^2.1.0"
-
-safe-array-concat@^1.1.3:
-  version "1.1.3"
-  resolved "https://registry.npmmirror.com/safe-array-concat/-/safe-array-concat-1.1.3.tgz#c9e54ec4f603b0bbb8e7e5007a5ee7aecd1538c3"
-  integrity sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==
-  dependencies:
-    call-bind "^1.0.8"
-    call-bound "^1.0.2"
-    get-intrinsic "^1.2.6"
-    has-symbols "^1.1.0"
-    isarray "^2.0.5"
-
-safe-buffer@~5.2.0:
-  version "5.2.1"
-  resolved "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6"
-  integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==
-
-safe-push-apply@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npmmirror.com/safe-push-apply/-/safe-push-apply-1.0.0.tgz#01850e981c1602d398c85081f360e4e6d03d27f5"
-  integrity sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==
-  dependencies:
-    es-errors "^1.3.0"
-    isarray "^2.0.5"
-
-safe-regex-test@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.npmmirror.com/safe-regex-test/-/safe-regex-test-1.1.0.tgz#7f87dfb67a3150782eaaf18583ff5d1711ac10c1"
-  integrity sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==
-  dependencies:
-    call-bound "^1.0.2"
-    es-errors "^1.3.0"
-    is-regex "^1.2.1"
-
-safe-regex@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.npmmirror.com/safe-regex/-/safe-regex-1.1.0.tgz#40a3669f3b077d1e943d44629e157dd48023bf2e"
-  integrity sha512-aJXcif4xnaNUzvUuC5gcb46oTS7zvg4jpMTnuqtrEPlR3vFr4pxtdTwaF1Qs3Enjn9HK+ZlwQui+a7z0SywIzg==
-  dependencies:
-    ret "~0.1.10"
-
-sass-embedded-android-arm64@1.89.1:
-  version "1.89.1"
-  resolved "https://registry.npmmirror.com/sass-embedded-android-arm64/-/sass-embedded-android-arm64-1.89.1.tgz#388af77b07fc8e74e30e2fd12547e79135188907"
-  integrity sha512-Je6x7uuJRGQdr5ziSJdaPA4NhBSO26BU/E55qiuMUZpjq2EWBEJPbNeugu/cWlCEmfqoVuxj37r8aEU+KG0H1g==
-
-sass-embedded-android-arm@1.89.1:
-  version "1.89.1"
-  resolved "https://registry.npmmirror.com/sass-embedded-android-arm/-/sass-embedded-android-arm-1.89.1.tgz#01bb3c6b4cace8c892e3982fae5b64ccf00c7819"
-  integrity sha512-wVchZSz8zbJBwwOs9/iwco/M5G3L5BaeqwUF1EC3Gtzn1BsXYUEkJfftW2HxGl4hQz2YlpR7BY1GRN817uxADA==
-
-sass-embedded-android-riscv64@1.89.1:
-  version "1.89.1"
-  resolved "https://registry.npmmirror.com/sass-embedded-android-riscv64/-/sass-embedded-android-riscv64-1.89.1.tgz#c893e22c86c9c15d60b336fce7bfd45f986341bd"
-  integrity sha512-DhWe+A4RVtpHMVaQgdzRpiczAXKPl7XhyY9USkY9Xkhv94+csTfjyuFmsUuCpKSiQDQkD+rGByfg+9yQIk/RgQ==
-
-sass-embedded-android-x64@1.89.1:
-  version "1.89.1"
-  resolved "https://registry.npmmirror.com/sass-embedded-android-x64/-/sass-embedded-android-x64-1.89.1.tgz#be7ec4ffd6f45f02cd313d3bc92d9db13571899e"
-  integrity sha512-LTEzxTXrv3evPiHBmDMtJtO5tEprg7bvNOwYTjDEhE9ZCYdb70l+haIY0dVyhGxyeaBJlyvatjWOKEduPP3Lyw==
-
-sass-embedded-darwin-arm64@1.89.1:
-  version "1.89.1"
-  resolved "https://registry.npmmirror.com/sass-embedded-darwin-arm64/-/sass-embedded-darwin-arm64-1.89.1.tgz#1c93f4a64d045a6ee605eb321636cea76fd62b01"
-  integrity sha512-7qMO4BLdIOFMMc1M+hg5iWEjPxbPlH1XTPUCwyuXYqubz6kXkdrrtJXolNAAey/0ZOE6uXk0APugm93a/veQdQ==
-
-sass-embedded-darwin-x64@1.89.1:
-  version "1.89.1"
-  resolved "https://registry.npmmirror.com/sass-embedded-darwin-x64/-/sass-embedded-darwin-x64-1.89.1.tgz#18f1f24152fd324d193c5ce0d4fd15f9601dc816"
-  integrity sha512-Jzuws3NNx4YtDdL2/skP8BvGqMBKn26XINehwLnD2kgbh0+k+vKNWt5JDomvIuZVLsK8zWrMoRkXpk4wuHdqrw==
-
-sass-embedded-linux-arm64@1.89.1:
-  version "1.89.1"
-  resolved "https://registry.npmmirror.com/sass-embedded-linux-arm64/-/sass-embedded-linux-arm64-1.89.1.tgz#a979b93ed3c9a7d08cb7907788321170a8a08b2a"
-  integrity sha512-h967EV2armjV+Re+hHv7LaIzCOvV6DoFod9GJhXTdnPvilqs7DAPTUfN07wOqbzjlaGEnITZXzLsWAoZ1Z7tWQ==
-
-sass-embedded-linux-arm@1.89.1:
-  version "1.89.1"
-  resolved "https://registry.npmmirror.com/sass-embedded-linux-arm/-/sass-embedded-linux-arm-1.89.1.tgz#cdbe618812dc290159a055b7cb79096b6b3ea291"
-  integrity sha512-8TvFr/lh7FARtNr9mM57m7NNvtSZwnlkXtfY1D48B81Ve6GgtLqQhELNzvTcfQ0WZa0aNnVjq9XUuWLlrMDaZQ==
-
-sass-embedded-linux-musl-arm64@1.89.1:
-  version "1.89.1"
-  resolved "https://registry.npmmirror.com/sass-embedded-linux-musl-arm64/-/sass-embedded-linux-musl-arm64-1.89.1.tgz#65cd5f8f282427110a9fe92719256a6220ee37dd"
-  integrity sha512-l4TrsUmE3AEPy2gDThb+OQV5xSyrb807DJbkQiFtTwvtOZAAkoVl1v2QeocW0npgKjc/W7nHMiSempJe0UcV7w==
-
-sass-embedded-linux-musl-arm@1.89.1:
-  version "1.89.1"
-  resolved "https://registry.npmmirror.com/sass-embedded-linux-musl-arm/-/sass-embedded-linux-musl-arm-1.89.1.tgz#1c89c1935e97fb8d13040bc31b50103c2864e0b3"
-  integrity sha512-Tl8wDL+3qFa/AhvZZBb1OvhN1SvIsRSLaPdGP8cv3VmKKVBdlLp2zedPTlcLJpR9dG/bjtGJYGX15kWHAvZ6mQ==
-
-sass-embedded-linux-musl-riscv64@1.89.1:
-  version "1.89.1"
-  resolved "https://registry.npmmirror.com/sass-embedded-linux-musl-riscv64/-/sass-embedded-linux-musl-riscv64-1.89.1.tgz#fadabfd479011c74e6acf0a4b5e726e6726f5b7a"
-  integrity sha512-YJVZmz032U7dv4RW3u+SJGp+DQWmYWc5fX/aXzLuoL6PPUPon1/Sseaf/5YGtcuQf8RnxZBbM2nFHFVHDJfsQw==
-
-sass-embedded-linux-musl-x64@1.89.1:
-  version "1.89.1"
-  resolved "https://registry.npmmirror.com/sass-embedded-linux-musl-x64/-/sass-embedded-linux-musl-x64-1.89.1.tgz#b7ff8e8b4cd373280787ec6b2aa2c7c86f66574d"
-  integrity sha512-67ijpk87V0VlpdVTtgnfIzRkVUMtEH79nvGctvNpk0XT6v+oxoFRljFRiYItZOxb5gRZMnvtkgaz1VHVcMrhtg==
-
-sass-embedded-linux-riscv64@1.89.1:
-  version "1.89.1"
-  resolved "https://registry.npmmirror.com/sass-embedded-linux-riscv64/-/sass-embedded-linux-riscv64-1.89.1.tgz#920ece2275d92759fe401a7f6ba7b1b48f4943e6"
-  integrity sha512-SQNWy5kUvlQJUKRXFy8jS05DBik+2ERIWDxOBk+QuJYEIktlA9fKKBU8c7RkgpZFNXSXZa0W1Gy27oOFCzhhuA==
-
-sass-embedded-linux-x64@1.89.1:
-  version "1.89.1"
-  resolved "https://registry.npmmirror.com/sass-embedded-linux-x64/-/sass-embedded-linux-x64-1.89.1.tgz#6b889421010bc4b8eb883c2de5a75d6590cef3ed"
-  integrity sha512-KUqGzBvTDZG6D3Pq41sCzqO1wkxM0WmxxlI7PTuVkvgciTywHf8F7mkg2alMLVZQ6APJEYtlnCGQgn4cCgYsqw==
-
-sass-embedded-win32-arm64@1.89.1:
-  version "1.89.1"
-  resolved "https://registry.npmmirror.com/sass-embedded-win32-arm64/-/sass-embedded-win32-arm64-1.89.1.tgz#7d01659bc9e01d3582799466461fb8b9e19136eb"
-  integrity sha512-Lk6dYA18RasZxQhShT91G7Z2o7+F9necTNJ951a5AICsSJpTbg3tTnAGB7Rvd6xB5reQSZoXfB/zXKEKwtzaow==
-
-sass-embedded-win32-x64@1.89.1:
-  version "1.89.1"
-  resolved "https://registry.npmmirror.com/sass-embedded-win32-x64/-/sass-embedded-win32-x64-1.89.1.tgz#46aa08fa522d99b786379b809ba89415e721be57"
-  integrity sha512-YlvzrzFPHd4GKa04jMfP0t2DGJHPTm7zN4GEYtaOFqeS6BoEAUY5kBNYFy7zhwKesN3kGyU/D9rz1MfLRgGv0g==
-
-sass-embedded@1.89.1:
-  version "1.89.1"
-  resolved "https://registry.npmmirror.com/sass-embedded/-/sass-embedded-1.89.1.tgz#5a9c0ba1450bbfe4d8ff0c1a2d1ca13a772cc1e4"
-  integrity sha512-alvGGlyYdkSXYKOfS/TTxUD0993EYOe3adIPtwCWEg037qe183p2dkYnbaRsCLJFKt+QoyRzhsrbCsK7sbR6MA==
-  dependencies:
-    "@bufbuild/protobuf" "^2.0.0"
-    buffer-builder "^0.2.0"
-    colorjs.io "^0.5.0"
-    immutable "^5.0.2"
-    rxjs "^7.4.0"
-    supports-color "^8.1.1"
-    sync-child-process "^1.0.2"
-    varint "^6.0.0"
-  optionalDependencies:
-    sass-embedded-android-arm "1.89.1"
-    sass-embedded-android-arm64 "1.89.1"
-    sass-embedded-android-riscv64 "1.89.1"
-    sass-embedded-android-x64 "1.89.1"
-    sass-embedded-darwin-arm64 "1.89.1"
-    sass-embedded-darwin-x64 "1.89.1"
-    sass-embedded-linux-arm "1.89.1"
-    sass-embedded-linux-arm64 "1.89.1"
-    sass-embedded-linux-musl-arm "1.89.1"
-    sass-embedded-linux-musl-arm64 "1.89.1"
-    sass-embedded-linux-musl-riscv64 "1.89.1"
-    sass-embedded-linux-musl-x64 "1.89.1"
-    sass-embedded-linux-riscv64 "1.89.1"
-    sass-embedded-linux-x64 "1.89.1"
-    sass-embedded-win32-arm64 "1.89.1"
-    sass-embedded-win32-x64 "1.89.1"
-
-scule@^1.3.0:
-  version "1.3.0"
-  resolved "https://registry.npmmirror.com/scule/-/scule-1.3.0.tgz#6efbd22fd0bb801bdcc585c89266a7d2daa8fbd3"
-  integrity sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==
-
-select@^1.1.2:
-  version "1.1.2"
-  resolved "https://registry.npmmirror.com/select/-/select-1.1.2.tgz#0e7350acdec80b1108528786ec1d4418d11b396d"
-  integrity sha512-OwpTSOfy6xSs1+pwcNrv0RBMOzI39Lp3qQKUTPVVPRjCdNa5JH/oPRiqsesIskK8TVgmRiHwO4KXlV2Li9dANA==
-
-semver@^7.5.3:
-  version "7.7.3"
-  resolved "https://registry.npmmirror.com/semver/-/semver-7.7.3.tgz#4b5f4143d007633a8dc671cd0a6ef9147b8bb946"
-  integrity sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==
-
-set-function-length@^1.2.2:
-  version "1.2.2"
-  resolved "https://registry.npmmirror.com/set-function-length/-/set-function-length-1.2.2.tgz#aac72314198eaed975cf77b2c3b6b880695e5449"
-  integrity sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==
-  dependencies:
-    define-data-property "^1.1.4"
-    es-errors "^1.3.0"
-    function-bind "^1.1.2"
-    get-intrinsic "^1.2.4"
-    gopd "^1.0.1"
-    has-property-descriptors "^1.0.2"
-
-set-function-name@^2.0.2:
-  version "2.0.2"
-  resolved "https://registry.npmmirror.com/set-function-name/-/set-function-name-2.0.2.tgz#16a705c5a0dc2f5e638ca96d8a8cd4e1c2b90985"
-  integrity sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==
-  dependencies:
-    define-data-property "^1.1.4"
-    es-errors "^1.3.0"
-    functions-have-names "^1.2.3"
-    has-property-descriptors "^1.0.2"
-
-set-proto@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npmmirror.com/set-proto/-/set-proto-1.0.0.tgz#0760dbcff30b2d7e801fd6e19983e56da337565e"
-  integrity sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==
-  dependencies:
-    dunder-proto "^1.0.1"
-    es-errors "^1.3.0"
-    es-object-atoms "^1.0.0"
-
-set-value@^2.0.0, set-value@^2.0.1:
-  version "2.0.1"
-  resolved "https://registry.npmmirror.com/set-value/-/set-value-2.0.1.tgz#a18d40530e6f07de4228c7defe4227af8cad005b"
-  integrity sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==
-  dependencies:
-    extend-shallow "^2.0.1"
-    is-extendable "^0.1.1"
-    is-plain-object "^2.0.3"
-    split-string "^3.0.1"
-
-shebang-command@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npmmirror.com/shebang-command/-/shebang-command-2.0.0.tgz#ccd0af4f8835fbdc265b82461aaf0c36663f34ea"
-  integrity sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==
-  dependencies:
-    shebang-regex "^3.0.0"
-
-shebang-regex@^3.0.0:
-  version "3.0.0"
-  resolved "https://registry.npmmirror.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172"
-  integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==
-
-side-channel-list@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npmmirror.com/side-channel-list/-/side-channel-list-1.0.0.tgz#10cb5984263115d3b7a0e336591e290a830af8ad"
-  integrity sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==
-  dependencies:
-    es-errors "^1.3.0"
-    object-inspect "^1.13.3"
-
-side-channel-map@^1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npmmirror.com/side-channel-map/-/side-channel-map-1.0.1.tgz#d6bb6b37902c6fef5174e5f533fab4c732a26f42"
-  integrity sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==
-  dependencies:
-    call-bound "^1.0.2"
-    es-errors "^1.3.0"
-    get-intrinsic "^1.2.5"
-    object-inspect "^1.13.3"
-
-side-channel-weakmap@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npmmirror.com/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz#11dda19d5368e40ce9ec2bdc1fb0ecbc0790ecea"
-  integrity sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==
-  dependencies:
-    call-bound "^1.0.2"
-    es-errors "^1.3.0"
-    get-intrinsic "^1.2.5"
-    object-inspect "^1.13.3"
-    side-channel-map "^1.0.1"
-
-side-channel@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.npmmirror.com/side-channel/-/side-channel-1.1.0.tgz#c3fcff9c4da932784873335ec9765fa94ff66bc9"
-  integrity sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==
-  dependencies:
-    es-errors "^1.3.0"
-    object-inspect "^1.13.3"
-    side-channel-list "^1.0.0"
-    side-channel-map "^1.0.1"
-    side-channel-weakmap "^1.0.2"
-
-signal-exit@^4.0.1:
-  version "4.1.0"
-  resolved "https://registry.npmmirror.com/signal-exit/-/signal-exit-4.1.0.tgz#952188c1cbd546070e2dd20d0f41c0ae0530cb04"
-  integrity sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==
-
-snapdragon-node@^2.0.1:
-  version "2.1.1"
-  resolved "https://registry.npmmirror.com/snapdragon-node/-/snapdragon-node-2.1.1.tgz#6c175f86ff14bdb0724563e8f3c1b021a286853b"
-  integrity sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==
-  dependencies:
-    define-property "^1.0.0"
-    isobject "^3.0.0"
-    snapdragon-util "^3.0.1"
-
-snapdragon-util@^3.0.1:
-  version "3.0.1"
-  resolved "https://registry.npmmirror.com/snapdragon-util/-/snapdragon-util-3.0.1.tgz#f956479486f2acd79700693f6f7b805e45ab56e2"
-  integrity sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==
-  dependencies:
-    kind-of "^3.2.0"
-
-snapdragon@^0.8.1:
-  version "0.8.2"
-  resolved "https://registry.npmmirror.com/snapdragon/-/snapdragon-0.8.2.tgz#64922e7c565b0e14204ba1aa7d6964278d25182d"
-  integrity sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==
-  dependencies:
-    base "^0.11.1"
-    debug "^2.2.0"
-    define-property "^0.2.5"
-    extend-shallow "^2.0.1"
-    map-cache "^0.2.2"
-    source-map "^0.5.6"
-    source-map-resolve "^0.5.0"
-    use "^3.1.0"
-
-sortablejs@1.14.0:
-  version "1.14.0"
-  resolved "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.14.0.tgz#6d2e17ccbdb25f464734df621d4f35d4ab35b3d8"
-  integrity sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==
-
-sortablejs@^1.15.6:
-  version "1.15.6"
-  resolved "https://registry.npmmirror.com/sortablejs/-/sortablejs-1.15.6.tgz#ff93699493f5b8ab8d828f933227b4988df1d393"
-  integrity sha512-aNfiuwMEpfBM/CN6LY0ibyhxPfPbyFeBTYJKCvzkJ2GkUpazIt3H+QIPAMHwqQ7tMKaHz1Qj+rJJCqljnf4p3A==
-
-source-map-js@^1.2.1:
-  version "1.2.1"
-  resolved "https://registry.npmmirror.com/source-map-js/-/source-map-js-1.2.1.tgz#1ce5650fddd87abc099eda37dcff024c2667ae46"
-  integrity sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==
-
-source-map-resolve@^0.5.0:
-  version "0.5.3"
-  resolved "https://registry.npmmirror.com/source-map-resolve/-/source-map-resolve-0.5.3.tgz#190866bece7553e1f8f267a2ee82c606b5509a1a"
-  integrity sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==
-  dependencies:
-    atob "^2.1.2"
-    decode-uri-component "^0.2.0"
-    resolve-url "^0.2.1"
-    source-map-url "^0.4.0"
-    urix "^0.1.0"
-
-source-map-url@^0.4.0:
-  version "0.4.1"
-  resolved "https://registry.npmmirror.com/source-map-url/-/source-map-url-0.4.1.tgz#0af66605a745a5a2f91cf1bbf8a7afbc283dec56"
-  integrity sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==
-
-source-map@^0.5.6:
-  version "0.5.7"
-  resolved "https://registry.npmmirror.com/source-map/-/source-map-0.5.7.tgz#8a039d2d1021d22d1ea14c80d8ea468ba2ef3fcc"
-  integrity sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==
-
-source-map@^0.6.1:
-  version "0.6.1"
-  resolved "https://registry.npmmirror.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
-  integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==
-
-sourcemap-codec@^1.4.8:
-  version "1.4.8"
-  resolved "https://registry.npmmirror.com/sourcemap-codec/-/sourcemap-codec-1.4.8.tgz#ea804bd94857402e6992d05a38ef1ae35a9ab4c4"
-  integrity sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==
-
-speakingurl@^14.0.1:
-  version "14.0.1"
-  resolved "https://registry.npmmirror.com/speakingurl/-/speakingurl-14.0.1.tgz#f37ec8ddc4ab98e9600c1c9ec324a8c48d772a53"
-  integrity sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==
-
-split-string@^3.0.1, split-string@^3.0.2:
-  version "3.1.0"
-  resolved "https://registry.npmmirror.com/split-string/-/split-string-3.1.0.tgz#7cb09dda3a86585705c64b39a6466038682e8fe2"
-  integrity sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==
-  dependencies:
-    extend-shallow "^3.0.0"
-
-splitpanes@4.0.4:
-  version "4.0.4"
-  resolved "https://registry.npmmirror.com/splitpanes/-/splitpanes-4.0.4.tgz#e8dfbbef4e93853ea336dc43f903e20946b42c1d"
-  integrity sha512-RbysugZhjbCw5fgplvk3hOXr41stahQDtZhHVkhnnJI6H4wlGDhM2kIpbehy7v92duy9GnMa8zIhHigIV1TWtg==
-
-stable@^0.1.8:
-  version "0.1.8"
-  resolved "https://registry.npmmirror.com/stable/-/stable-0.1.8.tgz#836eb3c8382fe2936feaf544631017ce7d47a3cf"
-  integrity sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==
-
-static-extend@^0.1.1:
-  version "0.1.2"
-  resolved "https://registry.npmmirror.com/static-extend/-/static-extend-0.1.2.tgz#60809c39cbff55337226fd5e0b520f341f1fb5c6"
-  integrity sha512-72E9+uLc27Mt718pMHt9VMNiAL4LMsmDbBva8mxWUCkT07fSzEGMYUCk0XWY6lp0j6RBAG4cJ3mWuZv2OE3s0g==
-  dependencies:
-    define-property "^0.2.5"
-    object-copy "^0.1.0"
-
-stop-iteration-iterator@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.npmmirror.com/stop-iteration-iterator/-/stop-iteration-iterator-1.1.0.tgz#f481ff70a548f6124d0312c3aa14cbfa7aa542ad"
-  integrity sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==
-  dependencies:
-    es-errors "^1.3.0"
-    internal-slot "^1.1.0"
-
-strict-uri-encode@^1.0.0:
-  version "1.1.0"
-  resolved "https://registry.npmmirror.com/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz#279b225df1d582b1f54e65addd4352e18faa0713"
-  integrity sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==
-
-"string-width-cjs@npm:string-width@^4.2.0":
-  version "4.2.3"
-  resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
-  integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
-  dependencies:
-    emoji-regex "^8.0.0"
-    is-fullwidth-code-point "^3.0.0"
-    strip-ansi "^6.0.1"
-
-string-width@^4.1.0:
-  version "4.2.3"
-  resolved "https://registry.npmmirror.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010"
-  integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==
-  dependencies:
-    emoji-regex "^8.0.0"
-    is-fullwidth-code-point "^3.0.0"
-    strip-ansi "^6.0.1"
-
-string-width@^5.0.1, string-width@^5.1.2:
-  version "5.1.2"
-  resolved "https://registry.npmmirror.com/string-width/-/string-width-5.1.2.tgz#14f8daec6d81e7221d2a357e668cab73bdbca794"
-  integrity sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==
-  dependencies:
-    eastasianwidth "^0.2.0"
-    emoji-regex "^9.2.2"
-    strip-ansi "^7.0.1"
-
-string.prototype.trim@^1.2.10:
-  version "1.2.10"
-  resolved "https://registry.npmmirror.com/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz#40b2dd5ee94c959b4dcfb1d65ce72e90da480c81"
-  integrity sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==
-  dependencies:
-    call-bind "^1.0.8"
-    call-bound "^1.0.2"
-    define-data-property "^1.1.4"
-    define-properties "^1.2.1"
-    es-abstract "^1.23.5"
-    es-object-atoms "^1.0.0"
-    has-property-descriptors "^1.0.2"
-
-string.prototype.trimend@^1.0.9:
-  version "1.0.9"
-  resolved "https://registry.npmmirror.com/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz#62e2731272cd285041b36596054e9f66569b6942"
-  integrity sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==
-  dependencies:
-    call-bind "^1.0.8"
-    call-bound "^1.0.2"
-    define-properties "^1.2.1"
-    es-object-atoms "^1.0.0"
-
-string.prototype.trimstart@^1.0.8:
-  version "1.0.8"
-  resolved "https://registry.npmmirror.com/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz#7ee834dda8c7c17eff3118472bb35bfedaa34dde"
-  integrity sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==
-  dependencies:
-    call-bind "^1.0.7"
-    define-properties "^1.2.1"
-    es-object-atoms "^1.0.0"
-
-string_decoder@^1.1.1:
-  version "1.3.0"
-  resolved "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e"
-  integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==
-  dependencies:
-    safe-buffer "~5.2.0"
-
-"strip-ansi-cjs@npm:strip-ansi@^6.0.1":
-  version "6.0.1"
-  resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
-  integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
-  dependencies:
-    ansi-regex "^5.0.1"
-
-strip-ansi@^3.0.0:
-  version "3.0.1"
-  resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf"
-  integrity sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==
-  dependencies:
-    ansi-regex "^2.0.0"
-
-strip-ansi@^6.0.0, strip-ansi@^6.0.1:
-  version "6.0.1"
-  resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9"
-  integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==
-  dependencies:
-    ansi-regex "^5.0.1"
-
-strip-ansi@^7.0.1:
-  version "7.1.2"
-  resolved "https://registry.npmmirror.com/strip-ansi/-/strip-ansi-7.1.2.tgz#132875abde678c7ea8d691533f2e7e22bb744dba"
-  integrity sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==
-  dependencies:
-    ansi-regex "^6.0.1"
-
-strip-literal@^2.1.1:
-  version "2.1.1"
-  resolved "https://registry.npmmirror.com/strip-literal/-/strip-literal-2.1.1.tgz#26906e65f606d49f748454a08084e94190c2e5ad"
-  integrity sha512-631UJ6O00eNGfMiWG78ck80dfBab8X6IVFB51jZK5Icd7XAs60Z5y7QdSd/wGIklnWvRbUNloVzhOKKmutxQ6Q==
-  dependencies:
-    js-tokens "^9.0.1"
-
-superjson@^2.2.2:
-  version "2.2.2"
-  resolved "https://registry.npmmirror.com/superjson/-/superjson-2.2.2.tgz#9d52bf0bf6b5751a3c3472f1292e714782ba3173"
-  integrity sha512-5JRxVqC8I8NuOUjzBbvVJAKNM8qoVuH0O77h4WInc/qC2q5IreqKxYwgkga3PfA22OayK2ikceb/B26dztPl+Q==
-  dependencies:
-    copy-anything "^3.0.2"
-
-supports-color@^2.0.0:
-  version "2.0.0"
-  resolved "https://registry.npmmirror.com/supports-color/-/supports-color-2.0.0.tgz#535d045ce6b6363fa40117084629995e9df324c7"
-  integrity sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==
-
-supports-color@^3.2.3:
-  version "3.2.3"
-  resolved "https://registry.npmmirror.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6"
-  integrity sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==
-  dependencies:
-    has-flag "^1.0.0"
-
-supports-color@^7.1.0:
-  version "7.2.0"
-  resolved "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da"
-  integrity sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==
-  dependencies:
-    has-flag "^4.0.0"
-
-supports-color@^8.1.1:
-  version "8.1.1"
-  resolved "https://registry.npmmirror.com/supports-color/-/supports-color-8.1.1.tgz#cd6fc17e28500cff56c1b86c0a7fd4a54a73005c"
-  integrity sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==
-  dependencies:
-    has-flag "^4.0.0"
-
-svg-baker@1.7.0:
-  version "1.7.0"
-  resolved "https://registry.npmmirror.com/svg-baker/-/svg-baker-1.7.0.tgz#8367f78d875550c52fe4756f7303d5c5d7c2e9a7"
-  integrity sha512-nibslMbkXOIkqKVrfcncwha45f97fGuAOn1G99YwnwTj8kF9YiM6XexPcUso97NxOm6GsP0SIvYVIosBis1xLg==
-  dependencies:
-    bluebird "^3.5.0"
-    clone "^2.1.1"
-    he "^1.1.1"
-    image-size "^0.5.1"
-    loader-utils "^1.1.0"
-    merge-options "1.0.1"
-    micromatch "3.1.0"
-    postcss "^5.2.17"
-    postcss-prefix-selector "^1.6.0"
-    posthtml-rename-id "^1.0"
-    posthtml-svg-mode "^1.0.3"
-    query-string "^4.3.2"
-    traverse "^0.6.6"
-
-svgo@^2.8.0:
-  version "2.8.0"
-  resolved "https://registry.npmmirror.com/svgo/-/svgo-2.8.0.tgz#4ff80cce6710dc2795f0c7c74101e6764cfccd24"
-  integrity sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==
-  dependencies:
-    "@trysound/sax" "0.2.0"
-    commander "^7.2.0"
-    css-select "^4.1.3"
-    css-tree "^1.1.3"
-    csso "^4.2.0"
-    picocolors "^1.0.0"
-    stable "^0.1.8"
-
-sync-child-process@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npmmirror.com/sync-child-process/-/sync-child-process-1.0.2.tgz#45e7c72e756d1243e80b547ea2e17957ab9e367f"
-  integrity sha512-8lD+t2KrrScJ/7KXCSyfhT3/hRq78rC0wBFqNJXv3mZyn6hW2ypM05JmlSvtqRbeq6jqA94oHbxAr2vYsJ8vDA==
-  dependencies:
-    sync-message-port "^1.0.0"
-
-sync-message-port@^1.0.0:
-  version "1.1.3"
-  resolved "https://registry.npmmirror.com/sync-message-port/-/sync-message-port-1.1.3.tgz#6055c565ee8c81d2f9ee5aae7db757e6d9088c0c"
-  integrity sha512-GTt8rSKje5FilG+wEdfCkOcLL7LWqpMlr2c3LRuKt/YXxcJ52aGSbGBAdI4L3aaqfrBt6y711El53ItyH1NWzg==
-
-tailwindcss@4.1.14, tailwindcss@^4.1.13:
-  version "4.1.14"
-  resolved "https://registry.npmmirror.com/tailwindcss/-/tailwindcss-4.1.14.tgz#a5907cc2202a2a1f5f15bac6f2031e53117e43a8"
-  integrity sha512-b7pCxjGO98LnxVkKjaZSDeNuljC4ueKUddjENJOADtubtdo8llTaJy7HwBMeLNSSo2N5QIAgklslK1+Ir8r6CA==
-
-tapable@^2.2.0:
-  version "2.3.0"
-  resolved "https://registry.npmmirror.com/tapable/-/tapable-2.3.0.tgz#7e3ea6d5ca31ba8e078b560f0d83ce9a14aa8be6"
-  integrity sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==
-
-tar@^7.5.1:
-  version "7.5.1"
-  resolved "https://registry.npmmirror.com/tar/-/tar-7.5.1.tgz#750a8bd63b7c44c1848e7bf982260a083cf747c9"
-  integrity sha512-nlGpxf+hv0v7GkWBK2V9spgactGOp0qvfWRxUMjqHyzrt3SgwE48DIv/FhqPHJYLHpgW1opq3nERbz5Anq7n1g==
-  dependencies:
-    "@isaacs/fs-minipass" "^4.0.0"
-    chownr "^3.0.0"
-    minipass "^7.1.2"
-    minizlib "^3.1.0"
-    yallist "^5.0.0"
-
-tiny-emitter@^2.0.0:
-  version "2.1.0"
-  resolved "https://registry.npmmirror.com/tiny-emitter/-/tiny-emitter-2.1.0.tgz#1d1a56edfc51c43e863cbb5382a72330e3555423"
-  integrity sha512-NB6Dk1A9xgQPMoGqC5CVXn123gWyte215ONT5Pp5a0yt4nlEoO1ZWeCwpncaekPHXO60i47ihFnZPiRPjRMq4Q==
-
-tinyglobby@^0.2.13:
-  version "0.2.15"
-  resolved "https://registry.npmmirror.com/tinyglobby/-/tinyglobby-0.2.15.tgz#e228dd1e638cea993d2fdb4fcd2d4602a79951c2"
-  integrity sha512-j2Zq4NyQYG5XMST4cbs02Ak8iJUdxRM0XI5QyxXuZOzKOINmWurp3smXu3y5wDcJrptwpSjgXHzIQxR0omXljQ==
-  dependencies:
-    fdir "^6.5.0"
-    picomatch "^4.0.3"
-
-to-object-path@^0.3.0:
-  version "0.3.0"
-  resolved "https://registry.npmmirror.com/to-object-path/-/to-object-path-0.3.0.tgz#297588b7b0e7e0ac08e04e672f85c1f4999e17af"
-  integrity sha512-9mWHdnGRuh3onocaHzukyvCZhzvr6tiflAy/JRFXcJX0TjgfWA9pk9t8CMbzmBE4Jfw58pXbkngtBtqYxzNEyg==
-  dependencies:
-    kind-of "^3.0.2"
-
-to-regex-range@^2.1.0:
-  version "2.1.1"
-  resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-2.1.1.tgz#7c80c17b9dfebe599e27367e0d4dd5590141db38"
-  integrity sha512-ZZWNfCjUokXXDGXFpZehJIkZqq91BcULFq/Pi7M5i4JnxXdhMKAK682z8bCW3o8Hj1wuuzoKcW3DfVzaP6VuNg==
-  dependencies:
-    is-number "^3.0.0"
-    repeat-string "^1.6.1"
-
-to-regex-range@^5.0.1:
-  version "5.0.1"
-  resolved "https://registry.npmmirror.com/to-regex-range/-/to-regex-range-5.0.1.tgz#1648c44aae7c8d988a326018ed72f5b4dd0392e4"
-  integrity sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==
-  dependencies:
-    is-number "^7.0.0"
-
-to-regex@^3.0.1:
-  version "3.0.2"
-  resolved "https://registry.npmmirror.com/to-regex/-/to-regex-3.0.2.tgz#13cfdd9b336552f30b51f33a8ae1b42a7a7599ce"
-  integrity sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==
-  dependencies:
-    define-property "^2.0.2"
-    extend-shallow "^3.0.2"
-    regex-not "^1.0.2"
-    safe-regex "^1.1.0"
-
-traverse@^0.6.6:
-  version "0.6.11"
-  resolved "https://registry.npmmirror.com/traverse/-/traverse-0.6.11.tgz#e8daa071b101ae66767fffa6f177aa6f7110068e"
-  integrity sha512-vxXDZg8/+p3gblxB6BhhG5yWVn1kGRlaL8O78UDXc3wRnPizB5g83dcvWV1jpDMIPnjZjOFuxlMmE82XJ4407w==
-  dependencies:
-    gopd "^1.2.0"
-    typedarray.prototype.slice "^1.0.5"
-    which-typed-array "^1.1.18"
-
-tslib@2.3.0:
-  version "2.3.0"
-  resolved "https://registry.npmmirror.com/tslib/-/tslib-2.3.0.tgz#803b8cdab3e12ba581a4ca41c8839bbb0dacb09e"
-  integrity sha512-N82ooyxVNm6h1riLCoyS9e3fuJ3AMG2zIZs2Gd1ATcSFjSA23Q0fzjjZeh0jbJvWVDZ0cJT8yaNNaaXHzueNjg==
-
-tslib@^2.1.0, tslib@^2.4.0:
-  version "2.8.1"
-  resolved "https://registry.npmmirror.com/tslib/-/tslib-2.8.1.tgz#612efe4ed235d567e8aba5f2a5fab70280ade83f"
-  integrity sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==
-
-typed-array-buffer@^1.0.3:
-  version "1.0.3"
-  resolved "https://registry.npmmirror.com/typed-array-buffer/-/typed-array-buffer-1.0.3.tgz#a72395450a4869ec033fd549371b47af3a2ee536"
-  integrity sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==
-  dependencies:
-    call-bound "^1.0.3"
-    es-errors "^1.3.0"
-    is-typed-array "^1.1.14"
-
-typed-array-byte-length@^1.0.3:
-  version "1.0.3"
-  resolved "https://registry.npmmirror.com/typed-array-byte-length/-/typed-array-byte-length-1.0.3.tgz#8407a04f7d78684f3d252aa1a143d2b77b4160ce"
-  integrity sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==
-  dependencies:
-    call-bind "^1.0.8"
-    for-each "^0.3.3"
-    gopd "^1.2.0"
-    has-proto "^1.2.0"
-    is-typed-array "^1.1.14"
-
-typed-array-byte-offset@^1.0.4:
-  version "1.0.4"
-  resolved "https://registry.npmmirror.com/typed-array-byte-offset/-/typed-array-byte-offset-1.0.4.tgz#ae3698b8ec91a8ab945016108aef00d5bff12355"
-  integrity sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==
-  dependencies:
-    available-typed-arrays "^1.0.7"
-    call-bind "^1.0.8"
-    for-each "^0.3.3"
-    gopd "^1.2.0"
-    has-proto "^1.2.0"
-    is-typed-array "^1.1.15"
-    reflect.getprototypeof "^1.0.9"
-
-typed-array-length@^1.0.7:
-  version "1.0.7"
-  resolved "https://registry.npmmirror.com/typed-array-length/-/typed-array-length-1.0.7.tgz#ee4deff984b64be1e118b0de8c9c877d5ce73d3d"
-  integrity sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==
-  dependencies:
-    call-bind "^1.0.7"
-    for-each "^0.3.3"
-    gopd "^1.0.1"
-    is-typed-array "^1.1.13"
-    possible-typed-array-names "^1.0.0"
-    reflect.getprototypeof "^1.0.6"
-
-typedarray.prototype.slice@^1.0.5:
-  version "1.0.5"
-  resolved "https://registry.npmmirror.com/typedarray.prototype.slice/-/typedarray.prototype.slice-1.0.5.tgz#a40f896968573b33cbb466a61622d3ee615a0728"
-  integrity sha512-q7QNVDGTdl702bVFiI5eY4l/HkgCM6at9KhcFbgUAzezHFbOVy4+0O/lCjsABEQwbZPravVfBIiBVGo89yzHFg==
-  dependencies:
-    call-bind "^1.0.8"
-    define-properties "^1.2.1"
-    es-abstract "^1.23.9"
-    es-errors "^1.3.0"
-    get-proto "^1.0.1"
-    math-intrinsics "^1.1.0"
-    typed-array-buffer "^1.0.3"
-    typed-array-byte-offset "^1.0.4"
-
-ufo@^1.6.1:
-  version "1.6.1"
-  resolved "https://registry.npmmirror.com/ufo/-/ufo-1.6.1.tgz#ac2db1d54614d1b22c1d603e3aef44a85d8f146b"
-  integrity sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==
-
-unbox-primitive@^1.1.0:
-  version "1.1.0"
-  resolved "https://registry.npmmirror.com/unbox-primitive/-/unbox-primitive-1.1.0.tgz#8d9d2c9edeea8460c7f35033a88867944934d1e2"
-  integrity sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==
-  dependencies:
-    call-bound "^1.0.3"
-    has-bigints "^1.0.2"
-    has-symbols "^1.1.0"
-    which-boxed-primitive "^1.1.1"
-
-undici-types@~7.14.0:
-  version "7.14.0"
-  resolved "https://registry.npmmirror.com/undici-types/-/undici-types-7.14.0.tgz#4c037b32ca4d7d62fae042174604341588bc0840"
-  integrity sha512-QQiYxHuyZ9gQUIrmPo3IA+hUl4KYk8uSA7cHrcKd/l3p1OTpZcM0Tbp9x7FAtXdAYhlasd60ncPpgu6ihG6TOA==
-
-unimport@^3.13.4:
-  version "3.14.6"
-  resolved "https://registry.npmmirror.com/unimport/-/unimport-3.14.6.tgz#f01170aa2fb94c4f97b22c0ac2822ef7e8e0726d"
-  integrity sha512-CYvbDaTT04Rh8bmD8jz3WPmHYZRG/NnvYVzwD6V1YAlvvKROlAeNDUBhkBGzNav2RKaeuXvlWYaa1V4Lfi/O0g==
-  dependencies:
-    "@rollup/pluginutils" "^5.1.4"
-    acorn "^8.14.0"
-    escape-string-regexp "^5.0.0"
-    estree-walker "^3.0.3"
-    fast-glob "^3.3.3"
-    local-pkg "^1.0.0"
-    magic-string "^0.30.17"
-    mlly "^1.7.4"
-    pathe "^2.0.1"
-    picomatch "^4.0.2"
-    pkg-types "^1.3.0"
-    scule "^1.3.0"
-    strip-literal "^2.1.1"
-    unplugin "^1.16.1"
-
-union-value@^1.0.0:
-  version "1.0.1"
-  resolved "https://registry.npmmirror.com/union-value/-/union-value-1.0.1.tgz#0b6fe7b835aecda61c6ea4d4f02c14221e109847"
-  integrity sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==
-  dependencies:
-    arr-union "^3.1.0"
-    get-value "^2.0.6"
-    is-extendable "^0.1.1"
-    set-value "^2.0.1"
-
-universalify@^2.0.0:
-  version "2.0.1"
-  resolved "https://registry.npmmirror.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d"
-  integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==
-
-unplugin-auto-import@0.18.6:
-  version "0.18.6"
-  resolved "https://registry.npmmirror.com/unplugin-auto-import/-/unplugin-auto-import-0.18.6.tgz#6848bef1742bc457f42cf67a13e824f69debc889"
-  integrity sha512-LMFzX5DtkTj/3wZuyG5bgKBoJ7WSgzqSGJ8ppDRdlvPh45mx6t6w3OcbExQi53n3xF5MYkNGPNR/HYOL95KL2A==
-  dependencies:
-    "@antfu/utils" "^0.7.10"
-    "@rollup/pluginutils" "^5.1.3"
-    fast-glob "^3.3.2"
-    local-pkg "^0.5.1"
-    magic-string "^0.30.14"
-    minimatch "^9.0.5"
-    unimport "^3.13.4"
-    unplugin "^1.16.0"
-
-unplugin-vue-setup-extend-plus@1.0.1:
-  version "1.0.1"
-  resolved "https://registry.npmmirror.com/unplugin-vue-setup-extend-plus/-/unplugin-vue-setup-extend-plus-1.0.1.tgz#2e1e3b899dcc607b1e7cb5388058b91686659c9f"
-  integrity sha512-mW2IzkyJITyspAV/LEdnEyE1CJip9jB5fCeaVv7Q6X0oJyDrOxXoB+jyet0q5pRJNjErbjQx950/8NPTvbqLTQ==
-  dependencies:
-    "@vue/compiler-sfc" "^3.2.37"
-    magic-string "^0.26.2"
-    unplugin "^1.3.1"
-
-unplugin@^1.16.0, unplugin@^1.16.1, unplugin@^1.3.1:
-  version "1.16.1"
-  resolved "https://registry.npmmirror.com/unplugin/-/unplugin-1.16.1.tgz#a844d2e3c3b14a4ac2945c42be80409321b61199"
-  integrity sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==
-  dependencies:
-    acorn "^8.14.0"
-    webpack-virtual-modules "^0.6.2"
-
-unset-value@^1.0.0:
-  version "1.0.0"
-  resolved "https://registry.npmmirror.com/unset-value/-/unset-value-1.0.0.tgz#8376873f7d2335179ffb1e6fc3a8ed0dfc8ab559"
-  integrity sha512-PcA2tsuGSF9cnySLHTLSh2qrQiJ70mn+r+Glzxv2TWZblxsxCC52BDlZoPCsz7STd9pN7EZetkWZBAvk4cgZdQ==
-  dependencies:
-    has-value "^0.3.1"
-    isobject "^3.0.0"
-
-urix@^0.1.0:
-  version "0.1.0"
-  resolved "https://registry.npmmirror.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
-  integrity sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==
-
-use@^3.1.0:
-  version "3.1.1"
-  resolved "https://registry.npmmirror.com/use/-/use-3.1.1.tgz#d50c8cac79a19fbc20f2911f56eb973f4e10070f"
-  integrity sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==
-
-util-deprecate@^1.0.1:
-  version "1.0.2"
-  resolved "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
-  integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==
-
-varint@^6.0.0:
-  version "6.0.0"
-  resolved "https://registry.npmmirror.com/varint/-/varint-6.0.0.tgz#9881eb0ce8feaea6512439d19ddf84bf551661d0"
-  integrity sha512-cXEIW6cfr15lFv563k4GuVuW/fiwjknytD37jIOLSdSWuOI6WnO/oKwmP2FQTU2l01LP8/M5TSAJpzUaGe3uWg==
-
-vary@^1:
-  version "1.1.2"
-  resolved "https://registry.npmmirror.com/vary/-/vary-1.1.2.tgz#2299f02c6ded30d4a5961b0b9f74524a18f634fc"
-  integrity sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==
-
-vite-plugin-compression@0.5.1:
-  version "0.5.1"
-  resolved "https://registry.npmmirror.com/vite-plugin-compression/-/vite-plugin-compression-0.5.1.tgz#a75b0d8f48357ebb377b65016da9f20885ef39b6"
-  integrity sha512-5QJKBDc+gNYVqL/skgFAP81Yuzo9R+EAf19d+EtsMF/i8kFUpNi3J/H01QD3Oo8zBQn+NzoCIFkpPLynoOzaJg==
-  dependencies:
-    chalk "^4.1.2"
-    debug "^4.3.3"
-    fs-extra "^10.0.0"
-
-vite-plugin-svg-icons@2.0.1:
-  version "2.0.1"
-  resolved "https://registry.npmmirror.com/vite-plugin-svg-icons/-/vite-plugin-svg-icons-2.0.1.tgz#7269a0962593509f371b9e2bb344d469db2c6df9"
-  integrity sha512-6ktD+DhV6Rz3VtedYvBKKVA2eXF+sAQVaKkKLDSqGUfnhqXl3bj5PPkVTl3VexfTuZy66PmINi8Q6eFnVfRUmA==
-  dependencies:
-    "@types/svgo" "^2.6.1"
-    cors "^2.8.5"
-    debug "^4.3.3"
-    etag "^1.8.1"
-    fs-extra "^10.0.0"
-    pathe "^0.2.0"
-    svg-baker "1.7.0"
-    svgo "^2.8.0"
-
-vite@6.3.5:
-  version "6.3.5"
-  resolved "https://registry.npmmirror.com/vite/-/vite-6.3.5.tgz#fec73879013c9c0128c8d284504c6d19410d12a3"
-  integrity sha512-cZn6NDFE7wdTpINgs++ZJ4N49W2vRp8LCKrn3Ob1kYNtOo21vfDoaV5GzBfLU4MovSAB8uNRm4jgzVQZ+mBzPQ==
-  dependencies:
-    esbuild "^0.25.0"
-    fdir "^6.4.4"
-    picomatch "^4.0.2"
-    postcss "^8.5.3"
-    rollup "^4.34.9"
-    tinyglobby "^0.2.13"
-  optionalDependencies:
-    fsevents "~2.3.3"
-
-vue-cropper@1.1.1:
-  version "1.1.1"
-  resolved "https://registry.npmmirror.com/vue-cropper/-/vue-cropper-1.1.1.tgz#e1d2729f7139182a893e8badcb8f33257aa2a40f"
-  integrity sha512-WsqKMpaBf9Osi1LQlE/5AKdD0nHWOy1asLXocaG8NomOWO07jiZi968+/PbMmnD0QbPJOumDQaGuGa13qys85A==
-
-vue-demi@*:
-  version "0.14.10"
-  resolved "https://registry.npmmirror.com/vue-demi/-/vue-demi-0.14.10.tgz#afc78de3d6f9e11bf78c55e8510ee12814522f04"
-  integrity sha512-nMZBOwuzabUO0nLgIcc6rycZEebF6eeUfaiQx9+WSk8e29IbLvPU9feI6tqW4kTo3hvoYAJkMh8n8D0fuISphg==
-
-vue-router@4.5.1:
-  version "4.5.1"
-  resolved "https://registry.npmmirror.com/vue-router/-/vue-router-4.5.1.tgz#47bffe2d3a5479d2886a9a244547a853aa0abf69"
-  integrity sha512-ogAF3P97NPm8fJsE4by9dwSYtDwXIY1nFY9T6DyQnGHd1E2Da94w9JIolpe42LJGIl0DwOHBi8TcRPlPGwbTtw==
-  dependencies:
-    "@vue/devtools-api" "^6.6.4"
-
-vue@3.5.16:
-  version "3.5.16"
-  resolved "https://registry.npmmirror.com/vue/-/vue-3.5.16.tgz#f0cde88c2688354f00ff2d77eb295c26440f8c7a"
-  integrity sha512-rjOV2ecxMd5SiAmof2xzh2WxntRcigkX/He4YFJ6WdRvVUrbt6DxC1Iujh10XLl8xCDRDtGKMeO3D+pRQ1PP9w==
-  dependencies:
-    "@vue/compiler-dom" "3.5.16"
-    "@vue/compiler-sfc" "3.5.16"
-    "@vue/runtime-dom" "3.5.16"
-    "@vue/server-renderer" "3.5.16"
-    "@vue/shared" "3.5.16"
-
-vuedraggable@4.1.0:
-  version "4.1.0"
-  resolved "https://registry.npmmirror.com/vuedraggable/-/vuedraggable-4.1.0.tgz#edece68adb8a4d9e06accff9dfc9040e66852270"
-  integrity sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==
-  dependencies:
-    sortablejs "1.14.0"
-
-webpack-virtual-modules@^0.6.2:
-  version "0.6.2"
-  resolved "https://registry.npmmirror.com/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz#057faa9065c8acf48f24cb57ac0e77739ab9a7e8"
-  integrity sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==
-
-which-boxed-primitive@^1.1.0, which-boxed-primitive@^1.1.1:
-  version "1.1.1"
-  resolved "https://registry.npmmirror.com/which-boxed-primitive/-/which-boxed-primitive-1.1.1.tgz#d76ec27df7fa165f18d5808374a5fe23c29b176e"
-  integrity sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==
-  dependencies:
-    is-bigint "^1.1.0"
-    is-boolean-object "^1.2.1"
-    is-number-object "^1.1.1"
-    is-string "^1.1.1"
-    is-symbol "^1.1.1"
-
-which-builtin-type@^1.2.1:
-  version "1.2.1"
-  resolved "https://registry.npmmirror.com/which-builtin-type/-/which-builtin-type-1.2.1.tgz#89183da1b4907ab089a6b02029cc5d8d6574270e"
-  integrity sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==
-  dependencies:
-    call-bound "^1.0.2"
-    function.prototype.name "^1.1.6"
-    has-tostringtag "^1.0.2"
-    is-async-function "^2.0.0"
-    is-date-object "^1.1.0"
-    is-finalizationregistry "^1.1.0"
-    is-generator-function "^1.0.10"
-    is-regex "^1.2.1"
-    is-weakref "^1.0.2"
-    isarray "^2.0.5"
-    which-boxed-primitive "^1.1.0"
-    which-collection "^1.0.2"
-    which-typed-array "^1.1.16"
-
-which-collection@^1.0.2:
-  version "1.0.2"
-  resolved "https://registry.npmmirror.com/which-collection/-/which-collection-1.0.2.tgz#627ef76243920a107e7ce8e96191debe4b16c2a0"
-  integrity sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==
-  dependencies:
-    is-map "^2.0.3"
-    is-set "^2.0.3"
-    is-weakmap "^2.0.2"
-    is-weakset "^2.0.3"
-
-which-typed-array@^1.1.16, which-typed-array@^1.1.18, which-typed-array@^1.1.19:
-  version "1.1.19"
-  resolved "https://registry.npmmirror.com/which-typed-array/-/which-typed-array-1.1.19.tgz#df03842e870b6b88e117524a4b364b6fc689f956"
-  integrity sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==
-  dependencies:
-    available-typed-arrays "^1.0.7"
-    call-bind "^1.0.8"
-    call-bound "^1.0.4"
-    for-each "^0.3.5"
-    get-proto "^1.0.1"
-    gopd "^1.2.0"
-    has-tostringtag "^1.0.2"
-
-which@^2.0.1:
-  version "2.0.2"
-  resolved "https://registry.npmmirror.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1"
-  integrity sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==
-  dependencies:
-    isexe "^2.0.0"
-
-"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0":
-  version "7.0.0"
-  resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43"
-  integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==
-  dependencies:
-    ansi-styles "^4.0.0"
-    string-width "^4.1.0"
-    strip-ansi "^6.0.0"
-
-wrap-ansi@^8.1.0:
-  version "8.1.0"
-  resolved "https://registry.npmmirror.com/wrap-ansi/-/wrap-ansi-8.1.0.tgz#56dc22368ee570face1b49819975d9b9a5ead214"
-  integrity sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==
-  dependencies:
-    ansi-styles "^6.1.0"
-    string-width "^5.0.1"
-    strip-ansi "^7.0.1"
-
-yallist@^5.0.0:
-  version "5.0.0"
-  resolved "https://registry.npmmirror.com/yallist/-/yallist-5.0.0.tgz#00e2de443639ed0d78fd87de0d27469fbcffb533"
-  integrity sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==
-
-zrender@5.6.1:
-  version "5.6.1"
-  resolved "https://registry.npmmirror.com/zrender/-/zrender-5.6.1.tgz#e08d57ecf4acac708c4fcb7481eb201df7f10a6b"
-  integrity sha512-OFXkDJKcrlx5su2XbzJvj/34Q3m6PvyCZkVPHGYpcCJ52ek4U/ymZyfuV1nKE23AyBJ51E/6Yr0mhZ7xGTO4ag==
-  dependencies:
-    tslib "2.3.0"

+ 11 - 0
ie-admin/pom.xml

@@ -16,6 +16,17 @@
     </description>
 
     <dependencies>
+        <dependency>
+            <groupId>com.github.binarywang</groupId>
+            <artifactId>weixin-java-pay</artifactId>
+            <version>4.6.0</version>
+        </dependency>
+        <dependency>
+            <groupId>com.github.wechatpay-apiv3</groupId>
+            <artifactId>wechatpay-java</artifactId>
+            <version>0.2.12</version>
+        </dependency>
+
         <dependency>
             <groupId>com.vladsch.flexmark</groupId>
             <artifactId>flexmark-all</artifactId>

+ 105 - 0
ie-admin/src/main/java/com/ruoyi/web/controller/dz/BusiEcardPriceController.java

@@ -0,0 +1,105 @@
+package com.ruoyi.web.controller.dz;
+
+import java.util.List;
+import javax.servlet.http.HttpServletResponse;
+
+import com.ruoyi.voluntary.domain.BBusiEcardPrice;
+import com.ruoyi.voluntary.service.IBBusiEcardPriceService;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.PutMapping;
+import org.springframework.web.bind.annotation.DeleteMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+import com.ruoyi.common.annotation.Log;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.enums.BusinessType;
+import com.ruoyi.common.utils.poi.ExcelUtil;
+import com.ruoyi.common.core.page.TableDataInfo;
+
+/**
+ * 电子卡费用Controller
+ *
+ * @author ruoyi
+ * @date 2026-01-06
+ */
+@RestController
+@RequestMapping("/system/EcardPrice")
+public class BusiEcardPriceController extends BaseController
+{
+    @Autowired
+    private IBBusiEcardPriceService busiEcardPriceService;
+
+    /**
+     * 查询电子卡费用列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:EcardPrice:list')")
+    @GetMapping("/list")
+    public TableDataInfo list(BBusiEcardPrice busiEcardPrice)
+    {
+        startPage();
+        List<BBusiEcardPrice> list = busiEcardPriceService.selectBBusiEcardPriceList(busiEcardPrice);
+        return getDataTable(list);
+    }
+
+    /**
+     * 导出电子卡费用列表
+     */
+    @PreAuthorize("@ss.hasPermi('system:EcardPrice:export')")
+    @Log(title = "电子卡费用", businessType = BusinessType.EXPORT)
+    @PostMapping("/export")
+    public void export(HttpServletResponse response, BBusiEcardPrice busiEcardPrice)
+    {
+        List<BBusiEcardPrice> list = busiEcardPriceService.selectBBusiEcardPriceList(busiEcardPrice);
+        ExcelUtil<BBusiEcardPrice> util = new ExcelUtil<BBusiEcardPrice>(BBusiEcardPrice.class);
+        util.exportExcel(response, list, "电子卡费用数据");
+    }
+
+    /**
+     * 获取电子卡费用详细信息
+     */
+    @PreAuthorize("@ss.hasPermi('system:EcardPrice:query')")
+    @GetMapping(value = "/{id}")
+    public AjaxResult getInfo(@PathVariable("id") Long id)
+    {
+        return success(busiEcardPriceService.selectBBusiEcardPriceById(id));
+    }
+
+    /**
+     * 新增电子卡费用
+     */
+    @PreAuthorize("@ss.hasPermi('system:EcardPrice:add')")
+    @Log(title = "电子卡费用", businessType = BusinessType.INSERT)
+    @PostMapping
+    public AjaxResult add(@RequestBody BBusiEcardPrice busiEcardPrice)
+    {
+        return toAjax(busiEcardPriceService.insertBBusiEcardPrice(busiEcardPrice));
+    }
+
+    /**
+     * 修改电子卡费用
+     */
+    @PreAuthorize("@ss.hasPermi('system:EcardPrice:edit')")
+    @Log(title = "电子卡费用", businessType = BusinessType.UPDATE)
+    @PutMapping
+    public AjaxResult edit(@RequestBody BBusiEcardPrice busiEcardPrice)
+    {
+        return toAjax(busiEcardPriceService.updateBBusiEcardPrice(busiEcardPrice));
+    }
+
+    /**
+     * 删除电子卡费用
+     */
+    @PreAuthorize("@ss.hasPermi('system:EcardPrice:remove')")
+    @Log(title = "电子卡费用", businessType = BusinessType.DELETE)
+	@DeleteMapping("/{ids}")
+    public AjaxResult remove(@PathVariable Long[] ids)
+    {
+        return toAjax(busiEcardPriceService.deleteBBusiEcardPriceByIds(ids));
+    }
+}

+ 26 - 19
ie-admin/src/main/java/com/ruoyi/web/controller/dz/DzCardsController.java

@@ -77,33 +77,37 @@ public class DzCardsController extends BaseController
         prepare(dzCards);
         startPage();
         List<DzCards> list = dzCardsService.selectDzCardsList2(dzCards);
-        
+
         // 根据cardIds查询用户,并将用户的directedStudy设置给DzCard
         if (!CollectionUtils.isEmpty(list)) {
             List<Long> cardIds = list.stream()
                     .map(DzCards::getCardId)
                     .filter(cardId -> cardId != null)
                     .collect(Collectors.toList());
-            
+
             if (!CollectionUtils.isEmpty(cardIds)) {
                 List<SysUser> users = sysUserService.selectUserByCardIds(cardIds);
                 // 创建cardId到user的映射
                 Map<Long, SysUser> userMap = users.stream()
                         .filter(user -> user.getCardId() != null)
                         .collect(Collectors.toMap(SysUser::getCardId, user -> user, (existing, replacement) -> existing));
-                
+
                 // 遍历list,设置directedStudy
                 for (DzCards card : list) {
                     if (card.getCardId() != null) {
                         SysUser user = userMap.get(card.getCardId());
-                        if (user != null && user.getDirectedStudy() != null) {
-                            card.setDirectedStudy(user.getDirectedStudy());
+                        if (user != null ) {
+                            if (user.getDirectedStudy() != null){
+                                card.setDirectedStudy(user.getDirectedStudy());
+                            }
+                            card.setExamMajor(user.getExamMajor());
+                            card.setExamMajorName(user.getExamMajorName());
                         }
                     }
                 }
             }
         }
-        
+
         return getDataTable(list);
     }
 
@@ -254,9 +258,9 @@ public class DzCardsController extends BaseController
     @PostMapping("/changeCampus")
     @ApiOperation("分配校区")
     @PreAuthorize("@ss.hasPermi('dz:cards:associateCampus')")
-    public AjaxResult changeCampus(@ApiParam("校区") Long campusId, 
+    public AjaxResult changeCampus(@ApiParam("校区") Long campusId,
                                    @ApiParam("校区班级") @RequestParam(required = false) Long campusClassId,
-                                   @ApiParam("开始号") @RequestParam(required = false) String begin, 
+                                   @ApiParam("开始号") @RequestParam(required = false) String begin,
                                    @ApiParam("结束号") @RequestParam(required = false) String end,
                                    @ApiParam("卡片ID列表") @RequestParam(required = false) String cardIds) {
         // 如果cardIds不为空,使用cardIds方式;否则使用begin和end方式
@@ -298,45 +302,45 @@ public class DzCardsController extends BaseController
     @PostMapping("/change/pay")
     @ApiOperation("支付")
     public AjaxResult changePay(@ApiParam("卡ID") @RequestParam Long[] cardIds) {
-        return changeCard(CardAction.Pay, cardIds);
+        return changeCard(CardAction.Pay, cardIds, null);
     }
     @Log(title = "续费", businessType = BusinessType.UPDATE)
     @PostMapping("/change/renew")
     @ApiOperation("续费")
-    public AjaxResult changeRenew(@ApiParam("卡ID") @RequestParam Long[] cardIds) {
-        return changeCard(CardAction.Renew, cardIds);
+    public AjaxResult changeRenew(@ApiParam("卡ID") @RequestParam Long[] cardIds, @ApiParam("续费天数") @RequestParam(required = false) Integer days) {
+        return changeCard(CardAction.Renew, cardIds, days);
     }
     @Log(title = "结算", businessType = BusinessType.UPDATE)
     @PostMapping("/change/settlement")
     @ApiOperation("结算")
     public AjaxResult changeSettlement(@ApiParam("卡ID") @RequestParam Long[] cardIds) {
-        return changeCard(CardAction.Settlement, cardIds);
+        return changeCard(CardAction.Settlement, cardIds, null);
     }
     @Log(title = "重卡", businessType = BusinessType.UPDATE)
     @PostMapping("/change/reopen")
     @ApiOperation("重卡")
     public AjaxResult changeReopen(@ApiParam("卡ID") @RequestParam Long[] cardIds) {
-        return changeCard(CardAction.ReOpen, cardIds);
+        return changeCard(CardAction.ReOpen, cardIds, null);
     }
     @Log(title = "退费", businessType = BusinessType.UPDATE)
     @PostMapping("/change/refund")
     @ApiOperation("退费")
     public AjaxResult changeRefund(@ApiParam("卡ID") @RequestParam Long[] cardIds) {
-        return changeCard(CardAction.Refund, cardIds);
+        return changeCard(CardAction.Refund, cardIds, null);
     }
     @Log(title = "关卡", businessType = BusinessType.UPDATE)
     @PostMapping("/change/close")
     @ApiOperation("关卡")
     public AjaxResult changeClose(@ApiParam("卡ID") @RequestParam Long[] cardIds) {
-        return changeCard(CardAction.Close, cardIds);
+        return changeCard(CardAction.Close, cardIds, null);
     }
 
     @Log(title = "修改卡", businessType = BusinessType.UPDATE)
     @PostMapping("/changeCard")
     @ApiOperation("修改卡 重卡/关卡/支付/续费/结算")
-    public AjaxResult changeCard(@ApiParam("操作") @RequestParam CardAction action, @ApiParam("卡ID") @RequestParam Long[] cardIds)
+    public AjaxResult changeCard(@ApiParam("操作") @RequestParam CardAction action, @ApiParam("卡ID") @RequestParam Long[] cardIds, Integer days)
     {
-        dzCardsService.changeCard(action, cardIds);
+        dzCardsService.changeCard(action, cardIds,days);
         if ((CardAction.Close.equals(action) || CardAction.Refund.equals(action)) && ArrayUtils.isNotEmpty(cardIds)) {
             sysLoginService.resetTokens(sysUserService.selectUserByCardIds(Arrays.asList(cardIds)));
         } else if ((CardAction.ReOpen.equals(action) || CardAction.Renew.equals(action)) && ArrayUtils.isNotEmpty(cardIds)) {
@@ -383,7 +387,7 @@ public class DzCardsController extends BaseController
         if (null != sysUser.getDirectedStudy()) {
             cardUserBody.setDirectionStudy(JSONArray.parse(sysUser.getDirectedStudy()));
         }
-        BeanUtils.copyProperties(dzCards, cardUserBody, "password", "nickName", "location", "examType", "endYear");
+        BeanUtils.copyProperties(dzCards, cardUserBody, "password", "nickName", "location", "examType", "endYear", "examMajor", "examMajorName");
         cardUserBody.setCampusSchoolId(dzCards.getCampusId());
         return success(cardUserBody);
     }
@@ -438,8 +442,11 @@ public class DzCardsController extends BaseController
         if(!NumberUtils.isNumeric(type)) {
             return CardType.valueOf(type);
         }
-        if(Integer.parseInt(type) == 9) {
+        Integer cardType = Integer.parseInt(type);
+        if(cardType == 9) {
             return CardType.Experience;
+        } else if(cardType == 7) {
+            return CardType.ECard;
         }
         return (null == institutionId || institutionId.equals(101L)) ? CardType.Platform : CardType.Dept;
     }

+ 407 - 0
ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontECardController.java

@@ -0,0 +1,407 @@
+package com.ruoyi.web.controller.front;
+
+import com.alibaba.fastjson.JSONObject;
+import com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderV3Request;
+import com.github.binarywang.wxpay.bean.result.WxPayOrderQueryV3Result;
+import com.github.binarywang.wxpay.bean.result.enums.TradeTypeEnum;
+import com.github.binarywang.wxpay.exception.WxPayException;
+import com.github.binarywang.wxpay.service.WxPayService;
+import com.ruoyi.common.annotation.Anonymous;
+import com.ruoyi.common.core.content.VistorContextHolder;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.enums.ECardPayStatus;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.ip.IpUtils;
+import com.ruoyi.common.utils.uuid.IdUtils;
+import com.ruoyi.system.service.ISysConfigService;
+import com.ruoyi.system.service.ShortMessageService;
+import com.ruoyi.voluntary.domain.BBusiEcardPrice;
+import com.ruoyi.voluntary.domain.BBusiPaymentOrders;
+import com.ruoyi.voluntary.service.IBBusiEcardPriceService;
+import com.ruoyi.voluntary.service.IBBusiPaymentOrdersService;
+import com.ruoyi.web.service.WeixinPayService;
+import com.ruoyi.web.util.IosVerifyUtil;
+import eu.bitwalker.useragentutils.UserAgent;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.v3.oas.annotations.Operation;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.math.NumberUtils;
+import org.apache.commons.lang3.tuple.Pair;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.*;
+
+@Api(tags = "前端 电子卡业务")
+@RestController
+@RequestMapping("front/ecard")
+@Slf4j
+public class FrontECardController extends BaseController {
+
+    @Autowired
+    private IBBusiEcardPriceService ecardPriceService;
+    @Autowired
+    private IBBusiPaymentOrdersService paymentOrdersService;
+    @Autowired
+    private ShortMessageService shortMessageService;
+    @Autowired
+    private WeixinPayService weixinPayService;
+    @Autowired
+    private WxPayService wxService;
+    @Autowired
+    private ISysConfigService sysConfigService;
+
+    private static final String SUCCESS = "SUCCESS";
+    private static final String cardDesc = "在线购卡";
+    public static final String description = "VIP会员";
+
+//    @Value("${wxpay.pay.callback}")
+//    private String payCallback;
+    @Value("${wxpay.mchid}")
+    private String mchId;
+    @Value("${wxpay.key}")
+    private String mchKey;
+//    @Value("${wxpay.appid}")
+//    private String appId = WxMaConfiguration.getAppId();
+
+    public String getMchKey() {
+        return this.mchKey;
+    }
+
+    /**
+     * {
+     "amount": {
+     "currency": "CNY",
+     "payer_currency": "CNY",
+     "payer_total": 1,
+     "total": 1
+     },
+     "appid": "wx7b9ff116a897456a",
+     "attach": "",
+     "bank_type": "OTHERS",
+     "mchid": "1629698256",
+     "out_trade_no": "test_order_t1",
+     "payer": {
+     "openid": "o8uY95w2o4T-xq6e8tjKTDRr2tFg"
+     },
+     "promotion_detail": [],
+     "success_time": "2022-08-23T23:55:35+08:00",
+     "trade_state": "SUCCESS",
+     "trade_state_desc": "支付成功",
+     "trade_type": "NATIVE",
+     "transaction_id": "4200001565202208236598567532"
+     }
+     * @return
+     */
+
+    @ApiOperation(value = "5 重新生成二维码")
+    @GetMapping("/regenerateQrCode")
+    public AjaxResult regenerateQrCode(@RequestParam Long orderId) {
+        BBusiPaymentOrders order = paymentOrdersService.selectBBusiPaymentOrdersById(orderId);
+
+        String codeUrl = StringUtils.EMPTY;
+        if(StringUtils.isBlank(order.getQrcodeId())){
+            try {
+                codeUrl = weixinPayService.createOrderPayUrl(order.getPhonenumber()+"_"+orderId, order.getPayFee(), "单招"+cardDesc, null);
+                order.setQrcodeId(codeUrl);
+                paymentOrdersService.updateBBusiPaymentOrders(order);
+            } catch (Exception e) {
+                weixinPayService.processWxPayFail(orderId, null, e.getMessage());
+                logger.error("QrCodeId: ", e);
+            }
+        }else {
+            codeUrl = order.getQrcodeId();
+        }
+
+        String qrCode = weixinPayService.encodeQrCode(codeUrl);
+        JSONObject result = new JSONObject();
+        result.put("qrCode",qrCode);
+        result.put("orderId",orderId);
+        result.put("isPaySuccess",ECardPayStatus.isSuccess(order.getStatus()));
+
+        return AjaxResult.success(result);
+    }
+
+    @ApiOperation(value = "4 获取订单状态")
+    @GetMapping("/getOrderPayStatus")
+    public AjaxResult getOrderPayStatus(@RequestParam Long orderId) {
+        BBusiPaymentOrders order = paymentOrdersService.selectBBusiPaymentOrdersById(orderId);
+        JSONObject result = new JSONObject();
+        result.put("isPaySuccess",ECardPayStatus.isSuccess(order.getStatus()));
+        result.put("isPayFailed",ECardPayStatus.isFaild(order.getStatus()));
+        result.put("isUnPaid",ECardPayStatus.isUnPaid(order.getStatus()));
+        return AjaxResult.success(result);
+    }
+
+    @Operation(summary = "查询订单")
+    @GetMapping("/queryOrder")
+    public WxPayOrderQueryV3Result queryOrder(@RequestParam(required = false) String transactionId,
+                                                   @RequestParam(required = false) String outTradeNo) throws Exception {
+        WxPayOrderQueryV3Result result = wxService.queryOrderV3(transactionId, outTradeNo);
+        if("NOTPAY".equals(result.getTradeState())) {
+            Integer timeout = NumberUtils.toInt(sysConfigService.selectConfigByKey("pay.order.timeout"), 60);
+            Date timeoutDate = DateUtils.addSeconds(new Date(), -timeout);
+            BBusiPaymentOrders poCond = new BBusiPaymentOrders();
+            poCond.setOutTradeNo(outTradeNo);
+            poCond.setTransactionId(transactionId);
+            List<BBusiPaymentOrders> orders = paymentOrdersService.selectBBusiPaymentOrdersList(poCond);
+            if(CollectionUtils.isEmpty(orders) || orders.get(0).getCreateTime().before(timeoutDate)) {
+                result.setTradeState("CLOSED");
+                result.setTradeStateDesc("超时关闭");
+            }
+        }
+        return result;
+    }
+
+    @ApiOperation(value = "3 支付通知(回调)")
+    @PostMapping("/payResult")
+    public AjaxResult wxPayResult(HttpServletRequest request,
+                                  @RequestHeader("wechatpay-serial") String serial, @RequestHeader("wechatpay-signature-type") String signatureType,
+                                  @RequestHeader("wechatpay-timestamp") String timestamp, @RequestHeader("wechatpay-nonce") String nonce,
+                                  @RequestHeader("wechatpay-signature") String signature, @RequestBody String json) {
+        logger.error("----------------------开始处理微信支付回调--------------");
+        // String json = readBody(req);
+        try {
+            weixinPayService.processWxPayResult(serial, signatureType, timestamp, nonce, signature, json);
+        } catch (Exception e) {
+            logger.error("处理微信回调失败: " + signature + "\n" + json, e);
+            return AjaxResult.error("解析异常");
+        }
+        return AjaxResult.success();
+    }
+
+    @ApiOperation("02 测试支付")
+    @GetMapping(value = "checktest")
+    public AjaxResult checkTest() {
+        weixinPayService.checkWxPay();
+        return AjaxResult.success();
+    }
+
+    @ApiOperation("02 测试支付")
+    @GetMapping(value = "paytest")
+    public AjaxResult paytest(String id, Integer amount, @RequestParam(defaultValue = "false") boolean h5, HttpServletRequest request) {
+        try {
+            String os = UserAgent.parseUserAgentString(request.getHeader("User-Agent")).getOperatingSystem().getName();
+            String ip = IpUtils.getIpAddr(request);
+            WeixinPayService.PayOrderSceneInfo sceneInfo = h5 ? new WeixinPayService.PayOrderSceneInfo(ip, os) : null;
+            String codeUrl = weixinPayService.createOrderPayUrl("test_pay_" + id, amount, "Test" + id, sceneInfo);
+            return AjaxResult.success(weixinPayService.encodeQrCode(codeUrl));
+        } catch (Exception e) {
+            logger.error("QrCodeId: ", e);
+            return AjaxResult.error(e.getMessage());
+        }
+    }
+
+    @ApiOperation("02 下单生成地址")
+    @PostMapping(value = "createOrder")
+    public AjaxResult createOrder(HttpServletRequest request, Double totalFee, @RequestParam(required = false) String type) throws WxPayException {
+        if (null==totalFee){
+            AjaxResult.error("金额不能为空");
+        }
+        if(StringUtils.isBlank(type)) {
+            type = "h5";
+        }
+        SysUser u = SecurityUtils.getLoginUser().getUser();
+        Integer totalFee2 = totalFee.intValue();
+
+        BBusiPaymentOrders insertOrder = new BBusiPaymentOrders();
+        insertOrder.setCode(IdUtils.simpleUUID());
+        insertOrder.setType(cardDesc);
+//        insertOrder.setOutTime(ecardPrice.getOutTime());
+        int num = 1;
+        insertOrder.setNum(num);
+        insertOrder.setPrice(totalFee2);
+        insertOrder.setFee(totalFee2);
+        insertOrder.setTotalFee(totalFee2*num);
+        insertOrder.setPayFee(totalFee2*num);
+        insertOrder.setBody(cardDesc+"_"+description+"_" + type);
+        insertOrder.setPhonenumber(u.getPhonenumber());
+        insertOrder.setCustomerCode(String.valueOf(u.getUserId()));
+        insertOrder.setYear(String.valueOf(Calendar.getInstance().get(Calendar.YEAR)));
+        //状态(-2:已退费,-1:支付失败,0:无效,1:未支付,2:已支付)
+        insertOrder.setStatus(ECardPayStatus.unpaid.getValue());
+        insertOrder.setCreateTime(new Date());
+        paymentOrdersService.insertBBusiPaymentOrders(insertOrder);
+
+        Long orderId = insertOrder.getId();
+        if("ios".equals(type)) {
+            Map data = new HashMap<>();
+            data.put("orderId", String.valueOf(orderId));
+            return AjaxResult.success(data);
+        }
+        WxPayUnifiedOrderV3Request order = new WxPayUnifiedOrderV3Request();
+//        Integer totalFee = 1;
+        String notifyUrl = sysConfigService.selectConfigByKey("pay.callback.url") + "/front/ecard/payResult";
+        String outTradeNo = u.getPhonenumber() + "_" + orderId + "_" + u.getUserId() +"_"+System.currentTimeMillis();
+        if(outTradeNo.length() > 30) {
+            outTradeNo = outTradeNo.substring(0,20) + outTradeNo.substring(outTradeNo.length() - 10);
+        }
+        order.setDescription(description).setOutTradeNo(outTradeNo);
+
+        order.setNotifyUrl(notifyUrl).setAmount(new WxPayUnifiedOrderV3Request.Amount().setTotal(totalFee2));
+
+        WxPayUnifiedOrderV3Request.SceneInfo sceneInfo = new WxPayUnifiedOrderV3Request.SceneInfo();
+        sceneInfo.setPayerClientIp(IpUtils.getIpAddr(request));
+        WxPayUnifiedOrderV3Request.H5Info h5Info = new WxPayUnifiedOrderV3Request.H5Info();
+        String os = UserAgent.parseUserAgentString(request.getHeader("User-Agent")).getOperatingSystem().getName();
+        h5Info.setType(os);
+        sceneInfo.setH5Info(h5Info);
+        order.setSceneInfo(sceneInfo);
+        String h5Url = wxService.createOrderV3(TradeTypeEnum.H5, order);
+        String prepayId = StringUtils.substringBetween(h5Url, "prepay_id=", "&package=");
+
+        BBusiPaymentOrders upOrder = new BBusiPaymentOrders();
+        upOrder.setPrepayId(prepayId);
+        upOrder.setDetail(h5Url);
+        upOrder.setOutTradeNo(outTradeNo);
+        upOrder.setId(orderId);
+        paymentOrdersService.updateBBusiPaymentOrders(upOrder);
+
+        Map data = new HashMap<>();
+        data.put("h5url", h5Url);
+        data.put("outTradeNo", outTradeNo);
+        data.put("orderId", String.valueOf(orderId));
+        return AjaxResult.success(data);
+    }
+
+    @ApiOperation("02 下单生成二维码")
+    @GetMapping(value = "prepayCard")
+    public AjaxResult prepayCard(Long ecardPayId, String mobile, String code) {
+        Pair<Long, String> pair = prepayCard(ecardPayId, mobile, code, null);
+        if(null == pair) {
+            return AjaxResult.error("验证码校验失败");
+        }
+        String qrCode = weixinPayService.encodeQrCode(pair.getRight());
+        JSONObject result = new JSONObject();
+        result.put("qrCode",qrCode);
+        result.put("orderId",pair.getLeft());
+        return AjaxResult.success(result);
+    }
+
+    private Pair<Long, String> prepayCard(Long ecardPayId, String mobile, String code, WeixinPayService.PayOrderSceneInfo sceneInfo) {
+        boolean isSuccess = shortMessageService.checkCode(mobile, code);
+        if(!isSuccess){
+            return null;
+        }
+        //生成订单
+        BBusiEcardPrice ecardPrice = ecardPriceService.selectBBusiEcardPriceById(ecardPayId);
+        //未支付订单,不要多次生成
+        BBusiPaymentOrders order= paymentOrdersService.selectBBusiPaymentOrdersNoPaid(mobile);
+        Boolean isInsert = false;
+        if(null==order){
+            order=new BBusiPaymentOrders();
+            isInsert = true;
+        }
+        order.setCode(IdUtils.simpleUUID());
+        order.setType(cardDesc);
+        //cardId在回调中处理
+//        order.setCardId(1L);
+//        order.setCardNo("");
+        order.setOutTime(ecardPrice.getOutTime());
+        int num = 1;
+        order.setNum(num);
+        order.setFee(ecardPrice.getPrice());
+        order.setTotalFee(ecardPrice.getPrice()*num);
+        order.setPayFee(ecardPrice.getPrice()*num);
+        order.setBody(cardDesc);
+        order.setPhonenumber(mobile);
+        order.setYear(String.valueOf(ecardPrice.getYear()));
+        //状态(-2:已退费,-1:支付失败,0:无效,1:未支付,2:已支付)
+        order.setStatus(ECardPayStatus.unpaid.getValue());
+        if(isInsert){
+            paymentOrdersService.insertBBusiPaymentOrders(order);
+        }else {
+            paymentOrdersService.updateBBusiPaymentOrders(order);
+        }
+        Long orderId = order.getId();
+
+        // TODO 调用微信支付生成二维码返回给前端
+        try {
+            String codeUrl = weixinPayService.createOrderPayUrl(mobile+"_"+orderId+"_"+System.currentTimeMillis(), order.getPayFee(), "金鲤志愿"+cardDesc, sceneInfo);
+            order.setQrcodeId(codeUrl);
+        } catch (Exception e) {
+            weixinPayService.processWxPayFail(orderId, null, e.getMessage());
+            logger.error("QrCodeId: ", e);
+        }
+        order.setPrepayId("");//预支付ID
+        order.setTransactionId("");//交易ID
+        paymentOrdersService.updateBBusiPaymentOrders(order);
+        return Pair.of(orderId, order.getQrcodeId());
+    }
+
+
+    @ApiOperation("01 获取电子卡价格")
+    @Anonymous
+    @GetMapping(value = "getEcardPrices")
+    public AjaxResult getEcardPrices() {
+        BBusiEcardPrice cond = new BBusiEcardPrice();
+        cond.setLocation(VistorContextHolder.getLocation());
+        cond.setExamType(VistorContextHolder.getExamType().name());
+        return AjaxResult.success(ecardPriceService.selectBBusiEcardPriceList(cond));
+    }
+
+    @PostMapping("/iosVerifyResult")
+    public AjaxResult iosPay(@RequestBody String payload) {
+        log.info("苹果内购校验开始,base64校验体:{}", payload);
+        JSONObject reqData = JSONObject.parseObject(payload);
+        String receiptData;
+        if(null == reqData || StringUtils.isBlank(receiptData = reqData.getString("receipt"))) {
+            return error("苹果验证失败,返回数据为空");
+        }
+        Long orderId = reqData.getLong("orderId");
+        String transactionId = reqData.getString("transId");
+        //线上环境验证
+        String verifyResult = IosVerifyUtil.buyAppVerify(receiptData, 1);
+        if (verifyResult == null) {
+            return error("苹果验证失败,返回数据为空");
+        } else {
+            log.info("线上,{}苹果平台返回JSON:{}", orderId, verifyResult);
+            JSONObject appleReturn = JSONObject.parseObject(verifyResult);
+            String states = appleReturn.getString("status");
+            //无数据则沙箱环境验证
+            if ("21007".equals(states)) {
+                verifyResult = IosVerifyUtil.buyAppVerify(receiptData, 0);
+                log.info("沙盒环境,{}苹果平台返回JSON:{}", orderId, verifyResult);
+                appleReturn = JSONObject.parseObject(verifyResult);
+                states = appleReturn.getString("status");
+            }
+            log.info("苹果平台返回值:appleReturn" + appleReturn);
+            // 前端所提供的收据是有效的 验证成功
+            if (states.equals("0")) {
+                String receipt = appleReturn.getString("receipt");
+                JSONObject returnJson = JSONObject.parseObject(receipt);
+                String inApp = returnJson.getString("in_app");
+                List<HashMap> inApps = JSONObject.parseArray(inApp, HashMap.class);
+                if (!org.apache.commons.collections.CollectionUtils.isEmpty(inApps)) {
+                    ArrayList<String> transactionIds = new ArrayList<String>();
+                    for (HashMap app : inApps) {
+                        transactionIds.add((String) app.get("transaction_id"));
+                    }
+                    //交易列表包含当前交易,则认为交易成功
+                    if (transactionIds.contains(transactionId)) {
+                        //处理业务逻辑
+                        weixinPayService.processPaySuccess(orderId, transactionId, "SUCCESS", "ios", "");
+                        log.info("交易成功,处理订单:{}",orderId);
+                        return success("交易成功");
+                    }
+                    return error("当前交易不在交易列表中");
+                }
+                return error("未能获取获取到交易列表");
+            } else {
+                weixinPayService.processPaySuccess(orderId, transactionId, "FAILURE", "ios", states);
+                return error("支付失败,错误码:" + states);
+            }
+        }
+    }
+
+    // https://blog.csdn.net/Arhhhhhhh/article/details/130082795?utm_medium=distribute.pc_relevant.none-task-blog-2~default~baidujs_baidulandingword~default-0-130082795-blog-121291537.235^v43^pc_blog_bottom_relevance_base6&spm=1001.2101.3001.4242.1&utm_relevant_index=2
+    // https://developer.apple.com/documentation/appstoreserverapi/get-v2-refund-lookup-_transactionid_
+}

+ 3 - 2
ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontExamController.java

@@ -108,6 +108,7 @@ public class FrontExamController {
                                    @ApiParam("考卷类型PaperType") @RequestParam(required = false) PaperType paperType,
                                    @ApiParam("考卷类型关联ID") @RequestParam(required = false) Long relateId,
                                    @ApiParam("考卷类型关联ID") @RequestParam(required = false) Long subjectId,
+                                   @ApiParam("考卷题类别0普通2必刷") @RequestParam(required = false) Integer questionType,
                                    @RequestBody JSONObject body) {
         if(null != testType && testType > 0) {
             PaperDto paperDto = syTestMajorService.loadPaperByTestMajorTypeId(testType);
@@ -119,9 +120,9 @@ public class FrontExamController {
         if(null == subjectId && null == paperType) {
             subjectId = body.getLongValue("subjectId");
             paperType = PaperType.valueOf(body.getString("paperType"));
+            questionType = body.getInteger("questionType");
         }
-
-        return AjaxResult.success(examService.openExaminee(directed, paperType, relateId, subjectId));
+        return AjaxResult.success(examService.openExaminee(directed, paperType, relateId, subjectId, questionType));
     }
 
     @ApiOperation("04 开始考试")

+ 11 - 12
ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontNewsController.java

@@ -14,6 +14,7 @@ import com.ruoyi.syzy.domain.BWwwNews;
 import com.ruoyi.syzy.domain.BWwwNewsRef;
 import com.ruoyi.syzy.service.IBWwwNewsRefService;
 import com.ruoyi.syzy.service.IBWwwNewsService;
+import com.ruoyi.web.service.CommService;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
@@ -43,6 +44,8 @@ public class FrontNewsController extends BaseController {
 
     @Autowired
     private ISysConfigService sysConfigService;
+    @Autowired
+    private CommService commService;
     @GetMapping("types")
     @ApiOperation("00 高考资讯类型")
     public TableDataInfo types() {
@@ -72,10 +75,7 @@ public class FrontNewsController extends BaseController {
     @ApiOperation("00 通关指南")
     public TableDataInfo getMainList(@ApiParam(value = "省份 ", example = "湖南") @RequestParam(required = false) String location) {
         BWwwNewsRef cond = new BWwwNewsRef();
-        if(StringUtils.isBlank(location) && StringUtils.isBlank((location = VistorContextHolder.getLocation()))) {
-            cond.setLocation("湖南");
-        }
-        cond.setLocation(location);
+        cond.setLocation(commService.getLocation(location));
         return getDataTable(newsRefService.selectBWwwNewsRefList(cond));
     }
 
@@ -83,7 +83,7 @@ public class FrontNewsController extends BaseController {
     @ApiOperation("00 通关指南免登陆")
     public TableDataInfo getMainListNoToken(@ApiParam(value = "省份 ", example = "湖南") @RequestParam(required = false) String location) {
         BWwwNewsRef cond = new BWwwNewsRef();
-        cond.setLocation(StringUtils.isNotBlank(location) ? location : "湖南");
+        cond.setLocation(commService.getLocation(location));
         return getDataTable(newsRefService.selectBWwwNewsRefList(cond));
     }
 
@@ -110,26 +110,23 @@ public class FrontNewsController extends BaseController {
                               @ApiParam(value = "省份 ", example = "湖南") @RequestParam(required = false) String location,
                               @ApiParam(value = "页数", example = "1") @RequestParam Integer pageNum,
                               @ApiParam(value = "页大小", example = "15") @RequestParam Integer pageSize) {
-        if(StringUtils.isBlank(location)) {
-            location = VistorContextHolder.getLocation();
-        }
-        return llist(ids,top,type,tag,title,location, pageNum,pageSize);
+        return llist(ids,top,type,tag,title,commService.getLocation(location), pageNum,pageSize);
     }
 
     private TableDataInfo llist(String ids,Boolean top,String type, String tag,String title,String location, Integer pageNum,Integer pageSize){
-        startPage();
         BWwwNews exam = new BWwwNews();
         exam.setIsTop(null==top?null:(top?1:0));
         exam.setType(type);
         exam.setTitle(title);
         exam.setTag(StringUtils.trimToNull(tag));
-        exam.setLocation(StringUtils.isNotBlank(location) ? location : "湖南");
+        exam.setLocation(commService.getLocation(location));
         if(StringUtils.isNotBlank(ids)){
             String[] strArray = ids.split(",");
             List<String> strList = new ArrayList<>(strArray.length);
             Collections.addAll(strList, strArray);
             exam.setIds(strList);
         }
+        startPage();
         List<BWwwNews> arr = newsService.selectBWwwNewsList(exam);
         return getDataTable(arr);
     }
@@ -141,7 +138,7 @@ public class FrontNewsController extends BaseController {
                                      @ApiParam(value = "省份 ", example = "湖南") @RequestParam(required = false) String location,
                                      @ApiParam(value = "页数", example = "1") Integer pageNum,
                                      @ApiParam(value = "页大小", example = "15") Integer pageSize) {
-        return llist(ids,top,type,tag,title,location, pageNum,pageSize);
+        return llist(ids,top,type,tag,title,commService.getLocation(location), pageNum,pageSize);
     }
 
     @GetMapping("info")
@@ -163,4 +160,6 @@ public class FrontNewsController extends BaseController {
         return AjaxResult.success(clicked);
     }
 
+
+
 }

+ 30 - 1
ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontPaperController.java

@@ -1,17 +1,21 @@
 package com.ruoyi.web.controller.front;
 
+import com.alibaba.fastjson2.JSONObject;
 import com.ruoyi.common.core.content.VistorContextHolder;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.AjaxResult2;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.utils.NumberUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.dz.domain.DzControl;
 import com.ruoyi.dz.domain.DzSubject;
 import com.ruoyi.dz.service.IDzControlService;
 import com.ruoyi.dz.service.IDzSubjectService;
 import com.ruoyi.enums.PaperType;
+import com.ruoyi.learn.domain.LearnPaper;
 import com.ruoyi.learn.domain.LearnStudent;
 import com.ruoyi.learn.domain.LearnTest;
+import com.ruoyi.learn.service.ILearnPaperService;
 import com.ruoyi.learn.service.ILearnStudentService;
 import com.ruoyi.learn.service.ILearnTestService;
 import com.ruoyi.web.service.LearnTeacherService;
@@ -21,6 +25,7 @@ import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.apache.commons.compress.utils.Lists;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.util.CollectionUtils;
 import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -28,6 +33,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
 
@@ -38,15 +44,17 @@ public class FrontPaperController {
     private final IDzControlService dzControlService;
     private final IDzSubjectService dzSubjectService;
     private final PaperService paperService;
+    private final ILearnPaperService learnPaperService;
     private final ILearnTestService testService;
     private final ILearnStudentService learnStudentService;
     private final LearnTeacherService learnTeacherService;
     private final StudentService studentService;
 
-    public FrontPaperController(IDzControlService dzControlService, IDzSubjectService dzSubjectService, PaperService paperService, ILearnTestService testService, ILearnStudentService learnStudentService, LearnTeacherService learnTeacherService, StudentService studentService) {
+    public FrontPaperController(IDzControlService dzControlService, IDzSubjectService dzSubjectService, PaperService paperService, ILearnPaperService learnPaperService, ILearnTestService testService, ILearnStudentService learnStudentService, LearnTeacherService learnTeacherService, StudentService studentService) {
         this.dzControlService = dzControlService;
         this.dzSubjectService = dzSubjectService;
         this.paperService = paperService;
+        this.learnPaperService = learnPaperService;
         this.testService = testService;
         this.learnStudentService = learnStudentService;
         this.learnTeacherService = learnTeacherService;
@@ -122,4 +130,25 @@ public class FrontPaperController {
     public AjaxResult loadPaper(@ApiParam("考卷类型PaperType") PaperType type, @ApiParam("考卷标识") Long id) {
         return AjaxResult.success(paperService.loadPaper(id));
     }
+
+    @ApiOperation("05 取模拟卷列表")
+    @GetMapping("/list")
+    public AjaxResult2<List<JSONObject>> list(LearnPaper learnPaper) {
+        SysUser sysUser = SecurityUtils.getLoginUser().getUser();
+        learnPaper.setPaperType(PaperType.Simulated.name());
+        String subjectKey = NumberUtils.isPositive(learnPaper.getSubjectId()) ? String.valueOf(sysUser.getExamMajor()) : "0";
+        learnPaper.setLocations(sysUser.getLocation());
+        learnPaper.setDirectKey(sysUser.getExamType().name() + "_" + subjectKey);
+        learnPaper.setSubjectId(null);
+        learnPaper.setStatus(1);
+        learnPaper.setExamineeId(sysUser.getUserId());
+        List<LearnPaper> list = learnPaperService.selectLearnPaperForExam(learnPaper);
+        Map<Long, String> subjectMap = dzSubjectService.selectDzSubjectList(new DzSubject()).stream().collect(Collectors.toMap(DzSubject::getSubjectId, DzSubject::getSubjectName));
+        List<JSONObject> jsonList = list.stream().map(t -> {
+            JSONObject o = JSONObject.from(t);
+            o.put("subjectName", subjectMap.get(t.getSubjectId()));
+            return o;
+        }).collect(Collectors.toList());
+        return AjaxResult2.success(jsonList);
+    }
 }

+ 12 - 0
ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontPracticeController.java

@@ -0,0 +1,12 @@
+package com.ruoyi.web.controller.front;
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+@RestController
+@RequestMapping("/front/practice")
+@Api(tags = "前台-学习-练习")
+public class FrontPracticeController {
+
+}

+ 8 - 4
ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontStudentController.java

@@ -93,6 +93,10 @@ public class FrontStudentController extends BaseController {
         sCond.setLocations(sysUser.getLocation());
         sCond.setExamTypes(sysUser.getExamType().name());
         List<DzSubject> list = dzSubjectService.selectDzSubjectList(sCond);
+        if(ExamType.VHS.equals(sysUser.getExamType())) {
+            Long validSubjectId = null != sysUser.getExamMajor() ? sysUser.getExamMajor().longValue() : 0L;
+            return AjaxResult2.success(list.stream().filter(t -> t.getSubjectId() < 10 || t.getSubjectId().equals(validSubjectId)).collect(Collectors.toList()));
+        }
         return AjaxResult2.success(list);
     }
 
@@ -384,17 +388,17 @@ public class FrontStudentController extends BaseController {
 
     @ApiOperation("练习列表")
     @GetMapping("record/practice")
-    public TableDataInfo practice()
+    public TableDataInfo practice(@ApiParam @RequestParam(defaultValue = "0") Integer questionType)
     {
         startPage();
-        return getDataTable(learnStatService.selectStudentPractices(SecurityUtils.getUserId(), PaperType.Practice));
+        return getDataTable(learnStatService.selectStudentPractices(SecurityUtils.getUserId(), PaperType.Practice, questionType));
     }
 
     @ApiOperation("同步练习列表")
     @GetMapping("record/coursePractice")
-    public TableDataInfo coursePractice()
+    public TableDataInfo coursePractice(@ApiParam @RequestParam(defaultValue = "0") Integer questionType)
     {
-        return getDataTable(learnStatService.selectStudentPractices(SecurityUtils.getUserId(), PaperType.Course));
+        return getDataTable(learnStatService.selectStudentPractices(SecurityUtils.getUserId(), PaperType.Course, questionType));
     }
 
     @ApiOperation("56 记录-视频学习")

+ 176 - 0
ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontSyzyYfydController.java

@@ -0,0 +1,176 @@
+package com.ruoyi.web.controller.front;
+
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.utils.CommonUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.system.service.ISysConfigService;
+import com.ruoyi.syzy.domain.BBusiWishScoreGroups;
+import com.ruoyi.syzy.service.IBBusiWishScoreGroupsService;
+import com.ruoyi.web.service.CommService;
+import com.ruoyi.web.service.ScoreRankService;
+import com.ruoyi.web.service.ZyService;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.apache.commons.collections.CollectionUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+@RestController
+@Api(tags = "模拟志愿-一分一段")
+@RequestMapping("front/syzy/yfyd")
+public class FrontSyzyYfydController extends BaseController {
+    @Autowired
+    private IBBusiWishScoreGroupsService scoreGroupsService;
+    @Autowired
+    private ScoreRankService scoreRankService;
+    @Autowired
+    private ISysConfigService configService;
+    @Autowired
+    private ZyService zyService;
+    @Autowired
+    private CommService commService;
+
+    @GetMapping("locations")
+    @ApiOperation("01.地域")
+    public TableDataInfo locations() {
+        List<String> list = scoreGroupsService.locations();
+        CommonUtils.sortByChina(list);
+        return getDataTable(list);
+    }
+
+    @GetMapping("years")
+    @ApiOperation("02.录取年份")
+    public TableDataInfo years(@ApiParam("地域") @RequestParam String location) {
+        //此处显示使用时不限制status
+        List<Integer> list = scoreGroupsService.yearsNoStatus(location);
+        return getDataTable(list);
+    }
+
+    @GetMapping("modes")
+    @ApiOperation("03.科类")
+    public TableDataInfo modes(@ApiParam("地域") @RequestParam String location, @ApiParam("录取年份") @RequestParam String year) {
+        //此处显示使用时不限制status
+        List<Map> list = scoreGroupsService.modesNoStatus(location, year).stream().map(t -> {
+            Map d = new HashMap();
+            d.put("mode", t.getMode());
+            d.put("modeName", t.getModeName());
+            return d;
+        }).collect(Collectors.toList());
+        return getDataTable(list);
+    }
+
+    @GetMapping("list")
+    @ApiOperation("04.一分一段列表")
+    public TableDataInfo list(@ApiParam("地域") @RequestParam String location, @ApiParam("录取年份") @RequestParam(required = false) Integer year,
+        @ApiParam("科类") @RequestParam String mode, @ApiParam("分数或位次") Integer scoreRank,@ApiParam("type 1分数,2位次") Integer type,
+        @ApiParam(value = "页数", example = "1") @RequestParam Integer pageNum,
+        @ApiParam(value = "页大小", example = "15") @RequestParam Integer pageSize) {
+        BBusiWishScoreGroups query = new BBusiWishScoreGroups();
+        query.setLocation(location).setYear(year).setMode(mode).setScoreRank(scoreRank).setType(type);
+        startPage();
+        List<BBusiWishScoreGroups> list = scoreGroupsService.selectBBusiWishScoreGroupsList(query);
+        return getDataTable(list);
+    }
+
+    @GetMapping("getRankByScore")
+    @ApiOperation("05.根据分数找位次")
+    public AjaxResult getDataByRankOrScore(@ApiParam("地域") String location, @ApiParam("录取年份")  Integer year,
+                              @ApiParam("分数或位次") @RequestParam Integer scoreRank) {
+        if(StringUtils.isBlank(location)){
+            location= SecurityUtils.getLoginUser().getUser().getLocation();
+        }
+        if(null==year){
+            year = scoreGroupsService.years(location).stream().filter(e -> e != null).max(Comparator.naturalOrder()).orElse(0);
+        }
+
+        Map cond = Maps.newHashMap();
+        cond.put("score", scoreRank);
+        cond.put("location", location);
+        cond.put("year", year);
+        cond.put("mode", SecurityUtils.getLoginUser().getUser().getExamMajor()); // 物理/历史 或 文科/理课
+        List<BBusiWishScoreGroups> groupList = scoreGroupsService.selectBusiWishScoreGroupsByScore(cond);
+        if (CollectionUtils.isEmpty(groupList)) {
+            return AjaxResult.success(new BBusiWishScoreGroups());
+        }
+        return AjaxResult.success(groupList.get(0));
+    }
+
+
+    @GetMapping("getEquivalentScore")
+    @ApiOperation("06.根据分数找历史等效位次")
+    public AjaxResult getEquivalentScore(@ApiParam("地域") String location, @ApiParam("录入年度")  Integer year,
+                                         @ApiParam("分数") @RequestParam Integer score) {
+        if (StringUtils.isBlank(location)) {
+            location = commService.getLocation(location);
+        }
+        String mode = String.valueOf(SecurityUtils.getLoginUser().getUser().getExamMajor());
+        // 1. 初始当前年度, 文理类型
+        List<Integer> list = scoreGroupsService.yearsNoStatus(location);
+        if (CollectionUtils.isEmpty(list)) {
+            return AjaxResult.error("无有效一分一段数据");
+        }
+        Integer currYear = zyService.getYear();
+        String forceLocation = configService.selectConfigByKey("voluntary.force.locations");
+        Integer submitYear = currYear;
+        if (null != forceLocation && forceLocation.contains(location)) {
+            submitYear = submitYear - 1;
+        }
+        if (null == year) {
+            year = list.get(0);
+        }
+
+        // Map cond = Maps.newHashMap();
+        // ZyService.appendMode(cond, location, mode);
+        // List<String> modes = cond.containsKey("modes") ? (List) cond.get("modes") : Lists.newArrayList((String) cond.get("mode"));
+
+        AjaxResult ajax = AjaxResult.success();
+
+        BBusiWishScoreGroups base = scoreRankService.getScoreGroups(location, year, mode, score);
+        ajax.put("match", base);
+        ajax.put("scores", getHistoryEqList(base, mode, currYear, year, submitYear, score, location));
+        return ajax;
+    }
+
+    private List<Map> getHistoryEqList(BBusiWishScoreGroups base, String mode, Integer maxYear, Integer userYear, Integer submitYear, Integer score, String location) {
+        List<Map> historyEqList = Lists.newArrayList();
+        if(null == base) {
+            return historyEqList;
+        }
+        BBusiWishScoreGroups currScoreRange = scoreRankService.getScoreRangeByScore(location, maxYear, mode, userYear, score);
+        if (null == currScoreRange) {
+            return historyEqList;
+        }
+        Integer minYear = submitYear - 2; // 专业线最近3年 + 计划年, 计划是新年度时共4年
+        for (int i = submitYear; i >= minYear; i--) {
+            Map tmp = new HashMap();
+            tmp.put("year" , i);
+            BBusiWishScoreGroups eqScoreRange = scoreRankService.getScoreRangeByBatch(location, maxYear, currScoreRange.getMode(), i, currScoreRange.getType());
+            Integer eqRank = scoreRankService.getEqRank(currScoreRange, eqScoreRange, location, maxYear, userYear, score, null, i);
+            if (null == eqRank) {
+                tmp.put("seat", 0);
+                tmp.put("score", 0);
+            } else {
+                tmp.put("seat" , eqRank);
+                Integer lastEqScore = scoreRankService.getScore(location, i, eqScoreRange.getMode(), eqRank);
+                tmp.put("score" , lastEqScore);
+            }
+            historyEqList.add(tmp);
+        }
+        return historyEqList;
+    }
+}

+ 271 - 0
ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontSyzyZytbController.java

@@ -0,0 +1,271 @@
+package com.ruoyi.web.controller.front;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.google.common.collect.Maps;
+import com.ruoyi.common.core.controller.BaseController;
+import com.ruoyi.common.core.domain.AjaxResult;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.common.core.page.TableDataInfo;
+import com.ruoyi.common.enums.BoolValues;
+import com.ruoyi.common.enums.UserRegStatus;
+import com.ruoyi.common.exception.base.BaseException;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.framework.web.service.TokenService;
+import com.ruoyi.system.service.ISysConfigService;
+import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.syzy.criteria.ZytbMarjorCriteriaNew;
+import com.ruoyi.syzy.domain.BBusiWishRecords;
+import com.ruoyi.syzy.dto.SubmitWishRecordDTO;
+import com.ruoyi.syzy.dto.SubmitWishRecordDTO.SubmitWishRecordDetail;
+import com.ruoyi.syzy.dto.ZytbBatch;
+import com.ruoyi.syzy.service.IBBusiWishLocationSubmitsService;
+import com.ruoyi.syzy.service.IBBusiWishRecordsService;
+import com.ruoyi.web.domain.Constant;
+import com.ruoyi.web.domain.ZytbDto;
+import com.ruoyi.web.service.ZyService;
+import com.ruoyi.web.util.VolunteerExporter;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@Api(tags = "生涯志愿-志愿填报")
+@RequestMapping("front/syzy/zytb")
+public class FrontSyzyZytbController extends BaseController {
+    @Autowired
+    private IBBusiWishLocationSubmitsService wishLocationSubmitsService;
+    @Autowired
+    private IBBusiWishRecordsService wishRecordsService;
+    @Autowired
+    private ISysConfigService configService;
+    @Autowired
+    private ZyService zyService;
+    @Autowired
+    ISysUserService sysUserService;
+    @Autowired
+    TokenService tokenService;
+
+    @GetMapping("batches")
+    @ApiOperation("01.填报批次")
+    public TableDataInfo batches(@ApiParam("总分") @RequestParam Float score) {
+        // 获取当前登录用户省份
+        SysUser sysUser = SecurityUtils.getLoginUser().getUser();
+        String location = sysUser.getLocation();
+        List<ZytbBatch> batchs = wishLocationSubmitsService.batches(location, score, zyService.getExamMajor());
+        return getDataTable(batchs);
+    }
+
+    @PostMapping("save")
+    @ApiOperation("04.志愿保存")
+    public AjaxResult save(@RequestBody SubmitWishRecordDTO data) {
+        if (null == data.getDetail().getYear()) {
+            data.getDetail().setYear(DateUtils.getCurrentYear());
+        }
+        //体验卡在0615~0831之间不能使用
+        String msg = zyService.limitExperienceCard(SecurityUtils.getLoginUser().getUser());
+        if(StringUtils.isNotEmpty(msg)){
+            throw new BaseException(msg);
+        }
+        SysUser u = SecurityUtils.getLoginUser().getUser();
+        SubmitWishRecordDTO.User us = new SubmitWishRecordDTO.User();
+        us.setName(u.getNickName());
+        us.setSex(u.getSex());
+        us.setProvinceName(u.getLocation());
+        us.setExamType(u.getExamType().name());
+        us.setExamMajor(String.valueOf(u.getExamMajor()));
+        us.setExamMajorName(u.getExamMajorName());
+        data.setUserSnapshot(us);
+        if(StringUtils.isBlank(data.getDetail().getMode())) {
+            data.getDetail().setMode(us.getExamMajorName());
+        }
+        wishRecordsService.save(data);
+        return AjaxResult.success("保存成功", data.getId());
+    }
+
+    @GetMapping("recordDetail")
+    @ApiOperation("02.查询明细")
+    public AjaxResult recordDetail(@ApiParam(value = "志愿id", example = "1") @RequestParam Long wishResId) {
+        BBusiWishRecords wishRecords = wishRecordsService.selectBBusiWishRecordsById(wishResId);
+        if (null != wishRecords) {
+            SubmitWishRecordDetail detail = JSON.parseObject(wishRecords.getDetail(), SubmitWishRecordDetail.class);
+            List<String> summary = new ArrayList<String>();
+            detail.getBatch().getWishes().forEach(wish -> {
+                summary.add(String.format("[%s]%s", wish.getCode(), wish.getName()));
+            });
+            SubmitWishRecordDTO.User us = JSON.parseObject(wishRecords.getUserSnapshot(), SubmitWishRecordDTO.User.class);
+            wishRecords.setMode(us.getExamMajorName());
+            wishRecords.setScore(detail.getScore());
+            wishRecords.setSummary(summary);
+        }
+        return AjaxResult.success("查询成功", wishRecords);
+    }
+
+    @GetMapping("record")
+    @ApiOperation("05.我的志愿表")
+    public TableDataInfo record(@ApiParam(value = "页数", example = "1") @RequestParam Integer pageNum,
+        @ApiParam(value = "页大小", example = "15") @RequestParam Integer pageSize) {
+        startPage();
+        String customerCode = SecurityUtils.getLoginUser().getUser().getCode(); // TODO 标识
+        BBusiWishRecords exam = new BBusiWishRecords();
+        exam.setCustomerCode(customerCode);
+        exam.setStatus(1);
+        List<BBusiWishRecords> list = wishRecordsService.selectBBusiWishRecordsList(exam);
+        list.forEach(row -> {
+//            row.setBatchName(BatchUtil.getLabel(Integer.valueOf(row.getBatch())));
+            SubmitWishRecordDetail detail = JSON.parseObject(row.getDetail(), SubmitWishRecordDetail.class);
+            List<String> summary = new ArrayList<String>();
+            detail.getBatch().getWishes().forEach(wish -> {
+                summary.add(String.format("[%s]%s", wish.getCode(), wish.getName()));
+            });
+            SubmitWishRecordDTO.User us = JSON.parseObject(row.getUserSnapshot(), SubmitWishRecordDTO.User.class);
+            row.setMode(us.getExamMajorName());
+            row.setScore(detail.getScore());
+            row.setSummary(summary);
+        });
+        return getDataTable(list);
+    }
+
+    @GetMapping("record/del")
+    @ApiOperation("06.删除我的志愿表")
+    public AjaxResult removeRecord(@ApiParam(value = "页数", example = "1") @RequestParam Long id) {
+        wishRecordsService.deleteBBusiWishRecordsById(id);
+        return success("删除成功");
+    }
+
+
+    @ApiOperation("20.获取地区科目年度")
+    @RequestMapping(value = "/getVoluntaryHeaders", method = {RequestMethod.GET, RequestMethod.POST})
+    public AjaxResult getVoluntaryHeaders(@ApiParam(value = "年度") @RequestParam(required = false) Integer year, @ApiParam(value = "组合") @RequestParam String mode, Boolean isMock) {
+        if(null==isMock){
+            isMock = false;
+        }
+        AjaxResult ajaxResult = AjaxResult.success(zyService.getVoluntaryHeaders(isMock,year, mode.split(",")[0]));
+        ajaxResult.put("isMock", isMock);
+        return ajaxResult;
+    }
+
+    @ApiOperation("21.获取推荐志愿")
+    @RequestMapping(value = "/getRecommendVoluntary", method = {RequestMethod.POST})
+    public TableDataInfo getRecommendVoluntary(@RequestBody ZytbMarjorCriteriaNew query, HttpServletResponse response,
+                                               @ApiParam(value = "页数", example = "1") @RequestParam Integer pageNum,
+                                               @ApiParam(value = "页大小", example = "5") @RequestParam Integer pageSize) {
+        SysUser user = SecurityUtils.getLoginUser().getUser();
+        if (UserRegStatus.isNotVip()) {
+            pageNum = 1;
+            pageSize = 1;
+        }
+        if (!BoolValues.isFalse(user.getScoreLock())) {
+            //在锁分阶段,强行将分数及mode重置为用户所填写锁定的值
+            query.setScore(user.getScore());
+        }
+        query.setMode(String.valueOf(user.getExamMajor()));
+        if (null != query.getWishResId() && query.getWishResId() > 0) {
+            return getDataTable(zyService.filterResEmptyHistory(zyService.getRecommendVoluntaryRes(query.getWishResId(), pageNum, pageSize)));
+        }
+
+        //体验卡在0615~0831之间不能使用、非高三卡不能使用
+        String msg = zyService.limitExperienceCard(SecurityUtils.getLoginUser().getUser());
+        if(StringUtils.isNotEmpty(msg)){
+            throw new BaseException(msg);
+        }
+        LoginUser loginUser = SecurityUtils.getLoginUser();
+        SysUser sysUser = new SysUser();
+        if (null != query.getSeatInput() && !query.getSeatInput().equals(user.getSeatInput())) { // 更新最后的 SeatInput
+            sysUser.setUserId(user.getUserId());
+            sysUser.setSeatInput(query.getSeatInput());
+            loginUser.getUser().setSeatInput(query.getSeatInput());
+        }
+        if (!BoolValues.isTrue(user.getScoreLock()) && query.getScore() != null && !query.getScore().equals(user.getScore())) {
+            //-1(中间状态),0(非锁分状态)时可以修改
+            sysUser.setUserId(user.getUserId());
+            sysUser.setScore(query.getScore());
+            user.setScore(query.getScore());
+        }
+        if (null != sysUser.getUserId()) {
+            sysUserService.updateUserProfile(sysUser);
+            tokenService.setLoginUser(loginUser);
+        }
+        return getDataTable(zyService.filterResEmptyHistory(zyService.getRecommendVoluntary(query, pageNum, pageSize)));
+    }
+
+
+    @ApiOperation("22.获取推荐志愿明细")
+    @RequestMapping(value = "/getVoluntaryMarjors", method = {RequestMethod.POST})
+    public AjaxResult getVoluntaryMarjors(@RequestBody ZytbDto.ZytbVoluntaryMarjorCond query) {
+        if (null != query.getWishResId() && query.getWishResId() > 0) {
+            return AjaxResult.success(zyService.filterEmptyHistory(zyService.getVoluntaryMarjorsRes(query.getWishResId(), query.getCollegeCode(), query.getJCode())));
+        }
+        return AjaxResult.success(zyService.filterEmptyHistory(zyService.getVoluntaryMarjors(query)));
+    }
+
+
+    @ApiOperation("23.获取模拟志愿初始参数-分数区间、科类(物理历史、理科文科)")
+    @RequestMapping(value = "/getVoluntaryData", method = {RequestMethod.GET,RequestMethod.POST})
+    public AjaxResult getVoluntaryData(String provinceName,Integer year) {
+        Map<String,Object> resultMap = new HashMap<>();
+        try {
+//            JSONObject jsonObject= SecurityUtils.getLoginUser().getUser().getVoluntaryParam();
+            String voluntaryCount= configService.selectConfigByKey("voluntary.num");
+            if(StringUtils.isNotEmpty(voluntaryCount)){
+                JSONArray array = JSONArray.parseArray(voluntaryCount);
+                array.stream().forEach(item->{
+                    JSONObject jsonObject=(JSONObject) item;
+                    if(jsonObject.getString("location").trim().contains(SecurityUtils.getLoginUser().getUser().getLocation().trim())){
+                        jsonObject.entrySet().forEach(e->{
+                            resultMap.put(e.getKey(),e.getValue());
+                        });
+                        return;
+                    }
+                });
+            }
+        }catch (Exception e){
+            logger.debug("获取志愿参数失败",e);
+        }
+
+        String examMajor = zyService.getExamMajor();
+        Integer maxScore = getMaxScore(examMajor);
+        resultMap.put("maxScore",maxScore);
+        resultMap.put("minScore",0);
+        return AjaxResult.success(resultMap);
+    }
+
+    private Integer getMaxScore(String examMajor) {
+        String scores = configService.selectConfigByKey(Constant.CFG_MAJOR_SCORES);
+        if(StringUtils.isBlank(scores)) {
+            scores = "{'20': 300, '0': 750}";
+        }
+        JSONObject scoreObj = JSONObject.parseObject(scores);
+        Integer maxScore;
+        if(null == (maxScore = scoreObj.getInteger(examMajor)) && null == (maxScore = scoreObj.getInteger("0"))) {
+            maxScore = 750;
+        }
+        return maxScore;
+    }
+
+    @GetMapping("/export")
+    public void export(@RequestParam Long wishResId, HttpServletResponse response)
+    {
+        Map dataMap = Maps.newHashMap();
+        List<ZytbDto.ZytbVolunteerRes> volunteerResList = zyService.getRecommendVoluntaryRes(wishResId, 1, 100, dataMap);
+        SubmitWishRecordDetail detail = (SubmitWishRecordDetail) dataMap.get("detail");
+        BBusiWishRecords record = (BBusiWishRecords) dataMap.get("record");
+        String location = (String) dataMap.get("location");
+        Integer currYear = (Integer) dataMap.get("currYear");
+        Integer currSubmitYear = (Integer) dataMap.get("currSubmitYear");
+        Integer seat = (Integer) dataMap.get("seat");
+        VolunteerExporter.export(location, record, detail, currYear, currSubmitYear, seat, volunteerResList, response);
+    }
+}

+ 2 - 2
ie-admin/src/main/java/com/ruoyi/web/controller/front/FrontUniversitiesController.java

@@ -144,7 +144,7 @@ public class FrontUniversitiesController extends BaseController {
         Integer planYear = voluntaryService.getPlanYear(user);
         if(Constant.EXAM_TYPE_ZG.equals(user.getExamType().title())) {
             //职高对口
-            arr = universitiesService.selectMajorWishUniversitiesListSimpleByMap2(cond.toCondMap(planYear, user.getExamType().title(), user.getSelectSubject(), user.getLocation())); // TODO MF
+            arr = universitiesService.selectMajorWishUniversitiesListSimpleByMap2(cond.toCondMap(planYear, user.getExamType().title(), user.getExamMajor(), user.getLocation())); // TODO MF
         } else {
             arr = universitiesService.selectMajorWishUniversitiesListSimpleByMap(cond.toCondMap(planYear, Constant.EXAM_TYPE_PG, null, user.getLocation()));
         }
@@ -176,7 +176,7 @@ public class FrontUniversitiesController extends BaseController {
         this.saveUniversitiesClicks(code);
 
         if(Constant.EXAM_TYPE_ZG.equals(sysUser.getExamType().title())) {
-            Integer examMajor = sysUser.getSelectSubject(); // TODO MF
+            Integer examMajor = sysUser.getExamMajor();
 
             BBusiWishUniversitySubmitRecruitPlan planCond = new BBusiWishUniversitySubmitRecruitPlan();
             planCond.setUniversityId(universityId);

+ 37 - 16
ie-admin/src/main/java/com/ruoyi/web/controller/front/UserController.java

@@ -1,5 +1,6 @@
 package com.ruoyi.web.controller.front;
 
+import cn.hutool.core.lang.Dict;
 import com.alibaba.fastjson2.JSONObject;
 import com.ruoyi.common.annotation.Anonymous;
 import com.ruoyi.common.annotation.Log;
@@ -12,10 +13,7 @@ import com.ruoyi.common.core.domain.model.LoginBody;
 import com.ruoyi.common.core.domain.model.LoginCard;
 import com.ruoyi.common.core.domain.model.LoginUser;
 import com.ruoyi.common.core.page.TableDataInfo;
-import com.ruoyi.common.enums.AccessFromType;
-import com.ruoyi.common.enums.AccountType;
-import com.ruoyi.common.enums.BusinessType;
-import com.ruoyi.common.enums.ExamType;
+import com.ruoyi.common.enums.*;
 import com.ruoyi.common.utils.NumberUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.dz.domain.*;
@@ -65,8 +63,9 @@ public class UserController extends BaseController {
     private final IDzAgentService agentService;
     private final ISysDeptService deptService;
     private final IDzTeacherService dzTeacherService;
+    private final IDzSubjectService dzSubjectService;
 
-    public UserController(IDzControlService dzControlService, SysLoginService loginService, ISysUserService userService, SysPermissionService permissionService, TokenService tokenService, CommService commService, ISysConfigService configService, IDzCardsService dzCardsService, IDzSchoolService dzSchoolService, IDzClassesService dzClassesService, DzSchoolMapper dzSchoolMapper, DzClassesMapper dzClassesMapper, IDzAgentService agentService, ISysDeptService deptService, IDzTeacherService dzTeacherService) {
+    public UserController(IDzControlService dzControlService, SysLoginService loginService, ISysUserService userService, SysPermissionService permissionService, TokenService tokenService, CommService commService, ISysConfigService configService, IDzCardsService dzCardsService, IDzSchoolService dzSchoolService, IDzClassesService dzClassesService, DzSchoolMapper dzSchoolMapper, DzClassesMapper dzClassesMapper, IDzAgentService agentService, ISysDeptService deptService, IDzTeacherService dzTeacherService, IDzSubjectService dzSubjectService) {
         this.dzControlService = dzControlService;
         this.loginService = loginService;
         this.userService = userService;
@@ -82,6 +81,7 @@ public class UserController extends BaseController {
         this.agentService = agentService;
         this.deptService = deptService;
         this.dzTeacherService = dzTeacherService;
+        this.dzSubjectService = dzSubjectService;
     }
 
     @GetMapping(value = "provinces")
@@ -125,17 +125,26 @@ public class UserController extends BaseController {
     @ApiOperation("专业类别列表")
     public AjaxResult examMajor(@RequestParam String location, @RequestParam ExamType examType)
     {
-        List<JSONObject> list = new ArrayList<>();
-        if(ExamType.VHS.equals(examType)) {
-            JSONObject o = new JSONObject();
-            o.put("dictValue", 1);
-            o.put("dictLabel", "农林类");
-            list.add(o);
-            o = new JSONObject();
-            o.put("dictValue", 2);
-            o.put("dictLabel", "养殖类");
-            list.add(o);
+        if (StringUtils.isBlank(location) || null ==examType) {
+            examType = VistorContextHolder.getExamType();
+            location = VistorContextHolder.getLocation();
         }
+        // 构建查询条件
+        DzSubject cond = new DzSubject();
+        cond.setLocations(location);
+        cond.setExamTypes(examType.name());
+
+        // 查询科目列表
+        List<DzSubject> subjectList = dzSubjectService.selectDzSubjectList(cond);
+
+        // 转换为返回格式
+        List<JSONObject> list = subjectList.stream().map(subject -> {
+            JSONObject o = new JSONObject();
+            o.put("dictValue", subject.getSubjectId());
+            o.put("dictLabel", subject.getSubjectName());
+            return o;
+        }).collect(Collectors.toList());
+
         return AjaxResult.success(list);
     }
 
@@ -215,6 +224,19 @@ public class UserController extends BaseController {
         return ajax;
     }
 
+
+    @GetMapping("getUserBindCard")
+    @ApiOperation("取用户卡绑定状态")
+    public AjaxResult getUserBindCard() {
+        SysUser sysUser = userService.selectUserById(SecurityUtils.getUserId());
+        if(null != sysUser.getBindStatus() && BindStatus.Pend.code().equals(sysUser.getBindStatus())) {
+            DzCards dzCards = dzCardsService.selectDzCardsByCardId(sysUser.getCardId());
+            return AjaxResult.success(Dict.of("cardNo", dzCards.getCardNo(), "password", dzCards.getPassword()));
+        }
+        return AjaxResult.success();
+    }
+
+
     /**
      * 获取用户信息
      *
@@ -264,7 +286,6 @@ public class UserController extends BaseController {
                 }
             }
         }
-
         AjaxResult ajax = AjaxResult.success(user);
         ajax.put("card", loginUser.getCard());
         ajax.put("roles", roles);

+ 0 - 1
ie-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java

@@ -13,7 +13,6 @@ import org.springframework.web.bind.annotation.GetMapping;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RestController;
-import com.ruoyi.common.constant.Constants;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.entity.SysMenu;
 import com.ruoyi.common.core.domain.entity.SysUser;

+ 44 - 0
ie-admin/src/main/java/com/ruoyi/web/core/config/WxPayConfiguration.java

@@ -0,0 +1,44 @@
+package com.ruoyi.web.core.config;
+
+import com.github.binarywang.wxpay.config.WxPayConfig;
+import com.github.binarywang.wxpay.service.WxPayService;
+import com.github.binarywang.wxpay.service.impl.WxPayServiceImpl;
+import lombok.AllArgsConstructor;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
+import org.springframework.boot.context.properties.EnableConfigurationProperties;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+
+/**
+ * @author Binary Wang
+ */
+@Configuration
+@ConditionalOnClass(WxPayService.class)
+@EnableConfigurationProperties(WxPayProperties.class)
+@AllArgsConstructor
+public class WxPayConfiguration {
+    private WxPayProperties properties;
+
+    @Bean
+    @ConditionalOnMissingBean
+    public WxPayService wxService() {
+        WxPayConfig payConfig = new WxPayConfig();
+        payConfig.setAppId(StringUtils.trimToNull(this.properties.getAppId()));
+        payConfig.setMchId(StringUtils.trimToNull(this.properties.getMchId()));
+        payConfig.setMchKey(StringUtils.trimToNull(this.properties.getMchKey()));
+        payConfig.setSubAppId(StringUtils.trimToNull(this.properties.getSubAppId()));
+        payConfig.setSubMchId(StringUtils.trimToNull(this.properties.getSubMchId()));
+        payConfig.setKeyPath(properties.getKeyPath() + "apiclient_cert.p12");
+        payConfig.setPrivateKeyPath(properties.getKeyPath() + "apiclient_key.pem");
+        payConfig.setPrivateCertPath(properties.getKeyPath() + "apiclient_cert.pem");
+        payConfig.setApiV3Key(StringUtils.trimToNull(this.properties.getApiV3Key()));
+        // 可以指定是否使用沙箱环境
+        payConfig.setUseSandboxEnv(false);
+
+        WxPayService wxPayService = new WxPayServiceImpl();
+        wxPayService.setConfig(payConfig);
+        return wxPayService;
+    }
+}

+ 41 - 0
ie-admin/src/main/java/com/ruoyi/web/core/config/WxPayProperties.java

@@ -0,0 +1,41 @@
+package com.ruoyi.web.core.config;
+
+import lombok.Data;
+import org.springframework.boot.context.properties.ConfigurationProperties;
+
+@Data
+@ConfigurationProperties(prefix = "wxpay")
+public class WxPayProperties {
+    /**
+     * 设置微信公众号或者小程序等的appid
+     */
+    private String appId;
+
+    /**
+     * 微信支付商户号
+     */
+    private String mchId;
+
+    /**
+     * 微信支付商户密钥
+     */
+    private String mchKey;
+
+    /**
+     * 服务商模式下的子商户公众账号ID,普通模式请不要配置,请在配置文件中将对应项删除
+     */
+    private String subAppId;
+
+    /**
+     * 服务商模式下的子商户号,普通模式请不要配置,最好是请在配置文件中将对应项删除
+     */
+    private String subMchId;
+
+    /**
+     * apiclient_cert.p12文件的绝对路径,或者如果放在项目中,请以classpath:开头指定
+     */
+    private String keyPath;
+
+    private String apiV3Key;
+}
+

+ 4 - 0
ie-admin/src/main/java/com/ruoyi/web/domain/CardUserBody.java

@@ -19,4 +19,8 @@ public class CardUserBody extends RegisterBody {
     @ApiModelProperty(value = "到期日期", example = "2028-08-08")
     @JsonFormat(pattern = "yyyy-MM-dd")
     Date outDate;
+    /** 考生专业类别 **/
+    private Integer examMajor;
+    /** 考生专业类别名称 */
+    private String examMajorName;
 }

+ 14 - 0
ie-admin/src/main/java/com/ruoyi/web/service/CommService.java

@@ -2,6 +2,7 @@ package com.ruoyi.web.service;
 
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
+import com.ruoyi.common.core.content.VistorContextHolder;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.core.text.Convert;
 import com.ruoyi.common.enums.UserRegStatus;
@@ -151,4 +152,17 @@ public class CommService {
         }
         return treeNodeList;
     }
+
+    public String getLocation(){
+        return getLocation(null);
+    }
+    public String getLocation(String location){
+        if(org.apache.commons.lang3.StringUtils.isBlank(location)) {
+            location = VistorContextHolder.getLocation();
+        }
+        if (org.apache.commons.lang3.StringUtils.isBlank(location)) {
+            location = "湖南";
+        }
+        return location;
+    }
 }

+ 69 - 39
ie-admin/src/main/java/com/ruoyi/web/service/ExamService.java

@@ -5,13 +5,11 @@ import com.alibaba.fastjson2.util.DateUtils;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.google.common.collect.Sets;
-import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.enums.ExamType;
 import com.ruoyi.common.enums.UserRegStatus;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.dz.service.IDzSubjectService;
-import com.ruoyi.dz.service.impl.DzSubjectServiceImpl;
 import com.ruoyi.enums.*;
 import com.ruoyi.ie.domain.AMarjorPlan;
 import com.ruoyi.ie.service.IAMarjorPlanService;
@@ -21,7 +19,6 @@ import com.ruoyi.learn.service.ILearnPaperService;
 import com.ruoyi.learn.service.ILearnPlanService;
 import com.ruoyi.mxjb.domain.MxjbContants;
 import com.ruoyi.system.service.ISysUserService;
-import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.collections4.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.stereotype.Service;
@@ -81,7 +78,7 @@ public class ExamService {
      * @return
      */
     @Transactional(rollbackFor = Exception.class)
-    public AnswerSheet openExaminee(boolean directed, PaperType paperType, Long relatedId, Long subjectId) {
+    public AnswerSheet openExaminee(boolean directed, PaperType paperType, Long relatedId, Long subjectId, Integer questionType) {
         SysUser user = SecurityUtils.getLoginUser().getUser();
         if(paperTypeSet.contains(paperType)) {
             if(UserTypeEnum.isCard(user.getUserType()) && !UserRegStatus.Student.equals(user.getRegStatus())) {
@@ -92,19 +89,22 @@ public class ExamService {
             if(UserTypeEnum.isCard(user.getUserType()) && !UserRegStatus.Student.equals(user.getRegStatus())) {
                 throw new RuntimeException("VIP功能不可用");
             }
-            return openExamineeForPractice(relatedId, SecurityUtils.getUserId(), directed);
+            return openExamineeForPractice(relatedId, SecurityUtils.getUserId(), directed, questionType);
         } else if(PaperType.Course.equals(paperType)) {
             if(UserTypeEnum.isCard(user.getUserType()) && !UserRegStatus.Student.equals(user.getRegStatus())) {
                 throw new RuntimeException("VIP功能不可用");
             }
             return openExamineeForCourse(relatedId, SecurityUtils.getUserId(), directed);
         } else if(PaperType.Simulated.equals(paperType)) {
-            SysUser exist = sysUserService.selectUserById(SecurityUtils.getUserId());
-            LearnStudent ls = learnStudentMapper.selectLearnStudentByStudentId(exist.getUserId());
-            if(null == ls) {
-                throw new RuntimeException("请先定设置定向学习" + exist.getUserId());
+            if(null == relatedId) { // 直接打开Paper的模拟卷
+                SysUser exist = sysUserService.selectUserById(SecurityUtils.getUserId());
+                LearnStudent ls = learnStudentMapper.selectLearnStudentByStudentId(exist.getUserId());
+                if(null == ls) {
+                    throw new RuntimeException("请先定设置专业学习" + exist.getUserId());
+                }
+                return openExaminee(ls, subjectId, exist);
             }
-            return openExaminee(ls, subjectId, exist);
+            return openExamineeByPaper(relatedId);
         } else if(PaperType.Test.equals(paperType)) {
             SysUser exist = sysUserService.selectUserById(SecurityUtils.getUserId());
             LearnTestStudent ts = learnTestStudentMapper.selectLearnTestStudentById(relatedId);
@@ -131,15 +131,10 @@ public class ExamService {
         } else if(ExamineeStatus.Exam.getVal().equals(examinee.getState())) {
             throw new RuntimeException("考试中,不能提取答案");
         }
-        LearnAnswer aCond = new LearnAnswer();
-        aCond.setExamineeId(examineeId);
-        Map<Long, LearnAnswer> answerMap = learnAnswerMapper.selectLearnAnswerList(aCond).stream().collect(Collectors.toMap(LearnAnswer::getQuestionId, t -> t));
         LearnPaper learnPaper = learnPaperService.selectLearnPaperById(examinee.getPaperId());
-        List<PaperVO.QuestionAnswer> questionList = paperService.loadPaperQuestionAnswers(SecurityUtils.getUserId(), examinee.getPaperId(), answerMap, !examContinue);
-        AnswerSheet answerSheet = buildAnswerSheet(learnPaper, examinee);
+        AnswerSheet answerSheet = buildAnswerSheet(learnPaper, examinee, loadQuestionAnswers(examinee, examContinue));
         answerSheet.setTotalCount(learnPaper.getNumber());
         answerSheet.setWrongCount(examinee.getWrongCount());
-        answerSheet.setQuestions(questionList);
 
         if(null != examinee.getPaperInfo()) {
             JSONObject info = JSONObject.parseObject(examinee.getPaperInfo());
@@ -156,6 +151,14 @@ public class ExamService {
         return answerSheet;
     }
 
+    private List<PaperVO.QuestionAnswer> loadQuestionAnswers(LearnExaminee examinee, boolean examContinue) {
+        LearnAnswer aCond = new LearnAnswer();
+        aCond.setExamineeId(examinee.getExamineeId());
+        Map<Long, LearnAnswer> answerMap = learnAnswerMapper.selectLearnAnswerList(aCond).stream().collect(Collectors.toMap(LearnAnswer::getQuestionId, t -> t));
+        List<PaperVO.QuestionAnswer> questionList = paperService.loadPaperQuestionAnswers(SecurityUtils.getUserId(), examinee.getPaperId(), answerMap, !examContinue);
+        return questionList;
+    }
+
     /**
      * 交卷
      * @param answerSheet
@@ -370,8 +373,11 @@ public class ExamService {
         learnExaminee.setPaperType(paperType.getVal());
         learnExaminee.setState(ExamineeStatus.Exam.getVal());
         List<LearnExaminee> examineeList = examineeMapper.selectLearnExamineeList(learnExaminee);
+
+        List<PaperVO.QuestionAnswer> questionAnswerList = null;
         if (CollectionUtils.isNotEmpty(examineeList)) {
             learnExaminee = examineeList.get(0);
+            questionAnswerList = loadQuestionAnswers(learnExaminee, true);
         } else {
             if(StringUtils.isNotBlank(ts.getDirectKey())) { // 全量,只分科目
                 LearnStudent ls = learnStudentMapper.selectLearnStudentByStudentId(ts.getStudentId());
@@ -383,7 +389,7 @@ public class ExamService {
             learnExaminee.setDuration(0L);
             examineeMapper.insertLearnExaminee(learnExaminee);
         }
-        return buildAnswerSheet(paper, learnExaminee);
+        return buildAnswerSheet(paper, learnExaminee, questionAnswerList);
     }
 
     private AnswerSheet openExaminee(PaperType paperType, Long paperId, Long studentId) {
@@ -395,15 +401,17 @@ public class ExamService {
         learnExaminee.setPaperType(paperType.getVal());
         learnExaminee.setState(ExamineeStatus.Exam.getVal());
         List<LearnExaminee> examineeList = examineeMapper.selectLearnExamineeList(learnExaminee);
+        List<PaperVO.QuestionAnswer> questionAnswerList = null;
         if (CollectionUtils.isNotEmpty(examineeList)) {
             learnExaminee = examineeList.get(0);
+            questionAnswerList = loadQuestionAnswers(learnExaminee, true);
         } else {
             learnExaminee.setState(ExamineeStatus.Exam.getVal());
             learnExaminee.setBeginTime(new Date());
             learnExaminee.setDuration(0L);
             examineeMapper.insertLearnExaminee(learnExaminee);
         }
-        return buildAnswerSheet(paper, learnExaminee);
+        return buildAnswerSheet(paper, learnExaminee, questionAnswerList);
     }
     @Transactional
     public AnswerSheet openExamineeForTest(LearnTestStudent ts, SysUser sysUser) {
@@ -437,14 +445,11 @@ public class ExamService {
         for(LearnExaminee e : examineeList) {
             if(ExamineeStatus.Sign.getVal().equals(e.getState())) {
                 LearnPaper learnPaper = paperMapper.selectLearnPaperById(e.getPaperId());
-                return buildAnswerSheet(learnPaper, e);
+                return buildAnswerSheet(learnPaper, e, loadQuestionAnswers(e, true));
             }
             existPaperIdSet.add(e.getPaperId());
         }
         LearnPaper paper = getBestPaper(sysUser.getExamType(), plan, subjectId, existPaperIdSet); // getAvailPaper(sysUser.getExamType(), ls, subjectId, existPaperIdSet)
-        examinee.setPaperId(paper.getId());
-        examinee.setState(ExamineeStatus.Sign.getVal());
-        examinee.setDuration(0L);
 
         JSONObject evalCountObj = JSONObject.parseObject(sysUser.getEvalCounts());
         Integer evalCount = evalCountObj.getInteger(subjectId.toString());
@@ -458,13 +463,39 @@ public class ExamService {
         sysUserService.updateUserProfile(upUser);
 
         examinee.setPaperInfo(buildPaperInfo(ls, plan));
-        examineeMapper.insertLearnExaminee(examinee);
-        AnswerSheet answerSheet = buildAnswerSheet(paper, examinee);
-
+        AnswerSheet answerSheet = openNewExamineeByPaper(examinee, paper);
         answerSheet.setCollegeId(ls.getUniversityId());
         answerSheet.setCollegeName(plan.getUniversityName());
         answerSheet.setMajorId(ls.getMajorPlanId());
         answerSheet.setMajorName(plan.getMajorName());
+        return answerSheet;
+    }
+    private AnswerSheet openExamineeByPaper(Long paperId) {
+        LearnPaper learnPaper = paperMapper.selectLearnPaperById(paperId);
+
+        LearnExaminee examinee = new LearnExaminee();
+        examinee.setStudentId(SecurityUtils.getLoginUser().getUser().getUserId());
+        examinee.setPaperType(PaperType.Simulated.getVal());
+        examinee.setPaperKey("P" + "_" + paperId + "_" + learnPaper.getSubjectId());
+        List<LearnExaminee> examineeList = examineeMapper.selectLearnExamineeList(examinee);
+        if(CollectionUtils.isNotEmpty(examineeList)) {
+            LearnExaminee exist = examineeList.get(0);
+            if(exist.getState() >= ExamineeStatus.Commit.getVal()) {
+                throw new ValidationException("试卷不能重复打开做, 请查问答卷");
+            }
+            return buildAnswerSheet(learnPaper, exist, loadQuestionAnswers(exist, true));
+        }
+        return openNewExamineeByPaper(examinee, learnPaper);
+    }
+    private AnswerSheet openNewExamineeByPaper(LearnExaminee examinee, LearnPaper paper) {
+        examinee.setPaperId(paper.getId());
+        examinee.setState(ExamineeStatus.Sign.getVal());
+        examinee.setDuration(0L);
+        JSONObject info = new JSONObject();
+        info.put("paperName", paper.getPaperName());
+        examinee.setPaperInfo(info.toJSONString());
+        examineeMapper.insertLearnExaminee(examinee);
+        AnswerSheet answerSheet = buildAnswerSheet(paper, examinee, null);
         answerSheet.setSubjectId(paper.getSubjectId());
         answerSheet.setSubjectName(dzSubjectService.selectDzSubjectBySubjectId(paper.getSubjectId()).getSubjectName());
         return answerSheet;
@@ -486,10 +517,10 @@ public class ExamService {
             throw new RuntimeException("无效同步知识点");
         }
         return openExaminee(PaperType.Course, knowledgeId, Stream.of(kc.getKnowledges().split(",")).map(Long::parseLong).collect(Collectors.toList()), studentId, false,
-                0L, kc.getName(), null, null, "") ;
+                0L, kc.getName(), null, null, "", 0) ;
     }
 
-    private AnswerSheet openExamineeForPractice(Long knowledgeId, Long studentId, Boolean directed) {
+    private AnswerSheet openExamineeForPractice(Long knowledgeId, Long studentId, Boolean directed, Integer questionType) {
         String directKey;
         AMarjorPlan plan = null;
         LearnStudent ls = null;
@@ -504,7 +535,7 @@ public class ExamService {
         }
         LearnKnowledgeTree knowledgeTree = knowledgeTreeMapper.selectLearnKnowledgeTreeById(knowledgeId);
         return openExaminee(PaperType.Practice, knowledgeId, Lists.newArrayList(knowledgeId), studentId, directed,
-                knowledgeTree.getSubjectId(), knowledgeTree.getName(), ls, plan, directKey) ;
+                knowledgeTree.getSubjectId(), knowledgeTree.getName(), ls, plan, directKey, questionType) ;
     }
 
     /**
@@ -512,13 +543,13 @@ public class ExamService {
      * @return
      */
     private AnswerSheet openExaminee(PaperType paperType, Long knowledgeId, List<Long> useKnowledgeIds, Long studentId, Boolean directed,
-                                     Long subjectId, String knowledName, LearnStudent ls, AMarjorPlan plan, String directKey) {
+                                     Long subjectId, String knowledName, LearnStudent ls, AMarjorPlan plan, String directKey, Integer questionType) {
         LearnPaper paper = new LearnPaper();
         paper.setPaperType(paperType.name());
         paper.setRelateId(knowledgeId);
         paper.setYear(Calendar.getInstance().get(Calendar.YEAR));
         paper.setStatus(PaperStatus.TmpValid.getVal());
-        paper.setDirectKey(studentId + "_" + directKey);
+        paper.setDirectKey(studentId + "_" + directKey + "_" + (null == questionType ? "0" : questionType));
         List<LearnPaper> paperList = paperMapper.selectLearnPaperList(paper);
         if (CollectionUtils.isNotEmpty(paperList)) { // 有未做完的
             LearnPaper existPaper = paperList.get(0);
@@ -530,12 +561,7 @@ public class ExamService {
             List<LearnExaminee> examineeList = examineeMapper.selectLearnExamineeList(learnExaminee);
             if (CollectionUtils.isNotEmpty(examineeList) && ExamineeStatus.Exam.getVal().equals(examineeList.get(0).getState())) {
                 LearnExaminee examinee = examineeList.get(0);
-                LearnAnswer aCond = new LearnAnswer();
-                aCond.setExamineeId(examinee.getExamineeId());
-                Map<Long, LearnAnswer> answerMap = learnAnswerMapper.selectLearnAnswerList(aCond).stream().collect(Collectors.toMap(LearnAnswer::getQuestionId, t -> t));
-                List<PaperVO.QuestionAnswer> questionList = paperService.loadPaperQuestionAnswers(SecurityUtils.getUserId(), examinee.getPaperId(), answerMap, true);
-                AnswerSheet answerSheet = buildAnswerSheet(existPaper, examinee);
-                answerSheet.setQuestions(questionList);
+                AnswerSheet answerSheet = buildAnswerSheet(existPaper, examinee, loadQuestionAnswers(examinee, true));
                 answerSheet.setKnowledgeId(existPaper.getRelateId());
                 return answerSheet;
             }
@@ -545,7 +571,10 @@ public class ExamService {
             up.setStatus(PaperStatus.Valid.getVal());
             paperMapper.updateLearnPaper(up);
         }
-        List<LearnPaperQuestion> pqList = paperService.getQuestionsByRandom(studentId,  15, useKnowledgeIds, Arrays.stream(QuestionType.values()).map(QuestionType::getTitle).collect(Collectors.toList()));
+        List<String> types = questionType.equals(0)
+                ? Arrays.stream(QuestionType.values()).map(QuestionType::getTitle).collect(Collectors.toList())
+                : Lists.newArrayList(QuestionType.Single.getTitle(), QuestionType.Judgment.getTitle());
+        List<LearnPaperQuestion> pqList = paperService.getQuestionsByRandom(studentId,  15, useKnowledgeIds, types, 0);
         if(CollectionUtils.isEmpty(pqList)) {
             throw new RuntimeException("本知识点题已做完");
         }
@@ -574,7 +603,7 @@ public class ExamService {
         }
         examineeMapper.insertLearnExaminee(learnExaminee);
 
-        AnswerSheet answerSheet = buildAnswerSheet(paper, learnExaminee);
+        AnswerSheet answerSheet = buildAnswerSheet(paper, learnExaminee, null);
         List<PaperVO.QuestionAnswer> questionList = paperService.loadPaperQuestionAnswers(SecurityUtils.getUserId(), paper.getId(), null, true);
         answerSheet.setQuestions(questionList);
         answerSheet.setKnowledgeId(paper.getRelateId());
@@ -659,7 +688,7 @@ public class ExamService {
         throw new ValidationException("未初始化院校定向模拟题库: " + subjectId + ":" + plan.getId());
     }
 
-    private AnswerSheet buildAnswerSheet(LearnPaper paper, LearnExaminee examinee) {
+    private AnswerSheet buildAnswerSheet(LearnPaper paper, LearnExaminee examinee, List<PaperVO.QuestionAnswer> questionList) {
         AnswerSheet answerSheet = new AnswerSheet();
         answerSheet.setExamineeId(examinee.getExamineeId());
         answerSheet.setPaperId(examinee.getPaperId());
@@ -687,6 +716,7 @@ public class ExamService {
             answerSheet.setSubjectId(paper.getSubjectId());
             answerSheet.setSubjectName(dzSubjectService.selectDzSubjectBySubjectId(paper.getSubjectId()).getSubjectName());
         }
+        answerSheet.setQuestions(questionList);
         return answerSheet;
     }
 }

+ 2 - 2
ie-admin/src/main/java/com/ruoyi/web/service/LearnStatService.java

@@ -36,8 +36,8 @@ public class LearnStatService {
         this.learnStudentService = learnStudentService;
         this.learnTeacherService = learnTeacherService1;
     }
-    public List<JSONObject> selectStudentPractices(Long studentId, PaperType paperType) {
-        return examineeMapper.selectStudentPractices(studentId, paperType.getVal());
+    public List<JSONObject> selectStudentPractices(Long studentId, PaperType paperType, Integer questionType) {
+        return examineeMapper.selectStudentPractices(studentId, paperType.getVal(), questionType);
     }
 
 

+ 7 - 5
ie-admin/src/main/java/com/ruoyi/web/service/PaperService.java

@@ -548,7 +548,7 @@ public class PaperService {
             newKnownList.addAll(tailKnownList);
             ktd.setKnowledges(newKnownList);
             String isSubType = null == ktd.getSubType() ? "0" : ktd.getSubType().toString();
-            Map<String, KnowTypeAssign> knowTypeAssignMap = buildKnowTypeAssignMap(studentId, isSubType, ktd.getTypes().get(0).getCount(), ktd.getTypes().stream().map(t -> t.getType().getTitle()).collect(Collectors.toList()), newKnownList, paperDef.getFillExclude());
+            Map<String, KnowTypeAssign> knowTypeAssignMap = buildKnowTypeAssignMap(studentId, isSubType, ktd.getTypes().get(0).getCount(), ktd.getTypes().stream().map(t -> t.getType().getTitle()).collect(Collectors.toList()), newKnownList, paperDef.getFillExclude(), 0);
             assignTypeFirst(paperDef.getFillExclude(), ktd, knowTypeAssignMap);
             pqList.addAll(getQuestions2(studentId, ktd.getCount(), pqList.size(), newKnownList, isSubType, ktd.getTypes(), knowTypeAssignMap, existQuestionSet));
         }
@@ -556,14 +556,15 @@ public class PaperService {
         return pqList;
     }
 
-    public List<LearnPaperQuestion> getQuestionsByRandom(Long studentId, Integer total, Collection<Long> knowledgeIds, List<String> types) {
-        Map<String, KnowTypeAssign> knowTypeAssignMap = buildKnowTypeAssignMap(studentId, "2", null, types, knowledgeIds, true);
+    public List<LearnPaperQuestion> getQuestionsByRandom(Long studentId, Integer total, Collection<Long> knowledgeIds, List<String> types, Integer questionType) {
+        Map<String, KnowTypeAssign> knowTypeAssignMap = buildKnowTypeAssignMap(studentId, "2", null, types, knowledgeIds, true, questionType);
         List<KnowTypeAssign> knowTypeAssignList = Lists.newArrayList(knowTypeAssignMap.values());
         List<LearnPaperQuestion> pqList = Lists.newArrayList();
         Set<String> existQuestionSet = Sets.newHashSet();
         Random random = ThreadLocalRandom.current();
         Map<String, List<LearnQuestions>> typeQuestionMap = Maps.newHashMap();
         LearnQuestions qCond = new LearnQuestions();
+        qCond.setTypeId(questionType);
         do {
             if(knowTypeAssignList.isEmpty()) {
                 break;
@@ -1036,7 +1037,7 @@ public class PaperService {
      * @return
      */
     private Map<String, KnowTypeAssign> buildKnowTypeAssignMap(Long studentId, TestPaperVO.PaperDef paperDef) {
-        return buildKnowTypeAssignMap(studentId, "0", null, paperDef.getTypes().stream().map(TestPaperVO.TypeDef::getType).collect(Collectors.toList()), paperDef.getKnowIds(), paperDef.getFillExclude());
+        return buildKnowTypeAssignMap(studentId, "0", null, paperDef.getTypes().stream().map(TestPaperVO.TypeDef::getType).collect(Collectors.toList()), paperDef.getKnowIds(), paperDef.getFillExclude(), 0);
     }
 
     /**
@@ -1047,9 +1048,10 @@ public class PaperService {
      * @param fillExclude
      * @return
      */
-    private Map<String, KnowTypeAssign> buildKnowTypeAssignMap(Long studentId, String isSubType, Integer subCnt, List<String> types, Collection<Long> knownIds, Boolean fillExclude) {
+    private Map<String, KnowTypeAssign> buildKnowTypeAssignMap(Long studentId, String isSubType, Integer subCnt, List<String> types, Collection<Long> knownIds, Boolean fillExclude, Integer questionType) {
         Map<String, KnowTypeAssign> knowTypeAssignMap = Maps.newHashMap();
         Map cond = Maps.newHashMap();
+        cond.put("typeId", questionType);
         cond.put("studentId", studentId);
         cond.put("knowIds", knownIds);
         cond.put("types", types);

+ 123 - 0
ie-admin/src/main/java/com/ruoyi/web/service/ScoreGroupCalculator.java

@@ -0,0 +1,123 @@
+package com.ruoyi.web.service;
+
+import com.ruoyi.syzy.domain.BBusiWishScoreGroups;
+import org.apache.commons.collections4.CollectionUtils;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+public class ScoreGroupCalculator {
+    private Map<String, List<BBusiWishScoreGroups>> yearScoreGroupsMap;
+    private Set<String> courseSet;
+
+    public ScoreGroupCalculator(List<BBusiWishScoreGroups> groupList) {
+        Collections.sort(groupList, new Comparator<BBusiWishScoreGroups>() {
+            @Override
+            public int compare(BBusiWishScoreGroups o1, BBusiWishScoreGroups o2) {
+                return o1.getScore().compareTo(o2.getScore());
+            }
+        });
+        courseSet = groupList.stream().map(t -> t.getMode()).collect(Collectors.toSet());
+        yearScoreGroupsMap = groupList.stream().collect(Collectors.groupingBy(t -> buildKey(t.getYear(), t.getMode())));
+        if(CollectionUtils.isEmpty(groupList)) {
+            return;
+        }
+    }
+
+    public Integer getRankIgnoreLow(Integer year, String mode, Integer score) {
+        return (null == score || score < 200) ? null : getRank2(year, mode, score);
+    }
+
+    public Integer getRank(Integer year, String mode, Integer score) {
+        return (null == score) ? null : getRank2(year, mode, score);
+    }
+
+    public Integer getRank2(Integer year, String mode, Integer score) {
+        BBusiWishScoreGroups scoreGroups = getScoreGroupByScore(year, mode, score);
+        return null != scoreGroups ? scoreGroups.getLowestRank() : null;
+    }
+
+    public Integer getScore(Integer year, String mode, Integer rank) {
+        List<BBusiWishScoreGroups> l = yearScoreGroupsMap.get(buildKey(year, mode));
+        if (null == l) {
+            return null;
+        }
+        Optional<BBusiWishScoreGroups> optionalBBusiWishScoreGroups = l.stream().filter(v -> rank <= v.getLowestRank() && rank >= v.getHighestRank()).findFirst();
+        /*int left = 0;
+        int right = l.size() - 1;
+        while (left <= right) {
+            int mid = left + (right - left) / 2;
+            BBusiWishScoreGroups v = l.get(mid);
+            if (rank <= v.getLowestRank() && rank >= v.getHighestRank()) {
+                return v.getScore(); // 找到目标,返回索引
+            } else if (v.getLowestRank() > rank) {
+                left = mid + 1; // 在右半区继续查找
+            } else {
+                right = mid - 1; // 在左半区继续查找
+            }
+        }*/
+        return optionalBBusiWishScoreGroups.isPresent() ? optionalBBusiWishScoreGroups.get().getScore() : null;
+    }
+
+    public BBusiWishScoreGroups getScoreGroupByScore(Integer year, String mode, Integer score) {
+        List<BBusiWishScoreGroups> l = yearScoreGroupsMap.get(buildKey(year, mode));
+        if (CollectionUtils.isEmpty(l) || null == score || score > l.get(l.size() - 1).getMaxScore()) {
+            return null;
+        }
+        Optional<BBusiWishScoreGroups> optionalBBusiWishScoreGroups = l.stream().filter(v -> score >= v.getScore() && score <= v.getMaxScore()).findFirst();
+        /*
+        int left = 0;
+        int right = l.size() - 1;
+        while (left <= right) {
+            int mid = left + (right - left) / 2;
+
+            BBusiWishScoreGroups v = l.get(mid);
+            if (score >= v.getScore() && score <= v.getMaxScore()) {
+                return v; // 找到目标,返回索引
+            } else if (v.getScore() < score) {
+                left = mid + 1; // 在右半区继续查找
+            } else {
+                right = mid - 1; // 在左半区继续查找
+            }
+        }*/
+        return optionalBBusiWishScoreGroups.isPresent() ? optionalBBusiWishScoreGroups.get() : null;
+    }
+
+    public BBusiWishScoreGroups getBatchRange(Map<String, List<BBusiWishScoreGroups>> yearBatchRangeMap, Integer year, Integer matchBatch) {
+        return getBatchRange(yearBatchRangeMap, year, null, matchBatch);
+    }
+
+    public BBusiWishScoreGroups getBatchRange(Map<String, List<BBusiWishScoreGroups>> yearBatchRangeMap, Integer year, Integer liberalScience, Integer matchBatch) {
+        List<BBusiWishScoreGroups> rangeList = yearBatchRangeMap.get(null != liberalScience ? year + "_" + liberalScience : year.toString());
+        if (null != rangeList) {
+            for (BBusiWishScoreGroups range : rangeList) {
+                if (range.getType().equals(matchBatch)) {
+                    return range;
+                }
+            }
+        }
+        return null;
+    }
+
+    public Integer getMaxScore(Integer year, String mode) {
+        List<BBusiWishScoreGroups> l = yearScoreGroupsMap.get(buildKey(year, mode));
+        return CollectionUtils.isNotEmpty(l) ? l.get(l.size() - 1).getMaxScore() : null;
+    }
+
+    public Boolean isMixCourse() {
+        return courseSet.size() > 2;
+    }
+
+    public static Integer getLiberalScience(String type) {
+        if("物理".equals(type) || "理科".equals(type)) {
+            return 1;
+        } else if("历史".equals(type) || "文科".equals(type)) {
+            return 0;
+        }
+        return 2;
+    }
+
+    private String buildKey(Integer year, String mode) {
+        return year + "_" + mode;
+    }
+}

+ 267 - 0
ie-admin/src/main/java/com/ruoyi/web/service/ScoreRankService.java

@@ -0,0 +1,267 @@
+package com.ruoyi.web.service;
+
+import com.google.common.collect.Maps;
+import com.ruoyi.syzy.domain.BBusiWishLocationSubmits;
+import com.ruoyi.syzy.domain.BBusiWishScoreGroups;
+import com.ruoyi.syzy.mapper.BBusiWishLocationSubmitsMapper;
+import com.ruoyi.syzy.mapper.BBusiWishScoreGroupsMapper;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.stream.Collectors;
+
+@Service
+@Slf4j
+public class ScoreRankService {
+    private BBusiWishScoreGroupsMapper wishScoreGroupsMapper;
+    private BBusiWishLocationSubmitsMapper wishLocationSubmitsMapper;
+    private Map<String, ScoreGroupCalculator> locationYearScoreGroupMapperMap = Maps.newHashMap(); // 一分一段
+    private Map<String, Map<Integer, List<BBusiWishScoreGroups>>> locationYearBatchRangeMap = Maps.newHashMap(); // 批次表
+    private Map<String, Integer[]> locationYearEqRateMap = Maps.newHashMap();
+
+    public ScoreRankService(BBusiWishScoreGroupsMapper wishScoreGroupsMapper, BBusiWishLocationSubmitsMapper wishLocationSubmitsMapper) {
+        this.wishScoreGroupsMapper = wishScoreGroupsMapper;
+        this.wishLocationSubmitsMapper = wishLocationSubmitsMapper;
+    }
+
+    public void clean() {
+        synchronized (locationYearScoreGroupMapperMap) {
+            locationYearScoreGroupMapperMap.clear();
+        }
+        synchronized (locationYearScoreGroupMapperMap) {
+            locationYearBatchRangeMap.clear();
+        }
+        synchronized (locationYearScoreGroupMapperMap) {
+            locationYearEqRateMap.clear();
+        }
+    }
+
+    // 分数转位次 mode=当年的文科/理科/物理/历史
+    public Integer getRank(String location, Integer year, String mode, Integer score) {
+        ScoreGroupCalculator sgMapper =  getScoreCalculatorMapper(location, year, mode);
+        return sgMapper.getRank2(year, mode, score);
+    }
+
+    // 位次转分数 mode=当年的文科/理科/物理/历史
+    public Integer getScore(String location, Integer year, String mode, Integer rank) {
+        if (null == rank) {
+            return null;
+        }
+        ScoreGroupCalculator sgMapper = getScoreCalculatorMapper(location, year, mode);
+        return sgMapper.getScore(year, mode, rank);
+    }
+
+    public Integer getRankEqRank(String location, Integer maxYear, Integer currYear, String mode, Integer score, Integer rank, Integer eqYear) {
+        BBusiWishScoreGroups currScoreRange = getScoreRangeByScore(location, maxYear, mode, currYear, score);
+        Integer eqRank = null;
+        if(null != currScoreRange) {
+            BBusiWishScoreGroups eqScoreRange = getScoreRangeByBatch(location, currYear, currScoreRange.getMode(), eqYear, currScoreRange.getType());
+            eqRank = getEqRank(currScoreRange, eqScoreRange, location, currYear, currYear, score, rank, eqYear);
+        }
+        return eqRank;
+    }
+
+    // 不需要等效分时使用
+    public Integer getEqRank(String location, Integer maxYear, Integer currYear, String mode, Integer score, Integer eqYear) {
+        BBusiWishScoreGroups currScoreRange = getScoreRangeByScore(location, maxYear, mode, currYear, score);
+        Integer eqRank = null;
+        if(null != currScoreRange) {
+            BBusiWishScoreGroups eqScoreRange = getScoreRangeByBatch(location, currYear, currScoreRange.getMode(), eqYear, currScoreRange.getType());
+            eqRank = getEqRank(currScoreRange, eqScoreRange, location, currYear, currYear, score, null, eqYear);
+        }
+        return eqRank;
+    }
+    // 需要等效分时使用,计算等效位次(rate = (matchRank - matchLow) / (matchHigh - matchLow),  tmpRank(year) = lowRankRank + (highRank - lowRank) * rate); 等效分(等效位数在当年对应的分值)
+    public Integer getEqRank(BBusiWishScoreGroups currScoreRange, BBusiWishScoreGroups eqScoreRange, String location, Integer maxYear, Integer srcYear, Integer srcScore, Integer srcRank, Integer eqYear) {
+        if (null == currScoreRange || null == eqScoreRange) {
+            log.warn("无有效批次范围: {},{},{},{}", location, maxYear, srcYear, srcScore);
+            return null;
+        }
+        String srcMode = currScoreRange.getMode();
+        ScoreGroupCalculator sgMapper =  getScoreCalculatorMapper(location, srcYear, srcMode);
+        if (null == sgMapper) {
+            log.warn("无有效一分一段: {},{},{}", location, srcYear, srcMode);
+            return null;
+        }
+        if(null == srcRank) {
+            srcRank = sgMapper.getRank(srcYear, srcMode, srcScore);
+        }
+        if (null == srcRank) {
+            log.warn("分数不在一分一段: {},{},{},{}", location, srcYear, srcMode, srcScore);
+            return null;
+        }
+        String key = location + "_" + maxYear + "_" + srcMode + "_" + srcYear + "_" + eqYear + "_" + currScoreRange.getType();
+        Integer[] data = locationYearEqRateMap.get(key);
+        Integer eqMinRank = null, egRange = null, matchMinRank, matchRange;
+        if (null == data) {
+            synchronized (locationYearEqRateMap) {
+                if (null == (data = locationYearEqRateMap.get(key))) {
+                    matchMinRank = sgMapper.getRank(srcYear, currScoreRange.getMode(), currScoreRange.getMaxScore());
+                    Integer matchMaxRank = sgMapper.getRank(srcYear, currScoreRange.getMode(), currScoreRange.getScore());
+                    matchRange = null != matchMaxRank && null != matchMinRank ? matchMaxRank - matchMinRank : null;
+
+                    ScoreGroupCalculator eqMapper = getScoreCalculatorMapper(location, eqYear, eqScoreRange.getMode());
+                    Integer eqMaxRank = null;
+                    if (null != eqScoreRange && null != eqMapper) {
+                        eqMinRank = eqMapper.getRank2(eqYear, eqScoreRange.getMode(), eqScoreRange.getMaxScore());
+                        eqMaxRank = eqMapper.getRank2(eqYear, eqScoreRange.getMode(), eqScoreRange.getScore());
+                        egRange = null != eqMaxRank && null != eqMinRank ? eqMaxRank - eqMinRank : null;
+                    }
+                    data = new Integer[]{matchMinRank, matchRange, eqMinRank, egRange};
+                    locationYearEqRateMap.put(key, data);
+                }
+            }
+
+        }
+        matchMinRank = data[0];
+        matchRange = data[1];
+        eqMinRank = data[2];
+        egRange = data[3];
+        if(null == matchMinRank || null == matchRange || null == eqMinRank || null == egRange) {
+            log.warn("参数不全: {},{},{},{},值: {},{},{},{}", location, srcYear, srcMode, srcScore, matchMinRank, matchRange, eqMinRank, egRange);
+            return null;
+        }
+        Double matchRate = (srcRank - matchMinRank + 1) * 1.0 / (matchRange + 1);
+        Integer eqRank = (int) Math.floor(eqMinRank + matchRate * egRange);
+        return eqRank;
+    }
+
+    public BBusiWishScoreGroups getScoreGroups(String location, Integer year, String mode, Integer score) {
+        ScoreGroupCalculator sgMapper =  getScoreCalculatorMapper(location, year, mode);
+        return sgMapper.getScoreGroupByScore(year, mode, score);
+    }
+
+    /**
+     * 根据批次查找对应的批次
+     * @return
+     */
+    public BBusiWishScoreGroups getScoreRangeByBatch(String location, Integer maxYear, String course, Integer year, Integer batch) {
+        Map<Integer, List<BBusiWishScoreGroups>> yearBatchRangeMap = buildScoreBatchRange(location, maxYear, course);
+        if(null == yearBatchRangeMap) {
+            throw new RuntimeException("需要先初始化环境");
+        }
+        List<BBusiWishScoreGroups> batchRangeList = yearBatchRangeMap.get(year);
+        if(null == batchRangeList) {
+            return null;
+        }
+        Integer needType = batch < 4 && batchRangeList.get(0).getStatus() > 0 ? 1 : batch;
+        Optional<BBusiWishScoreGroups> scoreGroupsOptional = batchRangeList.stream().filter(t -> t.getType().equals(needType)).findFirst();
+        BBusiWishScoreGroups scoreGroup = null;
+        if (scoreGroupsOptional.isPresent() && null != (scoreGroup = scoreGroupsOptional.get()) && null == scoreGroup.getMaxScore()) {
+            ScoreGroupCalculator sgMapper = getScoreCalculatorMapper(location, year, scoreGroup.getMode());
+            scoreGroup.setMaxScore(sgMapper.getMaxScore(year, scoreGroup.getMode()));
+        }
+        return scoreGroup;
+    }
+
+    /**
+     * 根据分数定位所在批次
+     */
+    public BBusiWishScoreGroups getScoreRangeByScore(String location, Integer maxYear, String course, Integer year, Integer score) {
+        Map<Integer, List<BBusiWishScoreGroups>> yearBatchRangeMap = buildScoreBatchRange(location, maxYear, course);
+        if(null == yearBatchRangeMap) {
+            throw new RuntimeException("需要先初始化环境");
+        }
+        List<BBusiWishScoreGroups> batchRangeList = yearBatchRangeMap.get(year);
+        Optional<BBusiWishScoreGroups> scoreGroupsOptional = batchRangeList.stream().filter(t -> score >= t.getScore() && (null == t.getMaxScore() || score <= t.getMaxScore())).findFirst();
+        if(!scoreGroupsOptional.isPresent()) {
+            return null;
+        }
+        BBusiWishScoreGroups scoreGroup = null;
+        if (scoreGroupsOptional.isPresent() && null != (scoreGroup = scoreGroupsOptional.get()) && null == scoreGroup.getMaxScore()) {
+            ScoreGroupCalculator sgMapper = getScoreCalculatorMapper(location, year, scoreGroup.getMode());
+            scoreGroup.setMaxScore(sgMapper.getMaxScore(year, scoreGroup.getMode()));
+        }
+        return scoreGroup;
+
+    }
+
+    /**
+     *
+     * @param location
+     * @param maxYear
+     * @param course 文科/历史 或 理科/物理 批次线组,State 标名是否混合
+     * @return mode = course
+     */
+    private Map<Integer, List<BBusiWishScoreGroups>> buildScoreBatchRange(String location, Integer maxYear, String course) {
+        String key = location + "_" + course;
+        Map<Integer, List<BBusiWishScoreGroups>> yearBatchRangeMap = locationYearBatchRangeMap.get(key);
+        if(null != yearBatchRangeMap) {
+            return yearBatchRangeMap;
+        }
+        synchronized (locationYearBatchRangeMap) {
+            if (null != (yearBatchRangeMap = locationYearBatchRangeMap.get(key))) {
+                return yearBatchRangeMap;
+            }
+            Integer minYear = maxYear - 3;
+            BBusiWishLocationSubmits query = new BBusiWishLocationSubmits();
+            query.setLocation(location);
+            List<BBusiWishLocationSubmits> lsList = wishLocationSubmitsMapper.selectBBusiWishLocationSubmitsList(query).stream().sorted(new Comparator<BBusiWishLocationSubmits>() {
+                @Override
+                public int compare(BBusiWishLocationSubmits o1, BBusiWishLocationSubmits o2) {
+                    return o1.getScore().compareTo(o2.getScore());
+                }
+            }).filter(ls -> {
+                Integer year = Integer.parseInt(ls.getYear());
+                return course.equals(ls.getCourse()) &&  year >= minYear && year <= maxYear;
+            }).collect(Collectors.toList());
+            // 判断是否旧转新高考
+            Boolean isMixCourse = lsList.stream().map(t -> t.getCourse()).collect(Collectors.toSet()).size() > 1;
+
+            // 构建立年度与批次范围表
+            yearBatchRangeMap = Maps.newHashMap();
+            for (BBusiWishLocationSubmits ls : lsList) {
+                Integer year = Integer.parseInt(ls.getYear());
+                List<BBusiWishScoreGroups> rangeList = yearBatchRangeMap.get(year);
+                BBusiWishScoreGroups last = null;
+                if (null == rangeList) {
+                    rangeList = new ArrayList<>();
+                    yearBatchRangeMap.put(year, rangeList);
+                } else {
+                    last = rangeList.get(rangeList.size() - 1);
+                    last.setMaxScore(ls.getScore() - 1);
+                }
+                if (isMixCourse && null != last && last.getType() < 4) { // 以本科最低为本科批底线
+                    last.setMaxScore(null); // 合并本科一二批次,要取掉最高分
+                } else {
+                    BBusiWishScoreGroups range = new BBusiWishScoreGroups();
+                    range.setType(isMixCourse && ls.getType() < 4 ? 1 : ls.getType());
+                    range.setStatus(isMixCourse ? 1 : 0); // 备注是否交叉状态
+                    range.setMode(ls.getCourse()); // 文科/理科/物理/历史
+                    range.setScore(ls.getScore());
+                    rangeList.add(range);
+                }
+            }
+            locationYearBatchRangeMap.put(key, yearBatchRangeMap);
+            return yearBatchRangeMap;
+        }
+    }
+
+    /**
+     *
+     * @param location
+     * @param year
+     * @param mode 文科/理科/物理/历史
+     * @return
+     */
+    private ScoreGroupCalculator getScoreCalculatorMapper(String location, Integer year, String mode) {
+        String key = location + "_" + year + "_" + mode;
+        ScoreGroupCalculator sgMapper = locationYearScoreGroupMapperMap.get(key);
+        if (null == sgMapper) {
+            synchronized (locationYearScoreGroupMapperMap) {
+                sgMapper = locationYearScoreGroupMapperMap.get(key);
+                if (null == sgMapper) {
+                    BBusiWishScoreGroups sgCond = new BBusiWishScoreGroups();
+                    sgCond.setLocation(location);
+                    sgCond.setYear(year);
+                    sgCond.setMode(mode);
+                    sgMapper = new ScoreGroupCalculator(wishScoreGroupsMapper.selectBBusiWishScoreGroupsList(sgCond));
+                    locationYearScoreGroupMapperMap.put(key, sgMapper);
+                }
+            }
+        }
+        return sgMapper;
+    }
+
+}

+ 26 - 8
ie-admin/src/main/java/com/ruoyi/web/service/StudentService.java

@@ -3,9 +3,12 @@ package com.ruoyi.web.service;
 import cn.hutool.core.lang.Dict;
 import com.alibaba.fastjson2.JSONObject;
 import com.alibaba.fastjson2.util.DateUtils;
+import com.google.common.collect.Sets;
 import com.ruoyi.common.annotation.Excel;
 import com.ruoyi.common.core.domain.AjaxResult2;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.enums.ExamType;
+import com.ruoyi.common.enums.SubjectType;
 import com.ruoyi.common.utils.CommonUtils;
 import com.ruoyi.common.utils.NumberUtils;
 import com.ruoyi.common.utils.SecurityUtils;
@@ -56,13 +59,21 @@ public class StudentService {
         sCond.setLocations(sysUser.getLocation());
         sCond.setExamTypes(sysUser.getExamType().name());
         List<DzSubject> list = dzSubjectService.selectDzSubjectList(sCond);
-        if (!directed) {
-            return list;
-        }
-        LearnStudent learnStudent = learnStudentService.selectLearnStudentByStudentId(SecurityUtils.getUserId());
         Set<Long> subjectIdSet;
-        if (null == learnStudent || CollectionUtils.isEmpty((subjectIdSet = learnTeacherService.getSubjectIdSet(new Long[]{learnStudent.getMajorPlanId()})))) {
-            return list;
+        if (!directed) {
+            if(!ExamType.VHS.equals(sysUser.getExamType())){
+                return list;
+            }
+            subjectIdSet = Sets.newHashSet(1L, 2L, 3L);
+            Integer userSubjectId = SecurityUtils.getLoginUser().getUser().getExamMajor();
+            if(null != userSubjectId) {
+                subjectIdSet.add(userSubjectId.longValue());
+            }
+        } else {
+            LearnStudent learnStudent = learnStudentService.selectLearnStudentByStudentId(SecurityUtils.getUserId());
+            if (null == learnStudent || CollectionUtils.isEmpty((subjectIdSet = learnTeacherService.getSubjectIdSet(new Long[]{learnStudent.getMajorPlanId()})))) {
+                return list;
+            }
         }
         return list.stream().filter(t -> subjectIdSet.contains(t.getSubjectId())).collect(Collectors.toList());
     }
@@ -100,11 +111,18 @@ public class StudentService {
 
         List<JSONObject> list = learnExamineeMapper.selectLearnExamineeList(eCond).stream().map(t -> {
             JSONObject info = JSONObject.parseObject(t.getPaperInfo());
-            DzSubject dzSubject = dzSubjectService.selectDzSubjectBySubjectId(Long.parseLong(t.getPaperKey()));
-            String name = info.getString("universityName") + "-" + info.getString("majorName");
+            String name = null;
+            if(null == info) {
+                name = t.getPaperKey();
+            } else if(StringUtils.isBlank(name = info.getString("paperName"))) {
+                name = info.getString("universityName") + "-" + info.getString("majorName");
+            }
+            String[] paperKey = t.getPaperKey().split("_");
+            DzSubject dzSubject = dzSubjectService.selectDzSubjectBySubjectId(Long.parseLong(paperKey[paperKey.length - 1]));
             return JSONObject.of("id", t.getExamineeId(), "state", t.getState()
                     , "subjectName", dzSubject.getSubjectName()
                     , "name", name
+                    , "subjectGroup", (dzSubject.getSubjectId() < 10 ? "公共课" : "专业课")
                     , "date", DateUtils.format(null != t.getEndTime() ? t.getEndTime() : t.getBeginTime(), "yyyy-MM-dd HH:mm")
                     , "score", t.getScore());
         }).collect(Collectors.toList());

+ 12 - 0
ie-admin/src/main/java/com/ruoyi/web/service/SysLoginService.java

@@ -2,6 +2,7 @@ package com.ruoyi.web.service;
 
 import javax.annotation.Resource;
 
+import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import com.ruoyi.common.core.domain.AjaxResult;
 import com.ruoyi.common.core.domain.entity.SysUser;
@@ -253,6 +254,17 @@ public class SysLoginService
         return AjaxResult.success();
     }
 
+    public void updateBindStatus(Long userId, Integer bindStatus) {
+        ZuserToken zuserToken = new ZuserToken();
+        zuserToken.setUserIds(Lists.newArrayList(userId));
+        List<ZuserToken> zuserTokenList = zuserTokenService.selectTopZuserTokenList(zuserToken);
+        for (ZuserToken zt : zuserTokenList) {
+            if(StringUtils.isNotNull(zt)){
+                tokenService.updateBindStatus(zt.getToken(), bindStatus);
+            }
+        }
+    }
+
     public AjaxResult resetTokens(List<SysUser> startUserList) {
         List<Long> userIds = startUserList.stream().map(SysUser::getUserId).collect(Collectors.toList());
         return resetTokensByUserIds(userIds);

+ 30 - 9
ie-admin/src/main/java/com/ruoyi/web/service/SysRegisterService.java

@@ -4,6 +4,7 @@ import com.alibaba.fastjson2.JSONArray;
 import com.alibaba.fastjson2.JSONObject;
 import com.google.common.collect.Lists;
 import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.common.enums.BindStatus;
 import com.ruoyi.common.enums.UserRegStatus;
 import com.ruoyi.common.exception.base.BaseException;
 import com.ruoyi.common.utils.NumberUtils;
@@ -116,6 +117,7 @@ public class SysRegisterService
             upCard.setDistributeStatus(exist.getDistributeStatus());
             upCard.setDays(exist.getDays());
             upUser.setUserId(loginUser.getUserId());
+            upUser.setBindStatus(loginUser.getUser().getBindStatus());
         }
         upUser.setUserName(username);
         if (StringUtils.isEmpty(username)) {
@@ -164,8 +166,8 @@ public class SysRegisterService
         if(CollectionUtils.isEmpty(sysUserList)) {
             throw new ValidationException("卡用户不存在");
         }
-        Long userId = sysUserList.get(0).getUserId();
-
+        SysUser dbUser = sysUserList.get(0);
+        Long userId = dbUser.getUserId();
         SysUser upUser = new SysUser();
         upUser.setUserId(userId);
         upUser.setNickName(cardUserBody.getNickName());
@@ -176,6 +178,14 @@ public class SysRegisterService
         upUser.setSchoolId(cardUserBody.getSchoolId());
         upUser.setClassId(cardUserBody.getClassId());
         upUser.setPhonenumber(cardUserBody.getMobile());
+        //如果手机号有修改,校验userName为手机号时也要跟着一起修改
+        if(null!=dbUser.getPhonenumber()&&!dbUser.getPhonenumber().equals(cardUserBody.getMobile().trim())) {
+            if (dbUser.getPhonenumber().equalsIgnoreCase(dbUser.getUserName())){
+                upUser.setUserName(cardUserBody.getMobile().trim());
+            }
+        }
+        upUser.setExamMajor(cardUserBody.getExamMajor());
+        upUser.setExamMajorName(cardUserBody.getExamMajorName());
         if (!userService.checkPhoneUnique(upUser)) {
             throw new ValidationException("保存用户'" + upUser.getNickName() + "'失败,注册手机已存在" + cardUserBody.getMobile());
         }
@@ -200,7 +210,11 @@ public class SysRegisterService
 
         LearnStudent upStudent = new LearnStudent();
         upStudent.setStudentId(upUser.getUserId());
-        upStudent.setClassId(NumberUtils.isPositive(upCard.getCampusClassId()) ? upCard.getCampusClassId() : upCard.getClassId());
+        if(NumberUtils.isPositive(upCard.getCampusClassId())) {
+            upStudent.setClassId(upCard.getCampusClassId());
+        } else if(null == card.getCampusClassId()) {
+            upStudent.setClassId(upCard.getClassId());
+        }
         upStudent.setSchoolId(upCard.getSchoolId());
         upStudent.setCampusId(upCard.getCampusId());
         learnStudentMapper.updateLearnStudent(upStudent);
@@ -212,9 +226,12 @@ public class SysRegisterService
     }
 
     private void saveInfo(SysUser user, DzCards card, RegisterBody register) {
+        register.setCampusSchoolId(null);
+        register.setCampusClassId(null);
         user.setNickName(register.getNickName());
         user.setLocation(register.getLocation());
         user.setExamType(register.getExamType());
+        user.setExamMajor(register.getExamMajor());
         user.setEndYear(register.getEndYear());
         user.setScores(register.getScores());
         user.setSchoolId(register.getSchoolId());
@@ -229,10 +246,13 @@ public class SysRegisterService
             card.setSchoolId(register.getSchoolId());
             card.setClassId(register.getClassId());
 
-            if(null == user.getCardId() || !user.getCardId().equals(card.getCardId())) { // 未绑定或换绑时激活卡
+            if(null == user.getCardId() || !user.getCardId().equals(card.getCardId()) || BindStatus.Pend.code().equals(user.getBindStatus())) { // 未绑定或换绑时激活卡
                 if(!CardDistributeStatus.Assign.getVal().equals(card.getDistributeStatus()) || !CardStatus.Free.getVal().equals(card.getStatus())) {
                     throw new RuntimeException("无效卡");
                 }
+                if(BindStatus.Pend.code().equals(user.getBindStatus())) {
+                    user.setBindStatus(BindStatus.Bind.code());
+                }
                 user.setEvalCounts("{\"1\":1,\"2\":1,\"3\":1,\"4\":1,\"9\":1,\"11\":1,\"0\":0}");
                 user.setCardId(card.getCardId());
                 user.setRegStatus(UserRegStatus.Student);
@@ -256,7 +276,11 @@ public class SysRegisterService
             userService.insertUser(user);
             LearnStudent upStudent = new LearnStudent();
             upStudent.setStudentId(user.getUserId());
-            upStudent.setClassId(user.getClassId());
+            if(null == card || null == card.getCampusClassId()) {
+                upStudent.setClassId(user.getClassId());
+            } else {
+                upStudent.setClassId(card.getCampusClassId());
+            }
             upStudent.setSchoolId(user.getSchoolId());
             upStudent.setCampusId(register.getCampusSchoolId());
             learnStudentMapper.insertLearnStudent(upStudent);
@@ -264,10 +288,7 @@ public class SysRegisterService
             LearnStudent upStudent = new LearnStudent();
             upStudent.setStudentId(user.getUserId());
             upStudent.setSchoolId(user.getSchoolId());
-            if (NumberUtils.isPositive(register.getCampusClassId())) {
-                upStudent.setClassId(register.getCampusClassId());
-                upStudent.setCampusId(register.getCampusSchoolId());
-            } else {
+            if(null == card || null == card.getCampusClassId()) {
                 upStudent.setClassId(user.getClassId());
             }
             learnStudentMapper.updateLearnStudent(upStudent);

+ 8 - 0
ie-admin/src/main/java/com/ruoyi/web/service/UserDetailsServiceImpl.java

@@ -9,8 +9,10 @@ import com.ruoyi.common.exception.ErrorException;
 import com.ruoyi.common.utils.PhoneUtils;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.dz.domain.DzCards;
+import com.ruoyi.dz.domain.DzSubject;
 import com.ruoyi.dz.mapper.DzClassesMapper;
 import com.ruoyi.dz.mapper.DzSchoolMapper;
+import com.ruoyi.dz.mapper.DzSubjectMapper;
 import com.ruoyi.dz.service.IDzCardsService;
 import com.ruoyi.enums.CardDistributeStatus;
 import com.ruoyi.enums.CardTimeStatus;
@@ -61,6 +63,8 @@ public class UserDetailsServiceImpl implements UserDetailsService
     private DzSchoolMapper dzSchoolMapper;
     @Autowired
     private DzClassesMapper dzClassesMapper;
+    @Autowired
+    private DzSubjectMapper dzSubjectMapper;
 
     @Override
     public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException
@@ -107,6 +111,10 @@ public class UserDetailsServiceImpl implements UserDetailsService
                 userService.updateUserProfile(upUser);
             }
         }
+        if(null != user.getExamMajor()) {
+            DzSubject dzSubject = dzSubjectMapper.selectDzSubjectBySubjectId(user.getExamMajor().longValue());
+            user.setExamMajorName(null != dzSubject ? dzSubject.getSubjectName() : "");
+        }
         LoginUser loginUser = createLoginUser(user, card);
         if(isPhoneLogin) {
             user.setPassword(UserConstants.LOGIN_SMS_PASS);

+ 418 - 0
ie-admin/src/main/java/com/ruoyi/web/service/WeixinPayService.java

@@ -0,0 +1,418 @@
+package com.ruoyi.web.service;
+
+import com.alibaba.fastjson2.JSONObject;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonInclude;
+import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.DeserializationFeature;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.domain.model.LoginUser;
+import com.ruoyi.common.core.text.Convert;
+import com.ruoyi.common.enums.BindStatus;
+import com.ruoyi.common.enums.ECardPayStatus;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.QRCodeUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.dz.domain.DzCards;
+import com.ruoyi.dz.service.IDzCardsService;
+import com.ruoyi.enums.CardDistributeStatus;
+import com.ruoyi.enums.CardStatus;
+import com.ruoyi.framework.web.service.TokenService;
+import com.ruoyi.system.service.ISysConfigService;
+import com.ruoyi.system.service.ISysUserService;
+import com.ruoyi.system.service.IZuserTokenService;
+import com.ruoyi.voluntary.domain.BBusiPaymentOrders;
+import com.ruoyi.voluntary.service.IBBusiPaymentOrdersService;
+import com.wechat.pay.contrib.apache.httpclient.WechatPayHttpClientBuilder;
+import com.wechat.pay.contrib.apache.httpclient.auth.AutoUpdateCertificatesVerifier;
+import com.wechat.pay.contrib.apache.httpclient.auth.PrivateKeySigner;
+import com.wechat.pay.contrib.apache.httpclient.auth.WechatPay2Credentials;
+import com.wechat.pay.contrib.apache.httpclient.auth.WechatPay2Validator;
+import com.wechat.pay.contrib.apache.httpclient.util.AesUtil;
+import com.wechat.pay.contrib.apache.httpclient.util.PemUtil;
+import lombok.AllArgsConstructor;
+import lombok.Data;
+import lombok.NoArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.http.client.methods.CloseableHttpResponse;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.client.utils.URIBuilder;
+import org.apache.http.entity.StringEntity;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.util.EntityUtils;
+import org.apache.tomcat.util.codec.binary.Base64;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.io.ClassPathResource;
+import org.springframework.stereotype.Service;
+
+import javax.imageio.ImageIO;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.PrivateKey;
+import java.util.Date;
+
+@Service
+@Slf4j
+public class WeixinPayService {
+    CloseableHttpClient httpClient;
+    @Value("${wxpay.appId}")
+    private String appId;
+    private String mchId;
+    private String notifyUrl;
+    private AesUtil aesUtil;
+    private ObjectMapper om = new ObjectMapper();
+    @Autowired
+    private IBBusiPaymentOrdersService paymentOrdersService;
+    @Autowired
+    private IDzCardsService cardsService;
+    private final ISysUserService sysUserService;
+    private final SysLoginService sysLoginService;
+    private final ISysConfigService sysConfigService;
+
+
+    public WeixinPayService(@Value("${wxpay.mchid}") String mchId, @Value("${wxpay.key}") String apiV3Key,
+                            @Value("${wxpay.mchsn}") String mchSerialNo, @Value("${wxpay.privateKey}") String privateKey, ISysUserService sysUserService
+                            , SysLoginService sysLoginService, ISysConfigService sysConfigService) throws Exception {
+        this.mchId = mchId;
+        this.sysUserService = sysUserService;
+        this.sysLoginService = sysLoginService;
+        this.sysConfigService = sysConfigService;
+        // 加载商户私钥(privateKey:私钥字符串)
+        // String privateKey = getKey();
+        // String mchSerialNo = "21925f369f23cdf8ea3a913c541d4239d1bcc8af";
+        // String apiV3Key = "zhilongsanjiasanzhilongsanjiasan";
+        PrivateKey merchantPrivateKey = PemUtil.loadPrivateKey(new ByteArrayInputStream(privateKey.getBytes("utf-8")));
+        byte[] apiV3KeyBytes = apiV3Key.getBytes("utf-8");
+        // 加载平台证书(mchId:商户号,mchSerialNo:商户证书序列号,apiV3Key:V3密钥)
+        AutoUpdateCertificatesVerifier verifier = new AutoUpdateCertificatesVerifier(
+                new WechatPay2Credentials(mchId, new PrivateKeySigner(mchSerialNo, merchantPrivateKey)), apiV3KeyBytes);
+        aesUtil = new AesUtil(apiV3KeyBytes);
+        // 初始化httpClient
+        httpClient = WechatPayHttpClientBuilder.create()
+                .withMerchant(mchId, mchSerialNo, merchantPrivateKey)
+                .withValidator(new WechatPay2Validator(verifier)).build();
+        om.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
+        String urlPrefix = sysConfigService.selectConfigByKey("pay.callback.url");
+        notifyUrl = urlPrefix + "/front/ecard/payResult";
+
+//        Date timeExpire = DateUtils.addMonths(new Date(), 1);
+//        PayOrderReq req = new PayOrderReq(timeExpire, 1, mchId, "description", "notifyUrl", "orderId", "appId");
+//        String reqData = om.writeValueAsString(req);
+
+//        String url = "https://online.fliphtml5.com/jkrou/kfob/";
+//        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+//        try {
+//            Image src = ImageIO.read(WeixinPayService.class.getClassLoader().getResourceAsStream("mingxue60.jpg"));
+//            QRCodeUtils.encode(url, src, bos);
+//            String img = "data:image/jpeg;base64," + Base64.encodeBase64String(bos.toByteArray());
+//            System.out.println(img);
+//        } catch (Exception e) {
+//            e.printStackTrace();
+//        }
+        return;
+    }
+
+    public void checkWxPay() {
+        BBusiPaymentOrders cond = new BBusiPaymentOrders();
+        cond.setStatus(ECardPayStatus.unpaid.getValue());
+        Date limit = DateUtils.addDays(new Date(), -2);
+        for (BBusiPaymentOrders order : paymentOrdersService.selectBBusiPaymentOrdersList(cond)) {
+            if (order.getCreateTime().before(limit)) { // 忽略两天前的
+                continue;
+            }
+            String outTradeNo = order.getPhonenumber() + "_" + order.getId();
+            try {
+                PayOrderReq payResult = queryOrder(outTradeNo);
+                if (null == payResult.getCode()) {
+                    processPaySuccess(payResult);
+                } else if ("404".equals(payResult.getCode())) {
+                    continue;
+                } else {
+                    log.warn("check Pay code: {}, text: {}", payResult.getCode(), payResult.getText());
+                }
+            } catch (Exception e) {
+                log.warn("check Pay ", e);
+                continue;
+            }
+        }
+    }
+
+    public void processWxPayFail(Long orderId, String payer, String feedback) {
+        BBusiPaymentOrders order = paymentOrdersService.selectBBusiPaymentOrdersById(orderId);
+        if (null == order || ECardPayStatus.unpaid.getValue() != order.getStatus()) {
+            log.warn("订单状态更新失败{}", orderId);
+            return;
+        }
+        BBusiPaymentOrders upOrder = new BBusiPaymentOrders();
+        upOrder.setId(order.getId());
+        upOrder.setStatus(ECardPayStatus.payFailed.getValue());
+        upOrder.setFeedBack(feedback);
+        upOrder.setPayer(payer);
+        upOrder.setPayTime(new Date());
+        paymentOrdersService.updateBBusiPaymentOrders(upOrder);
+    }
+
+    public void processPaySuccess(Long orderId, String transactionId, String tradeState, String payer, String feedback) {
+        BBusiPaymentOrders order = paymentOrdersService.selectBBusiPaymentOrdersById(orderId);
+        if (null == order || ECardPayStatus.unpaid.getValue() != order.getStatus()) {
+            log.warn("WxPay 订单不存在或非未支付状态 {}", orderId);
+            return;
+        }
+        if (!"SUCCESS".equals(tradeState)) {
+            BBusiPaymentOrders upOrder = new BBusiPaymentOrders();
+            upOrder.setId(order.getId());
+            upOrder.setStatus(ECardPayStatus.payFailed.getValue());
+            upOrder.setFeedBack(feedback);
+            upOrder.setPayer(payer);
+            upOrder.setPayTime(new Date());
+            upOrder.setTransactionId(transactionId);
+            upOrder.setStatus(ECardPayStatus.payFailed.getValue());
+            paymentOrdersService.updateBBusiPaymentOrders(upOrder);
+            log.warn("WxPay 订单支付失败 {}", orderId);
+            return;
+        }
+        //查找一张未使用的电子卡
+        DzCards eCard = cardsService.selectOneECard();
+        if(null == eCard) {
+            log.warn("WxPay 无有效电子卡 {}", orderId);
+            return;
+        }
+        //修改电子卡已使用的状态。 电子卡新增时需要直接分配代理商,学生注册时year与outTime需要取b_busi_payment_orders里面的值(20220901已完成)
+        eCard.setStatus(CardStatus.Free.getVal());
+        eCard.setDistributeStatus(CardDistributeStatus.Assign.getVal());
+        eCard.setDistributeTime(DateUtils.getNowDate());
+        cardsService.updateDzCards(eCard);
+
+        order.setCardId(eCard.getCardId());
+        order.setCardNo(eCard.getCardNo());
+
+        order.setTransactionId(transactionId);
+        order.setStatus(ECardPayStatus.paid.getValue());
+        paymentOrdersService.updateBBusiPaymentOrders(order);
+
+        Long userId = Long.parseLong(order.getCustomerCode());
+        SysUser upUser = new SysUser();
+        upUser.setUserId(userId);
+        upUser.setBindStatus(BindStatus.Pend.code());
+        upUser.setCardId(eCard.getCardId());
+        sysUserService.updateUserProfile(upUser);
+        sysLoginService.updateBindStatus(upUser.getUserId(), upUser.getBindStatus());
+    }
+
+    public void processPaySuccess(PayOrderReq payResult) {
+        if(!payResult.getOutTradeNo().startsWith("test")) {
+            //15111096866_59  phonenumber_orderId
+            Long orderId = Convert.toLongArray("_", payResult.getOutTradeNo())[1];
+            PayOrderPayer payer = payResult.getPayer();
+            processPaySuccess(orderId, payResult.getTransactionId(), payResult.getTradeState(), null != payer ? payer.openid : "", payResult.getText());
+        }
+    }
+
+    public void processWxPayResult(String serial, String signatureType, String timestamp, String nonce, String signature, String json) throws Exception {
+        log.info("WxPay {}-{}-{}-{}-{} recv {}", serial, signatureType, timestamp, nonce, signature, json);
+        PayCallback payCallback = om.readValue(json, PayCallback.class);
+        PayCallbackResource resource = payCallback.getResource();
+
+        String result = aesUtil.decryptToString(resource.getAssociatedData().getBytes(), resource.getNonce().getBytes(), resource.getCiphertext());
+        PayOrderReq payResult = om.readValue(result, PayOrderReq.class);
+        payResult.setText(result);
+        log.info("WxPay {} proc {}", serial, result);
+        processPaySuccess(payResult);
+        return;
+    }
+
+    public String encodeQrCode(String url) {
+        ByteArrayOutputStream bos = new ByteArrayOutputStream();
+        try {
+            InputStream is = new ClassPathResource("/mingxue60.jpg").getInputStream();
+            QRCodeUtils.encode(url, null != is ? ImageIO.read(is) : null, bos);
+            return "data:image/jpeg;base64," + Base64.encodeBase64String(bos.toByteArray());
+        } catch (Exception e) {
+            log.error("encodeQrCode", e);
+        }
+        return url;
+    }
+
+    public PayOrderReq queryOrder(String outTradeNo) throws Exception {
+        URIBuilder uriBuilder = new URIBuilder("https://api.mch.weixin.qq.com/v3/pay/transactions/out-trade-no/" + outTradeNo);
+        uriBuilder.setParameter("mchid", mchId);
+
+        //完成签名并执行请求
+        HttpGet httpGet = new HttpGet(uriBuilder.build());
+        httpGet.addHeader("Accept", "application/json");
+        CloseableHttpResponse response = httpClient.execute(httpGet);
+
+        try {
+            int statusCode = response.getStatusLine().getStatusCode();
+            String result = EntityUtils.toString(response.getEntity());
+            if (statusCode == 200) {
+                PayOrderReq payResult = om.readValue(result, PayOrderReq.class);
+                payResult.setText(result);
+                return payResult;
+            } else if (StringUtils.isNotBlank(result)) {
+                PayOrderReq payResult = new PayOrderReq();
+                payResult.setCode(String.valueOf(statusCode));
+                payResult.setText(result);
+                return payResult;
+            } else {
+                throw new IOException("failed,code = " + statusCode + ",body = " + result);
+            }
+        } finally {
+            response.close();
+        }
+    }
+
+    public String createOrderPayUrl(String orderId, Integer total, String description, PayOrderSceneInfo sceneInfo) throws Exception{
+        HttpPost httpPost = new HttpPost("https://api.mch.weixin.qq.com/v3/pay/transactions/" + (null != sceneInfo ? "h5" : "native"));
+        Date timeExpire = DateUtils.addMonths(new Date(), 1);
+        PayOrderReq req = new PayOrderReq(timeExpire, total, mchId, description, notifyUrl, orderId, appId);
+        req.setSceneInfo(sceneInfo);
+        log.info("PayOrderReq is {}", JSONObject.toJSONString(req));
+        String reqData = om.writeValueAsString(req);
+        StringEntity entity = new StringEntity(reqData,"utf-8");
+        entity.setContentType("application/json");
+        httpPost.setEntity(entity);
+        httpPost.setHeader("Accept", "application/json");
+        //完成签名并执行请求
+        CloseableHttpResponse response = httpClient.execute(httpPost);
+        try {
+            int statusCode = response.getStatusLine().getStatusCode();
+            if (statusCode == 200) { //处理成功
+                CreateOrderResp resp = om.readValue(EntityUtils.toString(response.getEntity()), CreateOrderResp.class);
+                return null != sceneInfo ? resp.h5Url : resp.codeUrl;
+            } else {
+                throw new IOException("WxFail, code = " + statusCode + ",body = " + EntityUtils.toString(response.getEntity()));
+            }
+        } finally {
+            response.close();
+        }
+    }
+
+    @Data
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @AllArgsConstructor
+    @NoArgsConstructor
+    public static class PayOrderSceneH5Info {
+        String type;
+    }
+
+    @Data
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @AllArgsConstructor
+    @NoArgsConstructor
+    public static class PayOrderSceneInfo {
+        @JsonProperty("payer_client_ip")
+        String payerClientIp;
+        @JsonProperty("h5_info")
+        PayOrderSceneH5Info h5Info;
+
+        public PayOrderSceneInfo(String ip, String os) {
+            payerClientIp = ip;
+            h5Info = new PayOrderSceneH5Info(os);
+        }
+    }
+
+    @Data
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    public static class PayOrderAmount {
+        Integer total;
+        String currency = "CNY";
+        @JsonProperty("payer_total")
+        Integer payTotal;
+        @JsonProperty("payer_currency")
+        String payCurrency;
+    }
+    @Data
+    public static class PayOrderPayer {
+        String openid;
+    }
+    @Data
+    @JsonInclude(JsonInclude.Include.NON_NULL)
+    @NoArgsConstructor
+    public static class PayOrderReq {
+        @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ssXXX", timezone="GMT+8")
+        @JsonProperty("time_expire")
+        Date timeExpire;
+        PayOrderAmount amount;
+        @JsonProperty("scene_info")
+        PayOrderSceneInfo sceneInfo;
+        String mchid;
+        String description;
+        @JsonProperty("notify_url")
+        String notifyUrl;
+        @JsonProperty("out_trade_no")
+        String outTradeNo;
+        String appid;
+
+        PayOrderPayer payer;
+        @JsonProperty("transaction_id")
+        String transactionId;
+        @JsonProperty("trade_type")
+        String tradeType;
+        @JsonProperty("trade_state")
+        String tradeState;
+        @JsonProperty("trade_state_desc")
+        String tradeStateDesc;
+        @JsonProperty("bank_type")
+        String bankType;
+        String attach;
+        @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ssXXX", timezone="GMT+8")
+        @JsonProperty("success_time")
+        Date successTime;
+        @JsonIgnore
+        String text;
+        @JsonIgnore
+        String code;
+
+        public PayOrderReq(Date timeExpire, Integer total, String mchid, String description, String notifyUrl, String outTradeNo, String appid) {
+            this.timeExpire = timeExpire;
+            amount = new PayOrderAmount();
+            amount.setTotal(total);
+            this.mchid = mchid;
+            this.description = description;
+            this.notifyUrl = notifyUrl;
+            this.outTradeNo = outTradeNo;
+            this.appid = appid;
+        }
+    }
+
+    @Data
+    public static class CreateOrderResp {
+        @JsonProperty("code_url")
+        String codeUrl;
+        @JsonProperty("h5_url")
+        String h5Url;
+    }
+
+    @Data
+    public static class PayCallbackResource {
+        @JsonProperty("original_type")
+        String originalType;
+        String algorithm;
+        String ciphertext;
+        @JsonProperty("associated_data")
+        String associatedData;
+        String nonce;
+    }
+
+    @Data
+    public static class PayCallback {
+        String id;
+        @JsonFormat(pattern = "yyyy-MM-dd'T'HH:mm:ssXXX", timezone="GMT+8")
+        @JsonProperty("create_time")
+        Date createTime;
+        @JsonProperty("resource_type")
+        String resourceType;
+        @JsonProperty("event_type")
+        String eventType;
+        String summary;
+        PayCallbackResource resource;
+    }
+}

+ 1683 - 0
ie-admin/src/main/java/com/ruoyi/web/service/ZyService.java

@@ -0,0 +1,1683 @@
+package com.ruoyi.web.service;
+
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.github.pagehelper.PageHelper;
+import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
+import com.google.common.collect.Sets;
+import com.ruoyi.common.constant.Constants;
+import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.core.text.Convert;
+import com.ruoyi.common.enums.UserRegStatus;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.common.utils.SecurityUtils;
+import com.ruoyi.common.utils.StringUtils;
+import com.ruoyi.common.utils.bean.BeanUtils;
+import com.ruoyi.dz.domain.DzCards;
+import com.ruoyi.dz.service.IDzCardsService;
+import com.ruoyi.enums.CardType;
+import com.ruoyi.mxjb.domain.BBusiWishUniversityMarjorsCollege;
+import com.ruoyi.mxjb.domain.BBusiWishUniversityMarjorsGroup;
+import com.ruoyi.mxjb.domain.BBusiWishUniversityMarjorsPlanSubmit;
+import com.ruoyi.mxjb.domain.SubmitYearsStats;
+import com.ruoyi.mxjb.mapper.BBusiWishUniversityMarjorsCollegeMapper;
+import com.ruoyi.mxjb.mapper.BBusiWishUniversityMarjorsGroupMapper;
+import com.ruoyi.mxjb.mapper.BBusiWishUniversityMarjorsPlanSubmitMapper;
+import com.ruoyi.mxjb.service.IMxjbWishScoreRateService;
+import com.ruoyi.mxjb.service.impl.MxjbWishScoreRateServiceImpl;
+import com.ruoyi.sy.domain.SyMajor;
+import com.ruoyi.sy.service.ISyMajorService;
+import com.ruoyi.system.service.ISysConfigService;
+import com.ruoyi.syzy.criteria.ZytbMarjorCriteriaNew;
+import com.ruoyi.syzy.domain.*;
+import com.ruoyi.syzy.dto.SubmitWishRecordDTO;
+import com.ruoyi.syzy.dto.UniversitiesCondDTO;
+import com.ruoyi.common.enums.NewgaokaoType;
+import com.ruoyi.syzy.mapper.*;
+import com.ruoyi.syzy.service.IBBusiWishLocationSubmitsService;
+import com.ruoyi.syzy.utils.BatchUtil;
+import com.ruoyi.web.domain.Constant;
+import com.ruoyi.web.domain.ZytbDto;
+import lombok.extern.slf4j.Slf4j;
+import com.ruoyi.web.util.PageUtil;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.math.NumberUtils;
+import org.apache.commons.lang3.time.StopWatch;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+import java.util.concurrent.TimeUnit;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+@Service
+@Slf4j
+public class ZyService {
+    private final BBusiWishUniversitySubmitMarjorsMapper busiWishUniversitySubmitMarjorsMapper;
+    private final BBusiWishUniversitySubmitRecruitPlanMapper busiWishUniversitySubmitRecruitPlanMapper;
+    private final BBusiWishScoreGroupsMapper busiWishScoreGroupsMapper;
+    private final BBusiWishUniversitiesMapper bBusiWishUniversitiesMapper;
+    private final BBusiWishRecordsMapper busiWishRecordsMapper;
+    private final BBusiWishUniversitySubmitsMapper busiWishUniversitySubmitsMapper;
+    private final BBusiWishUniversityMarjorsCollegeMapper busiWishUniversityMarjorsCollegeMapper;
+    private final BBusiWishUniversityMarjorsPlanSubmitMapper busiWishUniversityMarjorsPlanSubmitMapper;
+    private final BBusiWishUniversityMarjorsGroupMapper busiWishUniversityMarjorsGroupMapper;
+    private final IBBusiWishLocationSubmitsService busiWishLocationSubmitsService;
+    private final BBusiWishUniversitiesSubjectevaluateMapper busiWishUniversitiesSubjectevaluateMapper;
+    private final BBusiWishUniversitiesProfessionMapper busiWishUniversitiesProfessionMapper;
+    private final BBusiWishUniversitiesSubjectMapper busiWishUniversitiesSubjectMapper;
+    private final ISysConfigService configService;
+    @Autowired
+    private IDzCardsService cardsService;
+    private final IMxjbWishScoreRateService mxjbWishScoreRateService;
+    private final CacheService cacheService;
+    private final ISyMajorService syMajorService;
+    private final MajorFeatureCache majorFeatureCache;
+//    private final IBusiScoreLockService scoreLockService;
+    private final ScoreRankService scoreRankService;
+
+    private Map<String, Map<String, List<String>>> typeMajorChildrenMap;
+    Integer[] PickWeight = new Integer[] {30, 0, -14}; // ZytbUniversityCriteria 0冲刺型 1稳妥型 2保守型
+
+
+    public ZyService(BBusiWishUniversitySubmitMarjorsMapper busiWishUniversitySubmitMarjorsMapper, BBusiWishUniversitySubmitRecruitPlanMapper busiWishUniversitySubmitRecruitPlanMapper,
+                     BBusiWishScoreGroupsMapper busiWishScoreGroupsMapper, BBusiWishUniversitiesMapper bBusiWishUniversitiesMapper, BBusiWishRecordsMapper busiWishRecordsMapper,
+                     BBusiWishUniversitySubmitsMapper busiWishUniversitySubmitsMapper, BBusiWishUniversityMarjorsCollegeMapper busiWishUniversityMarjorsCollegeMapper,
+                     BBusiWishUniversityMarjorsPlanSubmitMapper busiWishUniversityMarjorsPlanSubmitMapper, BBusiWishUniversityMarjorsGroupMapper busiWishUniversityMarjorsGroupMapper,
+                     IBBusiWishLocationSubmitsService busiWishLocationSubmitsService, BBusiWishUniversitiesSubjectevaluateMapper busiWishUniversitiesSubjectevaluateMapper, BBusiWishUniversitiesProfessionMapper busiWishUniversitiesProfessionMapper,
+                     BBusiWishUniversitiesSubjectMapper busiWishUniversitiesSubjectMapper, ISysConfigService configService, IMxjbWishScoreRateService mxjbWishScoreRateService, CacheService cacheService, ISyMajorService syMajorService, ScoreRankService scoreRankService) {
+        this.busiWishUniversitySubmitMarjorsMapper = busiWishUniversitySubmitMarjorsMapper;
+        this.busiWishUniversitySubmitRecruitPlanMapper = busiWishUniversitySubmitRecruitPlanMapper;
+        this.busiWishScoreGroupsMapper = busiWishScoreGroupsMapper;
+        this.bBusiWishUniversitiesMapper = bBusiWishUniversitiesMapper;
+        this.busiWishRecordsMapper = busiWishRecordsMapper;
+        this.busiWishUniversitySubmitsMapper = busiWishUniversitySubmitsMapper;
+        this.busiWishUniversityMarjorsCollegeMapper = busiWishUniversityMarjorsCollegeMapper;
+        this.busiWishUniversityMarjorsPlanSubmitMapper = busiWishUniversityMarjorsPlanSubmitMapper;
+        this.busiWishUniversityMarjorsGroupMapper = busiWishUniversityMarjorsGroupMapper;
+        this.busiWishLocationSubmitsService = busiWishLocationSubmitsService;
+        this.busiWishUniversitiesSubjectevaluateMapper = busiWishUniversitiesSubjectevaluateMapper;
+        this.busiWishUniversitiesProfessionMapper = busiWishUniversitiesProfessionMapper;
+        this.busiWishUniversitiesSubjectMapper = busiWishUniversitiesSubjectMapper;
+        this.configService = configService;
+        this.mxjbWishScoreRateService = mxjbWishScoreRateService;
+        this.cacheService = cacheService;
+        this.syMajorService = syMajorService;
+//        this.scoreLockService = scoreLockService;
+        this.scoreRankService = scoreRankService;
+        this.majorFeatureCache = new MajorFeatureCache(busiWishUniversitiesSubjectevaluateMapper, busiWishUniversitiesProfessionMapper, busiWishUniversitiesSubjectMapper);
+        this.typeMajorChildrenMap = buildMajorChildrenMap();
+    }
+
+    /**
+     * 06-20后才算新的一年
+     * @return
+     */
+    public Integer getYear() {
+        String createtimeArrayStr = configService.selectConfigByKey("voluntary.newyear.createtime");
+        if(!createtimeArrayStr.contains("{")){
+            createtimeArrayStr= "[{\"location\":\"湖南\",\"time\":\"06-28\"},{\"location\":\"湖北\",\"time\":\"06-28\"},{\"location\":\"江西\",\"time\":\"01-24\"},{\"location\":\"安徽\",\"time\":\"01-28\"},{\"location\":\"广东\",\"time\":\"06-28\"},{\"location\":\"广西\",\"time\":\"06-28\"},{\"location\":\"河南\",\"time\":\"06-28\"},{\"location\":\"四川\",\"time\":\"06-28\"}]";
+        }
+        String voluntaryNewyearCreatetime= StringUtils.EMPTY;
+        if(StringUtils.isNotEmpty(createtimeArrayStr)){
+            JSONArray array = JSONArray.parseArray(createtimeArrayStr);
+            for (Object item : array) {
+                JSONObject jsonObject = (JSONObject) item;
+                if (jsonObject.getString("location").trim().contains(SecurityUtils.getLoginUser().getUser().getLocation().trim())) {
+                    voluntaryNewyearCreatetime = jsonObject.getString("time");
+                    break;
+                }
+            }
+        }
+
+        Date registerTime = DateUtils.parseDate(DateUtils.getCurrentYear()+"-"+(StringUtils.isBlank(voluntaryNewyearCreatetime)?("06-22"):voluntaryNewyearCreatetime));
+
+        Calendar cal = Calendar.getInstance();
+        Integer year = cal.get(Calendar.YEAR);
+        if(new Date().before(registerTime)){
+            year= year -1 ;
+        }
+        return year;
+    }
+
+    /**
+     * 查询最近2年的最新录取数据,以决定是用当年还是前一年匹配
+     * @param location
+     * @param type
+     * @param level
+     * @param currYear
+     * @return
+     */
+    public Integer getSubmitYear(String location, String type, String level, Integer currYear) {
+        //20231208 莫:院校投档线列表中status不限制,模拟志愿要限制status>0,解决院校线出了2023年的但是模拟志愿中只使用2022年的
+        List<String> years = busiWishUniversitySubmitsMapper.yearsStatus(location, type, level);
+        for (String y : years) { // years是按年度倒序的,取第一个最近年度的
+            Integer currSubmitYear = Integer.parseInt(y);
+            if (currSubmitYear <= currYear) {
+                return currSubmitYear < currYear - 1 ? currYear : currSubmitYear;
+            }
+        }
+        return currYear;
+    }
+
+    private Map<String, Map<Integer, String>> YearModeCourseMap = Maps.newHashMap();
+    public void clearYearCourseMap() {
+        YearModeCourseMap.clear();
+    }
+    public Map<Integer, String> getYearCourseMap(Integer currYear, String mode) {
+        String location = SecurityUtils.getLoginUser().getUser().getLocation();
+        Integer liberalScience = NewgaokaoType.isNewgaokao33Province(location) ? 2 : (("物理".equals(mode) || "理科".equals(mode)) ? 1 : 0);
+        String key = location + liberalScience + currYear + mode;
+        Map<Integer, String> yearCourseMap = YearModeCourseMap.get(key);
+        if (null == yearCourseMap) {
+            synchronized (YearModeCourseMap) {
+                yearCourseMap = YearModeCourseMap.get(key);
+                if (null == yearCourseMap) {
+                    yearCourseMap = getYearCourseMapInner(location, liberalScience, currYear, mode);
+                    YearModeCourseMap.put(key, yearCourseMap);
+                }
+            }
+        }
+        return yearCourseMap;
+    }
+
+    public Map<Integer, String> getYearCourseMapInner(String location, Integer liberalScience, Integer currYear, String mode) {
+        Map cond = Maps.newHashMap();
+        cond.put("location", location);
+        cond.put("year", currYear - 3);
+        cond.put("currYear", currYear);
+        cond.put("liberalScience", liberalScience);
+        Map<Integer, String> yearTypeMap = busiWishUniversitySubmitMarjorsMapper.selectYearTypes(cond).stream().collect(Collectors.toMap(t -> Integer.parseInt(t.getYear()), t -> t.getType()));
+        String last = mode;
+        Map<Integer, String> yearCourseMap = Maps.newHashMap();
+        for (int i = currYear; i >= currYear - 3; i--) {
+            String type = yearTypeMap.get(i);
+            if (null != type) {
+                last = type;
+            }
+            yearCourseMap.put(i, last);
+        }
+        return yearCourseMap;
+    }
+
+    public List<String> getVoluntaryHeaders(Boolean isMock,Integer currYear, String mode) {
+        String location = SecurityUtils.getLoginUser().getUser().getLocation();
+        currYear = getYear(); // || location.equals("江西") || location.equals("湖北") || location.equals("湖南")
+        Integer currYearTitle=currYear;
+        if(isMock){
+            //同年时才升年
+            if(currYear<Calendar.getInstance().get(Calendar.YEAR)){
+                currYearTitle=currYear+1;
+            }
+        }
+        Map<Integer, String> yearCourseMap = getYearCourseMap(currYear, mode);
+
+        List<String> headerNameList = Lists.newArrayList("推荐类型", "院校", currYearTitle + "年招生计划", "投档线年份","最低分","位次","录取人数");
+        String forceLocation = configService.selectConfigByKey("voluntary.force.locations");
+        if (null != forceLocation && forceLocation.contains(location)||isMock) {
+            currYear = 2023;
+        }
+        for (int i = currYear; i > currYear - 3; i--) {
+            headerNameList.add(i + "&" + yearCourseMap.get(i));
+        }
+        headerNameList.add("填报");
+        return headerNameList;
+    }
+
+    private Integer getScoreOfLastYear(String location, Integer currYear, String mode, Integer score) {
+        BBusiWishScoreGroups currScoreRange = scoreRankService.getScoreRangeByScore(location, currYear, mode, currYear, score);
+        Integer eqScore = null;
+        if(null != currScoreRange) {
+            Integer eqYear = currYear -1;
+            BBusiWishScoreGroups eqScoreRange = scoreRankService.getScoreRangeByBatch(location, currYear, currScoreRange.getMode(), eqYear, currScoreRange.getType());
+            if (null != eqScoreRange) {
+                Integer eqRank = scoreRankService.getEqRank(currScoreRange, eqScoreRange, location, currYear, currYear, score, null, eqYear);
+                eqScore = scoreRankService.getScore(location, eqYear, eqScoreRange.getMode(), eqRank);
+            }
+        }
+        return eqScore;
+    }
+    private Integer getScoreOfLastYear2(String location, Integer currYear, String mode, Integer score) {
+        Map cond = Maps.newHashMap();
+        cond.put("location", location);
+        cond.put("year", currYear);
+        cond.put("mode", mode);
+        cond.put("score", score);
+        List<BBusiWishScoreGroups> groupList = busiWishScoreGroupsMapper.selectBusiWishScoreGroupsByScore(cond);
+        if(CollectionUtils.isNotEmpty(groupList)) {
+            BBusiWishScoreGroups currScoreGroup = groupList.get(0);
+            cond.remove("score");
+            Integer[] ranks = getMappingRank2(new Integer[] {currScoreGroup.getLowestRank()}, location, currYear, currYear - 1);
+            cond.put("year", currYear - 1);
+            cond.put("rank", ranks[0]);
+            groupList = busiWishScoreGroupsMapper.selectBusiWishScoreGroupsByScore(cond);
+        } else {
+            cond.remove("year");
+            groupList = busiWishScoreGroupsMapper.selectBusiWishScoreGroupsByScore(cond);
+        }
+        if (CollectionUtils.isEmpty(groupList)) {
+            return score;
+        }
+        BBusiWishScoreGroups lastScoreGroup = groupList.get(0);
+        return lastScoreGroup.getScore().intValue();
+    }
+
+    private Integer getLowestRank(Map cond, Integer score) {
+        cond.put("score", score);
+        List<BBusiWishScoreGroups> groupList = busiWishScoreGroupsMapper.selectBusiWishScoreGroupsByScore(cond);
+        if (CollectionUtils.isEmpty(groupList)) {
+            return null;
+        }
+        Integer lowestRank = groupList.get(0).getLowestRank();
+        return lowestRank;
+    }
+
+    private String getMajorName(String majorName, String majorDirection) {
+        if(StringUtils.isNotBlank(majorDirection)) {
+            if (majorDirection.contains("国家专项")) {
+                return majorName + "(国家专项)";
+            } else if (majorDirection.contains("地方专项")) {
+                return majorName + "(地方专项)";
+            }
+        }
+        return majorName;
+    }
+    private boolean getScoreLock(String location) {
+        boolean scoreLock = false;
+        return false;
+        /** TODO莫
+        BusiScoreLock scoreLockCond = new BusiScoreLock();
+        scoreLockCond.setIsValid(BoolValues.yes.getValue());
+        scoreLockCond.setProvinceName(location);
+        List<BusiScoreLock> busiScoreLockList = scoreLockService.selectBusiScoreLockList(scoreLockCond);
+        if (CollectionUtils.isEmpty(busiScoreLockList)) {
+            return scoreLock;
+        }
+        try {
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
+            Date start = sdf.parse(Calendar.getInstance().get(Calendar.YEAR) + "-" + busiScoreLockList.get(0).getStartDate());
+            Date end = sdf.parse(Calendar.getInstance().get(Calendar.YEAR) + "-" + busiScoreLockList.get(0).getEndDate());
+            Date now = new Date();
+            scoreLock = !(now.before(start) || now.after(end));
+        } catch (ParseException e) {
+            log.error("ScoreLock", e);
+        }
+        return scoreLock;**/
+    }
+    private List<String> split2list(String value) {
+        return StringUtils.isNotBlank(value) ? Arrays.asList(value.split(",")) : null;
+    }
+
+    public Map appendScoreCond(ZytbMarjorCriteriaNew query, Integer currYear, String location, String mode) {
+        // 查询最低分数
+        Integer lowestScore = null, highestScore = null;
+        // [Level=冲的最大值, 冲的最低值, 稳的最低值, 保的最低值, Rate>=99的最高值, Rate<=1的最小值]
+        Integer[] scoreRateRanges = mxjbWishScoreRateService.getWishScoreRatioRanges(currYear, query.getScore());
+
+        // MaxScore + 1 是为了让lowRank匹配时包含输入的分数, 现在都是整数,可以+1分变包含
+        Integer[] queryScoreRanges = null != query.getMinScore() && null != query.getMaxScore() ? new Integer[] { query.getMaxScore() + 1, query.getMinScore()} : null;
+        boolean hasScoreRangeBegin = null != queryScoreRanges && null != queryScoreRanges[1];
+        boolean hasScoreRangeEnd = null != queryScoreRanges && null != queryScoreRanges[0];
+
+        Integer pickType = query.getPickType();
+        if (null == pickType) {
+            lowestScore = null; // hasScoreRangeBegin ? queryScoreRanges[1] : scoreRateRanges[3];
+            highestScore = null; // hasScoreRangeEnd ? queryScoreRanges[0] : scoreRateRanges[0];
+        } else {
+            switch (pickType) {
+                case 0: // 冲
+                    lowestScore = hasScoreRangeBegin ? Math.max(queryScoreRanges[1], scoreRateRanges[1]) : scoreRateRanges[1];
+                    // highestScore = hasScoreRangeEnd ? Math.min(queryScoreRanges[0], scoreRateRanges[0]) : scoreRateRanges[0];
+                    break;
+                case 1: // 稳
+                    lowestScore = hasScoreRangeBegin ? Math.max(queryScoreRanges[1], scoreRateRanges[2]) : scoreRateRanges[2];
+                    highestScore = hasScoreRangeEnd ? Math.min(queryScoreRanges[0], scoreRateRanges[1]) : scoreRateRanges[1];
+                    break;
+                default: // 保
+                    // lowestScore = hasScoreRangeBegin ? Math.max(queryScoreRanges[1], scoreRateRanges[3]) : scoreRateRanges[3];
+                    highestScore = hasScoreRangeEnd ? Math.min(queryScoreRanges[0], scoreRateRanges[2]) : scoreRateRanges[2];
+                    break;
+            }
+        }
+        UniversitiesCondDTO uc = query.getUniversity();
+        //处理level(本科/专科)
+        if (null == uc) {
+            uc = new UniversitiesCondDTO();
+            query.setUniversity(uc);
+        }
+        Map cond = Maps.newHashMap();
+        if (StringUtils.isBlank(uc.getName())) {
+            cond.put("lowestScore", lowestScore);
+            cond.put("highestScore", highestScore);
+        }
+        /*if(null != scoreRateRanges) {   // TODO 引入的 99%, 1%时,是想排序时按一个级别,后面已不使用,暂注释,稍后可去掉
+            cond.put("minScore", scoreRateRanges[4]);
+            cond.put("maxScore", scoreRateRanges[5]);
+        } else {
+            cond.put("minScore", query.getScore() - 14);
+            cond.put("maxScore", query.getScore() + 15);
+        }*/
+        return cond;
+    }
+
+    public Map appendSeatCond(ZytbMarjorCriteriaNew query, Integer currPlanYear, Integer currSubmitYear, String location, String mode) {
+        // 查询最低名次 23位次/23年全局最低位次 * 22年全局最低位次=22位次
+        Integer lowestRank = null, highestRank = null;
+        // +30 -15 -60 600分 历史 => 冲:(600-630] 稳:(585-600] 保:(414,585]
+        Integer score = query.getScore().intValue();
+        Integer[] segments = getMappingRank(getPickTypeSegments(query.getScore(), query.getBatchMinScore(), location, currPlanYear, mode), location, currPlanYear, mode, score, currSubmitYear);
+        // MaxScore + 1 是为了让lowRank匹配时包含输入的分数, 现在都是整数,可以+1分变包含
+        Integer[] scoreRanges = null != query.getMinScore() && null != query.getMaxScore() ? getScoreRange(query.getMaxScore() + 1, query.getMinScore(), location, currPlanYear, mode) : null;
+        scoreRanges = getMappingRank(scoreRanges, location, currPlanYear, mode, score, currSubmitYear);
+        boolean hasScoreRangeBegin = null != scoreRanges && null != scoreRanges[0];
+        boolean hasScoreRangeEnd = null != scoreRanges && null != scoreRanges[1];
+
+        Integer pickType = query.getPickType();
+        if (null == pickType) {
+            // lowestRank = hasScoreRangeBegin ? scoreRanges[0] : segments[0];
+            // if (null != segments[3]) {
+            //     highestRank = hasScoreRangeEnd ? scoreRanges[1] : segments[3];
+            // }
+        } else {
+            switch (pickType) {
+                case 0:
+                    // lowestRank = hasScoreRangeBegin ? Math.max(scoreRanges[0], segments[0]) : segments[0];
+                    highestRank = hasScoreRangeEnd ? Math.min(scoreRanges[1], segments[1]) : segments[1];
+                    break;
+                case 1:
+                    lowestRank = hasScoreRangeBegin ? Math.max(scoreRanges[0], segments[1]) : segments[1];
+                    if(null != segments[2]) {
+                        highestRank = hasScoreRangeEnd ? Math.min(scoreRanges[1], segments[2]) : segments[2];
+                    }
+                    break;
+                default: // 保
+                    lowestRank = hasScoreRangeBegin ? Math.max(scoreRanges[0], segments[2]) : segments[2];
+                    // if(null != segments[3]) {
+                    //     highestRank = hasScoreRangeEnd ? Math.min(scoreRanges[1], segments[3]) : segments[3];
+                    // }
+                    break;
+            }
+        }
+        UniversitiesCondDTO uc = query.getUniversity();
+        //处理level(本科/专科)
+        if (null == uc) {
+            uc = new UniversitiesCondDTO();
+            query.setUniversity(uc);
+        }
+        Map cond = Maps.newHashMap();
+        if (StringUtils.isBlank(uc.getName())) {
+            cond.put("lowestRank", lowestRank);
+            cond.put("highestRank", highestRank);
+        }
+        // [Level=冲的最大值, 冲的最低值, 稳的最低值, 保的最低值, Rate>=99的最高值, Rate<=1的最小值]
+        /*Integer[] scoreRateRanges = mxjbWishScoreRateService.getWishScoreRatioRanges(currYear, query.getScore());
+        if(null != scoreRateRanges) { // TODO 引入的 99%, 1%时,是想排序时按一个级别,后面已不使用,暂注释,稍后可去掉
+            cond.put("minScore", scoreRateRanges[4]);
+            cond.put("maxScore", scoreRateRanges[5]);
+        } else {
+            cond.put("minScore", query.getScore() - 14);
+            cond.put("maxScore", query.getScore() + 15);
+        }*/
+        return cond;
+    }
+
+    private Integer getBatchline(String location, Integer year, Integer type, String examMajor) {
+        BBusiWishLocationSubmits lsCond = new BBusiWishLocationSubmits();
+        lsCond.setLocation(location);
+        lsCond.setYear(String.valueOf(year));
+        lsCond.setType(type);
+        lsCond.setCourse(examMajor);
+        List<BBusiWishLocationSubmits> list = busiWishLocationSubmitsService.selectBBusiWishLocationSubmitsList(lsCond);
+        return CollectionUtils.isNotEmpty(list) ? list.get(0).getScore() : null;
+    }
+
+    public List<ZytbDto.ZytbVolunteerRes> getRecommendVoluntary(ZytbMarjorCriteriaNew query, Integer pageNo, Integer pageSize) {
+        String location = SecurityUtils.getLoginUser().getUser().getLocation();
+        // 计划年度
+        Integer currYear = getYear();
+        // 录取年度
+        Integer currSubmitYear = getSubmitYear(location, null, query.getBatchName(), currYear);
+        Integer pickType = query.getPickType();
+
+        List<ZytbDto.ZytbVolunteerRes> volunteerResList = Lists.newArrayList();
+
+        Map cond = currYear.equals(currSubmitYear) ? appendScoreCond(query, currYear, location, query.getMode()) : appendSeatCond(query, currYear, currSubmitYear, location, query.getMode());
+        if (null == cond) {
+            return volunteerResList;
+        }
+        // 查询去年录取的高于排名的学校专业
+        cond.put("location", location);
+        cond.put("planYear", currYear);
+        cond.put("year", currSubmitYear);
+        cond.put("level", query.getBatchName().replaceAll("批", "")); // 本科,专科
+        cond.put("liberalScience", NumberUtils.toInt(query.getMode(), 0));
+        String batchLevel = BatchUtil.getBatchById(query.getBatch());
+        cond.put("majors", CollectionUtils.isNotEmpty(query.getMajors()) ? expandMarjors(batchLevel, query.getMajors()) : null);
+            cond.put("sinoForeign", query.getSinoforeign());
+        cond.put("specialProjectNation", query.getSpecialProjectNation());
+        cond.put("specialProjectLocal", query.getSpecialProjectLocal());
+        if (null != query.getCollect()) {
+            cond.put("collect", query.getCollect()); //  ? "有征集" : ""
+        }
+        UniversitiesCondDTO uc = query.getUniversity();
+        // uc.setLevel(BatchUtil.getBatchById(query.getBatch()));
+        cond.put("uName", uc.getName());
+        cond.put("uCode", uc.getCode());
+        cond.put("uManagerType", uc.getManagerType());
+        cond.put("uLocations", split2list(uc.getLocation()));
+        cond.put("uFeatureses", split2list(uc.getFeatures()));
+        cond.put("uNatureTypeCNs", split2list(uc.getNatureTypeCN()));
+        //20240625莫,此处type对u.`type` like优化为u.`type` in(enum)会提升性能
+        cond.put("uTypes", split2list(uc.getType()));
+//        List<String> uTypes = bBusiWishUniversitiesMapper.listDistinctAttributes("type");
+//        List<String> uTypeQueryList=new ArrayList<>();
+//        if(StringUtils.isNotBlank(uc.getType())){
+//            for (String dbUtype : uTypes) {
+//                for (String queryUtype : split2list(uc.getType())) {
+//                    if (StringUtils.isNotBlank(queryUtype) && (dbUtype.contains(queryUtype) || queryUtype.contains(dbUtype))) {
+//                        uTypeQueryList.add(dbUtype);
+//                    }
+//                }
+//            }
+//        }
+//        uTypeQueryList=uTypeQueryList.stream().filter(t->t != null && !t.isEmpty()).distinct().collect(Collectors.toList());
+//        if (CollectionUtils.isNotEmpty(uTypeQueryList)){
+//            cond.put("uTypes", uTypeQueryList);
+//        }
+
+        cond.put("uLevels", split2list(uc.getLevel()));
+        cond.put("sameYear", currSubmitYear.equals(currYear));
+        // cond.put("newSpecialGroup", "安徽".contains(location)); // 安徽 江西 2024 不在使用uCode
+        PageHelper.startPage(pageNo, pageSize);
+        List<BBusiWishUniversitySubmitRecruitPlan> submitPlanList = busiWishUniversitySubmitRecruitPlanMapper.selectWishUniversitySubmitPlanGroups(cond);
+        if(CollectionUtils.isEmpty(submitPlanList)) {
+            return volunteerResList;
+        }
+        Set<Long> universityIdSet = submitPlanList.stream().map(t -> t.getUniversityId()).collect(Collectors.toSet());
+
+        Map uCond = Maps.newHashMap();
+        uCond.put("ids", universityIdSet);
+        Map<Long, BBusiWishUniversities> wishUniversityMap = universityIdSet.size() > 0 ? bBusiWishUniversitiesMapper.selectBBusiWishUniversitiesListSimpleByIds(uCond).stream().collect(Collectors.toMap(BBusiWishUniversities::getId, Function.identity())) : Maps.newHashMap();
+
+//        Map<Long, BBusiWishUniversitySubmitMarjors> universityMarjorMap = Maps.newHashMap();
+//        Set<Long> matchedUniversityIdSet = submitPlanList.stream().filter(
+//                t -> null != t.getUniversityId() && t.getStats() == null).map(t -> Long.parseLong(t.getUniversityId())).collect(Collectors.toSet());
+//        if (matchedUniversityIdSet.size() > 0) {
+//            cond.clear();
+//            cond.put("location", location);
+//            cond.put("year", currYear - 1);
+//            cond.put("universityIds", matchedUniversityIdSet);
+//            cond.put("level", query.getBatchName().replaceAll("批", "")); // 本科,专科
+//            cond.put("liberalScience", NewgaokaoType.isNewgaokao33Province(location) ? 2 : (("物理".equals(subjects[0]) || "理科".equals(subjects[0])) ? 1 : 0));
+//            for(BBusiWishUniversitySubmits us : busiWishUniversitySubmitsMapper.selectBBusiWishUniversitySubmitsByCond(cond)) {
+//                BBusiWishUniversitySubmitMarjors submitMarjors = new BBusiWishUniversitySubmitMarjors();
+//                submitMarjors.setScore(us.getScore());
+//                submitMarjors.setSeat(us.getSeat());
+//                submitMarjors.setYear(us.getYear());
+//                submitMarjors.setType(us.getType());
+//                universityMarjorMap.put(Long.parseLong(us.getUniversityId()), submitMarjors);
+//            }
+//        }
+        Integer baseYearScore = query.getScore();
+        if(!currSubmitYear.equals(currYear) && null == (baseYearScore = getScoreOfLastYear(location, currYear, query.getMode(), baseYearScore))) {
+            throw new RuntimeException("分数不在范围");
+        }
+        Integer historyIndex = currSubmitYear.equals(currYear) ? 0 : 1;
+
+        boolean scoreLock = getScoreLock(location);
+        boolean showInheritScore = Boolean.valueOf(configService.selectConfigByKey("voluntary.showInheritScore"));
+
+        String planYear = String.valueOf(currYear);
+        // Map<Integer, String> yearCourseMap = getYearCourseMap(currYear, mode);
+        for(BBusiWishUniversitySubmitRecruitPlan submitPlan : submitPlanList) {
+            ZytbDto.ZytbVolunteerRes res = new ZytbDto.ZytbVolunteerRes();
+            BBusiWishUniversities wishUniversities = wishUniversityMap.get(submitPlan.getUniversityId());
+            if (null != wishUniversities && StringUtils.isNotBlank(submitPlan.getUniversityName())
+                    && 0 != StringUtils.compare(submitPlan.getUniversityName(), wishUniversities.getName())) {
+                BBusiWishUniversities newWishUniversities = new BBusiWishUniversities();
+                BeanUtils.copyProperties(wishUniversities, newWishUniversities);
+                newWishUniversities.setName(submitPlan.getUniversityName());
+                res.setUniversity(newWishUniversities);
+            } else {
+                res.setUniversity(wishUniversities);
+            }
+            BBusiWishUniversitySubmitRecruitPlan plan = new BBusiWishUniversitySubmitRecruitPlan();
+            plan.setPlanCount(submitPlan.getPlanCount());
+            plan.setMajorCount(submitPlan.getMajorCount());
+            plan.setCollegeCode(submitPlan.getCollegeCode());
+            plan.setUniversityId(submitPlan.getUniversityId());
+            plan.setType(submitPlan.getType());
+            plan.setCourse(submitPlan.getCourse());
+            plan.setYear(planYear);
+            plan.setGroupsName(submitPlan.getGroupsName());
+            res.setRecruitPlan(plan);
+            res.setJCode(submitPlan.getUniversityCode());
+
+            BBusiWishUniversitySubmitMarjors[] histories = new BBusiWishUniversitySubmitMarjors[4];
+            if (null != submitPlan.getStats() && ArrayUtils.isNotEmpty(submitPlan.getStats().getStats())) {
+                SubmitYearsStats.YearStat[] stats = submitPlan.getStats().getStats();
+                for (int i = 0; i < Math.min(4, stats.length); i++) {
+                    if (stats[i] != null) {
+                        BBusiWishUniversitySubmitMarjors submitMarjor = new BBusiWishUniversitySubmitMarjors();
+                        submitMarjor.setNumReal(stats[i].getNumReal());
+                        submitMarjor.setScore(scoreLock ? stats[i].getScore() : stats[i].getCorrScore());
+                        submitMarjor.setSeat(scoreLock ? stats[i].getSeat() : stats[i].getCorrSeat());
+                        submitMarjor.setInheritScore(showInheritScore && null != stats[i].getScore() && null != submitMarjor.getScore() && stats[i].getScore() == 0 && submitMarjor.getScore() > 0);
+                        submitMarjor.setCollect(stats[i].getCollect());
+                        submitMarjor.setCollectDesc(stats[i].getCollectDesc());
+                        submitMarjor.setSinoForeign(stats[i].getSinoForeign());
+                        submitMarjor.setSinoForeignDesc(stats[i].getSinoForeignDesc());
+                        submitMarjor.setType(submitPlan.getType());
+                        Integer year = stats[i].getYear();
+                        submitMarjor.setYear(String.valueOf(year));
+                        // submitMarjor.setType(yearCourseMap.get(year));
+                        histories[i] = submitMarjor;
+                    }
+                }
+            }
+            BBusiWishUniversitySubmitMarjors empty = new BBusiWishUniversitySubmitMarjors();
+            for (int i = 0; i < histories.length; i++) {
+                if (null == histories[i]) {
+                    histories[i] = empty;
+                }
+            }
+            Integer batchLine = getBatchline(location, currYear, query.getBatchName().contains("本科") ? 1 : 5, getExamMajor());
+            MxjbWishScoreRateServiceImpl.ScoreRatioResult scoreRatioResult = getScoreRatioResult(histories, currYear, currSubmitYear, baseYearScore, location, query.getMode(), query.getScore().intValue(), batchLine);
+            if(null != scoreRatioResult) {
+                res.setPickType(scoreRatioResult.getEnrollLevel());
+                res.setEnrollOver(scoreRatioResult.getOverflow());
+                res.setEnrollRatio(String.valueOf(scoreRatioResult.getRatio()));
+                res.setEnrollRatioText(scoreRatioResult.getRiskLevel());
+            } else {
+                res.setPickType(pickType);
+                res.setEnrollRatio("");
+                res.setEnrollRatioText("");
+            }
+//            if (null == histories[0]) {
+//                histories[0] = universityMarjorMap.get(submitPlan.getUniversityId());
+//            }
+            if (histories != null && histories.length > 1) {
+                histories = historyIndex > 0 ? ArrayUtils.subarray(histories, 1, histories.length) : ArrayUtils.subarray(histories, 0, histories.length - 1);
+            }
+            res.setHistories(histories);
+            res.setHistory(res.getHistories()[0]);
+            res.setSpecialProject(submitPlan.getSpecialProject());
+            volunteerResList.add(res);
+        }
+        /*Collections.sort(volunteerResList, new Comparator<ZytbDto.ZytbVolunteerRes>() {
+            @Override
+            public int compare(ZytbDto.ZytbVolunteerRes o1, ZytbDto.ZytbVolunteerRes o2) {
+                Integer v1 = StringUtils.isNotBlank(o1.getEnrollRatio()) ? Integer.parseInt(o1.getEnrollRatio()) : 0;
+                Integer v2 = StringUtils.isNotBlank(o2.getEnrollRatio()) ? Integer.parseInt(o2.getEnrollRatio()) : 0;
+                return v1.compareTo(v2);
+            }
+        });*/
+        return PageUtil.getDtoListWithPageable(submitPlanList, volunteerResList);
+    }
+
+
+    private MxjbWishScoreRateServiceImpl.ScoreRatioResult getScoreRatioResult(BBusiWishUniversitySubmitMarjors[] histories, Integer currYear, Integer currSubmitYear, Integer baseYearScore, String location, String mode, Integer score, Integer batchLine
+    ) {
+        if(null != batchLine && baseYearScore < batchLine) {
+            return null;
+        }
+        Integer historyYear;
+        for (int i = 0; i < histories.length; i++) {
+            if (null != histories[i].getYear() && null != histories[i].getScore() && histories[i].getScore() > 0 && (historyYear = Integer.parseInt(histories[i].getYear())) <= currSubmitYear) {
+                Integer historyScore = histories[i].getScore().intValue();
+                if(!currYear.equals(currSubmitYear) || !historyYear.equals(currSubmitYear)) {
+                    BBusiWishScoreGroups currScoreRange = scoreRankService.getScoreRangeByScore(location, getYear(), mode, currYear, score);
+                    if(null != currScoreRange) {
+                        BBusiWishScoreGroups submitScoreRange = scoreRankService.getScoreRangeByBatch(location, currYear, currScoreRange.getMode(), currSubmitYear, currScoreRange.getType());
+                        BBusiWishScoreGroups historyScoreRange = scoreRankService.getScoreRangeByBatch(location, currYear, currScoreRange.getMode(), historyYear, currScoreRange.getType());
+                        Integer eqRank = scoreRankService.getEqRank(historyScoreRange, submitScoreRange, location, currYear, historyYear, historyScore, null, currSubmitYear);
+                        historyScore = scoreRankService.getScore(location, currSubmitYear, submitScoreRange.getMode(), eqRank);
+                    }
+                }
+                if(null == historyScore) {
+                    return null;
+                }
+                return mxjbWishScoreRateService.getWishScoreRatioResult(currYear, baseYearScore, historyScore);
+            }
+        }
+        return null;
+    }
+
+    public List<String> expandMarjors(String type, List<String> marjors) {
+        Map<String, List<String>> majorChildrenMap = typeMajorChildrenMap.get(type);
+        if (null == majorChildrenMap) {
+            return marjors;
+        }
+        List<String> marjorsList = Lists.newArrayList();
+        for (String marjor : marjors) {
+            marjorsList.add(marjor);
+            List<String> children = majorChildrenMap.get(marjor);
+            if (null != children) {
+                marjorsList.addAll(children);
+            }
+        }
+        return marjorsList;
+    }
+
+    private Map<String, Map<String, List<String>>> buildMajorChildrenMap() {
+        Map<String, String> majorCodeNameMap = Maps.newHashMap();
+        List<SyMajor> majorList = Lists.newArrayList();
+        syMajorService.selectSyMajorList(new SyMajor()).stream().forEach(m -> {
+            if (m.getLevel() == 2) {
+                majorCodeNameMap.put(m.getType() + m.getCode(), m.getName());
+            } else if (m.getLevel() == 3) {
+                majorList.add(m);
+            }
+        });
+        Map<String, Map<String, List<String>>> typeMajorChildrenMap = Maps.newHashMap();
+        majorList.stream().forEach(m -> {
+            String parent = majorCodeNameMap.get(m.getType() + m.getParentCode());
+            if (StringUtils.isNotBlank(parent)) {
+                Map<String, List<String>> majorChildrenMap = typeMajorChildrenMap.get(m.getType());
+                if (null == majorChildrenMap) {
+                    majorChildrenMap = Maps.newHashMap();
+                    typeMajorChildrenMap.put(m.getType(), majorChildrenMap);
+                }
+                List<String> childrenList = majorChildrenMap.get(parent);
+                if (null == childrenList) {
+                    childrenList = Lists.newArrayList();
+                    majorChildrenMap.put(parent, childrenList);
+                }
+                childrenList.add(m.getName());
+            }
+        });
+        return typeMajorChildrenMap;
+    }
+
+    public List<ZytbDto.ZytbVolunteerRes> filterResEmptyHistory(List<ZytbDto.ZytbVolunteerRes> resList) {
+        for (ZytbDto.ZytbVolunteerRes res : resList) {
+            BBusiWishUniversitySubmitMarjors[] histories = res.getHistories();
+            for (int i = 0; i < histories.length; i++) {
+                if (null != histories[i] && histories[i].getYear() == null) {
+                    histories[i] = null;
+                }
+            }
+        }
+        return resList;
+    }
+
+    public List<ZytbDto.ZytbVoluntaryMarjorDetail> filterEmptyHistory(List<ZytbDto.ZytbVoluntaryMarjorDetail> detailList) {
+        for (ZytbDto.ZytbVoluntaryMarjorDetail d : detailList) {
+            BBusiWishUniversitySubmitMarjors[] histories = d.getHistories();
+            for (int i = 0; i < histories.length; i++) {
+                if (null != histories[i] && histories[i].getYear() == null) {
+                    histories[i] = null;
+                }
+            }
+        }
+        return detailList;
+    }
+
+    public List<ZytbDto.ZytbVoluntaryMarjorDetail> getVoluntaryMarjors(ZytbDto.ZytbVoluntaryMarjorCond query) {
+        String location = SecurityUtils.getLoginUser().getUser().getLocation();
+        if (null == query.getYear()) {
+            query.setYear(getYear());
+        }
+        query.setMode(getExamMajor());
+        Integer currYear = query.getYear();
+        Integer currSubmitYear = getSubmitYear(location, null, query.getBatchName(), currYear);
+        Map cond = Maps.newHashMap();
+        cond.put("location", location);
+        cond.put("universityId", query.getUniversityId());
+        cond.put("level", query.getBatchName().replaceAll("批", "")); // 本科,专科
+        cond.put("liberalScience", NumberUtils.toInt(query.getMode(), 0));
+        cond.put("collegeCode", query.getCollegeCode());
+        cond.put("year", currYear); // 查询当前年的计划
+        // cond.put("uCode", query.getJCode());
+        List<BBusiWishUniversitySubmitRecruitPlan> planGroupDetailList = busiWishUniversitySubmitRecruitPlanMapper.selectWishUniversitySubmitPlanGroupDetails(cond);
+
+        Integer baseYearScore = currSubmitYear.equals(currYear) ? query.getScore() : getScoreOfLastYear(location, currYear, query.getMode(), query.getScore());
+        Integer historyIndex = currSubmitYear.equals(currYear) ? 0 : 1;
+//        Map<String, BBusiWishUniversitySubmitMarjors> universityMarjorMap = Maps.newHashMap();
+//        Set<Long> matchedUniversityIdSet = planGroupDetailList.stream().filter(
+//                t -> null != t.getUniversityId() && (t.getStats() == null || t.getStats().getStats()[0] == null)).map(t -> Long.parseLong(t.getUniversityId())).collect(Collectors.toSet());
+//        if (matchedUniversityIdSet.size() > 0) {
+//            cond.clear();
+//            cond.put("location", location);
+//            cond.put("year", currYear - 1);
+//            cond.put("universityIds", matchedUniversityIdSet);
+//            cond.put("level", query.getBatchName()); // 本科,专科
+//            cond.put("liberalScience", NewgaokaoType.isNewgaokao33Province(location) ? 2 : (("物理".equals(subjects[0]) || "理科".equals(subjects[0])) ? 1 : 0));
+//            for (BBusiWishUniversitySubmits us : busiWishUniversitySubmitsMapper.selectBBusiWishUniversitySubmitsByCond(cond)) {
+//                BBusiWishUniversitySubmitMarjors submitMarjors = new BBusiWishUniversitySubmitMarjors();
+//                submitMarjors.setScore(us.getScore());
+//                submitMarjors.setSeat(us.getSeat());
+//                submitMarjors.setYear(us.getYear());
+//                submitMarjors.setType(us.getType());
+//                universityMarjorMap.put(us.getUniversityId(), submitMarjors);
+//            }
+//        }
+
+        boolean scoreLock = getScoreLock(location);
+        boolean showInheritScore = Boolean.valueOf(configService.selectConfigByKey("voluntary.showInheritScore"));
+        Integer batchLine = getBatchline(location, currYear, query.getBatchName().contains("本科") ? 1 : 5, getExamMajor());
+
+        List<ZytbDto.ZytbVoluntaryMarjorDetail> detailList = Lists.newArrayList();
+        for (BBusiWishUniversitySubmitRecruitPlan planGroupDetail : planGroupDetailList) {
+            ZytbDto.ZytbVoluntaryMarjorDetail d = new ZytbDto.ZytbVoluntaryMarjorDetail();
+            BeanUtils.copyProperties(planGroupDetail, d);
+            majorFeatureCache.setMajorFeature(planGroupDetail, d);
+
+            BBusiWishUniversitySubmitMarjors[] histories = new BBusiWishUniversitySubmitMarjors[4];
+            if (null != planGroupDetail.getStats() && ArrayUtils.isNotEmpty(planGroupDetail.getStats().getStats())) {
+                SubmitYearsStats.YearStat[] stats = planGroupDetail.getStats().getStats();
+                for (int i = 0; i < Math.min(4, stats.length); i++) {
+                    if (stats[i] != null) {
+                        BBusiWishUniversitySubmitMarjors submitMarjor = new BBusiWishUniversitySubmitMarjors();
+                        submitMarjor.setId(stats[i].getSubmitId());
+                        submitMarjor.setYear(String.valueOf(stats[i].getYear()));
+                        submitMarjor.setNumReal(stats[i].getNumReal());
+                        submitMarjor.setScore(scoreLock ? stats[i].getScore() : stats[i].getCorrScore());
+                        submitMarjor.setSeat(scoreLock ? stats[i].getSeat() : stats[i].getCorrSeat());
+                        submitMarjor.setInheritScore(showInheritScore && null != stats[i].getScore() && null != submitMarjor.getScore() && stats[i].getScore() == 0 && submitMarjor.getScore() > 0);
+                        submitMarjor.setCollect(stats[i].getCollect());
+                        submitMarjor.setCollectDesc(stats[i].getCollectDesc());
+                        submitMarjor.setSinoForeign(stats[i].getSinoForeign());
+                        submitMarjor.setSinoForeignDesc(stats[i].getSinoForeignDesc());
+                        Integer year = stats[i].getYear();
+                        submitMarjor.setYear(String.valueOf(year));
+                        // submitMarjor.setType(planGroupDetail.getType());
+                        histories[i] = submitMarjor;
+                    }
+                }
+            }
+            BBusiWishUniversitySubmitMarjors empty = new BBusiWishUniversitySubmitMarjors();
+            for (int i = 0; i < histories.length; i++) {
+                if (null == histories[i]) {
+                    histories[i] = empty;
+                }
+            }
+            MxjbWishScoreRateServiceImpl.ScoreRatioResult scoreRatioResult = getScoreRatioResult(histories, currYear, currSubmitYear, baseYearScore, location, query.getMode(), query.getScore().intValue(), batchLine);;
+            if(null != scoreRatioResult) {
+                d.setPickType(scoreRatioResult.getEnrollLevel());
+                d.setEnrollOver(scoreRatioResult.getOverflow());
+                d.setEnrollRatio(scoreRatioResult.getRatio());
+                d.setEnrollRatioText(scoreRatioResult.getRiskLevel());
+            } else {
+                d.setPickType(null);
+                d.setEnrollRatio(null);
+                d.setEnrollRatioText("");
+            }
+//            if (null == histories[0]) {
+//                histories[0] = universityMarjorMap.get(planGroupDetail.getUniversityId());
+//            }
+            if (histories!= null && histories.length > 1) {
+                histories = historyIndex > 0 ? ArrayUtils.subarray(histories, 1, histories.length) : ArrayUtils.subarray(histories, 0, histories.length - 1);
+            }
+            d.setHistories(histories);
+            d.setHistory(d.getHistories()[0]);
+            detailList.add(d);
+        }
+
+        Collections.sort(detailList, new Comparator<ZytbDto.ZytbVoluntaryMarjorDetail>() {
+            @Override
+            public int compare(ZytbDto.ZytbVoluntaryMarjorDetail o1, ZytbDto.ZytbVoluntaryMarjorDetail o2) {
+                Integer iRet;
+                Integer h1 = null != o1.getHistory() && null != o1.getHistory().getScore() ? 0 : 1;
+                Integer h2 = null != o2.getHistory() && null != o2.getHistory().getScore() ? 0 : 1;
+                if((iRet = h1.compareTo(h2)) != 0) {
+                    return iRet;
+                }
+                Integer v1 = null != o1.getEnrollRatio() ? o1.getEnrollRatio() : 0;
+                Integer v2 = null != o2.getEnrollRatio() ? o2.getEnrollRatio() : 0;
+                if((iRet = v1.compareTo(v2)) != 0) {
+                    return iRet;
+                }
+                String m1 = null != o1.getMarjorBelongs() ? o1.getMarjorBelongs() : "";
+                String m2 = null != o2.getMarjorBelongs() ? o2.getMarjorBelongs() : "";
+                return m1.compareTo(m2);
+            }
+        });
+        return detailList;
+    }
+
+    private static class MajorFeatureCache {
+        Map<String, List<String>> typeNameMap = Maps.newHashMap();
+        Map<String, String> professionNameMap = Maps.newHashMap();
+        Map<String, String> levelMap = Maps.newHashMap();
+
+
+        public MajorFeatureCache(BBusiWishUniversitiesSubjectevaluateMapper busiWishUniversitiesSubjectevaluateMapper,
+                                 BBusiWishUniversitiesProfessionMapper busiWishUniversitiesProfessionMapper,
+                                 BBusiWishUniversitiesSubjectMapper busiWishUniversitiesSubjectMapper) {
+            busiWishUniversitiesSubjectevaluateMapper.selectBBusiWishUniversitiesSubjectevaluateList(new BBusiWishUniversitiesSubjectevaluate()).stream().forEach(t -> {
+                String key = t.getCollegeCode() + "_" + t.getName();
+                levelMap.put(key, t.getLevel());
+            });
+            BBusiWishUniversitiesProfession upCond = new BBusiWishUniversitiesProfession();
+            upCond.setExamType(Constant.EXAM_TYPE_PG);
+            busiWishUniversitiesProfessionMapper.selectBBusiWishUniversitiesProfessionList(new BBusiWishUniversitiesProfession()).stream().forEach(t -> {
+                String key = t.getCollegeCode() + "_" + t.getName();
+                professionNameMap.put(key, t.getProfessionType());
+            });
+            busiWishUniversitiesSubjectMapper.selectBBusiWishUniversitiesSubjectList(new BBusiWishUniversitiesSubject()).stream().forEach(t -> {
+                if(null == t.getSubjects()) {
+                    return;
+                }
+                t.getSubjects().forEach(s -> {
+                    String key = t.getCollegeCode() + "_" + s;
+                    List<String> typeNames = typeNameMap.get(key);
+                    if (null == typeNames) {
+                        typeNames = Lists.newArrayList();
+                        typeNameMap.put(key, typeNames);
+                    }
+                    typeNames.add(t.getTypeName());
+                });
+            });
+        }
+
+        public void setMajorFeature(BBusiWishUniversitySubmitRecruitPlan rp, ZytbDto.ZytbVoluntaryMarjorDetail d) {
+            // String idKey = rp.getUniversityCode() + "_" + rp.getMarjorId();
+            String nameKey = rp.getUniversityCode() + "_" + rp.getMarjorName();
+            d.setLevel(levelMap.get(nameKey));
+            d.setProfessionType(professionNameMap.get(nameKey));
+            d.setTypeNames(typeNameMap.get(nameKey));
+        }
+    };
+
+    /**
+     * 保存专业组
+     * @param wishResId
+     * @param pageNo
+     * @param pageSize
+     * @return
+     */
+    public List<ZytbDto.ZytbVolunteerRes> getRecommendVoluntaryRes(Long wishResId, Integer pageNo, Integer pageSize) {
+        return getRecommendVoluntaryRes(wishResId, pageNo, pageSize, null);
+    }
+    public List<ZytbDto.ZytbVolunteerRes> getRecommendVoluntaryRes(Long wishResId, Integer pageNo, Integer pageSize, Map dataMap) {
+        List<ZytbDto.ZytbVolunteerRes> volunteerResList = Lists.newArrayList();
+
+        BBusiWishRecords busiWishrecords = busiWishRecordsMapper.selectBBusiWishRecordsById(wishResId);
+        if (null == busiWishrecords) {
+            return volunteerResList;
+        }
+        SubmitWishRecordDTO.User us = JSON.parseObject(busiWishrecords.getUserSnapshot(), SubmitWishRecordDTO.User.class);
+        // 初始化院校,计划,录取
+        SubmitWishRecordDTO.SubmitWishRecordDetail detail = JSON.parseObject(busiWishrecords.getDetail(), SubmitWishRecordDTO.SubmitWishRecordDetail.class);
+        if (null == detail.getYear()) {
+            Integer year = NumberUtils.toInt(detail.getBatch().getScores().get(0).split("年")[0], 0);
+            detail.setYear(year > 0 ? year : DateUtils.getCurrentYear());
+            detail.getBatch().setName(StringUtils.replace(detail.getBatch().getName(), "普通类院校", ""));
+        }
+        Set<Long> allUniversityIdSet = Sets.newHashSet();
+        Map<Long, Long> planUniversityMap = Maps.newHashMap();
+        for (SubmitWishRecordDTO.SubmitWishRecordBatchWishes wish : detail.getBatch().getWishes()) {
+            allUniversityIdSet.add(wish.getUniversityId());
+            for (SubmitWishRecordDTO.SubmitWishRecordBatchMarjors marjor : wish.getMarjors()) {
+                planUniversityMap.put(marjor.getId(), wish.getUniversityId());
+            }
+        }
+        String location = SecurityUtils.getLoginUser().getUser().getLocation();
+        Integer currYear = detail.getYear();
+        String mode = us.getExamMajor();
+        // 录取年度
+        Integer currSubmitYear = getSubmitYear(location, null, detail.getBatch().getName(), currYear);
+        if (null != dataMap) {
+            dataMap.put("record", busiWishrecords);
+            dataMap.put("detail", detail);
+            dataMap.put("location", location);
+            dataMap.put("currYear", currYear);
+            dataMap.put("currSubmitYear", currSubmitYear);
+
+            Map cond = Maps.newHashMap();
+            cond.put("location", location);
+            cond.put("year", currYear);
+            cond.put("mode", mode);
+            dataMap.put("seat", getLowestRank(cond, detail.getScore().intValue()));
+        }
+        if (planUniversityMap.size() == 0) {
+            return volunteerResList;
+        }
+        Map cond = Maps.newHashMap();
+        cond.put("ids", Lists.newArrayList(planUniversityMap.keySet()));
+        Map<Long, BBusiWishUniversitySubmitRecruitPlan> planMap = busiWishUniversitySubmitRecruitPlanMapper.selectWishUniversitySubmitRecruitGroups(cond)
+                .stream().collect(Collectors.toMap(BBusiWishUniversitySubmitRecruitPlan::getId, Function.identity()));
+        busiWishUniversityMarjorsPlanSubmitMapper.selectBBusiWishUniversityMarjorsPlanSubmitByIds(planUniversityMap.keySet()).stream().forEach(t -> {
+            if (null != t.getStats()) {
+                planMap.get(t.getPlanId()).setStats(t.getStats());
+                planUniversityMap.remove(t.getPlanId());
+            }
+        });
+//        Map<Long, BBusiWishUniversitySubmitMarjors> universityMarjorMap = Maps.newHashMap();
+//        if (planUniversityMap.size() > 0) {
+//            cond.clear();
+//            cond.put("location", location);
+//            cond.put("year", detail.getYear() - 1);
+//            cond.put("universityIds", Sets.newHashSet(planUniversityMap.values()));
+//            cond.put("level", detail.getBatch().getName()); // 本科,专科
+//            cond.put("liberalScience", NewgaokaoType.isNewgaokao33Province(location) ? 2 : (("物理".equals(subjects[0]) || "理科".equals(subjects[0])) ? 1 : 0));
+//            for (BBusiWishUniversitySubmits us : busiWishUniversitySubmitsMapper.selectBBusiWishUniversitySubmitsByCond(cond)) {
+//                BBusiWishUniversitySubmitMarjors submitMarjors = new BBusiWishUniversitySubmitMarjors();
+//                submitMarjors.setScore(us.getScore());
+//                submitMarjors.setSeat(us.getSeat());
+//                submitMarjors.setYear(us.getYear());
+//                submitMarjors.setType(us.getType());
+//                universityMarjorMap.put(Long.parseLong(us.getUniversityId()), submitMarjors);
+//            }
+//        }
+        cond.clear();
+        cond.put("ids", allUniversityIdSet);
+        Map<Long, BBusiWishUniversities> wishUniversityMap = bBusiWishUniversitiesMapper.selectBBusiWishUniversitiesListSimpleByIds(cond).stream().collect(Collectors.toMap(BBusiWishUniversities::getId, Function.identity()));
+
+        boolean scoreLock = getScoreLock(location);
+        boolean showInheritScore = Boolean.valueOf(configService.selectConfigByKey("voluntary.showInheritScore"));
+
+        // Map<Integer, String> yearCourseMap = getYearCourseMap(detail.getYear(), detail.getMode().split(",")[0]);
+        Integer baseYearScore = currSubmitYear.equals(currYear) ? detail.getScore().intValue() : getScoreOfLastYear(location, currYear, mode, detail.getScore().intValue());
+        Integer historyIndex = currSubmitYear.equals(currYear) ? 0 : 1;
+        Integer batchLine = getBatchline(location, NumberUtils.toInt(busiWishrecords.getBatch(), 5), currYear, getExamMajor());
+        BBusiWishUniversitySubmitMarjors empty = new BBusiWishUniversitySubmitMarjors();
+        List<ZytbDto.ZytbVoluntaryMarjorDetail> marjorList;
+        for (SubmitWishRecordDTO.SubmitWishRecordBatchWishes wish : detail.getBatch().getWishes()) {
+            ZytbDto.ZytbVolunteerRes res = new ZytbDto.ZytbVolunteerRes();
+            BBusiWishUniversities wishUniversities = wishUniversityMap.get(wish.getUniversityId());
+            if (null != wishUniversities && StringUtils.isNotBlank(wish.getName())
+                    && 0 != StringUtils.compare(wish.getName(), wishUniversities.getName())) {
+                BBusiWishUniversities newWishUniversities = new BBusiWishUniversities();
+                BeanUtils.copyProperties(wishUniversities, newWishUniversities);
+                newWishUniversities.setName(wish.getName());
+                res.setUniversity(newWishUniversities);
+            } else {
+                res.setUniversity(wishUniversities);
+            }
+            res.setUniversityId(wish.getUniversityId());
+            res.setJCode(wish.getJCode());
+            res.setPickType(wish.getPickType());
+            volunteerResList.add(res);
+            for (SubmitWishRecordDTO.SubmitWishRecordBatchMarjors marjor : wish.getMarjors()) {
+                BBusiWishUniversitySubmitRecruitPlan plan = planMap.get(marjor.getId());
+                if (null == plan) {
+                    continue;
+                }
+                if (null != dataMap) {
+                    if(null == (marjorList = res.getMarjorList())) {
+                        marjorList = Lists.newArrayList();
+                        res.setMarjorList(marjorList);
+                    }
+                    marjorList.add(toMarjorDetail(mode, batchLine, plan, marjor, null, empty, currYear, baseYearScore, historyIndex, scoreLock, showInheritScore, currSubmitYear, detail.getScore().intValue()));
+                }
+                if (null == res.getRecruitPlan()) {
+                    plan.setId(null);
+                    plan.setMarjorName(null);
+                    plan.setMarjorDirection(null);
+                    plan.setMarjorBelongs(null);
+                    plan.setXuezhi(null);
+                    plan.setXuefei(null);
+                    plan.setMajorCount(1);
+                    res.setRecruitPlan(plan);
+                    res.setSpecialProject(plan.getSpecialProject());
+                } else {
+                    BBusiWishUniversitySubmitRecruitPlan merge = res.getRecruitPlan();
+                    merge.setMajorCount(merge.getMajorCount() + 1);
+                    merge.setPlanCount(merge.getPlanCount() + plan.getPlanCount());
+                }
+                if(null == plan.getStats()) {
+                    continue;
+                }
+                SubmitYearsStats.YearStat[] statsList = plan.getStats().getStats();
+                plan.setStats(null);
+                BBusiWishUniversitySubmitMarjors[] submitMarjorList = res.getHistories();
+                if (null == submitMarjorList) {
+                    submitMarjorList = new BBusiWishUniversitySubmitMarjors[4];
+                    res.setHistories(submitMarjorList);
+                }
+
+                for (int i = 0; i < Math.min(4, statsList.length); i++) {
+                    if (null == statsList[i]) {
+                        continue;
+                    }
+                    BBusiWishUniversitySubmitMarjors merge = submitMarjorList[i];
+                    if (null == merge) {
+                        submitMarjorList[i] = new BBusiWishUniversitySubmitMarjors();
+                        submitMarjorList[i].setScore(scoreLock ? statsList[i].getScore() : statsList[i].getCorrScore());
+                        submitMarjorList[i].setSeat(scoreLock ? statsList[i].getSeat() : statsList[i].getCorrSeat());
+                        submitMarjorList[i].setNumReal(statsList[i].getNumReal());
+                        submitMarjorList[i].setCollect(statsList[i].getCollect());
+                        submitMarjorList[i].setCollectDesc(statsList[i].getCollectDesc());
+                        submitMarjorList[i].setSinoForeign(statsList[i].getSinoForeign());
+                        submitMarjorList[i].setSinoForeignDesc(statsList[i].getSinoForeignDesc());
+                        Integer year = statsList[i].getYear();
+                        submitMarjorList[i].setYear(String.valueOf(year));
+                        // submitMarjorList[i].setType(yearCourseMap.get(year));
+                        continue;
+                    } else {
+                        if (null != merge.getNumReal() && null != statsList[i].getNumReal()) {
+                            merge.setNumReal(merge.getNumReal() + statsList[i].getNumReal());
+                        } else if (null != merge.getNumReal()) {
+                            merge.setNumReal(merge.getNumReal());
+                        } else if (null != statsList[i].getNumReal()) {
+                            merge.setNumReal(statsList[i].getNumReal());
+                        }
+                        if (null == merge.getCollect() && null != statsList[i].getCollect() && statsList[i].getCollect()) {
+                            merge.setCollect(statsList[i].getCollect());
+                            merge.setCollectDesc(statsList[i].getCollectDesc());
+                        }
+                        if (null == merge.getSinoForeign() && null != statsList[i].getSinoForeign() && statsList[i].getSinoForeign()) {
+                            merge.setSinoForeign(statsList[i].getSinoForeign());
+                            merge.setSinoForeignDesc(statsList[i].getSinoForeignDesc());
+                        }
+                        merge.setScore(Math.min(merge.getScore(), scoreLock ? statsList[i].getScore() : statsList[i].getCorrScore()));
+                        merge.setSeat(Math.max(merge.getSeat(), scoreLock ? statsList[i].getSeat() : statsList[i].getCorrSeat()));
+                    }
+                }
+            }
+            res.setEnrollRatio(wish.getEnrollRatio());
+            res.setEnrollRatioText(wish.getEnrollRatioText());
+        }
+        volunteerResList.forEach(t -> {
+            BBusiWishUniversitySubmitMarjors[] submitMarjorsList = t.getHistories();
+            if (null == submitMarjorsList) {
+                submitMarjorsList = new BBusiWishUniversitySubmitMarjors[4];
+                t.setHistories(submitMarjorsList);
+            }
+            for (int i = 0; i < submitMarjorsList.length; i++) {
+                if (null == submitMarjorsList[i]) {
+                    submitMarjorsList[i] = empty;
+                }
+            }
+            MxjbWishScoreRateServiceImpl.ScoreRatioResult scoreRatioResult = getScoreRatioResult(submitMarjorsList, currYear, currSubmitYear, baseYearScore, location, mode, detail.getScore().intValue(), batchLine);
+            if (null != scoreRatioResult) {
+                // t.setPickType(scoreRatioResult.getEnrollLevel());
+                t.setEnrollOver(scoreRatioResult.getOverflow());
+                // t.setEnrollRatio(String.valueOf(scoreRatioResult.getRatio()));
+                // t.setEnrollRatioText(scoreRatioResult.getRiskLevel());
+            } else {
+                // t.setPickType(null);
+                // t.setEnrollRatio("");
+                // t.setEnrollRatioText("");
+            }
+//            if (null == submitMarjorsList[0]) {
+//                submitMarjorsList[0] = universityMarjorMap.get(t.getUniversityId());
+//            }
+            t.setUniversityId(null);
+            if (null != submitMarjorsList && submitMarjorsList.length > 1) {
+                submitMarjorsList = historyIndex > 0 ? ArrayUtils.subarray(submitMarjorsList, 1, submitMarjorsList.length) : ArrayUtils.subarray(submitMarjorsList, 0, submitMarjorsList.length - 1);
+            }
+            t.setHistories(submitMarjorsList);
+            t.setHistory(t.getHistories()[0]);
+        });
+        /*Collections.sort(volunteerResList, new Comparator<ZytbDto.ZytbVolunteerRes>() {
+            @Override
+            public int compare(ZytbDto.ZytbVolunteerRes o1, ZytbDto.ZytbVolunteerRes o2) {
+                Double v1 = null != o1.getHistory() && null != o1.getHistory().getScore() ? o1.getHistory().getScore() : 0.0;
+                Double v2 = null != o2.getHistory() && null != o2.getHistory().getScore() ? o2.getHistory().getScore() : 0.0;
+                return -v1.compareTo(v2);
+            }
+        });*/
+        return PageUtil.buildListForPage(volunteerResList, pageNo, pageSize);
+    }
+    public List<ZytbDto.ZytbVoluntaryMarjorDetail> getVoluntaryMarjorsRes(Long wishResId, String collegeCode, String jCode) {
+        List<ZytbDto.ZytbVoluntaryMarjorDetail> detailList = Lists.newArrayList();
+
+        BBusiWishRecords busiWishrecords = busiWishRecordsMapper.selectBBusiWishRecordsById(wishResId);
+        if (null == busiWishrecords) {
+            return detailList;
+        }
+        SubmitWishRecordDTO.User us = JSON.parseObject(busiWishrecords.getUserSnapshot(), SubmitWishRecordDTO.User.class);
+        String mode = us.getExamMajor();
+        // 初始化院校,计划,录取
+        SubmitWishRecordDTO.SubmitWishRecordDetail detail = JSON.parseObject(busiWishrecords.getDetail(), SubmitWishRecordDTO.SubmitWishRecordDetail.class);
+        Map<Long, Long> planUniversityMap = Maps.newHashMap();
+        for (SubmitWishRecordDTO.SubmitWishRecordBatchWishes wish : detail.getBatch().getWishes()) {
+            if (!wish.getCollegeCode().equals(collegeCode) || StringUtils.isNotBlank(jCode) && !jCode.equals(wish.getJCode())) {
+                continue;
+            }
+            for (SubmitWishRecordDTO.SubmitWishRecordBatchMarjors marjor : wish.getMarjors()) {
+                planUniversityMap.put(marjor.getId(), wish.getUniversityId());
+            }
+        }
+        if (planUniversityMap.size() == 0) {
+            return detailList;
+        }
+        Map cond = Maps.newHashMap();
+        cond.put("ids", Lists.newArrayList(planUniversityMap.keySet()));
+        Map<Long, BBusiWishUniversitySubmitRecruitPlan> planMap = busiWishUniversitySubmitRecruitPlanMapper.selectWishUniversitySubmitRecruitGroups(cond)
+                .stream().collect(Collectors.toMap(BBusiWishUniversitySubmitRecruitPlan::getId, Function.identity()));
+        busiWishUniversityMarjorsPlanSubmitMapper.selectBBusiWishUniversityMarjorsPlanSubmitByIds(planUniversityMap.keySet()).stream().forEach(t -> {
+            planMap.get(t.getPlanId()).setStats(t.getStats());
+            planUniversityMap.remove(t.getPlanId());
+        });
+
+        String location = SecurityUtils.getLoginUser().getUser().getLocation();
+        Integer currYear = detail.getYear();
+        Integer currSubmitYear = getSubmitYear(location, null, detail.getBatch().getName(), currYear);
+//        Map<Long, BBusiWishUniversitySubmitMarjors> universityMarjorMap = Maps.newHashMap();
+//        if (planUniversityMap.size() > 0) {
+//            cond.clear();
+//            cond.put("location", location);
+//            cond.put("year", detail.getYear() - 1);
+//            cond.put("universityIds", Sets.newHashSet(planUniversityMap.values()));
+//            cond.put("level", detail.getBatch().getName()); // 本科,专科
+//            cond.put("liberalScience", NewgaokaoType.isNewgaokao33Province(location) ? 2 : (("物理".equals(subjects[0]) || "理科".equals(subjects[0])) ? 1 : 0));
+//            for (BBusiWishUniversitySubmits us : busiWishUniversitySubmitsMapper.selectBBusiWishUniversitySubmitsByCond(cond)) {
+//                BBusiWishUniversitySubmitMarjors submitMarjors = new BBusiWishUniversitySubmitMarjors();
+//                submitMarjors.setScore(us.getScore());
+//                submitMarjors.setSeat(us.getSeat());
+//                submitMarjors.setYear(us.getYear());
+//                submitMarjors.setType(us.getType());
+//                universityMarjorMap.put(Long.parseLong(us.getUniversityId()), submitMarjors);
+//            }
+//        }
+        cond.clear();
+
+        boolean scoreLock = getScoreLock(location);
+        boolean showInheritScore = Boolean.valueOf(configService.selectConfigByKey("voluntary.showInheritScore"));
+
+        Integer baseYearScore = currSubmitYear.equals(currYear) ? detail.getScore().intValue() : getScoreOfLastYear(location, currYear, mode, detail.getScore().intValue());
+        Integer historyIndex = currSubmitYear.equals(currYear) ? 0 : 1;
+        BBusiWishUniversitySubmitMarjors empty = new BBusiWishUniversitySubmitMarjors();
+        Integer batchLine = getBatchline(location, currYear, NumberUtils.toInt(busiWishrecords.getBatch(), 5), getExamMajor());
+        for (SubmitWishRecordDTO.SubmitWishRecordBatchWishes wish : detail.getBatch().getWishes()) {
+            if (!wish.getCollegeCode().equals(collegeCode) || StringUtils.isNotBlank(jCode) && !jCode.equals(wish.getJCode())) {
+                continue;
+            }
+            for (SubmitWishRecordDTO.SubmitWishRecordBatchMarjors marjor : wish.getMarjors()) {
+                BBusiWishUniversitySubmitRecruitPlan plan = planMap.get(marjor.getId());
+                if (null == plan) {
+                    continue;
+                }
+                ZytbDto.ZytbVoluntaryMarjorDetail d = toMarjorDetail(mode, batchLine, plan, marjor, null,
+                        empty, currYear, baseYearScore, historyIndex, scoreLock, showInheritScore,
+                        currSubmitYear, detail.getScore().intValue());
+                detailList.add(d);
+            }
+        }
+        return detailList;
+    }
+
+    private ZytbDto.ZytbVoluntaryMarjorDetail toMarjorDetail(String mode, Integer batchLine, BBusiWishUniversitySubmitRecruitPlan plan, SubmitWishRecordDTO.SubmitWishRecordBatchMarjors marjor, Map<Integer, String> yearCourseMap,
+                                                             BBusiWishUniversitySubmitMarjors empty, Integer currYear, Integer baseYearScore, Integer historyIndex, boolean scoreLock, boolean showInheritScore,
+                                                             Integer currSubmitYear, Integer score) {
+        ZytbDto.ZytbVoluntaryMarjorDetail d = new ZytbDto.ZytbVoluntaryMarjorDetail();
+        BeanUtils.copyProperties(plan, d);
+        d.setMarjorName(marjor.getName());
+        BBusiWishUniversitySubmitMarjors[] submitMarjorList = d.getHistories();
+        String location = SecurityUtils.getLoginUser().getUser().getLocation();
+        if(null != plan.getStats()) {
+            SubmitYearsStats.YearStat[] statsList = plan.getStats().getStats();
+            for (int i = 0; i < Math.min(4, statsList.length); i++) {
+                if (null == statsList[i]) {
+                    continue;
+                }
+                submitMarjorList[i] = new BBusiWishUniversitySubmitMarjors();
+                submitMarjorList[i].setYear(String.valueOf(statsList[i].getYear()));
+                submitMarjorList[i].setScore(scoreLock ? statsList[i].getScore() : statsList[i].getCorrScore());
+                submitMarjorList[i].setSeat(scoreLock ? statsList[i].getSeat() : statsList[i].getCorrSeat());
+                submitMarjorList[i].setInheritScore(showInheritScore && null != statsList[i].getScore() && null != submitMarjorList[i].getScore() && statsList[i].getScore() == 0 && submitMarjorList[i].getScore() > 0);
+                submitMarjorList[i].setNumReal(statsList[i].getNumReal());
+                submitMarjorList[i].setCollect(statsList[i].getCollect());
+                submitMarjorList[i].setCollectDesc(statsList[i].getCollectDesc());
+                submitMarjorList[i].setSinoForeign(statsList[i].getSinoForeign());
+                submitMarjorList[i].setSinoForeignDesc(statsList[i].getSinoForeignDesc());
+            }
+        }
+        for (int i = 0; i < submitMarjorList.length; i++) {
+            if (null == submitMarjorList[i]) {
+                submitMarjorList[i] = empty;
+            }
+        }
+        d.setPickType(marjor.getPickType());
+        d.setEnrollRatio(NumberUtils.toInt(marjor.getEnrollRatio(), 0));
+        d.setEnrollRatioText(marjor.getEnrollRatioText());
+        d.setEnrollFluctuate(marjor.getEnrollFluctuate());
+        MxjbWishScoreRateServiceImpl.ScoreRatioResult scoreRatioResult = getScoreRatioResult(submitMarjorList, currYear, currSubmitYear, baseYearScore, location, mode, score, batchLine);
+        if (null != scoreRatioResult) {
+            // d.setPickType(scoreRatioResult.getEnrollLevel());
+            d.setEnrollOver(scoreRatioResult.getOverflow());
+            // d.setEnrollRatio(scoreRatioResult.getRatio());
+            // d.setEnrollRatioText(scoreRatioResult.getRiskLevel());
+        } else {
+            // d.setPickType(null);
+            // d.setEnrollRatio(null);
+            // d.setEnrollRatioText("");
+        }
+//                if(null == submitMarjorList[0]) {
+//                    submitMarjorList[0] = universityMarjorMap.get(wish.getUniversityId());
+//                }
+        if (submitMarjorList!= null && submitMarjorList.length > 1) {
+            submitMarjorList = historyIndex > 0 ? ArrayUtils.subarray(submitMarjorList, 1, submitMarjorList.length) : ArrayUtils.subarray(submitMarjorList, 0, submitMarjorList.length - 1);
+        }
+        d.setHistories(submitMarjorList);
+        d.setHistory(d.getHistories()[0]);
+        return d;
+    }
+
+    private Integer[] getScoreRange(Integer maxScore, Integer minScore, String location, Integer currYear, String mode) {
+        Map cond = Maps.newHashMap();
+        cond.put("location", location);
+        cond.put("year", currYear);
+        cond.put("mode", mode);
+        Integer minLevel = getLowestRank(cond, maxScore);
+        Integer maxLevel = getLowestRank(cond, minScore);
+        return new Integer[] {minLevel, maxLevel};
+    }
+
+    /**
+     * 查询
+     */
+    private Integer[] getPickTypeSegments(Integer score, Integer batchMinScore, String location, Integer currYear, String mode) {
+        // +30 -15 -60 => 600分 历史  冲:(600-630] 稳:(585-600] 保:(414,585]  // 600 => [630=70 冲 600=91 稳 585=200 保 414=300)
+        if (null == score) {
+            log.error("Score is null for {} at {} {}", location, currYear, mode);
+            return null;
+        }
+        Map cond = Maps.newHashMap();
+        cond.put("location", location);
+        cond.put("year", currYear);
+        cond.put("mode", mode);
+
+        // [Level=冲的最大值, 冲的最低值, 稳的最低值, 保的最低值, Rate>=99的最高值, Rate<=1的最小值]
+        Integer[] levelRanges = mxjbWishScoreRateService.getWishScoreRatioRanges(currYear, score);
+        if (null == levelRanges) {
+            log.error("getLevelRanges for {} at {} {}", location, currYear, cond.get("mode"));
+            return null;
+        }
+
+        Integer rank1, rank2, rank3, rank4;
+        if (null == (rank2 = getLowestRank(cond, levelRanges[1]))) {
+            log.error("getLowestRank for {} at {} {}", location, currYear, cond.get("mode"));
+            return null;
+        }
+
+        Integer[] segments = new Integer[4];
+        segments[0] = null == (rank1 = getLowestRank(cond, levelRanges[0])) ? rank2 - 1 : Math.min(rank1, rank2 - 1);
+        segments[1] = rank2;
+        segments[2] = null == (rank3 = getLowestRank(cond, levelRanges[2])) ? null : Math.max(rank3, rank2 + 1);
+        segments[3] = null == (rank4 = getLowestRank(cond, Math.max(batchMinScore, levelRanges[3]))) ? null : null == rank3 ? rank4 : Math.max(rank4, rank3 + 1);
+        return segments;
+    }
+
+    // 生成缓存数据表
+    public void calculateSubmitPlanData(String location, Integer year) {
+        Integer[] batchs = new Integer[] {0, 1, 2, 3, 4}; // 0 提前批 1 本科一批 2 本科二批 3 本科三批 4 高职专科批
+        Integer[] liberalSciences = new Integer[] {0, 1, 2}; // 1理科(物理),0文科(历史), 2文理不分
+        StopWatch stopWatch = new StopWatch();
+        for (Integer batch : batchs) {
+            for (Integer liberalScience : liberalSciences) {
+                stopWatch.reset();
+                stopWatch.start();
+                calculateSubmitPlanData(location, year, batch, liberalScience);
+                stopWatch.stop();
+                log.info("process {} {} Batch:{} {} used: {}", location, year, batch, liberalScience, stopWatch.getTime(TimeUnit.SECONDS));
+            }
+        }
+        log.info("process Completed");
+    }
+
+    private void calculateSubmitPlanData(String location, Integer year, Integer batch, Integer liberalScience) {
+        // 查询今年的计划
+        BBusiWishUniversitySubmitRecruitPlan planCond = new BBusiWishUniversitySubmitRecruitPlan();
+        planCond.setLocation(location);
+        planCond.setYear(year.toString());
+        planCond.setBatch(batch.longValue());
+        planCond.setLiberalScience(liberalScience);
+        List<BBusiWishUniversitySubmitRecruitPlan> recruitPlanList = busiWishUniversitySubmitRecruitPlanMapper.selectBBusiWishUniversitySubmitRecruitPlanList(planCond)
+                .stream().filter(t -> StringUtils.isNotBlank(t.getCollegeCode())).collect(Collectors.toList());  // TODO 没有招生代码的如何处理?
+        if (CollectionUtils.isEmpty(recruitPlanList)) {
+            return;
+        }
+        // 检查 Group
+        Map<String, BBusiWishUniversityMarjorsGroup> universityMarjorGroupMap = Maps.newHashMap();
+        BBusiWishUniversityMarjorsGroup groupCond = new BBusiWishUniversityMarjorsGroup();
+        groupCond.setLocation(location);
+        String planLevel = recruitPlanList.get(0).getLevel();
+        groupCond.setLevel(StringUtils.isNotBlank(planLevel) ? planLevel.substring(0, 2) : "");
+        groupCond.setLiberalScience(liberalScience);
+        for (BBusiWishUniversityMarjorsGroup group : busiWishUniversityMarjorsGroupMapper.selectBBusiWishUniversityMarjorsGroupList(groupCond)) {
+            String majorName = getMajorName(group.getMarjorName(), group.getMarjorSpecial());
+            String universityMajorName = group.getUniversityId() + ":" + majorName;
+            universityMarjorGroupMap.put(universityMajorName, group);
+        }
+
+        List<BBusiWishUniversityMarjorsGroup> newGroupList = Lists.newArrayList();
+        // key is universityCollege, value is recruitPlans
+        Map<String, List<BBusiWishUniversitySubmitRecruitPlan>> universityCollegePlansMap = Maps.newHashMap();
+        // key is batch, value is level
+        Map<Long, String> levelNameMap = Maps.newHashMap();
+        // key is universityMarjorName, value is recruitPlan
+        Map<String, BBusiWishUniversitySubmitRecruitPlan> universityMarjorPlanMap = Maps.newHashMap();
+        BBusiWishUniversitySubmitRecruitPlan tmpPlan;
+        Map<Long, BBusiWishUniversityMarjorsGroup> planMarjorsGroupMap = Maps.newHashMap();
+        for (BBusiWishUniversitySubmitRecruitPlan plan : recruitPlanList) {
+            String majorName = getMajorName(plan.getMarjorName(), plan.getMarjorDirection());
+            String universityMajorName = plan.getUniversityId() + ":" + majorName;
+            if (null != (tmpPlan = universityMarjorPlanMap.putIfAbsent(universityMajorName, plan))) {
+                log.warn("Plan {} Dup with {} ", plan.getId(), tmpPlan.getId()); // TODO 计划只取一个,重复的合并还是忽略?
+                continue;
+            }
+            BBusiWishUniversityMarjorsGroup marjorsGroup = universityMarjorGroupMap.get(universityMajorName);
+            if(null == marjorsGroup) {
+                marjorsGroup = new BBusiWishUniversityMarjorsGroup();
+                marjorsGroup.setLocation(location);
+                marjorsGroup.setLevel(plan.getLevel());
+                marjorsGroup.setLiberalScience(liberalScience);
+                marjorsGroup.setUniversityId(plan.getUniversityId());
+                marjorsGroup.setMarjorName(plan.getMarjorName());
+                String special = majorName.substring(plan.getMarjorName().length());
+                if (special.length() > 0) {
+                    marjorsGroup.setMarjorSpecial(special.replace("(|)", ""));
+                } else {
+                    marjorsGroup.setMarjorSpecial(special);
+                }
+                marjorsGroup.setStatus(1L);
+                newGroupList.add(marjorsGroup);
+                universityMarjorGroupMap.put(universityMajorName, marjorsGroup);
+            }
+            planMarjorsGroupMap.put(plan.getId(), marjorsGroup);
+            levelNameMap.putIfAbsent(plan.getBatch(), plan.getLevel());
+            String universityCollege =  plan.getUniversityId() + ":" + plan.getCollegeCode();
+            List<BBusiWishUniversitySubmitRecruitPlan> groupPlanList =  universityCollegePlansMap.get(universityCollege);
+            if (null == groupPlanList) {
+                groupPlanList = Lists.newArrayList();
+                universityCollegePlansMap.put(universityCollege, groupPlanList);
+            }
+            groupPlanList.add(plan);
+        }
+
+        // 查询去年的报名, 然后映射计划与报名
+        BBusiWishUniversitySubmitMarjors majorCond = new BBusiWishUniversitySubmitMarjors();
+        majorCond.setLocation(planCond.getLocation());
+        majorCond.setYear(String.valueOf(year - 1));
+        majorCond.setLevel(levelNameMap.get(planCond.getBatch()));
+        majorCond.setLiberalScience(planCond.getLiberalScience().intValue());
+
+        // key is planId, value is Submit for last year need 3 years
+        Map<Long, BBusiWishUniversitySubmitMarjors[]> planSubmitMarjorsMap = Maps.newHashMap();
+        BBusiWishUniversitySubmitMarjors[] tmpSubmits;
+        for (int yearIdx = 2, yr = year - 3; yr < year; yr++, yearIdx--) {
+            majorCond.setYear(String.valueOf(yr));
+            for (BBusiWishUniversitySubmitMarjors marjor : busiWishUniversitySubmitMarjorsMapper.selectBBusiWishUniversitySubmitMarjorsList(majorCond)) {
+                String majorName = getMajorName(marjor.getMarjorName(), marjor.getMarjorDirection());
+                String universityMajorName = marjor.getUniversityId() + ":" + majorName;
+                BBusiWishUniversitySubmitRecruitPlan plan = universityMarjorPlanMap.get(universityMajorName);
+                if (null == plan) { // 未找到计划的忽略
+                    continue;
+                }
+                planSubmitMarjorsMap.get(plan.getId());
+                if (null == (tmpSubmits = planSubmitMarjorsMap.get(plan.getId()))) {
+                    tmpSubmits = new BBusiWishUniversitySubmitMarjors[4];
+                    planSubmitMarjorsMap.put(plan.getId(), tmpSubmits);
+                } else if (null != tmpSubmits[yearIdx]) {
+                    log.warn("Submit {} Dup with {} ", marjor.getId(), tmpSubmits[yearIdx].getId()); // TODO 报名只取一个,重复的合并还是忽略?
+                    continue;
+                }
+                tmpSubmits[yearIdx] = marjor;
+            }
+        }
+
+        // 计算专业组
+        BBusiWishUniversityMarjorsCollege collegeCond = new BBusiWishUniversityMarjorsCollege();
+        collegeCond.setLocation(planCond.getLocation());
+        collegeCond.setYear(planCond.getYear());
+        collegeCond.setLevel(levelNameMap.get(planCond.getBatch()));
+        collegeCond.setLiberalScience(planCond.getLiberalScience().intValue());
+        Map<String, BBusiWishUniversityMarjorsCollege> universityMarjorsCollegeMap = busiWishUniversityMarjorsCollegeMapper.selectBBusiWishUniversityMarjorsCollegeList(collegeCond)
+                .stream().collect(Collectors.toMap(t -> t.getUniversityId() + ":" + t.getCollegeCode(), Function.identity()));
+
+        BBusiWishUniversityMarjorsPlanSubmit planSubmitCond = new BBusiWishUniversityMarjorsPlanSubmit();
+        planSubmitCond.setLocation(planCond.getLocation());
+        planSubmitCond.setYear(planCond.getYear());
+        planSubmitCond.setLevel(levelNameMap.get(planCond.getBatch()));
+        planSubmitCond.setLiberalScience(planCond.getLiberalScience().intValue());
+        Set<Long> universityMarjorsSubmitIdSet = busiWishUniversityMarjorsPlanSubmitMapper.selectBBusiWishUniversityMarjorsPlanSubmitList(planSubmitCond)
+                .stream().map(BBusiWishUniversityMarjorsPlanSubmit::getPlanId).collect(Collectors.toSet());
+
+        BBusiWishUniversityMarjorsCollege existCollege;
+        for (String universityCollege : universityCollegePlansMap.keySet()) {
+            List<BBusiWishUniversitySubmitRecruitPlan> planList = universityCollegePlansMap.get(universityCollege);
+            // 创建专业组
+            BBusiWishUniversityMarjorsCollege college = new BBusiWishUniversityMarjorsCollege();
+            BeanUtils.copyProperties(collegeCond, college);
+            college.setPlanCount(0L);
+            college.setMarjorCount((long) planList.size());
+            tmpPlan = planList.get(0);
+            college.setUniversityId(tmpPlan.getUniversityId());
+            college.setCollegeCode(tmpPlan.getCollegeCode());
+            // 汇总 MarjorCount, planCount(sum), score(min), seat(max), realNum(sum)
+            for (BBusiWishUniversitySubmitRecruitPlan plan : planList) {
+                college.setPlanCount(college.getPlanCount() + plan.getPlanCount());
+                BBusiWishUniversitySubmitMarjors[] submitMarjorsList = planSubmitMarjorsMap.get(plan.getId());
+                if (null != submitMarjorsList) {
+                    SubmitYearsStats submitYearsStats = new SubmitYearsStats();
+                    // submitYearsStats.setYear(year);
+                    SubmitYearsStats.YearStat yearStats[] = new SubmitYearsStats.YearStat[3];
+                    submitYearsStats.setStats(yearStats);
+                    for (int i = 0; i < submitMarjorsList.length; i++) {
+                        BBusiWishUniversitySubmitMarjors submitMarjors = submitMarjorsList[i];
+                        if (null == submitMarjors) {
+                            continue;
+                        }
+                        Long numReal = null != submitMarjors.getNumReal() ? submitMarjors.getNumReal() : 0;
+                        if (null == yearStats[i]) {
+                            yearStats[i] = new SubmitYearsStats.YearStat();
+                            yearStats[i].setScore(submitMarjors.getScore());
+                            yearStats[i].setSeat(submitMarjors.getSeat());
+                            yearStats[i].setNumReal(numReal);
+                        } else {
+                            yearStats[i].setScore(Math.min(yearStats[i].getScore(), submitMarjors.getScore()));
+                            yearStats[i].setSeat(Math.max(yearStats[i].getSeat(), submitMarjors.getSeat()));
+                            yearStats[i].setNumReal(yearStats[i].getNumReal() + numReal);
+                        }
+                    }
+                    college.setStats(submitYearsStats);
+                }
+            }
+            if (null != (existCollege = universityMarjorsCollegeMap.remove(universityCollege))) {
+                college.setId(existCollege.getId());
+                busiWishUniversityMarjorsCollegeMapper.updateBBusiWishUniversityMarjorsCollege(college);
+            } else {
+                busiWishUniversityMarjorsCollegeMapper.insertBBusiWishUniversityMarjorsCollege(college);
+            }
+
+            // 新增group
+            if (newGroupList.size() > 0) {
+                for (BBusiWishUniversityMarjorsGroup newGroup : newGroupList) {
+                    busiWishUniversityMarjorsGroupMapper.insertBBusiWishUniversityMarjorsGroup(newGroup);
+                }
+            }
+
+            // 保存映射关系及专业组id
+            for (BBusiWishUniversitySubmitRecruitPlan plan : planList) {
+                BBusiWishUniversityMarjorsPlanSubmit planSubmit = new BBusiWishUniversityMarjorsPlanSubmit();
+                BeanUtils.copyProperties(planSubmitCond, planSubmit);
+
+                String course = plan.getCourse();
+                planSubmit.setCourse(plan.getCourse());
+                if (NewgaokaoType.isNewgaokao33Province(location)) {
+                    planSubmit.setCourse0("");
+                    if (course.contains("不限")) {
+                        planSubmit.setCourse1("");
+                        planSubmit.setCourse2("");
+                    } else if (course.contains("+") || course.contains("和")) {
+                        planSubmit.setCourse1("");
+                        planSubmit.setCourse2(course.replaceAll("\\+|和", ","));
+                    } else {
+                        planSubmit.setCourse1(course.replaceAll("/|或", ","));
+                        planSubmit.setCourse2("");
+                    }
+                } else {
+                    course = StringUtils.trimToEmpty(course);
+                    String[] courses = course.split("\\+");
+                    planSubmit.setCourse0(courses[0]);
+                    if (courses.length == 1 || courses[1].contains("不限")) {
+                        planSubmit.setCourse1("");
+                        planSubmit.setCourse2("");
+                    } else if (courses[1].contains("和")) {
+                        planSubmit.setCourse1("");
+                        planSubmit.setCourse2(courses[1].replaceAll("和", ","));
+                    } else {
+                        planSubmit.setCourse1(courses[1].replaceAll("或", ","));
+                        planSubmit.setCourse2("");
+                    }
+                }
+                planSubmit.setPlanId(plan.getId());
+                BBusiWishUniversitySubmitMarjors[] submitMarjorsList = planSubmitMarjorsMap.get(plan.getId());
+                if (null != submitMarjorsList) {
+                    if (null != submitMarjorsList[0]) {
+                        planSubmit.setSubmitId(submitMarjorsList[0].getId());
+                    }
+                    SubmitYearsStats submitYearsStats = new SubmitYearsStats();
+                    // submitYearsStats.setYear(year);
+                    SubmitYearsStats.YearStat yearStats[] = new SubmitYearsStats.YearStat[3];
+                    submitYearsStats.setStats(yearStats);
+                    BBusiWishUniversitySubmitMarjors submitMarjors;
+                    for (int i = 0; i < submitMarjorsList.length; i++) {
+                        if (null == (submitMarjors = submitMarjorsList[i])) {
+                            continue;
+                        }
+                        yearStats[i] = new SubmitYearsStats.YearStat();
+                        Long numReal = null != submitMarjors.getNumReal() ? submitMarjors.getNumReal() : 0;
+                        yearStats[i].setScore(submitMarjors.getScore());
+                        yearStats[i].setSeat(submitMarjors.getSeat());
+                        yearStats[i].setNumReal(numReal);
+                    }
+                    planSubmit.setStats(submitYearsStats);
+                }
+                BBusiWishUniversityMarjorsGroup marjorsGroup = planMarjorsGroupMap.get(plan.getId());
+                planSubmit.setGroupId(marjorsGroup.getGroupId());
+
+                planSubmit.setUniversityId(plan.getUniversityId());
+                planSubmit.setCollegeCode(plan.getCollegeCode());
+                String majorName = getMajorName(plan.getMarjorName(), plan.getMarjorDirection());
+                planSubmit.setMarjorName(majorName);
+                planSubmit.setMarjorCollegeId(college.getId());
+                if (universityMarjorsSubmitIdSet.remove(plan.getId())) {
+                    busiWishUniversityMarjorsPlanSubmitMapper.updateBBusiWishUniversityMarjorsPlanSubmit(planSubmit);
+                } else {
+                    busiWishUniversityMarjorsPlanSubmitMapper.insertBBusiWishUniversityMarjorsPlanSubmit(planSubmit);
+                }
+            }
+        }
+        if (universityMarjorsSubmitIdSet.size() > 0) {
+            busiWishUniversityMarjorsPlanSubmitMapper.deleteBBusiWishUniversityMarjorsPlanSubmitByIds(universityMarjorsSubmitIdSet.toArray(new Long[universityMarjorsSubmitIdSet.size()]));
+        }
+        if (universityMarjorsCollegeMap.size() > 0) {
+            List<Long> idList = universityMarjorsCollegeMap.values().stream().map(t -> t.getId()).collect(Collectors.toList());
+            busiWishUniversityMarjorsCollegeMapper.deleteBBusiWishUniversityMarjorsCollegeByIds(idList.toArray(new Long[idList.size()]));
+        }
+    }
+
+    /**
+     * 限制体验卡在06/15~08/31之间不能使用模拟志愿查看与保存的功能
+     * @param user
+     * @return
+     */
+    public String limitExperienceCard(SysUser user){
+        if(StringUtils.isNull(user.getCardId())|| UserRegStatus.isNotVip()){
+            //未绑定卡的用户不受限制(仅能查询一条记录)
+            return null;
+        }
+
+        //06-15,08-31
+        String limitVoluntaryDate= configService.selectConfigByKey("voluntary.limit.experienceCard");
+        String startDateStr = StringUtils.EMPTY;
+        String endDateStr = StringUtils.EMPTY;
+        if(StringUtils.isEmpty(limitVoluntaryDate)){
+            startDateStr = DateUtils.getCurrentYear()+"-06-15";
+            endDateStr = DateUtils.getCurrentYear()+"-08-31";
+        }else {
+            String[] limitDateArray = Convert.toStrArray(limitVoluntaryDate);
+            startDateStr = DateUtils.getCurrentYear()+"-"+(null==limitDateArray[0]?("06-15"):limitDateArray[0]);
+            endDateStr = DateUtils.getCurrentYear()+"-"+(null==limitDateArray[1]?("08-31"):limitDateArray[1]);
+        }
+
+        Date startLimitDate = DateUtils.parseDate(startDateStr);
+        //结束日期加一天
+        Date endLimitDate = new Date(DateUtils.parseDate(endDateStr).getTime()+24*60*60*1000);
+
+        /** TODO 莫
+        if(new Date().before(endLimitDate)&&startLimitDate.before(new Date())){
+            DzCards card= cardsService.selectDzCardsByCardId(user.getCardId());
+            if(CardType.isExperienceCard(card.getType())){
+                //体验卡在限制时间内
+                return String.format(Constants.EXPERIENCE_CARD_INVALID_VOLUNTARY,user.getUserName(),DateUtils.replaceYear(startDateStr),DateUtils.replaceYear(endDateStr)) ;
+            }
+        }
+
+        if(getScoreLock(user.getLocation())){
+            //锁分:非高三卡不能使用
+            int year = Calendar.getInstance().get(Calendar.YEAR);
+            if(!(user.getYear()==(year-3)||user.getGradeId()==700L)){
+                return String.format(Constants.SENIOR_THIRD_CARD_INVALID_VOLUNTARY,user.getUserName(),DateUtils.replaceYear(startDateStr),DateUtils.replaceYear(endDateStr)) ;
+            }
+        }
+         **/
+
+        return null;
+    }
+
+    private Map<String, BBusiWishScoreGroups> locationYearRangeMap = Maps.newHashMap();
+
+    public void clearScoreGroupRange() {
+        locationYearRangeMap.clear();
+    }
+
+    /**
+     * 计算一分一段极值分及位次
+     * @param location
+     * @param year
+     * @return
+     */
+    public BBusiWishScoreGroups getScoreGroupRange(String location, Integer year) {
+        String key = location + year;
+        BBusiWishScoreGroups range = locationYearRangeMap.get(key);
+        if (null != range) {
+            return range;
+        }
+        BBusiWishScoreGroups cond = new BBusiWishScoreGroups();
+        cond.setLocation(location);
+        cond.setYear(year);
+        range = busiWishScoreGroupsMapper.selectRangeByLocation(cond);
+        locationYearRangeMap.put(key, range);
+        return range;
+    }
+
+    public Integer[] getMappingRank(Integer[] ranges, String location, Integer currYear, String mode, Integer score, Integer targetYear) {
+        Integer planYear = getYear();
+        if(null == ranges) {
+            return ranges;
+        }
+        for (int i = 0; i < ranges.length; i++) {
+            if(null != ranges[i]) {
+                ranges[i] = scoreRankService.getRankEqRank(location, planYear, currYear, mode, score, ranges[i], targetYear);
+            }
+        }
+        return ranges;
+
+    }
+
+    public Integer[] getMappingRank2(Integer[] ranges, String location, Integer currYear, Integer targetYear) {
+        if (null == ranges) {
+            return null;
+        }
+        // currRank / currMinRank * lastMinRank = lastRank
+        BBusiWishScoreGroups currRange = getScoreGroupRange(location, currYear);
+        BBusiWishScoreGroups targetRange = getScoreGroupRange(location, targetYear);
+        if (null == currRange || null == targetRange) {
+            return ranges;
+        }
+        Integer currRangeMinRank = currRange.getLowestRank();
+        Integer targetRangeMinRank = targetRange.getLowestRank();
+        for (int i = 0; i < ranges.length; i++) {
+            if(null != ranges[i]) {
+                Double rate = ranges[i] * 1.0 / currRangeMinRank;
+                ranges[i] = (int) Math.ceil(rate * targetRangeMinRank);
+            }
+        }
+        return ranges;
+    }
+
+    public String getExamMajor(){
+        return String.valueOf(SecurityUtils.getLoginUser().getUser().getExamMajor());
+    }
+}

+ 28 - 0
ie-admin/src/main/java/com/ruoyi/web/util/PageUtil.java

@@ -0,0 +1,28 @@
+package com.ruoyi.web.util;
+
+import com.github.pagehelper.Page;
+
+import java.util.List;
+
+public class PageUtil {
+
+    public static <V, R> List<R> getDtoListWithPageable(List<V> list, List<R> dtoList) {
+        if (list instanceof Page) {
+            Page page = (Page) list;
+            Page<R> dtoPage = new Page(page.getPageNum(), page.getPageSize());
+            dtoPage.setTotal(page.getTotal());
+            dtoPage.addAll(dtoList);
+            return dtoPage;
+        }
+        return dtoList;
+    }
+
+    public static <V> List<V> buildListForPage(List<V> list, Integer pageNo, Integer pageSize) {
+        Page<V> dtoPage = new Page(pageNo, pageSize);
+        dtoPage.setTotal(list.size());
+        Integer begin = (pageNo - 1) * pageSize;
+        Integer end = Math.min(begin + pageSize, list.size());
+        dtoPage.addAll(list.subList(begin, end));
+        return dtoPage;
+    }
+}

+ 2 - 1
ie-admin/src/main/java/com/ruoyi/web/util/VolunteerExporter.java

@@ -3,6 +3,7 @@ package com.ruoyi.web.util;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Sets;
 import com.ruoyi.common.core.domain.entity.SysUser;
+import com.ruoyi.common.enums.ExamType;
 import com.ruoyi.common.utils.SecurityUtils;
 import com.ruoyi.common.utils.StringUtils;
 import com.ruoyi.common.utils.file.FileUtils;
@@ -38,7 +39,7 @@ public class VolunteerExporter {
         }
         SysUser sysUser = SecurityUtils.getLoginUser().getUser();
         try {
-            String course = Constant.EXAM_TYPE_ZG.equals(sysUser.getExamType()) ? detail.getMode()
+            String course = ExamType.VHS.equals(sysUser.getExamType()) ? detail.getMode()
                     : Arrays.asList(detail.getMode().split(",")).stream().map(t -> t.substring(0, 1)).collect(Collectors.joining());
             SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
             String score = String.valueOf(Math.round(detail.getScore()));

+ 6163 - 0
ie-admin/src/main/resources/templates/mht_report.xml

@@ -0,0 +1,6163 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<?mso-application progid="Word.Document"?>
+<w:wordDocument
+    xmlns:aml="http://schemas.microsoft.com/aml/2001/core"
+    xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas"
+    xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"
+    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+    xmlns:o="urn:schemas-microsoft-com:office:office"
+    xmlns:v="urn:schemas-microsoft-com:vml"
+    xmlns:w10="urn:schemas-microsoft-com:office:word"
+    xmlns:w="http://schemas.microsoft.com/office/word/2003/wordml"
+    xmlns:wx="http://schemas.microsoft.com/office/word/2003/auxHint"
+    xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml"
+    xmlns:wsp="http://schemas.microsoft.com/office/word/2003/wordml/sp2"
+    xmlns:sl="http://schemas.microsoft.com/schemaLibrary/2003/core" w:macrosPresent="no" w:embeddedObjPresent="no" w:ocxPresent="no" xml:space="preserve">
+    <w:ignoreSubtree w:val="http://schemas.microsoft.com/office/word/2003/wordml/sp2"/>
+    <o:DocumentProperties>
+        <o:Author>小家</o:Author>
+        <o:LastAuthor>w541</o:LastAuthor>
+        <o:Revision>2</o:Revision>
+        <o:TotalTime>1</o:TotalTime>
+        <o:Created>2023-08-14T07:05:00Z</o:Created>
+        <o:LastSaved>2023-08-14T07:05:00Z</o:LastSaved>
+        <o:Pages>8</o:Pages>
+        <o:Words>1091</o:Words>
+        <o:Characters>6222</o:Characters>
+        <o:Lines>51</o:Lines>
+        <o:Paragraphs>14</o:Paragraphs>
+        <o:CharactersWithSpaces>7299</o:CharactersWithSpaces>
+        <o:Version>15</o:Version>
+    </o:DocumentProperties>
+    <o:CustomDocumentProperties>
+        <o:KSOProductBuildVer dt:dt="string">2052-5.0.0.7542</o:KSOProductBuildVer>
+        <o:ICV dt:dt="string">02334D8EEA18E87797B2CF645A1833B2</o:ICV>
+    </o:CustomDocumentProperties>
+    <w:fonts>
+        <w:defaultFonts w:ascii="Times New Roman" w:fareast="宋体" w:h-ansi="Times New Roman" w:cs="Times New Roman"/>
+        <w:font w:name="Times New Roman">
+            <w:panose-1 w:val="02020603050405020304"/>
+            <w:charset w:val="00"/>
+            <w:family w:val="Roman"/>
+            <w:pitch w:val="variable"/>
+            <w:sig w:usb-0="E0002EFF" w:usb-1="C000785B" w:usb-2="00000009" w:usb-3="00000000" w:csb-0="000001FF" w:csb-1="00000000"/>
+        </w:font>
+        <w:font w:name="宋体">
+            <w:altName w:val="SimSun"/>
+            <w:panose-1 w:val="02010600030101010101"/>
+            <w:charset w:val="86"/>
+            <w:family w:val="auto"/>
+            <w:pitch w:val="variable"/>
+            <w:sig w:usb-0="00000003" w:usb-1="288F0000" w:usb-2="00000016" w:usb-3="00000000" w:csb-0="00040001" w:csb-1="00000000"/>
+        </w:font>
+        <w:font w:name="宋体">
+            <w:altName w:val="SimSun"/>
+            <w:panose-1 w:val="02010600030101010101"/>
+            <w:charset w:val="86"/>
+            <w:family w:val="auto"/>
+            <w:pitch w:val="variable"/>
+            <w:sig w:usb-0="00000003" w:usb-1="288F0000" w:usb-2="00000016" w:usb-3="00000000" w:csb-0="00040001" w:csb-1="00000000"/>
+        </w:font>
+        <w:font w:name="Calibri">
+            <w:panose-1 w:val="020F0502020204030204"/>
+            <w:charset w:val="00"/>
+            <w:family w:val="Swiss"/>
+            <w:pitch w:val="variable"/>
+            <w:sig w:usb-0="E4002EFF" w:usb-1="C000247B" w:usb-2="00000009" w:usb-3="00000000" w:csb-0="000001FF" w:csb-1="00000000"/>
+        </w:font>
+        <w:font w:name="@宋体">
+            <w:panose-1 w:val="02010600030101010101"/>
+            <w:charset w:val="86"/>
+            <w:family w:val="auto"/>
+            <w:pitch w:val="variable"/>
+            <w:sig w:usb-0="00000003" w:usb-1="288F0000" w:usb-2="00000016" w:usb-3="00000000" w:csb-0="00040001" w:csb-1="00000000"/>
+        </w:font>
+    </w:fonts>
+    <w:styles>
+        <w:versionOfBuiltInStylenames w:val="7"/>
+        <w:latentStyles w:defLockedState="off" w:latentStyleCount="371">
+            <w:lsdException w:name="Normal"/>
+            <w:lsdException w:name="heading 1"/>
+            <w:lsdException w:name="heading 2"/>
+            <w:lsdException w:name="heading 3"/>
+            <w:lsdException w:name="heading 4"/>
+            <w:lsdException w:name="heading 5"/>
+            <w:lsdException w:name="heading 6"/>
+            <w:lsdException w:name="heading 7"/>
+            <w:lsdException w:name="heading 8"/>
+            <w:lsdException w:name="heading 9"/>
+            <w:lsdException w:name="caption"/>
+            <w:lsdException w:name="Title"/>
+            <w:lsdException w:name="Default Paragraph Font"/>
+            <w:lsdException w:name="Subtitle"/>
+            <w:lsdException w:name="Strong"/>
+            <w:lsdException w:name="Emphasis"/>
+            <w:lsdException w:name="HTML Top of Form"/>
+            <w:lsdException w:name="HTML Bottom of Form"/>
+            <w:lsdException w:name="Normal Table"/>
+            <w:lsdException w:name="No List"/>
+            <w:lsdException w:name="Outline List 1"/>
+            <w:lsdException w:name="Outline List 2"/>
+            <w:lsdException w:name="Outline List 3"/>
+            <w:lsdException w:name="Table Simple 1"/>
+            <w:lsdException w:name="Table Simple 2"/>
+            <w:lsdException w:name="Table Simple 3"/>
+            <w:lsdException w:name="Table Classic 1"/>
+            <w:lsdException w:name="Table Classic 2"/>
+            <w:lsdException w:name="Table Classic 3"/>
+            <w:lsdException w:name="Table Classic 4"/>
+            <w:lsdException w:name="Table Colorful 1"/>
+            <w:lsdException w:name="Table Colorful 2"/>
+            <w:lsdException w:name="Table Colorful 3"/>
+            <w:lsdException w:name="Table Columns 1"/>
+            <w:lsdException w:name="Table Columns 2"/>
+            <w:lsdException w:name="Table Columns 3"/>
+            <w:lsdException w:name="Table Columns 4"/>
+            <w:lsdException w:name="Table Columns 5"/>
+            <w:lsdException w:name="Table Grid 1"/>
+            <w:lsdException w:name="Table Grid 2"/>
+            <w:lsdException w:name="Table Grid 3"/>
+            <w:lsdException w:name="Table Grid 4"/>
+            <w:lsdException w:name="Table Grid 5"/>
+            <w:lsdException w:name="Table Grid 6"/>
+            <w:lsdException w:name="Table Grid 7"/>
+            <w:lsdException w:name="Table Grid 8"/>
+            <w:lsdException w:name="Table List 1"/>
+            <w:lsdException w:name="Table List 2"/>
+            <w:lsdException w:name="Table List 3"/>
+            <w:lsdException w:name="Table List 4"/>
+            <w:lsdException w:name="Table List 5"/>
+            <w:lsdException w:name="Table List 6"/>
+            <w:lsdException w:name="Table List 7"/>
+            <w:lsdException w:name="Table List 8"/>
+            <w:lsdException w:name="Table 3D effects 1"/>
+            <w:lsdException w:name="Table 3D effects 2"/>
+            <w:lsdException w:name="Table 3D effects 3"/>
+            <w:lsdException w:name="Table Contemporary"/>
+            <w:lsdException w:name="Table Elegant"/>
+            <w:lsdException w:name="Table Professional"/>
+            <w:lsdException w:name="Table Subtle 1"/>
+            <w:lsdException w:name="Table Subtle 2"/>
+            <w:lsdException w:name="Table Web 1"/>
+            <w:lsdException w:name="Table Web 2"/>
+            <w:lsdException w:name="Table Web 3"/>
+            <w:lsdException w:name="Table Grid"/>
+            <w:lsdException w:name="Table Theme"/>
+            <w:lsdException w:name="Placeholder Text"/>
+            <w:lsdException w:name="No Spacing"/>
+            <w:lsdException w:name="Light Shading"/>
+            <w:lsdException w:name="Light List"/>
+            <w:lsdException w:name="Light Grid"/>
+            <w:lsdException w:name="Medium Shading 1"/>
+            <w:lsdException w:name="Medium Shading 2"/>
+            <w:lsdException w:name="Medium List 1"/>
+            <w:lsdException w:name="Medium List 2"/>
+            <w:lsdException w:name="Medium Grid 1"/>
+            <w:lsdException w:name="Medium Grid 2"/>
+            <w:lsdException w:name="Medium Grid 3"/>
+            <w:lsdException w:name="Dark List"/>
+            <w:lsdException w:name="Colorful Shading"/>
+            <w:lsdException w:name="Colorful List"/>
+            <w:lsdException w:name="Colorful Grid"/>
+            <w:lsdException w:name="Light Shading Accent 1"/>
+            <w:lsdException w:name="Light List Accent 1"/>
+            <w:lsdException w:name="Light Grid Accent 1"/>
+            <w:lsdException w:name="Medium Shading 1 Accent 1"/>
+            <w:lsdException w:name="Medium Shading 2 Accent 1"/>
+            <w:lsdException w:name="Medium List 1 Accent 1"/>
+            <w:lsdException w:name="Revision"/>
+            <w:lsdException w:name="List Paragraph"/>
+            <w:lsdException w:name="Quote"/>
+            <w:lsdException w:name="Intense Quote"/>
+            <w:lsdException w:name="Medium List 2 Accent 1"/>
+            <w:lsdException w:name="Medium Grid 1 Accent 1"/>
+            <w:lsdException w:name="Medium Grid 2 Accent 1"/>
+            <w:lsdException w:name="Medium Grid 3 Accent 1"/>
+            <w:lsdException w:name="Dark List Accent 1"/>
+            <w:lsdException w:name="Colorful Shading Accent 1"/>
+            <w:lsdException w:name="Colorful List Accent 1"/>
+            <w:lsdException w:name="Colorful Grid Accent 1"/>
+            <w:lsdException w:name="Light Shading Accent 2"/>
+            <w:lsdException w:name="Light List Accent 2"/>
+            <w:lsdException w:name="Light Grid Accent 2"/>
+            <w:lsdException w:name="Medium Shading 1 Accent 2"/>
+            <w:lsdException w:name="Medium Shading 2 Accent 2"/>
+            <w:lsdException w:name="Medium List 1 Accent 2"/>
+            <w:lsdException w:name="Medium List 2 Accent 2"/>
+            <w:lsdException w:name="Medium Grid 1 Accent 2"/>
+            <w:lsdException w:name="Medium Grid 2 Accent 2"/>
+            <w:lsdException w:name="Medium Grid 3 Accent 2"/>
+            <w:lsdException w:name="Dark List Accent 2"/>
+            <w:lsdException w:name="Colorful Shading Accent 2"/>
+            <w:lsdException w:name="Colorful List Accent 2"/>
+            <w:lsdException w:name="Colorful Grid Accent 2"/>
+            <w:lsdException w:name="Light Shading Accent 3"/>
+            <w:lsdException w:name="Light List Accent 3"/>
+            <w:lsdException w:name="Light Grid Accent 3"/>
+            <w:lsdException w:name="Medium Shading 1 Accent 3"/>
+            <w:lsdException w:name="Medium Shading 2 Accent 3"/>
+            <w:lsdException w:name="Medium List 1 Accent 3"/>
+            <w:lsdException w:name="Medium List 2 Accent 3"/>
+            <w:lsdException w:name="Medium Grid 1 Accent 3"/>
+            <w:lsdException w:name="Medium Grid 2 Accent 3"/>
+            <w:lsdException w:name="Medium Grid 3 Accent 3"/>
+            <w:lsdException w:name="Dark List Accent 3"/>
+            <w:lsdException w:name="Colorful Shading Accent 3"/>
+            <w:lsdException w:name="Colorful List Accent 3"/>
+            <w:lsdException w:name="Colorful Grid Accent 3"/>
+            <w:lsdException w:name="Light Shading Accent 4"/>
+            <w:lsdException w:name="Light List Accent 4"/>
+            <w:lsdException w:name="Light Grid Accent 4"/>
+            <w:lsdException w:name="Medium Shading 1 Accent 4"/>
+            <w:lsdException w:name="Medium Shading 2 Accent 4"/>
+            <w:lsdException w:name="Medium List 1 Accent 4"/>
+            <w:lsdException w:name="Medium List 2 Accent 4"/>
+            <w:lsdException w:name="Medium Grid 1 Accent 4"/>
+            <w:lsdException w:name="Medium Grid 2 Accent 4"/>
+            <w:lsdException w:name="Medium Grid 3 Accent 4"/>
+            <w:lsdException w:name="Dark List Accent 4"/>
+            <w:lsdException w:name="Colorful Shading Accent 4"/>
+            <w:lsdException w:name="Colorful List Accent 4"/>
+            <w:lsdException w:name="Colorful Grid Accent 4"/>
+            <w:lsdException w:name="Light Shading Accent 5"/>
+            <w:lsdException w:name="Light List Accent 5"/>
+            <w:lsdException w:name="Light Grid Accent 5"/>
+            <w:lsdException w:name="Medium Shading 1 Accent 5"/>
+            <w:lsdException w:name="Medium Shading 2 Accent 5"/>
+            <w:lsdException w:name="Medium List 1 Accent 5"/>
+            <w:lsdException w:name="Medium List 2 Accent 5"/>
+            <w:lsdException w:name="Medium Grid 1 Accent 5"/>
+            <w:lsdException w:name="Medium Grid 2 Accent 5"/>
+            <w:lsdException w:name="Medium Grid 3 Accent 5"/>
+            <w:lsdException w:name="Dark List Accent 5"/>
+            <w:lsdException w:name="Colorful Shading Accent 5"/>
+            <w:lsdException w:name="Colorful List Accent 5"/>
+            <w:lsdException w:name="Colorful Grid Accent 5"/>
+            <w:lsdException w:name="Light Shading Accent 6"/>
+            <w:lsdException w:name="Light List Accent 6"/>
+            <w:lsdException w:name="Light Grid Accent 6"/>
+            <w:lsdException w:name="Medium Shading 1 Accent 6"/>
+            <w:lsdException w:name="Medium Shading 2 Accent 6"/>
+            <w:lsdException w:name="Medium List 1 Accent 6"/>
+            <w:lsdException w:name="Medium List 2 Accent 6"/>
+            <w:lsdException w:name="Medium Grid 1 Accent 6"/>
+            <w:lsdException w:name="Medium Grid 2 Accent 6"/>
+            <w:lsdException w:name="Medium Grid 3 Accent 6"/>
+            <w:lsdException w:name="Dark List Accent 6"/>
+            <w:lsdException w:name="Colorful Shading Accent 6"/>
+            <w:lsdException w:name="Colorful List Accent 6"/>
+            <w:lsdException w:name="Colorful Grid Accent 6"/>
+            <w:lsdException w:name="Subtle Emphasis"/>
+            <w:lsdException w:name="Intense Emphasis"/>
+            <w:lsdException w:name="Subtle Reference"/>
+            <w:lsdException w:name="Intense Reference"/>
+            <w:lsdException w:name="Book Title"/>
+            <w:lsdException w:name="Bibliography"/>
+            <w:lsdException w:name="TOC Heading"/>
+            <w:lsdException w:name="Plain Table 1"/>
+            <w:lsdException w:name="Plain Table 2"/>
+            <w:lsdException w:name="Plain Table 3"/>
+            <w:lsdException w:name="Plain Table 4"/>
+            <w:lsdException w:name="Plain Table 5"/>
+            <w:lsdException w:name="Grid Table Light"/>
+            <w:lsdException w:name="Grid Table 1 Light"/>
+            <w:lsdException w:name="Grid Table 2"/>
+            <w:lsdException w:name="Grid Table 3"/>
+            <w:lsdException w:name="Grid Table 4"/>
+            <w:lsdException w:name="Grid Table 5 Dark"/>
+            <w:lsdException w:name="Grid Table 6 Colorful"/>
+            <w:lsdException w:name="Grid Table 7 Colorful"/>
+            <w:lsdException w:name="Grid Table 1 Light Accent 1"/>
+            <w:lsdException w:name="Grid Table 2 Accent 1"/>
+            <w:lsdException w:name="Grid Table 3 Accent 1"/>
+            <w:lsdException w:name="Grid Table 4 Accent 1"/>
+            <w:lsdException w:name="Grid Table 5 Dark Accent 1"/>
+            <w:lsdException w:name="Grid Table 6 Colorful Accent 1"/>
+            <w:lsdException w:name="Grid Table 7 Colorful Accent 1"/>
+            <w:lsdException w:name="Grid Table 1 Light Accent 2"/>
+            <w:lsdException w:name="Grid Table 2 Accent 2"/>
+            <w:lsdException w:name="Grid Table 3 Accent 2"/>
+            <w:lsdException w:name="Grid Table 4 Accent 2"/>
+            <w:lsdException w:name="Grid Table 5 Dark Accent 2"/>
+            <w:lsdException w:name="Grid Table 6 Colorful Accent 2"/>
+            <w:lsdException w:name="Grid Table 7 Colorful Accent 2"/>
+            <w:lsdException w:name="Grid Table 1 Light Accent 3"/>
+            <w:lsdException w:name="Grid Table 2 Accent 3"/>
+            <w:lsdException w:name="Grid Table 3 Accent 3"/>
+            <w:lsdException w:name="Grid Table 4 Accent 3"/>
+            <w:lsdException w:name="Grid Table 5 Dark Accent 3"/>
+            <w:lsdException w:name="Grid Table 6 Colorful Accent 3"/>
+            <w:lsdException w:name="Grid Table 7 Colorful Accent 3"/>
+            <w:lsdException w:name="Grid Table 1 Light Accent 4"/>
+            <w:lsdException w:name="Grid Table 2 Accent 4"/>
+            <w:lsdException w:name="Grid Table 3 Accent 4"/>
+            <w:lsdException w:name="Grid Table 4 Accent 4"/>
+            <w:lsdException w:name="Grid Table 5 Dark Accent 4"/>
+            <w:lsdException w:name="Grid Table 6 Colorful Accent 4"/>
+            <w:lsdException w:name="Grid Table 7 Colorful Accent 4"/>
+            <w:lsdException w:name="Grid Table 1 Light Accent 5"/>
+            <w:lsdException w:name="Grid Table 2 Accent 5"/>
+            <w:lsdException w:name="Grid Table 3 Accent 5"/>
+            <w:lsdException w:name="Grid Table 4 Accent 5"/>
+            <w:lsdException w:name="Grid Table 5 Dark Accent 5"/>
+            <w:lsdException w:name="Grid Table 6 Colorful Accent 5"/>
+            <w:lsdException w:name="Grid Table 7 Colorful Accent 5"/>
+            <w:lsdException w:name="Grid Table 1 Light Accent 6"/>
+            <w:lsdException w:name="Grid Table 2 Accent 6"/>
+            <w:lsdException w:name="Grid Table 3 Accent 6"/>
+            <w:lsdException w:name="Grid Table 4 Accent 6"/>
+            <w:lsdException w:name="Grid Table 5 Dark Accent 6"/>
+            <w:lsdException w:name="Grid Table 6 Colorful Accent 6"/>
+            <w:lsdException w:name="Grid Table 7 Colorful Accent 6"/>
+            <w:lsdException w:name="List Table 1 Light"/>
+            <w:lsdException w:name="List Table 2"/>
+            <w:lsdException w:name="List Table 3"/>
+            <w:lsdException w:name="List Table 4"/>
+            <w:lsdException w:name="List Table 5 Dark"/>
+            <w:lsdException w:name="List Table 6 Colorful"/>
+            <w:lsdException w:name="List Table 7 Colorful"/>
+            <w:lsdException w:name="List Table 1 Light Accent 1"/>
+            <w:lsdException w:name="List Table 2 Accent 1"/>
+            <w:lsdException w:name="List Table 3 Accent 1"/>
+            <w:lsdException w:name="List Table 4 Accent 1"/>
+            <w:lsdException w:name="List Table 5 Dark Accent 1"/>
+            <w:lsdException w:name="List Table 6 Colorful Accent 1"/>
+            <w:lsdException w:name="List Table 7 Colorful Accent 1"/>
+            <w:lsdException w:name="List Table 1 Light Accent 2"/>
+            <w:lsdException w:name="List Table 2 Accent 2"/>
+            <w:lsdException w:name="List Table 3 Accent 2"/>
+            <w:lsdException w:name="List Table 4 Accent 2"/>
+            <w:lsdException w:name="List Table 5 Dark Accent 2"/>
+            <w:lsdException w:name="List Table 6 Colorful Accent 2"/>
+            <w:lsdException w:name="List Table 7 Colorful Accent 2"/>
+            <w:lsdException w:name="List Table 1 Light Accent 3"/>
+            <w:lsdException w:name="List Table 2 Accent 3"/>
+            <w:lsdException w:name="List Table 3 Accent 3"/>
+            <w:lsdException w:name="List Table 4 Accent 3"/>
+            <w:lsdException w:name="List Table 5 Dark Accent 3"/>
+            <w:lsdException w:name="List Table 6 Colorful Accent 3"/>
+            <w:lsdException w:name="List Table 7 Colorful Accent 3"/>
+            <w:lsdException w:name="List Table 1 Light Accent 4"/>
+            <w:lsdException w:name="List Table 2 Accent 4"/>
+            <w:lsdException w:name="List Table 3 Accent 4"/>
+            <w:lsdException w:name="List Table 4 Accent 4"/>
+            <w:lsdException w:name="List Table 5 Dark Accent 4"/>
+            <w:lsdException w:name="List Table 6 Colorful Accent 4"/>
+            <w:lsdException w:name="List Table 7 Colorful Accent 4"/>
+            <w:lsdException w:name="List Table 1 Light Accent 5"/>
+            <w:lsdException w:name="List Table 2 Accent 5"/>
+            <w:lsdException w:name="List Table 3 Accent 5"/>
+            <w:lsdException w:name="List Table 4 Accent 5"/>
+            <w:lsdException w:name="List Table 5 Dark Accent 5"/>
+            <w:lsdException w:name="List Table 6 Colorful Accent 5"/>
+            <w:lsdException w:name="List Table 7 Colorful Accent 5"/>
+            <w:lsdException w:name="List Table 1 Light Accent 6"/>
+            <w:lsdException w:name="List Table 2 Accent 6"/>
+            <w:lsdException w:name="List Table 3 Accent 6"/>
+            <w:lsdException w:name="List Table 4 Accent 6"/>
+            <w:lsdException w:name="List Table 5 Dark Accent 6"/>
+            <w:lsdException w:name="List Table 6 Colorful Accent 6"/>
+            <w:lsdException w:name="List Table 7 Colorful Accent 6"/>
+        </w:latentStyles>
+        <w:style w:type="paragraph" w:default="on" w:styleId="a">
+            <w:name w:val="Normal"/>
+            <wx:uiName wx:val="正文"/>
+            <w:pPr>
+                <w:widowControl w:val="off"/>
+                <w:jc w:val="both"/>
+            </w:pPr>
+            <w:rPr>
+                <w:rFonts w:ascii="Calibri" w:h-ansi="Calibri"/>
+                <wx:font wx:val="Calibri"/>
+                <w:kern w:val="2"/>
+                <w:sz w:val="21"/>
+                <w:sz-cs w:val="24"/>
+                <w:lang w:val="EN-US" w:fareast="ZH-CN" w:bidi="AR-SA"/>
+            </w:rPr>
+        </w:style>
+        <w:style w:type="character" w:default="on" w:styleId="a0">
+            <w:name w:val="Default Paragraph Font"/>
+            <wx:uiName wx:val="默认段落字体"/>
+        </w:style>
+        <w:style w:type="table" w:default="on" w:styleId="a1">
+            <w:name w:val="Normal Table"/>
+            <wx:uiName wx:val="普通表格"/>
+            <w:rPr>
+                <wx:font wx:val="Times New Roman"/>
+                <w:lang w:val="EN-US" w:fareast="ZH-CN" w:bidi="AR-SA"/>
+            </w:rPr>
+            <w:tblPr>
+                <w:tblInd w:w="0" w:type="dxa"/>
+                <w:tblCellMar>
+                    <w:top w:w="0" w:type="dxa"/>
+                    <w:left w:w="108" w:type="dxa"/>
+                    <w:bottom w:w="0" w:type="dxa"/>
+                    <w:right w:w="108" w:type="dxa"/>
+                </w:tblCellMar>
+            </w:tblPr>
+        </w:style>
+        <w:style w:type="list" w:default="on" w:styleId="a2">
+            <w:name w:val="No List"/>
+            <wx:uiName wx:val="无列表"/>
+        </w:style>
+        <w:style w:type="paragraph" w:styleId="a3">
+            <w:name w:val="Normal (Web)"/>
+            <wx:uiName wx:val="普通(网站)"/>
+            <w:basedOn w:val="a"/>
+            <w:pPr>
+                <w:spacing w:before="100" w:before-autospacing="on" w:after="100" w:after-autospacing="on"/>
+                <w:jc w:val="left"/>
+            </w:pPr>
+            <w:rPr>
+                <wx:font wx:val="Calibri"/>
+                <w:kern w:val="0"/>
+                <w:sz w:val="24"/>
+            </w:rPr>
+        </w:style>
+        <w:style w:type="character" w:styleId="a4">
+            <w:name w:val="Strong"/>
+            <wx:uiName wx:val="要点"/>
+            <w:rPr>
+                <w:b/>
+            </w:rPr>
+        </w:style>
+    </w:styles>
+    <w:shapeDefaults>
+        <o:shapedefaults v:ext="edit" spidmax="1026"/>
+        <o:shapelayout v:ext="edit">
+            <o:idmap v:ext="edit" data="1"/>
+        </o:shapelayout>
+    </w:shapeDefaults>
+    <w:docPr>
+        <w:view w:val="print"/>
+        <w:zoom w:percent="150"/>
+        <w:proofState w:spelling="clean" w:grammar="clean"/>
+        <w:defaultTabStop w:val="420"/>
+        <w:drawingGridVerticalSpacing w:val="156"/>
+        <w:characterSpacingControl w:val="CompressPunctuation"/>
+        <w:validateAgainstSchema/>
+        <w:saveInvalidXML w:val="off"/>
+        <w:ignoreMixedContent w:val="off"/>
+        <w:alwaysShowPlaceholderText w:val="off"/>
+        <w:compat>
+            <w:spaceForUL/>
+            <w:balanceSingleByteDoubleByteWidth/>
+            <w:doNotLeaveBackslashAlone/>
+            <w:ulTrailSpace/>
+            <w:doNotExpandShiftReturn/>
+            <w:adjustLineHeightInTable/>
+            <w:breakWrappedTables/>
+            <w:snapToGridInCell/>
+            <w:dontGrowAutofit/>
+            <w:useFELayout/>
+        </w:compat>
+        <wsp:rsids>
+            <wsp:rsidRoot wsp:val="7FDE3C43"/>
+            <wsp:rsid wsp:val="00834126"/>
+            <wsp:rsid wsp:val="009F1E8A"/>
+            <wsp:rsid wsp:val="31784B37"/>
+            <wsp:rsid wsp:val="7FDE3C43"/>
+            <wsp:rsid wsp:val="FFAE8C18"/>
+        </wsp:rsids>
+    </w:docPr>
+    <w:body>
+        <wx:sect>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:jc w:val="center"/>
+                    <w:rPr>
+                        <w:b/>
+                        <w:b-cs/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:b/>
+                        <w:b-cs/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>测评报告</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="009F1E8A">
+                <w:pPr>
+                    <w:jc w:val="center"/>
+                    <w:rPr>
+                        <w:b/>
+                        <w:b-cs/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>本测验按焦虑情绪所指向的对象和由焦虑情绪而产生的行为这两个方面进行测定。全量表由</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>8</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>个内容量表构成,把这</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>8</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>个内容量表的结果综合起来得到全量表分数,全量表分数从整体上表示焦虑程度强不强、焦虑范围广不广,分数越高,表明学生的焦虑程度越强:而</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>8</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>个内容量表的结果可诊断出个人的焦虑中,哪个方面问题较大,主要包括;学习焦虑、对人焦虑、孤独倾向、自责倾向、过敏倾向、身体症状、恐怖倾向、冲动倾向。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="009F1E8A">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>这是按照焦虑反应的表现方式和场合来分类的:</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>1</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>.学习焦虑。近年来,随着升</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>学考试和就业考试的难度增加,学生和父母都很关心学习。每天把学习挂在心上,担心被老师提问,上课时一直不放心,一有考试就怕得坏分数而无法安心学习,这些就是学习焦虑的表现。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>2</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>.对人焦虑。青少年时期,由于自我过强,不会与人交往,很怕生人,所以,与他人讲话时,担心会不会脸红,受到教师或父母责备时,一直放在心上,并担心朋友也会背地里说自己的坏话,因而经常感到焦躁。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>3</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>.孤独倾向。被父母疏远的儿童,娇生惯养在家称大王在外懦弱的儿童,腼腆抑郁的青少年,都经常因孤独而烦恼。这类儿童和青少年,和大家一起做某件事时,由于技术差</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>、经验不足,经常感到失败的威胁。因此,感到和大家一起玩还不如一个人玩。这样,就越来越不会和大家一起相处。当别人高兴地相互谈话时,就有一种我不仅不能参加,而且还被人家排挤的心情。这样恶性循环下去,最后只要是人们聚集在一起,就会感到恐怖。这样,既想加入到伙伴当中去,又想避免在伙伴们面前出现失败,因而产生不安倾向。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>4</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>.自责倾向。像打篮球、排球那样,如果自己的队输了,有些儿童和青少年就认为是因为自己加入了才输的,而一直放在心上。在受到责备、打架之后或成绩不好时,常会认为是自己不好。这样,就对自己所做的事失去了信心</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>。经常担心,阻碍自己的行动。当发生不如意的事情时,不认为是他人的问题,而经常认为是自己不好,对自己所做的事抱有恐惧倾向,称为自责倾向。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>5</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>.过敏倾向。感受性太强,就连小事都放心不下,行动受到严重损害的倾向,称为过敏倾问。对周围的噪声特别敏感,担心家属中有人会受伤,生病或死亡,决定事情不果断,即使做了好事也感到烦恼。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>6</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>.身体症状。当焦虑急剧袭来时,感到将要死去,呼吸感到困难,心跳加快,感到喘不过气,出虚汗,头晕、知觉异常。如果焦虑是慢慢产生的,就会心神不定,心跳异常,脉搏混乱,想呕吐,食欲不振,肚子痛或失眠</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>等,这种身体上的症状是比较明显的,所以,过去也曾用于焦虑的诊断。本测验除了这种身体症状外,还包括身体某个部分是否有毛病,身体某个部分是否比别人难看,对身体缺陷不放心等,这些都能用身体症状的内容量表来测定。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>7</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>.恐怖倾向。恐怖和焦虑通常是区别开来使用的。这里所说的是,客观上一点不需要恐惧,主观上也不知道为什么要恐惧,然而却抱有一种恐惧心理,这称为恐惧倾向。例如,只要登上高处就怕得不能站立,无缘无故地恐惧黑暗,晚上开灯睡觉等,都是用来测定这种倾向的。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>8</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>.冲动倾向。有时无缘无故地想大声哭、大声叫,或者一看到想要</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>的东西,就一定要拿到手,毫无理由地想到远处去,或想死,这些称为冲动倾向。这种想干危险的事或愚蠢的事的观念,是因为内部具有焦虑倾向而产生的。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="009F1E8A">
+                <w:pPr>
+                    <w:rPr>
+                        <w:b/>
+                        <w:b-cs/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:jc w:val="center"/>
+                    <w:rPr>
+                        <w:b/>
+                        <w:b-cs/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:b/>
+                        <w:b-cs/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>测评结果及辅导建议</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="009F1E8A">
+                <w:pPr>
+                    <w:rPr>
+                        <w:b/>
+                        <w:b-cs/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+            </w:p>
+			<!-- 学习焦虑= -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="009F1E8A">
+                <w:pPr>
+                    <w:rPr>
+                        <w:b/>
+                        <w:b-cs/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:b/>
+                        <w:b-cs/>
+                        <w:color w:val="${学习焦虑}"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:b/>
+                        <w:b-cs/>
+                        <w:color w:val="${学习焦虑}"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>学习焦虑</w:t>
+                </w:r>
+            </w:p>
+            <!-- 学习焦虑=-3 -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>结果解释:学习焦虑低</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>在学习过程中不会受到困扰</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>能正确的对待考试成绩。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t></w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>辅导建议:请保持轻松、良好的心态面对考试。请注意:当本项得分很低,但被试成绩也很低时,请查阅被试在本量表中,第</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>9</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>题的选项:你是否希望考试能顺利通过。</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>   A.</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>是</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t></w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>  B.</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>不是</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t></w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>若选</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>B</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,可能表示被试自暴自弃,或存在掩饰和胡乱答题的可能。此时需建议被试找到生活、学习的目标,找到自己擅长的领域,可给予适当的压力,转换为动力。</w:t>
+                </w:r>
+            </w:p>
+			<!-- 学习焦虑=8- -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>结果解释:学习焦虑偏高</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>对考试有恐惧心理</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>不能安心的专注于学习</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>十分在乎考试的分数。因此不能很好的应对学习和考试压力。学生出现这种情况主要是因为目前学校普遍存在应试教育的大背景</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>学生的考试成绩常被作为评价学生和学校优劣与否的依据。来自社会的升学压力</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>父母的高期望值</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>严厉的管教</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>让学生对自己的学习成绩表现出过度的焦虑。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t></w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>辅导建议:</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>(1)</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t></w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>首先分析自己出现学习焦虑的原因</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>是否与具体的时间、地点或场合有关</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>自己焦虑时的表现是什么</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>对自己的焦虑程度有所了解。通过对自己焦虑问题的觉察</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>能够及时、有意识的告诉自己暂时停下来</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>理智的分析自己所在的环境和所处的情绪状态。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>(2) </w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>教给被试放松训练的方法。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>(3) </w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>尝试努力让自己放轻松</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>通过体育运动、与他人讨论自己的焦虑感受,也可学会暂时转移注意力的方法。</w:t>
+                </w:r>
+            </w:p>
+			<!-- 学习焦虑=4-7 -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>结果解释:在学习焦虑方面的反应与常人一致</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>没有特别的不适应。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="009F1E8A">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>辅导建议:保持以良好的心态面对考试,感受到轻微的紧张有利于考试的发挥。</w:t>
+                </w:r>
+            </w:p>
+			<!-- 学习焦虑 -->
+			<!-- 对人焦虑 -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="009F1E8A">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+            </w:p>
+			
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:b/>
+                        <w:b-cs/>
+                        <w:color w:val="${对人焦虑}"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:b/>
+                        <w:b-cs/>
+                        <w:color w:val="${对人焦虑}"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>对人焦虑</w:t>
+                </w:r>
+            </w:p>
+			<!-- 对人焦虑=-3 -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>结果解释:大方</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>容易结交朋友。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t></w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>辅导建议:被试大方,容易结交朋友,不会过度在意别人的看法,这点很好,值得赞扬。还有,当被试确实做错事时,容易保持良好的心态,这点很好,但是在保持良好心态的同时,需要注意认真反思,减少下次做出同样错误的几率。</w:t>
+                </w:r>
+            </w:p>
+			<!-- 对人焦虑=8- -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>结果解释:过分注重自己的形象</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>害怕与人交往</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>退缩。对人焦虑通常表现为过度关注自我</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>一切以自我为中心</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>怕见生人</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>在众人面前感到不安</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>不会与人交往</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>难以与同学、伙伴合作。独生子女</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>享受父母的娇惯和迁就</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>养成较强的自我中心意识</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>在人际交往方面的能力较</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>弱</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>易产生对人焦虑的倾向;有的学生从小受到父母的严厉管教</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>形成了看大人脸色行事的软弱性格</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>这也是造成学生对人焦虑的另一原因。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t></w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>辅导建议:</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>(1)</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>首先希望受测者能够敞开心扉</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>和希望交往的朋友坦然而真诚的交流</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>不需要过于担心别人可能对自己做出的评价</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>完全可以自然、大方的呈现出自己的特点。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>(2)</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>其次要相信自己的交往能力</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>相信自己可以和他人相处融洽。自信是交往开始的基础。有的时候</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>不是自己没有吸引对方的能力</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>而是在交往之前</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>就打了退堂鼓</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>没有勇气和人交往。那么现在</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>不要怀疑自己的能力</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>至少在与人交流之前</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>不要左思右想</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>而是怀着自信</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>勇敢而友善的同他人打交道</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>朋友们会越来越多的。不要因为不自信</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>放弃了与人交流的机会。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>(3)</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>应当尝试多学习一些人际交往的技巧</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>提高自己人际交往的能力。通过观察你身边社交能力强的同伴的做法</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>比如如何找到双方均感兴趣的话题、如何倾听等等</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>必定有助于进一步改善受测者的社交</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>状况</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>降低对人焦虑。</w:t>
+                </w:r>
+            </w:p>
+			<!-- 对人焦虑=4-7 -->
+			<w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>结果解释:</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>被试具备正常的人际交往能力</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>但并不十分主动。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t></w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>辅导建议:继续保持人际交往的能力。可以在自己感觉安全的时候,或者在讨论自己擅长话题的时候,大胆的在众人面前发言,渐渐培养自信心。另外,可以在意识到自己过分在意别人的看法时,尝试</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>“</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>我行我素</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>”</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>一下,再看看别人的反应如何。</w:t>
+                </w:r>
+            </w:p>
+			<!-- 对人焦虑= -->
+			<!-- 孤独倾向= -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="009F1E8A">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:b/>
+                        <w:b-cs/>
+                        <w:color w:val="${孤独倾向}"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:b/>
+                        <w:b-cs/>
+                        <w:color w:val="${孤独倾向}"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>孤独倾向</w:t>
+                </w:r>
+            </w:p>
+			<!-- 孤独倾向=-3 -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>结果解释:爱好社交</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>喜欢寻求刺激</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>喜欢与他人在一起。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="009F1E8A">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>辅导建议:被试爱好社交</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>喜欢寻求刺激</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>喜欢与他人在一起。这点很好,值得赞扬。需要注意的是,提高选择良师益友的甄别能力。</w:t>
+                </w:r>
+            </w:p>
+			<!-- 孤独倾向=8- -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>结果解释:孤独倾向偏高</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>孤独、抑郁、不善于与人交往、自我封闭</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>喜欢独来独往。孤独倾向主要是与对周围环境的熟悉与认同</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>自身的适应性强否有关。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t></w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>辅导建议:人具有社会属性</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>人的正常发展离不开周围的环境</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>如果过于离群或是持续保持孤独状态</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>必然会受到周围人的排斥</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>进而影响到正常的个性发展。受测者可以分析一下自己喜欢孤独的原因。孤独给自己带来的好处和坏处有哪些?自己孤独时的情绪感受是什么?如果是因为不能适应环境</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>不能被他人接纳</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>而自己还是希望与人交往</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>那就最好接受心理老师或专家的指导</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>及时改善这种情况。如果不是</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>可以具体分析自己孤独的原因</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>在适当的范围做些调整</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>使自己能与他人保持正常的交往。</w:t>
+                </w:r>
+            </w:p>
+			<!-- 孤独倾向=4-7 -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>结果解释:能与他人保持正常的交往。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t></w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>辅导建议:能</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>正常交往,继续保持。在舒服的环境下,或者做在自己较擅长的事情时,可以再更主动一些。表现自己,适当增加一些和陌生人的交流。寻找一两个知心朋友,长期稳定的交往。</w:t>
+                </w:r>
+            </w:p>
+			<!-- 孤独倾向= -->
+			<!-- 自责倾向= -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="009F1E8A">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:b/>
+                        <w:b-cs/>
+                        <w:color w:val="${自责倾向}"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:b/>
+                        <w:b-cs/>
+                        <w:color w:val="${自责倾向}"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>自责倾向</w:t>
+                </w:r>
+            </w:p>
+			<!-- 自责倾向=-3 -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>结果解释:自信</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>能正确看待失败。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="009F1E8A">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>辅导建议:被试自信,能正确看待成功与失败,这点非常值得赞扬。此外,过分的自信会变成自大,需要了解自己擅长的领域在哪里,能力高低。还有,被试可能属于外归因者,这样的情况同样需要自省,如果确实是自己的问题,可以及时修正,以免一直认为失败是外界原因。</w:t>
+                </w:r>
+            </w:p>
+			<!-- 自责倾向=8- -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>结果解释:自卑</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>常怀疑自己的能力</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>常将失败归咎于自己。常常会陷入强烈自责不良情绪中</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>从而无法将精力完全投入到学习和娱乐中去。自责倾向的根源来自于对失去别人关爱的不安。独生子女对别人的关爱有着过强的渴求</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>存在很强的依赖心理</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>容易形成自责倾向</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>如果教师、家长对儿童过分严厉</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>而学生又不能处处满足他们的要求</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>自责倾向就更容易出现了。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t></w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>辅导建议:</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>(1) </w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>遇到问题首先自省,这是很多人做不到的,这样的习惯应该说是挺好的。但,如果习惯性把所有的事情都归咎为自己的错误就会有很大的问题。长此以往对身心健康非常不利。一个人</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>做事情不可能一直犯错,不可能做所有事情都是自己的错误。要学会对失败和挫折进行正确的归因</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>不要盲目的责怪自己。在任何事情的成败当中都有内部自身和外部环境两个方面的因素</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>自身的因素中还存在努力和能力两个方面。因此要学会全面的分析和理解失败、挫折产生的原因</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>从而调整自己的下一步行动。如果盲目的将错误的原因归结到个人方面</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>会极大的影响自己的信心和努力的愿望</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>有百害而无一益。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>(2)</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>将自己的想法告诉周围熟悉、信赖的人</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>使自己的一些不合理想法及时得到纠正。如果有条件,建议被试做有针对性、系统的心理辅导、心理咨询。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>(3</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>) </w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>此外,学会放松</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>合理宣泄自己的不良情绪</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>让自己保持愉快的心境。通过体育锻炼、听音乐</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>让自己的身心得到放松</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>出门旅游</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>使自己心情舒畅。</w:t>
+                </w:r>
+            </w:p>
+			<!-- 自责倾向=4-7 -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>结果解释:在面对挫折和困难时</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>与常人表现一致</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>没有明显个体差异。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="009F1E8A">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>辅导建议:被试基本能正确面对挫折和困难,这点非常值得赞扬。被试可以适当的进行耐挫力训练,提高耐挫力和自信。此外,当出现失败的事情时,需要及时自省,以积极的态度面对失败和问题,客观分析原因,并将可控的因素做到最好。</w:t>
+                </w:r>
+            </w:p>
+			<!-- 自责倾向= -->
+			<!-- 过敏倾向= -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="009F1E8A">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:b/>
+                        <w:b-cs/>
+                        <w:color w:val="${过敏倾向}"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:b/>
+                        <w:b-cs/>
+                        <w:color w:val="${过敏倾向}"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>过敏倾向</w:t>
+                </w:r>
+            </w:p>
+			<!-- 过敏倾向=-3 -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>结果解释:敏感性较低</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>能较好的处理日常事务。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t></w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>辅导建议:建议被试继续保持良好的心态,积极面对生活。</w:t>
+                </w:r>
+            </w:p>
+			<!-- 过敏倾向=8- -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>结果解释:过于敏感</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>容易为一些小事而烦恼。表现为爱哭、胆怯、爱担心、小心眼</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>这样的孩子可能长期处于不安、斥责的氛围中。有些父母对子女物质上处处满足</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>但是精神上对子女期望过高</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>鼓励不多</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>多是批评</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>这往往给孩子形成一定的压力</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>造成敏感焦虑。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="009F1E8A">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>辅导建议:</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>(1)</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>过于敏感的人</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>首先需要通过调整自己的心态加以克服</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>不要妄加推测别人对自己的评价</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>学会与人为善。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>(2)</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>其次要有适度的期望值</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>在做每一件事前</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>不要把目标、期望值定得过高</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>要把各种不利因素充分考虑</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>进去</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>留有一定的余地。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>(3)</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>心胸要宽广</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>遇事应乐观一些</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>大度一些</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>不能对任何事情都过于敏感</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>过分计较。</w:t>
+                </w:r>
+            </w:p>
+			<!-- 过敏倾向=4-7 -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>结果解释:属于中等水平</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>对日常事务一般不会过于敏感。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t></w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>辅导建议:</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>(1)</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>过于敏感的人</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>首先需要通过调整自己的心态加以克服</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>不要妄加推测别人对自己的评价</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>学会与人为善。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>(2)</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>其次要有适度的期望值</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>在做每一件事前</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>不要把目标、期望值定得过高</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>要把各种不利因素充分考虑进去</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>留有一定的余地。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>(3)</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>心胸要宽广</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>遇事应乐观一些</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>大度一些</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>不能对任何事情都过于敏感</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>过分计较。</w:t>
+                </w:r>
+            </w:p>
+			<!-- 过敏倾向= -->
+			<!-- 身体症状= -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="009F1E8A">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:b/>
+                        <w:b-cs/>
+                        <w:color w:val="${身体症状}"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:b/>
+                        <w:b-cs/>
+                        <w:color w:val="${身体症状}"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>身体症状</w:t>
+                </w:r>
+            </w:p>
+			<!-- 身体症状=-3 -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>结果解释:身体健康</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>基本没有异常表现。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t></w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>辅导建议:在最近的时期内身体状况很好,希望能够继续保持下去、善待自己的身体。由于身心关系密切,因此另一方面也说明受测者的心态积极健康,心绪平稳。因此被测试者也要注意维持自己的心理健康状态。</w:t>
+                </w:r>
+            </w:p>
+			<!-- 身体症状=8- -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>结果解释:在极度焦虑时</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>会出现呕吐失眠、头晕头痛等明显的身体症状。身体症状的原因大多是经常受父母打骂训斥、青春期发育及生理缺陷、情绪不稳、意志不坚</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>父母关心少、</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>管束多。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t></w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>辅导建议:</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>(1)</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>需要及时就诊</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>做全面的身体检查</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>找出到底是身体方面的原因还是心理问题导致的身体</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>症状</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>对症就医。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>(2)</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>如果是心理方面的问题</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>要找出症状的根源</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>并及时解决。有些受测者性格较内向</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>不太善于表达自己的想法和感受</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>或是害怕表露自己会让家长不开心</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>因此家长要创造轻松、温馨的家庭环境</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>让孩子能够说出自己的感受</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>而不是通过身体症状表现自己的问题。</w:t>
+                </w:r>
+            </w:p>
+			<!-- 身体症状=4-7 -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>结果解释:身体会有一些小问题</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>但不影响生活和学习。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="009F1E8A">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>辅导建议:</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>(</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>1</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>)需要定期做全面的身体检查,如果有问题,及时就医。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>(</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>2</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>)经常参加体育锻炼,有个好身体才是一切的基础。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>(</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>3</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>)保持良好的心情和心态,乐观的态度面对生活,心理健康,身体才会更健康。</w:t>
+                </w:r>
+            </w:p>
+			<!-- 身体症状= -->
+			<!-- 恐怖倾向= -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="009F1E8A">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+            </w:p>
+			<w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:b/>
+                        <w:b-cs/>
+                        <w:color w:val="${恐怖倾向}"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:b/>
+                        <w:b-cs/>
+                        <w:color w:val="${恐怖倾向}"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>恐怖倾向</w:t>
+                </w:r>
+            </w:p>
+			<!-- 恐怖倾向=-3 -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>结果解释:恐怖倾向较弱</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>处于这一水平的受测者胆量偏大</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>基本不会对日常生活当中的情景</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>如黑暗、高地、独自睡觉或者某种特殊事物等感到紧张害怕。被测试者的心理安全感较高</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>不容易产生恐怖感</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>情绪平稳。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="009F1E8A">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>辅导建议:继续保持。</w:t>
+                </w:r>
+            </w:p>
+			<!-- 恐怖倾向=8- -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>结果解释:具有一定的恐怖倾向</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>对某些日常事物</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>如黑暗、旷野、坟场等有较严重的恐怖感。被测试者的心理安全感较低</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>容易产生恐怖感。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="009F1E8A">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>辅导建议:</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>(1)</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>应减少对孩子的过分保护</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>要有意识地训练孩子独立生活的能力;对于孩子缺乏经历而产生的恐怖倾向</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>要鼓励孩子去大胆尝试</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>多参加集体活动</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>要不断拓展生活的空间</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>对于孩子勇敢的行为要给予充分的表扬与肯定;</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>(2)</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>对于因过去创伤经历所导致的恐怖的倾向</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>要进行心理分析</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>帮助孩子找到第一次恐怖的经历与事件</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>然后进行再分析、确立正确的应对态度与策略。鼓励孩子从创伤中走出来</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>并勇敢地面对以前所恐怖的对象</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>超越自我、战胜自我。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>(3)</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>对于因缺少关爱与自尊而导致的恐怖倾向的孩子</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>要给予足够的关爱与尊重。要多询问了解他们的需要</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>对于他们的优点要给予充分的表扬与肯定。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>(4)</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>若被试有恐惧难以消除,并且感到痛苦焦虑,可以尝试系统脱敏疗法。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t></w:t>
+                </w:r>
+            </w:p>
+			<!-- 恐怖倾向=4-7 -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t></w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>结果解释:并非对任何事情都无所畏惧</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>但这不影响学习和生活。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="009F1E8A">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRPr="00834126" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>辅导建议:针对个别感到恐惧的场景,分析原因,树立正确的心态,找出应对态度和方法。</w:t>
+                </w:r>
+                <w:r wsp:rsidRPr="00834126">
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:color w:val="000000"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>其他方面继续保持。</w:t>
+                </w:r>
+            </w:p>
+			<!-- 恐怖倾向= -->
+			<!-- 冲动倾向= -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="009F1E8A">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:b/>
+                        <w:b-cs/>
+                        <w:color w:val="${冲动倾向}"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:b/>
+                        <w:b-cs/>
+                        <w:color w:val="${冲动倾向}"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>冲动倾向</w:t>
+                </w:r>
+            </w:p>
+			<!-- 冲动倾向=-3 -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>结果解释:冲动倾向较低</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>说明有很好的自制力</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>凡事三思而后行。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t></w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>辅导建议:处于这一水平的受测者基本没有冲动性行为,做事沉稳,精确性高,总是把问题考虑周全以后再做反应,看中解决问题的质量,而不是仅仅追求速度。在情绪方面控制得比较好,善于合理解决自己的不良情绪,因此较少被不良情绪困扰。保持并进一步完善良好的自我评价,定立明确可行的、具体的学习与交往的目标。</w:t>
+                </w:r>
+            </w:p>
+			<!-- 冲动倾向=8- -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>结果解释:冲动倾向较高</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>情绪易摇摆不定</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>起伏大</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>易激惹和焦虑。缺乏对挫折的耐受力</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>遇到挫折时</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>难以控制愤怒的情绪</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>缺乏对问题的预见能力以及解决问题的能力</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>易大发脾气或爆发攻击性行为。甚至可能有自杀自残的想法,需要重点关注!</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="009F1E8A">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>辅导建议:本因子项的结果非常重要,若被试本项分数很高,说明问题是比较严重的。建议先了解被试哪些题目的选项是阳性的(选</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>“</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>是</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>”</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>的)。若被试有伤害自己或他人的倾向,需引起重视并及时心理干预,如</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>85</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>、</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>89</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>、</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>91</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>、</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>97</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>题。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t></w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>若被试是其他因素自制力较差,则:</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>(1)</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>设定清楚的界限:让孩子明确地</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>知道什么样的行为是被允许的</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>什么样的行为是不被允许的</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>出现冲动性行为将会受到什么样的惩罚。在设定清楚的界限后</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>老师和家长要做到</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>“</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>言必行</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>行必果</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>”,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>在任何时候都要传递正确的教育信息</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>绝不姑息</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>“</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>不良行为</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>”</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>的发生</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>对待良好的行为</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>要给予充分的肯定与表扬。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>(2)</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>指导孩子与人交往的方法:要指导孩子与人交往的策略</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>比如</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>指导孩子如何赞美他人</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>如何处理与他人的不同意见</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>如何有礼貌地忍让</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>如何与他人合作</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>如何才能赢得他人的帮助等等。还要帮助孩子掌握克服冲动的方法</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>树立对待冲动的正确态度.例如</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>学会转移注意、转换心情、控制</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>感情等;</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>(3)</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>帮助孩子建立良好的自我评价:要直率地与孩子交流</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>给予良好的评价</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>尤其是要看到他表现好的方面</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>明确告诉孩子:</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>“</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>你是一个好孩子</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>只要你改变一些不当的行为</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>你就完全可以成为一个受人欢迎的人。而且</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>只要你愿意</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>你就能够做得到</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>”</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>。同时</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>还要帮助孩子订立明确可行的、具体的学习与交往目标。</w:t>
+                </w:r>
+            </w:p>
+			<!-- 冲动倾向=4-7 -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>结果解释:冲动倾向属于中等水平</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>自制力不强。情绪易摇摆不定</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>对问题的预见和解决问题的能力一般</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>,</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>缺乏对待挫折的耐受力。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t></w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>辅导建议:受测者在长期内的表现还有待提高,在遇到了较大困难和挫折的时候,应善于在实际</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>行动中抑制冲动行为,提高自律能力。</w:t>
+                </w:r>
+            </w:p>
+			<!-- 冲动倾向= -->
+			
+			<!-- 效度量表= -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="009F1E8A">
+                <w:pPr>
+                    <w:rPr>
+                        <w:b/>
+                        <w:b-cs/>
+                        <w:color w:val="${效度量表}"/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:b/>
+                        <w:b-cs/>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:rFonts w:hint="fareast"/>
+                        <wx:font wx:val="宋体"/>
+                        <w:b/>
+                        <w:b-cs/>
+						<w:color w:val="${效度量表}"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>效度量表</w:t>
+                </w:r>
+            </w:p>
+            <!-- 效度量表=-7 -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>结果解释:被测试者基本上是按照自己的真实情况对问题进行回答的,因此测验比较准确可</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>靠。</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t></w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>辅导建议:效度量表的分数越低,说明被测试者在回答测试当中的问题时越认真、真实,测试结果也就可信。</w:t>
+                </w:r>
+            </w:p>
+			<!-- 效度量表=7- -->
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>结果解释:你在回答问题过程中有掩盖自己本身真实想法的行为,因此测量的结果有可能不符合你的实际情况!</w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t></w:t>
+                </w:r>
+            </w:p>
+            <w:p wsp:rsidR="009F1E8A" wsp:rsidRDefault="00834126">
+                <w:pPr>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                </w:pPr>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>辅导建议:测试者得分在</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>7</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>分及</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>7</w:t>
+                </w:r>
+                <w:r>
+                    <w:rPr>
+                        <wx:font wx:val="宋体"/>
+                        <w:lang/>
+                    </w:rPr>
+                    <w:t>分以上,测量结果可能与实际情况不符,分值越高,可信度越低。</w:t>
+                </w:r>
+            </w:p>
+			<!-- 效度量表= -->
+            <w:sectPr wsp:rsidR="009F1E8A">
+                <w:pgSz w:w="11906" w:h="16838"/>
+                <w:pgMar w:top="1440" w:right="1800" w:bottom="1440" w:left="1800" w:header="851" w:footer="992" w:gutter="0"/>
+                <w:cols w:space="425"/>
+                <w:docGrid w:type="lines" w:line-pitch="312"/>
+            </w:sectPr>
+        </wx:sect>
+    </w:body>
+</w:wordDocument>

+ 7156 - 0
ie-admin/src/main/resources/templates/multiply_way_report.xml

@@ -0,0 +1,7156 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<?mso-application progid="Word.Document"?>
+<pkg:package
+    xmlns:pkg="http://schemas.microsoft.com/office/2006/xmlPackage">
+    <pkg:part pkg:name="/_rels/.rels" pkg:contentType="application/vnd.openxmlformats-package.relationships+xml" pkg:padding="512">
+        <pkg:xmlData>
+            <Relationships
+                xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
+                <Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/extended-properties" Target="docProps/app.xml"/>
+                <Relationship Id="rId2" Type="http://schemas.openxmlformats.org/package/2006/relationships/metadata/core-properties" Target="docProps/core.xml"/>
+                <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/officeDocument" Target="word/document.xml"/>
+                <Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/custom-properties" Target="docProps/custom.xml"/>
+            </Relationships>
+        </pkg:xmlData>
+    </pkg:part>
+    <pkg:part pkg:name="/word/_rels/document.xml.rels" pkg:contentType="application/vnd.openxmlformats-package.relationships+xml" pkg:padding="256">
+        <pkg:xmlData>
+            <Relationships
+                xmlns="http://schemas.openxmlformats.org/package/2006/relationships">
+                <Relationship Id="rId3" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/webSettings" Target="webSettings.xml"/>
+                <Relationship Id="rId2" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/settings" Target="settings.xml"/>
+                <Relationship Id="rId1" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/styles" Target="styles.xml"/>
+                <Relationship Id="rId5" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/theme" Target="theme/theme1.xml"/>
+                <Relationship Id="rId4" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/fontTable" Target="fontTable.xml"/>
+            </Relationships>
+        </pkg:xmlData>
+    </pkg:part>
+    <pkg:part pkg:name="/word/document.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.document.main+xml">
+        <pkg:xmlData>
+            <w:document mc:Ignorable="w14 w15 wp14"
+                xmlns:wpc="http://schemas.microsoft.com/office/word/2010/wordprocessingCanvas"
+                xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+                xmlns:o="urn:schemas-microsoft-com:office:office"
+                xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
+                xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math"
+                xmlns:v="urn:schemas-microsoft-com:vml"
+                xmlns:wp14="http://schemas.microsoft.com/office/word/2010/wordprocessingDrawing"
+                xmlns:wp="http://schemas.openxmlformats.org/drawingml/2006/wordprocessingDrawing"
+                xmlns:w10="urn:schemas-microsoft-com:office:word"
+                xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
+                xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml"
+                xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml"
+                xmlns:wpg="http://schemas.microsoft.com/office/word/2010/wordprocessingGroup"
+                xmlns:wpi="http://schemas.microsoft.com/office/word/2010/wordprocessingInk"
+                xmlns:wne="http://schemas.microsoft.com/office/word/2006/wordml"
+                xmlns:wps="http://schemas.microsoft.com/office/word/2010/wordprocessingShape">
+                <w:body>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:bookmarkStart w:id="0" w:name="_GoBack"/>
+                        <w:bookmarkEnd w:id="0"/>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>多元升学路径介绍</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>随着新高考改革的推进,以</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>"</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>多元录取</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>"</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>为核心的升学方式替代了传统千军万马过独木桥的录取方式</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>,</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>国家鼓励更多的学生能够结合自身的情况选择合适的升学路径</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>,</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>本学业生涯路径测评会通过家庭环境</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>,</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>个人情况共计十余项指标精准定位最适合自己的升学路径</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>,</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>助力考生合理规划高中的学业</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>,</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>促进低分高就及科学的学业生涯规划。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>个人信息汇总</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>个人信息</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>姓名</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                                <w:lang w:eastAsia="zh-Hans"/>
+                            </w:rPr>
+                            <w:t>:</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>${form_name}</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>性别</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                                <w:lang w:eastAsia="zh-Hans"/>
+                            </w:rPr>
+                            <w:t>:</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>${form_gender}</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>年龄</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                                <w:lang w:eastAsia="zh-Hans"/>
+                            </w:rPr>
+                            <w:t>:</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>${form_age}</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>民族</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                                <w:lang w:eastAsia="zh-Hans"/>
+                            </w:rPr>
+                            <w:t>:</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>${form_nation}</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>高中阶段</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                                <w:lang w:eastAsia="zh-Hans"/>
+                            </w:rPr>
+                            <w:t>:</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>${form_phase}</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>科类</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                                <w:lang w:eastAsia="zh-Hans"/>
+                            </w:rPr>
+                            <w:t>:</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>${form_course0}</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>成绩情况</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                                <w:lang w:eastAsia="zh-Hans"/>
+                            </w:rPr>
+                            <w:t>:</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>${form_score}</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>外语语种</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                                <w:lang w:eastAsia="zh-Hans"/>
+                            </w:rPr>
+                            <w:t>:</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>${form_foreignL}</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>外语口语考试</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                                <w:lang w:eastAsia="zh-Hans"/>
+                            </w:rPr>
+                            <w:t>:</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>${form_foreignLSpoken}</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>身高</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                                <w:lang w:eastAsia="zh-Hans"/>
+                            </w:rPr>
+                            <w:t>:</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>${form_height}</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>体重</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                                <w:lang w:eastAsia="zh-Hans"/>
+                            </w:rPr>
+                            <w:t>:</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>${form_weight}</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>视力</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                                <w:lang w:eastAsia="zh-Hans"/>
+                            </w:rPr>
+                            <w:t>:</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>左眼</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>${form_eyesightL}</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>右眼</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>${form_eyesightR}</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>疾病情况</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                                <w:lang w:eastAsia="zh-Hans"/>
+                            </w:rPr>
+                            <w:t>:</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>${form_disease}</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>家庭情况</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>所在县市</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                                <w:lang w:eastAsia="zh-Hans"/>
+                            </w:rPr>
+                            <w:t>:</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>${form_provinceName}</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>${form_cityName}</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>${form_districtName}</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>学生本人户籍类型</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                                <w:lang w:eastAsia="zh-Hans"/>
+                            </w:rPr>
+                            <w:t>:</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>${form_nativeType}</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>父母户籍是否与本人一致</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                                <w:lang w:eastAsia="zh-Hans"/>
+                            </w:rPr>
+                            <w:t>:</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>${form_nativeSWP}</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>户籍、学籍高中是否在本地</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                                <w:lang w:eastAsia="zh-Hans"/>
+                            </w:rPr>
+                            <w:t>:</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>${form_nativeLocal}</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>可接受学费范围</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                                <w:lang w:eastAsia="zh-Hans"/>
+                            </w:rPr>
+                            <w:t>:</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>${form_feeExpectable}</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>三代直系亲属是否有刑事记录</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                                <w:lang w:eastAsia="zh-Hans"/>
+                            </w:rPr>
+                            <w:t>:</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>${form_criminalRecords}</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>是否为边防子女</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                                <w:lang w:eastAsia="zh-Hans"/>
+                            </w:rPr>
+                            <w:t>:</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>${form_frontierChildren}</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>升学意向</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>师范生意向</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                                <w:lang w:eastAsia="zh-Hans"/>
+                            </w:rPr>
+                            <w:t>:</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>${form_toBeTeacher}</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>考研意向</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                                <w:lang w:eastAsia="zh-Hans"/>
+                            </w:rPr>
+                            <w:t>:</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>${form_toBeGraduate}</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>奖项</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>/</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>荣誉情况</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                                <w:lang w:eastAsia="zh-Hans"/>
+                            </w:rPr>
+                            <w:t>:</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>${form_awards}</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00620458">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>多元升学路径介绍</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>以下是适合您的多元升学路径项目</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>小语种</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>介绍</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>小语种之所以是提前批并不是因为专业差,而是由于各个地区的小语种生源都需要参加面试口试。而其他地的生源也在小语种提前批招录可能跟国家对于小语种专业的政策有关。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>好的语言类学校的提前批招录分数竞争也是很激烈的,比如北外的某些提前批小语种的考生的分数线甚至超过了清北的一批分数线。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>西安外国语大学、四川外国语大学等外国语言类的大学均会在提前批招生小语种专业</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>报考条件</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>外语口语测试合格</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:lastRenderedPageBreak/>
+                            <w:t>适配解析</w:t>
+                        </w:r>
+                    </w:p>
+					${小语种}
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00620458">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>航海技术</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>介绍</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>航海技术培养适应</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>21</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>世纪社会主义现代化建设需要的,知识、能力、素质协调发展,基础扎实、知识面宽、实践能力强、敬业精神好,安全意识及环保意识强,符合经马尼拉修正的《</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>1978</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>年海员培训、发证和值班标准国际公约》和国家海事主管机关的相关规定要求、具有</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>“</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>诚毅</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>”</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>品格和创新精神的高素质航海技术应用型人才。学生主要学习船舶航行、货物积载与装卸和无线电通信等方面的基本理论和基本</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>知识,受到航线设计、船舶操纵与避碰、现代航海仪器等的基本训练,掌握独立指挥和组织船舶航行与营运的基本能力。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>报考条件</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>身高</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>1.60</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>米及以上;无色盲及色弱;双眼裸视均能达</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>4.7</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>(</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>0.5</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>)及以上,或双眼裸视</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>4.0</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>(</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>0.1</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>)及以上且双眼矫正视力均能达</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>4.9</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>(</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>0.8</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>)及以上;听力以电测听力计测定,一耳裸听力在</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>0.5</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>、</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>1.0</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>、</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>2.0</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>、</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>3.0kHz</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>频段上平均小于等于</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>30dB</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>,另一耳裸听力在</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>0.5</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>、</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>1.0</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>、</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>2.0</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>、</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>3.0kHz</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>频段上平均小于等于</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>40dB</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>。其它体检标准参照教育部及中华人民共和国海事局相关规定执行。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>适配解析</w:t>
+                        </w:r>
+                    </w:p>
+					${航海技术}
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00620458">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>轮机工程</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>介绍</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>轮机工程培养符合国家教育方针和国际国内相关法规要求,综合素质好、安全与环保意识强、具有国际竞争能力的高级航海人才;学生通过学习可以掌握车、钳、焊、电的基本工艺和操作技能;掌握船舶主机、辅机基本性能试验和检测能力;通过国家主管机关的考试和评估,可以获得熟悉和基本安全、精通救生艇筏、高级消防、精通急救等专业合格证书及值班机工、甲类一等三管轮适任证书。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>报考条件</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>身高</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>1.55</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>米及以上;无色盲;双眼裸视均能达</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>4.6</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>(</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>0.4</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>)及以上,或双眼裸视均能达</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>4.0</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>(</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>0.1</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>)及以上且矫正视</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>力均能达</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>4.6</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>(</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>0.4</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>)及以上。听力以电测听力计测定,一耳裸听力在</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>0.5</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>、</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>1.0</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>、</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>2.0</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>、</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>3.0kHz</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>频段上平均小于等于</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>30dB</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>,另一耳裸听力在</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>0.5</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>、</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>1.0</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>、</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>2.0</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>、</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>3.0kHz</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>频段上平均小于等于</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>40dB</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>。其它体检标准参照教育部及中华人民共和国海事局相关规定执行。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>适配解析</w:t>
+                        </w:r>
+                    </w:p>
+					${轮机工程}
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00620458">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>边防子女预科班</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>介绍</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>由解放军总政治部会同教育部共同制定的,主要针对边防军人子女的一种高考优惠方式。入选高校由烟台大学、桂林电子科技大学、长春工程学院、西安邮电大学、西华大学五所学校负责组织培养。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>报考条件</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>招生对象:符合普通高校招生条件,在驻国家边疆国境的县(市)、沙漠区、国家确定的三类以上艰苦边远地区或解放军总部划定的二类以上岛屿工作累计满</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>20</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>年的军人的子女;在国家确定的四类以上艰苦边远地区或解放军总部划定的特类岛屿工作累计满</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>10</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>年的军人的子女;在飞或停飞不满</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>1</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>年以及达到飞行最高年限的空勤军人的子女;从事舰艇工作满</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>20</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:lastRenderedPageBreak/>
+                            <w:t>年的军人的子女;在航天和涉核岗位工作累计满</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>15</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>年的军人的子女。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>适配解析</w:t>
+                        </w:r>
+                    </w:p>
+					${边防子女预科班}
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00620458">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>多元升学路径介绍</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>以下是不适合您的多元升学路径项目</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>公安警校</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>介绍</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>公安普通高等院校公安专</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>业通过高考招生。招生院校有:中国人民公安大学、中国人民警察大学、中国刑事警察学院、铁道警察学院、南京森林警察学院、浙江警察学院、云南警官学院、辽宁警察学院等</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>报考条件</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>1.</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>参加高考并具有高考省份户籍;</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 2.</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>未婚,年龄为</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>16</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>周岁以上、</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>22</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>周岁以下;</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 3.</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>身体条件符合体检要求</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>(</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>1</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>)身高:男性</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>170</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>厘米及以上,女性</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>160</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>厘米及以上。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>(</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>2</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>)体重:男性体重指数(单位:千克</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>/</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>米</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>2</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>)在</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>17.3</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>至</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>27.3</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>之间(含本数,计算时四舍五入保留小数点后一位,下同),女性在</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>17.1</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>至</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>25.7</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>之间。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>(</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>3</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>)眼科:任何一眼祼眼视力均</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>为</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>4.8</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>及以上;共同性内、外斜视不超过</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>15</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>度;无明显视功能损害眼病。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>(</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>4</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>)色觉:无色盲,无色弱。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>(</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>5</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>)外科:外观无明显疾病特征(如五官畸形,不能自行矫正的斜颈等),面颈部无瘢痕、无影响面容且难以治愈的皮肤病(如白癜风、银屑病、血管瘤、斑痣等);无唇、腭裂或唇裂术后有明显瘢痕;无三度单纯性甲状腺肿;无影响功能的身体瘢痕;无胸廓畸形,无脊柱侧弯、驼背,膝内翻股骨内髁间距离或膝外翻胫骨内踝间距离不超过</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>7</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>厘米(如明显八字步、罗圈腿等);无腋臭,无下肢静脉曲张;无足底弓完全消失的扁平足,无文身、少白头。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>(</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>6</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>)其</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>他:血压正常,嗅觉不迟钝,两耳听力正常</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 4.</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>三代直系亲属无刑事纪录</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>适配解析</w:t>
+                        </w:r>
+                    </w:p>
+					${公安警校}
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00620458">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:color w:val="FF0000"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>军校、军医</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>介绍</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>军队院校根据军队建设需求,通过高考招收士官学员,入学即入伍,在校期间享受军队待遇,学费、学杂费、食宿、军装等全部由国家承担,每人每月享受国家津贴,家属享受军人家属待遇。本科毕业授予军衔,统一分配到军队系统。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>报考条件</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>1.</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>未婚,年龄不低于</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>17</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>周岁且不超过</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>20</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>周岁</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 2.</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>高考成绩达到本省一本线(合并批次省份须达到特殊类型招生控制线)</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 3.</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>身体素质符合军检要求</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>(</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>1</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>)男性身高</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>162cm</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>以上,女性身高</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>160cm</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>以上</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>(</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>2</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>)体重:</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>男性:体重不超过标准体重</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>(</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>标准体重</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>kg=</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>身高</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>cm-110)</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>的</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>30%</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>、不低于标准体重的</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>15%</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>。其中,音乐学专业体重不超过标准体重的</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>35%</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>;女性:体重不超过标准体重的</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>20%</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>、不低于标准体重的</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>15%</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>。其中,舞蹈学专业体重不低于标准体重的</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>20%</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>(</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>3</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>)无其他疾病</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 4.</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>政治条件符合政审要求</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>适配解析</w:t>
+                        </w:r>
+                    </w:p>
+					${军校、军医}
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00620458">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>定向培养军士</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>介绍</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:lastRenderedPageBreak/>
+                            <w:t>通过高考招收学员,为部队定向培养技术复杂、培训周期较长的军地通用军士</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>报考条件</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>1.</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>未婚,年龄不低于</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>17</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>周岁且不超过</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>20</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>周岁</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 2.</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>成绩达到专科批次控制线</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 3.</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>身体素质符合军检要求</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 4.</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>政治条件符合政审要求</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>适配解析</w:t>
+                        </w:r>
+                    </w:p>
+					${定向培养军士}
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00620458">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>强基计划</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>介绍</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>强基计划主要选拔培养有志于服务国家重大战略需求且综合素质优秀或基础学科拔尖的学生。聚焦高端芯片与软件、智能科技、新材料、先进制造和国家安全等关键领域以及国家人才紧缺的人文社会科学领域,由有关高校结合自身办学特色,合理安排招生专业。要突出基础学科的支撑引领作用,重点在数学、物理、化学、信息学、生物学及历史、哲学、古文字学等相关专业招生。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>报考条件</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>第一类:高考成绩优异的考生;</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>第二类:相关学科领域具有突出才能和表现的考生。该类考生须在全国中学生学科奥林匹克竞赛全国决赛中获得数学、物理、化学、生物、信息学(以下简称五大联赛)二等奖及以上</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>适配解析</w:t>
+                        </w:r>
+                    </w:p>
+					${强基计划}
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00620458">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>综合评价</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>介绍</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>综合评价招生是高考改革逐步推动后兴起的新招生模式。该类招生最大的特点是基于考生高考成绩、高校综合测试成绩和高中学业水平测试成绩,按照一定比例计算形成考生综合总分,最后按照综合总分择优录取。其中,高考成绩占比约在</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>50%-85%</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>报考条件</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>1</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>.</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>综合成绩优秀</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 2.</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>学科特长突出。在理科竞赛、文科赛事、科创赛事、文艺体育等赛事中获得突出成就</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 3.</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>思想品德优秀。获得省优秀学生、省三好学生、省优秀学生干部荣誉等</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>适配解析</w:t>
+                        </w:r>
+                    </w:p>
+					${综合评价}
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00620458">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>港澳台院校</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>介绍</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>通过单独申请或统考填报的方式,就读港澳院校;</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>截至目前,可面向内地招收本科及以上学生的香港高校有</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>15</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>所:香港中文大学、香港城市大学、香港大学、香港科技大学、香港理工大学、香港浸会大学、岭南大学、香港教育大学、香港树仁大学、香港都会大学、香港演艺学院、珠海学院、香港恒生大学、东华学院、香港高等教育科技</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>学院。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>可面向内地招收本科及以上学生的澳门高校有</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>6</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>所:澳门大学、澳门理工大学、澳门科技大学、澳门旅游学院、澳门镜湖护理学院、澳门城市大学。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>报考条件</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>有较好的英语基础,学费可接受在</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>15W</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>以上</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>适配解析</w:t>
+                        </w:r>
+                    </w:p>
+					${港澳台院校}
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00620458">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>高水平运动队</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>介绍</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>普通高校办高水平运动队,是</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>“</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>体教结合</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>”</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>培养高素质竞技体育人才的需要,是实施训教一体化思路,解决好优秀运动员就业安置的途径之一,它既是体育先进国家发展竞技体育的有效经验和方法,也是我国落实</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>“</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>举国体制、奥运方针</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>”</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>的时代产物。同时,其意义还在于促动我国竞技体育的体制改革,将运动训练与高等教育有机地结合起来,进一步促进学校体育活动的普及与提高,提高运动员的整体素质以及加速我国体育与国际接轨。招生高校在奥运会、世界大学生运动会项目(包括足球、篮球、排球项目等)范围内,确定运动队招生项目和招生计划。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>报考条件</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>2024</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>年起,符合生源省份高考报名条件,获得国家一级运动员(含)以上技术等级称号者方可以报考高水平运动队。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>适配解析</w:t>
+                        </w:r>
+                    </w:p>
+					${高水平运动队}
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00620458">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>高校实验班</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>介绍</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>考生在填报志愿时,可以直接填报高校实验班的专业志愿,比如像北京大学元培实验班,吉林大学的理科实验班,中国政法的法学实验班,但是一般本省的学校的实验班会在本省的提前批多招一点学生,其它省份为了抢一些优质生源,也会在提前批招。不是所有的实验班都在提前批招生,具体要根据每年本省的招生计划填报。实验班一般都是作为一个独立的招生专业去公布的,所以考生可以根据自身情况。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>选择填报,由学校再根据考生的成绩和志愿去录取,一般没有什么特殊的要求,但也有例外,比如吉林大学这两年有要求分数超过一本线多少分才可以填报,但是,大部分学校没有要求,按分数高低择优录取</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>报考条件</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:color w:val="FF0000"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:color w:val="FF0000"/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>高考分数</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>适配解析</w:t>
+                        </w:r>
+                    </w:p>
+					${高校实验班}
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00620458">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>公费师范生</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>介绍</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>从</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>2007</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>年起,国务院决定依托北京师范大学,华东师范大学,东北师范大学等六所教育部直属师范大学实施师范生免费教育试点。招收公费师范生实行提前批次录取,由中央财政承担其在校期间学费、住宿费并给予生活费补助的培养管理制度。重点考察学生的综合素质、职业倾向和从教潜</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>质,择优选拔乐教、适教的优秀高中毕业生加入公费师范生队伍,公费师范生毕业前高校组织用人学校与公费师范生双向选择,为每一位毕业的公费师范生落实任教学校并确保有编有岗。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>报考条件</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>立志从教,回生源所在省份中小学任教,并承诺从事中小学教育工作</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>6</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>年以上,不可脱产考研</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>适配解析</w:t>
+                        </w:r>
+                    </w:p>
+					${公费师范生}
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00620458">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>免费医学生</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>介绍</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>从</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>2010</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>年起,国家发展改革委、卫生部、教育部、财政部、人力资源社会保障部联合开展免费医学生培养工作,重点为乡镇卫生院及以下的医疗卫生机构培养从事全科医疗的卫生人才。免费医学生分</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>5</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>年制本科和</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>3</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>年制专科两</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>种,以</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>5</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>年制本科为主,培养专业主要是临床医学、中医学(含民族医学)专业,培养工作主要由举办医学教育的地方高等学校承担。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>报考条件</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>免费医学生主要招收农村生源,优先录取定岗单位所在县生源。报考学生需同时符合:统一高考报名条件;本人及父亲或母亲或法定监护人户籍地须在农村,本人具有连续</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>3</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>年以上户籍;身份条件符合教育部、原卫生部和中国残疾人联合会制定的《普通高等学校招生体验工作指导意见》</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>(</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>教学【</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>2003</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>】</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>3</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>号)等相关规定。采取以县为单位定向招生的地方,报考学生除同时具备上述条件外,本人及父亲或母亲或法定监护人户籍地</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>须在定岗单位所在县农村。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>适配解析</w:t>
+                        </w:r>
+                    </w:p>
+					${免费医学生}
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00620458">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>空军招飞</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>介绍</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>空军飞行人员是国家的特殊人才和宝贵资源,其招收培养属国家行为。招收飞行学员(简称招飞)工作,在国家教育部、公安部、财政部和军委政治工作部领导下,由空军会同有关省(自治区、直辖市)的教育、公安部门组织实施,纳入全国普通高校招生体系,是军队院校招生工作的重要组成部分。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>空军设立招飞局,辖沈阳、北京、兰州、济南、南京、广州、成都</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>7</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>个选拔中心。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>1987</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>年空军自主招飞以来,承担了空军和陆航部队全部招飞任务,除为国家培养选拔航天员外,还为海军航空兵输送了大批飞行骨干人才,累计招收飞行学员</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>4</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>万余名,较好地满足了国防建设飞行人才补充需要。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>报考条件</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve">1. </w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>普通高中应届、往届毕业生(女生是否招收另行通知),年龄不小于</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>17</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>周岁、不超过</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>20</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>周岁。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 2.</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>身高在</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>164-185cm</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>之间,体重不低于标准体重的</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>80%</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>、不高于标准体重的</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>130%</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>,标准体重(</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>kg</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>)</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>=</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>身高(</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>cm</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>)</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>-110</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>。双眼裸眼视力</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>C</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>字</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>表均在</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>0.8</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>以上,未做过视力矫治手术</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>,</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>未佩戴过角膜塑形镜(</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>OK</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>镜),无色盲、色弱、斜视等。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 3.</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>品学兼优,高考成绩达到本省(自治区、直辖市)统招一本线。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>适配解析</w:t>
+                        </w:r>
+                    </w:p>
+					${空军招飞}
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00620458">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>海军招飞</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>介绍</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>海军作为五大兵种齐全、核常兼备的战略性军种,正处在使命任务深度拓展和战略转型加速推进的关键时期,在建设海洋强国中的地位更加凸显,在维护国家主权、安全和发展利益中的作用更加突出。随着海军走向远洋、挺进深蓝步伐加快,航母事业和舰载航空兵部队快速发展,需要更多高素质的舰载机飞行人才。我们真诚欢迎热爱海空、适合飞行、素</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>质全面的青年学子加入海军蓝色方阵,成为搏击长空、逐梦海天的新一代</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>“</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>海空骄子</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>”</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>、精英尖刀,在祖国万里海空实现人生价值,为全面建成世界一流海军、实现中华民族伟大复兴的中国梦强军梦贡献力量!</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>报考条件</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:lastRenderedPageBreak/>
+                            <w:t>普通高中应、往届毕业生</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>,</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>男性,理科生,不分文理科省份学生须选考物理;具有参加</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>2023</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>年普通高等学校招生全国统一考试资格,及海军开招地区学籍、户籍;年龄不低于</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>17</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>周岁、不超过</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>20</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>周岁。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 1.</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>身高</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>165—185</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>厘米之间,体型匀称;体重在</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>52</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>公斤以上(未满</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>18</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>周岁体重在</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>50</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>公斤以上),身体质量指数符合标准。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 2.</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>静息血压</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>值不超过</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>138/88mmHg</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>,不低于</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>100/60mmHg</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>,脉压差不小于</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>30mmHg</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>,脉搏</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>56—100</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>次</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>/</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>分。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 3.</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>用</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>C</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>字视力表检查,双眼裸眼远视力不低于</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>0.8</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>(约为</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>E</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>字表</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>5.0</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>),无色盲、色弱、斜视;未做过视力矫正术(如准分子、飞秒激光手术,角膜塑形镜矫治等)。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 4.</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>无口吃,无文身,听力、嗅觉正常。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 5</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>、高考成绩不低于本科一批录取线(特殊类型招生控制线),外语限英语;少数民族地区学生须参加普通(汉授)高考。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>适配解析</w:t>
+                        </w:r>
+                    </w:p>
+					${海军招飞}
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00620458">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>民航招飞</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>介绍</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>民航招飞是指普通高校飞行技术专业(本科)通过高考招收飞</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>行学生。民航招收飞行学生工作由教育部和中国民用航空局统一领导,省级招办统一组织,招飞院校负责实施。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>招飞院校负责实施民航招飞。如果您被这些招飞院校中的一所录取为本校飞行技术专业新生,表示您将成为该校的普通全日制本科在校学生,将在该校参加理论学习,并由学校或公司安排参加飞行训练,毕业时将获得该校本科文凭。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>报考条件</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>应、往届高中毕业生</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>,</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>参加</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve">2023 </w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>年普通高等学校招生全国统一考试,外语语种为英语。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 16</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>至</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>20</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>周岁</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>身高不应低于</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 168 </w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>厘米。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>体质指数(</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>BMI</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>)不应</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve">&gt;24 </w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>或</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>&lt;18.5</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>。注:</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>BMI=</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>体重</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>(kg</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>)/</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>身高</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>(M)2</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>任何一眼裸眼远视力不低于</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> C </w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>字表</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 1.0</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>,单眼裸眼视力低于</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> C </w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>字表</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 0.7 </w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>的需戴眼镜矫正到</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> C </w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>字</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>表</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 1.0</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>近视不超过</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 450 </w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>度,远视不超过</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 300 </w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>度,散光不超过</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 200 </w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>度,两眼度数相差不超过</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 250 </w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>度。(本屈光度为散瞳验光度数)</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>佩戴角膜塑形镜的,参加体检前必须停戴</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 1 </w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>个月以上。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>不应有色盲、色弱、夜盲、斜视,不应患有严重的沙眼或倒睫。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>具有敏捷的反应能力和身体协调能力,符合招飞体检鉴定医学标准。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>适配解析</w:t>
+                        </w:r>
+                    </w:p>
+					${民航招飞}
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00620458">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>中外合作</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>介绍</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>中外合作办学指外国法人组织、个人以及有关国际组织同中国具有法人资格的教育机构及其他社会组织,在中国境内合作举办以中国公民为主要对象的教育机构,实施教育、教学的活动。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>报考条件</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>参加外语口试并合格,学费可接受在每学年</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>3W</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>至</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>9W</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>以上,</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>适配解析</w:t>
+                        </w:r>
+                    </w:p>
+					${中外合作}
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00620458">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>少数民族预科班</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>/</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>民族班</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>介绍</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>民族预科班、民族班招生计划为国家指令性定向就业招生计划</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>;</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>重点招收边远农村、高寒地区、山区、牧区的少数民族考生,也可适量招收散杂居的少数民族考生。民族预科班招生时,</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:lastRenderedPageBreak/>
+                            <w:t>除特殊情况外,一般不确定专业</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>,</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>预科班为实施高等学校本、专科(告知)预备性教育的一种办学形式。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>报考条件</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>少数民族考生</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>适配解析</w:t>
+                        </w:r>
+                    </w:p>
+					${少数民族预科班/民族班}
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00620458">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>国家专项计划</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>介绍</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>国家专项计划是招生学校为中央部门高校和各省(区、市)所属重点高校,定向招收集中连片特殊困难县、国家级扶贫开发重点县以及新疆南疆四地州学生的一种扶贫计划。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>报考条件</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>1</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>、</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>符合</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>2022</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>年统一高考报名条件;</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 2</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>、本人具有实施区域当地连续</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>3</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>年以上户籍,其父亲或母亲或法定监护人具有当地户籍;</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 3</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>、本人具有户籍所在县高中连续</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>3</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>年学籍并实际就读。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>适配解析</w:t>
+                        </w:r>
+                    </w:p>
+					${国家专项计划}
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00620458">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>地方专项计划</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>介绍</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>地方专项计划是指地方高校定向招收实施区域的农村学生的专项计划。一般只为省属重点大学,在国家专项批次之后。地方专项计划定向招收各省市实施区域的农村学生,招生计划一般不会少于本校一批次招生规模的</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>3%</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>报考条件</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>报名条件报考基本报名条件和附加报名条件,基本报名条件一般包括</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>(</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>一</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>)</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>符合统一高考报名</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>条件。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> (</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>二</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>)</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>本人及父亲或母亲或法定监护人户籍地在实施区域的农村,本人具有当地连续</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>3</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>年以上户籍。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> (</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>三</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>)</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>本人具有户籍所在县高中连续</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>3</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>年学籍并实际就读。这是教育部的规定,是考生必须同时具备的,不具备这些条件不能参加报名。考生是否具备这些条件需要自己清楚,具体可以找有关部门咨询。</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"></w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>附加条件是招生院校自己规定的条件,报考招生地域,有的院校是在全国范围内招生,有的则有限制条件。还包括院校对于考生成绩的要求,报考考生三年总成绩和单科成绩要求等,对于这些考生和家长也要务必注意。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>适配解析</w:t>
+                        </w:r>
+                    </w:p>
+					${地方专项计划}
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00620458">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>高校专项计划</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>介绍</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>高校专项计划,是国家为更好地促进教育公平、让更多的农村学生上大学而出台的一项优惠政策,主要招收边远、贫困、民族等地区县</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>(</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>含县级市</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>)</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>以下高中勤奋好学、成绩优良的农村学生,具体实施区域由有关省</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>(</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>区、市</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>)</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>确定。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>报考条件</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>参加高校专项计划需要同时具备下列三项条件:</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t xml:space="preserve"> 1.</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>符合统一高考报名条件</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>; 2.</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>本人及父亲或母亲或法定监护人户籍地在实施区域的农村,本人具有当地连续</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>3</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>年以上户籍</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>; 3.</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>本人具有户籍所在县高中连续</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>3</w:t>
+                        </w:r>
+                        <w:r>
+                            <w:rPr>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>年学籍并实际就读。</w:t>
+                        </w:r>
+                    </w:p>
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00C5790A">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                            <w:t>适配解析</w:t>
+                        </w:r>
+                    </w:p>
+					${高校专项计划}
+					
+                    <w:p w:rsidR="00620458" w:rsidRDefault="00620458">
+                        <w:pPr>
+                            <w:rPr>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:szCs w:val="21"/>
+                            </w:rPr>
+                        </w:pPr>
+                    </w:p>
+					<w:p>
+                        <w:pPr>
+                            <w:rPr>
+                                <w:rFonts w:hint="default"/>
+                                <w:sz w:val="21"/>
+                                <w:szCs w:val="21"/>
+                                <w:lang w:val="en-US" w:eastAsia="zh-CN"/>
+                            </w:rPr>
+                        </w:pPr>
+                        <w:r>
+                            <w:rPr>
+                                <w:rFonts w:hint="eastAsia"/>
+                                <w:b/>
+                                <w:bCs/>
+                                <w:sz w:val="21"/>
+                                <w:szCs w:val="21"/>
+                                <w:lang w:val="en-US" w:eastAsia="zh-CN"/>
+                            </w:rPr>
+                            <w:t>多元升学路径月度计划</w:t>
+                        </w:r>
+                        <w:bookmarkStart w:id="0" w:name="_GoBack"/>
+                        <w:bookmarkEnd w:id="0"/>
+                    </w:p>
+                    <w:tbl>
+                        <w:tblPr>
+                            <w:tblStyle w:val="3"/>
+                            <w:tblW w:w="9285" w:type="dxa"/>
+                            <w:tblInd w:w="-149" w:type="dxa"/>
+                            <w:tblBorders>
+                                <w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/>
+                                <w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/>
+                                <w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/>
+                                <w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/>
+                                <w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/>
+                                <w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/>
+                            </w:tblBorders>
+                            <w:tblLayout w:type="autofit"/>
+                            <w:tblCellMar>
+                                <w:top w:w="0" w:type="dxa"/>
+                                <w:left w:w="108" w:type="dxa"/>
+                                <w:bottom w:w="0" w:type="dxa"/>
+                                <w:right w:w="108" w:type="dxa"/>
+                            </w:tblCellMar>
+                        </w:tblPr>
+                        <w:tblGrid>
+                            <w:gridCol w:w="720"/>
+                            <w:gridCol w:w="1230"/>
+                            <w:gridCol w:w="2070"/>
+                            <w:gridCol w:w="5265"/>
+                        </w:tblGrid>
+                        <w:tr>
+                            <w:tblPrEx>
+                                <w:tblBorders>
+                                    <w:top w:val="single" w:color="auto" w:sz="4" w:space="0"/>
+                                    <w:left w:val="single" w:color="auto" w:sz="4" w:space="0"/>
+                                    <w:bottom w:val="single" w:color="auto" w:sz="4" w:space="0"/>
+                                    <w:right w:val="single" w:color="auto" w:sz="4" w:space="0"/>
+                                    <w:insideH w:val="single" w:color="auto" w:sz="4" w:space="0"/>
+                                    <w:insideV w:val="single" w:color="auto" w:sz="4" w:space="0"/>
+                                </w:tblBorders>
+                                <w:tblCellMar>
+                                    <w:top w:w="0" w:type="dxa"/>
+                                    <w:left w:w="108" w:type="dxa"/>
+                                    <w:bottom w:w="0" w:type="dxa"/>
+                                    <w:right w:w="108" w:type="dxa"/>
+                                </w:tblCellMar>
+                            </w:tblPrEx>
+                            <w:tc>
+                                <w:tcPr>
+                                    <w:tcW w:w="720" w:type="dxa"/>
+                                </w:tcPr>
+                                <w:p>
+                                    <w:pPr>
+                                        <w:rPr>
+                                            <w:rFonts w:hint="default"/>
+                                            <w:b/>
+                                            <w:bCs/>
+                                            <w:sz w:val="21"/>
+                                            <w:szCs w:val="21"/>
+                                            <w:vertAlign w:val="baseline"/>
+                                            <w:lang w:val="en-US" w:eastAsia="zh-CN"/>
+                                        </w:rPr>
+                                    </w:pPr>
+                                    <w:r>
+                                        <w:rPr>
+                                            <w:rFonts w:hint="eastAsia"/>
+                                            <w:b/>
+                                            <w:bCs/>
+                                            <w:sz w:val="21"/>
+                                            <w:szCs w:val="21"/>
+                                            <w:vertAlign w:val="baseline"/>
+                                            <w:lang w:val="en-US" w:eastAsia="zh-CN"/>
+                                        </w:rPr>
+                                        <w:t>阶段</w:t>
+                                    </w:r>
+                                </w:p>
+                            </w:tc>
+                            <w:tc>
+                                <w:tcPr>
+                                    <w:tcW w:w="1230" w:type="dxa"/>
+                                </w:tcPr>
+                                <w:p>
+                                    <w:pPr>
+                                        <w:rPr>
+                                            <w:rFonts w:hint="default"/>
+                                            <w:b/>
+                                            <w:bCs/>
+                                            <w:sz w:val="21"/>
+                                            <w:szCs w:val="21"/>
+                                            <w:vertAlign w:val="baseline"/>
+                                            <w:lang w:val="en-US" w:eastAsia="zh-CN"/>
+                                        </w:rPr>
+                                    </w:pPr>
+                                    <w:r>
+                                        <w:rPr>
+                                            <w:rFonts w:hint="eastAsia"/>
+                                            <w:b/>
+                                            <w:bCs/>
+                                            <w:sz w:val="21"/>
+                                            <w:szCs w:val="21"/>
+                                            <w:vertAlign w:val="baseline"/>
+                                            <w:lang w:val="en-US" w:eastAsia="zh-CN"/>
+                                        </w:rPr>
+                                        <w:t>月份</w:t>
+                                    </w:r>
+                                </w:p>
+                            </w:tc>
+                            <w:tc>
+                                <w:tcPr>
+                                    <w:tcW w:w="2070" w:type="dxa"/>
+                                </w:tcPr>
+                                <w:p>
+                                    <w:pPr>
+                                        <w:rPr>
+                                            <w:rFonts w:hint="default"/>
+                                            <w:b/>
+                                            <w:bCs/>
+                                            <w:sz w:val="21"/>
+                                            <w:szCs w:val="21"/>
+                                            <w:vertAlign w:val="baseline"/>
+                                            <w:lang w:val="en-US" w:eastAsia="zh-CN"/>
+                                        </w:rPr>
+                                    </w:pPr>
+                                    <w:r>
+                                        <w:rPr>
+                                            <w:rFonts w:hint="eastAsia"/>
+                                            <w:b/>
+                                            <w:bCs/>
+                                            <w:sz w:val="21"/>
+                                            <w:szCs w:val="21"/>
+                                            <w:vertAlign w:val="baseline"/>
+                                            <w:lang w:val="en-US" w:eastAsia="zh-CN"/>
+                                        </w:rPr>
+                                        <w:t>事件</w:t>
+                                    </w:r>
+                                </w:p>
+                            </w:tc>
+                            <w:tc>
+                                <w:tcPr>
+                                    <w:tcW w:w="5265" w:type="dxa"/>
+                                </w:tcPr>
+                                <w:p>
+                                    <w:pPr>
+                                        <w:rPr>
+                                            <w:rFonts w:hint="default"/>
+                                            <w:b/>
+                                            <w:bCs/>
+                                            <w:sz w:val="21"/>
+                                            <w:szCs w:val="21"/>
+                                            <w:vertAlign w:val="baseline"/>
+                                            <w:lang w:val="en-US" w:eastAsia="zh-CN"/>
+                                        </w:rPr>
+                                    </w:pPr>
+                                    <w:r>
+                                        <w:rPr>
+                                            <w:rFonts w:hint="eastAsia"/>
+                                            <w:b/>
+                                            <w:bCs/>
+                                            <w:sz w:val="21"/>
+                                            <w:szCs w:val="21"/>
+                                            <w:vertAlign w:val="baseline"/>
+                                            <w:lang w:val="en-US" w:eastAsia="zh-CN"/>
+                                        </w:rPr>
+                                        <w:t>注意事项</w:t>
+                                    </w:r>
+                                </w:p>
+                            </w:tc>
+                        </w:tr>
+						${多元升学路径计划}
+                    </w:tbl>
+					
+                    <w:sectPr w:rsidR="00620458">
+                        <w:pgSz w:w="11906" w:h="16838"/>
+                        <w:pgMar w:top="1440" w:right="1800" w:bottom="1440" w:left="1800" w:header="851" w:footer="992" w:gutter="0"/>
+                        <w:cols w:space="425"/>
+                        <w:docGrid w:type="lines" w:linePitch="312"/>
+                    </w:sectPr>
+                </w:body>
+            </w:document>
+        </pkg:xmlData>
+    </pkg:part>
+    <pkg:part pkg:name="/word/theme/theme1.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.theme+xml">
+        <pkg:xmlData>
+            <a:theme name="Office 主题"
+                xmlns:a="http://schemas.openxmlformats.org/drawingml/2006/main">
+                <a:themeElements>
+                    <a:clrScheme name="Office">
+                        <a:dk1>
+                            <a:sysClr val="windowText" lastClr="000000"/>
+                        </a:dk1>
+                        <a:lt1>
+                            <a:sysClr val="window" lastClr="FFFFFF"/>
+                        </a:lt1>
+                        <a:dk2>
+                            <a:srgbClr val="44546A"/>
+                        </a:dk2>
+                        <a:lt2>
+                            <a:srgbClr val="E7E6E6"/>
+                        </a:lt2>
+                        <a:accent1>
+                            <a:srgbClr val="5B9BD5"/>
+                        </a:accent1>
+                        <a:accent2>
+                            <a:srgbClr val="ED7D31"/>
+                        </a:accent2>
+                        <a:accent3>
+                            <a:srgbClr val="A5A5A5"/>
+                        </a:accent3>
+                        <a:accent4>
+                            <a:srgbClr val="FFC000"/>
+                        </a:accent4>
+                        <a:accent5>
+                            <a:srgbClr val="4472C4"/>
+                        </a:accent5>
+                        <a:accent6>
+                            <a:srgbClr val="70AD47"/>
+                        </a:accent6>
+                        <a:hlink>
+                            <a:srgbClr val="0563C1"/>
+                        </a:hlink>
+                        <a:folHlink>
+                            <a:srgbClr val="954F72"/>
+                        </a:folHlink>
+                    </a:clrScheme>
+                    <a:fontScheme name="Office">
+                        <a:majorFont>
+                            <a:latin typeface="Calibri Light"/>
+                            <a:ea typeface=""/>
+                            <a:cs typeface=""/>
+                            <a:font script="Jpan" typeface="MS ゴシック"/>
+                            <a:font script="Hang" typeface="맑은 고딕"/>
+                            <a:font script="Hans" typeface="宋体"/>
+                            <a:font script="Hant" typeface="新細明體"/>
+                            <a:font script="Arab" typeface="Times New Roman"/>
+                            <a:font script="Hebr" typeface="Times New Roman"/>
+                            <a:font script="Thai" typeface="Angsana New"/>
+                            <a:font script="Ethi" typeface="Nyala"/>
+                            <a:font script="Beng" typeface="Vrinda"/>
+                            <a:font script="Gujr" typeface="Shruti"/>
+                            <a:font script="Khmr" typeface="MoolBoran"/>
+                            <a:font script="Knda" typeface="Tunga"/>
+                            <a:font script="Guru" typeface="Raavi"/>
+                            <a:font script="Cans" typeface="Euphemia"/>
+                            <a:font script="Cher" typeface="Plantagenet Cherokee"/>
+                            <a:font script="Yiii" typeface="Microsoft Yi Baiti"/>
+                            <a:font script="Tibt" typeface="Microsoft Himalaya"/>
+                            <a:font script="Thaa" typeface="MV Boli"/>
+                            <a:font script="Deva" typeface="Mangal"/>
+                            <a:font script="Telu" typeface="Gautami"/>
+                            <a:font script="Taml" typeface="Latha"/>
+                            <a:font script="Syrc" typeface="Estrangelo Edessa"/>
+                            <a:font script="Orya" typeface="Kalinga"/>
+                            <a:font script="Mlym" typeface="Kartika"/>
+                            <a:font script="Laoo" typeface="DokChampa"/>
+                            <a:font script="Sinh" typeface="Iskoola Pota"/>
+                            <a:font script="Mong" typeface="Mongolian Baiti"/>
+                            <a:font script="Viet" typeface="Times New Roman"/>
+                            <a:font script="Uigh" typeface="Microsoft Uighur"/>
+                            <a:font script="Geor" typeface="Sylfaen"/>
+                        </a:majorFont>
+                        <a:minorFont>
+                            <a:latin typeface="Calibri"/>
+                            <a:ea typeface=""/>
+                            <a:cs typeface=""/>
+                            <a:font script="Jpan" typeface="MS 明朝"/>
+                            <a:font script="Hang" typeface="맑은 고딕"/>
+                            <a:font script="Hans" typeface="宋体"/>
+                            <a:font script="Hant" typeface="新細明體"/>
+                            <a:font script="Arab" typeface="Arial"/>
+                            <a:font script="Hebr" typeface="Arial"/>
+                            <a:font script="Thai" typeface="Cordia New"/>
+                            <a:font script="Ethi" typeface="Nyala"/>
+                            <a:font script="Beng" typeface="Vrinda"/>
+                            <a:font script="Gujr" typeface="Shruti"/>
+                            <a:font script="Khmr" typeface="DaunPenh"/>
+                            <a:font script="Knda" typeface="Tunga"/>
+                            <a:font script="Guru" typeface="Raavi"/>
+                            <a:font script="Cans" typeface="Euphemia"/>
+                            <a:font script="Cher" typeface="Plantagenet Cherokee"/>
+                            <a:font script="Yiii" typeface="Microsoft Yi Baiti"/>
+                            <a:font script="Tibt" typeface="Microsoft Himalaya"/>
+                            <a:font script="Thaa" typeface="MV Boli"/>
+                            <a:font script="Deva" typeface="Mangal"/>
+                            <a:font script="Telu" typeface="Gautami"/>
+                            <a:font script="Taml" typeface="Latha"/>
+                            <a:font script="Syrc" typeface="Estrangelo Edessa"/>
+                            <a:font script="Orya" typeface="Kalinga"/>
+                            <a:font script="Mlym" typeface="Kartika"/>
+                            <a:font script="Laoo" typeface="DokChampa"/>
+                            <a:font script="Sinh" typeface="Iskoola Pota"/>
+                            <a:font script="Mong" typeface="Mongolian Baiti"/>
+                            <a:font script="Viet" typeface="Arial"/>
+                            <a:font script="Uigh" typeface="Microsoft Uighur"/>
+                            <a:font script="Geor" typeface="Sylfaen"/>
+                        </a:minorFont>
+                    </a:fontScheme>
+                    <a:fmtScheme name="Office">
+                        <a:fillStyleLst>
+                            <a:solidFill>
+                                <a:schemeClr val="phClr"/>
+                            </a:solidFill>
+                            <a:gradFill rotWithShape="1">
+                                <a:gsLst>
+                                    <a:gs pos="0">
+                                        <a:schemeClr val="phClr">
+                                            <a:lumMod val="110000"/>
+                                            <a:satMod val="105000"/>
+                                            <a:tint val="67000"/>
+                                        </a:schemeClr>
+                                    </a:gs>
+                                    <a:gs pos="50000">
+                                        <a:schemeClr val="phClr">
+                                            <a:lumMod val="105000"/>
+                                            <a:satMod val="103000"/>
+                                            <a:tint val="73000"/>
+                                        </a:schemeClr>
+                                    </a:gs>
+                                    <a:gs pos="100000">
+                                        <a:schemeClr val="phClr">
+                                            <a:lumMod val="105000"/>
+                                            <a:satMod val="109000"/>
+                                            <a:tint val="81000"/>
+                                        </a:schemeClr>
+                                    </a:gs>
+                                </a:gsLst>
+                                <a:lin ang="5400000" scaled="0"/>
+                            </a:gradFill>
+                            <a:gradFill rotWithShape="1">
+                                <a:gsLst>
+                                    <a:gs pos="0">
+                                        <a:schemeClr val="phClr">
+                                            <a:satMod val="103000"/>
+                                            <a:lumMod val="102000"/>
+                                            <a:tint val="94000"/>
+                                        </a:schemeClr>
+                                    </a:gs>
+                                    <a:gs pos="50000">
+                                        <a:schemeClr val="phClr">
+                                            <a:satMod val="110000"/>
+                                            <a:lumMod val="100000"/>
+                                            <a:shade val="100000"/>
+                                        </a:schemeClr>
+                                    </a:gs>
+                                    <a:gs pos="100000">
+                                        <a:schemeClr val="phClr">
+                                            <a:lumMod val="99000"/>
+                                            <a:satMod val="120000"/>
+                                            <a:shade val="78000"/>
+                                        </a:schemeClr>
+                                    </a:gs>
+                                </a:gsLst>
+                                <a:lin ang="5400000" scaled="0"/>
+                            </a:gradFill>
+                        </a:fillStyleLst>
+                        <a:lnStyleLst>
+                            <a:ln w="6350" cap="flat" cmpd="sng" algn="ctr">
+                                <a:solidFill>
+                                    <a:schemeClr val="phClr"/>
+                                </a:solidFill>
+                                <a:prstDash val="solid"/>
+                                <a:miter lim="800000"/>
+                            </a:ln>
+                            <a:ln w="12700" cap="flat" cmpd="sng" algn="ctr">
+                                <a:solidFill>
+                                    <a:schemeClr val="phClr"/>
+                                </a:solidFill>
+                                <a:prstDash val="solid"/>
+                                <a:miter lim="800000"/>
+                            </a:ln>
+                            <a:ln w="19050" cap="flat" cmpd="sng" algn="ctr">
+                                <a:solidFill>
+                                    <a:schemeClr val="phClr"/>
+                                </a:solidFill>
+                                <a:prstDash val="solid"/>
+                                <a:miter lim="800000"/>
+                            </a:ln>
+                        </a:lnStyleLst>
+                        <a:effectStyleLst>
+                            <a:effectStyle>
+                                <a:effectLst/>
+                            </a:effectStyle>
+                            <a:effectStyle>
+                                <a:effectLst/>
+                            </a:effectStyle>
+                            <a:effectStyle>
+                                <a:effectLst>
+                                    <a:outerShdw blurRad="57150" dist="19050" dir="5400000" algn="ctr" rotWithShape="0">
+                                        <a:srgbClr val="000000">
+                                            <a:alpha val="63000"/>
+                                        </a:srgbClr>
+                                    </a:outerShdw>
+                                </a:effectLst>
+                            </a:effectStyle>
+                        </a:effectStyleLst>
+                        <a:bgFillStyleLst>
+                            <a:solidFill>
+                                <a:schemeClr val="phClr"/>
+                            </a:solidFill>
+                            <a:solidFill>
+                                <a:schemeClr val="phClr">
+                                    <a:tint val="95000"/>
+                                    <a:satMod val="170000"/>
+                                </a:schemeClr>
+                            </a:solidFill>
+                            <a:gradFill rotWithShape="1">
+                                <a:gsLst>
+                                    <a:gs pos="0">
+                                        <a:schemeClr val="phClr">
+                                            <a:tint val="93000"/>
+                                            <a:satMod val="150000"/>
+                                            <a:shade val="98000"/>
+                                            <a:lumMod val="102000"/>
+                                        </a:schemeClr>
+                                    </a:gs>
+                                    <a:gs pos="50000">
+                                        <a:schemeClr val="phClr">
+                                            <a:tint val="98000"/>
+                                            <a:satMod val="130000"/>
+                                            <a:shade val="90000"/>
+                                            <a:lumMod val="103000"/>
+                                        </a:schemeClr>
+                                    </a:gs>
+                                    <a:gs pos="100000">
+                                        <a:schemeClr val="phClr">
+                                            <a:shade val="63000"/>
+                                            <a:satMod val="120000"/>
+                                        </a:schemeClr>
+                                    </a:gs>
+                                </a:gsLst>
+                                <a:lin ang="5400000" scaled="0"/>
+                            </a:gradFill>
+                        </a:bgFillStyleLst>
+                    </a:fmtScheme>
+                </a:themeElements>
+                <a:objectDefaults/>
+                <a:extraClrSchemeLst/>
+            </a:theme>
+        </pkg:xmlData>
+    </pkg:part>
+    <pkg:part pkg:name="/word/settings.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.settings+xml">
+        <pkg:xmlData>
+            <w:settings mc:Ignorable="w14 w15"
+                xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+                xmlns:o="urn:schemas-microsoft-com:office:office"
+                xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
+                xmlns:m="http://schemas.openxmlformats.org/officeDocument/2006/math"
+                xmlns:v="urn:schemas-microsoft-com:vml"
+                xmlns:w10="urn:schemas-microsoft-com:office:word"
+                xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
+                xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml"
+                xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml"
+                xmlns:sl="http://schemas.openxmlformats.org/schemaLibrary/2006/main">
+                <w:zoom w:percent="150"/>
+                <w:embedSystemFonts/>
+                <w:defaultTabStop w:val="420"/>
+                <w:drawingGridVerticalSpacing w:val="156"/>
+                <w:noPunctuationKerning/>
+                <w:characterSpacingControl w:val="compressPunctuation"/>
+                <w:compat>
+                    <w:spaceForUL/>
+                    <w:balanceSingleByteDoubleByteWidth/>
+                    <w:doNotLeaveBackslashAlone/>
+                    <w:ulTrailSpace/>
+                    <w:doNotExpandShiftReturn/>
+                    <w:adjustLineHeightInTable/>
+                    <w:doNotWrapTextWithPunct/>
+                    <w:doNotUseEastAsianBreakRules/>
+                    <w:useFELayout/>
+                    <w:doNotUseIndentAsNumberingTabStop/>
+                    <w:compatSetting w:name="compatibilityMode" w:uri="http://schemas.microsoft.com/office/word" w:val="14"/>
+                    <w:compatSetting w:name="overrideTableStyleFontSizeAndJustification" w:uri="http://schemas.microsoft.com/office/word" w:val="1"/>
+                    <w:compatSetting w:name="enableOpenTypeFeatures" w:uri="http://schemas.microsoft.com/office/word" w:val="1"/>
+                    <w:compatSetting w:name="doNotFlipMirrorIndents" w:uri="http://schemas.microsoft.com/office/word" w:val="1"/>
+                </w:compat>
+                <w:docVars>
+                    <w:docVar w:name="commondata" w:val="eyJoZGlkIjoiYmEzYWVmZDg3ZjNiYmRlNTFjMDg5ZWQ2ZjRkZjIwNDEifQ=="/>
+                </w:docVars>
+                <w:rsids>
+                    <w:rsidRoot w:val="EFED13EF"/>
+                    <w:rsid w:val="BE72B45A"/>
+                    <w:rsid w:val="EFED13EF"/>
+                    <w:rsid w:val="00076791"/>
+                    <w:rsid w:val="00620458"/>
+                    <w:rsid w:val="00C5790A"/>
+                    <w:rsid w:val="021D693B"/>
+                    <w:rsid w:val="03604423"/>
+                    <w:rsid w:val="06FE1FBF"/>
+                    <w:rsid w:val="0A0A2D46"/>
+                    <w:rsid w:val="0B0F422C"/>
+                    <w:rsid w:val="17C33D8A"/>
+                    <w:rsid w:val="18E80911"/>
+                    <w:rsid w:val="1AFD5906"/>
+                    <w:rsid w:val="27327532"/>
+                    <w:rsid w:val="278906CB"/>
+                    <w:rsid w:val="2F5C5507"/>
+                    <w:rsid w:val="3DB76EF0"/>
+                    <w:rsid w:val="443025B1"/>
+                    <w:rsid w:val="447332F0"/>
+                    <w:rsid w:val="45631693"/>
+                    <w:rsid w:val="514909B1"/>
+                    <w:rsid w:val="54490585"/>
+                    <w:rsid w:val="56AE03F6"/>
+                    <w:rsid w:val="58E15A05"/>
+                    <w:rsid w:val="5AB613E3"/>
+                    <w:rsid w:val="616E30EF"/>
+                    <w:rsid w:val="68156944"/>
+                    <w:rsid w:val="74691493"/>
+                    <w:rsid w:val="74DE5DD9"/>
+                    <w:rsid w:val="ABD5FA15"/>
+                </w:rsids>
+                <m:mathPr>
+                    <m:mathFont m:val="Cambria Math"/>
+                    <m:brkBin m:val="before"/>
+                    <m:brkBinSub m:val="--"/>
+                    <m:smallFrac m:val="0"/>
+                    <m:dispDef/>
+                    <m:lMargin m:val="0"/>
+                    <m:rMargin m:val="0"/>
+                    <m:defJc m:val="centerGroup"/>
+                    <m:wrapIndent m:val="1440"/>
+                    <m:intLim m:val="subSup"/>
+                    <m:naryLim m:val="undOvr"/>
+                </m:mathPr>
+                <w:themeFontLang w:val="en-US" w:eastAsia="zh-CN"/>
+                <w:clrSchemeMapping w:bg1="light1" w:t1="dark1" w:bg2="light2" w:t2="dark2" w:accent1="accent1" w:accent2="accent2" w:accent3="accent3" w:accent4="accent4" w:accent5="accent5" w:accent6="accent6" w:hyperlink="hyperlink" w:followedHyperlink="followedHyperlink"/>
+                <w:doNotIncludeSubdocsInStats/>
+                <w:shapeDefaults>
+                    <o:shapedefaults v:ext="edit" spidmax="1026"/>
+                    <o:shapelayout v:ext="edit">
+                        <o:idmap v:ext="edit" data="1"/>
+                    </o:shapelayout>
+                </w:shapeDefaults>
+                <w:decimalSymbol w:val="."/>
+                <w:listSeparator w:val=","/>
+                <w15:docId w15:val="{210F0E43-E443-430D-95B8-035342AA09E0}"/>
+            </w:settings>
+        </pkg:xmlData>
+    </pkg:part>
+    <pkg:part pkg:name="/word/fontTable.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.fontTable+xml">
+        <pkg:xmlData>
+            <w:fonts mc:Ignorable="w14 w15"
+                xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+                xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
+                xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
+                xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml"
+                xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml">
+                <w:font w:name="Times New Roman">
+                    <w:panose1 w:val="02020603050405020304"/>
+                    <w:charset w:val="00"/>
+                    <w:family w:val="roman"/>
+                    <w:pitch w:val="variable"/>
+                    <w:sig w:usb0="E0002EFF" w:usb1="C000785B" w:usb2="00000009" w:usb3="00000000" w:csb0="000001FF" w:csb1="00000000"/>
+                </w:font>
+                <w:font w:name="宋体">
+                    <w:altName w:val="SimSun"/>
+                    <w:panose1 w:val="02010600030101010101"/>
+                    <w:charset w:val="86"/>
+                    <w:family w:val="auto"/>
+                    <w:pitch w:val="variable"/>
+                    <w:sig w:usb0="00000003" w:usb1="288F0000" w:usb2="00000016" w:usb3="00000000" w:csb0="00040001" w:csb1="00000000"/>
+                </w:font>
+                <w:font w:name="Calibri">
+                    <w:panose1 w:val="020F0502020204030204"/>
+                    <w:charset w:val="00"/>
+                    <w:family w:val="swiss"/>
+                    <w:pitch w:val="variable"/>
+                    <w:sig w:usb0="E4002EFF" w:usb1="C000247B" w:usb2="00000009" w:usb3="00000000" w:csb0="000001FF" w:csb1="00000000"/>
+                </w:font>
+                <w:font w:name="Calibri Light">
+                    <w:panose1 w:val="020F0302020204030204"/>
+                    <w:charset w:val="00"/>
+                    <w:family w:val="swiss"/>
+                    <w:pitch w:val="variable"/>
+                    <w:sig w:usb0="E4002EFF" w:usb1="C000247B" w:usb2="00000009" w:usb3="00000000" w:csb0="000001FF" w:csb1="00000000"/>
+                </w:font>
+            </w:fonts>
+        </pkg:xmlData>
+    </pkg:part>
+    <pkg:part pkg:name="/word/webSettings.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.webSettings+xml">
+        <pkg:xmlData>
+            <w:webSettings mc:Ignorable="w14 w15"
+                xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+                xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
+                xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
+                xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml"
+                xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml"/>
+            </pkg:xmlData>
+        </pkg:part>
+        <pkg:part pkg:name="/docProps/app.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.extended-properties+xml" pkg:padding="256">
+            <pkg:xmlData>
+                <Properties
+                    xmlns="http://schemas.openxmlformats.org/officeDocument/2006/extended-properties"
+                    xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">
+                    <Template>Normal.dotm</Template>
+                    <TotalTime>0</TotalTime>
+                    <Pages>8</Pages>
+                    <Words>1235</Words>
+                    <Characters>7044</Characters>
+                    <Application>Microsoft Office Word</Application>
+                    <DocSecurity>0</DocSecurity>
+                    <Lines>58</Lines>
+                    <Paragraphs>16</Paragraphs>
+                    <ScaleCrop>false</ScaleCrop>
+                    <Company/>
+                    <LinksUpToDate>false</LinksUpToDate>
+                    <CharactersWithSpaces>8263</CharactersWithSpaces>
+                    <SharedDoc>false</SharedDoc>
+                    <HyperlinksChanged>false</HyperlinksChanged>
+                    <AppVersion>15.0000</AppVersion>
+                </Properties>
+            </pkg:xmlData>
+        </pkg:part>
+        <pkg:part pkg:name="/word/styles.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.wordprocessingml.styles+xml">
+            <pkg:xmlData>
+                <w:styles mc:Ignorable="w14 w15"
+                    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
+                    xmlns:r="http://schemas.openxmlformats.org/officeDocument/2006/relationships"
+                    xmlns:w="http://schemas.openxmlformats.org/wordprocessingml/2006/main"
+                    xmlns:w14="http://schemas.microsoft.com/office/word/2010/wordml"
+                    xmlns:w15="http://schemas.microsoft.com/office/word/2012/wordml">
+                    <w:docDefaults>
+                        <w:rPrDefault>
+                            <w:rPr>
+                                <w:rFonts w:ascii="Times New Roman" w:eastAsia="宋体" w:hAnsi="Times New Roman" w:cs="Times New Roman"/>
+                                <w:lang w:val="en-US" w:eastAsia="zh-CN" w:bidi="ar-SA"/>
+                            </w:rPr>
+                        </w:rPrDefault>
+                        <w:pPrDefault/>
+                    </w:docDefaults>
+                    <w:latentStyles w:defLockedState="0" w:defUIPriority="0" w:defSemiHidden="0" w:defUnhideWhenUsed="0" w:defQFormat="0" w:count="371">
+                        <w:lsdException w:name="Normal" w:qFormat="1"/>
+                        <w:lsdException w:name="heading 1" w:qFormat="1"/>
+                        <w:lsdException w:name="heading 2" w:semiHidden="1" w:unhideWhenUsed="1" w:qFormat="1"/>
+                        <w:lsdException w:name="heading 3" w:semiHidden="1" w:unhideWhenUsed="1" w:qFormat="1"/>
+                        <w:lsdException w:name="heading 4" w:semiHidden="1" w:unhideWhenUsed="1" w:qFormat="1"/>
+                        <w:lsdException w:name="heading 5" w:semiHidden="1" w:unhideWhenUsed="1" w:qFormat="1"/>
+                        <w:lsdException w:name="heading 6" w:semiHidden="1" w:unhideWhenUsed="1" w:qFormat="1"/>
+                        <w:lsdException w:name="heading 7" w:semiHidden="1" w:unhideWhenUsed="1" w:qFormat="1"/>
+                        <w:lsdException w:name="heading 8" w:semiHidden="1" w:unhideWhenUsed="1" w:qFormat="1"/>
+                        <w:lsdException w:name="heading 9" w:semiHidden="1" w:unhideWhenUsed="1" w:qFormat="1"/>
+                        <w:lsdException w:name="caption" w:semiHidden="1" w:unhideWhenUsed="1" w:qFormat="1"/>
+                        <w:lsdException w:name="Title" w:qFormat="1"/>
+                        <w:lsdException w:name="Default Paragraph Font" w:semiHidden="1" w:qFormat="1"/>
+                        <w:lsdException w:name="Subtitle" w:qFormat="1"/>
+                        <w:lsdException w:name="Strong" w:qFormat="1"/>
+                        <w:lsdException w:name="Emphasis" w:qFormat="1"/>
+                        <w:lsdException w:name="HTML Top of Form" w:semiHidden="1" w:uiPriority="99" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="HTML Bottom of Form" w:semiHidden="1" w:uiPriority="99" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Normal Table" w:semiHidden="1" w:unhideWhenUsed="1" w:qFormat="1"/>
+                        <w:lsdException w:name="No List" w:semiHidden="1" w:uiPriority="99" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Outline List 1" w:semiHidden="1" w:uiPriority="99" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Outline List 2" w:semiHidden="1" w:uiPriority="99" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Outline List 3" w:semiHidden="1" w:uiPriority="99" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Simple 1" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Simple 2" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Simple 3" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Classic 1" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Classic 2" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Classic 3" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Classic 4" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Colorful 1" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Colorful 2" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Colorful 3" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Columns 1" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Columns 2" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Columns 3" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Columns 4" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Columns 5" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Grid 1" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Grid 2" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Grid 3" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Grid 4" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Grid 5" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Grid 6" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Grid 7" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Grid 8" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table List 1" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table List 2" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table List 3" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table List 4" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table List 5" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table List 6" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table List 7" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table List 8" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table 3D effects 1" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table 3D effects 2" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table 3D effects 3" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Contemporary" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Elegant" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Professional" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Subtle 1" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Subtle 2" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Web 1" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Web 2" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Web 3" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Grid" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Table Theme" w:semiHidden="1" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="Placeholder Text" w:semiHidden="1" w:uiPriority="99"/>
+                        <w:lsdException w:name="No Spacing" w:uiPriority="99"/>
+                        <w:lsdException w:name="Light Shading" w:uiPriority="60"/>
+                        <w:lsdException w:name="Light List" w:uiPriority="61"/>
+                        <w:lsdException w:name="Light Grid" w:uiPriority="62"/>
+                        <w:lsdException w:name="Medium Shading 1" w:uiPriority="63"/>
+                        <w:lsdException w:name="Medium Shading 2" w:uiPriority="64"/>
+                        <w:lsdException w:name="Medium List 1" w:uiPriority="65"/>
+                        <w:lsdException w:name="Medium List 2" w:uiPriority="66"/>
+                        <w:lsdException w:name="Medium Grid 1" w:uiPriority="67"/>
+                        <w:lsdException w:name="Medium Grid 2" w:uiPriority="68"/>
+                        <w:lsdException w:name="Medium Grid 3" w:uiPriority="69"/>
+                        <w:lsdException w:name="Dark List" w:uiPriority="70"/>
+                        <w:lsdException w:name="Colorful Shading" w:uiPriority="71"/>
+                        <w:lsdException w:name="Colorful List" w:uiPriority="72"/>
+                        <w:lsdException w:name="Colorful Grid" w:uiPriority="73"/>
+                        <w:lsdException w:name="Light Shading Accent 1" w:uiPriority="60"/>
+                        <w:lsdException w:name="Light List Accent 1" w:uiPriority="61"/>
+                        <w:lsdException w:name="Light Grid Accent 1" w:uiPriority="62"/>
+                        <w:lsdException w:name="Medium Shading 1 Accent 1" w:uiPriority="63"/>
+                        <w:lsdException w:name="Medium Shading 2 Accent 1" w:uiPriority="64"/>
+                        <w:lsdException w:name="Medium List 1 Accent 1" w:uiPriority="65"/>
+                        <w:lsdException w:name="Revision" w:semiHidden="1" w:uiPriority="99"/>
+                        <w:lsdException w:name="List Paragraph" w:uiPriority="99"/>
+                        <w:lsdException w:name="Quote" w:uiPriority="99"/>
+                        <w:lsdException w:name="Intense Quote" w:uiPriority="99"/>
+                        <w:lsdException w:name="Medium List 2 Accent 1" w:uiPriority="66"/>
+                        <w:lsdException w:name="Medium Grid 1 Accent 1" w:uiPriority="67"/>
+                        <w:lsdException w:name="Medium Grid 2 Accent 1" w:uiPriority="68"/>
+                        <w:lsdException w:name="Medium Grid 3 Accent 1" w:uiPriority="69"/>
+                        <w:lsdException w:name="Dark List Accent 1" w:uiPriority="70"/>
+                        <w:lsdException w:name="Colorful Shading Accent 1" w:uiPriority="71"/>
+                        <w:lsdException w:name="Colorful List Accent 1" w:uiPriority="72"/>
+                        <w:lsdException w:name="Colorful Grid Accent 1" w:uiPriority="73"/>
+                        <w:lsdException w:name="Light Shading Accent 2" w:uiPriority="60"/>
+                        <w:lsdException w:name="Light List Accent 2" w:uiPriority="61"/>
+                        <w:lsdException w:name="Light Grid Accent 2" w:uiPriority="62"/>
+                        <w:lsdException w:name="Medium Shading 1 Accent 2" w:uiPriority="63"/>
+                        <w:lsdException w:name="Medium Shading 2 Accent 2" w:uiPriority="64"/>
+                        <w:lsdException w:name="Medium List 1 Accent 2" w:uiPriority="65"/>
+                        <w:lsdException w:name="Medium List 2 Accent 2" w:uiPriority="66"/>
+                        <w:lsdException w:name="Medium Grid 1 Accent 2" w:uiPriority="67"/>
+                        <w:lsdException w:name="Medium Grid 2 Accent 2" w:uiPriority="68"/>
+                        <w:lsdException w:name="Medium Grid 3 Accent 2" w:uiPriority="69"/>
+                        <w:lsdException w:name="Dark List Accent 2" w:uiPriority="70"/>
+                        <w:lsdException w:name="Colorful Shading Accent 2" w:uiPriority="71"/>
+                        <w:lsdException w:name="Colorful List Accent 2" w:uiPriority="72"/>
+                        <w:lsdException w:name="Colorful Grid Accent 2" w:uiPriority="73"/>
+                        <w:lsdException w:name="Light Shading Accent 3" w:uiPriority="60"/>
+                        <w:lsdException w:name="Light List Accent 3" w:uiPriority="61"/>
+                        <w:lsdException w:name="Light Grid Accent 3" w:uiPriority="62"/>
+                        <w:lsdException w:name="Medium Shading 1 Accent 3" w:uiPriority="63"/>
+                        <w:lsdException w:name="Medium Shading 2 Accent 3" w:uiPriority="64"/>
+                        <w:lsdException w:name="Medium List 1 Accent 3" w:uiPriority="65"/>
+                        <w:lsdException w:name="Medium List 2 Accent 3" w:uiPriority="66"/>
+                        <w:lsdException w:name="Medium Grid 1 Accent 3" w:uiPriority="67"/>
+                        <w:lsdException w:name="Medium Grid 2 Accent 3" w:uiPriority="68"/>
+                        <w:lsdException w:name="Medium Grid 3 Accent 3" w:uiPriority="69"/>
+                        <w:lsdException w:name="Dark List Accent 3" w:uiPriority="70"/>
+                        <w:lsdException w:name="Colorful Shading Accent 3" w:uiPriority="71"/>
+                        <w:lsdException w:name="Colorful List Accent 3" w:uiPriority="72"/>
+                        <w:lsdException w:name="Colorful Grid Accent 3" w:uiPriority="73"/>
+                        <w:lsdException w:name="Light Shading Accent 4" w:uiPriority="60"/>
+                        <w:lsdException w:name="Light List Accent 4" w:uiPriority="61"/>
+                        <w:lsdException w:name="Light Grid Accent 4" w:uiPriority="62"/>
+                        <w:lsdException w:name="Medium Shading 1 Accent 4" w:uiPriority="63"/>
+                        <w:lsdException w:name="Medium Shading 2 Accent 4" w:uiPriority="64"/>
+                        <w:lsdException w:name="Medium List 1 Accent 4" w:uiPriority="65"/>
+                        <w:lsdException w:name="Medium List 2 Accent 4" w:uiPriority="66"/>
+                        <w:lsdException w:name="Medium Grid 1 Accent 4" w:uiPriority="67"/>
+                        <w:lsdException w:name="Medium Grid 2 Accent 4" w:uiPriority="68"/>
+                        <w:lsdException w:name="Medium Grid 3 Accent 4" w:uiPriority="69"/>
+                        <w:lsdException w:name="Dark List Accent 4" w:uiPriority="70"/>
+                        <w:lsdException w:name="Colorful Shading Accent 4" w:uiPriority="71"/>
+                        <w:lsdException w:name="Colorful List Accent 4" w:uiPriority="72"/>
+                        <w:lsdException w:name="Colorful Grid Accent 4" w:uiPriority="73"/>
+                        <w:lsdException w:name="Light Shading Accent 5" w:uiPriority="60"/>
+                        <w:lsdException w:name="Light List Accent 5" w:uiPriority="61"/>
+                        <w:lsdException w:name="Light Grid Accent 5" w:uiPriority="62"/>
+                        <w:lsdException w:name="Medium Shading 1 Accent 5" w:uiPriority="63"/>
+                        <w:lsdException w:name="Medium Shading 2 Accent 5" w:uiPriority="64"/>
+                        <w:lsdException w:name="Medium List 1 Accent 5" w:uiPriority="65"/>
+                        <w:lsdException w:name="Medium List 2 Accent 5" w:uiPriority="66"/>
+                        <w:lsdException w:name="Medium Grid 1 Accent 5" w:uiPriority="67"/>
+                        <w:lsdException w:name="Medium Grid 2 Accent 5" w:uiPriority="68"/>
+                        <w:lsdException w:name="Medium Grid 3 Accent 5" w:uiPriority="69"/>
+                        <w:lsdException w:name="Dark List Accent 5" w:uiPriority="70"/>
+                        <w:lsdException w:name="Colorful Shading Accent 5" w:uiPriority="71"/>
+                        <w:lsdException w:name="Colorful List Accent 5" w:uiPriority="72"/>
+                        <w:lsdException w:name="Colorful Grid Accent 5" w:uiPriority="73"/>
+                        <w:lsdException w:name="Light Shading Accent 6" w:uiPriority="60"/>
+                        <w:lsdException w:name="Light List Accent 6" w:uiPriority="61"/>
+                        <w:lsdException w:name="Light Grid Accent 6" w:uiPriority="62"/>
+                        <w:lsdException w:name="Medium Shading 1 Accent 6" w:uiPriority="63"/>
+                        <w:lsdException w:name="Medium Shading 2 Accent 6" w:uiPriority="64"/>
+                        <w:lsdException w:name="Medium List 1 Accent 6" w:uiPriority="65"/>
+                        <w:lsdException w:name="Medium List 2 Accent 6" w:uiPriority="66"/>
+                        <w:lsdException w:name="Medium Grid 1 Accent 6" w:uiPriority="67"/>
+                        <w:lsdException w:name="Medium Grid 2 Accent 6" w:uiPriority="68"/>
+                        <w:lsdException w:name="Medium Grid 3 Accent 6" w:uiPriority="69"/>
+                        <w:lsdException w:name="Dark List Accent 6" w:uiPriority="70"/>
+                        <w:lsdException w:name="Colorful Shading Accent 6" w:uiPriority="71"/>
+                        <w:lsdException w:name="Colorful List Accent 6" w:uiPriority="72"/>
+                        <w:lsdException w:name="Colorful Grid Accent 6" w:uiPriority="73"/>
+                        <w:lsdException w:name="Subtle Emphasis" w:uiPriority="19" w:qFormat="1"/>
+                        <w:lsdException w:name="Intense Emphasis" w:uiPriority="21" w:qFormat="1"/>
+                        <w:lsdException w:name="Subtle Reference" w:uiPriority="31" w:qFormat="1"/>
+                        <w:lsdException w:name="Intense Reference" w:uiPriority="32" w:qFormat="1"/>
+                        <w:lsdException w:name="Book Title" w:uiPriority="33" w:qFormat="1"/>
+                        <w:lsdException w:name="Bibliography" w:semiHidden="1" w:uiPriority="37" w:unhideWhenUsed="1"/>
+                        <w:lsdException w:name="TOC Heading" w:semiHidden="1" w:uiPriority="39" w:unhideWhenUsed="1" w:qFormat="1"/>
+                        <w:lsdException w:name="Plain Table 1" w:uiPriority="41"/>
+                        <w:lsdException w:name="Plain Table 2" w:uiPriority="42"/>
+                        <w:lsdException w:name="Plain Table 3" w:uiPriority="43"/>
+                        <w:lsdException w:name="Plain Table 4" w:uiPriority="44"/>
+                        <w:lsdException w:name="Plain Table 5" w:uiPriority="45"/>
+                        <w:lsdException w:name="Grid Table Light" w:uiPriority="40"/>
+                        <w:lsdException w:name="Grid Table 1 Light" w:uiPriority="46"/>
+                        <w:lsdException w:name="Grid Table 2" w:uiPriority="47"/>
+                        <w:lsdException w:name="Grid Table 3" w:uiPriority="48"/>
+                        <w:lsdException w:name="Grid Table 4" w:uiPriority="49"/>
+                        <w:lsdException w:name="Grid Table 5 Dark" w:uiPriority="50"/>
+                        <w:lsdException w:name="Grid Table 6 Colorful" w:uiPriority="51"/>
+                        <w:lsdException w:name="Grid Table 7 Colorful" w:uiPriority="52"/>
+                        <w:lsdException w:name="Grid Table 1 Light Accent 1" w:uiPriority="46"/>
+                        <w:lsdException w:name="Grid Table 2 Accent 1" w:uiPriority="47"/>
+                        <w:lsdException w:name="Grid Table 3 Accent 1" w:uiPriority="48"/>
+                        <w:lsdException w:name="Grid Table 4 Accent 1" w:uiPriority="49"/>
+                        <w:lsdException w:name="Grid Table 5 Dark Accent 1" w:uiPriority="50"/>
+                        <w:lsdException w:name="Grid Table 6 Colorful Accent 1" w:uiPriority="51"/>
+                        <w:lsdException w:name="Grid Table 7 Colorful Accent 1" w:uiPriority="52"/>
+                        <w:lsdException w:name="Grid Table 1 Light Accent 2" w:uiPriority="46"/>
+                        <w:lsdException w:name="Grid Table 2 Accent 2" w:uiPriority="47"/>
+                        <w:lsdException w:name="Grid Table 3 Accent 2" w:uiPriority="48"/>
+                        <w:lsdException w:name="Grid Table 4 Accent 2" w:uiPriority="49"/>
+                        <w:lsdException w:name="Grid Table 5 Dark Accent 2" w:uiPriority="50"/>
+                        <w:lsdException w:name="Grid Table 6 Colorful Accent 2" w:uiPriority="51"/>
+                        <w:lsdException w:name="Grid Table 7 Colorful Accent 2" w:uiPriority="52"/>
+                        <w:lsdException w:name="Grid Table 1 Light Accent 3" w:uiPriority="46"/>
+                        <w:lsdException w:name="Grid Table 2 Accent 3" w:uiPriority="47"/>
+                        <w:lsdException w:name="Grid Table 3 Accent 3" w:uiPriority="48"/>
+                        <w:lsdException w:name="Grid Table 4 Accent 3" w:uiPriority="49"/>
+                        <w:lsdException w:name="Grid Table 5 Dark Accent 3" w:uiPriority="50"/>
+                        <w:lsdException w:name="Grid Table 6 Colorful Accent 3" w:uiPriority="51"/>
+                        <w:lsdException w:name="Grid Table 7 Colorful Accent 3" w:uiPriority="52"/>
+                        <w:lsdException w:name="Grid Table 1 Light Accent 4" w:uiPriority="46"/>
+                        <w:lsdException w:name="Grid Table 2 Accent 4" w:uiPriority="47"/>
+                        <w:lsdException w:name="Grid Table 3 Accent 4" w:uiPriority="48"/>
+                        <w:lsdException w:name="Grid Table 4 Accent 4" w:uiPriority="49"/>
+                        <w:lsdException w:name="Grid Table 5 Dark Accent 4" w:uiPriority="50"/>
+                        <w:lsdException w:name="Grid Table 6 Colorful Accent 4" w:uiPriority="51"/>
+                        <w:lsdException w:name="Grid Table 7 Colorful Accent 4" w:uiPriority="52"/>
+                        <w:lsdException w:name="Grid Table 1 Light Accent 5" w:uiPriority="46"/>
+                        <w:lsdException w:name="Grid Table 2 Accent 5" w:uiPriority="47"/>
+                        <w:lsdException w:name="Grid Table 3 Accent 5" w:uiPriority="48"/>
+                        <w:lsdException w:name="Grid Table 4 Accent 5" w:uiPriority="49"/>
+                        <w:lsdException w:name="Grid Table 5 Dark Accent 5" w:uiPriority="50"/>
+                        <w:lsdException w:name="Grid Table 6 Colorful Accent 5" w:uiPriority="51"/>
+                        <w:lsdException w:name="Grid Table 7 Colorful Accent 5" w:uiPriority="52"/>
+                        <w:lsdException w:name="Grid Table 1 Light Accent 6" w:uiPriority="46"/>
+                        <w:lsdException w:name="Grid Table 2 Accent 6" w:uiPriority="47"/>
+                        <w:lsdException w:name="Grid Table 3 Accent 6" w:uiPriority="48"/>
+                        <w:lsdException w:name="Grid Table 4 Accent 6" w:uiPriority="49"/>
+                        <w:lsdException w:name="Grid Table 5 Dark Accent 6" w:uiPriority="50"/>
+                        <w:lsdException w:name="Grid Table 6 Colorful Accent 6" w:uiPriority="51"/>
+                        <w:lsdException w:name="Grid Table 7 Colorful Accent 6" w:uiPriority="52"/>
+                        <w:lsdException w:name="List Table 1 Light" w:uiPriority="46"/>
+                        <w:lsdException w:name="List Table 2" w:uiPriority="47"/>
+                        <w:lsdException w:name="List Table 3" w:uiPriority="48"/>
+                        <w:lsdException w:name="List Table 4" w:uiPriority="49"/>
+                        <w:lsdException w:name="List Table 5 Dark" w:uiPriority="50"/>
+                        <w:lsdException w:name="List Table 6 Colorful" w:uiPriority="51"/>
+                        <w:lsdException w:name="List Table 7 Colorful" w:uiPriority="52"/>
+                        <w:lsdException w:name="List Table 1 Light Accent 1" w:uiPriority="46"/>
+                        <w:lsdException w:name="List Table 2 Accent 1" w:uiPriority="47"/>
+                        <w:lsdException w:name="List Table 3 Accent 1" w:uiPriority="48"/>
+                        <w:lsdException w:name="List Table 4 Accent 1" w:uiPriority="49"/>
+                        <w:lsdException w:name="List Table 5 Dark Accent 1" w:uiPriority="50"/>
+                        <w:lsdException w:name="List Table 6 Colorful Accent 1" w:uiPriority="51"/>
+                        <w:lsdException w:name="List Table 7 Colorful Accent 1" w:uiPriority="52"/>
+                        <w:lsdException w:name="List Table 1 Light Accent 2" w:uiPriority="46"/>
+                        <w:lsdException w:name="List Table 2 Accent 2" w:uiPriority="47"/>
+                        <w:lsdException w:name="List Table 3 Accent 2" w:uiPriority="48"/>
+                        <w:lsdException w:name="List Table 4 Accent 2" w:uiPriority="49"/>
+                        <w:lsdException w:name="List Table 5 Dark Accent 2" w:uiPriority="50"/>
+                        <w:lsdException w:name="List Table 6 Colorful Accent 2" w:uiPriority="51"/>
+                        <w:lsdException w:name="List Table 7 Colorful Accent 2" w:uiPriority="52"/>
+                        <w:lsdException w:name="List Table 1 Light Accent 3" w:uiPriority="46"/>
+                        <w:lsdException w:name="List Table 2 Accent 3" w:uiPriority="47"/>
+                        <w:lsdException w:name="List Table 3 Accent 3" w:uiPriority="48"/>
+                        <w:lsdException w:name="List Table 4 Accent 3" w:uiPriority="49"/>
+                        <w:lsdException w:name="List Table 5 Dark Accent 3" w:uiPriority="50"/>
+                        <w:lsdException w:name="List Table 6 Colorful Accent 3" w:uiPriority="51"/>
+                        <w:lsdException w:name="List Table 7 Colorful Accent 3" w:uiPriority="52"/>
+                        <w:lsdException w:name="List Table 1 Light Accent 4" w:uiPriority="46"/>
+                        <w:lsdException w:name="List Table 2 Accent 4" w:uiPriority="47"/>
+                        <w:lsdException w:name="List Table 3 Accent 4" w:uiPriority="48"/>
+                        <w:lsdException w:name="List Table 4 Accent 4" w:uiPriority="49"/>
+                        <w:lsdException w:name="List Table 5 Dark Accent 4" w:uiPriority="50"/>
+                        <w:lsdException w:name="List Table 6 Colorful Accent 4" w:uiPriority="51"/>
+                        <w:lsdException w:name="List Table 7 Colorful Accent 4" w:uiPriority="52"/>
+                        <w:lsdException w:name="List Table 1 Light Accent 5" w:uiPriority="46"/>
+                        <w:lsdException w:name="List Table 2 Accent 5" w:uiPriority="47"/>
+                        <w:lsdException w:name="List Table 3 Accent 5" w:uiPriority="48"/>
+                        <w:lsdException w:name="List Table 4 Accent 5" w:uiPriority="49"/>
+                        <w:lsdException w:name="List Table 5 Dark Accent 5" w:uiPriority="50"/>
+                        <w:lsdException w:name="List Table 6 Colorful Accent 5" w:uiPriority="51"/>
+                        <w:lsdException w:name="List Table 7 Colorful Accent 5" w:uiPriority="52"/>
+                        <w:lsdException w:name="List Table 1 Light Accent 6" w:uiPriority="46"/>
+                        <w:lsdException w:name="List Table 2 Accent 6" w:uiPriority="47"/>
+                        <w:lsdException w:name="List Table 3 Accent 6" w:uiPriority="48"/>
+                        <w:lsdException w:name="List Table 4 Accent 6" w:uiPriority="49"/>
+                        <w:lsdException w:name="List Table 5 Dark Accent 6" w:uiPriority="50"/>
+                        <w:lsdException w:name="List Table 6 Colorful Accent 6" w:uiPriority="51"/>
+                        <w:lsdException w:name="List Table 7 Colorful Accent 6" w:uiPriority="52"/>
+                    </w:latentStyles>
+                    <w:style w:type="paragraph" w:default="1" w:styleId="a">
+                        <w:name w:val="Normal"/>
+                        <w:qFormat/>
+                        <w:pPr>
+                            <w:widowControl w:val="0"/>
+                            <w:jc w:val="both"/>
+                        </w:pPr>
+                        <w:rPr>
+                            <w:rFonts w:asciiTheme="minorHAnsi" w:eastAsiaTheme="minorEastAsia" w:hAnsiTheme="minorHAnsi" w:cstheme="minorBidi"/>
+                            <w:kern w:val="2"/>
+                            <w:sz w:val="21"/>
+                            <w:szCs w:val="24"/>
+                        </w:rPr>
+                    </w:style>
+                    <w:style w:type="character" w:default="1" w:styleId="a0">
+                        <w:name w:val="Default Paragraph Font"/>
+                        <w:uiPriority w:val="1"/>
+                        <w:semiHidden/>
+                        <w:unhideWhenUsed/>
+                    </w:style>
+                    <w:style w:type="table" w:default="1" w:styleId="a1">
+                        <w:name w:val="Normal Table"/>
+                        <w:uiPriority w:val="99"/>
+                        <w:semiHidden/>
+                        <w:unhideWhenUsed/>
+                        <w:tblPr>
+                            <w:tblInd w:w="0" w:type="dxa"/>
+                            <w:tblCellMar>
+                                <w:top w:w="0" w:type="dxa"/>
+                                <w:left w:w="108" w:type="dxa"/>
+                                <w:bottom w:w="0" w:type="dxa"/>
+                                <w:right w:w="108" w:type="dxa"/>
+                            </w:tblCellMar>
+                        </w:tblPr>
+                    </w:style>
+                    <w:style w:type="numbering" w:default="1" w:styleId="a2">
+                        <w:name w:val="No List"/>
+                        <w:uiPriority w:val="99"/>
+                        <w:semiHidden/>
+                        <w:unhideWhenUsed/>
+                    </w:style>
+                </w:styles>
+            </pkg:xmlData>
+        </pkg:part>
+        <pkg:part pkg:name="/docProps/core.xml" pkg:contentType="application/vnd.openxmlformats-package.core-properties+xml" pkg:padding="256">
+            <pkg:xmlData>
+                <cp:coreProperties
+                    xmlns:cp="http://schemas.openxmlformats.org/package/2006/metadata/core-properties"
+                    xmlns:dc="http://purl.org/dc/elements/1.1/"
+                    xmlns:dcterms="http://purl.org/dc/terms/"
+                    xmlns:dcmitype="http://purl.org/dc/dcmitype/"
+                    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
+                    <dc:creator>多元升学</dc:creator>
+                    <cp:lastModifiedBy>金锂志愿</cp:lastModifiedBy>
+                    <cp:revision>2</cp:revision>
+                    <dcterms:created xsi:type="dcterms:W3CDTF">2023-08-06T01:58:00Z</dcterms:created>
+                    <dcterms:modified xsi:type="dcterms:W3CDTF">2023-08-06T01:58:00Z</dcterms:modified>
+                </cp:coreProperties>
+            </pkg:xmlData>
+        </pkg:part>
+        <pkg:part pkg:name="/docProps/custom.xml" pkg:contentType="application/vnd.openxmlformats-officedocument.custom-properties+xml" pkg:padding="256">
+            <pkg:xmlData>
+                <Properties
+                    xmlns="http://schemas.openxmlformats.org/officeDocument/2006/custom-properties"
+                    xmlns:vt="http://schemas.openxmlformats.org/officeDocument/2006/docPropsVTypes">
+                    <property fmtid="{D5CDD505-2E9C-101B-9397-08002B2CF9AE}" pid="2" name="KSOProductBuildVer">
+                        <vt:lpwstr>2052-11.1.0.11636</vt:lpwstr>
+                    </property>
+                    <property fmtid="{D5CDD505-2E9C-101B-9397-08002B2CF9AE}" pid="3" name="ICV">
+                        <vt:lpwstr>78F261B5357B67F57EC938645568E900</vt:lpwstr>
+                    </property>
+                </Properties>
+            </pkg:xmlData>
+        </pkg:part>
+    </pkg:package>

BIN
ie-admin/src/main/resources/templates/wish_template.xlsx


+ 22 - 1
ie-common/src/main/java/com/ruoyi/common/core/content/VistorContextHolder.java

@@ -3,6 +3,10 @@ package com.ruoyi.common.core.content;
 
 import com.ruoyi.common.core.domain.entity.SysUser;
 import com.ruoyi.common.enums.ExamType;
+import org.apache.commons.lang3.StringUtils;
+
+import java.io.UnsupportedEncodingException;
+import java.net.URLDecoder;
 
 /**
  * 身份验证信息
@@ -33,6 +37,23 @@ public class VistorContextHolder
     }
 
     public static String getLocation() {
-        return getContext().getLocation();
+        SysUser context = getContext();
+        if (context == null) {
+            return null;
+        }
+        String location = context.getLocation();
+        if (StringUtils.isBlank(location)) {
+            return location;
+        }
+        // 如果 location 是 URL 编码的(包含 %),则进行解码
+        if (location.contains("%")) {
+            try {
+                return URLDecoder.decode(location, "UTF-8");
+            } catch (UnsupportedEncodingException e) {
+                // 如果解码失败,返回原始值
+                return location;
+            }
+        }
+        return location;
     }
 }

+ 59 - 6
ie-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java

@@ -137,8 +137,20 @@ public class SysUser extends BaseEntity
     /** 考试成绩  {} **/
     private SubjectScore scores;
 
-    /** 选科ID **/
-    private Integer selectSubject;
+    /** 考生专业类别 **/
+    private Integer examMajor;
+
+    /** 分数 */
+    private Integer score;
+
+    /** 分数锁定 */
+    private Integer scoreLock;
+
+    /** 用户位次 */
+    private Integer seatInput;
+
+    /** 考生专业类别名称 */
+    private String examMajorName;
 
     @JsonIgnore
     private String directedStudy;
@@ -146,6 +158,7 @@ public class SysUser extends BaseEntity
     @JsonIgnore
     private String evalCounts;
 
+    private Integer bindStatus;
     private Long cardId;
     private Integer classSelect;
 
@@ -514,12 +527,44 @@ public class SysUser extends BaseEntity
         this.scores = scores;
     }
 
-    public Integer getSelectSubject() {
-        return selectSubject;
+    public Integer getExamMajor() {
+        return examMajor;
+    }
+
+    public void setExamMajor(Integer examMajor) {
+        this.examMajor = examMajor;
+    }
+
+    public Integer getScore() {
+        return score;
+    }
+
+    public void setScore(Integer score) {
+        this.score = score;
+    }
+
+    public Integer getScoreLock() {
+        return scoreLock;
     }
 
-    public void setSelectSubject(Integer selectSubject) {
-        this.selectSubject = selectSubject;
+    public void setScoreLock(Integer scoreLock) {
+        this.scoreLock = scoreLock;
+    }
+
+    public Integer getSeatInput() {
+        return seatInput;
+    }
+
+    public void setSeatInput(Integer seatInput) {
+        this.seatInput = seatInput;
+    }
+
+    public String getExamMajorName() {
+        return examMajorName;
+    }
+
+    public void setExamMajorName(String examMajorName) {
+        this.examMajorName = examMajorName;
     }
 
     public String getDirectedStudy() {
@@ -610,6 +655,14 @@ public class SysUser extends BaseEntity
         this.evalCounts = evalCounts;
     }
 
+    public Integer getBindStatus() {
+        return bindStatus;
+    }
+
+    public void setBindStatus(Integer bindStatus) {
+        this.bindStatus = bindStatus;
+    }
+
     public String getCode() {
         return String.valueOf(userId);
     }

+ 2 - 0
ie-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java

@@ -21,6 +21,8 @@ public class RegisterBody extends LoginBody
     String location;
     @ApiModelProperty(value = "考生类型字典", example = "OHS")
     ExamType examType;
+    @ApiModelProperty(value = "专业科目类型", example = "1")
+    Integer examMajor;
     @ApiModelProperty(value = "毕业年份", example = "2028")
     Integer endYear;
     @ApiModelProperty("邀请码")

+ 21 - 0
ie-common/src/main/java/com/ruoyi/common/enums/BindStatus.java

@@ -0,0 +1,21 @@
+package com.ruoyi.common.enums;
+
+import lombok.AllArgsConstructor;
+
+@AllArgsConstructor
+public enum BindStatus {
+    None(0, "未绑定"),
+    Pend(1, "待绑定确认"),
+    Bind(2, "绑定成功");
+
+    public Integer code() {
+        return code;
+    }
+
+    public String title() {
+        return title;
+    }
+
+    private final Integer code;
+    private final String title;
+}

+ 61 - 0
ie-common/src/main/java/com/ruoyi/common/enums/ECardPayStatus.java

@@ -0,0 +1,61 @@
+package com.ruoyi.common.enums;
+
+public enum ECardPayStatus {
+    refund(-2, "已退费"),
+    payFailed(-1, "支付失败"),
+    payInvalid(0, "无效"),
+    unpaid(1, "未支付"),
+    paid(2, "已支付");
+
+    private Integer value;
+    private String remark;
+
+    private ECardPayStatus(Integer value, String remark) {
+        this.value = value;
+        this.remark = remark;
+    }
+
+    public Integer getValue() {
+        return value;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public static ECardPayStatus getByValue(String value) {
+        for (ECardPayStatus o : ECardPayStatus.values()) {
+            if (o.getValue().equals(value)) {
+                return o;
+            }
+        }
+        return null;
+    }
+
+    public static Boolean isSuccess(Object value) {
+        if (value instanceof String) {
+            return paid.name().equalsIgnoreCase(String.valueOf(value));
+        }else if (value instanceof Integer) {
+            return paid.getValue()==Integer.parseInt(String.valueOf(value));
+        }
+        return false;
+    }
+
+    public static Boolean isFaild(Object value) {
+        if (value instanceof String) {
+            return payFailed.name().equalsIgnoreCase(String.valueOf(value));
+        }else if (value instanceof Integer) {
+            return payFailed.getValue()==Integer.parseInt(String.valueOf(value));
+        }
+        return false;
+    }
+
+    public static Boolean isUnPaid(Object value) {
+        if (value instanceof String) {
+            return unpaid.name().equalsIgnoreCase(String.valueOf(value));
+        }else if (value instanceof Integer) {
+            return unpaid.getValue()==Integer.parseInt(String.valueOf(value));
+        }
+        return false;
+    }
+}

+ 83 - 0
ie-common/src/main/java/com/ruoyi/common/enums/NewgaokaoType.java

@@ -0,0 +1,83 @@
+package com.ruoyi.common.enums;
+
+import com.ruoyi.common.utils.StringUtils;
+
+public enum NewgaokaoType {
+    newgaokao312("1", "3+1+2"),//语数外 +(物历选1,化生政地4选2)
+    newgaokao33("2", "3+3"),//语数外 +(物化生历政地,6选3)
+//    oldgaokao("3", "文理科"),//文理科
+
+    ;
+    private String value;
+    private String remark;
+
+    private NewgaokaoType(String value, String remark) {
+        this.value = value;
+        this.remark = remark;
+    }
+
+    public String getValue() {
+        return value;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public static NewgaokaoType getByValue(String value) {
+        for (NewgaokaoType o : NewgaokaoType.values()) {
+            if (o.getValue().equals(value)) {
+                return o;
+            }
+        }
+        return null;
+    }
+
+    public static Boolean isNewgaokao33Province(String provinceName){
+        //TODO 从数据库中取数据 ,山东需要单独处理
+        if ("山东".equalsIgnoreCase(provinceName)) {
+            return true;
+        }else {
+            return false;
+        }
+    }
+
+    public static String getNewgaokaoType(String provinceName) {
+        if(StringUtils.isBlank(provinceName)){
+            return null;
+        }
+        if (isNewgaokao33Province(provinceName)) {
+            return newgaokao33.value;
+        }
+
+        return newgaokao312.value;
+    }
+
+    public static Boolean isNewgaokao312(String type) {
+        if (newgaokao312.value.equalsIgnoreCase(type)) {
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * type可为类型或省份名称
+     * @param type
+     * @return
+     */
+    public static Boolean isNewgaokao33(String type) {
+        if (newgaokao33.value.equalsIgnoreCase(type)||isNewgaokao33Province(type)) {
+            return true;
+        }
+
+        return false;
+    }
+    public static Boolean isNotNewgaokao33(String type) {
+        return !isNewgaokao33(type);
+    }
+
+        public static void main(String[] args) {
+
+    }
+}

+ 14 - 1
ie-common/src/main/java/com/ruoyi/common/enums/UserRegStatus.java

@@ -1,8 +1,10 @@
 package com.ruoyi.common.enums;
 
+import com.ruoyi.common.utils.SecurityUtils;
+
 /**
  * 用户状态
- * 
+ *
  * @author ruoyi
  */
 public enum UserRegStatus
@@ -20,4 +22,15 @@ public enum UserRegStatus
     {
         return info;
     }
+
+    public static Boolean isVip() {
+        UserRegStatus userRegStatusEnum = SecurityUtils.getLoginUser().getUser().getRegStatus();
+        if (null==userRegStatusEnum) {
+            return false;
+        }
+
+        return UserRegStatus.Student.name().equals(userRegStatusEnum.name());
+    }
+
+    public static Boolean isNotVip(){return !isVip();}
 }

+ 10 - 4
ie-common/src/main/java/com/ruoyi/common/utils/DateUtils.java

@@ -8,12 +8,13 @@ import java.time.LocalDateTime;
 import java.time.LocalTime;
 import java.time.ZoneId;
 import java.time.ZonedDateTime;
+import java.util.Calendar;
 import java.util.Date;
 import org.apache.commons.lang3.time.DateFormatUtils;
 
 /**
  * 时间工具类
- * 
+ *
  * @author ruoyi
  */
 public class DateUtils extends org.apache.commons.lang3.time.DateUtils
@@ -29,13 +30,13 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
     public static String YYYY_MM_DD_HH_MM_SS = "yyyy-MM-dd HH:mm:ss";
 
     private static String[] parsePatterns = {
-            "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM", 
+            "yyyy-MM-dd", "yyyy-MM-dd HH:mm:ss", "yyyy-MM-dd HH:mm", "yyyy-MM",
             "yyyy/MM/dd", "yyyy/MM/dd HH:mm:ss", "yyyy/MM/dd HH:mm", "yyyy/MM",
             "yyyy.MM.dd", "yyyy.MM.dd HH:mm:ss", "yyyy.MM.dd HH:mm", "yyyy.MM"};
 
     /**
      * 获取当前Date型日期
-     * 
+     *
      * @return Date() 当前日期
      */
     public static Date getNowDate()
@@ -45,7 +46,7 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
 
     /**
      * 获取当前日期, 默认格式为yyyy-MM-dd
-     * 
+     *
      * @return String
      */
     public static String getDate()
@@ -188,4 +189,9 @@ public class DateUtils extends org.apache.commons.lang3.time.DateUtils
         ZonedDateTime zdt = localDateTime.atZone(ZoneId.systemDefault());
         return Date.from(zdt.toInstant());
     }
+
+    public static Integer getCurrentYear() {
+        Calendar cal = Calendar.getInstance();
+        return cal.get(Calendar.YEAR);
+    }
 }

+ 13 - 0
ie-framework/src/main/java/com/ruoyi/framework/web/service/TokenService.java

@@ -101,6 +101,19 @@ public class TokenService
         delLoginUser(uuid);
     }
 
+    public void updateBindStatus(String token, Integer bindStatus) {
+        Claims claims = parseToken(token);
+        // 解析对应的权限以及用户信息
+        String uuid = (String) claims.get(Constants.LOGIN_USER_KEY);
+        LoginUser user;
+        if (StringUtils.isNotEmpty(uuid) && null != (user = redisCache.getCacheObject(getTokenKey(uuid))))
+        {
+            user.getUser().setBindStatus(bindStatus);
+            refreshToken(user);
+        }
+    }
+
+
     /**
      * 删除用户身份信息
      */

+ 22 - 0
ie-system/src/main/java/com/ruoyi/dz/domain/DzCards.java

@@ -182,6 +182,28 @@ public class DzCards extends BaseEntity
     /** 定向学习 */
     private String directedStudy;
 
+    /** 考生专业类别 **/
+    private Integer examMajor;
+
+    /** 考生专业类别 **/
+    private String examMajorName;
+
+    public Integer getExamMajor() {
+        return examMajor;
+    }
+
+    public void setExamMajor(Integer examMajor) {
+        this.examMajor = examMajor;
+    }
+
+    public String getExamMajorName() {
+        return examMajorName;
+    }
+
+    public void setExamMajorName(String examMajorName) {
+        this.examMajorName = examMajorName;
+    }
+
     public Long getTeacherId() {
         return teacherId;
     }

+ 3 - 0
ie-system/src/main/java/com/ruoyi/dz/mapper/DzCardsMapper.java

@@ -33,6 +33,7 @@ public interface DzCardsMapper
     public List<DzCards> selectDzCardsList(DzCards dzCards);
     public List<DzCards> selectDzCardsList2(DzCards dzCards);
 
+    public DzCards selectOneECard();
     /**
      * 新增学习卡
      * 
@@ -49,6 +50,8 @@ public interface DzCardsMapper
      */
     public int updateDzCards(DzCards dzCards);
 
+    public int updateDzCardsWithAssign(DzCards dzCards);
+
     public int updateDzCardsByNo(DzCards dzCards);
     /**
      * 删除学习卡

+ 6 - 4
ie-system/src/main/java/com/ruoyi/dz/service/IDzCardsService.java

@@ -28,6 +28,8 @@ public interface IDzCardsService
 
     public DzCards selectDzCardsByCardNo(String cardNo);
 
+    public DzCards selectOneECard();
+
     /**
      * 查询学习卡列表
      *
@@ -116,7 +118,7 @@ public interface IDzCardsService
      * @param action
      * @param cardIds
      */
-    public void changeCard(CardAction action, Long[] cardIds);
+    public void changeCard(CardAction action, Long[] cardIds,Integer days);
 
     /**
      * 分配校区
@@ -127,7 +129,7 @@ public interface IDzCardsService
      * @return
      */
     public Boolean changeCampus(Long campusId, Long campusClassId, String beginNo, String endNo);
-    
+
     /**
      * 通过卡片ID列表分配校区
      * @param campusId
@@ -136,12 +138,12 @@ public interface IDzCardsService
      * @return
      */
     public Boolean changeCampusByCardIds(Long campusId, Long campusClassId, Long[] cardIds);
-    
+
     public List<DzCards> selectCardsByCardIds(List<Long> cardIds);
 
     /**
      * 统计学习卡数据
-     * 
+     *
      * @param params 查询参数(deptId, agentId, openTimeBegin, openTimeEnd)
      * @return 统计结果列表
      */

+ 14 - 5
ie-system/src/main/java/com/ruoyi/dz/service/impl/DzCardsServiceImpl.java

@@ -82,6 +82,12 @@ public class DzCardsServiceImpl implements IDzCardsService
         return list.size() != 1 ? null : list.get(0);
     }
 
+    @Override
+    public DzCards selectOneECard()
+    {
+        return dzCardsMapper.selectOneECard();
+    }
+
     private List<DzCards> fillNames(List<DzCards> list) {
         Set<Long> classIdSet = Sets.newHashSet();
         Set<Long> schoolIdSet = Sets.newHashSet();
@@ -286,7 +292,7 @@ public class DzCardsServiceImpl implements IDzCardsService
             // dzCards.setStatus(CardStatus.Open.getVal());
             dzCards.setOpenTime(DateUtils.getNowDate());
             dzCards.setDays(days);
-            dzCardsMapper.updateDzCards(dzCards);
+            dzCardsMapper.updateDzCardsWithAssign(dzCards);
         });
     }
 
@@ -330,7 +336,7 @@ public class DzCardsServiceImpl implements IDzCardsService
                 dzCards.setLeafAgentId(dzAgent.getAgentId());
             }
             dzCards.setDays(days);
-            dzCardsMapper.updateDzCards(dzCards);
+            dzCardsMapper.updateDzCardsWithAssign(dzCards);
         });
         // TODO MF 检查已经使用的或无效的
         return true;
@@ -392,7 +398,7 @@ public class DzCardsServiceImpl implements IDzCardsService
                 dzCards.setPayStatus(PayStatus.Paid.getVal());
                 // dzCards.setStatus(CardStatus.Paid.getVal());
                 dzCards.setDistributeStatus(CardDistributeStatus.Assign.getVal());
-                dzCardsMapper.updateDzCards(dzCards);
+                dzCardsMapper.updateDzCardsWithAssign(dzCards);
             });
         }
         dzCardsOpenMapper.updateDzCardsOpen(upOpen);
@@ -401,7 +407,7 @@ public class DzCardsServiceImpl implements IDzCardsService
 
     @Override
     @Transactional(rollbackFor = Exception.class)
-    public void changeCard(CardAction action, Long[] cardIds) {
+    public void changeCard(CardAction action, Long[] cardIds,Integer days) {
         List<DzCards> cards = dzCardsMapper.selectCardsByCardIds(cardIds);
         DzCards up = new DzCards();
         if(CardAction.Pay.equals(action)) {
@@ -442,7 +448,10 @@ public class DzCardsServiceImpl implements IDzCardsService
         for(DzCards card : cards) {
             up.setCardId(card.getCardId());
             if(CardAction.Renew.equals(action)) {
-                card.setOutDate(DateUtils.addYears(card.getOutDate(), 3)); // TODO 暂时都续费三年?
+                if (null==days){
+                    days =30;
+                }
+                up.setOutDate(DateUtils.addDays(card.getOutDate(), days)); // TODO 暂时都续费三年?
             }
             dzCardsMapper.updateDzCards(up);
         }

+ 1 - 1
ie-system/src/main/java/com/ruoyi/learn/mapper/LearnExamineeMapper.java

@@ -24,7 +24,7 @@ public interface LearnExamineeMapper
     public List<JSONObject> selectSimulatedStuSubjectStats(@Param("studentId") Long studentId);
 
     public List<JSONObject> selectExamRankingStats(@Param("paperType") Integer paperType, @Param("stuScore") Integer stuScore, @Param("paperIds") Collection<Long> paperIds);
-    public List<JSONObject> selectStudentPractices(@Param("studentId") Long studentId, @Param("paperType") Integer paperType);
+    public List<JSONObject> selectStudentPractices(@Param("studentId") Long studentId, @Param("paperType") Integer paperType, @Param("questionType") Integer questionType);
 
     /**
      * 查询答卷

+ 1 - 1
ie-system/src/main/java/com/ruoyi/learn/mapper/LearnPaperMapper.java

@@ -30,7 +30,7 @@ public interface LearnPaperMapper
      * @return 试卷集合
      */
     public List<LearnPaper> selectLearnPaperList(LearnPaper learnPaper);
-
+    public List<LearnPaper> selectLearnPaperForExam(LearnPaper learnPaper);
     /**
      * 新增试卷
      *

+ 1 - 0
ie-system/src/main/java/com/ruoyi/learn/service/ILearnPaperService.java

@@ -26,6 +26,7 @@ public interface ILearnPaperService
      * @return 试卷集合
      */
     public List<LearnPaper> selectLearnPaperList(LearnPaper learnPaper);
+    public List<LearnPaper> selectLearnPaperForExam(LearnPaper learnPaper);
     public List<LearnPaper> selectPapersListFromFavorites(LearnPaper papers);
     /**
      * 新增试卷

+ 6 - 0
ie-system/src/main/java/com/ruoyi/learn/service/impl/LearnPaperServiceImpl.java

@@ -44,6 +44,12 @@ public class LearnPaperServiceImpl implements ILearnPaperService
         return learnPaperMapper.selectLearnPaperList(learnPaper);
     }
 
+    @Override
+    public List<LearnPaper> selectLearnPaperForExam(LearnPaper learnPaper)
+    {
+        return learnPaperMapper.selectLearnPaperForExam(learnPaper);
+    }
+
     @Override
     public List<LearnPaper> selectPapersListFromFavorites(LearnPaper papers) {
         return learnPaperMapper.selectPapersListFromFavorites(papers);

+ 1 - 1
ie-system/src/main/java/com/ruoyi/syzy/service/impl/BBusiWishUniversitiesServiceImpl.java

@@ -160,7 +160,7 @@ public class BBusiWishUniversitiesServiceImpl implements IBBusiWishUniversitiesS
         cond.put("collegeCode", code);
         cond.put("examineeType", u.getExamType().title());
         cond.put("examType", examTypeData);
-        cond.put("examMajor", u.getSelectSubject()); // TODO MF
+        cond.put("examMajor", u.getExamMajor());
         List<BBusiWishUniversitiesProfession> professionList = universitiesProfessionMapper.selectEnrollPlanProfessionByCode(cond);
         //设置数量
         Map<String,Integer> codeCountMap = syMajorService.selectSyMajorByLevel(examTypeData, 3).stream().collect(Collectors.toMap(t -> t.getCode(), SyMajor::getChildCount));

+ 108 - 0
ie-system/src/main/java/com/ruoyi/voluntary/domain/BBusiEcardPrice.java

@@ -0,0 +1,108 @@
+package com.ruoyi.voluntary.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 在线电子卡价格对象 b_busi_ecard_price
+ * 
+ * @author mingxue
+ * @date 2022-08-06
+ */
+public class BBusiEcardPrice extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** ID */
+    private Long id;
+
+    /** 地区 */
+    @Excel(name = "地区")
+    private String location;
+
+    /** 考生类型 */
+    @Excel(name = "考生类型")
+    private String examType;
+
+    /** 价格(分) */
+    @Excel(name = "价格(分)")
+    private Integer price;
+
+    /** 学年 */
+    @Excel(name = "学年")
+    private Integer year;
+
+    /** 到期时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "到期时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date outTime;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+
+    public String getLocation() {
+        return location;
+    }
+
+    public void setLocation(String location) {
+        this.location = location;
+    }
+
+    public String getExamType() {
+        return examType;
+    }
+
+    public void setExamType(String examType) {
+        this.examType = examType;
+    }
+
+    public void setPrice(Integer price)
+    {
+        this.price = price;
+    }
+
+    public Integer getPrice() 
+    {
+        return price;
+    }
+    public void setYear(Integer year) 
+    {
+        this.year = year;
+    }
+
+    public Integer getYear() 
+    {
+        return year;
+    }
+    public void setOutTime(Date outTime) 
+    {
+        this.outTime = outTime;
+    }
+
+    public Date getOutTime() 
+    {
+        return outTime;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("price", getPrice())
+            .append("year", getYear())
+            .append("outTime", getOutTime())
+            .toString();
+    }
+}

+ 406 - 0
ie-system/src/main/java/com/ruoyi/voluntary/domain/BBusiPaymentOrders.java

@@ -0,0 +1,406 @@
+package com.ruoyi.voluntary.domain;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.ruoyi.common.annotation.Excel;
+import com.ruoyi.common.core.domain.BaseEntity;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+import org.apache.commons.lang3.builder.ToStringStyle;
+
+import java.util.Date;
+
+/**
+ * 在线电子卡订单对象 b_busi_payment_orders
+ * 
+ * @author mingxue
+ * @date 2022-08-06
+ */
+public class BBusiPaymentOrders extends BaseEntity
+{
+    private static final long serialVersionUID = 1L;
+
+    /** ID */
+    private Long id;
+
+    /** 订单号 */
+    @Excel(name = "订单号")
+    private String code;
+
+    private String outTradeNo;
+
+    /** 二维码标识 */
+    @Excel(name = "二维码标识")
+    private String qrcodeId;
+
+    /** 类型 */
+    @Excel(name = "类型")
+    private String type;
+
+    /** 电子卡 */
+    @Excel(name = "电子卡")
+    private Long cardId;
+
+    /** 账号 */
+    @Excel(name = "账号")
+    private String cardNo;
+
+    /** 价目标识 */
+    @Excel(name = "价目标识")
+    private String year;
+
+    /** 手机号码 */
+    @Excel(name = "手机号码")
+    private String phonenumber;
+
+    /** 微信订单号 */
+    @Excel(name = "微信订单号")
+    private String transactionId;
+
+    /** 用户 */
+    @Excel(name = "用户")
+    private String customerCode;
+
+    /** 失效期 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "失效期", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date outTime;
+
+    /** 单价 */
+    @Excel(name = "单价")
+    private Integer price;
+
+    /** 数量 */
+    @Excel(name = "数量")
+    private Integer num;
+
+    /** 金额 */
+    @Excel(name = "金额")
+    private Integer fee;
+
+    /** 应付金额 */
+    @Excel(name = "应付金额")
+    private Integer totalFee;
+
+    /** 实付金额 */
+    @Excel(name = "实付金额")
+    private Integer payFee;
+
+    /** 创建者 */
+    @Excel(name = "创建者")
+    private String creator;
+
+    /** 描述 */
+    @Excel(name = "描述")
+    private String body;
+
+    /** 详情 */
+    @Excel(name = "详情")
+    private String detail;
+
+    /** 附加数据 */
+    @Excel(name = "附加数据")
+    private String attach;
+
+    /** 微信预支付标识 */
+    @Excel(name = "微信预支付标识")
+    private String prepayId;
+
+    /** 支付者 */
+    @Excel(name = "支付者")
+    private String payer;
+
+    /** 支付时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "支付时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date payTime;
+
+    /** 支付回调结果 */
+    @Excel(name = "支付回调结果")
+    private String feedBack;
+
+    /** 确认时间 */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    @Excel(name = "确认时间", width = 30, dateFormat = "yyyy-MM-dd")
+    private Date syncTime;
+
+    /** 状态(-2:已退费,-1:支付失败,0:无效,1:未支付,2:已支付) */
+    @Excel(name = "状态(-2:已退费,-1:支付失败,0:无效,1:未支付,2:已支付)")
+    private Integer status;
+
+    public void setId(Long id) 
+    {
+        this.id = id;
+    }
+
+    public Long getId() 
+    {
+        return id;
+    }
+    public void setCode(String code) 
+    {
+        this.code = code;
+    }
+
+    public String getCode() 
+    {
+        return code;
+    }
+
+    public String getOutTradeNo() {
+        return outTradeNo;
+    }
+
+    public void setOutTradeNo(String outTradeNo) {
+        this.outTradeNo = outTradeNo;
+    }
+
+    public void setQrcodeId(String qrcodeId)
+    {
+        this.qrcodeId = qrcodeId;
+    }
+
+    public String getQrcodeId() 
+    {
+        return qrcodeId;
+    }
+    public void setType(String type) 
+    {
+        this.type = type;
+    }
+
+    public String getType() 
+    {
+        return type;
+    }
+    public void setCardId(Long cardId) 
+    {
+        this.cardId = cardId;
+    }
+
+    public Long getCardId() 
+    {
+        return cardId;
+    }
+    public void setCardNo(String cardNo) 
+    {
+        this.cardNo = cardNo;
+    }
+
+    public String getCardNo() 
+    {
+        return cardNo;
+    }
+    public void setYear(String year) 
+    {
+        this.year = year;
+    }
+
+    public String getYear() 
+    {
+        return year;
+    }
+    public void setPhonenumber(String phonenumber) 
+    {
+        this.phonenumber = phonenumber;
+    }
+
+    public String getPhonenumber() 
+    {
+        return phonenumber;
+    }
+    public void setTransactionId(String transactionId) 
+    {
+        this.transactionId = transactionId;
+    }
+
+    public String getTransactionId() 
+    {
+        return transactionId;
+    }
+    public void setCustomerCode(String customerCode) 
+    {
+        this.customerCode = customerCode;
+    }
+
+    public String getCustomerCode() 
+    {
+        return customerCode;
+    }
+    public void setOutTime(Date outTime) 
+    {
+        this.outTime = outTime;
+    }
+
+    public Date getOutTime() 
+    {
+        return outTime;
+    }
+    public void setPrice(Integer price) 
+    {
+        this.price = price;
+    }
+
+    public Integer getPrice() 
+    {
+        return price;
+    }
+    public void setNum(Integer num) 
+    {
+        this.num = num;
+    }
+
+    public Integer getNum() 
+    {
+        return num;
+    }
+    public void setFee(Integer fee) 
+    {
+        this.fee = fee;
+    }
+
+    public Integer getFee() 
+    {
+        return fee;
+    }
+    public void setTotalFee(Integer totalFee) 
+    {
+        this.totalFee = totalFee;
+    }
+
+    public Integer getTotalFee() 
+    {
+        return totalFee;
+    }
+    public void setPayFee(Integer payFee) 
+    {
+        this.payFee = payFee;
+    }
+
+    public Integer getPayFee() 
+    {
+        return payFee;
+    }
+    public void setCreator(String creator) 
+    {
+        this.creator = creator;
+    }
+
+    public String getCreator() 
+    {
+        return creator;
+    }
+    public void setBody(String body) 
+    {
+        this.body = body;
+    }
+
+    public String getBody() 
+    {
+        return body;
+    }
+    public void setDetail(String detail) 
+    {
+        this.detail = detail;
+    }
+
+    public String getDetail() 
+    {
+        return detail;
+    }
+    public void setAttach(String attach) 
+    {
+        this.attach = attach;
+    }
+
+    public String getAttach() 
+    {
+        return attach;
+    }
+    public void setPrepayId(String prepayId) 
+    {
+        this.prepayId = prepayId;
+    }
+
+    public String getPrepayId() 
+    {
+        return prepayId;
+    }
+    public void setPayer(String payer) 
+    {
+        this.payer = payer;
+    }
+
+    public String getPayer() 
+    {
+        return payer;
+    }
+    public void setPayTime(Date payTime) 
+    {
+        this.payTime = payTime;
+    }
+
+    public Date getPayTime() 
+    {
+        return payTime;
+    }
+    public void setFeedBack(String feedBack) 
+    {
+        this.feedBack = feedBack;
+    }
+
+    public String getFeedBack() 
+    {
+        return feedBack;
+    }
+    public void setSyncTime(Date syncTime) 
+    {
+        this.syncTime = syncTime;
+    }
+
+    public Date getSyncTime() 
+    {
+        return syncTime;
+    }
+    public BBusiPaymentOrders setStatus(Integer status)
+    {
+        this.status = status;
+        return this;
+    }
+
+    public Integer getStatus() 
+    {
+        return status;
+    }
+
+    @Override
+    public String toString() {
+        return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
+            .append("id", getId())
+            .append("code", getCode())
+            .append("qrcodeId", getQrcodeId())
+            .append("type", getType())
+            .append("cardId", getCardId())
+            .append("cardNo", getCardNo())
+            .append("year", getYear())
+            .append("phonenumber", getPhonenumber())
+            .append("transactionId", getTransactionId())
+            .append("customerCode", getCustomerCode())
+            .append("outTime", getOutTime())
+            .append("price", getPrice())
+            .append("num", getNum())
+            .append("fee", getFee())
+            .append("totalFee", getTotalFee())
+            .append("payFee", getPayFee())
+            .append("createTime", getCreateTime())
+            .append("creator", getCreator())
+            .append("body", getBody())
+            .append("detail", getDetail())
+            .append("attach", getAttach())
+            .append("prepayId", getPrepayId())
+            .append("payer", getPayer())
+            .append("payTime", getPayTime())
+            .append("feedBack", getFeedBack())
+            .append("syncTime", getSyncTime())
+            .append("status", getStatus())
+            .toString();
+    }
+}

+ 62 - 0
ie-system/src/main/java/com/ruoyi/voluntary/mapper/BBusiEcardPriceMapper.java

@@ -0,0 +1,62 @@
+package com.ruoyi.voluntary.mapper;
+
+import com.ruoyi.voluntary.domain.BBusiEcardPrice;
+
+import java.util.List;
+
+/**
+ * 在线电子卡价格Mapper接口
+ * 
+ * @author mingxue
+ * @date 2022-08-06
+ */
+public interface BBusiEcardPriceMapper 
+{
+    /**
+     * 查询在线电子卡价格
+     * 
+     * @param id 在线电子卡价格ID
+     * @return 在线电子卡价格
+     */
+    public BBusiEcardPrice selectBBusiEcardPriceById(Long id);
+
+    /**
+     * 查询在线电子卡价格列表
+     * 
+     * @param bBusiEcardPrice 在线电子卡价格
+     * @return 在线电子卡价格集合
+     */
+    public List<BBusiEcardPrice> selectBBusiEcardPriceList(BBusiEcardPrice bBusiEcardPrice);
+
+    /**
+     * 新增在线电子卡价格
+     * 
+     * @param bBusiEcardPrice 在线电子卡价格
+     * @return 结果
+     */
+    public int insertBBusiEcardPrice(BBusiEcardPrice bBusiEcardPrice);
+
+    /**
+     * 修改在线电子卡价格
+     * 
+     * @param bBusiEcardPrice 在线电子卡价格
+     * @return 结果
+     */
+    public int updateBBusiEcardPrice(BBusiEcardPrice bBusiEcardPrice);
+
+    /**
+     * 删除在线电子卡价格
+     * 
+     * @param id 在线电子卡价格ID
+     * @return 结果
+     */
+    public int deleteBBusiEcardPriceById(Long id);
+
+    /**
+     * 批量删除在线电子卡价格
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteBBusiEcardPriceByIds(Long[] ids);
+}

+ 64 - 0
ie-system/src/main/java/com/ruoyi/voluntary/mapper/BBusiPaymentOrdersMapper.java

@@ -0,0 +1,64 @@
+package com.ruoyi.voluntary.mapper;
+
+
+import com.ruoyi.voluntary.domain.BBusiPaymentOrders;
+
+import java.util.List;
+
+/**
+ * 在线电子卡订单Mapper接口
+ * 
+ * @author mingxue
+ * @date 2022-08-06
+ */
+public interface BBusiPaymentOrdersMapper 
+{
+    /**
+     * 查询在线电子卡订单
+     * 
+     * @param id 在线电子卡订单ID
+     * @return 在线电子卡订单
+     */
+    public BBusiPaymentOrders selectBBusiPaymentOrdersById(Long id);
+    public BBusiPaymentOrders selectBBusiPaymentOrdersByCardNo(String cardNo);
+
+    /**
+     * 查询在线电子卡订单列表
+     * 
+     * @param bBusiPaymentOrders 在线电子卡订单
+     * @return 在线电子卡订单集合
+     */
+    public List<BBusiPaymentOrders> selectBBusiPaymentOrdersList(BBusiPaymentOrders bBusiPaymentOrders);
+
+    /**
+     * 新增在线电子卡订单
+     * 
+     * @param bBusiPaymentOrders 在线电子卡订单
+     * @return 结果
+     */
+    public int insertBBusiPaymentOrders(BBusiPaymentOrders bBusiPaymentOrders);
+
+    /**
+     * 修改在线电子卡订单
+     * 
+     * @param bBusiPaymentOrders 在线电子卡订单
+     * @return 结果
+     */
+    public int updateBBusiPaymentOrders(BBusiPaymentOrders bBusiPaymentOrders);
+
+    /**
+     * 删除在线电子卡订单
+     * 
+     * @param id 在线电子卡订单ID
+     * @return 结果
+     */
+    public int deleteBBusiPaymentOrdersById(Long id);
+
+    /**
+     * 批量删除在线电子卡订单
+     * 
+     * @param ids 需要删除的数据ID
+     * @return 结果
+     */
+    public int deleteBBusiPaymentOrdersByIds(Long[] ids);
+}

+ 63 - 0
ie-system/src/main/java/com/ruoyi/voluntary/service/IBBusiEcardPriceService.java

@@ -0,0 +1,63 @@
+package com.ruoyi.voluntary.service;
+
+
+import com.ruoyi.voluntary.domain.BBusiEcardPrice;
+
+import java.util.List;
+
+/**
+ * 在线电子卡价格Service接口
+ * 
+ * @author mingxue
+ * @date 2022-08-06
+ */
+public interface IBBusiEcardPriceService 
+{
+    /**
+     * 查询在线电子卡价格
+     * 
+     * @param id 在线电子卡价格ID
+     * @return 在线电子卡价格
+     */
+    public BBusiEcardPrice selectBBusiEcardPriceById(Long id);
+
+    /**
+     * 查询在线电子卡价格列表
+     * 
+     * @param bBusiEcardPrice 在线电子卡价格
+     * @return 在线电子卡价格集合
+     */
+    public List<BBusiEcardPrice> selectBBusiEcardPriceList(BBusiEcardPrice bBusiEcardPrice);
+
+    /**
+     * 新增在线电子卡价格
+     * 
+     * @param bBusiEcardPrice 在线电子卡价格
+     * @return 结果
+     */
+    public int insertBBusiEcardPrice(BBusiEcardPrice bBusiEcardPrice);
+
+    /**
+     * 修改在线电子卡价格
+     * 
+     * @param bBusiEcardPrice 在线电子卡价格
+     * @return 结果
+     */
+    public int updateBBusiEcardPrice(BBusiEcardPrice bBusiEcardPrice);
+
+    /**
+     * 批量删除在线电子卡价格
+     * 
+     * @param ids 需要删除的在线电子卡价格ID
+     * @return 结果
+     */
+    public int deleteBBusiEcardPriceByIds(Long[] ids);
+
+    /**
+     * 删除在线电子卡价格信息
+     * 
+     * @param id 在线电子卡价格ID
+     * @return 结果
+     */
+    public int deleteBBusiEcardPriceById(Long id);
+}

+ 65 - 0
ie-system/src/main/java/com/ruoyi/voluntary/service/IBBusiPaymentOrdersService.java

@@ -0,0 +1,65 @@
+package com.ruoyi.voluntary.service;
+
+
+import com.ruoyi.voluntary.domain.BBusiPaymentOrders;
+
+import java.util.List;
+
+/**
+ * 在线电子卡订单Service接口
+ * 
+ * @author mingxue
+ * @date 2022-08-06
+ */
+public interface IBBusiPaymentOrdersService 
+{
+    /**
+     * 查询在线电子卡订单
+     * 
+     * @param id 在线电子卡订单ID
+     * @return 在线电子卡订单
+     */
+    public BBusiPaymentOrders selectBBusiPaymentOrdersById(Long id);
+    public BBusiPaymentOrders selectBBusiPaymentOrdersNoPaid(String phonenumber);
+    public BBusiPaymentOrders selectBBusiPaymentOrdersByCardNo(String cardNo);
+
+    /**
+     * 查询在线电子卡订单列表
+     * 
+     * @param bBusiPaymentOrders 在线电子卡订单
+     * @return 在线电子卡订单集合
+     */
+    public List<BBusiPaymentOrders> selectBBusiPaymentOrdersList(BBusiPaymentOrders bBusiPaymentOrders);
+
+    /**
+     * 新增在线电子卡订单
+     * 
+     * @param bBusiPaymentOrders 在线电子卡订单
+     * @return 结果
+     */
+    public int insertBBusiPaymentOrders(BBusiPaymentOrders bBusiPaymentOrders);
+
+    /**
+     * 修改在线电子卡订单
+     * 
+     * @param bBusiPaymentOrders 在线电子卡订单
+     * @return 结果
+     */
+    public int updateBBusiPaymentOrders(BBusiPaymentOrders bBusiPaymentOrders);
+
+    /**
+     * 批量删除在线电子卡订单
+     * 
+     * @param ids 需要删除的在线电子卡订单ID
+     * @return 结果
+     */
+    public int deleteBBusiPaymentOrdersByIds(Long[] ids);
+
+    /**
+     * 删除在线电子卡订单信息
+     * 
+     * @param id 在线电子卡订单ID
+     * @return 结果
+     */
+    public int deleteBBusiPaymentOrdersById(Long id);
+}

+ 94 - 0
ie-system/src/main/java/com/ruoyi/voluntary/service/impl/BBusiEcardPriceServiceImpl.java

@@ -0,0 +1,94 @@
+package com.ruoyi.voluntary.service.impl;
+
+import com.ruoyi.voluntary.domain.BBusiEcardPrice;
+import com.ruoyi.voluntary.mapper.BBusiEcardPriceMapper;
+import com.ruoyi.voluntary.service.IBBusiEcardPriceService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * 在线电子卡价格Service业务层处理
+ * 
+ * @author mingxue
+ * @date 2022-08-06
+ */
+@Service
+public class BBusiEcardPriceServiceImpl implements IBBusiEcardPriceService
+{
+    @Autowired
+    private BBusiEcardPriceMapper bBusiEcardPriceMapper;
+
+    /**
+     * 查询在线电子卡价格
+     * 
+     * @param id 在线电子卡价格ID
+     * @return 在线电子卡价格
+     */
+    @Override
+    public BBusiEcardPrice selectBBusiEcardPriceById(Long id)
+    {
+        return bBusiEcardPriceMapper.selectBBusiEcardPriceById(id);
+    }
+
+    /**
+     * 查询在线电子卡价格列表
+     * 
+     * @param bBusiEcardPrice 在线电子卡价格
+     * @return 在线电子卡价格
+     */
+    @Override
+    public List<BBusiEcardPrice> selectBBusiEcardPriceList(BBusiEcardPrice bBusiEcardPrice)
+    {
+        return bBusiEcardPriceMapper.selectBBusiEcardPriceList(bBusiEcardPrice);
+    }
+
+    /**
+     * 新增在线电子卡价格
+     * 
+     * @param bBusiEcardPrice 在线电子卡价格
+     * @return 结果
+     */
+    @Override
+    public int insertBBusiEcardPrice(BBusiEcardPrice bBusiEcardPrice)
+    {
+        return bBusiEcardPriceMapper.insertBBusiEcardPrice(bBusiEcardPrice);
+    }
+
+    /**
+     * 修改在线电子卡价格
+     * 
+     * @param bBusiEcardPrice 在线电子卡价格
+     * @return 结果
+     */
+    @Override
+    public int updateBBusiEcardPrice(BBusiEcardPrice bBusiEcardPrice)
+    {
+        return bBusiEcardPriceMapper.updateBBusiEcardPrice(bBusiEcardPrice);
+    }
+
+    /**
+     * 批量删除在线电子卡价格
+     * 
+     * @param ids 需要删除的在线电子卡价格ID
+     * @return 结果
+     */
+    @Override
+    public int deleteBBusiEcardPriceByIds(Long[] ids)
+    {
+        return bBusiEcardPriceMapper.deleteBBusiEcardPriceByIds(ids);
+    }
+
+    /**
+     * 删除在线电子卡价格信息
+     * 
+     * @param id 在线电子卡价格ID
+     * @return 结果
+     */
+    @Override
+    public int deleteBBusiEcardPriceById(Long id)
+    {
+        return bBusiEcardPriceMapper.deleteBBusiEcardPriceById(id);
+    }
+}

+ 122 - 0
ie-system/src/main/java/com/ruoyi/voluntary/service/impl/BBusiPaymentOrdersServiceImpl.java

@@ -0,0 +1,122 @@
+package com.ruoyi.voluntary.service.impl;
+
+import com.ruoyi.common.enums.ECardPayStatus;
+import com.ruoyi.common.utils.DateUtils;
+import com.ruoyi.voluntary.domain.BBusiPaymentOrders;
+import com.ruoyi.voluntary.mapper.BBusiPaymentOrdersMapper;
+import com.ruoyi.voluntary.service.IBBusiPaymentOrdersService;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.util.CollectionUtils;
+
+import java.util.List;
+
+/**
+ * 在线电子卡订单Service业务层处理
+ * 
+ * @author mingxue
+ * @date 2022-08-06
+ */
+@Service
+public class BBusiPaymentOrdersServiceImpl implements IBBusiPaymentOrdersService 
+{
+    @Autowired
+    private BBusiPaymentOrdersMapper bBusiPaymentOrdersMapper;
+
+    /**
+     * 查询在线电子卡订单
+     * 
+     * @param id 在线电子卡订单ID
+     * @return 在线电子卡订单
+     */
+    @Override
+    public BBusiPaymentOrders selectBBusiPaymentOrdersById(Long id)
+    {
+        return bBusiPaymentOrdersMapper.selectBBusiPaymentOrdersById(id);
+    }
+
+    /**
+     * 查询在线电子卡订单列表
+     * 
+     * @param bBusiPaymentOrders 在线电子卡订单
+     * @return 在线电子卡订单
+     */
+    @Override
+    public List<BBusiPaymentOrders> selectBBusiPaymentOrdersList(BBusiPaymentOrders bBusiPaymentOrders)
+    {
+        return bBusiPaymentOrdersMapper.selectBBusiPaymentOrdersList(bBusiPaymentOrders);
+    }
+
+    @Override
+    public BBusiPaymentOrders selectBBusiPaymentOrdersNoPaid(String phonenumber)
+    {
+        BBusiPaymentOrders bBusiPaymentOrders = new BBusiPaymentOrders();
+        bBusiPaymentOrders.setPhonenumber(phonenumber);
+        bBusiPaymentOrders.setStatus(ECardPayStatus.unpaid.getValue());//状态(-2:已退费,-1:支付失败,0:无效,1:未支付,2:已支付)
+        List<BBusiPaymentOrders> list = bBusiPaymentOrdersMapper.selectBBusiPaymentOrdersList(bBusiPaymentOrders);
+        if(!CollectionUtils.isEmpty(list)){
+            //其他订单全部设置为无效
+            for (int i = 0; i < list.size(); i++) {
+                if(i!=0){
+                    bBusiPaymentOrdersMapper.updateBBusiPaymentOrders(list.get(i).setStatus(ECardPayStatus.payInvalid.getValue()));
+                }
+            }
+            return list.get(0);
+        }
+        return null;
+    }
+
+    @Override
+    public BBusiPaymentOrders selectBBusiPaymentOrdersByCardNo(String cardNo) {
+        return bBusiPaymentOrdersMapper.selectBBusiPaymentOrdersByCardNo(cardNo);
+    }
+
+    /**
+     * 新增在线电子卡订单
+     * 
+     * @param bBusiPaymentOrders 在线电子卡订单
+     * @return 结果
+     */
+    @Override
+    public int insertBBusiPaymentOrders(BBusiPaymentOrders bBusiPaymentOrders)
+    {
+        bBusiPaymentOrders.setCreateTime(DateUtils.getNowDate());
+        return bBusiPaymentOrdersMapper.insertBBusiPaymentOrders(bBusiPaymentOrders);
+    }
+
+    /**
+     * 修改在线电子卡订单
+     * 
+     * @param bBusiPaymentOrders 在线电子卡订单
+     * @return 结果
+     */
+    @Override
+    public int updateBBusiPaymentOrders(BBusiPaymentOrders bBusiPaymentOrders)
+    {
+        return bBusiPaymentOrdersMapper.updateBBusiPaymentOrders(bBusiPaymentOrders);
+    }
+
+    /**
+     * 批量删除在线电子卡订单
+     * 
+     * @param ids 需要删除的在线电子卡订单ID
+     * @return 结果
+     */
+    @Override
+    public int deleteBBusiPaymentOrdersByIds(Long[] ids)
+    {
+        return bBusiPaymentOrdersMapper.deleteBBusiPaymentOrdersByIds(ids);
+    }
+
+    /**
+     * 删除在线电子卡订单信息
+     * 
+     * @param id 在线电子卡订单ID
+     * @return 结果
+     */
+    @Override
+    public int deleteBBusiPaymentOrdersById(Long id)
+    {
+        return bBusiPaymentOrdersMapper.deleteBBusiPaymentOrdersById(id);
+    }
+}

+ 44 - 0
ie-system/src/main/resources/mapper/dz/DzCardsMapper.xml

@@ -45,6 +45,10 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         select card_id, card_no, password, type, status, distribute_status, time_status, pay_status, is_settlement, dept_id, agent_id, leaf_agent_id, campus_id, campus_class_id, assign_location,assign_exam_type,assign_school_id, school_id, class_id, year, end_year, open_id, remark, distribute_time, out_date, open_time, pay_time, active_time, days, settlement_time, refund_time, close_time, create_time, update_time from dz_cards
     </sql>
 
+    <select id="selectOneECard" resultMap="DzCardsResult">
+        SELECT * from dz_cards where status=0 and distribute_status = 0 and card_no like '7%' and LENGTH(card_no)=8 limit 1
+    </select>
+
     <select id="selectDzCardsList" parameterType="DzCards" resultMap="DzCardsResult">
         <include refid="selectDzCardsVo"/>
         <where>
@@ -246,6 +250,46 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </insert>
 
     <update id="updateDzCards" parameterType="DzCards">
+        update dz_cards
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="cardNo != null">card_no = #{cardNo},</if>
+            <if test="password != null">password = #{password},</if>
+            <if test="type != null">type = #{type},</if>
+            <if test="status != null">status = #{status},</if>
+            <if test="distributeStatus != null">distribute_status = #{distributeStatus},</if>
+            <if test="timeStatus != null">time_status = #{timeStatus},</if>
+            <if test="payStatus != null">pay_status = #{payStatus},</if>
+            <if test="isSettlement != null">is_settlement = #{isSettlement},</if>
+            <if test="deptId != null">dept_id = #{deptId},</if>
+            <if test="agentId != null">agent_id = #{agentId},</if>
+            <if test="leafAgentId != null">leaf_agent_id = #{leafAgentId},</if>
+            <if test="campusId != null">campus_id = #{campusId},</if>
+            <if test="campusClassId != null">campus_class_id = #{campusClassId},</if>
+            <if test="assignLocation != null">assign_location = #{assignLocation},</if>
+            <if test="assignExamType != null">assign_exam_type = #{assignExamType},</if>
+            <if test="assignSchoolId != null">assign_school_id = #{assignSchoolId},</if>
+            <if test="schoolId != null">school_id = #{schoolId},</if>
+            <if test="classId != null">class_id = #{classId},</if>
+            <if test="year != null">year = #{year},</if>
+            <if test="endYear != null">end_year = #{endYear},</if>
+            <if test="openId != null">open_id = #{openId},</if>
+            <if test="remark != null">remark = #{remark},</if>
+            <if test="distributeTime != null">distribute_time = #{distributeTime},</if>
+            <if test="outDate != null">out_date = #{outDate},</if>
+            <if test="openTime != null">open_time = #{openTime},</if>
+            <if test="payTime != null">pay_time = #{payTime},</if>
+            <if test="activeTime != null">active_time = #{activeTime},</if>
+            <if test="days != null">days = #{days},</if>
+            <if test="settlementTime != null">settlement_time = #{settlementTime},</if>
+            <if test="refundTime != null">refund_time = #{refundTime},</if>
+            <if test="closeTime != null">close_time = #{closeTime},</if>
+            <if test="createTime != null">create_time = #{createTime},</if>
+            <if test="updateTime != null">update_time = #{updateTime},</if>
+        </trim>
+        where card_id = #{cardId}
+    </update>
+
+    <update id="updateDzCardsWithAssign" parameterType="DzCards">
         update dz_cards
         <trim prefix="SET" suffixOverrides=",">
             <if test="cardNo != null">card_no = #{cardNo},</if>

+ 10 - 9
ie-system/src/main/resources/mapper/dz/DzPaymentOrdersMapper.xml

@@ -3,7 +3,7 @@
 PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
 <mapper namespace="com.ruoyi.dz.mapper.DzPaymentOrdersMapper">
-    
+
     <resultMap type="DzPaymentOrders" id="DzPaymentOrdersResult">
         <result property="id"    column="id"    />
         <result property="code"    column="code"    />
@@ -36,12 +36,12 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </resultMap>
 
     <sql id="selectDzPaymentOrdersVo">
-        select id, code, outTradeNo, qrcodeId, type, cardId, cardNo, year, phonenumber, transaction_id, customerCode, outTime, price, num, fee, totalFee, payFee, createTime, creator, body, detail, attach, prepayId, payer, payTime, feedBack, syncTime, status from dz_payment_orders
+        select id, code, outTradeNo, qrcodeId, type, cardId, cardNo, year, phonenumber, transaction_id, customerCode, outTime, price, num, fee, totalFee, payFee, createTime, creator, body, detail, attach, prepayId, payer, payTime, feedBack, syncTime, status from b_busi_payment_orders
     </sql>
 
     <select id="selectDzPaymentOrdersList" parameterType="DzPaymentOrders" resultMap="DzPaymentOrdersResult">
         <include refid="selectDzPaymentOrdersVo"/>
-        <where>  
+        <where>
             <if test="code != null  and code != ''"> and code = #{code}</if>
             <if test="outTradeNo != null  and outTradeNo != ''"> and outTradeNo = #{outTradeNo}</if>
             <if test="qrcodeId != null  and qrcodeId != ''"> and qrcodeId = #{qrcodeId}</if>
@@ -70,15 +70,16 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="syncTime != null "> and syncTime = #{syncTime}</if>
             <if test="status != null "> and status = #{status}</if>
         </where>
+        order by id desc
     </select>
-    
+
     <select id="selectDzPaymentOrdersById" parameterType="Long" resultMap="DzPaymentOrdersResult">
         <include refid="selectDzPaymentOrdersVo"/>
         where id = #{id}
     </select>
 
     <insert id="insertDzPaymentOrders" parameterType="DzPaymentOrders" useGeneratedKeys="true" keyProperty="id">
-        insert into dz_payment_orders
+        insert into b_busi_payment_orders
         <trim prefix="(" suffix=")" suffixOverrides=",">
             <if test="code != null and code != ''">code,</if>
             <if test="outTradeNo != null">outTradeNo,</if>
@@ -140,7 +141,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </insert>
 
     <update id="updateDzPaymentOrders" parameterType="DzPaymentOrders">
-        update dz_payment_orders
+        update b_busi_payment_orders
         <trim prefix="SET" suffixOverrides=",">
             <if test="code != null and code != ''">code = #{code},</if>
             <if test="outTradeNo != null">outTradeNo = #{outTradeNo},</if>
@@ -174,13 +175,13 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </update>
 
     <delete id="deleteDzPaymentOrdersById" parameterType="Long">
-        delete from dz_payment_orders where id = #{id}
+        delete from b_busi_payment_orders where id = #{id}
     </delete>
 
     <delete id="deleteDzPaymentOrdersByIds" parameterType="String">
-        delete from dz_payment_orders where id in 
+        delete from b_busi_payment_orders where id in
         <foreach item="id" collection="array" open="(" separator="," close=")">
             #{id}
         </foreach>
     </delete>
-</mapper>
+</mapper>

+ 2 - 2
ie-system/src/main/resources/mapper/dz/DzSubjectMapper.xml

@@ -34,8 +34,8 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="subjectName != null  and subjectName != ''"> and subject_name like concat('%', #{subjectName}, '%')</if>
             <if test="pinyin != null  and pinyin != ''"> and pinyin = #{pinyin}</if>
             <if test="sort != null "> and sort = #{sort}</if>
-            <if test="locations != null  and locations != ''"> and locations = #{locations}</if>
-            <if test="examTypes != null  and examTypes != ''"> and exam_types  like concat('%', #{examTypes}, '%') </if>
+            <if test="locations != null  and locations != ''"> and find_in_set(#{locations}, locations)</if>
+            <if test="examTypes != null  and examTypes != ''"> and find_in_set(#{examTypes}, exam_types) </if>
         </where>
         order by `sort`, subject_id
     </select>

+ 2 - 1
ie-system/src/main/resources/mapper/learn/LearnExamineeMapper.xml

@@ -115,10 +115,11 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     </select>
 
     <select id="selectStudentPractices" resultType="com.alibaba.fastjson2.JSONObject">
-        SELECT e.`examinee_id` examineeId, e.`end_time` endTime, SUBSTRING_INDEX(SUBSTRING_INDEX(p.`paperName`, '-', 2), '-', -1) paperName, LENGTH(SUBSTRING_INDEX(SUBSTRING_INDEX(p.`direct_key`, '_', 2), '_', -1)) > 0 AS directed
+        SELECT e.`examinee_id` examineeId, e.`end_time` endTime, SUBSTRING_INDEX(SUBSTRING_INDEX(p.`paperName`, '-', 2), '-', -1) paperName, LENGTH(SUBSTRING_INDEX(SUBSTRING_INDEX(p.`direct_key`, '_', 2), '_', -1)) > 0 AS directed, SUBSTRING_INDEX(p.`direct_key`, '_', -1) as questionType
           FROM `learn_examinee` e
           JOIN `learn_paper` p ON e.`paper_id` = p.`id`
          WHERE e.student_id = #{studentId} and e.`paper_type` = #{paperType} AND e.`state` &gt;= 4
+         and SUBSTRING_INDEX(p.`direct_key`, '_', -1) = #{questionType}
         ORDER BY e.`end_time` DESC
     </select>
 

+ 24 - 0
ie-system/src/main/resources/mapper/learn/LearnPaperMapper.xml

@@ -29,6 +29,30 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         select id, subjectId, paperName, year, paperType, number, fenshu, paperSource, direct_key, paper_info, tiid, osspath, filename, relate_id, locations, examineeTypes, createTime from learn_paper
     </sql>
 
+    <select id="selectLearnPaperForExam" parameterType="LearnPaper" resultMap="LearnPaperResult">
+        SELECT id, subjectId, paperName, YEAR, paperType, number, fenshu, paperSource, direct_key, p.paper_info, tiid, osspath, filename, relate_id, locations, examineeTypes, createTime, e.examinee_id examineeId, IF(e.`state` IS NULL, 1, e.`state`) status
+        FROM learn_paper p LEFT JOIN `learn_examinee` e ON p.`id` = e.`paper_id` AND e.`student_id` = #{examineeId}
+        <where>
+            <if test="subjectId != null "> and p.subjectId = #{subjectId}</if>
+            <if test="paperName != null  and paperName != ''"> and p.paperName like concat('%', #{paperName}, '%')</if>
+            <if test="year != null "> and p.year = #{year}</if>
+            <if test="paperType != null  and paperType != ''"> and p.paperType = #{paperType}</if>
+            <if test="status != null"> and p.status = #{status}</if>
+            <if test="number != null  and number != ''"> and p.number = #{number}</if>
+            <if test="fenshu != null "> and p.fenshu = #{fenshu}</if>
+            <if test="paperSource != null "> and p.paperSource = #{paperSource}</if>
+            <if test="directKey == null or directKey == ''"> and (p.direct_key is null or p.direct_key = '')</if>
+            <if test="directKey != null  and directKey != ''"> and p.direct_key like concat(#{directKey}, '%')</if>
+            <if test="paperInfo != null  and paperInfo != ''"> and p.paper_info = #{paperInfo}</if>
+            <if test="tiid != null  and tiid != ''"> and p.tiid = #{tiid}</if>
+            <if test="osspath != null  and osspath != ''"> and p.osspath = #{osspath}</if>
+            <if test="relateId != null "> and p.relate_id = #{relateId}</if>
+            <if test="locations != null  and locations != ''"> and p.locations = #{locations}</if>
+            <if test="examineeTypes != null  and examineeTypes != ''"> and p.examineeTypes = #{examineeTypes}</if>
+            <if test="createTime != null "> and p.createTime = #{createTime}</if>
+        </where>
+    </select>
+
     <select id="selectLearnPaperList" parameterType="LearnPaper" resultMap="LearnPaperResult">
         <include refid="selectLearnPaperVo"/>
         <where>

+ 2 - 0
ie-system/src/main/resources/mapper/learn/LearnQuestionsMapper.xml

@@ -329,6 +329,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="knowIds != null"> and kq.`knowledge_id` in <foreach item="id" collection="knowIds" open="(" separator="," close=")">#{id}</foreach></if>
             <if test="types != null"> and q.`qtpye` in <foreach item="id" collection="types" open="(" separator="," close=")">#{id}</foreach></if>
             <if test="studentId != null"> AND a.`student_id` IS NULL</if>
+            <if test="typeId != null"> AND kq.`type` = #{typeId}</if>
         </where>
         GROUP BY kq.knowledge_id, q.`qtpye`
     </select>
@@ -345,6 +346,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
             <if test="isSubType != null  and isSubType == 2"> and (kq.sub = 0 or q.knowId = q.id <if test="subCnt != null"> and kq.sub = #{subCnt}</if>)</if>
             <if test="isSubType != null  and isSubType == 0"> and (kq.sub = 0)</if>
             <if test="qtpye != null  and qtpye != ''"> and qtpye = #{qtpye}</if>
+            <if test="typeId != null"> and kq.type = #{typeId}</if>
             <if test="id != null ">  AND a.`student_id` IS NULL</if>
             <if test="knowledgeId != null "> and kq.knowledge_id  = #{knowledgeId}</if>
         </where>

+ 40 - 27
ie-system/src/main/resources/mapper/learn/LearnStudentMapper.xml

@@ -116,64 +116,70 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
     <select id="statisticStudyRecord" parameterType="com.ruoyi.learn.dto.StudyRecordStatisticsDTO" resultType="com.ruoyi.learn.dto.StudyRecordStatisticsDTO">
         WITH T1 AS (
             <!-- 定义查询 1 的聚合结果(做题统计)-->
+            <!-- 优化:从learn_answer开始JOIN,利用索引,避免date()函数 -->
             SELECT
                 a.student_id,
                 COUNT(*) AS num,
                 SUM(IF(a.state = 1, 1, 0)) AS correct,
-                ROUND(SUM(IF(a.state = 1, 1, 0)) * 100 / COUNT(*), 1) AS rate,
+                ROUND(SUM(IF(a.state = 1, 1, 0)) * 100.0 / COUNT(*), 1) AS rate,
                 COUNT(DISTINCT IF(le.paper_type IN (20,30), le.paper_id, null)) paperCount,
-                ROUND(SUM(IF(a.`state` = 1 AND le.paper_type IN (20,30), 1, 0)) * 100 / SUM(IF(le.paper_type IN (20,30), 1, 0)), 1) paperRate
-            FROM `sys_user` u
-            JOIN `dz_cards` dc ON u.card_id = dc.card_id
-            JOIN `learn_examinee` le ON le.student_id = u.user_id AND le.state >= 4
-            JOIN `learn_answer` a ON a.`examinee_id` = le.`examinee_id` AND a.`state` > 0
-            WHERE 1=1
+                ROUND(SUM(IF(a.`state` = 1 AND le.paper_type IN (20,30), 1, 0)) * 100.0 / NULLIF(SUM(IF(le.paper_type IN (20,30), 1, 0)), 0), 1) paperRate
+            FROM `learn_answer` a
+            INNER JOIN `learn_examinee` le ON a.`examinee_id` = le.`examinee_id` AND le.state >= 4
+            INNER JOIN `sys_user` u ON le.student_id = u.user_id
+            INNER JOIN `dz_cards` dc ON u.card_id = dc.card_id
+            WHERE a.`state` > 0
             <if test="studyTimeBegin != null and studyTimeBegin != ''">
-                AND (date(a.create_time) &gt;= date(#{studyTimeBegin}) OR date(le.end_time) &gt;= date(#{studyTimeBegin}))
+                <!-- 优化:去掉date()函数,直接比较datetime,可以使用索引 -->
+                AND (a.create_time &gt;= CONCAT(#{studyTimeBegin}, ' 00:00:00') OR le.end_time &gt;= CONCAT(#{studyTimeBegin}, ' 00:00:00'))
             </if>
             <if test="studyTimeEnd != null and studyTimeEnd != ''">
-                AND (date(a.create_time) &lt;= date(#{studyTimeEnd}) OR date(le.end_time) &lt;= date(#{studyTimeEnd}))
+                <!-- 优化:去掉date()函数,直接比较datetime,可以使用索引 -->
+                AND (a.create_time &lt;= CONCAT(#{studyTimeEnd}, ' 23:59:59') OR le.end_time &lt;= CONCAT(#{studyTimeEnd}, ' 23:59:59'))
             </if>
             GROUP BY a.student_id
         ),
         T2 AS (
             <!-- 定义查询 2 的聚合结果(视频观看统计)-->
+            <!-- 优化:去掉date()函数,直接比较datetime,可以使用索引 -->
             SELECT
                 ls.student_id,
                 COUNT(DISTINCT vw.title) AS total,
                 ROUND(SUM(vw.duration * vw.percent / 100.0)) AS value
             FROM `b_customer_video_watches` vw
-            JOIN `learn_student` ls ON vw.customerCode = ls.student_id
-            WHERE 1=1
-            <if test="studyTimeBegin != null and studyTimeBegin != ''">
-                AND date(vw.time) &gt;= date(#{studyTimeBegin})
-            </if>
-            <if test="studyTimeEnd != null and studyTimeEnd != ''">
-                AND date(vw.time) &lt;= date(#{studyTimeEnd})
-            </if>
+            INNER JOIN `learn_student` ls ON vw.customerCode = ls.student_id
+            <where>
+                <if test="studyTimeBegin != null and studyTimeBegin != ''">
+                    AND vw.time &gt;= CONCAT(#{studyTimeBegin}, ' 00:00:00')
+                </if>
+                <if test="studyTimeEnd != null and studyTimeEnd != ''">
+                    AND vw.time &lt;= CONCAT(#{studyTimeEnd}, ' 23:59:59')
+                </if>
+            </where>
             GROUP BY ls.student_id
         ),
         AllStudents AS (
             <!-- 提取所有涉及的唯一 Student ID-->
+            <!-- 优化:使用UNION ALL代替UNION,如果确定student_id不重复可以提升性能 -->
             SELECT student_id FROM T1
             UNION
             SELECT student_id FROM T2
         ),
         StudentBaseInfo AS (
             <!-- 获取所有涉及学生的基础信息-->
+            <!-- 优化:简化COALESCE,去掉不必要的NULL判断 -->
             SELECT DISTINCT
                 dc.dept_id,
                 asl.student_id,
-                COALESCE(dc.school_id, NULL) AS school_id,
-                COALESCE(dc.class_id, NULL) AS class_id,
-                COALESCE(dc.campus_id, NULL) AS campus_id,
-                COALESCE(dc.campus_class_id, NULL) AS campus_class_id,
-                COALESCE(dc.agent_id, NULL) AS agent_id,
-                COALESCE(dc.leaf_agent_id, NULL) AS leaf_agent_id,
+                dc.school_id,
+                dc.class_id,
+                dc.campus_id,
+                dc.campus_class_id,
+                dc.agent_id,
+                dc.leaf_agent_id,
                 u.nick_name AS nick_name,
-                COALESCE(dc.card_no, NULL) AS card_no
+                dc.card_no
             FROM AllStudents asl
-            <!-- 基础信息主要从 sys_user 和 dz_cards 获取-->
             LEFT JOIN `sys_user` u ON asl.student_id = u.user_id
             LEFT JOIN `dz_cards` dc ON u.card_id = dc.card_id
         )
@@ -214,8 +220,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         <where>
             <if test="deptId != null"> AND SBI.dept_id = #{deptId}</if>
             <if test="schoolId != null"> AND SBI.school_id = #{schoolId}</if>
-            <if test="teacherId != null"> AND (SBI.class_id in ( SELECT t.class_id FROM dz_teacher_class t WHERE t.teacher_id = #{teacherId} and now() &lt; t.out_date)
-                 or SBI.campus_class_id in ( SELECT t.class_id FROM dz_teacher_class t WHERE t.teacher_id = #{teacherId} and now() &lt; t.out_date))</if>
+            <if test="teacherId != null">
+                <!-- 优化:将子查询改为EXISTS,性能更好 -->
+                AND EXISTS (
+                    SELECT 1 FROM dz_teacher_class t
+                    WHERE t.teacher_id = #{teacherId}
+                    AND NOW() &lt; t.out_date
+                    AND (t.class_id = SBI.class_id OR t.class_id = SBI.campus_class_id)
+                )
+            </if>
             <if test="classId != null"> AND SBI.class_id = #{classId}</if>
             <if test="campusId != null"> AND SBI.campus_id = #{campusId}</if>
             <if test="campusClassId != null"> AND SBI.campus_class_id = #{campusClassId}</if>

+ 32 - 9
ie-system/src/main/resources/mapper/system/SysUserMapper.xml

@@ -21,10 +21,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<result property="endYear"       column="end_year"     />
 		<result property="inviteCode"    column="invite_code"     />
 		<result property="scores"        column="scores" typeHandler="com.ruoyi.system.handlers.SubjectScoreTypeHandler"        />
-		<result property="selectSubject" column="select_subject"       />
+		<result property="examMajor"     column="exam_major"       />
+		<result property="score"          column="score"            />
+		<result property="scoreLock"      column="score_lock"       />
+		<result property="seatInput"     column="seat_input"       />
+		<result property="examMajorName" column="exam_major_name"  />
 		<result property="directedStudy" column="directed_study"       />
 		<result property="evalCounts"     column="eval_counts" />
 		<result property="cardId"        column="card_id"         />
+		<result property="bindStatus"        column="bind_status"         />
         <result property="status"        column="status"          />
         <result property="delFlag"       column="del_flag"        />
         <result property="loginIp"       column="login_ip"        />
@@ -63,7 +68,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 	<sql id="selectUserVo">
         select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.pwd_update_date, u.create_by, u.create_time, u.remark,
-		u.location,u.exam_type,u.reg_status,u.end_year,u.invite_code,u.scores,u.select_subject,u.directed_study,u.eval_counts,u.card_id,u.account_type,
+		u.location,u.exam_type,u.reg_status,u.end_year,u.invite_code,u.scores,u.exam_major,u.score,u.score_lock,u.seat_input,u.exam_major_name,u.directed_study,u.eval_counts,u.card_id,u.bind_status,u.account_type,
         d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
         r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status, u.user_type, u.user_type_id
         from sys_user u
@@ -74,7 +79,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
     <select id="selectUserList" parameterType="SysUser" resultMap="SysUserResult">
 		select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader, u.user_type, u.user_type_id, u.account_type
-		,u.card_id,u.end_year,u.location,u.invite_code,u.exam_type from sys_user u
+		,u.card_id,u.bind_status,u.end_year,u.location,u.invite_code,u.exam_type from sys_user u
 		left join sys_dept d on u.dept_id = d.dept_id
 		left join dz_cards c on u.card_id = c.card_id
 		left join dz_agent a on CAST(u.invite_code AS UNSIGNED) = a.agent_id
@@ -145,7 +150,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 	<select id="selectCardUserList" parameterType="SysUser" resultMap="SysUserResult">
 		select u.user_id, u.dept_id, u.nick_name, u.user_name, u.email, u.avatar, u.phonenumber, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark, d.dept_name, d.leader, u.user_type, u.user_type_id, u.account_type
-		,u.card_id,u.end_year,u.location,u.invite_code,u.exam_type from sys_user u
+		,u.card_id,u.bind_status,u.end_year,u.location,u.invite_code,u.exam_type from sys_user u
 		left join sys_dept d on u.dept_id = d.dept_id
 		left join dz_cards c on u.card_id = c.card_id
 		left join dz_agent a on CAST(u.invite_code AS UNSIGNED) = a.agent_id
@@ -196,6 +201,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		<if test="inviteCode != null and inviteCode != ''">
 			AND u.invite_code like concat('%', #{inviteCode}, '%')
 		</if>
+		<if test="bindStatus != null">
+			AND u.bind_status = #{bindStatus}
+		</if>
 		<if test="usercardType != null and usercardType != ''">
 			<choose>
 				<when test="usercardType == '99' or usercardType == 99">
@@ -280,14 +288,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 
 	<select id="selectUserByUserIds" resultMap="SysUserResult">
 		select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.password2, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.pwd_update_date, u.create_by, u.create_time, u.remark,
-		u.location,u.exam_type,u.reg_status,u.end_year,u.invite_code,u.scores,u.select_subject,u.directed_study,u.eval_counts,u.card_id,u.account_type
+		u.location,u.exam_type,u.reg_status,u.end_year,u.invite_code,u.scores,u.exam_major,u.score,u.score_lock,u.seat_input,u.exam_major_name,u.directed_study,u.eval_counts,u.card_id,u.account_type
         from sys_user u
 		where u.user_id in <foreach collection="ids" item="id" open="(" separator="," close=")">#{id}</foreach>
 	</select>
 
 	<select id="selectUserByUserNames" resultMap="SysUserResult">
 		select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.password2, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.pwd_update_date, u.create_by, u.create_time, u.remark,
-		u.location,u.exam_type,u.reg_status,u.end_year,u.invite_code,u.scores,u.select_subject,u.directed_study,u.eval_counts,u.card_id,u.account_type
+		u.location,u.exam_type,u.reg_status,u.end_year,u.invite_code,u.scores,u.exam_major,u.score,u.score_lock,u.seat_input,u.exam_major_name,u.directed_study,u.eval_counts,u.card_id,u.account_type
         from sys_user u
 		where u.user_name in <foreach collection="userNames" item="userName" open="(" separator="," close=")">#{userName}</foreach>
 		and u.del_flag = '0'
@@ -335,9 +343,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 		    <if test="inviteCode != null and inviteCode != ''">invite_code,</if>
 		    <if test="scores != null and scores != ''">scores,</if>
 		    <if test="evalCounts != null">eval_counts,</if>
-		    <if test="selectSubject != null and selectSubject != ''">select_subject,</if>
+		    <if test="examMajor != null and examMajor != ''">exam_major,</if>
+		    <if test="score != null">score,</if>
+		    <if test="scoreLock != null">score_lock,</if>
+		    <if test="seatInput != null">seat_input,</if>
+		    <if test="examMajorName != null and examMajorName != ''">exam_major_name,</if>
 		    <if test="directedStudy != null and directedStudy != ''">directed_study,</if>
 		    <if test="cardId != null and cardId != ''">card_id,</if>
+		    <if test="bindStatus != null">bind_status,</if>
  			<if test="createBy != null and createBy != ''">create_by,</if>
  			<if test="remark != null and remark != ''">remark,</if>
 		    <if test="userType != null and userType != ''">user_type,</if>
@@ -364,9 +377,14 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
  			<if test="inviteCode != null and inviteCode != ''">#{inviteCode},</if>
  			<if test="scores != null and scores != ''">#{scores, typeHandler=com.ruoyi.system.handlers.SubjectScoreTypeHandler},</if>
 		    <if test="evalCounts != null">#{evalCounts},</if>
- 			<if test="selectSubject != null and selectSubject != ''">#{selectSubject},</if>
+ 			<if test="examMajor != null and examMajor != ''">#{examMajor},</if>
+ 			<if test="score != null">#{score},</if>
+ 			<if test="scoreLock != null">#{scoreLock},</if>
+ 			<if test="seatInput != null">#{seatInput},</if>
+ 			<if test="examMajorName != null and examMajorName != ''">#{examMajorName},</if>
  			<if test="directedStudy != null and directedStudy != ''">#{directedStudy},</if>
  			<if test="cardId != null and cardId != ''">#{cardId},</if>
+		    <if test="bindStatus != null">#{bindStatus},</if>
  			<if test="createBy != null and createBy != ''">#{createBy},</if>
  			<if test="remark != null and remark != ''">#{remark},</if>
 		    <if test="userType != null">#{userType},</if>
@@ -395,10 +413,15 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
 			<if test="endYear != null">end_year = #{endYear},</if>
 			<if test="inviteCode != null and inviteCode != ''">invite_code = #{inviteCode},</if>
 			<if test="scores != null and scores != ''">scores = #{scores, typeHandler=com.ruoyi.system.handlers.SubjectScoreTypeHandler},</if>
-			<if test="selectSubject != null and selectSubject != ''">select_subject = #{selectSubject},</if>
+			<if test="examMajor != null and examMajor != ''">exam_major = #{examMajor},</if>
+			<if test="score != null">score = #{score},</if>
+			<if test="scoreLock != null">score_lock = #{scoreLock},</if>
+			<if test="seatInput != null">seat_input = #{seatInput},</if>
+			<if test="examMajorName != null and examMajorName != ''">exam_major_name = #{examMajorName},</if>
 			<if test="directedStudy != null and directedStudy != ''">directed_study = #{directedStudy},</if>
 			<if test="evalCounts != null and evalCounts != ''">eval_counts = #{evalCounts},</if>
 			<if test="cardId != null and cardId != ''">card_id = #{cardId},</if>
+			<if test="bindStatus != null">bind_status = #{bindStatus},</if>
  			<if test="loginIp != null and loginIp != ''">login_ip = #{loginIp},</if>
  			<if test="loginDate != null">login_date = #{loginDate},</if>
  			<if test="updateBy != null and updateBy != ''">update_by = #{updateBy},</if>

+ 2 - 4
ie-system/src/main/resources/mapper/syzy/BBusiWishUniversitiesMapper.xml

@@ -167,9 +167,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
       </if>
       <if test="majorCodes!= null">
 <!--        and u.code in (select distinct t2.collegeCode from b_busi_wish_universities_profession t2 where t2.code in <foreach item="majorCode" collection="majorCodes" open="(" separator="," close=")">#{majorCode}</foreach>-->
-        and u.id in (SELECT distinct t2.universityId from a_marjor_plan t2 where t2.majorCode in <foreach item="majorCode" collection="majorCodes" open="(" separator="," close=")">#{majorCode}</foreach>
-        <if test="examMajor != null "> and t2.examMajor = #{examMajor}</if>
-        )
+        and u.id in (SELECT distinct t2.universityId from a_marjor_plan t2 where t2.majorCode in <foreach item="majorCode" collection="majorCodes" open="(" separator="," close=")">#{majorCode}</foreach>)
       </if>
     </where>
     <choose>
@@ -209,7 +207,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
       <if test="stars!= null"> and <foreach item="o" collection="stars" open="(" separator=" OR " close=")">u.star like concat('%', #{o}, '%')</foreach></if>
       <if test="majorCodes!= null">
         <!--        and u.code in (select distinct t2.collegeCode from b_busi_wish_universities_profession t2 where t2.code in <foreach item="majorCode" collection="majorCodes" open="(" separator="," close=")">#{majorCode}</foreach>-->
-        and u.id in (SELECT distinct t2.universityId from a_marjor_plan t2 where t2.majorCode in <foreach item="majorCode" collection="majorCodes" open="(" separator="," close=")">#{majorCode}</foreach>
+        and u.id in (SELECT distinct t2.collegeCode from b_busi_wish_universities_profession t2 where t2.code in <foreach item="majorCode" collection="majorCodes" open="(" separator="," close=")">#{majorCode}</foreach>
         <if test="examMajor != null "> and t2.examMajor = #{examMajor}</if>
         )
       </if>

+ 76 - 0
ie-system/src/main/resources/mapper/voluntary/BBusiEcardPriceMapper.xml

@@ -0,0 +1,76 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.voluntary.mapper.BBusiEcardPriceMapper">
+    
+    <resultMap type="BBusiEcardPrice" id="BBusiEcardPriceResult">
+        <result property="id"    column="id"    />
+        <result property="location"    column="location"    />
+        <result property="examType"    column="examType"    />
+        <result property="price"    column="price"    />
+        <result property="year"    column="year"    />
+        <result property="outTime"    column="outTime"    />
+    </resultMap>
+
+    <sql id="selectBBusiEcardPriceVo">
+        select id, location,examType, price, year, outTime from b_busi_ecard_price
+    </sql>
+
+    <select id="selectBBusiEcardPriceList" parameterType="BBusiEcardPrice" resultMap="BBusiEcardPriceResult">
+        <include refid="selectBBusiEcardPriceVo"/>
+        <where>  
+            <if test="location != null "> and location = #{location}</if>
+            <if test="examType != null "> and examType = #{examType}</if>
+            <if test="price != null "> and price = #{price}</if>
+            <if test="year != null "> and year = #{year}</if>
+            <if test="outTime != null "> and outTime = #{outTime}</if>
+        </where>
+    </select>
+    
+    <select id="selectBBusiEcardPriceById" parameterType="Long" resultMap="BBusiEcardPriceResult">
+        <include refid="selectBBusiEcardPriceVo"/>
+        where id = #{id}
+    </select>
+        
+    <insert id="insertBBusiEcardPrice" parameterType="BBusiEcardPrice" useGeneratedKeys="true" keyProperty="id">
+        insert into b_busi_ecard_price
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="location != null">location,</if>
+            <if test="examType != null">examType,</if>
+            <if test="price != null">price,</if>
+            <if test="year != null">year,</if>
+            <if test="outTime != null">outTime,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="location != null">#{location},</if>
+            <if test="examType != null">#{examType},</if>
+            <if test="price != null">#{price},</if>
+            <if test="year != null">#{year},</if>
+            <if test="outTime != null">#{outTime},</if>
+         </trim>
+    </insert>
+
+    <update id="updateBBusiEcardPrice" parameterType="BBusiEcardPrice">
+        update b_busi_ecard_price
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="location != null">location = #{location},</if>
+            <if test="examType != null">examType = #{examType},</if>
+            <if test="price != null">price = #{price},</if>
+            <if test="year != null">year = #{year},</if>
+            <if test="outTime != null">outTime = #{outTime},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteBBusiEcardPriceById" parameterType="Long">
+        delete from b_busi_ecard_price where id = #{id}
+    </delete>
+
+    <delete id="deleteBBusiEcardPriceByIds" parameterType="String">
+        delete from b_busi_ecard_price where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>

+ 192 - 0
ie-system/src/main/resources/mapper/voluntary/BBusiPaymentOrdersMapper.xml

@@ -0,0 +1,192 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.ruoyi.voluntary.mapper.BBusiPaymentOrdersMapper">
+    
+    <resultMap type="BBusiPaymentOrders" id="BBusiPaymentOrdersResult">
+        <result property="id"    column="id"    />
+        <result property="code"    column="code"    />
+        <result property="outTradeNo"    column="outTradeNo"    />
+        <result property="qrcodeId"    column="qrcodeId"    />
+        <result property="type"    column="type"    />
+        <result property="cardId"    column="cardId"    />
+        <result property="cardNo"    column="cardNo"    />
+        <result property="year"    column="year"    />
+        <result property="phonenumber"    column="phonenumber"    />
+        <result property="transactionId"    column="transaction_id"    />
+        <result property="customerCode"    column="customerCode"    />
+        <result property="outTime"    column="outTime"    />
+        <result property="price"    column="price"    />
+        <result property="num"    column="num"    />
+        <result property="fee"    column="fee"    />
+        <result property="totalFee"    column="totalFee"    />
+        <result property="payFee"    column="payFee"    />
+        <result property="createTime"    column="createTime"    />
+        <result property="creator"    column="creator"    />
+        <result property="body"    column="body"    />
+        <result property="detail"    column="detail"    />
+        <result property="attach"    column="attach"    />
+        <result property="prepayId"    column="prepayId"    />
+        <result property="payer"    column="payer"    />
+        <result property="payTime"    column="payTime"    />
+        <result property="feedBack"    column="feedBack"    />
+        <result property="syncTime"    column="syncTime"    />
+        <result property="status"    column="status"    />
+    </resultMap>
+
+    <sql id="selectBBusiPaymentOrdersVo">
+        select id, code, outTradeNo, qrcodeId, type, cardId, cardNo, year, phonenumber, transaction_id, customerCode, outTime, price, num, fee, totalFee, payFee, createTime, creator, body, detail, attach, prepayId, payer, payTime, feedBack, syncTime, status from b_busi_payment_orders
+    </sql>
+
+    <select id="selectBBusiPaymentOrdersList" parameterType="BBusiPaymentOrders" resultMap="BBusiPaymentOrdersResult">
+        <include refid="selectBBusiPaymentOrdersVo"/>
+        <where>  
+            <if test="code != null  and code != ''"> and code = #{code}</if>
+            <if test="outTradeNo != null  and outTradeNo != ''"> and outTradeNo = #{outTradeNo}</if>
+            <if test="qrcodeId != null  and qrcodeId != ''"> and qrcodeId = #{qrcodeId}</if>
+            <if test="type != null  and type != ''"> and type = #{type}</if>
+            <if test="cardId != null "> and cardId = #{cardId}</if>
+            <if test="cardNo != null  and cardNo != ''"> and cardNo = #{cardNo}</if>
+            <if test="year != null  and year != ''"> and year = #{year}</if>
+            <if test="phonenumber != null  and phonenumber != ''"> and phonenumber = #{phonenumber}</if>
+            <if test="transactionId != null  and transactionId != ''"> and transaction_id = #{transactionId}</if>
+            <if test="customerCode != null  and customerCode != ''"> and customerCode = #{customerCode}</if>
+            <if test="outTime != null "> and outTime = #{outTime}</if>
+            <if test="price != null "> and price = #{price}</if>
+            <if test="num != null "> and num = #{num}</if>
+            <if test="fee != null "> and fee = #{fee}</if>
+            <if test="totalFee != null "> and totalFee = #{totalFee}</if>
+            <if test="payFee != null "> and payFee = #{payFee}</if>
+            <if test="createTime != null "> and createTime = #{createTime}</if>
+            <if test="creator != null  and creator != ''"> and creator = #{creator}</if>
+            <if test="body != null  and body != ''"> and body = #{body}</if>
+            <if test="detail != null  and detail != ''"> and detail = #{detail}</if>
+            <if test="attach != null  and attach != ''"> and attach = #{attach}</if>
+            <if test="prepayId != null  and prepayId != ''"> and prepayId = #{prepayId}</if>
+            <if test="payer != null  and payer != ''"> and payer = #{payer}</if>
+            <if test="payTime != null "> and payTime = #{payTime}</if>
+            <if test="feedBack != null  and feedBack != ''"> and feedBack = #{feedBack}</if>
+            <if test="syncTime != null "> and syncTime = #{syncTime}</if>
+            <if test="status != null "> and status = #{status}</if>
+        </where>
+        order by id desc
+    </select>
+    
+    <select id="selectBBusiPaymentOrdersById" parameterType="Long" resultMap="BBusiPaymentOrdersResult">
+        <include refid="selectBBusiPaymentOrdersVo"/>
+        where id = #{id}
+    </select>
+
+    <select id="selectBBusiPaymentOrdersByCardNo" parameterType="String" resultMap="BBusiPaymentOrdersResult">
+        <include refid="selectBBusiPaymentOrdersVo"/>
+        where cardNo = #{cardNo}
+    </select>
+        
+    <insert id="insertBBusiPaymentOrders" parameterType="BBusiPaymentOrders" useGeneratedKeys="true" keyProperty="id">
+        insert into b_busi_payment_orders
+        <trim prefix="(" suffix=")" suffixOverrides=",">
+            <if test="code != null and code != ''">code,</if>
+            <if test="outTradeNo != null and outTradeNo != ''">outTradeNo,</if>
+            <if test="qrcodeId != null">qrcodeId,</if>
+            <if test="type != null">type,</if>
+            <if test="cardId != null">cardId,</if>
+            <if test="cardNo != null">cardNo,</if>
+            <if test="year != null and year != ''">year,</if>
+            <if test="phonenumber != null">phonenumber,</if>
+            <if test="transactionId != null">transaction_id,</if>
+            <if test="customerCode != null">customerCode,</if>
+            <if test="outTime != null">outTime,</if>
+            <if test="price != null">price,</if>
+            <if test="num != null">num,</if>
+            <if test="fee != null">fee,</if>
+            <if test="totalFee != null">totalFee,</if>
+            <if test="payFee != null">payFee,</if>
+            <if test="createTime != null">createTime,</if>
+            <if test="creator != null and creator != ''">creator,</if>
+            <if test="body != null">body,</if>
+            <if test="detail != null">detail,</if>
+            <if test="attach != null">attach,</if>
+            <if test="prepayId != null">prepayId,</if>
+            <if test="payer != null">payer,</if>
+            <if test="payTime != null">payTime,</if>
+            <if test="feedBack != null">feedBack,</if>
+            <if test="syncTime != null">syncTime,</if>
+            <if test="status != null">status,</if>
+         </trim>
+        <trim prefix="values (" suffix=")" suffixOverrides=",">
+            <if test="code != null and code != ''">#{code},</if>
+            <if test="outTradeNo != null and outTradeNo != ''">#{outTradeNo},</if>
+            <if test="qrcodeId != null">#{qrcodeId},</if>
+            <if test="type != null">#{type},</if>
+            <if test="cardId != null">#{cardId},</if>
+            <if test="cardNo != null">#{cardNo},</if>
+            <if test="year != null and year != ''">#{year},</if>
+            <if test="phonenumber != null">#{phonenumber},</if>
+            <if test="transactionId != null">#{transactionId},</if>
+            <if test="customerCode != null">#{customerCode},</if>
+            <if test="outTime != null">#{outTime},</if>
+            <if test="price != null">#{price},</if>
+            <if test="num != null">#{num},</if>
+            <if test="fee != null">#{fee},</if>
+            <if test="totalFee != null">#{totalFee},</if>
+            <if test="payFee != null">#{payFee},</if>
+            <if test="createTime != null">#{createTime},</if>
+            <if test="creator != null and creator != ''">#{creator},</if>
+            <if test="body != null">#{body},</if>
+            <if test="detail != null">#{detail},</if>
+            <if test="attach != null">#{attach},</if>
+            <if test="prepayId != null">#{prepayId},</if>
+            <if test="payer != null">#{payer},</if>
+            <if test="payTime != null">#{payTime},</if>
+            <if test="feedBack != null">#{feedBack},</if>
+            <if test="syncTime != null">#{syncTime},</if>
+            <if test="status != null">#{status},</if>
+         </trim>
+    </insert>
+
+    <update id="updateBBusiPaymentOrders" parameterType="BBusiPaymentOrders">
+        update b_busi_payment_orders
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="code != null and code != ''">code = #{code},</if>
+            <if test="outTradeNo != null and outTradeNo != ''">outTradeNo = #{outTradeNo},</if>
+            <if test="qrcodeId != null">qrcodeId = #{qrcodeId},</if>
+            <if test="type != null">type = #{type},</if>
+            <if test="cardId != null">cardId = #{cardId},</if>
+            <if test="cardNo != null">cardNo = #{cardNo},</if>
+            <if test="year != null and year != ''">year = #{year},</if>
+            <if test="phonenumber != null">phonenumber = #{phonenumber},</if>
+            <if test="transactionId != null">transaction_id = #{transactionId},</if>
+            <if test="customerCode != null">customerCode = #{customerCode},</if>
+            <if test="outTime != null">outTime = #{outTime},</if>
+            <if test="price != null">price = #{price},</if>
+            <if test="num != null">num = #{num},</if>
+            <if test="fee != null">fee = #{fee},</if>
+            <if test="totalFee != null">totalFee = #{totalFee},</if>
+            <if test="payFee != null">payFee = #{payFee},</if>
+            <if test="createTime != null">createTime = #{createTime},</if>
+            <if test="creator != null and creator != ''">creator = #{creator},</if>
+            <if test="body != null">body = #{body},</if>
+            <if test="detail != null">detail = #{detail},</if>
+            <if test="attach != null">attach = #{attach},</if>
+            <if test="prepayId != null">prepayId = #{prepayId},</if>
+            <if test="payer != null">payer = #{payer},</if>
+            <if test="payTime != null">payTime = #{payTime},</if>
+            <if test="feedBack != null">feedBack = #{feedBack},</if>
+            <if test="syncTime != null">syncTime = #{syncTime},</if>
+            <if test="status != null">status = #{status},</if>
+        </trim>
+        where id = #{id}
+    </update>
+
+    <delete id="deleteBBusiPaymentOrdersById" parameterType="Long">
+        delete from b_busi_payment_orders where id = #{id}
+    </delete>
+
+    <delete id="deleteBBusiPaymentOrdersByIds" parameterType="String">
+        delete from b_busi_payment_orders where id in 
+        <foreach item="id" collection="array" open="(" separator="," close=")">
+            #{id}
+        </foreach>
+    </delete>
+</mapper>