Merge remote-tracking branch 'origin/dev' into dev
# Conflicts: # packages/wxwork/AppMassNotification/components/Add.vue # packages/wxwork/AppMassNotification/components/List.vue
This commit is contained in:
@@ -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,42 +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>
|
||||
@@ -111,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 +140,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 +163,43 @@ export default {
|
||||
areaRootId: '',
|
||||
users: [],
|
||||
images: [],
|
||||
imgs: [],
|
||||
videos: [],
|
||||
files: [],
|
||||
orgIdList: '',
|
||||
orgNameList: [],
|
||||
orgSelect: '',
|
||||
orgAllList: [],
|
||||
rules: {
|
||||
content: [{required: true, message: '请输入群发内容'}],
|
||||
sendType: [{required: true, message: '请选择群发方式'}],
|
||||
sendTime: [{required: true, message: '请选择群发时间'}],
|
||||
content: [{ 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.$route.query.id) {
|
||||
this.getInfo()
|
||||
} else {
|
||||
this.getSubTags()
|
||||
}
|
||||
this.areaRootId = [this.user.info.areaId.substr(0, 6), '000000'].join("")
|
||||
},
|
||||
@@ -233,15 +219,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 => {
|
||||
getSubTags () {
|
||||
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 +257,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)
|
||||
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)
|
||||
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)
|
||||
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 => {
|
||||
@@ -410,32 +411,31 @@ export default {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.tags {
|
||||
// padding: 10px;
|
||||
.tag_title {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.tag_item {
|
||||
margin: 5px 0;
|
||||
|
||||
span {
|
||||
display: inline-block;
|
||||
// padding: 5px 10px;
|
||||
width: 80px;
|
||||
text-align: center;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
background: #DDD;
|
||||
color: #333;
|
||||
border-radius: 4px;
|
||||
margin-right: 8px;
|
||||
.tags {
|
||||
// padding: 10px;
|
||||
.tag_title {
|
||||
font-weight: 600;
|
||||
}
|
||||
|
||||
.active {
|
||||
background: #53bcea;
|
||||
color: #FFFFFF;
|
||||
.tag_item {
|
||||
margin: 5px 0;
|
||||
span {
|
||||
display: inline-block;
|
||||
// padding: 5px 10px;
|
||||
width: 80px;
|
||||
text-align: center;
|
||||
height: 30px;
|
||||
line-height: 30px;
|
||||
background: #DDD;
|
||||
color: #333;
|
||||
border-radius: 4px;
|
||||
margin-right: 8px;
|
||||
}
|
||||
.active {
|
||||
background: #53bcea;
|
||||
color: #FFFFFF;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
</style>
|
||||
|
||||
@@ -77,15 +77,14 @@ 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?.filter(e => e.contentType == 'text')[0].content},
|
||||
// { 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: "createTime", label: '创建时间', align: "center", width: "250px"},
|
||||
{prop: "sendTime", label: '发送时间', align: "center", width: "250px"},
|
||||
{prop: "userName", label: '创建人', align: "center", width: "250px",},
|
||||
{slot: "options",},
|
||||
{ prop: "messageSource", label: '消息类型', align: "center", formart: v => v==1? '居民': '居民群'},
|
||||
{ prop: "createTime", label: '创建时间', align: "center", width: "250px"},
|
||||
{ prop: "userName", label: '创建人', align: "center", width: "250px", },
|
||||
{ slot: "options" ,},
|
||||
]
|
||||
},
|
||||
...mapState(['user'])
|
||||
@@ -98,7 +97,6 @@ export default {
|
||||
...this.page,
|
||||
}
|
||||
}).then(res => {
|
||||
console.log(res);
|
||||
if (res?.data) {
|
||||
this.tableData = res.data.records
|
||||
this.page.total = res.data.total
|
||||
|
||||
Reference in New Issue
Block a user