common.js 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189
  1. // 查看方式
  2. export const viewMethodList = [
  3. { value: 'independent', label: '独立排放' },
  4. { value: 'list', label: '播放列表' },
  5. ];
  6. // 序号显示方式
  7. export const displayList = [
  8. { value: 'true', label: '显示' },
  9. { value: 'false', label: '隐藏' },
  10. ];
  11. // 序号类型
  12. export const serialNumberTypeList = [
  13. { value: 'number', label: '数字' },
  14. { value: 'bracket_number', label: '括号数字' },
  15. { value: 'letter', label: '字母' },
  16. { value: 'capital', label: '大写字母' },
  17. ];
  18. // 序号位置
  19. export const serialNumberPositionList = [
  20. { value: 'top-start', justifyContent: 'flex-start' },
  21. { value: 'top', justifyContent: 'center' },
  22. { value: 'top-end', justifyContent: 'flex-end' },
  23. { value: 'left-start', justifyContent: 'flex-start' },
  24. { value: 'left', justifyContent: 'center' },
  25. { value: 'left-end', justifyContent: 'flex-end' },
  26. { value: 'right-start', justifyContent: 'flex-start' },
  27. { value: 'right', justifyContent: 'center' },
  28. { value: 'right-end', justifyContent: 'flex-end' },
  29. { value: 'bottom-start', justifyContent: 'flex-start' },
  30. { value: 'bottom', justifyContent: 'center' },
  31. { value: 'bottom-end', justifyContent: 'flex-end' },
  32. ];
  33. // 公用设置属性
  34. export let commonSetProperty = {
  35. serial_number: 1, // 序号
  36. sn_type: serialNumberTypeList[0].value, // 序号类型:letter字母 number数字 capital大写字母 bracket_number括号数字
  37. sn_position: serialNumberPositionList[3].value, // 序号位置:top-start top top-end,left-start left left-end等
  38. sn_display_mode: displayList[0].value, // 序号显示方式:true显示 false隐藏
  39. };
  40. // 序号样式
  41. export const serialNumberStyleList = [
  42. { value: 'solidBlockStyle' }, // 实心方块
  43. { value: 'solidCircleStyle' }, // 实心圆
  44. { value: 'hollowBlockStyle' }, // 空心方块
  45. { value: 'hollowCircleStyle' }, // 空心圆
  46. { value: 'defaultStyle' }, // 默认无
  47. ];
  48. // 拼音位置
  49. export const pinyinPositionList = [
  50. { value: 'top', label: '上' },
  51. { value: 'bottom', label: '下' },
  52. ];
  53. // 排列方式
  54. export const arrangeTypeList = [
  55. { value: 'horizontal', label: '横排' },
  56. { value: 'vertical', label: '竖排' },
  57. ];
  58. export const switchOption = [
  59. {
  60. value: 'true',
  61. label: '开启',
  62. },
  63. {
  64. value: 'false',
  65. label: '关闭',
  66. },
  67. ];
  68. /**
  69. * 是否开启
  70. * @param {String} value 值
  71. * @returns Boolean
  72. */
  73. export function isEnable(value) {
  74. return value === switchOption[0].value;
  75. }
  76. export const tone_data = [
  77. ['ā', 'á', 'ǎ', 'à', 'a'],
  78. ['ō', 'ó', 'ǒ', 'ò', 'o'],
  79. ['ē', 'é', 'ě', 'è', 'e'],
  80. ['ī', 'í', 'ǐ', 'ì', 'i'],
  81. ['ū', 'ú', 'ǔ', 'ù', 'u'],
  82. ['ǖ', 'ǘ', 'ǚ', 'ǜ', 'ü'],
  83. ['ǖ', 'ǘ', 'ǚ', 'ǜ', 'ü'],
  84. ['Ā', 'Á', 'Â', 'À', 'A'],
  85. ['Ō', 'Ó', 'Ô', 'Ò', 'O'],
  86. ['Ē', 'É', 'Ê', 'È', 'E'],
  87. ['Ī', 'Í', 'Î', 'Ì', 'I'],
  88. ['Ū', 'Ú', 'Û', 'Ù', 'U'],
  89. ['Ū', 'Ú', 'Û', 'Ù', 'U'],
  90. ['n', 'ń', 'ň', 'ǹ', 'n'],
  91. ['m̄', 'ḿ', 'm', 'm̀', 'n'],
  92. ];
  93. /**
  94. * 添加声调
  95. * @param {Number} number
  96. * @param {String} con
  97. * @returns String
  98. */
  99. export function addTone(number, con) {
  100. const zmList = ['a', 'o', 'e', 'i', 'u', 'v', 'ü', 'A', 'O', 'E', 'I', 'U','n','m'];
  101. let cons = con;
  102. if (number) {
  103. for (let i = 0; i < zmList.length; i++) {
  104. let zm = zmList[i];
  105. if (con.includes(zm)) {
  106. let zm2 = tone_data[i][number - 1];
  107. if (con.includes('iu')) {
  108. zm2 = tone_data[4][number - 1];
  109. cons = con.replace('u', zm2);
  110. } else if (con.includes('ui')) {
  111. zm2 = tone_data[3][number - 1];
  112. cons = con.replace('i', zm2);
  113. } else if (/yv|jv|qv|xv/.test(con)) {
  114. zm2 = tone_data[4][number - 1];
  115. cons = con.replace('v', zm2);
  116. } else if (/yü|jü|qü|xü/.test(con)) {
  117. zm2 = tone_data[4][number - 1];
  118. cons = con.replace('ü', zm2);
  119. } else {
  120. cons = con.replace(zm, zm2);
  121. }
  122. break;
  123. }
  124. }
  125. }
  126. return cons;
  127. }
  128. export function handleToneValue(valItem) {
  129. let numList = [];
  130. if (/[A-Za-zü]+\d/g.test(valItem)) {
  131. valItem.split('').forEach((item, i) => {
  132. if (/\d/.test(item)) {
  133. let numIndex = numList.length === 0 ? 0 : numList[numList.length - 1].index;
  134. let con = valItem.substring(numIndex, i).replace(/\d/g, '');
  135. numList.push({
  136. number: item,
  137. con,
  138. });
  139. }
  140. });
  141. } else {
  142. numList = [];
  143. }
  144. return numList.length === 0 ? [{ con: valItem }] : numList;
  145. }
  146. /**
  147. * 判断序号类型
  148. * @param {string} str
  149. */
  150. export function checkString(str) {
  151. const number = /^\d/.test(str); // 判断是否包含数字
  152. const letter = /^[a-z]/.test(str); // 判断是否包含字母
  153. const capital = /^[A-Z]/.test(str); // 判断是否包含大写字母
  154. const bracket_number = /\(\d+\)/.test(str); // 判断是否包含括号数字,例如 (123)
  155. const obj = { number, letter, capital, bracket_number };
  156. let strType = Object.keys(obj).find((key) => obj[key]);
  157. return strType;
  158. }
  159. // 计算选项方法
  160. export const computeOptionMethods = {
  161. [serialNumberTypeList[0].value]: (i) => `${i + 1}`,
  162. [serialNumberTypeList[1].value]: (i) => `(${i + 1})`,
  163. [serialNumberTypeList[2].value]: (i) => `${String.fromCharCode(97 + i)}`, // 小写
  164. [serialNumberTypeList[3].value]: (i) => `${String.fromCharCode(65 + i)}`, // 大写
  165. };
  166. // 反向计算选项方法
  167. export const reversedComputeOptionMethods = {
  168. [serialNumberTypeList[0].value]: (i) => Number(i),
  169. [serialNumberTypeList[1].value]: (i) => Number(i.replace('(', '').replace(')', '')),
  170. [serialNumberTypeList[2].value]: (i) => i.charCodeAt(0) - 97 + 1, // 小写
  171. [serialNumberTypeList[3].value]: (i) => i.charCodeAt(0) - 65 + 1,
  172. };