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.

270 lines
6.5 KiB

1 week ago
  1. <template>
  2. <view class="personal-address">
  3. <view v-if="addressList.length>0" class="personal-address-list">
  4. <view v-for="(item,index) in addressList" :key="index">
  5. <view class="personal-address-list-item">
  6. <view class="personal-address-info">
  7. <view class="personal-address-text">
  8. {{ item.province == item.city ? item.province : '' }}
  9. {{item.city}}
  10. {{item.district}}
  11. {{item.detailAddress}}
  12. </view>
  13. <view class="personal-address-info-use-btn">
  14. <view class="personal-address-people">
  15. <view>
  16. {{item.name}}
  17. </view>
  18. <view style="border: solid #7D8196 1px; margin: 0 10px; height: 12px;"> </view>
  19. <view>
  20. {{item.phoneHidden}}
  21. </view>
  22. </view>
  23. <view class="use-btn">
  24. <u-button size="mini" color="#FFBF60" text="使用" shape="circle" @click="useAddress(item)">
  25. </u-button>
  26. </view>
  27. </view>
  28. </view>
  29. <view class="personal-address-info-btns">
  30. <u-radio-group v-if="item.isDefault" v-model="value" >
  31. <u-radio activeColor="#ffbf60" name="默认地址" labelColor="#ffbf60" label="默认地址"></u-radio>
  32. </u-radio-group>
  33. <view class="" v-else></view>
  34. <view class="personal-address-info-btns-2">
  35. <view class="personal-address-info-btn" @click="editAddress(item)">
  36. <u-icon name="edit-pen" color="#7d8196" size="16" style="margin-right: 5px;"></u-icon>
  37. <view style="margin-left: 5px;">
  38. 编辑
  39. </view>
  40. </view>
  41. <view class="personal-address-info-btn" @click="deleteAddress(item)">
  42. <u-icon name="trash" color="#7d8196" size="16"></u-icon>
  43. <view style="margin-left: 5px;">
  44. 删除
  45. </view>
  46. </view>
  47. </view>
  48. </view>
  49. </view>
  50. </view>
  51. </view>
  52. <view v-else class="personal-address-none">
  53. <img src="https://catmdogf.oss-cn-shanghai.aliyuncs.com/CMDF/front/personal/address.png" alt="pet"
  54. style="width: 243px;height: 147px;" mode="widthFix"/>
  55. <view class="personal-address-none-text">这里还没有您的地址,请点击添加吧~</view>
  56. </view>
  57. <view class="personal-address-add">
  58. <button class="personal-address-add-btn" @click="addAddress">添加地址</button>
  59. </view>
  60. <u-modal :show="showDel" @confirm="confirmDel" @cancel="cancelDel" ref="uModal" showCancelButton :asyncClose="true" :content='delContent'></u-modal>
  61. </view>
  62. </template>
  63. <script>
  64. import { getAddressList,delAddress } from "@/api/system/address"
  65. export default{
  66. data(){
  67. return{
  68. addressList:[],
  69. value:"默认地址",
  70. show:false,
  71. showDel:false,
  72. delContent:'',
  73. deleteId:''
  74. }
  75. },
  76. onShow() {
  77. this.getAddressList();
  78. },
  79. onPullDownRefresh() {
  80. this.getAddressList();
  81. },
  82. mounted() {
  83. this.getAddressList();
  84. },
  85. methods:{
  86. getAddressList(){
  87. getAddressList({}).then(res=>{
  88. if(res&&res.content){
  89. this.addressList=res.content
  90. this.showDel = false;
  91. }
  92. })
  93. },
  94. addAddress(){
  95. uni.navigateTo({
  96. url: `/pages/newOrder/address?optionType=add`
  97. });
  98. },
  99. editAddress(item){
  100. uni.navigateTo({
  101. url: `/pages/newOrder/address?optionType=edit&addressId=${item.id}`
  102. });
  103. },
  104. deleteAddress(item){
  105. this.delContent = "确定要删除该地址吗?";
  106. this.showDel = true;
  107. this.deleteId=item.id;
  108. },
  109. confirmDel(){
  110. delAddress(this.deleteId).then(res=>{
  111. console.log(res);
  112. this.$modal.showToast('删除成功');
  113. this.getAddressList()
  114. })
  115. },
  116. cancelDel(){
  117. this.showDel = false;
  118. this.deleteId='';
  119. },
  120. useAddress(params){
  121. this.$globalData.newOrderData.currentAddress={
  122. id:params.id,
  123. name:params.name,
  124. phone:params.phoneHidden,
  125. province:params.province,
  126. city:params.city,
  127. detailAddress:params.detailAddress,
  128. }
  129. let len = getCurrentPages().length;
  130. this.loading=false
  131. if(len >= 2) {
  132. uni.navigateBack();
  133. }else {
  134. uni.redirectTo({url:'/pages/newOrder/serviceNew'});
  135. }
  136. }
  137. }
  138. }
  139. </script>
  140. <style>
  141. ::v-deep .wx-radio-input.wx-radio-input-checked {
  142. background-color: #ffbf60 !important;
  143. border-color: #ffbf60 !important;
  144. }
  145. </style>
  146. <style lang="scss">
  147. //选中之后的样式
  148. .personal-address{
  149. position: relative;
  150. height: 100%;
  151. padding-bottom: 90px;
  152. .personal-address-add{
  153. background-color: #FFFFFF;
  154. padding: 10px 20px 40px;
  155. width: 100%;
  156. height: 90px;
  157. position: fixed;
  158. bottom: 0;
  159. z-index: 100;
  160. display: flex;
  161. .personal-address-add-btn{
  162. width: 100%;
  163. border-radius: 6px;
  164. background: #FFB13F;
  165. font-size: 16px;
  166. color: #FFFFFF;
  167. }
  168. }
  169. .personal-address-list{
  170. .personal-address-list-add{
  171. width: 100%;
  172. height: 44px;
  173. background-color: #FFFFFF;
  174. display: flex;
  175. justify-content: space-between;
  176. align-items: center;
  177. padding: 0 15px;
  178. .personal-address-list-add-btn{
  179. font-size: 14px;
  180. color:#AAA;
  181. display: flex;
  182. align-items: center;
  183. }
  184. }
  185. .personal-address-list-item{
  186. margin: 10px 10px 0 10px;
  187. border-radius: 5px;
  188. padding: 20px 10px 10px;
  189. background-color: #FFF;
  190. .personal-address-info{
  191. display: flex;
  192. align-items: center;
  193. justify-content: flex-start;
  194. flex-wrap: wrap;
  195. .personal-address-text{
  196. color: #333;
  197. font-size: 14px;
  198. font-weight: bold;
  199. width: 100%;
  200. }
  201. .personal-address-people{
  202. color: #7D8196;
  203. font-size: 14px;
  204. font-weight: 400;
  205. display: flex;
  206. justify-content: flex-start;
  207. align-items: center;
  208. margin: 10px 0 10px;
  209. }
  210. }
  211. .personal-address-info-btns{
  212. display: flex;
  213. justify-content: space-between;
  214. align-items: flex-end;
  215. font-size: 14px;
  216. padding-top: 10px;
  217. border-top:solid 1px #efefef;
  218. .personal-address-info-btns-2{
  219. display: flex;
  220. justify-content: flex-end;
  221. align-items: flex-end;
  222. .personal-address-info-btn{
  223. display: flex;
  224. color: #7D8196;
  225. margin-left: 20px;
  226. align-items: flex-end;
  227. }
  228. }
  229. }
  230. }
  231. }
  232. .personal-address-none{
  233. display:flex;
  234. justify-content: center;
  235. align-items: center;
  236. flex-wrap: wrap;
  237. margin-top: 40%;
  238. .personal-address-none-text{
  239. color: #666;
  240. text-align: center;
  241. font-size: 14px;
  242. width: 100%;
  243. margin-top: 10px;
  244. }
  245. }
  246. .personal-address-info-use-btn{
  247. width: 100%;
  248. display: flex;
  249. justify-content: space-between;
  250. align-items: center;
  251. .use-btn{
  252. width: 112rpx;
  253. }
  254. }
  255. }
  256. </style>