You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

159 lines
4.1 KiB

10 months ago
  1. <template>
  2. <view class="addAddress">
  3. <u-navbar :title="$t('nav.edit.address')" @leftClick="leftClick()"></u-navbar>
  4. <view class="container">
  5. <u--form labelPosition="left" label-width="66px" :model="addressInfo" :rules="rules" ref="uForm">
  6. <u-form-item :label="$t('page.editAddress.name')" prop="name" borderBottom ref="item1">
  7. <u--input v-model="addressInfo.name" border="none"></u--input>
  8. </u-form-item>
  9. <u-form-item :label="$t('page.editAddress.phone')" prop="phone" borderBottom ref="item1">
  10. <u--input v-model="addressInfo.phone" border="none"></u--input>
  11. </u-form-item>
  12. <u-form-item :label="$t('page.editAddress.region')" prop="region" borderBottom ref="item1">
  13. <u--input v-model="addressInfo.region" border="none"></u--input>
  14. </u-form-item>
  15. <u-form-item :label="$t('page.editAddress.detailed-address')" prop="detailAddress" borderBottom ref="item1">
  16. <u--input v-model="addressInfo.detailAddress" border="none"></u--input>
  17. </u-form-item>
  18. </u--form>
  19. <div class="settings-default">
  20. <text>{{ $t('page.editAddress.default-address') }}</text>
  21. <u-switch inactiveValue="false" activeValue="true" v-model="addressInfo.defaultFlag" activeColor="#e68534"></u-switch>
  22. </div>
  23. <u-button @click="submit()" type="primary" color="#e68534" :text="$t('page.editAddress.save')" shape="circle"></u-button>
  24. <u-button @click="leftClick()" :text="$t('page.editAddress.cancel')" shape="circle"></u-button>
  25. </view>
  26. </view>
  27. </template>
  28. <script>
  29. export default {
  30. data() {
  31. return {
  32. addressInfo: {
  33. name: '',
  34. phone: '',
  35. region: '',
  36. detailAddress : '',
  37. defaultFlag : 'false'
  38. },
  39. rules: {
  40. 'name': {
  41. type: 'string',
  42. required: true,
  43. message: this.$t('page.editAddress.name-message'),
  44. trigger: ['blur', 'change']
  45. },
  46. 'phone': {
  47. type: 'string',
  48. required: true,
  49. message: this.$t('page.editAddress.phone-message'),
  50. trigger: ['blur', 'change']
  51. },
  52. 'region': {
  53. type: 'string',
  54. required: true,
  55. message: this.$t('page.editAddress.region-message'),
  56. trigger: ['blur', 'change']
  57. },
  58. 'detailAddress': {
  59. type: 'string',
  60. required: true,
  61. message: this.$t('page.editAddress.detailed-message'),
  62. trigger: ['blur', 'change']
  63. },
  64. }
  65. }
  66. },
  67. onShow() {
  68. if(this.$route.query.id && this.$route.query.id != 'undefined'){
  69. this.getAddress()
  70. }else{
  71. this.$route.query.id = undefined
  72. }
  73. },
  74. methods: {
  75. getAddress(){ //获取地址列表
  76. this.request('addressOne', {}, {
  77. id : this.$route.query.id
  78. }).then(res=>{
  79. if(res.code == 200){
  80. this.addressInfo = res.result
  81. }
  82. })
  83. },
  84. submit() {
  85. this.$refs.uForm.validate().then(res => {
  86. if(this.$route.query.id && !this.addressInfo.id){
  87. return
  88. }
  89. this.request(this.addressInfo.id ? 'editAddress' : 'saveAddress',
  90. {
  91. ...this.addressInfo,
  92. default_flag : this.addressInfo.default_flag ? '1' : '0',
  93. "uid": 1
  94. }).then(res=>{
  95. if(res.code == 200){
  96. uni.$u.toast(this.$t('success-operation'))
  97. setTimeout(()=>{
  98. uni.navigateBack(-1)
  99. },500)
  100. }
  101. })
  102. })
  103. },
  104. leftClick(){
  105. let query = this.$route.query;
  106. if(query.url && query.oid && query.quantity){
  107. return uni.redirectTo({
  108. url:query.url + "?id=" + query.oid + "&quantity=" + query.quantity
  109. })
  110. }
  111. uni.navigateTo({
  112. url: '/pages/user/address/address'
  113. })
  114. }
  115. }
  116. }
  117. </script>
  118. <style lang="scss" scoped>
  119. .addAddress {
  120. &::v-deep .container {
  121. box-sizing: border-box;
  122. padding: 0px 10px;
  123. margin-top: 54px;
  124. .u-form {
  125. box-sizing: border-box;
  126. background: white;
  127. border-radius: 15rpx;
  128. .u-form-item {
  129. padding: 0px 15px;
  130. .u-form-item__body {
  131. height: 40px;
  132. }
  133. }
  134. }
  135. .settings-default {
  136. display: flex;
  137. align-items: center;
  138. justify-content: space-between;
  139. height: 40px;
  140. background: white;
  141. margin-top: 10px;
  142. border-radius: 10rpx;
  143. box-sizing: border-box;
  144. padding: 10px;
  145. }
  146. }
  147. &::v-deep .u-button {
  148. height: 40px;
  149. margin: 10px 0px;
  150. }
  151. }
  152. </style>