Browse Source

冲突处理

zhangrenyuan/feature-20251104133449-现金管理二期
lihuilin 3 weeks ago
parent
commit
d1a8275b85
  1. 5
      .env.development
  2. 0
      src/assets/SvgIcons/consume.svg
  3. 0
      src/assets/SvgIcons/down-arrow.svg
  4. 0
      src/assets/SvgIcons/promptBackground.svg
  5. 0
      src/assets/SvgIcons/setting.svg
  6. 0
      src/assets/SvgIcons/system-logo.svg
  7. 0
      src/assets/SvgIcons/unchanged.svg
  8. 0
      src/assets/SvgIcons/up-arrow.svg
  9. 0
      src/assets/blue-background.png
  10. 0
      src/assets/images/refund-approved.png
  11. 0
      src/assets/images/refund-approving.png
  12. 0
      src/assets/images/refund-progress.png
  13. 0
      src/assets/images/refund-recall.png
  14. 0
      src/assets/images/refund-rejected.png
  15. 0
      src/assets/images/refund-waiting.png
  16. 0
      src/assets/logo.png
  17. 0
      src/assets/receive-recall.png
  18. 2
      src/components/dialogs/ConfirmDialog.vue
  19. 6
      src/components/workspace/GoldManagement.vue
  20. 18
      src/views/activityManage/activity.vue
  21. 2
      src/views/channelManage/cart/cart.vue
  22. 2
      src/views/channelManage/fans/fans.vue
  23. 2
      src/views/channelManage/reward/reward.vue
  24. 2
      src/views/consume/bean/articleVideo.vue
  25. 2
      src/views/consume/bean/dieHardFan.vue
  26. 2
      src/views/consume/bean/liveStream.vue
  27. 6
      src/views/home.vue
  28. 157
      src/views/moneyManage/executor/executor.vue
  29. 2
      src/views/moneyManage/receiveDetail/receiveDetail1.vue
  30. 4
      src/views/moneyManage/receiveDetail/receiveFinance.vue
  31. 14
      src/views/moneyManage/receiveDetail/receiveService.vue
  32. 197
      src/views/moneyManage/refundDetail/refundCharge.vue
  33. 182
      src/views/moneyManage/refundDetail/refundFinance.vue
  34. 178
      src/views/moneyManage/refundDetail/refundHeader.vue
  35. 8
      src/views/moneyManage/refundDetail/refundService.vue
  36. 2
      src/views/permissions/userPermission.vue

5
.env.development

@ -1,4 +1,4 @@
VITE_API_BASE='https://hwjb.homilychart.com/dev/admin'
# VITE_API_BASE='https://hwjb.homilychart.com/dev/admin'
# 测试环境 # 测试环境
# VITE_API_BASE='http://54.255.212.181:10704/' # VITE_API_BASE='http://54.255.212.181:10704/'
# 正式环境 # 正式环境
@ -13,7 +13,8 @@ VITE_UPLOAD_URL=http://39.101.133.168:8828/hljw/api/aws/upload
# VITE_API_BASE='http://localhost:8081/' # VITE_API_BASE='http://localhost:8081/'
# 孙加倍 # 孙加倍
# VITE_API_BASE='http://192.168.40.12:8081' # VITE_API_BASE='http://192.168.40.12:8081'
# 黄其振
VITE_API_BASE='http://192.168.40.8:8081'
# Lijianlin # Lijianlin
# VITE_API_BASE='http://192.168.9.41:8081/' # VITE_API_BASE='http://192.168.9.41:8081/'
# VITE_API_BASE='http://localhost:8081/' # VITE_API_BASE='http://localhost:8081/'

0
src/assets/SvgIcons/消耗.svg → src/assets/SvgIcons/consume.svg

0
src/assets/SvgIcons/下降箭头.svg → src/assets/SvgIcons/down-arrow.svg

0
src/assets/SvgIcons/背景.svg → src/assets/SvgIcons/promptBackground.svg

0
src/assets/SvgIcons/设置.svg → src/assets/SvgIcons/setting.svg

0
src/assets/SvgIcons/金币系统LOGO.svg → src/assets/SvgIcons/system-logo.svg

0
src/assets/SvgIcons/持平.svg → src/assets/SvgIcons/unchanged.svg

0
src/assets/SvgIcons/上升箭头.svg → src/assets/SvgIcons/up-arrow.svg

0
src/assets/半透明background.png → src/assets/blue-background.png

Before

Width: 1874  |  Height: 1054  |  Size: 10 KiB

After

Width: 1874  |  Height: 1054  |  Size: 10 KiB

0
src/assets/images/已审核.png → src/assets/images/refund-approved.png

Before

Width: 46  |  Height: 46  |  Size: 2.9 KiB

After

Width: 46  |  Height: 46  |  Size: 2.9 KiB

0
src/assets/images/待审核.png → src/assets/images/refund-approving.png

Before

Width: 46  |  Height: 46  |  Size: 2.8 KiB

After

Width: 46  |  Height: 46  |  Size: 2.8 KiB

0
src/assets/images/背景图.png → src/assets/images/refund-progress.png

Before

Width: 1206  |  Height: 509  |  Size: 433 KiB

After

Width: 1206  |  Height: 509  |  Size: 433 KiB

0
src/assets/images/撤回.png → src/assets/images/refund-recall.png

Before

Width: 700  |  Height: 392  |  Size: 228 KiB

After

Width: 700  |  Height: 392  |  Size: 228 KiB

0
src/assets/images/已驳回.png → src/assets/images/refund-rejected.png

Before

Width: 46  |  Height: 46  |  Size: 2.8 KiB

After

Width: 46  |  Height: 46  |  Size: 2.8 KiB

0
src/assets/images/还没传到.png → src/assets/images/refund-waiting.png

Before

Width: 46  |  Height: 46  |  Size: 2.9 KiB

After

Width: 46  |  Height: 46  |  Size: 2.9 KiB

0
src/assets/新logo.png → src/assets/logo.png

Before

Width: 216  |  Height: 216  |  Size: 58 KiB

After

Width: 216  |  Height: 216  |  Size: 58 KiB

0
src/assets/收款明细撤回背景.png → src/assets/receive-recall.png

Before

Width: 700  |  Height: 392  |  Size: 116 KiB

After

Width: 700  |  Height: 392  |  Size: 116 KiB

2
src/components/dialogs/ConfirmDialog.vue

