index.js 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230
  1. "use strict";
  2. const common_vendor = require("../../common/vendor.js");
  3. if (!Math) {
  4. (teacher + student)();
  5. }
  6. const teacher = () => "./path/teacher.js";
  7. const student = () => "./path/student.js";
  8. const _sfc_main = /* @__PURE__ */ common_vendor.defineComponent({
  9. __name: "index",
  10. setup(__props) {
  11. const $api = common_vendor.inject("$api");
  12. common_vendor.inject("$config");
  13. const $apifile = common_vendor.inject("$apifile");
  14. const config = common_vendor.ref({ logo: [], file: [] });
  15. const form = common_vendor.ref({ icon: [] });
  16. const errors = common_vendor.ref({});
  17. const user = common_vendor.computed(() => {
  18. return common_vendor.index.getStorageSync("user");
  19. });
  20. const genderList = common_vendor.ref([]);
  21. const educationList = common_vendor.ref([]);
  22. const learnStatusList = common_vendor.ref([]);
  23. const gradeList = common_vendor.ref([]);
  24. const cardTypeList = common_vendor.ref([]);
  25. const subjectList = common_vendor.ref([]);
  26. const showList = common_vendor.ref([]);
  27. common_vendor.onShow(async () => {
  28. await searchConfig();
  29. await searchOther();
  30. await search();
  31. });
  32. const searchConfig = async () => {
  33. config.value = common_vendor.index.getStorageSync("config");
  34. };
  35. const searchOther = async () => {
  36. let res;
  37. res = await $api(`dictData`, "GET", { code: "gender", is_use: "0" });
  38. if (res.errcode === 0)
  39. genderList.value = res.data;
  40. res = await $api(`dictData`, "GET", { code: "education", is_use: "0" });
  41. if (res.errcode === 0)
  42. educationList.value = res.data;
  43. res = await $api(`dictData`, "GET", { code: "grade", is_use: "0" });
  44. if (res.errcode === 0)
  45. gradeList.value = res.data;
  46. res = await $api(`dictData`, "GET", { code: "learnStatus", is_use: "0" });
  47. if (res.errcode === 0)
  48. learnStatusList.value = res.data;
  49. res = await $api(`dictData`, "GET", { code: "cardType", is_use: "0" });
  50. if (res.errcode === 0)
  51. cardTypeList.value = res.data;
  52. res = await $api(`dictData`, "GET", { code: "subject", is_use: "0" });
  53. if (res.errcode === 0)
  54. subjectList.value = res.data;
  55. res = await $api(`dictData`, "GET", { code: "show", is_use: "0" });
  56. if (res.errcode === 0)
  57. showList.value = res.data;
  58. };
  59. const search = async () => {
  60. if (user && user.value._id) {
  61. let res;
  62. if (user.value.role_type == "Teacher")
  63. res = await $api(`teacher/${user.value._id}`, "GET", {});
  64. else
  65. res = await $api(`student/${user.value._id}`, "GET", {});
  66. if (res.errcode == "0") {
  67. if (res.data.cardType) {
  68. const data = cardTypeList.value.find((i) => i.value === res.data.cardType);
  69. if (data)
  70. res.data.cardType_name = data.label;
  71. }
  72. if (res.data.education) {
  73. const data = educationList.value.find((i) => i.value === res.data.education);
  74. if (data)
  75. res.data.education_name = data.label;
  76. }
  77. if (res.data.learnStatus) {
  78. const data = learnStatusList.value.find((i) => i.value === res.data.learnStatus);
  79. if (data)
  80. res.data.learnStatus_name = data.label;
  81. }
  82. if (res.data.grade) {
  83. const data = gradeList.value.find((i) => i.value === res.data.grade);
  84. if (data)
  85. res.data.grade_name = data.label;
  86. }
  87. if (res.data.subject) {
  88. const data = subjectList.value.find((i) => i.value === res.data.subject);
  89. if (data)
  90. res.data.subject_name = data.label;
  91. }
  92. form.value = res.data;
  93. common_vendor.index.setStorageSync("user", { ...res.data, role_type: user.value.role_type });
  94. }
  95. }
  96. };
  97. const deletePic = (event) => {
  98. form.value.icon = [];
  99. };
  100. const afterRead = async (event) => {
  101. const url = event.file[0].url;
  102. const result = await $apifile(`/web/learn_user/upload`, "file", url, "file");
  103. if (result.errcode === 0)
  104. form.value.icon = [result];
  105. };
  106. const cardChange = (e) => {
  107. const data = cardTypeList.value[e.detail.value];
  108. if (data) {
  109. form.value.cardType = data.value;
  110. form.value.cardType_name = data.label;
  111. }
  112. };
  113. const educationChange = (e) => {
  114. const data = educationList.value[e.detail.value];
  115. if (data) {
  116. form.value.education = data.value;
  117. form.value.education_name = data.label;
  118. }
  119. };
  120. const learnStatusChange = (e) => {
  121. const data = learnStatusList.value[e.detail.value];
  122. if (data) {
  123. form.value.learnStatus = data.value;
  124. form.value.learnStatus_name = data.label;
  125. }
  126. };
  127. const gradeChange = (e) => {
  128. const data = gradeList.value[e.detail.value];
  129. if (data) {
  130. form.value.grade = data.value;
  131. form.value.grade_name = data.label;
  132. }
  133. };
  134. const subjectChange = (e) => {
  135. const data = subjectList.value[e.detail.value];
  136. if (data) {
  137. form.value.subject = data.value;
  138. form.value.subject_name = data.label;
  139. }
  140. };
  141. const validateObject = (obj) => {
  142. const errors2 = {};
  143. if (!obj.nick_name || obj.nick_name.trim() === "") {
  144. errors2.nick_name = "请填写昵称!";
  145. }
  146. if (!obj.age || obj.age.trim() === "") {
  147. errors2.age = "请填写年龄!";
  148. }
  149. if (!obj.gender || obj.gender.trim() === "") {
  150. errors2.gender = "请填写性别!";
  151. }
  152. if (!obj.card || obj.card.trim() === "") {
  153. errors2.card = "请填写身份证号码!";
  154. }
  155. if (!obj.phone || obj.phone.trim() === "") {
  156. errors2.phone = "请填写手机号!";
  157. }
  158. if (!obj.is_show || obj.is_show.trim() === "") {
  159. errors2.is_show = "请选择是否公开!";
  160. }
  161. if (Object.keys(errors2).length > 0) {
  162. return errors2;
  163. }
  164. return null;
  165. };
  166. const mergeObjectsWithoutDuplicates = async (obj1, obj2) => {
  167. return Object.keys({ ...obj1, ...obj2 }).reduce((acc, key) => {
  168. if (!acc.hasOwnProperty(key)) {
  169. if (key == "cardType_name" || key == "education_name" || key == "learnStatus_name" || key == "grade_name" || key == "subject_name") {
  170. delete acc[key];
  171. } else {
  172. acc[key] = obj1.hasOwnProperty(key) ? obj1[key] : obj2[key];
  173. }
  174. }
  175. return acc;
  176. }, {});
  177. };
  178. const formSubmit = async (e) => {
  179. const data = await mergeObjectsWithoutDuplicates(e.detail.value, form.value);
  180. const errorsInfo = await validateObject(data);
  181. if (errorsInfo) {
  182. errors.value = errorsInfo;
  183. for (const key in errorsInfo) {
  184. if (errorsInfo.hasOwnProperty(key)) {
  185. console.error(`${key} 错误: ${errorsInfo[key]}`);
  186. }
  187. }
  188. } else {
  189. errors.value = {};
  190. let res;
  191. if (user.value.role_type == "Teacher")
  192. res = await $api(`teacher/${form.value._id}`, "POST", data);
  193. else
  194. res = await $api(`student/${form.value._id}`, "POST", data);
  195. if (res.errcode == "0") {
  196. await search();
  197. common_vendor.index.showToast({
  198. title: "保存成功",
  199. icon: "success"
  200. });
  201. }
  202. }
  203. };
  204. common_vendor.provide("form", form);
  205. common_vendor.provide("errors", errors);
  206. common_vendor.provide("deletePic", deletePic);
  207. common_vendor.provide("afterRead", afterRead);
  208. common_vendor.provide("formSubmit", formSubmit);
  209. common_vendor.provide("cardChange", cardChange);
  210. common_vendor.provide("educationChange", educationChange);
  211. common_vendor.provide("learnStatusChange", learnStatusChange);
  212. common_vendor.provide("gradeChange", gradeChange);
  213. common_vendor.provide("subjectChange", subjectChange);
  214. common_vendor.provide("showList", showList);
  215. common_vendor.provide("genderList", genderList);
  216. common_vendor.provide("gradeList", gradeList);
  217. common_vendor.provide("subjectList", subjectList);
  218. common_vendor.provide("learnStatusList", learnStatusList);
  219. common_vendor.provide("cardTypeList", cardTypeList);
  220. common_vendor.provide("educationList", educationList);
  221. return (_ctx, _cache) => {
  222. return {
  223. a: common_vendor.unref(user).role_type == "Teacher",
  224. b: common_vendor.unref(user).role_type == "Student"
  225. };
  226. };
  227. }
  228. });
  229. const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["__scopeId", "data-v-e33b06dd"], ["__file", "D:/project/学吧/learn_applet/pagesMy/account/index.vue"]]);
  230. wx.createPage(MiniProgramPage);