This commit is contained in:
dute7liang
2024-01-30 00:25:56 +08:00
parent 19bcf0345a
commit 959235e65c
4 changed files with 76 additions and 44 deletions

View File

@@ -34,18 +34,18 @@
<div class="msg" style="width: 100%">
<div class="miniprogram">
<div class='img_panel' style="position: relative;">
<div class="img_title">
<span>测试文字title</span>
<div class="img_title" v-if="data.oneImageTitleType === 1">
<span>{{ data.title }}</span>
</div>
<div class="img-box">
<img class="mini-img" :src="imageFunc(data.oneImageImage)" @click="goTo(data.oneImageLinkType,data.oneImageLinkUrl)"/>
</div>
</div>
<div class="word-title" style="margin-top: 10px;font-weight: bold;">
测试数据标题
<div class="word-title" style="margin-top: 10px;font-weight: bold;" v-if="data.oneImageTitleType === 2">
{{ data.title }}
</div>
<div class="word">
测试数据文本
<div class="word" v-if="data.oneImageTitleType === 2">
{{ data.oneImageText }}
</div>
</div>
</div>
@@ -55,13 +55,13 @@
<div class="miniprogram" >
<div class='img_panel' style="position: relative;">
<div class="img-box" style="position: relative;">
<img class="mini-img" src="" alt="">
<div class="img_desc">3211</div>
<img class="mini-img" :src="imageFunc(imageContext[0]?imageContext[0].image:'')" alt="">
<div class="img_desc">{{ imageContext[0]?imageContext[0].title:'' }}</div>
</div>
<div class="msg-list">
<div class="msg-list_item" v-for="item in 2">
<div class="text">123</div>
<div class="img"></div>
<div class="msg-list" v-for="(v,i) in imageContext">
<div class="msg-list_item" v-if="i !== 0">
<div class="text" >{{v.title}}</div>
<img class="img" :src="imageFunc(v.image)" alt="" @click="goTo(v.linkType,v.linkUrl)">
</div>
</div>
</div>
@@ -73,10 +73,7 @@
<div class="msg">
<div class="miniprogram">
<div class='img_panel' style="position: relative;">
<img class="mini-img" src="https://nono-1257812345.cos.ap-shanghai.myqcloud.com/cai/2024/01/29/4c8a98ad0de14341a5fbf1a4787e45dd.png" alt="">
<!-- <div class="img-box" style="position: relative;">
<img class="mini-img" src="" alt="">
</div>-->
<img class="mini-img" :src="imageFunc(data.onlyImage)" alt="">
</div>
</div>
</div>
@@ -84,7 +81,6 @@
</div>
</div>
</template>
<!--cursor: pointer;-->
<script>
export default {
name: 'PreviewClient',
@@ -123,6 +119,11 @@ export default {
}
</script>
<style lang="scss" scoped>
.pointer_img {
cursor: pointer;
}
.pd_12 {
padding: 12px!important;
}

View File

@@ -1,6 +1,6 @@
<template>
<el-dialog title="新增系统推送" :close-on-click-modal="false" :visible.sync="open" width="900px" append-to-body>
<el-row :gutter="`10`">
<el-row :gutter="10">
<el-col style="width: 550px">
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="群体类型" prop="groupId">
@@ -100,14 +100,14 @@
<el-form-item label="标题类型" prop="oneImageTitleType" v-if="form.type === 2">
<el-select v-model="form.oneImageTitleType" size="small">
<el-option :key="0" label="普通标题" :value="0"/>
<el-option :key="2" label="普通标题" :value="2"/>
<el-option :key="1" label="水印标题" :value="1"/>
</el-select>
</el-form-item>
<el-form-item label="图片" prop="oneImageImage" v-if="form.type === 2">
<image-upload2 v-model="form.oneImageImage" custom-tip="建议图片比例16:9"/>
</el-form-item>
<el-form-item label="文本" prop="oneImageText" v-if="form.type === 2 && form.oneImageTitleType === 0">
<el-form-item label="文本" prop="oneImageText" v-if="form.type === 2 && form.oneImageTitleType === 2">
<el-input v-model="form.oneImageText" placeholder="请输入消息文本" type="textarea" :rows="2"/>
</el-form-item>
<el-form-item label="链接类型" prop="oneImageLinkType" v-if="form.type === 2">
@@ -128,12 +128,13 @@
style="width: 100%"
:row-key="(row) => {return row.id}"
>
<el-table-column align="center" prop="title" label="图片标题" min-width="60" show-overflow-tooltip/>
<el-table-column align="center" prop="image" label="图片" min-width="60">
<template v-slot="scope">
<image-preview :src="scope.row.image" :width="60" :height="40"/>
</template>
</el-table-column>
<el-table-column align="center" prop="linkType" label="链接类型" min-width="50">
<el-table-column align="center" prop="linkType" label="链接类型" min-width="60">
<template v-slot="scope">
<span v-if="scope.row.linkType === 0">不可点击</span>
<span v-if="scope.row.linkType === 1">打开H5</span>
@@ -148,11 +149,10 @@
</el-table-column>
</el-table>
</el-form-item>
<el-form-item label="图片" prop="onlyImage" v-if="form.type === 4">
<image-upload2 v-model="form.onlyImage"/>
</el-form-item>
<el-form-item label="remark" prop="remark">
<el-form-item label="备注说明" prop="remark">
<el-input v-model="form.remark" placeholder="请输入备注说明" type="textarea" :rows="2"/>
</el-form-item>
</el-form>
@@ -168,7 +168,7 @@
<el-dialog :title="imageTitle" :close-on-click-modal="false" :visible.sync="imageOpen" width="500px" append-to-body>
<el-form ref="imageForm" :model="imageForm" :rules="imageRules" label-width="80px">
<el-form-item label="图片标题" prop="title">
<image-upload2 v-model="imageForm.image"/>
<el-input v-model="imageForm.title" placeholder="请输入图片标题" />
</el-form-item>
<el-form-item label="图片" prop="image">
<image-upload2 v-model="imageForm.image"/>
@@ -192,7 +192,6 @@
</template>
<script>
import { addBanner, updateBanner } from '@/api/cai/banner'
import {
systemPushGroupIdList,
systemPushLogStatus,
@@ -203,6 +202,7 @@ import {
import { getUserByUsercode, listUserByUserCode } from '@/api/cai/user'
import Sortable from 'sortablejs'
import PreviewClient from '@/components/PreviewInMobileClient/index.vue'
import {addSysPush, updateSysPush} from "@/api/cai/sysPush";
export default {
components: {
@@ -225,7 +225,7 @@ export default {
textLinkType: 0,
textLinkUrl: undefined,
oneImageTitleType:0,
oneImageTitleType:2,
oneImageImage:undefined,
oneImageText:undefined,
oneImageLinkType: 0,
@@ -303,6 +303,9 @@ export default {
this.open = true
this.$nextTick(() => {
this.$refs['form'].resetFields()
this.userInfo = {}
this.textContext = []
this.imageContext = []
})
},
rowDrop() {
@@ -381,9 +384,10 @@ export default {
const index = this.imageContext.findIndex((item) => {
return item.id === this.imageForm.id
})
let copy = {}
Object.assign(copy,this.imageForm)
this.imageContext[index] = copy
this.imageContext[index].image = this.imageForm.image
this.imageContext[index].title = this.imageForm.title
this.imageContext[index].linkType = this.imageForm.linkType
this.imageContext[index].linkUrl = this.imageForm.linkUrl
this.imageOpen = false
console.log(this.imageContext)
} else {
@@ -391,7 +395,8 @@ export default {
id: this.genNonDuplicateID(),
image: this.imageForm.image,
linkType: this.imageForm.linkType,
linkUrl: this.imageForm.linkUrl
linkUrl: this.imageForm.linkUrl,
title: this.imageForm.title
})
this.imageOpen = false
console.log(this.imageContext)
@@ -428,7 +433,7 @@ export default {
if (valid) {
this.buttonLoading = true
if (this.form.id != null) {
updateBanner(this.form).then(data => {
updateSysPush(this.form).then(data => {
this.$modal.msgSuccess('修改成功')
this.$modal.buttonLoading = false
this.open = false
@@ -437,8 +442,12 @@ export default {
this.buttonLoading = false
})
} else {
addBanner(this.form).then(data => {
this.$modal.msgSuccess('修改成功')
addSysPush({
master: this.form,
textContext: this.textContext,
imageContext: this.imageContext
}).then(data => {
this.$modal.msgSuccess('新增成功')
this.buttonLoading = false
this.open = false
this.$emit('refreshDataList')

View File

@@ -54,12 +54,12 @@
</el-table-column>
<!-- <el-table-column label="用户id,仅在group_id=单个用户时生效" align="center" prop="userId" />-->
<el-table-column label="标题" align="center" prop="title" />
<el-table-column label="内容" align="center" prop="content" />
<el-table-column label="前端参数" align="center" prop="params" />
<!-- <el-table-column label="内容" align="center" prop="content" />-->
<!-- <el-table-column label="前端参数" align="center" prop="params" />-->
<el-table-column label="备注说明" align="center" prop="remark" />
<el-table-column label="发送类型" align="center" prop="sendTimeType" >
<template v-slot="scope">
<cai-dict-tag :options="systemPushSendTimeTypeList" :value="scope.row.type"/>
<cai-dict-tag :options="systemPushSendTimeTypeList" :value="scope.row.sendTimeType"/>
</template>
</el-table-column>
<el-table-column label="发送时间" align="center" prop="sendTime" width="180" />
@@ -77,10 +77,10 @@
<el-button
size="mini"
type="text"
icon="el-icon-edit"
@click="handleUpdate(scope.row)"
icon="el-icon-info"
@click="handleInfo(scope.row)"
v-hasPermi="['cai:sysPush:edit']"
>修改</el-button>
>预览</el-button>
<el-button
size="mini"
type="text"
@@ -100,12 +100,19 @@
@pagination="getList"
/>
<add-sys-push-dialog v-if="addSysPushDialogVisible" ref="addSysPushDialog" />
<add-sys-push-dialog v-if="addSysPushDialogVisible" ref="addSysPushDialog" @refreshDataList="getList" />
<el-dialog title="系统消息查看" :close-on-click-modal="false" :visible.sync="infoOpen" width="350px" append-to-body>
<preview-client :data="infoData.form" :textContext="infoData.textContext" :imageContext="infoData.imageContext"></preview-client>
<div slot="footer" class="dialog-footer">
<el-button @click="infoOpen = false"> </el-button>
</div>
</el-dialog>
</div>
</template>
<script>
import { delSysPush, listSysPush } from '@/api/cai/sysPush'
import {delSysPush, listSysPush} from '@/api/cai/sysPush'
import {
systemPushGroupIdList,
systemPushLogStatus,
@@ -114,16 +121,23 @@ import {
systemPushTypeList
} from '@/constant/statusMap'
import AddSysPushDialog from '@/views/cai/sysPush/add-sys-push-dialog.vue'
import PreviewClient from '@/components/PreviewInMobileClient/index.vue'
export default {
name: "SysPush",
components: {
AddSysPushDialog
AddSysPushDialog,PreviewClient
},
data() {
return {
systemPushGroupIdList,systemPushLogStatus,systemPushSendTimeTypeList,systemPushStatusList,systemPushTypeList,
addSysPushDialogVisible: false,
infoOpen: false,
infoData:{
form:{},
textContext:[],
imageContext:[]
},
// 按钮loading
buttonLoading: false,
// 遮罩层
@@ -158,6 +172,14 @@ export default {
this.getList();
},
methods: {
handleInfo(row){
let parse = JSON.parse(row.params);
this.$set(this.infoData,'form',parse.master)
this.$set(this.infoData,'textContext',parse.textContext)
this.$set(this.infoData,'imageContext',parse.imageContext)
console.log(this.infoData)
this.infoOpen = true;
},
/** 查询推送系统消息列表 */
getList() {
this.loading = true;