create.js 7.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322
  1. const _Http = getApp().globalData.http;
  2. Page({
  3. data: {
  4. loading: false,
  5. disabled: true,
  6. showAll: false,
  7. editMode: false,
  8. form: [{
  9. label: "门店序号",
  10. error: false,
  11. errMsg: "",
  12. type: "text",
  13. value: "",
  14. placeholder: "请输入门店序号",
  15. valueName: "storeno",
  16. required: true,
  17. checking: "base"
  18. }, {
  19. label: "门店名称",
  20. error: false,
  21. errMsg: "",
  22. type: "text",
  23. value: "",
  24. placeholder: "请输入门店名称",
  25. valueName: "storename",
  26. required: true,
  27. checking: "base"
  28. }, {
  29. label: "门店面积",
  30. error: false,
  31. errMsg: "",
  32. type: "number",
  33. value: "",
  34. placeholder: "请输入门店面积",
  35. valueName: "area",
  36. required: true
  37. }, {
  38. label: "导购人数",
  39. error: false,
  40. errMsg: "",
  41. type: "number",
  42. value: "",
  43. placeholder: "请输入导购人数",
  44. valueName: "salercount",
  45. required: true
  46. }, {
  47. label: "负责人",
  48. error: false,
  49. errMsg: "",
  50. type: "radio",
  51. value: "",
  52. radioList: [],
  53. valueName: "leader_hrid",
  54. required: true,
  55. checking: "base",
  56. direction: "horizontal"
  57. }, {
  58. label: "售前电话",
  59. error: false,
  60. errMsg: "",
  61. type: "number",
  62. value: "",
  63. placeholder: "请输入售前电话",
  64. valueName: "sale_phonenmber",
  65. required: true
  66. }, {
  67. label: "售后电话",
  68. error: false,
  69. errMsg: "",
  70. type: "number",
  71. value: "",
  72. placeholder: "请输入售后电话",
  73. valueName: "service_phonenmber",
  74. required: true
  75. }, {
  76. label: "装修日期",
  77. error: false,
  78. errMsg: "",
  79. type: "date",
  80. value: "",
  81. placeholder: "请选择装修日期",
  82. valueName: "decorationdate",
  83. required: true
  84. }, {
  85. label: "开店日期",
  86. error: false,
  87. errMsg: "",
  88. type: "date",
  89. value: "",
  90. placeholder: "请选择开店日期",
  91. valueName: "opendate",
  92. required: true
  93. }, {
  94. label: "门店地址类型",
  95. error: false,
  96. errMsg: "",
  97. type: "radio",
  98. value: "",
  99. radioList: [],
  100. valueName: "markettype",
  101. required: true,
  102. checking: "base",
  103. direction: "horizontal"
  104. }, {
  105. label: "门店类型",
  106. error: false,
  107. errMsg: "",
  108. type: "radio",
  109. value: "",
  110. radioList: [
  111. { id: "自营", name: "自营" },
  112. { id: "分销", name: "分销" }
  113. ],
  114. valueName: "storetype",
  115. required: true,
  116. checking: "base",
  117. direction: "horizontal"
  118. }, {
  119. label: "省市县",
  120. error: false,
  121. errMsg: "",
  122. type: "region",
  123. value: [],
  124. placeholder: "省,市,县",
  125. valueName: "region",
  126. required: true
  127. }, {
  128. label: "详细地址",
  129. error: false,
  130. errMsg: "",
  131. type: "textarea",
  132. value: "",
  133. placeholder: "请输入详细地址",
  134. valueName: "address",
  135. required: true,
  136. checking: "base"
  137. }],
  138. content: {
  139. sa_storeid: 0
  140. }
  141. },
  142. onLoad(options) {
  143. if (options.edit) {
  144. wx.setNavigationBarTitle({ title: '编辑门店' });
  145. this.setData({ editMode: true });
  146. this.loadOptions(true);
  147. } else {
  148. this.loadOptions(false);
  149. }
  150. },
  151. /* 加载选项列表 */
  152. loadOptions(edit) {
  153. let count = 0;
  154. const onDone = () => {
  155. count++;
  156. if (count === 2 && edit) {
  157. this.populateEditForm();
  158. }
  159. };
  160. this.getLeaderList(edit ? onDone : null);
  161. this.getMarketTypeList(edit ? onDone : null);
  162. },
  163. /* 编辑模式:回填表单数据 */
  164. populateEditForm() {
  165. const data = _Http.detail;
  166. let form = this.data.form;
  167. form = form.map(v => {
  168. switch (v.valueName) {
  169. case "region":
  170. v.value = data.province ? [data.province, data.city, data.county] : [];
  171. break;
  172. default:
  173. v.value = data[v.valueName] !== undefined ? data[v.valueName] : '';
  174. break;
  175. }
  176. return v;
  177. });
  178. this.setData({
  179. form,
  180. "content.sa_storeid": data.sa_storeid
  181. });
  182. this.selectComponent("#Form").confirm();
  183. },
  184. /* 获取负责人列表 */
  185. getLeaderList(cb) {
  186. _Http.basic({
  187. id: "20221107094704",
  188. content: {
  189. pageNumber: 1,
  190. pageSize: 99999
  191. }
  192. }).then(res => {
  193. if (res.code == 1 && res.data && res.data.length) {
  194. let form = this.data.form;
  195. let leaderField = form.find(v => v.valueName === 'leader_hrid');
  196. leaderField.radioList = res.data.map(item => ({
  197. id: item.sys_enterprise_hrid,
  198. name: item.name
  199. }));
  200. if (!this.data.editMode) {
  201. leaderField.value = leaderField.radioList[0].id;
  202. }
  203. this.setData({ form });
  204. this.selectComponent("#Form").confirm();
  205. }
  206. if (cb) cb();
  207. }).catch(err => {
  208. console.error('获取负责人列表失败', err);
  209. if (cb) cb();
  210. });
  211. },
  212. /* 获取门店地址类型列表 */
  213. getMarketTypeList(cb) {
  214. _Http.basic({
  215. classname: "sysmanage.develop.optiontype.optiontype",
  216. method: "optiontypeselect",
  217. content: {
  218. pageNumber: 1,
  219. pageSize: 1000,
  220. typename: "markettype",
  221. parameter: {}
  222. }
  223. }).then(res => {
  224. if (res.code == 1 && res.data && res.data.length) {
  225. let form = this.data.form;
  226. let markettypeField = form.find(v => v.valueName === 'markettype');
  227. markettypeField.radioList = res.data.map(item => ({
  228. id: item.value,
  229. name: item.value
  230. }));
  231. if (!this.data.editMode) {
  232. markettypeField.value = markettypeField.radioList[0].id;
  233. }
  234. this.setData({ form });
  235. this.selectComponent("#Form").confirm();
  236. }
  237. if (cb) cb();
  238. }).catch(err => {
  239. console.error('获取门店地址类型列表失败', err);
  240. if (cb) cb();
  241. });
  242. },
  243. /* 表单必填项是否完成 */
  244. onConfirm({ detail }) {
  245. this.setData({
  246. disabled: detail
  247. });
  248. },
  249. /* 表单中断回调 */
  250. interrupt({ detail }) {},
  251. /* 提交表单 */
  252. submit() {
  253. this.setData({ loading: true });
  254. let formData = this.selectComponent("#Form").submit();
  255. if (!formData) {
  256. this.setData({ loading: false });
  257. return;
  258. }
  259. // 获取负责人姓名
  260. const leaderField = this.data.form.find(v => v.valueName === 'leader_hrid');
  261. const selectedLeader = leaderField.radioList.find(v => v.id == formData.leader_hrid);
  262. formData.leadername = selectedLeader ? selectedLeader.name : '';
  263. // 处理省市县数据
  264. if (formData.region && formData.region.length) {
  265. formData.province = formData.region[0] || "";
  266. formData.city = formData.region[1] || "";
  267. formData.county = formData.region[2] || "";
  268. delete formData.region;
  269. }
  270. let content = {
  271. ...this.data.content,
  272. ...formData
  273. };
  274. _Http.basic({
  275. id: '2026031010540701',
  276. content
  277. }).then(res => {
  278. this.setData({ loading: false });
  279. if (res.code == 1) {
  280. const listPage = getCurrentPages().find(v => v.__route__ == 'CRM/myStore/index');
  281. if (listPage) {
  282. listPage.getList(true);
  283. }
  284. wx.navigateBack({
  285. delta: 1,
  286. success: () => {
  287. wx.showToast({ title: this.data.editMode ? '编辑成功' : '创建成功', icon: 'none' });
  288. }
  289. });
  290. } else {
  291. wx.showToast({ title: res.msg || '操作失败', icon: 'none' });
  292. }
  293. }).catch(() => {
  294. this.setData({ loading: false });
  295. wx.showToast({ title: '操作失败', icon: 'none' });
  296. });
  297. },
  298. /* 是否显示全部 */
  299. onChange({ detail }) {
  300. this.setData({
  301. showAll: detail
  302. });
  303. },
  304. closePage() {
  305. wx.navigateBack({ delta: 1 });
  306. }
  307. });