| | |
| | | <script> |
| | | export default { |
| | | data() { |
| | | return { |
| | | dto: { |
| | | id: '', |
| | | items: [], |
| | | supplierName: '', |
| | | orderNo: '', |
| | | stationName: '', |
| | | arriveRemarks: '', |
| | | }, |
| | | id: '', |
| | | form: { |
| | | id: '', |
| | | status: '', |
| | | checkImageList: [], |
| | | checkRemarks: '', |
| | | deductAmount: 0, |
| | | }, |
| | | check_status: [ |
| | | { |
| | | label: '退回', |
| | | value: 'back' |
| | | }, |
| | | { |
| | | label: '降级', |
| | | value: 'reduce' |
| | | }, |
| | | { |
| | | label: '缺货', |
| | | value: 'lack' |
| | | }, |
| | | { |
| | | label: '完成', |
| | | value: 'ok' |
| | | } |
| | | ] |
| | | }; |
| | | }, |
| | | async onLoad(options) { |
| | | this.id = options.id || '' |
| | | await this.init() |
| | | export default { |
| | | data() { |
| | | return { |
| | | dto: { |
| | | id: '', |
| | | items: [], |
| | | supplierName: '', |
| | | orderNo: '', |
| | | stationName: '', |
| | | arriveRemarks: '', |
| | | }, |
| | | id: '', |
| | | form: { |
| | | id: '', |
| | | status: '', |
| | | checkImageList: [], |
| | | checkRemarks: '', |
| | | deductAmount: 0, |
| | | }, |
| | | check_status: [{ |
| | | label: '退回', |
| | | value: 'back' |
| | | }, |
| | | { |
| | | label: '降级', |
| | | value: 'reduce' |
| | | }, |
| | | { |
| | | label: '缺货', |
| | | value: 'lack' |
| | | }, |
| | | { |
| | | label: '完成', |
| | | value: 'ok' |
| | | } |
| | | ] |
| | | }; |
| | | }, |
| | | async onLoad(options) { |
| | | this.id = options.id || '' |
| | | await this.init() |
| | | |
| | | }, |
| | | async onPullDownRefresh() { |
| | | await this.init() |
| | | uni.stopPullDownRefresh() |
| | | }, |
| | | methods: { |
| | | closeCheckForm() { |
| | | this.$refs.popup_form.close() |
| | | }, |
| | | async onPullDownRefresh() { |
| | | await this.init() |
| | | uni.stopPullDownRefresh() |
| | | }, |
| | | methods: { |
| | | closeCheckForm() { |
| | | this.$refs.popup_form.close() |
| | | |
| | | }, |
| | | async clickCheck(item, status) { |
| | | this.form = { |
| | | id: item.id || '', |
| | | status: '', |
| | | statusStr: '', |
| | | checkImageList: item.checkImageList || [], |
| | | checkRemarks: item.checkRemarks || '', |
| | | deductAmount: item.deductAmount || 0, |
| | | } |
| | | this.check_status.forEach(tmp => { |
| | | if (tmp.value === this.form.status) { |
| | | this.form.statusStr = tmp.label |
| | | } |
| | | }) |
| | | //显示 |
| | | this.$refs.popup_form.open() |
| | | }, |
| | | async clickCheck(item, status) { |
| | | this.form = { |
| | | id: item.id || '', |
| | | status: status, |
| | | statusStr: '', |
| | | checkImageList: item.checkImageList || [], |
| | | checkRemarks: item.checkRemarks || '', |
| | | deductAmount: item.deductAmount || 0, |
| | | } |
| | | this.check_status.forEach(tmp => { |
| | | if (tmp.value === this.form.status) { |
| | | this.form.statusStr = tmp.label |
| | | } |
| | | }) |
| | | //显示 |
| | | this.$refs.popup_form.open() |
| | | |
| | | }, |
| | | async submitCheck() { |
| | | if (isNaN(parseFloat(this.form.deductAmount)) || this.form.deductAmount < 0) { |
| | | this.$message.showToast('扣款金额需要大于等于0') |
| | | return |
| | | } |
| | | this.$message.showLoading() |
| | | const { |
| | | code |
| | | } = await this.$http.request('get', '/api/delivery/list/view/check', { |
| | | data: { |
| | | ...this.form |
| | | } |
| | | }) |
| | | this.$message.hideLoading() |
| | | if (code === 0) { |
| | | this.$message.showToast('操作成功') |
| | | this.$refs.popup_form.close() |
| | | setTimeout(() => { |
| | | this.init() |
| | | }, 200) |
| | | } |
| | | }, |
| | | async init() { |
| | | this.$message.showLoading() |
| | | const { |
| | | data |
| | | } = await this.$http.request('get', '/api/delivery/list/view?id=' + this.id, {}) |
| | | }, |
| | | async submitCheck() { |
| | | if (isNaN(parseFloat(this.form.deductAmount)) || this.form.deductAmount < 0) { |
| | | this.$message.showToast('扣款金额需要大于等于0') |
| | | return |
| | | } |
| | | this.$message.showLoading() |
| | | const { |
| | | code |
| | | } = await this.$http.request('post', '/api/delivery/list/view/check', { |
| | | data: { |
| | | ...this.form, |
| | | deductAmount: parseFloat(this.form.deductAmount) || 0 |
| | | } |
| | | }) |
| | | this.$message.hideLoading() |
| | | if (code === 0) { |
| | | this.$message.showToast('操作成功') |
| | | this.$refs.popup_form.close() |
| | | setTimeout(() => { |
| | | this.init() |
| | | }, 200) |
| | | } |
| | | }, |
| | | async init() { |
| | | this.$message.showLoading() |
| | | const { |
| | | data |
| | | } = await this.$http.request('get', '/api/delivery/list/view?id=' + this.id, {}) |
| | | |
| | | this.$message.hideLoading() |
| | | if (data) { |
| | | this.dto = { |
| | | ...this.dto, |
| | | ...data |
| | | } |
| | | } |
| | | }, |
| | | deleteCheckImage(index) { |
| | | this.form.checkImageList.splice(index, 1) |
| | | }, |
| | | uploadCheckImage() { |
| | | let that = this |
| | | uni.chooseImage({ |
| | | count: 1, // 最多可以选择的图片张数,默认9 |
| | | sizeType: ['compressed'], //original 原图,compressed 压缩图,默认二者都有 |
| | | sourceType: ['camera', 'album'], //album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项 |
| | | success: function (res) { |
| | | let errMsg = res.errMsg |
| | | let tempFiles = res.tempFiles |
| | | if (errMsg === 'chooseImage:ok') { |
| | | if (tempFiles[0].size > 1024 * 1024 * 5) { |
| | | that.$message.confirm('图片最多支持5M大小,超出大小限制') |
| | | return |
| | | } |
| | | that.$message.showLoading() |
| | | that.$http.upload(tempFiles[0].path).then(async res => { |
| | | console.log('res1', res) |
| | | var pic = res.data && res.data.length > 0 && res.data[ |
| | | 0] |
| | | .url || '' |
| | | that.$message.hideLoading() |
| | | that.form.checkImageList.push(pic) |
| | | that.$forceUpdate() |
| | | }).catch(res => { |
| | | that.$message.hideLoading() |
| | | console.error(res) |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | this.$message.hideLoading() |
| | | if (data) { |
| | | this.dto = { |
| | | ...this.dto, |
| | | ...data |
| | | } |
| | | } |
| | | }, |
| | | deleteCheckImage(index) { |
| | | this.form.checkImageList.splice(index, 1) |
| | | }, |
| | | uploadCheckImage() { |
| | | let that = this |
| | | uni.chooseImage({ |
| | | count: 1, // 最多可以选择的图片张数,默认9 |
| | | sizeType: ['compressed'], //original 原图,compressed 压缩图,默认二者都有 |
| | | sourceType: ['camera', 'album'], //album 从相册选图,camera 使用相机,默认二者都有。如需直接开相机或直接选相册,请只使用一个选项 |
| | | success: function(res) { |
| | | let errMsg = res.errMsg |
| | | let tempFiles = res.tempFiles |
| | | if (errMsg === 'chooseImage:ok') { |
| | | if (tempFiles[0].size > 1024 * 1024 * 5) { |
| | | that.$message.confirm('图片最多支持5M大小,超出大小限制') |
| | | return |
| | | } |
| | | that.$message.showLoading() |
| | | that.$http.upload(tempFiles[0].path).then(async res => { |
| | | console.log('res1', res) |
| | | var pic = res.data && res.data.length > 0 && res.data[ |
| | | 0] |
| | | .url || '' |
| | | that.$message.hideLoading() |
| | | that.form.checkImageList.push(pic) |
| | | console.log('form', that.form) |
| | | that.$forceUpdate() |
| | | }).catch(res => { |
| | | that.$message.hideLoading() |
| | | console.error(res) |
| | | }) |
| | | } |
| | | } |
| | | }) |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <template> |
| | | <view class="delivery-detail-page"> |
| | | <view v-if="dto.id"> |
| | | <view class="delivery-info flex"> |
| | | <view class="flex1 desc"> |
| | | <view>供货商名称:{{ dto.stationName }}</view> |
| | | <view>订单号:{{ dto.orderNo }}</view> |
| | | <view>供货商备注:{{ dto.arriveRemarks }}</view> |
| | | </view> |
| | | <view class="m-l-15 m-r-0 station"> |
| | | <view>{{ dto.stationName }}</view> |
| | | </view> |
| | | </view> |
| | | <view v-for="(item,index) of dto.items" :key="index" class="delivery-order-item m-t-12"> |
| | | <view class="flex"> |
| | | <image class="flower-img img100 m-r-6" :src="item.flowerCover" @click="previewImg(item.flowerCover)"> |
| | | </image> |
| | | <view class="flex1"> |
| | | <view class=" flex"> |
| | | <view class="title">{{ item.flowerName }}<span class="level">{{ item.flowerLevelStr }}</span></view> |
| | | </view> |
| | | <view class="each-list"> |
| | | <view class="each-item"> |
| | | <view class="label">颜色</view> |
| | | <view class="value">{{ item.flowerColor || '-' }}</view> |
| | | <view class="delivery-detail-page bg-white p20"> |
| | | <view v-if="dto.id"> |
| | | <view class="delivery-info flex"> |
| | | <view class="flex1 desc"> |
| | | <view>供货商名称:{{ dto.stationName }}</view> |
| | | <view>订单号:{{ dto.orderNo }}</view> |
| | | <view>供货商备注:{{ dto.arriveRemarks }}</view> |
| | | </view> |
| | | <view class="m-l-15 m-r-0 station"> |
| | | <view>{{ dto.stationName }}</view> |
| | | </view> |
| | | </view> |
| | | <view v-for="(item,index) of dto.items" :key="index" class="delivery-order-item m-t-12"> |
| | | <view class="flex"> |
| | | <image class="flower-img img100 m-r-6" :src="item.flowerCover" |
| | | @click="previewImg(item.flowerCover)"> |
| | | </image> |
| | | <view class="flex1"> |
| | | <view class=" flex"> |
| | | <view class="title">{{ item.flowerName }}<span |
| | | class="level">{{ item.flowerLevelStr }}</span></view> |
| | | </view> |
| | | <view class="each-list"> |
| | | <view class="each-item"> |
| | | <view class="label">颜色</view> |
| | | <view class="value">{{ item.flowerColor || '-' }}</view> |
| | | |
| | | </view> |
| | | <view class="each-item"> |
| | | <view class="label">规格</view> |
| | | <view class="value">{{ item.flowerUnit || '-' }}</view> |
| | | </view> |
| | | <view class="each-item"> |
| | | <view class="label">数量</view> |
| | | <view class="value">{{ item.num || 0 }}</view> |
| | | </view> |
| | | <view class="each-item"> |
| | | <view class="label">规格</view> |
| | | <view class="value">{{ item.flowerUnit || '-' }}</view> |
| | | </view> |
| | | <view class="each-item"> |
| | | <view class="label">数量</view> |
| | | <view class="value">{{ item.num || 0 }}</view> |
| | | |
| | | </view> |
| | | <view class="each-item"> |
| | | <view class="label">价格</view> |
| | | <view class="value">{{ item.price || '-' }}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="line-gray"> |
| | | </view> |
| | | <view class="each-item"> |
| | | <view class="label">价格</view> |
| | | <view class="value">{{ item.price || '-' }}</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="line-gray"> |
| | | |
| | | </view> |
| | | <view class="buttons"> |
| | | <view class="button" v-for="button of check_status" :key="check_status.value" |
| | | @click.stop="clickCheck(item,button.value)">{{ button.label }} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="buttons"> |
| | | <view class="button text-center" v-for="button of check_status" :key="button.value" |
| | | @click.stop="clickCheck(item,button.value)">{{ button.label }} |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <uni-popup ref="popup_form" type="top" :mask-click="false"> |
| | | <view class="popup-check-form"> |
| | | <view class="close-parent"> |
| | | 质检操作-{{ form.statusStr || '-' }} |
| | | <uni-icons class="close" type="closeempty" @click="closeCheckForm"></uni-icons> |
| | | </view> |
| | | <view class="submit form"> |
| | | <view class="form-item"> |
| | | <view class="form-item-label require"> |
| | | 质检备注 |
| | | </view> |
| | | <view class="form-item-value"> |
| | | <input v-model="form.checkRemarks" placeholder="请输入质检备注" class="form-input"></input> |
| | | </view> |
| | | </view> |
| | | <view class="form-item"> |
| | | <view class="form-item-label require"> |
| | | 扣款金额 |
| | | </view> |
| | | <view class="form-item-value"> |
| | | <input v-model="form.deductAmount" placeholder="请输入扣款金额" type="digit" class="form-input"></input> |
| | | <uni-popup ref="popup_form" type="top" :mask-click="false"> |
| | | <view class="popup-check-form"> |
| | | <view class="close-parent"> |
| | | 质检操作-{{ form.statusStr || '-' }} |
| | | <uni-icons class="close" type="closeempty" @click="closeCheckForm"></uni-icons> |
| | | </view> |
| | | <view class="submit form"> |
| | | <view class="form-item"> |
| | | <view class="form-item-label require"> |
| | | 质检备注 |
| | | </view> |
| | | <view class="form-item-value"> |
| | | <input v-model="form.checkRemarks" placeholder="请输入质检备注" class="form-input"></input> |
| | | </view> |
| | | </view> |
| | | <view class="form-item"> |
| | | <view class="form-item-label require"> |
| | | 扣款金额 |
| | | </view> |
| | | <view class="form-item-value"> |
| | | <input v-model="form.deductAmount" placeholder="请输入扣款金额" type="digit" |
| | | class="form-input"></input> |
| | | |
| | | </view> |
| | | </view> |
| | | <view class="form-item"> |
| | | <view class="form-item-label require"> |
| | | 图片 |
| | | </view> |
| | | <view class="form-item-value"> |
| | | <u-button type="text" @click="uploadCheckImage()">上传</u-button> |
| | | </view> |
| | | </view> |
| | | <view class="flex p20" |
| | | v-if="form.checkImageList&&form.checkImageList.length>0"> |
| | | <view class="m-t-12 m-r-10 " v-for="(timg,index) of dto.checkImageList" :key="index"> |
| | | <image class="check-img" :src="timg" @click.stop="previewImg(timg)"> |
| | | </image> |
| | | <view class="t-red text-center" @click.stop="deleteCheckImage(index)">删除</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | <view class="form-item"> |
| | | <view class="form-item-label require"> |
| | | 图片 |
| | | </view> |
| | | <view class="form-item-value m-l-a m-r-0"> |
| | | <view class="t-red" @click="uploadCheckImage()">上传</view> |
| | | </view> |
| | | </view> |
| | | <view class="flex p20" v-if="form.checkImageList&&form.checkImageList.length>0"> |
| | | <view class="m-t-12 m-r-10 " v-for="(timg,index) of form.checkImageList" :key="index"> |
| | | <image class="check-img" :src="timg" @click.stop="previewImg(timg)"> |
| | | </image> |
| | | <view class="t-red text-center" @click.stop="deleteCheckImage(index)">删除</view> |
| | | </view> |
| | | </view> |
| | | </view> |
| | | |
| | | <view class="button-green m-t-15" @click="submitCheck">提交</view> |
| | | </view> |
| | | </uni-popup> |
| | | </view> |
| | | <view class="button-green m-t-15" @click="submitCheck">提交</view> |
| | | </view> |
| | | </uni-popup> |
| | | </view> |
| | | </template> |
| | | |
| | | <style lang="scss" scoped> |
| | | .delivery-detail-page { |
| | | .delivery-order-item { |
| | | .title { |
| | | font-weight: 600; |
| | | font-size: 28rpx; |
| | | color: #000000; |
| | | line-height: 40rpx; |
| | | .delivery-detail-page { |
| | | .delivery-order-item { |
| | | .title { |
| | | font-weight: 600; |
| | | font-size: 28rpx; |
| | | color: #000000; |
| | | line-height: 40rpx; |
| | | |
| | | .level { |
| | | font-weight: 400; |
| | | font-size: 28rpx; |
| | | color: #20613D; |
| | | line-height: 40rpx; |
| | | margin-left: 20rpx; |
| | | } |
| | | } |
| | | .level { |
| | | font-weight: 400; |
| | | font-size: 28rpx; |
| | | color: #20613D; |
| | | line-height: 40rpx; |
| | | margin-left: 20rpx; |
| | | } |
| | | } |
| | | |
| | | .buttons { |
| | | display: flex; |
| | | .buttons { |
| | | display: flex; |
| | | |
| | | .button { |
| | | margin: 0 auto; |
| | | width: 98rpx; |
| | | line-height: 48rpx; |
| | | border-radius: 24rpx; |
| | | border: 2rpx solid #CECECE; |
| | | text-align: center; |
| | | font-size: 24rpx; |
| | | color: #666666; |
| | | line-height: 34rpx; |
| | | } |
| | | } |
| | | .button { |
| | | margin: 0 auto; |
| | | width: 98rpx; |
| | | line-height: 48rpx; |
| | | border-radius: 24rpx; |
| | | border: 2rpx solid #CECECE; |
| | | text-align: center; |
| | | font-size: 24rpx; |
| | | color: #666666; |
| | | line-height: 34rpx; |
| | | } |
| | | } |
| | | |
| | | .flower-img { |
| | | width: 128rpx; |
| | | height: 118rpx; |
| | | min-width: 128rpx; |
| | | min-height: 118rpx; |
| | | } |
| | | .flower-img { |
| | | width: 128rpx; |
| | | height: 118rpx; |
| | | min-width: 128rpx; |
| | | min-height: 118rpx; |
| | | } |
| | | |
| | | .each-list { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | margin-top: 6rpx; |
| | | .each-list { |
| | | display: flex; |
| | | flex-wrap: wrap; |
| | | margin-top: 6rpx; |
| | | |
| | | .each-item { |
| | | min-width: 30%; |
| | | max-width: 40%; |
| | | text-align: center; |
| | | margin-left: 0rpx; |
| | | margin-right: auto; |
| | | display: flex; |
| | | .each-item { |
| | | min-width: 30%; |
| | | max-width: 40%; |
| | | text-align: center; |
| | | margin-left: 0rpx; |
| | | margin-right: auto; |
| | | display: flex; |
| | | |
| | | .label { |
| | | font-weight: 400; |
| | | font-size: 24rpx; |
| | | color: #666666; |
| | | text-align: left; |
| | | padding-right: 10rpx; |
| | | } |
| | | .label { |
| | | font-weight: 400; |
| | | font-size: 24rpx; |
| | | color: #666666; |
| | | text-align: left; |
| | | padding-right: 10rpx; |
| | | } |
| | | |
| | | .label::after { |
| | | content: ": " |
| | | } |
| | | .label::after { |
| | | content: ": " |
| | | } |
| | | |
| | | .value { |
| | | font-weight: 400; |
| | | font-size: 24rpx; |
| | | color: #666666; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | .value { |
| | | font-weight: 400; |
| | | font-size: 24rpx; |
| | | color: #666666; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .popup-check-form { |
| | | background: #FFFFFF; |
| | | border-radius: 16rpx; |
| | | // width: 690rpx; |
| | | height: 882rpx; |
| | | margin-top: 120rpx; |
| | | margin-left: 30rpx; |
| | | margin-right: 30rpx; |
| | | padding: 24rpx 36rpx; |
| | | .popup-check-form { |
| | | background: #FFFFFF; |
| | | border-radius: 16rpx; |
| | | // width: 690rpx; |
| | | height: 882rpx; |
| | | margin-top: 120rpx; |
| | | margin-left: 30rpx; |
| | | margin-right: 30rpx; |
| | | padding: 24rpx 36rpx; |
| | | |
| | | .check-img { |
| | | width: 96rpx; |
| | | height: 96rpx; |
| | | border-radius: 4rpx; |
| | | border: 2rpx dashed #CECECE; |
| | | } |
| | | .check-img { |
| | | width: 96rpx; |
| | | height: 96rpx; |
| | | border-radius: 4rpx; |
| | | border: 2rpx dashed #CECECE; |
| | | } |
| | | |
| | | .submit { |
| | | margin-top: 30rpx; |
| | | .submit { |
| | | margin-top: 30rpx; |
| | | |
| | | .form-input { |
| | | height: 36rpx; |
| | | line-height: 36rpx; |
| | | } |
| | | } |
| | | } |
| | | .form-input { |
| | | height: 36rpx; |
| | | line-height: 36rpx; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .delivery-info { |
| | | padding: 20rpx; |
| | | .delivery-info { |
| | | padding: 20rpx; |
| | | |
| | | .desc { |
| | | font-weight: 400; |
| | | font-size: 28rpx; |
| | | color: #666666; |
| | | line-height: 40rpx; |
| | | } |
| | | .desc { |
| | | font-weight: 400; |
| | | font-size: 28rpx; |
| | | color: #666666; |
| | | line-height: 40rpx; |
| | | } |
| | | |
| | | .station { |
| | | height: 50rpx; |
| | | background: #C6E8D4; |
| | | border-radius: 4rpx; |
| | | padding-left: 20rpx; |
| | | padding-right: 20rpx; |
| | | min-width: 110rpx; |
| | | .station { |
| | | height: 50rpx; |
| | | background: #C6E8D4; |
| | | border-radius: 4rpx; |
| | | padding-left: 20rpx; |
| | | padding-right: 20rpx; |
| | | min-width: 110rpx; |
| | | |
| | | line-height: 50rpx; |
| | | } |
| | | } |
| | | } |
| | | line-height: 50rpx; |
| | | } |
| | | } |
| | | } |
| | | </style> |