add-project.js 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239
  1. "use strict";
  2. const common_vendor = require("../../common/vendor.js");
  3. const api_studentProject = require("../../api/studentProject.js");
  4. const _sfc_main = {
  5. setup() {
  6. const form = common_vendor.ref({
  7. // Note: form fields map to MainStudentProjectBo fields
  8. name: "",
  9. role: "",
  10. startTime: "",
  11. endTime: "",
  12. desc: "",
  13. performance: "",
  14. link: ""
  15. });
  16. const isComplete = common_vendor.computed(() => {
  17. return !!(form.value.name && form.value.role && form.value.startTime && form.value.desc);
  18. });
  19. const editIndex = common_vendor.ref(-1);
  20. const isEdit = common_vendor.computed(() => editIndex.value !== -1);
  21. common_vendor.onLoad((options) => {
  22. if (options && options.index !== void 0) {
  23. editIndex.value = parseInt(options.index);
  24. const data = common_vendor.index.getStorageSync("edit_data_project");
  25. if (data) {
  26. form.value = {
  27. id: data.id,
  28. name: data.projectName || data.name || "",
  29. role: data.role || "",
  30. startTime: data.startTime || "",
  31. endTime: data.endTime || "",
  32. desc: data.description || data.desc || "",
  33. performance: data.achievement || data.performance || "",
  34. link: data.link || ""
  35. };
  36. }
  37. }
  38. common_vendor.index.setNavigationBarTitle({ title: isEdit.value ? "修改项目经历" : "添加项目经历" });
  39. });
  40. const goBack = () => {
  41. common_vendor.index.navigateBack();
  42. };
  43. const yearOptions = [];
  44. const monthOptions = [];
  45. const currentYear = (/* @__PURE__ */ new Date()).getFullYear();
  46. for (let i = 1990; i <= currentYear + 10; i++) {
  47. yearOptions.push(i + "年");
  48. }
  49. for (let i = 1; i <= 12; i++) {
  50. monthOptions.push((i < 10 ? "0" + i : i) + "月");
  51. }
  52. const showDatePicker = common_vendor.ref(false);
  53. const datePickerType = common_vendor.ref("start");
  54. const datePickerValue = common_vendor.ref([currentYear - 1990, 0]);
  55. const tempStartTime = common_vendor.ref("");
  56. const tempEndTime = common_vendor.ref("");
  57. const switchDateTab = (type) => {
  58. datePickerType.value = type;
  59. const target = type === "start" ? tempStartTime.value : tempEndTime.value;
  60. if (target && target !== "至今") {
  61. const parts = target.split(".");
  62. let yIdx = yearOptions.indexOf(parts[0] + "年");
  63. let mIdx = monthOptions.indexOf(parts[1] + "月");
  64. if (yIdx === -1)
  65. yIdx = currentYear - 1990;
  66. if (mIdx === -1)
  67. mIdx = 0;
  68. datePickerValue.value = [yIdx, mIdx];
  69. } else {
  70. datePickerValue.value = [currentYear - 1990, 0];
  71. if (type === "start" && !tempStartTime.value) {
  72. tempStartTime.value = `${currentYear}.01`;
  73. }
  74. }
  75. };
  76. const openDatePicker = (type) => {
  77. tempStartTime.value = form.value.startTime;
  78. tempEndTime.value = form.value.endTime;
  79. showDatePicker.value = true;
  80. switchDateTab(type);
  81. };
  82. const closeDatePicker = () => {
  83. showDatePicker.value = false;
  84. };
  85. const onDatePickerChange = (e) => {
  86. datePickerValue.value = e.detail.value;
  87. const yIdx = datePickerValue.value[0] !== void 0 ? datePickerValue.value[0] : currentYear - 1990;
  88. const mIdx = datePickerValue.value[1] !== void 0 ? datePickerValue.value[1] : 0;
  89. const yVal = yearOptions[yIdx].replace("年", "");
  90. const mVal = monthOptions[mIdx].replace("月", "");
  91. const formatted = `${yVal}.${mVal}`;
  92. if (datePickerType.value === "start") {
  93. tempStartTime.value = formatted;
  94. } else {
  95. tempEndTime.value = formatted;
  96. }
  97. };
  98. const confirmDatePicker = () => {
  99. form.value.startTime = tempStartTime.value;
  100. form.value.endTime = tempEndTime.value;
  101. showDatePicker.value = false;
  102. };
  103. const saveForm = async () => {
  104. if (!isComplete.value)
  105. return;
  106. common_vendor.index.showLoading({ title: "保存中..." });
  107. try {
  108. const userInfo = common_vendor.index.getStorageSync("userInfo");
  109. const studentId = userInfo ? userInfo.studentId : null;
  110. if (!studentId) {
  111. common_vendor.index.hideLoading();
  112. common_vendor.index.showToast({ title: "登录失效,请重新登录", icon: "none" });
  113. return;
  114. }
  115. const reqData = {
  116. studentId,
  117. projectName: form.value.name,
  118. role: form.value.role,
  119. startTime: form.value.startTime,
  120. endTime: form.value.endTime,
  121. description: form.value.desc,
  122. achievement: form.value.performance,
  123. link: form.value.link
  124. };
  125. if (isEdit.value) {
  126. reqData.id = form.value.id;
  127. const res = await api_studentProject.updateStudentProject(reqData);
  128. common_vendor.index.hideLoading();
  129. if (res.code === 200) {
  130. common_vendor.index.showToast({ title: "修改成功", icon: "success" });
  131. common_vendor.index.removeStorageSync("edit_data_project");
  132. setTimeout(() => {
  133. common_vendor.index.$emit("refresh_experience");
  134. common_vendor.index.navigateBack();
  135. }, 1e3);
  136. } else {
  137. common_vendor.index.showToast({ title: res.msg || "修改失败", icon: "none" });
  138. }
  139. } else {
  140. const res = await api_studentProject.addStudentProject(reqData);
  141. common_vendor.index.hideLoading();
  142. if (res.code === 200) {
  143. common_vendor.index.showToast({ title: "添加成功", icon: "success" });
  144. setTimeout(() => {
  145. common_vendor.index.$emit("refresh_experience");
  146. common_vendor.index.navigateBack();
  147. }, 1e3);
  148. } else {
  149. common_vendor.index.showToast({ title: res.msg || "添加失败", icon: "none" });
  150. }
  151. }
  152. } catch (error) {
  153. common_vendor.index.hideLoading();
  154. common_vendor.index.showToast({ title: "网络异常,保存失败", icon: "none" });
  155. common_vendor.index.__f__("error", "at pages/experience/add-project.js:175", error);
  156. }
  157. };
  158. return {
  159. form,
  160. isComplete,
  161. isEdit,
  162. goBack,
  163. showDatePicker,
  164. datePickerType,
  165. datePickerValue,
  166. yearOptions,
  167. monthOptions,
  168. tempStartTime,
  169. tempEndTime,
  170. openDatePicker,
  171. closeDatePicker,
  172. switchDateTab,
  173. onDatePickerChange,
  174. confirmDatePicker,
  175. saveForm
  176. };
  177. }
  178. };
  179. function _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {
  180. return common_vendor.e({
  181. a: !_ctx.form.name
  182. }, !_ctx.form.name ? {} : {}, {
  183. b: _ctx.form.name,
  184. c: common_vendor.o(($event) => _ctx.form.name = $event.detail.value),
  185. d: !_ctx.form.role
  186. }, !_ctx.form.role ? {} : {}, {
  187. e: _ctx.form.role,
  188. f: common_vendor.o(($event) => _ctx.form.role = $event.detail.value),
  189. g: !_ctx.form.startTime
  190. }, !_ctx.form.startTime ? {} : {}, {
  191. h: common_vendor.t(_ctx.form.startTime || "开始时间"),
  192. i: common_vendor.n(!_ctx.form.startTime ? "is-empty" : ""),
  193. j: common_vendor.o(($event) => _ctx.openDatePicker("start")),
  194. k: common_vendor.t(_ctx.form.endTime || "至今"),
  195. l: common_vendor.n(!_ctx.form.endTime ? "is-empty" : ""),
  196. m: common_vendor.o(($event) => _ctx.openDatePicker("end")),
  197. n: !_ctx.form.desc
  198. }, !_ctx.form.desc ? {} : {}, {
  199. o: _ctx.form.desc,
  200. p: common_vendor.o(($event) => _ctx.form.desc = $event.detail.value),
  201. q: _ctx.form.performance,
  202. r: common_vendor.o(($event) => _ctx.form.performance = $event.detail.value),
  203. s: _ctx.form.link,
  204. t: common_vendor.o(($event) => _ctx.form.link = $event.detail.value),
  205. v: _ctx.isEdit
  206. }, _ctx.isEdit ? {} : {}, {
  207. w: !_ctx.isComplete ? 1 : "",
  208. x: common_vendor.o((...args) => _ctx.saveForm && _ctx.saveForm(...args)),
  209. y: _ctx.showDatePicker
  210. }, _ctx.showDatePicker ? {
  211. z: common_vendor.o((...args) => _ctx.closeDatePicker && _ctx.closeDatePicker(...args)),
  212. A: common_vendor.t(_ctx.tempStartTime || "开始时间"),
  213. B: common_vendor.n(_ctx.datePickerType === "start" ? "active" : ""),
  214. C: common_vendor.o(($event) => _ctx.switchDateTab("start")),
  215. D: common_vendor.t(_ctx.tempEndTime || "至今"),
  216. E: common_vendor.n(_ctx.datePickerType === "end" ? "active" : ""),
  217. F: common_vendor.o(($event) => _ctx.switchDateTab("end")),
  218. G: common_vendor.f(_ctx.yearOptions, (item, index, i0) => {
  219. return {
  220. a: common_vendor.t(item),
  221. b: index
  222. };
  223. }),
  224. H: common_vendor.f(_ctx.monthOptions, (item, index, i0) => {
  225. return {
  226. a: common_vendor.t(item),
  227. b: index
  228. };
  229. }),
  230. I: _ctx.datePickerValue,
  231. J: common_vendor.o((...args) => _ctx.onDatePickerChange && _ctx.onDatePickerChange(...args)),
  232. K: common_vendor.o((...args) => _ctx.confirmDatePicker && _ctx.confirmDatePicker(...args)),
  233. L: common_vendor.o(() => {
  234. })
  235. } : {});
  236. }
  237. const MiniProgramPage = /* @__PURE__ */ common_vendor._export_sfc(_sfc_main, [["render", _sfc_render], ["__scopeId", "data-v-2351dbd1"]]);
  238. wx.createPage(MiniProgramPage);
  239. //# sourceMappingURL=../../../.sourcemap/mp-weixin/pages/experience/add-project.js.map