22 Commits

Author SHA1 Message Date
ZhangYong e421d7c3dd 退款产品数量改为原订单的 2 weeks ago
ZhangYong 9001e82084 产品组件取消问题,编辑充值金币单位问题 2 weeks ago
ZhangYong 633f6675ed 金币充值单位问题 2 weeks ago
ZhangYong 5c9e302877 执行人放大问题 2 weeks ago
ZhangYong 7326bf0b0b 恢复红包 2 weeks ago
zhangrenyuan 0b45b31d4e Merge branch 'milestone-20260328-金币日常优化3.0' of http://39.101.133.168:8807/huangqizhen/gold-vue into milestone-20260328-金币日常优化3.0 2 weeks ago
zhangrenyuan 5cf5c1c8c8 提示规则 2 weeks ago
jiangcheng f87fe678e6 Merge branch 'jiangcheng/feature-20260326164657-金币日常优化3.0' into milestone-20260328-金币日常优化3.0 2 weeks ago
jiangcheng 5808066e38 Merge branch 'jiangcheng/feature-20260326164657-金币日常优化3.0' into milestone-20260328-金币日常优化3.0 2 weeks ago
jiangcheng e53b1ac664 Merge branch 'jiangcheng/feature-20260326164657-金币日常优化3.0' into milestone-20260328-金币日常优化3.0 2 weeks ago
ZhangYong 68a1e183ab 防重复状态问题 2 weeks ago
jiangcheng 20fb9cfd95 Merge branch 'jiangcheng/feature-20260326164657-金币日常优化3.0' into milestone-20260328-金币日常优化3.0 2 weeks ago
ZhangYong d9661c4a64 Merge branch 'milestone-20260328-金币日常优化3.0' of http://39.101.133.168:8807/huangqizhen/gold-vue into milestone-20260328-金币日常优化3.0 2 weeks ago
ZhangYong 3ccde21cc9 校验状态,禁用状态残留;编辑提交校验问题修复 2 weeks ago
zhangrenyuan 66bef87ca2 单位置空 2 weeks ago
jiangcheng a80191fec9 Merge branch 'jiangcheng/feature-20260326164657-金币日常优化3.0' into milestone-20260328-金币日常优化3.0 2 weeks ago
jiangcheng 58a9d7216a 多语言配置和优化 3 weeks ago
jiangcheng 6b1f8b358c Merge branch 'jiangcheng/feature-20260326164657-金币日常优化3.0' into milestone-20260328-金币日常优化3.0 3 weeks ago
zhangrenyuan 2885a353c7 Merge branch 'zhangrenyuan/feature-20260326164720-日常优化3.0' into milestone-20260328-金币日常优化3.0 3 weeks ago
zhangrenyuan 40cf8eb0f4 排序 3 weeks ago
ZhangYong 89376e9ccb 新增历史钱包 3 weeks ago
zhangrenyuan e45ea38de9 收款提交的新增 3 weeks ago
  1. 7
      src/components/MoneyManage/ProductSelect.vue
  2. 3
      src/components/locales/lang/en.js
  3. 3
      src/components/locales/lang/zh-CN.js
  4. 217
      src/views/consume/gold/addCoinConsume.vue
  5. 54
      src/views/moneyManage/executor/executor.vue
  6. 2
      src/views/moneyManage/financialAccount/cashFlow.vue
  7. 2
      src/views/moneyManage/financialAccount/performanceAttribution.vue
  8. 2
      src/views/moneyManage/receiveDetail/receiveFinance.vue
  9. 2
      src/views/moneyManage/receiveDetail/receiveHead.vue
  10. 2
      src/views/moneyManage/receiveDetail/receiveManage.vue
  11. 60
      src/views/moneyManage/receiveDetail/receiveService.vue
  12. 4
      src/views/moneyManage/receiveDetail/utils/staticData.js
  13. 8
      src/views/moneyManage/refundDetail/refundCharge.vue
  14. 8
      src/views/moneyManage/refundDetail/refundFinance.vue
  15. 8
      src/views/moneyManage/refundDetail/refundHeader.vue
  16. 8
      src/views/moneyManage/refundDetail/refundService.vue
  17. 63
      src/views/usergold/gold/clientCountWallet.vue

7
src/components/MoneyManage/ProductSelect.vue

@ -189,11 +189,8 @@ const confirmSelection = () => {
}
const cancelSelection = () => {
emit('update:modelValue', '');
emit('change', '');
console.log('点击了取消', '');
selectedItem.value = '';
selectedValue.value = '';
selectedValue.value = props.modelValue
selectedItem.value = props.modelValue || ''
isOpen.value = false
showPanel.value = false
}

3
src/components/locales/lang/en.js

