文件

324 行
14 KiB
HTML
可执行文件

此文件含有模棱两可的 Unicode 字符

此文件含有可能会与其他字符混淆的 Unicode 字符。 如果您是想特意这样的,可以安全地忽略该警告。 使用 Escape 按钮显示他们。

<!--[1.7.5]-->
<style>
.small-form .el-input {
width: 200px;
}
.tips {
color: #aaa;
font-size: 13px;
}
.ulListStyle {
list-style: inherit !important;
}
.ulListStyle::marker {
text-indent: 10px;
}
.box-card {
margin-top: 10px;
}
</style>
<div id="SmsApp">
<el-collapse>
<el-collapse-item name="1">
<template slot="title">
<el-button type="text" size="small">短信规则 >></el-button>
</template>
<p>该短信为阿里大鱼短信,如需开通,请登录阿里云,搜索"阿里大鱼"进行设置 <a target="_blank" style="color:#409EFF"
href="https://account.aliyun.com/">去设置</a>
</p>
<p>短信验证码:使用同一个签名,对同一个手机号码发送短信验证码,1条/分钟,5条/小时,10条/天。一个手机号码通过阿里云短信服务平台只能收到40条/天。</p>
<p>短信通知:使用同一个签名和同一个短信模版ID,对同一个手机号码发送短信通知,支持50条/日</p>
<p>短信测试:点击保存设置后,才能根据最新的设置进行短信测试,若要测试商户配置,请开启总开关</p>
<p><a style="color:#409EFF"
href="https://help.aliyun.com/document_detail/44335.html?spm=a2c4g.11186623.4.1.7603402aeAHMn8"
target="_blank">点击查看阿里大鱼短信具体规则</a></p>
<p>短信配置模板说明:</p>
<ul class="ulListStyle">
<li>验证码:仅支持一个变量:${code}->验证码</li>
<li>会员注册成功提醒:仅支持两个变量:${phone}->手机号,${shopname}->商户名称</li>
<li v-if="operate.credit">
商户赊账提醒:仅支持三个变量:${store_count}->门店数量,${month_wait_still}->本月待还金额,${all_wait_still}->总待还金额
</li>
<li v-if="operate.credit">
门店赊账提醒:仅支持三个变量:${store_name}->门店名称,${month_wait_still}->本月待还金额,${all_wait_still}->总待还金额
</li>
</ul>
</el-collapse-item>
</el-collapse>
<el-card class="box-card">
<div slot="header">
<span>系统短信(仅支持验证码)</span>
</div>
<el-form :inline="true" size="mini">
<el-form-item label="状态">
<span v-if="system_config.status==1" style="color: #0bb20c">可用</span>
<span v-else style="color: #ea4b5a">不可用</span>
</el-form-item>
<el-form-item label="上限">{{system_config.max}}</el-form-item>
<el-form-item label="已用">{{system_config.used}}</el-form-item>
<el-form-item label="剩余">{{system_config.surplus}}</el-form-item>
</el-form>
</el-card>
<el-divider content-position="left">自定义短信</el-divider>
<el-form label-width="160px" size="small" class="small-form">
<el-form-item label="accessKeyId">
<el-input v-model="ruleForm.accesskeyid" clearable placeholder="阿里大鱼accessKeyId"></el-input>
</el-form-item>
<el-form-item label="密钥">
<el-input v-model="ruleForm.accesskeysecret" clearable placeholder="阿里大鱼密钥"></el-input>
</el-form-item>
<el-form-item label="签名名称">
<el-input v-model="ruleForm.signname" clearable placeholder="阿里大鱼签名名称"></el-input>
</el-form-item>
<el-form-item label="验证码模板">
<el-input v-model="ruleForm.verifitemplatecode" clearable placeholder="验证码模板CODE"></el-input>
<el-button type="text" v-if="operate.smSTest" @click="testModel(1)">短信测试</el-button>
</el-form-item>
<el-form-item label="成功注册会员模板">
<el-input v-model="ruleForm.registertemplatecode" clearable placeholder="成功注册会员模板CODE"></el-input>
<el-button type="text" v-if="operate.smSTest" @click="testModel(2)">短信测试</el-button>
<div>
<span style="color: #666">是否开启成功注册会员模板</span>
<el-switch v-model="ruleForm.register"
active-value="1"
inactive-value="2">
</el-switch>
</div>
</el-form-item>
<template v-if="operate.credit==1">
<el-form-item label="商户赊账短信通知模板">
<el-input v-model="ruleForm.mer_credit_code" clearable placeholder="赊账短信通知模板CODE"></el-input>
<el-button type="text" v-if="operate.smSTest" @click="testModel(3)">短信测试</el-button>
</el-form-item>
<el-form-item label="门店赊账短信通知模板">
<el-input v-model="ruleForm.store_credit_code" clearable placeholder="赊账短信通知模板CODE"></el-input>
<el-button type="text" v-if="operate.smSTest" @click="testModel(4)">短信测试</el-button>
</el-form-item>
</template>
<el-form-item label="自定义模板总开关">
<el-switch v-model="ruleForm.status"
active-value="1"
inactive-value="2">
</el-switch>
<div class="tips">若未开启,则没有成功注册的短信,验证码将会使用系统验证码,其余的短信类型将发送不成功</div>
</el-form-item>
<el-form-item v-if="operate.saveMerSms">
<el-button @click="seeSmsOrder">查看短信记录</el-button>
<el-button type="primary" @click="saveSmsSet">保存设置</el-button>
</el-form-item>
</el-form>
<el-dialog title="短信记录" :modal-append-to-body="false"
:visible.sync="smsOrderDialog" custom-class="select-image-el-dialog" width="600px">
<el-form :inline="true" size="mini">
<el-form-item label="短信类型:">
<el-select v-model="searchForm.type"
placeholder="选择短信类型" clearable filterable>
<el-option label="系统短信" :value="1"></el-option>
<el-option label="商家短信" :value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item label="短信状态:">
<el-select v-model="searchForm.status"
placeholder="选择短信状态" clearable filterable>
<el-option label="成功" :value="1"></el-option>
<el-option label="失败" :value="2"></el-option>
</el-select>
</el-form-item>
<el-form-item>
<el-button plain type="primary" @click="handleCurrentChange(1)">搜索</el-button>
</el-form-item>
</el-form>
<el-table border :data="smsOrderList" size="mini">
<el-table-column align="center" type="index" label="序号" width="60px"></el-table-column>
<el-table-column align="center" prop="phone" label="手机号" width="130px"></el-table-column>
<el-table-column align="center" prop="info" label="关键内容" width="130px"
show-overflow-tooltip></el-table-column>
<el-table-column align="center" prop="status_name" label="状态" width="100px"></el-table-column>
<el-table-column align="center" prop="add_time" label="时间" width="150px"></el-table-column>
<el-table-column align="center" prop="scene_name" label="短信类型" width="110px"></el-table-column>
<el-table-column align="center" prop="type_name" label="用途" width="110px"></el-table-column>
</el-table>
<el-pagination
@current-change="handleCurrentChange"
:current-page="searchForm.page"
:page-sizes="[10]"
:page-size="10"
layout="total, sizes, prev, pager, next, jumper"
:total="currentLen">
</el-pagination>
</el-dialog>
</div>
<script>
var SmsApp = new Vue({
el: '#SmsApp',
data() {
return {
ruleForm: {
accesskeyid: '',
accesskeysecret: '',
signname: '',
verifitemplatecode: '',
registertemplatecode: '',
register: '2',
mer_credit_code: '',
store_credit_code: '',
status: '2',
},//商户短信表单信息
system_config: {},//系统短信
operate: {
smSTest: false,
saveMerSms: false,
credit: false,
},//权限
smsOrderDialog: false,
smsOrderList: [],
searchForm: {
type: '',
status: '',
page: 1,
limit: 10,
},
currentLen: 0,
loading: false,
}
},
methods: {
//保存短信配置
saveSmsSet() {
this.$confirm('确认保存以上设置吗', '提示', {
confirmButtonText: '保存',
cancelButtonText: '取消',
}).then(() => {
this.loading = true;
$.ajax({
url: '/index.php/Retail/Sms/saveMerSms',
data: this.ruleForm,
type: 'post',
success: (res) => {
this.loading = false;
this.$message({
message: res.msg,
type: res.status == 1 ? 'success' : 'warning',
});
},
error: (error) => {
this.loading = false;
console.error(error);
this.$message({
message: '请求发生错误,请稍后重试',
type: 'error',
});
}
})
}).catch(() => {
});
},
//测试短信
testModel(type) {
this.$prompt('请输入接收短信的手机号', '提示', {
closeOnClickModal: false,
confirmButtonText: '发送短信',
cancelButtonText: '取消',
inputPattern: /^1[3456789]\d{9}$/,
title: '',
inputErrorMessage: '手机号输入不正确'
}).then(({value}) => {
$.ajax({
url: '/index.php/Retail/Sms/smSTest',
type: 'post',
data: {
phone: value,
type: type,
},
success: (res) => {
if (res.status == 1) {
this.$message({message: res.message, type: 'success'});
} else {
this.$message({message: res.message, type: 'error'});
}
},
error: (error) => {
console.error(error);
this.$message({message: '系统发生错误,请稍后重试', type: 'error'});
}
})
})
},
//查看短信记录
seeSmsOrder() {
this.handleCurrentChange(1);
this.smsOrderDialog = true;
},
//切换短信记录分页
handleCurrentChange(val) {
this.searchForm.page = 1;
this.getSmsOrder();
},
//获取短信记录
getSmsOrder() {
$.ajax({
url: '/index.php/Retail/Sms/getMerSmsOrder',
data: this.searchForm,
type: 'post',
success: (res) => {
if (res.status == 1) {
this.smsOrderList = res.data;
this.currentLen = res.count;
}
}
})
},
//获取短信设置
getSmsConfig() {
$.ajax({
url: '/index.php/Retail/Sms/index',
type: 'post',
success: (res) => {
if (res.status == 1) {
for (let key in this.ruleForm) {
if (res.data.merchant_config[key]) this.ruleForm[key] = res.data.merchant_config[key];
}
this.system_config = res.data.system_config;
this.operate.credit = res.data.credit;
}
}
})
},
//获取操作权限
getOperate() {
var auth_list = {
saveMerSms: '/index.php/Retail/Sms/saveMerSms',
smSTest: '/index.php/Retail/Sms/smSTest',
};
$.ajax({
url: '/index.php/Retail/Component/checkOperateAuth',
type: "post",
data: {
auth_list: JSON.stringify(auth_list),
},
success: (res) => {
if (res.status == 1) {
console.log(res);
this.operate.saveMerSms = res.data.saveMerSms;
this.operate.smSTest = res.data.smSTest;
}
}
})
}
},
mounted() {
this.getOperate();
this.getSmsConfig();
},
created() {
}
})
</script>