5 Commits

  1. 3
      .env.development
  2. 607
      src/views/audit/rechargeAudit.vue
  3. 1157
      src/views/audit/refundAudit.vue
  4. 232
      src/views/managerecharge/rate.vue
  5. 691
      src/views/permissions/index.vue
  6. 1
      src/views/recharge/coinRecharge.vue
  7. 14
      src/views/usergold/clientCountDetail.vue
  8. 1482
      src/views/workspace/index.vue

3
.env.development

@ -1,5 +1,4 @@
# VITE_API_BASE='http://54.251.137.151:10704/'
# VITE_API_BASE='http://192.168.8.94:8080/'
# VITE_API_BASE='https://hwjb.homilychart.com/gold_htms_dev'
# VITE_API_BASE='http://54.251.137.151:10704/'
VITE_API_BASE='http://192.168.8.225:8080/'
VITE_API_BASE='http://192.168.8.94:8080/'

607
src/views/audit/rechargeAudit.vue

@ -7,246 +7,48 @@ import axios from 'axios'
import request from '@/util/http'
import moment from 'moment'
//
//
const columnOptions = ref([
{ prop: 'username', label: '姓名', width: 125 },
{ prop: 'jwcode', label: '精网号', width: 125 },
{ prop: 'area', label: '所属地区', width: 125 },
{ prop: 'activityName', label: '活动名称', width: 150 },
{ prop: 'rechargeGold', label: '充值金额', width: 125, sortable: true },
{ prop: 'rechargeWay', label: '充值方式', width: 125 },
{ prop: 'paidGold', label: '永久金币', width: 125, sortable: true },
{ prop: 'freeGold', label: '免费金币', width: 125, sortable: true },
{ prop: 'remark', label: '备注', width: 200, showOverflowTooltip: true },
{ prop: 'payWay', label: '支付方式', width: 125 },
{ prop: 'rechargeVoucher', label: '支付凭证', width: 125 },
{ prop: 'name', label: '提交人', width: 125 },
{ prop: 'status', label: '审核状态', width: 125 },
{ prop: 'reson', label: '驳回理由', width: 200 },
{ prop: 'rechargeTime', label: '交款时间', width: 200, sortable: true },
{ prop: 'createTime', label: '提交时间', width: 200, sortable: true },
{ prop: 'auditTime', label:'审核时间', width:200, sortable:true}
])
//
const defaultColumns = ['username', 'jwcode', 'area', 'activityName', 'rechargeGold', 'rechargeWay', 'paidGold', 'freeGold',
'remark', 'payWay', 'rechargeVoucher', 'name', 'status', 'reson', 'rechargeTime', 'createTime', 'auditTime']
const selectedColumns = ref([...defaultColumns])
//
const adminData = ref({})
const Ref = ref(null)
const getAdminData = async function () {
try {
const result = await request({
url: '/admin/userinfo',
url: '',
data: {}
})
adminData.value = result
console.log('请求成功', result)
console.log('用户信息', adminData.value)
} catch (error) {
console.log('请求失败', error)
}
}
//
const tableData = ref([])
// ======================================
// rechargeVo
const rechargeVo = ref({
rechargeWay: '客服充值'
})
//
const getObj = ref({
pageNum: 1,
pageSize: 50
})
//
const total = ref(100)
//
const getTime = ref([])
//
const activity = ref([])
//
const allData = ref([])
//
const area = ref([])
// ======================================
//
const rejectVisible = ref(false)
//
const rejectObj = ref({})
//
const passObj = ref({})
//
const activeName = ref('all')
const activeName = ref('wait')
//
const payWay = [
{
value: '微信',
label: '微信'
},
{
value: '支付宝',
label: '支付宝'
},
{
value: '银联',
label: '银联'
},
{
value: '信用卡',
label: '信用卡'
},
{
value: '借记卡',
label: '借记卡'
},{
value:'.....................................'//
}
]
// //
// const tableHeight = computed(function () {
// return (getObj.value.pageSize + 2) * 60 + "px";
// });
// ref
const Ref = ref(null)
//
//
//
const trueGold = ref(0)
const trueCount = ref(0)
const trueRGold = ref(0)
const trueFGold = ref(0)
//
const formattedTrueGold = computed(() => trueGold.value.toFixed(2))
const formattedTrueRGold = computed(() => trueRGold.value.toFixed(2))
const formattedTrueFGold = computed(() => trueFGold.value.toFixed(2))
//
const pendingCount = ref(0)
//
const pendingGold = ref(0)
const pendingRGold = ref(0)
const pendingFGold = ref(0)
//
const approvedCount = ref(0)
//
const approvedGold = ref(0)
const approvedRGold = ref(0)
const approvedFGold = ref(0)
//
const rejectedCount = ref(0)
//
const rejectedGold = ref(0)
const rejectedRGold = ref(0)
const rejectedFGold = ref(0)
// ==============================================================
//
const get = async function (val) {
try {
//
if (adminData.value.area === '泰国') {
rechargeVo.value.areas = ['泰国', '越南']
} else if (adminData.value.area !== '总部') {
rechargeVo.value.area = adminData.value.area
}
//
if (typeof val === 'number') {
getObj.value.pageNum = val
}
//
if (getTime.value != null) {
if (getTime.value.startDate != '' && getTime.value.endDate != '') {
rechargeVo.value.startDate = getTime.value[0]
rechargeVo.value.endDate = getTime.value[1]
}
} else {
rechargeVo.value.startDate = ''
rechargeVo.value.endDate = ''
}
rechargeVo.value.sortField = sortField.value
rechargeVo.value.sortOrder = sortOrder.value
console.log('搜索参数', getObj.value)
// POST
const result = await request({
url: '/recharge/recharge',
data: {
pageNum: getObj.value.pageNum,
pageSize: getObj.value.pageSize,
rechargeVo: { ...rechargeVo.value }
}
})
//
// rechargeVo.value
const detailWithoutSort = { ...rechargeVo.value }
delete detailWithoutSort.sortField
delete detailWithoutSort.sortOrder
delete detailWithoutSort.status
const result2 = await request({
url: '/recharge/recharge/RechargeA',
data: detailWithoutSort
})
// result2.data[i].flag="" totalData.value = result2.data[i]0
//
if (result2.data) {
result2.data.forEach((item) => {
switch (item.auditStatus) {
case '待审核':
// item.raudit 0
pendingCount.value = item.raudit || 0
// item.sumRaudit 0
pendingGold.value = item.sumRaudit || 0
pendingRGold.value = item.sumRaudit1 || 0
pendingFGold.value = item.sumRaudit2 || 0
break
case '已通过':
approvedCount.value = item.raudit || 0
approvedGold.value = item.sumRaudit || 0
approvedRGold.value = item.sumRaudit1 || 0
approvedFGold.value = item.sumRaudit2 || 0
break
case '已驳回':
rejectedCount.value = item.raudit || 0
rejectedGold.value = item.sumRaudit || 0
rejectedRGold.value = item.sumRaudit1 || 0
rejectedFGold.value = item.sumRaudit2 || 0
break
}
})
}
trueGold.value = pendingGold.value + approvedGold.value + rejectedGold.value
trueCount.value =
pendingCount.value + approvedCount.value + rejectedCount.value
trueRGold.value =
pendingRGold.value + approvedRGold.value + rejectedRGold.value
trueFGold.value =
pendingFGold.value + approvedFGold.value + rejectedFGold.value
//
console.log('请求成功', result)
console.log('这是分页', getObj.value)
//
tableData.value = result.data.list
console.log('tableData', tableData.value)
//
total.value = result.data.total
console.log('total', total.value)
} catch (error) {
console.log('请求失败', error)
//
}
}
//
const search = function () {
trimJwCode();
getObj.value.pageNum = 1
get()
}
//
const reset = function () {
delete rechargeVo.value.activityId
@ -309,51 +111,9 @@ const get7Days = function () {
console.log('getTime', getTime.value)
get()
}
//
const adminAll = function () {
console.log('adminAll')
rechargeVo.value.status = ''
getObj.value.pageNum = 1
get()
}
//
const adminWait = async function () {
rechargeVo.value.status = 0
getObj.value.pageNum = 1
await get()
console.log('adminWait')
trueCount.value = pendingCount.value
trueGold.value = pendingGold.value
trueRGold.value = pendingRGold.value
trueFGold.value = pendingFGold.value
}
//
const adminPass = async function () {
rechargeVo.value.status = 1
getObj.value.pageNum = 1
await get()
console.log('adminPass')
trueCount.value = approvedCount.value
trueGold.value = approvedGold.value
trueRGold.value = approvedRGold.value
trueFGold.value = approvedFGold.value
}
//
const adminReject = async function () {
rechargeVo.value.status = 2
getObj.value.pageNum = 1
await get()
console.log('adminReject')
trueCount.value = rejectedCount.value
trueGold.value = rejectedGold.value
trueRGold.value = rejectedRGold.value
trueFGold.value = rejectedFGold.value
}
//
const handleClick = function (tab, event) {
if (tab.props.name === 'all') {
adminAll()
} else if (tab.props.name === 'wait') {
const handleClick = function (tab) {
if (tab.props.name === 'wait') {
adminWait()
} else if (tab.props.name === 'pass') {
adminPass()
@ -361,67 +121,30 @@ const handleClick = function (tab, event) {
adminReject()
}
}
//
const getActivity = async function () {
try {
// POST
const result = await request({
url: '/recharge/activity/select',
url: '',
data: {}
})
//
console.log('请求成功', result)
//
activity.value = result.data
console.log('activity', activity.value)
} catch (error) {
console.log('请求失败', error)
//
}
}
//
//
const getArea = async function () {
try {
// POST
const result = await request({
url: '/recharge/user/search',
url: '',
data: {}
})
//
console.log('请求成功', result)
//
area.value = result.data
console.log('地区', area.value)
} catch (error) {
console.log('请求失败', error)
//
}
}
//
const checkNumber = function () {
if (typeof parseInt(getObj.value.pageNum) === 'number') {
console.log('总共有多少页' + Math.ceil(total.value / getObj.value.pageSize))
if (
getObj.value.pageNum > 0 &&
getObj.value.pageNum <= Math.ceil(total.value / getObj.value.pageSize)
) {
console.log('输入的数字合法')
getObj.value.pageNum = parseInt(getObj.value.pageNum)
get()
} else {
//
ElMessage({
type: 'error',
message: '请检查输入内容'
})
}
} else {
//
ElMessage({
type: 'error',
message: '请检查输入内容'
})
}
}
const handlePageSizeChange = function (val) {
@ -432,117 +155,16 @@ const handleCurrentChange = function (val) {
getObj.value.pageNum = val
get()
}
// ====================================
//
const pass = function (row) {
//
passObj.value = row
passObj.value.adminId = adminData.value.adminId
passObj.value.auditId = row.auditId
// passObj.value.status = 1
passObj.value.rechargeId = row.rechargeId
passObj.value.detailId = row.detailId
passObj.value.jwcode = row.jwcode
passObj.value.paidGold = row.paidGold
passObj.value.freeGold = row.freeGold
passObj.value.adminName = adminData.value.adminName
console.log('通过对象', passObj.value)
}
//
const passConfirm = async function () {
try {
//
passObj.value.status = 1
console.log('通过对象', passObj.value)
// POST
// passObj.value.flag = 0;
const result = await request({
url: '/audit/audit/goldedit',
data: passObj.value
})
//
console.log('请求成功', result)
//
get()
//
ElMessage({
type: 'success',
message: '通过成功!'
})
} catch (error) {
console.error('请求失败', error);
ElMessage({
type: 'error',
message: '出错了,不知道咋回事'
});
}
}
//
const openRejectVisible = function () {
const openRej = function () {
rejectVisible.value = true
}
//
const closeRejectVisible = function () {
const closeRej = function () {
rejectVisible.value = false
}
//
const reject = function (row) {
//
rejectObj.value.adminId = adminData.value.adminId
rejectObj.value.auditId = row.auditId
rejectObj.value.status = 2
rejectObj.value.reson = ''
rejectObj.value.rechargeId = row.rechargeId
rejectObj.value.detailId = row.detailId
console.log('驳回对象', rejectObj.value)
openRejectVisible()
}
//
const rejectConfirm = async function () {
Ref.value.validate(async (valid) => {
if (valid) {
try {
console.log('驳回对象', rejectObj.value)
// POST
const result = await request({
url: '/audit/audit/goldedit',
data: rejectObj.value
})
//
console.log('请求成功', result)
//
get()
//
closeRejectVisible()
//
ElMessage({
type: 'success',
message: '驳回成功!'
})
} catch (error) {
console.log('请求失败', error)
//
}
} else {
//
ElMessage({
type: 'error',
message: '请检查输入内容'
})
}
})
}
//
const rules = reactive({
reson: [{ required: true, message: '请输入驳回理由', trigger: 'blur' }]
})
//
onMounted(async function () {
@ -558,18 +180,8 @@ const sortOrder = ref('')
const handleSortChange = (column) => {
console.log('排序字段:', column.prop)
console.log('排序方式:', column.order)
if (column.prop === 'rechargeGold') {
sortField.value = 'recharge_gold'
} else if (column.prop === 'freeGold') {
sortField.value = 'free_gold'
} else if (column.prop === 'rechargeTime') {
sortField.value = 'recharge_time'
} else if (column.prop === 'createTime') {
sortField.value = 'create_time'
} else if (column.prop === 'paidGold') {
sortField.value = 'paid_gold'
}else if (column.prop === 'auditTime') {
sortField.value = 'audit_time'
if (column.prop === '待补充') {
sortField.value = ''
}
sortOrder.value = column.order === 'ascending' ? 'ASC' : 'DESC'
get()
@ -586,35 +198,27 @@ const trimJwCode = () => {
<template>
<el-row>
<el-col>
<el-card style="margin-bottom: 20px">
<el-row style="margin-bottom: 10px">
<el-card style="margin-bottom: 5px">
<el-row style="margin-bottom: 5px">
<el-col :span="6">
<div class="head-card-element">
<el-text class="mx-1" size="large">精网号</el-text>
<el-text size="large">精网号</el-text>
<el-input v-model="rechargeVo.jwcode" placeholder="请输入精网号" style="width: 240px" clearable />
</div>
</el-col>
<el-col :span="6">
<div class="head-card-element">
<el-text class="mx-1" size="large">活动名称</el-text>
<el-select v-model="rechargeVo.activityId" placeholder="请选择活动名称" style="width: 240px"
clearable>
<el-option v-for="item in activity" :key="item.activityId" :label="item.activityName"
:value="item.activityId" />
<el-text size="large">活动名称</el-text>
<el-select v-model="rechargeVo.activityId" placeholder="请选择活动名称" style="width: 240px" clearable>
<el-option v-for="item in activity" :key="item.activityId" :label="item.activityName" :value="item.activityId" />
</el-select>
</div>
</el-col>
<el-col :span="6">
<div class="head-card-element">
<el-text class="mx-1" size="large">支付方式</el-text>
<el-text size="large">支付方式</el-text>
<el-select v-model="rechargeVo.payWay" placeholder="请选择支付方式" style="width: 240px" clearable>
<el-option v-for="item in payWay" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</div>
</el-col>
<el-col :span="6">
<div class="head-card-element" v-if="adminData.area == '总部'">
<el-text class="mx-1" size="large">所属地区</el-text>
<el-text size="large">所属地区</el-text>
<el-select v-model="rechargeVo.area" placeholder="请选择所属地区" style="width: 240px" clearable>
<el-option v-for="item in area" :key="item" :label="item" :value="item" />
</el-select>
@ -622,38 +226,22 @@ const trimJwCode = () => {
</el-col>
</el-row>
<el-row>
<el-col :span="16">
<div class="time-controls">
<div class="time-group">
<el-text class="mx-1" size="large">充值时间</el-text>
<el-date-picker
v-model="getTime"
type="datetimerange"
range-separator="至"
start-placeholder="起始时间"
end-placeholder="结束时间"
style="width: 400px"
/>
<el-button @click="getToday()" style="margin-left: 10px"> </el-button>
<el-button @click="getYesterday()" style="margin-left: 10px"> </el-button>
<el-button @click="get7Days()" style="margin-left: 10px"> 近7天 </el-button>
<el-col :span="12">
<div class="time-controls">
<div class="time-group">
<el-text size="large">添加时间</el-text>
<el-date-picker v-model="getTime" type="datetimerange" range-separator="" start-placeholder="起始时间"
end-placeholder="结束时间" style="width: 400px" />
<el-button @click="getToday()" style="margin-left: 10px"></el-button>
<el-button @click="getYesterday()" style="margin-left: 10px"></el-button>
<el-button @click="get7Days()" style="margin-left: 10px">近7天</el-button>
</div>
</div>
</div>
</el-col>
</el-col>
<el-col :span="8">
<el-button @click="reset()" type="success" style="margin-right: 10px">重置</el-button>
<el-button type="primary" @click="search()">查询</el-button>
</el-col>
</el-row>
<el-row>
<el-col :span="21">
<div style="margin-top: 10px">
<el-text class="mx-1" size="large">请选择您想看到的数据</el-text>
<el-select v-model="selectedColumns" multiple placeholder="请选择您想看到的数据" size="large" style="width: 800px">
<el-option v-for="item in columnOptions" :key="item.prop" :label="item.label" :value="item.prop" />
</el-select>
</div>
<el-col :span="8">
<el-button @click="reset()" type="success">重置</el-button>
<el-button type="primary" @click="get()">查询</el-button>
</el-col>
</el-row>
</el-card>
@ -662,94 +250,66 @@ const trimJwCode = () => {
<el-row>
<el-col>
<el-card>
<el-tabs v-model="activeName" type="card" class="demo-tabs" @tab-click="handleClick">
<el-tab-pane label="全部" name="all"></el-tab-pane>
<el-tabs v-model="activeName" type="card" @tab-click="handleClick">
<el-tab-pane label="待审核" name="wait"></el-tab-pane>
<el-tab-pane label="已通过" name="pass"></el-tab-pane>
<el-tab-pane label="已驳回" name="reject"></el-tab-pane>
<div>
总条数{{ trueCount }}总金币数{{
formattedTrueGold
}}金币永久金币{{ formattedTrueRGold }}金币免费金币{{ formattedTrueFGold }}金币
总条数{{ trueCount }}&nbsp;&nbsp;&nbsp;&nbsp;
总金币数{{ formattedTrueGold }}金币&nbsp;&nbsp;&nbsp;&nbsp;
永久金币{{ formattedTrueRGold }}金币&nbsp;&nbsp;&nbsp;&nbsp;
免费金币{{ formattedTrueFGold }}金币
</div>
</el-tabs>
<div style="height: 540px; overflow-y: auto">
<el-table :data="tableData" style="width: 100%" height="540px" @sort-change="handleSortChange" :row-style="{ height: '50px' }">
<el-table-column type="index" label="序号" width="100px" fixed="left">
<template #default="scope">
<span>{{
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
}}</span>
<span>{{ scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize }}</span>
</template>
</el-table-column>
<!-- 动态列 -->
<template v-for="col in columnOptions" :key="col.prop">
<el-table-column v-if="selectedColumns.includes(col.prop)" :prop="col.prop" :label="col.label"
:width="col.width" :sortable="col.sortable ? 'custom' : false"
:show-overflow-tooltip="true" >
<template #default="scope">
<!-- 特殊列模板 -->
<template v-if="col.prop === 'rechargeTime'">
{{ moment(scope.row.rechargeTime).format('YYYY-MM-DD HH:mm:ss') }}
</template>
<template v-else-if="col.prop === 'createTime'">
{{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
</template>
<template v-else-if="col.prop === 'auditTime'">
{{ scope.row.auditTime ? moment(scope.row.auditTime).format('YYYY-MM-DD HH:mm:ss') : '----' }}
</template>
<template v-else-if="col.prop === 'remark'">
<span>{{ scope.row[col.prop] }}</span>
</template>
<template v-else-if="col.prop === 'rechargeVoucher'">
<el-image :src="scope.row.rechargeVoucher" style="width: 50px; height: 50px" />
</template>
<template v-else-if="col.prop === 'status'">
<div class="status">
<span :class="{
'green-dot': scope.row.status === 1,
'grey-dot': scope.row.status === 0,
'red-dot': scope.row.status === 2
}"></span>
<span>{{
scope.row.status === 1 ? '已通过' :
scope.row.status === 0 ? '待审核' : '已驳回'
}}</span>
</div>
</template>
<template v-else-if="['paidGold', 'freeGold'].includes(col.prop)">
{{ scope.row[col.prop] / 100 }}
</template>
<span v-else>
{{ scope.row[col.prop] }}
</span>
</template>
<el-table-column fixed="left" prop="username" label="姓名" width="150px" />
<el-table-column fixed="left" prop="jwcode" label="精网号" width="110px" />
<el-table-column prop="area" label="所属地区" width="100px" />
<el-table-column prop="refundType" label="活动名称" width="100px" />
<el-table-column prop="refundGoods" label="充值金额" width="100px" />
<el-table-column prop="rechargeCoin" label="永久金币" width="110px" sortable="custom">
<template #default="scope">{{ scope.row.rechargeCoin }}</template>
</el-table-column>
<el-table-column prop="freeCoin" label="免费金币" sortable="custom" width="110px">
<template #default="scope">{{ scope.row.freeCoin }}</template>
</el-table-column>
<el-table-column prop="remark" label="备注" width="200px" show-overflow-tooltip />
<el-table-column prop="freeCoin" label="支付凭证" width="110px" />
<el-table-column prop="adminName" label="提交人" width="100px" />
<el-table-column prop="status" label="付款时间" width="200px" >
<template #default="scope">
{{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
</template>
</el-table-column>
</template>
<el-table-column prop="createTime" sortable="custom" label="提交时间" width="200px">
<template #default="scope">
{{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
</template>
</el-table-column>
<el-table-column fixed="right" prop="operation" label="操作" width="150px">
<template #default="scope">
<div class="operation">
<el-popconfirm title="确定要通过此条记录吗?" @confirm="passConfirm">
<template #reference>
<el-button :disabled="scope.row.status === 1 || scope.row.status === 2
? true
: false
" type="primary" text @click="pass(scope.row)">
<el-button :disabled="scope.row.status === 1 || scope.row.status === 2 ? true : false"
type="primary" text @click="pass(scope.row)">
通过
</el-button>
</template>
<template #actions="{ confirm, cancel }">
<el-button size="small" @click="cancel">取消</el-button>
<el-button type="primary" size="small" @click="confirm">
确定
</el-button>
<el-button type="primary" size="small" @click="confirm">确定</el-button>
</template>
</el-popconfirm>
<el-button :disabled="scope.row.status === 1 || scope.row.status === 2
? true
: false
" type="primary" text @click="reject(scope.row)">
<el-button :disabled="scope.row.status === 1 || scope.row.status === 2 ? true : false"
type="primary" text @click="reject(scope.row)">
驳回
</el-button>
</div>
@ -758,7 +318,6 @@ const trimJwCode = () => {
</el-table>
</div>
<!-- 分页 -->
<div class="pagination">
<el-pagination background :page-size="getObj.pageSize" :page-sizes="[5, 10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handlePageSizeChange"
@ -768,8 +327,7 @@ const trimJwCode = () => {
</el-col>
</el-row>
<!-- 驳回弹出框 -->
<el-dialog v-model="rejectVisible" title="驳回理由" width="500" :before-close="closeRejectVisible">
<el-dialog v-model="rejectVisible" title="驳回理由" width="500" :before-close="closeRej">
<template #footer>
<el-form :model="rejectObj" ref="Ref" :rules="rules" label-width="auto" style="max-width: 600px">
<el-form-item prop="reson" label="驳回理由:">
@ -779,7 +337,7 @@ const trimJwCode = () => {
</el-form>
<div class="dialog-footer">
<el-button @click="closeRejectVisible()">取消</el-button>
<el-button @click="closeRej()">取消</el-button>
<el-button type="primary" @click="rejectConfirm()"> 确定 </el-button>
</div>
</template>
@ -825,17 +383,23 @@ const trimJwCode = () => {
.status {
display: flex;
align-items: center; /* 确保子元素垂直居中对齐 */
gap: 6px; /* 设置圆点和文字之间的间距 */
align-items: center;
/* 确保子元素垂直居中对齐 */
gap: 6px;
/* 设置圆点和文字之间的间距 */
}
.green-dot, .grey-dot, .red-dot {
.green-dot,
.grey-dot,
.red-dot {
display: inline-block;
width: 8px;
height: 8px;
border-radius: 50%;
flex-shrink: 0; /* 防止圆点在空间不足时缩小 */
margin: 0; /* 移除原有的 margin-right */
flex-shrink: 0;
/* 防止圆点在空间不足时缩小 */
margin: 0;
/* 移除原有的 margin-right */
}
/* 备注列样式 */
@ -846,6 +410,7 @@ const trimJwCode = () => {
text-overflow: ellipsis;
white-space: nowrap;
}
/* 设置单元格内容溢出隐藏 */
.el-table .el-table__cell {
overflow: hidden;

1157
src/views/audit/refundAudit.vue
File diff suppressed because it is too large
View File

232
src/views/managerecharge/rate.vue

@ -70,7 +70,7 @@ const getYesterday = () => {
search()
}
// 7
// 7
const get7Days = () => {
const today = new Date()
const start = new Date(today.getFullYear(), today.getMonth(), today.getDate() - 6, 0, 0, 0)
@ -156,7 +156,7 @@ const addRate = async function () {
})
if (result.code == 0) {
ElMessage.error(result.msg)
}else{
} else {
ElMessage({
type: 'success',
message: '新增汇率成功'
@ -407,7 +407,7 @@ const rules = reactive({
//
const handledelete = function () {
timeRange.value={}
timeRange.value = {}
getObj.value.pageNum = 1
}
//
@ -479,26 +479,17 @@ function handleInput(value) {
</script>
<template>
<!-- 这是主页面 -->
<el-row>
<el-col>
<el-card>
<!-- 这是时间 -->
<div class="demo-range">
<el-row>
<el-col :span="9">
<el-form-item>
<el-text class="mx-1" size="large">时间范围</el-text>
<el-date-picker
v-model="timeRange"
type="datetimerange"
range-separator="至"
start-placeholder="开始日期"
end-placeholder="结束日期"
style="width: 300px"
format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss"
/>
<el-date-picker v-model="timeRange" type="datetimerange" range-separator="" start-placeholder="开始日期"
end-placeholder="结束日期" style="width: 300px" format="YYYY-MM-DD HH:mm:ss"
value-format="YYYY-MM-DD HH:mm:ss" />
</el-form-item>
</el-col>
<el-col :span="4">
@ -507,15 +498,8 @@ function handleInput(value) {
<el-button @click="get7Days">近7天</el-button>
</el-col>
<el-col :span="4">
<el-button
class="button-item"
type="success"
@click="handledelete()"
>重置</el-button>
<el-button
type="primary"
@click="search"
>查询</el-button>
<el-button class="button-item" type="success" @click="handledelete()">重置</el-button>
<el-button type="primary" @click="search">查询</el-button>
</el-col>
</el-row>
</div>
@ -526,28 +510,13 @@ function handleInput(value) {
<el-row>
<el-col>
<el-card class="box-card" style="max-width: 100%">
<!-- 添加 -->
<div class="add-item">
<el-button
style="color: #048efb; border: 1px solid #048efb"
@click="regeAdd = true"
>新增汇率</el-button
>
<el-button style="color: #048efb; border: 1px solid #048efb" @click="regeAdd = true">新增汇率</el-button>
</div>
<!-- 表格 -->
<div>
<el-table
:data="tableData"
v-if="(tableData.flag = 1)"
:height="tableHeight"
style="width: 100%"
>
<el-table-column
type="index"
label="序号"
width="100px"
fixed="left"
>
<el-table :data="tableData" v-if="(tableData.flag = 1)" :height="tableHeight" style="width: 100%">
<el-table-column type="index" label="序号" width="100px" fixed="left">
<template #default="scope">
<span>{{
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
@ -568,62 +537,22 @@ function handleInput(value) {
<span>{{ formatDate(scope.row.createTime) }}</span>
</template>
</el-table-column>
<el-table-column prop="adminName" label="提交人" :span="1" />
<el-table-column prop="status" label="状态">
<template #default="scope">
<span v-if="scope.row.status === 1">
<div class="status">
<span class="green-dot"></span>
<span>使用中</span>
</div>
</span>
<span v-if="scope.row.status === 0">
<div class="status">
<span class="red-dot"></span>
<span>未开始</span>
</div>
</span>
<span v-if="scope.row.status === 2">
<div class="status">
<span class="grey-dot"></span>
<span>已过期</span>
</div>
</span>
</template>
</el-table-column>
<el-table-column prop="startTime" label="持续时间" :span="10">
<template #default="scope">
<span>{{ formatDateTwe(scope.row.startTime) }}</span>
<span>---</span>
<span>{{ formatDateTwe(scope.row.endTime) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" :span="3">
<template #default="scope">
<el-button
type="text"
@click="
() => {
regeEdit = true
getEditData(scope.row)
}
"
>编辑</el-button
>
<el-popconfirm
title="确定将此条活动删除吗?"
@confirm="delConfirm"
>
<el-button type="text" @click="
() => {
regeEdit = true
getEditData(scope.row)
}
">编辑</el-button>
<el-popconfirm title="确定将此条活动删除吗?" @confirm="delConfirm">
<template #reference>
<el-button type="primary" text> 删除 </el-button>
</template>
<template #actions="{ confirm, cancel }">
<el-button size="small" @click="cancel">取消</el-button>
<el-button
type="primary"
size="small"
@click="confirm(scope.row)"
>
<el-button type="primary" size="small" @click="confirm(scope.row)">
确定
</el-button>
</template>
@ -634,58 +563,26 @@ function handleInput(value) {
</div>
<!-- 分页 -->
<div class="pagination">
<el-pagination
background
:page-size="getObj.pageSize"
:page-sizes="[5, 10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
@size-change="handlePageSizeChange"
@current-change="handleCurrentChange"
></el-pagination>
<el-pagination background :page-size="getObj.pageSize" :page-sizes="[5, 10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handlePageSizeChange"
@current-change="handleCurrentChange"></el-pagination>
</div>
</el-card>
</el-col>
</el-row>
<!-- 这是添加弹窗 -->
<el-dialog
v-model="regeAdd"
title="新增汇率"
width="500"
:close-on-click-modal="false"
>
<el-dialog v-model="regeAdd" title="新增汇率" width="500" :close-on-click-modal="false">
<template #footer>
<el-form
ref="Ref"
style="max-width: 600px"
:model="rateAdd"
:rules="rules"
label-width="auto"
class="demo-ruleForm"
:size="formSize"
status-icon
>
<el-form ref="Ref" style="max-width: 600px" :model="rateAdd" :rules="rules" label-width="auto"
class="demo-ruleForm" :size="formSize" status-icon>
<el-form-item prop="currency" label="货币名称:">
<el-select
v-model.number="rateAdd.currency"
placeholder="请选择"
style="width: 240px"
>
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
<el-select v-model.number="rateAdd.currency" placeholder="请选择" style="width: 240px">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item prop="exchangeRate" label="汇率:">
<el-input
v-model="rateAdd.exchangeRate"
@update:modelValue="handleInput"
style="width: 120px"
/>
<el-input v-model="rateAdd.exchangeRate" @update:modelValue="handleInput" style="width: 120px" />
<p class="unit">:1</p>
<p>
(提示当前规则每 {{ rateAdd.exchangeRate }}
@ -696,23 +593,12 @@ function handleInput(value) {
<el-input :value="adminData.name" disabled style="width: 240px" />
</el-form-item>
<el-form-item prop="startTime" label="开始时间:">
<el-date-picker
v-model="rateAdd.startTime"
type="date"
placeholder="请选择时间"
:default-value="new Date()"
@change="handleStartTimeChange"
value-format="YYYY-MM-DD"
/>
<el-date-picker v-model="rateAdd.startTime" type="date" placeholder="请选择时间" :default-value="new Date()"
@change="handleStartTimeChange" value-format="YYYY-MM-DD" />
</el-form-item>
<el-form-item prop="endTime" label="结束时间:">
<el-date-picker
v-model="rateAdd.endTime"
type="date"
placeholder="请选择时间"
:default-value="new Date()"
value-format="YYYY-MM-DD"
/>
<el-date-picker v-model="rateAdd.endTime" type="date" placeholder="请选择时间" :default-value="new Date()"
value-format="YYYY-MM-DD" />
</el-form-item>
<el-form-item>
<div class="dialog-footer">
@ -725,35 +611,13 @@ function handleInput(value) {
</el-dialog>
<!-- 这是编辑弹窗 -->
<el-dialog
v-model="regeEdit"
title="修改汇率"
width="500"
:close-on-click-modal="false"
>
<el-dialog v-model="regeEdit" title="修改汇率" width="500" :close-on-click-modal="false">
<template #footer>
<el-form
ref="ruleFormRef"
style="max-width: 600px"
:model="rateEdit"
:rules="rules"
label-width="auto"
class="demo-ruleForm"
:size="formSize"
status-icon
>
<el-form ref="ruleFormRef" style="max-width: 600px" :model="rateEdit" :rules="rules" label-width="auto"
class="demo-ruleForm" :size="formSize" status-icon>
<el-form-item label="货币名称:">
<el-select
v-model="rateEdit.currency"
placeholder="请选择"
style="width: 240px"
>
<el-option
v-for="item in options"
:key="item.value"
:label="item.label"
:value="item.value"
/>
<el-select v-model="rateEdit.currency" placeholder="请选择" style="width: 240px">
<el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" />
</el-select>
</el-form-item>
<el-form-item label="汇率:">
@ -768,22 +632,12 @@ function handleInput(value) {
<el-input disabled :value="adminData.name" style="width: 240px" />
</el-form-item>
<el-form-item label="开始时间:">
<el-date-picker
v-model="rateEdit.startTime"
type="date"
placeholder="请选择时间"
:default-value="new Date()"
value-format="YYYY-MM-DD"
/>
<el-date-picker v-model="rateEdit.startTime" type="date" placeholder="请选择时间" :default-value="new Date()"
value-format="YYYY-MM-DD" />
</el-form-item>
<el-form-item label="结束时间:">
<el-date-picker
v-model="rateEdit.endTime"
type="date"
placeholder="请选择时间"
:default-value="new Date()"
value-format="YYYY-MM-DD"
/>
<el-date-picker v-model="rateEdit.endTime" type="date" placeholder="请选择时间" :default-value="new Date()"
value-format="YYYY-MM-DD" />
</el-form-item>
<el-form-item>
<div class="dialog-footer">
@ -840,9 +694,11 @@ p {
.el-card {
padding: 0px;
}
.pagination {
display: flex;
}
.status {
display: flex;
}

691
src/views/permissions/index.vue

@ -9,214 +9,103 @@ import { UserFilled } from '@element-plus/icons-vue'
import _ from 'lodash'
import request from '@/util/http'
//
const tableData = ref([])
// ===========================================
//
const total = ref(100)
// detailY
const admin = ref({})
//
const getObj = ref({
pageNum: 1,
pageSize: 10
})
//
const permissionAddVisible = ref(false)
//
const permissionEditVisible = ref(false)
//
//
const addVisible = ref(false)
//
const editVisible = ref(false)
const area = ref([])
//
const store = ref([])
//
const permissionAddObj = ref({})
//
const addAdmin = ref({})
//
const permissionEditObj = ref({})
//
const store = ref([])//
//
const addInit = ref({})
//
const addObj = ref({})
//
const editObj = ref({})
//
const delObj = ref({})
//
const get = async function (val) {
try {
//
if (admin.value.jwcode) {
admin.value.jwcode = admin.value.jwcode.replace(/\s/g, '');
}
if (typeof val === 'number') {
getObj.value.pageNum = val
} else {
getObj.value.pageNum = 1
}
console.log('搜索参数', getObj.value)
// POST
const result = await request({
url: '/admin/search',
url: '',//
data: {
...getObj.value,
admin: { ...admin.value }
}
})
tableData.value = result.data.list
console.log('tableData', tableData.value)
total.value = result.data.total
} catch (error) {
console.log('请求失败', error)
}
}
//
const trimJwCode = () => {
if (admin.value.jwcode) {
admin.value.jwcode = admin.value.jwcode.replace(/\s/g, '');
}
}
//
const search = function () {
trimJwCode();
getObj.value.pageNum = 1
get()
}
//
const reset = function () {
admin.value = {}
}
//
const getArea = async function () {
try {
const result = await request({
url: '/admin/area',
url: '',
data: {}
})
area.value = result.data
} catch (error) {
console.log('请求失败', error)
//
}
}
//
const getStore = async function () {
try {
const result = await request({
url: '/admin/store',
url: '',
data: {}
})
store.value = result.data
} catch (error) {
console.log('请求失败', error)
//
}
}
//
const checkNumber = function () {
if (typeof parseInt(getObj.value.pageNum) === 'number') {
console.log('总共有多少页' + Math.ceil(total.value / getObj.value.pageSize))
if (
getObj.value.pageNum > 0 &&
getObj.value.pageNum <= Math.ceil(total.value / getObj.value.pageSize)
) {
getObj.value.pageNum = parseInt(getObj.value.pageNum)
console.log('输入的数字合法')
get()
} else {
//
ElMessage({
type: 'error',
message: '请检查输入内容'
})
}
} else {
//
ElMessage({
type: 'error',
message: '请检查输入内容'
})
}
}
//
const openPermissionAddVisible = function () {
permissionAddVisible.value = true
const openaddVisible = function () {
addVisible.value = true
}
//
const closePermissionAddVisible = function () {
permissionAddVisible.value = false
const closeaddVisible = function () {
addVisible.value = false
}
//
const permissionAddInit = function () {
permissionAddObj.value = {}
openPermissionAddVisible()
}
//
const getAdminByJwcodeWithoutPermission = async function () {
try {
const result = await request({
url: '/admin/selectNo',
data: permissionAddObj.value
})
if (result.code == 200) {
permissionAddObj.value = result.data[0]
ElMessage.success('精网号查询成功')
} else {
ElMessage.error(result.msg)
}
console.log('精网号查询没有权限的用户', permissionAddObj.value)
} catch (error) {
console.log('请求失败', error)
//
}
addInit.value = {}
openaddVisible()
}
//
// const permissionAdd = async function () {
// try {
// if (
// permissionAddObj.value.jwcode == "" ||
// permissionAddObj.value.jwcode == null ||
// permissionAddObj.value.name == "" ||
// permissionAddObj.value.name == null
// ) {
// ElMessage.error("");
// return;
// }
// if (
// permissionAddObj.value.permisson == "" ||
// permissionAddObj.value.permission == null
// ) {
// ElMessage.error("");
// return;
// }
// console.log("", permissionAddObj.value);
// const result = await request(
// {
// url: "/admin/update",
// data: permissionAddObj.value}
// );
// //
// console.log("", result);
// ElMessage.success("");
// get();
// closePermissionAddVisible();
// } catch (error) {
// console.log("", error);
// //
// ElMessage.error("");
// closePermissionAddVisible();
// }
// };
const permissionAdd = async function () {
Ref.value.validate(async (valid) => {
console.log('valid', valid)
if (valid) {
try {
addAdmin.value.adminFlag = 1
addAdmin.value.status1 = 1
addObj.value.adminFlag = 1
addObj.value.status1 = 1
const result = await request({
url: '/admin/add',
data: addAdmin.value
url: '',
data: addObj.value
})
if (result.code == 200) {
@ -224,29 +113,24 @@ const permissionAdd = async function () {
} else {
ElMessage.error(result.msg)
}
addAdmin.value = {}
addObj.value = {}
closeaddVisible()
get()
closePermissionAddVisible()
} catch (error) {
console.log('新增用户权限失败', error)
//
ElMessage.error('新增用户权限失败')
closePermissionAddVisible()
closeaddVisible()
}
} else {
//
ElMessage({
type: 'error',
message: '请检查输入内容'
})
}
})
}
//
const rules = reactive({
} // if-else
const rules = reactive({//
jwcode: [{ required: true, message: '请输入精网号', trigger: 'blur' }],
name: [{ required: true, message: '请输入用户名', trigger: 'blur' }],
store: [{ required: true, message: '请输入职称', trigger: 'blur' }],
@ -254,95 +138,72 @@ const rules = reactive({
area: [{ required: true, message: '请选择所属地区', trigger: 'blur' }],
permission: [{ required: true, message: '请选择权限', trigger: 'blur' }]
})
//
// ref
const Ref = ref(null)
// 使 _.throttle trailing false
// 使 _.throttle trailing false ?
const throttledPermissionAdd = _.throttle(permissionAdd, 5000, {
trailing: false
})
//
const permissionList = [
const list = [
{
label: '总部',
value: '1'
},
{
label: '地区经理',
value: '5'
},
{
label: '财务',
value: '3'
},
{
label: '客服',
value: '2'
label: '',
value: ''
}
]
//
//
//
const areaList = ref([])
const getAreas = async function () {
try {
// POST
const result = await request({
url: '/recharge/user/search',
url: '',
data: {}
})
//
console.log('请求成功', result)
//
console.log('result', result)
areaList.value = result.data
console.log('地区', area.value)
} catch (error) {
console.log('请求失败', error)
//
}
}
getAreas()
//
const openPermissionEditVisible = function () {
permissionEditVisible.value = true
const openVisable = function () {
editVisible.value = true
}
//
const closePermissionEditVisible = function () {
permissionEditVisible.value = false
const closeEdit = function () {
editVisible.value = false
}
//
const permissionEditInit = function (row) {
permissionEditObj.value = {}
permissionEditObj.value.jwcode = row.jwcode
permissionEditObj.value.name = row.name
permissionEditObj.value.area = row.area
permissionEditObj.value.store = row.store
permissionEditObj.value.permission = row.permission
console.log('编辑用户权限', permissionEditObj.value)
openPermissionEditVisible()
const editInit = function (row) {
editObj.value = {}
editObj.value.jwcode = row.jwcode
editObj.value.name = row.name
editObj.value.area = row.area
editObj.value.store = row.store
editObj.value.permission = row.permission
console.log('编辑用户权限', editObj.value)
openVisable()
}
//
const permissionEdit = async function () {
try {
const result = await request({
url: '/admin/update',
data: permissionEditObj.value
url: '',
data: editObj.value
})
//
console.log('请求成功', result)
ElMessage.success('编辑用户权限成功')
closeEdit()
get()
closePermissionEditVisible()
} catch (error) {
console.log('编辑用户权限失败', error)
//
ElMessage.error('编辑用户权限失败')
closePermissionEditVisible()
closeEdit()
}
}
const throttledPermissionEdit = _.throttle(permissionEdit, 5000, {
@ -361,20 +222,18 @@ const delConfirm = async function () {
console.log(delObj.value)
const result = await request({
url: '/admin/update',
url: '',
data: delObj.value
})
//
console.log('请求成功', result)
ElMessage.success('删除权限成功')
delObj.value = {}
get()
} catch (error) {
console.log('删除权限失败', error)
//
ElMessage.error('删除权限失败')
get()
}
}
//
@ -382,28 +241,25 @@ const editStatus = async function (row) {
try {
console.log(row)
permissionEditObj.value = {}
permissionEditObj.value.jwcode = row.jwcode
permissionEditObj.value.status1 = row.status1
editObj.value = {}
editObj.value.jwcode = row.jwcode
editObj.value.status1 = row.status1
console.log('修改用户权限状态', permissionEditObj.value)
console.log('修改用户权限状态', editObj.value)
const result = await request({
url: '/admin/update',
data: permissionEditObj.value
url: '',
data: editObj.value
})
//
console.log('请求成功', result)
ElMessage.success(
permissionEditObj.value.status1 == 1 ? '启用成功' : '禁用成功'
editObj.value.status1 == 1 ? '启用成功' : '禁用成功'
)
permissionEditObj.value = {}
editObj.value = {}
get()
} catch (error) {
console.log('修改用户权限失败', error)
//
}
}
@ -427,53 +283,26 @@ const handleCurrentChange = function (val) {
<el-row>
<el-col>
<el-card style="margin-bottom: 20px">
<div class="head-card">
<div class="head-card-element">
<el-text class="mx-1" size="large">精网号</el-text>
<el-input
v-model="admin.jwcode"
style="width: 240px"
placeholder="请输入精网号"
clearable
/>
<div style="display:flex">
<div>
<el-text size="large">OA号</el-text>
<el-input v-model="admin.jwcode" style="width: 240px" placeholder="请输入OA号" clearable />
</div>
<div class="head-card-element" style="margin-left: 50px">
<el-text class="mx-1" size="large">所属地区</el-text>
<el-select
v-model="admin.area"
placeholder="请选择所属地区"
style="width: 240px"
clearable
>
<el-option
v-for="item in area"
:key="item"
:label="item"
:value="item"
/>
<div style="margin-left: 50px">
<el-text size="large">所属地区</el-text>
<el-select v-model="admin.area" placeholder="请选择所属地区" style="width: 240px" clearable>
<el-option v-for="item in area" :key="item" :label="item" :value="item" />
</el-select>
</div>
<div class="head-card-element" style="margin-left: 50px">
<el-text class="mx-1" size="large">职位名称</el-text>
<el-select
v-model="admin.store"
placeholder="请选择职位名称"
style="width: 240px"
clearable
>
<el-option
v-for="item in store"
:key="item"
:label="item"
:value="item"
/>
<div style="margin-left: 50px">
<el-text size="large">职位名称</el-text>
<el-select v-model="admin.store" placeholder="请选择职位名称" style="width: 240px" clearable>
<el-option v-for="item in store" :key="item" :label="item" :value="item" />
</el-select>
</div>
<div class="head-card-btn">
<div style="margin-left:20px">
<el-button type="success" @click="reset()">重置</el-button>
<el-button type="primary" @click="search()">查询</el-button>
<el-button type="primary" @click="get()">查询</el-button>
</div>
</div>
</el-card>
@ -482,393 +311,167 @@ const handleCurrentChange = function (val) {
<el-row>
<el-col>
<el-card>
<!-- 添加 -->
<div class="add-item">
<el-button
style="color: #048efb; border: 1px solid #048efb"
@click="permissionAddInit()"
>新增用户</el-button
>
<el-button style="color: #048efb; border: 1px solid #048efb" @click="permissionAddInit()">新增用户</el-button>
</div>
<div>
<el-table :data="tableData" style="width: 100%">
<el-table-column
type="index"
label="序号"
width="100px"
fixed="left"
>
<el-table-column type="index" label="序号" width="100px" fixed="left"><!-- 序号始终固定在左边 -->
<template #default="scope">
<span>{{
scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize
}}</span>
<!-- index下标从0开始计算时要+1后面算页数(num页码数-1) * 每页记录数加起来是总条数 -->
<span>{{ scope.$index + 1 + (getObj.pageNum - 1) * getObj.pageSize }}</span>
</template>
</el-table-column>
<el-table-column prop="jwcode" label="精网号" />
<el-table-column prop="name" label="姓名" />
<el-table-column prop="area" label="所属地区" />
<el-table-column prop="store" label="职位" />
<el-table-column prop="permission" label="部门权限">
<el-table-column prop="jwcode" label="精网号" width="120px" />
<el-table-column prop="name" label="姓名" width="120px" />
<el-table-column prop="area" label="所属地区" width="120px" />
<el-table-column prop="store" label="职位" width="120px" />
<el-table-column prop="permission" label="部门权限" width="120px">
<template #default="scope">
<span v-if="scope.row.permission === '1'"> 总部管理员 </span>
<span v-if="scope.row.permission === '2'"> 分部财务 </span>
<span v-if="scope.row.permission === '3'"> 分部客服 </span>
<span v-if="scope.row.permission === '5'"> 分部经理 </span>
<span v-if="scope.row.permission === '1'">总部管理员</span>
待补充..................................................................................................
</template>
</el-table-column>
<el-table-column prop="remark" label="备注" />
<el-table-column prop="remark" label="备注" width="200px" show-overflow-tooltip />
<el-table-column prop="operation" label="操作" width="200px">
<template #default="scope">
<el-button
type="warning"
text
@click="permissionEditInit(scope.row)"
:disabled="scope.row.status1 === 0"
>
修改权限
</el-button>
<el-popconfirm
title="确定将此用户删除吗?"
@confirm="delConfirm"
>
<el-button type="warning" @click="editInit(scope.row)"
:disabled="scope.row.status1 === 0">修改权限</el-button>
<el-popconfirm title="确定将此用户删除吗?" @confirm="delConfirm">
<template #reference>
<el-button
type="danger"
text
@click="del(scope.row)"
:disabled="scope.row.status1 === 0"
>
删除
</el-button>
<el-button type="danger" @click="del(scope.row)" :disabled="scope.row.status1 === 0">删除</el-button>
</template>
<template #actions="{ confirm, cancel }">
<el-button size="small" @click="cancel">取消</el-button>
<el-button type="primary" size="small" @click="confirm">
确定
</el-button>
<el-button type="primary" size="small" @click="confirm">确定</el-button>
</template>
</el-popconfirm>
</template>
</el-table-column>
<el-table-column prop="status1" label="状态">
<el-table-column prop="status1" label="状态" width="200px">
<template #default="scope">
<el-switch
v-model="scope.row.status1"
:active-value="1"
:inactive-value="0"
size="large"
@change="editStatus(scope.row)"
style="
<el-switch v-model="scope.row.status1" :active-value="1" :inactive-value="0" size="large"
@change="editStatus(scope.row)" style="
--el-switch-on-color: #13ce66;
--el-switch-off-color: #ff4949;
"
active-text="启用"
inactive-text="禁用"
inline-prompt
/>
--el-switch-off-color: #ff4949;" active-text="启用" inactive-text="禁用" />
</template>
</el-table-column>
</el-table>
</div>
<!-- 分页 -->
<div class="pagination" style="margin-top: 20px">
<el-pagination
background
:page-size="getObj.pageSize"
:page-sizes="[5, 10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper"
:total="total"
@size-change="handlePageSizeChange"
@current-change="handleCurrentChange"
></el-pagination>
<el-pagination background :page-size="getObj.pageSize" :page-sizes="[5, 10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper" :total="total" @size-change="handlePageSizeChange"
@current-change="handleCurrentChange">
</el-pagination>
</div>
</el-card>
</el-col>
</el-row>
<!-- 新增用户权限 -->
<el-dialog
v-model="permissionAddVisible"
title="新增用户权限"
width="800px"
:close-on-click-modal="false"
>
<el-dialog v-model="addVisible" title="新增用户权限" :close-on-click-modal="false">
<template #footer>
<!-- 居中显示 -->
<el-form
ref="Ref"
:rules="rules"
:model="addAdmin"
label-width="auto"
style="max-width: 600px; align-items: center"
>
<el-form ref="Ref" :rules="rules" :model="addObj" label-width="auto" style="align-items: center" >
<el-form-item prop="jwcode" label="精网号:">
<el-input
v-model="addAdmin.jwcode"
placeholder="请输入精网号"
style="width: 220px"
/>
<el-input v-model="addObj.jwcode" placeholder="请输入精网号" style="width: 220px" />
</el-form-item>
<el-form-item prop="name" label="用户名:">
<el-input
v-model="addAdmin.name"
placeholder="请输入用户名"
style="width: 220px"
/>
<el-input v-model="addObj.name" placeholder="请输入用户名" style="width: 220px" />
</el-form-item>
<el-form-item prop="area" label="所属地区:">
<el-select
v-model="addAdmin.area"
placeholder="请选择所属地区"
style="width: 220px"
@change="() => Ref.value.validateField('area')"
>
<el-option
v-for="item in areaList"
:key="item"
:label="item"
:value="item"
></el-option>
<el-select v-model="addObj.area" placeholder="请选择所属地区" style="width: 220px"
@change="() => Ref.value.validateField('area')">
<el-option v-for="item in areaList" :key="item" :label="item" :value="item"></el-option>
</el-select>
</el-form-item>
<el-form-item prop="permission" label="权限类别:">
<el-select
v-model="addAdmin.permission"
placeholder="请选择权限"
style="width: 220px"
@change="() => Ref.value.validateField('permission')"
>
<el-option
v-for="item in permissionList"
:key="item.value"
:label="item.label"
:value="item.value"
></el-option>
<el-select v-model="addObj.permission" placeholder="请选择权限" style="width: 220px"
@change="() => Ref.value.validateField('permission')">
<el-option v-for="item in list" :key="item.value" :label="item.label" :value="item.value"></el-option>
</el-select>
</el-form-item>
<el-form-item prop="store" label="职位:">
<el-input
v-model="addAdmin.store"
placeholder="请输入职称"
style="width: 220px"
/>
<el-input v-model="addObj.store" placeholder="请输入职称" style="width: 220px" />
</el-form-item>
<el-form-item prop="machineId" label="机器码:">
<el-input
v-model="addAdmin.machineId"
placeholder="请输入机器码"
style="width: 220px"
/>
<el-input v-model="addObj.machineId" placeholder="请输入机器码" style="width: 220px" />
</el-form-item>
<el-form-item prop="remark" label="备注">
<el-input
v-model="addAdmin.remark"
style="width: 300px"
:rows="2"
maxlength="100"
show-word-limit
type="textarea"
/>
<el-input v-model="addObj.remark" style="width: 300px" :rows="2" maxlength="100" show-word-limit
type="textarea" />
</el-form-item>
</el-form>
<div>
<el-button @click="closePermissionAddVisible()">取消</el-button>
<el-button @click="closeaddVisible()">取消</el-button>
<el-button type="primary" @click="throttledPermissionAdd()">
提交
</el-button>
</div>
</template>
</el-dialog>
<!-- 这是新增用户权限弹窗
<el-dialog
v-model="permissionAddVisible"
title="新增用户权限"
width="800px"
:close-on-click-modal="false"
>
<div style="display: flex; margin: 20px 0px 20px 0px">
<span class="permissionVisible" style="margin-right: 10px">精网号:</span>
<el-input
placeholder="请输入精网号"
v-model="permissionAddObj.jwcode"
style="width: 240px; margin-right: 10px"
clearable
></el-input>
<el-button type="primary" @click="getAdminByJwcodeWithoutPermission()"
>查询</el-button
>
</div>
<el-descriptions
class="margin-top"
:column="2"
:size="size"
border
label-width="200px"
>
<el-descriptions-item>
<template #label>
<div class="permissionVisible">
<el-icon>
<UserFilled />
</el-icon>
员工精网号
</div>
</template>
{{ permissionAddObj.jwcode }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<div class="permissionVisible">
<el-icon>
<User />
</el-icon>
员工姓名
</div>
</template>
{{ permissionAddObj.name }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<div class="permissionVisible">
<el-icon :style="iconStyle">
<location />
</el-icon>
所属地区
</div>
</template>
{{ permissionAddObj.area }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<div class="permissionVisible">
<el-icon>
<OfficeBuilding />
</el-icon>
部门
</div>
</template>
{{ permissionAddObj.store }}
</el-descriptions-item>
</el-descriptions>
<el-divider>
<el-icon><star-filled /></el-icon>
</el-divider>
<div>
<span class="permissionVisible" style="margin-right: 20px"
>权限设置:</span
>
<el-radio-group v-model="permissionAddObj.permission">
<el-radio value="1" border>总部管理员</el-radio>
<el-radio value="5" border>分部经理</el-radio>
<el-radio value="2" border>分部财务</el-radio>
<el-radio value="3" border>分部客服</el-radio>
</el-radio-group>
</div>
<template #footer>
<div>
<el-button @click="closePermissionAddVisible()">取消</el-button>
<el-button type="primary" @click="throttledPermissionAdd()">
提交
</el-button>
</div>
</template>
</el-dialog> -->
<!-- 这是编辑用户权限弹窗 -->
<el-dialog
v-model="permissionEditVisible"
title="编辑用户权限"
width="800px"
:close-on-click-modal="false"
>
<el-descriptions
class="margin-top"
:column="2"
:size="size"
border
label-width="200px"
>
<el-dialog v-model="editVisible" title="编辑用户权限" width="800px" :close-on-click-modal="false">
<el-descriptions :column="2" :size="size" border label-width="200px">
<el-descriptions-item>
<template #label>
<div class="permissionVisible">
<el-icon>
<UserFilled />
</el-icon>
<el-icon><UserFilled /></el-icon>
员工精网号
</div>
</template>
{{ permissionEditObj.jwcode }}
{{ editObj.jwcode }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<div class="permissionVisible">
<el-icon>
<User />
</el-icon>
<el-icon><User /></el-icon>
员工姓名
</div>
</template>
{{ permissionEditObj.name }}
{{ editObj.name }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<div class="permissionVisible">
<el-icon :style="iconStyle">
<location />
</el-icon>
<el-icon><location /></el-icon>
所属地区
</div>
</template>
{{ permissionEditObj.area }}
{{ editObj.area }}
</el-descriptions-item>
<el-descriptions-item>
<template #label>
<div class="permissionVisible">
<el-icon>
<OfficeBuilding />
</el-icon>
<el-icon><OfficeBuilding /></el-icon>
部门
</div>
</template>
{{ permissionEditObj.store }}
{{ editObj.store }}
</el-descriptions-item>
</el-descriptions>
<el-divider>
<el-icon><star-filled /></el-icon>
</el-divider>
<div>
<span class="permissionVisible" style="margin-right: 20px"
>权限设置:</span
>
<el-radio-group v-model="permissionEditObj.permission">
<span class="permissionVisible" style="margin-right: 20px">权限设置:</span>
<el-radio-group v-model="editObj.permission">
<el-radio value="1" border>总部管理员</el-radio>
<el-radio value="5" border>分部经理</el-radio>
<el-radio value="2" border>分部财务</el-radio>
<el-radio value="3" border>分部客服</el-radio>
..............................................................................待补充
</el-radio-group>
</div>
<template #footer>
<div>
<el-button @click="closePermissionEditVisible()">取消</el-button>
<el-button type="primary" @click="throttledPermissionEdit()">
提交
</el-button>
<el-button @click="closeEdit()">取消</el-button>
<el-button type="primary" @click="throttledPermissionEdit()">提交</el-button>
</div>
</template>
</el-dialog>
</template>
<style scoped>
.permissionVisible {
font-size: 16px;
font-weight: bold;
@ -878,22 +481,10 @@ const handleCurrentChange = function (val) {
display: flex;
}
.status {
display: flex;
}
.head-card {
display: flex;
}
.head-card-element {
margin-right: 20px;
}
.head-card-btn {
margin-left: auto;
}
/* 新增样式让弹窗内容居中 */
.el-dialog__body {
display: flex;

1
src/views/recharge/coinRecharge.vue

@ -1227,7 +1227,6 @@ onMounted(async function () {
type="primary"
@click="getUser(addRecharge.jwcode)"
style="margin-left: 20px"
>查询</el-button
>
</el-form-item>

14
src/views/usergold/clientCountDetail.vue

@ -8,7 +8,7 @@ import moment from 'moment'
import API from '@/util/http'
import { writeFile, utils } from 'xlsx'
//
// aaaaaaaaaaaaaaaaaaaaa
const adminData = ref({})
const getAdminData = async function () {
try {
@ -479,13 +479,13 @@ const handleCurrentChange = function (val) {
}
//
const activeTab = ref('detailY')
// //
// const activeTab = ref('detailY')
//
const changeTab = (tabName) => {
activeTab.value = tabName
}
// //
// const changeTab = (tabName) => {
// activeTab.value = tabName
// }
//
onMounted(async function () {

1482
src/views/workspace/index.vue
File diff suppressed because it is too large
View File

Loading…
Cancel
Save