Commit de267f84 authored by Mac's avatar Mac

1

parent 01286d4b
......@@ -79,4 +79,65 @@ export function SetSynvEduEmployee(data) {
method: 'post',
data
})
}
/**
* 素材管理 获取素材类型枚举列表
*
*/
export function getMediumTypeEnumList(data) {
return request({
url: '/QYWeChat/GetMediumTypeEnumList',
method: 'post',
data
})
}
/**
* 素材管理 素材分组列表
*
*/
export function getWeChatMediumGroupList(data) {
return request({
url: '/QYWeChat/GetWeChatMediumGroupList',
method: 'post',
data
})
}
/**
* 素材管理 获取素材分页列表
*
*/
export function getWeChatMediumPageList(data) {
return request({
url: '/QYWeChat/GetWeChatMediumPageList',
method: 'post',
data
})
}
/**
* 素材管理 新增修改素材
*
*/
export function setWeChatMediumInfo(data) {
return request({
url: '/QYWeChat/SetWeChatMediumInfo',
method: 'post',
data
})
}
/**
* 素材管理 删除素材
*
*/
export function delWecharMediumInfo(data) {
return request({
url: '/QYWeChat/DelWecharMediumInfo',
method: 'post',
data
})
}
\ No newline at end of file
This diff is collapsed.
......@@ -7,7 +7,7 @@
@click="goadd()"></q-btn>
</div>
<div style="width: 100%;display: flex;align-items: center;flex-wrap: wrap;padding: 10px 20px;">
<q-card class="imgcard" v-for="(x,y) in data" :key='y'
<q-card class="imgcard" v-for="(x,y) in dataList" :key='y'
:style="{border:x.check==true?'2px solid #91d5ff':'2px solid #FFF'}"
@click="data[y].check = !data[y].check">
<q-card-section>
......@@ -27,99 +27,46 @@
<div class="onetext" style="margin-top: 5px;">来源:{{x.source}}</div>
</q-card-section>
</q-card>
<div style="width: 100%;height: 50px;line-height: 50px;text-align: center;">暂无数据</div>
</div>
</div>
<q-dialog v-model="Isadd" persistent>
<q-card style="width: 520px; max-width: 80vw;">
<q-card-section>
<div class="text-h6">新建图片素材</div>
</q-card-section>
<q-separator />
<q-card-section class="q-pt-none" style="margin-top: 15px;padding: 20px;">
<q-select filled stack-label option-value="ID" option-label="Name" v-model="addMsg.classifyId"
ref="ID" :options="classifyList" label="分组" :dense="false" emit-value map-options />
<div style="margin-top: 15px;">
<div style="width:70px">上传图片:</div>
<div style="margin-top: 15px;">
<el-upload class="avatar-uploader materialupload" action="" :before-upload="uploadFile" accept="image/gif,image/jpeg,image/png,image/jpg,image/bmp"
:show-file-list="false">
<i class="el-icon-plus avatar-uploader-icon" style="font-size: 30px;" v-if="addMsg.img==''"></i>
<q-img v-else :src="addMsg.img"
style="width: 110px;height: 110px;border-radius: 6px;display: flex;">
</q-img>
</el-upload>
<div style="margin-top: 20px;">
(图片大小不超过2M,图片名不能重复,支持JPG,JPEG及PNG格式)
</div>
</div>
</div>
</q-card-section>
<q-separator />
<q-card-actions align="right" class="bg-white">
<q-btn class="q-mr-md" label="取消" @click="Isadd = false" />
<q-btn color="accent" class="q-mr-md" label="添加" @click="submit()" />
</q-card-actions>
</q-card>
</q-dialog>
<div v-if="Isadd==true">
<alladdsc :allclassifyList="allclassifyList" type='2' @editsuccess="getchildren" @getcancel='Isadd=false'></alladdsc>
</div>
</div>
</template>
<script>
import {
UploadSelfFile
} from "../../../api/common/common"; //上传图片
import alladdsc from './allAddSC'
const addobj={ Id: 0, classifyId: '', img: '',}
export default {
name: "imgmaterial",
components: {
alladdsc,
},
props: {
dataList: {
type: Array,
default: [],
},
allclassifyList:{
type: Array,
default: [],
}
},
data() {
return {
loading: false,
Isadd: false,
data: [{
Type: 1,
title: '测试文本.png',
Content: 'http://imgfile.oytour.com/EduSystem/Test/Upload/course/202107070330161360000000064.jpg',
source: '本地上传',
CreatorName: '小张',
check: false,
UpdateTime: '2021-08-04 15:48'
}, {
Type: 1,
title: '测试文本.png',
Content: 'http://imgfile.oytour.com/EduSystem/Test/Upload/course/202107090216027320000000011.jpg',
source: '本地上传',
CreatorName: '小张',
check: false,
UpdateTime: '2021-08-04 15:48'
}, {
Type: 1,
title: '测试文本.png',
Content: 'http://imgfile.oytour.com/EduSystem/Test/Upload/course/202107090302364350000000080.jpg',
source: '本地上传',
CreatorName: '小张',
check: false,
UpdateTime: '2021-08-04 15:48'
},],
pageCount: 0,
msg: {
pageIndex: 1,
pageSize: 18,
},
classifyList: [
{ Name: '活动', ID: 1, },
{ Name: '产品', ID: 2, },
{ Name: '校园', ID: 3, },
],
addMsg: Object.assign({}, addobj)
}
},
created() {
console.log('进去所有页面')
},
methods: {
changePage(e) {
......@@ -133,13 +80,19 @@
this.Isadd = true;
this.addMsg.img= x.Content
},
uploadFile(files) {//图片上传
UploadSelfFile("course", files, res => {
if (res.Code == 1) {
this.addMsg.img = res.FileUrl;
}
});
getchildren(){
this.$emit('editsuccess')
this.Isadd = false
},
goedits(row){
this.editobj= {}
this.editobj.Id = row.Id;
this.editobj.MediaGroupId = row.MediaGroupId;
this.editobj.Type = row.Type;
this.editobj.TextModel = JSON.parse(JSON.stringify(row.TextModel)) ;
this.Isadd = true
console.log(row,'row')
},
submit(){//提交
......
......@@ -127,7 +127,7 @@
}
},
created() {
console.log('进去所有页面')
},
methods: {
changePage(e) {
......
......@@ -3,83 +3,76 @@
<div class="page-content">
<q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat class="sticky-column-table"
separator="none" title="" :data="data" :columns="columns" row-key="name">
separator="none" title="" :data="dataList" :columns="columns" row-key="name">
<template v-slot:top="props">
<div class="col-2 q-table__title"></div>
<q-space />
<q-btn color="accent" style="float:right;margin-right:0;" size="sm" class="q-mr-md" icon="add"
label="添加文本" @click="goadd()"></q-btn>
</template>
<template v-slot:body-cell-Type="props">
<template v-slot:body-cell-title="props">
<q-td :props="props">
<span v-if="props.row.Type==1">图文</span>
<span v-if="props.row.Type==2">图片</span>
<span>{{props.row.TextModel.Title}}</span>
</q-td>
</template>
<template v-slot:body-cell-Content="props">
<q-td :props="props">
<span>{{props.row.TextModel.Content}}</span>
</q-td>
</template>
<template v-slot:bottom>
<!-- <q-pagination class="full-width justify-end" v-model="msg.PageIndex" color="primary"
:max="msg.PageCount" :input="true" @input="changePage" /> -->
</template>
<template v-slot:body-cell-optioned="props">
<q-td :props="props">
<q-btn flat size="xs" icon="edit" style="font-weight:400;color: #3FC4FF" class="q-mr-xs"
label="编辑" @click="goDetailed(props.row,'0')" />
label="编辑" @click="goedits(props.row)" />
<q-btn flat size="xs" icon="delete" style="font-weight:400;color: #3FC4FF" class="q-mr-xs"
label="删除" @click="goDetailed(props.row,'0')" />
label="删除" @click="goDetailed(props.row)" />
</q-td>
</template>
<template v-slot:bottom>
<q-pagination class="full-width justify-end" v-model="msg.pageIndex" color="primary"
:max="pageCount" :input="true" @input="changePage" />
</template>
</q-table>
</div>
<q-dialog v-model="Isadd" persistent>
<q-card style="width: 520px; max-width: 80vw;">
<q-card-section>
<div class="text-h6">新建文本素材</div>
</q-card-section>
<q-separator />
<q-card-section class="q-pt-none" style="margin-top: 15px;">
<q-select filled stack-label option-value="ID" option-label="Name" v-model="addMsg.classifyId"
ref="ID" :options="classifyList" label="分组" :dense="false" emit-value map-options />
<q-input clearable standout="bg-primary text-white" v-model="addMsg.title" label="文本标题" style="margin-top: 20px;"
/>
<q-input clearable standout="bg-primary text-white" v-model="addMsg.content" type="textarea" label="文本内容" style="margin-top: 20px;"
/>
</q-card-section>
<q-separator />
<q-card-actions align="right" class="bg-white">
<q-btn class="q-mr-md" label="取消" @click="Isadd = false" />
<q-btn color="accent" class="q-mr-md" label="添加" @click="savelocal()" />
</q-card-actions>
</q-card>
</q-dialog>
<div v-if="Isadd==true">
<alladdsc :allclassifyList="allclassifyList" type='1' @editsuccess="getchildren" :editobj='editobj' @getcancel='Isadd=false'></alladdsc>
</div>
</div>
</template>
<script>
import {
delWecharMediumInfo,//删除素材
} from '../../../api/system/wechat';
import alladdsc from './allAddSC'
export default {
name: "textmaterial",
components: {
alladdsc,
},
props: {
dataList: {
type: Array,
default: [],
},
allclassifyList:{
type: Array,
default: [],
}
},
data() {
return {
loading: false,
Isadd: false,
data: [{
Type: 1,
title: '测试文本',
Content: '测试文本',
source: '本地上传',
CreatorName: '小张',
UpdateTime: '2021-08-04 15:48'
}],
pageCount: 0,
msg: {
pageIndex: 1,
pageSize: 10,
rowsPerPage: 10,
Month: '',
TeacherId: 0,
State: 0,
},
//公告column
columns: [{
......@@ -95,20 +88,20 @@
align: 'left',
},
{
name: 'CreatorName',
field: 'CreatorName',
name: 'UpdateByName',
field: 'UpdateByName',
label: '上传者',
align: 'left'
},
{
name: 'source',
field: 'source',
label: '素材来源',
name: 'MediumGroupName',
field: 'MediumGroupName',
label: '分组',
align: 'left'
},
{
name: 'Type',
field: 'Type',
name: 'TypeName',
field: 'TypeName',
label: '类型',
align: 'left'
},
......@@ -124,22 +117,13 @@
field: 'DeptId'
}
],
classifyList: [
{ Name: '活动', ID: 1, },
{ Name: '产品', ID: 2, },
{ Name: '校园', ID: 3, },
],
addMsg: {
Id: 0,
classifyId: '',
title: '',
content: '',
}
editobj: null
}
},
created() {
console.log('进去所有页面')
},
methods: {
changePage(e) {
......@@ -147,7 +131,50 @@
},
goadd() {
this.Isadd = true
this.editobj=null
},
getchildren(){
this.$emit('editsuccess')
this.Isadd = false
},
goedits(row){
this.editobj= {}
this.editobj.Id = row.Id;
this.editobj.MediaGroupId = row.MediaGroupId;
this.editobj.Type = row.Type;
this.editobj.TextModel = JSON.parse(JSON.stringify(row.TextModel)) ;
this.Isadd = true
console.log(row,'row')
},
goDetailed(row){//删除
let delMsg = {
MediumIds: row.Id,
};
this.$q.dialog({
title: '提示信息',
message: '是否确定删除该素材?',
cancel: true,
persistent: true,
ok: "确定",
cancel: "取消",
}).onOk(() => {
delWecharMediumInfo(delMsg).then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '删除成功!',
position: 'top'
})
this.$emit('editsuccess')
}
})
}).onCancel(() => {
});
}
}
}
......
......@@ -3,64 +3,68 @@
<div class="page-search row items-center">
<div class="col row wrap q-mr-lg q-col-gutter-md">
<div class="col-3">
<q-select filled stack-label @input="resetSearch" option-value="ID" option-label="Name"
v-model="msg.classifyId" ref="ID" :options="classifyList" label="分组" :dense="false" emit-value
<q-select filled stack-label @input="resetSearch" option-value="Id" option-label="Name"
v-model="msg.MediaGroupId" ref="Id" :options="classifyList" label="分组" :dense="false" emit-value
map-options />
</div>
<div class="col-3">
<q-input @input="resetSearch" clearable standout="bg-primary text-white" v-model="msg.Name"
label="输入搜索内容" maxlength="20" />
label="输入搜索内容" maxlength="20" />
</div>
</div>
</div>
<div class="page-content">
<q-tabs style="margin-bottom:20px;" v-model="tabCheck" narrow-indicator dense align="left" class="text-primary">
<q-tab :ripple="false" name="first" label="所有" />
<q-tab :ripple="false" name="second" label="文本" />
<q-tab :ripple="false" name="third" label="图片" />
<q-tab :ripple="false" name="fourth" label="图文" />
<q-tab :ripple="false" name="five" label="音频" />
<q-tab :ripple="false" name="six" label="视频" />
<q-tab :ripple="false" name="seven" label="小程序" />
<q-tab :ripple="false" name="eight" label="文件" />
</q-tabs>
<div v-if="tabCheck=='first'" >
<q-tabs style="margin-bottom:20px;" v-model="tabCheck" narrow-indicator dense align="left"
class="text-primary">
<q-tab :ripple="false" :name="x.Id" :label="x.Name" v-for="(x,y) in MediumList" :key="y"
@click="msg.Type = x.Id,resetSearch()" />
</q-tabs>
<!-- <div v-if="tabCheck=='1'" >
 <allmaterial></allmaterial>
