Commit 9e9ab35e authored by 罗超's avatar 罗超
parents ebfc240f 3a52b372
...@@ -16,33 +16,67 @@ export function getWeChatConfigInfo(data) { ...@@ -16,33 +16,67 @@ export function getWeChatConfigInfo(data) {
* 获取网站导航分页 * 获取网站导航分页
* *
*/ */
export function setWeChatConfig(data) { export function setWeChatConfig(data) {
return request({ return request({
url: '/QYWeChat/SetWeChatConfig', url: '/QYWeChat/SetWeChatConfig',
method: 'post', method: 'post',
data data
}) })
} }
/** /**
* 初始化 同步部门至企业微信 * 初始化 同步部门至企业微信
* *
*/ */
export function setSyncEduDepartment(data) { export function setSyncEduDepartment(data) {
return request({ return request({
url: '/QYWeChat/SetSyncEduDepartment', url: '/QYWeChat/SetSyncEduDepartment',
method: 'post', method: 'post',
data data
}) })
} }
/** /**
* 初始化 同步员工至企业微信 * 初始化 同步员工至企业微信
* *
*/ */
export function SetSynvEduEmployee(data) { export function SetSynvEduEmployee(data) {
return request({ return request({
url: '/QYWeChat/SetSynvEduEmployee', url: '/QYWeChat/SetSynvEduEmployee',
method: 'post', method: 'post',
data data
}) })
} }
\ No newline at end of file /**
* 分组管理 素材分组分页列表
*
*/
export function getWeChatMediumGroupPageList(data) {
return request({
url: '/QYWeChat/GetWeChatMediumGroupPageList',
method: 'post',
data
})
}
/**
* 分组管理 新增修改分组
*
*/
export function setWeChatMediumGroup(data) {
return request({
url: '/QYWeChat/SetWeChatMediumGroup',
method: 'post',
data
})
}
/**
* 分组管理 新增修改分组
*
*/
export function delWeChatMediumGroup(data) {
return request({
url: '/QYWeChat/DelWeChatMediumGroup',
method: 'post',
data
})
}
\ No newline at end of file
...@@ -24,7 +24,7 @@ ...@@ -24,7 +24,7 @@
<div>您的退款协议《{{ProtocolNum}}</div> <div>您的退款协议《{{ProtocolNum}}</div>
<div>请长按识别二维码,查阅并签字</div> <div>请长按识别二维码,查阅并签字</div>
</div> </div>
<q-table :pagination="pageMsg" :loading="loading" no-data-label="暂无相关数据" flat class="sticky-column-table" <q-table :pagination="pageMsg" :loading="loading" no-data-label="暂无相关数据" flat class="sticky-column-table sticky-right-column-table"
separator="none" title="退课协议" :data="dataList" :columns="columns" row-key="name"> separator="none" title="退课协议" :data="dataList" :columns="columns" row-key="name">
<template v-slot:top="props"> <template v-slot:top="props">
<div class="col-2 q-table__title">退课协议</div> <div class="col-2 q-table__title">退课协议</div>
...@@ -70,7 +70,7 @@ ...@@ -70,7 +70,7 @@
<template v-slot:bottom> <template v-slot:bottom>
</template> </template>
<template v-slot:body-cell-optioned="props"> <template v-slot:body-cell-optioned="props">
<q-td :props="props"> <q-td :props="props" style="width:100px;">
<div> <div>
<el-tooltip v-if="AuthorityObj.isShowCopyLink" content="复制链接发送给客人签字" placement="top" effect="light"> <el-tooltip v-if="AuthorityObj.isShowCopyLink" content="复制链接发送给客人签字" placement="top" effect="light">
<q-btn flat v-if=" props.row.AuditStatus == 2 &&props.row.IsSure==0" size="xs" <q-btn flat v-if=" props.row.AuditStatus == 2 &&props.row.IsSure==0" size="xs"
...@@ -182,7 +182,7 @@ ...@@ -182,7 +182,7 @@
], ],
//权限显示对象 //权限显示对象
AuthorityObj: { AuthorityObj: {
isShowCopyLink: true, //是否显示复制链接 isShowCopyLink: false, //是否显示复制链接
isShowSure: false, //是否显示确认按钮 isShowSure: false, //是否显示确认按钮
}, },
isShowBillForm: false, //是否显示退课详情 isShowBillForm: false, //是否显示退课详情
......
<template>
<div class="allmaterial" style="padding: 0;margin: 0;">
<!-- <div class="page-search row items-center">
<div class="col row wrap q-mr-lg q-col-gutter-md">
</div>
</div> -->
<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">
<!-- <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">
<q-td :props="props">
<span v-if="props.row.Type==1">图文</span>
<span v-if="props.row.Type==2">图片</span>
</q-td>
</template>
<template v-slot:body-cell-Content="props">
<q-td :props="props">
<q-img
:src="props.row.Content"
style="width: 80px;height: 80px;border-radius: 6px;display: flex;"
>
</q-img>
</q-td>
</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')" />
<q-btn flat size="xs" icon="delete" style="font-weight:400;color: #3FC4FF" class="q-mr-xs"
label="删除" @click="goDetailed(props.row,'0')" />
</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>
</div>
</template>
<script>
export default {
name: "allmaterial",
data() {
return {
loading: false,
ISsystem: false,
data: [{Type:1,
title:'阿萨欢声雷动.png',
Content:'http://imgfile.oytour.com/EduSystem/Test/Upload/course/202107070330161360000000064.jpg',
applymember:'通用',
source:'本地上传',
CreatorName:'小张',
UpdateTime:'2021-08-04 15:48'}],
pageCount: 0,
msg: {
pageIndex: 1,
pageSize: 10,
rowsPerPage: 10,
Month: '',
TeacherId: 0,
State: 0,
},
//公告column
columns: [{
name: 'title',
field: 'title',
label: '标题',
align: 'left'
},
{
name: 'Content',
field: 'Content',
label: '内容',
align: 'left',
},
{
name: 'CreatorName',
field: 'CreatorName',
label: '上传者',
align: 'left'
},
{
name: 'source',
field: 'source',
label: '素材来源',
align: 'left'
},
{
name: 'Type',
field: 'Type',
label: '类型',
align: 'left'
},
{
name: 'UpdateTime',
field: 'UpdateTime',
label: '添加时间',
align: 'left'
},
{
name: 'optioned',
label: '操作',
field: 'DeptId'
}
],
}
},
created() {
console.log('进去所有页面')
},
methods: {
changePage(e){
},
goadd(){
this.$router.push({
path:'/enterprise/addWelcome',
});
}
}
}
</script>
<style>
.allmaterial .Sysuser_Date .el-input--prefix .el-input__inner {
background-color: red;
border: 0;
}
.allmaterial .state-item {
padding: 2px 5px;
border-radius: 3px;
text-align: center;
font-size: 10px;
}
.allmaterial .frIdlist {
padding: 3px 10px;
border-radius: 3px;
background: #EEEEEF;
align-items: center;
justify-content: center;
margin-right: 5px;
margin-bottom: 5px;
cursor: pointer;
}
.class-popover .q-pr-lg {
padding-right: 0;
margin-top: 20px;
}
.allmaterial .el-date-editor.el-input {
width: 100%;
}
.allmaterial .el-date-editor.el-input input {
background-color: transparent !important;
}
.allmaterial .el-range-editor .el-range-input {
background: none;
}
.Sysuser_Date .el-input__inner {
background: transparent !important;
border: 0 !important;
}
.allmaterial .el-drawer.rtl{
overflow: inherit;
}
</style>
\ No newline at end of file
This diff is collapsed.
<template>
<div class="filematerial" style="padding: 0;margin: 0;">
<div class="page-content">
<div>
<q-btn color="accent" style="float:right;" size="sm" class="q-mr-md" icon="add" label="上传视频"
@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'
:style="{border:x.check==true?'2px solid #91d5ff':'2px solid #FFF'}"
@click="data[y].check = !data[y].check">
<q-card-section>
<div
style="display:flex;align-items: center;justify-content: space-between;margin-bottom: 5px;">
<span>{{x.UpdateTime}}</span>
<!-- <q-btn class="q-mr-md" label="编辑" size="xs" color="accent" style="margin-right: 0;" @click.stop="goedit(x)" /> -->
<i class="el-icon-edit-outline" style="font-size: 20px;color: #1890ff;"
@click.stop="goedit(x)"></i>
</div>
<div class="iconfontfile " v-if="x.Content!=''"
:class="x.Content.substring(x.Content.lastIndexOf('.')+1,x.Content.length).toUpperCase()=='PDF'? 'icon-pdf' : 'icon-excel'"
@click="showUpLoadFile()">
</div>
<div class="onetext" style="margin-top: 5px;">上传者:{{x.CreatorName}}</div>
<div class="onetext" style="margin-top: 5px;">来源:{{x.source}}</div>
</q-card-section>
</q-card>
</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 class="iconfontfile " v-if="addMsg.Url!=''"
:class="addMsg.Url.substring(addMsg.Url.lastIndexOf('.')+1,addMsg.Url.length).toUpperCase()=='PDF'? 'icon-pdf' : 'icon-excel'"
@click="showUpLoadFile()">
</div>
<div style="margin-top: 15px;">
<el-upload class="avatar-uploader " action="" :before-upload="uploadFile"
:show-file-list="false">
<q-btn color="accent" size="sm" class="q-mr-md" icon="cloud_upload" label="上传"></q-btn>
</el-upload>
<div style="margin-top: 20px;">
(上传文件大小不超过20MB,支持DOC、DOCX、XLS、XLSX、CSV、PPT、PPTX、TXT、PDF及Xmind格式。)
</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>
</template>
<script>
import {
UploadSelfFile
} from "../../../api/common/common"; //上传图片
const addobj = { Id: 0, classifyId: '', Url: '', }
export default {
name: "filematerial",
data() {
return {
loading: false,
Isadd: false,
data: [{
Type: 1,
title: '测试文本.png',
Content: 'http://192.168.20.214:8130/EduSystem/Test/Upload/course/202108060532494570000000006.docx',
source: '本地上传',
CreatorName: '小张',
check: false,
UpdateTime: '2021-08-04 15:48'
}, {
Type: 1,
title: '测试文本.png',
Content: 'http://192.168.20.214:8130/EduSystem/Test/Upload/course/202108060532494570000000006.docx',
source: '本地上传',
CreatorName: '小张',
check: false,
UpdateTime: '2021-08-04 15:48'
}, {
Type: 1,
title: '测试文本.png',
Content: 'http://192.168.20.214:8130/EduSystem/Test/Upload/course/202108060532494570000000006.docx',
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),
audioDuration: 0,
}
},
created() {
console.log('进去所有页面')
},
methods: {
changePage(e) {
},
goadd() {
this.Isadd = true;
this.addMsg = Object.assign({}, addobj)
},
goedit(x) {
this.Isadd = true;
this.addMsg.Url = x.Content
},
uploadFile(file) {
// 文件类型进行判断
const isLt20M = file.size / 1024 / 1024 < 20;
let ft = file.name.substring(file.name.lastIndexOf('.') + 1, file.name.length).toUpperCase();
let stringArr = 'DOCX|DOC|XLSX|XLS|PPT|PPTX|PDF'
if (stringArr.indexOf(ft) == '-1') {
this.$q.notify({
type: 'negative',
message: `请上传正确的文件格式!`,
position: 'top'
})
return false;
}
if (!isLt20M) {
this.$q.notify({
type: 'negative',
message: `文件大小不能超过20MB哦!`,
position: 'top'
})
return false;
}
UploadSelfFile("course", file, res => {
if (res.Code == 1) {
this.addMsg.Url = res.FileUrl;
}
});
},
submit() {//提交
}
}
}
</script>
<style>
.filematerial .Sysuser_Date .el-input--prefix .el-input__inner {
background-color: red;
border: 0;
}
.filematerial .state-item {
padding: 2px 5px;
border-radius: 3px;
text-align: center;
font-size: 10px;
}
.filematerial .frIdlist {
padding: 3px 10px;
border-radius: 3px;
background: #EEEEEF;
align-items: center;
justify-content: center;
margin-right: 5px;
margin-bottom: 5px;
cursor: pointer;
}
.class-popover .q-pr-lg {
padding-right: 0;
margin-top: 20px;
}
.filematerial .el-date-editor.el-input {
width: 100%;
}
.filematerial .el-date-editor.el-input input {
background-color: transparent !important;
}
.filematerial .el-range-editor .el-range-input {
background: none;
}
.Sysuser_Date .el-input__inner {
background: transparent !important;
border: 0 !important;
}
.filematerial .el-drawer.rtl {
overflow: inherit;
}
.filematerial .imgcard {
width: 300px;
margin: 0 15px 15px 0
}
.filematerial .imgstyle {
width: 100%;
height: 45px;
border-radius: 0;
}
.filematerial .onetext {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
width: 260px;
}
.iconfontfile {
display: inline-block;
width: 32px;
height: 32px;
border-radius: 50%;
color: #e95252 !important;
background-color: rgba(251, 251, 251, 0.9);
}
.icon-excel,
.icon-pdf {
text-align: center;
font-size: 38px;
color: green;
}
</style>
\ No newline at end of file
<template>
<div class="imgmaterial" style="padding: 0;margin: 0;">
<div class="page-content">
<div>
<q-btn color="accent" style="float:right;" size="sm" class="q-mr-md" icon="cloud_upload" label="上传图片"
@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'
:style="{border:x.check==true?'2px solid #91d5ff':'2px solid #FFF'}"
@click="data[y].check = !data[y].check">
<q-card-section>
<div
style="display:flex;align-items: center;justify-content: space-between;margin-bottom: 5px;">
<span>{{x.UpdateTime}}</span>
<!-- <q-btn class="q-mr-md" label="编辑" size="xs" color="accent" style="margin-right: 0;" @click.stop="goedit(x)" /> -->
<i class="el-icon-edit-outline" style="font-size: 20px;color: #1890ff;" @click.stop="goedit(x)"></i>
</div>
<q-img :src="x.Content" class="imgstyle">
<div class="absolute-bottom text-subtitle1 text-center onetext"
style="padding: 0;padding: 0 5px;font-size: 12px;">
{{x.title}}
</div>
</q-img>
<div class="onetext" style="margin-top: 5px;">上传者:{{x.CreatorName}}</div>
<div class="onetext" style="margin-top: 5px;">来源:{{x.source}}</div>
</q-card-section>
</q-card>
</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>
</template>
<script>
import {
UploadSelfFile
} from "../../../api/common/common"; //上传图片
const addobj={ Id: 0, classifyId: '', img: '',}
export default {
name: "imgmaterial",
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) {
},
goadd() {
this.Isadd = true;
this.addMsg= Object.assign({}, addobj)
},
goedit(x){
this.Isadd = true;
this.addMsg.img= x.Content
},
uploadFile(files) {//图片上传
UploadSelfFile("course", files, res => {
if (res.Code == 1) {
this.addMsg.img = res.FileUrl;
}
});
},
submit(){//提交
}
}
}
</script>
<style>
.imgmaterial .Sysuser_Date .el-input--prefix .el-input__inner {
background-color: red;
border: 0;
}
.imgmaterial .state-item {
padding: 2px 5px;
border-radius: 3px;
text-align: center;
font-size: 10px;
}
.imgmaterial .frIdlist {
padding: 3px 10px;
border-radius: 3px;
background: #EEEEEF;
align-items: center;
justify-content: center;
margin-right: 5px;
margin-bottom: 5px;
cursor: pointer;
}
.class-popover .q-pr-lg {
padding-right: 0;
margin-top: 20px;
}
.imgmaterial .el-date-editor.el-input {
width: 100%;
}
.imgmaterial .el-date-editor.el-input input {
background-color: transparent !important;
}
.imgmaterial .el-range-editor .el-range-input {
background: none;
}
.Sysuser_Date .el-input__inner {
background: transparent !important;
border: 0 !important;
}
.imgmaterial .el-drawer.rtl {
overflow: inherit;
}
.imgmaterial .imgcard {
width: 240px;
margin: 0 15px 15px 0
}
.imgmaterial .imgstyle {
width: 100%;
height: 120px;
border-radius: 0;
}
.imgmaterial .onetext {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
width: 208px;
}
</style>
\ No newline at end of file
<template>
<div class="imgtextmaterial" style="padding: 0;margin: 0;">
<div class="page-content">
<div>
<q-btn color="accent" style="float:right;" size="sm" class="q-mr-md" icon="add" label="添加图文"
@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'
:style="{border:x.check==true?'2px solid #91d5ff':'2px solid #FFF'}"
@click="data[y].check = !data[y].check">
<q-card-section>
<div
style="display:flex;align-items: center;justify-content: space-between;margin-bottom: 5px;">
<span>{{x.UpdateTime}}</span>
<!-- <q-btn class="q-mr-md" label="编辑" size="xs" color="accent" style="margin-right: 0;" @click.stop="goedit(x)" /> -->
<i class="el-icon-edit-outline" style="font-size: 20px;color: #1890ff;"
@click.stop="goedit(x)"></i>
</div>
<q-img :src="x.Content" class="imgstyle">
<div class="absolute-bottom text-subtitle1 text-center onetext"
style="padding: 0;padding: 0 5px;font-size: 12px;">
{{x.title}}
</div>
</q-img>
<div class="onetext" style="margin-top: 5px;">上传者:{{x.CreatorName}}</div>
<div class="onetext" style="margin-top: 5px;">来源:{{x.source}}</div>
</q-card-section>
</q-card>
</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>
<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-input clearable standout="bg-primary text-white" v-model="addMsg.link"
label="请输入跳转链接,且必须以http://或https://开头" style="margin-top: 20px;" />
</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>
</template>
<script>
import {
UploadSelfFile
} from "../../../api/common/common"; //上传图片
const addobj = { Id: 0, classifyId: '', img: '', title: '', content: '', }
export default {
name: "imgtextmaterial",
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) {
},
goadd() {
this.Isadd = true;
this.addMsg = Object.assign({}, addobj)
},
goedit(x) {
this.Isadd = true;
this.addMsg.img = x.Content
},
uploadFile(files) {//图片上传
UploadSelfFile("course", files, res => {
if (res.Code == 1) {
this.addMsg.img = res.FileUrl;
}
});
},
submit() {//提交
}
}
}
</script>
<style>
.imgtextmaterial .Sysuser_Date .el-input--prefix .el-input__inner {
background-color: red;
border: 0;
}
.imgtextmaterial .state-item {
padding: 2px 5px;
border-radius: 3px;
text-align: center;
font-size: 10px;
}
.imgtextmaterial .frIdlist {
padding: 3px 10px;
border-radius: 3px;
background: #EEEEEF;
align-items: center;
justify-content: center;
margin-right: 5px;
margin-bottom: 5px;
cursor: pointer;
}
.class-popover .q-pr-lg {
padding-right: 0;
margin-top: 20px;
}
.imgtextmaterial .el-date-editor.el-input {
width: 100%;
}
.imgtextmaterial .el-date-editor.el-input input {
background-color: transparent !important;
}
.imgtextmaterial .el-range-editor .el-range-input {
background: none;
}
.Sysuser_Date .el-input__inner {
background: transparent !important;
border: 0 !important;
}
.imgtextmaterial .el-drawer.rtl {
overflow: inherit;
}
.imgtextmaterial .imgcard {
width: 240px;
margin: 0 15px 15px 0
}
.imgtextmaterial .imgstyle {
width: 100%;
height: 120px;
border-radius: 0;
}
.imgtextmaterial .onetext {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
width: 208px;
}
</style>
\ No newline at end of file
<template>
<div class="textmaterial" style="padding: 0;margin: 0;">
<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">
<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">
<q-td :props="props">
<span v-if="props.row.Type==1">图文</span>
<span v-if="props.row.Type==2">图片</span>
</q-td>
</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')" />
<q-btn flat size="xs" icon="delete" style="font-weight:400;color: #3FC4FF" class="q-mr-xs"
label="删除" @click="goDetailed(props.row,'0')" />
</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>
</template>
<script>
export default {
name: "textmaterial",
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: [{
name: 'title',
field: 'title',
label: '标题',
align: 'left'
},
{
name: 'Content',
field: 'Content',
label: '内容',
align: 'left',
},
{
name: 'CreatorName',
field: 'CreatorName',
label: '上传者',
align: 'left'
},
{
name: 'source',
field: 'source',
label: '素材来源',
align: 'left'
},
{
name: 'Type',
field: 'Type',
label: '类型',
align: 'left'
},
{
name: 'UpdateTime',
field: 'UpdateTime',
label: '添加时间',
align: 'left'
},
{
name: 'optioned',
label: '操作',
field: 'DeptId'
}
],
classifyList: [
{ Name: '活动', ID: 1, },
{ Name: '产品', ID: 2, },
{ Name: '校园', ID: 3, },
],
addMsg: {
Id: 0,
classifyId: '',
title: '',
content: '',
}
}
},
created() {
console.log('进去所有页面')
},
methods: {
changePage(e) {
},
goadd() {
this.Isadd = true
}
}
}
</script>
<style>
.textmaterial .Sysuser_Date .el-input--prefix .el-input__inner {
background-color: red;
border: 0;
}
.textmaterial .state-item {
padding: 2px 5px;
border-radius: 3px;
text-align: center;
font-size: 10px;
}
.textmaterial .frIdlist {
padding: 3px 10px;
border-radius: 3px;
background: #EEEEEF;
align-items: center;
justify-content: center;
margin-right: 5px;
margin-bottom: 5px;
cursor: pointer;
}
.class-popover .q-pr-lg {
padding-right: 0;
margin-top: 20px;
}
.textmaterial .el-date-editor.el-input {
width: 100%;
}
.textmaterial .el-date-editor.el-input input {
background-color: transparent !important;
}
.textmaterial .el-range-editor .el-range-input {
background: none;
}
.Sysuser_Date .el-input__inner {
background: transparent !important;
border: 0 !important;
}
.textmaterial .el-drawer.rtl {
overflow: inherit;
}
</style>
\ No newline at end of file
<template>
<div class="videomaterial" style="padding: 0;margin: 0;">
<div class="page-content">
<div>
<q-btn color="accent" style="float:right;" size="sm" class="q-mr-md" icon="add" label="上传视频"
@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'
:style="{border:x.check==true?'2px solid #91d5ff':'2px solid #FFF'}"
@click="data[y].check = !data[y].check">
<q-card-section>
<div
style="display:flex;align-items: center;justify-content: space-between;margin-bottom: 5px;">
<span>{{x.UpdateTime}}</span>
<!-- <q-btn class="q-mr-md" label="编辑" size="xs" color="accent" style="margin-right: 0;" @click.stop="goedit(x)" /> -->
<i class="el-icon-edit-outline" style="font-size: 20px;color: #1890ff;"
@click.stop="goedit(x)"></i>
</div>
<video width="260" height="180" controls="controls" >
<source :src="x.Content" type="video/ogg" />
<source :src="x.Content" type="video/mp4" />
<source :src="x.Content" type="video/webm" />
</video>
<div class="onetext" style="margin-top: 5px;">上传者:{{x.CreatorName}}</div>
<div class="onetext" style="margin-top: 5px;">来源:{{x.source}}</div>
</q-card-section>
</q-card>
</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>
<video width="320" height="240" controls="controls" v-if="addMsg.img!=''" >
<source :src="addMsg.img" type="video/ogg" />
<source :src="addMsg.img" type="video/mp4" />
<source :src="addMsg.img" type="video/webm" />
</video>
<div style="margin-top: 15px;">
<el-upload class="avatar-uploader " action="" :before-upload="uploadFile"
:show-file-list="false">
<q-btn color="accent" size="sm" class="q-mr-md" icon="cloud_upload" label="上传"></q-btn>
</el-upload>
<div style="margin-top: 20px;">
(视频上传大小不超过10M,支持MP4格式)
</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>
</template>
<script>
import {
UploadSelfFile
} from "../../../api/common/common"; //上传图片
const addobj = { Id: 0, classifyId: '', img: '', }
export default {
name: "videomaterial",
data() {
return {
loading: false,
Isadd: false,
data: [{
Type: 1,
title: '测试文本.png',
Content: 'http://192.168.20.214:8130/EduSystem/Test/Upload/course/202108060508405370000000004.mp4',
source: '本地上传',
CreatorName: '小张',
check: false,
UpdateTime: '2021-08-04 15:48'
}, {
Type: 1,
title: '测试文本.png',
Content: 'http://192.168.20.214:8130/EduSystem/Test/Upload/course/202108060508405370000000004.mp4',
source: '本地上传',
CreatorName: '小张',
check: false,
UpdateTime: '2021-08-04 15:48'
}, {
Type: 1,
title: '测试文本.png',
Content: 'http://192.168.20.214:8130/EduSystem/Test/Upload/course/202108060508405370000000004.mp4',
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),
audioDuration: 0,
}
},
created() {
console.log('进去所有页面')
},
methods: {
changePage(e) {
},
goadd() {
this.Isadd = true;
this.addMsg = Object.assign({}, addobj)
},
goedit(x) {
this.Isadd = true;
this.addMsg.img = x.Content
},
uploadFile(file) {//图片上传
// 文件类型进行判断
const isLt10M = file.size / 1024 / 1024 < 10;
if (['video/mp4', 'video/ogg', 'video/flv', 'video/avi', 'video/wmv', 'video/rmvb'].indexOf(file.type) == -1) {
this.$q.notify({
type: 'negative',
message: `请上传正确的视频格式!`,
position: 'top'
})
return false;
}
if (!isLt10M) {
this.$q.notify({
type: 'negative',
message: `上传视频大小不能超过10MB哦!`,
position: 'top'
})
return false;
}
UploadSelfFile("course", file, res => {
if (res.Code == 1) {
this.addMsg.img = res.FileUrl;
console.log(res.FileUrl)
}
});
},
submit() {//提交
}
}
}
</script>
<style>
.videomaterial .Sysuser_Date .el-input--prefix .el-input__inner {
background-color: red;
border: 0;
}
.videomaterial .state-item {
padding: 2px 5px;
border-radius: 3px;
text-align: center;
font-size: 10px;
}
.videomaterial .frIdlist {
padding: 3px 10px;
border-radius: 3px;
background: #EEEEEF;
align-items: center;
justify-content: center;
margin-right: 5px;
margin-bottom: 5px;
cursor: pointer;
}
.class-popover .q-pr-lg {
padding-right: 0;
margin-top: 20px;
}
.videomaterial .el-date-editor.el-input {
width: 100%;
}
.videomaterial .el-date-editor.el-input input {
background-color: transparent !important;
}
.videomaterial .el-range-editor .el-range-input {
background: none;
}
.Sysuser_Date .el-input__inner {
background: transparent !important;
border: 0 !important;
}
.videomaterial .el-drawer.rtl {
overflow: inherit;
}
.videomaterial .imgcard {
width: 300px;
margin: 0 15px 15px 0
}
.videomaterial .imgstyle {
width: 100%;
height: 45px;
border-radius: 0;
}
.videomaterial .onetext {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
width: 260px;
}
</style>
\ No newline at end of file
This diff is collapsed.
...@@ -5,7 +5,6 @@ ...@@ -5,7 +5,6 @@
height: auto; height: auto;
margin: auto; margin: auto;
padding: 20px 0; padding: 20px 0;
color: #000;
} }
.firstPage { .firstPage {
...@@ -61,6 +60,13 @@ ...@@ -61,6 +60,13 @@
justify-content: space-between; justify-content: space-between;
margin-bottom: 20px; margin-bottom: 20px;
} }
.cnmoney_Course{
border-bottom:1px solid #c0c0c0;
padding:0 5px 5px 5px;
}
.courseReLeft{
flex-shrink: 0;
}
</style> </style>
<template> <template>
...@@ -79,17 +85,17 @@ ...@@ -79,17 +85,17 @@
<div>法定代表人:{{dataList.PartyBLegal}}</div> <div>法定代表人:{{dataList.PartyBLegal}}</div>
</div> </div>
<div class="Tui_Inner"> <div class="Tui_Inner">
甲乙双方经平等友好协商就 <div class="TuitractInput" style="width: 90px;">{{getData(dataList.CreateTimeStr,1)}}</div> 甲乙双方经平等友好协商就 <div class="TuitractInput" style="width: 90px;">{{getData(dataList.SignDateStr,1)}}</div>
<div class="TuitractInput" style="width: 80px;">{{getData(dataList.CreateTimeStr,2)}}</div> <div class="TuitractInput" style="width: 80px;">{{getData(dataList.SignDateStr,2)}}</div>
<div class="TuitractInput" style="width: 80px;">{{getData(dataList.CreateTimeStr,3)}}</div> <div class="TuitractInput" style="width: 80px;">{{getData(dataList.SignDateStr,3)}}</div>
签订的《培训课程协议》解除合作关系。 签订的《培训课程协议》解除合作关系。
</div> </div>
<div class="Tui_Inner">第一条:原协议内容</div> <div class="Tui_Inner">第一条:原协议内容</div>
<div class="Tui_Inner"> <div class="Tui_Inner">
原协议报名人员:<div class="TuitractInput" style="width: 300px;">{{dataList.OldSaleMan}}</div> 原协议报名人员:<div class="TuitractInput" style="width: 659px;text-align:left;">{{dataList.OldSaleMan}}</div>
</div> </div>
<div class="Tui_Inner"> <div class="Tui_Inner">
原报名项目:<div class="TuitractInput" style="width: 300px;">{{dataList.CNMoneyStr}}</div> 原报名项目:<div class="TuitractInput" style="width: 700px;text-align:left;">{{dataList.CNMoneyStr}}</div>
</div> </div>
<div class="Tui_Inner"> <div class="Tui_Inner">
原报名项目原价:<div class="TuitractInput" style="width: 100px;">{{dataList.OldSellPrice}}</div> 原报名项目原价:<div class="TuitractInput" style="width: 100px;">{{dataList.OldSellPrice}}</div>
...@@ -101,11 +107,11 @@ ...@@ -101,11 +107,11 @@
</div> </div>
(¥<div class="TuitractInput" style="width: 100px;">{{dataList.OldIncome}}</div>元整)。 (¥<div class="TuitractInput" style="width: 100px;">{{dataList.OldIncome}}</div>元整)。
</div> </div>
<div class="Tui_Inner"> <div class="Tui_Inner" style="display:flex;flex-wrap:wrap;">
原收据编号:<div class="TuitractInput" style="width: 150px;">{{dataList.OldFinaceNum}}</div> <div class="courseReLeft">原收据编号:</div><div class="TuitractInput" style="width: 700px;text-align:left;word-break:break-all">{{dataList.OldFinaceNum}}</div>
</div> </div>
<div class="Tui_Inner"> <div class="Tui_Inner">
原收款人:<div class="TuitractInput" style="width: 150px;">{{dataList.OldReceiveMan}}</div> 原收款人:<div class="TuitractInput" style="width: 720px;text-align:left;">{{dataList.OldReceiveMan}}</div>
</div> </div>
<div class="Tui_Inner"> <div class="Tui_Inner">
第二条:乙方共计课时<div class="TuitractInput" style="width: 80px;">{{dataList.TotalClassHours}}</div>节;已销课时 第二条:乙方共计课时<div class="TuitractInput" style="width: 80px;">{{dataList.TotalClassHours}}</div>节;已销课时
...@@ -113,10 +119,10 @@ ...@@ -113,10 +119,10 @@
<div class="TuitractInput" style="width: 80px;">{{dataList.SurplusHours}}</div> <div class="TuitractInput" style="width: 80px;">{{dataList.SurplusHours}}</div>
</div> </div>
<div class="Tui_Inner"> <div class="Tui_Inner">
甲方应退还乙方未上课时费用<div class="TuitractInput" style="width: 200px;">{{dataList.CNMoneyStr}}</div> 甲方应退还乙方未上课时费用<span class="cnmoney_Course">{{dataList.CNMoneyStr}}</span>
(¥<div class="TuitractInput" style="width: 150px;">{{dataList.BackMoney}}</div>),原协 (¥<span class="cnmoney_Course">{{dataList.BackMoney}}</span>),原协
议自动终止、收据自动失效。退还帐户名<div class="TuitractInput" style="width: 200px;">{{dataList.BackAccountName}}</div>,退还帐号:<div class="TuitractInput" 议自动终止、收据自动失效。退还帐户名<span class="cnmoney_Course">{{dataList.BackAccountName}}</span>,退还帐号:
style="width: 200px;">{{dataList.BackAccount}}</div> <span class="cnmoney_Course">{{dataList.BackAccount}}</span>
退还学费=乙方已缴总学费-已上课程学费-(乙方已缴学费-已上课程学费)*10%,其中“(乙方已缴课程学费)*10%”为违约金。 退还学费=乙方已缴总学费-已上课程学费-(乙方已缴学费-已上课程学费)*10%,其中“(乙方已缴课程学费)*10%”为违约金。
</div> </div>
<div class="Tui_Inner"> <div class="Tui_Inner">
...@@ -126,13 +132,13 @@ ...@@ -126,13 +132,13 @@
<div class="Tui_Inner"> <div class="Tui_Inner">
第四条:本协议自签订之日起正式生效。 第四条:本协议自签订之日起正式生效。
</div> </div>
<div class="Tui_SignZhang"> <div class="Tui_SignZhang" style="position:relative;">
<div>甲方(家长/监护人)签字(盖章): {{dataList.PartyASign}}</div> <div>甲方(家长/监护人)签字(盖章): <img style="width:85px;position:absolute;top:-13px;" :src="dataList.PartyASign" /></div>
<div>乙方签字(盖章):{{dataList.PartyBSign}}</div> <div>乙方签字(盖章):<img v-if="dataList.IsCompanySeal==1" style="width:100px;position:absolute;top:-30px;" :src="dataList.GroupSealImg" /></div>
</div> </div>
<div class="Tui_SignZhang"> <div class="Tui_SignZhang">
<div>签署日期:{{dataList.PartyASignDate}}</div> <div>签署日期:{{dataList.PartyASignDateStr}}</div>
<div>签署日期:{{dataList.PartyBSignDate}}</div> <div>签署日期:<span v-if="dataList.IsCompanySeal==1">{{dataList.PartyBSignDateStr}}</span></div>
</div> </div>
</div> </div>
</div> </div>
...@@ -177,10 +183,9 @@ ...@@ -177,10 +183,9 @@
//获取日期 //获取日期
getData(dateStr,type){ getData(dateStr,type){
if(dateStr){ if(dateStr){
let timeOne = dateStr.split(' ')[0]; let Year = dateStr.split('-')[0];
let Year = timeOne.split('-')[0]; let Month = dateStr.split('-')[1];
let Month = timeOne.split('-')[1]; let day = dateStr.split('-')[2];
let day = timeOne.split('-')[2];
if(type==1){ if(type==1){
return Year return Year
} }
......
This diff is collapsed.
...@@ -48,6 +48,14 @@ ...@@ -48,6 +48,14 @@
<div class="boxl_title"> <div class="boxl_title">
<span style="margin-left:24px ;color: rgba(0,0,0,.85); font-weight: 500; font-size: 16px;">客户账号</span> <span style="margin-left:24px ;color: rgba(0,0,0,.85); font-weight: 500; font-size: 16px;">客户账号</span>
</div> </div>
<div style="padding: 20px;">
<div style="display: flex;align-items: flex-start;">
<i class="el-icon-user" style="margin-right:20px;font-size: 40px;color: #1890ff;"></i>
<div style="width: 1px; flex:1;background: #f3f6fb;word-wrap: break-word;padding: 10px;border-radius: 4px;min-height: 40px;">
{{addMsg.Content}}
</div>
</div>
</div>
</div> </div>
<div class="box_r"> <div class="box_r">
<el-form ref="addMsg" :model="addMsg" label-width="120px"> <el-form ref="addMsg" :model="addMsg" label-width="120px">
...@@ -99,7 +107,7 @@ ...@@ -99,7 +107,7 @@
<!-- 人员选择 --> <!-- 人员选择 -->
<el-dialog custom-class='w700' title="选择人员" :visible.sync="outerVisible" center> <el-dialog custom-class='w700' title="选择人员" :visible.sync="outerVisible" center>
<div class="fl" style="width: 300px; margin: 0 20px;"> <div class="fl" style="width: 300px; margin: 0 20px;">
<p style="margin: 0 0 10px 0;">选择: <el-input class='w200' placeholder="输入关键字进行过滤" v-model="filterText"> <p style="margin: 0 0 10px 0;">选择: <el-input class='w200' placeholder="输入关键字进行过滤" v-model="filterText" @input="">
</el-input> </el-input>
</p> </p>
<el-tree class='ApprovalProcessBg' :data="memberList" show-checkbox :filter-node-method="filterNode" <el-tree class='ApprovalProcessBg' :data="memberList" show-checkbox :filter-node-method="filterNode"
......
<template>
<div class="page-body">
<div class="page-search row items-center">
<div class="col row wrap q-mr-lg q-col-gutter-md">
<div class="col-3">
<q-input @input="resetSearch" clearable standout="bg-primary text-white" v-model="msg.Name"
label="分组名称" @clear="resetSearch" maxlength="20" />
</div>
</div>
</div>
<div class="page-content">
<q-table :pagination="msg" :loading="loading" no-data-label="暂无相关数据" flat class="sticky-column-table"
separator="none" :data="dataList" :columns="columns">
<template v-slot:top="props">
<div class="col-2 q-table__title">分组列表</div>
<q-space />
<div class="page-option">
<q-btn color="accent" size="sm" class="q-mr-md" icon="add" label="新增分组"
@click="EditCategory(null)" />
</div>
</template>
<template v-slot:body-cell-CateId="props">
<q-td :props="props">
<q-btn flat size="xs" icon="edit" color="accent" style="font-weight:400" label="编辑"
@click="EditCategory(props.row)" />
<q-btn flat size="xs" icon="delete" color="negative" style="font-weight:400;" label="删除"
@click="deleteCategory(props.row)" />
</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>
</q-table>
</div>
<q-dialog v-model="isShow" 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-input filled clearable standout="bg-primary text-white" v-model="addMsg.Name" label="分组名称"
:rules="[val => !!val || '请输入分组名称']" ref="Name" />
<q-input filled clearable standout="bg-primary text-white" v-model="addMsg.Sort" label="分组排序"
style="margin-top: 20px;" :rules="[val => !!val || '请输入分组排序']" ref="Sort"/>
</q-card-section>
<q-separator />
<q-card-actions align="right" class="bg-white">
<q-btn class="q-mr-md" label="取消" @click="isShow = false" />
<q-btn color="accent" class="q-mr-md" label="确定" @click="submit()" />
</q-card-actions>
</q-card>
</q-dialog>
</div>
</template>
<script>
import {
getWeChatMediumGroupPageList,
setWeChatMediumGroup,
delWeChatMediumGroup
} from '../../api/system/wechat';
const addobj = { Id: 0, Name: '', Sort: 1 }
export default {
meta: {
title: "分组管理"
},
data() {
return {
msg: {
PageIndex: 1,
PageSize: 10,
rowsPerPage: 15,
Name: "", //系列名称
},
currentUrl: "",
dataList: [],
keyWords: '',
isShow: false,
loading: true,
columns: [{
name: 'Id',
label: 'ID',
field: 'Id',
align: 'left'
},
{
name: 'Sort',
label: '排序',
field: 'Sort',
align: 'left'
},
{
name: 'Name',
label: '分组名称',
field: 'Name',
align: 'center'
},
{
name: 'UpdateByName',
label: '创建人',
field: 'UpdateByName',
align: 'center'
},
{
name: 'UpdateTime',
label: '创建时间',
field: 'UpdateTime',
align: 'center'
},
{
name: 'CateId',
label: '操作',
field: 'CateId'
}
],
addMsg: Object.assign({}, addobj)
}
},
mounted() {
this.getcategorypage()
},
methods: {
//重新查询
resetSearch() {
this.msg.PageIndex = 1;
this.getcategorypage();
},
changePage(val) {
this.msg.PageIndex = val;
this.getcategorypage()
},
//删除系列
deleteCategory(item) {
let delMsg = {
MediumId: item.Id,
};
this.$q.dialog({
title: '提示信息',
message: '是否确定删除该分组?',
cancel: true,
persistent: true,
ok: "确定",
cancel: "取消",
}).onOk(() => {
delWeChatMediumGroup(delMsg).then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '删除成功!',
position: 'top'
})
this.getcategorypage();
}
})
}).onCancel(() => {
});
},
//刷新页面
refreshPage() {
this.getcategorypage();
},
//获取课程系列分页列表
getcategorypage() {
this.loading = true;
getWeChatMediumGroupPageList(this.msg).then(res => {
this.loading = false;
this.dataList = res.Data.PageData;
this.msg.PageCount = res.Data.PageCount
})
},
//新增修改课程系列
EditCategory(obj) {
if (obj) {
this.addMsg.Id = obj.Id
this.addMsg.Name = obj.Name
this.addMsg.Sort = obj.Sort
} else {
this.addMsg = Object.assign({}, addobj)
}
this.isShow = true;
},
submit() {
this.$refs.Name.validate();
this.$refs.Sort.validate();
if (!this.$refs.Name.hasError&& !this.$refs.Sort.hasError) {
setWeChatMediumGroup(this.addMsg).then(res => {
if (res.Code == 1) {
this.$q.notify({
icon: 'iconfont icon-chenggong',
color: 'accent',
timeout: 2000,
message: '数据保存成功!',
position: 'top'
})
this.resetSearch()
this.isShow = false;
}
})
}
}
}
}
</script>
<style lang="sass">
@import url('~assets/css/table.sass')
</style>
\ No newline at end of file
<template>
<div class="materialManage page-body">
<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
map-options />
</div>
<div class="col-3">
<q-input @input="resetSearch" clearable standout="bg-primary text-white" v-model="msg.Name"
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'" >
 <allmaterial></allmaterial>
