fix: 支付去掉货到付款,样式穿透改为 ::v-deep

支付单改为上传凭证和附件,尾款或全款时提示交易已完结。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-10-19 14:20:43 +08:00
parent 55bcf96889
commit c8e651b7a6
12 changed files with 84 additions and 124 deletions
+1 -1
View File
@@ -61,7 +61,7 @@ export default {
</style> </style>
<style> <style>
/deep/ .el-carousel__indicators { ::v-deep .el-carousel__indicators {
height: 30px !important; height: 30px !important;
} }
</style> </style>
+2 -2
View File
@@ -511,13 +511,13 @@ export default {
} }
/deep/ .i-icon { ::v-deep .i-icon {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
} }
/deep/ .el-input__suffix { ::v-deep .el-input__suffix {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
+14 -14
View File
@@ -835,24 +835,24 @@ export default {
} }
</script> </script>
<style>/* #ifndef H5 || MP-ALIPAY || APP-PLUS */ <style>/* #ifndef H5 || MP-ALIPAY || APP-PLUS */
/deep/ ._address, ::v-deep ._address,
/deep/ ._article, ::v-deep ._article,
/deep/ ._aside, ::v-deep ._aside,
/deep/ ._body, ::v-deep ._body,
/deep/ ._caption, ::v-deep ._caption,
/deep/ ._center, ::v-deep ._center,
/deep/ ._cite, ::v-deep ._cite,
/deep/ ._footer, ::v-deep ._footer,
/deep/ ._header, ::v-deep ._header,
/deep/ ._html, ::v-deep ._html,
/deep/ ._nav, ::v-deep ._nav,
/deep/ ._pre, ::v-deep ._pre,
/deep/ ._section { ::v-deep ._section {
display: block; display: block;
} }
/* #endif */ /* #endif */
/deep/ ._video { ::v-deep ._video {
width: 300px; width: 300px;
height: 225px; height: 225px;
display: inline-block; display: inline-block;
+1 -1
View File
@@ -519,7 +519,7 @@ export default {
</style> </style>
<style> <style>
/deep/ .input-with-select .el-input-group__append { ::v-deep .input-with-select .el-input-group__append {
background-color: #fff !important; background-color: #fff !important;
width: 130px !important; width: 130px !important;
} }
+1 -1
View File
@@ -456,7 +456,7 @@ export default {
width: 100px; width: 100px;
} }
.required /deep/ .el-form-item__label:before { .required ::v-deep .el-form-item__label:before {
content: '*'; content: '*';
color: #f56c6c; color: #f56c6c;
margin-right: 4px; margin-right: 4px;
+1 -1
View File
@@ -583,7 +583,7 @@ page {
background: #ffffff; background: #ffffff;
} }
/deep/ .u-tag--mini { ::v-deep .u-tag--mini {
padding: 0 1px !important; padding: 0 1px !important;
} }
+21 -65
View File
@@ -20,8 +20,8 @@
:key="item" :key="item"
:label="item" :label="item"
:value="item" :value="item"
:disabled="(!['预付款', '货到付款', '全款'].includes(item) && orderInfo.payStatus === 0) :disabled="(!['预付款', '全款'].includes(item) && orderInfo.payStatus === 0)
|| (['预付款', '货到付款', '全款'].includes(item) && orderInfo.payStatus > 0)" || (['预付款', '全款'].includes(item) && orderInfo.payStatus > 0)"
> >
</el-option> </el-option>
</el-select> </el-select>
@@ -32,27 +32,7 @@
<el-form-item label="备注"> <el-form-item label="备注">
<el-input v-model="payInfo.remark"/> <el-input v-model="payInfo.remark"/>
</el-form-item> </el-form-item>
<template v-if="[0, 1].includes(orderInfo.orderStatus)"> <el-form-item label="凭证">
<el-row :gutter="10">
<el-col :span="6">
<el-form-item label="是否发货">
<el-radio-group v-model="payInfo.isExpress"
:disabled="['货到付款', '全款'].includes(payInfo.type)">
<el-radio :label="true">是</el-radio>
<el-radio :label="false">否</el-radio>
</el-radio-group>
</el-form-item>
</el-col>
<!-- <el-col :span="12">-->
<!-- <el-form-item label="物流公司" required>-->
<!-- <el-input v-model="payInfo.expressName" placeholder="请输入物流公司"/>-->
<!-- </el-form-item>-->
<!-- <el-form-item label="物流单号" required>-->
<!-- <el-input v-model="payInfo.expressNo" placeholder="请输入物流单号"/>-->
<!-- </el-form-item>-->
<!-- </el-col>-->
</el-row>
<el-form-item label="凭证" v-if="!payInfo.isExpress">
<u-upload <u-upload
multiple multiple
:fileList="payInfo.photos" :fileList="payInfo.photos"
@@ -61,19 +41,17 @@
width="120rpx" width="120rpx"
height="120rpx" height="120rpx"
></u-upload> ></u-upload>
<!-- <vk-data-upload v-model="payInfo.photos"></vk-data-upload>-->
</el-form-item> </el-form-item>
<el-form-item label="凭证" v-else required> <el-form-item label="附件">
<u-upload <u-upload
multiple multiple
:fileList="payInfo.expressPhoto" :fileList="payInfo.ext"
@afterRead="afterRead($event, 'expressPhoto')" @afterRead="afterRead($event, 'ext')"
@delete="deletePic($event, 'expressPhoto')" @delete="deletePic($event, 'ext')"
width="120rpx"
height="120rpx" height="120rpx"
></u-upload> ></u-upload>
<!-- <vk-data-upload v-model="payInfo.expressPhoto"></vk-data-upload>-->
</el-form-item> </el-form-item>
</template>
</el-form> </el-form>
<el-row> <el-row>
<el-col :span="24" class="text-center"> <el-col :span="24" class="text-center">
@@ -130,6 +108,7 @@ export default {
isExpress: false, isExpress: false,
expressName: null, expressName: null,
expressNo: null, expressNo: null,
ext: [],
}, },
orderInfo: { orderInfo: {
payStatus: 0 payStatus: 0
@@ -157,26 +136,8 @@ export default {
type: 'error', type: 'error',
message: '请输入支付金额' message: '请输入支付金额'
}) })
if (this.payInfo.isExpress && this.payInfo.expressPhoto.length === 0) return this.$message({
type: 'error',
message: '请上传凭证'
})
// if (this.payInfo.isExpress && !this.payInfo.expressName) return this.$message({
// type: 'error',
// message: '请输入物流公司'
// })
// if (this.payInfo.isExpress && !this.payInfo.expressNo) return this.$message({
// type: 'error',
// message: '请输入物流单号'
// })
if (this.payInfo.photos && this.payInfo.photos.length > 0) this.payInfo.photos = this.payInfo.photos.map(i => i.url) if (this.payInfo.photos && this.payInfo.photos.length > 0) this.payInfo.photos = this.payInfo.photos.map(i => i.url)
if (this.payInfo.expressPhoto && this.payInfo.expressPhoto.length > 0) this.payInfo.expressPhoto = this.payInfo.expressPhoto.map(i => i.url) if (this.payInfo.ext && this.payInfo.ext.length > 0) this.payInfo.ext = this.payInfo.ext.map(i => i.url)
if (this.payInfo.isExpress) {
uni.showModal({
title: '提示',
content: '发货状态一旦确定无法修改,请谨慎操作',
success: async res => {
if (res.confirm) {
await vk.callFunction({ await vk.callFunction({
url: 'client/order/kh/makePay', url: 'client/order/kh/makePay',
title: '请求中...', title: '请求中...',
@@ -187,24 +148,19 @@ export default {
message: '支付单创建成功' message: '支付单创建成功'
}) })
this.close() this.close()
}
}
})
} else {
await vk.callFunction({
url: 'client/order/kh/makePay',
title: '请求中...',
data: {payInfo: this.payInfo}
})
this.$message({
type: 'success',
message: '支付单创建成功'
})
this.close()
}
}, },
changeType() { changeType() {
this.payInfo.isExpress = ['货到付款', '全款'].includes(this.payInfo.type) if (['尾款', '全款'].includes(this.payInfo.type)) {
this.$confirm(
'选择尾款或全款支付申请,均代表本次交易已完结,对应本次交易最终货款的结算完成。提交申请后,系统无法再次发起付款申请;若发生误申请情形,仅可通过交易双方协商线下渠道协商办理支付,请您谨慎选择。',
'重要提示',
{
confirmButtonText: '确认为最终结算',
showCancelButton: false,
type: 'warning'
}
)
}
}, },
afterRead({file}, field) { afterRead({file}, field) {
file.forEach(item => { file.forEach(item => {
+14 -10
View File
@@ -20,19 +20,23 @@
</template> </template>
<text v-else class="text-main">买家已拒绝: {{ item.refuseReason }}</text> <text v-else class="text-main">买家已拒绝: {{ item.refuseReason }}</text>
</view> </view>
<view class="mb-10">
<view>物流凭证:</view>
<el-image v-for="(photo, photoIndex) in item.expressPhoto" :key="photoIndex" :src="photo"
style="width: 120rpx; height: 120rpx" fit="cover"
:preview-src-list="item.expressPhoto"/>
</view>
<view class="mb-10">备注: {{ item.remark ? item.remark : '无' }}</view> <view class="mb-10">备注: {{ item.remark ? item.remark : '无' }}</view>
<view class="mb-10">买家备注: {{ item.buyerRemark ? item.buyerRemark : '无' }}</view> <view class="mb-10">买家备注: {{ item.buyerRemark ? item.buyerRemark : '无' }}</view>
<view class="mb-10">图片: <view class="mb-10">凭证:
<template v-if="item.photos && item.photos.length > 0"> <template v-if="item.photos && item.photos.length > 0">
<el-image v-for="(photo, photoIndex) in item.photos" :key="photoIndex" :src="photo" <el-image v-for="(photo, photoIndex) in item.photos" :key="photoIndex"
style="width: 80px; height: 80px" fit="cover" :src="typeof photo === 'string' ? photo : photo.url"
:preview-src-list="item.photos"/> style="width: 80px; height: 80px; margin-right: 8px;" fit="cover"
:preview-src-list="item.photos.map(p => typeof p === 'string' ? p : p.url)"/>
</template>
<text v-else>无</text>
</view>
<view class="mb-10">附件:
<template v-if="item.ext && item.ext.length > 0">
<el-image v-for="(file, fileIndex) in item.ext" :key="fileIndex"
:src="typeof file === 'string' ? file : file.url"
style="width: 80px; height: 80px; margin-right: 8px;" fit="cover"
:preview-src-list="item.ext.map(p => typeof p === 'string' ? p : p.url)"/>
</template> </template>
<text v-else>无</text> <text v-else>无</text>
</view> </view>
+2 -2
View File
@@ -321,7 +321,7 @@ export default {
keyword: '', keyword: '',
orderPayList: [], orderPayList: [],
payInfo: {}, payInfo: {},
payTypeList: ['预付款', '进度款', '尾款', '货到付款', '全款'], payTypeList: ['预付款', '进度款', '尾款', '全款'],
topExpiredAt: '', topExpiredAt: '',
typeStr: '全部类型', typeStr: '全部类型',
showTypeFilter: false, showTypeFilter: false,
@@ -643,7 +643,7 @@ export default {
</script> </script>
<style lang="scss"> <style lang="scss">
/deep/ .u-button--mini { ::v-deep .u-button--mini {
padding: 0 1px !important; padding: 0 1px !important;
} }
@@ -421,7 +421,7 @@ export default {
padding-bottom: 60upx; padding-bottom: 60upx;
} }
/deep/ .ql-editor.ql-blank:before { ::v-deep .ql-editor.ql-blank:before {
font-size: 28upx; font-size: 28upx;
font-style: inherit; font-style: inherit;
} }
@@ -89,7 +89,7 @@ import props from "./props.js";
* @property {Boolean} password 是否密码类型 ( 默认 false ) * @property {Boolean} password 是否密码类型 ( 默认 false )
* @property {String | Number} maxlength 最大输入长度,设置为 -1 的时候不限制最大长度 ( 默认 -1 ) * @property {String | Number} maxlength 最大输入长度,设置为 -1 的时候不限制最大长度 ( 默认 -1 )
* @property {String} placeholder 输入框为空时的占位符 * @property {String} placeholder 输入框为空时的占位符
* @property {String} placeholderClass 指定placeholder的样式类,注意页面或组件的style中写了scoped时,需要在类名前写/deep/ ( 默认 'input-placeholder' ) * @property {String} placeholderClass 指定placeholder的样式类,注意页面或组件的style中写了scoped时,需要在类名前写::v-deep ( 默认 'input-placeholder' )
* @property {String | Object} placeholderStyle 指定placeholder的样式,字符串/对象形式,如"color: red;" * @property {String | Object} placeholderStyle 指定placeholder的样式,字符串/对象形式,如"color: red;"
* @property {Boolean} showWordLimit 是否显示输入字数统计,只在 type ="text"或type ="textarea"时有效 ( 默认 false ) * @property {Boolean} showWordLimit 是否显示输入字数统计,只在 type ="text"或type ="textarea"时有效 ( 默认 false )
* @property {String} confirmType 设置右下角按钮的文字,兼容性详见uni-app文档 ( 默认 'done' ) * @property {String} confirmType 设置右下角按钮的文字,兼容性详见uni-app文档 ( 默认 'done' )
@@ -49,7 +49,7 @@ import props from "./props.js";
* *
* @property {String | Number} value 输入框的内容 * @property {String | Number} value 输入框的内容
* @property {String | Number} placeholder 输入框为空时占位符 * @property {String | Number} placeholder 输入框为空时占位符
* @property {String} placeholderClass 指定placeholder的样式类,注意页面或组件的style中写了scoped时,需要在类名前写/deep/ ( 默认 'input-placeholder' ) * @property {String} placeholderClass 指定placeholder的样式类,注意页面或组件的style中写了scoped时,需要在类名前写::v-deep ( 默认 'input-placeholder' )
* @property {String | Object} placeholderStyle 指定placeholder的样式,字符串/对象形式,如"color: red;" * @property {String | Object} placeholderStyle 指定placeholder的样式,字符串/对象形式,如"color: red;"
* @property {String | Number} height 输入框高度(默认 70 ) * @property {String | Number} height 输入框高度(默认 70 )
* @property {String} confirmType 设置键盘右下角按钮的文字,仅微信小程序,App-vue和H5有效(默认 'done' ) * @property {String} confirmType 设置键盘右下角按钮的文字,仅微信小程序,App-vue和H5有效(默认 'done' )