|
|
@ -7,182 +7,172 @@ import CustomEditor from '@/components/common/CustomEditor.vue' |
|
|
|
const emits = defineEmits(['closeBox']) |
|
|
|
const props = defineProps(['user_no', 'gold', 'sendMode']) |
|
|
|
const data = reactive({ |
|
|
|
options: [ |
|
|
|
{ label: '请选择', value: 0 }, |
|
|
|
{ label: '金币', value: 1 }, |
|
|
|
// { label: '钻石', value: 2 }, |
|
|
|
// { label: '点券', value: 3 }, |
|
|
|
// { label: '道具', value: 4 }, |
|
|
|
] as any[], |
|
|
|
form: { |
|
|
|
user_no: props.user_no, |
|
|
|
recipient: '[]', |
|
|
|
append: [{ type: 0, num: '', rake: '' }] as any[], //[{num:2,type:1}] |
|
|
|
title: [''], |
|
|
|
content: [''], |
|
|
|
timing: '', |
|
|
|
send_mode: props.sendMode, // 0: 群发,1:指定玩家 |
|
|
|
expire_num: '', |
|
|
|
expire_type: 1, |
|
|
|
}, |
|
|
|
emailNum: 1, |
|
|
|
options: [ |
|
|
|
{ label: '请选择', value: 0 }, |
|
|
|
{ label: '金币', value: 1 }, |
|
|
|
] as any[], |
|
|
|
form: { |
|
|
|
user_no: props.user_no, |
|
|
|
recipient: '[]', |
|
|
|
append: [{ type: 0, num: '', rake: '' }] as any[], //[{num:2,type:1}] |
|
|
|
title: [''], |
|
|
|
content: [''], |
|
|
|
timing: '', |
|
|
|
send_mode: props.sendMode, // 0: 群发,1:指定玩家 |
|
|
|
expire_num: '', |
|
|
|
expire_type: 1, |
|
|
|
}, |
|
|
|
emailNum: 1, |
|
|
|
}) |
|
|
|
|
|
|
|
// const addProp = () => { |
|
|
|
// data.form.append.push({ type: '', num: '' }) |
|
|
|
// } |
|
|
|
|
|
|
|
// const delProp = () => { |
|
|
|
// if (data.form.append.length == 0) return |
|
|
|
|
|
|
|
// data.form.append.pop() |
|
|
|
// } |
|
|
|
|
|
|
|
const addEmail = () => { |
|
|
|
data.form.title.push('') |
|
|
|
data.form.content.push('') |
|
|
|
data.form.title.push('') |
|
|
|
data.form.content.push('') |
|
|
|
} |
|
|
|
|
|
|
|
const delEmail = () => { |
|
|
|
if (data.form.title.length == 0) return |
|
|
|
if (data.form.title.length == 0) return |
|
|
|
|
|
|
|
data.form.title.pop() |
|
|
|
data.form.content.pop() |
|
|
|
data.form.title.pop() |
|
|
|
data.form.content.pop() |
|
|
|
} |
|
|
|
|
|
|
|
//过期时间计算 |
|
|
|
const getExpireTime = () => { |
|
|
|
let timestamp = 0 |
|
|
|
if (data.form.expire_type == 1) timestamp = 86400 |
|
|
|
if (data.form.expire_type == 2) timestamp = 3600 |
|
|
|
if (data.form.expire_type == 3) timestamp = 60 |
|
|
|
let timestamp = 0 |
|
|
|
if (data.form.expire_type == 1) timestamp = 86400 |
|
|
|
if (data.form.expire_type == 2) timestamp = 3600 |
|
|
|
if (data.form.expire_type == 3) timestamp = 60 |
|
|
|
|
|
|
|
return parseInt(data.form.expire_num) * timestamp |
|
|
|
return parseInt(data.form.expire_num) * timestamp |
|
|
|
} |
|
|
|
|
|
|
|
const onSubmit = async () => { |
|
|
|
if (data.form.expire_num <= '0') { |
|
|
|
ElMessage.error('过期时间不能为空') |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
let appendProps = [] |
|
|
|
for (const index in data.form.append) { |
|
|
|
if (data.form.append[index].type == 0) { |
|
|
|
continue |
|
|
|
} else { |
|
|
|
if (data.form.append[index].num == '' || data.form.append[index].num < 1000) { |
|
|
|
ElMessage.error('道具数量不能小于1000') |
|
|
|
if (data.form.expire_num <= '0') { |
|
|
|
ElMessage.error('过期时间不能为空') |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
if (props.sendMode == 1 && data.form.user_no != '') { |
|
|
|
ElMessage.error('玩家ID不能为空') |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
if (data.form.append[index].rake == '' || data.form.append[index].rake < 0) { |
|
|
|
ElMessage.error('打码数量不能小于0') |
|
|
|
let appendProps = [] |
|
|
|
for (const index in data.form.append) { |
|
|
|
if (data.form.append[index].type == 0) { |
|
|
|
continue |
|
|
|
} else { |
|
|
|
if (data.form.append[index].num == '' || data.form.append[index].num < 1000) { |
|
|
|
ElMessage.error('道具数量不能小于1000') |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
if (data.form.append[index].rake == '' || data.form.append[index].rake < 0) { |
|
|
|
ElMessage.error('打码数量不能小于0') |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
appendProps.push({ |
|
|
|
type: data.form.append[index].type, |
|
|
|
num: parseInt(data.form.append[index].num), |
|
|
|
rake: parseInt(data.form.append[index].rake), |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
let params = { |
|
|
|
type: data.form.send_mode, |
|
|
|
title: data.form.title, |
|
|
|
content: data.form.content, |
|
|
|
timing: '', |
|
|
|
append: JSON.stringify(appendProps), |
|
|
|
recipient: '[]', |
|
|
|
expire: getExpireTime(), |
|
|
|
} |
|
|
|
|
|
|
|
if (props.sendMode == 1) params.recipient = JSON.stringify([parseInt(data.form.user_no)]) |
|
|
|
|
|
|
|
const respond = await request.post('/person/sendEmail', params) |
|
|
|
if (respond.code != 0) { |
|
|
|
ElMessage.error(respond.msg) |
|
|
|
return |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
appendProps.push({ type: data.form.append[index].type, num: parseInt(data.form.append[index].num), rake: parseInt(data.form.append[index].rake) }) |
|
|
|
} |
|
|
|
|
|
|
|
let params = { |
|
|
|
type: data.form.send_mode, |
|
|
|
title: data.form.title, |
|
|
|
content: data.form.content, |
|
|
|
timing: '', |
|
|
|
append: JSON.stringify(appendProps), |
|
|
|
recipient: '[]', |
|
|
|
expire: getExpireTime(), |
|
|
|
} |
|
|
|
|
|
|
|
//单体 |
|
|
|
if (data.form.send_mode == 2) { |
|
|
|
console.log(data.form.user_no) |
|
|
|
if (data.form.user_no == null || data.form.user_no == '') { |
|
|
|
ElMessage.error('玩家ID不能为空') |
|
|
|
return |
|
|
|
ElMessage.success('操作成功') |
|
|
|
data.form = { |
|
|
|
user_no: props.user_no, |
|
|
|
recipient: '[]', |
|
|
|
append: [{ type: 0, num: '', rake: '' }] as any[], //[{num:2,type:1}] |
|
|
|
title: [''], |
|
|
|
content: [''], |
|
|
|
timing: '', |
|
|
|
send_mode: props.sendMode, // 0: 群发,1:指定玩家 |
|
|
|
expire_num: '', |
|
|
|
expire_type: 1, |
|
|
|
} |
|
|
|
params.recipient = JSON.stringify([parseInt(data.form.user_no)]) |
|
|
|
} |
|
|
|
|
|
|
|
const respond = await request.post('/person/sendEmail', params) |
|
|
|
if (respond.code != 0) { |
|
|
|
ElMessage.error(respond.msg) |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
ElMessage.success('操作成功') |
|
|
|
data.form = { |
|
|
|
user_no: props.user_no, |
|
|
|
recipient: '[]', |
|
|
|
append: [{ type: 0, num: '', rake: '' }] as any[], //[{num:2,type:1}] |
|
|
|
title: [''], |
|
|
|
content: [''], |
|
|
|
timing: '', |
|
|
|
send_mode: props.sendMode, // 0: 群发,1:指定玩家 |
|
|
|
expire_num: '', |
|
|
|
expire_type: 1, |
|
|
|
} |
|
|
|
emits('closeBox', false) |
|
|
|
emits('closeBox', false) |
|
|
|
} |
|
|
|
|
|
|
|
watch(() => props.user_no, (v) => { |
|
|
|
data.form.user_no = v |
|
|
|
}) |
|
|
|
watch( |
|
|
|
() => props.user_no, |
|
|
|
(v) => { |
|
|
|
data.form.user_no = v |
|
|
|
} |
|
|
|
) |
|
|
|
</script> |
|
|
|
|
|
|
|
<template> |
|
|
|
<el-form> |
|
|
|
<el-form-item label="收件人" label-width="100"> |
|
|
|
<el-select v-model="data.form.send_mode" :disabled="props.user_no != undefined ? true : false" |
|
|
|
style="width: 100%"> |
|
|
|
<el-option label="所有玩家" :value="1"></el-option> |
|
|
|
<el-option label="指定玩家" :value="2"></el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item v-if="data.form.send_mode == 2" label="玩家ID" label-width="100"> |
|
|
|
<el-input v-model="data.form.user_no"></el-input> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<div v-for="(item, index) in data.form.title"> |
|
|
|
<el-form-item :label="`邮件标题${index + 1}`" label-width="100"> |
|
|
|
<el-input v-model="data.form.title[index]"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item :label="`邮件内容${index + 1}`" label-width="100"> |
|
|
|
<CustomEditor :content="data.form.content[index]" @update-content="(v) => (data.form.content[index] = v)" /> |
|
|
|
</el-form-item> |
|
|
|
</div> |
|
|
|
|
|
|
|
<el-form-item label="" label-width="100"> |
|
|
|
<el-row justify="space-between" style="width: 100%"> |
|
|
|
<el-col> |
|
|
|
<el-button type="primary" @click="addEmail">添加多语言</el-button> |
|
|
|
</el-col> |
|
|
|
<el-col> |
|
|
|
<el-button v-if="data.form.title.length > 1" type="danger" @click="delEmail">删除多语言</el-button> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item label="发送道具" label-width="100"> |
|
|
|
<el-card shadow="never" style="width: 100%"> |
|
|
|
<el-form v-for="(item, index) in data.form.append" :key="index"> |
|
|
|
<p class="tip-font">客户端金币比例为 1: 1000</p> |
|
|
|
<el-form-item> |
|
|
|
<el-select v-model="item.type" style="width: 100%" class="mb-10"> |
|
|
|
<el-option v-for="item in data.options" :label="item.label" :value="item.value"></el-option> |
|
|
|
<el-form> |
|
|
|
<el-form-item label="收件人" label-width="100"> |
|
|
|
<el-select v-model="data.form.send_mode" :disabled="props.user_no != undefined ? true : false" style="width: 100%"> |
|
|
|
<el-option label="所有玩家" :value="1"></el-option> |
|
|
|
<el-option label="指定玩家" :value="2"></el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item> |
|
|
|
<el-input v-model="item.num" style="width: 100%" class="mb-10" type="number" placeholder="道具数量"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item> |
|
|
|
<el-input v-model="item.rake" style="width: 100%" class="mb-10" type="number" placeholder="打码数量"></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
|
|
|
|
<!-- <el-row justify="space-between"> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item v-if="data.form.send_mode == 2" label="玩家ID" label-width="100"> |
|
|
|
<el-input v-model="data.form.user_no"></el-input> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<div v-for="(item, index) in data.form.title"> |
|
|
|
<el-form-item :label="`邮件标题${index + 1}`" label-width="100"> |
|
|
|
<el-input v-model="data.form.title[index]"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item :label="`邮件内容${index + 1}`" label-width="100"> |
|
|
|
<CustomEditor :content="data.form.content[index]" @update-content="(v) => (data.form.content[index] = v)" /> |
|
|
|
</el-form-item> |
|
|
|
</div> |
|
|
|
|
|
|
|
<el-form-item label="" label-width="100"> |
|
|
|
<el-row justify="space-between" style="width: 100%"> |
|
|
|
<el-col> |
|
|
|
<el-button type="primary" @click="addEmail">添加多语言</el-button> |
|
|
|
</el-col> |
|
|
|
<el-col> |
|
|
|
<el-button v-if="data.form.title.length > 1" type="danger" @click="delEmail">删除多语言</el-button> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
</el-form-item> |
|
|
|
|
|
|
|
<el-form-item label="发送道具" label-width="100"> |
|
|
|
<el-card shadow="never" style="width: 100%"> |
|
|
|
<el-form v-for="(item, index) in data.form.append" :key="index"> |
|
|
|
<p class="tip-font">客户端金币比例为 1: 1000</p> |
|
|
|
<el-form-item> |
|
|
|
<el-select v-model="item.type" style="width: 100%" class="mb-10"> |
|
|
|
<el-option v-for="item in data.options" :label="item.label" :value="item.value"></el-option> |
|
|
|
</el-select> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item> |
|
|
|
<el-input v-model="item.num" style="width: 100%" class="mb-10" type="number" placeholder="道具数量"></el-input> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item> |
|
|
|
<el-input v-model="item.rake" style="width: 100%" class="mb-10" type="number" placeholder="打码数量"></el-input> |
|
|
|
</el-form-item> |
|
|
|
</el-form> |
|
|
|
|
|
|
|
<!-- <el-row justify="space-between"> |
|
|
|
<el-col :span="2"> |
|
|
|
<el-button :icon="Plus" type="primary" circle @click="addProp"></el-button> |
|
|
|
</el-col> |
|
|
@ -190,23 +180,23 @@ watch(() => props.user_no, (v) => { |
|
|
|
<el-button :icon="Minus" type="danger" circle @click="delProp"></el-button> |
|
|
|
</el-col> |
|
|
|
</el-row> --> |
|
|
|
</el-card> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="过期时间" label-width="100"> |
|
|
|
<el-row> |
|
|
|
<el-col :span="18" style="margin-right: 5px"> |
|
|
|
<el-input v-model="data.form.expire_num" type="number"></el-input> |
|
|
|
</el-col> |
|
|
|
<el-col :span="5"> |
|
|
|
<el-select v-model="data.form.expire_type" style="width: 100%" class="mb-10"> |
|
|
|
<el-option label="天" :value="1"></el-option> |
|
|
|
<el-option label="时" :value="2"></el-option> |
|
|
|
<el-option label="分" :value="3"></el-option> |
|
|
|
</el-select> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
</el-form-item> |
|
|
|
<!-- <el-form-item label="发送时间" label-width="100"> |
|
|
|
</el-card> |
|
|
|
</el-form-item> |
|
|
|
<el-form-item label="过期时间" label-width="100"> |
|
|
|
<el-row> |
|
|
|
<el-col :span="18" style="margin-right: 5px"> |
|
|
|
<el-input v-model="data.form.expire_num" type="number"></el-input> |
|
|
|
</el-col> |
|
|
|
<el-col :span="5"> |
|
|
|
<el-select v-model="data.form.expire_type" style="width: 100%" class="mb-10"> |
|
|
|
<el-option label="天" :value="1"></el-option> |
|
|
|
<el-option label="时" :value="2"></el-option> |
|
|
|
<el-option label="分" :value="3"></el-option> |
|
|
|
</el-select> |
|
|
|
</el-col> |
|
|
|
</el-row> |
|
|
|
</el-form-item> |
|
|
|
<!-- <el-form-item label="发送时间" label-width="100"> |
|
|
|
<el-date-picker |
|
|
|
v-model="data.form.timing" |
|
|
|
type="datetime" |
|
|
@ -215,9 +205,9 @@ watch(() => props.user_no, (v) => { |
|
|
|
style="width: 100%" |
|
|
|
></el-date-picker> |
|
|
|
</el-form-item> --> |
|
|
|
<div class="paginate-center"> |
|
|
|
<el-button type="primary" @click="$emit('closeBox', false)">取消</el-button> |
|
|
|
<el-button type="danger" @click="onSubmit">确定</el-button> |
|
|
|
</div> |
|
|
|
</el-form> |
|
|
|
<div class="paginate-center"> |
|
|
|
<el-button type="primary" @click="$emit('closeBox', false)">取消</el-button> |
|
|
|
<el-button type="danger" @click="onSubmit">确定</el-button> |
|
|
|
</div> |
|
|
|
</el-form> |
|
|
|
</template> |
|
|
|