|
|
@ -1,5 +1,6 @@ |
|
|
|
<template> |
|
|
|
<div class="content"> |
|
|
|
<div class="card1"> |
|
|
|
<el-card style="margin-bottom: 0.5vh; min-height: 110px;"> |
|
|
|
<div class="row"> |
|
|
|
<div class="rowItem"> |
|
|
@ -34,9 +35,10 @@ |
|
|
|
</div> |
|
|
|
<div class="rowItem" style="width: 30vw"> |
|
|
|
<text style="width: 4vw; margin-left: 0.5vw;">付款时间</text> |
|
|
|
<el-date-picker v-model="getTime" type="datetimerange" range-separator="至" start-placeholder="起始时间" |
|
|
|
end-placeholder="结束时间" style="width: 22vw; " @change="handleDatePickerChange" |
|
|
|
:default-time="defaultTime" :disabled-date="disabledDate" /> |
|
|
|
<el-date-picker v-model="getTime" type="datetimerange" range-separator="至" |
|
|
|
start-placeholder="起始时间" end-placeholder="结束时间" style="width: 22vw; " |
|
|
|
@change="handleDatePickerChange" :default-time="defaultTime" |
|
|
|
:disabled-date="disabledDate" /> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
<div class="row" style="margin-top: 10px;"> |
|
|
@ -48,14 +50,38 @@ |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</el-card> |
|
|
|
</div> |
|
|
|
|
|
|
|
|
|
|
|
<div class="detail"> |
|
|
|
<div class="card2"> |
|
|
|
<el-card> |
|
|
|
<div class="btns"> |
|
|
|
<div class="tabs"> |
|
|
|
<el-button-group> |
|
|
|
<el-button class="btnItem" |
|
|
|
:style="{ backgroundColor: activeTab === 'wait' ? '#2741DE' : '#E5EBFE', color: activeTab === 'wait' ? 'white' : '#666' }" |
|
|
|
@click="navigateTo('wait')"> |
|
|
|
待审核 |
|
|
|
</el-button> |
|
|
|
<el-button class="btnItem" |
|
|
|
:style="{ backgroundColor: activeTab === 'pass' ? '#2741DE' : '#E5EBFE', color: activeTab === 'pass' ? 'white' : '#666' }" |
|
|
|
@click="navigateTo('pass')"> |
|
|
|
已通过 |
|
|
|
</el-button> |
|
|
|
<el-button class="btnItem" |
|
|
|
:style="{ backgroundColor: activeTab === 'reject' ? '#2741DE' : '#E5EBFE', color: activeTab === 'reject' ? 'white' : '#666' }" |
|
|
|
@click="navigateTo('reject')"> |
|
|
|
已驳回 |
|
|
|
</el-button> |
|
|
|
</el-button-group> |
|
|
|
</div> |
|
|
|
<div class="btnAdd"> |
|
|
|
<el-button @click="openAddForm" type="success">新增收款</el-button> |
|
|
|
<el-button @click="openAddForm" type="success">添加收款</el-button> |
|
|
|
</div> |
|
|
|
<div class="form"> |
|
|
|
<el-table :data="tableData" style="width: 80vw;height:54vh" @sort-change="handleSortChange" |
|
|
|
</div> |
|
|
|
|
|
|
|
<div class="table"> |
|
|
|
<el-table :data="tableData" style="width: 80vw;height:54vh;" @sort-change="handleSortChange" |
|
|
|
:row-style="{ height: '60px' }" :header-cell-style="{ textAlign: 'center' }" |
|
|
|
:cell-style="{ textAlign: 'center' }"> |
|
|
|
<el-table-column type="index" label="序号" width="100px" fixed="left"> |
|
|
@ -93,26 +119,65 @@ |
|
|
|
<el-table-column fixed="right" prop="adminName" label="订单状态" width="100px" /> |
|
|
|
<el-table-column fixed="right" prop="rejectReason" label="操作" width="100px" /> |
|
|
|
</el-table> |
|
|
|
</div> |
|
|
|
<div class="pagination"> |
|
|
|
<el-pagination :page-size="pageInfo.pageSize" :page-sizes="[5, 10, 20, 50, 100]" |
|
|
|
layout="total, sizes, prev, pager, next, jumper" :total="total" |
|
|
|
@size-change="handlePagination('size', $event)" |
|
|
|
@current-change="handlePagination('page', $event)"></el-pagination> |
|
|
|
</div> |
|
|
|
</div> |
|
|
|
</el-card> |
|
|
|
</div> |
|
|
|
<el-dialog class="addForm" v-model="addFormisible" width="500px"> |
|
|
|
<el-form> |
|
|
|
<el-dialog class="adddialog" v-model="addFormisible" width="20vw" :before-close="closeAddForm"> |
|
|
|
<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> |
|
|
|
<el-form-item label="客户姓名" required> |
|
|
|
<el-input v-model="addFormData.userName" placeholder="请输入客户姓名" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="所属地区" required> |
|
|
|
<el-input disabled="true" v-model="addFormData.market" placeholder="请输入所属地区" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="活动名称" required> |
|
|
|
<el-input v-model="addFormData.jwcode" placeholder="请输入活动名称" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="产品名称" required> |
|
|
|
<el-select placeholder="请选择产品名称" clearable></el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="付款币种" required> |
|
|
|
<el-select placeholder="请选择付款币种" clearable></el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="付款金额" required> |
|
|
|
<el-input v-model="addFormData.jwcode" placeholder="请输入付款金额" /> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="支付方式" required> |
|
|
|
<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> |
|
|
|
<el-form-item label="转账凭证" required> |
|
|
|
<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" |
|
|
|
style="height: 100%; width: 100%; object-fit: cover;" /> |
|
|
|
<el-icon v-else class="avatar-uploader-icon"> |
|
|
|
<Plus /> |
|
|
|
</el-icon> |
|
|
|
</el-upload> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="驳回理由" required> |
|
|
|
<el-input v-model="rejectReason" type="textarea" :rows="4" placeholder="请输入驳回理由" maxlength="200" |
|
|
|
<el-input v-model="addFormData.mask" type="textarea" :rows="4" placeholder="请输入驳回理由" maxlength="200" |
|
|
|
show-word-limit /> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
<template #footer> |
|
|
|
<span class="dialog-footer"> |
|
|
|
<el-button @click="addFormisible = false">取消</el-button> |
|
|
|
<el-button type="primary" @click="handleReject">确定</el-button> |
|
|
|
<el-button style="background-color: #7E91FF;" @click="closeAddForm">取消</el-button> |
|
|
|
<el-button style="background-color: #2741DE; margin-left: 2.5vw;" type="primary" |
|
|
|
@click="handleReject">确定</el-button> |
|
|
|
</span> |
|
|
|
</template> |
|
|
|
</el-dialog> |
|
|
@ -120,20 +185,98 @@ |
|
|
|
</template> |
|
|
|
<script setup> |
|
|
|
import { ref } from 'vue'; |
|
|
|
import { ElMessage } from 'element-plus' |
|
|
|
import API from '@/util/http.js' |
|
|
|
|
|
|
|
//================= 客服新增弹窗 ================== |
|
|
|
const addFormisible =ref(false) |
|
|
|
const openAddForm =()=>{ |
|
|
|
addFormisible.value = true |
|
|
|
//==================== 标签切换 ========================= |
|
|
|
const activeTab = ref('wait') |
|
|
|
|
|
|
|
const navigateTo = (tab) => { |
|
|
|
if (tab === 'wait') { |
|
|
|
activeTab.value = 'wait' |
|
|
|
} else if (tab === 'pass') { |
|
|
|
activeTab.value = 'pass' |
|
|
|
} |
|
|
|
else if (tab === 'reject') { |
|
|
|
activeTab.value = 'reject' |
|
|
|
} |
|
|
|
} |
|
|
|
//================= 客服新增弹窗 ================== |
|
|
|
const addFormData = ref({ |
|
|
|
|
|
|
|
}) |
|
|
|
const addFormisible = ref(false) |
|
|
|
const uploadRef = ref() |
|
|
|
const openAddForm = () => { |
|
|
|
addFormisible.value = true |
|
|
|
} |
|
|
|
const closeAddForm = () => { |
|
|
|
addFormisible.value = false |
|
|
|
addFormData.value = {} |
|
|
|
} |
|
|
|
|
|
|
|
const handleImgSuccess = (response, uploadFile) => { |
|
|
|
try { |
|
|
|
console.log('11', response) |
|
|
|
addFormData.value.imageUrl = response.data.url |
|
|
|
console.log('22', response.data.url) |
|
|
|
} catch (error) { |
|
|
|
console.log('报错信息', error) |
|
|
|
ElMessage.error(response.msg || '图片上传失败') |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
const handelImgErr = (err) => { |
|
|
|
console.log(err); |
|
|
|
addFormData.value.imageUrl = null |
|
|
|
ElMessage.error("图片上传失败") |
|
|
|
} |
|
|
|
const beforeUpload = (rawFile) => { |
|
|
|
if (rawFile.type !== 'image/jpeg' && rawFile.type !== 'image/png') { |
|
|
|
ElMessage.error('图片必须是jpg或png类型!') |
|
|
|
return false |
|
|
|
} else if (rawFile.size / 1024 / 1024 > 1) { |
|
|
|
ElMessage.error('图片大小不能超过 1MB!') |
|
|
|
return false |
|
|
|
} |
|
|
|
return true |
|
|
|
} |
|
|
|
const handleImageChange = (file) => { |
|
|
|
uploadRef.value.submit() |
|
|
|
} |
|
|
|
|
|
|
|
const customUpload = async (options) => { |
|
|
|
try { |
|
|
|
const formData = new FormData() |
|
|
|
formData.append('file', options.file) |
|
|
|
|
|
|
|
const response = await API({ |
|
|
|
url: 'https://api.homilychart.com/hljw/api/aws/upload', |
|
|
|
method: 'POST', |
|
|
|
data: formData, |
|
|
|
headers: { |
|
|
|
'Content-Type': 'multipart/form-data' |
|
|
|
} |
|
|
|
}) |
|
|
|
if (response.code === 200 && response.data) { |
|
|
|
handleImgSuccess(response, options.file) |
|
|
|
ElMessage.success(response.msg || '上传成功') |
|
|
|
} else { |
|
|
|
options.onError(response) |
|
|
|
ElMessage.error(response.msg || '上传失败') |
|
|
|
} |
|
|
|
} catch (error) { |
|
|
|
console.error('上传错误:', error) |
|
|
|
ElMessage.error(`上传失败: ${error.msg || error.message || '网络异常'}`) |
|
|
|
} |
|
|
|
} |
|
|
|
//========================分页相关================== |
|
|
|
const pageInfo = ref({ |
|
|
|
pageSize: 10, |
|
|
|
pageNum: 1 |
|
|
|
}) |
|
|
|
|
|
|
|
|
|
|
|
const total = ref(0) |
|
|
|
const tableData = [ |
|
|
|
{ |
|
|
@ -211,8 +354,10 @@ const tableData = [ |
|
|
|
<style scoped lang="scss"> |
|
|
|
.content { |
|
|
|
height: 100%; |
|
|
|
width: 80vw; |
|
|
|
background-color: #E7F4FD !important; |
|
|
|
width: 83vw; |
|
|
|
|
|
|
|
.card1 { |
|
|
|
width: 100%; |
|
|
|
|
|
|
|
.row { |
|
|
|
height: 4vh; |
|
|
@ -235,25 +380,71 @@ const tableData = [ |
|
|
|
margin-left: 10px; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.card2 { |
|
|
|
width: 100%; |
|
|
|
|
|
|
|
.detail { |
|
|
|
margin-top: 2vh; |
|
|
|
|
|
|
|
.el-card__body {} |
|
|
|
.btns { |
|
|
|
display: flex; |
|
|
|
align-items: center; |
|
|
|
justify-content: space-between; |
|
|
|
.tabs{ |
|
|
|
min-width: 300px; |
|
|
|
.btnItem { |
|
|
|
margin-left: 10px; |
|
|
|
border-radius: 5px; |
|
|
|
} |
|
|
|
} |
|
|
|
.btnAdd { |
|
|
|
flex: 1; |
|
|
|
justify-content: flex-end; |
|
|
|
margin-right: 1vw; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
.btnAdd {} |
|
|
|
|
|
|
|
.form { |
|
|
|
background-color: #E7F4FD !important; |
|
|
|
.table { |
|
|
|
margin: 10px 3vw; |
|
|
|
border-radius: 20px; |
|
|
|
} |
|
|
|
|
|
|
|
.pagination { |
|
|
|
margin-top: 10px; |
|
|
|
padding: 10px 10px; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
:deep(.adddialog) { |
|
|
|
min-width: 450px; |
|
|
|
background-color: #F3FAFE !important; |
|
|
|
|
|
|
|
.addForm { |
|
|
|
padding: 0 3vw 1vh 1vw; |
|
|
|
|
|
|
|
.el-date-editor { |
|
|
|
display: flex; |
|
|
|
flex: 1; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.dialog-footer { |
|
|
|
display: flex; |
|
|
|
justify-content: center; |
|
|
|
padding-bottom: 1.5vh; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
.addForm ::v-deep .el-dialog__body{ |
|
|
|
background-color: #E7F4FD !important; |
|
|
|
:deep(.adddialog .el-form-item__label) { |
|
|
|
min-width: 80px; |
|
|
|
width: auto; |
|
|
|
font-weight: 800; |
|
|
|
padding-bottom: 15px; |
|
|
|
} |
|
|
|
} |
|
|
|
</style> |