|
@@ -35,10 +35,15 @@
|
|
|
>
|
|
|
<div class="tr_btn" v-hasPermi="['sys:user:export']">导入成员</div>
|
|
|
</el-upload>
|
|
|
- <div class="tr_btn" @click="handleAddUser" v-hasPermi="['sys:user:add']">添加成员</div>
|
|
|
+ <div class="tr_btn tb2" @click="handleAddUser" v-hasPermi="['sys:user:add']">添加成员</div>
|
|
|
+ <div class="tr_btn tb2" @click="handleSendEmail">发送邮件</div>
|
|
|
</div>
|
|
|
</div>
|
|
|
- <el-table :data="userList" border cell-class-name="vertical-top-cell" v-loading="loading" empty-text="暂无人员" max-height="578px" style="margin-top: 16px;">
|
|
|
+ <el-table ref="multipleTable" @selection-change="handleSelectionChange":data="userList" border cell-class-name="vertical-top-cell" v-loading="loading" empty-text="暂无人员" max-height="578px" style="margin-top: 16px;">
|
|
|
+ <el-table-column
|
|
|
+ type="selection"
|
|
|
+ width="55">
|
|
|
+ </el-table-column>
|
|
|
<el-table-column label="序号" width="50">
|
|
|
<template #default="scope">
|
|
|
{{ scope.$index + 1 }}
|
|
@@ -53,10 +58,11 @@
|
|
|
</el-table-column>
|
|
|
<el-table-column label="人物简介" prop="introduction" width="400" show-overflow-tooltip></el-table-column>
|
|
|
<el-table-column label="人物故事" prop="userStory" width="400" show-overflow-tooltip></el-table-column>
|
|
|
- <el-table-column label="操作" width="150">
|
|
|
+ <el-table-column label="操作" width="180">
|
|
|
<template #default="scope">
|
|
|
<el-button link type="text" size="mini" @click="handleEdit(scope.row)" v-hasPermi="['sys:user:update']">编辑</el-button>
|
|
|
<el-button link type="text" size="mini" @click="handleDelete(scope.row)" v-hasPermi="['sys:user:delete']">删除</el-button>
|
|
|
+ <el-button link type="text" size="mini" @click="handleSend(scope.row)" v-hasPermi="['sys:user:delete']">发送邮件</el-button>
|
|
|
</template>
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
@@ -163,6 +169,19 @@
|
|
|
<el-button @click="cancel2" style="margin-right: 5%;">取 消</el-button>
|
|
|
</div>
|
|
|
</el-drawer>
|
|
|
+ <el-dialog width="30%" :visible.sync="emailShow" title="选择邮件模板" @close="emailCancel">
|
|
|
+ <el-form ref="emailRef" :model="emailForm" :rules="emailRules" label-width="100px" style="width: 90%;margin: 0 auto;">
|
|
|
+ <el-form-item label="邮件模板" prop="tempId">
|
|
|
+ <el-select v-model="emailForm.tempId" placeholder="请选择邮件模板" style="width: 100%;">
|
|
|
+ <el-option v-for="item in useAgentStore().emailModelList" :label="item.name" :value="item.id"></el-option>
|
|
|
+ </el-select>
|
|
|
+ </el-form-item>
|
|
|
+ </el-form>
|
|
|
+ <div class="demo-drawer__footer" style="display: flex;justify-content: end;">
|
|
|
+ <el-button :loading="emailButtonLoading" type="primary" @click="emailSubmitForm">发 送</el-button>
|
|
|
+ <el-button @click="emailCancel" style="margin-right: 5%;">取 消</el-button>
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -172,6 +191,7 @@
|
|
|
const { proxy } = getCurrentInstance();
|
|
|
import {useAgentStore} from "@/store_v3/modules/agent";
|
|
|
useAgentStore().getCompanyData();
|
|
|
+ useAgentStore().getEmailModelData();
|
|
|
import {
|
|
|
getCoachList,
|
|
|
updateCoach,
|
|
@@ -179,6 +199,7 @@
|
|
|
deleteCoach,
|
|
|
addCoach,
|
|
|
getTeamListById,
|
|
|
+ sendEmailToUser
|
|
|
} from '@/api/agent/index.js'
|
|
|
|
|
|
const uploadUrl = `${window.SITE_CONFIG["apiURL"]}/sys/user/import`
|
|
@@ -270,6 +291,50 @@
|
|
|
{ pattern: /^[a-zA-Z0-9_.-]+@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*\.[a-zA-Z0-9]{2,6}$/, message: '请输入正确的邮箱', trigger: 'blur' }
|
|
|
]
|
|
|
});
|
|
|
+ const multipleSelection = ref([])
|
|
|
+
|
|
|
+ const emailShow = ref(false);
|
|
|
+ const emailRef = ref(null);
|
|
|
+ const emailButtonLoading = ref(false);
|
|
|
+ const emailForm = ref({
|
|
|
+ tempId:null,
|
|
|
+ userIdList:[]
|
|
|
+ });
|
|
|
+ const emailRules = ref({
|
|
|
+ tempId: [
|
|
|
+ { required: true, message: '请选择邮件模板', trigger: 'change' }
|
|
|
+ ]
|
|
|
+ });
|
|
|
+ const currentUserId = ref(null);
|
|
|
+
|
|
|
+ const emailSubmitForm = async () => {
|
|
|
+ proxy.$refs.emailRef.validate((valid) => {
|
|
|
+ if (valid) {
|
|
|
+ emailButtonLoading.value = true;
|
|
|
+ emailForm.value.userIdList = multipleSelection.value.length>0?multipleSelection.value.map(item=>item.id):[currentUserId.value];
|
|
|
+ sendEmailToUser(emailForm.value).then(res=>{
|
|
|
+ if(res.code!==0) return proxy.$message.error(res.msg);
|
|
|
+ proxy?.$modal.msgSuccess('发送成功!')
|
|
|
+ }).finally(()=>{emailButtonLoading.value=false;emailShow.value = false;})
|
|
|
+ } else {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ };
|
|
|
+ const emailCancel = () => {
|
|
|
+ emailShow.value = false;
|
|
|
+ emailButtonLoading.value = false;
|
|
|
+ currentUserId.value = null;
|
|
|
+ emailForm.value = {
|
|
|
+ tempId:null,
|
|
|
+ userIdList:[]
|
|
|
+ };
|
|
|
+ };
|
|
|
+
|
|
|
+
|
|
|
+ const handleSelectionChange = (val) => {
|
|
|
+ multipleSelection.value = val;
|
|
|
+ }
|
|
|
|
|
|
const handleBack = () => {
|
|
|
proxy.$router.back()
|
|
@@ -350,6 +415,18 @@
|
|
|
userTitle.value = "新增成员详情";
|
|
|
userShow.value = true;
|
|
|
}
|
|
|
+
|
|
|
+ const handleSendEmail = async () => {
|
|
|
+ if(multipleSelection.value.length === 0) return proxy.$message.error('请选择要发送邮件的成员!');
|
|
|
+ emailShow.value = true;
|
|
|
+ // await proxy.$modal.confirm('确定要发送邮件给选中的成员吗?', '提示').finally(()=>{})
|
|
|
+ }
|
|
|
+
|
|
|
+ const handleSend = async row => {
|
|
|
+ emailShow.value = true;
|
|
|
+ currentUserId.value = row.id;
|
|
|
+ // await proxy.$modal.confirm('确定要发送邮件给成员【'+row.realName+'】吗?', '提示').finally(()=>{})
|
|
|
+ }
|
|
|
|
|
|
const reset = () => {
|
|
|
userForm.value = {
|
|
@@ -378,7 +455,7 @@
|
|
|
proxy.$refs.userRef.validate((valid) => {
|
|
|
if (valid) {
|
|
|
buttonLoading2.value = true;
|
|
|
- userForm.value.username = userForm.value.mobile;
|
|
|
+ // userForm.value.username = userForm.value.mobile;
|
|
|
userForm.value.enterpriseId = programid.value;
|
|
|
userForm.value.teamId = teamid.value;
|
|
|
if(userForm.value.id){
|
|
@@ -542,7 +619,7 @@
|
|
|
display: flex;
|
|
|
align-items: center;
|
|
|
justify-content: center;
|
|
|
- &:last-child{
|
|
|
+ &.tb2{
|
|
|
background: #761E6A;
|
|
|
color: #FFFFFF;
|
|
|
}
|