mirror of https://github.com/rocboss/paopao-ce
parent
5cd43cc156
commit
f87f99ea5e
@ -0,0 +1,105 @@
|
||||
<template>
|
||||
<n-modal
|
||||
:show="show"
|
||||
@update:show="closeModal"
|
||||
class="whisper-card"
|
||||
preset="card"
|
||||
size="small"
|
||||
title="私信"
|
||||
:mask-closable="false"
|
||||
:bordered="false"
|
||||
:style="{
|
||||
width: '360px',
|
||||
}"
|
||||
>
|
||||
<div class="whisper-wrap">
|
||||
<n-alert :show-icon="false">
|
||||
即将发送私信给:
|
||||
<n-ellipsis style="max-width: 100%">
|
||||
<n-gradient-text type="success">
|
||||
{{ user.nickname }}@{{ user.username }}
|
||||
</n-gradient-text>
|
||||
</n-ellipsis>
|
||||
</n-alert>
|
||||
<div class="whisper-line">
|
||||
<n-input
|
||||
type="textarea"
|
||||
placeholder="请输入私信内容(请勿发送不和谐内容,否则将会被封号)"
|
||||
:autosize="{
|
||||
minRows: 5,
|
||||
maxRows: 10,
|
||||
}"
|
||||
v-model:value="content"
|
||||
maxlength="200"
|
||||
show-count
|
||||
/>
|
||||
</div>
|
||||
<div class="whisper-line send-wrap">
|
||||
<n-button
|
||||
strong
|
||||
secondary
|
||||
type="primary"
|
||||
:loading="loading"
|
||||
@click="sendWhisper"
|
||||
>
|
||||
发送
|
||||
</n-button>
|
||||
</div>
|
||||
</div>
|
||||
</n-modal>
|
||||
</template>
|
||||
|
||||
<script setup lang="ts">
|
||||
import { ref } from 'vue';
|
||||
import { sendUserWhisper } from '@/api/user';
|
||||
|
||||
const props = withDefaults(
|
||||
defineProps<{
|
||||
show: boolean;
|
||||
user: Item.UserInfo;
|
||||
}>(),
|
||||
{
|
||||
show: false,
|
||||
}
|
||||
);
|
||||
const content = ref('');
|
||||
const loading = ref(false);
|
||||
|
||||
const emit = defineEmits<{
|
||||
(e: 'success'): void;
|
||||
}>();
|
||||
const closeModal = () => {
|
||||
emit('success');
|
||||
};
|
||||
const sendWhisper = () => {
|
||||
loading.value = true;
|
||||
sendUserWhisper({
|
||||
user_id: props.user.id,
|
||||
content: content.value,
|
||||
})
|
||||
.then((res: any) => {
|
||||
window.$message.success('发送成功');
|
||||
loading.value = false;
|
||||
content.value = '';
|
||||
|
||||
closeModal();
|
||||
})
|
||||
.catch((err: any) => {
|
||||
loading.value = false;
|
||||
});
|
||||
};
|
||||
</script>
|
||||
|
||||
<style lang="less" scoped>
|
||||
.whisper-wrap {
|
||||
.whisper-line {
|
||||
margin-top: 10px;
|
||||
|
||||
&.send-wrap {
|
||||
.n-button {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</style>
|
Loading…
Reference in new issue