|
|
@ -102,7 +102,7 @@ |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="freeGold" label="支付方式" width="110px"> |
|
|
|
</el-table-column> |
|
|
|
<el-table-column prop="remark" label="付款时间" width="200px" /> |
|
|
|
<el-table-column prop="remark" label="付款时间" width="100px" /> |
|
|
|
<el-table-column prop="payModel" label="转账凭证" width="110px"> |
|
|
|
<template #default="scope"> |
|
|
|
<div v-if="scope.row.voucher" |
|
|
@ -124,8 +124,12 @@ |
|
|
|
<span v-if="kefu && scope.row.orderStatus == '已通过'" style="color: #FA5A1E;">退款</span> |
|
|
|
<span v-else-if="kefu && scope.row.orderStatus == '已撤回'" |
|
|
|
style="color: #2741DE;">编辑</span> |
|
|
|
<span v-else-if="activeTab == 'wait' && !kefu" style="color: #2741DE;">审核</span> |
|
|
|
<span v-else-if="activeTab == 'pass' && !kefu" style="color: #2741DE;" @click="openEditForm">编辑</span> |
|
|
|
<span v-else-if="kefu && scope.row.orderStatus == '待审核'" |
|
|
|
style="color: #FA5A1E;">撤回</span> |
|
|
|
<span v-else-if="activeTab == 'wait' && !kefu" style="color: #2741DE;" |
|
|
|
@click="openAuditForm">审核</span> |
|
|
|
<span v-else-if="activeTab == 'pass' && !kefu" style="color: #2741DE;" |
|
|
|
@click="openEditForm">编辑</span> |
|
|
|
</template> |
|
|
|
</el-table-column> |
|
|
|
</el-table> |
|
|
@ -178,8 +182,8 @@ |
|
|
|
</el-icon> |
|
|
|
</el-upload> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="驳回理由" required> |
|
|
|
<el-input v-model="addFormData.mask" type="textarea" :rows="4" placeholder="请输入驳回理由" maxlength="200" |
|
|
|
<el-form-item label="备注" required> |
|
|
|
<el-input v-model="addFormData.mask" type="textarea" :rows="4" placeholder="请输入备注" maxlength="100" |
|
|
|
show-word-limit /> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
@ -191,66 +195,167 @@ |
|
|
|
</span> |
|
|
|
</template> |
|
|
|
</el-dialog> |
|
|
|
<!-- 编辑弹窗 --> |
|
|
|
<el-dialog class="adddialog" v-model="editFormisible" width="20vw" :before-close="closeEditForm"> |
|
|
|
<!-- 审核弹窗 --> |
|
|
|
<el-dialog class="adddialog" v-model="auditFormisible" width="20vw" :before-close="closeAuditForm"> |
|
|
|
<el-form class="addForm" label-width="4vw" label-position="left"> |
|
|
|
<el-form-item label="精网号" required> |
|
|
|
<el-input v-model="addFormData.jwcode" placeholder="请输入驳回理由" /> |
|
|
|
<el-form-item label="精网号"> |
|
|
|
<el-input v-model="auditFormData.jwcode" placeholder="请输入驳回理由" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="客户姓名" required> |
|
|
|
<el-input v-model="addFormData.userName" placeholder="请输入客户姓名" /> |
|
|
|
<el-form-item label="客户姓名"> |
|
|
|
<el-input v-model="auditFormData.userName" placeholder="请输入客户姓名" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="所属地区" required> |
|
|
|
<el-input disabled="true" v-model="addFormData.market" placeholder="请输入所属地区" /> |
|
|
|
<el-form-item label="所属地区"> |
|
|
|
<el-input readonly v-model="auditFormData.market" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="活动名称" required> |
|
|
|
<el-input v-model="addFormData.jwcode" placeholder="请输入活动名称" /> |
|
|
|
<el-form-item label="活动名称"> |
|
|
|
<el-input v-model="auditFormData.jwcode" placeholder="请输入活动名称" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="产品名称" required> |
|
|
|
<el-form-item label="产品名称"> |
|
|
|
<el-select placeholder="请选择产品名称" clearable></el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="付款币种" required> |
|
|
|
<el-form-item label="付款币种"> |
|
|
|
<el-select placeholder="请选择付款币种" clearable></el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="付款金额" required> |
|
|
|
<el-input v-model="addFormData.jwcode" placeholder="请输入付款金额" /> |
|
|
|
<el-form-item label="付款金额"> |
|
|
|
<el-input v-model="auditFormData.jwcode" placeholder="请输入付款金额" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="支付方式" required> |
|
|
|
<el-form-item label="支付方式"> |
|
|
|
<el-select placeholder="请选择支付方式" clearable></el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="付款时间" required> |
|
|
|
<el-time-picker v-model="addFormData.time" placeholder="请选择付款时间" /> |
|
|
|
<el-form-item label="付款时间"> |
|
|
|
<el-time-picker v-model="auditFormData.time" placeholder="请选择付款时间" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="转账凭证" required> |
|
|
|
<el-form-item label="转账凭证"> |
|
|
|
<div class="pic"> |
|
|
|
<el-upload ref="uploadRef" class="uploader" :show-file-list="false" list-type="picture-card" |
|
|
|
:auto-upload="false" :before-upload="beforeUpload" :on-error="handelImgErr" |
|
|
|
:on-change="handleImageChange" :http-request="customUpload"> |
|
|
|
<img v-if="addFormData.imageUrl" :src="addFormData.imageUrl" class="avatar" |
|
|
|
<img v-if="auditFormData.imageUrl" :src="auditFormData.imageUrl" class="avatar" |
|
|
|
style="height: 100%; width: 100%; object-fit: cover;" /> |
|
|
|
<el-icon v-else class="avatar-uploader-icon"> |
|
|
|
<Plus /> |
|
|
|
</el-icon> |
|
|
|
</el-upload> |
|
|
|
<el-text class="picText"> |
|
|
|
仅支持.jpg .png格式文件≤ 1 MB |
|
|
|
</el-text> |
|
|
|
</div> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="驳回理由" required> |
|
|
|
<el-input v-model="addFormData.mask" type="textarea" :rows="4" placeholder="请输入驳回理由" maxlength="200" |
|
|
|
<el-form-item label="备注"> |
|
|
|
<el-input v-model="auditFormData.mask" type="textarea" :rows="3" placeholder="请输入备注" maxlength="100" |
|
|
|
show-word-limit /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="驳回理由" v-if="ifReject" required> |
|
|
|
<el-input v-model="auditFormData.mask" type="textarea" :rows="3" placeholder="请输入驳回理由" |
|
|
|
maxlength="100" show-word-limit /> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
<template #footer> |
|
|
|
<span class="dialog-footer"> |
|
|
|
<el-button style="background-color: #7E91FF;" @click="closeEditForm">取消</el-button> |
|
|
|
<span class="dialog-footer" v-if="!ifReject"> |
|
|
|
<el-button style="background-color: #7E91FF;" @click="ifReject = true">驳回</el-button> |
|
|
|
<el-button :style="{ |
|
|
|
backgroundColor: isBtnDisabled ? '#E5E5E5FF' : '#2741DEFF', |
|
|
|
marginLeft: '60px', |
|
|
|
color: isBtnDisabled ? '#8A8A8A' : '#F3FAFE' |
|
|
|
}" @click="handleReject" :disabled="isBtnDisabled">{{ btnText }}</el-button> |
|
|
|
</span> |
|
|
|
<span class="dialog-footer" v-if="ifReject"> |
|
|
|
<el-button style="background-color: #7E91FF;" @click="closeAuditForm">取消</el-button> |
|
|
|
<el-button style="background-color: #2741DE; margin-left: 2.5vw;" type="primary" |
|
|
|
@click="handleReject">确定</el-button> |
|
|
|
</span> |
|
|
|
</template> |
|
|
|
</el-dialog> |
|
|
|
<!-- 编辑弹窗 --> |
|
|
|
<el-dialog class="editdialog" v-model="editFormisible" width="20vw" :before-close="closeEditForm"> |
|
|
|
<div class="content"> |
|
|
|
<div class="left"> |
|
|
|
<el-form class="editForm" label-width="4.5vw" label-position="left"> |
|
|
|
<el-form-item label="精网号"> |
|
|
|
<el-input v-model="openEditForm.jwcode" placeholder="请输入驳回理由" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="客户姓名"> |
|
|
|
<el-input v-model="openEditForm.userName" placeholder="请输入客户姓名" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="所属地区"> |
|
|
|
<el-input disabled="true" v-model="openEditForm.market" placeholder="请输入所属地区" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="活动名称"> |
|
|
|
<el-input v-model="openEditForm.jwcode" placeholder="请输入活动名称" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="产品名称"> |
|
|
|
<el-select placeholder="请选择产品名称" clearable></el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="付款币种"> |
|
|
|
<el-select placeholder="请选择付款币种" clearable></el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="付款金额"> |
|
|
|
<el-input v-model="openEditForm.jwcode" placeholder="请输入付款金额" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="支付方式"> |
|
|
|
<el-select placeholder="请选择支付方式" clearable></el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="付款时间"> |
|
|
|
<el-time-picker v-model="openEditForm.time" placeholder="请选择付款时间" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="转账凭证"> |
|
|
|
<div class="pic"> |
|
|
|
<el-upload ref="uploadRef" class="uploader" :show-file-list="false" |
|
|
|
list-type="picture-card" :auto-upload="false" :before-upload="beforeUpload" |
|
|
|
:on-error="handelImgErr" :on-change="handleImageChange" |
|
|
|
:http-request="customUpload"> |
|
|
|
<img v-if="auditFormData.imageUrl" :src="auditFormData.imageUrl" class="avatar" |
|
|
|
style="height: 100%; width: 100%; object-fit: cover;" /> |
|
|
|
<el-icon v-else class="avatar-uploader-icon"> |
|
|
|
<Plus /> |
|
|
|
</el-icon> |
|
|
|
</el-upload> |
|
|
|
<el-text class="picText"> |
|
|
|
仅支持.jpg .png格式文件≤ 1 MB |
|
|
|
</el-text> |
|
|
|
</div> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="驳回理由"> |
|
|
|
<el-input v-model="addFormData.mask" type="textarea" :rows="4" placeholder="请输入驳回理由" |
|
|
|
maxlength="100" show-word-limit /> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
</div> |
|
|
|
<div class="right"> |
|
|
|
<el-form class="editFormRighrt" label-width="4.5vw" label-position="left"> |
|
|
|
<el-form-item label="精网号"> |
|
|
|
<el-input v-model="openEditForm.jwcode" placeholder="请输入驳回理由" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="客户姓名"> |
|
|
|
<el-input v-model="openEditForm.userName" placeholder="请输入客户姓名" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="所属地区"> |
|
|
|
<el-input disabled="true" v-model="openEditForm.market" placeholder="请输入所属地区" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="活动名称"> |
|
|
|
<el-input v-model="openEditForm.jwcode" placeholder="请输入活动名称" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="产品名称"> |
|
|
|
<el-select placeholder="请选择产品名称" clearable></el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="付款币种"> |
|
|
|
<el-select placeholder="请选择付款币种" clearable></el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="驳回理由"> |
|
|
|
<el-input v-model="addFormData.mask" type="textarea" :rows="4" placeholder="请输入驳回理由" |
|
|
|
maxlength="100" show-word-limit /> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</el-dialog> |
|
|
|
</div> |
|
|
|
</template> |
|
|
|
<script setup> |
|
|
|
import { ref } from 'vue'; |
|
|
|
import { ref, watch } from 'vue'; |
|
|
|
import { ElMessage } from 'element-plus' |
|
|
|
import API from '@/util/http.js' |
|
|
|
import { color } from 'echarts'; |
|
|
|
|
|
|
|
//==================== 标签切换 ========================= |
|
|
|
const activeTab = ref('wait') |
|
|
@ -335,7 +440,7 @@ const customUpload = async (options) => { |
|
|
|
'Content-Type': 'multipart/form-data' |
|
|
|
} |
|
|
|
}) |
|
|
|
if (response.code === 200 && response.data) { |
|
|
|
if (response.code === 100 && response.data) { |
|
|
|
handleImgSuccess(response, options.file) |
|
|
|
ElMessage.success(response.msg || '上传成功') |
|
|
|
} else { |
|
|
@ -360,6 +465,45 @@ const closeEditForm = () => { |
|
|
|
editFormisible.value = false |
|
|
|
editFormData.value = {} |
|
|
|
} |
|
|
|
//================== 审核相关 ========================= |
|
|
|
const auditFormData = ref({ |
|
|
|
|
|
|
|
}) |
|
|
|
const auditFormisible = ref(false) |
|
|
|
//判断弹窗中是否展示驳回 |
|
|
|
const ifReject = ref(false) |
|
|
|
const openAuditForm = () => { |
|
|
|
auditFormisible.value = true |
|
|
|
} |
|
|
|
const countdown = ref(0); // 倒计时秒数(示例设为 5 秒) |
|
|
|
const isBtnDisabled = ref(false); // 按钮是否禁用 |
|
|
|
const btnText = ref('通过(3)'); // 按钮显示的文字(含倒计时) |
|
|
|
const closeAuditForm = () => { |
|
|
|
ifReject.value = false |
|
|
|
auditFormisible.value = false |
|
|
|
auditFormData.value = {} |
|
|
|
} |
|
|
|
//倒计时控制通过按钮 |
|
|
|
watch(auditFormisible, (val) => { |
|
|
|
if (val) { |
|
|
|
countdown.value = 3 |
|
|
|
isBtnDisabled.value = true |
|
|
|
btnText.value = `通过(${countdown.value})` |
|
|
|
|
|
|
|
const timer = setInterval(() => { |
|
|
|
countdown.value-- |
|
|
|
btnText.value = `通过(${countdown.value})` |
|
|
|
console.log(btnText.value); |
|
|
|
|
|
|
|
if (countdown.value <= 0) { |
|
|
|
isBtnDisabled.value = false |
|
|
|
clearInterval(timer) |
|
|
|
btnText.value = '通过' |
|
|
|
} |
|
|
|
}, 1000); |
|
|
|
} |
|
|
|
|
|
|
|
}) |
|
|
|
//========================分页相关================== |
|
|
|
const pageInfo = ref({ |
|
|
|
pageSize: 10, |
|
|
@ -415,7 +559,7 @@ const tableData = [ |
|
|
|
activity: '冬季感恩活动', |
|
|
|
rateName: '钻石尊享产品D', |
|
|
|
money: '欧元', |
|
|
|
permanentGold: '2000.00', |
|
|
|
permanentGold: '1000.00', |
|
|
|
freeGold: '信用卡', |
|
|
|
remark: '2023-12-05 16:40:00', |
|
|
|
voucher: 'https://example.com/images/voucher4.jpg', |
|
|
@ -509,18 +653,46 @@ const tableData = [ |
|
|
|
} |
|
|
|
|
|
|
|
:deep(.adddialog) { |
|
|
|
min-width: 450px; |
|
|
|
min-width: 500px; |
|
|
|
background-color: #F3FAFE !important; |
|
|
|
margin-top: 10vh; |
|
|
|
margin-top: 8vh; |
|
|
|
border-radius: 8px; |
|
|
|
|
|
|
|
.addForm { |
|
|
|
padding: 0 3vw 1vh 1vw; |
|
|
|
padding: 0 60px 1vh 60px; |
|
|
|
|
|
|
|
.el-date-editor { |
|
|
|
display: flex; |
|
|
|
flex: 1; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
.pic { |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
|
|
|
|
.uploader { |
|
|
|
height: 80px; |
|
|
|
width: 80px; |
|
|
|
|
|
|
|
.el-upload { |
|
|
|
height: 100%; |
|
|
|
width: 100%; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.picText { |
|
|
|
color: #999999; |
|
|
|
font-family: "PingFang SC"; |
|
|
|
font-size: 10px; |
|
|
|
font-style: normal; |
|
|
|
font-weight: 400; |
|
|
|
line-height: 20px; |
|
|
|
margin-left: 10px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
.dialog-footer { |
|
|
@ -530,6 +702,99 @@ const tableData = [ |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
:deep(.editdialog) { |
|
|
|
min-width: 990px; |
|
|
|
background-color: #F3FAFE !important; |
|
|
|
margin-top: 8vh; |
|
|
|
border-radius: 8px; |
|
|
|
|
|
|
|
.editForm { |
|
|
|
padding: 0 60px 1vh 60px; |
|
|
|
|
|
|
|
.el-date-editor { |
|
|
|
display: flex; |
|
|
|
flex: 1; |
|
|
|
} |
|
|
|
|
|
|
|
.pic { |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
|
|
|
|
.uploader { |
|
|
|
height: 80px; |
|
|
|
width: 80px; |
|
|
|
|
|
|
|
.el-upload { |
|
|
|
height: 100%; |
|
|
|
width: 100%; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.picText { |
|
|
|
color: #999999; |
|
|
|
font-family: "PingFang SC"; |
|
|
|
font-size: 10px; |
|
|
|
font-style: normal; |
|
|
|
font-weight: 400; |
|
|
|
line-height: 20px; |
|
|
|
margin-left: 10px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
.content { |
|
|
|
display: flex; |
|
|
|
height: 100%; |
|
|
|
width: 100%; |
|
|
|
|
|
|
|
.left { |
|
|
|
min-width: 500px; |
|
|
|
} |
|
|
|
|
|
|
|
.right { |
|
|
|
flex: 1; |
|
|
|
|
|
|
|
.editFormRighrt { |
|
|
|
padding: 0 60px 1vh 40px; |
|
|
|
|
|
|
|
.el-date-editor { |
|
|
|
display: flex; |
|
|
|
flex: 1; |
|
|
|
} |
|
|
|
|
|
|
|
.pic { |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
|
|
|
|
.uploader { |
|
|
|
height: 80px; |
|
|
|
width: 80px; |
|
|
|
|
|
|
|
.el-upload { |
|
|
|
height: 100%; |
|
|
|
width: 100%; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.picText { |
|
|
|
color: #999999; |
|
|
|
font-family: "PingFang SC"; |
|
|
|
font-size: 10px; |
|
|
|
font-style: normal; |
|
|
|
font-weight: 400; |
|
|
|
line-height: 20px; |
|
|
|
margin-left: 10px; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
:deep(.adddialog .el-form-item__label) { |
|
|
|
min-width: 80px; |
|
|
|
width: auto; |
|
|
|