parent
cee9ac73f5
commit
ad5580e307
3 changed files with 359 additions and 2 deletions
After Width: | Height: | Size: 10 KiB |
@ -0,0 +1,355 @@ |
|||||||
|
<template> |
||||||
|
<div class="addrView"> |
||||||
|
<div class="weizhuce d-flex" v-if="addrList.length == 0"> |
||||||
|
<p class="c_1B f_30"> 您还未注册地址。</p> |
||||||
|
</div> |
||||||
|
<div class="d-flex btnDiv"> |
||||||
|
<div type="primary" class="dialogButton primary f_12" @click="addAddr">创建新地址</div> |
||||||
|
</div> |
||||||
|
<div class="addrList" v-if="addrList.length != 0"> |
||||||
|
<div class="item" v-for="(item,index) in addrList" :key="index"> |
||||||
|
<p class="default" v-if="item.flag"><span class="f_12">默认地址</span></p> |
||||||
|
<div class="d-flex"> |
||||||
|
<div><span>{{item.name}}</span><span v-if="item.sex == 1">女士</span><span v-if="item.sex == 2">先生</span></div> |
||||||
|
<div class="btnDiv"> |
||||||
|
<span class="btn" @click="handleEdit(item)">编辑</span> |
||||||
|
<a-popconfirm |
||||||
|
title="确定删除吗?" |
||||||
|
ok-text="Yes" |
||||||
|
cancel-text="No" |
||||||
|
@confirm="confirm1(item.id)" |
||||||
|
@cancel="cancel" |
||||||
|
><span class="btn">删除</span></a-popconfirm> |
||||||
|
<a-popconfirm |
||||||
|
title="确定将其设置为默认地址吗?" |
||||||
|
ok-text="Yes" |
||||||
|
cancel-text="No" |
||||||
|
@confirm="confirm2(item.id)" |
||||||
|
@cancel="cancel" |
||||||
|
v-if="!item.flag" |
||||||
|
><span class="btn">将其设置为默认地址</span></a-popconfirm> |
||||||
|
<!-- <span class="btn" v-if="!item.flag" @click="handleDefault(item.id)">将其设置为默认地址</span>--> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<p> |
||||||
|
{{item.detailed}} |
||||||
|
</p> |
||||||
|
<p><j-area-linkage disabled type="cascader" v-model="item.addr" placeholder="请选择省市区"/></p> |
||||||
|
</div> |
||||||
|
</div> |
||||||
|
<a-modal |
||||||
|
title="地址操作" |
||||||
|
:visible="visible" |
||||||
|
:width="800" |
||||||
|
> |
||||||
|
<template slot="footer"> |
||||||
|
<a-button key="back" @click="handleCancel"> |
||||||
|
取消 |
||||||
|
</a-button> |
||||||
|
<a-button key="submit" type="primary" @click="handleOk"> |
||||||
|
确定 |
||||||
|
</a-button> |
||||||
|
</template> |
||||||
|
|
||||||
|
<template> |
||||||
|
<a-form-model |
||||||
|
ref="ruleForm" |
||||||
|
:model="form" |
||||||
|
:rules="rules" |
||||||
|
:label-col="labelCol" :wrapper-col="wrapperCol" |
||||||
|
class="modelForm" |
||||||
|
> |
||||||
|
<a-form-model-item label="称呼" > |
||||||
|
<a-select v-model="form.sex" placeholder="请选择称呼"> |
||||||
|
<a-select-option value="1"> |
||||||
|
女士 |
||||||
|
</a-select-option> |
||||||
|
<a-select-option value="2"> |
||||||
|
先生 |
||||||
|
</a-select-option> |
||||||
|
</a-select> |
||||||
|
</a-form-model-item> |
||||||
|
<a-form-model-item |
||||||
|
label="姓名" |
||||||
|
prop="name" |
||||||
|
> |
||||||
|
<a-input placeholder="请输入姓名" v-model="form.name" /> |
||||||
|
</a-form-model-item> |
||||||
|
<a-form-model-item |
||||||
|
label="选择地址" |
||||||
|
prop="addr" |
||||||
|
> |
||||||
|
<j-area-linkage type="cascader" v-model="form.addr" placeholder="请选择省市区"/> |
||||||
|
</a-form-model-item> |
||||||
|
<a-form-model-item |
||||||
|
label="手机号码" |
||||||
|
prop="phone" |
||||||
|
> |
||||||
|
<a-input placeholder="请输入手机号码" v-model="form.phone"> |
||||||
|
<template slot="addonBefore"> |
||||||
|
<span>+86 中国大陆地区</span> |
||||||
|
</template> |
||||||
|
</a-input> |
||||||
|
</a-form-model-item> |
||||||
|
<a-form-model-item label="详细地址" prop="detailed"> |
||||||
|
<a-input v-model="form.detailed" type="textarea" /> |
||||||
|
</a-form-model-item> |
||||||
|
<a-form-model-item> |
||||||
|
<a-checkbox @change="onChange" :checked="form.flag"> |
||||||
|
设置为默认地址 |
||||||
|
</a-checkbox> |
||||||
|
</a-form-model-item> |
||||||
|
</a-form-model> |
||||||
|
</template> |
||||||
|
</a-modal> |
||||||
|
</div> |
||||||
|
</template> |
||||||
|
<script> |
||||||
|
export default { |
||||||
|
name: "addrView", |
||||||
|
components: { }, |
||||||
|
data() { |
||||||
|
return { |
||||||
|
visible: false, |
||||||
|
flag:'',//当前操作是添加还是编辑,若为add是添加,为edit是编辑 |
||||||
|
copyItem:{},//备份当行数据 |
||||||
|
labelCol: { span: 4 }, |
||||||
|
wrapperCol: { span: 20 }, |
||||||
|
addrList:[ |
||||||
|
{ |
||||||
|
id:1, |
||||||
|
name:'吴一', |
||||||
|
sex:'1', |
||||||
|
phone:'17777777777', |
||||||
|
addr:'210521', |
||||||
|
detailed:'黄淮学院北区', |
||||||
|
flag:true,//是否是默认地址 |
||||||
|
},//地址一 |
||||||
|
{ |
||||||
|
id:2, |
||||||
|
name:'吴二', |
||||||
|
sex:'2', |
||||||
|
phone:'17777777777', |
||||||
|
addr:'210521', |
||||||
|
detailed:'黄淮学院北区', |
||||||
|
flag:false,//是否是默认地址 |
||||||
|
},//地址二 |
||||||
|
{ |
||||||
|
id:3, |
||||||
|
name:'吴三', |
||||||
|
sex:'1', |
||||||
|
phone:'17777777777', |
||||||
|
addr:'210521', |
||||||
|
detailed:'黄淮学院北区', |
||||||
|
flag:false,//是否是默认地址 |
||||||
|
},//地址三 |
||||||
|
],//地址列表 |
||||||
|
addr1:'210521', |
||||||
|
//弹窗数据 |
||||||
|
form: { |
||||||
|
id:'', |
||||||
|
sex: undefined, |
||||||
|
name: '', |
||||||
|
addr: '', |
||||||
|
detailed: '', |
||||||
|
phone: '', |
||||||
|
flag:false//是否默认地址 |
||||||
|
}, |
||||||
|
rules: { |
||||||
|
name: [ |
||||||
|
{ required: true, message: '请输入姓名', trigger: 'blur' }, |
||||||
|
], |
||||||
|
visit: [ |
||||||
|
{ required: true, message: '请选择您的配送方式', trigger: 'change' }, |
||||||
|
], |
||||||
|
addr: [{ required: true, message: '请选择地址', trigger: 'blur' }], |
||||||
|
detailed: [{ required: true, message: '请输入详细地址', trigger: 'blur' }], |
||||||
|
phone: [{ required: true, message: '请输入手机号码', trigger: 'blur' }, |
||||||
|
], |
||||||
|
}, |
||||||
|
}; |
||||||
|
}, |
||||||
|
methods: { |
||||||
|
addAddr(){ |
||||||
|
this.visible = true |
||||||
|
this.flag = 'add' |
||||||
|
}, |
||||||
|
changeDefault(){ |
||||||
|
this.addrList.forEach(obj =>{ |
||||||
|
if(obj.flag){ |
||||||
|
obj.flag = !obj.flag |
||||||
|
} |
||||||
|
}) |
||||||
|
}, |
||||||
|
clearForm(){ |
||||||
|
this.form = { |
||||||
|
id:'', |
||||||
|
sex: undefined, |
||||||
|
name: '', |
||||||
|
addr: '', |
||||||
|
detailed: '', |
||||||
|
phone: '', |
||||||
|
flag:false//是否默认地址 |
||||||
|
} |
||||||
|
}, |
||||||
|
handleOk(e) { |
||||||
|
//判断是添加地址还是修改地址 |
||||||
|
let that = this |
||||||
|
this.$refs.ruleForm.validate(valid => { |
||||||
|
if (valid) {//验证通过 |
||||||
|
if(this.flag == 'add') {//如果是新增地址 |
||||||
|
if(this.form.flag){//修改为默认地址 |
||||||
|
this.changeDefault() |
||||||
|
this.addrList.unshift(this.form) |
||||||
|
}else{//不修改为默认地址 |
||||||
|
this.addrList.push(this.form) |
||||||
|
} |
||||||
|
}else if(this.flag == 'edit'){//如果是修改地址 |
||||||
|
//查找当前索引 |
||||||
|
let itemIndex3 = this.addrList.findIndex(item =>item.id == this.form.id) |
||||||
|
if(this.form.flag){//如果需要修改为默认地址 |
||||||
|
this.changeDefault() |
||||||
|
this.form.flag = true |
||||||
|
this.addrList[itemIndex3] = this.form |
||||||
|
console.log("this.addrList2") |
||||||
|
console.log(this.addrList) |
||||||
|
}else{ |
||||||
|
this.addrList[itemIndex3] = this.form |
||||||
|
} |
||||||
|
} |
||||||
|
//清空表单 |
||||||
|
this.clearForm() |
||||||
|
this.flag = '' |
||||||
|
this.visible = false; |
||||||
|
} else {} |
||||||
|
}); |
||||||
|
}, |
||||||
|
handleCancel() { |
||||||
|
this.visible = false; |
||||||
|
if(this.flag == 'edit'){ |
||||||
|
let itemIndex4 = this.addrList.findIndex(item =>item.id == this.form.id) |
||||||
|
this.addrList[itemIndex4] = this.copyItem |
||||||
|
} |
||||||
|
this.clearForm() |
||||||
|
|
||||||
|
this.flag = '' |
||||||
|
}, |
||||||
|
onChange(e) { |
||||||
|
this.form.flag = e.target.checked |
||||||
|
}, |
||||||
|
handleEdit(item){ |
||||||
|
this.copyItem = JSON.parse(JSON.stringify(item)); |
||||||
|
this.visible = true |
||||||
|
this.flag = 'edit' |
||||||
|
this.form = item |
||||||
|
}, |
||||||
|
confirm1(id) { |
||||||
|
let itemIndex = this.addrList.findIndex(item =>item.id == id) |
||||||
|
this.addrList.splice(itemIndex,1) |
||||||
|
}, |
||||||
|
confirm2(id) { |
||||||
|
this.changeDefault() |
||||||
|
let itemIndex2 = this.addrList.findIndex(item =>item.id == id) |
||||||
|
this.addrList[itemIndex2].flag = true |
||||||
|
}, |
||||||
|
cancel(e) { |
||||||
|
this.$message.warning('已取消'); |
||||||
|
}, |
||||||
|
}, |
||||||
|
}; |
||||||
|
</script> |
||||||
|
|
||||||
|
<style lang="less" scoped> |
||||||
|
@import '../assets/common.css'; |
||||||
|
.modelForm{ |
||||||
|
padding:20px 100px; |
||||||
|
} |
||||||
|
.addrList .j-area-linkage /deep/ .area-select{ |
||||||
|
background-color: #fff; |
||||||
|
border: none; |
||||||
|
span{ |
||||||
|
padding-left: 0; |
||||||
|
font-size: 12px; |
||||||
|
color:#313131; |
||||||
|
cursor:auto; |
||||||
|
font-weight: 500; |
||||||
|
} |
||||||
|
i{ |
||||||
|
display: none; |
||||||
|
} |
||||||
|
} |
||||||
|
.btnDiv{ |
||||||
|
justify-content: center; |
||||||
|
.dialogButton { |
||||||
|
width: 300px; |
||||||
|
height: 42px; |
||||||
|
text-align: center; |
||||||
|
line-height: 42px; |
||||||
|
transition: all 0.2s; |
||||||
|
} |
||||||
|
.primary { |
||||||
|
background: #1b1b1b; |
||||||
|
border: 2px solid #1b1b1b; |
||||||
|
color: #e5dfd9; |
||||||
|
&:hover { |
||||||
|
opacity: 0.8; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
.addrView{ |
||||||
|
width: 1114px; |
||||||
|
margin:0 auto; |
||||||
|
padding-top: 50px; |
||||||
|
.weizhuce{ |
||||||
|
text-align: center; |
||||||
|
flex-direction: column; |
||||||
|
justify-content: center; |
||||||
|
align-items: center; |
||||||
|
p{ |
||||||
|
width: 300px; |
||||||
|
} |
||||||
|
} |
||||||
|
.addrList{ |
||||||
|
width: 800px; |
||||||
|
margin: 0 auto; |
||||||
|
.item{ |
||||||
|
padding-top: 40px; |
||||||
|
border-bottom: 1px solid #DADADA; |
||||||
|
color: #1A1919; |
||||||
|
p{ |
||||||
|
font-size: 12px; |
||||||
|
} |
||||||
|
.default{ |
||||||
|
span{ |
||||||
|
display: inline-block; |
||||||
|
padding: 4px 12px; |
||||||
|
box-sizing: content-box; |
||||||
|
background: #F8F8F8; |
||||||
|
width: 72px; |
||||||
|
height: 21px; |
||||||
|
text-align: center; |
||||||
|
line-height: 21px; |
||||||
|
} |
||||||
|
|
||||||
|
} |
||||||
|
.d-flex{ |
||||||
|
justify-content: space-between; |
||||||
|
font-size: 14px; |
||||||
|
.btnDiv{ |
||||||
|
.btn{ |
||||||
|
cursor: pointer; |
||||||
|
} |
||||||
|
} |
||||||
|
.btn{ |
||||||
|
text-decoration: underline; |
||||||
|
margin-right: 20px; |
||||||
|
} |
||||||
|
div:first-child{ |
||||||
|
margin-bottom: 12px; |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
</style> |
||||||
|
|
Loading…
Reference in new issue