Commit f0018ebd authored by Damon's avatar Damon

Merge branch 'dev-1.5.0' into test

parents 39076eda e3da77db
...@@ -13,7 +13,7 @@ ...@@ -13,7 +13,7 @@
<u-icon name="checkmark-circle" :color="isDefault ? '#2272FF' : '#999'" size="32"></u-icon> <u-icon name="checkmark-circle" :color="isDefault ? '#2272FF' : '#999'" size="32"></u-icon>
<text class="txt">默认地址</text> <text class="txt">默认地址</text>
</view> </view>
<view @click="$u.throttle(remove, 500)"> <view @click="$u.throttle(remove, 500)" v-if="showRemove">
<text class="txt">删除</text> <text class="txt">删除</text>
</view> </view>
</view> </view>
...@@ -45,6 +45,10 @@ export default { ...@@ -45,6 +45,10 @@ export default {
siteType: { siteType: {
type: String, type: String,
default: 'edit' default: 'edit'
},
showRemove: {
type: Boolean,
default: false
} }
}, },
data() { data() {
......
...@@ -603,6 +603,15 @@ ...@@ -603,6 +603,15 @@
"disableScroll": true "disableScroll": true
} }
}, },
{
"path":"address",
"style": {
"navigationBarTitleText": "收货地址",
"enablePullDownRefresh": false,
"navigationStyle": "custom",
"disableScroll": true
}
},
{ {
"path": "addParts", "path": "addParts",
"style": { "style": {
......
...@@ -274,15 +274,13 @@ export default { ...@@ -274,15 +274,13 @@ export default {
} else { } else {
if (this.$u.test.isEmpty(this.siteInfo)) { if (this.$u.test.isEmpty(this.siteInfo)) {
let params = { let params = {
mobile: this.mobile, updateFlag: true,
name: this.name,
provinceName: this.region[0], provinceName: this.region[0],
cityName: this.region[1], cityName: this.region[1],
districtName: this.region[2], districtName: this.region[2],
address: this.region.join("") + this.address address: this.region.join("") + this.address
}; };
if (this.id) params.id = this.id let res = await this.$u.api.updateAddress(params);
let res = await this.$u.api.saveMyAddress(params);
if (res && res.code == 200) { if (res && res.code == 200) {
this.$u.route({ type: 'back' }); this.$u.route({ type: 'back' });
this.show = false this.show = false
...@@ -292,23 +290,37 @@ export default { ...@@ -292,23 +290,37 @@ export default {
} }
} }
}, },
commitSite() { async commitSite() {
if(!this.validateForm()) { if(!this.validateForm()) {
return false return false
} }
// 获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。 let params = {
var pages = getCurrentPages();
var prevPage = pages[pages.length - 2]; //上一个页面
//prevPage.route获取上一页面的页面路径
let address = this.region.join("") + this.address
let site = {
name: this.name,
mobile: this.mobile, mobile: this.mobile,
address: address, name: this.name,
region: this.region provinceName: this.region[0],
cityName: this.region[1],
districtName: this.region[2],
address: this.region.join("") + this.address
};
if (this.id) params.id = this.id
let res = await this.$u.api.saveMyAddress(params);
if (res && res.code == 200) {
let pages = getCurrentPages()
let prevPage = pages[pages.length - 2]
if (prevPage.route === 'pages/parts/application') {
let address = this.region.join("") + this.address
let site = {
name: this.name,
mobile: this.mobile,
address: address,
region: this.region,
id: this.id
}
prevPage.$vm.updateSite(site)
}
this.show = false
this.$u.route({ type: 'back' });
} }
prevPage.$vm.updateSite(site)
this.$u.route({ type: 'back' });
} }
} }
}; };
......
<template> <template>
<view class="u-flex address-wrap"> <view class="address-wrap">
<w-navbar title="收货地址"></w-navbar> <w-navbar title="收货地址"></w-navbar>
<view class="lists"> <view class="body" v-if="hasAdderss">
<view class="body" v-for="(item, index) in lists" :key="item.id"> <w-address @editSite="toAddSite" :info="info" :is-default="true" />
<w-address @editSite="toEditSite(item)" @selectSite="selectSite(item)" @setDefault="setDefault(item, index)" @remove="remove(item)" :info="item" :is-default="item.enable === 1" />
</view>
</view>
<view class="addSite" @tap="toAddSite">
<view class="add">
新建收货地址
</view>
</view> </view>
</view> </view>
</template> </template>
...@@ -23,24 +15,31 @@ export default { ...@@ -23,24 +15,31 @@ export default {
background: { background: {
backgroundColor: 'none' backgroundColor: 'none'
}, },
lists: [], info: {
type: '' name: '',
mobile: '',
address: '',
region: [],
},
}; };
}, },
computed: { computed: {
editPen() { editPen() {
return process.uniEnv.qn_base_url + 'icon/edit-pen.png' return process.uniEnv.qn_base_url + 'icon/edit-pen.png'
}, },
submitBtn() { hasAdderss() {
return this.info.address
},
addressInfo() {
return { return {
color: '#FFFFFF', name: this.name,
backgroundColor: '#2272FF' mobile: this.mobile,
address: this.address,
region: this.region || [],
} }
} }
}, },
onLoad(options) { onLoad() {
if (options) this.type = options.type
getApp().trackPage('我的收获地址页') getApp().trackPage('我的收获地址页')
}, },
onShow() { onShow() {
...@@ -54,97 +53,32 @@ export default { ...@@ -54,97 +53,32 @@ export default {
this.getMineSite() this.getMineSite()
}, },
getMineSite() { getMineSite() {
this.$u.api.getMyAddress().then((res) => { this.$u.api.getSiteAddress().then((res) => {
const data = res.data const data = res.data
if (data.length > 0) { if(res.code == 200 && !this.$u.test.isEmpty(data)) {
this.lists = data.map(v => { let region = []
let region = [] if(data.provinceName && data.cityName && data.districtName) {
if(v.provinceName && v.cityName && v.districtName) { region = [data.provinceName, data.cityName, data.districtName]
region = [v.provinceName, v.cityName, v.districtName]
}
v.region = region
return v
})
}
})
},
toAddSite() {
this.$u.route({
url: 'pages/mine/address/addSite',
params: {
type: 'add'
}
})
},
setDefault(val) {
this.$u.api.setDefaultAddress({id: val.id}).then((res) => {
if (res.code === 200) {
this.lists.forEach(v => {
this.$set(v, 'enable', v.id === val.id ? 1 : 0)
})
if (this.type === 'parts') {
let pages = getCurrentPages()
let prevPage = pages[pages.length - 2]
prevPage.$vm.loadAddress()
} }
} this.info = {
}) name: data.name,
}, mobile: data.mobile,
remove(val) { address: data.address,
uni.showModal({ region: region,
title: '温馨提示',
content: '确定要删除该收货地址?',
success: (res) => {
if (res.confirm) {
uni.showLoading({
title: '加载中',
})
this.$u.api.deleteMyAddress({id: val.id}).then((res) => {
uni.hideLoading()
if (res.code === 200) {
this.getMineSite()
} else {
uni.showToast({
icon: "none",
title: res.message,
})
}
})
} }
} }
}) })
}, },
selectSite(val) { toAddSite(title){
if (this.type === 'parts') { const region = this.info.region.join('-')
let pages = getCurrentPages();
let prevPage = pages[pages.length - 2]; //上一个页面
let address = val.region.join("") + val.address
let site = {
name: val.name,
mobile: val.mobile,
address: address,
region: val.region,
id: val.id
}
prevPage.$vm.updateSite(site)
this.$u.route({
type: 'back'
})
} else {
this.toEditSite(val)
}
},
toEditSite(val){
const region = val.region.join('-')
this.$u.route({ this.$u.route({
url: 'pages/mine/address/addSite', url: 'pages/mine/address/addSite',
params: { params: {
type: 'edit', type: 'edit',
region: region, region: region,
name: val.name, name: this.info.name,
mobile: val.mobile, mobile: this.info.mobile,
address: val.address, address: this.info.address,
id: val.id
} }
}) })
} }
...@@ -155,13 +89,6 @@ export default { ...@@ -155,13 +89,6 @@ export default {
<style lang="scss" scoped> <style lang="scss" scoped>
.address-wrap { .address-wrap {
background-color: #F4F5F7; background-color: #F4F5F7;
flex-direction:column;
height: 100vh;
.lists {
width: 100%;
flex: 1;
overflow-y:auto;
}
} }
.body { .body {
padding: 30rpx; padding: 30rpx;
...@@ -169,24 +96,4 @@ export default { ...@@ -169,24 +96,4 @@ export default {
border-radius: 12rpx; border-radius: 12rpx;
background-color: #FFFFFF; background-color: #FFFFFF;
} }
.addSite {
display: flex;
justify-content: space-around;
width: 600rpx;
height: 100rpx;
line-height: 100rpx;
margin: 50rpx 0;
background-color: #2272FF;
border-radius: 60rpx;
font-size: 30rpx;
.add{
display: flex;
align-items: center;
color: #ffffff;
.icon{
margin-right: 10rpx;
}
}
}
</style> </style>
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
return { return {
labels: [], // 标签列表 labels: [], // 标签列表
selectedId: '', // 已选中标签的id selectedId: '', // 已选中标签的id
classifyId: '',
type: '1', // '1': '合作商', '2': '品牌', '9': '物料品牌' type: '1', // '1': '合作商', '2': '品牌', '9': '物料品牌'
}; };
}, },
...@@ -28,6 +29,9 @@ ...@@ -28,6 +29,9 @@
if (e && e.selectedId) { // 有已选中标签的id if (e && e.selectedId) { // 有已选中标签的id
this.selectedId = e.selectedId this.selectedId = e.selectedId
} }
if (e && e.classifyId) { // 有已选中标签的id
this.classifyId = e.classifyId
}
if (e && e.categoryId) { // 有品类 if (e && e.categoryId) { // 有品类
this.type = '9' this.type = '9'
this.getBrandList(e.categoryId) this.getBrandList(e.categoryId)
...@@ -51,14 +55,14 @@ ...@@ -51,14 +55,14 @@
return { return {
'1': 'id', // 合作商 '1': 'id', // 合作商
'2': 'id', // 品牌 '2': 'id', // 品牌
'9': 'brandId' // 物料品牌 '9': 'id' // 物料品牌
} }
}, },
nameKeys() { nameKeys() {
return { return {
'1': 'name', // 合作商 '1': 'name', // 合作商
'2': 'name', // 品牌 '2': 'name', // 品牌
'9': 'brandName' // 物料品牌 '9': 'name' // 物料品牌
} }
} }
}, },
...@@ -97,10 +101,17 @@ ...@@ -97,10 +101,17 @@
}, },
// 获取物料品牌 // 获取物料品牌
getBrandList(categoryId) { getBrandList(categoryId) {
this.$u.api.getBrandList({categoryId: categoryId}).then(res => { this.$u.api.getBrandList({categoryId: categoryId, classifyId: this.classifyId}).then(res => {
if (res.code === 200) { if (res.code === 200) {
this.labels = res.data || [] const data = res.data
} let lists
if (this.classifyId == 1) {
lists = data.partnerCompany
} else {
lists = data.classify
}
this.labels = lists || []
}
}) })
}, },
} }
......
<template> <template>
<view class="u-flex det-wrap"> <view class="u-flex det-wrap">
<view class="search">
<u-search
:clearabled="true"
:action-style="searchStyle"
bg-color="#fff"
v-model="keyword"
@custom="searchParts"
@search="searchParts"
></u-search>
</view>
<view class="content" v-if="lists.length > 0"> <view class="content" v-if="lists.length > 0">
<scroll-view style="height: 100%;" scroll-y="true"> <scroll-view style="height: 100%;" scroll-y="true">
<select-parts <select-parts
v-for="(item, index) in lists" v-for="(item, index) in lists"
:key="index" :key="index"
:info="item" :info="item"
:show-checked="true" :show-checked="true"
...@@ -23,7 +34,7 @@ ...@@ -23,7 +34,7 @@
</view> </view>
<view class="bar" v-if="lists.length > 0"> <view class="bar" v-if="lists.length > 0">
<submit-bar <submit-bar
:partNum="partNum" :partNum="partNum"
:num="num" :num="num"
:btnStatus="partNum > 0" :btnStatus="partNum > 0"
...@@ -35,50 +46,72 @@ ...@@ -35,50 +46,72 @@
@cancel="cancel" @cancel="cancel"
/> />
</view> </view>
</view> </view>
</template> </template>
<script> <script>
import selectParts from "@/components/select-parts/index" import selectParts from '@/components/select-parts/index'
import submitBar from "@/components/submit-bar/index" import submitBar from '@/components/submit-bar/index'
export default { export default {
components: { components: {
selectParts, selectParts,
submitBar submitBar,
},
data() {
return {
keyword: '',
lists: [],
workOrderId: null,
}
},
computed: {
// 配件数
partNum() {
return this.lists.reduce(
(counter, { checked }) => (checked ? (counter += 1) : counter),
0
)
}, },
data() { // 总数
return { num() {
lists: [], return this.lists.reduce(
workOrderId: null, (counter, { checked, quantity }) =>
} checked ? (counter += quantity) : counter,
0
)
}, },
computed: { // 全选状态
// 配件数 allChecked() {
partNum() { const count = this.lists.reduce(
return this.lists.reduce((counter, { checked }) => checked ? counter += 1 : counter, 0) (counter, { checked }) => (!checked ? (counter += 1) : counter),
}, 0
// 总数 )
num() { return count === 0 || false
return this.lists.reduce((counter, { checked, quantity }) => checked ? counter += quantity : counter, 0)
},
// 全选状态
allChecked() {
const count = this.lists.reduce((counter, { checked }) => !checked ? counter += 1 : counter, 0)
return count === 0 || false
}
}, },
onLoad(e) { searchStyle() {
this.workOrderId = parseInt(e.workOrderId) return {
this.categoryId = parseInt(e.categoryId) color: '#2272FF',
this.brandId = parseInt(e.brandId) }
this.getReserve()
}, },
methods: { },
getReserve() { onLoad(e) {
this.$u.api.getMyReserve({'categoryId': this.categoryId, 'brandId': this.brandId}).then(res => { this.workOrderId = parseInt(e.workOrderId)
this.categoryId = parseInt(e.categoryId)
this.brandId = parseInt(e.brandId)
this.getReserve()
},
methods: {
getReserve() {
this.$u.api
.getMyReserve({
categoryId: this.categoryId,
brandId: this.brandId,
keyword: this.keyword,
})
.then((res) => {
if (res.code === 200) { if (res.code === 200) {
const data = res.data || [] const data = res.data || []
this.lists = data.map(v => { this.lists = data.map((v) => {
v.min = 1 v.min = 1
v.max = v.stock v.max = v.stock
v.checked = false v.checked = false
...@@ -89,75 +122,83 @@ ...@@ -89,75 +122,83 @@
}) })
} }
}) })
}, },
numChange(val, index) { // 搜索配件
this.$set(this.lists[index], 'quantity', val) searchParts(val) {
}, this.keyword = val
selectChange(val, index) { this.lists = []
this.$set(this.lists[index], 'checked', val) this.getReserve()
}, },
allSelect(value) { numChange(val, index) {
const count = this.lists.filter(v => !v.checked).length this.$set(this.lists[index], 'quantity', val)
this.lists.forEach(v => { },
this.$set(v, 'checked', count !== 0 || false) selectChange(val, index) {
}) this.$set(this.lists[index], 'checked', val)
}, },
submit() { allSelect(value) {
const lists = this.lists.filter(v => v.checked).map(v => { const count = this.lists.filter((v) => !v.checked).length
this.lists.forEach((v) => {
this.$set(v, 'checked', count !== 0 || false)
})
},
submit() {
const lists = this.lists
.filter((v) => v.checked)
.map((v) => {
return { return {
name: v.name, name: v.name,
part_id: v.skuId, part_id: v.skuId,
quantity: v.quantity, quantity: v.quantity,
max: v.max, max: v.max,
cost: v.cost || 0 cost: v.cost || 0,
} }
}) })
let pages = getCurrentPages(); let pages = getCurrentPages()
let prevPage = pages[pages.length - 2]; //上一个页面 let prevPage = pages[pages.length - 2] //上一个页面
prevPage.$vm.$refs['fileChildParts'][0].valChange(lists) prevPage.$vm.$refs['fileChildParts'][0].valChange(lists)
this.$u.route({ type: 'back' }) this.$u.route({ type: 'back' })
}, },
cancel() { cancel() {
let pages = getCurrentPages(); let pages = getCurrentPages()
let prevPage = pages[pages.length - 2]; //上一个页面 let prevPage = pages[pages.length - 2] //上一个页面
prevPage.$vm.$refs['fileChildParts'][0].valChange() prevPage.$vm.$refs['fileChildParts'][0].valChange()
this.$u.route({ type: 'back' }) this.$u.route({ type: 'back' })
}, },
qnFile(src) { qnFile(src) {
return process.uniEnv.qn_base_url + src return process.uniEnv.qn_base_url + src
} },
} },
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.det-wrap { .det-wrap {
flex-flow: column; flex-flow: column;
height: 100vh; height: 100vh;
.search { .search {
width: 100%; width: 100%;
padding: 30rpx; padding: 30rpx;
} }
.content { .content {
background: #fff; background: #fff;
border-radius: 30rpx 30rpx 0 0; border-radius: 30rpx 30rpx 0 0;
padding: 10rpx 10rpx 0 10rpx; padding: 10rpx 10rpx 0 10rpx;
width: 100%; width: 100%;
flex: 1; flex: 1;
overflow-y: auto; overflow-y: auto;
} }
.bar { .bar {
width: 100%; width: 100%;
border-top: 1px solid #F4F5F7; border-top: 1px solid #f4f5f7;
padding: 0 20rpx; padding: 0 20rpx;
background: #fff; background: #fff;
} }
.empty { .empty {
flex: 1; flex: 1;
justify-content: center; justify-content: center;
font-size: 26rpx; font-size: 26rpx;
color: #aaa; color: #aaa;
}
} }
}
</style> </style>
<template> <template>
<view class="u-flex content"> <view class="u-flex content">
<view class="categary" v-if="type === '2'"> <view class="categary">
<view class="u-flex u-col-center"> <view class="u-flex u-col-center">
<view <view
:class="['txt', {'active': classifyId === item.id }]" :class="['txt', {'active': classifyId === item.id }]"
...@@ -192,11 +192,11 @@ export default { ...@@ -192,11 +192,11 @@ export default {
onLoad(e) { onLoad(e) {
getApp().trackPage('选择配件页') getApp().trackPage('选择配件页')
if (e) { if (e) {
if (e.type == 1) { if (e.type == 1) { // 从订单进入
this.categoryId = e.categaryId || '' this.categoryId = e.categaryId || ''
this.type = e.type this.type = e.type
this.getBrandList(e.brandId) this.getClassify()
} else if (e.type == 2) { } else if (e.type == 2) { // 从物料库进入
this.type = e.type this.type = e.type
this.getCategaryList() this.getCategaryList()
} }
...@@ -402,6 +402,8 @@ export default { ...@@ -402,6 +402,8 @@ export default {
'pages/order/document-tag' + 'pages/order/document-tag' +
'?categoryId=' + '?categoryId=' +
this.categoryId + this.categoryId +
'&classifyId=' +
this.classifyId +
'&selectedId=' + '&selectedId=' +
this.brandId, this.brandId,
}) })
......
<template>
<view class="u-flex address-wrap">
<w-navbar title="收货地址"></w-navbar>
<view class="lists">
<view class="body" v-for="(item, index) in lists" :key="item.id">
<w-address @editSite="toEditSite(item)" @selectSite="selectSite(item)" @setDefault="setDefault(item, index)" @remove="remove(item)" :info="item" :is-default="item.enable === 1" :showRemove="true" />
</view>
</view>
<view class="addSite" @tap="toAddSite">
<view class="add">
新建收货地址
</view>
</view>
</view>
</template>
<script>
const app = getApp();
export default {
data() {
return {
background: {
backgroundColor: 'none'
},
lists: []
};
},
computed: {
editPen() {
return process.uniEnv.qn_base_url + 'icon/edit-pen.png'
},
submitBtn() {
return {
color: '#FFFFFF',
backgroundColor: '#2272FF'
}
}
},
onLoad(options) {
getApp().trackPage('我的收获地址页')
},
onShow() {
if(this.$u.test.isEmpty(this.vuex_token)) {
this.$u.route({url: 'pages/login/index'})
}
this.getData();
},
methods: {
getData() {
this.getMineSite()
},
getMineSite() {
this.$u.api.getMyAddress().then((res) => {
const data = res.data
if (data.length > 0) {
this.lists = data.map(v => {
let region = []
if(v.provinceName && v.cityName && v.districtName) {
region = [v.provinceName, v.cityName, v.districtName]
}
v.region = region
return v
})
}
})
},
toAddSite() {
this.$u.route({
url: 'pages/mine/address/addSite',
params: {
type: 'select'
}
})
},
setDefault(val) {
this.$u.api.setDefaultAddress({id: val.id}).then((res) => {
if (res.code === 200) {
this.lists.forEach(v => {
this.$set(v, 'enable', v.id === val.id ? 1 : 0)
})
this.getMineSite()
let pages = getCurrentPages()
let prevPage = pages[pages.length - 2]
prevPage.$vm.loadAddress()
}
})
},
remove(val) {
uni.showModal({
title: '温馨提示',
content: '确定要删除该收货地址?',
success: (res) => {
if (res.confirm) {
uni.showLoading({
title: '加载中',
})
this.$u.api.deleteMyAddress({id: val.id}).then((res) => {
uni.hideLoading()
if (res.code === 200) {
this.getMineSite()
} else {
uni.showToast({
icon: "none",
title: res.message,
})
}
})
}
}
})
},
selectSite(val) {
let pages = getCurrentPages();
let prevPage = pages[pages.length - 2]; //上一个页面
let address = val.region.join("") + val.address
let site = {
name: val.name,
mobile: val.mobile,
address: address,
region: val.region,
id: val.id
}
prevPage.$vm.updateSite(site)
this.$u.route({
type: 'back'
})
},
toEditSite(val){
const region = val.region.join('-')
this.$u.route({
url: 'pages/mine/address/addSite',
params: {
type: 'select',
region: region,
name: val.name,
mobile: val.mobile,
address: val.address,
id: val.id
}
})
}
}
};
</script>
<style lang="scss" scoped>
.address-wrap {
background-color: #F4F5F7;
flex-direction:column;
height: 100vh;
.lists {
width: 100%;
flex: 1;
overflow-y:auto;
}
}
.body {
padding: 30rpx;
margin: 30rpx;
border-radius: 12rpx;
background-color: #FFFFFF;
}
.addSite {
display: flex;
justify-content: space-around;
width: 600rpx;
height: 100rpx;
line-height: 100rpx;
margin: 50rpx 0;
background-color: #2272FF;
border-radius: 60rpx;
font-size: 30rpx;
.add{
display: flex;
align-items: center;
color: #ffffff;
.icon{
margin-right: 10rpx;
}
}
}
</style>
...@@ -68,7 +68,7 @@ export default { ...@@ -68,7 +68,7 @@ export default {
remark: '', remark: '',
curType: 0, curType: 0,
addressInfo: { addressInfo: {
name: '', mobile: '', address: '', region: [] id: '', name: '', mobile: '', address: '', region: []
}, },
}; };
}, },
...@@ -106,6 +106,7 @@ export default { ...@@ -106,6 +106,7 @@ export default {
loadAddress() { loadAddress() {
this.$u.api.getDefaultAddress().then((res) => { this.$u.api.getDefaultAddress().then((res) => {
if(res.code == 200 && res.data) { if(res.code == 200 && res.data) {
this.addressInfo.id = res.data.id
this.addressInfo.name = res.data.name this.addressInfo.name = res.data.name
this.addressInfo.mobile = res.data.mobile this.addressInfo.mobile = res.data.mobile
this.addressInfo.address = res.data.address this.addressInfo.address = res.data.address
...@@ -136,6 +137,7 @@ export default { ...@@ -136,6 +137,7 @@ export default {
url: "pages/mine/address/addSite", url: "pages/mine/address/addSite",
params: { params: {
type: 'select', type: 'select',
id: this.addressInfo.id,
name: this.addressInfo.name, name: this.addressInfo.name,
mobile: this.addressInfo.mobile, mobile: this.addressInfo.mobile,
address: this.addressInfo.address, address: this.addressInfo.address,
...@@ -145,10 +147,7 @@ export default { ...@@ -145,10 +147,7 @@ export default {
}, },
toAddress() { toAddress() {
this.$u.route({ this.$u.route({
url: "pages/mine/address/index", url: "pages/parts/address"
params: {
type: 'parts'
}
}) })
}, },
updateSite(site) { updateSite(site) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment