init
- 框架初始化 - 安装插件 - 修复PHP8.4报错
This commit is contained in:
22
application/admin/view/shopro/order/aftersale/add_log.html
Normal file
22
application/admin/view/shopro/order/aftersale/add_log.html
Normal file
@@ -0,0 +1,22 @@
|
||||
{include file="/shopro/common/script" /}
|
||||
|
||||
<div id="addLog" class="aftersale-add-log" v-cloak>
|
||||
<el-container class="panel-block">
|
||||
<el-main>
|
||||
<el-scrollbar height="100%">
|
||||
<el-form :model="form.model" :rules="form.rules" ref="formRef" label-width="100px">
|
||||
<el-form-item label="回复内容" prop="content">
|
||||
<el-input type="textarea" v-model="form.model.content" placeholder="请输入"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="选择图片">
|
||||
<sa-uploader v-model="form.model.images" :multiple="true" max="9">
|
||||
</sa-uploader>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-scrollbar>
|
||||
</el-main>
|
||||
<el-footer class="sa-footer--submit sa-flex sa-row-right">
|
||||
<el-button type="primary" @click="onConfirm">确定</el-button>
|
||||
</el-footer>
|
||||
</el-container>
|
||||
</div>
|
||||
417
application/admin/view/shopro/order/aftersale/detail.html
Normal file
417
application/admin/view/shopro/order/aftersale/detail.html
Normal file
@@ -0,0 +1,417 @@
|
||||
{include file="/shopro/common/script" /}
|
||||
|
||||
<style>
|
||||
.aftersale-detail .el-scrollbar__wrap {
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
.aftersale-detail .el-scrollbar__bar.is-horizontal {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.aftersale-detail .tip {
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.aftersale-detail .status-text {
|
||||
line-height: 24px;
|
||||
font-size: 18px;
|
||||
font-weight: 600;
|
||||
color: var(--sa-title);
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.aftersale-detail .status-desc {
|
||||
line-height: 16px;
|
||||
font-size: 12px;
|
||||
color: var(--sa-subfont);
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.aftersale-detail .el-step__head .el-step__line {
|
||||
top: 15px;
|
||||
}
|
||||
|
||||
.aftersale-detail .el-step__head .el-step__icon {
|
||||
width: 32px;
|
||||
height: 32px;
|
||||
color: var(--sa-background-assist);
|
||||
background: var(--sa-place);
|
||||
border: 2px solid var(--sa-table-header-bg);
|
||||
}
|
||||
|
||||
.aftersale-detail .el-step__head.is-finish .el-step__icon {
|
||||
color: var(--sa-background-assist);
|
||||
background: var(--el-color-primary);
|
||||
}
|
||||
|
||||
.aftersale-detail .el-step__title {
|
||||
color: var(--sa-subfont);
|
||||
font-size: 14px;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
.aftersale-detail .el-step__title.is-finish {
|
||||
color: var(--sa-subtitle);
|
||||
}
|
||||
|
||||
.aftersale-detail .el-step__description {
|
||||
padding: 0;
|
||||
color: var(--sa-subfont);
|
||||
}
|
||||
|
||||
.aftersale-detail .el-step__description.is-finish .step-status {
|
||||
color: var(--el-color-primary);
|
||||
}
|
||||
|
||||
.aftersale-detail .step-status {
|
||||
color: var(--sa-font);
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.aftersale-detail .status-steps-mobile {
|
||||
margin-top: 32px;
|
||||
display: none;
|
||||
|
||||
@media only screen and (max-width: 768px) {
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
|
||||
.aftersale-detail .status-steps-mobile .el-step__head {
|
||||
width: fit-content;
|
||||
}
|
||||
|
||||
.aftersale-detail .status-steps-mobile .el-step__head .el-step__line {
|
||||
left: 15px;
|
||||
}
|
||||
|
||||
.aftersale-detail .status-steps-pc {
|
||||
display: flex;
|
||||
margin-top: 32px;
|
||||
|
||||
@media only screen and (max-width: 768px) {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
.aftersale-detail .status-steps-pc .step-status {
|
||||
position: absolute;
|
||||
top: -12px;
|
||||
right: -30px;
|
||||
width: 60px;
|
||||
}
|
||||
|
||||
.aftersale-content {
|
||||
padding: var(--sa-padding) var(--sa-padding) 0;
|
||||
background: var(--sa-background-hex-hover);
|
||||
border-radius: 8px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.aftersale-detail .el-col {
|
||||
margin-bottom: var(--sa-padding);
|
||||
}
|
||||
|
||||
.aftersale-detail .title {
|
||||
line-height: 20px;
|
||||
font-size: 16px;
|
||||
font-weight: 600;
|
||||
color: var(--sa-title);
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.aftersale-detail .subtitle {
|
||||
line-height: 18px;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
color: var(--sa-title);
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.aftersale-detail .item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.aftersale-detail .left {
|
||||
line-height: 16px;
|
||||
font-size: 12px;
|
||||
color: var(--sa-subfont);
|
||||
}
|
||||
|
||||
.aftersale-detail .right {
|
||||
line-height: 16px;
|
||||
font-size: 12px;
|
||||
color: var(--sa-subtitle);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.aftersale-detail .goods-item .goods-title {
|
||||
height: 14px;
|
||||
line-height: 14px;
|
||||
font-size: 12px;
|
||||
font-weight: 500;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.aftersale-detail .goods-item .goods-price {
|
||||
flex-shrink: 0;
|
||||
line-height: 14px;
|
||||
font-size: 12px;
|
||||
color: var(--sa-font);
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.aftersale-detail .goods-item .goods-sku-text {
|
||||
width: fit-content;
|
||||
height: 18px;
|
||||
line-height: 18px;
|
||||
padding: 0 8px;
|
||||
font-size: 12px;
|
||||
color: var(--sa-subfont);
|
||||
background: var(--sa-space);
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.aftersale-detail .log-item {
|
||||
line-height: 16px;
|
||||
font-size: 12px;
|
||||
color: var(--sa-subfont);
|
||||
}
|
||||
|
||||
.aftersale-detail .log-oper {
|
||||
margin-right: 12px;
|
||||
}
|
||||
|
||||
.aftersale-detail .name {
|
||||
font-weight: 500;
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.aftersale-detail .create-time {
|
||||
font-weight: 400;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.aftersale-detail .log-content {
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.aftersale-detail .log-image {
|
||||
margin-right: 4px;
|
||||
}
|
||||
|
||||
.aftersale-detail .log-imageZ:last-of-type {
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.aftersale-detail .log-type-text,
|
||||
.aftersale-detail .log-content {
|
||||
font-weight: 500;
|
||||
color: var(--sa-subtitle);
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="detail" class="aftersale-detail" v-cloak>
|
||||
<el-container class="panel-block">
|
||||
<el-main>
|
||||
<el-scrollbar height="100%">
|
||||
<div class="tip">
|
||||
<div>温馨提示</div>
|
||||
<div>1、如果同意申请,请发送正确的退货地址给买家</div>
|
||||
<div>2、如果拒绝申请,请发送给买家拒绝理由</div>
|
||||
</div>
|
||||
<el-row class="aftersale-content sa-m-b-16" :gutter="10">
|
||||
<el-col :xs="24" :sm="8" :md="8" :lg="8" :xl="8">
|
||||
<div class="status-text sa-m-b-4">
|
||||
{{ state.data.aftersale_status_text }}
|
||||
</div>
|
||||
<div class="status-desc sa-m-b-16">
|
||||
{{ state.data.aftersale_status_desc }}
|
||||
</div>
|
||||
<div class="tools">
|
||||
<template v-if="state.data.aftersale_status == 0 || state.data.aftersale_status == 1">
|
||||
{if $auth->check('shopro/order/aftersale/refund')}
|
||||
<el-button type="primary" link @click="onRefund">售后退款</el-button>
|
||||
{/if}
|
||||
{if $auth->check('shopro/order/aftersale/refuse')}
|
||||
<el-button @click="onRefuse">拒绝售后</el-button>
|
||||
{/if}
|
||||
{if $auth->check('shopro/order/aftersale/completed')}
|
||||
<el-button type="primary" link @click="onCompleted">售后完成</el-button>
|
||||
{/if}
|
||||
</template>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="16" :md="16" :lg="16" :xl="16">
|
||||
<el-steps class="status-steps-mobile" direction="vertical" :active="state.stepActive"
|
||||
:align-center="true" :space="80">
|
||||
<el-step title="买家申请售后" :description="state.data.create_time"></el-step>
|
||||
<el-step title="售后申请处理中" :description="
|
||||
state.stepActive >= 2
|
||||
? state.data.logs.length > 0
|
||||
? state.data.logs[0].updatetime
|
||||
: ''
|
||||
: ''
|
||||
"></el-step>
|
||||
<el-step title="处理完成" :description="state.stepActive == 3 ? state.data.updatetime : ''">
|
||||
</el-step>
|
||||
</el-steps>
|
||||
<el-steps class="status-steps-pc" direction="horizontal" :active="state.stepActive"
|
||||
:align-center="true">
|
||||
<el-step title="买家申请售后" :description="state.data.create_time"></el-step>
|
||||
<el-step title="售后申请处理中" :description="
|
||||
state.stepActive >= 2
|
||||
? state.data.logs.length > 0
|
||||
? state.data.logs[0].updatetime
|
||||
: ''
|
||||
: ''
|
||||
"></el-step>
|
||||
<el-step title="处理完成" :description="state.stepActive == 3 ? state.data.updatetime : ''">
|
||||
</el-step>
|
||||
</el-steps>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<div class="refund-content aftersale-content sa-m-b-26">
|
||||
<div class="title sa-m-b-16">售后详情</div>
|
||||
<el-row :gutter="10">
|
||||
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
|
||||
<div class="subtitle">交易信息</div>
|
||||
<div class="item">
|
||||
<div class="left">用户信息:</div>
|
||||
<div class="right">
|
||||
<sa-user-profile :user="state.data.user" :id="state.data.user_id" :isavatar="false">
|
||||
</sa-user-profile>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="left">订单编号:</div>
|
||||
<div class="right">
|
||||
<template v-if="state.data.order">
|
||||
{{ state.data.order.order_sn }}
|
||||
<el-icon class="copy-document" @click="onClipboard(state.data.order.order_sn)">
|
||||
<copy-document />
|
||||
</el-icon>
|
||||
</template>
|
||||
<template v-else>{{ state.data.order_id }}</template>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="left">物流状态:</div>
|
||||
<div class="right">{{ state.data.dispatch_status_text }}</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="left">订单实付:</div>
|
||||
<div class="right">¥{{ state.data?.order?.pay_fee }}</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="left">订单运费:</div>
|
||||
<div class="right"> ¥{{ state.data?.order?.dispatch_amount }} </div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="left">订单优惠:</div>
|
||||
<div class="right"> ¥{{ state.data?.order?.total_discount_fee }} </div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="left">商品运费:</div>
|
||||
<div class="right">¥{{ state.data.dispatch_fee }}</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="left">商品优惠:</div>
|
||||
<div class="right">¥{{ state.data.discount_fee }}</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="left">建议退款:</div>
|
||||
<div class="right">¥{{ state.data.suggest_refund_fee }}</div>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
|
||||
<div class="subtitle">售后信息</div>
|
||||
<div class="item">
|
||||
<div class="left">售后单号:</div>
|
||||
<div class="right">
|
||||
{{ state.data.aftersale_sn }}
|
||||
<el-icon class="copy-document" @click="onClipboard(state.data.aftersale_sn)">
|
||||
<copy-document />
|
||||
</el-icon>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="left">申请时间:</div>
|
||||
<div class="right">{{ state.data.createtime }}</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="left">联系电话:</div>
|
||||
<div class="right">{{ state.data.mobile || '-' }}</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="left">售后类型:</div>
|
||||
<div class="right">
|
||||
<span class="sa-color--danger">{{ state.data.type_text }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="left">实际退款:</div>
|
||||
<div class="right">
|
||||
<span class="sa-color--danger">¥{{ state.data.refund_fee }}</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="left">申请原因:</div>
|
||||
<div class="right"> {{ state.data.reason }} </div>
|
||||
</div>
|
||||
<div class="item">
|
||||
<div class="left">相关描述:</div>
|
||||
<div class="right" v-html="state.data.content"></div>
|
||||
</div>
|
||||
</el-col>
|
||||
<el-col :xs="24" :sm="12" :md="12" :lg="12" :xl="12">
|
||||
<div class="subtitle">商品信息</div>
|
||||
<div class="goods-item sa-flex sa-col-top">
|
||||
<sa-image class="mr-2" :url="state.data.goods_image" size="64"></sa-image>
|
||||
<div>
|
||||
<div class="goods-title sa-table-line-1">
|
||||
{{state.data.goods_title}}</div>
|
||||
<div class="goods-price">
|
||||
¥{{state.data.goods_price}} <span class="ml-1">x{{state.data.goods_num}}</span>
|
||||
</div>
|
||||
<div v-if="state.data.goods_sku_text" class="goods-sku-text">
|
||||
{{state.data.goods_sku_text}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</div>
|
||||
<div class="log-content aftersale-content">
|
||||
<div class="title sa-flex sa-row-between">
|
||||
<div class="left">协商记录</div>
|
||||
{if $auth->check('shopro/order/aftersale/addLog')}
|
||||
<el-button type="primary" link @click="onAddLog">回复买家</el-button>
|
||||
{/if}
|
||||
</div>
|
||||
<div class="log-item sa-flex sa-col-top" v-for="(log, index) in state.data.logs" :key="log">
|
||||
<sa-image v-if="log.oper" class="log-oper" :url="log.oper.avatar" size="48" radius="24">
|
||||
</sa-image>
|
||||
<div>
|
||||
<div v-if="log.oper" class="name">{{ log.oper.name }}</div>
|
||||
<div class="create-time">{{ log.createtime }}</div>
|
||||
<div class="log-type-text">{{ log.log_type_text }}</div>
|
||||
<div v-if="index < state.data.logs.length - 1" class="log-content" v-html="log.content">
|
||||
</div>
|
||||
<div class="sa-flex mb-2">
|
||||
<template v-for="item in log.images" :key="img">
|
||||
<sa-image class="log-image" :url="item" size="48"></sa-image>
|
||||
</template>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</el-scrollbar>
|
||||
</el-main>
|
||||
</el-container>
|
||||
</div>
|
||||
200
application/admin/view/shopro/order/aftersale/index.html
Normal file
200
application/admin/view/shopro/order/aftersale/index.html
Normal file
@@ -0,0 +1,200 @@
|
||||
{include file="/shopro/common/script" /}
|
||||
|
||||
<style>
|
||||
.aftersale-index .sa-table {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.aftersale-index .sa-table-wrap {
|
||||
height: 100%;
|
||||
margin-left: -48px;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.aftersale-index .sa-table-wrap .sa-table .el-table__header-wrapper {
|
||||
margin-bottom: 4px;
|
||||
}
|
||||
|
||||
.aftersale-index .sa-table-wrap .sa-table .el-table__row {
|
||||
background: var(--sa-background-hex-hover);
|
||||
}
|
||||
|
||||
.aftersale-index .sa-table-wrap .sa-table .el-table__expanded-cell {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.aftersale-index .sa-table-wrap .sa-expand-table .el-table__header-wrapper {
|
||||
margin-bottom: 0;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.aftersale-index .sa-table-wrap .sa-expand-table .el-table__row {
|
||||
background: var(--el-table-tr-bg-color);
|
||||
}
|
||||
|
||||
.aftersale-index .sa-expand-table tr:hover>td.el-table__cell {
|
||||
background-color: var(--el-table-tr-bg-color) !important;
|
||||
}
|
||||
|
||||
.aftersale-index .order-detail {
|
||||
margin-left: 4px;
|
||||
}
|
||||
|
||||
.aftersale-index .goods-item {
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.aftersale-index .goods-item .goods-image {
|
||||
margin-right: 12px;
|
||||
}
|
||||
|
||||
.aftersale-index .goods-item .goods-title {
|
||||
height: 14px;
|
||||
line-height: 14px;
|
||||
font-size: 12px;
|
||||
font-weight: 600;
|
||||
color: var(--el-color-primary);
|
||||
cursor: pointer;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.aftersale-index .goods-item .goods-price {
|
||||
flex-shrink: 0;
|
||||
line-height: 14px;
|
||||
font-size: 12px;
|
||||
color: var(--sa-font);
|
||||
margin-bottom: 12px;
|
||||
}
|
||||
|
||||
.aftersale-index .goods-item .goods-num {
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
.aftersale-index .goods-item .goods-sku-text {
|
||||
width: fit-content;
|
||||
height: 18px;
|
||||
line-height: 18px;
|
||||
padding: 0 8px;
|
||||
font-size: 12px;
|
||||
color: var(--sa-subfont);
|
||||
background: var(--sa-space);
|
||||
border-radius: 10px;
|
||||
}
|
||||
|
||||
.aftersale-index .status--1 {
|
||||
color: var(--el-color-danger);
|
||||
}
|
||||
</style>
|
||||
|
||||
<div id="index" class="aftersale-index panel panel-default panel-intro" v-cloak>
|
||||
<el-container class="panel-block">
|
||||
<el-header class="sa-header">
|
||||
<el-tabs class="sa-tabs" v-model="state.filter.data['aftersale_list.aftersale_status']"
|
||||
@tab-change="onChangeTab">
|
||||
<el-tab-pane v-for="item in type.data.aftersale_status" :key="item"
|
||||
:label="`${item.name}${item.num ? '(' + item.num + ')' : ''}`" :name="item.type"></el-tab-pane>
|
||||
</el-tabs>
|
||||
<div class="sa-title sa-flex sa-row-between">
|
||||
<div class="sa-title-left">
|
||||
<div class="left-name">售后管理</div>
|
||||
<sa-filter-condition v-model="state.filter" @filter-delete="onChangeFilter">
|
||||
</sa-filter-condition>
|
||||
</div>
|
||||
<div class="sa-title-right">
|
||||
<el-button class="sa-button-refresh" icon="RefreshRight" @click="getData"></el-button>
|
||||
<el-button class="sa-button-refresh" icon="Search" @click="onOpenFilter"></el-button>
|
||||
</div>
|
||||
</div>
|
||||
</el-header>
|
||||
<el-main class="sa-main">
|
||||
<div class="sa-table-wrap">
|
||||
<el-table height="100%" class="sa-table" :data="state.data" stripe default-expand-all>
|
||||
<el-table-column type="expand">
|
||||
<template #default="props">
|
||||
<el-table class="sa-table sa-expand-table" :data="props.row.aftersales" stripe>
|
||||
<el-table-column width="48"></el-table-column>
|
||||
<el-table-column min-width="280">
|
||||
<template #default="scope">
|
||||
<div class="aftersale-sn">
|
||||
售后单号:{{ scope.row.aftersale_sn }}
|
||||
<el-icon class="copy-document" @click="onClipboard(scope.row.aftersale_sn)">
|
||||
<copy-document />
|
||||
</el-icon>
|
||||
</div>
|
||||
<div class="create-time"> 申请时间:{{ scope.row.createtime }} </div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column min-width="300">
|
||||
<template #default="scope">
|
||||
<div class="goods-item sa-flex sa-col-top">
|
||||
<sa-image class="mr-2" :url="scope.row.goods_image" size="64"></sa-image>
|
||||
<div>
|
||||
<div class="goods-title sa-table-line-1"
|
||||
@click="onOpenGoods(scope.row.goods_id)">
|
||||
{{scope.row.goods_title}}</div>
|
||||
<div class="goods-price">
|
||||
¥{{scope.row.goods_price}} <span
|
||||
class="goods-num">x{{scope.row.goods_num}}</span>
|
||||
</div>
|
||||
<div v-if="scope.row.goods_sku_text" class="goods-sku-text">
|
||||
{{scope.row.goods_sku_text}}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column min-width="130">
|
||||
<template #default>{{ props.row.pay_fee }}</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="refund_fee" min-width="100"></el-table-column>
|
||||
<el-table-column min-width="80">
|
||||
<template #default="scope">
|
||||
<div :class="scope.row.aftersale_status == '-1' ? 'status--1' : ''">
|
||||
{{ scope.row.aftersale_status_text }}
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column prop="type_text" min-width="80"></el-table-column>
|
||||
<el-table-column min-width="80">
|
||||
<template #default="scope">
|
||||
{if $auth->check('shopro/order/aftersale/detail')}
|
||||
<el-button type="primary" link @click="onDetail(scope.row.id)">详情</el-button>
|
||||
{/if}
|
||||
</template>
|
||||
</el-table-column>
|
||||
</el-table>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="售后信息" min-width="280">
|
||||
<template #default="scope">
|
||||
<div class="order-sn sa-flex">
|
||||
订单号:{{ scope.row.order_sn }}
|
||||
<el-button class="order-detail" type="primary" link size="small"
|
||||
@click="onOpenOrderDetail(scope.row.id)">详情</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="商品信息" min-width="300">
|
||||
<template #default="scope">
|
||||
<div class="create-time"> 下单时间:{{ scope.row.createtime }} </div>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="订单实付金额" min-width="130">
|
||||
<template #default="scope">
|
||||
<sa-user-profile :user="scope.row.user" :id="scope.row.user_id" :isavatar="false">
|
||||
</sa-user-profile>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="已退款金额" min-width="100"></el-table-column>
|
||||
<el-table-column label="处理状态" min-width="80"></el-table-column>
|
||||
<el-table-column label="售后类型" min-width="80"></el-table-column>
|
||||
<el-table-column label="操作" min-width="80"></el-table-column>
|
||||
</el-table>
|
||||
</div>
|
||||
</el-main>
|
||||
<el-footer class="sa-footer sa-flex sa-row-right">
|
||||
<sa-pagination v-model="pagination" @pagination-change="getData"></sa-pagination>
|
||||
</el-footer>
|
||||
</el-container>
|
||||
<sa-filter v-model="state.filter" @filter-change="onChangeFilter"></sa-filter>
|
||||
</div>
|
||||
28
application/admin/view/shopro/order/aftersale/refund.html
Normal file
28
application/admin/view/shopro/order/aftersale/refund.html
Normal file
@@ -0,0 +1,28 @@
|
||||
{include file="/shopro/common/script" /}
|
||||
|
||||
<div id="refund" class="aftersale-refund" v-cloak>
|
||||
<el-container class="panel-block">
|
||||
<el-main>
|
||||
<el-scrollbar height="100%">
|
||||
<el-form :model="form.model" :rules="form.rules" ref="formRef" label-width="100px">
|
||||
<el-form-item label="退款方式">
|
||||
<div>
|
||||
<el-radio-group v-model="form.model.refund_type">
|
||||
<el-radio label="back">原路退回</el-radio>
|
||||
<el-radio label="money">退回余额</el-radio>
|
||||
</el-radio-group>
|
||||
</div>
|
||||
</el-form-item>
|
||||
<el-form-item label="退款金额" prop="refund_money">
|
||||
<el-input v-model="form.model.refund_money"
|
||||
:placeholder="`建议退款金额${state.suggest_refund_fee}元`" />
|
||||
<div class="tip"> 退款时请与买家协商好,退款之后不可撤回 </div>
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-scrollbar>
|
||||
</el-main>
|
||||
<el-footer class="sa-footer--submit sa-flex sa-row-right">
|
||||
<el-button type="primary" @click="onConfirm">确定</el-button>
|
||||
</el-footer>
|
||||
</el-container>
|
||||
</div>
|
||||
18
application/admin/view/shopro/order/aftersale/refuse.html
Normal file
18
application/admin/view/shopro/order/aftersale/refuse.html
Normal file
@@ -0,0 +1,18 @@
|
||||
{include file="/shopro/common/script" /}
|
||||
|
||||
<div id="refuse" class="aftersale-refuse" v-cloak>
|
||||
<el-container class="panel-block">
|
||||
<el-main>
|
||||
<el-scrollbar height="100%">
|
||||
<el-form :model="form.model" :rules="form.rules" ref="formRef" label-width="100px">
|
||||
<el-form-item label="拒绝原因" prop="refuse_msg">
|
||||
<el-input v-model="form.model.refuse_msg" placeholder="请输入拒绝原因" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
</el-scrollbar>
|
||||
</el-main>
|
||||
<el-footer class="sa-footer--submit sa-flex sa-row-right">
|
||||
<el-button type="primary" @click="onConfirm">确定</el-button>
|
||||
</el-footer>
|
||||
</el-container>
|
||||
</div>
|
||||
Reference in New Issue
Block a user