邓雄飞 4 years ago
parent
commit
4014181db9
6 changed files with 1209 additions and 1183 deletions
  1. 2
      pages/client-credit-list/index.vue
  2. 476
      pages/client-detail/base-paper-deals.vue
  3. 779
      pages/client-detail/equipment-information.vue
  4. 2
      pages/client-list/index.vue
  5. 574
      pages/trade/orderList.vue
  6. 559
      pages/trade/quotationList.vue

2
pages/client-credit-list/index.vue

@ -87,6 +87,8 @@ export default {
// this.list = []
// this.list = [...this.list, ...[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]]
resolve({ list: this.list, total: res.total })
} else {
reject()
}
})
.catch((err) => {

476
pages/client-detail/base-paper-deals.vue

@ -1,48 +1,52 @@
<template>
<view class="warpper">
<scroll-list ref="list" :option="option" @load="upCallback" @refresh="downCallback" style="background-color: #FFFFFF;">
<view class="sum-box">
<view class="">
<view class="title">交易金额</view>
<view class="value">{{topInfo.tradingVolume}}</view>
</view>
<view class="">
<view class="title">总交易量()</view>
<view class="value">{{topInfo.volumeOfBusiness}}</view>
</view>
</view>
<uGap></uGap>
<view class="card-box" v-for="(item, index) in list" :key="index">
<view class="header">
<view class="left-title">{{item.customerEnterpriseName}}</view>
<view class="right-title">¥ {{item.totalOfferPrice}}</view>
</view>
<view class="content" v-for="(subItem, subIndex) in item.supplierOrderList[0].orderItmes" :key="subIndex">
<!-- <image class="image" :src="https://qncloud.oss-cn-shenzhen.aliyuncs.com/ztb_pic/testPic.jfif" mode=""></image> -->
<image class="image" :src="subItem.productImg" mode=""></image>
<view class="">
<view class="title">{{subItem.productName}}</view>
<view class="desc">{{subItem.brandName}}/{{subItem.categoryName}}/{{subItem.gramWeight}}g/{{subItem.length}}*{{subItem.width}}/{{subItem.pieceQuantity}}</view>
</view>
</view>
<!-- <view class="content">
<view class="warpper">
<scroll-list ref="list" :option="option" @load="upCallback" @refresh="downCallback" style="background-color: #ffffff">
<view class="sum-box">
<view class="">
<view class="title">交易金额</view>
<view class="value">{{ topInfo.tradingVolume }}</view>
</view>
<view class="">
<view class="title">总交易量()</view>
<view class="value">{{ topInfo.volumeOfBusiness }}</view>
</view>
</view>
<uGap></uGap>
<view class="card-box" v-for="(item, index) in list" :key="index">
<view class="header">
<view class="left-title">{{ item.customerEnterpriseName }}</view>
<view class="right-title">¥ {{ item.totalOfferPrice }}</view>
</view>
<view class="content" v-for="(subItem, subIndex) in item.supplierOrderList[0].orderItmes" :key="subIndex">
<!-- <image class="image" :src="https://qncloud.oss-cn-shenzhen.aliyuncs.com/ztb_pic/testPic.jfif" mode=""></image> -->
<image class="image" :src="subItem.productImg" mode=""></image>
<view class="">
<view class="title">{{ subItem.productName }}</view>
<view class="desc">
{{ subItem.brandName }}/{{ subItem.categoryName }}/{{ subItem.gramWeight }}g/{{ subItem.length }}*{{ subItem.width }}/{{
subItem.pieceQuantity
}}
</view>
</view>
</view>
<!-- <view class="content">
<image class="image" src="https://qncloud.oss-cn-shenzhen.aliyuncs.com/ztb_pic/testPic.jfif" mode=""></image>
<view class="">
<view class="title">丽盈白卡</view>
<view class="desc">白卡纸/丽盈/350g/787*1092/2200</view>
</view>
</view> -->
<view class="other">
<view class="time">{{item.createTime}}</view>
<view class="btn">
更多详情
<image class="icon" src="/static/imgs/client-detail/arrow-right-icon.png"></image>
</view>
</view>
<uGap></uGap>
</view>
</scroll-list>
</view>
<view class="other">
<view class="time">{{ item.createTime }}</view>
<view class="btn">
更多详情
<image class="icon" src="/static/imgs/client-detail/arrow-right-icon.png"></image>
</view>
</view>
<uGap></uGap>
</view>
</scroll-list>
</view>
</template>
<script>
@ -50,208 +54,208 @@ import uGap from '@/components/u-gap/u-gap.vue'
import { getBasePaperDeals, getOrderVolumeStatistics } from '@/apis/clientDetailApi.js'
export default {
components: { uGap },
data() {
return {
option: {
size: 10,
auto: true,
emptyText: '暂无数据~',
background: '#F7F8FA',
disabled: false
},
params: {
asc: '',
desc: '',
// customerEnterpriseId: this.$store.state.supplierInfo.id || null, // IDid
// mallSupplierId: this.$store.state.supplierInfo.supplierId || null, // id
customerEnterpriseId: '651107734133018624',
mallSupplierId: '670334117090562048', // id
status: '0', // 0 /30106,/30107,/30207,/30104
enterpriseIds: [] //ID
},
pagination: {
pageNum: 0, //
pageSize: 10
},
orderParams: {
beginDate: '',
currentSupplier: '670334117090562048',
// currentSupplier: this.$store.state.supplierInfo.supplierId || null,
endDate: '',
},
list: [],
topInfo: {},
}
},
onLoad() {
},
methods: {
//
getOrderVolumeStatistics() {
getOrderVolumeStatistics(this.orderParams).then(res =>{
// console.log('', res)
this.topInfo = res
})
},
getList() {
this.getOrderVolumeStatistics()
return new Promise((resolve, reject) => {
getBasePaperDeals({ ...this.params, ...this.pagination })
.then(res => {
// console.log('', res)
if (res) {
if (this.pagination.pageNum == 1) {
this.list = res.records
} else {
this.list = this.list.concat(res.records)
}
// this.list = []
// this.list = [...this.list, ...[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]]
resolve({ list: this.list, total: res.total })
}
})
.catch(err => {
reject(err)
})
})
},
downCallback() {
this.pagination.pageNum = 1
this.getList()
.then(({ list, total }) => {
this.$refs.list.refreshSuccess({ list, total })
})
.catch(() => {
this.$refs.list.refreshFail()
})
},
upCallback() {
this.pagination.pageNum++
this.getList()
.then(({ list, total }) => {
this.$refs.list.loadSuccess({ list, total })
})
.catch(() => {
this.$refs.list.loadFail()
})
}
}
components: { uGap },
data() {
return {
option: {
size: 10,
auto: true,
emptyText: '暂无数据~',
background: '#F7F8FA',
disabled: false
},
params: {
asc: '',
desc: '',
// customerEnterpriseId: this.$store.state.supplierInfo.id || null, // IDid
// mallSupplierId: this.$store.state.supplierInfo.supplierId || null, // id
customerEnterpriseId: '651107734133018624',
mallSupplierId: '670334117090562048', // id
status: '0', // 0 /30106,/30107,/30207,/30104
enterpriseIds: [] //ID
},
pagination: {
pageNum: 0, //
pageSize: 10
},
orderParams: {
beginDate: '',
currentSupplier: '670334117090562048',
// currentSupplier: this.$store.state.supplierInfo.supplierId || null,
endDate: ''
},
list: [],
topInfo: {}
}
},
onLoad() {},
methods: {
//
getOrderVolumeStatistics() {
getOrderVolumeStatistics(this.orderParams).then((res) => {
// console.log('', res)
this.topInfo = res
})
},
getList() {
this.getOrderVolumeStatistics()
return new Promise((resolve, reject) => {
getBasePaperDeals({ ...this.params, ...this.pagination })
.then((res) => {
// console.log('', res)
if (res) {
if (this.pagination.pageNum == 1) {
this.list = res.records
} else {
this.list = this.list.concat(res.records)
}
// this.list = []
// this.list = [...this.list, ...[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]]
resolve({ list: this.list, total: res.total })
} else {
reject()
}
})
.catch((err) => {
reject(err)
})
})
},
downCallback() {
this.pagination.pageNum = 1
this.getList()
.then(({ list, total }) => {
this.$refs.list.refreshSuccess({ list, total })
})
.catch(() => {
this.$refs.list.refreshFail()
})
},
upCallback() {
this.pagination.pageNum++
this.getList()
.then(({ list, total }) => {
this.$refs.list.loadSuccess({ list, total })
})
.catch(() => {
this.$refs.list.loadFail()
})
}
}
}
</script>
<style lang="scss">
.warpper {
width: 750rpx;
.sum-box {
display: flex;
flex-direction: row;
justify-content: space-around;
align-items: center;
// text-align: center;
height: 184rpx;
background: url('/static/imgs/client-detail/yzjy-icon.png') no-repeat;
background-size: 100%;
.title {
font-size: 26rpx;
color: #ffffff;
letter-spacing: 0;
font-weight: 500;
}
.value {
font-size: 56rpx;
color: #ffffff;
letter-spacing: 0;
text-align: left;
font-weight: 500;
margin-top: 16rpx;
}
}
.card-box {
.header {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
height: 88rpx;
background: #ffffff;
border-bottom: 2rpx solid #dddddd;
padding: 0rpx 32rpx;
.left-title {
font-size: 30rpx;
color: #000000;
letter-spacing: 0;
font-weight: 600;
}
.right-title {
font-size: 30rpx;
color: #ff5368;
letter-spacing: 0;
text-align: right;
font-weight: 500;
}
}
.content {
display: flex;
flex-direction: row;
align-items: center;
height: 148rpx;
background: #ffffff;
border-bottom: 2rpx solid #dddddd;
padding: 0rpx 32rpx;
.image {
width: 100rpx;
height: 100rpx;
flex: 0 0 100rpx;
margin-right: 20rpx;
}
.title {
font-size: 30rpx;
color: #333333;
letter-spacing: 0;
text-align: left;
font-weight: 400;
}
.desc {
padding-top: 26rpx;
font-size: 26rpx;
color: #888888;
letter-spacing: 0;
text-align: left;
font-weight: 400;
}
}
.other {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
height: 80rpx;
background: #ffffff;
padding: 0rpx 32rpx;
.time {
font-size: 26rpx;
color: #888888;
letter-spacing: 0;
text-align: left;
font-weight: 400;
}
.btn {
font-size: 28rpx;
color: #007aff;
letter-spacing: 0;
text-align: center;
font-weight: 500;
display: flex;
align-items: center;
}
.icon {
width: 24rpx;
height: 24rpx;
margin-left: 6rpx;
}
}
}
width: 750rpx;
.sum-box {
display: flex;
flex-direction: row;
justify-content: space-around;
align-items: center;
// text-align: center;
height: 184rpx;
background: url('/static/imgs/client-detail/yzjy-icon.png') no-repeat;
background-size: 100%;
.title {
font-size: 26rpx;
color: #ffffff;
letter-spacing: 0;
font-weight: 500;
}
.value {
font-size: 56rpx;
color: #ffffff;
letter-spacing: 0;
text-align: left;
font-weight: 500;
margin-top: 16rpx;
}
}
.card-box {
.header {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
height: 88rpx;
background: #ffffff;
border-bottom: 2rpx solid #dddddd;
padding: 0rpx 32rpx;
.left-title {
font-size: 30rpx;
color: #000000;
letter-spacing: 0;
font-weight: 600;
}
.right-title {
font-size: 30rpx;
color: #ff5368;
letter-spacing: 0;
text-align: right;
font-weight: 500;
}
}
.content {
display: flex;
flex-direction: row;
align-items: center;
height: 148rpx;
background: #ffffff;
border-bottom: 2rpx solid #dddddd;
padding: 0rpx 32rpx;
.image {
width: 100rpx;
height: 100rpx;
flex: 0 0 100rpx;
margin-right: 20rpx;
}
.title {
font-size: 30rpx;
color: #333333;
letter-spacing: 0;
text-align: left;
font-weight: 400;
}
.desc {
padding-top: 26rpx;
font-size: 26rpx;
color: #888888;
letter-spacing: 0;
text-align: left;
font-weight: 400;
}
}
.other {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
height: 80rpx;
background: #ffffff;
padding: 0rpx 32rpx;
.time {
font-size: 26rpx;
color: #888888;
letter-spacing: 0;
text-align: left;
font-weight: 400;
}
.btn {
font-size: 28rpx;
color: #007aff;
letter-spacing: 0;
text-align: center;
font-weight: 500;
display: flex;
align-items: center;
}
.icon {
width: 24rpx;
height: 24rpx;
margin-left: 6rpx;
}
}
}
}
</style>

779
pages/client-detail/equipment-information.vue

@ -1,109 +1,112 @@
<template>
<view class="warpper">
<scroll-list ref="list" :option="option" @load="upCallback" @refresh="downCallback" style="background-color: #FFFFFF;">
<view class="card-box" v-for="(item, index) in list" :key="index">
<view class="header">
<view class="title">{{item.name}}</view>
<view class="desc">
<view class="bottom-btn" @tap="dropdownTap(index)">
{{dropdownName}}
<!-- <uni-icons custom-prefix="iconfont" type="icon-required" size="16" color="#888888"></uni-icons> -->
<uni-icons size="16" custom-prefix="iconfont" type="m_dow_arrow" color="#888888"></uni-icons>
</view>
<view class="down-box" v-if="item.isShowSelect">
<view class="row" v-for="(citem, cindex) in dropdownList" :key="cindex" @tap="dropdownItemTap(cindex)">
<text :class="params.duration == cindex ? 'activeText' : ''">{{citem}}</text>
</view>
</view>
</view>
</view>
<view class="content">
<view class="info">
<view class="">
<view class="value">{{item.totalCapacity}}</view>
<view class="title">
<image class="icon" src="/static/imgs/client-detail/address-icon.png"></image>
设备产能
</view>
</view>
<view class="">
<view class="value">{{item.totalTime}}h</view>
<view class="title">
<image class="icon" src="/static/imgs/client-detail/address-icon.png"></image>
工作时长
</view>
</view>
<view class="">
<view class="value">{{item.totalAvgStartingUp}}%</view>
<view class="title">
<image class="icon" src="/static/imgs/client-detail/address-icon.png"></image>
开机率
</view>
</view>
</view>
<view class="shrink-box" v-if="item.collapse">
<view class="row">
<view class="left">
<view class="title">设备图片</view>
<view class="look-over" @tap="previewImg(item.img, [item.img])">点击查看</view>
</view>
<view class="right">
<view class="title">购买年份</view>
<view class="value">{{item.purchasingDate}}</view>
</view>
</view>
<view class="row">
<view class="left">
<view class="title">购买金额</view>
<view class="value">{{item.purchaseAmount}}</view>
</view>
<view class="right">
<view class="title">设备产能</view>
<view class="value">{{item.capacity}}</view>
</view>
</view>
<view class="row">
<view class="left">
<view class="title">成色</view>
<view class="value">{{item.newnessDegree}}</view>
</view>
<view class="right">
<view class="title">设备类型</view>
<view class="value">{{item.machineTypeName}}</view>
</view>
</view>
<view class="row">
<view class="left">
<view class="title">最大输纸 长度</view>
<view class="value">{{item.inputMaxSizeLength}}mm</view>
</view>
<view class="right">
<view class="title">最大输纸 宽度</view>
<view class="value">{{item.inputMaxSizeWidth}}mm</view>
</view>
</view>
<view class="row">
<view class="left">
<view class="title">最大输纸 厚度</view>
<view class="value">{{item.inputMaxThickness}}mm</view>
</view>
<view class="right">
<view class="title">咬口</view>
<view class="value">{{item.lockSeam}}mm</view>
</view>
</view>
</view>
</view>
<view class="see-more">
<view class="" @tap="seemoreTap(index)">
<text>设备详情</text>
<image class="icon" :src="item.collapse ? '/static/imgs/client-detail/arrow-up-icon.png' : '/static/imgs/client-detail/arrow-down-icon.png'"></image>
</view>
</view>
<uGap></uGap>
</view>
</scroll-list>
</view>
<view class="warpper">
<scroll-list ref="list" :option="option" @load="upCallback" @refresh="downCallback" style="background-color: #ffffff">
<view class="card-box" v-for="(item, index) in list" :key="index">
<view class="header">
<view class="title">{{ item.name }}</view>
<view class="desc">
<view class="bottom-btn" @tap="dropdownTap(index)">
{{ dropdownName }}
<!-- <uni-icons custom-prefix="iconfont" type="icon-required" size="16" color="#888888"></uni-icons> -->
<uni-icons size="16" custom-prefix="iconfont" type="m_dow_arrow" color="#888888"></uni-icons>
</view>
<view class="down-box" v-if="item.isShowSelect">
<view class="row" v-for="(citem, cindex) in dropdownList" :key="cindex" @tap="dropdownItemTap(cindex)">
<text :class="params.duration == cindex ? 'activeText' : ''">{{ citem }}</text>
</view>
</view>
</view>
</view>
<view class="content">
<view class="info">
<view class="">
<view class="value">{{ item.totalCapacity }}</view>
<view class="title">
<image class="icon" src="/static/imgs/client-detail/address-icon.png"></image>
设备产能
</view>
</view>
<view class="">
<view class="value">{{ item.totalTime }}h</view>
<view class="title">
<image class="icon" src="/static/imgs/client-detail/address-icon.png"></image>
工作时长
</view>
</view>
<view class="">
<view class="value">{{ item.totalAvgStartingUp }}%</view>
<view class="title">
<image class="icon" src="/static/imgs/client-detail/address-icon.png"></image>
开机率
</view>
</view>
</view>
<view class="shrink-box" v-if="item.collapse">
<view class="row">
<view class="left">
<view class="title">设备图片</view>
<view class="look-over" @tap="previewImg(item.img, [item.img])">点击查看</view>
</view>
<view class="right">
<view class="title">购买年份</view>
<view class="value">{{ item.purchasingDate }}</view>
</view>
</view>
<view class="row">
<view class="left">
<view class="title">购买金额</view>
<view class="value">{{ item.purchaseAmount }}</view>
</view>
<view class="right">
<view class="title">设备产能</view>
<view class="value">{{ item.capacity }}</view>
</view>
</view>
<view class="row">
<view class="left">
<view class="title">成色</view>
<view class="value">{{ item.newnessDegree }}</view>
</view>
<view class="right">
<view class="title">设备类型</view>
<view class="value">{{ item.machineTypeName }}</view>
</view>
</view>
<view class="row">
<view class="left">
<view class="title">最大输纸 长度</view>
<view class="value">{{ item.inputMaxSizeLength }}mm</view>
</view>
<view class="right">
<view class="title">最大输纸 宽度</view>
<view class="value">{{ item.inputMaxSizeWidth }}mm</view>
</view>
</view>
<view class="row">
<view class="left">
<view class="title">最大输纸 厚度</view>
<view class="value">{{ item.inputMaxThickness }}mm</view>
</view>
<view class="right">
<view class="title">咬口</view>
<view class="value">{{ item.lockSeam }}mm</view>
</view>
</view>
</view>
</view>
<view class="see-more">
<view class="" @tap="seemoreTap(index)">
<text>设备详情</text>
<image
class="icon"
:src="item.collapse ? '/static/imgs/client-detail/arrow-up-icon.png' : '/static/imgs/client-detail/arrow-down-icon.png'"
></image>
</view>
</view>
<uGap></uGap>
</view>
</scroll-list>
</view>
</template>
<script>
@ -111,293 +114,293 @@ import lvSelect from './lv-select.vue'
import uGap from '@/components/u-gap/u-gap.vue'
import { getDeviceInfo } from '@/apis/clientDetailApi.js'
export default {
components: { lvSelect, uGap },
data() {
return {
isShowSelect: false,
dropdownList: ['近30天','近7天', '今日','全部'], // 0:30 17 2 3
option: {
size: 10,
auto: true,
emptyText: '暂无数据~',
background: '#F7F8FA',
disabled: false
},
seemoreFlag: 0,
params: {
asc: '',
desc: '',
duration: '3',
enterpriseIds: [],
},
pagination: {
pageNum: 0, //
pageSize: 10
},
list: []
}
},
onLoad() {
// this.getList()
},
computed:{
dropdownName() {
let text = '全部'
switch (this.params.duration){
case 0:
text = '近30天'
break;
case 1:
text = '近7天'
break;
case 2:
text = '今日'
break;
case 3:
text = '全部'
break;
default:
break;
}
return text
}
},
methods: {
previewImg(img, list) {
uni.previewImage({
urls: list,
current: img
});
},
getList() {
return new Promise((resolve, reject) => {
getDeviceInfo({ ...this.params, ...this.pagination })
.then(res => {
res.records.forEach(el => {
el.collapse = false
el.isShowSelect = false
})
// console.log('', res.records)
if (res) {
if (this.pagination.pageNum == 1) {
this.list = res.records
} else {
this.list = this.list.concat(res.records)
}
// this.list = []
// this.list = [...this.list, ...[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]]
resolve({ list: this.list, total: res.total })
}
})
.catch(err => {
reject(err)
})
})
},
seemoreTap(index) {
this.list[index].collapse = !this.list[index].collapse
},
dropdownTap(index) {
this.list[index].isShowSelect = !this.list[index].isShowSelect
this.list.forEach((el, i) => {
if(i !== index) {
this.list[i].isShowSelect = false
}
})
},
dropdownItemTap(index) {
this.params.duration = index
this.downCallback()
},
downCallback() {
this.pagination.pageNum = 1
this.getList()
.then(({ list, total }) => {
this.$refs.list.refreshSuccess({ list, total })
})
.catch(() => {
this.$refs.list.refreshFail()
})
},
upCallback() {
this.pagination.pageNum++
this.getList()
.then(({ list, total }) => {
this.$refs.list.loadSuccess({ list, total })
})
.catch(() => {
this.$refs.list.loadFail()
})
}
}
components: { lvSelect, uGap },
data() {
return {
isShowSelect: false,
dropdownList: ['近30天', '近7天', '今日', '全部'], // 0:30 17 2 3
option: {
size: 10,
auto: true,
emptyText: '暂无数据~',
background: '#F7F8FA',
disabled: false
},
seemoreFlag: 0,
params: {
asc: '',
desc: '',
duration: '3',
enterpriseIds: []
},
pagination: {
pageNum: 0, //
pageSize: 10
},
list: []
}
},
onLoad() {
// this.getList()
},
computed: {
dropdownName() {
let text = '全部'
switch (this.params.duration) {
case 0:
text = '近30天'
break
case 1:
text = '近7天'
break
case 2:
text = '今日'
break
case 3:
text = '全部'
break
default:
break
}
return text
}
},
methods: {
previewImg(img, list) {
uni.previewImage({
urls: list,
current: img
})
},
getList() {
return new Promise((resolve, reject) => {
getDeviceInfo({ ...this.params, ...this.pagination })
.then((res) => {
res.records.forEach((el) => {
el.collapse = false
el.isShowSelect = false
})
// console.log('', res.records)
if (res) {
if (this.pagination.pageNum == 1) {
this.list = res.records
} else {
this.list = this.list.concat(res.records)
}
// this.list = []
// this.list = [...this.list, ...[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]]
resolve({ list: this.list, total: res.total })
} else {
reject()
}
})
.catch((err) => {
reject(err)
})
})
},
seemoreTap(index) {
this.list[index].collapse = !this.list[index].collapse
},
dropdownTap(index) {
this.list[index].isShowSelect = !this.list[index].isShowSelect
this.list.forEach((el, i) => {
if (i !== index) {
this.list[i].isShowSelect = false
}
})
},
dropdownItemTap(index) {
this.params.duration = index
this.downCallback()
},
downCallback() {
this.pagination.pageNum = 1
this.getList()
.then(({ list, total }) => {
this.$refs.list.refreshSuccess({ list, total })
})
.catch(() => {
this.$refs.list.refreshFail()
})
},
upCallback() {
this.pagination.pageNum++
this.getList()
.then(({ list, total }) => {
this.$refs.list.loadSuccess({ list, total })
})
.catch(() => {
this.$refs.list.loadFail()
})
}
}
}
</script>
<style lang="scss">
.warpper {
.card-box {
.header {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
height: 88rpx;
background: #ffffff;
padding: 0rpx 36rpx 0rpx 32rpx;
.title {
font-size: 30rpx;
color: #000000;
letter-spacing: 0;
font-weight: 600;
}
.desc {
font-size: 28rpx;
color: #888888;
letter-spacing: 0;
text-align: right;
font-weight: 400;
.bottom-btn {
position: relative;
z-index: 8;
}
.down-box {
position: absolute;
margin-top: 14rpx;
text-align: center;
right: 15rpx;
z-index: 10;
width: 204rpx;
height: 218.9rpx;
background: #FFFFFF;
border-radius: 6rpx;
padding: 0rpx 30rpx;
.row {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
height: 54rpx;
font-size: 22rpx;
color: #323233;
text-align: center;
font-weight: 400;
border-bottom: 1.6rpx solid #EBEDF0;
}
.activeText {
color: #007AFF;
}
}
.down-box::before{
content: '';
position: absolute;
width: 0;
height: 0;
border-bottom: solid 12rpx #ffffff;
border-right: solid 12rpx transparent;
border-left: solid 12rpx transparent;
left: 80%;
top: -12rpx;
margin-left: -12rpx;
}
}
}
.content {
border-bottom: 2rpx solid #dddddd;
border-top: 2rpx solid #dddddd;
.info {
display: flex;
flex-direction: row;
justify-content: space-around;
align-items: center;
text-align: center;
height: 148rpx;
background: #ffffff;
.value {
font-size: 28rpx;
color: #333333;
letter-spacing: 0;
text-align: center;
font-weight: 500;
}
.title {
margin-top: 16rpx;
font-size: 24rpx;
color: #888888;
letter-spacing: 0;
text-align: center;
font-weight: 400;
display: flex;
flex-direction: row;
align-items: center;
}
.icon {
width: 32rpx;
height: 32rpx;
padding-right: 6rpx;
}
}
.shrink-box {
background: #f7f8fa;
padding: 8rpx 36rpx 16rpx 32rpx;
.row {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
margin-top: 16rpx;
.left {
display: flex;
flex-direction: row;
width: 60%;
}
.right {
display: flex;
flex-direction: row;
width: 40%;
}
.title {
flex: 0 0 140rpx;
font-size: 28rpx;
color: #888888;
letter-spacing: 0;
font-weight: 400;
}
.value {
font-size: 28rpx;
color: #333333;
letter-spacing: 0;
font-weight: 400;
}
.look-over {
font-size: 28rpx;
color: #007aff;
letter-spacing: 0;
font-weight: 400;
}
}
}
}
.see-more {
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
height: 80rpx;
line-height: 80rpx;
background: #ffffff;
padding: 0rpx 32rpx;
font-size: 28rpx;
color: #007aff;
letter-spacing: 0;
text-align: center;
font-weight: 400;
.icon {
width: 24rpx;
height: 24rpx;
}
}
}
.card-box {
.header {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
height: 88rpx;
background: #ffffff;
padding: 0rpx 36rpx 0rpx 32rpx;
.title {
font-size: 30rpx;
color: #000000;
letter-spacing: 0;
font-weight: 600;
}
.desc {
font-size: 28rpx;
color: #888888;
letter-spacing: 0;
text-align: right;
font-weight: 400;
.bottom-btn {
position: relative;
z-index: 8;
}
.down-box {
position: absolute;
margin-top: 14rpx;
text-align: center;
right: 15rpx;
z-index: 10;
width: 204rpx;
height: 218.9rpx;
background: #ffffff;
border-radius: 6rpx;
padding: 0rpx 30rpx;
.row {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
height: 54rpx;
font-size: 22rpx;
color: #323233;
text-align: center;
font-weight: 400;
border-bottom: 1.6rpx solid #ebedf0;
}
.activeText {
color: #007aff;
}
}
.down-box::before {
content: '';
position: absolute;
width: 0;
height: 0;
border-bottom: solid 12rpx #ffffff;
border-right: solid 12rpx transparent;
border-left: solid 12rpx transparent;
left: 80%;
top: -12rpx;
margin-left: -12rpx;
}
}
}
.content {
border-bottom: 2rpx solid #dddddd;
border-top: 2rpx solid #dddddd;
.info {
display: flex;
flex-direction: row;
justify-content: space-around;
align-items: center;
text-align: center;
height: 148rpx;
background: #ffffff;
.value {
font-size: 28rpx;
color: #333333;
letter-spacing: 0;
text-align: center;
font-weight: 500;
}
.title {
margin-top: 16rpx;
font-size: 24rpx;
color: #888888;
letter-spacing: 0;
text-align: center;
font-weight: 400;
display: flex;
flex-direction: row;
align-items: center;
}
.icon {
width: 32rpx;
height: 32rpx;
padding-right: 6rpx;
}
}
.shrink-box {
background: #f7f8fa;
padding: 8rpx 36rpx 16rpx 32rpx;
.row {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
margin-top: 16rpx;
.left {
display: flex;
flex-direction: row;
width: 60%;
}
.right {
display: flex;
flex-direction: row;
width: 40%;
}
.title {
flex: 0 0 140rpx;
font-size: 28rpx;
color: #888888;
letter-spacing: 0;
font-weight: 400;
}
.value {
font-size: 28rpx;
color: #333333;
letter-spacing: 0;
font-weight: 400;
}
.look-over {
font-size: 28rpx;
color: #007aff;
letter-spacing: 0;
font-weight: 400;
}
}
}
}
.see-more {
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
height: 80rpx;
line-height: 80rpx;
background: #ffffff;
padding: 0rpx 32rpx;
font-size: 28rpx;
color: #007aff;
letter-spacing: 0;
text-align: center;
font-weight: 400;
.icon {
width: 24rpx;
height: 24rpx;
}
}
}
}
</style>

2
pages/client-list/index.vue

@ -106,6 +106,8 @@ export default {
// this.list = []
// this.list = [...this.list, ...[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]]
resolve({ list: this.list, total: res.total })
} else {
reject()
}
})
.catch((err) => {

574
pages/trade/orderList.vue

@ -1,45 +1,51 @@
<template>
<view class="order-list">
<uni-segmented-control :current="controlCurrent" :values="controlItems" @clickItem="onClickItem" styleType="text" activeColor="#007AFF"></uni-segmented-control>
<scroll-list style="touch-action: none" ref="orderRef" :option="orderOption" @load="orderUp" @refresh="orderDown">
<view v-for="(item, index) in list" :key="index">
<view class="list-border list-title-line">
<view class="">
<view class="list-title">{{ item.customerEnterpriseName }}</view>
<view class="list-title-subLine">{{ item.orderId }}</view>
</view>
<view class="">
<view class="list-title-Subtitle">{{ item.status | statusFilter }}</view>
<view class="list-title-subLine">{{ item.createTime }}</view>
</view>
</view>
<view class="list-border list-info-line" v-for="(subItem, subIndex) in item.supplierOrderList[0].orderItmes" :key="subIndex">
<view class="list-info">
<view class="">
<!-- <image class="list-image" :src="item.productImg" mode=""></image> -->
<image class="list-image" :src="subItem.productImg" mode=""></image>
</view>
<view class="list-info-contant">
<view class="list-info-title">{{ subItem.productName }}</view>
<view class="list-info-text">
{{ subItem.categoryName }}/{{ subItem.brandName }}/{{ item.gramWeight }}g/{{ subItem.length }}*{{ subItem.width }}/{{ subItem.pieceQuantity }}
</view>
</view>
</view>
</view>
<view class="list-border list-bottom-contant">
<view>
<text class="list-bottom-contant-text">交货时间</text>
<text class="list-bottom-contant-subtext">{{ item.deliveryLeadtime }}</text>
</view>
<view>
<text class="list-title-Subtitle subTitle-right">¥{{ item.totalOfferPrice }}</text>
</view>
</view>
<uGap></uGap>
</view>
</scroll-list>
</view>
<view class="order-list">
<uni-segmented-control
:current="controlCurrent"
:values="controlItems"
@clickItem="onClickItem"
styleType="text"
activeColor="#007AFF"
></uni-segmented-control>
<scroll-list style="touch-action: none" ref="orderRef" :option="orderOption" @load="orderUp" @refresh="orderDown">
<view v-for="(item, index) in list" :key="index">
<view class="list-border list-title-line">
<view class="">
<view class="list-title">{{ item.customerEnterpriseName }}</view>
<view class="list-title-subLine">{{ item.orderId }}</view>
</view>
<view class="">
<view class="list-title-Subtitle">{{ item.status | statusFilter }}</view>
<view class="list-title-subLine">{{ item.createTime }}</view>
</view>
</view>
<view class="list-border list-info-line" v-for="(subItem, subIndex) in item.supplierOrderList[0].orderItmes" :key="subIndex">
<view class="list-info">
<view class="">
<!-- <image class="list-image" :src="item.productImg" mode=""></image> -->
<image class="list-image" :src="subItem.productImg" mode=""></image>
</view>
<view class="list-info-contant">
<view class="list-info-title">{{ subItem.productName }}</view>
<view class="list-info-text">
{{ subItem.categoryName }}/{{ subItem.brandName }}/{{ item.gramWeight }}g/{{ subItem.length }}*{{ subItem.width }}/{{ subItem.pieceQuantity }}
</view>
</view>
</view>
</view>
<view class="list-border list-bottom-contant">
<view>
<text class="list-bottom-contant-text">交货时间</text>
<text class="list-bottom-contant-subtext">{{ item.deliveryLeadtime }}</text>
</view>
<view>
<text class="list-title-Subtitle subTitle-right">¥{{ item.totalOfferPrice }}</text>
</view>
</view>
<uGap></uGap>
</view>
</scroll-list>
</view>
</template>
<script>
@ -48,254 +54,256 @@ import scrollList from '@/components/scroll-list/scroll-list.vue'
// import { gettradingHallList } from '@/apis/trade'
import { getBasePaperDeals } from '@/apis/clientDetailApi.js'
export default {
// props: {
// queryOrderData: {
// type: Object,
// default: () => {}
// }
// },
components: {
uGap
},
filters: {
statusFilter(value) {
var name = ''
console.log('name', value)
if (value) {
switch (value) {
case 30100:
name = '待确认'
break
case 30204:
name = '待供应商确认'
break
case 30101:
name = '已下单'
break
case 30215:
name = '待还款'
break
case 30104:
name = '已完成'
break
case 30105:
name = '已取消'
break
// props: {
// queryOrderData: {
// type: Object,
// default: () => {}
// }
// },
components: {
uGap
},
filters: {
statusFilter(value) {
var name = ''
console.log('name', value)
if (value) {
switch (value) {
case 30100:
name = '待确认'
break
case 30204:
name = '待供应商确认'
break
case 30101:
name = '已下单'
break
case 30215:
name = '待还款'
break
case 30104:
name = '已完成'
break
case 30105:
name = '已取消'
break
default:
break
}
}
return name
}
},
data() {
return {
orderPagination: {
pageNum: 0, //
pageSize: 10
},
orderData: [],
controlCurrent: 0,
controlItems: ['全部', '待确认', '待发货', '已完成'],
orderOption: {
size: 10,
auto: true,
emptyText: '暂无报价信息~',
background: '#F7F8FA',
fontSize: '40rpx'
},
params: {
asc: '',
desc: '',
// customerEnterpriseId: this.$store.state.supplierInfo.id || null, // IDid
// mallSupplierId: this.$store.state.supplierInfo.supplierId || null, // id
customerEnterpriseId: '651107734133018624',
mallSupplierId: '670334117090562048', // id
status: '0', // 0 /30106,/30107,/30207,/30104
enterpriseIds: [] //ID
},
pagination: {
pageNum: 0, //
pageSize: 10
},
list: []
}
},
onLoad(option) {},
methods: {
//
getList() {
return new Promise((resolve, reject) => {
getBasePaperDeals({ ...this.params, ...this.pagination })
.then(res => {
console.log('订单列表', res)
if (res) {
if (this.pagination.pageNum == 1) {
this.list = res.records
} else {
this.list = this.list.concat(res.records)
}
// this.list = []
// this.list = [...this.list, ...[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]]
resolve({ list: this.list, total: res.total })
}
})
.catch(err => {
reject(err)
})
})
},
//
orderUp(page) {
this.orderPagination.pageNum++
this.getList()
.then(({ list, total }) => {
this.$refs.orderRef.refreshSuccess({ list, total })
})
.catch(() => {
this.$refs.orderRef.loadFail()
})
},
//
orderDown() {
this.orderPagination.pageNum = 1
this.getList()
.then(({ list, total }) => {
this.$refs.orderRef.refreshSuccess({ list, total })
})
.catch(() => {
this.$refs.orderRef.refreshFail()
})
},
//
onClickItem(value) {
console.log(value)
this.pagination.pageNum = 1
switch (value.currentIndex) {
case 0:
this.params.status = 0
break
case 1:
this.params.status = 30107
break
case 2:
this.params.status = 30106
break
case 3:
this.params.status = 30104
break
default:
break
}
}
return name
}
},
data() {
return {
orderPagination: {
pageNum: 0, //
pageSize: 10
},
orderData: [],
controlCurrent: 0,
controlItems: ['全部', '待确认', '待发货', '已完成'],
orderOption: {
size: 10,
auto: true,
emptyText: '暂无报价信息~',
background: '#F7F8FA',
fontSize: '40rpx'
},
params: {
asc: '',
desc: '',
// customerEnterpriseId: this.$store.state.supplierInfo.id || null, // IDid
// mallSupplierId: this.$store.state.supplierInfo.supplierId || null, // id
customerEnterpriseId: '651107734133018624',
mallSupplierId: '670334117090562048', // id
status: '0', // 0 /30106,/30107,/30207,/30104
enterpriseIds: [] //ID
},
pagination: {
pageNum: 0, //
pageSize: 10
},
list: []
}
},
onLoad(option) {},
methods: {
//
getList() {
return new Promise((resolve, reject) => {
getBasePaperDeals({ ...this.params, ...this.pagination })
.then((res) => {
console.log('订单列表', res)
if (res) {
if (this.pagination.pageNum == 1) {
this.list = res.records
} else {
this.list = this.list.concat(res.records)
}
// this.list = []
// this.list = [...this.list, ...[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]]
resolve({ list: this.list, total: res.total })
} else {
reject()
}
})
.catch((err) => {
reject(err)
})
})
},
//
orderUp(page) {
this.orderPagination.pageNum++
this.getList()
.then(({ list, total }) => {
this.$refs.orderRef.refreshSuccess({ list, total })
})
.catch(() => {
this.$refs.orderRef.loadFail()
})
},
//
orderDown() {
this.orderPagination.pageNum = 1
this.getList()
.then(({ list, total }) => {
this.$refs.orderRef.refreshSuccess({ list, total })
})
.catch(() => {
this.$refs.orderRef.refreshFail()
})
},
//
onClickItem(value) {
console.log(value)
this.pagination.pageNum = 1
switch (value.currentIndex) {
case 0:
this.params.status = 0
break
case 1:
this.params.status = 30107
break
case 2:
this.params.status = 30106
break
case 3:
this.params.status = 30104
break
default:
break
}
this.getList()
}
}
default:
break
}
this.getList()
}
}
}
</script>
<style lang="scss">
.order-list {
margin-bottom: 0px;
background: #ffffff;
.list-border {
border-bottom: 2rpx solid #dddddd;
}
.list-title-line {
width: 750rpx;
background: #ffffff;
display: flex;
justify-content: space-between;
padding: 20rpx 32rpx;
line-height: 58rpx;
align-items: center;
height: 120rpx;
}
.list-title-subLine {
font-size: 26rpx;
color: #888888;
letter-spacing: 0;
text-align: left;
line-height: 32rpx;
font-weight: 400;
}
.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;
}
.subTitle-right {
margin-right: 32rpx;
}
.list-info-line {
padding-left: 32rpx;
line-height: 70rpx;
// width: 750rpx;
// height: 88rpx;
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;
align-items: center;
padding-left: 32rpx;
width: 750rpx;
height: 80rpx;
background: #ffffff;
display: flex;
justify-content: space-between;
.list-bottom-contant-text {
font-size: 26rpx;
color: #888888;
letter-spacing: 0;
line-height: 32rpx;
font-weight: 400;
}
.list-bottom-contant-subtext {
font-size: 26rpx;
color: #333333;
letter-spacing: 0;
line-height: 32rpx;
font-weight: 400;
}
}
margin-bottom: 0px;
background: #ffffff;
.list-border {
border-bottom: 2rpx solid #dddddd;
}
.list-title-line {
width: 750rpx;
background: #ffffff;
display: flex;
justify-content: space-between;
padding: 20rpx 32rpx;
line-height: 58rpx;
align-items: center;
height: 120rpx;
}
.list-title-subLine {
font-size: 26rpx;
color: #888888;
letter-spacing: 0;
text-align: left;
line-height: 32rpx;
font-weight: 400;
}
.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;
}
.subTitle-right {
margin-right: 32rpx;
}
.list-info-line {
padding-left: 32rpx;
line-height: 70rpx;
// width: 750rpx;
// height: 88rpx;
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;
align-items: center;
padding-left: 32rpx;
width: 750rpx;
height: 80rpx;
background: #ffffff;
display: flex;
justify-content: space-between;
.list-bottom-contant-text {
font-size: 26rpx;
color: #888888;
letter-spacing: 0;
line-height: 32rpx;
font-weight: 400;
}
.list-bottom-contant-subtext {
font-size: 26rpx;
color: #333333;
letter-spacing: 0;
line-height: 32rpx;
font-weight: 400;
}
}
}
</style>

