diff --git a/src/components/PasswordSuccess.vue b/src/components/PasswordSuccess.vue new file mode 100644 index 0000000..f7793af --- /dev/null +++ b/src/components/PasswordSuccess.vue @@ -0,0 +1,84 @@ + + + + + \ No newline at end of file diff --git a/src/components/changePassword.vue b/src/components/changePassword.vue new file mode 100644 index 0000000..1e610ce --- /dev/null +++ b/src/components/changePassword.vue @@ -0,0 +1,326 @@ + + + + + diff --git a/src/router/index.js b/src/router/index.js index 8f1d852..2c19462 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -1,4 +1,5 @@ import { createRouter, createWebHashHistory } from 'vue-router'; +import axios from "axios"; const router = createRouter({ history: createWebHashHistory(), @@ -70,11 +71,35 @@ const router = createRouter({ // 没有权限 { path: '/noPermission', name: "noPermission", component: () => import("../views/noPermissionPage.vue") } ] + }, + // 跳转页面 + { path: '/PasswordSuccess', name: "PasswordSuccess", component: () => import("../components/PasswordSuccess.vue") }, + + ] }); + +// 全局拦截器 token 过期拦截 +axios.interceptors.response.use( + response => response, + error => { + if (error.response && error.response.status === 401) { + // 清除本地存储的token + localStorage.removeItem('token'); + // 跳转到登录页 + router.push({ + name: 'login', + query: { machineId: localStorage.getItem('machineId'), expired: true } + }); + } + return Promise.reject(error); + } +); + + router.beforeEach((to, from, next) => { const token = localStorage.getItem("token"); const machineId = localStorage.getItem("machineId"); @@ -83,4 +108,7 @@ router.beforeEach((to, from, next) => { } next(); }) + + + export default router; diff --git a/src/views/consume/addCoinConsume.vue b/src/views/consume/addCoinConsume.vue index 29e3c75..db1e558 100644 --- a/src/views/consume/addCoinConsume.vue +++ b/src/views/consume/addCoinConsume.vue @@ -68,9 +68,9 @@ const rules = reactive({ {required: true, message: "请输入精网号", trigger: "blur"}, // { type: 'number', message: "精网号必须为数字", trigger: "blur" } ], - goodsName: [{required: true, message: "请选择消费商品", trigger: "blur"}], + goodsName: [{required: true, message: "请选择商品", trigger: "blur"}], sumGold: [ - { required: true, message: "消费金币总数不能为空", trigger: "blur" }, + { required: true, message: "消耗金币总数不能为空", trigger: "blur" }, { validator: (rule, value, callback) => { // 允许0开头的小数(如0.1)但不允许单独的0 @@ -139,7 +139,7 @@ function validateInput() { } // 验证金币不能为负数 if (sumGold < 0) { - ElMessage.warning("消费金币总数不能为负数"); + ElMessage.warning("消耗金币总数不能为负数"); addConsume.value.sumGold = null; return false; } @@ -184,7 +184,7 @@ function validateInput() { // 验证金币总和 const totalAvailableGold = (user.value.nowSumGold) if (user.value.jwcode && sumGold > totalAvailableGold) { - ElMessage.error("消费金币总数超过可用金币总和"); + ElMessage.error("消耗金币总数超过可用金币总和"); // 将sumGold设置为null addConsume.value.sumGold = null; return false; @@ -519,7 +519,7 @@ onMounted(async function () { - + -import { computed, onMounted, ref } from 'vue' -import { dayjs, ElMessage } from 'element-plus' +import {computed, onMounted, ref} from 'vue' +import {dayjs, ElMessage} from 'element-plus' import request from '@/util/http' import API from '@/util/http' // 之后整理一下 @@ -67,17 +67,21 @@ const consumePlatform = [ }, { - value: 'Homily Chart', - label: 'Homily Chart' + value: 'HomilyChart', + label: 'HomilyChart' }, { - value: 'Homily Link', - label: 'Homily Link' + value: 'HomilyLink', + label: 'HomilyLink' }, { value: 'ERP', label: 'ERP' - } + }, + { + value: '其他', + label: '其他' + }, ] // 合计数的显示数据 @@ -167,7 +171,7 @@ const ConsumeSelectBy = async function (val) { // 合计数的接口 // 复制一份 detail.value 并移除排序字段和排序方式 - const detailWithoutSort = { ...consumeUser.value } + const detailWithoutSort = {...consumeUser.value} delete detailWithoutSort.sortField delete detailWithoutSort.sortOrder @@ -271,14 +275,14 @@ const reset = function () { const getToday = function () { const today = new Date() const startTime = new Date( - today.getFullYear(), - today.getMonth(), - today.getDate() + today.getFullYear(), + today.getMonth(), + today.getDate() ) const endTime = new Date( - today.getFullYear(), - today.getMonth(), - today.getDate() + 1 + today.getFullYear(), + today.getMonth(), + today.getDate() + 1 ) getTime.value = [startTime, endTime] console.log('getTime', getTime.value) @@ -289,14 +293,14 @@ const getYesterday = function () { const yesterday = new Date() yesterday.setDate(yesterday.getDate() - 1) const startTime = new Date( - yesterday.getFullYear(), - yesterday.getMonth(), - yesterday.getDate() + yesterday.getFullYear(), + yesterday.getMonth(), + yesterday.getDate() ) const endTime = new Date( - yesterday.getFullYear(), - yesterday.getMonth(), - yesterday.getDate() + 1 + yesterday.getFullYear(), + yesterday.getMonth(), + yesterday.getDate() + 1 ) getTime.value = [startTime, endTime] console.log('getTime', getTime.value) @@ -306,14 +310,14 @@ const getYesterday = function () { const get7Days = function () { const today = new Date() const startTime = new Date( - today.getFullYear(), - today.getMonth(), - today.getDate() - 6 + today.getFullYear(), + today.getMonth(), + today.getDate() - 6 ) const endTime = new Date( - today.getFullYear(), - today.getMonth(), - today.getDate() + 1 + today.getFullYear(), + today.getMonth(), + today.getDate() + 1 ) getTime.value = [startTime, endTime] console.log('getTime', getTime.value) @@ -376,21 +380,21 @@ const handleSortChange = (column) => { sortOrder.value = column.order === 'ascending' ? 'DESC' : 'ASC' ConsumeSelectBy() } -const exportExcel = async function () { +const exportExcel = async function () { const params = { - consumUser :{ - jwcode:consumerUser.value.jwcode || '', - payPlatform:consumerUser.value.payPlatform || '', - market:consumerUser.value.market || '', - startTime:consumerUser.value.startTime || '', - endTime:consumerUser.value.endTime || '', - goodsName:consumerUser.value.goodsName || '' + consumUser: { + jwcode: consumeUser.value.jwcode || '', + payPlatform: consumeUser.value.payPlatform || '', + market: consumeUser.value.market || '', + startTime: consumeUser.value.startTime || '', + endTime: consumeUser.value.endTime || '', + goodsName: consumeUser.value.goodsName || '' }, - page:getObj.pageNum, - size:getObj.pageSize + page: getObj.pageNum, + size: getObj.pageSize } - const res = await API({ url: '/export/exportConsume', data: params }) - if (res.code === 200) { + const res = await API({url: '/export/exportConsume', data: params}) + if (res.code === 200) { ElMessage.success('导出成功') } } @@ -439,7 +443,7 @@ onMounted(async function () {
精网号: + clearable>
@@ -447,26 +451,28 @@ onMounted(async function () {
商品名称: + clearable> - +
所属地区: - - + +
消耗平台: - - + +
@@ -474,9 +480,9 @@ onMounted(async function () {
- 消费时间: + 消耗时间: + end-placeholder="结束时间"/> @@ -506,20 +512,20 @@ onMounted(async function () {
- + - + - - - - + + + + - - - + + +
diff --git a/src/views/home.vue b/src/views/home.vue index 6f89357..bb52d39 100644 --- a/src/views/home.vue +++ b/src/views/home.vue @@ -1,16 +1,14 @@ 查看个人信息 + 修改密码 退出登录 查看下载列表 @@ -272,6 +276,7 @@ const openExportList = () => { + @@ -298,7 +303,7 @@ const openExportList = () => { - + + + + + + + +
@@ -335,10 +351,12 @@ const openExportList = () => { font-size: 16px; font-weight: bold; } + .item { margin-top: 20px; margin-right: 40px; } + .admin { margin-left: auto; } diff --git a/src/views/permissions/permission.vue b/src/views/permissions/permission.vue index b4b25b1..6a568fb 100644 --- a/src/views/permissions/permission.vue +++ b/src/views/permissions/permission.vue @@ -1,10 +1,7 @@ diff --git a/src/views/refund/coinRefundDetail.vue b/src/views/refund/coinRefundDetail.vue index 9459a5a..ebdc0bf 100644 --- a/src/views/refund/coinRefundDetail.vue +++ b/src/views/refund/coinRefundDetail.vue @@ -512,7 +512,7 @@ const handleCurrentChange = function (val) { - + + @@ -417,8 +429,9 @@ const getTagText = (state) => {
diff --git a/src/views/usergold/clientCountDetail.vue b/src/views/usergold/clientCountDetail.vue index cbdd8f9..e9bf8d0 100644 --- a/src/views/usergold/clientCountDetail.vue +++ b/src/views/usergold/clientCountDetail.vue @@ -6,6 +6,7 @@ import axios from 'axios' import moment from 'moment' import API from '@/util/http' import { writeFile, utils } from 'xlsx' +import request from "@/util/request.js"; // 定义ref 变量来存储合计数据 @@ -99,8 +100,8 @@ const type = [ label: '退款' } ] - - +const market = ref([]) +/* // 定义加载状态,获取地区数据 const isLoadingArea = ref(false); const market = ref([]) @@ -124,7 +125,21 @@ const getArea = async () => { } finally { isLoadingArea.value = false; } -}; +};*/ + +// 地区下拉框 +const getMarket = async function () { + try { + const result = await API({ + url: '/general/market', + data: {} + }) + market.value = result.data + console.log('地区', market.value) + } catch (error) { + console.log('请求失败', error) + } +} // 充值明细表格 const tableData = ref([]) @@ -332,7 +347,7 @@ const handleCurrentChange = function (val) { // 挂载 onMounted(async function () { await get() - await getArea() + await getMarket() await getAdminData() await getPlatform() // 调用获取平台信息的函数 }) @@ -424,6 +439,7 @@ onMounted(async function () { 充值 消耗 退款 + 其他 diff --git a/src/views/workspace/index.vue b/src/views/workspace/index.vue index 692c6d5..c3f5f12 100644 --- a/src/views/workspace/index.vue +++ b/src/views/workspace/index.vue @@ -1,7 +1,19 @@