@ -33,7 +33,7 @@
<script setup> <script setup>
import { ref, watch } from 'vue' import { ref, watch } from 'vue'
import BackgroundSvg from '@/assets/SvgIcons/背景.svg'
import BackgroundSvg from '@/assets/SvgIcons/promptBackground.avg'
// //
const props = defineProps({ const props = defineProps({

6
src/components/workspace/GoldManagement.vue

@ -142,9 +142,9 @@ import utc from 'dayjs-plugin-utc'
import {ArrowDownBold, ArrowUpBold, SemiSelect} from '@element-plus/icons-vue' import {ArrowDownBold, ArrowUpBold, SemiSelect} from '@element-plus/icons-vue'
import svg1 from '@/assets/SvgIcons/折合新币累计金额.svg' import svg1 from '@/assets/SvgIcons/折合新币累计金额.svg'
import svg2 from '@/assets/SvgIcons/周同比.svg' import svg2 from '@/assets/SvgIcons/周同比.svg'
import upArrow from '@/assets/SvgIcons/上升箭头.svg'
import downArrow from '@/assets/SvgIcons/下降箭头.svg'
import pingArrow from '@/assets/SvgIcons/持平.svg'
import upArrow from '@/assets/SvgIcons/up-arrow.svg'
import downArrow from '@/assets/SvgIcons/down-arrow.svg'
import pingArrow from '@/assets/SvgIcons/unchanged.svg'
dayjs.extend(utc) dayjs.extend(utc)

18
src/views/activityManage/activity.vue

@ -31,8 +31,8 @@
<el-button type="success" @click="showAdd = true" style="margin-top: 1vh;">新增活动</el-button> <el-button type="success" @click="showAdd = true" style="margin-top: 1vh;">新增活动</el-button>
<el-card style="margin-top: 1vh;">
<el-table :data="tableData" style="width: 82vw;" :row-style="{ height: '50px' }">
<el-card style="margin-top: 1vh;height:80vh;">
<el-table :data="tableData" style="width: 82vw;height:70vh;" :row-style="{ height: '50px' }">
<el-table-column type="index" label="序号" width="100px" fixed="left"> <el-table-column type="index" label="序号" width="100px" fixed="left">
<template #default="scope"> <template #default="scope">
<span>{{ scope.$index + 1 + (pagination.pageNum - 1) * pagination.pageSize }}</span> <span>{{ scope.$index + 1 + (pagination.pageNum - 1) * pagination.pageSize }}</span>
@ -69,6 +69,9 @@
</template> </template>
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-pagination v-model:current-page="pagination.pageNum" v-model:page-size="pagination.pageSize"
layout="total, sizes, prev, pager, next, jumper" :total="pagination.total" style="margin-top: 1vh;" />
</el-card> </el-card>
<el-dialog v-model="showAdd" width="20vw" draggable align-center style="background-color: rgb(243,250,254);"> <el-dialog v-model="showAdd" width="20vw" draggable align-center style="background-color: rgb(243,250,254);">
@ -152,6 +155,7 @@ import { permissionMapping, hasMenuPermission } from "@/utils/menuTreePermission
const adminStore = useAdminStore(); const adminStore = useAdminStore();
const { adminData, menuTree } = storeToRefs(adminStore) const { adminData, menuTree } = storeToRefs(adminStore)
import ConfirmDialog from '@/components/dialogs/ConfirmDialog.vue' import ConfirmDialog from '@/components/dialogs/ConfirmDialog.vue'
import { add } from 'lodash';
const tableData = ref([]) const tableData = ref([])
const pagination = ref({ const pagination = ref({
@ -245,6 +249,16 @@ const handleAdd = async function () {
ElMessage.success('添加成功') ElMessage.success('添加成功')
getActivity() getActivity()
hideAdd() hideAdd()
addForm.value = {
activityName: '',
businessBelong: '',
area: [],
startTime: null,
endTime: null,
}
} else{
ElMessage.error(res.msg || '添加失败')
return
} }
} }

2
src/views/channelManage/cart/cart.vue

@ -403,7 +403,7 @@ const getExportList = async () => {
const result = await API({ url: '/export/export' }) const result = await API({ url: '/export/export' })
if (result.code === 200) { if (result.code === 200) {
const filteredData = result.data.filter(item => { const filteredData = result.data.filter(item => {
return item.type === 8; //4 // todo type 8/
return item.type === 8; //8/
}); });
exportList.value = filteredData exportList.value = filteredData
} else { } else {

2
src/views/channelManage/fans/fans.vue

@ -409,7 +409,7 @@ const getExportList = async () => {
const result = await API({ url: '/export/export' }) const result = await API({ url: '/export/export' })
if (result.code === 200) { if (result.code === 200) {
const filteredData = result.data.filter(item => { const filteredData = result.data.filter(item => {
return item.type === 7; //4 // todo type 7
return item.type === 7; //7
}); });
exportList.value = filteredData exportList.value = filteredData
} else { } else {

2
src/views/channelManage/reward/reward.vue

@ -442,7 +442,7 @@ const getExportList = async () => {
const result = await API({ url: '/export/export' }) const result = await API({ url: '/export/export' })
if (result.code === 200) { if (result.code === 200) {
const filteredData = result.data.filter(item => { const filteredData = result.data.filter(item => {
return item.type === 6; //4 // todo type 6
return item.type === 6; //6
}); });
exportList.value = filteredData exportList.value = filteredData
} else { } else {

2
src/views/consume/bean/articleVideo.vue

@ -420,7 +420,7 @@ const getExportList = async () => {
const result = await API({ url: '/export/export' }) const result = await API({ url: '/export/export' })
if (result.code === 200) { if (result.code === 200) {
const filteredData = result.data.filter(item => { const filteredData = result.data.filter(item => {
return item.type === 8; //4 // todo type 8/
return item.type === 8; //8/
}); });
exportList.value = filteredData exportList.value = filteredData
} else { } else {

2
src/views/consume/bean/dieHardFan.vue

@ -424,7 +424,7 @@ const getExportList = async () => {
const result = await API({ url: '/export/export' }) const result = await API({ url: '/export/export' })
if (result.code === 200) { if (result.code === 200) {
const filteredData = result.data.filter(item => { const filteredData = result.data.filter(item => {
return item.type === 7; //4 // todo type 7
return item.type === 7; //7
}); });
exportList.value = filteredData exportList.value = filteredData
} else { } else {

2
src/views/consume/bean/liveStream.vue

@ -458,7 +458,7 @@ const getExportList = async () => {
const result = await API({ url: '/export/export' }) const result = await API({ url: '/export/export' })
if (result.code === 200) { if (result.code === 200) {
const filteredData = result.data.filter(item => { const filteredData = result.data.filter(item => {
return item.type === 6; //4 // todo type 6
return item.type === 6; //6
}); });
exportList.value = filteredData exportList.value = filteredData
} else { } else {

6
src/views/home.vue

@ -274,7 +274,7 @@ const scrollToTop = () => {
<div class="sidebar-container"> <div class="sidebar-container">
<el-aside class="sidebar-layout"> <el-aside class="sidebar-layout">
<div class="logo"> <div class="logo">
<img src="../assets/logo.png" alt="logo" style="width: 9vh; height: 9vh"/>
<img src="../assets/logo.png" alt="logo" style="width: 9vh; height: 9vh" />
</div> </div>
<div class="menu-scroll-container"> <div class="menu-scroll-container">
@ -342,7 +342,7 @@ const scrollToTop = () => {
<el-dropdown placement="top-start"> <el-dropdown placement="top-start">
<span class="el-dropdown-link"> <span class="el-dropdown-link">
<!-- 暂时使用静态路径确保设置图标正常显示 --> <!-- 暂时使用静态路径确保设置图标正常显示 -->
<img src="@/assets/SvgIcons/设置.svg" alt="设置" style="width: 4vh; height: 4vh"/>
<img src="@/assets/SvgIcons/setting.svg" alt="设置" style="width: 4vh; height: 4vh" />
<span>设置中心</span> <span>设置中心</span>
<el-icon class="arrow-icon"> <el-icon class="arrow-icon">
<ArrowUp/> <ArrowUp/>
@ -514,7 +514,7 @@ const scrollToTop = () => {
left: 1vh; left: 1vh;
right: 1vh; right: 1vh;
bottom: 1vh; bottom: 1vh;
background-image: url('@/assets/半透明background.png');
background-image: url('@/assets/blue-background.png');
background-size: cover; background-size: cover;
z-index: 1; z-index: 1;
display: flex; display: flex;

157
src/views/moneyManage/executor/executor.vue

@ -3,25 +3,25 @@
<div class="condition1"> <div class="condition1">
<div class="search"> <div class="search">
<el-text size="large" style="width:4vw;">姓名</el-text> <el-text size="large" style="width:4vw;">姓名</el-text>
<el-input v-model="searchForm.name" placeholder="请输入姓名" style="width:9vw;" clearable/>
<el-input v-model="searchForm.name" placeholder="请输入姓名" style="width:9vw;" clearable />
</div> </div>
<div class="search"> <div class="search">
<el-text size="large" style="width:4vw;">精网号</el-text> <el-text size="large" style="width:4vw;">精网号</el-text>
<el-input v-model="searchForm.jwcode" placeholder="请输入精网号" style="width:9vw;" clearable/>
<el-input v-model="searchForm.jwcode" placeholder="请输入精网号" style="width:9vw;" clearable />
</div> </div>
<div class="search"> <div class="search">
<el-text size="large" style="width:4vw;">所属地区</el-text> <el-text size="large" style="width:4vw;">所属地区</el-text>
<el-cascader style="width: 9vw;" v-model="searchForm.markets" :options="market" placeholder="请选择所属地区" <el-cascader style="width: 9vw;" v-model="searchForm.markets" :options="market" placeholder="请选择所属地区"
clearable/>
clearable />
</div> </div>
<div class="search"> <div class="search">
<el-text size="large" style="width:4vw;">产品名称</el-text> <el-text size="large" style="width:4vw;">产品名称</el-text>
<el-cascader v-model="searchForm.goodsName" :options="productList" style="width: 10vw;" clearable/>
<el-cascader v-model="searchForm.goodsName" :options="productList" style="width: 10vw;" clearable />
</div> </div>
<div class="search"> <div class="search">
<el-text size="large" style="width:4vw;">退款币种</el-text> <el-text size="large" style="width:4vw;">退款币种</el-text>
<el-select v-model="searchForm.refundCurrency" style="width:9vw;" clearable> <el-select v-model="searchForm.refundCurrency" style="width:9vw;" clearable>
<el-option v-for="item in currencies" :key="item.value" :label="item.label" :value="item.value"/>
<el-option v-for="item in currencies" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
</div> </div>
</div> </div>
@ -29,39 +29,36 @@
<div class="search2"> <div class="search2">
<el-text size="large" style="width:4vw;">退款途径</el-text> <el-text size="large" style="width:4vw;">退款途径</el-text>
<el-select v-model="searchForm.refundChannels" style="width:9vw;" clearable> <el-select v-model="searchForm.refundChannels" style="width:9vw;" clearable>
<el-option v-for="item in channelOptions" :key="item.value" :label="item.label"
:value="item.value"/>
<el-option v-for="item in channelOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
</div> </div>
<div class="search2"> <div class="search2">
<el-text size="large" style="width:4vw;">订单状态</el-text> <el-text size="large" style="width:4vw;">订单状态</el-text>
<el-select v-model="searchForm.statuses" style="width:9vw;" clearable> <el-select v-model="searchForm.statuses" style="width:9vw;" 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> </el-select>
</div> </div>
<div class="search2" style="width: 28vw;">
<div class="search2" style="width: 25.5vw;">
<el-text size="large" style="width:4vw;">退款时间</el-text> <el-text size="large" style="width:4vw;">退款时间</el-text>
<el-date-picker v-model="dateRange" type="datetimerange" range-separator="" start-placeholder="起始时间" <el-date-picker v-model="dateRange" type="datetimerange" range-separator="" start-placeholder="起始时间"
end-placeholder="结束时间" style="width:22vw;" @change="handleDatePickerChange" clearable
:disabled-date="disabledDate" :default-time="defaultTime"/>
end-placeholder="结束时间" style="width:18vw;" clearable
:disabled-date="disabledDate" :default-time="defaultTime" />
</div> </div>
<div> <div>
<el-button type="primary" @click="getRefund">查询</el-button>
<el-button type="success" @click="reset">重置</el-button>
<!-- <el-button type="warning">导出excel</el-button>
<el-button type="primary">查看导出列表</el-button> -->
<el-button type="primary" size="medium" @click="getRefund">查询</el-button>
<el-button type="success" size="medium" @click="reset">重置</el-button>
</div> </div>
</div> </div>
</el-card> </el-card>
<el-card style="background-color: rgb(231,244,253);">
<el-table :data="tableData" style="height:60vh;width:82vw;">
<el-table-column type="index" label="序号" width="60" fixed="left"/>
<el-table-column prop="name" label="Homily ID" width="120" fixed="left"/>
<el-table-column prop="jwcode" label="姓名" width="120" fixed="left" show-overflow-tooltip/>
<el-table-column prop="marketName" label="所属地区" width="120"/>
<el-table-column prop="goodsName" label="产品名称" width="120"/>
<el-table-column prop="goodNum" label="产品数量" width="120"/>
<el-card style="background-color: rgb(231,244,253);height:80vh;">
<el-table :data="tableData" style="height:70vh;width:82vw;">
<el-table-column type="index" label="序号" width="60" fixed="left" />
<el-table-column prop="jwcode" label="Homily ID" width="120" fixed="left" />
<el-table-column prop="name" label="姓名" width="120" fixed="left" show-overflow-tooltip />
<el-table-column prop="market" label="所属地区" width="120" />
<el-table-column prop="goodsName" label="产品名称" width="120" />
<el-table-column prop="goodsNum" label="产品数量" width="120" />
<el-table-column prop="refundModel" label="退款方式" width="120"> <el-table-column prop="refundModel" label="退款方式" width="120">
<template #default="scope"> <template #default="scope">
{{ scope.row.refundModel === 1 ? '部分退款' : '全部退款' }} {{ scope.row.refundModel === 1 ? '部分退款' : '全部退款' }}
@ -92,7 +89,7 @@
<template #default="scope"> <template #default="scope">
<el-image v-if="scope.row.refundVoucher" :src="scope.row.refundVoucher" <el-image v-if="scope.row.refundVoucher" :src="scope.row.refundVoucher"
@click="previewImage(scope.row.refundVoucher)" @click="previewImage(scope.row.refundVoucher)"
style="width: 40px; height: 40px; cursor: pointer;z-index: 99999;" fit="cover"/>
style="width: 40px; height: 40px; cursor: pointer;z-index: 99999;" fit="cover" />
<span v-else style="color: #FA5A1E;">待补充</span> <span v-else style="color: #FA5A1E;">待补充</span>
</template> </template>
</el-table-column> </el-table-column>
@ -111,8 +108,7 @@
<el-table-column prop="operation" label="操作" fixed="right" width="100px"> <el-table-column prop="operation" label="操作" fixed="right" width="100px">
<template #default="scope"> <template #default="scope">
<div class="operation"> <div class="operation">
<el-button v-if="scope.row.status === 40" type="primary" text
@click="showEditDialog(scope.row)">
<el-button v-if="scope.row.status === 40" type="primary" text @click="showEditDialog(scope.row)">
提交 提交
</el-button> </el-button>
<el-button v-else type="primary" text @click="showEditDialog(scope.row)"> <el-button v-else type="primary" text @click="showEditDialog(scope.row)">
@ -123,7 +119,7 @@
</el-table-column> </el-table-column>
</el-table> </el-table>
<el-pagination v-model:current-page="pagination.pageNum" v-model:page-size="pagination.pageSize" <el-pagination v-model:current-page="pagination.pageNum" v-model:page-size="pagination.pageSize"
layout="total, sizes, prev, pager, next, jumper" :total="pagination.total" style="margin-top: 1vh;"/>
layout="total, sizes, prev, pager, next, jumper" :total="pagination.total" style="margin-top: 1vh;" />
</el-card> </el-card>
<el-dialog v-model="showEdit" class="edit" overflow draggable style="width: 40vw;"> <el-dialog v-model="showEdit" class="edit" overflow draggable style="width: 40vw;">
@ -131,19 +127,19 @@
<div class="left"> <div class="left">
<div class="dialog-item"> <div class="dialog-item">
<el-text style="width:4vw;">精网号</el-text> <el-text style="width:4vw;">精网号</el-text>
<el-input v-model="editRow.jwcode" style="width:10vw;" disabled/>
<el-input v-model="editRow.jwcode" style="width:10vw;" disabled />
</div> </div>
<div class="dialog-item"> <div class="dialog-item">
<el-text style="width:4vw;">客户姓名</el-text> <el-text style="width:4vw;">客户姓名</el-text>
<el-input v-model="editRow.name" style="width:10vw;" disabled/>
<el-input v-model="editRow.name" style="width:10vw;" disabled />
</div> </div>
<div class="dialog-item"> <div class="dialog-item">
<el-text style="width:4vw;">所属地区</el-text> <el-text style="width:4vw;">所属地区</el-text>
<el-input v-model="editRow.marketName" style="width:10vw;" disabled/>
<el-input v-model="editRow.marketName" style="width:10vw;" disabled />
</div> </div>
<div class="dialog-item"> <div class="dialog-item">
<el-text style="width:4vw;">产品名称</el-text> <el-text style="width:4vw;">产品名称</el-text>
<el-input v-model="editRow.goodsName" style="width:10vw;" disabled/>
<el-input v-model="editRow.goodsName" style="width:10vw;" disabled />
</div> </div>
<div class="dialog-item"> <div class="dialog-item">
<el-text style="width:4vw;">退款类型</el-text> <el-text style="width:4vw;">退款类型</el-text>
@ -154,80 +150,76 @@
</div> </div>
<div class="dialog-item"> <div class="dialog-item">
<el-text style="width:4vw;">付款币种</el-text> <el-text style="width:4vw;">付款币种</el-text>
<el-input v-model="editRow.paymentCurrency" style="width:10vw;" disabled/>
<el-input v-model="editRow.paymentCurrency" style="width:10vw;" disabled />
</div> </div>
<div class="dialog-item"> <div class="dialog-item">
<el-text style="width:4vw;">付款金额</el-text> <el-text style="width:4vw;">付款金额</el-text>
<el-input v-model="editRow.paymentAmount" style="width:10vw;" disabled/>
<el-input v-model="editRow.paymentAmount" style="width:10vw;" disabled />
</div> </div>
<div class="dialog-item"> <div class="dialog-item">
<el-text style="width:4vw;">支付方式</el-text> <el-text style="width:4vw;">支付方式</el-text>
<el-input v-model="editRow.payType" style="width:10vw;" disabled/>
<el-input v-model="editRow.payType" style="width:10vw;" disabled />
</div> </div>
<div class="dialog-item"> <div class="dialog-item">
<el-text style="width:4vw;">付款时间</el-text> <el-text style="width:4vw;">付款时间</el-text>
<el-date-picker v-model="editRow.payTime" type="datetime" style="width:10vw;" disabled/>
<el-date-picker v-model="editRow.payTime" type="datetime" style="width:10vw;" disabled />
</div> </div>
<div class="dialog-item"> <div class="dialog-item">
<el-text style="width:4vw;">提交人</el-text> <el-text style="width:4vw;">提交人</el-text>
<el-input v-model="editRow.submitterName" style="width:10vw;" disabled/>
<el-input v-model="editRow.submitterName" style="width:10vw;" disabled />
</div> </div>
<div class="dialog-item"> <div class="dialog-item">
<el-text style="width:4vw;">转账凭证</el-text> <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.voucher" :src="editRow.voucher" style="width: 80px; height: 80px; object-fit: cover;">
<div v-else> <div v-else>
无转账凭证 无转账凭证
</div> </div>
</div> </div>
<div class="dialog-item"> <div class="dialog-item">
<el-text style="width:4vw;">备注</el-text> <el-text style="width:4vw;">备注</el-text>
<el-input v-model="editRow.remark" style="width:10vw;" :row="3" disabled maxlength="100"
type="textarea" show-word-limit clearable/>
<el-input v-model="editRow.remark" style="width:10vw;" :row="3" disabled maxlength="100" type="textarea"
show-word-limit clearable />
</div> </div>
</div> </div>
<div class="right"> <div class="right">
<div class="dialog-item"> <div class="dialog-item">
<el-text style="width:4vw;">退款币种</el-text> <el-text style="width:4vw;">退款币种</el-text>
<el-select v-model="editForm.refundCurrency" placeholder="请选择退款币种" style="width:10vw;"> <el-select v-model="editForm.refundCurrency" placeholder="请选择退款币种" style="width:10vw;">
<el-option v-for="item in currencies" :key="item.value" :label="item.label"
:value="item.value"/>
<el-option v-for="item in currencies" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
</div> </div>
<div class="dialog-item"> <div class="dialog-item">
<el-text style="width:4vw;">退款金额</el-text> <el-text style="width:4vw;">退款金额</el-text>
<el-input v-model="editForm.refundAmount" placeholder="请输入退款金额" style="width:10vw;" clearable/>
<el-input v-model="editForm.refundAmount" placeholder="请输入退款金额" style="width:10vw;" clearable />
</div> </div>
<div class="dialog-item"> <div class="dialog-item">
<el-text style="width:4vw;">退款途径</el-text> <el-text style="width:4vw;">退款途径</el-text>
<el-select v-model="editForm.refundChannels" placeholder="请选择退款途径" style="width:10vw;"> <el-select v-model="editForm.refundChannels" placeholder="请选择退款途径" style="width:10vw;">
<el-option v-for="item in channelOptions" :key="item.value" :label="item.label"
:value="item.value"/>
<el-option v-for="item in channelOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
</div> </div>
<div class="dialog-item"> <div class="dialog-item">
<el-text style="width:4vw;">退款时间</el-text> <el-text style="width:4vw;">退款时间</el-text>
<el-date-picker v-model="editForm.refundTime" type="datetime" placeholder="请选择退款时间"
style="width:10vw;" clearable/>
<el-date-picker v-model="editForm.refundTime" type="datetime" placeholder="请选择退款时间" style="width:10vw;"
clearable />
</div> </div>
<div class="dialog-item"> <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">
<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> <template #default>
<img v-if="editForm.imageUrl" :src="editForm.imageUrl" <img v-if="editForm.imageUrl" :src="editForm.imageUrl"
style="width: 80px; height: 80px; object-fit: cover;"> style="width: 80px; height: 80px; object-fit: cover;">
<el-icon v-else> <el-icon v-else>
<Plus/>
<Plus />
</el-icon> </el-icon>
</template> </template>
</el-upload> </el-upload>
</div> </div>
<div class="dialog-item"> <div class="dialog-item">
<el-text style="width:4vw;">备注</el-text> <el-text style="width:4vw;">备注</el-text>
<el-input v-model="editForm.refundRemark" placeholder="请输入备注" style="width:10vw;" :rows="3"
maxlength="100" show-word-limit type="textarea" clearable/>
<el-input v-model="editForm.refundRemark" placeholder="请输入备注" style="width:10vw;" :rows="3" maxlength="100"
show-word-limit type="textarea" clearable />
</div> </div>
<div style="display:flex;justify-content: center;margin-top: 5vh;"> <div style="display:flex;justify-content: center;margin-top: 5vh;">
<el-button type="default" @click="hideEditDialog" style="margin-right: 2vw;">取消</el-button> <el-button type="default" @click="hideEditDialog" style="margin-right: 2vw;">取消</el-button>
@ -238,17 +230,18 @@
</el-dialog> </el-dialog>
</template> </template>
<script setup> <script setup>
import {ref, onMounted} from 'vue'
import {ElMessage} from 'element-plus'
import { ref, onMounted } from 'vue'
import { ElMessage } from 'element-plus'
import API from '@/util/http.js' import API from '@/util/http.js'
import dayjs from 'dayjs' import dayjs from 'dayjs'
import {useAdminStore} from "@/store/index.js"
import {storeToRefs} from "pinia"
import {Delete, Download, Plus, ZoomIn} from '@element-plus/icons-vue'
import { useAdminStore } from "@/store/index.js"
import { storeToRefs } from "pinia"
import { Delete, Download, Plus, ZoomIn } from '@element-plus/icons-vue'
const adminStore = useAdminStore() const adminStore = useAdminStore()
const {adminData, menuTree} = storeToRefs(adminStore)
import {permissionMapping, findMenuById} from "@/utils/menuTreePermission.js"
const { adminData, menuTree } = storeToRefs(adminStore)
import { permissionMapping, findMenuById } from "@/utils/menuTreePermission.js"
import moment from 'moment'
const uploadUrl = 'https://api.homilychart.com/hljw/api/aws/upload' const uploadUrl = 'https://api.homilychart.com/hljw/api/aws/upload'
const dateRange = ref([]) const dateRange = ref([])
@ -285,7 +278,7 @@ const getRefund = async function () {
const params = { const params = {
pageNum: pagination.value.pageNum, pageNum: pagination.value.pageNum,
pageSize: pagination.value.pageSize, pageSize: pagination.value.pageSize,
cashRecordDone: {
cashRecordDTO: {
jwcode: searchForm.value.jwcode, jwcode: searchForm.value.jwcode,
name: searchForm.value.name, name: searchForm.value.name,
markets: searchForm.value.markets, markets: searchForm.value.markets,
@ -305,7 +298,7 @@ const getRefund = async function () {
} }
const result = await API({ const result = await API({
url: '/Money/select',
url: '/Money/exSelect',
method: 'POST', method: 'POST',
data: params data: params
}) })
@ -394,46 +387,46 @@ const channelOptions = ref([{
value: '银行转账', value: '银行转账',
label: '银行转账' label: '银行转账'
}, },
{
{
value: '刷卡', value: '刷卡',
label: '刷卡' label: '刷卡'
},
{
},
{
value: '现金', value: '现金',
label: '现金' label: '现金'
},
{
},
{
value: '支票', value: '支票',
label: '支票' label: '支票'
},
{
},
{
value: 'Grabpay', value: 'Grabpay',
label: 'Grabpay' label: 'Grabpay'
},
{
},
{
value: 'Nets', value: 'Nets',
label: 'Nets' label: 'Nets'
},
{
},
{
value: 'E-Transfer', value: 'E-Transfer',
label: 'E-Transfer' label: 'E-Transfer'
},
{
},
{
value: 'PayPal', value: 'PayPal',
label: 'PayPal' label: 'PayPal'
},
{
},
{
value: 'Stripe-链接收款', value: 'Stripe-链接收款',
label: 'Stripe-链接收款' label: 'Stripe-链接收款'
},
{
},
{
value: 'PaymentAsia-链接收款', value: 'PaymentAsia-链接收款',
label: 'PaymentAsia-链接收款' label: 'PaymentAsia-链接收款'
},
{
},
{
value: 'Ipay88-链接收款', value: 'Ipay88-链接收款',
label: 'Ipay88-链接收款' label: 'Ipay88-链接收款'
}
}
]) ])
const currencies = ref([ const currencies = ref([

2
src/views/moneyManage/receiveDetail/receiveDetail1.vue

@ -1627,7 +1627,7 @@ onMounted(async function () {
// //
height: 392px; height: 392px;
width: 700px; width: 700px;
background-image: url('/src/assets/收款明细撤回背景.png');
background-image: url('/src/assets/receive-recall.png');
position: fixed; // position: fixed; //
top: 50%; // 50% top: 50%; // 50%
left: 50%; // 50% left: 50%; // 50%

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

@ -1124,7 +1124,7 @@ onMounted(async () => {
} }
// //
const bgImg = new Image(); const bgImg = new Image();
bgImg.src = '/src/assets/收款明细撤回背景.png';
bgImg.src = '/src/assets/receive-recall.png';
}); });
// 2.10 使 // 2.10 使
@ -1468,7 +1468,7 @@ const handlePagination = (type, val) => {
// //
height: 392px; height: 392px;
width: 700px; width: 700px;
background-image: url('/src/assets/收款明细撤回背景.png');
background-image: url('/src/assets/receive-recall.png');
position: fixed; // position: fixed; //
top: 50%; // 50% top: 50%; // 50%
left: 50%; // 50% left: 50%; // 50%

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

@ -307,13 +307,13 @@
<div v-show="isRefundGold" style="margin-bottom: 15px; "> <div v-show="isRefundGold" style="margin-bottom: 15px; ">
<div style=" display: flex; "> <div style=" display: flex; ">
<span <span
style="color: #999999; display: flex; white-space: nowrap;align-items: center;">永久金币</span>
style="color: #999999; display: flex; white-space: nowrap;align-items: center;width:4vw;">永久金币</span>
<el-input style="padding-right: 10px; height: 30px; width: 110px; margin-bottom: 10px" <el-input style="padding-right: 10px; height: 30px; width: 110px; margin-bottom: 10px"
v-model="refundFormData.permanentGold" disabled /> v-model="refundFormData.permanentGold" disabled />
</div> </div>
<div style="padding-right: 5px; display: flex;"> <div style="padding-right: 5px; display: flex;">
<span <span
style="color: #999999; display: flex; white-space: nowrap;align-items: center;">免费金币</span>
style="color: #999999; display: flex; white-space: nowrap;align-items: center;width:4vw;">免费金币</span>
<el-input style="padding-right: 10px; height: 30px; width: 110px;" <el-input style="padding-right: 10px; height: 30px; width: 110px;"
v-model="refundFormData.freeGold" disabled /> v-model="refundFormData.freeGold" disabled />
</div> </div>
@ -365,11 +365,11 @@
</div> </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-text style="width:4vw;">永久金币</el-text>
<el-input v-model="refundFormData.aaa" style="width:5vw;" />&nbsp;&nbsp;
<el-input v-model="refundFormData.partRefundGold" style="width:5vw;" />&nbsp;&nbsp;
</div> </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-text style="width:4vw;">免费金币</el-text>
<el-input v-model="refundFormData.bbb" style="width:5vw;" />&nbsp;&nbsp;
<el-input v-model="refundFormData.partRefundFree" style="width:5vw;" />&nbsp;&nbsp;
</div> </div>
<div class="add-item"> <div class="add-item">
<el-text style="width:4vw;">退款理由</el-text> <el-text style="width:4vw;">退款理由</el-text>
@ -846,7 +846,9 @@ const submitRefund = async () => {
id: refundFormData.value.id, id: refundFormData.value.id,
orderCode: refundFormData.value.orderCode, orderCode: refundFormData.value.orderCode,
permanentGold: (refundFormData.value.permanentGold) * 100 || 0, permanentGold: (refundFormData.value.permanentGold) * 100 || 0,
freeGold: (refundFormData.value.freeGold) * 100 || 0
freeGold: (refundFormData.value.freeGold) * 100 || 0,
partRefundGold: (refundFormData.value.partRefundGold) * 100 || 0,
partRefundFree: (refundFormData.value.partRefundFree) * 100 || 0,
} }
}) })
if (result.code == 200) { if (result.code == 200) {
@ -1004,7 +1006,7 @@ onMounted(async () => {
.recallDialog { .recallDialog {
height: 392px; height: 392px;
width: 700px; width: 700px;
background-image: url('/src/assets/收款明细撤回背景.png');
background-image: url('/src/assets/receive-recall.png');
position: fixed; position: fixed;
top: 50%; top: 50%;
left: 50%; left: 50%;

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

@ -49,8 +49,8 @@
</div> </div>
<div> <div>
<el-button type="primary" @click="getRefund">查询</el-button> <el-button type="primary" @click="getRefund">查询</el-button>
<!-- <el-button type="warning">导出excel</el-button>
<el-button type="primary">查看导出列表</el-button> -->
<el-button type="warning" @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> </div>
</div> </div>
@ -63,7 +63,7 @@
<el-table-column prop="jwcode" label="姓名" width="120" fixed="left" show-overflow-tooltip /> <el-table-column prop="jwcode" label="姓名" width="120" fixed="left" show-overflow-tooltip />
<el-table-column prop="marketName" label="所属地区" width="120" /> <el-table-column prop="marketName" label="所属地区" width="120" />
<el-table-column prop="goodsName" label="产品名称" width="130" show-overflow-tooltip /> <el-table-column prop="goodsName" label="产品名称" width="130" show-overflow-tooltip />
<el-table-column prop="goodNum" label="产品数量" width="120" />
<el-table-column prop="goodsNum" label="产品数量" width="120" />
<el-table-column prop="refundModel" label="退款方式" width="120"> <el-table-column prop="refundModel" label="退款方式" width="120">
<template #default="scope"> <template #default="scope">
{{ scope.row.refundModel === 1 ? '部分退款' : '全部退款' }} {{ scope.row.refundModel === 1 ? '部分退款' : '全部退款' }}
@ -76,7 +76,7 @@
<template #default="scope"> <template #default="scope">
{{ {{
[20].includes(scope.row.status) ? '待审核' : [20].includes(scope.row.status) ? '待审核' :
[30,40].includes(scope.row.status) ? '审核通过' :
[30, 40].includes(scope.row.status) ? '审核通过' :
[22, 32].includes(scope.row.status) ? '已驳回' : [22, 32].includes(scope.row.status) ? '已驳回' :
scope.row.status === 41 ? '退款成功' : scope.row.status scope.row.status === 41 ? '退款成功' : scope.row.status
}} }}
@ -113,8 +113,8 @@
</div> </div>
<div class="top-item"> <div class="top-item">
<el-text style="width:4vw;" size="small">退款理由</el-text> <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>
</div> </div>
<el-button @click="" class="smallTitle" size="small">原订单信息</el-button> <el-button @click="" class="smallTitle" size="small">原订单信息</el-button>
@ -172,7 +172,7 @@
</div> </div>
<div class="right-item"> <div class="right-item">
<el-text style="width:4vw;" size="small">手续费</el-text> <el-text style="width:4vw;" size="small">手续费</el-text>
<el-input v-model="auditRow.handlingCharge" size="small" style="width:10vw;" disabled />
<el-input v-model="auditRow.handlingCharges" size="small" style="width:10vw;" disabled />
</div> </div>
<div class="right-item"> <div class="right-item">
<el-text style="width:4vw;" size="small">付款时间</el-text> <el-text style="width:4vw;" size="small">付款时间</el-text>
@ -226,7 +226,7 @@
</div> </div>
</template> </template>
<template #icon> <template #icon>
<img src="@/assets/images/已审核.png" alt="已完成">
<img src="@/assets/images/refund-approved.png" alt="已完成">
</template> </template>
</el-step> </el-step>
@ -237,9 +237,9 @@
</div> </div>
</template> </template>
<template #icon> <template #icon>
<img v-if="currentStep === 2" src="@/assets/images/已驳回.png" alt="已驳回">
<img v-else-if="currentStep === 1" src="@/assets/images/待审核.png" alt="待审核">
<img v-else-if="currentStep > 2" src="@/assets/images/已审核.png" alt="已审核">
<img v-if="currentStep === 2" src="@/assets/images/refund-rejected.png" alt="已驳回">
<img v-else-if="currentStep === 1" src="@/assets/images/refund-approving.png" alt="待审核">
<img v-else-if="currentStep > 2" src="@/assets/images/refund-approved.png" alt="已审核">
</template> </template>
</el-step> </el-step>
@ -250,10 +250,11 @@
</div> </div>
</template> </template>
<template #icon> <template #icon>
<img v-if="currentStep === 4" src="@/assets/images/已驳回.png" alt="已驳回">
<img v-else-if="currentStep === 3" src="@/assets/images/待审核.png" alt="待审核">
<img v-else-if="currentStep > 3 && currentStep != 4" src="@/assets/images/已审核.png" alt="已审核">
<img v-else-if="currentStep < 3" src="@/assets/images/还没传到.png" alt="未开始">
<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" src="@/assets/images/refund-waiting.png" alt="未开始">
</template> </template>
</el-step> </el-step>
@ -264,10 +265,11 @@
</div> </div>
</template> </template>
<template #icon> <template #icon>
<img v-if="currentStep === 6" src="@/assets/images/已驳回.png" alt="已驳回">
<img v-else-if="currentStep === 5" src="@/assets/images/待审核.png" alt="待审核">
<img v-else-if="currentStep > 5 && currentStep != 6" src="@/assets/images/已审核.png" alt="已审核">
<img v-else-if="currentStep < 5" src="@/assets/images/还没传到.png" alt="未开始">
<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" src="@/assets/images/refund-waiting.png" alt="未开始">
</template> </template>
</el-step> </el-step>
@ -278,9 +280,9 @@
</div> </div>
</template> </template>
<template #icon> <template #icon>
<img v-if="currentStep === 7" src="@/assets/images/待审核.png" alt="待处理">
<img v-else-if="currentStep === 8" src="@/assets/images/已审核.png" alt="已完成">
<img v-else-if="currentStep < 7" src="@/assets/images/还没传到.png" alt="未开始">
<img v-if="currentStep === 7" src="@/assets/images/refund-approving.png" alt="待处理">
<img v-else-if="currentStep === 8" src="@/assets/images/refund-approved.png" alt="已完成">
<img v-else-if="currentStep < 7" src="@/assets/images/refund-waiting.png" alt="未开始">
</template> </template>
</el-step> </el-step>
</el-steps> </el-steps>
@ -290,6 +292,37 @@
</div> </div>
</div> </div>
</el-dialog> </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>
</template>
</el-table-column>
</el-table>
<template #footer>
<div class="dialog-footer">
<el-button text @click="exportListVisible = false">关闭</el-button>
</div>
</template>
</el-dialog>
</template> </template>
<script setup> <script setup>
import { ref, onMounted } from 'vue' import { ref, onMounted } from 'vue'
@ -302,8 +335,9 @@ import dayjs from 'dayjs'
const adminStore = useAdminStore() const adminStore = useAdminStore()
const { adminData, menuTree } = storeToRefs(adminStore) const { adminData, menuTree } = storeToRefs(adminStore)
import { permissionMapping, findMenuById, hasMenuPermission } from "@/utils/menuTreePermission.js" import { permissionMapping, findMenuById, hasMenuPermission } from "@/utils/menuTreePermission.js"
import moment from 'moment'
import RefundChargeBackground from '@/assets/images/背景图.png'
import RefundChargeBackground from '@/assets/images/refund-progress.png'
const currentStep = ref(0)// const currentStep = ref(0)//
const searchForm = ref({ const searchForm = ref({
@ -332,6 +366,11 @@ const areaCharge = ref('')// 地区负责人
const headFinance = ref('')// const headFinance = ref('')//
const executor = ref('')// const executor = ref('')//
const uploadRef = ref(null) const uploadRef = ref(null)
const exportListVisible = ref(false)
const exportList = ref([])
//
const exportListLoading = ref(false)
const statusStepMap = { const statusStepMap = {
10: [1, false], 10: [1, false],
12: [2, true], 12: [2, true],
@ -413,7 +452,7 @@ const channelOptions = ref([{
label: 'Ipay88-链接收款' label: 'Ipay88-链接收款'
} }
]) ])
const statusList = ref(['待审核','审核通过','已驳回','退款成功'])
const statusList = ref(['待审核', '审核通过', '已驳回', '退款成功'])
// //
const getRefund = async function () { const getRefund = async function () {
if (!hasMenuPermission(menuTree.value, permissionMapping.view_area_manager_refund)) { if (!hasMenuPermission(menuTree.value, permissionMapping.view_area_manager_refund)) {
@ -436,7 +475,7 @@ const getRefund = async function () {
const params = { const params = {
pageNum: pagination.value.pageNum, pageNum: pagination.value.pageNum,
pageSize: pagination.value.pageSize, pageSize: pagination.value.pageSize,
cashRecordDone: {
cashRecordDTO: {
jwcode: searchForm.value.jwcode,// jwcode: searchForm.value.jwcode,//
name: searchForm.value.name,// name: searchForm.value.name,//
markets: searchForm.value.markets,// markets: searchForm.value.markets,//
@ -505,7 +544,7 @@ const handleReject = async function () {
rejectReason: addForm.value.remark, rejectReason: addForm.value.remark,
areaCharge: adminData.value.adminName, areaCharge: adminData.value.adminName,
auditId: auditRow.value.auditId, auditId: auditRow.value.auditId,
orderCode:auditRow.value.orderCode
orderCode: auditRow.value.orderCode
} }
const result = await API({ const result = await API({
url: '/Money/review', url: '/Money/review',
@ -543,7 +582,7 @@ const showStep = function (row) {
isReject.value = reject isReject.value = reject
} }
console.log('步骤条状态',currentStep.value)
console.log('步骤条状态', currentStep.value)
showSteps.value = true showSteps.value = true
} }
const productList = [ const productList = [
@ -704,6 +743,106 @@ const getMarket = async function () {
console.log('请求失败', error) console.log('请求失败', error)
} }
} }
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
}
}
const res = await API({ url: '/export/exportFinance', data: params })
if (res.code === 200) {
ElMessage.success('导出成功')
}
}
const openExportList = () => {
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
}
}
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('文件还在导出中,请稍后再试')
}
}
//
const getTagType = (state) => {
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 '未知状态';
}
}
const hideReject = function () { const hideReject = function () {
showReject.value = false showReject.value = false
addForm.value.remark = '' addForm.value.remark = ''
@ -783,8 +922,8 @@ onMounted(() => {
.audit2 { .audit2 {
display: flex; display: flex;
justify-content: center; justify-content: center;
height:auto;
min-height:40vh;
height: auto;
min-height: 40vh;
.top { .top {

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

@ -48,8 +48,8 @@
</div> </div>
<div> <div>
<el-button type="primary" @click="getRefund">查询</el-button> <el-button type="primary" @click="getRefund">查询</el-button>
<!-- <el-button type="warning">导出excel</el-button>
<el-button type="primary">查看导出列表</el-button> -->
<el-button type="warning" @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> </div>
</div> </div>
@ -62,7 +62,7 @@
<el-table-column prop="name" label="姓名" width="120" fixed="left" show-overflow-tooltip /> <el-table-column prop="name" label="姓名" width="120" fixed="left" show-overflow-tooltip />
<el-table-column prop="marketName" label="所属地区" width="120" /> <el-table-column prop="marketName" label="所属地区" width="120" />
<el-table-column prop="goodsName" label="产品名称" width="130" show-overflow-tooltip /> <el-table-column prop="goodsName" label="产品名称" width="130" show-overflow-tooltip />
<el-table-column prop="goodNum" label="产品数量" width="120" />
<el-table-column prop="goodsNum" label="产品数量" width="120" />
<el-table-column prop="refundModel" label="退款方式" width="120"> <el-table-column prop="refundModel" label="退款方式" width="120">
<template #default="scope"> <template #default="scope">
{{ scope.row.refundModel === 1 ? '部分退款' : '全部退款' }} {{ scope.row.refundModel === 1 ? '部分退款' : '全部退款' }}
@ -171,7 +171,7 @@
</div> </div>
<div class="right-item"> <div class="right-item">
<el-text style="width:4vw;" size="small">手续费</el-text> <el-text style="width:4vw;" size="small">手续费</el-text>
<el-input v-model="auditRow.handlingCharge" size="small" style="width:10vw;" disabled />
<el-input v-model="auditRow.handlingCharges" size="small" style="width:10vw;" disabled />
</div> </div>
<div class="right-item"> <div class="right-item">
<el-text style="width:4vw;" size="small">付款时间</el-text> <el-text style="width:4vw;" size="small">付款时间</el-text>
@ -225,7 +225,7 @@
</div> </div>
</template> </template>
<template #icon> <template #icon>
<img src="@/assets/images/已审核.png" alt="已完成">
<img src="@/assets/images/refund-approved.png" alt="已完成">
</template> </template>
</el-step> </el-step>
@ -236,9 +236,9 @@
</div> </div>
</template> </template>
<template #icon> <template #icon>
<img v-if="currentStep === 2" src="@/assets/images/已驳回.png" alt="已驳回">
<img v-else-if="currentStep === 1" src="@/assets/images/待审核.png" alt="待审核">
<img v-else-if="currentStep > 2" src="@/assets/images/已审核.png" alt="已审核">
<img v-if="currentStep === 2" src="@/assets/images/refund-rejected.png" alt="已驳回">
<img v-else-if="currentStep === 1" src="@/assets/images/refund-approving.png" alt="待审核">
<img v-else-if="currentStep > 2" src="@/assets/images/refund-approved.png" alt="已审核">
</template> </template>
</el-step> </el-step>
@ -249,10 +249,10 @@
</div> </div>
</template> </template>
<template #icon> <template #icon>
<img v-if="currentStep === 4" src="@/assets/images/已驳回.png" alt="已驳回">
<img v-else-if="currentStep === 3" src="@/assets/images/待审核.png" alt="待审核">
<img v-else-if="currentStep > 3 && currentStep != 4" src="@/assets/images/已审核.png" alt="已审核">
<img v-else-if="currentStep < 3" src="@/assets/images/还没传到.png" alt="未开始">
<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" src="@/assets/images/refund-waiting.png" alt="未开始">
</template> </template>
</el-step> </el-step>
@ -263,10 +263,10 @@
</div> </div>
</template> </template>
<template #icon> <template #icon>
<img v-if="currentStep === 6" src="@/assets/images/已驳回.png" alt="已驳回">
<img v-else-if="currentStep === 5" src="@/assets/images/待审核.png" alt="待审核">
<img v-else-if="currentStep > 5 && currentStep != 6" src="@/assets/images/已审核.png" alt="已审核">
<img v-else-if="currentStep < 5" src="@/assets/images/还没传到.png" alt="未开始">
<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" src="@/assets/images/refund-waiting.png" alt="未开始">
</template> </template>
</el-step> </el-step>
@ -277,9 +277,9 @@
</div> </div>
</template> </template>
<template #icon> <template #icon>
<img v-if="currentStep === 7" src="@/assets/images/待审核.png" alt="待处理">
<img v-else-if="currentStep === 8" src="@/assets/images/已审核.png" alt="已完成">
<img v-else-if="currentStep < 7" src="@/assets/images/还没传到.png" alt="未开始">
<img v-if="currentStep === 7" src="@/assets/images/refund-approving.png" alt="待处理">
<img v-else-if="currentStep === 8" src="@/assets/images/refund-approved.png" alt="已完成">
<img v-else-if="currentStep < 7" src="@/assets/images/refund-waiting.png" alt="未开始">
</template> </template>
</el-step> </el-step>
</el-steps> </el-steps>
@ -289,6 +289,37 @@
</div> </div>
</div> </div>
</el-dialog> </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>
</template>
</el-table-column>
</el-table>
<template #footer>
<div class="dialog-footer">
<el-button text @click="exportListVisible = false">关闭</el-button>
</div>
</template>
</el-dialog>
</template> </template>
<script setup> <script setup>
import { ref, onMounted } from 'vue' import { ref, onMounted } from 'vue'
@ -301,9 +332,9 @@ import dayjs from 'dayjs'
const adminStore = useAdminStore() const adminStore = useAdminStore()
const { adminData, menuTree } = storeToRefs(adminStore) const { adminData, menuTree } = storeToRefs(adminStore)
import { permissionMapping, findMenuById, hasMenuPermission } from "@/utils/menuTreePermission.js" import { permissionMapping, findMenuById, hasMenuPermission } from "@/utils/menuTreePermission.js"
import { get } from 'lodash'
import moment from 'moment'
import RefundFinanceBackground from '@/assets/images/背景图.png'
import RefundFinanceBackground from '@/assets/images/refund-progress.png'
const currentStep = ref(0)// const currentStep = ref(0)//
const searchForm = ref({ const searchForm = ref({
@ -335,6 +366,10 @@ const areaFinance = ref('')// 地区财务
const areaCharge = ref('')// const areaCharge = ref('')//
const headFinance = ref('')// const headFinance = ref('')//
const executor = ref('')// const executor = ref('')//
const exportListVisible = ref(false)
const exportList = ref([])
//
const exportListLoading = ref(false)
const payments = ref([{ const payments = ref([{
value: '银行转账', value: '银行转账',
label: '银行转账' label: '银行转账'
@ -429,7 +464,7 @@ const getRefund = async function () {
const params = { const params = {
pageNum: pagination.value.pageNum, pageNum: pagination.value.pageNum,
pageSize: pagination.value.pageSize, pageSize: pagination.value.pageSize,
cashRecordDone: {
cashRecordDTO: {
jwcode: searchForm.value.jwcode,// jwcode: searchForm.value.jwcode,//
name: searchForm.value.name,// name: searchForm.value.name,//
markets: searchForm.value.markets,// markets: searchForm.value.markets,//
@ -767,6 +802,109 @@ const showStep = function (row) {
console.log('步骤条状态', currentStep.value) console.log('步骤条状态', currentStep.value)
showSteps.value = true showSteps.value = true
} }
const exportExcel = async function () {
const statusParam = ref([10,20,22,30,32,40,41])
if (searchForm.value.statuses === '审核通过') {
statusParam.value = [20, 30, 40]
} else if (searchForm.value.statuses === '已驳回') {
statusParam.value = [12, 22, 32]
} else if (searchForm.value.statuses === '待审核') {
statusParam.value = [10]
} else if (searchForm.value.statuses === '退款成功') {
statusParam.value = [41]
} else {
statusParam.value = [10,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: statusParam.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('导出成功')
}else{
ElMessage.error(res.msg || '导出失败')
}
}
const openExportList = () => {
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
}
}
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('文件还在导出中,请稍后再试')
}
}
//
const getTagType = (state) => {
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 '未知状态';
}
}
const showAudit2 = function (row) { const showAudit2 = function (row) {
auditRow.value = row auditRow.value = row
showAudit.value = true showAudit.value = true

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

@ -49,8 +49,8 @@
</div> </div>
<div> <div>
<el-button type="primary" @click="getRefund">查询</el-button> <el-button type="primary" @click="getRefund">查询</el-button>
<!-- <el-button type="warning">导出excel</el-button>
<el-button type="primary">查看导出列表</el-button> -->
<el-button type="warning" @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> </div>
</div> </div>
@ -63,7 +63,7 @@
<el-table-column prop="jwcode" label="姓名" width="120" fixed="left" show-overflow-tooltip /> <el-table-column prop="jwcode" label="姓名" width="120" fixed="left" show-overflow-tooltip />
<el-table-column prop="marketName" label="所属地区" width="120" /> <el-table-column prop="marketName" label="所属地区" width="120" />
<el-table-column prop="goodsName" label="产品名称" width="130" show-overflow-tooltip /> <el-table-column prop="goodsName" label="产品名称" width="130" show-overflow-tooltip />
<el-table-column prop="goodNum" label="产品数量" width="120" />
<el-table-column prop="goodsNum" label="产品数量" width="120" />
<el-table-column prop="refundModel" label="退款方式" width="120"> <el-table-column prop="refundModel" label="退款方式" width="120">
<template #default="scope"> <template #default="scope">
{{ scope.row.refundModel === 1 ? '部分退款' : '全部退款' }} {{ scope.row.refundModel === 1 ? '部分退款' : '全部退款' }}
@ -172,7 +172,7 @@
</div> </div>
<div class="right-item"> <div class="right-item">
<el-text style="width:4vw;" size="small">手续费</el-text> <el-text style="width:4vw;" size="small">手续费</el-text>
<el-input v-model="auditRow.handlingCharge" size="small" style="width:10vw;" disabled />
<el-input v-model="auditRow.handlingCharges" size="small" style="width:10vw;" disabled />
</div> </div>
<div class="right-item"> <div class="right-item">
<el-text style="width:4vw;" size="small">付款时间</el-text> <el-text style="width:4vw;" size="small">付款时间</el-text>
@ -236,7 +236,7 @@
</div> </div>
</template> </template>
<template #icon> <template #icon>
<img src="@/assets/images/已审核.png" alt="已完成">
<img src="@/assets/images/refund-approved.png" alt="已完成">
</template> </template>
</el-step> </el-step>
@ -247,9 +247,9 @@
</div> </div>
</template> </template>
<template #icon> <template #icon>
<img v-if="currentStep === 2" src="@/assets/images/已驳回.png" alt="已驳回">
<img v-else-if="currentStep === 1" src="@/assets/images/待审核.png" alt="待审核">
<img v-else-if="currentStep > 2" src="@/assets/images/已审核.png" alt="已审核">
<img v-if="currentStep === 2" src="@/assets/images/refund-rejected.png" alt="已驳回">
<img v-else-if="currentStep === 1" src="@/assets/images/refund-approving.png" alt="待审核">
<img v-else-if="currentStep > 2" src="@/assets/images/refund-approved.png" alt="已审核">
</template> </template>
</el-step> </el-step>
@ -260,10 +260,10 @@
</div> </div>
</template> </template>
<template #icon> <template #icon>
<img v-if="currentStep === 4" src="@/assets/images/已驳回.png" alt="已驳回">
<img v-else-if="currentStep === 3" src="@/assets/images/待审核.png" alt="待审核">
<img v-else-if="currentStep > 3 && currentStep != 4" src="@/assets/images/已审核.png" alt="已审核">
<img v-else-if="currentStep < 3" src="@/assets/images/还没传到.png" alt="未开始">
<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" src="@/assets/images/refund-waiting.png" alt="未开始">
</template> </template>
</el-step> </el-step>
@ -274,10 +274,10 @@
</div> </div>
</template> </template>
<template #icon> <template #icon>
<img v-if="currentStep === 6" src="@/assets/images/已驳回.png" alt="已驳回">
<img v-else-if="currentStep === 5" src="@/assets/images/待审核.png" alt="待审核">
<img v-else-if="currentStep > 5 && currentStep != 6" src="@/assets/images/已审核.png" alt="已审核">
<img v-else-if="currentStep < 5" src="@/assets/images/还没传到.png" alt="未开始">
<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" src="@/assets/images/refund-waiting.png" alt="未开始">
</template> </template>
</el-step> </el-step>
@ -288,9 +288,9 @@
</div> </div>
</template> </template>
<template #icon> <template #icon>
<img v-if="currentStep === 7" src="@/assets/images/待审核.png" alt="待处理">
<img v-else-if="currentStep === 8" src="@/assets/images/已审核.png" alt="已完成">
<img v-else-if="currentStep < 7" src="@/assets/images/还没传到.png" alt="未开始">
<img v-if="currentStep === 7" src="@/assets/images/refund-approving.png" alt="待处理">
<img v-else-if="currentStep === 8" src="@/assets/images/refund-approved.png" alt="已完成">
<img v-else-if="currentStep < 7" src="@/assets/images/refund-waiting.png" alt="未开始">
</template> </template>
</el-step> </el-step>
</el-steps> </el-steps>
@ -300,9 +300,40 @@
</div> </div>
</div> </div>
</el-dialog> </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>
</template>
</el-table-column>
</el-table>
<template #footer>
<div class="dialog-footer">
<el-button text @click="exportListVisible = false">关闭</el-button>
</div>
</template>
</el-dialog>
</template> </template>
<script setup> <script setup>
import BackgroundSvg from '@/assets/images/背景图.png'
import BackgroundSvg from '@/assets/images/refund-progress.png'
import { ref, onMounted } from 'vue' import { ref, onMounted } from 'vue'
import { ElMessage } from 'element-plus' import { ElMessage } from 'element-plus'
import API from '@/util/http.js' import API from '@/util/http.js'
@ -313,6 +344,7 @@ import dayjs from 'dayjs'
const adminStore = useAdminStore() const adminStore = useAdminStore()
const { adminData, menuTree } = storeToRefs(adminStore) const { adminData, menuTree } = storeToRefs(adminStore)
import { permissionMapping, findMenuById, hasMenuPermission } from "@/utils/menuTreePermission.js" import { permissionMapping, findMenuById, hasMenuPermission } from "@/utils/menuTreePermission.js"
import moment from 'moment'
const currentStep = ref(0)// const currentStep = ref(0)//
const searchForm = ref({ const searchForm = ref({
@ -343,6 +375,10 @@ const areaFinance = ref('')// 地区财务
const areaCharge = ref('')// const areaCharge = ref('')//
const headFinance = ref('')// const headFinance = ref('')//
const executor = ref('')// const executor = ref('')//
const exportListVisible = ref(false)
const exportList = ref([])
//
const exportListLoading = ref(false)
const statusStepMap = { const statusStepMap = {
10: [1, false], 10: [1, false],
12: [2, true], 12: [2, true],
@ -482,7 +518,7 @@ const getRefund = async function () {
const params = { const params = {
pageNum: pagination.value.pageNum, pageNum: pagination.value.pageNum,
pageSize: pagination.value.pageSize, pageSize: pagination.value.pageSize,
cashRecordDone: {
cashRecordDTO: {
jwcode: searchForm.value.jwcode, jwcode: searchForm.value.jwcode,
name: searchForm.value.name, name: searchForm.value.name,
markets: searchForm.value.markets, markets: searchForm.value.markets,
@ -604,6 +640,106 @@ const hideReject = function () {
showReject.value = false showReject.value = false
addForm.value.remark = '' addForm.value.remark = ''
} }
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]
}
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
}
}
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
}
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
}
}
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('文件还在导出中,请稍后再试')
}
}
const getTagType = (state) => {
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 '未知状态';
}
}
const reset = function () { const reset = function () {
searchForm.value = { searchForm.value = {
jwcode: '', jwcode: '',

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

@ -62,7 +62,7 @@
<el-table-column prop="marketName" label="所属地区" width="120" /> <el-table-column prop="marketName" label="所属地区" width="120" />
<el-table-column prop="activity" label="活动名称" width="120px" show-overflow-tooltip /> <el-table-column prop="activity" label="活动名称" width="120px" show-overflow-tooltip />
<el-table-column prop="goodsName" label="产品名称" width="130" show-overflow-tooltip /> <el-table-column prop="goodsName" label="产品名称" width="130" show-overflow-tooltip />
<el-table-column prop="goodNum" label="产品数量" width="120" />
<el-table-column prop="goodsNum" label="产品数量" width="120" />
<el-table-column prop="paymentCurrency" label="付款币种" width="120" /> <el-table-column prop="paymentCurrency" label="付款币种" width="120" />
<el-table-column prop="paymentAmount" label="付款金额" width="120" /> <el-table-column prop="paymentAmount" label="付款金额" width="120" />
<el-table-column prop="payType" label="支付方式" width="140" /> <el-table-column prop="payType" label="支付方式" width="140" />
@ -135,7 +135,7 @@
</div> </div>
<div class="add-item"> <div class="add-item">
<el-text style="width:4vw;">产品数量</el-text> <el-text style="width:4vw;">产品数量</el-text>
<el-input v-model="editRow.goodNum" style="width:10vw;" disabled />
<el-input v-model="editRow.goodsNum" style="width:10vw;" disabled />
&nbsp; &nbsp;
</div> </div>
<div class="add-item"> <div class="add-item">
@ -219,7 +219,7 @@ import { permissionMapping, findMenuById, hasMenuPermission } from "@/utils/menu
import ConfirmDialog from '@/components/dialogs/ConfirmDialog.vue' import ConfirmDialog from '@/components/dialogs/ConfirmDialog.vue'
import { pa } from 'element-plus/es/locales.mjs' import { pa } from 'element-plus/es/locales.mjs'
import RefundRecallBackground from '@/assets/images/撤回.png'
import RefundRecallBackground from '@/assets/images/refund-recall.png'
const dateRange = ref([]) const dateRange = ref([])
const searchForm = ref({ const searchForm = ref({
@ -271,7 +271,7 @@ const getRefund = async function () {
const params = { const params = {
pageNum: pagination.value.pageNum, pageNum: pagination.value.pageNum,
pageSize: pagination.value.pageSize, pageSize: pagination.value.pageSize,
cashRecordDone: {
cashRecordDTO: {
jwcode: searchForm.value.jwcode,// jwcode: searchForm.value.jwcode,//
name: searchForm.value.name,// name: searchForm.value.name,//
markets: searchForm.value.market,// markets: searchForm.value.market,//

2
src/views/permissions/userPermission.vue

@ -9,7 +9,7 @@ import { useAdminStore } from "@/store/index.js"
import { storeToRefs } from "pinia" import { storeToRefs } from "pinia"
import { findMenuById, permissionMapping } from "@/utils/menuTreePermission.js" import { findMenuById, permissionMapping } from "@/utils/menuTreePermission.js"
import BackGroundSvg from '@/assets/SvgIcons/背景.svg'
import BackGroundSvg from '@/assets/SvgIcons/promptBackground.avg'
const adminStore = useAdminStore() const adminStore = useAdminStore()

Loading…
Cancel
Save