index.js 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418
  1. import { value, switchs, date } from "./config";
  2. import Dialog from "../../miniprogram_npm/@vant/weapp/dialog/dialog";
  3. import { chineseNumber } from "./ChinaNumToEnglishNum";
  4. var _value = value;
  5. Component({
  6. options: {
  7. addGlobalClass: true,//解决继承全局样式问题
  8. },
  9. lifetimes: {
  10. attached: function () { this.init(); }
  11. },
  12. properties: {
  13. type: { type: String, value: "add" },
  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][8]["value"] * 1 || 0;
  22. if (A == 0 || C == 0) return false;
  23. value[0][9]["value"] = ((parseFloat(A - C + B) / parseFloat(A + B)) * 100).toFixed(2) + "%";
  24. if (this.result && this.result == value[0][9]["value"]) return false;
  25. this.result = value[0][9]["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. switch (type) {
  55. // 已填报查看
  56. case 'watch':
  57. var resA = await wx.$request({ url: `/order/${this.data.key}/`, method: "get" });
  58. var data = resA.data.data;
  59. value = this.watchFunc(value, data, switchs);
  60. break;
  61. case 'draftsupdate':
  62. // 修改草稿
  63. var resB = await wx.$request({ url: `/order/${this.data.key}/`, method: "get" });
  64. var data = resB.data;
  65. console.log(data)
  66. value = this.draftUpdataFunc(value, data, switchs);
  67. break;
  68. case 'providedupdate':
  69. // 修改已填报
  70. var resA = await wx.$request({ url: `/order/${this.data.key}/`, method: "get" });
  71. var { data, edit_values } = resA.data;
  72. value = this.updataFunc(value, data, edit_values, switchs);
  73. default:
  74. // 新增
  75. this.data.key && laompany.forEach((item, index) => {
  76. if (item.key == this.data.key) {
  77. value[0][10]["value"] = item.key;
  78. value[0][10]["index"] = index;
  79. value[0][11]['value'] = item['month'] + '个月';
  80. }
  81. })
  82. break;
  83. }
  84. this.setData({ value, switchs })
  85. } catch (err) { wx.$err(err) }
  86. },
  87. // 查看模式
  88. watchFunc (value, data, switchs) {
  89. return value.map(itemA => itemA.map(itemB => {
  90. if (!itemB.hasOwnProperty('value')) return itemB;
  91. if (itemB.name != "maturity") { itemB['value'] = data[itemB.name] === 0 ? 0 : data[itemB.name] || ''; }
  92. itemB['disabled'] = true;
  93. switchs.hasOwnProperty(itemB.name) && switchs[itemB.name].forEach((itemC, indexC) => {
  94. if (itemC.key === itemB.value) itemB["index"] = indexC;
  95. // 申请贷款产品 申请贷款期限关联
  96. if (itemB.name == 'laompany') {
  97. value[0][11]['value'] = itemC['month'] + '个月';
  98. }
  99. // 第一借款人与申请人关系特殊处理
  100. if (itemB.name == 'mstatus' && itemB.value == 1) {
  101. value[2][2] = { ...value[2][2], disabled: true, value: 0, index: 0 }
  102. }
  103. })
  104. return itemB
  105. })
  106. )
  107. },
  108. // 修改草稿
  109. draftUpdataFunc (value, data, switchs) {
  110. return value.map(itemA => itemA.map(itemB => {
  111. if (!itemB.hasOwnProperty('value')) return itemB;
  112. if (itemB.name != "maturity") {
  113. itemB['value'] = data[itemB.name] === 0 ? 0 : data[itemB.name] || '';
  114. }
  115. switchs.hasOwnProperty(itemB.name) && switchs[itemB.name].forEach((itemC, indexC) => {
  116. if (itemC.key === itemB.value) {
  117. itemB["index"] = indexC;
  118. };
  119. // 申请贷款产品 申请贷款期限关联
  120. if (itemB.name == 'laompany') {
  121. value[0][11]['value'] = itemC['month'] + '个月';
  122. }
  123. // 第一借款人与申请人关系特殊处理
  124. if (itemB.name == 'mstatus' && itemB.value == 1) {
  125. value[2][2] = { ...value[2][2], disabled: true, value: 0, index: 0 }
  126. }
  127. })
  128. return itemB
  129. }));
  130. },
  131. // 已填报修改模式
  132. updataFunc (value, data, edit_values, switchs) {
  133. // 后台更改贷款商品key
  134. return value.map(itemA => itemA.map(itemB => {
  135. if (!itemB.hasOwnProperty('value')) return itemB;
  136. if (itemB.name != "maturity") { itemB['value'] = data[itemB.name] === 0 ? 0 : data[itemB.name] || ''; }
  137. switchs.hasOwnProperty(itemB.name) && switchs[itemB.name].forEach((itemC, indexC) => {
  138. if (itemC.key === itemB.value) itemB["index"] = indexC;
  139. // 申请贷款产品 申请贷款期限关联
  140. if (itemB.name == 'laompany') {
  141. value[0][11]['value'] = itemC['month'] + '个月';
  142. }
  143. // 第一借款人与申请人关系特殊处理
  144. if (itemB.name == 'mstatus' && itemB.value == 1) {
  145. value[2][2] = { ...value[2][2], disabled: true, value: 0, index: 0 }
  146. }
  147. })
  148. edit_values.some(itemC => {
  149. if (itemC.name == itemB.name) {
  150. itemB['err'] = itemC['reason'];
  151. }
  152. return itemC.name == itemB.name;
  153. }) ? '' : itemB['disabled'] = true;
  154. return itemB
  155. }));
  156. },
  157. // 提交
  158. async submitFunc () {
  159. try {
  160. let { value, submitLock } = this.data, megs = [], data = {}, cvalue = [], tels = [], i = 0;
  161. if (submitLock) return false;
  162. this.setData({ submitLock: true });
  163. if (value[2][6]['value'] == 0) {
  164. value = [...value[0], ...value[1], ...value[2]];
  165. cvalue = [..._value[0], ..._value[1], ..._value[2]];
  166. } else {
  167. value = [...value[0], ...value[1], ...value[2], ...value[3]];
  168. cvalue = [..._value[0], ..._value[1], ..._value[2], ..._value[3]];
  169. }
  170. value.forEach((item, index) => {
  171. // 特殊格式 非必须
  172. if (!item.hasOwnProperty('value') || (!item.value && item.norequire)) {
  173. if (item.hasOwnProperty('value')) data[item.name] = item.value;
  174. return false
  175. };
  176. // 正常流程
  177. // 判断是否为空
  178. if (item.value !== 0 && !item.value) { megs.push(`${item.title}不能为空!`); return false; };
  179. // 数字类型
  180. if (item.type == 'number' && !/^\d+.?\d*$/.test(item.value)) { megs.push(`${item.title}必须是数字!`); return false; }
  181. // 正则判断
  182. if (cvalue[index].reg && !cvalue[index].reg.test(item.value)) {
  183. if (item.hasOwnProperty('reg_msg')) {
  184. megs.push(`${item.title},${item.reg_msg}`);
  185. } else {
  186. megs.push(`${item.title}格式不正确!`);
  187. }
  188. return false;
  189. };
  190. // 号码不能相同 tel tstel ctel cttel
  191. if (item.name == 'tel' || item.name == 'tstel' || item.name == 'ctel' || item.name == 'cttel') { (!tels.some(itemT => itemT == item.value) || item.vlaue == '') && tels.push(item.value); ++i }
  192. ;
  193. // 身份证验证
  194. if (item.name == 'inumber' && data['bdate']) {
  195. item.value.substr(6, 4) + "-" + item.value.substr(10, 2) + "-" + item.value.substr(12, 2) != data['bdate'] && megs.push(`身份证同出生日期不一致!`)
  196. }
  197. if (item.name == 'tsinumber' && data['tsbdate']) {
  198. item.value.substr(6, 4) + "-" + item.value.substr(10, 2) + "-" + item.value.substr(12, 2) != data['tsbdate'] && megs.push(`共同借款人身份证同出生日期不一致!`)
  199. }
  200. data[item.name] = item.value;
  201. });
  202. tels.length !== i && megs.push(`手机号码不能重复`);
  203. if (megs.length != 0) {
  204. this.setData({ errorShow: true, megs, submitLock: false });
  205. return false;
  206. };
  207. data['category'] = 1;
  208. // 申请贷款期限 不用传
  209. delete data['maturity'];
  210. let resA = await wx.$request({ method: "post", url: "/order/", data });
  211. this.setData({ submitLock: false });
  212. Dialog.alert({ message: "已提交!" }).then(res => wx.redirectTo({ url: '/pages/accessory/index?data=' + resA.data }))
  213. } catch (err) { wx.$err(err) }
  214. },
  215. // 新增保存
  216. async saveFunc () {
  217. try {
  218. let { value, saveLock } = this.data, data = {};
  219. if (saveLock) return false;
  220. this.setData({ saveLock: true });
  221. // 拦截
  222. var requeire = ['name', 'tel'], megs = [];
  223. value = [...value[0], ...value[1], ...value[2], ...value[3]];
  224. var cvalue = [..._value[0], ..._value[1], ..._value[2], ..._value[3]];
  225. console.log(value)
  226. value.forEach((item, index) => {
  227. if (!item.hasOwnProperty('value')) return false;
  228. if (requeire.some(itemB => itemB == item.name)) {
  229. if (item.value !== 0 && !item.value) {
  230. megs.push(`${item.title}不能为空!`)
  231. return false
  232. };
  233. if (cvalue[index].reg && !cvalue[index].reg.test(item.value)) {
  234. megs.push(`${item.title}格式不正确!`); return false;
  235. };
  236. }
  237. data[item.name] = item.value;
  238. });
  239. data['category'] = 0;
  240. // 申请贷款期限 不用传
  241. delete data['maturity'];
  242. if (megs.length != 0) {
  243. this.setData({ errorShow: true, megs, saveLock: false });
  244. return false;
  245. };
  246. let resA = await wx.$request({ method: "post", url: "/order/", data });
  247. this.setData({ saveLock: false })
  248. Dialog.alert({ message: "已提交!" }).then(res => wx.redirectTo({ url: '/pages/accessory/index?data=' + resA.data }))
  249. } catch (err) {
  250. wx.$err(err)
  251. }
  252. },
  253. //草稿箱保存草稿
  254. async draftsUpdateSaveFunc () {
  255. try {
  256. let { value, saveLock, key } = this.data, data = {};
  257. if (saveLock) return false;
  258. this.setData({ saveLock: true });
  259. // 拦截
  260. var requeire = ['name', 'tel'], megs = [];
  261. value = [...value[0], ...value[1], ...value[2], ...value[3]];
  262. var cvalue = [..._value[0], ..._value[1], ..._value[2], ..._value[3]];
  263. value.forEach((item, index) => {
  264. if (!item.hasOwnProperty('value')) return false;
  265. if (requeire.some(itemB => itemB == item.name)) {
  266. if (item.value !== 0 && !item.value) {
  267. megs.push(`${item.title}不能为空!`)
  268. return false
  269. };
  270. if (cvalue[index].reg && !cvalue[index].reg.test(item.value)) {
  271. megs.push(`${item.title}格式不正确!`); return false;
  272. };
  273. }
  274. data[item.name] = item.value;
  275. });
  276. data['category'] = 0;
  277. // 申请贷款期限 不用传
  278. delete data['maturity'];
  279. if (megs.length != 0) {
  280. this.setData({ errorShow: true, megs, saveLock: false });
  281. return false;
  282. };
  283. let resA = await wx.$request({ method: "put", url: `/order/${key}/`, data });
  284. this.setData({ saveLock: false })
  285. Dialog.alert({ message: "已保存!" }).then(res => wx.redirectTo({ url: '/pages/accessory/index?data=' + resA.data }))
  286. } catch (err) {
  287. wx.$err(err)
  288. }
  289. },
  290. // 已填报修改上报
  291. async UpdateSaveFunc () {
  292. try {
  293. let { value, submitLock, key } = this.data, megs = [], data = {}, cvalue = [], tels = [], i = 0;
  294. if (submitLock) return false;
  295. this.setData({ submitLock: true });
  296. if (value[2][6]['value'] == 0) {
  297. value = [...value[0], ...value[1], ...value[2]];
  298. cvalue = [..._value[0], ..._value[1], ..._value[2]];
  299. } else {
  300. value = [...value[0], ...value[1], ...value[2], ...value[3]];
  301. cvalue = [..._value[0], ..._value[1], ..._value[2], ..._value[3]];
  302. }
  303. value.forEach((item, index) => {
  304. // 特殊格式 非必须
  305. if (!item.hasOwnProperty('value') || (!item.value && item.norequire)) {
  306. if (item.hasOwnProperty('value')) data[item.name] = item.value;
  307. return false
  308. };
  309. // 正常流程
  310. // 判断是否为空
  311. if (item.value !== 0 && !item.value) { megs.push(`${item.title}不能为空!`); return false; };
  312. // 数字类型
  313. if (item.type == 'number' && !/^\d+.?\d*$/.test(item.value)) { megs.push(`${item.title}必须是数字!`); return false; }
  314. // 正则判断
  315. if (cvalue[index].reg && !cvalue[index].reg.test(item.value)) {
  316. if (item.hasOwnProperty('reg_msg')) {
  317. megs.push(`${item.title},${item.reg_msg}`);
  318. } else {
  319. megs.push(`${item.title}格式不正确!`);
  320. }
  321. };
  322. // 号码不能相同 tel tstel ctel cttel
  323. if (item.name == 'tel' || item.name == 'tstel' || item.name == 'ctel' || item.name == 'cttel') {
  324. (!tels.some(itemT => itemT == item.value) || item.vlaue == '') && tels.push(item.value); ++i;
  325. }
  326. ;
  327. // 身份证验证
  328. if (item.name == 'inumber' && data['bdate']) {
  329. item.value.substr(6, 4) + "-" + item.value.substr(10, 2) + "-" + item.value.substr(12, 2) != data['bdate'] && megs.push(`身份证同出生日期不一致!`)
  330. }
  331. if (item.name == 'tsinumber' && data['tsbdate']) {
  332. item.value.substr(6, 4) + "-" + item.value.substr(10, 2) + "-" + item.value.substr(12, 2) != data['tsbdate'] && megs.push(`共同借款人身份证同出生日期不一致!`)
  333. }
  334. data[item.name] = item.value;
  335. });
  336. tels.length !== i && megs.push(`手机号码不能重复`);
  337. if (megs.length != 0) {
  338. this.setData({ errorShow: true, megs, submitLock: false });
  339. return false;
  340. };
  341. data['category'] = 1;
  342. // 申请贷款期限 不用传
  343. delete data['maturity'];
  344. let resA = await wx.$request({ method: "put", url: `/order/${key}/`, data });
  345. this.setData({ submitLock: false });
  346. Dialog.alert({ message: "已提交!" }).then(res => wx.redirectTo({ url: '/pages/accessory/index?data=' + resA.data }))
  347. } catch (err) { wx.$err(err) }
  348. },
  349. // 输入
  350. inputFunc (e) {
  351. let { value } = this.data, { index } = e.currentTarget.dataset;
  352. value[index[0]][index[1]]['value'] = e.detail.value;
  353. if (value[index[0]][index[1]].hasOwnProperty("add")) value[index[0]][index[1]]['add'] = chineseNumber(e.detail.value);
  354. this.setData({ value })
  355. },
  356. // switch
  357. switchFunc (e) {
  358. let { value, switchs } = this.data, { index } = e.currentTarget.dataset;
  359. let { name } = value[index[0]][index[1]];
  360. if (switchs.hasOwnProperty(name)) {
  361. this.setData({ switchB: true, active: name, activeIndex: index })
  362. }
  363. },
  364. // 隐藏单选框
  365. hideModal () { this.setData({ switchB: false }) },
  366. // 单选框赋值
  367. changeFunc (e) {
  368. let { activeIndex, value, switchs } = this.data;
  369. let _value = e.detail.value.split(",");
  370. value[activeIndex[0]][activeIndex[1]]['value'] = _value[0] * 1;
  371. value[activeIndex[0]][activeIndex[1]]['index'] = _value[1] * 1;
  372. // 申请贷款产品 申请贷款期限关联
  373. if (value[activeIndex[0]][activeIndex[1]]['name'] == 'laompany') {
  374. value[0][11]['value'] = switchs['laompany'][_value[1] * 1]['month'] + '个月';
  375. }
  376. // 第一借款人与申请人关系特殊处理
  377. if (value[activeIndex[0]][activeIndex[1]]['name'] == 'mstatus') {
  378. value[2][2] = {
  379. ...value[2][2], disabled: _value[0] == 1 ? true : false, value: _value[0] == 1 ? 0 : '', index: _value[0] == 1 ? 0 : ''
  380. }
  381. }
  382. if (value[activeIndex[0]][activeIndex[1]].hasOwnProperty('forlen')) {
  383. for (let i = 1; i < (value[activeIndex[0]][activeIndex[1]]['forlen'] + 1); i++) {
  384. value[activeIndex[0]][(activeIndex[1] + i)]['norequire'] = _value[0] == 1 ? false : true;
  385. }
  386. }
  387. this.setData({ value, switchB: false })
  388. },
  389. // 日期
  390. DateChange (e) {
  391. let { value } = this.data, { index } = e.currentTarget.dataset;
  392. value[index[0]][index[1]]['value'] = e.detail.value;
  393. this.setData({ value })
  394. },
  395. }
  396. })