Browse Source

Merge branch 'refs/heads/milestone-20251104-现金二期' into lihui/feature-20251104165712-现金二期

lihui/feature-20251104165712-现金二期^2
lihui 2 weeks ago
parent
commit
897c1932ed
  1. 4
      src/components/MoneyManage/ProductSelect.vue
  2. 2
      src/router/index.js
  3. 438
      src/views/channelManage/cart/cart.vue
  4. 51
      src/views/moneyManage/receiveDetail/receiveFinance.vue
  5. 1045
      src/views/moneyManage/receiveDetail/receiveHead.vue
  6. 64
      src/views/moneyManage/receiveDetail/receiveManage.vue
  7. 20
      src/views/moneyManage/receiveDetail/receiveService.vue

4
src/components/MoneyManage/ProductSelect.vue

@ -135,8 +135,8 @@ watch(selectedValue, (newVal) => {
});
const AIProduct = ['AI机构追踪', 'AI机构出击', 'AI机构资金', 'AI机活跃度']
const superProduct = ['超级机构透视', '超级机构伏击', '超级机构猎杀', '超级机构脉搏', '超级机构罗盘']
const AIProduct = ['AI机构追踪', 'AI机构出击', 'AI机构资金', 'AI机活跃度','AI机构探测神器']
const superProduct = ['超级机构透视', '超级机构伏击', '超级机构猎杀', '超级机构脉搏', '超级机构罗盘','超级机构探测神器']
const InfoFee = ['静态信息费', '博股会员']
const menuData = [
{

2
src/router/index.js

@ -407,7 +407,7 @@ const routes = [
{
path: 'cart',
name: "cart",
component: () => import("../views/channelManage/cart/cart.vue"),
component: () => import("../views/noPermissionPage.vue"),
meta: { permissionId: 127 }
}
]

438
src/views/channelManage/cart/cart.vue

@ -25,44 +25,17 @@ const adminData = ref({})
//
const tableData = ref([])
// articleVideo
const beanConsumeArticle = ref({
//
const beanCart = ref({
jwcode: null,
dept: "",
type: "",
payMode: "",
articleId: "",
articleName: "",
author: "",
goodsName: "",
channelName: "",
liveName: "",
startTime: '',
endTime: '',
})
//
const channels = ref([])
//
const consumeTypes = ref([
{ label: '打赏', value: 9 },
{ label: '打赏', value: 10 },
{ label: '付费购买', value: 11 },
])
// payMode
const handlePayModeChange = (value) => {
beanConsumeArticle.value.payMode = value;
//
ConsumeSelectBy();
}
//------------------------
//
const activeTimeRange = ref('')
//
const handleDatePickerChange = () => {
activeTimeRange.value = ''
}
//
const getObj = ref({
pageNum: 1,
@ -73,21 +46,32 @@ const getObj = ref({
const total = ref(100)
//
const getTime = ref({
startTime: '',
endTime: ''
})
const getTime = ref({})
//
const dept = ref([])
//
const sortField = ref('')
const sortOrder = ref('')
//
const permanentBean = ref(0)
const freeBean = ref(0)
const totalNum = ref(0)
/*
====================方法=================================
*/
//
const getDept = async function () {
try {
//
const result = await request({
// url: '/general/dept',
url: '/beanConsume/getDept', // todo
url: '/beanConsume/getDept', //
data: { account: adminData.value.account }
})
console.log('请求地区列表成功', result)
@ -103,27 +87,28 @@ const getDept = async function () {
}
}
// //
// const filterChannel = (query) => {
// if (query) {
// return channels.value.filter(item => item.toLowerCase().includes(query.toLowerCase()));
// }
// return channels.value;
// };
//
const sortField = ref('')
const sortOrder = ref('')
//
const permanentBean = ref(0)
const freeBean = ref(0)
const totalNum = ref(0)
//
const channels = ref([])
//
const getChannel = async function () {
try {
const result = await request({
url: '/beanConsume/getLiveChannel', // todo
data: { account: adminData.value.account }
})
console.log('请求频道列表成功', result)
//
channels.value = result.data
console.log('频道数据', channels.value)
} catch (error) {
console.log('请求频道列表失败', error)
ElMessage({
type: 'error',
message: '获取频道列表失败,请稍后重试'
})
}
}
/*
====================方法=================================
*/
//
const getAdminData = async function () {
try {
@ -139,10 +124,9 @@ const getAdminData = async function () {
}
}
const ConsumeSelectBy = async function (val) {
//
const searchCart = async function () {
try {
//
if (typeof val === 'number') {
getObj.value.pageNum = val
@ -151,19 +135,16 @@ const ConsumeSelectBy = async function (val) {
if (getTime.value != null) {
if (getTime.value.startTime != '' && getTime.value.endTime != '') {
beanConsumeArticle.value.startTime = formatTime(getTime.value[0])
beanConsumeArticle.value.endTime = formatTime(getTime.value[1])
beanCart.value.startTime = formatTime(getTime.value[0])
beanCart.value.endTime = formatTime(getTime.value[1])
}
} else {
beanConsumeArticle.value.startTime = ''
beanConsumeArticle.value.endTime = ''
beanCart.value.startTime = ''
beanCart.value.endTime = ''
}
beanConsumeArticle.value.sortField = sortField.value
beanConsumeArticle.value.sortOrder = sortOrder.value
beanCart.value.sortField = sortField.value
beanCart.value.sortOrder = sortOrder.value
console.log('搜索参数_时间', beanConsumeArticle.value.startTime)
console.log('搜索参数1', getObj.value)
console.log('搜索参数2', beanConsumeArticle.value)
// POST
const result = await request({
@ -171,210 +152,134 @@ const ConsumeSelectBy = async function (val) {
data: {
pageNum: getObj.value.pageNum,
pageSize: getObj.value.pageSize,
beanConsumeArticle: {
...beanConsumeArticle.value,
jwcode: beanConsumeArticle.value.jwcode,
dept: beanConsumeArticle.value.dept,
payMode: beanConsumeArticle.value.payMode,
articleId: beanConsumeArticle.value.articleId,
articleName: beanConsumeArticle.value.articleName,
author: beanConsumeArticle.value.author,
startTime: beanConsumeArticle.value.startTime,
endTime: beanConsumeArticle.value.endTime,
sortField: beanConsumeArticle.value.sortField,
sortOrder: beanConsumeArticle.value.sortOrder,
beanCart: {
...beanCart.value,
sortField: sortField.value,
sortOrder: sortOrder.value,
}
}
})
console.log('请求成功4', sortField)
console.log('接口响应结果', result); //
if (result.code === 200 && result.data && result.data.list) {
// type payMode
const filteredList = result.data.list.filter(item => {
if (beanConsumeArticle.value.payMode === '0') {
return [9, 10].includes(Number(item.type));
} else if (beanConsumeArticle.value.payMode === '1') {
return Number(item.type) === 11;
}
return true;
});
tableData.value = filteredList;
}
//
// beanConsumeArticle.value payType 8
const sumConsumeParams = {
payType: 8, // payType 8
beanConsumeArticle: {
...beanConsumeArticle.value,
beanCart: {
...beanCart.value,
}
}
};
// POST
const resultTotalGold = await request({
url: '/beanConsume/sumConsumeGold',
data: sumConsumeParams
});
})
console.log("总计", resultTotalGold);
console.log("总计", resultTotalGold)
const data = resultTotalGold.data || resultTotalGold;
console.log('请求成功3', resultTotalGold.data)
console.log('permanentBean3', data.permanentBean)
const data = resultTotalGold.data || resultTotalGold
// permanentBeanfreeBeantotalNum
permanentBean.value = Number(data.permanentBean) || 0;
freeBean.value = Number(data.freeBean) || 0;
totalNum.value = Number(data.totalNum) || 0;
permanentBean.value = Number(data.permanentBean) || 0
freeBean.value = Number(data.freeBean) || 0
totalNum.value = Number(data.totalNum) || 0
//
total.value = result.data.total
console.log('total', total.value)
} catch (error) {
console.log('请求失败', error)
ElMessage({
type: 'error',
message: '搜索失败,请稍后重试'
})
}
}
//
const search = function () {
getObj.value.pageNum = 1
if (beanConsumeArticle.value.jwcode) {
if (beanConsumeLive.value.jwcode) {
const numRef = /^\d{1,9}$/;
if (!numRef.test(beanConsumeArticle.value.jwcode)) {
if (!numRef.test(beanConsumeLive.value.jwcode)) {
ElMessage.error('请检查精网号格式')
return
}
}
if (beanConsumeArticle.value.articleId) {
const numRef = /^\d{1,9}$/;
if (!numRef.test(beanConsumeArticle.value.articleId)) {
ElMessage.error('请检查文章ID格式')
return
}
searchCart()
}
ConsumeSelectBy()
}
//
const reset = function () {
console.log('文章/视频的重置')
beanConsumeArticle.value.jwcode = null
beanConsumeArticle.value.dept = ''
beanConsumeArticle.value.type = ''
beanConsumeArticle.value.payMode = ''
beanConsumeArticle.value.articleId = ''
beanConsumeArticle.value.articleName = ''
beanConsumeArticle.value.author = ''
beanConsumeArticle.value.startTime = ''
beanConsumeArticle.value.endTime = ''
//
const reset = function () {
console.log('重置搜索条件')
beanCart.value = {
jwcode: null,
dept: "",
goodsName: "",
channelName: "",
liveName: "",
startTime: '',
endTime: '',
}
sortField.value = ''
sortOrder.value = ''
getTime.value = {}
activeTimeRange.value = '' //
//
ConsumeSelectBy()
console.log(' beanConsumeArticle', beanConsumeArticle.value)
}
//
const getToday = function () {
const today = dayjs()
const startTime = today.startOf('day').format('YYYY-MM-DD HH:mm:ss')
const endTime = today.endOf('day').format('YYYY-MM-DD HH:mm:ss')
getTime.value = [startTime, endTime]
console.log('getTime', getTime.value)
activeTimeRange.value = 'today' //
ConsumeSelectBy()
//
searchCart()
}
//
const getYesterday = function () {
const today = dayjs()
const startTime = today.subtract(1, 'day').startOf('day').format('YYYY-MM-DD HH:mm:ss')
const endTime = today.subtract(1, 'day').endOf('day').format('YYYY-MM-DD HH:mm:ss')
getTime.value = [startTime, endTime]
console.log('getTime', getTime.value)
activeTimeRange.value = 'yesterday' //
ConsumeSelectBy()
//
const handleDatePickerChange = (value) => {
if (value && value.length === 2) {
beanCart.value.startTime = formatTime(value[0])
beanCart.value.endTime = formatTime(value[1])
} else {
beanCart.value.startTime = ''
beanCart.value.endTime = ''
}
// 7
const get7Days = function () {
const today = dayjs()
const startTime = today.subtract(6, 'day').startOf('day').format('YYYY-MM-DD HH:mm:ss')
const endTime = today.endOf('day').format('YYYY-MM-DD HH:mm:ss')
getTime.value = [startTime, endTime]
console.log('getTime', getTime.value)
activeTimeRange.value = '7days' //
ConsumeSelectBy()
}
//
const handleSortChange = (column) => {
console.log('排序字段:', column.prop)
console.log('排序方式:', column.order)
if (column.prop === 'beanNum') {
sortField.value = 'beanNum'
} else if (column.prop === 'consumeTime') {
sortField.value = 'consumeTime'
} else if (column.prop === 'buyBean') {
sortField.value = 'buyBean'
} else if (column.prop === 'freeBean') {
sortField.value = 'freeBean'
}
//
const allowedSortFields = ['beanNum', 'consumeTime']
if (allowedSortFields.includes(column.prop)) {
sortField.value = column.prop
sortOrder.value = column.order === 'ascending' ? 'DESC' : 'ASC'
ConsumeSelectBy()
searchCart()
}
}
const handlePageSizeChange = function (val) {
getObj.value.pageSize = val
ConsumeSelectBy()
searchCart()
}
const handleCurrentChange = function (val) {
getObj.value.pageNum = val
ConsumeSelectBy()
searchCart()
}
/*
====================计算属性=================================
*/
//
// const totalBean = computed(() => permanentBean.value + freeBean.value)
/*
====================监听=================================
*/
/*
====================挂载=================================
*/
const format3 = (num) => {
//
return num.toLocaleString('en-US')
}
onMounted(async function () {
await getAdminData()
await ConsumeSelectBy()
await getDept()
await getChannel()
await searchCart()
})
const exportExcel = async function () {
const params = { //
const params = {
...getObj.value,
"beanConsumeArticle": {
...beanConsumeArticle.value,
"beanCart": {
...beanCart.value,
sortField: sortField.value,
sortOrder: sortOrder.value,
},
@ -384,7 +289,10 @@ const exportExcel = async function () {
ElMessage.success('导出成功')
}
}
const exportListVisible = ref(false)
const exportList = ref([])
const exportListLoading = ref(false)
//
const openExportList = () => {
@ -392,20 +300,13 @@ const openExportList = () => {
exportListVisible.value = true
}
//
const exportList = ref([])
//
const exportListLoading = ref(false)
//
const getExportList = async () => {
exportListLoading.value = true
try {
const result = await API({ url: '/export/export' })
if (result.code === 200) {
const filteredData = result.data.filter(item => {
return item.type === 8; //8/
});
exportList.value = filteredData
ElMessage.success('导出成功')
} else {
ElMessage.error(result.msg || '获取导出列表失败')
}
@ -416,6 +317,7 @@ const getExportList = async () => {
exportListLoading.value = false
}
}
//
const downloadExportFile = (item) => {
if (item.state === 2) {
@ -427,34 +329,36 @@ const downloadExportFile = (item) => {
ElMessage.warning('文件还在导出中,请稍后再试')
}
}
//
const getTagType = (state) => {
switch (state) {
case 0:
return 'info';
return 'info'
case 1:
return 'primary';
return 'primary'
case 2:
return 'success';
return 'success'
case 3:
return 'danger';
return 'danger'
default:
return 'info';
return 'info'
}
}
//
const getTagText = (state) => {
switch (state) {
case 0:
return '待执行';
return '待执行'
case 1:
return '执行中';
return '执行中'
case 2:
return '执行完成';
return '执行完成'
case 3:
return '执行出错';
return '执行出错'
default:
return '未知状态';
return '未知状态'
}
}
</script>
@ -465,31 +369,28 @@ const getTagText = (state) => {
<div class="select">
<div class="selectRow">
<el-text class="text" size="large">精网号</el-text>
<el-input class="selectContent" v-model="beanConsumeArticle.jwcode" placeholder="请输入精网号" clearable />
<el-input class="selectContent" v-model="beanCart.jwcode" placeholder="请输入精网号" clearable />
</div>
<div class="selectRow">
<el-text class="text" size="large">所属地区</el-text>
<el-select class="selectContent" v-model="beanConsumeArticle.dept" placeholder="请选择地区" clearable>
<el-select class="selectContent" v-model="beanCart.dept" placeholder="请选择地区" clearable>
<el-option v-for="(item, index) in dept" :key="index" :label="item" :value="item" />
</el-select>
</div>
<div class="selectRow">
<el-text class="text" size="large">商品名称</el-text>
<el-select class="selectContent" style="width: 20px" v-model="beanConsumeArticle.payMode" placeholder="请选择类型"
clearable @change="handlePayModeChange">
<el-option label="打赏" value="0" />
<el-option label="付费购买" value="1" />
<el-option label="其他" value="2" />
</el-select>
<el-input class="selectContent" v-model="beanCart.goodsName" placeholder="请输入商品名称" clearable />
</div>
<div class="selectRow">
<el-text class="text">频道名称</el-text>
<el-select class="selectContent" placeholder="请选择频道" clearable filterable>
<el-option v-for="(item, index) in channels" :key="index" :label="item" :value="item" />
<div class="selectRow" style="width: 12vw;">
<el-text class="textB" size="large">频道</el-text>
<el-select class="selectContent" v-model="beanCart.channelName" placeholder="请选择频道" clearable
filterable allow-create default-first-option>
<el-option v-for="(item, index) in channels"
:key="index"
:label="item"
:value="item" />
</el-select>
</div>
</div>
</el-col>
@ -497,31 +398,34 @@ const getTagText = (state) => {
<div class="select">
<div class="selectRow" style="width: 33vw;">
<el-text class="text" size="large">下单时间</el-text>
<el-date-picker class="selectContent" v-model="getTime" type="datetimerange" range-separator=""
start-placeholder="起始时间" end-placeholder="结束时间" style="width:25vw" @change="handleDatePickerChange"
value-format="YYYY-MM-DD HH:mm:ss" :default-time="defaultTime" />
<div v-if="false">
<el-button @click="getToday()" :type="activeTimeRange === 'today' ? 'primary' : ''"></el-button>
<el-button @click="getYesterday()" :type="activeTimeRange === 'yesterday' ? 'primary' : ''"></el-button>
<el-button @click="get7Days()" :type="activeTimeRange === '7days' ? 'primary' : ''">近7天</el-button>
</div>
<el-date-picker
class="selectContent"
v-model="getTime"
type="datetimerange"
range-separator="至"
start-placeholder="起始时间"
end-placeholder="结束时间"
style="width:25vw"
@change="handleDatePickerChange"
value-format="YYYY-MM-DD HH:mm:ss"
/>
</div>
<div class="selectRow">
<el-text class="text" size="large">直播间名称</el-text>
<el-input class="selectContent" placeholder="请输入直播间" clearable />
<el-input class="selectContent" v-model="beanCart.liveName" placeholder="请输入直播间名称" clearable />
</div>
</div>
</el-col>
<el-col>
<div class="selectButton">
<el-button type="primary" @click="search()">查询</el-button>
<el-button type="primary" @click="exportExcel()">导出Excel</el-button>
<el-button type="primary" @click="search">查询</el-button>
<el-button type="primary" @click="exportExcel">导出Excel</el-button>
<el-button type="primary" @click="openExportList">查看导出列表</el-button>
<el-button type="success" @click="reset()">重置</el-button>
<el-button type="success" @click="reset">重置</el-button>
</div>
</el-col>
</el-card>
<el-card class="card2">
<div class="goldStatistics">
金豆总数{{ format3(Math.abs(permanentBean + freeBean)) }}&nbsp;&nbsp;&nbsp;&nbsp;
@ -529,8 +433,13 @@ const getTagText = (state) => {
免费金豆数{{ format3(Math.abs(freeBean)) }}
</div>
<div style="overflow-y: auto">
<el-table :data="tableData" style="width: 82vw" height="64vh" @sort-change="handleSortChange"
:row-style="{ height: '50px' }">
<el-table
:data="tableData"
style="width: 82vw"
height="64vh"
@sort-change="handleSortChange"
:row-style="{ height: '50px' }"
>
<el-table-column type="index" label="序号" width="110px" fixed="left">
<template #default="scope">
<span>{{
@ -543,10 +452,10 @@ const getTagText = (state) => {
<!-- 固定精网号列 -->
<el-table-column prop="jwcode" label="精网号" width="140px" fixed="left" />
<el-table-column prop="dept" label="地区" width="140px" />
<el-table-column prop="type" label="商品名称" width="160px"/>
<el-table-column prop="goodsName" label="商品名称" width="160px"/>
<el-table-column prop="beanNum" label="金币数量" sortable="custom" width="140px" />
<el-table-column prop="buyBean" label="频道名称" width="160px" show-overflow-tooltip />
<el-table-column prop="freeBean" label="直播间名称" width="160px" show-overflow-tooltip />
<el-table-column prop="channelName" label="频道名称" width="160px" show-overflow-tooltip />
<el-table-column prop="liveName" label="直播间名称" width="160px" show-overflow-tooltip />
<el-table-column prop="consumeTime" label="下单时间" sortable="custom" width="180px">
<template #default="scope">
{{ formatTime(scope.row.consumeTime) }}
@ -557,9 +466,15 @@ const getTagText = (state) => {
<!-- 分页 -->
<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>
@ -581,8 +496,7 @@ const getTagText = (state) => {
</el-table-column>
<el-table-column label="操作">
<template #default="scope">
<el-button type="primary" size="small" @click="downloadExportFile(scope.row)"
:disabled="scope.row.state !== 2">
<el-button type="primary" size="small" @click="downloadExportFile(scope.row)" :disabled="scope.row.state !== 2">
下载
</el-button>
</template>
@ -663,10 +577,6 @@ const getTagText = (state) => {
width: 5vw;
font-size: 15px;
}
.textB {
width: 7vw;
font-size: 15px;
}
.selectContent {
flex: 1;

51
src/views/moneyManage/receiveDetail/receiveFinance.vue

@ -162,8 +162,8 @@
v-if="activeTab == 'pass' || activeTab == 'done'" width="180px" />
<el-table-column prop="remark" label="备注" v-if="activeTab != 'reject'" width="150px"
show-overflow-tooltip></el-table-column>
<el-table-column prop="status" fixed="right" label="订单状态" v-if="activeTab == 'done'" width="150px"
show-overflow-tooltip>
<el-table-column prop="status" fixed="right" label="订单状态" v-if="activeTab == 'done'"
width="150px" show-overflow-tooltip>
<template #default="scope">
<span style="color: rgb(242, 84, 83);" v-if="scope.row.status == 6">退款</span>
<span style="color: rgb(127,204,133);" v-else>正常</span>
@ -543,12 +543,12 @@
<div style=" display: flex; align-items: center;justify-content: center; ">
<span style="color: #999999; white-space: nowrap;">永久金币</span>
<el-input style="padding-right: 10px; height: 30px; width: 70px;"
v-model="refundCoinData.permanentGold" dsabled />
v-model="refundFormData.partRefundGold" dsabled />
</div>
<div style=" display: flex; align-items: center;justify-content: center; ">
<span style="color: #999999; white-space: nowrap;">免费金币</span>
<el-input style="padding-right: 10px; height: 30px; width: 70px;"
v-model="refundCoinData.freeGold" />
v-model="refundFormData.partRefundFree" />
</div>
</div>
<div class="add-item">
@ -650,16 +650,8 @@ const openRefundDialog = () => {
const closeRefundForm = () => {
refundDialog.value = false
refundFormData.value = {}
refundCoinData.value = {
permanentGold: 0,
freeGold: 0
}
}
const refundCoinData = ref({
permanentGold: 0,
freeGold: 0
})
const isRefundGold = ref(false)
const ifRefundGold = () => {
if (refundFormData.value.goodsName === '金币充值') {
@ -763,10 +755,6 @@ const getlist = async () => {
const resetRefund = () => {
refundFormData.value.refundModel = ''
refundFormData.value.refundReason = ''
refundCoinData.value = {
permanentGold: 0,
freeGold: 0
}
}
//退
const submitRefund = async () => {
@ -781,24 +769,27 @@ const submitRefund = async () => {
if (!refundFormData.value.refundReason) {
return ElMessage.error('请输入退款原因');
}
if(refundFormData.value.refundReason){
if (refundFormData.value.refundModel == 0) {
refundFormData.value.partRefundGold = refundFormData.value.permanentGold,
refundFormData.value.partRefundFree = refundFormData.value.freeGold
}
const result = await request({
url: '/Money/addOnline',
data: {
jwcode: refundFormData.value.jwcode, //
name: refundFormData.value.name, //
market: refundFormData.value.marketName, //
submitterMarket:adminData.value.markets,
jwcode: refundFormData.value.jwcode,
name: refundFormData.value.name,
market: refundFormData.value.marketName,
submitterId: adminData.value.id,
remark: refundFormData.value.remark, //
refundReason: refundFormData.value.refundReason, // 退-
refundModel: refundFormData.value.refundModel, // 退0-1-
id: refundFormData.value.id, //id
submitterMarket: adminData.value.markets,
remark: refundFormData.value.remark,
refundReason: refundFormData.value.refundReason,
refundModel: refundFormData.value.refundModel,
id: refundFormData.value.id,
orderCode: refundFormData.value.orderCode,
permanentGold: (refundCoinData.value.permanentGold) * 100 || 0,
freeGold: (refundCoinData.value.freeGold) * 100 || 0
permanentGold: (refundFormData.value.permanentGold) * 100 || 0,
freeGold: (refundFormData.value.freeGold) * 100 || 0,
partRefundGold: (refundFormData.value.partRefundGold) * 100 || 0,
partRefundFree: (refundFormData.value.partRefundFree) * 100 || 0,
}
})
if (result.code == 200) {
@ -1102,9 +1093,9 @@ onMounted(async () => {
await getlist();
//
if (!hasMenuPermission(menuTree.value, 78)) {
if (!hasMenuPermission(menuTree.value, 67)) {
ElMessageBox.alert(
'您暂无地区财务操作权限,请联系管理员',
'您暂无该页面操作权限,请联系管理员',
'权限提示',
{ type: 'error' }
).then(() => {

1045
src/views/moneyManage/receiveDetail/receiveHead.vue
File diff suppressed because it is too large
View File

64
src/views/moneyManage/receiveDetail/receiveManage.vue

@ -162,8 +162,8 @@
v-if="activeTab == 'pass' || activeTab == 'done'" width="180px" />
<el-table-column prop="remark" label="备注" v-if="activeTab != 'reject'" width="150px"
show-overflow-tooltip></el-table-column>
<el-table-column prop="status" fixed="right" label="订单状态" v-if="activeTab == 'done'" width="150px"
show-overflow-tooltip>
<el-table-column prop="status" fixed="right" label="订单状态" v-if="activeTab == 'done'"
width="150px" show-overflow-tooltip>
<template #default="scope">
<span style="color: rgb(242, 84, 83);" v-if="scope.row.status == 6">退款</span>
<span style="color: rgb(127,204,133);" v-else>正常</span>
@ -543,12 +543,12 @@
<div style=" display: flex; align-items: center;justify-content: center; ">
<span style="color: #999999; white-space: nowrap;">永久金币</span>
<el-input style="padding-right: 10px; height: 30px; width: 70px;"
v-model="refundCoinData.permanentGold" dsabled />
v-model="refundFormData.partRefundGold" dsabled />
</div>
<div style=" display: flex; align-items: center;justify-content: center; ">
<span style="color: #999999; white-space: nowrap;">免费金币</span>
<el-input style="padding-right: 10px; height: 30px; width: 70px;"
v-model="refundCoinData.freeGold" />
v-model="refundFormData.partRefundFree" />
</div>
</div>
<div class="add-item">
@ -650,16 +650,8 @@ const openRefundDialog = () => {
const closeRefundForm = () => {
refundDialog.value = false
refundFormData.value = {}
refundCoinData.value = {
permanentGold: 0,
freeGold: 0
}
}
const refundCoinData = ref({
permanentGold: 0,
freeGold: 0
})
const isRefundGold = ref(false)
const ifRefundGold = () => {
if (refundFormData.value.goodsName === '金币充值') {
@ -763,10 +755,6 @@ const getlist = async () => {
const resetRefund = () => {
refundFormData.value.refundModel = ''
refundFormData.value.refundReason = ''
refundCoinData.value = {
permanentGold: 0,
freeGold: 0
}
}
//退
const submitRefund = async () => {
@ -781,35 +769,27 @@ const submitRefund = async () => {
if (!refundFormData.value.refundReason) {
return ElMessage.error('请输入退款原因');
}
if (refundFormData.value.refundModel == 0) {
refundFormData.value.partRefundGold = refundFormData.value.permanentGold,
refundFormData.value.partRefundFree = refundFormData.value.freeGold
}
const result = await request({
url: '/Money/addOnline',
data: {
jwcode: refundFormData.value.jwcode, //
name: refundFormData.value.name, //
market: refundFormData.value.marketName, //
activity: refundFormData.value.activity, //
bankCode: refundFormData.value.bankCode, //
goodsName: refundFormData.value.goodsName, //
goodNum: refundFormData.value.goodNum, // 0
paymentCurrency: refundFormData.value.paymentCurrency, //
paymentAmount: (refundFormData.value.paymentAmount) * 100, //
receivedCurrency: refundFormData.value.receivedCurrency, //
receivedAmount: (refundFormData.value.receivedAmount) * 100, //
handlingCharge: (refundFormData.value.handlingCharge) * 100, //
receivedMarket: refundFormData.value.receivedMarket, //
payType: refundFormData.value.payType, //
payTime: refundFormData.value.payTime, // yyyy-MM-dd HH:mm:ss
receivedTime: refundFormData.value.receivedTime, // yyyy-MM-dd HH:mm:ss
areaServise: adminData.value.adminName, //
jwcode: refundFormData.value.jwcode,
name: refundFormData.value.name,
market: refundFormData.value.marketName,
submitterId: adminData.value.id,
voucher: refundFormData.value.voucher, // URL
remark: refundFormData.value.remark, //
refundReason: refundFormData.value.refundReason, // 退-
refundModel: refundFormData.value.refundModel, // 退0-1-
id: refundFormData.value.id, //id
submitterMarket: adminData.value.markets,
remark: refundFormData.value.remark,
refundReason: refundFormData.value.refundReason,
refundModel: refundFormData.value.refundModel,
id: refundFormData.value.id,
orderCode: refundFormData.value.orderCode,
permanentGold: (refundCoinData.value.permanentGold) * 100 || 0,
freeGold: (refundCoinData.value.freeGold) * 100 || 0
permanentGold: (refundFormData.value.permanentGold) * 100 || 0,
freeGold: (refundFormData.value.freeGold) * 100 || 0,
partRefundGold: (refundFormData.value.partRefundGold) * 100 || 0,
partRefundFree: (refundFormData.value.partRefundFree) * 100 || 0,
}
})
if (result.code == 200) {
@ -1113,9 +1093,9 @@ onMounted(async () => {
await getlist();
//
if (!hasMenuPermission(menuTree.value, 78)) {
if (!hasMenuPermission(menuTree.value, 79)) {
ElMessageBox.alert(
'您暂无地区财务操作权限,请联系管理员',
'您暂无该页面操作权限,请联系管理员',
'权限提示',
{ type: 'error' }
).then(() => {

20
src/views/moneyManage/receiveDetail/receiveService.vue

@ -139,9 +139,9 @@
</div>
<div class="pagination">
<el-pagination background :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize" :page-sizes="[5, 10, 20, 50, 100]"
layout="total, sizes, prev, pager, next, jumper" :total="total"
@size-change="handlePagination('size', $event)"
<el-pagination background :current-page="pageInfo.pageNum" :page-size="pageInfo.pageSize"
:page-sizes="[5, 10, 20, 50, 100]" layout="total, sizes, prev, pager, next, jumper"
:total="total" @size-change="handlePagination('size', $event)"
@current-change="handlePagination('page', $event)"></el-pagination>
</div>
</el-card>
@ -302,8 +302,8 @@
<el-text style="width:4vw;">产品数量</el-text>
<el-input style="padding-right: 10px; width:6.5vw;" v-model="refundFormData.goodNum"
placeholder="请输入产品数量" disabled />
<CurrencySelect disabled v-model="refundFormData.numUnit" :items="numUnitList" style="width: 3.5vw;"
placeholder="单位" @change="handleCurrencyChange" />
<CurrencySelect disabled v-model="refundFormData.numUnit" :items="numUnitList"
style="width: 3.5vw;" placeholder="单位" @change="handleCurrencyChange" />
</div>
<div v-show="isRefundGold" style="margin-bottom: 15px; ">
<div style=" display: flex; ">
@ -364,11 +364,13 @@
<el-radio value="1">部分退款</el-radio>
</el-radio-group>
</div>
<div class="add-item" v-show="refundFormData.goodsName === '金币充值' && refundFormData.refundModel === '1'">
<div class="add-item"
v-show="refundFormData.goodsName === '金币充值' && refundFormData.refundModel === '1'">
<el-text style="width:4vw;">永久金币</el-text>
<el-input v-model="refundFormData.partRefundGold" style="width:5vw;" />&nbsp;&nbsp;
</div>
<div class="add-item" v-show="refundFormData.goodsName === '金币充值' && refundFormData.refundModel === '1'">
<div class="add-item"
v-show="refundFormData.goodsName === '金币充值' && refundFormData.refundModel === '1'">
<el-text style="width:4vw;">免费金币</el-text>
<el-input v-model="refundFormData.partRefundFree" style="width:5vw;" />&nbsp;&nbsp;
</div>
@ -819,6 +821,10 @@ const closeRefundForm = () => {
// 退
const submitRefund = async () => {
try {
if (refundFormData.value.refundModel == 0) {
refundFormData.value.partRefundGold = refundFormData.value.permanentGold,
refundFormData.value.partRefundFree = refundFormData.value.freeGold
}
const result = await request({
url: '/Money/add',
data: {

Loading…
Cancel
Save