智慧保安互联网APP
shuishen
2021-11-25 919cf3e086c89141a2cabd4e92a1776f6b32679a
pages/message/addMessage.vue
@@ -1,6 +1,8 @@
<template>
   <view class="container">
      <view class='initiae-box'>
      <view class="group-chat-box">
         <u-form :model="form" ref="uForm">
            <u-form-item label-width='132' prop="title" label="通知标题" :required="true">
@@ -11,14 +13,54 @@
               <u-input type='textarea' v-model="form.content" placeholder="请输入通知内容" />
            </u-form-item>
            <u-form-item label-width='132' label="接收人">
               <u-button slot="right" type="success" size="mini" @click="recipientClick">选择接收人</u-button>
               <u-popup :closeable="true" v-model="recipientShow" mode="bottom" height="50%" border-radius="14">
                  <view>
                     <u-checkbox-group v-show="recipientList.length > 0" @change="checkboxGroupChange"
                        :wrap='true' :size="40">
                        <u-checkbox v-model="item.checked" v-for="(item, index) in recipientList" :key="index"
                           :name="item.id" shape="circle"
                           style="padding: 0 40rpx; height: 92rpx; position: relative; box-sizing: border-box;">
                           <view style="margin-left: 22rpx">
                              {{item.real_name}}
                           </view>
                        </u-checkbox>
                     </u-checkbox-group>
                     <view style=" height: 92rpx; padding: 0 40rpx;" v-show="recipientList.length == 0">
                        暂无数据
                     </view>
                  </view>
               </u-popup>
            </u-form-item>
         </u-form>
         <view>
            <u-button type="primary" @click="initiateClick" style="margin-top: 4%; width: 60%;">发送</u-button>
         </view>
         <view>
            <u-toast ref="uToast" />
         </view>
      </view>
      <view class="establish-box">
         <u-button class="submit" type="primary" @click="initiateClick">发送
         </u-button>
      </view>
      <view>
         <u-toast ref="uToast" />
      </view>
   </view>
</template>
@@ -26,10 +68,13 @@
   export default {
      data() {
         return {
            recipientShow: false,
            recipientList: [],
            form: {
               title: '',
               content: ''
               content: '',
               recipientData: []
            },
            rules: {
               content: [{
@@ -57,11 +102,95 @@
      },
      mounted() {},
      onReady() {
         this.$refs.uForm.setRules(this.rules);
         this.$refs.uForm.setRules(this.rules);
      },
      methods: {
         recipientClick() {
            if (this.recipientList.length > 0) {
               this.recipientShow = true;
               return
            }
            var data = null;
            if (this.$store.state.UserData.rname[0] ==
               '保安公司管理员') {
               data = {
                  type: 2,
                  deptid: this.$store.state.UserData.dept_id
               }
               uni.request({
                  url: this.$store.state.piAPI + "/blade-user/seleL",
                  method: "get",
                  data: data,
                  success: (res) => {
                     this.recipientList = []
                     res.data.data.forEach(item => {
                        if (item.id != this.$store.state
                           .UserData.user_id
                        ) {
                           item.checked = false;
                           this.recipientList.push(item)
                        }
                     })
                     this.recipientShow = true;
                  }
               });
            } else {
               uni.request({
                  url: this.$store.state.piAPI + '/blade-user/pages?dispatch=0&jurisdiction=' + this.$store
                     .state.UserData.jurisdiction + '&current=1&size=999999',
                  method: "get",
                  data: data,
                  success: (res) => {
                     console.log(res, 546)
                     this.recipientList = []
                     res.data.data.records.forEach(item => {
                        if (item.id != this.$store.state
                           .UserData.user_id
                        ) {
                           item.checked = false
                           item.real_name = item.realName
                           this.recipientList.push(item)
                        }
                     })
                     this.recipientShow = true;
                  }
               });
            }
         },
         checkboxGroupChange(e) {
            this.form.recipientData = e
         },
         getCurrentTime() {
            let date = new Date();
@@ -81,7 +210,28 @@
            this.$refs.uForm.validate(valid => {
               if (valid) {
                  if (this.form.recipientData.length == 0) {
                     this.$refs.uToast.show({
                        title: '请最少选择一个接收人',
                     })
                     return
                  }
                  var receivedNameStr = []
                  this.form.recipientData.forEach(it => {
                     this.recipientList.forEach(item => {
                        if (it.id == item.id) {
                           receivedNameStr.push(item.real_name)
                        }
                     })
                  })
                  uni.request({
                     url: this.$store.state.piAPI + "/blade-system/dept/detail",
                     method: "get",
@@ -91,46 +241,87 @@
                     success: (result) => {
                        var deptCategory = result.data.data.deptCategory;
                           uni.request({
                              url: this.$store.state.piAPI + "/blade-desk/notice/submit",
                              method: "post",
                              data: {
                                 title: this.form.title,
                                 content: this.form.content,
                                 category: deptCategory,
                                 deptId: result.data.data.deptCategory,
                                 releaseTime: this.getCurrentTime(),
                              },
                              success: (res) => {
                                 if (res.data.msg == "操作成功") {
                                    this.$refs.uToast.show({
                                       title: '新增通知成功',
                                       type: 'success',
                                       url: '/pages/message/message'
                                    })
                                 }
                        uni.request({
                           url: this.$store.state.piAPI + "/blade-desk/notice/submit",
                           method: "post",
                           data: {
                              type: 1,
                              title: this.form.title,
                              content: this.form.content,
                              category: deptCategory,
                              deptId: this.createData.dept_id,
                              releaseTime: this.getCurrentTime(),
                              receivedName: receivedNameStr.toString(),
                              receivedIds: this.form.recipientData.toString(),
                           },
                           success: (res) => {
                              if (res.data.msg == "操作成功") {
                                 this.$refs.uToast.show({
                                    title: '新增通知成功',
                                    type: 'success',
                                    url: '/pages/message/message'
                                 })
                              }
                           });
                           }
                        });
                     }
                  });
               } else {
                  console.log('验证失败');
               }
            });
         },
      }
   };
</script>
<style lang="scss">
   .initiae-box {
      padding: 0 30rpx;
   .submit {
      border: none;
      width: 94%;
      height: 86rpx;
      line-height: 86rpx;
      box-sizing: border-box;
      border-radius: 15rpx;
      color: #ffffff;
      font-size: 38rpx;
   }
   .container {
      height: 100%;
      .group-chat-box {
         height: calc(100% - 116rpx);
         padding: 0 36rpx;
         box-sizing: border-box;
         overflow-y: auto;
      }
      .establish-box {
         position: relative;
         height: 116rpx;
         background: #fff;
         text-align: center;
         uni-button {
            margin: 0;
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            margin: auto;
         }
      }
   }
</style>