You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
554 lines
19 KiB
554 lines
19 KiB
<link rel="stylesheet" href="__CDN__/assets/addons/shopro/libs/element/element.css">
|
|
<style>
|
|
#notification-index {
|
|
font-family: Source Han Sans SC;
|
|
color: #666;
|
|
background: #fff;
|
|
border-radius: 6px;
|
|
padding: 0 20px 20px;
|
|
font-size: 14px;
|
|
overflow: auto;
|
|
}
|
|
|
|
/* .fans-body {
|
|
height: calc(100vh - 280px);
|
|
} */
|
|
|
|
.common-btn {
|
|
background: #7536D0;
|
|
color: #fff;
|
|
text-align: center;
|
|
border-radius: 4px;
|
|
width: 88px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
/* title */
|
|
.title-tip {
|
|
font-weight: 600;
|
|
padding: 18px 0;
|
|
}
|
|
|
|
.title-opt {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
padding-bottom: 20px;
|
|
}
|
|
|
|
.title-opt .el-input__inner,
|
|
.title-opt .el-input {
|
|
height: 30px;
|
|
line-height: 30px;
|
|
width: 236px;
|
|
}
|
|
|
|
.title-opt .el-input__icon {
|
|
line-height: 30px;
|
|
}
|
|
|
|
.sync-btn {
|
|
width: 100px;
|
|
height: 32px;
|
|
line-height: 32px;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.view-btn {
|
|
color: #7536D0;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.avatar-img {
|
|
width: 44px;
|
|
height: 44px;
|
|
border-radius: 50%;
|
|
border: 1px solid #E6E6E6;
|
|
}
|
|
|
|
.sex-img {
|
|
width: 15px;
|
|
height: 15px;
|
|
margin: 0 20px;
|
|
}
|
|
|
|
/* footer */
|
|
.fans-footer {
|
|
padding-top: 20px;
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
.el-pager li.active,
|
|
.el-pager li:hover,
|
|
.el-select-dropdown__item.selected {
|
|
color: #7536D0;
|
|
}
|
|
|
|
.el-input__inner:hover,
|
|
.el-input__inner:focus,
|
|
.el-select .el-input.is-focus .el-input__inner,
|
|
.el-select .el-input.is-hover .el-input__inner,
|
|
.el-pagination__sizes .el-input .el-input__inner:hover {
|
|
border-color: #7536D0;
|
|
}
|
|
|
|
/* table */
|
|
.el-table td,
|
|
.el-table th {
|
|
border-right: none;
|
|
}
|
|
|
|
.el-table th {
|
|
background: #F9F9F9;
|
|
height: 40px;
|
|
padding: 8px 0;
|
|
}
|
|
|
|
.el-table td {
|
|
padding: 8px 0 9px;
|
|
}
|
|
|
|
.el-table .cell {
|
|
padding-left: 20px !important;
|
|
font-size: 13px;
|
|
color: #444;
|
|
font-weight: 500;
|
|
text-align: center;
|
|
}
|
|
|
|
.table-head-tip {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.table-head-tip img {
|
|
margin-right: 12px;
|
|
}
|
|
|
|
.tips {
|
|
padding: 16px;
|
|
border-radius: 5px;
|
|
background-color: #F1EBFA;
|
|
position: relative;
|
|
margin-bottom: 20px;
|
|
font-size: 12px;
|
|
}
|
|
.tip-a, .tip-a:hover {
|
|
color: #7536D0;
|
|
}
|
|
.tip-close {
|
|
color: #7536D0;
|
|
position: absolute;
|
|
top: 16px;
|
|
right: 16px;
|
|
}
|
|
|
|
.notification-btn {
|
|
justify-content: flex-end;
|
|
display: flex;
|
|
}
|
|
|
|
.notification-btn-1 {
|
|
color: #7438D5;
|
|
/* float: right; */
|
|
line-height: 36px;
|
|
background: #fff;
|
|
}
|
|
|
|
.notification-btn-2 {
|
|
width: 90px;
|
|
height: 36px;
|
|
background: #7438D5;
|
|
border-radius: 4px;
|
|
font-size: 16px;
|
|
color: #fff;
|
|
line-height: 36px;
|
|
border-radius: 18px;
|
|
/* float: right; */
|
|
}
|
|
|
|
.add-btn {
|
|
border: 1px solid #7438D5;
|
|
border-radius: 4px;
|
|
color: #7438D5;
|
|
height: 32px;
|
|
line-height: 30px;
|
|
background: #fff;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.add-btn i {
|
|
margin-right: 5px;
|
|
color: #7438D5;
|
|
}
|
|
|
|
.notification-items {
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
.div-body {
|
|
/* border: 1px solid#E6E6E6; */
|
|
border-bottom: none;
|
|
margin: 20px 0 14px;
|
|
max-height: 355px;
|
|
overflow: auto;
|
|
}
|
|
.div-body-item{
|
|
display: flex;align-items: center;height: 59px;
|
|
}
|
|
.first-item{
|
|
width: 102px;
|
|
}
|
|
|
|
.table-item-with {
|
|
width: 186px;
|
|
}
|
|
|
|
.el-dialog {
|
|
width: 600px;
|
|
height: 602px;
|
|
border-radius:10px;
|
|
}
|
|
|
|
.display-flex {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.item-btn {
|
|
border-radius: 4px;
|
|
height: 32px;
|
|
display: flex;
|
|
width: 180px;
|
|
|
|
}
|
|
|
|
.wx-config {
|
|
width: 80px;
|
|
line-height: 32px;
|
|
background: #04C261;
|
|
text-align: center;
|
|
color: #fff;
|
|
cursor: pointer;
|
|
border-radius: 4px 0 0 4px;
|
|
}
|
|
|
|
.wx-send {
|
|
width: 130px;
|
|
line-height: 32px;
|
|
background: #EAFAF2;
|
|
color: #04C261;
|
|
text-align: center;
|
|
font-size: 12px;
|
|
border-radius: 0 4px 4px 0;
|
|
}
|
|
.wxmin-config{
|
|
background: #6D74F0;
|
|
}
|
|
.wxmin-send{
|
|
background: #ECEDFD;
|
|
color: #6D74F0;
|
|
}
|
|
.note-config{
|
|
background: #7536D0;
|
|
}
|
|
.note-send{
|
|
background: #EDE5F9;
|
|
color: #7536D0;
|
|
}
|
|
.email-config{
|
|
background: #328AF7;
|
|
}
|
|
.email-send{
|
|
background: #DEECFE;
|
|
color: #328AF7;
|
|
}
|
|
.notification-titles{
|
|
margin-right: 40px;
|
|
}
|
|
.el-dialog__title{
|
|
font-size: 14px;
|
|
}
|
|
.el-dialog__body{
|
|
font-size: 13px;
|
|
}
|
|
.el-dialog__headerbtn .el-dialog__close{
|
|
font-size: 18px;
|
|
}
|
|
.el-dialog__headerbtn .el-dialog__close:hover{
|
|
color: #7438D5;
|
|
}
|
|
.del-btn-field{
|
|
width: 18px;
|
|
height: 18px;
|
|
margin-left: 14px;
|
|
background: rgb(255, 89, 89);
|
|
color: rgb(255, 255, 255);
|
|
text-align: center;
|
|
font-size: 12px;
|
|
border-radius: 50%;
|
|
}
|
|
|
|
.div-body::-webkit-scrollbar{width:6px;}
|
|
.div-body::-webkit-scrollbar-thumb{
|
|
width:6px;
|
|
background: #e6e6e6;
|
|
height: 20px;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
.email-bodys::-webkit-scrollbar{width:6px;}
|
|
.email-bodys::-webkit-scrollbar-thumb{
|
|
width:6px;
|
|
background: #e6e6e6;
|
|
height: 20px;
|
|
border-radius: 3px;
|
|
}
|
|
.email-bodys{
|
|
overflow: auto;
|
|
max-height: 420px;
|
|
padding: 0 20px 20px;
|
|
}
|
|
.flex-1{
|
|
flex: 1;
|
|
}
|
|
|
|
[v-cloak] {
|
|
display: none
|
|
}
|
|
</style>
|
|
<script src="__CDN__/assets/addons/shopro/libs/vue.js"></script>
|
|
<script src="__CDN__/assets/addons/shopro/libs/element/element.js"></script>
|
|
<script src="__CDN__/assets/addons/shopro/libs/moment.js"></script>
|
|
<div id="notification-index" v-cloak>
|
|
<div class="title">
|
|
<div class="title-tip">
|
|
模板消息
|
|
</div>
|
|
<div class="activity-tip color-444" v-if="tipCloseFlag">
|
|
<div class="tips">
|
|
<p><strong>使用说明</strong></p>
|
|
<p>1、消息通知仅用于向用户发送重要的服务通知,只能用于符合其要求的服务场景中,如拼团成功通知,商品发货通知等。不支持广告等营销类消息以及其它所有可能对用户造成骚扰的消息。
|
|
</p>
|
|
<i class="el-icon-close tip-close" @click="tipClose"></i>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="fans-body">
|
|
<el-table :data="notificationData" border style="width: 100%">
|
|
<el-table-column prop="name" label="消息类别" min-width="120">
|
|
</el-table-column>
|
|
<el-table-column min-width="340">
|
|
<template slot="header" slot-scope="scope">
|
|
<div class="table-head-tip">
|
|
<img src="/assets/addons/shopro/img/notification/wxOfficialAccount.png">
|
|
<span>公众号模板通知</span>
|
|
</div>
|
|
</template>
|
|
<template slot-scope="scope">
|
|
<div class="notification-item-box display-flex">
|
|
<div class="item-btn">
|
|
<div class="wx-config" @click="edit(scope.$index,'wxOfficialAccount')">
|
|
编辑配置
|
|
</div>
|
|
<div class="wx-send">
|
|
已发送{{scope.row.wxOfficialAccount.sendnum}}次
|
|
</div>
|
|
</div>
|
|
<div class="display-flex">
|
|
<el-switch v-model="scope.row.wxOfficialAccount.status" active-color="#7536D0" inactive-color="#E6E6E6" :active-value="1" :inactive-value="0"
|
|
style="margin: 0 14px 0 20px;" @change="changeStatua(scope.row.wxOfficialAccount.platform,scope.row.wxOfficialAccount.event,scope.row.wxOfficialAccount.name,scope.row.wxOfficialAccount.status)">
|
|
</el-switch>
|
|
<div>
|
|
启用
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</el-table-column>
|
|
<!-- <el-table-column min-width="340">
|
|
<template slot="header" slot-scope="scope">
|
|
<div class="table-head-tip">
|
|
<img src="/assets/addons/shopro/img/notification/wxOfficialAccount.png">
|
|
<span>公众号订阅通知</span>
|
|
</div>
|
|
</template>
|
|
<template slot-scope="scope">
|
|
<div class="notification-item-box display-flex">
|
|
<div class="item-btn">
|
|
<div class="wx-config" @click="edit(scope.$index,'wxOfficialAccountBizsend')">
|
|
编辑配置
|
|
</div>
|
|
<div class="wx-send">
|
|
已发送{{scope.row.wxOfficialAccountBizsend.sendnum}}次
|
|
</div>
|
|
</div>
|
|
<div class="display-flex">
|
|
<el-switch v-model="scope.row.wxOfficialAccountBizsend.status" active-color="#7536D0" inactive-color="#E6E6E6" :active-value="1" :inactive-value="0"
|
|
style="margin: 0 14px 0 20px;" @change="changeStatua(scope.row.wxOfficialAccountBizsend.platform,scope.row.wxOfficialAccountBizsend.event,scope.row.wxOfficialAccountBizsend.name,scope.row.wxOfficialAccountBizsend.status)">
|
|
</el-switch>
|
|
<div>
|
|
启用
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</el-table-column> -->
|
|
<el-table-column min-width="340">
|
|
<template slot="header" slot-scope="scope">
|
|
<div class="table-head-tip">
|
|
<img src="/assets/addons/shopro/img/notification/wxMiniProgram.png">
|
|
<span>微信小程序</span>
|
|
</div>
|
|
</template>
|
|
<template slot-scope="scope">
|
|
<div class="notification-item-box display-flex">
|
|
<div class="item-btn">
|
|
<div class="wx-config wxmin-config" @click="edit(scope.$index,'wxMiniProgram')">
|
|
编辑配置
|
|
</div>
|
|
<div class="wx-send wxmin-send">
|
|
已发送{{scope.row.wxMiniProgram.sendnum}}次
|
|
</div>
|
|
</div>
|
|
<div class="display-flex">
|
|
<el-switch v-model="scope.row.wxMiniProgram.status" active-color="#7536D0" inactive-color="#E6E6E6" :active-value="1" :inactive-value="0"
|
|
style="margin: 0 14px 0 20px;" @change="changeStatua(scope.row.wxMiniProgram.platform,scope.row.wxMiniProgram.event,scope.row.wxMiniProgram.name,scope.row.wxMiniProgram.status)">
|
|
</el-switch>
|
|
<div>
|
|
启用
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column min-width="340">
|
|
<template slot="header" slot-scope="scope">
|
|
<div class="table-head-tip">
|
|
<img src="/assets/addons/shopro/img/notification/note.png">
|
|
<span>短信通知</span>
|
|
</div>
|
|
</template>
|
|
<template slot-scope="scope">
|
|
<div class="notification-item-box display-flex">
|
|
<div class="item-btn">
|
|
<div class="wx-config note-config" @click="edit(scope.$index,'sms')">
|
|
编辑配置
|
|
</div>
|
|
<div class="wx-send note-send">
|
|
已发送{{scope.row.sms.sendnum}}次
|
|
</div>
|
|
</div>
|
|
<div class="display-flex">
|
|
<el-switch v-model="scope.row.sms.status" active-color="#7536D0" inactive-color="#E6E6E6" :active-value="1" :inactive-value="0"
|
|
style="margin: 0 14px 0 20px;" @change="changeStatua(scope.row.sms.platform,scope.row.sms.event,scope.row.sms.name,scope.row.sms.status)">
|
|
</el-switch>
|
|
<div>
|
|
启用
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</el-table-column>
|
|
<el-table-column min-width="340">
|
|
<template slot="header" slot-scope="scope">
|
|
<div class="table-head-tip">
|
|
<img src="/assets/addons/shopro/img/notification/email.png">
|
|
<span>邮件通知</span>
|
|
</div>
|
|
</template>
|
|
<template slot-scope="scope">
|
|
<div class="notification-item-box display-flex">
|
|
<div class="item-btn">
|
|
<div class="wx-config email-config" @click="edit(scope.$index,'email')">
|
|
编辑配置
|
|
</div>
|
|
<div class="wx-send email-send">
|
|
已发送{{scope.row.email.sendnum}}次
|
|
</div>
|
|
</div>
|
|
<div class="display-flex">
|
|
<el-switch v-model="scope.row.email.status" active-color="#7536D0" inactive-color="#E6E6E6" :active-value="1" :inactive-value="0"
|
|
style="margin: 0 14px 0 20px;" @change="changeStatua(scope.row.email.platform,scope.row.email.event,scope.row.email.name,scope.row.email.status)">
|
|
</el-switch>
|
|
<div>
|
|
启用
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</template>
|
|
</el-table-column>
|
|
</el-table>
|
|
</div>
|
|
<el-dialog title="配置" :visible.sync="notificationDialog" :before-close="notificationClose"
|
|
width="600" :close-on-click-modal="false">
|
|
<div class="notification-bodys">
|
|
<div v-if="editPlatform!='email'">
|
|
<div class="notification-items">
|
|
<div class="notification-titles">模板消息ID:</div>
|
|
<el-input type="text" style="width:436px" placeholder="请输入模板消息ID" v-model="notificationForm.template_id"
|
|
>
|
|
</el-input>
|
|
</div>
|
|
<div class="dialog-table-body">
|
|
<div class="div-body">
|
|
<div v-for="(item,index) in notificationForm.fields" class="div-body-item">
|
|
<div class="first-item">
|
|
<span v-if="item.field">{{item.name}}</span>
|
|
<el-input v-else v-model="item.name" placeholder="请输入名称"></el-input>
|
|
</div>
|
|
<div class="table-item-with" style="margin: 0 28px;">
|
|
<el-input v-model="item.template_field" placeholder="请输入模板字段"></el-input>
|
|
</div>
|
|
<div class="table-item-with">
|
|
<el-input v-model="item.value" placeholder="请输入默认值"></el-input>
|
|
</div>
|
|
<div v-if="!item.field" class="del-btn-field" @click.stop="fieldDel(index)">
|
|
<i class="fa fa-close"></i>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="notification-items notification-footer">
|
|
<div class="common-btn add-btn" @click="addfield">
|
|
<i class="el-icon-plus"></i>添加
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="email-bodys" v-if="editPlatform=='email'">
|
|
|
|
<div v-for="(item,index) in notificationForm.fields" class="div-body-item">
|
|
<div class="first-item">
|
|
<span v-if="item.field">{{item.name}}</span>
|
|
<el-input v-else v-model="item.name" placeholder="请输入名称"></el-input>
|
|
</div>
|
|
<!-- <div class="table-item-with" style="margin: 0 28px;">
|
|
<el-input v-model="item.value" placeholder="请输入内容"></el-input>
|
|
</div> -->
|
|
<div class="table-item-with flex-1">
|
|
<el-input v-model="item.field" placeholder="请输入模板字段" readonly></el-input>
|
|
</div>
|
|
<div v-if="!item.field" class="del-btn-field" @click.stop="fieldDel(index)">
|
|
<i class="fa fa-close"></i>
|
|
</div>
|
|
</div>
|
|
<div style="color:#FF5959;margin-bottom:10px">请按照如下格式在文档中插入要显示的字段 p:{字段名}</div>
|
|
<form id="add-form" class="form-horizontal" role="form" data-toggle="validator" method="POST" action="">
|
|
<div class="display-flex" style="align-items: flex-start;">
|
|
<div style="flex: 1;">
|
|
<textarea id="c-content" class="form-control editor" rows="5" name="row[content]" cols="50"></textarea>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
|
|
</div>
|
|
<div class="notification-items notification-btn">
|
|
<div @click="notificationClose" class="common-btn notification-btn-1">取消</div>
|
|
<div @click="notificationClose('yes')" class="common-btn notification-btn-2">确定</div>
|
|
</div>
|
|
</div>
|
|
</el-dialog>
|
|
</div> |