升级Vue3,iView替换ElementPlus

- 删除babel配置、更新依赖与入口初始化
- 全量替换UI组件、样式适配,新增迁移文档与标签/过滤器自动化替换脚本
This commit is contained in:
lifenlong
2026-06-05 17:49:43 +08:00
parent 615ee91511
commit 832fda813b
322 changed files with 25693 additions and 24453 deletions

View File

@@ -3,87 +3,89 @@
<card _Title="账户安全"/>
<div class="safeList">
<!-- 密码 -->
<Row class="safeItem">
<Col :span="2">
<Icon size="40" type="md-key"/>
</Col>
<Col :span="16">
<div class="safeItem">
<div :span="2">
<el-icon :size="40"><Key /></el-icon>
</div>
<div :span="16">
<div class="setDivItem">登录密码</div>
<div class="setDivItem theme">互联网账号存在被盗风险建议您定期更改密码以保护账户安全</div>
</Col>
<Col :span="4">
<Button @click="modifyPwd">修改密码</Button>
</Col>
</Row>
</div>
<div :span="4">
<el-button @click="modifyPwd">修改密码</el-button>
</div>
</div>
<Row class="safeItem">
<Col :span="2">
<Icon size="40" type="md-link" />
</Col>
<Col :span="16">
<div class="safeItem">
<div :span="2">
<el-icon :size="40"><Link /></el-icon>
</div>
<div :span="16">
<div class="setDivItem">第三方账户绑定</div>
<div class="setDivItem theme">绑定后可使用第三方账号快捷登录</div>
<div class="connectList">
<div class="connectRow">
<div class="connectRowLeft">
<span class="connectName">{{ wechatConnect.label }}</span>
<Tag v-if="isBound(wechatConnect.type)" color="success">已绑定</Tag>
<Tag v-else>未绑定</Tag>
<el-tag v-if="isBound(wechatConnect.type)" color="success">已绑定</el-tag>
<el-tag v-else>未绑定</el-tag>
</div>
</div>
<Spin size="large" fix v-if="connectLoading"></Spin>
<el-skeleton size="large" fix v-if="connectLoading"></el-skeleton>
</div>
</Col>
<Col :span="4">
<Button v-if="!isBound(wechatConnect.type)" type="primary" @click="openBindModal(wechatConnect)">绑定</Button>
<Button v-else @click="confirmUnbind(wechatConnect)">解绑</Button>
</Col>
</Row>
</div>
<div :span="4">
<el-button v-if="!isBound(wechatConnect.type)" type="primary" @click="openBindModal(wechatConnect)">绑定</el-button>
<el-button v-else @click="confirmUnbind(wechatConnect)">解绑</el-button>
</div>
</div>
</div>
<Modal
<el-dialog
v-model="bindModalVisible"
title="绑定第三方账户"
:mask-closable="false"
:close-on-click-modal="false"
:footer-hide="bindForm.type === 'WECHAT'"
:ok-text="bindModalOkText"
:loading="bindSubmitLoading"
@on-ok="submitBind"
@on-cancel="resetBindForm"
@ok="submitBind"
@cancel="resetBindForm"
>
<Form :label-width="110">
<FormItem label="类型">
<Input v-model="bindForm.typeLabel" disabled />
</FormItem>
<el-form label-width="110px">
<el-form-item label="类型">
<el-input v-model="bindForm.typeLabel" disabled />
</el-form-item>
<FormItem v-if="bindForm.type === 'WECHAT'" label="公众号二维码">
<el-form-item v-if="bindForm.type === 'WECHAT'" label="公众号二维码">
<div class="wechatQrBox">
<div class="wechatQrImgBox">
<Spin fix v-if="qrCodeLoading"></Spin>
<el-skeleton fix v-if="qrCodeLoading"></el-skeleton>
<img v-if="qrCodeSrc" class="wechatQrImg" :src="qrCodeSrc" alt="微信公众号二维码" />
<div v-else class="wechatQrEmpty">二维码获取失败请刷新重试</div>
</div>
<div class="wechatQrActions">
<Button @click="fetchWechatQrCode">刷新二维码</Button>
<Button type="primary" @click="submitBind">我已完成绑定</Button>
<el-button @click="fetchWechatQrCode">刷新二维码</el-button>
<el-button type="primary" @click="submitBind">我已完成绑定</el-button>
</div>
<div class="wechatQrTip">请使用微信扫码关注/授权完成后点击我已完成绑定检测绑定状态</div>
</div>
</FormItem>
</el-form-item>
<FormItem v-if="bindForm.type !== 'WECHAT'" label="OpenID/UnionID">
<Input v-model="bindForm.unionID" placeholder="请输入 OpenID/UnionID" />
</FormItem>
</Form>
</Modal>
<el-form-item v-if="bindForm.type !== 'WECHAT'" label="OpenID/UnionID">
<el-input v-model="bindForm.unionID" placeholder="请输入 OpenID/UnionID" />
</el-form-item>
</el-form>
</el-dialog>
</div>
</template>
<script>
import { Key, Link } from '@element-plus/icons-vue';
// import { getPwdStatus } from '@/api/account';
import storage from '@/plugins/storage'
import { bindThirdAccount, getThirdAccountBindList, getWechatH5QrCode, unbindThirdAccount } from '@/api/login.js'
export default {
components: { Key, Link },
name: 'AccountSafe',
data () {
return {
@@ -264,7 +266,8 @@ export default {
</script>
<style scoped lang="scss">
::v-deep .ivu-col-span-2, .ivu-col-span-4 {
.safeItem > div:first-child,
.safeItem > div:last-child {
text-align: center;
color: $theme_color;
}
@@ -281,9 +284,8 @@ export default {
border-bottom: 1px solid $border_color;
padding: 16px 0;
::v-deep .ivu-col {
> div {
padding: 8px 0;
}
}

View File

@@ -4,12 +4,12 @@
<div class="order">
<div class="order-title">
<Row class="order-row title">
<i-col span="12">订单详情</i-col>
<i-col span="4">收货人</i-col>
<i-col span="4">评价</i-col>
<i-col span="6"></i-col>
</Row>
<div class="order-row title">
<div span="12">订单详情</div>
<div span="4">收货人</div>
<div span="4">评价</div>
<div span="6"></div>
</div>
</div>
<empty v-if="list.length === 0" />
@@ -20,40 +20,39 @@
<span class="color999 ml_10">{{item.createTime}}</span>
<span class="hover-pointer fontsize_12 eval-detail" @click="evaluateDetail(item.id)">评价详情</span>
</div>
<Row class="order-item-view">
<i-col span="12" class="item-view-name">
<div class="order-item-view">
<div span="12" class="item-view-name">
<div class="order-img hover-color" @click="linkTo(`/goodsDetail?goodsId=${item.goodsId}&skuId=${item.skuId}`)">
<img :src="item.goodsImage" alt="" />
</div>
<div class="order-name hover-color" @click="linkTo(`/goodsDetail?goodsId=${item.goodsId}&skuId=${item.skuId}`)">
{{item.goodsName}}
</div>
</i-col>
<i-col span="4">{{item.createBy | secrecyMobile}}</i-col>
<i-col span="4">
</div>
<div span="4">{{ $filters.secrecyMobile(item.createBy ) }}</div>
<div span="4">
{{item.grade==='GOOD'?'好评' : item.grade === 'WORSE'?'差评' : '中评'}}
</i-col>
<i-col span="4">
<Tooltip transfer>
</div>
<div span="4">
<el-tooltip>
<div class="content">{{item.content}}</div>
<div style="white-space: normal;word-break:break-all" slot="content">
{{item.content}}
</div>
</Tooltip>
</i-col>
</Row>
<template #content>
<div style="white-space: normal;word-break:break-all">
{{item.content}}
</div>
</template>
</el-tooltip>
</div>
</div>
</div>
</div>
<Spin v-if="loading"></Spin>
<el-skeleton v-if="loading"></el-skeleton>
</div>
<!-- 分页 -->
<div class="page-size">
<Page :total="total" @on-change="changePageNum"
@on-page-size-change="changePageSize"
:page-size="params.pageSize"
show-total
show-sizer>
</Page>
<el-pagination :total="total" @current-change="changePageNum"
@size-change="changePageSize"
:page-size="params.pageSize" layout="total, sizes, prev, pager, next"></el-pagination>
</div>
</div>
</template>

View File

@@ -9,7 +9,7 @@
</p>
</div>
<Alert class="l_title" show-icon type="warning">我的申诉信息</Alert>
<el-alert class="l_title" show-icon type="warning">我的申诉信息</el-alert>
<table cellspacing="0" cellpadding='0' border="1">
<tr>
<td>投诉商品</td>
@@ -31,7 +31,7 @@
<div class="demo-upload-list" v-for="(img, index) in detail.images.split(',')" :key="index">
<img :src="img">
<div class="demo-upload-list-cover">
<Icon type="ios-eye-outline" @click.native="handleView(img)"></Icon>
<el-icon @click="handleView(img)"><View /></el-icon>
</div>
</div>
</template>
@@ -41,7 +41,7 @@
</tr>
</table>
<Alert class="l_title" show-icon type="warning">商家申诉信息</Alert>
<el-alert class="l_title" show-icon type="warning">商家申诉信息</el-alert>
<table cellspacing="0" cellpadding='0' border="1">
<tr>
<td>申诉时间</td>
@@ -60,7 +60,7 @@
<div class="demo-upload-list" v-for="(img, index) in detail.appealImages.split(',')" :key="index">
<img :src="img">
<div class="demo-upload-list-cover">
<Icon type="ios-eye-outline" @click.native="handleView(img)"></Icon>
<el-icon @click="handleView(img)"><View /></el-icon>
</div>
</div>
</template>
@@ -70,7 +70,7 @@
</tr>
</table>
<Alert class="l_title" show-icon type="warning">平台仲裁</Alert>
<el-alert class="l_title" show-icon type="warning">平台仲裁</el-alert>
<table cellspacing="0" cellpadding='0' border="1">
<tr>
<td>仲裁意见</td>
@@ -78,7 +78,7 @@
</tr>
</table>
<Alert class="l_title" show-icon type="warning">对话详情</Alert>
<el-alert class="l_title" show-icon type="warning">对话详情</el-alert>
<div class="speak-way" v-if="detail.orderComplaintCommunications && detail.orderComplaintCommunications.length">
<div
class="speak-msg seller"
@@ -108,22 +108,24 @@
<tr>
<td></td>
<td>
<Button type="primary" :loading="submitLoading" @click="handleSubmit" style="margin-left: 5px">
<el-button type="primary" :loading="submitLoading" @click="handleSubmit" style="margin-left: 5px">
回复
</Button>
</el-button>
</td>
</tr>
</table>
<Modal title="View Image" v-model="visible">
<el-dialog title="View Image" v-model="visible">
<img :src="previewImage" v-if="visible" style="width: 100%">
</Modal>
</el-dialog>
</div>
</template>
<script>
import { View } from '@element-plus/icons-vue';
import {getComplainDetail} from '@/api/member.js';
import {communication} from '@/api/order';
export default {
components: { View },
data () {
return {
detail: {}, // 评价详情

View File

@@ -4,12 +4,12 @@
<div class="order">
<div class="order-title">
<Row class="order-row title">
<i-col span="12">商品信息</i-col>
<i-col span="4">投诉状态</i-col>
<i-col span="4">投诉主题</i-col>
<i-col span="6"></i-col>
</Row>
<div class="order-row title">
<div span="12">商品信息</div>
<div span="4">投诉状态</div>
<div span="4">投诉主题</div>
<div span="6"></div>
</div>
</div>
<empty v-if="list.length === 0" />
@@ -21,40 +21,39 @@
<span class="hover-pointer fontsize_12 eval-detail" @click="goDetail(item.id)">投诉详情</span>
<span class="hover-pointer fontsize_12 eval-detail" style="right: 90px" v-if="item.complainStatus === 'APPLYING' || item.complainStatus === 'NEW'" @click="cancel(item.id)">取消投诉</span>
</div>
<Row class="order-item-view">
<i-col span="12" class="item-view-name">
<div class="order-item-view">
<div span="12" class="item-view-name">
<div class="order-img hover-color" @click="linkTo(`/goodsDetail?goodsId=${item.goodsId}&skuId=${item.skuId}`)">
<img :src="item.goodsImage" alt="" />
</div>
<div class="order-name hover-color" @click="linkTo(`/goodsDetail?goodsId=${item.goodsId}&skuId=${item.skuId}`)">
{{item.goodsName}}
</div>
</i-col>
<i-col span="4">{{statusLabel[item.complainStatus]}}</i-col>
<i-col span="4">
</div>
<div span="4">{{statusLabel[item.complainStatus]}}</div>
<div span="4">
<div class="content">{{item.complainTopic}}</div>
</i-col>
<i-col span="4">
<Tooltip >
</div>
<div span="4">
<el-tooltip>
<div class="content">{{item.content}}</div>
<div style="white-space: normal;" slot="content">
{{item.content}}
</div>
</Tooltip>
</i-col>
</Row>
<template #content>
<div style="white-space: normal;">
{{item.content}}
</div>
</template>
</el-tooltip>
</div>
</div>
</div>
</div>
<Spin v-if="loading"></Spin>
<el-skeleton v-if="loading"></el-skeleton>
</div>
<!-- 分页 -->
<div class="page-size">
<Page :total="total" @on-change="changePageNum"
@on-page-size-change="changePageSize"
:page-size="params.pageSize"
show-total
show-sizer>
</Page>
<el-pagination :total="total" @current-change="changePageNum"
@size-change="changePageSize"
:page-size="params.pageSize" layout="total, sizes, prev, pager, next"></el-pagination>
</div>
</div>
</template>

View File

@@ -4,39 +4,38 @@
<!-- 分销申请 -->
<div v-if="status === 0">
<Alert type="warning">分销商申请</Alert>
<Form ref="form" :model="applyForm" :rules="rules">
<FormItem label="姓名" prop="name">
<Input v-model="applyForm.name"></Input>
</FormItem>
<FormItem label="身份证号" prop="idNumber">
<Input v-model="applyForm.idNumber"></Input>
</FormItem>
<FormItem label="银行开户行" prop="settlementBankBranchName">
<Input v-model="applyForm.settlementBankBranchName"></Input>
</FormItem>
<FormItem label="银行开户名" prop="settlementBankAccountName">
<Input v-model="applyForm.settlementBankAccountName"></Input>
</FormItem>
<FormItem label="银行账号" prop="settlementBankAccountNum">
<Input v-model="applyForm.settlementBankAccountNum"></Input>
</FormItem>
<el-alert type="warning">分销商申请</el-alert>
<el-form ref="form" :model="applyForm" :rules="rules">
<el-form-item label="姓名" prop="name">
<el-input v-model="applyForm.name"></el-input>
</el-form-item>
<el-form-item label="身份证号" prop="idNumber">
<el-input v-model="applyForm.idNumber"></el-input>
</el-form-item>
<el-form-item label="银行开户行" prop="settlementBankBranchName">
<el-input v-model="applyForm.settlementBankBranchName"></el-input>
</el-form-item>
<el-form-item label="银行开户名" prop="settlementBankAccountName">
<el-input v-model="applyForm.settlementBankAccountName"></el-input>
</el-form-item>
<el-form-item label="银行账号" prop="settlementBankAccountNum">
<el-input v-model="applyForm.settlementBankAccountNum"></el-input>
</el-form-item>
<FormItem>
<Button type="primary" :loading="applyLoading" @click="apply"
>提交申请</Button
<el-form-item>
<el-button type="primary" :loading="applyLoading" @click="apply"
>提交申请</el-button
>
</FormItem>
</Form>
</el-form-item>
</el-form>
</div>
<!-- 分销审核 -->
<div v-if="status === 1">
<Alert type="success">
您提交的信息正在审核
<template slot="desc"
>提交认证申请后工作人员将在三个工作日进行核对完成审核</template
>
</Alert>
<el-alert
type="success"
title="您提交的信息正在审核"
description="提交认证申请后工作人员将在三个工作日进行核对完成审核"
/>
</div>
<!-- 分销提现商品订单 -->
<div v-if="status === 2">
@@ -54,211 +53,173 @@
<div class="mb_20 account-price">
<span class="subTips">可提现金额</span>
<span class="fontsize_48 global_color"
>{{ result.canRebate | unitPrice }}</span
>
>{{ $filters.unitPrice(result.canRebate) }}</span>
<span class="subTips">冻结金额</span>
<span class="">{{ result.commissionFrozen | unitPrice }}</span>
<span class="">{{ $filters.unitPrice(result.commissionFrozen) }}</span>
<span class="subTips">返利总金额</span>
<span class="">{{ result.rebateTotal | unitPrice }}</span>
<Button
<span class="">{{ $filters.unitPrice(result.rebateTotal) }}</span>
<el-button
type="primary"
size="small"
class="ml_20"
@click="withdrawApplyModal = true"
>申请提现</Button
>申请提现</el-button
>
</div>
</div>
<Tabs :value="tabName" @on-click="tabPaneChange">
<TabPane label="已选商品" name="goodsChecked">
<Table stripe :columns="goodsColumns" :data="goodsData.records">
<template slot-scope="{ row }" slot="name">
<div
class="goods-msg"
@click="
linkTo(
`/goodsDetail?skuId=${row.skuId}&goodsId=${row.goodsId}`
)
"
>
<img
style="vertical-align: top"
:src="row.thumbnail"
width="60"
height="60"
alt=""
/>&nbsp; {{ row.goodsName }}
</div>
</template>
<template slot-scope="{ row }" slot="price">
<span> {{ row.price | unitPrice }}</span>
</template>
<template slot-scope="{ row }" slot="commission">
<span> {{ row.commission | unitPrice }}</span>
</template>
<template slot-scope="{ row }" slot="action">
<Button
type="success"
size="small"
style="margin-right: 5px"
@click="fenxiao(row)"
>分销商品</Button
>
<Button
type="error"
size="small"
@click="selectGoods(row.id, false)"
>取消选择</Button
>
</template>
</Table>
<el-tabs v-model="tabName" @tab-click="(tab) => tabPaneChange(tab.paneName)">
<el-tab-pane label="已选商品" name="goodsChecked">
<el-table stripe :data="goodsData.records || []">
<el-table-column label="商品名称" width="400">
<template #default="{ row }">
<div
class="goods-msg"
@click="linkTo(`/goodsDetail?skuId=${row.skuId}&goodsId=${row.goodsId}`)"
>
<img style="vertical-align: top" :src="row.thumbnail" width="60" height="60" alt="" />
&nbsp; {{ row.goodsName }}
</div>
</template>
</el-table-column>
<el-table-column label="商品价格">
<template #default="{ row }">
<span> {{ $filters.unitPrice(row.price) }}</span>
</template>
</el-table-column>
<el-table-column label="佣金">
<template #default="{ row }">
<span> {{ $filters.unitPrice(row.commission) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" min-width="120">
<template #default="{ row }">
<el-button type="success" size="small" style="margin-right: 5px" @click="fenxiao(row)">分销商品</el-button>
<el-button type="danger" size="small" @click="selectGoods(row.id, false)">取消选择</el-button>
</template>
</el-table-column>
</el-table>
<div class="page-size">
<Page
:current="params.pageNumber"
<el-pagination :current-page="params.pageNumber"
:total="goodsData.total"
:page-size="params.pageSize"
@on-change="changePage"
size="small"
show-total
show-elevator
></Page>
@current-change="changePage"
small
layout="total, prev, pager, next, jumper"></el-pagination>
</div>
</TabPane>
<TabPane label="未选商品" name="goodsUncheck">
<Table stripe :columns="goodsColumns" :data="goodsData.records">
<template slot-scope="{ row }" slot="name">
<div
class="goods-msg"
@click="
linkTo(
`/goodsDetail?skuId=${row.skuId}&goodsId=${row.goodsId}`
)
"
>
<img
style="vertical-align: top"
:src="row.thumbnail"
width="60"
height="60"
alt=""
/>&nbsp; {{ row.goodsName }}
</div>
</template>
<template slot-scope="{ row }" slot="price">
<span> {{ row.price | unitPrice }}</span>
</template>
<template slot-scope="{ row }" slot="commission">
<span> {{ row.commission | unitPrice }}</span>
</template>
<template slot-scope="{ row }" slot="action">
<Button
type="primary"
size="small"
style="margin-right: 5px"
@click="selectGoods(row.id, true)"
>选择商品</Button
>
</template>
</Table>
</el-tab-pane>
<el-tab-pane label="未选商品" name="goodsUncheck">
<el-table stripe :data="goodsData.records || []">
<el-table-column label="商品名称" width="400">
<template #default="{ row }">
<div
class="goods-msg"
@click="linkTo(`/goodsDetail?skuId=${row.skuId}&goodsId=${row.goodsId}`)"
>
<img style="vertical-align: top" :src="row.thumbnail" width="60" height="60" alt="" />
&nbsp; {{ row.goodsName }}
</div>
</template>
</el-table-column>
<el-table-column label="商品价格">
<template #default="{ row }">
<span> {{ $filters.unitPrice(row.price) }}</span>
</template>
</el-table-column>
<el-table-column label="佣金">
<template #default="{ row }">
<span> {{ $filters.unitPrice(row.commission) }}</span>
</template>
</el-table-column>
<el-table-column label="操作" min-width="120">
<template #default="{ row }">
<el-button type="primary" size="small" style="margin-right: 5px" @click="selectGoods(row.id, true)">选择商品</el-button>
</template>
</el-table-column>
</el-table>
<div class="page-size">
<Page
:current="params.pageNumber"
<el-pagination :current-page="params.pageNumber"
:total="goodsData.total"
:page-size="params.pageSize"
@on-change="changePage"
size="small"
show-total
show-elevator
></Page>
@current-change="changePage"
small
layout="total, prev, pager, next, jumper"></el-pagination>
</div>
</TabPane>
<TabPane label="提现记录" name="log">
<Table stripe :columns="logColumns" :data="logData.records">
<template slot-scope="{ row }" slot="sn">
<span>{{ row.sn }}</span>
</template>
<template slot-scope="{ row }" slot="time">
<span>{{ row.createTime }}</span>
</template>
<template slot-scope="{ row }" slot="price">
<span
v-if="row.distributionCashStatus == 'VIA_AUDITING'"
style="color: green"
>
+{{ row.price | unitPrice }}</span
>
<span v-else style="color: red">
-{{ row.price | unitPrice }}</span
>
</template>
<template slot-scope="{ row }" slot="status">
<span>
{{
row.distributionCashStatus == "APPLY"
? "待处理"
: row.distributionCashStatus == "VIA_AUDITING"
? "通过"
: "拒绝"
}}</span
>
</template>
</Table>
</el-tab-pane>
<el-tab-pane label="提现记录" name="log">
<el-table stripe :data="logData.records || []">
<el-table-column prop="sn" label="编号" />
<el-table-column prop="createTime" label="申请时间" />
<el-table-column label="提现金额">
<template #default="{ row }">
<span v-if="row.distributionCashStatus == 'VIA_AUDITING'" style="color: green">
+{{ $filters.unitPrice(row.price) }}
</span>
<span v-else style="color: red">
-{{ $filters.unitPrice(row.price) }}
</span>
</template>
</el-table-column>
<el-table-column label="提现状态">
<template #default="{ row }">
<span>
{{
row.distributionCashStatus == "APPLY"
? "待处理"
: row.distributionCashStatus == "VIA_AUDITING"
? "通过"
: "拒绝"
}}
</span>
</template>
</el-table-column>
</el-table>
<div class="page-size">
<Page
:current="logParams.pageNumber"
<el-pagination :current-page="logParams.pageNumber"
:total="logData.total"
:page-size="logParams.pageSize"
@on-change="changePageLog"
size="small"
show-total
show-elevator
></Page>
@current-change="changePageLog"
small
layout="total, prev, pager, next, jumper"></el-pagination>
</div>
</TabPane>
</Tabs>
</el-tab-pane>
</el-tabs>
</div>
<!-- 未开放 -->
<div v-if="status === 3">
<Alert type="error">
分销功能暂未开启
<template slot="desc"
>提交认证申请后工作人员将在三个工作日进行核对完成审核</template
>
</Alert>
<el-alert type="danger" title="分销功能暂未开启" />
</div>
<!-- 分销资格被清退 -->
<div v-if="status === 4">
<Alert type="error">
<el-alert type="danger">
您的分销资格已被清退请联系管理员或进行申诉
<Button style="margin-left: 50px;" type="warning" @click="repaying">申诉</Button>
</Alert>
<el-button style="margin-left: 50px;" type="warning" @click="repaying">申诉</el-button>
</el-alert>
</div>
<!-- 分销申诉审核 -->
<div v-if="status === 5">
<Alert type="success">
您提交的申诉正在审核
<template slot="desc"
>提交认证申请后工作人员将在三个工作日进行核对完成审核</template
>
</Alert>
<el-alert
type="success"
title="您提交的申诉正在审核"
description="提交认证申请后工作人员将在三个工作日进行核对完成审核"
/>
</div>
<Modal v-model="withdrawApplyModal" width="530">
<p slot="header">
<Icon type="edit"></Icon>
<el-dialog v-model="withdrawApplyModal" width="530">
<template #header><p>
<el-icon><Edit /></el-icon>
<span>提现金额</span>
</p>
</p></template>
<div>
<Input v-model="withdrawPrice" size="large" number maxlength="9"
><span slot="append"></span></Input
<el-input v-model="withdrawPrice" size="large" number maxlength="9"
><template #append><span></span></template></el-input
>
</div>
<div slot="footer" style="text-align: center">
<Button type="primary" size="large" @click="withdraw">提现</Button>
</div>
</Modal>
<Modal v-model="qrcodeShow" title="分销商品" width="800">
<Alert type="warning"> 下载二维码或者复制链接分享商品 </Alert>
<template #footer><div style="text-align: center">
<el-button type="primary" size="large" @click="withdraw">提现</el-button>
</div></template>
</el-dialog>
<el-dialog v-model="qrcodeShow" title="分销商品" width="800">
<el-alert type="warning"> 下载二维码或者复制链接分享商品 </el-alert>
<div class="qrcode">
<div style="width: 150px; height: 150px; border: 1px solid #eee">
<vue-qr
@@ -270,8 +231,8 @@
:size="150"
></vue-qr>
<div class="qrcode-platform">PC端</div>
<Button class="download-btn" type="success" @click="downloadQrcode"
>下载二维码</Button
<el-button class="download-btn" type="success" @click="downloadQrcode"
>下载二维码</el-button
>
</div>
<div style="width: 150px; height: 150px; border: 1px solid #eee">
@@ -284,20 +245,20 @@
:size="150"
></vue-qr>
<div class="qrcode-platform">移动应用端</div>
<Button class="download-btn" type="success" @click="downloadQrcodeH5"
>下载二维码</Button
<el-button class="download-btn" type="success" @click="downloadQrcodeH5"
>下载二维码</el-button
>
</div>
</div>
<div class="mt_10" style="margin-top: 100px;">
商品链接<Input style="width: 600px" v-model="qrcode"></Input>
</div>
</Modal>
商品链接<el-input style="width: 600px" v-model="qrcode"></el-input>
</div></el-dialog>
</div>
</template>
<script>
import { Edit } from '@element-plus/icons-vue';
import {
distribution,
applyDistribution,
@@ -311,7 +272,7 @@ import { checkBankno } from "@/plugins/Foundation";
import vueQr from "vue-qr";
export default {
name: "Distribution",
components: { vueQr },
components: { vueQr, Edit },
data() {
return {
config:require('@/config'),
@@ -358,20 +319,6 @@ export default {
withdrawPrice: 0, // 提现金额
goodsData: {}, // 商品数据
logData: {}, // 日志数据
goodsColumns: [
// 商品表头
{ title: "商品名称", slot: "name", width: 400 },
{ title: "商品价格", slot: "price" },
{ title: "佣金", slot: "commission" },
{ title: "操作", slot: "action", minWidth: 120 },
],
logColumns: [
// 日志表头
{ title: "编号", slot: "sn" },
{ title: "申请时间", slot: "time" },
{ title: "提现金额", slot: "price" },
{ title: "提现状态", slot: "status" },
],
params: {
// 商品请求参数
pageNumber: 1,
@@ -584,7 +531,7 @@ export default {
margin-left: 25px;
margin-top: 5px
}
::v-deep .ivu-alert-message {
:deep(.el-alert__content) {
p {
margin: 4px 0;
}

View File

@@ -17,22 +17,22 @@
</div>
<div v-else class="goodsTitle hover-pointer" @click="buynow(item.skuId, item.goodsId,item.id)" >
{{ item.storeName }}
<Tag color="error" class="operated" v-if="item.selfOperated">商家自营</Tag>
<el-tag color="error" class="operated" v-if="item.selfOperated">商家自营</el-tag>
</div>
<div class="goodsPrice">
<span v-if="params.type === 'GOODS'">{{ item.price | unitPrice('') }}</span>
<span v-if="params.type === 'GOODS'">{{ $filters.unitPrice(item.price, '') }}</span>
</div>
<div class="goodsBuy">
<Button size="small" type="primary" @click="buynow(item.skuId, item.goodsId)"
v-if="params.type === 'GOODS'">立即购买</Button>
<Button size="small" type="primary" @click="goShop(item.id)" v-else>店铺购买</Button>
<Button size="small" v-if="params.type === 'GOODS'" @click="cancel(item.skuId)">取消收藏</Button>
<Button size="small" v-if="params.type === 'STORE'" @click="cancelStore(item.id)">取消收藏</Button>
<el-button size="small" type="primary" @click="buynow(item.skuId, item.goodsId)"
v-if="params.type === 'GOODS'">立即购买</el-button>
<el-button size="small" type="primary" @click="goShop(item.id)" v-else>店铺购买</el-button>
<el-button size="small" v-if="params.type === 'GOODS'" @click="cancel(item.skuId)">取消收藏</el-button>
<el-button size="small" v-if="params.type === 'STORE'" @click="cancelStore(item.id)">取消收藏</el-button>
</div>
</div>
</div>
<Spin size="large" fix v-if="spinShow"></Spin>
<el-skeleton size="large" fix v-if="spinShow"></el-skeleton>
</div>
<empty v-else />
</div>

View File

@@ -9,7 +9,7 @@
<div class="gradeNameRow">
<span class="gradeNameText">{{ currentGrade.gradeName || '暂无等级' }}</span>
<span v-if="currentGradeBenefits.length" class="benefitTagsInline">
<Tag v-for="b in currentGradeBenefits" :key="b.id" class="benefitTag" color="blue">{{ b.benefitName || '-' }}</Tag>
<el-tag v-for="b in currentGradeBenefits" :key="b.id" class="benefitTag" color="blue">{{ b.benefitName || '-' }}</el-tag>
</span>
</div>
<div class="gradeExp">
@@ -24,54 +24,58 @@
</div>
</div>
<Tabs value="rules">
<TabPane label="获取经验值方式" name="rules">
<Table :columns="ruleColumns" :data="ruleList" :loading="rulesLoading">
<template slot-scope="{ row }" slot="ruleItem">
<div class="ruleItem">
<div class="ruleTop">
<div class="ruleName">
<span>{{ row.ruleName || row.ruleKey || '-' }}</span>
<el-tabs value="rules">
<el-tab-pane label="获取经验值方式" name="rules">
<el-table v-loading="rulesLoading" :data="ruleList">
<el-table-column label="获取方式" min-width="720">
<template #default="{ row }">
<div class="ruleItem">
<div class="ruleTop">
<div class="ruleName">
<span>{{ row.ruleName || row.ruleKey || '-' }}</span>
</div>
<el-tag v-if="row.completed === true" color="success">已完成</el-tag>
<el-tag v-else color="default">未完成</el-tag>
</div>
<div class="ruleDesc">{{ getRuleDesc(row.ruleKey) }}</div>
<div class="ruleMeta">
<span class="metaItem">单次获得<b>+{{ row.value == null ? 0 : row.value }}</b></span>
<span v-if="row.maxValue != null && Number(row.maxValue) > 0" class="metaItem">限额<b>{{ row.maxValue }}</b></span>
<span class="metaItem">已获得<b>{{ row.gainedExperience == null ? 0 : row.gainedExperience }}</b></span>
</div>
<Tag v-if="row.completed === true" color="success">已完成</Tag>
<Tag v-else color="default">未完成</Tag>
</div>
<div class="ruleDesc">{{ getRuleDesc(row.ruleKey) }}</div>
<div class="ruleMeta">
<span class="metaItem">单次获得<b>+{{ row.value == null ? 0 : row.value }}</b></span>
<span v-if="row.maxValue != null && Number(row.maxValue) > 0" class="metaItem">限额<b>{{ row.maxValue }}</b></span>
<span class="metaItem">已获得<b>{{ row.gainedExperience == null ? 0 : row.gainedExperience }}</b></span>
</div>
</div>
</template>
</Table>
</template>
</el-table-column>
</el-table>
<div class="rulesDesc" v-if="rulesDescription">{{ rulesDescription }}</div>
</TabPane>
<TabPane label="经验值记录" name="logs">
<Table :columns="logColumns" :data="experienceLogs.records || []" :loading="logLoading">
<template slot-scope="{ row }" slot="rule">
<span>{{ getRuleName(row.ruleKey) }}</span>
</template>
<template slot-scope="{ row }" slot="delta">
<div :style="{color: getLogDeltaColor(row)}">
<span v-if="getLogDeltaSign(row) === '+'">+</span>{{ getLogDeltaAbsValue(row) }}
</div>
</template>
</Table>
<Page
style="float:right;margin-top:10px"
:current="params.pageNumber"
</el-tab-pane>
<el-tab-pane label="经验值记录" name="logs">
<el-table v-loading="logLoading" :data="experienceLogs.records || []">
<el-table-column prop="createTime" label="时间" align="center" min-width="160" />
<el-table-column label="规则" align="center" min-width="160">
<template #default="{ row }">
<span>{{ getRuleName(row.ruleKey) }}</span>
</template>
</el-table-column>
<el-table-column label="变动值" align="center" min-width="120">
<template #default="{ row }">
<div :style="{ color: getLogDeltaColor(row) }">
<span v-if="getLogDeltaSign(row) === '+'">+</span>{{ getLogDeltaAbsValue(row) }}
</div>
</template>
</el-table-column>
</el-table>
<el-pagination style="float:right;margin-top:10px"
:current-page="params.pageNumber"
:total="experienceLogs.total || 0"
:page-size="params.pageSize"
@on-change="changePage"
@on-page-size-change="changePageSize"
:page-size-opts="[10, 20, 50]"
size="small"
show-total
show-elevator
></Page>
</TabPane>
</Tabs>
@current-change="changePage"
@size-change="changePageSize"
:page-sizes="[10, 20, 50]"
small
layout="total, prev, pager, next, jumper"></el-pagination>
</el-tab-pane>
</el-tabs>
</div>
@@ -100,34 +104,7 @@ export default {
pageNumber: 1,
pageSize: 10
},
experienceLogs: {},
ruleColumns: [
{
title: '获取方式',
slot: 'ruleItem',
minWidth: 720
}
],
logColumns: [
{
title: '时间',
key: 'createTime',
align: 'center',
minWidth: 160
},
{
title: '规则',
slot: 'rule',
align: 'center',
minWidth: 160
},
{
title: '变动值',
slot: 'delta',
align: 'center',
minWidth: 120
}
]
experienceLogs: {}
}
},
computed: {

View File

@@ -2,77 +2,78 @@
<div class="wrapper">
<card _Title="账户安全"/>
<!-- 手机号验证 -->
<Form ref="formData" :model="formData" label-position="left" :label-width="100" :rules="ruleInLines"
<el-form ref="formData" :model="formData" label-position="left" label-width="100px" :rules="ruleInLines"
v-if="(status == 2 || status == 3) && !showPwd">
<FormItem label="手机号">
<el-form-item label="手机号">
<div class="phone">1234567890</div>
</FormItem>
<FormItem label="图片验证码" prop="picture" style="width: 350px">
<i-input v-model="formData.picture" size="large" maxlength="4"></i-input>
</FormItem>
<FormItem label="短信验证码" prop="msg">
<i-input v-model="formData.msg" size="large" maxlength="6" style="width: 250px">
<span slot="append">输入验证码</span>
</i-input>
</FormItem>
</Form>
<div slot="footer" v-if="(status == 2 || status == 3) && !showPwd" style="text-align: center;width: 50%">
<Button type="primary" class="ml_10" @click="submitRegister">下一步</Button>
</el-form-item>
<el-form-item label="图片验证码" prop="picture" style="width: 350px">
<el-input v-model="formData.picture" size="large" maxlength="4"></el-input>
</el-form-item>
<el-form-item label="短信验证码" prop="msg">
<el-input v-model="formData.msg" size="large" maxlength="6" style="width: 250px">
<template #append><span>输入验证码</span></template>
</el-input>
</el-form-item>
</el-form>
<div v-if="(status == 2 || status == 3) && !showPwd" style="text-align: center;width: 50%">
<el-button type="primary" class="ml_10" @click="submitRegister">下一步</el-button>
</div>
<!-- 修改 -->
<Form ref="formRegister" :model="formRegister" :rules="ruleInline" :label-width="80" v-if="status == 1 && !showPwd">
<FormItem label="旧密码" prop="password">
<i-input type="password" v-model="formRegister.password" clearable size="large" placeholder="请输入旧密码"
<el-form ref="formRegister" :model="formRegister" :rules="ruleInline" label-width="80px" v-if="status == 1 && !showPwd">
<el-form-item label="旧密码" prop="password">
<el-input type="password" v-model="formRegister.password" clearable size="large" placeholder="请输入旧密码"
style="width: 300px"
maxlength="12">
<Icon type="md-lock" slot="prepend"></Icon>
</i-input>
</FormItem>
<FormItem label="新密码" prop="newPassword">
<i-input type="password" v-model="formRegister.newPassword" clearable size="large" placeholder="请输入新密码"
<template #prepend><el-icon><Lock /></el-icon></template>
</el-input>
</el-form-item>
<el-form-item label="新密码" prop="newPassword">
<el-input type="password" v-model="formRegister.newPassword" clearable size="large" placeholder="请输入新密码"
style="width: 300px"
maxlength="12">
<Icon type="md-lock" slot="prepend"></Icon>
</i-input>
</FormItem>
<FormItem label="确认密码" prop="againPassword">
<i-input type="password" v-model="formRegister.againPassword" clearable size="large" placeholder="请输入确认密码"
<template #prepend><el-icon><Lock /></el-icon></template>
</el-input>
</el-form-item>
<el-form-item label="确认密码" prop="againPassword">
<el-input type="password" v-model="formRegister.againPassword" clearable size="large" placeholder="请输入确认密码"
style="width: 300px"
maxlength="12">
<Icon type="md-lock" slot="prepend"></Icon>
</i-input>
</FormItem>
<template #prepend><el-icon><Lock /></el-icon></template>
</el-input>
</el-form-item>
</Form>
<div slot="footer" v-if="status == 1 && !showPwd" style="width: 50%;text-align: center">
<Button type="primary" class="ml_10" @click="handleRegist">修改</Button>
</el-form>
<div v-if="status == 1 && !showPwd" style="width: 50%;text-align: center">
<el-button type="primary" class="ml_10" @click="handleRegist">修改</el-button>
</div>
<!-- 设置&修改的第二种情况 -->
<Form ref="formDataUpdate" :model="formDataUpdate" label-position="left" :label-width="100" :rules="ruleIn"
<el-form ref="formDataUpdate" :model="formDataUpdate" label-position="left" label-width="100px" :rules="ruleIn"
v-if="showPwd">
<FormItem label="新密码" prop="newPassword">
<i-input type="password" v-model="formDataUpdate.newPassword" clearable size="large" placeholder="请输入新密码"
<el-form-item label="新密码" prop="newPassword">
<el-input type="password" v-model="formDataUpdate.newPassword" clearable size="large" placeholder="请输入新密码"
style="width: 300px"
maxlength="12">
<Icon type="md-lock" slot="prepend"></Icon>
</i-input>
</FormItem>
<FormItem label="确认密码" prop="againPassword">
<i-input type="password" v-model="formDataUpdate.againPassword" clearable size="large" placeholder="请输入确认密码"
<template #prepend><el-icon><Lock /></el-icon></template>
</el-input>
</el-form-item>
<el-form-item label="确认密码" prop="againPassword">
<el-input type="password" v-model="formDataUpdate.againPassword" clearable size="large" placeholder="请输入确认密码"
style="width: 300px"
maxlength="12">
<Icon type="md-lock" slot="prepend"></Icon>
</i-input>
</FormItem>
</Form>
<div slot="footer" v-if="showPwd" style="text-align: center;width: 50%">
<Button type="primary" class="ml_10" @click="setPassword">设置</Button>
<template #prepend><el-icon><Lock /></el-icon></template>
</el-input>
</el-form-item>
</el-form>
<div v-if="showPwd" style="text-align: center;width: 50%">
<el-button type="primary" class="ml_10" @click="setPassword">设置</el-button>
</div>
</div>
</template>
<script>
import { Lock } from '@element-plus/icons-vue';
import {
setPwd,
editPwd
@@ -80,6 +81,7 @@ import {
import {md5} from '@/plugins/md5.js'
export default {
components: { Lock },
name: 'modifyPwd',
data () {
return {

View File

@@ -6,26 +6,27 @@
<span>累计获得<span>{{ pointObj.totalPoint || 0 }}</span></span>
</div>
<h3>积分日志</h3>
<Table :columns="logColumns" :data="logData.records">
<template slot-scope="{ row }" slot="point">
<div :style="{color:row.pointType === 'INCREASE' ? 'green' : 'red'}">
<span v-if="row.pointType === 'INCREASE'">+</span>{{ row.variablePoint }}
</div>
</template>
</Table>
<el-table :data="logData.records || []">
<el-table-column prop="content" label="日志内容" align="center" />
<el-table-column prop="createTime" label="时间" align="center" />
<el-table-column label="积分明细" align="center">
<template #default="{ row }">
<div :style="{ color: row.pointType === 'INCREASE' ? 'green' : 'red' }">
<span v-if="row.pointType === 'INCREASE'">+</span>{{ row.variablePoint }}
</div>
</template>
</el-table-column>
</el-table>
<!-- 分页 -->
<Page
style="float:right;margin-top:10px"
:current="params.pageNumber"
<el-pagination style="float:right;margin-top:10px"
:current-page="params.pageNumber"
:total="logData.total"
:page-size="params.pageSize"
@on-change="changePage"
@on-page-size-change="changePageSize"
:page-size-opts="[10, 20, 50]"
size="small"
show-total
show-elevator
></Page>
@current-change="changePage"
@size-change="changePageSize"
:page-sizes="[10, 20, 50]"
small
layout="total, prev, pager, next, jumper"></el-pagination>
</div>
</template>
<script>
@@ -42,23 +43,6 @@ export default {
pageNumber: 1,
pageSize: 10
},
logColumns: [ // table展示数据
{
title: '日志内容',
key: 'content',
align: 'center'
},
{
title: '时间',
key: 'createTime',
align: 'center'
},
{
title: '积分明细',
slot: 'point',
align: 'center'
}
]
}
},
mounted () {

View File

@@ -1,38 +1,38 @@
<template>
<div class="wrapper">
<card _Title="用户信息" />
<Form :model="formItem" :rules="rules" ref="form" :label-width="80">
<FormItem label="头像">
<Avatar v-if="formItem.face" :src="formItem.face" size="80"/>
<Avatar v-else icon="ios-person" size="80"/>
<Upload
<el-form :model="formItem" :rules="rules" ref="form" label-width="80px">
<el-form-item label="头像">
<el-avatar v-if="formItem.face" :src="formItem.face" :size="80" />
<el-avatar v-else :size="80"><el-icon><User /></el-icon></el-avatar>
<el-upload
:show-upload-list="false"
:on-success="handleSuccess"
:format="['jpg','jpeg','png']"
:action="action"
:headers="accessToken"
>
<Button class="mt_10">上传头像</Button>
</Upload>
</FormItem>
<FormItem label="昵称" prop="nickName">
<Input class="wrapper-user-name" style="width:187px" v-model="formItem.nickName" placeholder="" />
</FormItem>
<el-button class="mt_10">上传头像</el-button>
</el-upload>
</el-form-item>
<el-form-item label="昵称" prop="nickName">
<el-input class="wrapper-user-name" style="width:187px" v-model="formItem.nickName" placeholder="" />
</el-form-item>
<FormItem label="生日">
<DatePicker type="date" placeholder="选择您的生日" v-model="formItem.birthday"></DatePicker>
</FormItem>
<FormItem label="性别">
<RadioGroup v-model="formItem.sex" type="button" button-style="solid">
<Radio :label="1"></Radio>
<Radio :label="0"></Radio>
</RadioGroup>
</FormItem>
<FormItem>
<Button type="primary" @click="save">确认修改</Button>
<el-form-item label="生日">
<el-date-picker type="date" placeholder="选择您的生日" v-model="formItem.birthday"></el-date-picker>
</el-form-item>
<el-form-item label="性别">
<el-radio-group v-model="formItem.sex" type="button" button-style="solid">
<el-radio :label="1"></el-radio>
<el-radio :label="0"></el-radio>
</el-radio-group>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="save">确认修改</el-button>
</FormItem>
</Form>
</el-form-item>
</el-form>
</div>
</template>
@@ -40,7 +40,9 @@
import { editMemberInfo } from '@/api/account.js';
import { commonUrl } from '@/plugins/request.js';
import storage from '@/plugins/storage.js';
import { User } from '@element-plus/icons-vue';
export default {
components: { User },
name: 'Profile',
data () {
return {
@@ -103,7 +105,7 @@ export default {
})
},
handleSuccess (res, file) { // 上传成功
this.$set(this.formItem, 'face', res.result)
this.formItem['face'] = res.result
},
}

View File

@@ -11,9 +11,9 @@
<div class="delivery-rate">
<div class="fontsize_16">物流服务评价</div>
<div class="color999">
<span>物流评价<Rate v-model="form.deliveryScore" /></span>
<span>服务评价<Rate v-model="form.serviceScore" /></span>
<span>描述评价<Rate v-model="form.descriptionScore" /></span>
<span>物流评价<el-rate v-model="form.deliveryScore" /></span>
<span>服务评价<el-rate v-model="form.serviceScore" /></span>
<span>描述评价<el-rate v-model="form.descriptionScore" /></span>
</div>
</div>
<!-- 添加订单评价 左侧商品详情 右侧评价框 -->
@@ -22,28 +22,28 @@
<div class="goods-con">
<img :src="orderGoods.image" class="hover-pointer" alt="" width="100" @click="goGoodsDetail(orderGoods.skuId, orderGoods.goodsId)">
<p class="hover-pointer color999" @click="goGoodsDetail(orderGoods.skuId, orderGoods.goodsId)">{{orderGoods.goodsName}}</p>
<p>{{orderGoods.goodsPrice | unitPrice('¥')}}</p>
<p>{{ $filters.unitPrice(orderGoods.goodsPrice, '¥') }}</p>
</div>
<div class="eval-con">
<div>
<span class="color999">商品评价</span>
<RadioGroup style="margin-bottom:5px;color:#999" v-model="orderGoods.grade" type="button" button-style="solid">
<Radio label="GOOD">好评</Radio>
<Radio label="MODERATE">中评</Radio>
<Radio label="WORSE">差评</Radio>
</RadioGroup>
<Input type="textarea" maxlength="500" show-word-limit :rows="4" v-model="orderGoods.content" />
<el-radio-group style="margin-bottom:5px;color:#999" v-model="orderGoods.grade" type="button" button-style="solid">
<el-radio label="GOOD">好评</el-radio>
<el-radio label="MODERATE">中评</el-radio>
<el-radio label="WORSE">差评</el-radio>
</el-radio-group>
<el-input type="textarea" maxlength="500" show-word-limit :rows="4" v-model="orderGoods.content" />
</div>
<div style="display:flex;align-items:center;">
<div class="demo-upload-list" v-for="(img, index) in orderGoods.uploadList" :key="index">
<img :src="img">
<div class="demo-upload-list-cover">
<Icon type="ios-eye-outline" @click.native="handleView(img)"></Icon>
<Icon type="ios-trash-outline" @click.native="handleRemove(index)"></Icon>
<el-icon @click="handleView(img)"><View /></el-icon>
<el-icon @click="handleRemove(index)"><Delete /></el-icon>
</div>
</div>
<Upload
<el-upload
:show-upload-list="false"
:on-success="handleSuccess"
:before-upload="handleBeforeUpload"
@@ -52,25 +52,27 @@
:headers="accessToken"
style="display: inline-block;width:58px;">
<div class="hover-pointer icon-upload" style="">
<Icon type="ios-camera" size="20"></Icon>
<el-icon :size="20"><Camera /></el-icon>
</div>
</Upload>
</el-upload>
</div>
</div>
</li>
</ul>
<Button type="primary" class="mt_10" :loading="loading" @click="save">发表</Button>
<Modal title="View Image" v-model="visible">
<el-button type="primary" class="mt_10" :loading="loading" @click="save">发表</el-button>
<el-dialog title="View Image" v-model="visible">
<img :src="previewImage" v-if="visible" style="width: 100%">
</Modal>
</el-dialog>
</div>
</template>
<script>
import { Camera, Delete, View } from '@element-plus/icons-vue';
import { orderDetail } from '@/api/order.js';
import { addEvaluation } from '@/api/member.js';
import { commonUrl } from '@/plugins/request.js';
import storage from '@/plugins/storage';
export default {
components: { Camera, Delete, View },
data () {
return {
order: {}, // 订单详情
@@ -92,7 +94,7 @@ export default {
orderDetail(this.$route.query.sn).then(res => {
this.order = res.result
this.orderGoods = res.result.orderItems[this.$route.query.index]
this.$set(this.orderGoods, 'grade', 'GOOD')
this.orderGoods['grade'] = 'GOOD'
this.orderGoods.uploadList = []
})
},

View File

@@ -3,8 +3,7 @@
<div class="title">
<card _Title="评价详情" :_Size="16"></card>
<p>
<span class="color999">创建人</span
><span>{{ orderGoods.createBy | secrecyMobile }}</span>
<span class="color999">创建人</span><span>{{ $filters.secrecyMobile( orderGoods.createBy ) }}</span>
<span class="color999 ml_20">{{ orderGoods.createTime }}</span>
</p>
</div>
@@ -12,10 +11,10 @@
<div class="delivery-rate">
<div class="fontsize_16">物流服务评价</div>
<div class="color999">
<span>物流评价<Rate disabled :value="Number(orderGoods.deliveryScore)" /></span>
<span>服务评价<Rate disabled :value="Number(orderGoods.serviceScore)" /></span>
<span>物流评价<el-rate disabled :value="Number(orderGoods.deliveryScore)" /></span>
<span>服务评价<el-rate disabled :value="Number(orderGoods.serviceScore)" /></span>
<span
>服务评价<Rate disabled :value="Number(orderGoods.descriptionScore)"
>服务评价<el-rate disabled :value="Number(orderGoods.descriptionScore)"
/></span>
</div>
</div>
@@ -41,17 +40,17 @@
<div class="eval-con">
<div>
<span class="color999">商品评价</span>
<RadioGroup
<el-radio-group
style="margin-bottom: 5px; color: #999"
v-model="orderGoods.grade"
type="button"
button-style="solid"
>
<Radio label="GOOD" disabled>好评</Radio>
<Radio label="MODERATE" disabled>中评</Radio>
<Radio label="WORSE" disabled>差评</Radio>
</RadioGroup>
<Input
<el-radio label="GOOD" disabled>好评</el-radio>
<el-radio label="MODERATE" disabled>中评</el-radio>
<el-radio label="WORSE" disabled>差评</el-radio>
</el-radio-group>
<el-input
type="textarea"
maxlength="500"
readonly
@@ -64,7 +63,7 @@
<template v-if="orderGoods.images">
<div class="demo-upload-list" v-for="(img, index) in orderGoods.images.split(',')" :key="index">
<img :src="img" />
<div class="demo-upload-list-cover"><Icon type="ios-eye-outline" @click.native="handleView(img)"></Icon></div>
<div class="demo-upload-list-cover"><el-icon @click="handleView(img)"><View /></el-icon></div>
</div>
</template>
</div>
@@ -75,7 +74,7 @@
<template v-if="orderGoods.replyImage">
<div class="demo-upload-list" v-for="(img, index) in orderGoods.replyImage.split(',')" :key="index">
<img :src="img" />
<div class="demo-upload-list-cover"><Icon type="ios-eye-outline" @click.native="handleView(img)"></Icon></div>
<div class="demo-upload-list-cover"><el-icon @click="handleView(img)"><View /></el-icon></div>
</div>
</template>
</div>
@@ -84,14 +83,16 @@
</div>
</li>
</ul>
<Modal title="View Image" v-model="visible">
<el-dialog title="View Image" v-model="visible">
<img :src="previewImage" v-if="visible" style="width: 100%" />
</Modal>
</el-dialog>
</div>
</template>
<script>
import { View } from '@element-plus/icons-vue';
import { evaluationDetail } from "@/api/member.js";
export default {
components: { View },
data() {
return {
order: {}, // 订单详情

View File

@@ -2,21 +2,39 @@
<div class="msg-list">
<card _Title="我的消息" :_Tabs="status" :_Size="16" @_Change="statusChange"/>
<Table v-if="params.status != 'ALREADY_REMOVE' " :columns="messageColumns" :data="messageData.records"></Table>
<Table v-if="params.status == 'ALREADY_REMOVE' " :columns="messageDelColumns" :data="messageData.records"></Table>
<!-- 分页 -->
<Page
<el-table v-if="params.status != 'ALREADY_REMOVE'" :data="messageData.records || []">
<el-table-column prop="title" label="消息标题" align="left" show-overflow-tooltip />
<el-table-column prop="content" label="消息内容" align="left" show-overflow-tooltip />
<el-table-column prop="createTime" label="发送时间" align="left" width="240" />
<el-table-column label="操作" align="center" fixed="right" width="150">
<template #default="{ row }">
<el-button
v-if="row.status === 'UN_READY'"
type="primary"
size="small"
style="margin-right: 5px"
@click="setRead(row.id)"
>已读</el-button>
<el-button type="danger" size="small" @click="removeMessage(row.id)">删除</el-button>
</template>
</el-table-column>
</el-table>
<el-table v-else :data="messageData.records || []">
<el-table-column prop="title" label="消息标题" align="left" show-overflow-tooltip />
<el-table-column prop="content" label="消息内容" align="left" show-overflow-tooltip />
<el-table-column prop="createTime" label="发送时间" align="left" width="240" />
</el-table>
<el-pagination
style="float:right;margin-top:10px"
:current="params.pageNumber"
:current-page="params.pageNumber"
:total="messageData.total"
:page-size="params.pageSize"
@on-change="changePage"
@on-page-size-change="changePageSize"
:page-size-opts="[10, 20, 50]"
size="small"
show-total
show-elevator
></Page>
@current-change="changePage"
@size-change="changePageSize"
:page-sizes="[10, 20, 50]"
small
layout="total, prev, pager, next, jumper"
/>
</div>
</template>
<script>
@@ -24,146 +42,37 @@ import {memberMsgList, readMemberMsg, delMemberMsg} from '@/api/member.js'
export default {
data() {
return {
messageData: {}, // 消息数据
messageData: {},
status: ['未读', '已读', '回收站'],
params: { // 请求参数
params: {
pageNumber: 1,
pageSize: 10,
status: 'UN_READY'
},
messageDelColumns: [ // table展示数据
{
title: '消息标题',
key: 'title',
align: 'left',
tooltip: true,
},
{
title: '消息内容',
key: 'content',
align: 'left',
tooltip: true
},
{
title: '发送时间',
key: 'createTime',
align: 'left',
width: 240
},
],
messageColumns: [ // table展示数据
{
title: '消息标题',
key: 'title',
align: 'left',
tooltip: true,
},
{
title: '消息内容',
key: 'content',
align: 'left',
tooltip: true
},
{
title: '发送时间',
key: 'createTime',
align: 'left',
width: 240
},
{
title: '操作',
key: 'action',
align: 'center',
fixed: 'right',
width: 150,
render: (h, params) => {
if (params.row.status === 'UN_READY') {
return h('div', [
h(
'Button',
{
props: {
type: 'info',
size: 'small'
},
style: {
marginRight: '5px'
},
on: {
click: () => {
this.setRead(params.row.id);
}
}
},
'已读'
), h(
'Button',
{
props: {
size: 'small',
type: 'error'
},
on: {
click: () => {
this.removeMessage(params.row.id);
}
}
},
'删除'
)
]);
} else if (params.row.status === 'ALREADY_READY') {
return h('div', [
h(
'Button',
{
props: {
size: 'small',
type: 'error'
},
on: {
click: () => {
this.removeMessage(params.row.id);
}
}
},
'删除'
)
]);
} else {
}
}
}
]
}
},
methods: {
// 消息状态发生变化
statusChange (index) {
if (index === 0) { this.params.status = 'UN_READY' }
if (index === 1) { this.params.status = 'ALREADY_READY' }
if (index === 2) { this.params.status = 'ALREADY_REMOVE' }
this.getList()
},
// 修改页码
changePage (v) {
this.params.pageNumber = v;
this.getList();
},
// 修改页数
changePageSize (v) {
this.params.pageSize = v;
this.getList();
},
getList () { // 获取消息列表
getList () {
memberMsgList(this.params).then(res => {
if (res.success) {
this.messageData = res.result;
}
})
},
// 设置消息已读
setRead (id) {
readMemberMsg(id).then(res => {
if (res.success) {
@@ -171,15 +80,12 @@ export default {
}
})
},
// 消息放入回收站
removeMessage (id) {
this.$Modal.confirm({
title: '确认删除',
// 记得确认修改此处
content: '确认要删除此消息?',
loading: true,
onOk: () => {
// 删除
delMemberMsg(id).then((res) => {
this.$Modal.remove();
if (res.success) {