杨阁辉 4 years ago
parent
commit
b514fe877b
15 changed files with 857 additions and 571 deletions
  1. 44
      App.vue
  2. 11
      apis/commonApi.js
  3. 6
      pages/client-credit/index.vue
  4. 5
      pages/client-detail/base-paper-deals.vue
  5. 925
      pages/client-detail/basic-information.vue
  6. 5
      pages/client-detail/equipment-information.vue
  7. 285
      pages/client-detail/index.vue
  8. 6
      pages/client-list/index.vue
  9. 2
      pages/mine/index.vue
  10. 114
      pages/order-detail/index.vue
  11. 6
      pages/search/index.vue
  12. 9
      pages/trade/orderList.vue
  13. 7
      pages/trade/quotationList.vue
  14. BIN
      static/imgs/client/search-empty.png
  15. 3
      store/index.js

44
App.vue

@ -1,23 +1,29 @@
<script>
import { go2 } from '@/utils/hook.js'
import store from '@/store/index.js'
export default {
onLaunch: function () {
const token = store.state.qnToken
if (!token) {
go2('login')
}
},
onShow: function () {},
onHide: function () {}
}
</script>
<style>
/*每个页面公共css */
@import url('./common/css/reset.scss');
<script>
import { go2 } from '@/utils/hook.js'
import store from '@/store/index.js'
export default {
onLaunch: function() {
const token = store.state.qnToken
if (!token) {
go2('login')
}
},
onShow: function() {},
onHide: function() {}
}
</script>
<style>
/*每个页面公共css */
@import url('./common/css/reset.scss');
@import '@/static/icon/iconfont.css'; @import '@/static/icon/iconfont.css';
page { page {
height: 100%; height: 100%;
}
}
/* uni-dialog标题样式 */
.uni-dialog-title-text {
font-size: 32rpx !important;
color: #323233 !important;
font-weight: 500 !important;
}
</style> </style>

11
apis/commonApi.js

