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. 108
      src/views/consume/gold/addCoinConsume.vue

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

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

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

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

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

@ -264,11 +264,12 @@ function calculateCoins(sumGold) {
// cookie key // cookie key
const WriteCookies = ref(null) const WriteCookies = ref(null)
// cookie value // cookie value
const WriteCookiesTime = ref(null)
const WriteCookiesVale = ref({})
// cookie key // cookie key
const ReadCookies = ref(null) const ReadCookies = ref(null)
// cookie value // 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, freeGold: addConsume.value.freeGold * 100,
taskGold: addConsume.value.taskGold * 100, taskGold: addConsume.value.taskGold * 100,
permanentGold: addConsume.value.permanentGold * 100, permanentGold: addConsume.value.permanentGold * 100,
goodsName: addConsume.value.goodsName.value,
goodsName: addConsume.value.goodsName,
remark: addConsume.value.remark, remark: addConsume.value.remark,
adminName: adminData.value.adminName, adminName: adminData.value.adminName,
redMoney: Number(addConsume.value.redMoney), // 1-使0-使 redMoney: Number(addConsume.value.redMoney), // 1-使0-使
@ -322,16 +323,13 @@ const add = async function () {
function handleResponse(result) { function handleResponse(result) {
console.log("响应结果", result) console.log("响应结果", result)
if (result.code === 200) { 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')); ElMessage.success(t('elmessage.addSuccess'));
console.log("请求成功", result); console.log("请求成功", result);
} else { } 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 = () => { const addBefore = () => {
Ref.value.validate(async (valid) => { Ref.value.validate(async (valid) => {
@ -462,14 +480,30 @@ const addBefore = () => {
if (!validateInput() || !validateRedLimit()) { if (!validateInput() || !validateRedLimit()) {
return; 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 // 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; ConsumeDialogVisible.value = true;
} else { } else {
FirstConsumeDialogVisible.value = true; FirstConsumeDialogVisible.value = true;
@ -606,16 +640,24 @@ watch(
); );
// //
watch(
() => addConsume.value.goodsName,
(newGoods) => {
const handleGoodsChange = (newGoods) => {
if (newGoods && typeof newGoods === 'object') { if (newGoods && typeof newGoods === 'object') {
addConsume.value.price = Number(newGoods.price || 0) || null; addConsume.value.price = Number(newGoods.price || 0) || null;
} else { } else {
addConsume.value.price = null; 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;
// }
// }
// );
/* /*
====================红包逻辑================================= ====================红包逻辑=================================
@ -744,8 +786,8 @@ onMounted(async function () {
<el-form-item prop="goodsName" :label="t('common_add.goodsName')"> <el-form-item prop="goodsName" :label="t('common_add.goodsName')">
<el-select v-model="addConsume.goodsName" :placeholder="t('common_add.goodsNamePlaceholder')" <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" />
style="width: 200px" clearable filterable >
<el-option v-for="(item, index) in goods" :key="index" :label="item.label" :value="item.value" @click="handleGoodsChange(item)" />
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -914,7 +956,7 @@ onMounted(async function () {
<!-- 商品名称 --> <!-- 商品名称 -->
<div class="field"> <div class="field">
<div class="field-label">{{ $t('common_add.goodsName') }}</div> <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>
<!--金币总数 --> <!--金币总数 -->
<div class="field"> <div class="field">
@ -972,7 +1014,11 @@ onMounted(async function () {
<!-- 商品名称 --> <!-- 商品名称 -->
<div class="field"> <div class="field">
<div class="field-label">{{ $t('common_add.goodsName') }}</div> <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>
<!--金币总数 --> <!--金币总数 -->
<div class="field"> <div class="field">
@ -1006,13 +1052,13 @@ onMounted(async function () {
<el-icon :size="24" color="#FFD700"> <el-icon :size="24" color="#FFD700">
<WarnTriangleFilled /> <WarnTriangleFilled />
</el-icon> </el-icon>
<p>{{ $t('common_add.prompt') }}</p>
<p>{{ $t('common_add.promptConsume') }}</p>
</div> </div>
<!-- 记录 + 虚线分隔 --> <!-- 记录 + 虚线分隔 -->
<div> <div>
<el-divider border-style="dashed" /> <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 }}) $t('common_add.operator') }}: {{ adminData.adminName }})
</div> </div>
<div style="margin-top: 10px"> <div style="margin-top: 10px">

Loading…
Cancel
Save