</div>
<div v-if="tabCheck=='second'" >
 <textmaterial></textmaterial>
</div>
<div v-if="tabCheck=='third'" >
 <imgmaterial></imgmaterial>
</div>
<div v-if="tabCheck=='fourth'" >
 <imgtextmaterial></imgtextmaterial>
</div>
<div v-if="tabCheck=='five'" >
 <audiomaterial></audiomaterial>
</div>
<div v-if="tabCheck=='six'" >
 <videomaterial></videomaterial>
</div>
<div v-if="tabCheck=='eight'" >
 <filematerial></filematerial>
</div>
</div>
</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'
export default {
components: {
allmaterial,//所有列表
textmaterial,
imgmaterial,
imgtextmaterial,
audiomaterial,
videomaterial,
filematerial
},
meta: {
title: "素材库"
},
name: "materialManage",
data() {
return {
loading: false,
pageCount: 0,
tabCheck:'first',
msg: {
pageIndex: 1,
pageSize: 10,
rowsPerPage: 10,
classifyId:0,
Name:'',
},
classifyList: [
{ Name: '全部', ID: 0, },
{ Name: '活动', ID: 1, },
{ Name: '产品', ID: 2, },
{ Name: '校园', ID: 3, },
{ Name: '销售', ID: 4, },
{ Name: '趣味', ID: 5, },
],
}
},
created() {
},
methods: {
changePage(e) {
},
getList(){
},
goadd() {
this.$router.push({
path: '/enterprise/addWelcome',
});
},
resetSearch(){
this.msg.pageIndex = 1;
this.getList()
}
}
}
</script>
<style>
.materialManage .Sysuser_Date .el-input--prefix .el-input__inner {
background-color: red;
border: 0;
}
.materialManage .state-item {
padding: 2px 5px;
border-radius: 3px;
text-align: center;
font-size: 10px;
}
.materialManage .frIdlist {
padding: 3px 10px;
border-radius: 3px;
background: #EEEEEF;
align-items: center;
justify-content: center;
margin-right: 5px;
margin-bottom: 5px;
cursor: pointer;
}
.class-popover .q-pr-lg {
padding-right: 0;
margin-top: 20px;
}
.materialManage .el-date-editor.el-input {
width: 100%;
}
.materialManage .el-date-editor.el-input input {
background-color: transparent !important;
}
.materialManage .el-range-editor .el-range-input {
background: none;
}
.Sysuser_Date .el-input__inner {
background: transparent !important;
border: 0 !important;
}
.materialManage .el-drawer.rtl {
overflow: inherit;
}
.materialupload {
width: 118px;
height: 118px;
border-radius: 4px;
border: 1px dashed #d9d9d9;
background: #fafafa;
display: flex;
align-items: center;
justify-content: center;
padding: 4px;
}
</style>
\ No newline at end of file
...@@ -746,7 +746,6 @@ ...@@ -746,7 +746,6 @@
this.xingzhenState = true; this.xingzhenState = true;
this.addMsg.TemplateSorce = 2; this.addMsg.TemplateSorce = 2;
this.CostIdS.push('0') this.CostIdS.push('0')
// this.addMsg.PropertyType="";
this.getPropertyType(); this.getPropertyType();
} }
this.getMaxDepartmentTierList(); this.getMaxDepartmentTierList();
......
...@@ -790,7 +790,7 @@ ...@@ -790,7 +790,7 @@
// this.addMsg.PropertyType=""; // this.addMsg.PropertyType="";
this.getPropertyType(); this.getPropertyType();
} }
// this.getMaxDepartmentTierList();
if (this.TemplateId != 0) { if (this.TemplateId != 0) {
this.getList(); this.getList();
} else { } else {
...@@ -1702,22 +1702,6 @@ ...@@ -1702,22 +1702,6 @@
}, },
changeValue(value) { changeValue(value) {
},
getMaxDepartmentTierList() { // 获取直接主管层级
this.apipost('admin_get_GetMaxDepartmentTier', {}, res => {
if (res.data.resultCode == 1) {
let data = res.data.data;
let newList = [];
data.forEach(x => {
let newObj = {
level: x,
name: this.$t('tips.di') + x + this.$t('tips.jizhuguan'),
}
newList.push(newObj)
});
this.levelList = newList
} else {}
}, err => {})
}, },
getCostTypeList(type) { // 获取费用类型 getCostTypeList(type) { // 获取费用类型
this.apipost('Financial_post_GetTreeList', { this.apipost('Financial_post_GetTreeList', {
......
...@@ -839,7 +839,12 @@ ...@@ -839,7 +839,12 @@
{{sItem}}</span> {{sItem}}</span>
</span> </span>
</template> </template>
<template v-if="GetDetail.OtherType==28">
<span class="fr" style="text-decoration: underline;cursor: pointer;"
@click="goTuikuanDetail('/user/billquery',GetDetail.ReFinanceId)"> 退款申请单:{{GetDetail.ReFinanceId}}</span>
<span class="fr" style="text-decoration: underline;cursor: pointer;margin-right:20px;"
@click="goTuikuanDetail('/courseRefund',GetDetail.ReFinanceId2)"> 退款协议:{{GetDetail.ReFinanceId2}}</span>
</template>
<span class="fr" style="text-decoration: underline;cursor: pointer;" v-if="GetDetail.OtherType==17" <span class="fr" style="text-decoration: underline;cursor: pointer;" v-if="GetDetail.OtherType==17"
@click="lookbreakage(GetDetail.ReFinanceId)"> 报损/报溢单:{{GetDetail.ReFinanceId}}</span> @click="lookbreakage(GetDetail.ReFinanceId)"> 报损/报溢单:{{GetDetail.ReFinanceId}}</span>
<span v-if="GetDetail.TemplateId==28 || GetDetail.TemplateId==30" @click="Gourl(GetDetail)" <span v-if="GetDetail.TemplateId==28 || GetDetail.TemplateId==30" @click="Gourl(GetDetail)"
...@@ -2181,6 +2186,12 @@ ...@@ -2181,6 +2186,12 @@
path: tempStr path: tempStr
}); });
}, },
//跳转到退款协议
goTuikuanDetail(path,Id){
this.OpenNewUrl(path,{
Id:Id
})
},
lookbreakage(ID) { lookbreakage(ID) {
this.$router.replace({ this.$router.replace({
name: "breakageSingle", name: "breakageSingle",
......
...@@ -115,7 +115,7 @@ ...@@ -115,7 +115,7 @@
<div class="row" style="align-items: center ;margin:0;padding:0;"> <div class="row" style="align-items: center ;margin:0;padding:0;">
<span class="d2-n">带课老师</span> <span class="d2-n">带课老师</span>
<template v-if="item.Teacher_Id==0"> <template v-if="item.Teacher_Id==0">
<span style="color:red">未指定</span> <span style="color:red">未指定</span>
</template> </template>
<template v-else> <template v-else>
<q-avatar rounded size="sm" v-if="item.TeacherHead&&item.TeacherHead!=''"> <q-avatar rounded size="sm" v-if="item.TeacherHead&&item.TeacherHead!=''">
...@@ -271,8 +271,6 @@ ...@@ -271,8 +271,6 @@
<div v-if="item.IsCanApply==0"> <div v-if="item.IsCanApply==0">
<img src="../../assets/images/administration/bmym.png" alt="" <img src="../../assets/images/administration/bmym.png" alt=""
style="width: 64px;height: 62px;margin:20px 15px 0 0" v-if="item.SurplusNum==0"> style="width: 64px;height: 62px;margin:20px 15px 0 0" v-if="item.SurplusNum==0">
<!-- <img src="../../assets/images/administration/guoqi.png" alt="" style="width: 64px;height: 62px"
v-if="getEXPDate(item.EndOrderTime)==true"> -->
</div> </div>
<div> <div>
<q-btn style="margin-top:10px;" size="sm" color="primary" label="订单中心" @click="goclassorder(item)" /> <q-btn style="margin-top:10px;" size="sm" color="primary" label="订单中心" @click="goclassorder(item)" />
...@@ -301,8 +299,8 @@ ...@@ -301,8 +299,8 @@
</ul> </ul>
<div v-else style="width: 100%;color: #999999;text-align: center;font-size: 15px">暂无数据</div> <div v-else style="width: 100%;color: #999999;text-align: center;font-size: 15px">暂无数据</div>
</div> </div>
<editorder-form v-if="isShowEditOrderForm" :save-obj="orderObj" :orderType="1" :modityOrderType="1" :isChaBan="isChaBan" <editorder-form v-if="isShowEditOrderForm" :save-obj="orderObj" :orderType="1" :modityOrderType="1"
@close="closeOrderSaveForm" @success="refreshOrder"> :isChaBan="isChaBan" @close="closeOrderSaveForm" @success="refreshOrder">
</editorder-form> </editorder-form>
</div> </div>
</div> </div>
...@@ -347,7 +345,7 @@ ...@@ -347,7 +345,7 @@
Q_CanApply: "0", //是否可以报名 1是 Q_CanApply: "0", //是否可以报名 1是
JoinStartTime: '', //报名截止日期开始 JoinStartTime: '', //报名截止日期开始
JoinEndTime: "", //报名截止日期结束 JoinEndTime: "", //报名截止日期结束
ClassNo:'',//班号 ClassNo: '', //班号
}, },
//关联校区列表 //关联校区列表
schoolList: [], schoolList: [],
...@@ -360,6 +358,7 @@ ...@@ -360,6 +358,7 @@
orderObj: { orderObj: {
ClassId: 0, ClassId: 0,
Unit_Price: 0, Unit_Price: 0,
CourseId: 0,
}, },
isChaBan: 0, //是否插班(0-正常报入,1-插班报入) isChaBan: 0, //是否插班(0-正常报入,1-插班报入)
} }
...@@ -369,7 +368,7 @@ ...@@ -369,7 +368,7 @@
this.CourseList(); this.CourseList();
this.GetTeacherList(); this.GetTeacherList();
if (this.$route.query && this.$route.query.ClassName) { if (this.$route.query && this.$route.query.ClassName) {
this.msg.ClassName = decodeURI(this.$route.query.ClassName) ; this.msg.ClassName = decodeURI(this.$route.query.ClassName);
} }
if (this.$route.query && this.$route.query.ClassNo) { if (this.$route.query && this.$route.query.ClassNo) {
this.msg.ClassNo = this.$route.query.ClassNo; this.msg.ClassNo = this.$route.query.ClassNo;
...@@ -525,7 +524,7 @@ ...@@ -525,7 +524,7 @@
}, },
//立即报名和插班报名 //立即报名和插班报名
placeAnorder(item, type) { placeAnorder(item, type) {
if(item.Teacher_Id==0){ if (item.Teacher_Id == 0) {
this.$q.notify({ this.$q.notify({
type: 'negative', type: 'negative',
position: "top", position: "top",
...@@ -536,11 +535,12 @@ ...@@ -536,11 +535,12 @@
this.isChaBan = type; this.isChaBan = type;
this.orderObj.ClassId = item.ClassId; this.orderObj.ClassId = item.ClassId;
this.orderObj.Unit_Price = item.SellPrice; this.orderObj.Unit_Price = item.SellPrice;
this.orderObj.CourseId = item.CouseId;
this.isShowEditOrderForm = true; this.isShowEditOrderForm = true;
}, },
//跳转到课程大纲 //跳转到课程大纲
goChapter(CouseId){ goChapter(CouseId) {
this.OpenNewUrl('/course/chapter' , { this.OpenNewUrl('/course/chapter', {
CourseId: CouseId CourseId: CouseId
}); });
} }
...@@ -684,15 +684,18 @@ ...@@ -684,15 +684,18 @@
border: none !important; border: none !important;
background: transparent !important; background: transparent !important;
} }
.japanFeature{
font-size:14px; .japanFeature {
color:#111111; font-size: 14px;
color: #111111;
cursor: pointer; cursor: pointer;
margin-left:-1px; margin-left: -1px;
} }
.CourseFearure{
margin:10px; .CourseFearure {
width:500px; margin: 10px;
color:#000; width: 500px;
color: #000;
} }
</style> </style>
...@@ -300,6 +300,9 @@ ...@@ -300,6 +300,9 @@
} }
}, },
mounted() { mounted() {
if(this.$route.query.Id){
this.msg.Id = this.$route.query.Id;
}
this.currentUrl = this.$route.path; this.currentUrl = this.$route.path;
this.getEducationType(); this.getEducationType();
this.getStuBackBill(); this.getStuBackBill();
......
...@@ -1140,6 +1140,18 @@ const routes = [{ ...@@ -1140,6 +1140,18 @@ const routes = [{
component: () => component: () =>
import("pages/enterprise/addWelcome") import("pages/enterprise/addWelcome")
}, },
{
path: "/enterprise/materialManage", //企微 素材管理
component: () =>
import("pages/enterprise/materialManage")
},
{
path: "/enterprise/groupingManage", //企微 分组管理
component: () =>
import("pages/enterprise/groupingManage")
},
], ],
}, },
......
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