From 04d60abd065f3b1f6c78588d939a47a81394fb0f Mon Sep 17 00:00:00 2001
From: yujialong <479214531@qq.com>
Date: Mon, 27 Jun 2022 15:05:26 +0800
Subject: [PATCH] =?UTF-8?q?bug=E4=BF=AE=E5=A4=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
apis/request.js | 2 +-
config/product.js | 3 +-
config/request.js | 2 +-
libs/util.js | 10 ++-
order/addCourse/addCourse.vue | 3 +-
order/editCourse/editCourse.vue | 118 +++++++++++++++-------------
order/orderDetail/orderDetail.vue | 46 ++++++++---
pages/clientDetail/clientDetail.vue | 84 +++++++++++++++-----
pages/index/index.vue | 1 +
pages/person/person.vue | 1 +
pages/qrcode/qrcode.vue | 6 +-
pages/teams/teams.vue | 1 +
static/image/school.png | Bin 0 -> 296 bytes
styles/common.scss | 6 ++
14 files changed, 191 insertions(+), 92 deletions(-)
create mode 100644 static/image/school.png
diff --git a/apis/request.js b/apis/request.js
index a4f1063..b42f7bb 100644
--- a/apis/request.js
+++ b/apis/request.js
@@ -19,7 +19,7 @@ const request = options => {
const { url } = options
uni.request({
header,
- url: (otherUrl.find(e => url.includes(e)) ? 'http://192.168.31.137:9000/' : config.baseURL) + url,
+ url: (otherUrl.find(e => url.includes(e)) ? 'http://192.168.31.151:9000/' : config.baseURL) + url,
method: options.method || 'GET', // 请求类型,默认为GET
data: options.data || {}, // 请求参数,默认空对象
success: ({ data }) => {
diff --git a/config/product.js b/config/product.js
index ea2a564..206e21d 100644
--- a/config/product.js
+++ b/config/product.js
@@ -5,5 +5,6 @@
*/
export default {
- normalIcon: 'https://huoran.oss-cn-shenzhen.aliyuncs.com/20220609/png/1534733700683030528.png' // 通用图标
+ normalIcon: 'https://huoran.oss-cn-shenzhen.aliyuncs.com/20220609/png/1534733700683030528.png', // 通用图标
+ dataIcon: 'https://huoran.oss-cn-shenzhen.aliyuncs.com/20220627/png/1541256164447641600.png' // 数据图标
}
diff --git a/config/request.js b/config/request.js
index c3aa89f..24cd55b 100644
--- a/config/request.js
+++ b/config/request.js
@@ -5,7 +5,7 @@
*/
export default {
- baseURL: 'http://192.168.31.137:9000/',
+ baseURL: 'http://192.168.31.151:9000/',
headers: {
'Content-Type': 'application/json;charset=UTF-8'
},
diff --git a/libs/util.js b/libs/util.js
index 2fdba01..9ba6d34 100644
--- a/libs/util.js
+++ b/libs/util.js
@@ -1,6 +1,8 @@
+import Product from '@/config/product'
+
const files = [
- 'https://huoran.oss-cn-shenzhen.aliyuncs.com/20220530/docx/1531155187057057792.docx',
- 'https://huoran.oss-cn-shenzhen.aliyuncs.com/20220530/docx/1531156166884220928.docx',
+ 'https://huoran.oss-cn-shenzhen.aliyuncs.com/20220530/docx/1531155187057057792.docx', // 用户服务协议
+ 'https://huoran.oss-cn-shenzhen.aliyuncs.com/20220530/docx/1531156166884220928.docx', // 用户隐私协议
'https://huoran.oss-cn-shenzhen.aliyuncs.com/20220601/docx/1531930503312596992.docx', // 人工智能
'https://huoran.oss-cn-shenzhen.aliyuncs.com/20220601/docx/1531930756791164928.docx', // 大数据
'https://huoran.oss-cn-shenzhen.aliyuncs.com/20220601/docx/1531929864150999040.docx', // 金融科技
@@ -65,6 +67,10 @@ export default {
getBmName(val) {
return uni.getStorageSync('team').partnerClassificationName
},
+ // 返回图标。如果有图标,则直接返回,否则判断是否是数据产品,即productType=2,如果是,则取数据图标,否则则显示通用图标,这两个图标都在config/product.js里有配置
+ getIcon(e) {
+ return e.miniProgramPictureAddress || (e.productType === 2 ? Product.dataIcon : Product.normalIcon)
+ },
// 预览文档
openFile(id) {
uni.showLoading({
diff --git a/order/addCourse/addCourse.vue b/order/addCourse/addCourse.vue
index 6e94c0f..e534a2f 100644
--- a/order/addCourse/addCourse.vue
+++ b/order/addCourse/addCourse.vue
@@ -11,7 +11,7 @@
-
checkChange(e, i)">
-
+
{{ item.productName }}
@@ -186,6 +186,7 @@
marketValue: '', // 市场价
marketPrice: e.marketPrice, // 市场单价
finalPrice: trial ? 0 : '', // 成交价
+ finalValue: trial ? 0 : '', // 成交单价(数据产品特有)
discountRate: trial ? '0%' : '', // 折扣率
accountNum: e.productType === 2 ? '' : 1, // 账号数
totalAmount: '', // 总价
diff --git a/order/editCourse/editCourse.vue b/order/editCourse/editCourse.vue
index 47eb894..cb13d64 100644
--- a/order/editCourse/editCourse.vue
+++ b/order/editCourse/editCourse.vue
@@ -8,7 +8,7 @@
-
+
{{ item.productName }}
@@ -18,18 +18,15 @@
产品类型
{{ productTypes.find(e => e.id === item.productType).name }}
-
+
使用期限
-
-
- {{ units.find(e => e.value === item.options).text }}
+
+
+ {{ units.find(e => e.id === item.options).text }}
-
-
-
-
+
起止日期
@@ -37,10 +34,10 @@
-
+
数量
1
-
+
{{ item.authority ? '市场价' : '市场单价' }}
@@ -58,10 +55,10 @@
平台服务费
{{ item.serviceFee }}元
-
+
成交价
-
+
元
@@ -85,14 +82,15 @@
timer: null,
units: [{
text: '日',
- value: 0
+ id: 0
}, {
text: '月',
- value: 1
+ id: 1
}, {
text: '年',
- value: 2
+ id: 2
}],
+ unitText: ['日', '月', '年'],
productTypes: [
{
name: '实训课程',
@@ -109,7 +107,8 @@
],
courses: {} , // 上一页缓存的产品
orderRepeat: [],
- repeatMsg: ''
+ repeatMsg: '',
+ err: ''
}
},
onShow() {
@@ -154,6 +153,16 @@
uni.removeStorageSync('courses')
} catch (e) {}
},
+ selectUnit(item) {
+ const that = this
+ uni.showActionSheet({
+ title: '标题',
+ itemList: that.unitText,
+ success: ({ tapIndex }) => {
+ item.options = tapIndex
+ }
+ })
+ },
showUnit(i) {
this.$refs.unit[i].show()
},
@@ -233,43 +242,35 @@
},
// 计算结算价及平台服务费
dealSettlePrice(row) {
- console.log(33, row)
- clearTimeout(this.timer)
- this.timer = setTimeout(() => {
- const unit = row.options // 使用期限单位
- const useUnit = row.periodOfUse // 使用期限
- let sPrice = ''
- if (row.settlementMethod == 0) {
- // 结算单价。计算规则:结算单价(**元/年)*购买时长(单位年)*数量(课程为1,数据为账号数量)
- const priceUnit = row.settlementPriceUnit
- sPrice = ((!unit ?
- priceUnit / 365 * useUnit :
- unit === 1 ?
- priceUnit / 12 * useUnit :
- priceUnit * useUnit) * (row.authority ?
- 1 :
- row.accountNum)).toFixed((2))
- } else {
- // 比例分成。计算规则:成交价*商务分成比例
- sPrice = (row.finalPrice * row.businessProportion / 100).toFixed((2))
- }
- row.settlementPrice = this.$util.handleNaN(sPrice)
- // 平台服务费(结算价*10%)
- if (row.settlementPrice) {
- row.serviceFee = (row.settlementPrice * 0.1).toFixed(2)
- }
- }, 500)
+ const unit = row.options // 使用期限单位
+ const useUnit = row.periodOfUse // 使用期限
+ let sPrice = ''
+ if (row.settlementMethod == 0) {
+ // 结算单价。计算规则:结算单价(**元/年)*购买时长(单位年)*数量(课程为1,数据为账号数量)
+ const priceUnit = row.settlementPriceUnit
+ sPrice = ((!unit ?
+ priceUnit / 365 * useUnit :
+ unit === 1 ?
+ priceUnit / 12 * useUnit :
+ priceUnit * useUnit) * (row.authority ?
+ 1 :
+ row.accountNum)).toFixed((2))
+ } else {
+ // 比例分成。计算规则:成交价*商务分成比例
+ sPrice = (row.finalPrice * row.businessProportion / 100).toFixed((2))
+ }
+ row.settlementPrice = this.$util.handleNaN(sPrice)
+ // 平台服务费(结算价*10%)
+ if (row.settlementPrice) {
+ row.serviceFee = (row.settlementPrice * 0.1).toFixed(2)
+ }
},
// 计算折扣率
calcDiscount(row) {
- clearTimeout(this.timer)
- this.timer = setTimeout(() => {
- const price = row.authority ? row.finalPrice : row.finalValue
- const { marketValue } = row
- console.log(66, row)
- // (原价-现价)÷原价 x100%
- if (price) row.discountRate = marketValue != 0 ? ((marketValue - price) / marketValue * 100).toFixed(2) + '%' : '0%'
- }, 500)
+ const price = row.authority ? row.finalPrice : row.finalValue
+ const { marketValue } = row
+ // (原价-现价)÷原价 x100%
+ if (price) row.discountRate = marketValue != 0 ? ((marketValue - price) / marketValue * 100).toFixed(2) + '%' : '0%'
},
// 成交价修改后,计算成交单价,数据才需要 计算规则:成交价/账号数/时间(成交单价为元/账号/年,所以时间要换算成年的单位去计算)
calcFinalValue(row) {
@@ -297,9 +298,9 @@
} else if (!finalValue && finalPrice) {
// 有成交价,没有成交单价,则成交单价=成交价/账号数/时间
row.finalValue = (finalPrice / periodOfUse / accountNum).toFixed(2)
- this.calculateDiscount(e, row)
+ this.calcDiscount(row)
}
- } else if (finalValue && finalValue && !row.authority) {
+ } else if (finalValue && finalPrice && !row.authority) {
// 有成交价、成交单价,没有数量,则数量=成交价/时间/成交单价
row.accountNum = Math.floor(finalPrice / periodOfUse / finalValue)
}
@@ -307,6 +308,10 @@
this.dealSettlePrice(row)
}, 500)
},
+ // 处理错误提示
+ handleErr(e, val) {
+ if (val + e.dataOrCourseId + e.authority === this.err) this.err = ''
+ },
// 确定
submit() {
const courses = this.courses
@@ -316,26 +321,33 @@
for (const i in courses) {
list.push(...courses[i].list)
}
+ console.log(11, list)
// 必填校验
for (const i in list) {
const e = list[i]
+ const suf = e.dataOrCourseId + '' + e.authority
if (e.periodOfUse === '') {
+ this.err = 'periodOfUse' + suf
msg = '请输入使用期限!'
break
}
if (!e.startTime) {
+ this.err = 'startTime' + suf
msg = '请选择起止日期!'
break
}
if (e.accountNum === '') {
+ this.err = 'accountNum' + suf
msg = '请输入数量!'
break
}
if (e.finalPrice === '') {
+ this.err = 'finalPrice' + suf
msg = '请输入成交价!'
break
}
}
+ console.log(33, this.err)
if (msg) return this.$util.errMsg(msg)
if (this.orderRepeat.length) return this.$util.errMsg(this.repeatMsg) // 有重复订单不能提交
uni.setStorageSync('courses', this.courses)
diff --git a/order/orderDetail/orderDetail.vue b/order/orderDetail/orderDetail.vue
index 0194905..a53cda5 100644
--- a/order/orderDetail/orderDetail.vue
+++ b/order/orderDetail/orderDetail.vue
@@ -5,9 +5,9 @@
商务经理
- {{ userName }}
+ {{ form.businessManagerName }}
-
+
客户名称
{{ form.customerName }}
{{ form.customerName || '请选择客户' }}
@@ -32,9 +32,9 @@
邮箱
{{ form.email }}
-
+
订单类型
- {{ form.industryClassName }}
+ {{ orderTypes.find(e => e.value === form.orderType).text }}
@@ -60,7 +60,7 @@
-
+
{{ item.productName }}
@@ -142,7 +142,6 @@
data() {
return {
isDetail: false,
- userName: uni.getStorageSync('team').userName,
orderId: '',
orderTypes: [{
text: '正式',
@@ -152,6 +151,7 @@
value: 2
}],
form: {
+ businessManagerName: uni.getStorageSync('team').userName,
// orderNumber: '', // 编号
provinceId: '', // 省份id
provinceName: '',
@@ -186,6 +186,7 @@
searchTimer: null,
customerList: [],
customerListAll: [],
+ err: ''
}
},
onShow() {
@@ -312,6 +313,7 @@
queryCustomerDetails({
customerId: item.customerId
}).then(({ result }) => {
+ this.handleErr('customerName')
const e = result.customer
form.customerId = e.customerId
form.customerName = e.customerName
@@ -368,6 +370,7 @@
},
// 计算订单总额
calcTotal() {
+ this.handleErr('orderType')
const { form } = this
const isTrial = form.orderType === 2 // 是否试用
let total = 0
@@ -394,15 +397,28 @@
form.profit = isTrial ? 0 : Math.round(profit)
form.orderAmount = isTrial ? 0 : +form.purchaseCost + +form.profit
},
+ // 处理错误提示
+ handleErr(val) {
+ if (val === this.err) this.err = ''
+ },
// 提交
submit() {
const { form, courses } = this
- if (!form.customerId) return this.$util.errMsg('请选择客户!')
- if (!form.orderType) return this.$util.errMsg('请选择订单类型!')
+ if (!form.customerId) {
+ this.err = 'customerName'
+ return this.$util.errMsg('请选择客户!')
+ }
+ if (!form.orderType) {
+ this.err = 'orderType'
+ return this.$util.errMsg('请选择订单类型!')
+ }
if (!courses.length) return this.$util.errMsg('请选择课程权限或数据权限后再确认订单!')
courses.map(e => {
e.startTime = this.$util.formatDate(new Date(e.startTime), 'yyyy-MM-dd')
})
+ uni.showLoading({
+ title: '提交中'
+ })
const data = {
contractInformation: this.contract, // 合同信息
order: form, // 订单基本数据
@@ -410,18 +426,24 @@
}
if (this.orderId) {
update(data).then(res => {
+ uni.hideLoading()
this.$util.sucMsg('编辑成功')
setTimeout(() => {
uni.navigateBack()
}, 1500)
- }).catch(res => {})
+ }).catch(res => {
+ uni.hideLoading()
+ })
} else {
add(data).then(res => {
+ uni.hideLoading()
this.$util.sucMsg('添加成功')
setTimeout(() => {
uni.navigateBack()
}, 1500)
- }).catch(res => {})
+ }).catch(res => {
+ uni.hideLoading()
+ })
}
}
}
@@ -430,10 +452,10 @@