addressAlert.vue 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166
  1. <template>
  2. <alert @closeAlert="closeAlert" :AlertTitle="AlertTitle" v-if="showAlert">
  3. <ul class="form-list">
  4. <li class="clearfix">
  5. <div class="pull-left name"><span v-if="IslookOrUpdate !== 'look'">*</span>联系人姓名</div>
  6. <div class="pull-left">
  7. <template v-if="IslookOrUpdate !== 'look'">
  8. <el-input placeholder="请输入联系人姓名" v-model="chooseItem.name" clearable class="input-text">
  9. </el-input>
  10. </template>
  11. <template v-else>
  12. <div class="text">{{chooseItem.name}}</div>
  13. </template>
  14. </div>
  15. </li>
  16. <li class="clearfix">
  17. <div class="pull-left name"><span v-if="IslookOrUpdate !== 'look'">*</span>联系电话</div>
  18. <div class="pull-left">
  19. <template v-if="IslookOrUpdate !== 'look'">
  20. <el-input placeholder="请输入联系电话" v-model="chooseItem.telephone" clearable class="input-text" type="number">
  21. </el-input>
  22. </template>
  23. <template v-else>
  24. <div class="text">{{chooseItem.telephone}}</div>
  25. </template>
  26. </div>
  27. </li>
  28. <li class="clearfix">
  29. <cityarea :data="area" @setup="setup" :IslookOrUpdate="IslookOrUpdate"></cityarea>
  30. </li>
  31. <li class="clearfix">
  32. <div class="pull-left name"><span v-if="IslookOrUpdate !== 'look'">*</span>详细地址</div>
  33. <div class="pull-left">
  34. <template v-if="IslookOrUpdate !== 'look'">
  35. <el-input placeholder="建议您填写详细地址,例如街道/门牌号,楼层和房间号等信息" v-model="chooseItem.detailAddress" clearable class="input-text2">
  36. </el-input>
  37. </template>
  38. <template v-else>
  39. <div class="text">{{chooseItem.detailAddress}}</div>
  40. </template>
  41. </div>
  42. </li>
  43. <li>
  44. <div class="otherText" @click="setAuto">
  45. <i class="el-icon-circle-check" :class="{active: chooseItem.num === 1}"></i>
  46. {{chooseItem.num === 1 ? '当前已是默认地址' : '设置为默认发货地址'}}
  47. </div>
  48. </li>
  49. </ul>
  50. <div class="control-btn">
  51. <template v-if="IslookOrUpdate !== 'look'">
  52. <div class="save" @click="closeAlert('save')">保存</div>
  53. <div class="cancel" @click="closeAlert()">取消</div>
  54. </template>
  55. <template v-else>
  56. <div class="save" @click="closeAlert()">关闭</div>
  57. </template>
  58. </div>
  59. </alert>
  60. </template>
  61. <script>
  62. import { Alert } from '@/components/common'
  63. import Cityarea from '@/components/base/area/area.vue'
  64. export default {
  65. props: {
  66. IslookOrUpdate: {
  67. type: String,
  68. default: 'update'
  69. },
  70. AlertTitle: {
  71. type: String,
  72. default: '新增公司地址'
  73. },
  74. chooseItem: {
  75. type: Object,
  76. default: {}
  77. }
  78. },
  79. data() {
  80. return {
  81. showAlert: false
  82. }
  83. },
  84. computed: {
  85. // isAuto() {
  86. // console.log(this.chooseItem)
  87. // return Math.abs(this.chooseItem.num)
  88. // },
  89. area() {
  90. return this.chooseItem.area
  91. }
  92. },
  93. methods: {
  94. closeAlert(_tp) {
  95. if (_tp) {
  96. if (!this.chooseItem.name ||this.chooseItem.name.trim() === '') {
  97. this.$message({
  98. type: 'error',
  99. message: '请填写联系人姓名'
  100. })
  101. return;
  102. } else if (!this.chooseItem.telephone ||this.chooseItem.telephone.trim() === '') {
  103. this.$message({
  104. type: 'error',
  105. message: '请填写联系电话'
  106. })
  107. return;
  108. } else if (!/^1[3|5|7|8]\d{9}$/.test(this.chooseItem.telephone)) {
  109. this.$message({
  110. type: 'error',
  111. message: '联系电话填写不对'
  112. })
  113. return;
  114. }
  115. else if (!this.areainfo) {
  116. this.$message({
  117. type: 'error',
  118. message: '请选择所在地区'
  119. })
  120. return;
  121. } else if (!this.chooseItem.detailAddress ||this.chooseItem.detailAddress.trim() === '') {
  122. this.$message({
  123. type: 'error',
  124. message: '请填写详细地址'
  125. })
  126. return;
  127. }
  128. }
  129. this.chooseItem.area = this.areainfo
  130. this.$emit('closeAlert', _tp, this.chooseItem)
  131. },
  132. setAuto() {
  133. if (this.IslookOrUpdate === 'look') return
  134. if (this.IslookOrUpdate === 'update' && this.chooseItem.num === 1) {
  135. this.$message.error('最少选择一个为默认地址')
  136. return;
  137. }
  138. if (this.chooseItem.num === 1) {
  139. this.chooseItem.num = 0
  140. return
  141. }
  142. this.chooseItem.num = 1
  143. },
  144. hide() {
  145. this.showAlert = false
  146. },
  147. show(item) {
  148. this.areainfo = item.area
  149. this.showAlert = true
  150. },
  151. setup(info) {
  152. this.areainfo = info
  153. }
  154. },
  155. components: {
  156. Alert,
  157. Cityarea
  158. }
  159. }
  160. </script>
  161. <style lang="scss">
  162. </style>