Merge remote-tracking branch 'origin/dev' into dev

This commit is contained in:
aixianling
2022-06-14 15:15:11 +08:00
2 changed files with 186 additions and 186 deletions

View File

@@ -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">

View File

@@ -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"},