index.js 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221
  1. import { value, switchs, date } from "./config";
  2. import Dialog from "../../miniprogram_npm/@vant/weapp/dialog/dialog";
  3. var _value = value;
  4. const app = getApp();
  5. Component({
  6. options: {
  7. addGlobalClass: true,//解决继承全局样式问题
  8. },
  9. lifetimes: {
  10. attached: function () { this.init(); }
  11. },
  12. properties: {
  13. type: { type: String, value: "edit" },
  14. key: String
  15. },
  16. observers: {
  17. 'value': function (value) {
  18. let A = value[0][1]["value"] * 1 || 0;
  19. let B = (value[0][3]["value"] * 1 || 0) + (value[0][4]["value"] * 1 || 0) + (value[0][5]["value"] * 1 || 0) +
  20. (value[0][6]["value"] * 1 || 0) + (value[0][7]["value"] * 1 || 0);
  21. let C = value[0][9]["value"] * 1 || 0;
  22. if (A == 0 || C == 0) return false;
  23. value[0][8]["value"] = ((parseFloat(A - C + B) / parseFloat(A + B)) * 100).toFixed(2) + "%";
  24. if (this.result && this.result == value[0][8]["value"]) return false;
  25. this.result = value[0][8]["value"];
  26. this.setData({
  27. value
  28. })
  29. }
  30. },
  31. data: {
  32. value,
  33. active: '',
  34. activeObject: {},
  35. activeIndex: [],
  36. switchB: false,
  37. endDate: date(),
  38. switchs,
  39. submitLock: false,
  40. saveLock: false,
  41. btn: true,
  42. radioInputShow: false,
  43. },
  44. methods: {
  45. //组件石林进入页面接节点树执行
  46. async init () {
  47. try {
  48. // 商品请求
  49. var laompany = [];
  50. let res = await wx.$request({ method: "get", url: "/order/productDict/" });
  51. laompany = res.data.map(item => ({ key: item.id, value: item.name, month: item.month }));
  52. let { type, value, switchs } = this.data;
  53. switchs['laompany'] = laompany;
  54. var obj = {};
  55. switch (type) {
  56. case 'watch':
  57. obj = this.watchFunc(value);
  58. break;
  59. default:
  60. // 针对商品操作 非观看模式
  61. this.data.key && laompany.forEach((item, index) => {
  62. if (item.key == this.data.key) {
  63. value[0][10]["value"] = item.key;
  64. value[0][10]["index"] = index;
  65. }
  66. })
  67. break;
  68. }
  69. this.setData({ value, ...obj, switchs })
  70. } catch (err) { wx.$err(err) }
  71. },
  72. // 查看模式
  73. watchFunc (data) {
  74. data = data.map(itemA => itemA.map(itemB => { if (itemB.hasOwnProperty('value')) itemB['disabled'] = true; return itemB })
  75. )
  76. return { value: data, btn: false }
  77. },
  78. // 提交
  79. async submitFunc () {
  80. try {
  81. let { value, submitLock } = this.data, megs = [], data = {}, cvalue = [], tels = [];
  82. if (submitLock) return false;
  83. this.setData({ submitLock: true });
  84. if (value[2][6]['value'] == 0) {
  85. value = [...value[0], ...value[1], ...value[2]];
  86. cvalue = [..._value[0], ..._value[1], ..._value[2]];
  87. } else {
  88. value = [...value[0], ...value[1], ...value[2], ...value[3]];
  89. cvalue = [..._value[0], ..._value[1], ..._value[2], ..._value[3]];
  90. }
  91. value.forEach((item, index) => {
  92. // 特殊格式 非必须
  93. if (!item.hasOwnProperty('value') || item.norequire) {
  94. if (item.hasOwnProperty('value')) data[item.name] = item.value;
  95. return false
  96. };
  97. // 正常流程
  98. // 判断是否为空
  99. if (!item.value) { megs.push(`${item.title}不能为空!`); return false; };
  100. // 数字类型
  101. if (item.type == 'number' && !/^\d+.?\d*$/.test(item.value)) { megs.push(`${item.title}必须是数字!`); return false; }
  102. // 正则判断
  103. if (cvalue[index].reg && !cvalue[index].reg.test(item.value)) {
  104. megs.push(`${item.title}格式不正确!`); return false;
  105. };
  106. // 号码不能相同 tel tstel ctel cttel
  107. if (item.name == 'tel' || item.name == 'tstel' || item.name == 'ctel' || item.name == 'cttel') (!tels.some(item.value) || item.vlaue == '') && tels.push(item.value)
  108. ;
  109. data[item.name] = item.value;
  110. });
  111. (tels.length !== 4 && tels.length != 0) && megs.push(`手机号码不能重复`);
  112. if (megs.length != 0) {
  113. this.setData({ errorShow: true, megs, submitLock: false });
  114. return false;
  115. };
  116. data['category'] = 1;
  117. // 申请贷款期限 不用传
  118. delete data['maturity'];
  119. await wx.$request({ method: "post", url: "/order/", data });
  120. this.setData({ submitLock: false });
  121. Dialog.alert({ message: "已提交!" }).then(res => wx.reLaunch({ url: '/pages/index/index' }))
  122. } catch (err) { wx.$err(err) }
  123. },
  124. // 保存
  125. async saveFunc () {
  126. try {
  127. let { value, saveLock } = this.data, data = {};
  128. if (saveLock) return false;
  129. this.setData({ saveLock: true });
  130. // 拦截
  131. var requeire = ['name', 'tel'], megs = [];
  132. value = [...value[0], ...value[1], ...value[2], ...value[3]];
  133. var cvalue = [..._value[0], ..._value[1], ..._value[2], ..._value[3]];
  134. value.forEach((item, index) => {
  135. if (!item.hasOwnProperty('value')) return false;
  136. if (requeire.some(itemB => itemB == item.name)) {
  137. if (!item.value) {
  138. megs.push(`${item.title}不能为空!`)
  139. return false
  140. };
  141. if (cvalue[index].reg && !cvalue[index].reg.test(item.value)) {
  142. megs.push(`${item.title}格式不正确!`); return false;
  143. };
  144. }
  145. data[item.name] = item.value;
  146. });
  147. data['category'] = 0;
  148. // 申请贷款期限 不用传
  149. delete data['maturity'];
  150. if (megs.length != 0) {
  151. this.setData({ errorShow: true, megs, saveLock: false });
  152. return false;
  153. };
  154. await wx.$request({ method: "post", url: "/order/", data });
  155. this.setData({ saveLock: false })
  156. Dialog.alert({ message: "已保存!" }).then(res => wx.reLaunch({ url: '/pages/index/index' }))
  157. } catch (err) {
  158. wx.$err(err)
  159. }
  160. },
  161. // 输入
  162. inputFunc (e) {
  163. let { value } = this.data, { index } = e.currentTarget.dataset;
  164. value[index[0]][index[1]]['value'] = e.detail.value;
  165. console.log(value[index[0]][index[1]]['name'], e.detail.value)
  166. this.setData({ value })
  167. },
  168. // switch
  169. switchFunc (e) {
  170. let { value, switchs } = this.data, { index } = e.currentTarget.dataset;
  171. let { name } = value[index[0]][index[1]];
  172. if (switchs.hasOwnProperty(name)) {
  173. this.setData({ switchB: true, active: name, activeIndex: index })
  174. }
  175. },
  176. // 隐藏单选框
  177. hideModal () { this.setData({ switchB: false }) },
  178. // 单选框赋值
  179. changeFunc (e) {
  180. let { activeIndex, value, switchs } = this.data;
  181. let _value = e.detail.value.split(",");
  182. value[activeIndex[0]][activeIndex[1]]['value'] = _value[0] * 1;
  183. value[activeIndex[0]][activeIndex[1]]['index'] = _value[1] * 1;
  184. // 申请贷款产品 申请贷款期限关联
  185. if (value[activeIndex[0]][activeIndex[1]]['name'] = 'laompany') {
  186. value[0][11]['value'] = switchs['laompany'][_value[1] * 1]['month'] + '个月';
  187. }
  188. // 第一借款人与申请人关系特殊处理
  189. if (value[activeIndex[0]][activeIndex[1]]['name'] == 'mstatus') {
  190. value[2][2] = {
  191. ...value[2][2], disabled: _value[0] == 1 ? true : false, value: _value[0] == 1 ? 0 : '', index: _value[0] == 1 ? 0 : ''
  192. }
  193. }
  194. if (value[activeIndex[0]][activeIndex[1]].hasOwnProperty('forlen')) {
  195. for (let i = 1; i < (value[activeIndex[0]][activeIndex[1]]['forlen'] + 1); i++) {
  196. value[activeIndex[0]][(activeIndex[1] + i)]['norequire'] = _value[0] == 0 ? false : true;
  197. }
  198. }
  199. this.setData({ value, switchB: false })
  200. },
  201. // 日期
  202. DateChange (e) {
  203. let { value } = this.data, { index } = e.currentTarget.dataset;
  204. value[index[0]][index[1]]['value'] = e.detail.value;
  205. this.setData({ value })
  206. },
  207. }
  208. })