Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
@@ -97,20 +97,19 @@
|
|||||||
<ai-info-item label="创建者" :value="data.userName" isLine></ai-info-item>
|
<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.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.sendTime" isLine v-if="data.sendType == 1"></ai-info-item>
|
||||||
<div v-for="item in data.fileList" :key="item.id">
|
</ai-wrapper>
|
||||||
<ai-info-item label="群发内容" :value="item.content" isLine v-if="item.contentType == 'text'"></ai-info-item>
|
|
||||||
<ai-info-item label="图片" isLine v-if="item.contentType == 'image'">
|
|
||||||
<!-- <ai-uploader v-model="item" :instance="instance" :limit="1" disabled/> -->
|
|
||||||
</ai-info-item>
|
|
||||||
<ai-info-item label="视频" isLine v-if="item.contentType == 'video'">
|
|
||||||
<video :src="item.accessUrl"
|
|
||||||
style="width: 100%; height:100%; object-fit: fill;" muted controls="controls"></video>
|
|
||||||
</ai-info-item>
|
|
||||||
<ai-info-item label="附件" isLine v-if="item.contentType == 'file'">
|
|
||||||
<ai-file-list :fileList="item.accessUrl" ></ai-file-list>
|
|
||||||
</ai-info-item>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
<ai-wrapper v-for="item in data.fileList" :key="item.id">
|
||||||
|
<ai-info-item label="群发内容" :value="item.content" isLine v-if="item.contentType == 'text'"></ai-info-item>
|
||||||
|
<ai-info-item label="图片" isLine v-if="item.contentType == 'image'">
|
||||||
|
<ai-uploader v-model="images" :instance="instance" :limit="1" disabled/>
|
||||||
|
</ai-info-item>
|
||||||
|
<ai-info-item label="视频" isLine v-if="item.contentType == 'video'">
|
||||||
|
<video :src="item.accessUrl" style="width: 100%; height:100%; object-fit: fill;" muted controls="controls"></video>
|
||||||
|
</ai-info-item>
|
||||||
|
<ai-info-item label="附件" isLine v-if="item.contentType == 'file'">
|
||||||
|
<ai-file-list :fileList="[item.accessUrl]"></ai-file-list>
|
||||||
|
</ai-info-item>
|
||||||
</ai-wrapper>
|
</ai-wrapper>
|
||||||
</template>
|
</template>
|
||||||
</ai-card>
|
</ai-card>
|
||||||
@@ -120,182 +119,176 @@
|
|||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
import {mapState} from "vuex";
|
||||||
|
import AiDvWrapper from '../../../../project/dvui/layout/AiDvWrapper/AiDvWrapper.vue';
|
||||||
|
export default {
|
||||||
|
components: { AiDvWrapper },
|
||||||
|
name: 'Add',
|
||||||
|
props: {
|
||||||
|
instance: Function,
|
||||||
|
dict: Object,
|
||||||
|
params: Object
|
||||||
|
},
|
||||||
|
|
||||||
import {mapState} from "vuex";
|
data () {
|
||||||
|
return {
|
||||||
|
isShow: false,
|
||||||
|
data: {},
|
||||||
|
form: {
|
||||||
|
areaId: '',
|
||||||
|
tag: '',
|
||||||
|
sendType: '0',
|
||||||
|
sendTime: '',
|
||||||
|
content: '',
|
||||||
|
contentType: 'text',
|
||||||
|
fileList: [
|
||||||
|
{
|
||||||
|
accessAppid: "",
|
||||||
|
accessDesc: "",
|
||||||
|
accessImgurl: "",
|
||||||
|
accessTitle: "",
|
||||||
|
accessUrl: "",
|
||||||
|
content: "",
|
||||||
|
contentType: "",
|
||||||
|
createdA: 0,
|
||||||
|
mediaId: ""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
},
|
||||||
|
tags: [],
|
||||||
|
subTags: {},
|
||||||
|
areaId: [],
|
||||||
|
areaName: [],
|
||||||
|
imgList: [],
|
||||||
|
videoList: [],
|
||||||
|
filesList: [],
|
||||||
|
areaRootId: '',
|
||||||
|
users: [],
|
||||||
|
images: [],
|
||||||
|
rules: {
|
||||||
|
content: [{ required: true, message: '请输入群发内容'}],
|
||||||
|
sendType: [{ required: true, message: '请选择群发方式' }],
|
||||||
|
sendTime: [{ required: true, message: '请选择群发时间' }],
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
export default {
|
computed: {
|
||||||
name: 'Add',
|
tagsChange() {
|
||||||
|
if(this.tags.length) {
|
||||||
props: {
|
return this.form.tag = this.tags.toString();
|
||||||
instance: Function,
|
|
||||||
dict: Object,
|
|
||||||
params: Object
|
|
||||||
},
|
|
||||||
|
|
||||||
data () {
|
|
||||||
return {
|
|
||||||
isShow: false,
|
|
||||||
data: {},
|
|
||||||
form: {
|
|
||||||
areaId: '',
|
|
||||||
tag: '',
|
|
||||||
sendType: '0',
|
|
||||||
sendTime: '',
|
|
||||||
content: '',
|
|
||||||
contentType: 'text',
|
|
||||||
fileList: [
|
|
||||||
{
|
|
||||||
accessAppid: "",
|
|
||||||
accessDesc: "",
|
|
||||||
accessImgurl: "",
|
|
||||||
accessTitle: "",
|
|
||||||
accessUrl: "",
|
|
||||||
content: "",
|
|
||||||
contentType: "",
|
|
||||||
createdA: 0,
|
|
||||||
mediaId: ""
|
|
||||||
}
|
|
||||||
],
|
|
||||||
},
|
|
||||||
tags: [],
|
|
||||||
subTags: {},
|
|
||||||
areaId: [],
|
|
||||||
areaName: [],
|
|
||||||
imgList: [],
|
|
||||||
videoList: [],
|
|
||||||
filesList: [],
|
|
||||||
areaRootId: '',
|
|
||||||
users: [],
|
|
||||||
rules: {
|
|
||||||
content: [{ required: true, message: '请输入群发内容'}],
|
|
||||||
sendType: [{ required: true, message: '请选择群发方式' }],
|
|
||||||
sendTime: [{ required: true, message: '请选择群发时间' }],
|
|
||||||
},
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
areaid() {
|
||||||
computed: {
|
return this.form.areaId = this.areaId.toString();
|
||||||
tagsChange() {
|
|
||||||
if(this.tags.length) {
|
|
||||||
return this.form.tag = this.tags.toString();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
areaid() {
|
|
||||||
return this.form.areaId = this.areaId.toString();
|
|
||||||
},
|
|
||||||
...mapState(['user'])
|
|
||||||
},
|
},
|
||||||
|
...mapState(['user'])
|
||||||
|
},
|
||||||
|
|
||||||
created () {
|
created () {
|
||||||
if (this.params.id) {
|
if (this.params.id) {
|
||||||
this.getInfo()
|
this.getInfo()
|
||||||
} else {
|
} else {
|
||||||
this.getSubTags()
|
this.getSubTags()
|
||||||
}
|
}
|
||||||
this.areaRootId = [this.user.info.areaId.substr(0, 6),'000000'].join("")
|
this.areaRootId = [this.user.info.areaId.substr(0, 6),'000000'].join("")
|
||||||
},
|
},
|
||||||
|
|
||||||
filters: {
|
filters: {
|
||||||
format(value) {
|
format(value) {
|
||||||
if(value == 0) {
|
if(value == 0) {
|
||||||
return '立即发送'
|
return '立即发送'
|
||||||
} else if(value == 1) {
|
} else if(value == 1) {
|
||||||
return '定时发送'
|
return '定时发送'
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
methods: {
|
|
||||||
|
|
||||||
handleAreaSelect(v) {
|
|
||||||
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
|
|
||||||
},
|
|
||||||
|
|
||||||
// 标签
|
|
||||||
getSubTags () {
|
|
||||||
this.instance.post(`/app/wxcp/wxcorptag/listAll`).then(res => {
|
|
||||||
if (res?.data) {
|
|
||||||
this.subTags = res.data.records
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
getInfo () {
|
|
||||||
this.instance.post(`/app/pushmessage/detail?id=${this.params.id}`).then(res => {
|
|
||||||
if (res?.data) {
|
|
||||||
this.data = res.data
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
confirm () {
|
|
||||||
this.$refs.form.validate((valid) => {
|
|
||||||
if (valid) {
|
|
||||||
|
|
||||||
this.form.fileList = []
|
|
||||||
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.videoList.length) {
|
|
||||||
let item = {
|
|
||||||
contentType: 'video',
|
|
||||||
mediaId: this.videoList[0].media.mediaId,
|
|
||||||
accessUrl: this.videoList[0].url
|
|
||||||
}
|
|
||||||
this.form.fileList.push(item)
|
|
||||||
}
|
|
||||||
|
|
||||||
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.instance.post(`/app/pushmessage/addOrUpdate`, {
|
|
||||||
...this.form
|
|
||||||
}).then(res => {
|
|
||||||
if (res.code == 0) {
|
|
||||||
this.$message.success('提交成功')
|
|
||||||
setTimeout(() => {
|
|
||||||
this.cancel(true)
|
|
||||||
}, 600)
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
})
|
|
||||||
},
|
|
||||||
|
|
||||||
cancel (isRefresh) {
|
|
||||||
this.$emit('change', {
|
|
||||||
type: 'List',
|
|
||||||
isRefresh: isRefresh ? true : false
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
handleAreaSelect(v) {
|
||||||
|
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
|
||||||
|
},
|
||||||
|
// 标签
|
||||||
|
getSubTags () {
|
||||||
|
this.instance.post(`/app/wxcp/wxcorptag/listAll`).then(res => {
|
||||||
|
if (res?.data) {
|
||||||
|
this.subTags = res.data.records
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
getInfo () {
|
||||||
|
this.instance.post(`/app/pushmessage/detail?id=${this.params.id}`).then(res => {
|
||||||
|
if (res?.data) {
|
||||||
|
this.data = res.data
|
||||||
|
let obj = res.data.fileList.filter(e=> e.contentType == "image")
|
||||||
|
this.images = [{ url: obj[0]?.accessUrl }]
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
confirm () {
|
||||||
|
this.$refs.form.validate((valid) => {
|
||||||
|
if (valid) {
|
||||||
|
this.form.fileList = []
|
||||||
|
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.videoList.length) {
|
||||||
|
let item = {
|
||||||
|
contentType: 'video',
|
||||||
|
mediaId: this.videoList[0].media.mediaId,
|
||||||
|
accessUrl: this.videoList[0].url
|
||||||
|
}
|
||||||
|
this.form.fileList.push(item)
|
||||||
|
}
|
||||||
|
|
||||||
|
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.instance.post(`/app/pushmessage/addOrUpdate`, {
|
||||||
|
...this.form
|
||||||
|
}).then(res => {
|
||||||
|
if (res.code == 0) {
|
||||||
|
this.$message.success('提交成功')
|
||||||
|
setTimeout(() => {
|
||||||
|
this.cancel(true)
|
||||||
|
}, 600)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
}
|
||||||
|
})
|
||||||
|
},
|
||||||
|
cancel (isRefresh) {
|
||||||
|
this.$emit('change', {
|
||||||
|
type: 'List',
|
||||||
|
isRefresh: isRefresh ? true : false
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<style scoped lang="scss">
|
<style scoped lang="scss">
|
||||||
|
|||||||
@@ -11,7 +11,7 @@
|
|||||||
</ai-search-bar>
|
</ai-search-bar>
|
||||||
<ai-table :tableData="tableData" :total="page.total" :current.sync="page.current" :size.sync="page.size"
|
<ai-table :tableData="tableData" :total="page.total" :current.sync="page.current" :size.sync="page.size"
|
||||||
@getList="getTableData" show-overflow-tooltip :col-configs="colConfigs" :dict="dict">
|
@getList="getTableData" show-overflow-tooltip :col-configs="colConfigs" :dict="dict">
|
||||||
<el-table-column slot="type" width="240px" label="消息内容" align="center">
|
<!-- <el-table-column slot="type" width="240px" label="消息内容" align="center">
|
||||||
<template slot-scope="{ row }">
|
<template slot-scope="{ row }">
|
||||||
<el-popover
|
<el-popover
|
||||||
placement="bottom"
|
placement="bottom"
|
||||||
@@ -27,16 +27,16 @@
|
|||||||
<video style="width:40px; height: 40px;" v-if="row.contentType == 'video'" :src="row.accessUrl"></video>
|
<video style="width:40px; height: 40px;" v-if="row.contentType == 'video'" :src="row.accessUrl"></video>
|
||||||
<img src="../../../../examples/assets/file.png" v-if="row.contentType == 'file'" width="40" height="40"/>
|
<img src="../../../../examples/assets/file.png" v-if="row.contentType == 'file'" width="40" height="40"/>
|
||||||
<div class="message-info__wrapper--right">
|
<div class="message-info__wrapper--right">
|
||||||
<!-- <h3 v-if="row.contentType === 'image'">{{ row.media.file.name }}</h3>
|
<h3 v-if="row.contentType === 'image'">{{ row.media.file.name }}</h3>
|
||||||
<h3 v-if="row.contentType === 'video'">{{ row.media.file.name }}</h3>
|
<h3 v-if="row.contentType === 'video'">{{ row.media.file.name }}</h3>
|
||||||
<p v-if="row.contentType === 'image'">{{ row.media.file.fileSizeStr }}</p>
|
<p v-if="row.contentType === 'image'">{{ row.media.file.fileSizeStr }}</p>
|
||||||
<p v-if="row.contentType === 'video'">{{ row.media.file.fileSizeStr }}</p> -->
|
<p v-if="row.contentType === 'video'">{{ row.media.file.fileSizeStr }}</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</el-popover>
|
</el-popover>
|
||||||
</template>
|
</template>
|
||||||
</el-table-column>
|
</el-table-column> -->
|
||||||
<el-table-column slot="options" label="操作" align="center">
|
<el-table-column slot="options" label="操作" align="center">
|
||||||
<template slot-scope="{ row }">
|
<template slot-scope="{ row }">
|
||||||
<el-button type="text" @click="toAdd(row.id)">详情</el-button>
|
<el-button type="text" @click="toAdd(row.id)">详情</el-button>
|
||||||
@@ -69,9 +69,16 @@ export default {
|
|||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
colConfigs() {
|
colConfigs() {
|
||||||
|
let conType = {
|
||||||
|
text: "文本",
|
||||||
|
image: "图片",
|
||||||
|
video: "视频",
|
||||||
|
file: "附件"
|
||||||
|
}
|
||||||
return [
|
return [
|
||||||
// { prop: "contentType", label: '消息类型', align: "center", width: "250px", formart: v => this.mapType(v) },
|
{ prop: "fileList", label: '消息类型', align: "center", width: "250px", formart: v => v?.map(e=> conType[e.contentType]).toString() },
|
||||||
{ slot: 'type' },
|
{ 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: "sendType", label: '发送类型', align: "center", width: "250px", formart: v => v == 0 ? '立即发送' : '定时发送'},
|
||||||
{ prop: "createTime", label: '创建时间', align: "center", width: "250px"},
|
{ prop: "createTime", label: '创建时间', align: "center", width: "250px"},
|
||||||
{ prop: "sendTime", label: '发送时间', align: "center", width: "250px"},
|
{ prop: "sendTime", label: '发送时间', align: "center", width: "250px"},
|
||||||
|
|||||||
Reference in New Issue
Block a user