</div>
<div v-if="tabCheck=='second'" >
 <textmaterial></textmaterial>
</div>
<div v-if="tabCheck=='third'" >
 <imgmaterial></imgmaterial>
</div>
<div v-if="tabCheck=='fourth'" >
</div> -->
<div v-if="tabCheck=='1'">
 <textmaterial :dataList='dataList' :allclassifyList='allclassifyList' @editsuccess="getchildren"></textmaterial>
</div>
<div v-if="tabCheck=='2'">
 <imgmaterial :dataList='dataList' :allclassifyList='allclassifyList' @editsuccess="getchildren"></imgmaterial>
</div>
<div v-if="tabCheck=='3'">
 <imgtextmaterial></imgtextmaterial>
</div>
<div v-if="tabCheck=='five'" >
</div>
<div v-if="tabCheck=='4'">
 <audiomaterial></audiomaterial>
</div>
<div v-if="tabCheck=='six'" >
</div>
<div v-if="tabCheck=='5'">
 <videomaterial></videomaterial>
</div>
<div v-if="tabCheck=='eight'" >
</div>
<div v-if="tabCheck=='7'">
 <filematerial></filematerial>
</div>
</div>
</div>
<!-- <q-pagination class="full-width justify-end" v-model="msg.pageIndex" color="primary" :max="PageCount" :input="true" @input="changePage" /> -->
<el-pagination @current-change="changePage" style="float: right;" layout="total,prev, pager, next, jumper"
:current-page.sync="msg.pageIndex" :page-size="msg.pageSize" :total='PageCount'>
</el-pagination>
</div>
</template>
<script>
import allmaterial from '../../components/enterprise/material/allmaterial'
import textmaterial from '../../components/enterprise/material/textmaterial'
import imgmaterial from '../../components/enterprise/material/imgmaterial'
import imgtextmaterial from '../../components/enterprise/material/imgtextmaterial'
import audiomaterial from '../../components/enterprise/material/audiomaterial'
import videomaterial from '../../components/enterprise/material/videomaterial'
import filematerial from '../../components/enterprise/material/filematerial'
import {
getMediumTypeEnumList,
getWeChatMediumGroupList,
getWeChatMediumPageList,
setWeChatMediumInfo,//新增修改素材
} from '../../api/system/wechat';
import allmaterial from '../../components/enterprise/material/allmaterial'
import textmaterial from '../../components/enterprise/material/textmaterial'
import imgmaterial from '../../components/enterprise/material/imgmaterial'
import imgtextmaterial from '../../components/enterprise/material/imgtextmaterial'
import audiomaterial from '../../components/enterprise/material/audiomaterial'
import videomaterial from '../../components/enterprise/material/videomaterial'
import filematerial from '../../components/enterprise/material/filematerial'
export default {
components: {
......@@ -79,44 +83,61 @@ import filematerial from '../../components/enterprise/material/filematerial'
data() {
return {
loading: false,
pageCount: 0,
tabCheck:'first',
PageCount: 0,
tabCheck: 1,
msg: {
pageIndex: 1,
pageSize: 10,
rowsPerPage: 10,
classifyId:0,
Name:'',
MediaGroupId: 0,//分组
Type: 0,//类型
Content: '',
},
classifyList: [
{ Name: '全部', ID: 0, },
{ Name: '活动', ID: 1, },
{ Name: '产品', ID: 2, },
{ Name: '校园', ID: 3, },
{ Name: '销售', ID: 4, },
{ Name: '趣味', ID: 5, },
],
classifyList: [],
MediumList: [],
dataList: [],
allclassifyList: []
}
},
created() {
this.getMediumTypeList()//素材类型枚举
this.getWeChatMediumGroupList()//素材分组
this.getList()//获取列表数据
},
methods: {
changePage(e) {
getMediumTypeList() {
getMediumTypeEnumList({}).then(res => {
this.MediumList = res.Data
})
},
getList(){
getWeChatMediumGroupList() {
getWeChatMediumGroupList({}).then(res => {
this.classifyList = res.Data
this.allclassifyList = JSON.parse(JSON.stringify(res.Data))
let obj = {
Name: '全部',
Id: 0,
}
this.classifyList.unshift(obj)
})
},
getList() {
getWeChatMediumPageList(this.msg).then(res => {
this.dataList = res.Data.PageData;
this.PageCount = res.Data.PageCount
})
},
goadd() {
this.$router.push({
path: '/enterprise/addWelcome',
});
changePage(e) {
this.msg.PageIndex = e;
this.getList()
},
resetSearch(){
resetSearch() {
this.msg.pageIndex = 1;
this.getList()
},
getchildren(addMsg) {//子级过来的新增和修改
this.getList()
}
}
......@@ -173,6 +194,7 @@ import filematerial from '../../components/enterprise/material/filematerial'
.materialManage .el-drawer.rtl {
overflow: inherit;
}
.materialupload {
width: 118px;
height: 118px;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment