This commit is contained in:
shijingjing
2022-06-24 20:45:45 +08:00
parent d979943852
commit 356758a184
3 changed files with 98 additions and 94 deletions

View File

@@ -9,32 +9,36 @@
<ai-card>
<template #title>
<div class="ai-card__title">
<h2>条件选择</h2>
<h2>发送条件</h2>
</div>
</template>
<template #content>
<el-form class="ai-form" :rules="rules" ref="form" :model="form" label-width="100px" label-position="right">
<el-form-item label="发送方式" prop="sendType" style="width: 50%">
<el-radio v-model="form.sendType" label="0">居民群</el-radio>
<el-radio v-model="form.sendType" label="1">居民</el-radio>
<el-form-item label="发送方式" prop="messageSource" style="width: 50%">
<el-radio v-model="form.messageSource" label="2">居民群</el-radio>
<el-radio v-model="form.messageSource" label="1">居民</el-radio>
</el-form-item>
<el-form-item label="地区选择" style="width: 100%">
<ai-area-get v-model="areaId" :root="areaRootId" :instance="instance" @select="handleAreaSelect" multiple size="small" placeholder="全部地区"/>
<ai-area-get v-model="areaId" :root="areaRootId" :instance="instance" @select="handleAreaSelect" multiple size="small" placeholder="全部地区"/>
</el-form-item>
<el-form-item label="用户选择" prop="name" style="width: 100%">
<el-input size="small" v-model="form.name" placeholder="请选择" disabled>
<!-- :isMultiple="true" -->
<ai-wechat-selecter slot="append" refs="addTags" :instance="instance" v-model="users" @change="getSelectPerson">
<el-button size="small" type="info">选择成员</el-button>
</ai-wechat-selecter>
</el-input>
<el-form-item label="选择组织" style="width: 100%">
<el-input size="small" :value="orgSelect" placeholder="请选择" disabled />
<el-button size="small" type="info" class="selectDeptUser">选择组织</el-button>
<!-- <ai-wechat-selecter slot="append" refs="addTags" :instance="instance" isChooseUnit isStrictly v-model="orgNameList" @change="getSelectPerson">
<el-button size="small" type="info">选择组织</el-button>
</ai-wechat-selecter> -->
<!-- </el-input> -->
<!-- <ai-table-select nodeName="name" :instance="instance" extra="serialNo" searchKey="name" :action="`/app/wxcp/wxdepartment/listAllByCorp`"
@select="organizationSelect" multiple/> -->
<!-- v => formData.serialNo = v.map(e=> e.serialNo).toString() -->
</el-form-item>
<el-form-item label="标签选择" style="width: 100%" v-if="form.sendType == 0">
<el-form-item label="标签选择" style="width: 100%" v-if="form.messageSource == 2">
<div class="tags" v-for="items in subTags" :key="items.id">
<div class="tag_title">{{ items.name }}</div>
<div class="tag_item">
@@ -54,39 +58,18 @@
<el-form-item class="el-form-item__textarea" label="群发内容" prop="content" style="width: 100%">
<el-input type="textarea" placeholder="请输入…" v-model="form.content" maxlength="1000" :rows="5" show-word-limit></el-input>
</el-form-item>
<!-- <el-form-item label="群发方式" prop="sendType" style="width: 50%">
<el-radio v-model="form.sendType" label="0">立即发送</el-radio>
<el-radio v-model="form.sendType" label="1">定时发送</el-radio>
</el-form-item> -->
<!-- <el-form-item label="群发时间" prop="sendTime" style="width: 50%" v-if="form.sendType == 1">
<el-date-picker size="small"
v-model="form.sendTime"
type="datetime"
value-format="yyyy-MM-dd HH:mm:ss"
placeholder="选择日期时间">
</el-date-picker>
</el-form-item> -->
<el-form-item label="其他类型" prop="explain" style="width: 100%">
<el-radio-group v-model="form.contentType" @change="onTypeChange">
<el-radio label="image">图片</el-radio>
<el-radio label="video">视频</el-radio>
<el-radio label="file">附件</el-radio>
</el-radio-group>
</el-form-item>
<!-- 图片 -->
<el-form-item label="图片" style="width: 100%" v-if="form.contentType == 'image'">
<ai-uploader :instance="instance" isWechat v-model="imgList" acceptType=".jpg,.png,.jpeg" :limit="1" url="/app/wxcp/upload/uploadFile?type=image"></ai-uploader>
<el-form-item label="图片" style="width: 100%">
<ai-uploader :instance="instance" isWechat v-model="imgList" multiple acceptType=".jpg,.png,.jpeg" :limit="9" url="/app/wxcp/upload/uploadFile?type=image"></ai-uploader>
</el-form-item>
<!-- 视频 -->
<el-form-item label="视频" style="width: 100%" v-if="form.contentType == 'video'">
<ai-uploader :instance="instance" fileType="file" isWechat acceptType=".mp4" v-model="videoList" :limit="1" url="/app/wxcp/upload/uploadFile?type=video"></ai-uploader>
<el-form-item label="视频" style="width: 100%">
<ai-uploader :instance="instance" fileType="file" isWechat multiple acceptType=".mp4" v-model="videoList" :limit="9" url="/app/wxcp/upload/uploadFile?type=video"></ai-uploader>
</el-form-item>
<!-- 附件 -->
<el-form-item label="附件" style="width: 100%" v-if="form.contentType == 'file'">
<ai-uploader :instance="instance" fileType="file" isWechat v-model="filesList" :limit="1" url="/app/wxcp/upload/uploadFile?type=file"></ai-uploader>
<el-form-item label="附件" style="width: 100%">
<ai-uploader :instance="instance" fileType="file" isWechat multiple v-model="filesList" :limit="9" url="/app/wxcp/upload/uploadFile?type=file"></ai-uploader>
</el-form-item>
</el-form>
</template>
</ai-card>
@@ -108,8 +91,8 @@
<template #content>
<ai-wrapper>
<ai-info-item label="创建者" :value="data.userName" isLine></ai-info-item>
<ai-info-item label="发送类型" :value="data.sendType" isLine>{{ data.sendType | format }}</ai-info-item>
<ai-info-item label="发送时间" :value="data.sendTime" isLine v-if="data.sendType == 1"></ai-info-item>
<ai-info-item label="发送类型" :value="data.messageSource" isLine>{{ data.messageSource | format }}</ai-info-item>
<ai-info-item label="发送时间" :value="data.sendTime" isLine v-if="data.messageSource == 1"></ai-info-item>
</ai-wrapper>
<ai-wrapper v-for="item in data.fileList" :key="item.id">
@@ -160,23 +143,17 @@ export default {
form: {
areaId: '',
tag: '',
sendType: '0',
messageSource: '2',
sendTime: '',
content: '',
contentType: 'text',
fileList: [
{
accessAppid: "",
accessDesc: "",
accessImgurl: "",
accessTitle: "",
accessUrl: "",
content: "",
contentType: "",
createdA: 0,
mediaId: ""
}
],
fileList: [],
organization: '',
deptList: [{
corpId: "",
objList: [],
tagId: [],
}],
},
tags: [],
subTags: {},
@@ -189,31 +166,43 @@ export default {
areaRootId: '',
users: [],
images: [],
imgs: [],
videos: [],
files: [],
orgIdList: '',
orgNameList: [],
orgSelect: '',
orgAllList: [],
rules: {
content: [{ required: true, message: '请输入群发内容'}],
sendType: [{ required: true, message: '请选择群发方式' }],
messageSource: [{ required: true, message: '请选择群发方式' }],
sendTime: [{ required: true, message: '请选择群发时间' }],
},
}
},
computed: {
...mapState(['user']),
tagsChange() {
if(this.tags.length) {
if(this.tags?.length) {
return this.form.tag = this.tags.toString();
}
},
areaid() {
return this.form.areaId = this.areaId.toString();
},
...mapState(['user'])
},
watch: {
orgNameList: {
handler: function (v) {
this.orgSelect = `已选择${v.length}个组织`
}
}
},
created () {
if (this.params.id) {
this.getInfo()
} else {
this.getSubTags()
}
this.areaRootId = [this.user.info.areaId.substr(0, 6),'000000'].join("")
},
@@ -233,15 +222,27 @@ export default {
this.areaName = v?.[0]?.label
},
getSelectPerson(val) {
this.form.name = val[0].name;
this.form.phone = val[0].phone;
this.form.userId = val[0].sysUserId
this.form.wxUserId = val[0].id
console.log(val);
this.orgNameList = val?.map(item=> item.name)
this.orgIdList = val?.map(e=> e.id).toString();
// this.orgAllList = val
this.form.deptList = val?.map(o=>{
return {
corpId: o.corpId,
// objList: ,
// tagId: ,
}
})
this.getSubTags()
},
organizationSelect(value) {
console.log(value);
},
// 标签
getSubTags () {
this.instance.post(`/app/wxcp/wxcorptag/listAll`).then(res => {
this.instance.post(`/app/wxcp/wxgroupchattag/listAllByCorp?dvcpId=${this.orgIdList}`).then(res => {
if (res?.data) {
console.log(res);
this.subTags = res.data.records
}
})
@@ -259,39 +260,42 @@ export default {
this.$refs.form.validate((valid) => {
if (valid) {
this.form.fileList = []
let contentList = {
let contentList = [{
content: this.form.content,
contentType: 'text'
}
this.form.fileList.push(contentList)
}]
if(this.imgList.length) {
let item = {
contentType: 'image',
mediaId: this.imgList[0].media.mediaId,
accessUrl: this.imgList[0].url
}
this.form.fileList.push(item)
if (this.imgList.length) {
this.imgs = this.imgList.map(item => {
return {
contentType: 'image',
mediaId: item.media.mediaId,
accessUrl: item.url,
}
})
}
if(this.videoList.length) {
let item = {
contentType: 'video',
mediaId: this.videoList[0].media.mediaId,
accessUrl: this.videoList[0].url
}
this.form.fileList.push(item)
if (this.videoList.length) {
this.videos = this.videoList.map(item => {
return {
contentType: 'video',
mediaId: item.media.mediaId,
accessUrl: item.url,
}
})
}
if(this.filesList.length) {
let item = {
contentType: 'file',
mediaId: this.filesList[0].media.mediaId,
accessUrl: this.filesList[0].url
}
this.form.fileList.push(item)
if (this.filesList.length) {
this.files = this.filesList.map(item => {
return {
contentType: 'file',
mediaId: item.media.mediaId,
accessUrl: item.url,
}
})
}
this.form.fileList = [...contentList, ...this.imgs, ...this.videos, ...this.files]
this.instance.post(`/app/pushmessage/addOrUpdate`, {
...this.form
}).then(res => {
@@ -435,4 +439,6 @@ export default {
}
}
}
</style>

View File

@@ -76,13 +76,12 @@ export default {
file: "附件"
}
return [
{ prop: "fileList", label: '消息类型', align: "center", width: "250px", formart: v => v?.map(e=> conType[e.contentType]).toString() },
// { prop: "fileList", label: '消息类型', align: "center", width: "250px", formart: v => v?.map(e=> conType[e.contentType]).toString() },
{ prop: "fileList", label: '消息类容', align: "center", width: "250px", formart: v => v?.filter(e=> e.contentType == 'text')[0].content },
// { prop: "fileList", label: '消息内容', align: "center", width: "250px", formart: v => v?.filter(e => e.contentType == 'text')[0].content},
// { slot: 'type' },
{ prop: "sendType", label: '发送类型', align: "center", width: "250px", formart: v => v == 0 ? '立即发送' : '定时发送'},
{ prop: "messageSource", label: '消息类型', align: "center", formart: v => v==1? '居民': '居民群'},
{ prop: "createTime", label: '创建时间', align: "center", width: "250px"},
{ prop: "sendTime", label: '发送时间', align: "center", width: "250px"},
{ prop: "userName", label: '创建人', align: "center", width: "250px", },
{ slot: "options" ,},
]
@@ -97,7 +96,6 @@ export default {
...this.page,
}
}).then(res => {
console.log(res);
if (res?.data) {
this.tableData = res.data.records
this.page.total = res.data.total