common.js 7.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258
  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[1].value, // 序号显示方式:true显示 false隐藏
  39. };
  40. // 公用组件设置
  41. export let commonComponentProperty = {
  42. background_color: 'rgba(255, 255, 255, 1)', // 背景颜色
  43. background_image_url: '',
  44. background_position: {
  45. width: 100,
  46. height: 100,
  47. top: 0,
  48. left: 0,
  49. },
  50. // 是否开启边框
  51. is_border: 'false',
  52. border_style: 'solid', // 边框样式 solid实线 dashed虚线 dotted点状 double双线
  53. border_color: '#000000', // 边框颜色
  54. };
  55. // 边框样式
  56. export const borderStyleList = [
  57. { value: 'solid', label: '实线' },
  58. { value: 'dashed', label: '虚线' },
  59. { value: 'dotted', label: '点状' },
  60. { value: 'double', label: '双线' },
  61. ];
  62. // 图片显示模式
  63. export const imageModeList = [
  64. { value: 'free', label: '自由' },
  65. { value: 'fill', label: '填充' },
  66. { value: 'repeat', label: '平铺' },
  67. ];
  68. // 序号样式
  69. export const serialNumberStyleList = [
  70. { value: 'solidBlockStyle' }, // 实心方块
  71. { value: 'solidCircleStyle' }, // 实心圆
  72. { value: 'hollowBlockStyle' }, // 空心方块
  73. { value: 'hollowCircleStyle' }, // 空心圆
  74. { value: 'defaultStyle' }, // 默认无
  75. ];
  76. // 拼音位置
  77. export const pinyinPositionList = [
  78. { value: 'top', label: '上' },
  79. { value: 'bottom', label: '下' },
  80. ];
  81. // 拼音整体位置
  82. export const pinyinOverallPositionList = [
  83. { value: 'left', label: '左' },
  84. { value: 'center', label: '中' },
  85. { value: 'right', label: '右' },
  86. ];
  87. // 排列方式
  88. export const arrangeTypeList = [
  89. { value: 'horizontal', label: '横排' },
  90. { value: 'vertical', label: '竖排' },
  91. ];
  92. export const switchOption = [
  93. {
  94. value: 'true',
  95. label: '开启',
  96. },
  97. {
  98. value: 'false',
  99. label: '关闭',
  100. },
  101. ];
  102. // 参考答案数据模板
  103. export const answerData = {
  104. answer_rich_text: '', // 参考答案富文本
  105. answer_audio_list: [], // 参考答案音频上传列表
  106. answer_audio_id_list: [], // 参考答案音频ID列表
  107. answer_video_list: [], // 参考答案视频上传列表
  108. answer_video_id_list: [], // 参考答案视频ID列表
  109. answer_image_list: [], // 参考答案图片上传列表
  110. answer_image_id_list: [], // 参考答案图片ID列表
  111. };
  112. // 解析数据模板
  113. export const analysisData = {
  114. analysis_rich_text: '', // 解析富文本
  115. analysis_audio_list: [], // 解析音频上传列表
  116. analysis_audio_id_list: [], // 解析音频ID列表
  117. analysis_video_list: [], // 解析视频上传列表
  118. analysis_video_id_list: [], // 解析视频ID列表
  119. analysis_image_list: [], // 解析图片上传列表
  120. analysis_image_id_list: [], // 解析图片ID列表
  121. };
  122. /**
  123. * 是否开启
  124. * @param {String} value 值
  125. * @returns Boolean
  126. */
  127. export function isEnable(value) {
  128. return value === switchOption[0].value;
  129. }
  130. export const tone_data = [
  131. ['ā', 'á', 'ǎ', 'à', 'a'],
  132. ['ō', 'ó', 'ǒ', 'ò', 'o'],
  133. ['ē', 'é', 'ě', 'è', 'e'],
  134. ['ī', 'í', 'ǐ', 'ì', 'i'],
  135. ['ū', 'ú', 'ǔ', 'ù', 'u'],
  136. ['ǖ', 'ǘ', 'ǚ', 'ǜ', 'ü'],
  137. ['ǖ', 'ǘ', 'ǚ', 'ǜ', 'ü'],
  138. ['Ā', 'Á', 'Â', 'À', 'A'],
  139. ['Ō', 'Ó', 'Ô', 'Ò', 'O'],
  140. ['Ē', 'É', 'Ê', 'È', 'E'],
  141. ['Ī', 'Í', 'Î', 'Ì', 'I'],
  142. ['Ū', 'Ú', 'Û', 'Ù', 'U'],
  143. ['n', 'ń', 'ň', 'ǹ', 'n'],
  144. ['m̄', 'ḿ', 'm', 'm̀', 'm'],
  145. ];
  146. /**
  147. * 添加声调
  148. * @param {Number} number
  149. * @param {String} con
  150. * @returns String
  151. */
  152. export function addTone(number, con) {
  153. const zmList = ['a', 'o', 'e', 'i', 'u', 'v', 'ü', 'A', 'O', 'E', 'I', 'U', 'n', 'm'];
  154. let cons = con;
  155. if (number) {
  156. for (let i = 0; i < zmList.length; i++) {
  157. let zm = zmList[i];
  158. if (con.includes(zm)) {
  159. let zm2 = tone_data[i][number - 1];
  160. if (con.includes('iu')) {
  161. zm2 = tone_data[4][number - 1];
  162. cons = con.replace('u', zm2);
  163. } else if (con.includes('ui')) {
  164. zm2 = tone_data[3][number - 1];
  165. cons = con.replace('i', zm2);
  166. } else if (/yv|jv|qv|xv/.test(con)) {
  167. zm2 = tone_data[4][number - 1];
  168. cons = con.replace('v', zm2);
  169. } else if (/yü|jü|qü|xü/.test(con)) {
  170. zm2 = tone_data[4][number - 1];
  171. cons = con.replace('ü', zm2);
  172. } else {
  173. cons = con.replace(zm, zm2);
  174. }
  175. break;
  176. }
  177. }
  178. }
  179. return cons;
  180. }
  181. export function handleToneValue(valItem) {
  182. let numList = [];
  183. if (/[A-Za-zü]+\d/g.test(valItem)) {
  184. valItem.split('').forEach((item, i) => {
  185. if (/\d/.test(item)) {
  186. let numIndex = numList.length === 0 ? 0 : numList[numList.length - 1].index;
  187. let con = valItem.substring(numIndex, i).replace(/\d/g, '');
  188. numList.push({
  189. number: item,
  190. con,
  191. });
  192. }
  193. });
  194. } else {
  195. numList = [];
  196. }
  197. return numList.length === 0 ? [{ con: valItem }] : numList;
  198. }
  199. /**
  200. * 判断序号类型
  201. * @param {string} str
  202. */
  203. export function checkString(str) {
  204. const number = /^\d/.test(str); // 判断是否包含数字
  205. const letter = /^[a-z]/.test(str); // 判断是否包含字母
  206. const capital = /^[A-Z]/.test(str); // 判断是否包含大写字母
  207. const bracket_number = /\(\d+\)/.test(str); // 判断是否包含括号数字,例如 (123)
  208. const obj = { number, letter, capital, bracket_number };
  209. let strType = Object.keys(obj).find((key) => obj[key]);
  210. return strType;
  211. }
  212. // 计算选项方法
  213. export const computeOptionMethods = {
  214. [serialNumberTypeList[0].value]: (i) => `${i + 1}`,
  215. [serialNumberTypeList[1].value]: (i) => `(${i + 1})`,
  216. [serialNumberTypeList[2].value]: (i) => `${String.fromCharCode(97 + i)}`, // 小写
  217. [serialNumberTypeList[3].value]: (i) => `${String.fromCharCode(65 + i)}`, // 大写
  218. };
  219. // 反向计算选项方法
  220. export const reversedComputeOptionMethods = {
  221. [serialNumberTypeList[0].value]: (i) => Number(i),
  222. [serialNumberTypeList[1].value]: (i) => Number(i.replace('(', '').replace(')', '')),
  223. [serialNumberTypeList[2].value]: (i) => i.charCodeAt(0) - 97 + 1, // 小写
  224. [serialNumberTypeList[3].value]: (i) => i.charCodeAt(0) - 65 + 1,
  225. };
  226. // 生成音频倍速
  227. export const speedRatioList = [
  228. { value: 0.5, label: '0.5' },
  229. { value: 0.75, label: '0.75' },
  230. { value: 1, label: '1.0' },
  231. { value: 1.25, label: '1.25' },
  232. { value: 1.5, label: '1.5' },
  233. { value: 2, label: '2.0' },
  234. ];