useQuestionOptionInjection.js 881 B

12345678910111213141516171819202122232425
  1. import {func} from "@/uni_modules/uv-ui-tools/libs/function/test";
  2. import {injectLocal, provideLocal} from "@vueuse/core";
  3. import {numberToLetter} from "@/utils";
  4. const key = Symbol('QUESTION_OPTION_SERVICE')
  5. export const useProvideQuestionOptionFormatter = function (formatter, optionClass) {
  6. if (!func(formatter)) throw new Error('formatter must be a function')
  7. const options = {formatter, optionClass}
  8. provideLocal(key, options)
  9. return options
  10. }
  11. export const useInjectQuestionOptionFormatter = function () {
  12. // 提供了默认注入,默认注入是题库的组织格式
  13. return injectLocal(key, {
  14. formatter: (options) => {
  15. return options.map((opt, idx) => {
  16. const code = numberToLetter(idx)
  17. return {code, option: code + '、' + opt}
  18. })
  19. },
  20. optionClass: undefined
  21. })
  22. }