Browse Source

历史

youhua/chongzhi
lihuilin 2 months ago
parent
commit
921b9e8a5f
  1. 116
      src/views/consume/gold/addCoinConsume.vue
  2. 36
      src/views/history/history.vue

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

@ -1,12 +1,12 @@
<script setup> <script setup>
import {onMounted, reactive, ref, watch} from "vue";
import {ElIcon, ElMessage, ElMessageBox} from "element-plus";
import { onMounted, reactive, ref, watch } from "vue";
import { ElIcon, ElMessage, ElMessageBox } from "element-plus";
import moment from "moment"; import moment from "moment";
import request from "@/util/http.js" import request from "@/util/http.js"
import Cookies from 'js-cookie'; import Cookies from 'js-cookie';
import {useAdminStore} from "@/store/index.js";
import {storeToRefs} from "pinia";
import {WarnTriangleFilled} from "@element-plus/icons-vue";
import { useAdminStore } from "@/store/index.js";
import { storeToRefs } from "pinia";
import { WarnTriangleFilled } from "@element-plus/icons-vue";
import dayjs from "dayjs"; import dayjs from "dayjs";
const adminStore = useAdminStore(); const adminStore = useAdminStore();
@ -15,25 +15,19 @@ const { adminData, menuTree } = storeToRefs(adminStore);
const trimJwCode = () => { const trimJwCode = () => {
if (addConsume.value.jwcode) { if (addConsume.value.jwcode) {
// //
const trimmed = addConsume.value.jwcode.toString().replace(/\s/g, '');
const numeric = Number(trimmed);
const trimmed = addConsume.value.jwcode.toString().replace(/\s/g, '')
const numeric = Number(trimmed)
// //
if (!isNaN(numeric)) { if (!isNaN(numeric)) {
addConsume.value.jwcode = numeric;
addConsume.value.jwcode = numeric
} else { } else {
ElMessage.error("精网号格式不正确,请输入数字");
ElMessage.error("精网号格式不正确,请输入数字")
} }
} }
} }
// //
const addDisabled = ref(false) const addDisabled = ref(false)
/*
====================数据=================================
*/
//
// const adminData = ref({});
// //
const user = ref({ const user = ref({
jwcode: null, jwcode: null,
@ -65,14 +59,12 @@ const addConsume = ref({
taskGold: null, // taskGold: null, //
remark: "",// remark: "",//
adminId: null,// id adminId: null,// id
});
//
const Ref = ref(null);
//
adminName: null,//
})
const Ref = ref(null)
const rules = reactive({ const rules = reactive({
jwcode: [ jwcode: [
{ required: true, message: "请输入精网号", trigger: "blur" }, { required: true, message: "请输入精网号", trigger: "blur" },
// { type: 'number', message: "", trigger: "blur" }
], ],
goodsName: [{ required: true, message: "请选择商品", trigger: "blur" }], goodsName: [{ required: true, message: "请选择商品", trigger: "blur" }],
sumGold: [ sumGold: [
@ -83,7 +75,7 @@ const rules = reactive({
const isValid = /^(0\.\d{1,2})|([1-9]\d*(\.\d{1,2})?)$/.test(value); const isValid = /^(0\.\d{1,2})|([1-9]\d*(\.\d{1,2})?)$/.test(value);
if (!isValid) { if (!isValid) {
callback(new Error("请输入大于0的正数(可包含最多两位小数)"));
callback(new Error("请输入大于0的正数(可包含最多两位小数)"));
} else { } else {
callback(); callback();
} }
@ -93,30 +85,7 @@ const rules = reactive({
] ]
}); });
// //
const goods = ref([]);
/*
====================方法=================================
*/
const getAdminData = async function () {
try {//await
const result = await request({
url: "/admin/userinfo",
data: {},
});
adminData.value = result;
addConsume.value.adminId = adminData.value.id;
addConsume.value.name = adminData.value.adminName;
console.log("请求成功", result);
console.log("用户信息", adminData.value);
} catch (error) {
console.log("请求失败", error);
}
};
const goods = ref([])
// //
function validateInput() { function validateInput() {
const sumGold = parseFloat(addConsume.value.sumGold); const sumGold = parseFloat(addConsume.value.sumGold);
@ -261,16 +230,16 @@ const add = async function () {
//value //value
WriteCookiesTime.value = dayjs().format("YYYY-MM-DD HH:mm:ss"); WriteCookiesTime.value = dayjs().format("YYYY-MM-DD HH:mm:ss");
// cookies,jwcodekeyvaluejwcode1 // cookies,jwcodekeyvaluejwcode1
Cookies.set(WriteCookies.value, WriteCookiesTime.value, {expires:
1, path: '/'});
Cookies.set(WriteCookies.value, WriteCookiesTime.value, {
expires:
1, path: '/'
});
addDisabled.value = true addDisabled.value = true
// POST // POST
const result = await request({ const result = await request({
// url: "/consume/add",
url: "/consume/add", url: "/consume/add",
data: { data: {
...addConsume.value,
jwcode: addConsume.value.jwcode, jwcode: addConsume.value.jwcode,
adminId: addConsume.value.adminId, adminId: addConsume.value.adminId,
sumGold: addConsume.value.sumGold * 100, sumGold: addConsume.value.sumGold * 100,
@ -278,9 +247,10 @@ const add = async function () {
taskGold: addConsume.value.taskGold * 100, taskGold: addConsume.value.taskGold * 100,
permanentGold: addConsume.value.permanentGold * 100, permanentGold: addConsume.value.permanentGold * 100,
goodsName: addConsume.value.goodsName, goodsName: addConsume.value.goodsName,
remark: addConsume.value.remark
remark: addConsume.value.remark,
adminName: adminData.value.adminName
} }
});
})
addDisabled.value = false addDisabled.value = false
console.log("add请求", result); console.log("add请求", result);
// //
@ -318,7 +288,7 @@ function resetForm() {
remark: "", remark: "",
adminId: adminData.value.id, adminId: adminData.value.id,
adminName: adminData.value.adminName, adminName: adminData.value.adminName,
};
}
console.log("重置表单") console.log("重置表单")
@ -400,7 +370,6 @@ const addBefore = () => {
}); });
}; };
// //
const getUser = async function (jwcode) { const getUser = async function (jwcode) {
try { try {
@ -520,9 +489,10 @@ watch(
*/ */
// //
onMounted(async function () { onMounted(async function () {
await getAdminData();
await getGoods();
});
await getGoods()
console.log('adminData', adminData.value)
})
</script> </script>
@ -567,8 +537,8 @@ onMounted(async function () {
</el-form-item> </el-form-item>
<el-form-item prop="remark" label="备注"> <el-form-item prop="remark" label="备注">
<el-input v-model="addConsume.remark" style="width: 13.5vw;margin-left:70px" :rows="4" maxlength="100" show-word-limit
type="textarea" />
<el-input v-model="addConsume.remark" style="width: 13.5vw;margin-left:70px" :rows="4" maxlength="100"
show-word-limit type="textarea" />
</el-form-item> </el-form-item>
<el-button type="success" @click="resetForm()" style="margin-left: 200px;margin-top:10px">重置</el-button> <el-button type="success" @click="resetForm()" style="margin-left: 200px;margin-top:10px">重置</el-button>
@ -660,48 +630,43 @@ onMounted(async function () {
</el-row> </el-row>
</el-form> </el-form>
</el-card> </el-card>
<el-dialog
v-model="ConsumeDialogVisible"
title="操作确认"
:before-close="ConsumeDialogVisiblehandleClose"
:close-on-click-modal="false"
width="480px"
>
<el-dialog v-model="ConsumeDialogVisible" title="操作确认" :before-close="ConsumeDialogVisiblehandleClose"
:close-on-click-modal="false" width="480px">
<!-- 内容整体居中且收窄 --> <!-- 内容整体居中且收窄 -->
<div class="confirm-body"> <div class="confirm-body">
<!-- 用户信息 --> <!-- 用户信息 -->
<div> <div>
<div class="field-label">用户信息</div> <div class="field-label">用户信息</div>
<el-input :model-value="user.jwcode + (user.name ? '' + user.name + '' : '')" disabled/>
<el-input :model-value="user.jwcode + (user.name ? '' + user.name + '' : '')" disabled />
</div> </div>
<!-- 活动名称 --> <!-- 活动名称 -->
<div class="field"> <div class="field">
<div class="field-label">商品名称</div> <div class="field-label">商品名称</div>
<el-input v-model="addConsume.goodsName" disabled/>
<el-input v-model="addConsume.goodsName" disabled />
</div> </div>
<!--金币总数 --> <!--金币总数 -->
<div class="field"> <div class="field">
<div class="field-label">金币总数</div> <div class="field-label">金币总数</div>
<el-input v-model="addConsume.sumGold" disabled/>
<el-input v-model="addConsume.sumGold" disabled />
</div> </div>
<!-- 金币详细信息同一行左右排列 --> <!-- 金币详细信息同一行左右排列 -->
<el-row :gutter="20" class="coins-row"> <el-row :gutter="20" class="coins-row">
<el-col :span="8"> <el-col :span="8">
<div class="field"> <div class="field">
<div class="field-label">永久金币</div> <div class="field-label">永久金币</div>
<el-input v-model="addConsume.permanentGold" disabled/>
<el-input v-model="addConsume.permanentGold" disabled />
</div> </div>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<div class="field"> <div class="field">
<div class="field-label">免费金币</div> <div class="field-label">免费金币</div>
<el-input v-model="addConsume.freeGold" disabled/>
<el-input v-model="addConsume.freeGold" disabled />
</div> </div>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">
<div class="field"> <div class="field">
<div class="field-label">任务金币</div> <div class="field-label">任务金币</div>
<el-input v-model="addConsume.taskGold" disabled/>
<el-input v-model="addConsume.taskGold" disabled />
</div> </div>
</el-col> </el-col>
@ -709,13 +674,13 @@ onMounted(async function () {
<!-- 风险提示 --> <!-- 风险提示 -->
<div style="display: flex; align-items: center; margin-top: 20px;"> <div style="display: flex; align-items: center; margin-top: 20px;">
<el-icon :size="24" color="#FFD700"> <el-icon :size="24" color="#FFD700">
<WarnTriangleFilled/>
<WarnTriangleFilled />
</el-icon> </el-icon>
<p>重复购买风险提示</p> <p>重复购买风险提示</p>
</div> </div>
<!-- 记录 + 虚线分隔 --> <!-- 记录 + 虚线分隔 -->
<div> <div>
<el-divider border-style="dashed"/>
<el-divider border-style="dashed" />
<p>检测到该用户近期有相似消费记录</p> <p>检测到该用户近期有相似消费记录</p>
· {{ ReadCookiesTime }} 购买 {{ addConsume.goodsName }}(操作人: {{ adminData.adminName }}) · {{ ReadCookiesTime }} 购买 {{ addConsume.goodsName }}(操作人: {{ adminData.adminName }})
</div> </div>
@ -759,22 +724,27 @@ p {
height: 50px; height: 50px;
display: block; display: block;
} }
.add-form { .add-form {
max-width: 50%; max-width: 50%;
float: left; float: left;
} }
/* 标题居中 */ /* 标题居中 */
.el-dialog__header { .el-dialog__header {
text-align: center; text-align: center;
} }
.confirm-body { .confirm-body {
width: 420px; width: 420px;
margin: 0 auto; margin: 0 auto;
} }
/* 字段块与标签样式 */ /* 字段块与标签样式 */
.field { .field {
margin-bottom: 14px; margin-bottom: 14px;
} }
.customer-info { .customer-info {
width: 700px; width: 700px;
float: right; float: right;

36
src/views/history/history.vue

@ -23,21 +23,21 @@
<el-card style="margin-top:10px" v-show="tableData.length > 0"> <el-card style="margin-top:10px" v-show="tableData.length > 0">
<el-table :data="tableData" style="width: 100%" height="600"> <el-table :data="tableData" style="width: 100%" height="600">
<el-table-column type="index" label="序号" width="55" header-align="center" align="center">
<el-table-column type="index" label="序号" width="100" header-align="center" align="center">
<template #default="scope"> <template #default="scope">
{{ scope.$index + 1 + (pagination.pageNum - 1) * pagination.pageSize }} {{ scope.$index + 1 + (pagination.pageNum - 1) * pagination.pageSize }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column prop="name" label="客户姓名" width="120" show-overflow-tooltip />
<el-table-column prop="jwcode" label="精网号" width="120" header-align="center" align="center" />
<el-table-column prop="num" label="数量" width="120" header-align="center" align="center" />
<el-table-column prop="updateType" show-overflow-tooltip label="更新类型" width="120" align="center" />
<el-table-column v-if="activeName === 'new'" prop="freeGold" label="免费金币" width="120" align="center" />
<el-table-column v-if="activeName === 'new'" prop="permanentGold" label="永久金币" width="120" align="center" />
<el-table-column v-if="activeName === 'new'" prop="taskGold" label="任务金币" width="120" align="center" />
<el-table-column prop="operator" label="操作人" width="120" />
<el-table-column prop="name" label="客户姓名" width="180" show-overflow-tooltip />
<el-table-column prop="jwcode" label="精网号" width="180" header-align="center" align="center" />
<el-table-column prop="num" label="数量" width="180" header-align="center" align="center" />
<el-table-column prop="updateType" show-overflow-tooltip label="更新类型" width="180" align="center" />
<el-table-column v-if="activeName === 'new'" prop="freeGold" label="免费金币" width="180" align="center" />
<el-table-column v-if="activeName === 'new'" prop="permanentGold" label="永久金币" width="180" align="center" />
<el-table-column v-if="activeName === 'new'" prop="taskGold" label="任务金币" width="180" align="center" />
<el-table-column prop="operator" label="操作人" width="180" />
<el-table-column prop="createTime" label="更新时间" width="200" header-align="center" align="center" /> <el-table-column prop="createTime" label="更新时间" width="200" header-align="center" align="center" />
<el-table-column prop="remark" label="备注" show-overflow-tooltip width="180" align="center" />
<el-table-column prop="remark" label="备注" show-overflow-tooltip width="200" align="center" />
</el-table> </el-table>
<el-pagination background style="margin-top:20px" v-model:current-page="pagination.pageNum" <el-pagination background style="margin-top:20px" v-model:current-page="pagination.pageNum"
v-model:page-size="pagination.pageSize" layout="total, sizes, prev, pager, next, jumper" v-model:page-size="pagination.pageSize" layout="total, sizes, prev, pager, next, jumper"
@ -92,8 +92,8 @@ const getOld = async function () {
if (findMenuById(menuTree.value, permissionMapping.History_Query)) { if (findMenuById(menuTree.value, permissionMapping.History_Query)) {
try { try {
if ((searchObj.value.name || searchObj.value.jwcode) && activeName.value == 'old') { if ((searchObj.value.name || searchObj.value.jwcode) && activeName.value == 'old') {
const startTime = dateRange.value[0] ? moment(dateRange.value[0]).format('YYYY-MM-DD HH:mm:ss') : ""
const endTime = dateRange.value[1] ? moment(dateRange.value[1]).format('YYYY-MM-DD HH:mm:ss') : ""
const startTime = dateRange.value && dateRange.value[0] ? moment(dateRange.value[0]).format('YYYY-MM-DD HH:mm:ss') : ""
const endTime = dateRange.value && dateRange.value[1] ? moment(dateRange.value[1]).format('YYYY-MM-DD HH:mm:ss') : ""
const res = await API({ const res = await API({
url: '/history/getOldHistoryRecord', url: '/history/getOldHistoryRecord',
data: { data: {
@ -104,10 +104,12 @@ const getOld = async function () {
pageSize: pagination.value.pageSize, pageSize: pagination.value.pageSize,
} }
}) })
if (res.code == 200) {
ElMessage.success('查询成功')
tableData.value = res.data.list tableData.value = res.data.list
console.log('tableData.value', res.data.list); console.log('tableData.value', res.data.list);
pagination.value.total = res.data.total pagination.value.total = res.data.total
}
} else { } else {
ElMessage.error('请输入姓名或精网号') ElMessage.error('请输入姓名或精网号')
return return
@ -122,8 +124,8 @@ const get = async function () {
if (findMenuById(menuTree.value, permissionMapping.History_Query)) { if (findMenuById(menuTree.value, permissionMapping.History_Query)) {
try { try {
if ((searchObj.value.name || searchObj.value.jwcode) && activeName.value == 'new') { if ((searchObj.value.name || searchObj.value.jwcode) && activeName.value == 'new') {
const startTime = dateRange.value[0] ? moment(dateRange.value[0]).format('YYYY-MM-DD HH:mm:ss') : ""
const endTime = dateRange.value[1] ? moment(dateRange.value[1]).format('YYYY-MM-DD HH:mm:ss') : ""
const startTime = dateRange.value && dateRange.value[0] ? moment(dateRange.value[0]).format('YYYY-MM-DD HH:mm:ss') : ""
const endTime = dateRange.value && dateRange.value[1] ? moment(dateRange.value[1]).format('YYYY-MM-DD HH:mm:ss') : ""
const res = await API({ const res = await API({
url: '/history/getNewHistoryRecord', url: '/history/getNewHistoryRecord',
data: { data: {
@ -134,8 +136,12 @@ const get = async function () {
pageSize: pagination.value.pageSize, pageSize: pagination.value.pageSize,
} }
}) })
if (res.code == 200) {
ElMessage.success('查询成功')
tableData.value = res.data.list tableData.value = res.data.list
console.log('tableData.value', res.data.list)
pagination.value.total = res.data.total pagination.value.total = res.data.total
}
} else { } else {
ElMessage.error('请输入姓名或精网号') ElMessage.error('请输入姓名或精网号')
return return

Loading…
Cancel
Save