<template> <view> <cu-custom bgColor="bg-blue" :isBack="true"> <block slot="backText">返回</block> <block slot="content">{{title}}</block> </cu-custom> <form @submit="formSubmit" class="cu-list menu"> <view class="cu-form-group"> <view class="title"> <text class="red-color">* </text> 发送到 </view> <user-select v-model="inputForm.receiverIds"></user-select> </view> <view class="cu-form-group"> <view class="title"> <text class="red-color">* </text> 标题 </view> <input placeholder="请输入标题" maxlength="200" v-model="inputForm.mailDTO.title" name="title"></input> </view> <view class="cu-form-group"> <view class="title"> <text class="red-color">* </text> 内容 </view> <textarea maxlength="2000" v-model="inputForm.mailDTO.content" name="content" placeholder="请填写内容"></textarea> </view> <view class="bottom-wrap flex"> <view class="flex-sub"> <button class="cu-btn lg block buttonBox bg-gray" @click="saveDraft"> 存为草稿</button> </view> <view class="flex-sub"> <button class="cu-btn lg buttonBox block bg-blue " @click="sendEmail">发送邮件</button> </view> </view> </form> </view> </template> <script> import userSelect from '@/components/user-select/user-select.vue' var graceChecker = require("@/common/graceChecker.js"); import mailComposeService from "@/api/mail/mailComposeService"; import userService from "@/api/sys/userService" export default { onShow() { this.$auth.checkLogin() userService.treeData().then(({data})=>{ this.data = data }).catch((e)=>{ throw e }) }, async onLoad(mail) { if(mail&&mail.id){ this.titile = "编辑邮件"; let {data} = await mailComposeService.queryById(mail.id); this.inputForm = this.recover(this.inputForm, data); } }, components:{ userSelect }, data () { return { data: [], defaultProps: { children: 'children', label: 'label' }, title: '发送邮件', modalName: null, inputForm: { id: '', status: '', receiverIds: '', mailDTO: { title: '', overview: '', content: '' } } } }, methods: { PickerChange(e) { this.index = e.detail.value }, radioChange (evt) { this.inputForm.status = evt.detail.value }, saveDraft () { this.inputForm.status = '0' this.formSubmit() }, sendEmail () { this.inputForm.status = '1' this.formSubmit() }, selectUsers () { let ids = this.$refs.userTree.getCheckedNodes().filter((item)=>{ return item.type === 'user' }).map((item)=>{ return item.id }).join(","); let names = this.$refs.userTree.getCheckedNodes().filter((item)=>{ return item.type === 'user' }).map((item)=>{ return item.label }).join(","); this.inputForm.receiverIds = ids this.receiverNames = names this.hideModal() }, showModal(e) { this.modalName = e.currentTarget.dataset.target }, hideModal(e) { this.modalName = null }, formSubmit: function(e) { //定义表单规则 var rule = [ {name:"receiverIds", checkType : "notnull", checkRule:"", errorMsg:"收件人不能为空"}, {name:"mailDTO.title", checkType : "notnull", checkRule:"", errorMsg:"标题不能为空"}, {name:"mailDTO.content", checkType : "notnull", checkRule:"", errorMsg:"内容不能为空"} ]; //进行表单检查 var formData = this.inputForm; var checkRes = graceChecker.check(formData, rule); if(checkRes){ uni.showLoading() mailComposeService.save(this.inputForm).then(({data}) => { uni.showToast({title:data, icon:"success"}); uni.navigateTo({ url: '/pages/apps/mail/inbox' }) }).catch((e)=>{ console.log(e) }) }else{ uni.showToast({ title: graceChecker.error, icon: "none" }); } } } } </script> <style> .cu-form-group .title { min-width: calc(4em + 30px); } .cu-form-group.arrow:before { position: absolute; /* top: 0; */ right: 17px; /* bottom: 0; */ display: block; margin: auto; width: 17px; height: 17px; color: #8799a3; content: "\e6a3"; text-align: center; font-size: 20px; font-family: cuIcon; line-height: 17px; } .ellipsis-description { display: -webkit-box;/*作为弹性伸缩盒子模型显示*/ -webkit-line-clamp: 1; /*显示的行数;如果要设置2行加...则设置为2*/ overflow: hidden; /*超出的文本隐藏*/ text-overflow: ellipsis; /* 溢出用省略号*/ -webkit-box-orient: vertical;/*伸缩盒子的子元素排列:从上到下*/ } .cu-form-group .title { min-width: calc(4em + 40px); } </style>