yujialong 1 year ago
parent fc2fc8bb17
commit 5a441a2188
  1. 43
      order/addCourse/addCourse.vue
  2. 2
      order/clientDetail/clientDetail.vue
  3. 4
      order/editCourse/editCourse.vue
  4. 229
      order/orderDetail/orderDetail.vue
  5. 55
      order/ordered/ordered.vue
  6. 8
      order/orders/orders.vue
  7. 10
      order/products/products.vue
  8. 6
      pages/teams/teams.vue

@ -127,7 +127,7 @@
isShelves: 0, isShelves: 0,
hotTag: 1, hotTag: 1,
productName: this.keyword, productName: this.keyword,
productType: this.curTab, productClassification: this.curTab,
}).then(({ page }) => { }).then(({ page }) => {
const { records } = page const { records } = page
const list = this.courses const list = this.courses
@ -167,8 +167,8 @@
this.getList() this.getList()
}, },
// tab // tab
tabChange(tab) { tabChange(id) {
this.curTab = tab.id this.curTab = id
this.initList() this.initList()
}, },
// //
@ -232,16 +232,16 @@
miniProgramPictureAddress: e.appletIcon || '', // miniProgramPictureAddress: e.appletIcon || '', //
settlementPrice: trial ? 0 : '', // settlementPrice: trial ? 0 : '', //
settlementPriceUnit: e.settlementPrice || 0, // settlementPriceUnit: e.settlementPrice || 0, //
serviceFee: 0 // serviceFee: 0, //
mallNonAssociatedLinks: e.mallNonAssociatedLinks //
} }
}, },
// //
handleRenew(authority, customerId, productId, mallId, result, resolve, reject) { handleRenew(authority, customerId, productId, result, resolve, reject) {
renew({ renew({
authority, authority,
customerId, customerId,
productId, productId,
mallId
}).then(({ orderOthers }) => { }).then(({ orderOthers }) => {
result.map(e => { result.map(e => {
const item = orderOthers.find(n => n.dataOrCourseId == e.dataOrCourseId && n.authority == authority && e.authority == authority) const item = orderOthers.find(n => n.dataOrCourseId == e.dataOrCourseId && n.authority == authority && e.authority == authority)
@ -267,12 +267,6 @@
const list2 = [] // const list2 = [] //
const list3 = [] // const list3 = [] //
const list4 = [] // const list4 = [] //
const mallId1 = [] //
const mallId0 = [] //
const mallId2 = [] //
const mallId3 = [] //
const mallId4 = [] //
const { customerId } = this const { customerId } = this
const listPromise = [] const listPromise = []
@ -290,20 +284,15 @@
const pid = +e.associatedProduct const pid = +e.associatedProduct
const mallId = e.mallId const mallId = e.mallId
if (classId == 1 || classId == 2) { if (classId == 1 || classId == 2) {
list1.push(pid) list1.push(mallId)
mallId1.push(mallId)
} else if (classId == 3) { } else if (classId == 3) {
list2.push(pid) list2.push(mallId)
mallId2.push(mallId)
} else if (classId == 4) { } else if (classId == 4) {
list3.push(pid) list3.push(mallId)
mallId3.push(mallId)
} else if (classId == 5) { } else if (classId == 5) {
list0.push(pid) list0.push(mallId)
mallId0.push(mallId)
} else if (classId == 6) { } else if (classId == 6) {
list4.push(pid) list4.push(mallId)
mallId4.push(mallId)
} }
result.push(this.createParam(e, this.$util.getOrderType(classId))) result.push(this.createParam(e, this.$util.getOrderType(classId)))
resolve() resolve()
@ -316,19 +305,19 @@
const promises = [] const promises = []
// 5authorityrenew // 5authorityrenew
list0.length && promises.push(new Promise((resolve, reject) => { list0.length && promises.push(new Promise((resolve, reject) => {
this.handleRenew(0, customerId, list0, mallId0, result, resolve, reject) this.handleRenew(0, customerId, list0, result, resolve, reject)
})) }))
list1.length && promises.push(new Promise((resolve, reject) => { list1.length && promises.push(new Promise((resolve, reject) => {
this.handleRenew(1, customerId, list1, mallId1, result, resolve, reject) this.handleRenew(1, customerId, list1, result, resolve, reject)
})) }))
list2.length && promises.push(new Promise((resolve, reject) => { list2.length && promises.push(new Promise((resolve, reject) => {
this.handleRenew(2, customerId, list2, mallId2, result, resolve, reject) this.handleRenew(2, customerId, list2, result, resolve, reject)
})) }))
list3.length && promises.push(new Promise((resolve, reject) => { list3.length && promises.push(new Promise((resolve, reject) => {
this.handleRenew(3, customerId, list3, mallId3, result, resolve, reject) this.handleRenew(3, customerId, list3, result, resolve, reject)
})) }))
list4.length && promises.push(new Promise((resolve, reject) => { list4.length && promises.push(new Promise((resolve, reject) => {
this.handleRenew(4, customerId, list4, mallId4, result, resolve, reject) this.handleRenew(4, customerId, list4, result, resolve, reject)
})) }))
Promise.all(promises).then(_ => { Promise.all(promises).then(_ => {
uni.setStorageSync('courses', result) // uni.setStorageSync('courses', result) //

@ -94,7 +94,7 @@
<uni-icons class="icon" custom-prefix="iconfont" type="icon-product" size="30" color="#959595"></uni-icons> <uni-icons class="icon" custom-prefix="iconfont" type="icon-product" size="30" color="#959595"></uni-icons>
<view class="text">已订阅产品</view> <view class="text">已订阅产品</view>
</view> </view>
<view class="item" @click="toPage(`/order/curClient/curClient?customerId=${customerId}&name=${form.customerName}`)"> <view v-if="auth('订单管理')" class="item" @click="toPage(`/order/curClient/curClient?customerId=${customerId}&name=${form.customerName}`)">
<uni-icons class="icon" custom-prefix="iconfont" type="icon-dingdan" size="30" color="#959595"></uni-icons> <uni-icons class="icon" custom-prefix="iconfont" type="icon-dingdan" size="30" color="#959595"></uni-icons>
<view class="text">订单</view> <view class="text">订单</view>
</view> </view>

@ -22,7 +22,6 @@
<view class="name">使用期限</view> <view class="name">使用期限</view>
<view class="period-wrap"> <view class="period-wrap">
<input class="period" type="number" v-model="item.periodOfUse" placeholder="请输入" :disabled="isEdit" @input="calcDate(item, !item.authority)" @change="handleErr(item, 'periodOfUse')"> <input class="period" type="number" v-model="item.periodOfUse" placeholder="请输入" :disabled="isEdit" @input="calcDate(item, !item.authority)" @change="handleErr(item, 'periodOfUse')">
<uni-icons class="edit" type="compose" size="20" color="#b3b3b3"></uni-icons>
</view> </view>
<view v-if="isEdit">{{ units.find(e => e.id === item.options).text }}</view> <view v-if="isEdit">{{ units.find(e => e.id === item.options).text }}</view>
<view v-else class="val unit" @click="selectUnit(item)"> <view v-else class="val unit" @click="selectUnit(item)">
@ -56,7 +55,6 @@
<view class="inline"> <view class="inline">
<input type="number" v-model="item.settlementPrice" placeholder="请输入" @change="handleErr(item, 'settlementPrice')"> <input type="number" v-model="item.settlementPrice" placeholder="请输入" @change="handleErr(item, 'settlementPrice')">
<uni-icons class="edit" type="compose" size="20" color="#b3b3b3"></uni-icons>
</view> </view>
</view> </view>
<view class="line"> <view class="line">
@ -72,7 +70,6 @@
<view class="inline"> <view class="inline">
<input type="number" v-model="item.finalPrice" placeholder="请输入" :disabled="isEdit && !item.authority" @input="calcFinalValue(item)" @change="handleErr(item, 'finalPrice')"> <input type="number" v-model="item.finalPrice" placeholder="请输入" :disabled="isEdit && !item.authority" @input="calcFinalValue(item)" @change="handleErr(item, 'finalPrice')">
<uni-icons class="edit" type="compose" size="20" color="#b3b3b3"></uni-icons>
</view> </view>
</view> </view>
</view> </view>
@ -280,7 +277,6 @@
getPartnerTeamRates({ getPartnerTeamRates({
teamId: this.teamId teamId: this.teamId
}).then(({ teamRates }) => { }).then(({ teamRates }) => {
console.log('teamRates=>',teamRates)
this.rate = teamRates.annualMarketingFee || 0 this.rate = teamRates.annualMarketingFee || 0
}).catch(res => {}) }).catch(res => {})
}, },

@ -80,7 +80,7 @@
<button v-if="item.status === 1 || isHandle || !orderId && auth('订单管理:发货')" class="course-btn" type="primary" @click.stop="handleDeliver(n, i)">{{ item.ship ? '取消' : ''}}发货</button> <button v-if="item.status === 1 || isHandle || !orderId && auth('订单管理:发货')" class="course-btn" type="primary" @click.stop="handleDeliver(n, i)">{{ item.ship ? '取消' : ''}}发货</button>
<button v-else-if="!isDetail && auth('订单管理:启用')" class="course-btn" type="primary" @click.stop="handleEnable(n, i)">{{ item.isEnable ? '禁用' : '启用'}}</button> <button v-else-if="!isDetail && auth('订单管理:启用')" class="course-btn" type="primary" @click.stop="handleEnable(n, i)">{{ item.isEnable ? '禁用' : '启用'}}</button>
<image v-if="!orderId || isRenew" class="del" src="@/static/image/trash.png" mode="widthFix" @click.stop="delCourse(c, i)"></image> <image v-if="!orderId || isRenew" class="del" src="@/static/image/trash.png" mode="widthFix" @click.stop="delCourse(c, i)"></image>
<button v-if="(item.authority == 3 || item.authority == 4) && ((item.mallNonAssociatedLinks && item.mallNonAssociatedLinks.length) || item.shipContent)" class="course-btn" type="primary" @click.stop="showShip(item)">发货信息</button> <button v-if="(item.authority == 3 || item.authority == 4) && ((item.mallNonAssociatedLinks && item.mallNonAssociatedLinks.length) || item.shipContent)" class="course-btn mg" type="primary" @click.stop="showShip(item)">发货信息</button>
</view> </view>
</view> </view>
@ -88,7 +88,7 @@
<view class="line"> <view class="line">
<view class="label">起始日期</view> <view class="label">起始日期</view>
<!-- <view class="val">{{ item.startTime + (item.endTime && ' - ' + item.endTime) }}</view> --> <!-- <view class="val">{{ item.startTime + (item.endTime && ' - ' + item.endTime) }}</view> -->
<view v-if="!isHandle">{{ item.endTime ? item.startTime + ' - ' + item.endTime : item.startTime}}</view> <view v-if="isDetail || isEdit">{{ item.endTime ? item.startTime + ' - ' + item.endTime : item.startTime}}</view>
<uni-datetime-picker v-else type="date" v-model="item.startTime" :border="false" @change="calcDate(item)"> <uni-datetime-picker v-else type="date" v-model="item.startTime" :border="false" @change="calcDate(item)">
<view :class="['ph', {val: item.startTime}]"> <view :class="['ph', {val: item.startTime}]">
{{ item.endTime ? item.startTime + ' - ' + item.endTime : item.startTime}} {{ item.endTime ? item.startTime + ' - ' + item.endTime : item.startTime}}
@ -97,8 +97,8 @@
</view> </view>
<view class="line" :class="[ {err: err === 'periodOfUse' + item.dataOrCourseId + item.authority}]"> <view class="line" :class="[ {err: err === 'periodOfUse' + item.dataOrCourseId + item.authority}]">
<view class="label">使用期限</view> <view class="label">使用期限</view>
<input v-if="isHandle" class="period" type="number" v-model="item.periodOfUse" placeholder="请输入" :disabled="!isHandle" @input="calcDate(item, !item.authority)" @change="handleErr(item, 'periodOfUse')"> <input class="period" type="number" v-model="item.periodOfUse" placeholder="请输入" :disabled="isDetail || isEdit" @input="calcDate(item, !item.authority)" @change="handleErr(item, 'periodOfUse')">
<view v-if="!isHandle" class="defaultBox">{{item.periodOfUse}}{{ units.find(e => e.id === item.options).text }}</view> <view v-if="isDetail || isEdit" class="defaultBox">{{item.periodOfUse}}{{ units.find(e => e.id === item.options).text }}</view>
<view v-else class="val unit" @click="selectUnit(item)"> <view v-else class="val unit" @click="selectUnit(item)">
<text>{{ units.find(e => e.id === item.options).text }}</text> <text>{{ units.find(e => e.id === item.options).text }}</text>
@ -116,7 +116,7 @@
</view> </view>
<view class="line"> <view class="line">
<view class="label">结算价</view> <view class="label">结算价</view>
<view v-if="!isHandle" class="defaultBox">{{ item.settlementPrice }}</view> <view v-if="isDetail" class="defaultBox">{{ item.settlementPrice }}</view>
<view class="inline" v-else> <view class="inline" v-else>
<input type="number" v-model="item.settlementPrice" placeholder="请输入" @change="handleErr(item, 'settlementPrice')" @input="updateServiceFee(item)"> <input type="number" v-model="item.settlementPrice" placeholder="请输入" @change="handleErr(item, 'settlementPrice')" @input="updateServiceFee(item)">
@ -132,7 +132,7 @@
</view> </view>
<view :class="['line req', {err: err === 'finalPrice' + item.dataOrCourseId + item.authority}]"> <view :class="['line req', {err: err === 'finalPrice' + item.dataOrCourseId + item.authority}]">
<view class="label">成交价</view> <view class="label">成交价</view>
<view v-if="!isHandle" class="defaultBox">{{ item.finalPrice }}</view> <view v-if="isDetail" class="defaultBox">{{ item.finalPrice }}</view>
<view class="inline" v-else> <view class="inline" v-else>
<input type="number" v-model="item.finalPrice" placeholder="请输入" :disabled="isEdit && !item.authority" @input="calcFinalValue(item)" @change="handleErr(item, 'finalPrice')"> <input type="number" v-model="item.finalPrice" placeholder="请输入" :disabled="isEdit && !item.authority" @input="calcFinalValue(item)" @change="handleErr(item, 'finalPrice')">
@ -169,7 +169,7 @@
</view> </view>
<view class="product-btns"> <view class="product-btns">
<view v-if="!isDetail" class="btn" @click="submit">提交({{ courses.length }})</view> <view v-if="!isDetail" class="btn" @click="submit">提交({{ courses.length }})</view>
<view v-if="isHandle || (!orderId && courses.length)" class="btn" @click="batchDeliver">{{ courses.find(e => !e.ship) ? '一键发货' : '取消全部发货' }}</view> <view v-if="isHandle || (!orderId && courses.length) && auth('订单管理:发货')" class="btn" @click="batchDeliver">{{ courses.find(e => !e.ship) ? '一键发货' : '取消全部发货' }}</view>
</view> </view>
</view> </view>
</view> </view>
@ -211,6 +211,10 @@
<view class="ship-text" v-html="shipInfo" @click="copy"></view> <view class="ship-text" v-html="shipInfo" @click="copy"></view>
<uni-easyinput type="textarea" v-model="shipContent" placeholder="请填写需交付的产品登录地址、账号、密码等内容...(300个字以内)" :disabled="isDetail"></uni-easyinput> <uni-easyinput type="textarea" v-model="shipContent" placeholder="请填写需交付的产品登录地址、账号、密码等内容...(300个字以内)" :disabled="isDetail"></uni-easyinput>
</view> </view>
<view v-if="!isDetail" class="ship-btns">
<button @click.stop="closeShip">取消</button>
<button type="primary" @click.stop="submitShip">确定</button>
</view>
</uni-popup> </uni-popup>
</view> </view>
</template> </template>
@ -292,7 +296,8 @@
rate: '', rate: '',
shipInfo: '', shipInfo: '',
shipContent: '' shipContent: '',
curRow: {}
} }
}, },
watch: { watch: {
@ -331,13 +336,12 @@
uni.removeStorageSync('courses') uni.removeStorageSync('courses')
} catch (e) {} } catch (e) {}
this.calcTotal() this.calcTotal()
} else { }
// id // id
const { customerId } = options const { customerId } = options
customerId && this.customerChange({ customerId && this.customerChange({
customerId customerId
}) })
}
// //
this.isDetail || this.getCustomer() this.isDetail || this.getCustomer()
// //
@ -371,6 +375,9 @@
this.getBm() this.getBm()
} }
} }
order.orderOther.forEach(e => {
e.settlementPriceUnit = e.settlementPrice
})
this.courses = order.orderOther this.courses = order.orderOther
for (let i = 0; i < 5; i++) { for (let i = 0; i < 5; i++) {
this.handleRenew(i) this.handleRenew(i)
@ -401,25 +408,23 @@
e.serviceFee = (e.finalPrice * (this.rate / 100)).toFixed(2) // != 0 && e.serviceFee = (e.finalPrice * (this.rate / 100)).toFixed(2) // != 0 &&
courses['list' + e.authority].list.push(e) courses['list' + e.authority].list.push(e)
}) })
console.log(123,courses)
this.courseList = courses this.courseList = courses
}).catch(e => {}) }).catch(e => {})
}, },
// pc // pc
handleRenew(authority) { handleRenew(authority) {
const list = this.courses.filter(e => e.authority == authority) const list = this.courses.filter(e => e.authority == authority)
const productId = list.map(e => e.dataOrCourseId) const productId = list.map(e => e.mallId)
const mallId = list.map(e => e.mallId)
productId.length && this.promises.push(new Promise((resolve, reject) => { productId.length && this.promises.push(new Promise((resolve, reject) => {
renew({ renew({
authority, authority,
customerId: this.form.customerId, customerId: this.form.customerId,
productId, productId,
mallId
}).then(({ orderOthers }) => { }).then(({ orderOthers }) => {
const { courses } = this const { courses } = this
const now = new Date() const now = new Date()
orderOthers.map(e => { orderOthers.map(e => {
// e.settlementPriceUnit = e.settlementPrice
const item = courses.find(n => n.dataOrCourseId == e.dataOrCourseId && n.authority == authority && e.authority == authority) const item = courses.find(n => n.dataOrCourseId == e.dataOrCourseId && n.authority == authority && e.authority == authority)
if (item) { if (item) {
if (this.isRenew) { // if (this.isRenew) { //
@ -593,7 +598,10 @@
// //
toClient() { toClient() {
uni.setStorageSync('courses', this.courseList) uni.setStorageSync('courses', this.courseList)
this.$util.to(`/order/clientDetail/clientDetail`) uni.redirectTo({
url: `/order/clientDetail/clientDetail`
})
// this.$util.to(`/order/clientDetail/clientDetail`)
}, },
// //
delCourse(c, i) { delCourse(c, i) {
@ -635,7 +643,7 @@
calcTotal(out) { calcTotal(out) {
this.handleErr('orderType') this.handleErr('orderType')
const { form } = this const { form } = this
const isTrial = form.orderType === 2 // const isTrial = form.orderType == 2 //
let total = 0 let total = 0
const list = this.courses const list = this.courses
let purchase = 0 // let purchase = 0 //
@ -654,16 +662,16 @@
list.map(e => { list.map(e => {
// out=1 && 0 // out=1 && 0
if (out && isTrial) { if (out && isTrial) {
console.log(123, e, out, isTrial)
e.settlementPrice = 0 e.settlementPrice = 0
e.serviceFee = 0 e.serviceFee = 0
e.finalPrice = 0 e.finalPrice = 0
e.finalValue = 0 e.finalValue = 0
e.discountRate = '0%' e.discountRate = '0%'
} else { } else {
console.log(111, e)
this.calcDiscount(e) this.calcDiscount(e)
this.dealSettlePrice(e) this.dealSettlePrice(e)
this.calcFinalPrice(e) // this.calcFinalPrice(e)
const curPurchase = +e.settlementPrice + +e.serviceFee const curPurchase = +e.settlementPrice + +e.serviceFee
purchase += curPurchase purchase += curPurchase
profit += +e.finalPrice - curPurchase profit += +e.finalPrice - curPurchase
@ -672,10 +680,27 @@
form.purchaseCost = Math.round(purchase) form.purchaseCost = Math.round(purchase)
form.profit = Math.round(profit) form.profit = Math.round(profit)
form.orderAmount = (+form.purchaseCost + +form.profit).toFixed(2) form.orderAmount = (+form.purchaseCost + +form.profit).toFixed(2)
console.log(111, this.courseList, this.courses)
},
//
calcAmount() {
const { form } = this
const list = this.courses
let purchase = 0 //
let profit = 0 //
list.map(e => {
const curPurchase = +e.settlementPrice + +e.serviceFee
purchase += curPurchase
profit += +e.finalPrice - curPurchase
})
form.purchaseCost = Math.round(purchase)
form.profit = Math.round(profit)
form.orderAmount = (+form.purchaseCost + +form.profit).toFixed(2)
console.log(111, this.courseList, this.courses)
}, },
// //
showShip(row) { showShip(row) {
console.log(33) this.curRow = row
let val = '' let val = ''
row.mallNonAssociatedLinks && row.mallNonAssociatedLinks.forEach(e => { row.mallNonAssociatedLinks && row.mallNonAssociatedLinks.forEach(e => {
val += e.urlName + ':' + e.url + '\n' val += e.urlName + ':' + e.url + '\n'
@ -684,6 +709,16 @@
this.shipContent = row.shipContent || val this.shipContent = row.shipContent || val
this.$refs.info.open() this.$refs.info.open()
}, },
//
closeShip() {
this.$refs.info.close()
},
//
submitShip() {
if (this.shipContent.length > 300) return this.$util.errMsg('请填写300个字以内!')
this.curRow.shipContent = this.shipContent
this.$refs.info.close()
},
// //
copy() { copy() {
const that = this const that = this
@ -730,64 +765,6 @@
this.courses = courses this.courses = courses
this.isEdit && bulkShipping({orderOthers: courses}).then(res => {}).catch(res => {}) // this.isEdit && bulkShipping({orderOthers: courses}).then(res => {}).catch(res => {}) //
}, },
//
submit() {
const { form } = this
const courses = []
if (!form.customerId) {
this.err = 'customerName'
return this.$util.errMsg('请选择客户!')
}
if (!form.orderType) {
this.err = 'orderType'
return this.$util.errMsg('请选择订单类型!')
}
for (const i in this.courseList) {
courses.push(...this.courseList[i].list)
}
if (!courses.length) return this.$util.errMsg('请选择课程权限或数据权限后再确认订单!')
let invalid = 0
courses.forEach(e => {
if (!e.periodOfUse) {
invalid = 1
return this.$util.errMsg('请输入使用期限!')
}
e.startTime = this.$util.formatDate(new Date(e.startTime), 'yyyy-MM-dd')
})
if (invalid) return false
if (this.isRenew || courses.some(e => e.renew)) form.orderNature = 2
uni.showLoading({
title: '提交中'
})
const data = {
contractInformation: this.contract, //
order: form, //
orderOther: courses //
}
if (this.isEdit || this.isHandle) {
update(data).then(res => {
uni.hideLoading()
this.$util.sucMsg('编辑成功')
setTimeout(() => {
// this.$util.to(`../orders/orders`)
uni.navigateBack()
}, 1500)
}).catch(res => {
uni.hideLoading()
})
} else {
add(data).then(res => {
uni.hideLoading()
this.$util.sucMsg('添加成功')
setTimeout(() => {
// this.$util.to(`../orders/orders`)
uni.navigateBack()
}, 1500)
}).catch(res => {
uni.hideLoading()
})
}
},
calcDate(row, fromData) { calcDate(row, fromData) {
clearTimeout(this.timer) clearTimeout(this.timer)
this.timer = setTimeout(() => { this.timer = setTimeout(() => {
@ -848,9 +825,8 @@
}, 500) }, 500)
}, },
dealSettlePrice(row) { dealSettlePrice(row) {
console.log('dealSettlePrice', row)
// 0 // 0
if (this.orderType == 2) { if (this.form.orderType == 2) {
row.settlementPrice = 0 row.settlementPrice = 0
row.serviceFee = 0 row.serviceFee = 0
} else { } else {
@ -869,7 +845,8 @@
row.settlementPrice = this.$util.handleNaN(sPrice) row.settlementPrice = this.$util.handleNaN(sPrice)
// //
row.serviceFee = (row.finalPrice * (this.rate / 100)).toFixed(2) row.serviceFee = (row.finalPrice * (this.rate / 100)).toFixed(2)
console.log('row.settlementPrice =>' ,this.rate,row.serviceFee) this.calcAmount()
console.log('row.settlementPrice =>' ,row.settlementPrice,row.settlementPriceUnit,sPrice,row)
} }
}, },
calcDiscount(row) { calcDiscount(row) {
@ -928,7 +905,68 @@
// //
updateServiceFee(row) { updateServiceFee(row) {
options.serviceFee = (row.finalPrice * (this.rate / 100)).toFixed(2) options.serviceFee = (row.finalPrice * (this.rate / 100)).toFixed(2)
},
//
submit() {
const { form } = this
const courses = []
if (!form.customerId) {
this.err = 'customerName'
return this.$util.errMsg('请选择客户!')
}
if (!form.orderType) {
this.err = 'orderType'
return this.$util.errMsg('请选择订单类型!')
}
for (const i in this.courseList) {
courses.push(...this.courseList[i].list)
} }
if (!courses.length) return this.$util.errMsg('请选择课程权限或数据权限后再确认订单!')
let invalid = 0
courses.forEach(e => {
if (!e.periodOfUse) {
invalid = 1
return this.$util.errMsg('请输入使用期限!')
}
e.startTime = this.$util.formatDate(new Date(e.startTime), 'yyyy-MM-dd')
})
if (invalid) return false
if (this.isRenew || courses.some(e => e.renew)) form.orderNature = 2
uni.showLoading({
title: '提交中'
})
const data = {
contractInformation: this.contract, //
order: form, //
orderOther: courses //
}
if (this.isEdit || this.isHandle) {
update(data).then(res => {
uni.hideLoading()
this.$util.sucMsg('编辑成功')
setTimeout(() => {
// this.$util.to(`../orders/orders`)
uni.navigateBack()
}, 1500)
}).catch(res => {
uni.hideLoading()
})
} else {
add(data).then(res => {
uni.hideLoading()
this.$util.sucMsg('添加成功')
setTimeout(() => {
// this.$util.to(`../orders/orders`)
uni.navigateBack()
// uni.redirectTo({
// url: `../orders/orders`
// })
}, 1500)
}).catch(res => {
uni.hideLoading()
})
}
},
} }
} }
</script> </script>
@ -988,6 +1026,9 @@
padding: 0 16rpx; padding: 0 16rpx;
margin-right: 10rpx; margin-right: 10rpx;
font-size: 28rpx; font-size: 28rpx;
&.mg {
margin-left: 10rpx;
}
} }
.del { .del {
width: 40rpx; width: 40rpx;
@ -1029,6 +1070,7 @@
} }
} }
.bottom { .bottom {
z-index: 2;
position: fixed; position: fixed;
bottom: 0; bottom: 0;
padding-bottom: env(safe-area-inset-bottom); padding-bottom: env(safe-area-inset-bottom);
@ -1155,15 +1197,17 @@
color: #333; color: #333;
} }
} }
.edit {
margin-left: 10rpx;
}
} }
.period { .period {
display: inline-block; flex: none;
text-align: right; width: 100rpx;
margin-right: 10rpx; font-size: 28rpx;
margin-left: 20rpx; text-align: center;
color: #333;
width: 60%;font-size: 28rpx;
} }
.defaultBox { .defaultBox {
font-size: 28rpx; font-size: 28rpx;
} }
@ -1175,4 +1219,17 @@
margin-bottom: 20rpx; margin-bottom: 20rpx;
} }
} }
.ship-btns {
display: flex;
justify-content: center;
align-items: center;
button {
padding: 0 16rpx;
margin: 0;
font-size: 28rpx;
&:first-child {
margin-right: 20rpx;
}
}
}
</style> </style>

@ -5,8 +5,14 @@
<uni-icons class="icon" custom-prefix="iconfont" type="icon-filter" size="22" color="#007eff" @click="popup = true"></uni-icons> <uni-icons class="icon" custom-prefix="iconfont" type="icon-filter" size="22" color="#007eff" @click="popup = true"></uni-icons>
</view> </view>
<ul class="tab"> <ul class="tab-wrap">
<li v-for="(tab, i) in tabs" :class="{active: curTab === tab.id}" @click="tabChange(tab)">{{ tab.name }}</li> <view class="tab">
<li :class="{active: curTab === ''}" @click="tabChange('')">全部</li>
</view>
<scroll-view scroll-x :scroll-left="scrollLeft" class="tab tab-scroll">
<li v-for="(tab, i) in tabs" :key="i" :class="{active: curTab === tab.id}" @click="tabChange(tab.id)">{{ tab.name }}</li>
</scroll-view>
</ul> </ul>
<ul v-if="list.length" class="list"> <ul v-if="list.length" class="list">
@ -37,6 +43,7 @@
</template> </template>
<script> <script>
import { productCategoryList } from '@/apis/modules/product.js'
import { getProductsSubscribedByCustomers } from '@/apis/modules/client.js' import { getProductsSubscribedByCustomers } from '@/apis/modules/client.js'
import product from '@/config/product.js' import product from '@/config/product.js'
export default { export default {
@ -84,24 +91,7 @@
], ],
filterForm: {}, filterForm: {},
curTab: '', curTab: '',
tabs: [ tabs: [],
{
name: '全部',
id: ''
},
{
name: '实训课程',
id: 1
},
{
name: '理论课程',
id: 0
},
{
name: '数据产品',
id: 3
}
],
searchTimer: null, searchTimer: null,
orderStatus: '', orderStatus: '',
productStatus: '', productStatus: '',
@ -130,6 +120,7 @@
onShow() { onShow() {
const pages = getCurrentPages() const pages = getCurrentPages()
this.customerId = pages[pages.length - 1].options.customerId this.customerId = pages[pages.length - 1].options.customerId
this.getTypes()
this.getList() this.getList()
}, },
methods: { methods: {
@ -201,6 +192,16 @@
uni.hideLoading() uni.hideLoading()
}) })
}, },
//
getTypes() {
productCategoryList().then(res => {
res.classificationList.forEach(e => {
e.id = e.classificationId
e.name = e.classificationName
})
this.tabs.push(...res.classificationList)
}).catch(e => {})
},
// //
subFinsh(val) { subFinsh(val) {
const { orderStatus, productStatus } = val const { orderStatus, productStatus } = val
@ -215,8 +216,8 @@
this.list = list.filter(e => (orderStatus === '' || ((orderStatus === 2 && e.status === '已过期') || (orderStatus === 1 && e.status === '生效中'))) && (productStatus === '' || ((productStatus === 2 && e.isEnable === '禁用') || (productStatus === 1 && e.isEnable === '启用'))) && e.productName.includes(keyword) && (curTab === '' || (curTab === e.productType))) this.list = list.filter(e => (orderStatus === '' || ((orderStatus === 2 && e.status === '已过期') || (orderStatus === 1 && e.status === '生效中'))) && (productStatus === '' || ((productStatus === 2 && e.isEnable === '禁用') || (productStatus === 1 && e.isEnable === '启用'))) && e.productName.includes(keyword) && (curTab === '' || (curTab === e.productType)))
}, },
// tab // tab
tabChange(tab) { tabChange(id) {
this.curTab = tab.id this.curTab = id
this.filter() this.filter()
}, },
// //
@ -231,6 +232,16 @@
.filter { .filter {
margin-bottom: 10px; margin-bottom: 10px;
} }
.tab-wrap {
display: flex;
.tab-scroll {
width: calc(100% - 100rpx);
white-space: nowrap;
li {
display: inline-block;
}
}
}
.list { .list {
li { li {
padding: 0 24rpx; padding: 0 24rpx;

@ -52,7 +52,7 @@
</template> </template>
<empty v-else></empty> <empty v-else></empty>
<uni-icons v-if="auth('订单管理:新建订单')" class="plus" type="plus-filled" size="60" color="#007eff" @click="$util.to('../orderDetail/orderDetail')"></uni-icons> <uni-icons v-if="auth('订单管理:新建订单')" class="plus" type="plus-filled" size="60" color="#007eff" @click="toAdd"></uni-icons>
<filter-popup :data="filterData" :form.sync="filterForm" showArea v-model="popup" title="全部筛选" height="1104rpx" @finsh="subFinsh"></filter-popup> <filter-popup :data="filterData" :form.sync="filterForm" showArea v-model="popup" title="全部筛选" height="1104rpx" @finsh="subFinsh"></filter-popup>
</view> </view>
</template> </template>
@ -206,6 +206,12 @@
this.sort = this.sort ? 0 : 1 this.sort = this.sort ? 0 : 1
this.initList() this.initList()
}, },
toAdd() {
this.$util.to('../orderDetail/orderDetail')
// uni.redirectTo({
// url: '../orderDetail/orderDetail'
// })
},
// //
toDetail(item) { toDetail(item) {
if(!this.auth('订单管理:查看')) return if(!this.auth('订单管理:查看')) return

@ -25,7 +25,8 @@
<view class="line"> <view class="line">
<text class="name">产品简介</text> <text class="name">产品简介</text>
<view class="val ell-wrap"> <view class="val ell-wrap">
<view class="ell">{{ item.productIntroduction }}</view> <view :class="{ell: !item.toggle}">{{ item.productIntroduction }}</view>
<view v-if="item.productIntroduction.length > 14" class="toggle" @click="toggle(item)">{{ item.toggle ? '收起' : '展开' }}</view>
</view> </view>
</view> </view>
<view class="line"> <view class="line">
@ -105,7 +106,10 @@
// list // list
const list = page.records const list = page.records
list.map(e => { list.map(e => {
if (e.productIntroduction) {
e.productIntroduction = this.$util.removeTag(e.productIntroduction) e.productIntroduction = this.$util.removeTag(e.productIntroduction)
e.toggle = e.productIntroduction.length < 14 // 14
}
}) })
this.list = this.reachBottom > 0 ? [...this.list, ...list] : list this.list = this.reachBottom > 0 ? [...this.list, ...list] : list
this.page++ // page+1 this.page++ // page+1
@ -132,6 +136,10 @@
this.tabs = list this.tabs = list
}).catch(e => {}) }).catch(e => {})
}, },
//
toggle(item) {
item.toggle = !item.toggle
},
// //
switchSort() { switchSort() {
this.sort = this.sort === 'desc' ? 'asc' : 'desc' this.sort = this.sort === 'desc' ? 'asc' : 'desc'

@ -50,7 +50,7 @@
</template> </template>
<empty v-else></empty> <empty v-else></empty>
<uni-icons v-if="auth('合伙管理:账号管理:添加城市合伙人')" class="plus" type="plus-filled" size="60" color="#007eff" @click="$util.to('../addStaff/addStaff')"></uni-icons> <uni-icons v-if="auth('合伙管理:账号管理:添加城市合伙人')" class="plus" type="plus-filled" size="60" color="#007eff" @click="$util.to('/team/addStaff/addStaff')"></uni-icons>
</view> </view>
</template> </template>
@ -148,11 +148,11 @@
}, },
// //
toTeam(e) { toTeam(e) {
this.$util.to(`../teamDetail/teamDetail?id=${e.teamId}`) this.$util.to(`/team/teamDetail/teamDetail?id=${e.teamId}`)
}, },
// //
toEdit(e) { toEdit(e) {
this.$util.to(`../editTeam/editTeam?id=${e.teamId}&areaId=${e.partnerClassificationId}`) this.$util.to(`/team/editTeam/editTeam?id=${e.teamId}&areaId=${e.partnerClassificationId}`)
} }
} }
} }

Loading…
Cancel
Save