Browse Source

消费重复提示

milestone-20260128-日常优化1.0
ZhangYong 1 month ago
parent
commit
f6c6ba643a
  1. 3
      src/components/locales/lang/en.js
  2. 3
      src/components/locales/lang/zh-CN.js
  3. 104
      src/views/consume/gold/addCoinConsume.vue

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

@ -669,10 +669,13 @@ export default {
operationConfirm: "Confirm",
userInfo: "User Info",
prompt: "Risk Alert",
promptConsume: "Risk Alert for Consume",
similarRechargeRecords: "Similar recent records detected",
similarCosumeRecords: "Similar recent consume records detected",
rechargePermanentGold: "Recharge Perm Coins",
buy: "Buy",
operator: "Operator",
orderStatus: "Order Status",
submitter: "Submitter",
continueOperation: "Continue?",
// Gold Bean

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

@ -669,9 +669,12 @@ export default {
operationConfirm: "操作确认",
userInfo: "用户信息",
prompt: "重复充值风险提示",
promptConsume: "重复消耗风险提示",
similarRechargeRecords: "检测到该用户近期有相似充值记录",
similarCosumeRecords: "检测到该用户近期有相似消耗记录",
rechargePermanentGold: "充值永久金币",
buy: "购买",
orderStatus:'订单状态',
operator: "操作人",
submitter: "提交人",
continueOperation: "是否继续操作?",

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

@ -264,11 +264,12 @@ function calculateCoins(sumGold) {
// cookie key
const WriteCookies = ref(null)
// cookie value
const WriteCookiesTime = ref(null)
const WriteCookiesVale = ref({})
// cookie key
const ReadCookies = ref(null)
// cookie value
const ReadCookiesTime = ref(null)
const ReadCookiesValue = ref({})
const orderStatus = ref('')
//
@ -298,7 +299,7 @@ const add = async function () {
freeGold: addConsume.value.freeGold * 100,
taskGold: addConsume.value.taskGold * 100,
permanentGold: addConsume.value.permanentGold * 100,
goodsName: addConsume.value.goodsName.value,
goodsName: addConsume.value.goodsName,
remark: addConsume.value.remark,
adminName: adminData.value.adminName,
redMoney: Number(addConsume.value.redMoney), // 1-使0-使
@ -322,16 +323,13 @@ const add = async function () {
function handleResponse(result) {
console.log("响应结果", result)
if (result.code === 200) {
// jwcode
// jwcode:permanentGold:freeGold
WriteCookies.value = `coinConsume:${addConsume.value.jwcode}:${addConsume.value.goodsName.value}`
//value
WriteCookiesTime.value = dayjs().format("YYYY-MM-DD HH:mm:ss");
// cookies,jwcodekeyvaluejwcode1
Cookies.set(WriteCookies.value, WriteCookiesTime.value, {
expires:
1, path: '/'
WriteCookies.value = `coinConsume:${addConsume.value.jwcode}:${addConsume.value.goodsName}`
//value
WriteCookiesVale.value = JSON.stringify({
payTime: dayjs().format("YYYY-MM-DD HH:mm:ss"),
orderCode: result.data
});
Cookies.set(WriteCookies.value, WriteCookiesVale.value, {expires: 1, path: '/'});
ElMessage.success(t('elmessage.addSuccess'));
console.log("请求成功", result);
} else {
@ -448,6 +446,26 @@ const FirstConsumeDialogVisibleCancel = () => {
// });
// };
const historyOrder = ref({})
//
const selectByOrderCode = async function (data) {
try {
const result = await request({
url: '/recharge/selectByOrderCode',
data: data,
headers: {
'Content-Type': 'text/plain;charset=utf-8'
},
})
if(result.code == 200){
historyOrder.value = result.data
}
} catch (error) {
console.log('请求失败', error)
//
}
}
//
const addBefore = () => {
Ref.value.validate(async (valid) => {
@ -462,14 +480,30 @@ const addBefore = () => {
if (!validateInput() || !validateRedLimit()) {
return;
}
ReadCookies.value = `coinConsume:${addConsume.value.jwcode}:${addConsume.value.goodsName.value}`
ReadCookies.value = `coinConsume:${addConsume.value.jwcode}:${addConsume.value.goodsName}`
console.log('ReadCookies',ReadCookies.value);
// cookie
const cookie = Cookies.get(ReadCookies.value)
console.log("time", WriteCookiesTime.value)
//
ReadCookiesTime.value = moment(cookie).format('YYYY-MM-DD HH:mm:ss')
console.log("cookie========", cookie)
if (cookie) {
const cookieValue = Cookies.get(ReadCookies.value);
if (cookieValue) {
//
const rechargeInfo = JSON.parse(cookieValue);
console.log('充值时间:', rechargeInfo.payTime);
console.log('订单号:', rechargeInfo.orderCode);
ReadCookiesValue.value = {
...rechargeInfo,
}
}
if (Object.keys(ReadCookiesValue.value).length > 0) {
await selectByOrderCode(ReadCookiesValue.value.orderCode)
if(historyOrder.value.type == 1 ){
if(historyOrder.value.auditStatus == 1 ){
if(historyOrder.value.isRefund == 0){
orderStatus.value = '正常'
}else if(historyOrder.value.isRefund == 1){
orderStatus.value = '已退款'
}
}
}
ConsumeDialogVisible.value = true;
} else {
FirstConsumeDialogVisible.value = true;
@ -606,16 +640,24 @@ watch(
);
//
watch(
() => addConsume.value.goodsName,
(newGoods) => {
const handleGoodsChange = (newGoods) => {
if (newGoods && typeof newGoods === 'object') {
addConsume.value.price = Number(newGoods.price || 0) || null;
} else {
addConsume.value.price = null;
}
}
);
//
// watch(
// () => addConsume.value.goodsName,
// (newGoods) => {
// if (newGoods && typeof newGoods === 'object') {
// addConsume.value.price = Number(newGoods.price || 0) || null;
// } else {
// addConsume.value.price = null;
// }
// }
// );
/*
====================红包逻辑=================================
@ -745,7 +787,7 @@ onMounted(async function () {
<el-form-item prop="goodsName" :label="t('common_add.goodsName')">
<el-select v-model="addConsume.goodsName" :placeholder="t('common_add.goodsNamePlaceholder')"
style="width: 200px" clearable filterable >
<el-option v-for="(item, index) in goods" :key="index" :label="item.label" :value="item" />
<el-option v-for="(item, index) in goods" :key="index" :label="item.label" :value="item.value" @click="handleGoodsChange(item)" />
</el-select>
</el-form-item>
@ -914,7 +956,7 @@ onMounted(async function () {
<!-- 商品名称 -->
<div class="field">
<div class="field-label">{{ $t('common_add.goodsName') }}</div>
<el-input v-model="addConsume.goodsName.value" disabled />
<el-input v-model="addConsume.goodsName" disabled />
</div>
<!--金币总数 -->
<div class="field">
@ -972,7 +1014,11 @@ onMounted(async function () {
<!-- 商品名称 -->
<div class="field">
<div class="field-label">{{ $t('common_add.goodsName') }}</div>
<el-input v-model="addConsume.goodsName.value" disabled />
<el-input v-model="addConsume.goodsName" disabled />
</div>
<div class="field">
<div class="field-label">{{ $t('common_add.orderStatus') }}</div>
<el-input v-model="orderStatus" disabled />
</div>
<!--金币总数 -->
<div class="field">
@ -1006,13 +1052,13 @@ onMounted(async function () {
<el-icon :size="24" color="#FFD700">
<WarnTriangleFilled />
</el-icon>
<p>{{ $t('common_add.prompt') }}</p>
<p>{{ $t('common_add.promptConsume') }}</p>
</div>
<!-- 记录 + 虚线分隔 -->
<div>
<el-divider border-style="dashed" />
<p>{{ $t('common_add.similarRechargeRecords') }}</p>
· {{ ReadCookiesTime }} {{ $t('common_add.buy') }} {{ addConsume.goodsName.value }}({{
<p>{{ $t('common_add.similarCosumeRecords') }}</p>
· {{ ReadCookiesValue.payTime }} {{ $t('common_add.buy') }} {{ addConsume.goodsName }}{{ $t('common_add.orderStatus') }}: {{ orderStatus }}({{
$t('common_add.operator') }}: {{ adminData.adminName }})
</div>
<div style="margin-top: 10px">

Loading…
Cancel
Save