Browse Source

Merge branch 'milestone-20251104-现金二期' of http://39.101.133.168:8807/huangqizhen/gold-vue into milestone-20251104-现金二期

lihuilin/feature-20251104102812-现金二期
zhangrenyuan 1 week ago
parent
commit
ceb13a35eb
  1. 13
      src/views/activityManage/activity.vue
  2. 31
      src/views/moneyManage/executor/executor.vue
  3. 3
      src/views/moneyManage/receiveDetail/receiveFinance.vue
  4. 3
      src/views/moneyManage/receiveDetail/receiveManage.vue
  5. 14
      src/views/moneyManage/receiveDetail/receiveService.vue
  6. 2
      src/views/moneyManage/receiveDetail/utils/staticData.js
  7. 303
      src/views/moneyManage/refundDetail/refundCharge.vue
  8. 69
      src/views/moneyManage/refundDetail/refundFinance.vue
  9. 318
      src/views/moneyManage/refundDetail/refundHeader.vue
  10. 41
      src/views/moneyManage/refundDetail/refundService.vue

13
src/views/activityManage/activity.vue

@ -85,8 +85,7 @@
<el-dialog v-model="showAdd" width="20vw" draggable align-center style="background-color: rgb(243,250,254);">
<div class="add-item">
<el-text size="large">活动名称</el-text>
<el-input v-model="addForm.activityName" style="width: 12vw" placeholder="请输入活动名称" maxlength="100"
clearable />
<el-input v-model="addForm.activityName" style="width: 12vw" placeholder="请输入活动名称" maxlength="200" clearable />
</div>
<div class="add-item">
<el-text size="large">业绩归属</el-text>
@ -119,8 +118,7 @@
<el-dialog v-model="showEdit" width="20vw" draggable align-center style="background-color: rgb(243,250,254);">
<div class="edit-item">
<el-text size="large">活动名称</el-text>
<el-input v-model="editForm.activityName" style="width: 12vw" placeholder="请输入活动名称" maxlength="100"
clearable />
<el-input v-model="editForm.activityName" style="width: 12vw" placeholder="请输入活动名称" maxlength="200" clearable />
</div>
<div class="edit-item">
@ -166,8 +164,8 @@ const { adminData, menuTree } = storeToRefs(adminStore)
import ConfirmDialog from '@/components/dialogs/ConfirmDialog.vue'
import _ from 'lodash'
//
const activityNameReg = /^[-a-zA-Z0-9\u4e00-\u9fa5,。!?、;:“”‘’()《》【】——~,.!?:;'"()\[\]_&+=]{0,100}$/;
const activityNameReg = /^[\u4e00-\u9fa5a-zA-Z0-9,。!?、;:“”()‘’《》【】{}——~,.!?:;'--()""\[\]_&+=]+$/;
// --
const tableData = ref([])
const pagination = ref({
pageNum: 1,
@ -299,7 +297,8 @@ const handleEdit = async function () {
ElMessage.error('请选择结束时间')
return
}
if (editForm.value.businessBelong === '客户归属地') {
if(editForm.value.businessBelong === '客户归属地'){
editForm.value.area = []
}

31
src/views/moneyManage/executor/executor.vue

@ -123,6 +123,7 @@
</el-table-column>
</el-table>
<el-pagination v-model:current-page="pagination.pageNum" v-model:page-size="pagination.pageSize"
@size-change="handlePageSizeChange" @current-change="handleCurrentChange"
layout="total, sizes, prev, pager, next, jumper" :total="pagination.total" style="margin-top: 1vh;" />
</el-card>
@ -166,7 +167,7 @@
</div>
<div class="dialog-item">
<el-text style="width:4vw;">付款时间</el-text>
<el-date-picker v-model="editRow.payTime" type="datetime" style="width:10vw;" disabled />
<el-input v-model="editRow.payTime" style="width:10vw;" disabled />
</div>
<div class="dialog-item">
<el-text style="width:4vw;">提交人</el-text>
@ -174,14 +175,14 @@
</div>
<div class="dialog-item">
<el-text style="width:4vw;">转账凭证</el-text>
<img v-if="editRow.voucher" :src="editRow.voucher" style="width: 80px; height: 80px; object-fit: cover;">
<img v-if="editRow.payVoucher" :src="editRow.payVoucher" style="width: 80px; height: 80px; object-fit: cover;">
<div v-else>
无转账凭证
</div>
</div>
<div class="dialog-item">
<el-text style="width:4vw;">备注</el-text>
<el-input v-model="editRow.remark" style="width:10vw;" :row="3" disabled maxlength="100" type="textarea"
<el-input v-model="editRow.payRemark" style="width:10vw;" :row="3" disabled maxlength="100" type="textarea"
show-word-limit clearable />
</div>
</div>
@ -208,7 +209,7 @@
clearable />
</div>
<div class="dialog-item">
<el-text style="width:4vw;">支付凭证</el-text>
<el-text style="width:4vw;">退款截图</el-text>
<el-upload ref="uploadRef" :http-request="customUpload" list-type="picture-card" :auto-upload="false"
:on-change="handleImageChange" :before-upload="beforeUpload" :show-file-list="false">
<template #default>
@ -279,6 +280,10 @@ const getRefund = async function () {
statusesParam.value = [40, 41]
}
if (searchForm.value.goodsName) {
searchForm.value.goodsName = searchForm.value.goodsName[searchForm.value.goodsName.length - 1]
}
const params = {
pageNum: pagination.value.pageNum,
pageSize: pagination.value.pageSize,
@ -286,7 +291,7 @@ const getRefund = async function () {
jwcode: searchForm.value.jwcode,
name: searchForm.value.name,
markets: searchForm.value.markets,
goodsNames: searchForm.value.goodsName,
goodsName: searchForm.value.goodsName,
statuses: statusesParam.value,//1012
// 2022
// 3032
@ -342,7 +347,7 @@ const submitRefund = async function () {
hideEditDialog()
getRefund()
} else {
ElMessage.error(result.data.msg || '提交失败')
ElMessage.error(result.msg || '提交失败')
}
} catch (error) {
ElMessage.error(error.message || '提交失败')
@ -379,6 +384,12 @@ const getMarket = async function () {
}
const showEditDialog = (row) => {
editRow.value = row
editForm.value.refundCurrency = ''
editForm.value.refundAmount = ''
editForm.value.channels = []
editForm.value.refundTime = ''
editForm.value.refundRemark = ''
editForm.value.imageUrl = ''
showEdit.value = true
}
const hideEditDialog = () => {
@ -548,6 +559,14 @@ const reset = function () {
dateRange.value = []
getRefund()
}
const handlePageSizeChange = function (val) {
pagination.value.pageSize = val
getRefund()
}
const handleCurrentChange = function (val) {
pagination.value.pageNum = val
getRefund()
}
onMounted(() => {
console.log('???????????????????', adminData.value)
getRefund()

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

@ -941,6 +941,7 @@ const submitRefund = async () => {
freeGold: (refundFormData.value.freeGold) * 100 || 0,
partRefundGold: (refundFormData.value.partRefundGold) * 100 || 0,
partRefundFree: (refundFormData.value.partRefundFree) * 100 || 0,
handlingCharge: (refundFormData.value.handlingCharge) * 100 || 0,
}
})
if (result.code == 200) {
@ -1116,7 +1117,7 @@ const submitEditForm = async () => {
url: '/cashCollection/complete',
data: {
orderCode: editFormData.value.orderCode,
handlingCharge: editFormData.value.handlingCharge * 100 || null, //
handlingCharge: editFormData.value.handlingCharge * 100 , //
paymentCurrency: CurrencyForId(editFormData.value.paymentCurrency),
paymentAmount: editFormData.value.paymentAmount * 100, //
receivedCurrency: CurrencyForId(editFormData.value.receivedCurrency),

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

@ -941,6 +941,7 @@ const submitRefund = async () => {
freeGold: (refundFormData.value.freeGold) * 100 || 0,
partRefundGold: (refundFormData.value.partRefundGold) * 100 || 0,
partRefundFree: (refundFormData.value.partRefundFree) * 100 || 0,
handlingCharge: (refundFormData.value.handlingCharge) * 100 || 0,
}
})
if (result.code == 200) {
@ -1116,7 +1117,7 @@ const submitEditForm = async () => {
url: '/cashCollection/complete',
data: {
orderCode: editFormData.value.orderCode,
handlingCharge: editFormData.value.handlingCharge * 100 || null, //
handlingCharge: editFormData.value.handlingCharge * 100 , //
paymentCurrency: CurrencyForId(editFormData.value.paymentCurrency),
paymentAmount: editFormData.value.paymentAmount * 100, //
receivedCurrency: CurrencyForId(editFormData.value.receivedCurrency),

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

@ -542,7 +542,7 @@ const handlePagination = (type, val) => {
// ===================== / =====================
const addFormisible = ref(false) //
const addFormData = ref({ name: '', market: '', permanentGold: 0, freeGold: 0, goodsName: '' }) //
const addFormData = ref({ name: '', market: '', goodsName: '' }) //
const addFormRef = ref(null) //
const addOrEdit = ref(0) // 1=2=
const isGold = ref(false) //
@ -559,7 +559,9 @@ const ifGold = () => {
numUnitList.value = ['个', '年', '月']
const selectItems = ["AI机构追踪", "AI机构出击", "AI机构资金", "AI机构活跃度", "超级机构透视", "超级机构伏击", "超级机构猎杀", "超级机构脉搏", "超级机构罗盘", 'HC信息费', 'HC信息费', 'AI机构探测神器', '超级机构探测神器']
if (selectItems.includes(addFormData.value.goodsName)) {
addFormData.value.numUnit = ''
if (addOrEdit.value == 1) {
addFormData.value.numUnit = ''
}
numUnitList.value = ['年', '月']
} else if (addFormData.value.goodsName == '静态信息费') {
addFormData.value.numUnit = '年'
@ -695,7 +697,7 @@ const handleAddForm = async () => {
submitterId: adminData.value.id,
permanentGold: (addFormData.value.permanentGold || 0) * 100,
freeGold: (addFormData.value.freeGold || 0) * 100,
goodNum: addFormData.value.goodNum || 0,
goodNum: addFormData.value.goodNum || addFormData.value.permanentGold || 0,
paymentCurrency: CurrencyForId(addFormData.value.paymentCurrency) || '',
receivedMarket: MarketNameForId(addFormData.value.receivedMarket) || '',
paymentAmount: (addFormData.value.paymentAmount) * 100,
@ -723,6 +725,11 @@ const handleEditForm = async () => {
ElMessage.error(testGold().message);
return;
}
if(typeof addFormData.value.activity == 'string'){
console.log('转换前:', addFormData.value.activity);
addFormData.value.activity = activityList.value.find(item => item.activityName === addFormData.value.activity).id
}
//
if (!isGold.value) {
if (!addFormData.value.goodNum) {
@ -954,6 +961,7 @@ const submitRefund = async () => {
freeGold: (refundFormData.value.freeGold) * 100 || 0,
partRefundGold: (refundFormData.value.partRefundGold) * 100 || 0,
partRefundFree: (refundFormData.value.partRefundFree) * 100 || 0,
handlingCharge:(refundFormData.value.handlingCharge) * 100 || 0,
}
})
if (result.code == 200) {

2
src/views/moneyManage/receiveDetail/utils/staticData.js

@ -229,7 +229,7 @@ export const CurrencyForId = (name) => {
return 6
} else if (name == '越南盾(VDN)') {
return 7
} else if (name == '越南盾(VDN)') {
} else if (name == '韩元(KRW)') {
return 8
} else {
return name

303
src/views/moneyManage/refundDetail/refundCharge.vue

@ -15,7 +15,7 @@
<el-cascader v-model="searchForm.goodsName" :options="productList" style="width: 10vw;"
placeholder="请选择产品名称" clearable />
</div>
<div class="item1">
<div class="item1" v-if="adminData.markets === '总部'">
<el-text size="large" style="width:4vw;">所属地区</el-text>
<el-cascader style="width: 9vw;" v-model="searchForm.markets" :options="market" placeholder="请选择所属地区"
clearable @change="handleMarketChange" />
@ -116,6 +116,14 @@
</el-select>
</div>
<div class="top-item">
<el-text style="width:4vw;" size="small">永久金币</el-text>
<el-input v-model="auditRow.permanentGold" size="small" style="width:10vw;" disabled />&nbsp;
</div>
<div class="top-item">
<el-text style="width:4vw;" size="small">免费金币</el-text>
<el-input v-model="auditRow.freeGold" size="small" style="width:10vw;" disabled />&nbsp;
</div>
<div class="top-item">
<el-text style="width:4vw;" size="small">退款理由</el-text>
<el-input v-model="auditRow.refundReason" size="small" style="width:10vw;" :rows="3" maxlength="100"
show-word-limit type="textarea" disabled />
@ -137,20 +145,20 @@
<el-input v-model="auditRow.goodsName" size="small" style="width:10vw;" disabled />
</div>
<div class="center-item">
<el-text style="width:4vw;" size="small">付款金额</el-text>
<el-input v-model="auditRow.paymentAmount" size="small" style="width:10vw;" disabled />
<el-text style="width:4vw;" size="small">付款币种</el-text>
<el-input v-model="auditRow.paymentCurrency" size="small" style="width:10vw;" disabled />
</div>
<div class="center-item">
<el-text style="width:4vw;" size="small">到账金额</el-text>
<el-input v-model="auditRow.receivedAmount" size="small" style="width:10vw;" disabled />
<el-text style="width:4vw;" size="small">付款金额</el-text>
<el-input v-model="auditRow.paymentAmount" size="small" style="width:10vw;" disabled />
</div>
<div class="center-item">
<el-text style="width:4vw;" size="small">支付方式</el-text>
<el-input v-model="auditRow.payType" size="small" style="width:10vw;" disabled />
<el-text style="width:4vw;" size="small">付款时间</el-text>
<el-input v-model="auditRow.payTime" size="small" style="width:10vw;" disabled />
</div>
<div class="center-item">
<el-text style="width:4vw;">转账凭证</el-text>
<img v-if="auditRow.voucher" :src="auditRow.voucher"
<img v-if="auditRow.payVoucher" :src="auditRow.payVoucher"
style="width: 80px; height: 80px; object-fit: cover;">
<div v-else>
无转账凭证
@ -167,28 +175,28 @@
<el-input v-model="auditRow.activity" size="small" style="width:10vw;" disabled />
</div>
<div class="right-item">
<el-text style="width:4vw;" size="small">付款币种</el-text>
<el-input v-model="auditRow.paymentCurrency" size="small" style="width:10vw;" disabled />
<el-text style="width:4vw;" size="small">支付方式</el-text>
<el-input v-model="auditRow.payType" size="small" style="width:10vw;" disabled />
</div>
<div class="right-item">
<el-text style="width:4vw;" size="small">到账币种</el-text>
<el-input v-model="auditRow.receivedCurrency" size="small" style="width:10vw;" disabled />
</div>
<div class="right-item">
<el-text style="width:4vw;" size="small">手续费</el-text>
<el-input v-model="auditRow.handlingCharge" size="small" style="width:10vw;" disabled />
<el-text style="width:4vw;" size="small">到账金额</el-text>
<el-input v-model="auditRow.receivedAmount" size="small" style="width:10vw;" disabled />
</div>
<div class="right-item">
<el-text style="width:4vw;" size="small">付款时间</el-text>
<el-input v-model="auditRow.payTime" size="small" style="width:10vw;" disabled />
<el-text style="width:4vw;" size="small">到账时间</el-text>
<el-input v-model="auditRow.receivedTime" size="small" style="width:10vw;" disabled />
</div>
<div class="right-item">
<el-text style="width:4vw;" size="small">提交人</el-text>
<el-input v-model="auditRow.submitter" size="small" style="width:10vw;" disabled />
<el-text style="width:4vw;" size="small">手续费</el-text>
<el-input v-model="auditRow.handlingCharge" size="small" style="width:10vw;" disabled />
</div>
<div class="right-item">
<el-text style="width:4vw;" size="small">到账时间</el-text>
<el-input v-model="auditRow.receivedTime" size="small" style="width:10vw;" disabled />
<el-text style="width:4vw;" size="small">提交人</el-text>
<el-input v-model="auditRow.submitter" size="small" style="width:10vw;" disabled />
</div>
<div class="right-item">
<el-text style="width:4vw;" size="small">备注</el-text>
@ -256,8 +264,8 @@
<template #icon>
<img v-if="currentStep === 4" src="@/assets/images/refund-rejected.png" alt="已驳回">
<img v-else-if="currentStep === 3" src="@/assets/images/refund-approving.png" alt="待审核">
<img v-else-if="currentStep > 3 && currentStep != 4" src="@/assets/images/refund-approved.png"
alt="已审核">
<img v-else-if="currentStep > 3 && currentStep != 4"
src="@/assets/images/refund-approved.png" alt="已审核">
<img v-else-if="currentStep < 3" src="@/assets/images/refund-waiting.png" alt="未开始">
</template>
</el-step>
@ -271,8 +279,8 @@
<template #icon>
<img v-if="currentStep === 6" src="@/assets/images/refund-rejected.png" alt="已驳回">
<img v-else-if="currentStep === 5" src="@/assets/images/refund-approving.png" alt="待审核">
<img v-else-if="currentStep > 5 && currentStep != 6" src="@/assets/images/refund-approved.png"
alt="已审核">
<img v-else-if="currentStep > 5 && currentStep != 6"
src="@/assets/images/refund-approved.png" alt="已审核">
<img v-else-if="currentStep < 5" src="@/assets/images/refund-waiting.png" alt="未开始">
</template>
</el-step>
@ -298,35 +306,35 @@
</el-dialog>
<el-dialog v-model="exportListVisible" title="导出列表" width="80%">
<el-table :data="exportList" style="width: 100% ;height: 60vh;" :loading="exportListLoading">
<el-table-column prop="fileName" label="文件名" />
<el-table-column prop="state" label="状态">
<template #default="scope">
<el-tag :type="getTagType(scope.row.state)" :effect="scope.row.state === 3 ? 'light' : 'plain'">
{{ getTagText(scope.row.state) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="createTime" label="创建时间">
<template #default="scope">
{{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
</template>
</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>
<el-table :data="exportList" style="width: 100% ;height: 60vh;" :loading="exportListLoading">
<el-table-column prop="fileName" label="文件名" />
<el-table-column prop="state" label="状态">
<template #default="scope">
<el-tag :type="getTagType(scope.row.state)" :effect="scope.row.state === 3 ? 'light' : 'plain'">
{{ getTagText(scope.row.state) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="createTime" label="创建时间">
<template #default="scope">
{{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
</template>
</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>
</template>
</el-table-column>
</el-table>
<template #footer>
<div class="dialog-footer">
<el-button text @click="exportListVisible = false">关闭</el-button>
</div>
</template>
</el-table-column>
</el-table>
<template #footer>
<div class="dialog-footer">
<el-button text @click="exportListVisible = false">关闭</el-button>
</div>
</template>
</el-dialog>
</el-dialog>
</template>
<script setup>
import { ref, onMounted } from 'vue'
@ -476,6 +484,11 @@ const getRefund = async function () {
} else {
statuses.value = [20, 22, 30, 32, 40, 41]
}
if (searchForm.value.goodsName) {
searchForm.value.goodsName = searchForm.value.goodsName[searchForm.value.goodsName.length - 1]
}
const params = {
pageNum: pagination.value.pageNum,
pageSize: pagination.value.pageSize,
@ -483,7 +496,7 @@ const getRefund = async function () {
jwcode: searchForm.value.jwcode,//
name: searchForm.value.name,//
markets: searchForm.value.markets,//
goodsNames: searchForm.value.goodsName,//
goodsName: searchForm.value.goodsName,//
statuses: statuses.value,//1012
// 2022
// 3032
@ -520,7 +533,8 @@ const handlePass = async function () {
status: 30,
rejectReason: addForm.value.remark,
areaCharge: adminData.value.adminName,
auditId: auditRow.value.auditId
auditId: auditRow.value.auditId,
relatedId: auditRow.value.relatedId
}
const result = await API({
url: '/Money/review',
@ -548,7 +562,8 @@ const handleReject = async function () {
rejectReason: addForm.value.remark,
areaCharge: adminData.value.adminName,
auditId: auditRow.value.auditId,
orderCode: auditRow.value.orderCode
orderCode: auditRow.value.orderCode,
relatedId: auditRow.value.relatedId
}
const result = await API({
url: '/Money/review',
@ -620,103 +635,109 @@ const getMarket = async function () {
}
const exportExcel = async function () {
const statuses = ref([20, 22, 30, 32, 40, 41]) //
if (searchForm.value.statuses === '审核通过') {
statuses.value = [30, 40]
} else if (searchForm.value.statuses === '已驳回') {
statuses.value = [22, 32]
} else if (searchForm.value.statuses === '待审核') {
statuses.value = [20]
} else if (searchForm.value.statuses === '退款成功') {
statuses.value = [41]
} else {
statuses.value = [20, 22, 30, 32, 40, 41]
}
const params = {
pageNum: pagination.value.pageNum,
pageSize: pagination.value.pageSize,
cashRecordDTO: {
jwcode: searchForm.value.jwcode,//
name: searchForm.value.name,//
markets: searchForm.value.markets,//
goodsNames: searchForm.value.goodsName,//
statuses: statuses.value,//1012
// 2022
// 3032
// 4041退
paymentCurrency: searchForm.value.paymentCurrency,//
payType: searchForm.value.payType,//
startTime: dateRange.value && dateRange.value[0] ? dayjs(dateRange.value[0]).format('YYYY-MM-DD HH:mm:ss') : "",
endTime: dateRange.value && dateRange.value[1] ? dayjs(dateRange.value[1]).format('YYYY-MM-DD HH:mm:ss') : "",
adminId: adminData.value.id
}
if (searchForm.value.statuses === '审核通过') {
statuses.value = [30, 40]
} else if (searchForm.value.statuses === '已驳回') {
statuses.value = [22, 32]
} else if (searchForm.value.statuses === '待审核') {
statuses.value = [20]
} else if (searchForm.value.statuses === '退款成功') {
statuses.value = [41]
} else {
statuses.value = [20, 22, 30, 32, 40, 41]
}
if (searchForm.value.goodsName) {
searchForm.value.goodsName = searchForm.value.goodsName[searchForm.value.goodsName.length - 1]
}
const params = {
pageNum: pagination.value.pageNum,
pageSize: pagination.value.pageSize,
cashRecordDTO: {
jwcode: searchForm.value.jwcode,//
name: searchForm.value.name,//
markets: searchForm.value.markets,//
goodsName: searchForm.value.goodsName,//
statuses: statuses.value,//1012
// 2022
// 3032
// 4041退
paymentCurrency: searchForm.value.paymentCurrency,//
payType: searchForm.value.payType,//
startTime: dateRange.value && dateRange.value[0] ? dayjs(dateRange.value[0]).format('YYYY-MM-DD HH:mm:ss') : "",
endTime: dateRange.value && dateRange.value[1] ? dayjs(dateRange.value[1]).format('YYYY-MM-DD HH:mm:ss') : "",
adminId: adminData.value.id
}
const res = await API({ url: '/export/exportFinance', data: params })
if (res.code === 200) {
ElMessage.success('导出成功')
}
}
const res = await API({ url: '/export/exportFinance', data: params })
if (res.code === 200) {
ElMessage.success('导出成功')
}
}
const openExportList = () => {
getExportList()
exportListVisible.value = true
getExportList()
exportListVisible.value = true
}
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 === 12
})
exportList.value = filteredData
} else {
ElMessage.error(result.msg || '获取导出列表失败')
exportListLoading.value = true
try {
const result = await API({ url: '/export/export' })
if (result.code === 200) {
const filteredData = result.data.filter(item => {
return item.type === 12
})
exportList.value = filteredData
} else {
ElMessage.error(result.msg || '获取导出列表失败')
}
} catch (error) {
console.error('获取导出列表出错:', error)
ElMessage.error('获取导出列表失败,请稍后重试')
} finally {
exportListLoading.value = false
}
} catch (error) {
console.error('获取导出列表出错:', error)
ElMessage.error('获取导出列表失败,请稍后重试')
} finally {
exportListLoading.value = false
}
}
const downloadExportFile = (item) => {
if (item.state === 2) {
const link = document.createElement('a')
link.href = item.url
link.download = item.fileName
link.click()
} else {
ElMessage.warning('文件还在导出中,请稍后再试')
}
if (item.state === 2) {
const link = document.createElement('a')
link.href = item.url
link.download = item.fileName
link.click()
} else {
ElMessage.warning('文件还在导出中,请稍后再试')
}
}
//
const getTagType = (state) => {
switch (state) {
case 0:
return 'info';
case 1:
return 'primary';
case 2:
return 'success';
case 3:
return 'danger';
default:
return 'info';
}
switch (state) {
case 0:
return 'info';
case 1:
return 'primary';
case 2:
return 'success';
case 3:
return 'danger';
default:
return 'info';
}
}
//
const getTagText = (state) => {
switch (state) {
case 0:
return '待执行';
case 1:
return '执行中';
case 2:
return '执行完成';
case 3:
return '执行出错';
default:
return '未知状态';
}
switch (state) {
case 0:
return '待执行';
case 1:
return '执行中';
case 2:
return '执行完成';
case 3:
return '执行出错';
default:
return '未知状态';
}
}
const hideReject = function () {
showReject.value = false
@ -745,6 +766,14 @@ const disabledDate = (time) => {
const limitDate = new Date(2025, 0, 1);
return time.getTime() < limitDate.getTime();
}
const handlePageSizeChange = function (val) {
pagination.value.pageSize = val
getRefund()
}
const handleCurrentChange = function (val) {
pagination.value.pageNum = val
getRefund()
}
onMounted(() => {
getRefund()
getMarket()
@ -803,7 +832,7 @@ onMounted(() => {
.top {
width: 30vw;
height: 17vh;
height: 22vh;
.top-item {
display: flex;

69
src/views/moneyManage/refundDetail/refundFinance.vue

@ -14,7 +14,7 @@
<el-text size="large" style="width:4vw;">产品名称</el-text>
<el-cascader v-model="searchForm.goodsName" :options="productList" style="width: 10vw;" clearable />
</div>
<div class="item1">
<div class="item1" v-if="adminData.markets === '总部'">
<el-text size="large" style="width:4vw;">所属地区</el-text>
<el-cascader style="width: 9vw;" v-model="searchForm.markets" :options="market" placeholder="请选择所属地区"
clearable @change="handleMarketChange" />
@ -115,6 +115,14 @@
</el-select>
</div>
<div class="top-item">
<el-text style="width:4vw;" size="small">永久金币</el-text>
<el-input v-model="auditRow.permanentGold" size="small" style="width:10vw;" disabled />&nbsp;
</div>
<div class="top-item">
<el-text style="width:4vw;" size="small">免费金币</el-text>
<el-input v-model="auditRow.freeGold" size="small" style="width:10vw;" disabled />&nbsp;
</div>
<div class="top-item">
<el-text style="width:4vw;" size="small">退款理由</el-text>
<el-input v-model="auditRow.refundReason" size="small" style="width:10vw;" :rows="3" maxlength="100"
show-word-limit type="textarea" disabled />
@ -136,20 +144,20 @@
<el-input v-model="auditRow.goodsName" size="small" style="width:10vw;" disabled />
</div>
<div class="center-item">
<el-text style="width:4vw;" size="small">付款金额</el-text>
<el-input v-model="auditRow.paymentAmount" size="small" style="width:10vw;" disabled />
<el-text style="width:4vw;" size="small">付款币种</el-text>
<el-input v-model="auditRow.paymentCurrency" size="small" style="width:10vw;" disabled />
</div>
<div class="center-item">
<el-text style="width:4vw;" size="small">到账金额</el-text>
<el-input v-model="auditRow.receivedAmount" size="small" style="width:10vw;" disabled />
<el-text style="width:4vw;" size="small">付款金额</el-text>
<el-input v-model="auditRow.paymentAmount" size="small" style="width:10vw;" disabled />
</div>
<div class="center-item">
<el-text style="width:4vw;" size="small">支付方式</el-text>
<el-input v-model="auditRow.payType" size="small" style="width:10vw;" disabled />
<el-text style="width:4vw;" size="small">付款时间</el-text>
<el-input v-model="auditRow.payTime" size="small" style="width:10vw;" disabled />
</div>
<div class="center-item">
<el-text style="width:4vw;">转账凭证</el-text>
<img v-if="auditRow.voucher" :src="auditRow.voucher"
<img v-if="auditRow.payVoucher" :src="auditRow.payVoucher"
style="width: 80px; height: 80px; object-fit: cover;">
<div v-else>
无转账凭证
@ -166,28 +174,28 @@
<el-input v-model="auditRow.activity" size="small" style="width:10vw;" disabled />
</div>
<div class="right-item">
<el-text style="width:4vw;" size="small">付款币种</el-text>
<el-input v-model="auditRow.paymentCurrency" size="small" style="width:10vw;" disabled />
<el-text style="width:4vw;" size="small">支付方式</el-text>
<el-input v-model="auditRow.payType" size="small" style="width:10vw;" disabled />
</div>
<div class="right-item">
<el-text style="width:4vw;" size="small">到账币种</el-text>
<el-input v-model="auditRow.receivedCurrency" size="small" style="width:10vw;" disabled />
</div>
<div class="right-item">
<el-text style="width:4vw;" size="small">手续费</el-text>
<el-input v-model="auditRow.handlingCharge" size="small" style="width:10vw;" disabled />
<el-text style="width:4vw;" size="small">到账金额</el-text>
<el-input v-model="auditRow.receivedAmount" size="small" style="width:10vw;" disabled />
</div>
<div class="right-item">
<el-text style="width:4vw;" size="small">付款时间</el-text>
<el-input v-model="auditRow.payTime" size="small" style="width:10vw;" disabled />
<el-text style="width:4vw;" size="small">到账时间</el-text>
<el-input v-model="auditRow.receivedTime" size="small" style="width:10vw;" disabled />
</div>
<div class="right-item">
<el-text style="width:4vw;" size="small">提交人</el-text>
<el-input v-model="auditRow.submitter" size="small" style="width:10vw;" disabled />
<el-text style="width:4vw;" size="small">手续费</el-text>
<el-input v-model="auditRow.handlingCharge" size="small" style="width:10vw;" disabled />
</div>
<div class="right-item">
<el-text style="width:4vw;" size="small">到账时间</el-text>
<el-input v-model="auditRow.receivedTime" size="small" style="width:10vw;" disabled />
<el-text style="width:4vw;" size="small">提交人</el-text>
<el-input v-model="auditRow.submitter" size="small" style="width:10vw;" disabled />
</div>
<div class="right-item">
<el-text style="width:4vw;" size="small">备注</el-text>
@ -467,6 +475,11 @@ const getRefund = async function () {
} else {
statusParam.value = [10, 20, 22, 30, 32, 40, 41]
}
if (searchForm.value.goodsName) {
searchForm.value.goodsName = searchForm.value.goodsName[searchForm.value.goodsName.length - 1]
}
const params = {
pageNum: pagination.value.pageNum,
pageSize: pagination.value.pageSize,
@ -474,7 +487,7 @@ const getRefund = async function () {
jwcode: searchForm.value.jwcode,//
name: searchForm.value.name,//
markets: searchForm.value.markets,//
goodsNames: searchForm.value.goodsName,//
goodsName: searchForm.value.goodsName,//
statuses: statusParam.value,//1012
// 2022
// 3032
@ -510,7 +523,8 @@ const handlePass = async function () {
id: auditRow.value.id,
status: 20,
areaFinance: adminData.value.adminName,
auditId: auditRow.value.auditId
auditId: auditRow.value.auditId,
relatedId: auditRow.value.relatedId
}
const result = await API({
url: '/Money/review',
@ -538,7 +552,8 @@ const handleReject = async function () {
rejectReason: addForm.value.remark,
areaFinance: adminData.value.adminName,
auditId: auditRow.value.auditId,
orderCode: auditRow.value.orderCode
orderCode: auditRow.value.orderCode,
relatedId: auditRow.value.relatedId
}
const result = await API({
url: '/Money/review',
@ -699,7 +714,7 @@ const exportExcel = async function () {
jwcode: searchForm.value.jwcode,//
name: searchForm.value.name,//
markets: searchForm.value.markets,//
goodsNames: searchForm.value.goodsName,//
goodsName: searchForm.value.goodsName[searchForm.value.goodsName.length - 1],//
statuses: statusParam.value,//1012
// 2022
// 3032
@ -809,6 +824,14 @@ const disabledDate = (time) => {
const limitDate = new Date(2025, 0, 1);
return time.getTime() < limitDate.getTime();
}
const handlePageSizeChange = function (val) {
pagination.value.pageSize = val
getRefund()
}
const handleCurrentChange = function (val) {
pagination.value.pageNum = val
getRefund()
}
onMounted(() => {
console.log('???????????????????', adminData.value)
getRefund()
@ -857,7 +880,7 @@ onMounted(() => {
.top {
width: 30vw;
height: 17vh;
height: 22vh;
.top-item {
display: flex;

318
src/views/moneyManage/refundDetail/refundHeader.vue

@ -15,7 +15,7 @@
<el-cascader v-model="searchForm.goodsName" :options="productList" style="width: 10vw;"
placeholder="请选择产品名称" clearable />
</div>
<div class="item1">
<div class="item1" v-if="adminData.markets === '总部'">
<el-text size="large" style="width:4vw;">所属地区</el-text>
<el-cascader style="width: 9vw;" v-model="searchForm.markets" :options="market" placeholder="请选择所属地区"
clearable @change="handleMarketChange" />
@ -23,7 +23,7 @@
<div class="item1">
<el-text size="large" style="width:4vw;">订单状态</el-text>
<el-select v-model="searchForm.statuses" style="width:9vw;" placeholder="请选择订单状态" clearable>
<el-option v-for="item in statusList" :label="item" :value="item" :key="item" />
<el-option v-for="item in statusList" :label="item" :value="item" :key="item" />
</el-select>
</div>
</div>
@ -80,9 +80,9 @@
<template #default="scope">
{{
[30].includes(scope.row.status) ? '待审核' :
[40].includes(scope.row.status) ? '审核通过' :
scope.row.status === 32 ? '已驳回' :
scope.row.status === 41 ? '退款成功' : scope.row.status
[40].includes(scope.row.status) ? '审核通过' :
scope.row.status === 32 ? '已驳回' :
scope.row.status === 41 ? '退款成功' : scope.row.status
}}
</template>
</el-table-column>
@ -116,9 +116,17 @@
</el-select>
</div>
<div class="top-item">
<el-text style="width:4vw;" size="small">永久金币</el-text>
<el-input v-model="auditRow.permanentGold" size="small" style="width:10vw;" disabled />&nbsp;
</div>
<div class="top-item">
<el-text style="width:4vw;" size="small">免费金币</el-text>
<el-input v-model="auditRow.freeGold" size="small" style="width:10vw;" disabled />&nbsp;
</div>
<div class="top-item">
<el-text style="width:4vw;" size="small">退款理由</el-text>
<el-input v-model="auditRow.refundReason" size="small" style="width:10vw;"
:rows="3" maxlength="100" show-word-limit type="textarea" disabled />
<el-input v-model="auditRow.refundReason" size="small" style="width:10vw;" :rows="3" maxlength="100"
show-word-limit type="textarea" disabled />
</div>
</div>
<el-button @click="" class="smallTitle" size="small">原订单信息</el-button>
@ -128,7 +136,7 @@
<el-text style="width:4vw;" size="small">精网号</el-text>
<el-input v-model="auditRow.jwcode" size="small" style="width:10vw;" disabled />
</div>
<div class="center-item">
<el-text style="width:4vw;" size="small">产品名称</el-text>
<el-input v-model="auditRow.goodsName" size="small" style="width:10vw;" disabled />
@ -138,20 +146,20 @@
<el-input v-model="auditRow.marketName" size="small" style="width:10vw;" disabled />
</div>
<div class="center-item">
<el-text style="width:4vw;" size="small">付款金额</el-text>
<el-input v-model="auditRow.paymentAmount" size="small" style="width:10vw;" disabled />
<el-text style="width:4vw;" size="small">付款币种</el-text>
<el-input v-model="auditRow.paymentCurrency" size="small" style="width:10vw;" disabled />
</div>
<div class="center-item">
<el-text style="width:4vw;" size="small">到账金额</el-text>
<el-input v-model="auditRow.receivedAmount" size="small" style="width:10vw;" disabled />
<el-text style="width:4vw;" size="small">付款金额</el-text>
<el-input v-model="auditRow.paymentAmount" size="small" style="width:10vw;" disabled />
</div>
<div class="center-item">
<el-text style="width:4vw;" size="small">支付方式</el-text>
<el-input v-model="auditRow.payType" size="small" style="width:10vw;" disabled />
<el-text style="width:4vw;" size="small">付款时间</el-text>
<el-input v-model="auditRow.payTime" size="small" style="width:10vw;" disabled />
</div>
<div class="center-item">
<el-text style="width:4vw;">转账凭证</el-text>
<img v-if="auditRow.voucher" :src="auditRow.voucher"
<img v-if="auditRow.payVoucher" :src="auditRow.payVoucher"
style="width: 80px; height: 80px; object-fit: cover;">
<div v-else>
无转账凭证
@ -168,28 +176,28 @@
<el-input v-model="auditRow.activity" size="small" style="width:10vw;" disabled />
</div>
<div class="right-item">
<el-text style="width:4vw;" size="small">付款币种</el-text>
<el-input v-model="auditRow.paymentCurrency" size="small" style="width:10vw;" disabled />
<el-text style="width:4vw;" size="small">支付方式</el-text>
<el-input v-model="auditRow.payType" size="small" style="width:10vw;" disabled />
</div>
<div class="right-item">
<el-text style="width:4vw;" size="small">到账币种</el-text>
<el-input v-model="auditRow.receivedCurrency" size="small" style="width:10vw;" disabled />
</div>
<div class="right-item">
<el-text style="width:4vw;" size="small">手续费</el-text>
<el-input v-model="auditRow.handlingCharge" size="small" style="width:10vw;" disabled />
<el-text style="width:4vw;" size="small">到账金额</el-text>
<el-input v-model="auditRow.receivedAmount" size="small" style="width:10vw;" disabled />
</div>
<div class="right-item">
<el-text style="width:4vw;" size="small">付款时间</el-text>
<el-input v-model="auditRow.payTime" size="small" style="width:10vw;" disabled />
<el-text style="width:4vw;" size="small">到账时间</el-text>
<el-input v-model="auditRow.receivedTime" size="small" style="width:10vw;" disabled />
</div>
<div class="right-item">
<el-text style="width:4vw;" size="small">提交人</el-text>
<el-input v-model="auditRow.submitter" size="small" style="width:10vw;" disabled />
<el-text style="width:4vw;" size="small">手续费</el-text>
<el-input v-model="auditRow.handlingCharge" size="small" style="width:10vw;" disabled />
</div>
<div class="right-item">
<el-text style="width:4vw;" size="small">到账时间</el-text>
<el-input v-model="auditRow.receivedTime" size="small" style="width:10vw;" disabled />
<el-text style="width:4vw;" size="small">提交人</el-text>
<el-input v-model="auditRow.submitter" size="small" style="width:10vw;" disabled />
</div>
<div class="right-item">
<el-text style="width:4vw;" size="small">备注</el-text>
@ -267,7 +275,8 @@
<template #icon>
<img v-if="currentStep === 4" src="@/assets/images/refund-rejected.png" alt="已驳回">
<img v-else-if="currentStep === 3" src="@/assets/images/refund-approving.png" alt="待审核">
<img v-else-if="currentStep > 3 && currentStep != 4" src="@/assets/images/refund-approved.png" alt="已审核">
<img v-else-if="currentStep > 3 && currentStep != 4"
src="@/assets/images/refund-approved.png" alt="已审核">
<img v-else-if="currentStep < 3" src="@/assets/images/refund-waiting.png" alt="未开始">
</template>
</el-step>
@ -281,7 +290,8 @@
<template #icon>
<img v-if="currentStep === 6" src="@/assets/images/refund-rejected.png" alt="已驳回">
<img v-else-if="currentStep === 5" src="@/assets/images/refund-approving.png" alt="待审核">
<img v-else-if="currentStep > 5 && currentStep != 6" src="@/assets/images/refund-approved.png" alt="已审核">
<img v-else-if="currentStep > 5 && currentStep != 6"
src="@/assets/images/refund-approved.png" alt="已审核">
<img v-else-if="currentStep < 5" src="@/assets/images/refund-waiting.png" alt="未开始">
</template>
</el-step>
@ -307,35 +317,35 @@
</el-dialog>
<el-dialog v-model="exportListVisible" title="导出列表" width="80%">
<el-table :data="exportList" style="width: 100% ;height: 60vh;" :loading="exportListLoading">
<el-table-column prop="fileName" label="文件名" />
<el-table-column prop="state" label="状态">
<template #default="scope">
<el-tag :type="getTagType(scope.row.state)" :effect="scope.row.state === 3 ? 'light' : 'plain'">
{{ getTagText(scope.row.state) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="createTime" label="创建时间">
<template #default="scope">
{{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
</template>
</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>
<el-table :data="exportList" style="width: 100% ;height: 60vh;" :loading="exportListLoading">
<el-table-column prop="fileName" label="文件名" />
<el-table-column prop="state" label="状态">
<template #default="scope">
<el-tag :type="getTagType(scope.row.state)" :effect="scope.row.state === 3 ? 'light' : 'plain'">
{{ getTagText(scope.row.state) }}
</el-tag>
</template>
</el-table-column>
<el-table-column prop="createTime" label="创建时间">
<template #default="scope">
{{ moment(scope.row.createTime).format('YYYY-MM-DD HH:mm:ss') }}
</template>
</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>
</template>
</el-table-column>
</el-table>
<template #footer>
<div class="dialog-footer">
<el-button text @click="exportListVisible = false">关闭</el-button>
</div>
</template>
</el-table-column>
</el-table>
<template #footer>
<div class="dialog-footer">
<el-button text @click="exportListVisible = false">关闭</el-button>
</div>
</template>
</el-dialog>
</el-dialog>
</template>
<script setup>
import BackgroundSvg from '@/assets/images/refund-progress.png'
@ -352,6 +362,18 @@ import { permissionMapping, findMenuById, hasMenuPermission } from "@/utils/menu
import moment from 'moment'
import { productList } from '@/views/moneyManage/receiveDetail/utils/staticData.js'
const startsWith1 = (mainStr, prefix) => {
//
if (prefix === '') {
return true;
}
//
if (mainStr.length < prefix.length) {
return false;
}
//
return mainStr.substring(0, prefix.length) === prefix;
}
const currentStep = ref(0)//
const searchForm = ref({
jwcode: '',
@ -521,6 +543,10 @@ const getRefund = async function () {
statusParam.value = [30, 32, 40, 41]
}
if (searchForm.value.goodsName) {
searchForm.value.goodsName = searchForm.value.goodsName[searchForm.value.goodsName.length - 1]
}
const params = {
pageNum: pagination.value.pageNum,
pageSize: pagination.value.pageSize,
@ -528,7 +554,7 @@ const getRefund = async function () {
jwcode: searchForm.value.jwcode,
name: searchForm.value.name,
markets: searchForm.value.markets,
goodsNames: searchForm.value.goodsName,
goodsName: searchForm.value.goodsName,
statuses: statusParam.value,
paymentCurrency: searchForm.value.paymentCurrency,
payType: searchForm.value.payType,
@ -648,103 +674,107 @@ const hideReject = function () {
}
const exportExcel = async function () {
const statusParam = ref([30, 32, 40, 41])//
if (searchForm.value.statuses === '待审核') {
statusParam.value = [30]
} else if (searchForm.value.statuses === '审核通过') {
statusParam.value = [40]
} else if (searchForm.value.statuses === '已驳回') {
statusParam.value = [32]
} else if (searchForm.value.statuses === '退款成功') {
statusParam.value = [41]
} else {
statusParam.value = [30, 32, 40, 41]
}
if (searchForm.value.statuses === '待审核') {
statusParam.value = [30]
} else if (searchForm.value.statuses === '审核通过') {
statusParam.value = [40]
} else if (searchForm.value.statuses === '已驳回') {
statusParam.value = [32]
} else if (searchForm.value.statuses === '退款成功') {
statusParam.value = [41]
} else {
statusParam.value = [30, 32, 40, 41]
}
const params = {
pageNum: pagination.value.pageNum,
pageSize: pagination.value.pageSize,
cashRecordDTO: {
jwcode: searchForm.value.jwcode,
name: searchForm.value.name,
markets: searchForm.value.markets,
goodsNames: searchForm.value.goodsName,
statuses: statusParam.value,
paymentCurrency: searchForm.value.paymentCurrency,
payType: searchForm.value.payType,
startTime: dateRange.value && dateRange.value[0] ? dayjs(dateRange.value[0]).format('YYYY-MM-DD HH:mm:ss') : "",
endTime: dateRange.value && dateRange.value[1] ? dayjs(dateRange.value[1]).format('YYYY-MM-DD HH:mm:ss') : "",
adminId: adminData.value.id
}
if (searchForm.value.goodsName) {
searchForm.value.goodsName = searchForm.value.goodsName[searchForm.value.goodsName.length - 1]
}
const params = {
pageNum: pagination.value.pageNum,
pageSize: pagination.value.pageSize,
cashRecordDTO: {
jwcode: searchForm.value.jwcode,
name: searchForm.value.name,
markets: searchForm.value.markets,
goodsName: searchForm.value.goodsName,
statuses: statusParam.value,
paymentCurrency: searchForm.value.paymentCurrency,
payType: searchForm.value.payType,
startTime: dateRange.value && dateRange.value[0] ? dayjs(dateRange.value[0]).format('YYYY-MM-DD HH:mm:ss') : "",
endTime: dateRange.value && dateRange.value[1] ? dayjs(dateRange.value[1]).format('YYYY-MM-DD HH:mm:ss') : "",
adminId: adminData.value.id
}
}
const res = await API({ url: '/export/exportFinance', data: params })
if (res.code === 200) {
ElMessage.success('导出成功')
}else{
ElMessage.error(res.msg || '导出失败')
}
const res = await API({ url: '/export/exportFinance', data: params })
if (res.code === 200) {
ElMessage.success('导出成功')
} else {
ElMessage.error(res.msg || '导出失败')
}
}
const openExportList = () => {
getExportList()
exportListVisible.value = true
getExportList()
exportListVisible.value = true
}
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 === 12
})
exportList.value = filteredData
} else {
ElMessage.error(result.msg || '获取导出列表失败')
}
} catch (error) {
console.error('获取导出列表出错:', error)
ElMessage.error('获取导出列表失败,请稍后重试')
} finally {
exportListLoading.value = false
}
exportListLoading.value = true
try {
const result = await API({ url: '/export/export' })
if (result.code === 200) {
const filteredData = result.data.filter(item => {
return item.type === 12
})
exportList.value = filteredData
} else {
ElMessage.error(result.msg || '获取导出列表失败')
}
} catch (error) {
console.error('获取导出列表出错:', error)
ElMessage.error('获取导出列表失败,请稍后重试')
} finally {
exportListLoading.value = false
}
}
const downloadExportFile = (item) => {
if (item.state === 2) {
const link = document.createElement('a')
link.href = item.url
link.download = item.fileName
link.click()
} else {
ElMessage.warning('文件还在导出中,请稍后再试')
}
if (item.state === 2) {
const link = document.createElement('a')
link.href = item.url
link.download = item.fileName
link.click()
} else {
ElMessage.warning('文件还在导出中,请稍后再试')
}
}
const getTagType = (state) => {
switch (state) {
case 0:
return 'info';
case 1:
return 'primary';
case 2:
return 'success';
case 3:
return 'danger';
default:
return 'info';
}
switch (state) {
case 0:
return 'info';
case 1:
return 'primary';
case 2:
return 'success';
case 3:
return 'danger';
default:
return 'info';
}
}
//
const getTagText = (state) => {
switch (state) {
case 0:
return '待执行';
case 1:
return '执行中';
case 2:
return '执行完成';
case 3:
return '执行出错';
default:
return '未知状态';
}
switch (state) {
case 0:
return '待执行';
case 1:
return '执行中';
case 2:
return '执行完成';
case 3:
return '执行出错';
default:
return '未知状态';
}
}
const reset = function () {
searchForm.value = {
@ -798,6 +828,14 @@ const disabledDate = (time) => {
const limitDate = new Date(2025, 0, 1);
return time.getTime() < limitDate.getTime();
}
const handlePageSizeChange = function (val) {
pagination.value.pageSize = val
getRefund()
}
const handleCurrentChange = function (val) {
pagination.value.pageNum = val
getRefund()
}
onMounted(() => {
console.log('???????????????????', adminData.value)
getRefund()
@ -855,7 +893,7 @@ onMounted(() => {
.top {
width: 30vw;
height: 17vh;
height: 22vh;
.top-item {
display: flex;

41
src/views/moneyManage/refundDetail/refundService.vue

@ -14,7 +14,7 @@
<el-text size="large" style="width:4vw;">产品名称</el-text>
<el-cascader v-model="searchForm.goodsName" :options="productList" style="width: 10vw;" clearable />
</div>
<div class="item1">
<div class="item1" v-if="adminData.markets === '总部'">
<el-text size="large" style="width:4vw;">所属地区</el-text>
<el-cascader style="width: 9vw;" v-model="searchForm.market" :options="market" placeholder="请选择所属地区"
clearable @change="handleMarketChange" />
@ -182,16 +182,14 @@
<el-radio value="1">部分退款</el-radio>
</el-radio-group>
</div>
<div class="add-item"
v-show="editRow.goodsName === '金币充值' && editForm.refundModel === '1'">
<el-text style="width:4vw;">永久金币</el-text>
<el-input v-model="editForm.partRefundGold" style="width:5vw;" />&nbsp;&nbsp;
</div>
<div class="add-item"
v-show="editRow.goodsName === '金币充值' && editForm.refundModel === '1'">
<el-text style="width:4vw;">免费金币</el-text>
<el-input v-model="editForm.partRefundFree" style="width:5vw;" />&nbsp;&nbsp;
</div>
<div class="add-item" v-show="editRow.goodsName === '金币充值' && editForm.refundModel === '1'">
<el-text style="width:4vw;">永久金币</el-text>
<el-input v-model="editForm.partRefundGold" style="width:5vw;" />&nbsp;&nbsp;
</div>
<div class="add-item" v-show="editRow.goodsName === '金币充值' && editForm.refundModel === '1'">
<el-text style="width:4vw;">免费金币</el-text>
<el-input v-model="editForm.partRefundFree" style="width:5vw;" />&nbsp;&nbsp;
</div>
<div class="add-item">
<el-text style="width:4vw;">退款理由</el-text>
<el-input v-model="editForm.refundReason" style="width:10vw;" :rows="5" maxlength="150"
@ -199,7 +197,7 @@
</div>
<div>ps:请在退款理由表明用户的退款需求</div>
<div style="display:flex;justify-content: center;margin-top: 5vh;">
<el-button type="default" @click="resetEdit">重置</el-button>
<el-button type="default" @click="cancelEdit">取消</el-button>
<el-button type="primary" @click="submitEdit">提交</el-button>
</div>
</div>
@ -284,6 +282,11 @@ const getRefund = async function () {
} else if (searchForm.value.statuses === '已驳回') {
statusParam.value = [12, 22, 32]
}
if (searchForm.value.goodsName) {
searchForm.value.goodsName = searchForm.value.goodsName[searchForm.value.goodsName.length - 1]
}
const params = {
pageNum: pagination.value.pageNum,
pageSize: pagination.value.pageSize,
@ -291,7 +294,7 @@ const getRefund = async function () {
jwcode: searchForm.value.jwcode,//
name: searchForm.value.name,//
markets: searchForm.value.market,//
goodsNames: searchForm.value.goodsName,//
goodsName: searchForm.value.goodsName,//
statuses: statusParam.value,//1012
// 2022
// 3032
@ -434,9 +437,15 @@ const previewImage = (imageUrl) => {
document.body.removeChild(viewer);
});
};
const cancelEdit = function () {
editForm.value = {
refundModel: '',
refundReason: '',
partRefundGold: '',
partRefundFree: ''
}
showEdit.value = false
}
const currencies = ref([
{
value: '新币',

Loading…
Cancel
Save