index.js 4.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137
  1. "use strict";
  2. const common_vendor = require("../../common/vendor.js");
  3. if (!Array) {
  4. const _easycom_up_upload2 = common_vendor.resolveComponent("up-upload");
  5. _easycom_up_upload2();
  6. }
  7. const _easycom_up_upload = () => "../../node-modules/uview-plus/components/u-upload/u-upload.js";
  8. if (!Math) {
  9. _easycom_up_upload();
  10. }
  11. const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({
  12. __name: "index",
  13. setup(__props) {
  14. const $api = common_vendor.inject("$api");
  15. const $apifile = common_vendor.inject("$apifile");
  16. const form = common_vendor.ref({ file: [] });
  17. const typeList = common_vendor.ref([]);
  18. const errors = common_vendor.ref({});
  19. const user = common_vendor.computed(() => {
  20. return common_vendor.index.getStorageSync("user");
  21. });
  22. common_vendor.onShow(async () => {
  23. await searchOther();
  24. });
  25. const searchOther = async () => {
  26. let res;
  27. res = await $api(`dictData`, "GET", { code: "opinionType", is_use: "0" });
  28. if (res.errcode === 0)
  29. typeList.value = res.data;
  30. };
  31. const typeChange = (e) => {
  32. const data = typeList.value[e.detail.value];
  33. if (data) {
  34. form.value.type = data.value;
  35. form.value.type_name = data.label;
  36. }
  37. };
  38. const deletePic = (event) => {
  39. const file = form.value.file.filter((i) => i.url !== event.file.url);
  40. form.value.file = file;
  41. };
  42. const afterRead = async (event) => {
  43. const url = event.file[0].url;
  44. const result = await $apifile(`/web/learn_opinion/upload`, "file", url, "file");
  45. if (result.errcode === 0)
  46. form.value.file = [...form.value.file, ...[result]];
  47. };
  48. const validateObject = (obj) => {
  49. const errors2 = {};
  50. if (!obj.type || obj.type.trim() === "") {
  51. errors2.type = "请填写问题类型!";
  52. }
  53. if (!obj.brief || obj.brief.trim() === "") {
  54. errors2.brief = "请填写问题描述!";
  55. }
  56. if (Object.keys(errors2).length > 0) {
  57. return errors2;
  58. }
  59. return null;
  60. };
  61. const mergeObjectsWithoutDuplicates = async (obj1, obj2) => {
  62. return Object.keys({ ...obj1, ...obj2 }).reduce((acc, key) => {
  63. if (!acc.hasOwnProperty(key)) {
  64. if (key == "type_name") {
  65. delete acc[key];
  66. } else {
  67. acc[key] = obj1.hasOwnProperty(key) ? obj1[key] : obj2[key];
  68. }
  69. }
  70. return acc;
  71. }, {});
  72. };
  73. const formSubmit = async (e) => {
  74. const data = await mergeObjectsWithoutDuplicates(e.detail.value, form.value);
  75. const errorsInfo = await validateObject(data);
  76. if (errorsInfo) {
  77. errors.value = errorsInfo;
  78. for (const key in errorsInfo) {
  79. if (errorsInfo.hasOwnProperty(key)) {
  80. console.error(`${key} 错误: ${errorsInfo[key]}`);
  81. }
  82. }
  83. } else {
  84. errors.value = {};
  85. data.user = user.value._id;
  86. if (user.value.role_type == "Student")
  87. data.userType = "1";
  88. else
  89. data.userType = "0";
  90. data.time = common_vendor.hooks().format("YYYY-MM-DD HH:mm:ss");
  91. const res = await $api(`opinion`, "POST", data);
  92. if (res.errcode == "0") {
  93. common_vendor.index.showToast({
  94. title: "反馈成功!",
  95. icon: "success"
  96. });
  97. common_vendor.index.navigateBack({
  98. delta: 1
  99. });
  100. }
  101. }
  102. };
  103. const toView = () => {
  104. common_vendor.index.navigateTo({
  105. url: `/pagesMy/opinion/list`
  106. });
  107. };
  108. return (_ctx, _cache) => {
  109. return common_vendor.e({
  110. a: common_vendor.t(form.value.type_name || "请选择 >"),
  111. b: common_vendor.o(typeChange),
  112. c: typeList.value,
  113. d: errors.value.type
  114. }, errors.value.type ? {
  115. e: common_vendor.t(errors.value.type)
  116. } : {}, {
  117. f: form.value.brief,
  118. g: errors.value.brief
  119. }, errors.value.brief ? {
  120. h: common_vendor.t(errors.value.brief)
  121. } : {}, {
  122. i: common_vendor.o(afterRead),
  123. j: common_vendor.o(deletePic),
  124. k: common_vendor.p({
  125. fileList: form.value.file,
  126. name: "icon",
  127. multiple: true,
  128. maxCount: 3
  129. }),
  130. l: common_vendor.o(formSubmit),
  131. m: common_vendor.o(toView)
  132. });
  133. };
  134. }
  135. });
  136. const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-09ed81ef"], ["__file", "D:/project/学吧/learn_applet/pagesMy/opinion/index.vue"]]);
  137. wx.createPage(MiniProgramPage);