Browse Source

Merge branch 'refs/heads/lihui/feature-20250815155204-金币优化' into milestone-20250815-金币优化

zhangyong/feature-20250815160302-金币优化
lihui 2 months ago
parent
commit
4fb40dcd04
  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="jwcode" label="精网号" width="110px" fixed="left" />
<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="payPlatform" label="消耗平台" width="120px">
<template #default="scope">

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

@ -1,10 +1,6 @@
<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 moment from 'moment'
// import _ from 'lodash'
@ -44,7 +40,9 @@ const addRefund = ref({
taskGold: '',
sumGold: 0,
remark: '',
adminId: null
adminId: null,
orderCode: ''
})
//
@ -59,7 +57,8 @@ const cancel = function () {
taskGold: '',
sumGold: 0,
remark: '',
adminId: adminData.value.id
adminId: adminData.value.id,
orderCode: '',
}
addRe.value.typeR = '0'
}
@ -157,7 +156,9 @@ const validateJwCode = (rule, value, callback) => {
const rules = reactive({
jwcode: [{required: true, validator: validateJwCode, 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'}],
freeGold: [{required: true, message: '请输入免费金币', trigger: 'blur'}],
permanentGold: [
@ -223,6 +224,8 @@ const getUser = async function (jwcode) {
})
console.log('请求成功', result)
//
restGoods()
//
if (result.code === 0) {
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) {
trimJwCode();
//
//
if (!/^\d{1,9}$/.test(jwcode)) {
ElMessage.warning('精网号必须为数字且不超过九位');
return;
}
//
if (!addRefund.value.jwcode) {
goodsName.value = []; //
goodsName.value = []
orderCodes.value = []
return;
}
try {
// POST
const result = await API({
url: '/refund/selectGoods',
data: {
jwcode: addRefund.value.jwcode
}
data: { jwcode: addRefund.value.jwcode }
})
console.log('请求成功', result)
//
if (Array.isArray(result.data)) {
// { value, label }
//
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,
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 {
console.error('退款类型数据格式错误', result)
ElMessage.error('退款类型数据格式错误,请联系管理员')
ElMessage.error('商品数据格式错误,请联系管理员')
}
} catch (error) {
console.log('请求失败', 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({
permanentGold: 0,
@ -333,6 +358,16 @@ const selectedGoodsGold = ref({
taskGold: 0
})
//
const restGoods = () => {
addRefund.value.orderCode = ''
addRefund.value.goodsName = ''
addRefund.value.permanentGold = ''
addRefund.value.freeGold = ''
addRefund.value.taskGold = ''
}
// 退退退退
const handleRefundModelChange = () => {
if (addRe.value.typeR === '0') {
@ -430,7 +465,9 @@ watch(calculatedRechargeGoods, (newVal) => {
addRefund.value.sumGold = newVal
console.log('计算的总金币', newVal)
})
//
//
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-select>
</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-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-radio-group v-model="addRe.typeR" @change="handleRefundModelChange">
<el-radio value="0">全部退款</el-radio>
@ -510,7 +563,7 @@ onMounted(async function () {
</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-text size="large" style="margin-left: 20px">客户信息</el-text>
@ -649,6 +702,5 @@ p {
}
</style>
Loading…
Cancel
Save