pinPage.vue 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <template>
  2. <div>
  3. <!-- 单词区 -->
  4. <selectWordsVue :active-words="activeWords" :activeWord="activeWord"></selectWordsVue>
  5. <!-- 显示区 -->
  6. <selectTypesVue activeSelect="2"></selectTypesVue>
  7. <!-- 拼读区 -->
  8. <view>
  9. <view v-for="item in data.list">
  10. <view></view>
  11. </view>
  12. </view>
  13. <!-- 解释区 -->
  14. <view>
  15. {{activeWord.jianyi.join(';')}}
  16. </view>
  17. <!-- 音标区 -->
  18. <view></view>
  19. <!-- 图片区 -->
  20. <view></view>
  21. <!-- 选择区 -->
  22. <view></view>
  23. </div>
  24. </template>
  25. <script setup>
  26. import selectWordsVue from './selectWords.vue';
  27. import selectTypesVue from './selectTypes.vue';
  28. import {
  29. reactive,
  30. computed
  31. } from 'vue';
  32. const props = defineProps({
  33. activeWord: {
  34. type: Object,
  35. },
  36. activeWords: {
  37. type: Array
  38. },
  39. })
  40. const data = reactive({
  41. list: [],
  42. selectList: [],
  43. result: false, // 正确性
  44. })
  45. setTimeout(() => {
  46. console.log('activeWord', props.activeWord)
  47. })
  48. // 初始化 单词列表
  49. function initList() {
  50. data.selectList.forEach((item, index) => {
  51. data.list[index] = ''
  52. })
  53. }
  54. function handleSelect(word) {
  55. if (data.list.find(item => item == word)) {
  56. data.list[data.list.findIndex(item => item == word)] = '';
  57. }
  58. // 覆盖状态
  59. let status = false;
  60. data.list.forEach((item, index) => {
  61. // 无值 无修改
  62. if (!item && !status) {
  63. // 第一项空值覆盖
  64. data.list[index] = word;
  65. // 以有控制覆盖
  66. status = true;
  67. }
  68. })
  69. // 校验正确性
  70. checkIsRight();
  71. }
  72. function checkIsRight() {
  73. if (data.list.join('') === data.selectList.join('')) {
  74. // 正确
  75. data.result = true;
  76. noticeBackDb();
  77. } else {
  78. data.result = false;
  79. }
  80. }
  81. function noticeBackDb() {
  82. }
  83. </script>
  84. <style>
  85. </style>