@ -28,11 +28,20 @@ let baseInfo = null
function syncStore(res) { function syncStore(res) {
if (res.enterpriseList && res.enterpriseList.length > 0) { if (res.enterpriseList && res.enterpriseList.length > 0) {
let supplierInfo = res.enterpriseList[0] let supplierInfo = res.enterpriseList[0]
let vipExpireTime = supplierInfo.supplier.vipExpireTime
let isVip = false
if (vipExpireTime) {
let now = new Date().getTime()
if (now < new Date(vipExpireTime).getTime()) {
isVip = true
}
}
store.commit('setSupplierInfo', { store.commit('setSupplierInfo', {
id: supplierInfo.id, id: supplierInfo.id,
name: supplierInfo.name, name: supplierInfo.name,
fddEnterpriseStatus: supplierInfo.fddEnterpriseStatus, fddEnterpriseStatus: supplierInfo.fddEnterpriseStatus,
supplierId: supplierInfo.supplier.id
supplierId: supplierInfo.supplier.id,
isVip
}) })
store.commit('setUserInfo', { name: supplierInfo.employeeName, userId: res.userId, mobile: res.mobile, avatar: null }) store.commit('setUserInfo', { name: supplierInfo.employeeName, userId: res.userId, mobile: res.mobile, avatar: null })
} }

6
pages/client-credit/index.vue

@ -91,6 +91,12 @@ export default {
hasCreditList: [] hasCreditList: []
} }
}, },
onLoad(option) {
if (option.enterpriseId) {
this.form.name = option.name
this.form.enterpriseId = option.enterpriseId
}
},
methods: { methods: {
back, back,
showCompany(e) { showCompany(e) {

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

@ -58,9 +58,10 @@ export default {
option: { option: {
size: 10, size: 10,
auto: true, auto: true,
emptyText: '暂无数据~',
emptyText: '暂无原纸交易~',
background: '#F7F8FA', background: '#F7F8FA',
disabled: false
disabled: false,
emptyImage: '/static/imgs/order/order-empty.png'
}, },
params: { params: {
asc: '', asc: '',

925
pages/client-detail/basic-information.vue

@ -1,117 +1,131 @@
<template> <template>
<view class="warpper">
<scroll-list ref="list" :option="option" @load="upCallback" @refresh="downCallback" style="background-color: #FFFFFF;">
<view class="card-box">
<view class="card-header">
<view class="left-text">基本信息</view>
<view class="right-text" @tap="gotoTap">跟进记录</view>
</view>
<view class="card-content">
<view class="info">
<image class="image" src="https://qncloud.oss-cn-shenzhen.aliyuncs.com/ztb_pic/testPic.jfif" mode=""></image>
<view class="content">
<view class="title">
<text class="text">{{info.name}}</text>
<image
class="icon"
:src="info.cooperation == 1 ? '/static/imgs/general/cooperation-icon.png' : '/static/imgs/general/no-cooperation-icon.png'"
></image>
</view>
<view class="desc u-line-2">
<text>主营{{ info.mainBusiness }}</text>
</view>
</view>
</view>
<view class="company-box">
<view>
<view><text class="title">法定代表人</text></view>
<view class="value">{{ info.legalPersonName }}</view>
</view>
<view class="">
<view><text class="title">注册资本</text></view>
<view class="value">{{ info.registeredCapital }}</view>
</view>
<view class="">
<view><text class="title">成立时间</text></view>
<view class="value">{{ transformDate(info.foundDate) }}</view>
</view>
</view>
<view class="site">
<image class="icon" src="/static/imgs/client-detail/address-icon.png"></image>
<text class="text">{{ info.locProvinceName }}{{ info.locCityName }}{{info.locDistrictName}}{{info.locStreetName}} {{ info.locDetail }}</text>
</view>
</view>
</view>
<uGap></uGap>
<view class="card-box">
<view class="card-header"><view class="left-text">工商信息</view></view>
<view class="card-content">
<view class="gs-info">
<view class="row">
<view class="info-title">
<text>
社会统一
<br />
信用代码
</text>
</view>
<view class="info-value"><text>{{info.uniformSocialCreditCode}}</text></view>
</view>
<view class="row">
<view class="info-title"><text>营业执照</text></view>
<view class="look-over" v-if="info.businessLicenseImg !== null" @tap="previewImg(info.businessLicenseImg, [info.businessLicenseImg])"><text>点击查看</text></view>
</view>
<view class="row">
<view class="info-title"><text>所属行业</text></view>
<view class="info-value"><text>{{info.belongIndustry}}</text></view>
</view>
<view class="row">
<view class="info-title"><text>登记状态</text></view>
<view class="info-value"><text>{{info.registrationStatus}}</text></view>
</view>
</view>
</view>
</view>
<uGap></uGap>
<view class="card-box">
<view class="card-header"><view class="left-text">厂房信息</view></view>
<view class="card-content">
<view class="cf-info">
<view class="row">
<view class="left">
<view class="title"><text>产房面积</text></view>
<view class="value"><text>{{info.plantArea}}m²</text></view>
</view>
<view class="right">
<view class="title"><text>年营业额</text></view>
<view class="value"><text>{{info.annualTurnover}}</text></view>
</view>
</view>
<view class="row">
<view class="left">
<view class="title"><text>产房照片</text></view>
<view class="look-over" v-if="info.factoryImgList !== null" @tap="previewImg(info.factoryImgList[0], info.factoryImgList)"><text>点击查看</text></view>
</view>
<view class="right">
<view class="title"><text>租赁合同</text></view>
<view class="look-over" v-if="info.leaseContract !== null" @tap="previewImg(info.leaseContract, [info.leaseContract])"><text>点击查看</text></view>
</view>
</view>
</view>
<view class="site">
<image class="icon" src="/static/imgs/client-detail/address-icon.png"></image>
<text class="text">{{info.factoryAddress}}</text>
</view>
</view>
</view>
<uGap></uGap>
<view class="card-box">
<view class="card-header"><view class="left-text">法律诉讼</view></view>
<view class="card-content" style="margin: 20rpx 0rpx;">
<view class="no-data">
暂无法律诉讼
</view>
<!-- <view class="fl-info" v-for="(item, index) in 2" :key="index">
<view class="warpper">
<scroll-list ref="list" :option="option" @load="upCallback" @refresh="downCallback" style="background-color: #ffffff">
<view class="card-box">
<view class="card-header">
<view class="left-text">基本信息</view>
<view class="right-text" @tap="gotoTap">跟进记录</view>
</view>
<view class="card-content">
<view class="info">
<image class="image" src="https://qncloud.oss-cn-shenzhen.aliyuncs.com/ztb_pic/testPic.jfif" mode=""></image>
<view class="content">
<view class="title">
<text class="text">{{ info.name }}</text>
<image
class="icon"
:src="info.cooperation == 1 ? '/static/imgs/general/cooperation-icon.png' : '/static/imgs/general/no-cooperation-icon.png'"
></image>
</view>
<view class="desc u-line-2">
<text>主营{{ info.mainBusiness }}</text>
</view>
</view>
</view>
<view class="company-box">
<view>
<view><text class="title">法定代表人</text></view>
<view class="value">{{ info.legalPersonName }}</view>
</view>
<view class="">
<view><text class="title">注册资本</text></view>
<view class="value">{{ info.registeredCapital }}</view>
</view>
<view class="">
<view><text class="title">成立时间</text></view>
<view class="value">{{ transformDate(info.foundDate) }}</view>
</view>
</view>
<view class="site">
<image class="icon" src="/static/imgs/client-detail/address-icon.png"></image>
<text class="text">{{ info.locProvinceName }}{{ info.locCityName }}{{ info.locDistrictName }}{{ info.locStreetName }} {{ info.locDetail }}</text>
</view>
</view>
</view>
<uGap></uGap>
<view class="card-box">
<view class="card-header"><view class="left-text">工商信息</view></view>
<view class="card-content">
<view class="gs-info">
<view class="row">
<view class="info-title">
<text>
社会统一
<br />
信用代码
</text>
</view>
<view class="info-value">
<text>{{ info.uniformSocialCreditCode }}</text>
</view>
</view>
<view class="row">
<view class="info-title"><text>营业执照</text></view>
<view class="look-over" v-if="info.businessLicenseImg !== null" @tap="previewImg(info.businessLicenseImg, [info.businessLicenseImg])">
<text>点击查看</text>
</view>
</view>
<view class="row">
<view class="info-title"><text>所属行业</text></view>
<view class="info-value">
<text>{{ info.belongIndustry }}</text>
</view>
</view>
<view class="row">
<view class="info-title"><text>登记状态</text></view>
<view class="info-value">
<text>{{ info.registrationStatus }}</text>
</view>
</view>
</view>
</view>
</view>
<uGap></uGap>
<view class="card-box">
<view class="card-header"><view class="left-text">厂房信息</view></view>
<view class="card-content">
<view class="cf-info">
<view class="row">
<view class="left">
<view class="title"><text>产房面积</text></view>
<view class="value">
<text>{{ info.plantArea }}m²</text>
</view>
</view>
<view class="right">
<view class="title"><text>年营业额</text></view>
<view class="value">
<text>{{ info.annualTurnover }}</text>
</view>
</view>
</view>
<view class="row">
<view class="left">
<view class="title"><text>产房照片</text></view>
<view class="look-over" v-if="info.factoryImgList !== null" @tap="previewImg(info.factoryImgList[0], info.factoryImgList)">
<text>点击查看</text>
</view>
</view>
<view class="right">
<view class="title"><text>租赁合同</text></view>
<view class="look-over" v-if="info.leaseContract !== null" @tap="previewImg(info.leaseContract, [info.leaseContract])">
<text>点击查看</text>
</view>
</view>
</view>
</view>
<view class="site">
<image class="icon" src="/static/imgs/client-detail/address-icon.png"></image>
<text class="text">{{ info.factoryAddress }}</text>
</view>
</view>
</view>
<uGap></uGap>
<view class="card-box">
<view class="card-header"><view class="left-text">法律诉讼</view></view>
<view class="card-content" style="margin: 20rpx 0rpx">
<view class="no-data">暂无法律诉讼</view>
<!-- <view class="fl-info" v-for="(item, index) in 2" :key="index">
<view class="row"> <view class="row">
<view class="title"> <view class="title">
<view class="left"> <view class="left">
@ -133,22 +147,20 @@
</view> </view>
</view> </view>
</view> --> </view> -->
</view>
<view class="see-more" v-if="false">
<view class="" @tap="seemoreTap">
<text>查看更多</text>
<image class="icon" :src="!seemoreFlag ? '/static/imgs/client-detail/arrow-up-icon.png' : '/static/imgs/client-detail/arrow-down-icon.png'"></image>
</view>
</view>
</view>
<uGap></uGap>
<view class="card-box">
<view class="card-header"><view class="left-text">经营异常</view></view>
<view class="card-content" style="margin: 20rpx 0rpx;">
<view class="no-data">
暂无经营异常
</view>
<!-- <view class="fl-info" v-for="(item, index) in 2" :key="index">
</view>
<view class="see-more" v-if="false">
<view class="" @tap="seemoreTap">
<text>查看更多</text>
<image class="icon" :src="!seemoreFlag ? '/static/imgs/client-detail/arrow-up-icon.png' : '/static/imgs/client-detail/arrow-down-icon.png'"></image>
</view>
</view>
</view>
<uGap></uGap>
<view class="card-box">
<view class="card-header"><view class="left-text">经营异常</view></view>
<view class="card-content" style="margin: 20rpx 0rpx">
<view class="no-data">暂无经营异常</view>
<!-- <view class="fl-info" v-for="(item, index) in 2" :key="index">
<view class="row"> <view class="row">
<view class="title"> <view class="title">
<view class="left"> <view class="left">
@ -175,16 +187,14 @@
</view> </view>
</view> </view>
</view> --> </view> -->
</view>
</view>
<uGap></uGap>
<view class="card-box">
<view class="card-header"><view class="left-text">征信信息</view></view>
<view class="card-content" style="margin: 20rpx 0rpx;">
<view class="no-data">
暂无征信信息
</view>
<!-- <view class="fl-info" v-for="(item, index) in 2" :key="index">
</view>
</view>
<uGap></uGap>
<view class="card-box">
<view class="card-header"><view class="left-text">征信信息</view></view>
<view class="card-content" style="margin: 20rpx 0rpx">
<view class="no-data">暂无征信信息</view>
<!-- <view class="fl-info" v-for="(item, index) in 2" :key="index">
<view class="row"> <view class="row">
<view class="other"> <view class="other">
<view class="left-text"><text>立案日期</text></view> <view class="left-text"><text>立案日期</text></view>
@ -204,350 +214,353 @@
</view> </view>
</view> </view>
</view> --> </view> -->
</view>
</view>
</scroll-list>
</view>
</view>
</view>
</scroll-list>
</view>
</template> </template>
<script> <script>
import uGap from '@/components/u-gap/u-gap.vue' import uGap from '@/components/u-gap/u-gap.vue'
import { getBaseInfo } from '@/apis/clientDetailApi'
import { getBaseInfo } from '@/apis/clientDetailApi'
import { go2 } from '@/utils/hook.js' import { go2 } from '@/utils/hook.js'
export default { export default {
components: {
uGap
},
props: {
customerId: {
type: String,
default: null
}
},
data() {
return {
option: {
size: 10,
auto: true,
emptyText: '暂无数据~',
background: '#F7F8FA',
disabled: true
},
info: {},
seemoreFlag: true
}
},
methods: {
gotoTap() {
go2('follow-up-records')
},
getBaseInfo() {
getBaseInfo({customerId: this.customerId }).then(res => {
// console.log('', res)
this.info = res
})
},
seemoreTap() {
this.seemoreFlag = !this.seemoreFlag
},
transformDate(date) {
if (date) {
return date.split('-').join('/')
}
return ''
},
previewImg(index, list) {
uni.previewImage({
urls: list,
current: index
});
},
downCallback() {},
upCallback() {}
}
components: {
uGap
},
props: {
customerId: {
type: String,
default: null
}
},
data() {
return {
option: {
size: 10,
auto: true,
emptyText: '暂无数据~',
background: '#F7F8FA',
disabled: true
},
info: {},
seemoreFlag: true
}
},
methods: {
gotoTap() {
go2('follow-up-records')
},
getBaseInfo() {
getBaseInfo({ customerId: this.customerId }).then((res) => {
// console.log('', res)
this.info = res
})
},
//
getCompanyInfo() {
return this.info
},
seemoreTap() {
this.seemoreFlag = !this.seemoreFlag
},
transformDate(date) {
if (date) {
return date.split('-').join('/')
}
return ''
},
previewImg(index, list) {
uni.previewImage({
urls: list,
current: index
})
},
downCallback() {},
upCallback() {}
}
} }
</script> </script>
<style lang="scss"> <style lang="scss">
.warpper { .warpper {
width: 750rpx;
height: 100%;
width: 750rpx;
height: 100%;
.card-box {
.card-header {
display: flex;
flex-direction: row;
justify-content: space-between;
height: 88rpx;
line-height: 88rpx;
border-bottom: 2rpx solid #dddddd;
padding: 0rpx 32rpx;
.card-box {
.card-header {
display: flex;
flex-direction: row;
justify-content: space-between;
height: 88rpx;
line-height: 88rpx;
border-bottom: 2rpx solid #dddddd;
padding: 0rpx 32rpx;
.left-text {
font-size: 30rpx;
color: #000000;
letter-spacing: 0;
font-weight: 600;
}
.left-text {
font-size: 30rpx;
color: #000000;
letter-spacing: 0;
font-weight: 600;
}
.right-text {
font-size: 28rpx;
color: #007aff;
letter-spacing: 0;
text-align: right;
font-weight: 400;
}
}
}
.right-text {
font-size: 28rpx;
color: #007aff;
letter-spacing: 0;
text-align: right;
font-weight: 400;
}
}
}
.card-content {
.info {
width: 750rpx;
display: flex;
flex-direction: row;
padding: 20rpx 32rpx;
.card-content {
.info {
width: 750rpx;
display: flex;
flex-direction: row;
padding: 20rpx 32rpx;
.image {
width: 140rpx;
height: 140rpx;
flex: 0 0 140rpx;
margin-right: 20rpx;
}
.image {
width: 140rpx;
height: 140rpx;
flex: 0 0 140rpx;
margin-right: 20rpx;
}
.content {
.title {
display: flex;
flex-direction: row;
align-items: center;
justify-content: flex-start;
.content {
.title {
display: flex;
flex-direction: row;
align-items: center;
justify-content: flex-start;
.text {
font-size: 32rpx;
color: #000000;
font-weight: 600;
}
.text {
font-size: 32rpx;
color: #000000;
font-weight: 600;
}
.icon {
width: 100rpx;
height: 32rpx;
flex-grow: 0;
flex-shrink: 0;
margin-left: 8rpx;
}
}
.icon {
width: 100rpx;
height: 32rpx;
flex-grow: 0;
flex-shrink: 0;
margin-left: 8rpx;
}
}
.desc {
margin-top: 14rpx;
font-size: 26rpx;
color: #333333;
line-height: 1.6;
}
}
}
}
.desc {
margin-top: 14rpx;
font-size: 26rpx;
color: #333333;
line-height: 1.6;
}
}
}
}
.company-box {
display: flex;
flex-direction: row;
justify-content: space-around;
align-items: center;
text-align: center;
padding: 34rpx 0rpx;
.company-box {
display: flex;
flex-direction: row;
justify-content: space-around;
align-items: center;
text-align: center;
padding: 34rpx 0rpx;
.title {
font-size: 24rpx;
color: #888888;
letter-spacing: 0;
text-align: center;
font-weight: 400;
}
.title {
font-size: 24rpx;
color: #888888;
letter-spacing: 0;
text-align: center;
font-weight: 400;
}
.value {
font-size: 28rpx;
color: #333333;
letter-spacing: 0;
text-align: center;
padding-top: 16rpx;
font-weight: 500;
}
}
.value {
font-size: 28rpx;
color: #333333;
letter-spacing: 0;
text-align: center;
padding-top: 16rpx;
font-weight: 500;
}
}
.site {
display: flex;
flex-direction: row;
align-items: center;
height: 80rpx;
line-height: 80rpx;
background: #ffffff;
border-top: 2rpx solid #dddddd;
padding: 0rpx 32rpx;
.site {
display: flex;
flex-direction: row;
align-items: center;
height: 80rpx;
line-height: 80rpx;
background: #ffffff;
border-top: 2rpx solid #dddddd;
padding: 0rpx 32rpx;
.icon {
width: 32rpx;
height: 32rpx;
flex-grow: 0;
flex-shrink: 0;
margin-right: 10rpx;
}
.icon {
width: 32rpx;
height: 32rpx;
flex-grow: 0;
flex-shrink: 0;
margin-right: 10rpx;
}
.text {
font-size: 26rpx;
color: #333333;
letter-spacing: 0;
text-align: left;
line-height: 32rpx;
font-weight: 400;
}
}
.see-more {
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
height: 80rpx;
line-height: 80rpx;
background: #ffffff;
border-top: 2rpx solid #dddddd;
padding: 0rpx 32rpx;
font-size: 28rpx;
color: #007aff;
letter-spacing: 0;
text-align: center;
font-weight: 400;
.icon {
width: 24rpx;
height: 24rpx;
}
}
.gs-info {
padding: 20rpx 32rpx;
.row {
display: flex;
flex-direction: row;
align-items: center;
margin-bottom: 16rpx;
}
}
.cf-info {
padding: 20rpx 32rpx;
.text {
font-size: 26rpx;
color: #333333;
letter-spacing: 0;
text-align: left;
line-height: 32rpx;
font-weight: 400;
}
}
.see-more {
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
height: 80rpx;
line-height: 80rpx;
background: #ffffff;
border-top: 2rpx solid #dddddd;
padding: 0rpx 32rpx;
font-size: 28rpx;
color: #007aff;
letter-spacing: 0;
text-align: center;
font-weight: 400;
.icon {
width: 24rpx;
height: 24rpx;
}
}
.gs-info {
padding: 20rpx 32rpx;
.row {
display: flex;
flex-direction: row;
align-items: center;
margin-bottom: 16rpx;
}
}
.cf-info {
padding: 20rpx 32rpx;
.row {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
margin-bottom: 16rpx;
}
.title {
flex: 0 0 150rpx;
font-size: 28rpx;
color: #888888;
letter-spacing: 0;
font-weight: 400;
margin-right: 8rpx;
}
.value {
font-size: 28rpx;
color: #333333;
letter-spacing: 0;
font-weight: 400;
}
.left {
display: flex;
flex-direction: row;
width: 60%;
}
.right {
display: flex;
flex-direction: row;
width: 40%;
}
}
.row {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
margin-bottom: 16rpx;
}
.title {
flex: 0 0 150rpx;
font-size: 28rpx;
color: #888888;
letter-spacing: 0;
font-weight: 400;
margin-right: 8rpx;
}
.value {
font-size: 28rpx;
color: #333333;
letter-spacing: 0;
font-weight: 400;
}
.left {
display: flex;
flex-direction: row;
width: 60%;
}
.right {
display: flex;
flex-direction: row;
width: 40%;
}
}
.fl-info {
padding-bottom: 20rpx;
padding-left: 32rpx;
padding-right: 32rpx;
.row {
background: #f7f8fa;
border-radius: 8px;
padding: 24rpx;
.title {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
font-size: 28rpx;
color: #333333;
letter-spacing: 0;
font-weight: 500;
margin-bottom: 20rpx;
.left {
display: flex;
flex-direction: row;
align-items: center;
}
.dot {
width: 10rpx;
height: 10rpx;
border-radius: 50%;
background: #adbac9;
margin-right: 8rpx;
}
.valid {
font-size: 28rpx;
color: #36cfc9;
letter-spacing: 0;
font-weight: 500;
}
}
.other {
display: flex;
flex-direction: row;
align-items: center;
font-size: 28rpx;
color: #888888;
letter-spacing: 0;
font-weight: 400;
margin-bottom: 16rpx;
.left-text {
width: 140rpx;
margin-right: 8rpx;
}
}
}
}
.info-title {
font-size: 28rpx;
color: #888888;
letter-spacing: 0;
font-weight: 400;
margin-right: 8rpx;
width: 140rpx;
}
.info-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;
}
.no-data {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
height: 160rpx;
font-size: 28rpx;
color: #888888;
letter-spacing: 0;
font-weight: 400;
}
.fl-info {
padding-bottom: 20rpx;
padding-left: 32rpx;
padding-right: 32rpx;
.row {
background: #f7f8fa;
border-radius: 8px;
padding: 24rpx;
.title {
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: center;
font-size: 28rpx;
color: #333333;
letter-spacing: 0;
font-weight: 500;
margin-bottom: 20rpx;
.left {
display: flex;
flex-direction: row;
align-items: center;
}
.dot {
width: 10rpx;
height: 10rpx;
border-radius: 50%;
background: #adbac9;
margin-right: 8rpx;
}
.valid {
font-size: 28rpx;
color: #36cfc9;
letter-spacing: 0;
font-weight: 500;
}
}
.other {
display: flex;
flex-direction: row;
align-items: center;
font-size: 28rpx;
color: #888888;
letter-spacing: 0;
font-weight: 400;
margin-bottom: 16rpx;
.left-text {
width: 140rpx;
margin-right: 8rpx;
}
}
}
}
.info-title {
font-size: 28rpx;
color: #888888;
letter-spacing: 0;
font-weight: 400;
margin-right: 8rpx;
width: 140rpx;
}
.info-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;
}
.no-data {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
height: 160rpx;
font-size: 28rpx;
color: #888888;
letter-spacing: 0;
font-weight: 400;
}
} }
</style> </style>

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

@ -122,9 +122,10 @@ export default {
option: { option: {
size: 10, size: 10,
auto: true, auto: true,
emptyText: '暂无数据~',
emptyText: '暂无设备信息~',
background: '#F7F8FA', background: '#F7F8FA',
disabled: false
disabled: false,
emptyImage: '/static/imgs/order/order-empty.png'
}, },
seemoreFlag: 0, seemoreFlag: 0,
params: { params: {

285
pages/client-detail/index.vue

@ -1,29 +1,33 @@
<template> <template>
<view class="warpper">
<qnHeader class="header">
<!-- <view class="header"> -->
<view class="header-title">客户详情</view>
<view class="right-title" @click="go2('client-credit')">客户授信</view>
<!-- </view> -->
</qnHeader>
<view>
<uni-segmented-control
:current="current"
:values="items"
@clickItem="onClickItem"
styleType="text"
activeColor="#007AFF"
class="segmented"
></uni-segmented-control>
<view class="warpper">
<qnHeader class="header">
<!-- <view class="header"> -->
<view class="header-title">客户详情</view>
<view class="right-title" @click="onCustomerCredit">客户授信</view>
<!-- </view> -->
</qnHeader>
<view>
<uni-segmented-control :current="current" :values="items" @clickItem="onClickItem" styleType="text" activeColor="#007AFF" class="segmented"></uni-segmented-control>
<view class="content">
<view v-show="current === 0"><basicInformation ref="basicInformationRef" :customerId="customerId"></basicInformation></view>
<view v-show="current === 1"><equipmentInformation></equipmentInformation></view>
<view v-show="current === 2"><basePaperDeals></basePaperDeals></view>
<view v-show="current === 3"><wastePaperTrading></wastePaperTrading></view>
</view>
</view>
</view>
<view class="content">
<view v-show="current === 0"><basicInformation ref="basicInformationRef" :customerId="customerId"></basicInformation></view>
<view v-show="current === 1"><equipmentInformation></equipmentInformation></view>
<view v-show="current === 2"><basePaperDeals></basePaperDeals></view>
<view v-show="current === 3"><wastePaperTrading></wastePaperTrading></view>
</view>
</view>
<uni-popup ref="popup" type="center" :mask-click="false">
<view class="popup-box">
<view class="header-title">{{ dialogTitle }}</view>
<view class="tip-title">{{ dialogContent }}</view>
<view class="operation-row">
<view class="cancel-text" @tap="cancelTap">取消</view>
<view class="line"></view>
<view class="confirm-text" @tap="confirmTap">{{ confirmText }}</view>
</view>
</view>
</uni-popup>
</view>
</template> </template>
<script> <script>
@ -33,64 +37,193 @@ import equipmentInformation from './equipment-information.vue'
import basePaperDeals from './base-paper-deals.vue' import basePaperDeals from './base-paper-deals.vue'
import wastePaperTrading from './waste-paper-trading.vue' import wastePaperTrading from './waste-paper-trading.vue'
import { go2 } from '@/utils/hook.js' import { go2 } from '@/utils/hook.js'
import { getBaseInfo, getVerifyUrl } from '@/apis/commonApi.js'
export default { export default {
components: {
qnHeader,
basicInformation,
equipmentInformation,
basePaperDeals,
wastePaperTrading
},
data() {
return {
current: 0,
items: ['基础信息', '设备信息', '原纸交易', '废纸交易'],
customerId: null
}
},
onLoad(option) {
this.customerId = option.id || '800890'
this.$nextTick(() => {
this.$refs.basicInformationRef.getBaseInfo()
})
},
methods: {
go2,
onClickItem(e) {
console.log('e', e)
this.current = e.currentIndex
}
}
components: {
qnHeader,
basicInformation,
equipmentInformation,
basePaperDeals,
wastePaperTrading
},
data() {
return {
current: 0,
items: ['基础信息', '设备信息', '原纸交易', '废纸交易'],
customerId: null,
dialogTitle: null,
dialogContent: null,
confirmText: null,
dialogType: 1 // 1: 2 3VIP
}
},
onLoad(option) {
this.customerId = option.id || '800890'
this.$nextTick(() => {
this.$refs.basicInformationRef.getBaseInfo()
})
},
onShow() {
this.$refs.popup.close()
},
methods: {
go2,
onClickItem(e) {
console.log('e', e)
this.current = e.currentIndex
},
//
onCustomerCredit() {
if (this.$store.state.supplierInfo == null) {
// store supplierInfo == null
this.dialogTitle = '您还未完善企业信息'
this.dialogContent = '请先完善企业基本信息才能对客户进行'
this.confirmText = '去完善'
this.dialogType = 1
this.$refs.popup.open()
} else if (this.$store.state.supplierInfo.fddEnterpriseStatus == 1) {
// supplierInfo.fddEnterpriseStatus == 1
this.dialogTitle = '未认证电子签约'
this.dialogContent = '客户授信过程需要进行电子合同签订,请先进行认证'
this.confirmText = '去认证'
this.dialogType = 2
this.$refs.popup.open()
} else if (!this.$store.state.supplierInfo.isVip) {
// vip supplierInfo isVip
this.dialogTitle = '未开通VIP'
this.dialogContent = '客户授信需要VIP权限,是否立即开通?'
this.confirmText = '去开通'
this.dialogType = 3
this.$refs.popup.open()
} else {
go2('client-credit')
}
},
cancelTap() {
this.$refs.popup.close()
},
confirmTap() {
switch (this.dialogType) {
case 1:
go2('enterprise-info')
break
case 2:
getVerifyUrl({ enterpriseId: this.$store.state.supplierInfo.id }).then(res => {
if (res) {
// #ifdef APP-PLUS
go2('page-view', { title: '实名认证', url: encodeURIComponent(res) })
// #endif
// #ifdef H5
window ? (window.location.href = res) : ''
// #endif
}
})
break
case 3:
break
default:
break
}
}
}
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.warpper { .warpper {
.header {
justify-content: space-between;
}
.header-title {
font-size: 36rpx;
color: #000000;
letter-spacing: 0;
text-align: center;
font-weight: 500;
}
.header {
justify-content: space-between;
}
.header-title {
font-size: 36rpx;
color: #000000;
letter-spacing: 0;
text-align: center;
font-weight: 500;
}
.right-title {
font-size: 28rpx;
color: #007aff;
text-align: center;
line-height: 40rpx;
font-weight: 500;
}
.segmented {
height: 88rpx;
border-bottom: 2rpx solid #ececec;
font-size: 28rpx;
color: #333333;
text-align: center;
font-weight: 400;
}
.right-title {
font-size: 28rpx;
color: #007aff;
text-align: center;
line-height: 40rpx;
font-weight: 500;
}
.segmented {
height: 88rpx;
border-bottom: 2rpx solid #ececec;
font-size: 28rpx;
color: #333333;
text-align: center;
font-weight: 400;
}
.account-dialog-text {
font-size: 28rpx;
color: #969799;
text-align: center;
line-height: 40rpx;
font-weight: 400;
}
.popup-box {
width: 540rpx;
height: 226rpx;
background: #ffffff;
border-radius: 14rpx;
.header-title {
font-size: 32rpx;
color: #323233;
text-align: center;
font-weight: 500;
padding-top: 48rpx;
}
.tip-title {
display: flex;
flex-direction: row;
justify-content: center;
align-items: center;
// height: 126rpx;
padding: 16rpx 48rpx 48rpx 48rpx;
font-size: 28rpx;
color: #969799;
letter-spacing: 0;
text-align: center;
font-weight: 400;
}
.operation-row {
border-radius: 14rpx;
display: flex;
flex-direction: row;
justify-content: space-around;
align-items: center;
height: 96rpx;
background: #ffffff;
border-top: 2rpx solid #dddddd;
.cancel-text {
flex-grow: 1;
flex-shrink: 1;
font-size: 32rpx;
color: #000000;
letter-spacing: 0;
text-align: center;
font-weight: 400;
}
.line {
flex-grow: 0;
flex-shrink: 0;
width: 2rpx;
height: 96rpx;
border-left: 2rpx solid #dcdee3;
}
.confirm-text {
flex-grow: 1;
flex-shrink: 1;
font-size: 32rpx;
color: #007aff;
text-align: center;
font-weight: 400;
}
}
}
} }
</style> </style>

6
pages/client-list/index.vue

@ -15,7 +15,7 @@
></uni-data-picker> ></uni-data-picker>
</view> --> </view> -->
<view> <view>
<uni-data-picker
<qn-data-picker
v-model="params.cooperationState" v-model="params.cooperationState"
:border="false" :border="false"
class="qn-picker" class="qn-picker"
@ -25,7 +25,7 @@
@change="onStatusChange" @change="onStatusChange"
:clear-icon="false" :clear-icon="false"
:localdata="cooperationStateList" :localdata="cooperationStateList"
></uni-data-picker>
></qn-data-picker>
</view> </view>
</qn-header> </qn-header>
<view class="content"> <view class="content">
@ -90,7 +90,7 @@ export default {
onStatusChange(e) { onStatusChange(e) {
this.pagination.pageNum = 1 this.pagination.pageNum = 1
this.$refs.list.refresh() this.$refs.list.refresh()
this.getList()
// this.getList()
// const value = e.detail.value // const value = e.detail.value
}, },
getList() { getList() {

2
pages/mine/index.vue

@ -275,7 +275,7 @@ export default {
onShow() { onShow() {
getBaseInfo({}, true).then((res) => { getBaseInfo({}, true).then((res) => {
if (res) { if (res) {
this.companyNum = res.enterpriseList.length
this.companyNum = res.enterpriseList?.length || 1
} }
}) })
}, },

114
pages/order-detail/index.vue

@ -35,7 +35,7 @@
<view <view
v-else-if="steps[index].length > 0 && steps[index][steps[index].length - 2].desc == '未完成'" v-else-if="steps[index].length > 0 && steps[index][steps[index].length - 2].desc == '未完成'"
class="button-item" class="button-item"
@click="operatePaper(index, 'outbound', 1000)"
@click="showModal(order, index)"
> >
出库 出库
</view> </view>
@ -145,6 +145,31 @@
</view> </view>
</view> </view>
</qn-footer> </qn-footer>
<uni-popup ref="popup" type="bottom">
<view class="popup_modal">
<slot name="title">
<view class="popup_modal-title">请输入出库数量</view>
</slot>
<view style="width: 750rpx; padding: 20rpx 32rpx">
<qn-easyinput
:maxlength="8"
:styles="{ disableColor: '#fff' }"
v-model="outInfo.quantity"
text="left"
type="number"
:placeholder="`出库上线${outInfo.max}`"
></qn-easyinput>
</view>
<view class="flex-row-center-space" style="margin-top: 40rpx; width: 750rpx; padding: 0 32rpx">
<view class="button button__submit" @click="makeOut">
<text class="text" style="color: white">确认</text>
</view>
<view class="button button__cancel" @click="closeModal">
<text class="text">取消</text>
</view>
</view>
</view>
</uni-popup>
</view> </view>
</template> </template>
@ -173,7 +198,12 @@ export default {
supplierOrderStatusEnum: Object.freeze(supplierOrderStatusEnum), supplierOrderStatusEnum: Object.freeze(supplierOrderStatusEnum),
paymentMethodEnum: Object.freeze(paymentMethodEnum), paymentMethodEnum: Object.freeze(paymentMethodEnum),
showList: ['send', 'receive'], showList: ['send', 'receive'],
steps: []
steps: [],
outInfo: {
quantity: 0,
max: 0,
index: 0
}
} }
}, },
onLoad(option) { onLoad(option) {
@ -194,6 +224,33 @@ export default {
methods: { methods: {
go2, go2,
back, back,
showModal(order, index) {
//
let quantity = 0
order.outboundProcessList.forEach((item) => {
if (item.status == '30302') {
quantity += item.quantity
}
})
this.outInfo.max = order.pieceQuantity - quantity
this.outInfo.index = index
this.$refs.popup.open('bottom')
},
closeModal() {
this.$refs.popup.close()
},
makeOut() {
//
if (this.outInfo.quantity > this.outInfo.max) {
uni.showToast({
title: '出库数量不能大于上限',
icon: 'none'
})
return
}
this.operatePaper(this.outInfo.index, 'outbound', this.outInfo.quantity)
this.closeModal()
},
transformAddress(address) { transformAddress(address) {
let res = '' let res = ''
if (address.provinceName) { if (address.provinceName) {
@ -634,4 +691,57 @@ export default {
z-index: 5; z-index: 5;
} }
} }
.popup_modal {
width: 750rpx;
height: 600rpx;
background-color: #fff;
border-radius: 10px 10px 0 0;
.popup_modal-title {
display: flex;
flex-direction: row;
align-items: center;
justify-content: center;
width: 750rpx;
height: 88rpx;
font-weight: 600;
border-bottom: 2rpx solid #d8d8d8;
}
.popup_modal-scroll {
width: 750rpx;
height: 600rpx;
.popup_modal-scroll-item {
display: flex;
flex-direction: row;
align-items: center;
justify-content: flex-start;
width: 750rpx;
height: 88rpx;
padding: 0rpx 32rpx;
border-bottom: 2rpx solid #d8d8d8;
}
}
}
.button {
flex-grow: 0;
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: center;
border-radius: 10rpx;
.text {
font-size: 30rpx;
font-weight: 500;
text-align: center;
}
}
.button__cancel {
width: 270rpx;
height: 88rpx;
border: 2rpx solid #979797;
}
.button__submit {
width: 400rpx;
height: 88rpx;
background: #007aff;
}
</style> </style>

6
pages/search/index.vue

@ -19,7 +19,7 @@
</view> </view>
</qn-header> </qn-header>
<view class="content"> <view class="content">
<view class="history-area" v-show="!packingList || packingList.length == 0">
<view class="history-area" v-show="(!packingList || packingList.length == 0) && enterpriseName == ''">
<view class="operation" v-show="historyList.length > 0"> <view class="operation" v-show="historyList.length > 0">
<text class="title">搜索历史</text> <text class="title">搜索历史</text>
<uni-icons type="trash" size="16" @click="clearHistory"></uni-icons> <uni-icons type="trash" size="16" @click="clearHistory"></uni-icons>
@ -30,6 +30,10 @@
</view> </view>
</view> </view>
</view> </view>
<view class="flex-col-center-start" v-show="packingList.length == 0 && enterpriseName != ''">
<image style="width: 500rpx; height: 280rpx; margin-top: 240rpx" src="/static/imgs/client/search-empty.png"></image>
<text style="font-size: 30rpx; color: #333333; margin-top: 50rpx">搜索无内容换个关键词在试一次吧</text>
</view>
<view class="packing-area" v-show="packingList.length > 0"> <view class="packing-area" v-show="packingList.length > 0">
<scroll-view scroll-y="true" class="scroll-area"> <scroll-view scroll-y="true" class="scroll-area">
<view class="search-item" v-for="item in packingList" :key="item.enterpriseId"> <view class="search-item" v-for="item in packingList" :key="item.enterpriseId">

9
pages/trade/orderList.vue

@ -68,14 +68,15 @@ export default {
auto: true, auto: true,
emptyText: '暂无订单信息~', emptyText: '暂无订单信息~',
background: '#F7F8FA', background: '#F7F8FA',
fontSize: '40rpx'
fontSize: '40rpx',
emptyImage: '/static/imgs/client-detail/no-data-icon.png'
}, },
params: { params: {
asc: '', asc: '',
desc: '', desc: '',
// customerEnterpriseId: this.$store.state.supplierInfo.id || null, // IDid
// mallSupplierId: this.$store.state.supplierInfo.supplierId || null, // id
customerEnterpriseId: '651107734133018624',
customerEnterpriseId: this.$store.state.supplierInfo.id || null, // IDid
mallSupplierId: this.$store.state.supplierInfo.supplierId || null, // id
// customerEnterpriseId: '651107734133018624',
// mallSupplierId: '670334117090562048', // id // mallSupplierId: '670334117090562048', // id
status: '0' // 0 /30106,/30107,/30207,/30104 status: '0' // 0 /30106,/30107,/30207,/30104
// enterpriseIds: [] //ID // enterpriseIds: [] //ID

7
pages/trade/quotationList.vue

@ -71,13 +71,14 @@ export default {
auto: true, auto: true,
emptyText: '暂无报价信息~', emptyText: '暂无报价信息~',
background: '#F7F8FA', background: '#F7F8FA',
fontSize: '40rpx'
fontSize: '40rpx',
emptyImage: '/static/imgs/client-detail/no-data-icon.png'
}, },
params: { params: {
asc: '', asc: '',
desc: '', desc: '',
// mallSupplierIds: [this.$store.state.supplierInfo.supplierId], // ID
mallSupplierIds: ['553703427180466176'] // ID
mallSupplierIds: [this.$store.state.supplierInfo.supplierId], // ID
// mallSupplierIds: ['553703427180466176'] // ID
}, },
pagination: { pagination: {
pageNum: 0, // pageNum: 0, //

BIN
static/imgs/client/search-empty.png

Before After
Width: 500  |  Height: 280  |  Size: 55 KiB

3
store/index.js

@ -15,11 +15,12 @@ let qnToken = null,
* @value supplierId 供应商id * @value supplierId 供应商id
* @value name 企业名称 * @value name 企业名称
* @value fddEnterpriseStatus 法大大认证状态 1未认证2认证进行中3认证成功4认证失败 * @value fddEnterpriseStatus 法大大认证状态 1未认证2认证进行中3认证成功4认证失败
* @value isVip 是否是vip企业
*/ */
supplierInfo = null, supplierInfo = null,
uecToken = null, uecToken = null,
searchHistory = null searchHistory = null
const supplierInfoParams = ['id', 'name', 'fddEnterpriseStatus', 'supplierId']
const supplierInfoParams = ['id', 'name', 'fddEnterpriseStatus', 'supplierId', 'isVip']
const userInfoParams = ['name', 'userId', 'mobile', 'avatar'] const userInfoParams = ['name', 'userId', 'mobile', 'avatar']
try { try {
uecToken = uni.getStorageSync('uecToken') uecToken = uni.getStorageSync('uecToken')

Loading…
Cancel
Save