agui
agui
This guy hasn't written anything yet

注册于 1 year ago

回答
9
文章
0
关注者
0

问题已解决:

sendMsg() {
  // 设置消息触发条件
  let a = 2 //临时条件
  if (a > 0) {
    // 3、发送消息
    axios({
      url: process.env.VUE_APP_API + MsgurlPrefix,
      method: 'post',
      data: {
        title: '合同到期提醒001',
        target_type: 0, // 消息接受对象为 用户
        target_user: [11, 10], // 接受消息的用户ID
        creator: 1,
        content: '有合同快到期了,请及时处理。'
      },
      headers: {
        Authorization: 'JWT ' + util.cookies.get('token'),
        "Content-Type": "application/json;charset=UTF-8",
      },
    }).then(res => {
      console.log('系统消息发送成功', res);
    }).catch(err => {
      console.error('系统消息发送失败', err);
    });
  }
},

` sendMEG() {

  // 设置消息触发条件
  let a = 2
  let messageBody = []
  if (a > 0) {
    // 2、发送消息格式 op_office,11
    messageBody.push({
      title: '合同到期提醒',
      target_type: 0,//类型为用户
      target_user: 11,//用户ID
      creator_id: 1,
      content: '有合同快到期了,请及时处理。'
    });
  }
  // 3、发送消息
  axios({
    url: process.env.VUE_APP_API + MegurlPrefix,
    method: 'post',
    data: JSON.stringify(messageBody),
    headers: {
      Authorization: 'JWT ' + util.cookies.get('token'),
      "Content-Type": "application/json;charset=UTF-8",
    },
  }).then(res => {
    if (res.data) {
      console.log('消息通知:', messageBody);
      console.log('系统消息发送成功', res);
    } else {
      console.error('系统消息发送失败');
    }
  }).catch(err => {
    console.error('系统消息发送失败', err);
  });
},

`
以上是实现代码,触发条件是临时的,此代码能新增一条消息记录,但对应的接受消息的用户没有收到消息,

每一个菜单对应的页面目录都有3个文件,可以看项目里面的test目录,有默认配置。
1、api.js:配置该页面数据接口;
2、crud.js:该页面表单配置;
3、index.vue:页面渲染展示;

设置行的样式,panding-bottom:10px就行了。

@hongzai 前面的问题描述可能有误解,简单来讲:
【project_name】字段没有在当前表单的模型类里面(与当前模型没有外键关系),只是在序列化器里面自定义的一个新字段(字典里面添加的一个键值对)。
1、DRF的search_fields过滤的字段都需要在该模型类里面存在。
所以:怎么通过这个project_name来过滤该接口数据?

views.py里面加上这个
authentication_classes = []
permission_classes = []

1、配置rowSlot=true

let crudOption={
  columns:[ 
    { 
      title : '时间',
      key : 'createData',
      type : 'date',
      rowSlot: true
    }
  ]
}

2、d2-crud 下写你的slot template ,slot名称为 column.key+'Slot'。实现超链接,用el-link 标签。

<d2-crud-x>
    <template slot="createDateSlot" slot-scope="scope">
        <el-link href="#">创建时间:{{scope.row['createDate'] | date_timeline('YYYY-MM-DD HH:mm:ss')}}<br/><el-link>
        更新时间:{{scope.row['updateDate'] | date_timeline('YYYY-MM-DD HH:mm:ss')}}<br/>
    </template>
</d2-crud-x>

image.png

在新增合同时,这个所属项目字段应该出现所有项目名称,供选择,但目前项目名称数据没有出来。这个项目名称是一个ForeignKey。
补充:
这查看这个表单的后台接口时,发现这个 project_name 是有多条数据的,正常的,但是在前端的新增表单里面,这个project_name 没有出来,显示的是“无数据”。

谢谢您的解答!发现新建用户,初次登录会这样。后面就没出现过了。

发布
问题