Browse Source

fix:新的需求 订单号的那些

zhangyong/feature-20250815160302-金币优化
lihui 2 months ago
parent
commit
1e093ca2a7
  1. 2
      src/views/consume/gold/coinConsumeDetail.vue
  2. 130
      src/views/refund/gold/addCoinRefund.vue

2
src/views/consume/gold/coinConsumeDetail.vue

@ -631,6 +631,8 @@ const getMarket = async function () {
<el-table-column prop="name" label="姓名" width="150px" fixed="left" show-overflow-tooltip /> <el-table-column prop="name" label="姓名" width="150px" fixed="left" show-overflow-tooltip />
<el-table-column prop="jwcode" label="精网号" width="110px" fixed="left" /> <el-table-column prop="jwcode" label="精网号" width="110px" fixed="left" />
<el-table-column prop="market" label="所属地区" width="110px" /> <el-table-column prop="market" label="所属地区" width="110px" />
<el-table-column prop="orderCode" label="订单号" width="260px" show-overflow-tooltip />
<el-table-column prop="goodsName" label="商品" width="160px" show-overflow-tooltip /> <el-table-column prop="goodsName" label="商品" width="160px" show-overflow-tooltip />
<el-table-column prop="payPlatform" label="消耗平台" width="120px"> <el-table-column prop="payPlatform" label="消耗平台" width="120px">
<template #default="scope"> <template #default="scope">

130
src/views/refund/gold/addCoinRefund.vue

@ -1,10 +1,6 @@
<script setup> <script setup>
import {onMounted, reactive} from 'vue'
import {ref, computed, watch} from 'vue'
import {ElMessage} from 'element-plus'
import {Plus} from '@element-plus/icons-vue'
import axios from 'axios'
import {ElMessageBox} from 'element-plus'
import {computed, onMounted, reactive, ref, watch} from 'vue'
import {ElMessage, ElMessageBox} from 'element-plus'
import API from '@/util/http.js' import API from '@/util/http.js'
import moment from 'moment' import moment from 'moment'
// import _ from 'lodash' // import _ from 'lodash'
@ -44,7 +40,9 @@ const addRefund = ref({
taskGold: '', taskGold: '',
sumGold: 0, sumGold: 0,
remark: '', remark: '',
adminId: null
adminId: null,
orderCode: ''
}) })
// //
@ -59,7 +57,8 @@ const cancel = function () {
taskGold: '', taskGold: '',
sumGold: 0, sumGold: 0,
remark: '', remark: '',
adminId: adminData.value.id
adminId: adminData.value.id,
orderCode: '',
} }
addRe.value.typeR = '0' addRe.value.typeR = '0'
} }
@ -157,7 +156,9 @@ const validateJwCode = (rule, value, callback) => {
const rules = reactive({ const rules = reactive({
jwcode: [{required: true, validator: validateJwCode, trigger: 'blur'}], jwcode: [{required: true, validator: validateJwCode, trigger: 'blur'}],
refundType: [{required: true, message: '请选择退款类型', trigger: 'blur'}], refundType: [{required: true, message: '请选择退款类型', trigger: 'blur'}],
goodsName: [{required: true, message: '请选择退款商品', trigger: 'blur'}],
goodsName: [{required: false, message: '请选择退款商品', trigger: 'blur'}],
//
orderCode: [{required: true, message: '请输入订单号', trigger: 'blur'}],
taskGold: [{required: true, message: '请输入任务金币', trigger: 'blur'}], taskGold: [{required: true, message: '请输入任务金币', trigger: 'blur'}],
freeGold: [{required: true, message: '请输入免费金币', trigger: 'blur'}], freeGold: [{required: true, message: '请输入免费金币', trigger: 'blur'}],
permanentGold: [ permanentGold: [
@ -223,6 +224,8 @@ const getUser = async function (jwcode) {
}) })
console.log('请求成功', result) console.log('请求成功', result)
//
restGoods()
// //
if (result.code === 0) { if (result.code === 0) {
ElMessage.error(result.msg); ElMessage.error(result.msg);
@ -277,55 +280,77 @@ const refundType = ref([{value: '商品退款', label: '商品退款'}]);
// //
const goodsName = ref([])
const goodsName = ref([]) //
const orderCodes = ref([]) //
const getGoods = async function (jwcode) { const getGoods = async function (jwcode) {
trimJwCode(); trimJwCode();
//
//
if (!/^\d{1,9}$/.test(jwcode)) { if (!/^\d{1,9}$/.test(jwcode)) {
ElMessage.warning('精网号必须为数字且不超过九位'); ElMessage.warning('精网号必须为数字且不超过九位');
return; return;
} }
//
if (!addRefund.value.jwcode) { if (!addRefund.value.jwcode) {
goodsName.value = []; //
goodsName.value = []
orderCodes.value = []
return; return;
} }
try { try {
// POST
const result = await API({ const result = await API({
url: '/refund/selectGoods', url: '/refund/selectGoods',
data: {
jwcode: addRefund.value.jwcode
}
data: { jwcode: addRefund.value.jwcode }
}) })
console.log('请求成功', result)
//
if (Array.isArray(result.data)) { if (Array.isArray(result.data)) {
// { value, label }
//
goodsName.value = result.data.map(item => ({ goodsName.value = result.data.map(item => ({
value: item.goodsName, // 使 value
label: item.goodsName,
key: item.goodsName,
//
orderCode: item.orderCode,
goodsName: item.goodsName,
permanentGold: Math.abs(Number(item.permanentGold) || 0) / 100, permanentGold: Math.abs(Number(item.permanentGold) || 0) / 100,
freeGold: Math.abs(Number(item.freeGold) || 0) / 100, freeGold: Math.abs(Number(item.freeGold) || 0) / 100,
taskGold: Math.abs(Number(item.taskGold) || 0) / 100
}));
taskGold: Math.abs(Number(item.taskGold) || 0) / 100,
}))
// [{label, value}]
orderCodes.value = result.data.map(item => ({
label: item.orderCode,
value: item.orderCode
}))
} else { } else {
console.error('退款类型数据格式错误', result)
ElMessage.error('退款类型数据格式错误,请联系管理员')
ElMessage.error('商品数据格式错误,请联系管理员')
} }
} catch (error) { } catch (error) {
console.log('请求失败', error) console.log('请求失败', error)
ElMessage.error('查询商品失败,请检查精网号是否正确') ElMessage.error('查询商品失败,请检查精网号是否正确')
goodsName.value = []; //
goodsName.value = []
orderCodes.value = []
} }
} }
//
const handleOrderChange = (orderCode) => {
const selected = goodsName.value.find(item => item.orderCode === orderCode)
if (selected) {
addRefund.value.goodsName = selected.goodsName
// 退退
if (addRe.value.typeR === '0') {
addRefund.value.permanentGold = selected.permanentGold
addRefund.value.freeGold = selected.freeGold
addRefund.value.taskGold = selected.taskGold
}
//
selectedGoodsGold.value = {
permanentGold: selected.permanentGold,
freeGold: selected.freeGold,
taskGold: selected.taskGold
}
} else {
addRefund.value.goodsName = ''
}
}
// //
const selectedGoodsGold = ref({ const selectedGoodsGold = ref({
permanentGold: 0, permanentGold: 0,
@ -333,6 +358,16 @@ const selectedGoodsGold = ref({
taskGold: 0 taskGold: 0
}) })
//
const restGoods = () => {
addRefund.value.orderCode = ''
addRefund.value.goodsName = ''
addRefund.value.permanentGold = ''
addRefund.value.freeGold = ''
addRefund.value.taskGold = ''
}
// 退退退退 // 退退退退
const handleRefundModelChange = () => { const handleRefundModelChange = () => {
if (addRe.value.typeR === '0') { if (addRe.value.typeR === '0') {
@ -430,7 +465,9 @@ watch(calculatedRechargeGoods, (newVal) => {
addRefund.value.sumGold = newVal addRefund.value.sumGold = newVal
console.log('计算的总金币', newVal) console.log('计算的总金币', newVal)
}) })
//
// //
onMounted(async function () { onMounted(async function () {
@ -455,13 +492,29 @@ onMounted(async function () {
<el-option v-for="item in refundType" :key="item.value" :label="item.label" :value="item.value"/> <el-option v-for="item in refundType" :key="item.value" :label="item.label" :value="item.value"/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item prop="goodsName" label="商品名">
<el-select v-model="addRefund.goodsName" placeholder="请选择" style="width: 220px"
@change="handleSelectionChange">
<el-option v-for="item in goodsName" :key="item.key" :label="item.label" :value="item"/>
<el-form-item prop="orderCode" label="订单号">
<el-select
v-model="addRefund.orderCode"
placeholder="请选择订单号"
style="width: 220px;"
clearable
filterable
@change="handleOrderChange"
>
<el-option
v-for="(item, index) in orderCodes"
:key="index"
:label="item.label"
:value="item.value"
/>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item prop="goodsName" label="商品名">
<el-input v-model="addRefund.goodsName" style="width: 220px" disabled />
</el-form-item>
<el-form-item prop="refundModel" label="退款方式:"> <el-form-item prop="refundModel" label="退款方式:">
<el-radio-group v-model="addRe.typeR" @change="handleRefundModelChange"> <el-radio-group v-model="addRe.typeR" @change="handleRefundModelChange">
<el-radio value="0">全部退款</el-radio> <el-radio value="0">全部退款</el-radio>
@ -510,7 +563,7 @@ onMounted(async function () {
</el-form> </el-form>
<!-- 客户信息栏 --> <!-- 客户信息栏 -->
<el-card v-if="user.jwcode" style="max-width: 800px" class="beautiful">
<el-card v-if="user.jwcode" style="max-width: 800px" class="beautiful">
<el-form :model="user" label-width="auto" style="max-width: 800px" label-position="left"> <el-form :model="user" label-width="auto" style="max-width: 800px" label-position="left">
<el-text size="large" style="margin-left: 20px">客户信息</el-text> <el-text size="large" style="margin-left: 20px">客户信息</el-text>
@ -649,6 +702,5 @@ p {
} }
</style> </style>
Loading…
Cancel
Save