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="msg" style="width: 100%">
<div class="miniprogram"> <div class="miniprogram">
<div class='img_panel' style="position: relative;"> <div class='img_panel' style="position: relative;">
<div class="img_title"> <div class="img_title" v-if="data.oneImageTitleType === 1">
<span>测试文字title</span> <span>{{ data.title }}</span>
</div> </div>
<div class="img-box"> <div class="img-box">
<img class="mini-img" :src="imageFunc(data.oneImageImage)" @click="goTo(data.oneImageLinkType,data.oneImageLinkUrl)"/> <img class="mini-img" :src="imageFunc(data.oneImageImage)" @click="goTo(data.oneImageLinkType,data.oneImageLinkUrl)"/>
</div> </div>
</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>
<div class="word"> <div class="word" v-if="data.oneImageTitleType === 2">
测试数据文本 {{ data.oneImageText }}
</div> </div>
</div> </div>
</div> </div>
@@ -55,13 +55,13 @@
<div class="miniprogram" > <div class="miniprogram" >
<div class='img_panel' style="position: relative;"> <div class='img_panel' style="position: relative;">
<div class="img-box" style="position: relative;"> <div class="img-box" style="position: relative;">
<img class="mini-img" src="" alt=""> <img class="mini-img" :src="imageFunc(imageContext[0]?imageContext[0].image:'')" alt="">
<div class="img_desc">3211</div> <div class="img_desc">{{ imageContext[0]?imageContext[0].title:'' }}</div>
</div> </div>
<div class="msg-list"> <div class="msg-list" v-for="(v,i) in imageContext">
<div class="msg-list_item" v-for="item in 2"> <div class="msg-list_item" v-if="i !== 0">
<div class="text">123</div> <div class="text" >{{v.title}}</div>
<div class="img"></div> <img class="img" :src="imageFunc(v.image)" alt="" @click="goTo(v.linkType,v.linkUrl)">
</div> </div>
</div> </div>
</div> </div>
@@ -73,10 +73,7 @@
<div class="msg"> <div class="msg">
<div class="miniprogram"> <div class="miniprogram">
<div class='img_panel' style="position: relative;"> <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=""> <img class="mini-img" :src="imageFunc(data.onlyImage)" alt="">
<!-- <div class="img-box" style="position: relative;">
<img class="mini-img" src="" alt="">
</div>-->
</div> </div>
</div> </div>
</div> </div>
@@ -84,7 +81,6 @@
</div> </div>
</div> </div>
</template> </template>
<!--cursor: pointer;-->
<script> <script>
export default { export default {
name: 'PreviewClient', name: 'PreviewClient',
@@ -123,6 +119,11 @@ export default {
} }
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>
.pointer_img {
cursor: pointer;
}
.pd_12 { .pd_12 {
padding: 12px!important; padding: 12px!important;
} }

View File

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

View File

@@ -54,12 +54,12 @@
</el-table-column> </el-table-column>
<!-- <el-table-column label="用户id,仅在group_id=单个用户时生效" align="center" prop="userId" />--> <!-- <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="title" />
<el-table-column label="内容" align="center" prop="content" /> <!-- <el-table-column label="内容" align="center" prop="content" />-->
<el-table-column label="前端参数" align="center" prop="params" /> <!-- <el-table-column label="前端参数" align="center" prop="params" />-->
<el-table-column label="备注说明" align="center" prop="remark" /> <el-table-column label="备注说明" align="center" prop="remark" />
<el-table-column label="发送类型" align="center" prop="sendTimeType" > <el-table-column label="发送类型" align="center" prop="sendTimeType" >
<template v-slot="scope"> <template v-slot="scope">
<cai-dict-tag :options="systemPushSendTimeTypeList" :value="scope.row.type"/> <cai-dict-tag :options="systemPushSendTimeTypeList" :value="scope.row.sendTimeType"/>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="发送时间" align="center" prop="sendTime" width="180" /> <el-table-column label="发送时间" align="center" prop="sendTime" width="180" />
@@ -77,10 +77,10 @@
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
icon="el-icon-edit" icon="el-icon-info"
@click="handleUpdate(scope.row)" @click="handleInfo(scope.row)"
v-hasPermi="['cai:sysPush:edit']" v-hasPermi="['cai:sysPush:edit']"
>修改</el-button> >预览</el-button>
<el-button <el-button
size="mini" size="mini"
type="text" type="text"
@@ -100,7 +100,14 @@
@pagination="getList" @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> </div>
</template> </template>
@@ -114,16 +121,23 @@ import {
systemPushTypeList systemPushTypeList
} from '@/constant/statusMap' } from '@/constant/statusMap'
import AddSysPushDialog from '@/views/cai/sysPush/add-sys-push-dialog.vue' import AddSysPushDialog from '@/views/cai/sysPush/add-sys-push-dialog.vue'
import PreviewClient from '@/components/PreviewInMobileClient/index.vue'
export default { export default {
name: "SysPush", name: "SysPush",
components: { components: {
AddSysPushDialog AddSysPushDialog,PreviewClient
}, },
data() { data() {
return { return {
systemPushGroupIdList,systemPushLogStatus,systemPushSendTimeTypeList,systemPushStatusList,systemPushTypeList, systemPushGroupIdList,systemPushLogStatus,systemPushSendTimeTypeList,systemPushStatusList,systemPushTypeList,
addSysPushDialogVisible: false, addSysPushDialogVisible: false,
infoOpen: false,
infoData:{
form:{},
textContext:[],
imageContext:[]
},
// 按钮loading // 按钮loading
buttonLoading: false, buttonLoading: false,
// 遮罩层 // 遮罩层
@@ -158,6 +172,14 @@ export default {
this.getList(); this.getList();
}, },
methods: { 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() { getList() {
this.loading = true; this.loading = true;

View File

@@ -35,8 +35,8 @@ module.exports = {
proxy: { proxy: {
// detail: https://cli.vuejs.org/config/#devserver-proxy // detail: https://cli.vuejs.org/config/#devserver-proxy
[process.env.VUE_APP_BASE_API]: { [process.env.VUE_APP_BASE_API]: {
// target: `http://localhost:8080`, target: `http://localhost:8080`,
target: `http://124.222.254.188:9779/prod-api`, // target: `http://124.222.254.188:9779/prod-api`,
changeOrigin: true, changeOrigin: true,
pathRewrite: { pathRewrite: {
['^' + process.env.VUE_APP_BASE_API]: '' ['^' + process.env.VUE_APP_BASE_API]: ''