@ -940,6 +940,7 @@ export default {
exceptionData: "Exception Data",
time: "Time",
market: {
historyGold: "History",
hkGold: "Hong Kong",
sgHcGold: "Singapore HC",
sgCmGold: "Singapore CM",
@ -1137,6 +1138,8 @@ export default {
ipay88: "Ipay88",
paymentAsia: "PaymentAsia",
transfer: "E-Transfer",
iotPay: "IOT Pay",
stripe3:'Stripe3',
paysolution:'paysolution',
stripe2:'Stripe2',
},

3
src/components/locales/lang/zh-CN.js

@ -947,6 +947,7 @@ export default {
exceptionData: "异常数据",
time: "时间",
market: {
historyGold: "历史钱包",
hkGold: "香港",
sgHcGold: "新加坡HC",
sgCmGold: "新加坡CM",
@ -1149,6 +1150,8 @@ export default {
ipay88: "Ipay88",
paymentAsia: "PaymentAsia",
transfer: "E-Transfer",
iotPay: "IOT Pay",
stripe3:'Stripe3',
paysolution:'paysolution',
stripe2:'Stripe2',
},

217
src/views/consume/gold/addCoinConsume.vue

@ -1,5 +1,5 @@
<script setup>
import { onMounted, reactive, ref, watch, nextTick } from "vue";
import { onMounted, reactive, ref, watch, computed, nextTick } from "vue";
import { ElIcon, ElMessage } from "element-plus";
import moment from "moment";
import request from "@/util/http.js"
@ -36,6 +36,7 @@ const user = ref({
jwcode: null,
name: "",
market: "",
red: null,
historySumGold: null,
historyPermanentGold: null,
historyFreeGold: null,
@ -63,7 +64,8 @@ const addConsume = ref({
taskGold: null, //
remark: "",//
adminId: null,// id
adminName: adminData.value.adminName
adminName: adminData.value.adminName,
redMoney: 1 // 使1-使0-使
})
const Ref = ref(null)
const rules = reactive({
@ -75,6 +77,19 @@ const rules = reactive({
{ required: true, message: t('elmessage.noEmptySumGold'), trigger: "blur" },
{
validator: (rule, value, callback) => {
// 使0
if (addConsume.value.redMoney === 1) {
const price = Number(addConsume.value.price || 0)
const redAmount = totalRedAmount.value
if (redAmount >= price) {
// 0
if (parseFloat(value) === 0 || value === 0) {
callback();
return;
}
}
}
// 00.10
const isValid = /^(0\.\d{1,2})|([1-9]\d*(\.\d{1,2})?)$/.test(value);
@ -164,7 +179,13 @@ function validateInput() {
const totalAvailableGold = (user.value.nowSumGold)
//
if (user.value.jwcode && sumGold > totalAvailableGold) {
ElMessage.error(t('elmessage.limitExceeded'));
if (addConsume.value.redMoney === 1) {
ElMessage.error(t('elmessage.limitRedAmount'));
//
selectedReds.value = []
} else {
ElMessage.error(t('elmessage.limitExceeded'));
}
// sumGoldnull
addConsume.value.sumGold = null;
return false;
@ -173,6 +194,34 @@ function validateInput() {
return true;
}
// blur +
function validateRedLimit() {
const sumGold = parseFloat(addConsume.value.sumGold);
const price = Number(addConsume.value.price || 0);
// 使使user.red
const redAmount = (addConsume.value.redMoney == 1 && selectedReds.value.length > 0)
? totalRedAmount.value
: (addConsume.value.redMoney == 1 ? Number(user.value.red || 0) : 0);
if (!isNaN(price) && price > 0) {
// sumGold0
const isCovered = redAmount >= price;
if (isNaN(sumGold) || (sumGold <= 0 && !isCovered)) {
ElMessage.error(t('elmessage.noEmptySumGold'));
return false;
}
// 使 +
if (addConsume.value.redMoney == 1) {
if (sumGold + redAmount < price) {
ElMessage.error(t('elmessage.limitRedAmount'));
return false;
}
}
}
return true;
}
//
function calculateCoins(sumGold) {
console.log("消耗金币计算函数:计算金币", sumGold);
@ -252,7 +301,9 @@ const add = async function () {
permanentGold: addConsume.value.permanentGold * 100,
goodsName: addConsume.value.goodsName?.value || addConsume.value.goodsName,
remark: addConsume.value.remark,
adminName: adminData.value.adminName
adminName: adminData.value.adminName,
redMoney: Number(addConsume.value.redMoney), // 1-使0-使
redIds: addConsume.value.redMoney === 1 ? selectedReds.value.map(item => item.id) : [] // ID
}
})
addDisabled.value = false
@ -302,9 +353,14 @@ function resetForm() {
taskGold: null,
remark: "",
adminId: adminData.value.id,
adminName: adminData.value.adminName
adminName: adminData.value.adminName,
redMoney: 1 // 使
}
//
selectedReds.value = []
redList.value = []
console.log("重置表单")
user.value = {
@ -423,7 +479,7 @@ const addBefore = () => {
});
return;
}
if (!validateInput()) {
if (!validateInput() || !validateRedLimit()) {
return;
}
ReadCookies.value = `coinConsume-${addConsume.value.jwcode}-${addConsume.value.goodsName.value}`
@ -513,6 +569,11 @@ const getUser = async function (jwcode) {
if (code === 200) {
ElMessage.success(t('elmessage.searchSuccess'));
//
if (addConsume.value.redMoney === 1) {
getRedList()
}
//
validateInput()
} else {
@ -599,6 +660,108 @@ const handleGoodsChange = (val) => {
// );
/*
====================红包逻辑=================================
*/
//
const redList = ref([])
//
const selectedReds = ref([])
//
const getRedList = async () => {
//
if (!user.value.jwcode) return
try {
const result = await request({
url: "/Temporary/RedList",
data: { jwcode: user.value.jwcode }
})
console.log("红包列表", result)
if (result.code === 200) {
redList.value = result.data || []
}
} catch (error) {
console.error("获取红包列表失败", error)
}
}
// 使
watch(() => addConsume.value.redMoney, (val) => {
// sumGold
if (Ref.value) {
Ref.value.clearValidate('sumGold')
}
if (val === 1) {
if (!user.value.jwcode) {
if (addConsume.value.jwcode) {
ElMessage.warning(t('elmessage.checkUserInfo'))
}
redList.value = []
selectedReds.value = []
addConsume.value.sumGold = null
return
}
selectedReds.value = []
getRedList()
//
if (addConsume.value.price) {
addConsume.value.sumGold = addConsume.value.price
} else {
addConsume.value.sumGold = null
}
} else {
selectedReds.value = []
addConsume.value.sumGold = null
}
})
//
const totalRedAmount = computed(() => {
return selectedReds.value.reduce((sum, item) => {
// 使 discount
const amount = Number(item.discount || 0)
return sum + amount
}, 0)
})
//
watch(selectedReds, () => {
if (addConsume.value.redMoney === 1) {
const price = Number(addConsume.value.price || 0)
const redTotal = totalRedAmount.value
//
let remaining = price - redTotal
if (remaining < 0) remaining = 0
addConsume.value.sumGold = remaining
}
}, { deep: true })
//
const isRedOptionDisabled = (item) => {
//
if (selectedReds.value.some(r => r.id === item.id)) return false
const price = Number(addConsume.value.price || 0)
//
if (totalRedAmount.value >= price) return true
return false
}
//
watch(() => addConsume.value.price, (newPrice) => {
if (addConsume.value.redMoney === 1) {
const redTotal = totalRedAmount.value
let remaining = (newPrice || 0) - redTotal
if (remaining < 0) remaining = 0
addConsume.value.sumGold = remaining
}
})
/*
====================挂载=================================
*/
//
@ -631,8 +794,41 @@ onMounted(async function () {
<el-input v-model="addConsume.price" style="width: 120px" disabled />
</el-form-item>
<!-- <el-form-item prop="sumGold" :label="t('common_add.consumeTotalGold')">
<el-input v-model="addConsume.sumGold" style="width: 120px"
@blur="validateRedLimit()" />
</el-form-item> -->
<el-form-item prop="sumGold" :label="t('common_add.consumeTotalGold')">
<el-input v-model="addConsume.sumGold" style="width: 120px" />
<div style="display: flex; align-items: flex-start;">
<el-input v-model="addConsume.sumGold" style="width: 120px; flex-shrink: 0;" @blur="validateRedLimit()"
:disabled="addConsume.redMoney === 1" />
<div style="display: flex; flex-wrap: wrap; margin-left: 10px;">
<el-radio v-model="addConsume.redMoney" :label="1">{{ t('common_add.使用红包') }}</el-radio>
<el-radio v-model="addConsume.redMoney" :label="0">{{ t('common_add.不使用红包') }}</el-radio>
</div>
</div>
</el-form-item>
<el-form-item v-if="addConsume.redMoney === 1" :label="t('common_add.选择红包')">
<el-select
v-model="selectedReds"
multiple
:placeholder="t('common_add.请选择红包')"
style="width: 200px"
value-key="id"
collapse-tags
>
<el-option
v-for="item in redList"
:key="item.id"
:label="`${item.title} (${item.discount})`"
:value="item"
:disabled="isRedOptionDisabled(item)"
/>
</el-select>
<span style="margin-left: 10px; color: #666;">
{{ t('common_add.已抵扣') }}: {{ totalRedAmount }}
</span>
</el-form-item>
@ -730,13 +926,18 @@ onMounted(async function () {
</el-row> -->
<!-- 第四行所属门店 -->
<!-- 第四行消费次数 + 所属门店 -->
<el-row>
<el-col :span="9">
<el-form-item :label="$t('common_add_user.store')">
<p>{{ user.market }}</p>
</el-form-item>
</el-col>
<el-col :span="14">
<el-form-item :label="$t('common_add_user.maxReductionAmount')">
<p style="color: #2fa1ff">{{ user.red }} </p>
</el-form-item>
</el-col>
</el-row>
</el-form>
</el-card>

54
src/views/moneyManage/executor/executor.vue

@ -65,9 +65,9 @@
<el-table-column prop="goodsName" :label="t('common_list.productName')" width="120" />
<el-table-column prop="goodsNum" :label="t('common_list.productNum')" width="130px">
<template #default="scope">
<span v-if="scope.row.goodsName == t('common_list.goldRecharge')">{{
scope.row.permanentGold }} {{ t('cash.unit') }}</span>
<span v-else>{{ scope.row.goodsNum }} {{ scope.row.numUnit }}</span>
<!-- <span v-if="scope.row.goodsName == t('common_list.goldRecharge')">{{
scope.row.permanentGold }} {{ t('cash.unit') }}</span> -->
<span>{{ scope.row.goodsNum }} {{ scope.row.numUnit }}</span>
</template>
</el-table-column>
<el-table-column prop="refundModel" :label="t('common_list.refundModel')" width="140">
@ -192,7 +192,7 @@
<div class="dialog-item">
<el-text style="width:4vw;">{{ t('common_add.transferVoucher') }}</el-text>
<img v-if="editRow.payVoucher" :src="editRow.payVoucher"
style="width: 80px; height: 80px; object-fit: cover;">
style="width: 80px; height: 80px; object-fit: cover; cursor: zoom-in;" @click="openVoucherViewer(editRow.payVoucher)">
<div v-else>
{{ t('common_add.noTransferVoucher') }}
</div>
@ -302,6 +302,50 @@ const showEdit = ref(false)
const editForm = ref({
jwcode: ''
})
//
const openVoucherViewer = (url) => {
if (!url) return
const container = document.createElement('div')
container.style.position = 'fixed'
container.style.left = '0'
container.style.top = '0'
container.style.width = '100vw'
container.style.height = '100vh'
container.style.backgroundColor = 'rgba(0,0,0,0.7)'
container.style.display = 'flex'
container.style.alignItems = 'center'
container.style.justifyContent = 'center'
container.style.zIndex = '9999'
container.style.cursor = 'zoom-in'
const img = document.createElement('img')
img.src = url
img.style.maxWidth = '90%'
img.style.maxHeight = '90%'
img.style.transformOrigin = 'center center'
img.style.transition = 'transform 0.05s linear'
let scale = 1
const onWheel = (e) => {
e.preventDefault()
const factor = e.deltaY > 0 ? 0.9 : 1.1
scale = Math.min(5, Math.max(0.2, scale * factor))
img.style.transform = `scale(${scale})`
}
const onKey = (e) => { if (e.key === 'Escape') close() }
const close = () => {
container.removeEventListener('wheel', onWheel)
document.body.removeEventListener('keydown', onKey)
document.body.contains(container) && document.body.removeChild(container)
}
container.addEventListener('wheel', onWheel, { passive: false })
container.addEventListener('click', (e) => { if (e.target === container) close() })
document.body.addEventListener('keydown', onKey)
container.appendChild(img)
document.body.appendChild(container)
}
//
const getRefund = async function () {
try {
@ -469,6 +513,8 @@ const channelOptions = ref([
t('cash.payMethods.grabpay'),
t('cash.payMethods.nets'),
t('cash.payMethods.transfer'),
t('cash.payMethods.iotPay'),
t('cash.payMethods.stripe3'),
t('cash.payMethods.paypal'),
])

2
src/views/moneyManage/financialAccount/cashFlow.vue

@ -25,6 +25,8 @@ const paytypeList = [
t('cash.payMethods.grabpay'), // Grabpay
t('cash.payMethods.nets'), // Nets
t('cash.payMethods.transfer'), // E-Transfer
t('cash.payMethods.iotPay'), // IOT Pay
t('cash.payMethods.stripe3'), // Stripe3
t('cash.payMethods.paypal'), // PayPal
t('cash.payMethods.paysolution'), // Paysolution
t('cash.payMethods.bankTransfer'),//

2
src/views/moneyManage/financialAccount/performanceAttribution.vue

@ -24,6 +24,8 @@ const paytypeList = [
t('cash.payMethods.grabpay'),
t('cash.payMethods.nets'),
t('cash.payMethods.transfer'),
t('cash.payMethods.iotPay'),
t('cash.payMethods.stripe3'),
t('cash.payMethods.paypal'),
]

2
src/views/moneyManage/receiveDetail/receiveFinance.vue

@ -781,6 +781,8 @@ const paytypeList = [
t('cash.payMethods.grabpay'), // Grabpay
t('cash.payMethods.nets'), // Nets
t('cash.payMethods.transfer'), // E-Transfer
t('cash.payMethods.iotPay'), // IOT Pay
t('cash.payMethods.stripe3'), // Stripe3
t('cash.payMethods.paypal'), // PayPal
t('cash.payMethods.paysolution'), // Paysolution
t('cash.payMethods.bankTransfer'),//

2
src/views/moneyManage/receiveDetail/receiveHead.vue

@ -764,6 +764,8 @@ const paytypeList = ref([
t('cash.payMethods.grabpay'), // Grabpay
t('cash.payMethods.nets'), // Nets
t('cash.payMethods.transfer'), // E-Transfer
t('cash.payMethods.iotPay'), // IOT Pay
t('cash.payMethods.stripe3'), // Stripe3
t('cash.payMethods.paypal'), // PayPal
t('cash.payMethods.bankTransfer'),//
t('cash.payMethods.card'), //

2
src/views/moneyManage/receiveDetail/receiveManage.vue

@ -781,6 +781,8 @@ const paytypeList = [
t('cash.payMethods.grabpay'), // Grabpay
t('cash.payMethods.nets'), // Nets
t('cash.payMethods.transfer'), // E-Transfer
t('cash.payMethods.iotPay'), // IOT Pay
t('cash.payMethods.stripe3'), // Stripe3
t('cash.payMethods.paypal'), // PayPal
t('cash.payMethods.paysolution'), // Paysolution
t('cash.payMethods.bankTransfer'),//

60
src/views/moneyManage/receiveDetail/receiveService.vue

@ -646,7 +646,12 @@ const handlePayTypeChange = (val) => {
const handleMarketChange = (val) => {
showWallet(val);
if (addFormRef.value) {
addFormRef.value.validateField('receivedMarket');
if (val) {
addFormRef.value.validateField('receivedMarket', () => { });
} else {
addFormRef.value.clearValidate('receivedMarket');
}
addFormRef.value.clearValidate('receivedWallet');
}
};
@ -725,7 +730,7 @@ const ifGroup = () => {
isGroup.value = true
addFormData.value.receivedMarket = t('cash.markets.Malaysia')
addFormData.value.receivedWallet = t('cash.wallet.MalaysiaWallet')
} else if (addFormData.value.payType === t('cash.payMethods.transfer')) {
} else if (addFormData.value.payType === t('cash.payMethods.transfer') || addFormData.value.payType === t('cash.payMethods.iotPay') || addFormData.value.payType === t('cash.payMethods.stripe3')) {
isGroup.value = true
addFormData.value.receivedMarket = t('cash.markets.Canada')
addFormData.value.receivedWallet = t('cash.wallet.CanadaWallet')
@ -746,8 +751,7 @@ const ifGroup = () => {
selectWallet.value = true
}
if (addFormRef.value) {
addFormRef.value.validateField('receivedMarket');
addFormRef.value.validateField('receivedWallet');
addFormRef.value.clearValidate(['receivedMarket', 'receivedWallet']);
}
}
//
@ -780,9 +784,6 @@ const showWallet = (receivedMarket) => {
selectWallet.value = false
addFormData.value.receivedWallet = t('cash.wallet.BeijingWallet')
}
if (addFormRef.value) {
addFormRef.value.validateField('receivedWallet');
}
}
//
@ -801,8 +802,14 @@ const handleJwcodeBlur = () => {
}
//
const jwcodeQuerying = ref(false)
let jwcodeQueryPromise = null
const jwcodeSeachMarket = async () => {
try {
if (jwcodeQuerying.value && jwcodeQueryPromise) {
await jwcodeQueryPromise
return
}
const jwcode = String(addFormData.value.jwcode ?? '').replace(/\s/g, '')
addFormData.value.jwcode = jwcode
if (!jwcode) {
@ -817,10 +824,12 @@ const jwcodeSeachMarket = async () => {
ElMessage.error(t('elmessage.limitJwcodeLength'))
return
}
const result = await request({
jwcodeQuerying.value = true
jwcodeQueryPromise = request({
url: '/cashCollection/getNameAndMarket',
data: jwcode
})
const result = await jwcodeQueryPromise
if (result.code == 200 && result.data && Object.keys(result.data).length > 0) {
ElMessage.success(t('elmessage.customerSuccess'))
addFormData.value.market = result.data.market
@ -845,6 +854,15 @@ const jwcodeSeachMarket = async () => {
}
} catch (error) {
console.log(error);
} finally {
jwcodeQuerying.value = false
jwcodeQueryPromise = null
}
}
const waitJwcodeQuery = async () => {
if (jwcodeQuerying.value && jwcodeQueryPromise) {
await jwcodeQueryPromise
}
}
@ -864,14 +882,19 @@ const openAddForm = (row) => {
}
console.log('这是编辑数据:', addFormData.value);
showWallet(addFormData.value.receivedMarket)
jwcodeSeachMarket()
ifGroup()
} else {
//
addOrEdit.value = 1
addFormData.value = { goodsName: '' }
isGroup.value = false
selectWallet.value = false
}
addFormisible.value = true
nextTick(() => {
addFormRef.value?.clearValidate?.(['receivedMarket', 'receivedWallet'])
})
}
// /
@ -880,6 +903,8 @@ const closeAddForm = () => {
addFormData.value = {}
addOrEdit.value = 0
isGold.value = false
isGroup.value = false
selectWallet.value = false
addFormRef.value?.resetFields();
}
const testGold = () => {
@ -910,6 +935,7 @@ const testGold = () => {
//
const handleAddForm = async () => {
try {
await waitJwcodeQuery()
await addFormRef.value.validate();
if (!testGold().valid) {
ElMessage.error(testGold().message);
@ -931,6 +957,8 @@ const handleAddForm = async () => {
if (!isGold.value && addFormData.value.numUnit == '') {
ElMessage.error(t('elmessage.checkNumUnit'));
return;
}else{
addFormData.value.numUnit = t('cash.unit')
}
if (addFormData.value.goodsName == t('cash.coinRecharge')) {
if (addFormData.value.permanentGold == null || addFormData.value.permanentGold == 0) {
@ -980,12 +1008,15 @@ const handleAddForm = async () => {
console.log('新增报错:', error);
ElMessage.error(t('elmessage.checkFormInfoSubmit'));
ifAddDone.value = false
}finally{
ifAddDone.value = false
}
}
//
const handleEditForm = async () => {
try {
await waitJwcodeQuery()
await addFormRef.value.validate();
if (!testGold().valid) {
ElMessage.error(testGold().message);
@ -1007,11 +1038,15 @@ const handleEditForm = async () => {
ElMessage.error(t('elmessage.productNumError'));
return;
}
}else{
addFormData.value.goodNum = addFormData.value.permanentGold || 0
}
if (!isGold.value && addFormData.value.numUnit == '') {
ElMessage.error(t('elmessage.checkNumUnit'));
return;
}else{
addFormData.value.numUnit = t('cash.unit')
}
//
if (addFormData.value.payTime) {
@ -1048,6 +1083,8 @@ const handleEditForm = async () => {
} catch (error) {
console.log(error);
ifReAddDone.value = false
}finally{
ifReAddDone.value = false
}
}
@ -1073,6 +1110,8 @@ const paytypeOptions = ref([
t('cash.payMethods.grabpay'), // Grabpay
t('cash.payMethods.nets'), // Nets
t('cash.payMethods.transfer'), // E-Transfer
t('cash.payMethods.iotPay'), // IOT Pay
t('cash.payMethods.stripe3'), // Stripe3
t('cash.payMethods.paypal'), // PayPal
t('cash.payMethods.paysolution'), // Paysolution
t('cash.payMethods.bankTransfer'),//
@ -1108,6 +1147,7 @@ const productRestrictType = computed(() => {
const handleProductChange = (productName) => {
console.log('LastGoodsName:', LastGoodsName.value);
LastGoodsName.value = productName
addFormData.value.numUnit = ''
console.log('选中的产品名称:', productName);
if (productName && productName == t('cash.coinRecharge')) {
showWallet(addFormData.value.receivedMarket)
@ -1400,6 +1440,8 @@ const paytypeList = ref([
t('cash.payMethods.grabpay'), // Grabpay
t('cash.payMethods.nets'), // Nets
t('cash.payMethods.transfer'), // E-Transfer
t('cash.payMethods.iotPay'), // IOT Pay
t('cash.payMethods.stripe3'), // Stripe3
t('cash.payMethods.paypal'), // PayPal
t('cash.payMethods.paysolution'), // Paysolution
t('cash.payMethods.bankTransfer'),//

4
src/views/moneyManage/receiveDetail/utils/staticData.js

@ -291,6 +291,10 @@ export const normalizePayType = (name) => {
return 'PaymentAsia'
} else if (name == t('cash.payMethods.transfer') || name == 'E-Transfer') {
return 'E-Transfer'
} else if (name == t('cash.payMethods.iotPay') || name == 'IOT Pay') {
return 'IOT Pay'
} else if (name == t('cash.payMethods.stripe3') || name == 'Stripe3') {
return 'Stripe3'
} else if (name == t('cash.payMethods.grabpay') || name == 'Grabpay') {
return 'Grabpay'
} else if (name == t('cash.payMethods.nets') || name == 'Nets') {

8
src/views/moneyManage/refundDetail/refundCharge.vue

@ -57,9 +57,9 @@
<el-table-column prop="goodsName" :label="t('common_list.productName')" width="130" show-overflow-tooltip />
<el-table-column prop="goodsNum" :label="t('common_list.productNum')" width="130px">
<template #default="scope">
<span v-if="scope.row.goodsName == t('common_list.goldRecharge')">{{
scope.row.permanentGold }} {{ t('cash.unit') }}</span>
<span v-else>{{ scope.row.goodsNum }} {{ scope.row.numUnit }}</span>
<!-- <span v-if="scope.row.goodsName == t('common_list.goldRecharge')">{{
scope.row.permanentGold }} {{ t('cash.unit') }}</span> -->
<span>{{ scope.row.goodsNum }} {{ scope.row.numUnit }}</span>
</template>
</el-table-column>
<el-table-column prop="refundModel" :label="t('common_list.refundModel')" width="120">
@ -442,6 +442,8 @@ const channelOptions = computed(() => [
t('cash.payMethods.grabpay'),
t('cash.payMethods.nets'),
t('cash.payMethods.transfer'),
t('cash.payMethods.iotPay'),
t('cash.payMethods.stripe3'),
t('cash.payMethods.paypal')
])
const statusList = computed(() => [

8
src/views/moneyManage/refundDetail/refundFinance.vue

@ -53,9 +53,9 @@
<el-table-column prop="goodsName" :label="t('common_list.productName')" width="130" show-overflow-tooltip />
<el-table-column prop="goodsNum" :label="t('common_list.productNum')" width="130px">
<template #default="scope">
<span v-if="scope.row.goodsName == t('common_list.goldRecharge')">{{
scope.row.permanentGold }} {{ t('cash.unit') }}</span>
<span v-else>{{ scope.row.goodsNum }} {{ scope.row.numUnit }}</span>
<!-- <span v-if="scope.row.goodsName == t('common_list.goldRecharge')">{{
scope.row.permanentGold }} {{ t('cash.unit') }}</span> -->
<span>{{ scope.row.goodsNum }} {{ scope.row.numUnit }}</span>
</template>
</el-table-column>
<el-table-column prop="refundModel" :label="t('common_list.refundModel')" width="120">
@ -422,6 +422,8 @@ const channelOptions = computed(() => [
t('cash.payMethods.grabpay'),
t('cash.payMethods.nets'),
t('cash.payMethods.transfer'),
t('cash.payMethods.iotPay'),
t('cash.payMethods.stripe3'),
t('cash.payMethods.paypal')
])
const statusList = computed(() => [

8
src/views/moneyManage/refundDetail/refundHeader.vue

@ -53,9 +53,9 @@
<el-table-column prop="goodsName" :label="t('common_list.productName')" width="130" show-overflow-tooltip />
<el-table-column prop="goodsNum" :label="t('common_list.productNum')" width="130px">
<template #default="scope">
<span v-if="scope.row.goodsName == t('common_list.goldRecharge')">{{
scope.row.permanentGold }} {{ t('cash.unit') }}</span>
<span v-else>{{ scope.row.goodsNum }} {{ scope.row.numUnit }}</span>
<!-- <span v-if="scope.row.goodsName == t('common_list.goldRecharge')">{{
scope.row.permanentGold }} {{ t('cash.unit') }}</span> -->
<span>{{ scope.row.goodsNum }} {{ scope.row.numUnit }}</span>
</template>
</el-table-column>
<el-table-column prop="refundModel" :label="t('common_list.refundModel')" width="120">
@ -442,6 +442,8 @@ const channelOptions = computed(() => [
t('cash.payMethods.grabpay'),
t('cash.payMethods.nets'),
t('cash.payMethods.transfer'),
t('cash.payMethods.iotPay'),
t('cash.payMethods.stripe3'),
t('cash.payMethods.paypal')
])
const statusList = computed(() => [

8
src/views/moneyManage/refundDetail/refundService.vue

@ -71,9 +71,9 @@
<el-table-column prop="goodsName" :label="t('common_list.productName')" width="130" show-overflow-tooltip />
<el-table-column prop="goodsNum" :label="t('common_list.productNum')" width="130px">
<template #default="scope">
<span v-if="scope.row.goodsName == t('common_list.goldRecharge')">{{
scope.row.permanentGold }} {{ t('cash.unit') }}</span>
<span v-else>{{ scope.row.goodsNum }} {{ scope.row.numUnit }}</span>
<!-- <span v-if="scope.row.goodsName == t('common_list.goldRecharge')">{{
scope.row.permanentGold }} {{ t('cash.unit') }}</span> -->
<span>{{ scope.row.goodsNum }} {{ scope.row.numUnit }}</span>
</template>
</el-table-column>
<el-table-column prop="paymentCurrency" :label="t('common_add.payCurrency')" width="120" />
@ -634,6 +634,8 @@ const channelOptions = computed(() => [
t('cash.payMethods.grabpay'), // Grabpay
t('cash.payMethods.nets'), // Nets
t('cash.payMethods.transfer'), // E-Transfer
t('cash.payMethods.iotPay'), // IOT Pay
t('cash.payMethods.stripe3'), // Stripe3
t('cash.payMethods.paypal'), // PayPal
t('cash.payMethods.paysolution'), // Paysolution
t('cash.payMethods.bankTransfer'),//

63
src/views/usergold/gold/clientCountWallet.vue

@ -33,6 +33,7 @@ const markets = ref([])
// tableData
const tableData = ref([]);
const walletMap = {
1: 'historyGold',
2: 'hkGold',
3: 'sgHcGold',
4: 'myGold',
@ -44,6 +45,7 @@ const walletMap = {
10: 'bjGold'
};
const propToWalletId = {
historyGold: 1,
hkGold: 2,
sgHcGold: 3,
myGold: 4,
@ -82,6 +84,7 @@ const getObj = ref({
//
const sortField = ref('')
const sortOrder = ref('')
const sortWalletId = ref('')
//
// ===========================================================================
@ -120,6 +123,18 @@ const get = async function (val) {
params.market = String(selectData.value.markets[0])
}
if (sortField.value) {
params.sortField = sortField.value
}
if (sortOrder.value) {
params.sortOrder = sortOrder.value
}
if (sortWalletId.value !== '') {
params.sortWalletId = sortWalletId.value
}
console.log('最终请求参数', params)
const result = await API({
@ -132,6 +147,7 @@ const get = async function (val) {
if (result.code === 200) {
tableData.value = result.data.list.map(item => {
const row = {
historyGold: 0,
name: item.userName,
jwcode: item.jwcode,
market: item.marketName,
@ -185,6 +201,7 @@ const reset = function () {
}
sortField.value = ''
sortOrder.value = ''
sortWalletId.value = ''
selectedMarketPath.value = []
//
getObj.value.pageNum = 1
@ -194,6 +211,7 @@ const cellClick = function (row, column) {
console.log('cellClick', column)
const walletId = propToWalletId[column.property];
const propToMarketName = {
historyGold: t('clientCount.market.historyGold'),
hkGold: t('clientCount.market.hkGold'),
sgHcGold: t('clientCount.market.sgHcGold'),
myGold: t('clientCount.market.myGold'),
@ -297,10 +315,23 @@ const handleWalletDetailCurrentChange = (val) => {
const handleSortChange = (column) => {
console.log('排序字段:', column.prop)
console.log('排序方式:', column.order)
if (column.prop) {
sortField.value = column.prop.replace(/([A-Z])/g, "_$1").toLowerCase();
if (!column.prop || !column.order) {
sortField.value = ''
sortOrder.value = ''
sortWalletId.value = ''
getObj.value.pageNum = 1
get()
return
}
if (propToWalletId[column.prop]) {
sortField.value = 'currentPermanentGold'
sortWalletId.value = propToWalletId[column.prop]
}
sortOrder.value = column.order === 'ascending' ? 'ASC' : 'DESC'
getObj.value.pageNum = 1
get()
}
@ -388,8 +419,7 @@ const exportExcelOnlyOne = async function () {
pageNum: 1, //
pageSize: 10000, //
userWalletRecord: {
// id1walletId2+1
walletId: selectWalletForm.value.companyWalletId + 1,
walletId: selectWalletForm.value.companyWalletId,
jwcode: selectData.value.jwcode ? Number(selectData.value.jwcode) : null
}
}
@ -434,39 +464,39 @@ const closeSelectWallet = () => {
const selectWalletForm = ref({})
const companyWalletList = ref([
{
id: 1,
id: 2,
name: t('clientCount.market.hkGold') + t('clientCount.wallet')
},
{
id: 2,
id: 3,
name: t('clientCount.market.sgHcGold')
},
{
id: 3,
id: 4,
name: t('clientCount.market.myGold')
},
{
id: 4,
id: 5,
name: t('clientCount.market.sgCmGold')
},
{
id: 5,
id: 6,
name: t('clientCount.market.caGold')
},
{
id: 6,
id: 7,
name: t('clientCount.market.thHsGold')
},
{
id: 7,
id: 8,
name: t('clientCount.market.thHaGold')
},
{
id: 8,
id: 9,
name: t('clientCount.market.vnGold')
},
{
id: 9,
id: 10,
name: t('clientCount.market.bjGold')
}
])
@ -636,6 +666,11 @@ const format3 = (num) => {
<el-table-column prop="name" :label="$t('common_list.name')" width="140" />
<el-table-column prop="jwcode" :label="$t('common_list.jwcode')" width="140" />
<el-table-column prop="market" :label="$t('common_list.market')" width="140" />
<el-table-column prop="historyGold" :label="$t('clientCount.market.historyGold')" sortable="custom" min-width="140">
<template #default="scope">
<span>{{ (scope.row.historyGold || 0) }}</span>
</template>
</el-table-column>
<el-table-column prop="hkGold" :label="$t('clientCount.market.hkGold')" sortable="custom" min-width="140">
<template #default="scope">
<span>{{ (scope.row.hkGold || 0) }}</span>
@ -651,7 +686,7 @@ const format3 = (num) => {
<span>{{ (scope.row.myGold || 0) }}</span>
</template>
</el-table-column>
<el-table-column prop="sgGold" :label="$t('clientCount.market.sgCmGold')" sortable="custom" min-width="120">
<el-table-column prop="sgGold" :label="$t('clientCount.market.sgCmGold')" sortable="custom" min-width="150">
<template #default="scope">
<span>{{ (scope.row.sgGold || 0) }}</span>
</template>

Loading…
Cancel
Save