559
pages/trade/quotationList.vue

@ -1,59 +1,64 @@
<template>
<view class="quotation-list">
<scroll-list ref="quotationRef" :option="option" @load="quotationUp" @refresh="quotationDown">
<view v-for="(item, index) in list" :key="index">
<view class="list-border list-title-line">
<text class="list-title">{{ item.belongEnterpriseName }}</text>
<text class="list-title-Subtitle">{{ item.replyStatus | replyStatusName }}</text>
</view>
<view class="list-border list-info-line">
<view class="list-info " :class="(subIndex+1) === item.itemList.length ?'':'list-border'" v-for="(subItem, subIndex) in item.itemList" :key="subIndex">
<view class="">
<!-- <image class="list-image" src="../../static/logo.png" mode=""></image> -->
<image class="list-image" :src="subItem.productImg" mode=""></image>
</view>
<view class="list-info-contant">
<view class="list-info-title">{{subItem.brandName}}</view>
<view class="list-info-text">
{{subItem.categoryName}}/{{subItem.paperName}}/{{subItem.gramWeight}}g/{{subItem.length}}*{{subItem.width}}/{{subItem.quantity}}
</view>
</view>
</view>
<!-- <view class="list-info">
<view class="quotation-list">
<scroll-list ref="quotationRef" :option="option" @load="quotationUp" @refresh="quotationDown">
<view v-for="(item, index) in list" :key="index">
<view class="list-border list-title-line">
<text class="list-title">{{ item.belongEnterpriseName }}</text>
<text class="list-title-Subtitle">{{ item.replyStatus | replyStatusName }}</text>
</view>
<view class="list-border list-info-line">
<view
class="list-info"
:class="subIndex + 1 === item.itemList.length ? '' : 'list-border'"
v-for="(subItem, subIndex) in item.itemList"
:key="subIndex"
>
<view class="">
<!-- <image class="list-image" src="../../static/logo.png" mode=""></image> -->
<image class="list-image" :src="subItem.productImg" mode=""></image>
</view>
<view class="list-info-contant">
<view class="list-info-title">{{ subItem.brandName }}</view>
<view class="list-info-text">
{{ subItem.categoryName }}/{{ subItem.paperName }}/{{ subItem.gramWeight }}g/{{ subItem.length }}*{{ subItem.width }}/{{ subItem.quantity }}
</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>{{item.deliveryDay}}</text>
</view>
<view>
<text>交货区域</text>
<text>{{item.deliveryArea}}</text>
</view>
<view class="offer-class">
<view class="offer-width">
<text>报价截止</text>
<text>{{item.enquiryValidTime}}</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>
</view>
<view class="list-border list-bottom-contant">
<view>
<text>交货时间</text>
<text>{{ item.deliveryDay }}</text>
</view>
<view>
<text>交货区域</text>
<text>{{ item.deliveryArea }}</text>
</view>
<view class="offer-class">
<view class="offer-width">
<text>报价截止</text>
<text>{{ item.enquiryValidTime }}</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>
@ -61,238 +66,240 @@ import { getEnterpriseList } 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
},
props: {
queryData: {
type: Object,
default: () => {}
}
},
components: {
uGap
},
data() {
return {
option: {
size: 10,
auto: true,
emptyText: '暂无报价信息~',
background: '#F7F8FA',
fontSize: '40rpx'
},
params: {
asc: '',
desc: '',
// mallSupplierIds: [this.$store.state.supplierInfo.supplierId], // ID
mallSupplierIds: ['553703427180466176'] // ID
},
pagination: {
pageNum: 0, //
pageSize: 10
},
list: []
}
},
onLoad(option) {},
filters: {
replyStatusName(status) {
let name = ''
// 30128 30130 30139 30102
switch (status) {
case 30128:
name = '待报价'
break
case 30130:
name = '已报价'
break
case 30139:
name = '转化订单'
break
case 30102:
name = '已失效'
break
default:
break
}
return name
}
},
methods: {
//
getQuotationQurty() {
return new Promise((resolve, reject) => {
getEnterpriseList({ ...this.params, ...this.pagination })
.then(res => {
console.log('获取报价列表', res)
if (res) {
if (this.pagination.pageNum == 1) {
this.list = res.records
// this.list = []
// this.list = [{ name: '111', id: '222' }, { name: '111', id: '222' }]
} else {
this.list = this.list.concat(res.records)
}
resolve({ list: this.list, total: res.total })
}
})
.catch(err => {
reject(err)
})
})
},
data() {
return {
option: {
size: 10,
auto: true,
emptyText: '暂无报价信息~',
background: '#F7F8FA',
fontSize: '40rpx'
},
params: {
asc: '',
desc: '',
// mallSupplierIds: [this.$store.state.supplierInfo.supplierId], // ID
mallSupplierIds: ['553703427180466176'] // ID
},
pagination: {
pageNum: 0, //
pageSize: 10
},
list: []
}
},
onLoad(option) {},
filters: {
replyStatusName(status) {
let name = ''
// 30128 30130 30139 30102
switch (status) {
case 30128:
name = '待报价'
break
case 30130:
name = '已报价'
break
case 30139:
name = '转化订单'
break
case 30102:
name = '已失效'
break
default:
break
}
return name
}
},
methods: {
//
getQuotationQurty() {
return new Promise((resolve, reject) => {
getEnterpriseList({ ...this.params, ...this.pagination })
.then((res) => {
console.log('获取报价列表', res)
if (res) {
if (this.pagination.pageNum == 1) {
this.list = res.records
// this.list = []
// this.list = [{ name: '111', id: '222' }, { name: '111', id: '222' }]
} else {
this.list = this.list.concat(res.records)
}
resolve({ list: this.list, total: res.total })
} else {
reject()
}
})
.catch((err) => {
reject(err)
})
})
},
//
quotationUp(page) {
this.pagination.pageNum++
this.getQuotationQurty()
.then(({ list, total }) => {
this.$refs.quotationRef.refreshSuccess({ 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')
}
}
//
quotationUp(page) {
this.pagination.pageNum++
this.getQuotationQurty()
.then(({ list, total }) => {
this.$refs.quotationRef.refreshSuccess({ 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;
justify-content: space-between;
}
.offer-btn {
width: 150rpx;
height: 64rpx;
background: #007aff;
border: 2rpx solid #007aff;
border-radius: 8rpx;
line-height: 60rpx;
margin-right: 32rpx;
}
.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;
}
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;
justify-content: space-between;
}
.offer-btn {
width: 150rpx;
height: 64rpx;
background: #007aff;
border: 2rpx solid #007aff;
border-radius: 8rpx;
line-height: 60rpx;
margin-right: 32rpx;
}
.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