Pre Merge pull request !106 from puhui999/dev

pull/106/MERGE
puhui999 2023-04-08 16:24:41 +00:00 committed by Gitee
commit afe80fed7b
No known key found for this signature in database
GPG Key ID: 173E9B9CA92EEF8F
5 changed files with 167 additions and 164 deletions

View File

@ -230,7 +230,7 @@ const handleAuthorized = () => {
wsCache.clear() wsCache.clear()
removeToken() removeToken()
isRelogin.show = false isRelogin.show = false
window.location.href = '/login?redirect=/sso?' + window.location.href.split('?')[1] window.location.href = window.location.href
}) })
} }
return Promise.reject(t('sys.api.timeoutMessage')) return Promise.reject(t('sys.api.timeoutMessage'))

View File

@ -24,6 +24,7 @@ declare module '@vue/runtime-core' {
DocAlert: typeof import('./../components/DocAlert/index.vue')['default'] DocAlert: typeof import('./../components/DocAlert/index.vue')['default']
Echart: typeof import('./../components/Echart/src/Echart.vue')['default'] Echart: typeof import('./../components/Echart/src/Echart.vue')['default']
Editor: typeof import('./../components/Editor/src/Editor.vue')['default'] Editor: typeof import('./../components/Editor/src/Editor.vue')['default']
ElAlert: typeof import('element-plus/es')['ElAlert']
ElBadge: typeof import('element-plus/es')['ElBadge'] ElBadge: typeof import('element-plus/es')['ElBadge']
ElButton: typeof import('element-plus/es')['ElButton'] ElButton: typeof import('element-plus/es')['ElButton']
ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup'] ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup']
@ -54,17 +55,12 @@ declare module '@vue/runtime-core' {
ElForm: typeof import('element-plus/es')['ElForm'] ElForm: typeof import('element-plus/es')['ElForm']
ElFormItem: typeof import('element-plus/es')['ElFormItem'] ElFormItem: typeof import('element-plus/es')['ElFormItem']
ElIcon: typeof import('element-plus/es')['ElIcon'] ElIcon: typeof import('element-plus/es')['ElIcon']
ElImage: typeof import('element-plus/es')['ElImage']
ElImageViewer: typeof import('element-plus/es')['ElImageViewer'] ElImageViewer: typeof import('element-plus/es')['ElImageViewer']
ElInput: typeof import('element-plus/es')['ElInput'] ElInput: typeof import('element-plus/es')['ElInput']
ElInputNumber: typeof import('element-plus/es')['ElInputNumber']
ElLink: typeof import('element-plus/es')['ElLink'] ElLink: typeof import('element-plus/es')['ElLink']
ElOption: typeof import('element-plus/es')['ElOption'] ElOption: typeof import('element-plus/es')['ElOption']
ElPagination: typeof import('element-plus/es')['ElPagination'] ElPagination: typeof import('element-plus/es')['ElPagination']
ElPopover: typeof import('element-plus/es')['ElPopover'] ElPopover: typeof import('element-plus/es')['ElPopover']
ElRadio: typeof import('element-plus/es')['ElRadio']
ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
ElRow: typeof import('element-plus/es')['ElRow'] ElRow: typeof import('element-plus/es')['ElRow']
ElScrollbar: typeof import('element-plus/es')['ElScrollbar'] ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
ElSelect: typeof import('element-plus/es')['ElSelect'] ElSelect: typeof import('element-plus/es')['ElSelect']
@ -74,6 +70,7 @@ declare module '@vue/runtime-core' {
ElTableColumn: typeof import('element-plus/es')['ElTableColumn'] ElTableColumn: typeof import('element-plus/es')['ElTableColumn']
ElTabPane: typeof import('element-plus/es')['ElTabPane'] ElTabPane: typeof import('element-plus/es')['ElTabPane']
ElTabs: typeof import('element-plus/es')['ElTabs'] ElTabs: typeof import('element-plus/es')['ElTabs']
ElTag: typeof import('element-plus/es')['ElTag']
ElTooltip: typeof import('element-plus/es')['ElTooltip'] ElTooltip: typeof import('element-plus/es')['ElTooltip']
ElTree: typeof import('element-plus/es')['ElTree'] ElTree: typeof import('element-plus/es')['ElTree']
ElUpload: typeof import('element-plus/es')['ElUpload'] ElUpload: typeof import('element-plus/es')['ElUpload']

View File

@ -1,23 +1,21 @@
<template> <template>
<Dialog title="上传文件" v-model="dialogVisible"> <Dialog v-model="dialogVisible" title="上传文件">
<el-upload <el-upload
ref="uploadRef" ref="uploadRef"
:action="url" :action="url"
:data="data"
:headers="uploadHeaders"
v-model:file-list="fileList"
drag
accept=".jpg, .png, .gif"
:limit="1"
:on-success="submitFormSuccess"
:on-exceed="handleExceed"
:on-error="submitFormError"
:on-change="handleFileChange"
:auto-upload="false" :auto-upload="false"
:data="data"
:disabled="formLoading" :disabled="formLoading"
:headers="headers"
:limit="1"
:on-change="handleFileChange"
:on-progress="handleFileUploadProgress"
:on-success="handleFileSuccess"
accept=".jpg, .png, .gif"
drag
> >
<i class="el-icon-upload"></i> <i class="el-icon-upload"></i>
<div class="el-upload__text"> 将文件拖到此处 <em>点击上传</em> </div> <div class="el-upload__text"> 将文件拖到此处 <em>点击上传</em></div>
<template #tip> <template #tip>
<div class="el-upload__tip" style="color: red"> <div class="el-upload__tip" style="color: red">
提示仅允许导入 jpgpnggif 格式文件 提示仅允许导入 jpgpnggif 格式文件
@ -25,53 +23,50 @@
</template> </template>
</el-upload> </el-upload>
<template #footer> <template #footer>
<el-button @click="submitFileForm" type="primary" :disabled="formLoading"> </el-button> <el-button :disabled="formLoading" type="primary" @click="submitFileForm"> </el-button>
<el-button @click="dialogVisible = false"> </el-button> <el-button @click="dialogVisible = false"> </el-button>
</template> </template>
</Dialog> </Dialog>
</template> </template>
<script setup lang="ts"> <script lang="ts" setup>
import { getAccessToken, getTenantId } from '@/utils/auth' import { Dialog } from '@/components/Dialog'
import { getAccessToken } from '@/utils/auth'
const { t } = useI18n() // const { t } = useI18n() //
const message = useMessage() // const message = useMessage() //
const dialogVisible = ref(false) // const dialogVisible = ref(false) //
const formLoading = ref(false) // const formLoading = ref(false) // 12
const url = import.meta.env.VITE_UPLOAD_URL const url = import.meta.env.VITE_UPLOAD_URL
const uploadHeaders = ref() // Header const headers = { Authorization: 'Bearer ' + getAccessToken() }
const fileList = ref([]) //
const data = ref({ path: '' }) const data = ref({ path: '' })
const uploadRef = ref() const uploadRef = ref()
/** 打开弹窗 */ /** 打开弹窗 */
const open = async () => { const open = async () => {
dialogVisible.value = true dialogVisible.value = true
resetForm()
} }
defineExpose({ open }) // open defineExpose({ open }) // open
/** 提交表单 */
const emit = defineEmits(['success']) // success
/** 处理上传的文件发生变化 */ /** 处理上传的文件发生变化 */
const handleFileChange = (file) => { const handleFileChange = (file) => {
data.value.path = file.name data.value.path = file.name
} }
/** 提交表单 */ /** 处理文件上传中 */
const handleFileUploadProgress = () => {
formLoading.value = true //
}
/** 发起文件上传 */
const submitFileForm = () => { const submitFileForm = () => {
if (fileList.value.length == 0) {
message.error('请上传文件')
return
}
//
uploadHeaders.value = {
Authorization: 'Bearer ' + getAccessToken(),
'tenant-id': getTenantId()
}
unref(uploadRef)?.submit() unref(uploadRef)?.submit()
} }
/** 文件上传成功处理 */ /** 文件上传成功处理 */
const emit = defineEmits(['success']) // success const handleFileSuccess = () => {
const submitFormSuccess = () => {
// //
dialogVisible.value = false dialogVisible.value = false
formLoading.value = false formLoading.value = false
@ -80,22 +75,4 @@ const submitFormSuccess = () => {
message.success(t('common.createSuccess')) message.success(t('common.createSuccess'))
emit('success') emit('success')
} }
/** 上传错误提示 */
const submitFormError = (): void => {
message.error('上传失败,请您重新上传!')
formLoading.value = false
}
/** 重置表单 */
const resetForm = () => {
//
formLoading.value = false
uploadRef.value?.clearFiles()
}
/** 文件数超出提示 */
const handleExceed = (): void => {
message.error('最多只能上传一个文件!')
}
</script> </script>

View File

@ -1,45 +1,47 @@
<template> <template>
<doc-alert title="上传下载" url="https://doc.iocoder.cn/file/" /> <doc-alert title="上传下载" url="https://doc.iocoder.cn/file/" />
<!-- 搜索 --> <!-- 搜索 -->
<ContentWrap> <ContentWrap>
<el-form <el-form ref="queryFormRef" :inline="true" :model="queryParams" class="-mb-15px">
class="-mb-15px"
:model="queryParams"
ref="queryFormRef"
:inline="true"
label-width="68px"
>
<el-form-item label="文件路径" prop="path"> <el-form-item label="文件路径" prop="path">
<el-input <el-input
v-model="queryParams.path" v-model="queryParams.path"
placeholder="请输入文件路径"
clearable clearable
placeholder="请输入文件路径"
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="文件类型" prop="type" width="80"> <el-form-item label="文件类型" prop="type" width="80">
<el-input <el-input
v-model="queryParams.type" v-model="queryParams.type"
placeholder="请输入文件类型"
clearable clearable
placeholder="请输入文件类型"
@keyup.enter="handleQuery" @keyup.enter="handleQuery"
/> />
</el-form-item> </el-form-item>
<el-form-item label="创建时间" prop="createTime"> <el-form-item label="创建时间" prop="createTime">
<el-date-picker <el-date-picker
v-model="queryParams.createTime" v-model="queryParams.createTime"
value-format="YYYY-MM-DD HH:mm:ss"
type="daterange"
start-placeholder="开始日期"
end-placeholder="结束日期"
:default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]" :default-time="[new Date('1 00:00:00'), new Date('1 23:59:59')]"
end-placeholder="结束日期"
start-placeholder="开始日期"
type="daterange"
value-format="YYYY-MM-DD HH:mm:ss"
/> />
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
<el-button @click="handleQuery"><Icon icon="ep:search" class="mr-5px" /> 搜索</el-button> <el-button @click="handleQuery">
<el-button @click="resetQuery"><Icon icon="ep:refresh" class="mr-5px" /> 重置</el-button> <Icon class="mr-5px" icon="ep:search" />
<el-button type="primary" plain @click="openForm"> 搜索
<Icon icon="ep:upload" class="mr-5px" /> 上传文件 </el-button>
<el-button @click="resetQuery">
<Icon class="mr-5px" icon="ep:refresh" />
重置
</el-button>
<el-button type="primary" @click="openForm">
<Icon class="mr-5px" icon="ep:upload" />
上传文件
</el-button> </el-button>
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -48,31 +50,31 @@
<!-- 列表 --> <!-- 列表 -->
<ContentWrap> <ContentWrap>
<el-table v-loading="loading" :data="list"> <el-table v-loading="loading" :data="list">
<el-table-column label="文件名" align="center" prop="name" :show-overflow-tooltip="true" /> <el-table-column :show-overflow-tooltip="true" align="center" label="文件名" prop="name" />
<el-table-column label="文件路径" align="center" prop="path" :show-overflow-tooltip="true" /> <el-table-column :show-overflow-tooltip="true" align="center" label="文件路径" prop="path" />
<el-table-column label="URL" align="center" prop="url" :show-overflow-tooltip="true" /> <el-table-column :show-overflow-tooltip="true" align="center" label="URL" prop="url" />
<el-table-column <el-table-column
label="文件大小" :formatter="fileSizeFormatter"
align="center" align="center"
label="文件大小"
prop="size" prop="size"
width="120" width="120"
:formatter="fileSizeFormatter"
/> />
<el-table-column label="文件类型" align="center" prop="type" width="180px" /> <el-table-column align="center" label="文件类型" prop="type" width="180px" />
<el-table-column <el-table-column
label="上传时间" :formatter="dateFormatter"
align="center" align="center"
label="上传时间"
prop="createTime" prop="createTime"
width="180" width="180"
:formatter="dateFormatter"
/> />
<el-table-column label="操作" align="center"> <el-table-column align="center" label="操作">
<template #default="scope"> <template #default="scope">
<el-button <el-button
v-hasPermi="['infra:config:delete']"
link link
type="danger" type="danger"
@click="handleDelete(scope.row.id)" @click="handleDelete(scope.row.id)"
v-hasPermi="['infra:config:delete']"
> >
删除 删除
</el-button> </el-button>
@ -81,9 +83,9 @@
</el-table> </el-table>
<!-- 分页 --> <!-- 分页 -->
<Pagination <Pagination
:total="total"
v-model:page="queryParams.pageNo"
v-model:limit="queryParams.pageSize" v-model:limit="queryParams.pageSize"
v-model:page="queryParams.pageNo"
:total="total"
@pagination="getList" @pagination="getList"
/> />
</ContentWrap> </ContentWrap>
@ -91,11 +93,11 @@
<!-- 表单弹窗添加/修改 --> <!-- 表单弹窗添加/修改 -->
<FileForm ref="formRef" @success="getList" /> <FileForm ref="formRef" @success="getList" />
</template> </template>
<script setup lang="ts" name="InfraFile"> <script lang="ts" name="Config" setup>
import { fileSizeFormatter } from '@/utils' import { fileSizeFormatter } from '@/utils'
import { dateFormatter } from '@/utils/formatTime' import { dateFormatter } from '@/utils/formatTime'
import * as FileApi from '@/api/infra/file' import * as FileApi from '@/api/infra/file'
import FileForm from './FileForm.vue'
const message = useMessage() // const message = useMessage() //
const { t } = useI18n() // const { t } = useI18n() //

View File

@ -8,63 +8,72 @@
支持发送视频消息时支持新建视频 支持发送视频消息时支持新建视频
--> -->
<template> <template>
<el-tabs type="border-card" v-model="objDataRef.type" @tab-click="handleClick"> <el-tabs v-model="objDataRef.type" type="border-card" @tab-click="handleClick">
<!-- 类型 1文本 --> <!-- 类型 1文本 -->
<el-tab-pane name="text"> <el-tab-pane name="text">
<template #label> <template #label>
<el-row align="middle"><Icon icon="ep:document" /> 文本</el-row> <el-row align="middle">
<icon icon="ep:document" />
文本
</el-row>
</template> </template>
<el-input <el-input
type="textarea" v-model="objDataRef.content"
:rows="5" :rows="5"
placeholder="请输入内容" placeholder="请输入内容"
v-model="objDataRef.content" type="textarea"
@input="inputContent" @input="inputContent"
/> />
</el-tab-pane> </el-tab-pane>
<!-- 类型 2图片 --> <!-- 类型 2图片 -->
<el-tab-pane name="image"> <el-tab-pane name="image">
<template #label> <template #label>
<el-row align="middle"><Icon icon="ep:picture" class="mr-5px" /> 图片</el-row> <el-row align="middle">
<icon class="mr-5px" icon="ep:picture" />
图片
</el-row>
</template> </template>
<!-- 情况一已经选择好素材或者上传好图片 --> <!-- 情况一已经选择好素材或者上传好图片 -->
<div class="select-item" v-if="objDataRef.url"> <div v-if="objDataRef.url" class="select-item">
<img class="material-img" :src="objDataRef.url" /> <img :src="objDataRef.url" class="material-img" />
<p class="item-name" v-if="objDataRef.name">{{ objDataRef.name }}</p> <p v-if="objDataRef.name" class="item-name">{{ objDataRef.name }}</p>
<el-row class="ope-row" justify="center"> <el-row class="ope-row">
<el-button type="danger" circle @click="deleteObj"> <el-button circle type="danger" @click="deleteObj">
<Icon icon="ep:delete" /> <icon icon="ep:delete" />
</el-button> </el-button>
</el-row> </el-row>
</div> </div>
<!-- 情况二未做完上述操作 --> <!-- 情况二未做完上述操作 -->
<el-row v-else style="text-align: center" align="middle"> <el-row v-else align="middle" style="text-align: center">
<!-- 选择素材 --> <!-- 选择素材 -->
<el-col :span="12" class="col-select"> <el-col :span="12" class="col-select">
<el-button type="success" @click="openMaterial"> <el-button type="success" @click="openMaterial">
素材库选择 <Icon icon="ep:circle-check" /> 素材库选择
<icon icon="ep:circle-check" />
</el-button> </el-button>
<el-dialog title="选择图片" v-model="dialogImageVisible" width="90%" append-to-body> <el-dialog v-model="dialogImageVisible" append-to-body title="选择图片" width="90%">
<WxMaterialSelect :obj-data="objDataRef" @select-material="selectMaterial" /> <wx-material-select :obj-data="objDataRef" @selectMaterial="selectMaterial" />
</el-dialog> </el-dialog>
</el-col> </el-col>
<!-- 文件上传 --> <!-- 文件上传 -->
<el-col :span="12" class="col-add"> <el-col :span="12" class="col-add">
<el-upload <el-upload
:action="actionUrl" :action="actionUrl"
:headers="headers"
multiple
:limit="1"
:file-list="fileList"
:data="uploadData"
:before-upload="beforeImageUpload" :before-upload="beforeImageUpload"
:data="uploadData"
:file-list="fileList"
:headers="headers"
:limit="1"
:on-success="handleUploadSuccess" :on-success="handleUploadSuccess"
multiple
> >
<el-button type="primary">上传图片</el-button> <el-button type="primary">上传图片</el-button>
<template #tip> <template #tip>
<span> <span>
<div class="el-upload__tip">支持 bmp/png/jpeg/jpg/gif 格式大小不超过 2M</div> <div class="el-upload__tip"
</span> >支持 bmp/png/jpeg/jpg/gif 格式大小不超过 2M</div
></span
>
</template> </template>
</el-upload> </el-upload>
</el-col> </el-col>
@ -73,43 +82,47 @@
<!-- 类型 3语音 --> <!-- 类型 3语音 -->
<el-tab-pane name="voice"> <el-tab-pane name="voice">
<template #label> <template #label>
<el-row align="middle"><Icon icon="ep:phone" /> 语音</el-row> <el-row align="middle">
<icon icon="ep:phone" />
语音
</el-row>
</template> </template>
<div class="select-item2" v-if="objDataRef.url">
<div v-if="objDataRef.url" class="select-item2">
<p class="item-name">{{ objDataRef.name }}</p> <p class="item-name">{{ objDataRef.name }}</p>
<div class="item-infos"> <div class="item-infos">
<WxVoicePlayer :url="objDataRef.url" /> <wx-voice-player :url="objDataRef.url" />
</div> </div>
<el-row class="ope-row" justify="center"> <el-row class="ope-row">
<el-button type="danger" circle @click="deleteObj"><Icon icon="ep:delete" /></el-button> <el-button circle icon="el-icon-delete" type="danger" @click="deleteObj" />
</el-row> </el-row>
</div> </div>
<el-row v-else style="text-align: center"> <el-row v-else style="text-align: center">
<!-- 选择素材 --> <!-- 选择素材 -->
<el-col :span="12" class="col-select"> <el-col :span="12" class="col-select">
<el-button type="success" @click="openMaterial"> <el-button type="success" @click="openMaterial">
素材库选择<Icon icon="ep:circle-check" /> 素材库选择<i class="el-icon-circle-check el-icon--right"></i>
</el-button> </el-button>
<el-dialog title="选择语音" v-model="dialogVoiceVisible" width="90%" append-to-body> <el-dialog v-model="dialogVoiceVisible" append-to-body title="选择语音" width="90%">
<WxMaterialSelect :objData="objData" @select-material="selectMaterial" /> <WxMaterialSelect :objData="objData" @selectMaterial="selectMaterial" />
</el-dialog> </el-dialog>
</el-col> </el-col>
<!-- 文件上传 --> <!-- 文件上传 -->
<el-col :span="12" class="col-add"> <el-col :span="12" class="col-add">
<el-upload <el-upload
:action="actionUrl" :action="actionUrl"
:headers="headers"
multiple
:limit="1"
:file-list="fileList"
:data="uploadData"
:before-upload="beforeVoiceUpload" :before-upload="beforeVoiceUpload"
:data="uploadData"
:file-list="fileList"
:headers="headers"
:limit="1"
:on-success="handleUploadSuccess" :on-success="handleUploadSuccess"
multiple
> >
<el-button type="primary">点击上传</el-button> <el-button type="primary">点击上传</el-button>
<template #tip> <template #tip>
<div class="el-upload__tip"> <div class="el-upload__tip"
格式支持 mp3/wma/wav/amr文件大小不超过 2M播放长度不超过 60s >格式支持 mp3/wma/wav/amr文件大小不超过 2M播放长度不超过 60s
</div> </div>
</template> </template>
</el-upload> </el-upload>
@ -119,7 +132,10 @@
<!-- 类型 4视频 --> <!-- 类型 4视频 -->
<el-tab-pane name="video"> <el-tab-pane name="video">
<template #label> <template #label>
<el-row align="middle"><Icon icon="ep:share" /> 视频</el-row> <el-row align="middle">
<icon icon="ep:share" />
视频
</el-row>
</template> </template>
<el-row> <el-row>
<el-input <el-input
@ -129,38 +145,42 @@
@input="inputContent" @input="inputContent"
/> />
<el-input <el-input
class="input-margin-bottom"
v-model="objDataRef.description" v-model="objDataRef.description"
class="input-margin-bottom"
placeholder="请输入描述" placeholder="请输入描述"
@input="inputContent" @input="inputContent"
/> />
<div style="text-align: center"> <div style="text-align: center">
<WxVideoPlayer v-if="objDataRef.url" :url="objDataRef.url" /> <wx-video-player v-if="objDataRef.url" :url="objDataRef.url" />
</div> </div>
<el-col> <el-col>
<el-row style="text-align: center" align="middle"> <el-row align="middle" style="text-align: center">
<!-- 选择素材 --> <!-- 选择素材 -->
<el-col :span="12"> <el-col :span="12">
<el-button type="success" @click="openMaterial"> <el-button type="success" @click="openMaterial">
素材库选择 <Icon icon="ep:circle-check" /> 素材库选择
<icon icon="ep:circle-check" />
</el-button> </el-button>
<el-dialog title="选择视频" v-model="dialogVideoVisible" width="90%" append-to-body> <el-dialog v-model="dialogVideoVisible" append-to-body title="选择视频" width="90%">
<WxMaterialSelect :objData="objDataRef" @select-material="selectMaterial" /> <wx-material-select :objData="objDataRef" @selectMaterial="selectMaterial" />
</el-dialog> </el-dialog>
</el-col> </el-col>
<!-- 文件上传 --> <!-- 文件上传 -->
<el-col :span="12"> <el-col :span="12">
<el-upload <el-upload
:action="actionUrl" :action="actionUrl"
:headers="headers"
multiple
:limit="1"
:file-list="fileList"
:data="uploadData"
:before-upload="beforeVideoUpload" :before-upload="beforeVideoUpload"
:data="uploadData"
:file-list="fileList"
:headers="headers"
:limit="1"
:on-success="handleUploadSuccess" :on-success="handleUploadSuccess"
multiple
> >
<el-button type="primary">新建视频 <Icon icon="ep:upload" /></el-button> <el-button type="primary"
>新建视频
<icon icon="ep:upload" />
</el-button>
</el-upload> </el-upload>
</el-col> </el-col>
</el-row> </el-row>
@ -170,33 +190,36 @@
<!-- 类型 5图文 --> <!-- 类型 5图文 -->
<el-tab-pane name="news"> <el-tab-pane name="news">
<template #label> <template #label>
<el-row align="middle"><Icon icon="ep:reading" /> 图文</el-row> <el-row align="middle">
<icon icon="ep:reading" />
图文
</el-row>
</template> </template>
<el-row> <el-row>
<div class="select-item" v-if="objDataRef.articles?.length > 0"> <div v-if="objDataRef.articles.size > 0" class="select-item">
<WxNews :articles="objDataRef.articles" /> <wx-news :articles="objDataRef.articles" />
<el-col class="ope-row"> <el-col class="ope-row">
<el-button type="danger" circle @click="deleteObj"> <el-button circle type="danger" @click="deleteObj">
<Icon icon="ep:delete" /> <icon icon="ep:delete" />
</el-button> </el-button>
</el-col> </el-col>
</div> </div>
<!-- 选择素材 --> <!-- 选择素材 -->
<el-col :span="24" v-if="!objDataRef.content"> <el-col v-if="!objDataRef.content" :span="24">
<el-row style="text-align: center" align="middle"> <el-row align="middle" style="text-align: center">
<el-col :span="24"> <el-col :span="24">
<el-button type="success" @click="openMaterial"> <el-button type="success" @click="openMaterial"
{{ newsType === '1' ? '选择已发布图文' : '选择草稿箱图文' }} >{{ newsType === '1' ? '选择已发布图文' : '选择草稿箱图文' }}
<icon icon="ep:circle-check" /> <icon icon="ep:circle-check" />
</el-button> </el-button>
</el-col> </el-col>
</el-row> </el-row>
</el-col> </el-col>
<el-dialog title="选择图文" v-model="dialogNewsVisible" width="90%" append-to-body> <el-dialog v-model="dialogNewsVisible" append-to-body title="选择图文" width="90%">
<WxMaterialSelect <wx-material-select
:objData="objDataRef"
@select-material="selectMaterial"
:newsType="newsType" :newsType="newsType"
:objData="objDataRef"
@selectMaterial="selectMaterial"
/> />
</el-dialog> </el-dialog>
</el-row> </el-row>
@ -204,17 +227,20 @@
<!-- 类型 6音乐 --> <!-- 类型 6音乐 -->
<el-tab-pane name="music"> <el-tab-pane name="music">
<template #label> <template #label>
<el-row align="middle"><Icon icon="ep:service" />音乐</el-row> <el-row align="middle">
<icon icon="ep:service" />
音乐
</el-row>
</template> </template>
<el-row align="middle" justify="center"> <el-row align="middle" justify="center">
<el-col :span="6"> <el-col :span="6">
<el-row align="middle" justify="center" class="thumb-div"> <el-row align="middle" class="thumb-div" justify="center">
<el-col :span="24"> <el-col :span="24">
<el-row align="middle" justify="center"> <el-row align="middle" justify="center">
<img <img
style="width: 100px"
v-if="objDataRef.thumbMediaUrl" v-if="objDataRef.thumbMediaUrl"
:src="objDataRef.thumbMediaUrl" :src="objDataRef.thumbMediaUrl"
style="width: 100px"
/> />
<icon v-else icon="ep:plus" /> <icon v-else icon="ep:plus" />
</el-row> </el-row>
@ -222,29 +248,29 @@
<div class="thumb-but"> <div class="thumb-but">
<el-upload <el-upload
:action="actionUrl" :action="actionUrl"
:headers="headers"
multiple
:limit="1"
:file-list="fileList"
:data="uploadData"
:before-upload="beforeThumbImageUpload" :before-upload="beforeThumbImageUpload"
:data="uploadData"
:file-list="fileList"
:headers="headers"
:limit="1"
:on-success="handleUploadSuccess" :on-success="handleUploadSuccess"
multiple
> >
<template #trigger> <template #trigger>
<el-button type="text">本地上传</el-button> <el-button type="text">本地上传</el-button>
</template> </template>
<el-button type="text" @click="openMaterial" style="margin-left: 5px"> <el-button style="margin-left: 5px" type="text" @click="openMaterial"
素材库选择 >素材库选择
</el-button> </el-button>
</el-upload> </el-upload>
</div> </div>
</el-row> </el-row>
</el-col> </el-col>
</el-row> </el-row>
<el-dialog title="选择图片" v-model="dialogThumbVisible" width="80%" append-to-body> <el-dialog v-model="dialogThumbVisible" append-to-body title="选择图片" width="80%">
<WxMaterialSelect <wx-material-select
:objData="{ type: 'image', accountId: objDataRef.accountId }" :objData="{ type: 'image', accountId: objDataRef.accountId }"
@select-material="selectMaterial" @selectMaterial="selectMaterial"
/> />
</el-dialog> </el-dialog>
</el-col> </el-col>
@ -269,6 +295,7 @@
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</template> </template>
<script lang="ts" name="WxReplySelect"> <script lang="ts" name="WxReplySelect">
import WxNews from '@/views/mp/components/wx-news/main.vue' import WxNews from '@/views/mp/components/wx-news/main.vue'
import WxMaterialSelect from '@/views/mp/components/wx-material-select/main.vue' import WxMaterialSelect from '@/views/mp/components/wx-material-select/main.vue'
@ -455,7 +482,7 @@ export default defineComponent({
// tempObjItem // tempObjItem
let tempObjItem = { let tempObjItem = {
type: '', type: '',
articles: [], articles: '',
thumbMediaId: '', thumbMediaId: '',
thumbMediaUrl: '', thumbMediaUrl: '',
introduction: '', introduction: '',
@ -533,7 +560,7 @@ export default defineComponent({
} }
const deleteObj = () => { const deleteObj = () => {
if (objDataRef.type === 'news') { if (objDataRef.type === 'news') {
objDataRef.articles = [] objDataRef.articles = ''
} else if (objDataRef.type === 'image') { } else if (objDataRef.type === 'image') {
objDataRef.mediaId = null objDataRef.mediaId = null
objDataRef.url = null objDataRef.url = null