insert.vue 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  1. <template>
  2. <My_listbox :pullDown="false" boxBackground="#fff">
  3. <my-form ref="form" :form="form" @isUncomplete="isUncomplete" />
  4. <view class="footer">
  5. <view class="add" :class="uncomplete ? 'forbidden' : ''" hover-class="navigator-hover"
  6. @click="uncomplete || loading ? '' : submit()">
  7. <u-loading-icon v-if="loading" />
  8. <block v-else>
  9. {{ contactsid == 0 ? '确定添加' : '保存' }}
  10. </block>
  11. </view>
  12. </view>
  13. </My_listbox>
  14. </template>
  15. <script>
  16. import myForm from "../../components/my_form.vue";
  17. export default {
  18. components: { myForm },
  19. data() {
  20. return {
  21. form: [],
  22. uncomplete: true,
  23. contactsid: 0,
  24. loading: false,
  25. }
  26. },
  27. onLoad(options) {
  28. console.log(options)
  29. if (options.data) {
  30. let data = JSON.parse(options.data)
  31. this.contactsid = data.contactsid;
  32. this.initForm(data)
  33. } else {
  34. this.initForm()
  35. }
  36. uni.setNavigationBarTitle({
  37. title: this.contactsid ? '编辑地址' : '添加地址',
  38. })
  39. },
  40. methods: {
  41. async initForm(data = null) {
  42. let form = [{
  43. key: "name",
  44. type: "text",
  45. label: "收货人",
  46. isMust: true,//是否必填
  47. value: "",
  48. placeholder: "请输入收货人姓名"
  49. }, {
  50. key: "phonenumber",
  51. type: "text",
  52. label: "手机号",
  53. isMust: true,//是否必填
  54. value: "",
  55. placeholder: "请输入收货人手机号",
  56. inputmode: 'number',
  57. verify: [this.getReg("phonenumber")]
  58. }, {
  59. key: "region",
  60. type: "region",
  61. label: "所在地区",
  62. isMust: true,//是否必填
  63. value: [],
  64. }, {
  65. key: "address",
  66. type: "textarea",
  67. label: "详细地址",
  68. isMust: true,//是否必填
  69. value: '',
  70. }, {
  71. key: "isdefault",
  72. type: "switch",
  73. label: "设为默认地址",
  74. isMust: false,//是否必填
  75. value: false,
  76. isNum: true,
  77. unBorBot: true
  78. }];
  79. if (data) {
  80. data.isdefault = data.isdefault == 1;
  81. data.region = [data.province, data.city, data.county];
  82. form = form.map(v => {
  83. v.value = data[v.key]
  84. return v
  85. })
  86. }
  87. this.form = form;
  88. },
  89. isUncomplete(uncomplete) {
  90. this.uncomplete = uncomplete;
  91. },
  92. submit() {
  93. this.loading = true;
  94. this.$refs.form.submit().then(data => {
  95. console.log("提交", data)
  96. this.$Http.basic({
  97. "id": 20240506103402,
  98. "content": {
  99. "contactsid": this.contactsid,
  100. ...data
  101. }
  102. }).then(res => {
  103. this.loading = false;
  104. console.log("编辑地址", res)
  105. if (res.msg == '成功') this.$Http.updateList && this.$Http.updateList();
  106. if (this.cutoff(res.msg, this.contactsid == 0 ? '添加成功' : '保存成功', true, 800)) return;
  107. })
  108. })
  109. },
  110. },
  111. }
  112. </script>
  113. <style lang="scss" scoped>
  114. .footer {
  115. position: fixed;
  116. width: 100vw;
  117. height: 65px;
  118. background: #FFFFFF;
  119. box-shadow: 0px -2px 6px 1px rgba(0, 0, 0, 0.16);
  120. box-sizing: border-box;
  121. padding: 10px;
  122. padding-top: 5px;
  123. bottom: 0;
  124. .add {
  125. display: flex;
  126. align-items: center;
  127. justify-content: center;
  128. width: 100%;
  129. height: 45px;
  130. background: #C30D23;
  131. border-radius: 5px;
  132. font-family: PingFang SC, PingFang SC;
  133. font-size: 14px;
  134. color: #FFFFFF;
  135. }
  136. .forbidden {
  137. opacity: .6;
  138. }
  139. }
  140. </style>