index.js 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. import { value, switchs, date } from "./config";
  2. var _value = value;
  3. const app = getApp();
  4. Component({
  5. options: {
  6. addGlobalClass: true,//解决继承全局样式问题
  7. },
  8. lifetimes: {
  9. attached: function () { this.init(); }
  10. },
  11. properties: {
  12. type: { type: String, value: "edit" },
  13. },
  14. data: {
  15. value,
  16. active: '',
  17. activeObject: {},
  18. activeIndex: [],
  19. switchB: false,
  20. endDate: date(),
  21. switchs,
  22. submitLock: false,
  23. saveLock: false,
  24. btn: true,
  25. radioInputShow: false,
  26. },
  27. methods: {
  28. //组件石林进入页面接节点树执行
  29. init () {
  30. // 商品请求
  31. wx.$request({ method: "get", url: "/order/productDict/" }).then(res => {
  32. this.setData({ shop: res.data })
  33. }).catch(err => wx.$err(err));
  34. let { type, value } = this.data;
  35. switch (type) {
  36. case 'watch':
  37. this.watchFunc(value);
  38. break;
  39. default:
  40. break;
  41. }
  42. },
  43. // 查看模式
  44. watchFunc (data) {
  45. data = data.map(itemA => itemA.map(itemB => { if (itemB.hasOwnProperty('value')) itemB['disabled'] = true; return itemB })
  46. )
  47. this.setData({ data, btn: false })
  48. },
  49. // 提交
  50. submitFunc () {
  51. let { value, submitLock } = this.data, megs = [], data = {}, cvalue = [], tels = [];
  52. if (submitLock) return false;
  53. this.setData({ submitLock: true });
  54. if (value[2][6]['value'] == 0) {
  55. value = [...value[0], ...value[1], ...value[2]];
  56. cvalue = [..._value[0], ..._value[1], ..._value[2]];
  57. } else {
  58. value = [...value[0], ...value[1], ...value[2], ...value[3]];
  59. cvalue = [..._value[0], ..._value[1], ..._value[2], ..._value[3]];
  60. }
  61. value.forEach((item, index) => {
  62. // 特殊格式 非必须
  63. if (!item.hasOwnProperty('value') || item.norequire) {
  64. if (item.hasOwnProperty('value')) data[item.name] = item.value;
  65. return false
  66. };
  67. // 正常流程
  68. // 判断是否为空
  69. if (!item.value) { megs.push(`${item.title}不能为空!`); return false; };
  70. // 数字类型
  71. if (item.type == 'number' && !/^\d+.?\d*$/.test(item.value)) { megs.push(`${item.title}必须是数字!`); return false; }
  72. // 正则判断
  73. if (cvalue[index].reg && !cvalue[index].reg.test(item.value)) {
  74. megs.push(`${item.title}格式不正确!`); return false;
  75. };
  76. // 号码不能相同 tel tstel ctel cttel
  77. if (item.name == 'tel' || item.name == 'tstel' || item.name == 'ctel' || item.name == 'cttel') (!tels.some(item.value) || item.vlaue == '') && tels.push(item.value)
  78. ;
  79. data[item.name] = item.value;
  80. });
  81. (tels.length !== 4 && tels.length != 0) && megs.push(`手机号码不能重复`);
  82. if (megs.length != 0) {
  83. this.setData({ errorShow: true, megs, submitLock: false });
  84. return false;
  85. };
  86. console.log(data)
  87. },
  88. // 保存
  89. saveFunc () {
  90. let { value, saveLock } = this.data, data = {};
  91. value = [...value[0], ...value[1], ...value[2], ...value[3]];
  92. value.forEach(item => { if (item.hasOwnProperty('value')) data[item.name] = item.value });
  93. console.log(data)
  94. },
  95. // 输入
  96. inputFunc (e) {
  97. let { value } = this.data, { index } = e.currentTarget.dataset;
  98. value[index[0]][index[1]]['value'] = e.detail.value;
  99. this.setData({ value })
  100. },
  101. // switch
  102. switchFunc (e) {
  103. let { value, switchs } = this.data, { index } = e.currentTarget.dataset;
  104. let { name } = value[index[0]][index[1]];
  105. if (switchs.hasOwnProperty(name)) {
  106. console.log(switchs[name])
  107. this.setData({ switchB: true, active: name, activeIndex: index })
  108. }
  109. else {
  110. this.setData({ radioInputShow: true, activeIndex: index });
  111. }
  112. },
  113. // 隐藏单选框
  114. hideModal () { this.setData({ switchB: false }) },
  115. tehideModal () { this.setData({ radioInputShow: false }) },
  116. // 单选框赋值
  117. changeFunc (e) {
  118. let { activeIndex, value } = this.data;
  119. let _value = e.detail.value * 1;
  120. value[activeIndex[0]][activeIndex[1]]['value'] = _value;
  121. // 第一借款人与申请人关系特殊处理
  122. if (value[activeIndex[0]][activeIndex[1]]['name'] == 'mstatus') {
  123. console.log(_value)
  124. value[2][2] = { ...value[2][2], disabled: _value == 1 ? true : false, value: _value == 1 ? 0 : '' }
  125. }
  126. if (value[activeIndex[0]][activeIndex[1]].hasOwnProperty('forlen')) {
  127. for (let i = 1; i < (value[activeIndex[0]][activeIndex[1]]['forlen'] + 1); i++) {
  128. value[activeIndex[0]][(activeIndex[1] + i)]['norequire'] = _value == 0 ? false : true;
  129. }
  130. }
  131. this.setData({ value })
  132. },
  133. // 单选 输入
  134. // radioInputChangeFunc (e) {
  135. // let { activeIndex, value } = this.data;
  136. // value[activeIndex[0]][activeIndex[1]]['value'] = _value;
  137. // },
  138. // 日期
  139. DateChange (e) {
  140. let { value } = this.data, { index } = e.currentTarget.dataset;
  141. value[index[0]][index[1]]['value'] = e.detail.value;
  142. this.setData({ value })
  143. },
  144. }
  145. })