Browse Source

报价详情界面 修改报价界面

devlop
buffeyu 4 years ago
parent
commit
4be553f819
5 changed files with 1067 additions and 517 deletions
  1. 12
      pages.json
  2. 452
      pages/my-offer/index.vue
  3. 536
      pages/quotation-details/index.vue
  4. 14
      pages/submit-quotation/index.vue
  5. 570
      pages/trade/quotationList.vue

12
pages.json

@ -116,7 +116,17 @@
"enablePullDownRefresh": false "enablePullDownRefresh": false
} }
} }
],
,{
"path" : "pages/quotation-details/index",
"style" :
{
"navigationBarTitleText": "报价详情",
"navigationStyle": "custom",
"enablePullDownRefresh": false
}
}
],
"globalStyle": { "globalStyle": {
"navigationBarTextStyle": "black", "navigationBarTextStyle": "black",
"navigationBarTitleText": "uni-app", "navigationBarTitleText": "uni-app",

452
pages/my-offer/index.vue

@ -1,224 +1,228 @@
<template>
<view class="my-offer">
<uni-nav-bar left-icon="back" @clickLeft="back" statusBar fixed title="我的报价"></uni-nav-bar>
<scroll-list style="touch-action: none" ref="orderRef" :option="orderOption" @load="orderUp" @refresh="orderDown">
<view v-for="(items,index) in orderData" :key="index">
<view class="list-border list-title-line">
<text class="list-title">广州民族印刷有限公司</text>
<text class="list-title-Subtitle">{{ items.orderStatus }}</text>
</view>
<view class="list-border list-info-line" v-for="(item, index) in items.orderItemList" :key="index">
<view class="list-info" :class="index===items.orderItemList.length?'list-border':''">
<view class="">
<!-- <image class="list-image" :src="item.productImg" mode=""></image> -->
<image class="list-image" src="../../static/logo.png" mode="">
</view>
<view class="list-info-contant">
<view class="list-info-title">{{ item.brandName }}{{ item.categoryName }}</view>
<view class="list-info-text">
{{ item.categoryName }}/{{ item.brandName }}/{{ item.gramWeight }}g/{{ item.length }}*{{ item.width }}/{{ item.pieceQuantity }}
</view>
</view>
</view>
</view>
<view class="list-border list-bottom-contant">
<view>
<text class="list-time">三分钟前</text>
<text class="list-title-Subtitle">¥{{ items.totalOfferPrice }}</text>
</view>
</view>
<uGap></uGap>
</view>
</scroll-list>
</view>
</template>
<script>
import { back, go2 } from '@/utils/hook.js'
import uGap from '@/components/u-gap/u-gap.vue'
import scrollList from '@/components/scroll-list/scroll-list.vue'
import { getEnterpriseList, gettradingHallList } from '@/apis/trade'
export default {
// props: {
// queryOrderData: {
// type: Object,
// default: () => {}
// }
// },
components: {
uGap
},
data() {
return {
orderPagination: {
pageNum: 0, //
pageSize: 10
},
orderData: [],
controlCurrent:0,
controlItems: ['全部', '待确认', '待发货', '已完成'],
orderOption: {
size: 10,
auto: true,
emptyText: '暂无报价信息~',
background: '#F7F8FA',
fontSize: '40rpx'
},
orderParams: {
cooperationState: 0,
latitude: 23.12616,
longitude: 113.38466,
km: 5
}
}
},
watch: {
// queryOrderData(value) {
// console.log('value', value)
// },
orderParams: {
handler(val) {
this.getTradingQurty()
},
deep: true
}
},
onLoad(option) {
if (option) {
option.latitude && (this.params.latitude = option.latitude)
option.longitude && (this.params.longitude = option.longitude)
option.km && (this.params.km = option.km)
}
this.getTradingQurty()
},
methods: {
back,
//
getTradingQurty() {
return new Promise((resolve, reject) => {
gettradingHallList({ ...this.orderParams, ...this.orderPagination })
.then(res => {
if (res) {
if (this.orderPagination.pageNum == 1) {
this.orderData = res.records
} else {
this.orderData = this.orderData.concat(res.records)
}
resolve({ list: this.orderData, total: res.total })
}
})
.catch(err => {
reject(err)
})
})
},
//
orderUp(page) {
this.orderPagination.pageNum++
this.getTradingQurty()
.then(({ list, total }) => {
this.$refs.orderRef.loadSuccess({ list, total })
})
.catch(() => {
this.$refs.orderRef.loadFail()
})
},
//
orderDown() {
this.orderPagination.pageNum = 1
this.getTradingQurty()
.then(({ list, total }) => {
this.$refs.orderRef.refreshSuccess({ list, total })
})
.catch(() => {
this.$refs.orderRef.refreshFail()
})
},
//
onClickItem(value) {
console.log(value)
}
}
}
</script>
<style lang="scss">
.my-offer {
margin-bottom: 0rpx;
.list-border {
// border-top: 1px solid #dddddd;
border-bottom: 2rpx solid #dddddd;
}
.list-title-line {
line-height: 88rpx;
padding-left: 48rpx;
background: #FFFFFF;
}
.list-title {
font-family: PingFangSC-Semibold;
font-size: 30rpx;
color: #000000;
letter-spacing: 0;
font-weight: 600;
}
.list-title-Subtitle {
font-family: PingFangSC-Medium;
font-size: 30rpx;
color: #ff5368;
letter-spacing: 0;
text-align: right;
font-weight: 500;
float: right;
margin-right: 32rpx;
}
.list-info-line {
padding-left: 48rpx;
line-height: 70rpx;
background: #FFFFFF;
}
.list-info-contant {
margin-left: 48rpx;
}
.list-info-title {
font-family: PingFangSC-Medium;
font-size: 30rpx;
color: #333333;
letter-spacing: 0;
text-align: left;
font-weight: 550;
}
.list-info-text {
font-family: PingFangSC-Regular;
font-size: 26rpx;
color: #888888;
letter-spacing: 0;
text-align: left;
line-height: 64rpx;
font-weight: 400;
}
.list-image {
width: 100rpx;
height: 100rpx;
margin-top: 20rpx;
}
.list-info {
display: flex;
}
.list-bottom-contant {
line-height: 70rpx;
padding-left: 48rpx;
width: 750rpx;
height: 80rpx;
background: #FFFFFF;
}
.list-time{
font-family: PingFangSC-Regular;
font-size: 26rpx;
color: #888888;
letter-spacing: 0;
line-height: 64rpx;
font-weight: 400;
}
}
</style>
<template>
<view class="my-offer">
<uni-nav-bar left-icon="back" @clickLeft="back" statusBar fixed title="我的报价"></uni-nav-bar>
<scroll-list style="touch-action: none" ref="orderRef" :option="orderOption" @load="orderUp" @refresh="orderDown">
<view v-for="(items,index) in orderData" :key="index" @click="myPriceInfo(items)">
<view class="list-border list-title-line">
<text class="list-title">广州民族印刷有限公司</text>
<text class="list-title-Subtitle">{{ items.orderStatus }}</text>
</view>
<view class="list-border list-info-line" v-for="(item, index) in items.orderItemList" :key="index">
<view class="list-info" :class="index===items.orderItemList.length?'list-border':''">
<view class="">
<!-- <image class="list-image" :src="item.productImg" mode=""></image> -->
<image class="list-image" src="../../static/logo.png" mode="">
</view>
<view class="list-info-contant">
<view class="list-info-title">{{ item.brandName }}{{ item.categoryName }}</view>
<view class="list-info-text">
{{ item.categoryName }}/{{ item.brandName }}/{{ item.gramWeight }}g/{{ item.length }}*{{ item.width }}/{{item.pieceQuantity }}
</view>
</view>
</view>
</view>
<view class="list-border list-bottom-contant">
<view>
<text class="list-time">三分钟前</text>
<text class="list-title-Subtitle">¥{{ items.totalOfferPrice }}</text>
</view>
</view>
<uGap></uGap>
</view>
</scroll-list>
</view>
</template>
<script>
import { back, go2 } from '@/utils/hook.js'
import uGap from '@/components/u-gap/u-gap.vue'
import scrollList from '@/components/scroll-list/scroll-list.vue'
import { getEnterpriseList, gettradingHallList } from '@/apis/trade'
export default {
// props: {
// queryOrderData: {
// type: Object,
// default: () => {}
// }
// },
components: {
uGap
},
data() {
return {
orderPagination: {
pageNum: 0, //
pageSize: 10
},
orderData: [],
controlCurrent:0,
controlItems: ['全部', '待确认', '待发货', '已完成'],
orderOption: {
size: 10,
auto: true,
emptyText: '暂无报价信息~',
background: '#F7F8FA',
fontSize: '40rpx'
},
orderParams: {
cooperationState: 0,
latitude: 23.12616,
longitude: 113.38466,
km: 5
}
}
},
watch: {
// queryOrderData(value) {
// console.log('value', value)
// },
orderParams: {
handler(val) {
this.getTradingQurty()
},
deep: true
}
},
onLoad(option) {
if (option) {
option.latitude && (this.params.latitude = option.latitude)
option.longitude && (this.params.longitude = option.longitude)
option.km && (this.params.km = option.km)
}
this.getTradingQurty()
},
methods: {
back,
//
getTradingQurty() {
return new Promise((resolve, reject) => {
gettradingHallList({ ...this.orderParams, ...this.orderPagination })
.then(res => {
if (res) {
if (this.orderPagination.pageNum == 1) {
this.orderData = res.records
} else {
this.orderData = this.orderData.concat(res.records)
}
resolve({ list: this.orderData, total: res.total })
}
})
.catch(err => {
reject(err)
})
})
},
//
orderUp(page) {
this.orderPagination.pageNum++
this.getTradingQurty()
.then(({ list, total }) => {
this.$refs.orderRef.loadSuccess({ list, total })
})
.catch(() => {
this.$refs.orderRef.loadFail()
})
},
//
orderDown() {
this.orderPagination.pageNum = 1
this.getTradingQurty()
.then(({ list, total }) => {
this.$refs.orderRef.refreshSuccess({ list, total })
})
.catch(() => {
this.$refs.orderRef.refreshFail()
})
},
//
myPriceInfo(item){
console.log(item)
uni.navigateTo({
url: '/pages/quotation-details/index'
});
}
}
}
</script>
<style lang="scss">
.my-offer {
margin-bottom: 0rpx;
.list-border {
// border-top: 1px solid #dddddd;
border-bottom: 2rpx solid #dddddd;
}
.list-title-line {
line-height: 88rpx;
padding-left: 48rpx;
background: #FFFFFF;
}
.list-title {
font-family: PingFangSC-Semibold;
font-size: 30rpx;
color: #000000;
letter-spacing: 0;
font-weight: 600;
}
.list-title-Subtitle {
font-family: PingFangSC-Medium;
font-size: 30rpx;
color: #ff5368;
letter-spacing: 0;
text-align: right;
font-weight: 500;
float: right;
margin-right: 32rpx;
}
.list-info-line {
padding-left: 48rpx;
line-height: 70rpx;
background: #FFFFFF;
}
.list-info-contant {
margin-left: 48rpx;
}
.list-info-title {
font-family: PingFangSC-Medium;
font-size: 30rpx;
color: #333333;
letter-spacing: 0;
text-align: left;
font-weight: 550;
}
.list-info-text {
font-family: PingFangSC-Regular;
font-size: 26rpx;
color: #888888;
letter-spacing: 0;
text-align: left;
line-height: 64rpx;
font-weight: 400;
}
.list-image {
width: 100rpx;
height: 100rpx;
margin-top: 20rpx;
}
.list-info {
display: flex;
}
.list-bottom-contant {
line-height: 70rpx;
padding-left: 48rpx;
width: 750rpx;
height: 80rpx;
background: #FFFFFF;
}
.list-time{
font-family: PingFangSC-Regular;
font-size: 26rpx;
color: #888888;
letter-spacing: 0;
line-height: 64rpx;
font-weight: 400;
}
}
</style>

536
pages/quotation-details/index.vue

@ -0,0 +1,536 @@
<template>
<view class="quotation-details">
<view>
<uni-nav-bar left-icon="back" @clickLeft="back" statusBar fixed title="">
<view class="submit-title">报价详情</view>
<view slot="left"></view>
<view slot="right" class="edit-price" @click="editPrice()">修改报价</view>
</uni-nav-bar>
</view>
<view class="submit-main">
<view>
<text class="submit-main-title">交货要求</text>
<text class="price-tips">已报价</text>
</view>
<view>
<text class="submit-main-subTitle">询价客户</text>
<text class="submit-main-subContant">东莞市隆兴纸业有限公司</text>
</view>
<view>
<text class="submit-main-subTitle">交货区域</text>
<text class="submit-main-subContant">广东省/广州市/天河区</text>
</view>
<view>
<text class="submit-main-subTitle">交货时间</text>
<text class="submit-main-subContant">2021/12/29 12:30</text>
</view>
</view>
<uGap></uGap>
<view class="submit-contant">
<view class="submit-contant-head"><view class="submit-contant-title">丽品白卡200g787*10925000</view></view>
<view class="submit-contant-body">
<view class="">
<text class="submit-contant-body-title">重量()</text>
<text class="submit-contant-body-subtitle">1.6544</text>
</view>
<view>
<text class="submit-contant-body-title">单价(/)</text>
<text class="submit-contant-body-subtitle">1000</text>
</view>
<view>
<text class="submit-contant-body-title">小计()</text>
<text class="submit-contant-body-subtitle">1.6544</text>
</view>
<view class="submit-contant-body-input">
<uni-easyinput :disabled="true" maxlength="100" class="submit-contant-body-inputClass" v-model="value" placeholder="请输入内容"></uni-easyinput>
</view>
</view>
</view>
<view class="submit-contant-order">
<view class="">
<text class="submit-contant-order-title">其他费用</text>
<text class="submit-contant-order-subtitle">¥ 80.00</text>
</view>
<view class="">
<text class="submit-contant-order-title">合计</text>
<text class="submit-contant-order-money">¥ 13800.32</text>
</view>
</view>
<uGap></uGap>
<view class="submit-contant-time">
<view class="">
<text class="submit-contant-time-title">有效时间</text>
<text class="submit-contant-time-title">24小时</text>
</view>
</view>
<uGap></uGap>
<view class="submit-contant-remark">
<view class="submit-contant-remark-title">
<text>报价备注:</text>
<text>29号5点前能送达</text>
</view>
</view>
<view class="tips"><text>禁止偷克重抵纸换纸否则将被平台严厉处罚包括但不限于账号禁用</text></view>
</view>
</template>
<script>
import { back, go2 } from '@/utils/hook.js'
import qnHeader from '@/components/qn-header/qn-header.vue'
import uGap from '@/components/u-gap/u-gap.vue'
export default {
components: {
qnHeader,
uGap
},
data() {
return {
value: '',
visible: true,
title: 'picker-view',
}
},
methods: {
back,
//
commodityModify(item) {
console.log(111)
this.$refs.popup.open('bottom')
},
//
priceModify() {
this.$refs.popupPrice.open('bottom')
},
//
resetTime() {
this.$refs.popupTime.open('bottom')
},
// change
bindChange(e) {
console.log(e.detail.value)
},
close() {
this.$refs.popup.close()
this.$refs.popupPrice.close()
},
// change
onchange(e) {
console.log(e)
this.pickerValue = e.detail.value
},
//
pickerCancel() {
this.$refs.popupTime.close()
},
//
pickerSure() {
this.$refs.popupTime.close()
},
//
editPrice(){
var params= {
title:"修改报价"
}
go2('submit-quotation', params)
},
}
}
</script>
<style lang="scss">
.picker-view {
width: 750rpx;
height: 600rpx;
margin-top: 20rpx;
}
.item {
height: 50rpx;
align-items: center;
justify-content: center;
text-align: center;
padding-top: 30rpx;
}
.quotation-details {
.submit-title {
width: 100%;
font-family: PingFangSC-Medium;
font-size: 36rpx;
color: #000000;
letter-spacing: 0;
text-align: center;
font-weight: 500;
}
.submit-main {
width: 750rpx;
height: 260rpx;
padding: 24rpx 0rpx 0rpx 32rpx;
line-height: 52rpx;
background: #ffffff;
.submit-main-title {
font-family: PingFangSC-Medium;
font-size: 30rpx;
color: #000000;
letter-spacing: 0;
font-weight: 500;
}
.submit-main-subTitle {
font-family: PingFangSC-Regular;
font-size: 28rpx;
color: #888888;
letter-spacing: 0;
font-weight: 400;
}
.submit-main-subContant {
font-family: PingFangSC-Regular;
font-size: 28rpx;
color: #333333;
letter-spacing: 0;
font-weight: 400;
}
}
.submit-deadline {
width: 750rpx;
height: 75rpx;
background: #f4f9fc;
box-shadow: 0rpx 2rpx 12rpx 0rpx rgba(100, 101, 102, 0.12);
display: flex;
justify-content: center;
.submit-text {
font-family: PingFangSC-Medium;
font-size: 28rpx;
color: rgba(0, 0, 0, 0.5);
letter-spacing: 0;
font-weight: 500;
margin-top: 22rpx;
width: 130rpx;
}
.submit-time {
width: 40rpx;
height: 40rpx;
background: #ee0a24;
border-radius: 8rpx;
margin-top: 20rpx;
text-align: center;
}
.submit-time-text {
font-family: PingFangSC-Semibold;
font-size: 24rpx;
color: #ffffff;
text-align: center;
line-height: 32rpx;
font-weight: 600;
}
.sbumit-colon {
width: 24rpx;
height: 32rpx;
font-family: PingFangSC-Regular;
font-size: 24rpx;
color: #ee0a24;
text-align: center;
line-height: 32rpx;
font-weight: 400;
margin-top: 20rpx;
}
}
.submit-contant {
background-color: #ffffff;
// height: 368rpx;
border-bottom: 2rpx solid #dddddd;
padding-bottom: 20rpx;
.submit-contant-head {
line-height: 90rpx;
width: 750rpx;
height: 90rpx;
border-bottom: 2rpx dashed #d8d8d8;
display: flex;
justify-content: space-between;
}
.submit-contant-title {
font-family: PingFangSC-Semibold;
font-size: 30rpx;
color: rgba(0, 0, 0, 0.75);
letter-spacing: 0;
text-align: left;
font-weight: 600;
padding: 0rpx 0rpx 0rpx 32rpx;
}
.submit-contant-body {
line-height: 68rpx;
padding-left: 32rpx;
.submit-contant-body-title {
font-family: PingFangSC-Regular;
font-size: 28rpx;
color: #555555;
letter-spacing: 0;
font-weight: 400;
}
.submit-contant-body-subtitle {
font-family: PingFangSC-Regular;
font-size: 28rpx;
color: #555555;
letter-spacing: 0;
font-weight: 400;
float: right;
margin-right: 32rpx;
}
.submit-contant-body-input {
margin-right: 32rpx;
}
.submit-contant-body-inputClass {
background-color: #f7f8fa;
}
}
}
.submit-contant-order {
width: 750rpx;
height: 90rpx;
line-height: 90rpx;
background: #ffffff;
display: flex;
padding-left: 32rpx;
padding-right: 32rpx;
justify-content: space-between;
.submit-contant-order-title {
width: 140rpx;
height: 40rpx;
font-family: PingFangSC-Regular;
font-size: 28rpx;
color: rgba(0, 0, 0, 0.5);
font-weight: 400;
}
.submit-contant-order-subtitle {
width: 101rpx;
height: 40rpx;
font-family: PingFangSC-Regular;
font-size: 28rpx;
color: rgba(0, 0, 0, 0.5);
letter-spacing: 0;
text-align: left;
font-weight: 400;
}
.submit-contant-order-money {
width: 172rpx;
height: 42rpx;
font-family: PingFangSC-Semibold;
font-size: 40rpx;
color: #f5222d;
letter-spacing: 0;
line-height: 42rpx;
font-weight: 600;
}
}
.submit-contant-time {
width: 750rpx;
height: 88rpx;
background: #ffffff;
line-height: 88rpx;
display: flex;
padding-left: 32rpx;
padding-right: 32rpx;
justify-content: space-between;
.submit-contant-time-title {
width: 230rpx;
height: 40rpx;
font-size: 28rpx;
color: #000000;
letter-spacing: 0;
font-weight: 400;
}
.submit-contant-time-subtitle {
width: 56rpx;
height: 40rpx;
font-size: 28rpx;
color: #007aff;
letter-spacing: 0;
text-align: right;
font-weight: 500;
cursor: pointer;
}
}
.submit-contant-remark {
width: 750rpx;
height: 88rpx;
background: #ffffff;
.submit-contant-remark-title {
font-family: PingFangSC-Regular;
font-size: 30rpx;
color: #000000;
letter-spacing: 0;
font-weight: 400;
padding: 28rpx 0rpx 0rpx 32rpx;
}
.submit-contant-remark-input {
background: #f7f8fa;
border-radius: 20rpx;
margin: 10rpx 32rpx 32rpx 32rpx;
width: 686rpx;
}
}
.submit-btnBg {
width: 750rpx;
height: 120rx;
background: #ffffff;
box-shadow: 0rpx 2rpx 12rpx 0rpx rgba(100, 101, 102, 0.12);
padding: 12rpx 32rpx 12rpx 32rpx;
}
.submit-btn {
width: 686rpx;
height: 96rpx;
background: #007aff;
border-radius: 10rpx;
}
.submit-image {
width: 24.38rpx;
height: 20.38rpx;
margin-right: 32rpx;
cursor: pointer;
}
.submit-image-price {
width: 24.38rpx;
height: 20.38rpx;
margin-left: 14rpx;
cursor: pointer;
}
.submit-popup {
width: 750rpx;
height: 960rpx;
background: #ffffff;
border-top-right-radius: 2rpx;
border-top-left-radius: 2rpx;
padding: 20rpx 32rpx 0rpx 32rpx;
// line-height: 124rpx;
.submit-popup-input {
background-color: #f5f5f5;
}
.submit-popup-close {
display: flex;
justify-content: space-between;
}
.submit-popup-close-image {
width: 24.38rpx;
height: 20.38rpx;
cursor: pointer;
}
.submit-popup-title {
font-size: 30rpx;
color: rgba(0, 0, 0, 0.85);
letter-spacing: 0;
text-align: left;
font-weight: 400;
}
.submit-popup-specifications {
width: 320rpx;
}
.submit-popup-x {
font-size: 32rpx;
color: rgba(0, 0, 0, 0.85);
font-weight: 400;
}
.submit-line {
border-bottom: 2rpx solid #d8d8d8;
padding-bottom: 32rpx;
height: 194rpx;
line-height: 72rpx;
}
.submit-number-box {
margin-top: 24rpx;
}
.submit-number-text {
font-size: 24rpx;
color: rgba(0, 0, 0, 0.5);
font-weight: 400;
}
.submit-number-line {
line-height: 40rpx;
}
.submit-number-btn {
position: absolute;
bottom: 20rpx;
}
.submit-price {
line-height: 72rpx;
}
.submit-price-total {
display: flex;
justify-content: flex-end;
margin-top: 20rpx;
}
.submit-price-total-text {
font-size: 40rpx;
color: #f5222d;
letter-spacing: 0;
line-height: 42rpx;
font-weight: 600;
}
.submit-price-text {
font-size: 28rpx;
color: rgba(0, 0, 0, 0.85);
text-align: right;
font-weight: 400;
line-height: 40rpx;
}
.submit-price-subTitle {
margin-left: 20rpx;
}
}
.submit-check-time {
background-color: #ffffff;
padding: 28rpx 32rpx 0px 28rpx;
.submit-check-flex {
display: flex;
justify-content: space-between;
}
.submit-check-title {
font-size: 32rpx;
color: #323233;
text-align: center;
line-height: 44rpx;
font-weight: 500;
}
.submit-check-cancel {
font-size: 28rpx;
color: #969799;
line-height: 40rpx;
font-weight: 400;
cursor: pointer;
}
.submit-check-sure {
font-size: 28rpx;
color: #007aff;
line-height: 40rpx;
font-weight: 400;
cursor: pointer;
}
.submit-check-text {
font-size: 36rpx;
color: #323233;
line-height: 48rpx;
font-weight: 500;
}
}
.tips {
font-size: 24rpx;
color: #f5222d;
font-weight: 400;
padding: 32rpx;
line-height: 42rpx;
}
.edit-price{
font-size: 28rpx;
color: #007AFF;
text-align: right;
line-height: 40prx;
font-weight: 500;
}
.price-tips{
font-size: 30rpx;
color: #FF5368;
letter-spacing: 0;
text-align: right;
font-weight: 500;
float: right;
padding-right: 32rpx;
}
}
</style>

14
pages/submit-quotation/index.vue

@ -2,7 +2,7 @@
<view class="submit-quotation"> <view class="submit-quotation">
<view> <view>
<uni-nav-bar left-icon="back" @clickLeft="back" statusBar fixed title=""> <uni-nav-bar left-icon="back" @clickLeft="back" statusBar fixed title="">
<view class="submit-title">提交报价</view>
<view class="submit-title">{{title}}</view>
<view slot="left"></view> <view slot="left"></view>
<view slot="right"></view> <view slot="right"></view>
</uni-nav-bar> </uni-nav-bar>
@ -217,7 +217,7 @@ export default {
vModelValue: '', vModelValue: '',
indicatorStyle: `height: 50px;`, indicatorStyle: `height: 50px;`,
visible: true, visible: true,
title: 'picker-view',
title: '提交报价',
years, years,
year, year,
months, months,
@ -251,6 +251,12 @@ export default {
} }
] ]
} }
},
onLoad(option) {
if (option) {
console.log(option)
this.title = option.title
}
}, },
methods: { methods: {
back, back,
@ -532,7 +538,7 @@ export default {
width: 686rpx; width: 686rpx;
height: 96rpx; height: 96rpx;
background: #007aff; background: #007aff;
border-radius: 10px;
border-radius: 10rpx;
} }
.submit-image { .submit-image {
width: 24.38rpx; width: 24.38rpx;
@ -630,7 +636,7 @@ export default {
} }
.submit-check-time{ .submit-check-time{
background-color: #FFFFFF; background-color: #FFFFFF;
padding: 28rpx 32rpx 0px 28rpx;
padding: 28rpx 32rpx 0rpx 28rpx;
.submit-check-flex { .submit-check-flex {
display: flex; display: flex;
justify-content: space-between; justify-content: space-between;

570
pages/trade/quotationList.vue

@ -1,289 +1,283 @@
<template>
<view class="quotation-list">
<scroll-list ref="quotationRef" :option="option" @load="quotationUp" @refresh="quotationDown">
<view v-for="(item,index) in quotationData" :key="index">
<view class="list-border list-title-line">
<text class="list-title">广州民族印刷有限公司</text>
<text class="list-title-Subtitle">待报价</text>
</view>
<view class="list-border list-info-line">
<view class="list-info list-border">
<view class=""><image class="list-image" src="../../static/logo.png" mode=""></image></view>
<view class="list-info-contant">
<view class="list-info-title">金蝶蓝白卡</view>
<view class="list-info-text">白卡纸/金蝶蓝/350g/787*1092/2200</view>
</view>
</view>
<view class="list-info">
<view class=""><image class="list-image" src="../../static/logo.png" mode=""></image></view>
<view class="list-info-contant">
<view class="list-info-title">金蝶蓝白卡</view>
<view class="list-info-text">白卡纸/金蝶蓝/350g/787*1092/2200</view>
</view>
</view>
</view>
<view class="list-border list-bottom-contant">
<view>
<text>交货时间</text>
<text>3</text>
</view>
<view>
<text>交货区域</text>
<text>3</text>
</view>
<view class="offer-class">
<view class="offer-width">
<text>报价截止</text>
<text>3</text>
</view>
<view>
<button type="primary" class="offer-btn" @click="offerClick()">报价</button>
</view>
</view>
</view>
<uGap></uGap>
</view>
</scroll-list>
<view>
<view class="offer-prices" @click="nativeTo()">
<image class="my-image" src="../../static/imgs/trade/myPrice.png" mode=""></image>
<view class="my-price">
我的报价
</view>
</view>
</view>
</view>
</template>
<script>
import { getEnterpriseList, gettradingHallList } from '@/apis/trade'
import uGap from '@/components/u-gap/u-gap.vue'
export default {
props: {
queryData: {
type: Object,
default: () => {}
}
},
components: {
uGap
},
data() {
return {
option: {
size: 10,
auto: true,
emptyText: '暂无报价信息~',
background: '#F7F8FA',
fontSize: '40rpx'
},
params: {
cooperationState: 0,
latitude: 23.12616,
longitude: 113.38466,
km: 5
},
pagination: {
pageNum: 0, //
pageSize: 10
},
quotationData:[]
}
},
watch: {
params: {
handler(val) {
this.getQuotationQurty()
},
deep: true
},
},
onLoad(option) {
if (option) {
option.latitude && (this.params.latitude = option.latitude)
option.longitude && (this.params.longitude = option.longitude)
option.km && (this.params.km = option.km)
}
this.getQuotationQurty()
},
methods: {
//
getQuotationQurty() {
return new Promise((resolve, reject) => {
getEnterpriseList({ ...this.params, ...this.pagination })
.then(res => {
if (res) {
if (this.pagination.pageNum == 1) {
// this.quotationData = res.records
this.quotationData = []
this.quotationData = [{ name: '111', id: '222' }, { name: '111', id: '222' }]
} else {
this.quotationData = this.quotationData.concat(res.records)
}
console.log('this.quotationData', res)
resolve({ list: this.quotationData, total: res.total })
}
})
.catch(err => {
reject(err)
})
})
},
//
quotationUp(page) {
this.pagination.pageNum++
this.getQuotationQurty()
.then(({ list, total }) => {
this.$refs.quotationRef.loadSuccess({ list, total })
})
.catch(() => {
this.$refs.quotationRef.loadFail()
})
},
//
quotationDown() {
this.pagination.pageNum = 1
this.getQuotationQurty()
.then(({ list, total }) => {
this.$refs.quotationRef.refreshSuccess({ list, total })
})
.catch(() => {
this.$refs.quotationRef.refreshFail()
})
},
//
offerClick(){
uni.navigateTo({
url: '../submit-quotation/index'
});
},
//
nativeTo(){
console.log(11)
uni.navigateTo({
url: '../my-offer/index'
});
},
}
}
</script>
<style lang="scss">
.quotation-list {
margin-bottom: 0rpx;
.list-border {
// border-top: 1px solid #dddddd;
border-bottom: 2rpx solid #dddddd;
}
.list-title-line {
line-height: 88rpx;
padding-left: 48rpx;
background: #FFFFFF;
}
.list-title {
font-family: PingFangSC-Semibold;
font-size: 30rpx;
color: #000000;
letter-spacing: 0;
font-weight: 600;
}
.list-title-Subtitle {
font-family: PingFangSC-Medium;
font-size: 30rpx;
color: #ff5368;
letter-spacing: 0;
text-align: right;
font-weight: 500;
float: right;
margin-right: 32rpx;
}
.list-info-line {
padding-left: 48rpx;
line-height: 70rpx;
background: #FFFFFF;
}
.list-info-contant {
margin-left: 48rpx;
background: #FFFFFF;
}
.list-info-title {
font-family: PingFangSC-Medium;
font-size: 30rpx;
color: #333333;
letter-spacing: 0;
text-align: left;
font-weight: 550;
}
.list-info-text {
font-family: PingFangSC-Regular;
font-size: 26rpx;
color: #888888;
letter-spacing: 0;
text-align: left;
line-height: 64rpx;
font-weight: 400;
}
.list-image {
width: 100rpx;
height: 100rpx;
margin-top: 20rpx;
}
.list-info {
display: flex;
}
.list-bottom-contant {
line-height: 70rpx;
padding-left: 48rpx;
padding-bottom: 48rpx;
background: #FFFFFF;
}
.my-image {
width: 32rpx;
height: 32rpx;
}
.my-price {
font-family: PingFangSC-Medium;
font-size: 18rpx;
color: #007AFF;
text-align: center;
font-weight: 500;
white-space: nowrap;
padding: 6rpx;
}
.offer-class{
display: flex;
}
.offer-btn{
width: 150rpx;
height: 64rpx;
background: #007AFF;
border: 2rpx solid #007AFF;
border-radius: 8rpx;
line-height: 60rpx;
}
.offer-width{
width: 70%;
}
.offer-prices{
position: absolute;
z-index: 9999;
right: 32rpx;
bottom: 122rpx;
background-color: #ffffff;
border-radius: 50%;
padding: 10rpx;
text-align: center;
width: 110rpx;
height: 110rpx;
border: 2rpx solid #F9F9F9;
box-shadow: 0rpx 4rpx 34rpx 0rpx rgba(0,0,0,0.2);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
}
<template>
<view class="quotation-list">
<scroll-list ref="quotationRef" :option="option" @load="quotationUp" @refresh="quotationDown">
<view v-for="(item, index) in quotationData" :key="index">
<view class="list-border list-title-line">
<text class="list-title">广州民族印刷有限公司</text>
<text class="list-title-Subtitle">待报价</text>
</view>
<view class="list-border list-info-line">
<view class="list-info list-border">
<view class=""><image class="list-image" src="../../static/logo.png" mode=""></image></view>
<view class="list-info-contant">
<view class="list-info-title">金蝶蓝白卡</view>
<view class="list-info-text">白卡纸/金蝶蓝/350g/787*1092/2200</view>
</view>
</view>
<view class="list-info">
<view class=""><image class="list-image" src="../../static/logo.png" mode=""></image></view>
<view class="list-info-contant">
<view class="list-info-title">金蝶蓝白卡</view>
<view class="list-info-text">白卡纸/金蝶蓝/350g/787*1092/2200</view>
</view>
</view>
</view>
<view class="list-border list-bottom-contant">
<view>
<text>交货时间</text>
<text>3</text>
</view>
<view>
<text>交货区域</text>
<text>3</text>
</view>
<view class="offer-class">
<view class="offer-width">
<text>报价截止</text>
<text>3</text>
</view>
<view><button type="primary" class="offer-btn" @click="offerClick()">报价</button></view>
</view>
</view>
<uGap></uGap>
</view>
</scroll-list>
<view>
<view class="offer-prices" @click="nativeTo()">
<image class="my-image" src="../../static/imgs/trade/myPrice.png" mode=""></image>
<view class="my-price">我的报价</view>
</view>
</view>
</view>
</template>
<script>
import { getEnterpriseList, gettradingHallList } from '@/apis/trade'
import { back, go2 } from '@/utils/hook.js'
import uGap from '@/components/u-gap/u-gap.vue'
export default {
props: {
queryData: {
type: Object,
default: () => {}
}
},
components: {
uGap
},
data() {
return {
option: {
size: 10,
auto: true,
emptyText: '暂无报价信息~',
background: '#F7F8FA',
fontSize: '40rpx'
},
params: {
cooperationState: 0,
latitude: 23.12616,
longitude: 113.38466,
km: 5
},
pagination: {
pageNum: 0, //
pageSize: 10
},
quotationData: []
}
},
watch: {
params: {
handler(val) {
this.getQuotationQurty()
},
deep: true
}
},
onLoad(option) {
if (option) {
option.latitude && (this.params.latitude = option.latitude)
option.longitude && (this.params.longitude = option.longitude)
option.km && (this.params.km = option.km)
}
this.getQuotationQurty()
},
methods: {
//
getQuotationQurty() {
return new Promise((resolve, reject) => {
getEnterpriseList({ ...this.params, ...this.pagination })
.then(res => {
if (res) {
if (this.pagination.pageNum == 1) {
// this.quotationData = res.records
this.quotationData = []
this.quotationData = [{ name: '111', id: '222' }, { name: '111', id: '222' }]
} else {
this.quotationData = this.quotationData.concat(res.records)
}
console.log('this.quotationData', res)
resolve({ list: this.quotationData, total: res.total })
}
})
.catch(err => {
reject(err)
})
})
},
//
quotationUp(page) {
this.pagination.pageNum++
this.getQuotationQurty()
.then(({ list, total }) => {
this.$refs.quotationRef.loadSuccess({ list, total })
})
.catch(() => {
this.$refs.quotationRef.loadFail()
})
},
//
quotationDown() {
this.pagination.pageNum = 1
this.getQuotationQurty()
.then(({ list, total }) => {
this.$refs.quotationRef.refreshSuccess({ list, total })
})
.catch(() => {
this.$refs.quotationRef.refreshFail()
})
},
//
offerClick() {
var params = {
title: '提交报价'
}
go2('submit-quotation', params)
},
//
nativeTo() {
go2('my-offer')
}
}
}
</script>
<style lang="scss">
.quotation-list {
margin-bottom: 0rpx;
.list-border {
// border-top: 1px solid #dddddd;
border-bottom: 2rpx solid #dddddd;
}
.list-title-line {
line-height: 88rpx;
padding-left: 48rpx;
background: #ffffff;
}
.list-title {
font-family: PingFangSC-Semibold;
font-size: 30rpx;
color: #000000;
letter-spacing: 0;
font-weight: 600;
}
.list-title-Subtitle {
font-family: PingFangSC-Medium;
font-size: 30rpx;
color: #ff5368;
letter-spacing: 0;
text-align: right;
font-weight: 500;
float: right;
margin-right: 32rpx;
}
.list-info-line {
padding-left: 48rpx;
line-height: 70rpx;
background: #ffffff;
}
.list-info-contant {
margin-left: 48rpx;
background: #ffffff;
}
.list-info-title {
font-family: PingFangSC-Medium;
font-size: 30rpx;
color: #333333;
letter-spacing: 0;
text-align: left;
font-weight: 550;
}
.list-info-text {
font-family: PingFangSC-Regular;
font-size: 26rpx;
color: #888888;
letter-spacing: 0;
text-align: left;
line-height: 64rpx;
font-weight: 400;
}
.list-image {
width: 100rpx;
height: 100rpx;
margin-top: 20rpx;
}
.list-info {
display: flex;
}
.list-bottom-contant {
line-height: 70rpx;
padding-left: 48rpx;
padding-bottom: 48rpx;
background: #ffffff;
}
.my-image {
width: 32rpx;
height: 32rpx;
}
.my-price {
font-family: PingFangSC-Medium;
font-size: 18rpx;
color: #007aff;
text-align: center;
font-weight: 500;
white-space: nowrap;
padding: 6rpx;
}
.offer-class {
display: flex;
}
.offer-btn {
width: 150rpx;
height: 64rpx;
background: #007aff;
border: 2rpx solid #007aff;
border-radius: 8rpx;
line-height: 60rpx;
}
.offer-width {
width: 70%;
}
.offer-prices {
position: absolute;
z-index: 9999;
right: 32rpx;
bottom: 122rpx;
background-color: #ffffff;
border-radius: 50%;
padding: 10rpx;
text-align: center;
width: 110rpx;
height: 110rpx;
border: 2rpx solid #f9f9f9;
box-shadow: 0rpx 4rpx 34rpx 0rpx rgba(0, 0, 0, 0.2);
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
}
}
</style> </style>
Loading…
Cancel
Save