chenkun 4 months ago
parent
commit
0314476525
21 changed files with 1410 additions and 778 deletions
  1. +2
    -2
      api/api.js
  2. +3
    -1
      components/base/tabbar.vue
  3. +125
    -123
      components/user/productList.vue
  4. +2
    -1
      locale/en.json
  5. +2
    -1
      locale/zh-Hans.json
  6. +6
    -0
      pages.json
  7. +0
    -1
      pages/index/center2.vue
  8. +1
    -2
      pages/index/clearanceService.vue
  9. +0
    -6
      pages/index/index.vue
  10. +388
    -0
      pages_order/auth/customsClearApply.vue
  11. +34
    -14
      pages_order/auth/registerShop.vue
  12. +213
    -0
      pages_order/center/addressListManage.vue
  13. +21
    -3
      pages_order/center/helpFeedback.vue
  14. +130
    -159
      pages_order/center/systemSet.vue
  15. +234
    -235
      pages_order/components/address/addressList.vue
  16. +215
    -212
      pages_order/components/address/redactAddress.vue
  17. +21
    -12
      pages_order/components/order/orderList.vue
  18. +4
    -2
      pages_order/order/pendingOrder.vue
  19. +1
    -0
      pages_order/static/order/3.svg
  20. +7
    -3
      pages_order/tradingPlatform/confirmOrder.vue
  21. +1
    -1
      store/store.js

+ 2
- 2
api/api.js View File

@ -88,14 +88,14 @@ const config = {
url: '/product/noShow',
method: 'GET',
},
// 产品报价分页列表
// 现货/期货列表
productList: {
url: '/product/productList',
method: 'GET',
},
// 交易平台挂单列表
productlist: {
url: '/product/productList',
url: '/product/productlist',
method: 'GET',
},
// ========================用户地址===============================


+ 3
- 1
components/base/tabbar.vue View File

@ -6,8 +6,10 @@
:class="{item : true, active : select == index}"
v-for="(item, index) in list"
:key="index"
v-if="!item.isNotShop || !userShop"
@click="toPath(item, index)">
<!--v-if="!item.isNotShop || !userShop"-->
<view class="icon">
<image :src="select == index ?
item.selectedIconPath :


+ 125
- 123
components/user/productList.vue View File

@ -1,143 +1,145 @@
<template>
<view class="list">
<view class="item" v-for="(item, index) in list" @click="immediatePurchase(item)" :key="index">
<image class="image" :src="item.pic || 'https://img95.699pic.com/photo/50058/1378.jpg_wh860.jpg'" mode=""></image>
<view class="info">
<view class="title">
{{ $t('other.aluminumProducts') }}
</view>
<view class="price">
<text>{{ item.price }}</text>
{{ $t('components.unitPrice2') }}
</view>
<!--<view class="favorable">-->
<!-- <view class="t">-->
<!-- 限时优惠-->
<!-- </view>-->
<!-- <view class="p">-->
<!-- 48-->
<!-- </view>-->
<!--</view>-->
<view class="num">
最多批发*快速下单
</view>
</view>
<view class="btn">
<view class="change">
{{ $t('components.immediatePurchase') }}
</view>
</view>
</view>
</view>
<view class="list">
<view class="item"
v-for="(item, index) in productList"
@click="immediatePurchase(item)"
:key="index">
<image
class="image"
:src="item.pic" mode=""></image>
<view class="info">
<view class="title">
{{ $t('other.aluminumProducts') }}
</view>
<view class="price">
<text>{{item.price}}</text>
{{ $t('components.unitPrice2') }}
</view>
<view class="num">
最多批发*快速下单
</view>
</view>
<view class="btn">
<view class="change">
{{ $t('components.immediatePurchase') }}
</view>
</view>
</view>
</view>
</template>
<script>
export default {
name: "productList",
props : ['list'],
data() {
return {};
},
methods: {
//
immediatePurchase(item) {
console.log("====")
var itemStr = encodeURIComponent(JSON.stringify(item));
uni.navigateTo({
url: `/pages_order/tradingPlatform/nowOrder?params=${itemStr}`,
});
}
},
}
export default {
name: "productList",
props: {
productList: {
type: Array,
default: false
},
},
data() {
return {};
},
methods: {
//
immediatePurchase(item) {
console.log("====")
var itemStr = encodeURIComponent(JSON.stringify(item));
uni.navigateTo({
url: `/pages_order/tradingPlatform/nowOrder?params=${itemStr}`,
});
}
},
}
</script>
<style scoped lang="scss">
.list {
display: flex;
justify-content: center;
flex-wrap: wrap;
.list {
display: flex;
justify-content: center;
flex-wrap: wrap;
.item {
position: relative;
width: 300rpx;
padding: 20rpx;
background-color: #fff;
border-radius: 20rpx;
margin-top: 20rpx;
.item {
position: relative;
width: 300rpx;
padding: 20rpx;
background-color: #fff;
border-radius: 20rpx;
margin-top: 20rpx;
&:nth-child(odd) {
margin-right: 20rpx;
}
&:nth-child(odd) {
margin-right: 20rpx;
}
.image {
width: 300rpx;
height: 250rpx;
border-radius: 20rpx;
}
.image {
width: 300rpx;
height: 250rpx;
border-radius: 20rpx;
}
.info {
font-size: 26rpx;
.info {
font-size: 26rpx;
.title {
font-size: 30rpx;
color: #000;
}
.title {
font-size: 30rpx;
color: #000;
}
.price {
color: #D03F25;
margin-top: 6rpx;
.price {
color: #D03F25;
margin-top: 6rpx;
text {
font-size: 34rpx;
font-weight: 900;
}
}
text {
font-size: 34rpx;
font-weight: 900;
}
}
.favorable {
display: flex;
background-image: url(/static/image/product/favorable.png);
background-size: 100% 100%;
width: fit-content;
padding: 5rpx 10rpx;
font-size: 18rpx;
margin-top: 6rpx;
.favorable {
display: flex;
background-image: url(/static/image/product/favorable.png);
background-size: 100% 100%;
width: fit-content;
padding: 5rpx 10rpx;
font-size: 18rpx;
margin-top: 6rpx;
.p {
color: #fff;
margin-left: 10rpx;
}
}
.p {
color: #fff;
margin-left: 10rpx;
}
}
.num {
margin-top: 6rpx;
font-size: 22rpx;
color: #888;
}
}
.num {
margin-top: 6rpx;
font-size: 22rpx;
color: #888;
}
}
.btn {
position: absolute;
right: 0rpx;
bottom: 0rpx;
padding: 10rpx;
border-radius: 50%;
//background-color: $uni-color;
.btn {
position: absolute;
right: 0rpx;
bottom: 0rpx;
padding: 10rpx;
border-radius: 50%;
//background-color: $uni-color;
.change {
display: flex;
align-items: center;
justify-content: center;
border-radius: 40rpx;
color: white;
font-size: 22rpx;
//margin: 20rpx 10rpx 0 0;
padding: 10rpx 10rpx;
background: #2b467a;
border: 1px solid #757986;
//margin-top: 20rpx;
//border-radius: 40rpx;
}
}
}
}
.change {
display: flex;
align-items: center;
justify-content: center;
border-radius: 40rpx;
color: white;
font-size: 22rpx;
//margin: 20rpx 10rpx 0 0;
padding: 10rpx 10rpx;
background: #2b467a;
border: 1px solid #757986;
//margin-top: 20rpx;
//border-radius: 40rpx;
}
}
}
}
</style>

+ 2
- 1
locale/en.json View File

@ -35,7 +35,8 @@
"languageSwitch": "Language Switch",
"clearCache": "Clear Cache",
"switchIdentity": "Switch Identity",
"cancelOrder": "Cancel Order"
"cancelOrder": "Cancel Order",
"addressList": "Address list"
},
"components": {
"cancel": "Cancel",


+ 2
- 1
locale/zh-Hans.json View File

@ -37,7 +37,8 @@
"languageSwitch": "语言切换",
"clearCache": "清理缓存",
"switchIdentity": "切换身份",
"cancelOrder": "取消订单"
"cancelOrder": "取消订单",
"addressList": "地址列表"
},
"components": {
"cancel": "取消",


+ 6
- 0
pages.json View File

@ -48,6 +48,9 @@
{
"path": "auth/registerShop"
},
{
"path": "auth/customsClearApply"
},
{
"path": "tradingPlatform/nowOrder"
},
@ -78,6 +81,9 @@
{
"path": "mine/purse"
},
{
"path": "center/addressListManage"
},
{
"path": "mine/runningWater"
},


+ 0
- 1
pages/index/center2.vue View File

@ -63,7 +63,6 @@ export default {
data() {
return {
supplierList: [
// this.$t('pages.index.index.companyProfile')
{text: `${this.$t('pageTitle.myOrders')}`,englishText:'myOrders', value: ">", imgUrl: '/static/image/center/14.svg', toPathUrl: '/pages_order/order/pendingOrder'},
{text: `${this.$t('components.contactCustomerService')}`, englishText:'contactCustomerService',value: ">", imgUrl: '/static/image/center/13.svg'},
{text: `${this.$t('components.systemSettings')}`,englishText:'systemSettings', value: ">", imgUrl: '/static/image/center/12.svg', toPathUrl: '/pages_order/center/systemSet'},


+ 1
- 2
pages/index/clearanceService.vue View File

@ -40,8 +40,7 @@ export default {
methods: {
applyClearanceService(){
uni.navigateTo({
// titleList: ['', '',''],
url: `/pages_order/auth/registerShop?identity=2`
url: `/pages_order/auth/customsClearApply`
})
},
},


+ 0
- 6
pages/index/index.vue View File

@ -4,12 +4,6 @@
<!--顶部栏-->
<topbar showRight="1"></topbar>
<!-- 语言切换 -->
<!--<view style="padding: 20rpx;"-->
<!-- @click="$refs.changeLanguage.open()">-->
<!-- {{ $t('pages.index.index.language') }}-->
<!--</view>-->
<!--<changeLanguage ref="changeLanguage"/>-->
<!-- 供应商 -->
<view class="supplier" v-if="userShop">


+ 388
- 0
pages_order/auth/customsClearApply.vue View File

@ -0,0 +1,388 @@
<template>
<view class="registerShop">
<navbar :title="$t('other.domesticCustomsClearanceApplication')" leftClick @leftClick="$utils.navigateBack"/>
<view class="frame">
<!--基本信息-->
<view class="basicInfo">
<!--用户名-->
<view class="item">
<view>{{ $t('components.username') }}</view>
<view>
<input v-model="form.userName" :placeholder="$t('components.enterUserName')" clearable></input>
</view>
</view>
<!--密码-->
<view class="item">
<view>{{ $t('components.password') }}</view>
<view>
<input v-model="form.password" password clearable :placeholder="$t('components.enterYourPassword')"
clearable></input>
</view>
</view>
<!--公司名称-->
<view class="item">
<view>{{ $t('other.companyName') }}</view>
<view>
<input v-model="form.companyName" type="number" :placeholder="$t('other.enterCompanyName')"
clearable></input>
</view>
</view>
<!--税收编码-->
<view class="item">
<view>{{ $t('other.taxCode') }}</view>
<view>
<input v-model="form.taxCode" :placeholder="$t('other.enterTaxCode')" clearable></input>
</view>
</view>
<!--公司地址-->
<view class="item">
<view>{{ $t('other.companyAddress') }}</view>
<view>
<input v-model="form.address" :placeholder="$t('other.enterCompanyAddress')" clearable></input>
</view>
</view>
<!--dian-->
<view class="item">
<view>{{ $t('components.lxPhone') }}</view>
<view>
<input v-model="form.phone" :placeholder="$t('components.plePhoneNumber')" clearable></input>
</view>
</view>
<view class="item">
<view>{{ $t('other.companyAccount') }}</view>
<view>
<input v-model="form.bankAccount" :placeholder="$t('other.enterCompanyAccount')" clearable></input>
</view>
</view>
<view class="item">
<view>{{ $t('components.bankName') }}</view>
<view>
<input v-model="form.bankNama" :placeholder="$t('components.enterBankName')" clearable></input>
</view>
</view>
</view>
<!--证件信息-->
<view class="certificateInfo">
<!--营业执照-->
<view class="certificateInfoItem">
<view class="title">
<span
style="width: 10rpx;height: 40rpx;background-color: #f78142;border-radius: 10rpx;overflow: hidden;"></span>
<span>{{ $t('components.businessLicense') }}</span>
</view>
<view class="upload">
<uv-upload
:fileList="yyzzfileList"
:maxCount="4"
multiple
width="150rpx"
height="150rpx"
@delete="(file) => deleteImage(0, file)"
@afterRead="(file) => afterRead(0, file)"
:previewFullImage="true"></uv-upload>
</view>
</view>
<!--基本户信息-->
<view class="certificateInfoItem">
<view class="title">
<span
style="width: 10rpx;height: 40rpx;background-color: #f78142;border-radius: 10rpx;overflow: hidden;"></span>
<span>{{ $t('components.basicAccountInfo') }}</span>
</view>
<view class="upload">
<uv-upload
:fileList="jbhxxfileList"
:maxCount="4"
multiple
width="150rpx"
height="150rpx"
@delete="(file) => deleteImage(1, file)"
@afterRead="(file) => afterRead(1, file)"
:previewFullImage="true"></uv-upload>
</view>
</view>
<!--收款银行-->
<view class="certificateInfoItem">
<view class="title">
<span
style="width: 10rpx;height: 40rpx;background-color: #f78142;border-radius: 10rpx;overflow: hidden;"></span>
<span>{{ $t('components.receivingBank') }}</span>
</view>
<view class="upload">
<uv-upload
:fileList="skyhfileList"
:maxCount="4"
multiple
width="150rpx"
height="150rpx"
@delete="(file) => deleteImage(2, file)"
@afterRead="(file) => afterRead(2, file)"
:previewFullImage="true"></uv-upload>
</view>
</view>
</view>
</view>
<view class="bottom">
<view class="btns">
<span @click="applyReview" class="sqsh">
{{ $t('components.submitReview') }}
</span>
<span @click="contactUs" class="lxwm">
{{ $t('components.contactUs') }}
</span>
</view>
<view class="others">
<span @click="applyReview" class="zcxz">
{{ $t('components.registrationNotice') }}
</span>
<span @click="contactUs" class="kjhtyl">
{{ $t('other.frameworkContractPreview') }}
</span>
</view>
</view>
</view>
</template>
<script>
export default {
// onLoad(option) {
// this.titleIndex = option.identity
// },
data() {
return {
// titleIndex: 0,
// titleList: [
// //
// this.$t('other.buyerRegistration'),
// this.$t('other.supplierRegistration'),
// this.$t('other.domesticCustomsClearanceApplication')
// ],
form: {
"address": "",
"bankAccount": "",
"bankInfo": "",
"bankNama": "",
"basicAccount": "",
"businessLicense": "",
"companyName": "",
"id": "",
"password": "",
"phone": "",
"role": 0,
"taxCode": "",
"userName": ""
},
yyzzfileList: [],
jbhxxfileList: [],
skyhfileList: [],
}
},
methods: {
//
applyReview() {
this.form.basicAccount = this.jbhxxfileList.join(",") //
this.form.bankInfo = this.skyhfileList.join(",") //
this.form.businessLicense =this.yyzzfileList.join(",") //
this.$api('addCustoms',this.form, res => {
if (res.code == 200) {
uni.redirectTo({
url: '/pages/index/clearanceService'
})
}
})
},
//
contactUs() {
},
//
afterRead(type, e) {
let self = this
e.file.forEach(file => {
self.$Oss.ossUpload(file.url).then(url => {
if (type == 0) {
self.yyzzfileList.push({url})
} else if (type == 1) {
self.jbhxxfileList.push({url})
} else if (type == 2) {
self.skyhfileList.push({url})
}
})
})
},
//
deleteImage(type, e) {
console.log(e, type, "===========")
if (type == 0) {
this.yyzzfileList.splice(e.index, 1)
} else if (type == 1) {
this.jbhxxfileList.splice(e.index, 1)
} else if (type == 2) {
this.skyhfileList.splice(e.index, 1)
}
},
}
}
</script>
<style scoped lang="scss">
.registerShop {
.frame {
height: 79vh;
overflow: auto;
.basicInfo {
display: flex;
flex-direction: column;
gap: 5rpx;
background-color: #FFF;
margin-top: 20rpx;
padding: 20rpx;
.item {
display: flex;
align-items: center;
background-color: #FFF;
height: 80rpx;
// margin: 10rpx 0 0 0;
padding: 10rpx 0 0 20rpx;
> view:nth-of-type(1) {
width: 30%;
// font-weight: 700;
}
> view:nth-of-type(2) {
width: 70%;
border-radius: 10rpx;
overflow: hidden;
input {
background-color: #f5f5f5;
font-size: 28rpx;
padding: 16rpx 8rpx 16rpx 15rpx;
}
}
}
}
.certificateInfo {
display: flex;
flex-direction: column;
gap: 20rpx;
background-color: #FFF;
margin-top: 20rpx;
padding: 20rpx;
.certificateInfoItem {
.title {
display: flex;
// padding-top: 40rpx;
font-size: 30rpx;
font-weight: 700;
padding: 0 0 0 20rpx;
> span:nth-of-type(1) {
margin: 4rpx 0 0 8rpx;
background-color: #FFF;
}
> span:nth-of-type(2) {
margin: 0 0 0 8rpx;
background-color: #FFF;
}
}
.upload {
margin: 5rpx 0 0 40rpx;
}
}
}
}
.bottom {
position: fixed;
bottom: 10rpx;
left: 0;
right: 0;
background-color: #FFF;
.btns {
display: flex;
justify-content: center;
align-items: center;
gap: 40rpx;
.sqsh {
display: flex;
align-items: center;
justify-content: center;
width: 40%;
height: 70rpx;
border-radius: 40rpx;
color: white;
font-size: 28rpx;
margin: 20rpx 10rpx 0 0;
background: #293143;
//margin-top: 20rpx;
border-radius: 40rpx;
}
.lxwm {
display: flex;
align-items: center;
justify-content: center;
width: 40%;
height: 70rpx;
border-radius: 40rpx;
color: #000000;
font-size: 28rpx;
margin: 20rpx 10rpx 0 0;
background: #f2f2f2;
//margin-top: 20rpx;
border-radius: 40rpx;
}
}
.others {
display: flex;
justify-content: center;
align-items: center;
gap: 200rpx;
color: #707070;
font-size: 24rpx;
.zcxz {
text-decoration: underline;
}
.kjhtyl {
text-decoration: underline;
}
}
}
}
</style>

+ 34
- 14
pages_order/auth/registerShop.vue View File

@ -6,41 +6,46 @@
<view class="frame">
<!--基本信息-->
<view class="basicInfo">
<!--用户名-->
<view class="item">
<view>{{ $t('components.username')}}</view>
<view>
<input v-model="form.name" :placeholder="$t('components.enterUserName')" clearable></input>
<input v-model="form.userName" :placeholder="$t('components.enterUserName')" clearable></input>
</view>
</view>
<!--密码-->
<view class="item">
<view>{{ $t('components.password')}}</view>
<view>
<input v-model="form.userName" password clearable :placeholder="$t('components.enterYourPassword')" clearable></input>
<input v-model="form.password" password clearable :placeholder="$t('components.enterYourPassword')" clearable></input>
</view>
</view>
<!--公司名称-->
<view class="item">
<view>{{ $t('other.companyName')}}</view>
<view>
<input v-model="form.phone" type="number" :placeholder="$t('other.enterCompanyName')" clearable></input>
<input v-model="form.companyName" type="number" :placeholder="$t('other.enterCompanyName')" clearable></input>
</view>
</view>
<!--税收编码-->
<view class="item">
<view>{{ $t('other.taxCode')}}</view>
<view>
<input v-model="form.address" :placeholder="$t('other.enterTaxCode')" clearable></input>
<input v-model="form.taxCode" :placeholder="$t('other.enterTaxCode')" clearable></input>
</view>
</view>
<!--公司地址-->
<view class="item">
<view>{{ $t('other.companyAddress')}}</view>
<view>
<input v-model="form.address" :placeholder="$t('other.enterCompanyAddress')" clearable></input>
</view>
</view>
<!--dian-->
<view class="item">
<view>{{ $t('components.lxPhone')}}</view>
<view>
<input v-model="form.address" :placeholder="$t('components.plePhoneNumber')" clearable></input>
<input v-model="form.phone" :placeholder="$t('components.plePhoneNumber')" clearable></input>
</view>
</view>
<view class="item">
@ -154,18 +159,25 @@ export default {
return {
titleIndex: 0,
titleList: [
//
this.$t('other.buyerRegistration'),
this.$t('other.supplierRegistration'),
this.$t('other.domesticCustomsClearanceApplication')
],
form: {
userName: '',
name: '',
phone: '',
currentRegion: '',
address: '',
latitude: '',
longitude: '',
"address": "",
"bankAccount": "",
"bankInfo": "",
"bankNama": "",
"basicAccount": "",
"businessLicense": "",
"companyName": "",
"id": "",
"password": "",
"phone": "",
"role": 0,
"taxCode": "",
"userName": ""
},
yyzzfileList: [],
jbhxxfileList: [],
@ -175,7 +187,15 @@ export default {
methods: {
//
applyReview() {
this.$api('loginLogout', res => {
if (res.code == 200) {
uni.removeStorageSync('token')
this.$store.state.userInfo = {}
uni.redirectTo({
url: '/pages/index/index'
})
}
})
},
//
contactUs() {


+ 213
- 0
pages_order/center/addressListManage.vue View File

@ -0,0 +1,213 @@
<template>
<view class="address">
<navbar title="地址管理" leftClick @leftClick="leftClick" />
<view class="address-list">
<addressList
controls
ref="addressList"
@deleteAddress="deleteAddress"
@editAddress="editAddress"
@editDefault="editDefault"/>
</view>
<redactAddress
ref="addressPopup"
:addressDetail="addressDetail"
@saveOrUpdate="saveOrUpdate"
:title="title"></redactAddress>
<view class="add-btn">
<view @click="addBtn" class="btn">
新增地址
</view>
</view>
</view>
</template>
<script>
import redactAddress from '../components/address/redactAddress.vue'
import addressList from '../components/address/addressList.vue'
export default {
components: {
redactAddress,
addressList
},
data() {
return {
title: '新增地址',
type : '',
}
},
onLoad(args) {
this.type = args.type
if(this.type == 'back'){
this.addBtn()
}
},
mounted() {
this.getAddressList()
},
methods: {
//
getAddressList() {
this.$refs.addressList.getAddressList()
},
//
editAddress(address) {
this.$refs.addressPopup.open({...address})
},
//
leftClick() {
uni.navigateBack(-1)
},
//
saveOrUpdate(addressDetail) {
let data = {
name: addressDetail.name,
phone: addressDetail.phone,
// address: addressDetail.address,
addressDetail: addressDetail.addressDetail,
// defaultId: addressDetail.defaultId || '0',
latitude: addressDetail.latitude,
longitude: addressDetail.longitude
}
if (addressDetail.id) {
data.id = addressDetail.id
}
this.$api(data.id ? 'editAddress' : 'addAddress', data, res => {
if (res.code == 200) {
this.$refs.addressPopup.close()
this.getAddressList()
if(this.type == 'back'){
uni.navigateBack(-1)
}
uni.showToast({
title: '操作成功',
icon: 'none'
})
}
})
},
//
editDefault(id) {
this.$api('addressDefault', {
id: id,
}, res => {
if (res.code == 200) {
this.$refs.addressPopup.close()
uni.showToast({
title: '操作成功',
icon: 'none'
})
this.getAddressList()
}
})
},
//
deleteAddress(id) {
let self = this
uni.showModal({
title: '删除地址',
content: '确认删除此地址?删除后数据不可恢复',
success(e) {
if(e.confirm){
self.$api('addressDelete', {
id
}, res => {
if (res.code == 200) {
uni.showToast({
title: '删除成功',
icon: 'none'
})
self.getAddressList()
}
})
}
}
})
},
//
addBtn() {
this.title = '新增地址'
this.$refs.addressPopup.open({ //
name: '',
phone: '',
address: '',
addressDetail: '',
defaultId: '',
latitude: '',
longitude: ''
})
},
}
}
</script>
<style lang="scss" scoped>
.address {
width: 750rpx;
margin: 0rpx auto;
background: #F5F5F5;
box-sizing: border-box;
min-height: 100vh;
.address-list {
padding: 40rpx 20rpx 120rpx 20rpx;
}
.add-btn {
position: fixed;
display: flex;
justify-content: center;
align-items: center;
left: 0;
bottom: 0;
width: 750rpx;
height: 100rpx;
background: white;
.btn {
display: flex;
align-items: center;
justify-content: center;
width: 85%;
height: 80rpx;
border-radius: 40rpx;
color: white;
text-align: center;
font-size: 28rpx;
background: $uni-color;
}
}
}
@media all and (min-width: 961px) {
.add-btn {
left: 50% !important;
transform: translateX(-50%);
}
}
//
:deep(.uni-system-choose-location) {
z-index: 99999 !important;
}
</style>

+ 21
- 3
pages_order/center/helpFeedback.vue View File

@ -1,7 +1,7 @@
<template>
<view class="page">
<navbar :title="$t('pageTitle.helpFeedback')" leftClick @leftClick="$utils.navigateBack"/>
<navbar :title="$t('components.helpFeedback')" leftClick @leftClick="$utils.navigateBack"/>
<view class="frame">
<!--帮助与反馈-->
@ -36,7 +36,7 @@
<view class="item">
<view>{{ $t('components.contactName') }}</view>
<view>
<input :placeholder="$t('components.enterContactName')" clearable></input>
<input :placeholder="$t('components.enterContactName')" clearable></input>
</view>
</view>
<view class="item">
@ -68,13 +68,31 @@ export default {
data() {
return {
fileList: [],
form: {
"content": "",
"proofImg": "",
"userName": "",
"userPhone": ""
}
}
},
methods: {
//
submitFeedback() {
this.form.proofImg = this.fileList.join(",")
this.$api('addSuggest', this.form, res => {
if (res.code === 200) {
uni.showToast({
title: '',
icon: 'success',
duration: 2000
})
setTimeout(() => {
uni.navigateBack(-1)
}, 1000)
}
})
},
deleteImage(e) {


+ 130
- 159
pages_order/center/systemSet.vue View File

@ -1,167 +1,138 @@
<template>
<view class="page">
<navbar :title="$t('pageTitle.systemSettings')" leftClick @leftClick="$utils.navigateBack" />
<view class="frame">
<view class="content" v-for="(item, index) in list" :key="index">
<view class="title">{{ item.title }}</view>
<view class="item" v-for="(item2, index) in item.itemList" :key="index" @click="tapItem(item2, index)">
<view class="key">
<view class="img">
<img :src="item2.leftIcon" style="width: 100%; height: 100%;" />
</view>
<view class="text">
{{ item2.text }}
</view>
</view>
<view class="value">
{{ item.rightIcon }}
</view>
</view>
</view>
</view>
<!-- 语言切换 -->
<!--<view style="padding: 20rpx;"-->
<!-- @click="$refs.changeLanguage.open()">-->
<!-- {{ $t('pages.index.index.language') }}-->
<!--</view>-->
<changeLanguage ref="changeLanguage" />
</view>
<view class="page">
<navbar :title="$t('pageTitle.systemSettings')" leftClick @leftClick="$utils.navigateBack"/>
<view class="frame">
<view class="content" v-for="(item, index) in list" :key="index">
<view class="title">{{ item.title }}</view>
<view class="item" v-for="(item2, index) in item.itemList" :key="index" @click="tapItem(item2, index)">
<view class="key">
<view class="img">
<img :src="item2.leftIcon" style="width: 100%; height: 100%;"/>
</view>
<view class="text">
{{ item2.text }}
</view>
</view>
<view class="value">
{{ item.rightIcon }}
</view>
</view>
</view>
</view>
<!-- 语言切换 -->
<!--<view style="padding: 20rpx;"-->
<!-- @click="$refs.changeLanguage.open()">-->
<!-- {{ $t('pages.index.index.language') }}-->
<!--</view>-->
<changeLanguage ref="changeLanguage"/>
</view>
</template>
<script>
import topbar from "@/components/base/topbar.vue";
import tabber from "@/components/base/tabbar.vue";
import ChangeLanguage from "@/components/base/changeLanguage.vue";
export default {
name: "systemSet",
components: {
ChangeLanguage,
tabber,
topbar
},
data() {
return {
list: [{
title: `${this.$t('pageTitle.accountSetting')}`,
itemList: [
// text: `${this.$t('pageTitle.switchAccount')}`
{
leftIcon: "../static/center/1.svg",
text: `${this.$t('pageTitle.switchAccount')}`,
rightIcon: ">"
},
{
leftIcon: "../static/center/2.svg",
text: `${this.$t('pageTitle.forgotPasswordPage')}`,
rightIcon: ">"
},
{
leftIcon: "../static/center/2.svg",
text: this.$t('pageTitle.logout'),
rightIcon: ">",
type : 'logout',
},
]
},
{
title: `${this.$t('pageTitle.systemSetting')}`,
itemList: [{
leftIcon: "../static/center/1.svg",
text: `${this.$t('pageTitle.languageSwitch')}`,
rightIcon: ">"
},
{
leftIcon: "../static/center/2.svg",
text: `${this.$t('pageTitle.versionUpdate')}`,
rightIcon: ">"
},
{
leftIcon: "../static/center/2.svg",
text: this.$t('pageTitle.clearCache'),
rightIcon: ">"
},
]
},
{
title: `${this.$t('pageTitle.identitySetting')}`,
itemList: [{
leftIcon: "../static/center/2.svg",
text: this.$t('pageTitle.switchIdentity'),
rightIcon: ">"
}, ]
}
],
}
},
methods: {
tapItem(item, index) {
if (item.text === this.$t('pageTitle.languageSwitch')) {
this.$refs.changeLanguage.open();
}else if(item.type){
this[item.type]()
}
},
logout(){
this.$store.commit('logout')
},
},
}
import topbar from "@/components/base/topbar.vue";
import tabber from "@/components/base/tabbar.vue";
import ChangeLanguage from "@/components/base/changeLanguage.vue";
import {navigateTo} from "@/utils/utils";
export default {
name: "systemSet",
components: {ChangeLanguage, tabber, topbar},
data() {
return {
list: [
{
title: `${this.$t('pageTitle.accountSetting')}`,
itemList: [
// text: `${this.$t('pageTitle.switchAccount')}`
{leftIcon: "../static/center/1.svg", text: `${this.$t('pageTitle.switchAccount')}`, rightIcon: ">"},
{leftIcon: "../static/center/2.svg", text: `${this.$t('pageTitle.forgotPasswordPage')}`, rightIcon: ">"},
{leftIcon: "../static/center/2.svg", text: this.$t('pageTitle.logout'), rightIcon: ">"},
{leftIcon: "../static/center/2.svg", text: this.$t('pageTitle.addressList'), rightIcon: ">",toUrl:'/pages_order/center/addressListManage'},
]
},
{
title: `${this.$t('pageTitle.systemSetting')}`,
itemList: [
{leftIcon: "../static/center/1.svg", text: `${this.$t('pageTitle.languageSwitch')}`, rightIcon: ">"},
{leftIcon: "../static/center/2.svg", text: `${this.$t('pageTitle.versionUpdate')}`, rightIcon: ">"},
{leftIcon: "../static/center/2.svg", text: this.$t('pageTitle.clearCache'), rightIcon: ">"},
]
},
{
title: `${this.$t('pageTitle.identitySetting')}`,
itemList: [
{leftIcon: "../static/center/2.svg", text: this.$t('pageTitle.switchIdentity'), rightIcon: ">"},
]
}
],
}
},
methods: {
tapItem(item, index) {
if (item.text === this.$t('pageTitle.languageSwitch')) {
this.$refs.changeLanguage.open();
}
uni.navigateTo({
url: item.toUrl
})
}
},
}
</script>
<style scoped lang="scss">
.page {
background-color: #FFF;
height: 100vh;
.frame {
padding: 40rpx;
.content {
margin-bottom: 40rpx;
.title {
font-size: 30rpx;
color: #b0b0b0;
}
.item {
display: flex;
justify-content: space-between;
align-items: center;
padding: 20rpx 40rpx;
.key {
display: flex;
justify-content: center;
align-items: center;
color: #333333;
font-size: 32rpx;
.img {
width: 40rpx;
height: 40rpx;
}
.text {
margin-left: 20rpx;
}
}
.value {
color: #999999;
font-size: 36rpx;
}
}
}
}
}
.page {
background-color: #FFF;
height: 100vh;
.frame {
padding: 40rpx;
.content {
margin-bottom: 40rpx;
.title {
font-size: 30rpx;
color: #b0b0b0;
}
.item {
display: flex;
justify-content: space-between;
align-items: center;
padding: 20rpx 40rpx;
.key {
display: flex;
justify-content: center;
align-items: center;
color: #333333;
font-size: 32rpx;
.img {
width: 40rpx;
height: 40rpx;
}
.text {
margin-left: 20rpx;
}
}
.value {
color: #999999;
font-size: 36rpx;
}
}
}
}
}
</style>

+ 234
- 235
pages_order/components/address/addressList.vue View File

@ -1,245 +1,244 @@
<template>
<scroll-view
scroll-y="true"
:style="{height: height}"
@scrolltolower="moreAddress">
<uv-radio-group v-model="selectAddress"
@change="editDefault"
v-if="addressList.length > 0">
<view v-for="item in addressList" :key="item.id" class="address-item">
<view class="address-item-top"
@click="select(item)">
<view class="img-box">
<image src="../../static/address/icon.png" mode="aspectFill"></image>
</view>
<view class="address-info">
<view class="user-info">
<text class="user-name">{{ item.name }}</text>
<text class="user-phone">{{ item.phone }}</text>
<text v-if="item.defaultFlag == 1" class="is-default">默认</text>
</view>
<view class="address-detail">
{{ item.address + " " + item.addressDetail }}
</view>
</view>
</view>
<view class="controls"
v-if="controls">
<view class="default-checkbox">
<uv-radio
:name="item.id"
label-disabled
size="30rpx"
icon-size="30rpx">
默认地址
</uv-radio>
</view>
<view class="edit-btn">
<uv-icon name="edit-pen"></uv-icon>
<text @click="editAddress(item)" class="control-title">编辑</text>
</view>
<view class="del-btn">
<uv-icon name="trash"></uv-icon>
<text class="control-title" @click="deleteAddress(item.id)">删除</text>
</view>
</view>
</view>
</uv-radio-group>
<view
style="padding: 100rpx 0;"
v-else>
<uv-empty
mode="history"
textSize="28rpx"
iconSize="100rpx"/>
</view>
</scroll-view>
<scroll-view
scroll-y="true"
:style="{height: height}"
@scrolltolower="moreAddress">
<uv-radio-group v-model="selectAddress"
@change="editDefault"
v-if="addressList.length > 0">
<view v-for="item in addressList" :key="item.id" class="address-item">
<view class="address-item-top"
@click="select(item)">
<view class="img-box">
<image src="/static/image/address/icon.png" mode="aspectFill"></image>
</view>
<view class="address-info">
<view class="user-info">
<text class="user-name">{{ item.name }}</text>
<text class="user-phone">{{ item.phone }}</text>
<text v-if="item.id == selectAddress" class="is-default">默认</text>
</view>
<view class="address-detail">
{{ item.address + " " + item.addressDetail }}
</view>
</view>
</view>
<view class="controls"
v-if="controls">
<view class="default-checkbox">
<uv-radio
:name="item.id"
label-disabled
size="30rpx"
icon-size="30rpx">
默认地址
</uv-radio>
</view>
<view class="edit-btn">
<uv-icon name="edit-pen"></uv-icon>
<text @click="editAddress(item)" class="control-title">编辑</text>
</view>
<view class="del-btn">
<uv-icon name="trash"></uv-icon>
<text class="control-title" @click="deleteAddress(item.id)">删除</text>
</view>
</view>
</view>
</uv-radio-group>
<view
style="padding: 100rpx 0;"
v-else>
<uv-empty
mode="history"
textSize="28rpx"
iconSize="100rpx"/>
</view>
</scroll-view>
</template>
<script>
export default {
props : {
controls : {
default : false,
type : Boolean,
},
height : {
default : 'calc(90vh - 180rpx)'
}
},
data() {
return {
selectAddress : 0,
queryParams: {
pageNo: 1,
pageSize: 10,
},
addressList: [],
total : 0,
}
},
methods: {
//
getAddressList() {
return new Promise((success, fail) => {
this.$api('addressPage', this.queryParams, res => {
if (res.code == 200) {
this.addressList = res.result.records || [];
this.total = res.result.total || 0;
res.result.records.forEach(n => { //
console.log(n);
if (n.defaultFlag == 1) {
this.selectAddress = n.id
}
})
success(res.result)
}
})
})
},
//
moreAddress(){
if(this.queryParams.pageSize > this.total){
return
}
this.queryParams.pageSize += 10
this.getAddressList()
},
//
deleteAddress(e){
this.$emit('deleteAddress', e)
},
//
editAddress(e){
this.$emit('editAddress', e)
},
//
editDefault(e){
this.$emit('editDefault', e)
},
//
select(e){
this.$emit('select', e)
},
}
}
export default {
props : {
controls : {
default : false,
type : Boolean,
},
height : {
default : 'calc(90vh - 180rpx)'
}
},
data() {
return {
selectAddress : 0,
queryParams: {
pageNo: 1,
pageSize: 10,
},
addressList: [],
total : 0,
}
},
methods: {
//
getAddressList() {
return new Promise((success, fail) => {
this.$api('addressList', this.queryParams, res => {
if (res.code == 200) {
this.addressList = res.result.records || [];
this.total = res.result.total || 0;
this.addressList.forEach(n => { //
if (n.defaultFlag == 1) {
this.selectAddress = n.id
}
})
success(res.result)
}
})
})
},
//
moreAddress(){
if(this.queryParams.pageSize > this.total){
return
}
this.queryParams.pageSize += 10
this.getAddressList()
},
//
deleteAddress(e){
this.$emit('deleteAddress', e)
},
//
editAddress(e){
this.$emit('editAddress', e)
},
//
editDefault(e){
this.$emit('editDefault', e)
},
//
select(e){
this.$emit('select', e)
},
}
}
</script>
<style scoped lang="scss">
.address-item {
background: white;
border-radius: 20rpx;
overflow: hidden;
margin-bottom: 20rpx;
padding: 15rpx 15rpx 0rpx 15rpx;
width: 680rpx;
.address-item-top {
border-bottom: 1px dashed #D3D1D1;
display: flex;
align-items: center;
padding: 0rpx 0rpx 15rpx 0rpx;
.img-box {
width: 120rpx;
height: 120rpx;
image {
width: 75%;
height: 75%;
display: block;
margin: 12.5% auto;
}
}
.address-info {
width: calc(100% - 120rpx);
height: 100%;
display: flex;
flex-direction: column;
justify-content: space-between;
.user-info {
display: flex;
align-items: center;
text {
display: block;
line-height: 40rpx;
margin-right: 20rpx;
}
.user-name,
.user-phone {
font-size: 30rpx;
}
.is-default {
display: flex;
align-items: center;
justify-content: center;
background: #FEB773;
color: white;
width: 80rpx;
height: 35rpx;
border-radius: 20rpx;
font-size: 22rpx;
}
}
.address-detail {
color: #4a4a4a;
font-size: 26rpx;
overflow: hidden;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
text-overflow: ellipsis;
}
}
}
.controls {
display: flex;
align-items: center;
justify-content: space-between;
align-items: center;
font-size: 26rpx;
padding: 15rpx 15rpx 25rpx 15rpx;
.default-checkbox {
display: flex;
text {
margin-left: 8rpx;
}
}
.control-title {
height: 30rpx;
line-height: 30rpx;
color: #666666;
}
view {
display: flex;
align-items: center;
}
image {
width: 23rpx;
height: 23rpx;
vertical-align: middle;
margin-right: 8rpx;
}
}
background: white;
border-radius: 20rpx;
overflow: hidden;
margin-bottom: 20rpx;
padding: 15rpx 15rpx 0rpx 15rpx;
width: 680rpx;
.address-item-top {
border-bottom: 1px dashed #D3D1D1;
display: flex;
align-items: center;
padding: 0rpx 0rpx 15rpx 0rpx;
.img-box {
width: 120rpx;
height: 120rpx;
image {
width: 75%;
height: 75%;
display: block;
margin: 12.5% auto;
}
}
.address-info {
width: calc(100% - 120rpx);
height: 100%;
display: flex;
flex-direction: column;
justify-content: space-between;
.user-info {
display: flex;
align-items: center;
text {
display: block;
line-height: 40rpx;
margin-right: 20rpx;
}
.user-name,
.user-phone {
font-size: 30rpx;
}
.is-default {
display: flex;
align-items: center;
justify-content: center;
background: #FEB773;
color: white;
width: 80rpx;
height: 35rpx;
border-radius: 20rpx;
font-size: 22rpx;
}
}
.address-detail {
color: #4a4a4a;
font-size: 26rpx;
overflow: hidden;
display: -webkit-box;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
text-overflow: ellipsis;
}
}
}
.controls {
display: flex;
align-items: center;
justify-content: space-between;
align-items: center;
font-size: 26rpx;
padding: 15rpx 15rpx 25rpx 15rpx;
.default-checkbox {
display: flex;
text {
margin-left: 8rpx;
}
}
.control-title {
height: 30rpx;
line-height: 30rpx;
color: #666666;
}
view {
display: flex;
align-items: center;
}
image {
width: 23rpx;
height: 23rpx;
vertical-align: middle;
margin-right: 8rpx;
}
}
}
</style>

+ 215
- 212
pages_order/components/address/redactAddress.vue View File

@ -1,220 +1,223 @@
<template>
<uv-popup round="40rpx" ref="addressPopup" :customStyle="{ height: 'auto' , width : '100%' , padding : '20rpx'}">
<view class="redact-address">
<view class="redact-address-title">{{title}}</view>
<uv-form label-width="210rpx" :model="addressDetail" ref="form">
<uv-form-item label="联系人" prop="name">
<uv-input v-model="addressDetail.name" placeholder="请输入联系人姓名" border="none">
</uv-input>
</uv-form-item>
<uv-form-item label="手机号" prop="phone">
<uv-input v-model="addressDetail.phone" placeholder="请输入手机号" border="none">
</uv-input>
</uv-form-item>
<uv-form-item label="所在地区" prop="address">
<uv-input v-model="addressDetail.address" placeholder="请选择所在地区" border="none">
</uv-input>
<template #right>
<view style="padding-right: 40rpx;color: #FBAB32;" @click.stop="selectAddr">
<image src="../../static/address/selectIcon.png" mode="aspectFit"></image>定位
</view>
</template>
</uv-form-item>
<uv-form-item label="详细地址" prop="addressDetail">
<uv-input v-model="addressDetail.addressDetail" placeholder="请输入详细地址" border="none">
</uv-input>
</uv-form-item>
</uv-form>
<view @click="onSubmit" class="save">{{ addressDetail.id ? '修改地址' : '新增地址'}}</view>
</view>
</uv-popup>
<uv-popup round="40rpx" ref="addressPopup" :customStyle="{ height: 'auto' , width : '100%' , padding : '20rpx'}">
<view class="redact-address">
<view class="redact-address-title">{{ title }}</view>
<uv-form label-width="210rpx" :model="addressDetail" ref="form">
<uv-form-item label="联系人" prop="name">
<uv-input v-model="addressDetail.name" placeholder="请输入联系人姓名" border="none">
</uv-input>
</uv-form-item>
<uv-form-item label="手机号" prop="phone">
<uv-input v-model="addressDetail.phone" placeholder="请输入手机号" border="none">
</uv-input>
</uv-form-item>
<uv-form-item label="所在地区" prop="address">
<uv-input v-model="addressDetail.address" placeholder="请选择所在地区" border="none">
</uv-input>
<template #right>
<view style="padding-right: 40rpx;color: #FBAB32;" @click.stop="selectAddr">
<image src="../../static/address/selectIcon.png" mode="aspectFit"></image>
定位
</view>
</template>
</uv-form-item>
<uv-form-item label="详细地址" prop="addressDetail">
<uv-input v-model="addressDetail.addressDetail" placeholder="请输入详细地址" border="none">
</uv-input>
</uv-form-item>
</uv-form>
<view @click="onSubmit" class="save">{{ addressDetail.id ? '修改地址' : '新增地址' }}</view>
</view>
</uv-popup>
</template>
<script>
import Position from '@/utils/position.js'
export default {
data() {
return {
addressDetail: {}
}
},
props: {
title: {
type: String,
default: '新增地址'
}
},
methods: {
open(addressDetail) {
this.addressDetail = addressDetail
this.$refs.addressPopup.open('bottom')
},
close(){
this.$refs.addressPopup.close()
},
//
onSubmit() {
let isOk = this.parameterVerification(this.addressDetail)
if (isOk && !isOk.auth) {
return uni.showToast({
icon: 'none',
title: isOk.title,
'zIndex': 10000
})
}
this.$emit('saveOrUpdate', this.addressDetail)
},
//
parameterVerification(addressDetaila) {
let {
name,
phone,
address,
addressDetail
} = addressDetaila
if (name.trim() == '') {
return {
title: '请填写联系人',
auth: false
}
} else if (phone.trim() == '') {
return {
title: '请填写手机号',
auth: false
}
} else if (address.trim() == '') {
return {
title: '请填写所在地区',
auth: false
}
} else if (addressDetail.trim() == '') {
return {
title: '请填写详细地址',
auth: false
}
} else if (phone.trim() != '') {
if (!this.$utils.verificationPhone(phone)) {
return {
title: '手机号格式不合法',
auth: false
}
}
}
return {
title: '验证通过',
auth: true
}
},
//
selectAddr() {
Position.getLocation(res => {
Position.selectAddress(res.longitude, res.latitude, success => {
this.setAddress(success)
})
})
},
//
setAddress(res) {
//
this.addressDetail.latitude = res.latitude
this.addressDetail.longitude = res.longitude
if (!res.address && res.name) { //
return this.addressDetail.address = res.name
}
if (res.address || res.name) {
return this.addressDetail.address = res.address + res.name
}
this.addressDetail.address = '' //
},
}
}
import Position from '@/utils/position.js'
export default {
data() {
return {
addressDetail: {}
}
},
props: {
title: {
type: String,
default: '新增地址'
}
},
methods: {
open(addressDetail) {
this.addressDetail = addressDetail
this.$refs.addressPopup.open('bottom')
},
close() {
this.$refs.addressPopup.close()
},
//
onSubmit() {
let isOk = this.parameterVerification(this.addressDetail)
if (isOk && !isOk.auth) {
return uni.showToast({
icon: 'none',
title: isOk.title,
'zIndex': 10000
})
}
this.addressDetail.addressDetail = this.addressDetail.address + this.addressDetail.addressDetail
this.$emit('saveOrUpdate', this.addressDetail)
},
//
parameterVerification(addressDetaila) {
let {
name,
phone,
address,
addressDetail
} = addressDetaila
if (name.trim() == '') {
return {
title: '请填写联系人',
auth: false
}
} else if (phone.trim() == '') {
return {
title: '请填写手机号',
auth: false
}
} else if (address.trim() == '') {
return {
title: '请填写所在地区',
auth: false
}
} else if (addressDetail.trim() == '') {
return {
title: '请填写详细地址',
auth: false
}
} else if (phone.trim() != '') {
if (!this.$utils.verificationPhone(phone)) {
return {
title: '手机号格式不合法',
auth: false
}
}
}
return {
title: '验证通过',
auth: true
}
},
//
selectAddr() {
Position.getLocation(res => {
Position.selectAddress(res.longitude, res.latitude, success => {
this.setAddress(success)
})
})
},
//
setAddress(res) {
//
this.addressDetail.latitude = res.latitude
this.addressDetail.longitude = res.longitude
if (!res.address && res.name) { //
return this.addressDetail.address = res.name
}
if (res.address || res.name) {
return this.addressDetail.address = res.address + res.name
}
this.addressDetail.address = '' //
},
}
}
</script>
<style lang="scss" scoped>
.redact-address {
box-sizing: border-box;
.redact-address-title {
height: 80rpx;
line-height: 80rpx;
font-size: 30rpx;
color: #333333;
font-weight: 600;
}
.save {
display: flex;
align-items: center;
justify-content: center;
width: 90%;
height: 80rpx;
border-radius: 40rpx;
color: white;
font-size: 28rpx;
margin: 0rpx auto;
background: $uni-color;
margin-top: 150rpx;
}
image {
width: 25rpx;
height: 25rpx;
}
//
.uv-form {
padding: 30rpx 0rpx;
}
&::v-deep .uv-cell {
padding: 0rpx 0rpx;
font-size: 26rpx;
&::after {
border: none !important;
}
.uv-field__label {
display: flex;
align-items: center;
height: 80rpx;
}
.uv-field__control,
.uv-field__right-icon {
height: 80rpx;
font-size: 26rpx;
border-bottom: 2rpx solid #cbc8c8;
}
.uv-field__right-icon {
display: flex;
align-items: center;
height: 78rpx;
color: #5FCC9F;
}
.uv-cell__value {
height: 120rpx;
}
}
&::v-deep .uv-field__error-message {
color: #5AC796;
font-size: 20rpx;
margin-top: 10rpx;
}
}
.redact-address {
box-sizing: border-box;
.redact-address-title {
height: 80rpx;
line-height: 80rpx;
font-size: 30rpx;
color: #333333;
font-weight: 600;
}
.save {
display: flex;
align-items: center;
justify-content: center;
width: 90%;
height: 80rpx;
border-radius: 40rpx;
color: white;
font-size: 28rpx;
margin: 0rpx auto;
background: $uni-color;
margin-top: 150rpx;
}
image {
width: 25rpx;
height: 25rpx;
}
//
.uv-form {
padding: 30rpx 0rpx;
}
&::v-deep .uv-cell {
padding: 0rpx 0rpx;
font-size: 26rpx;
&::after {
border: none !important;
}
.uv-field__label {
display: flex;
align-items: center;
height: 80rpx;
}
.uv-field__control,
.uv-field__right-icon {
height: 80rpx;
font-size: 26rpx;
border-bottom: 2rpx solid #cbc8c8;
}
.uv-field__right-icon {
display: flex;
align-items: center;
height: 78rpx;
color: #5FCC9F;
}
.uv-cell__value {
height: 120rpx;
}
}
&::v-deep .uv-field__error-message {
color: #5AC796;
font-size: 20rpx;
margin-top: 10rpx;
}
}
</style>

+ 21
- 12
pages_order/components/order/orderList.vue View File

@ -1,38 +1,41 @@
<template>
<view class="page">
<view class="item" v-for="(item, index) in 10" :key="index">
<view class="item" v-for="(item, index) in orderList" :key="index">
<view class="top">
<view class="service">
<text>{{ $t('other.aluminumProducts') }}</text>
</view>
<view class="status">
<text> {{ $t('components.auditPassed') }}</text>
<text> {{ item.auditStatus_dictText }}</text>
</view>
</view>
<view class="zhuti">
<view class="left">
<img src="../../static/order/qwe.png" style="width: 100%;height: 100%;"/>
<img :src="item.pic" style="width: 100%;height: 100%;"/>
</view>
<view class="right" @click="lookDetail(item,index)">
<view class="text-hidden-1">
{{ $t('components.customerName') }} 张三 18888888888
{{ $t('components.customerName') }} {{ item.userName }} {{item.phone}}
</view>
<view class="text-hidden-1">
{{ $t('components.productSpe') }}铝锭Al>96%
{{ $t('components.productSpe') }}{{ item.userName }}
</view>
<view class="text-hidden-1">
{{ $t('other.pickupAddress') }}北京市海淀区西二旗北路10号
{{ $t('other.pickupAddress') }}{{ item.address }}
</view>
<view class="text-hidden-1">
{{ $t('other.aluminumProducts') }}2021-08-01
{{ $t('other.pickupDate') }}{{ item.createTime }}
</view>
</view>
<view class="tip">
<img src="../../static/order/1.svg" style="width: 100%;height: 100%;"/>
<!--审核状态 0审核中 1 审核通过 2审核未通过-->
<img v-if="item.auditStatus==0" src="../../static/order/1.svg" style="width: 100%;height: 100%;"/>
<img v-if="item.auditStatus==1" src="../../static/order/1.svg" style="width: 100%;height: 100%;"/>
<img v-if="item.auditStatus==2" src="../../static/order/3.svg" style="width: 100%;height: 100%;"/>
</view>
</view>
@ -50,7 +53,10 @@
export default {
name: "orderList",
props: {
list: [],
orderList: {
type: Array,
default: false
},
showBackOrder: {
type: Boolean,
default: false
@ -63,9 +69,12 @@ export default {
//
lookDetail(item, index) {
uni.navigateTo({
url: `/pages_order/order/orderDetail2?id=1`
})
//
if (this.showBackOrder){
uni.navigateTo({
url: `/pages_order/order/orderDetail2?id`+item.id
})
}
},
//


+ 4
- 2
pages_order/order/pendingOrder.vue View File

@ -1,4 +1,5 @@
<template>
<!--我的挂单-->
<view class="page">
<navbar :title="$t('pageTitle.myOrders')" leftClick @leftClick="$utils.navigateBack"/>
@ -16,18 +17,19 @@
import orderList from "../components/order/orderList.vue";
import topbar from "@/components/base/topbar.vue";
import tabber from "@/components/base/tabbar.vue";
import mixinsList from '@/mixins/list.js'
export default {
name: "pendingOrder",
components: {tabber, topbar, orderList},
mixins : [mixinsList],
data() {
return {
list: [],
mixinsListApi : 'getMyProductlist',
}
},
methods: {
},
}
</script>


+ 1
- 0
pages_order/static/order/3.svg
File diff suppressed because it is too large
View File


+ 7
- 3
pages_order/tradingPlatform/confirmOrder.vue View File

@ -74,15 +74,19 @@ export default {
a: "",
b: "",
c: "",
},
}
},
methods: {
//
confirmOrder() {
this.$api('addProductOrder',this.form, res => {
if (res.code == 200) {
uni.redirectTo({
url: '/pages/index/clearanceService'
})
}
})
},
//
closeOrder() {


+ 1
- 1
store/store.js View File

@ -9,7 +9,7 @@ import api from '@/api/api.js'
const store = new Vuex.Store({
state: {
configList: [], //配置列表
shop : true,
shop : false,
userInfo : {}, //用户信息
shopData : {},
buy : {},


Loading…
Cancel
Save