zx 3 years ago
parent 55e26d4000
commit 5ef8b5112c

@ -150,6 +150,15 @@ const routes = [
},
hidden: true
},
{
path: "/matManage/matEdit",
name: "MatEdit",
component: () => import("@/views/MatManage/_matEdit/index.vue"),
meta: {
title: '编辑素材',
},
hidden: true
},
]
},
{
@ -212,6 +221,14 @@ const routes = [
title: '级别管理',
},
},
{
path: "/memberManage/pointManage",
name: "PointManage",
component: () => import("@/views/MemberManage/_pointManage/index.vue"),
meta: {
title: '积分管理',
},
},
]
},
{

@ -1,8 +1,7 @@
export function statusFormatter(row) {
switch(row.status) {
case 0: return '未开始';
case 1: return '进行中';
case 2: return '已终止';
switch(row.type) {
case 1: return '视频';
case 2: return '图片';
default: return '';
}
};

@ -37,6 +37,7 @@
<el-table :data="tableData.data" size="default" border
:header-cell-style="{background: '#EEE'}">
<el-table-column prop="title" label="标题" width="180"></el-table-column>
<el-table-column prop="type" label="类型" :formatter="statusFormatter" width="180"></el-table-column>
<el-table-column prop="sortWeight" label="排序" >
<template #default="scope">
<el-input v-model="sortValue" @blur="editCancel" @change="handlerChangeSort(value)" style="width: 120px" v-if="isEditing && scope.row.id == editId"></el-input>
@ -44,17 +45,18 @@
<el-icon @click="handlerSortEdit(scope.row)"><Edit /></el-icon>
</template>
</el-table-column>
<el-table-column prop="fileUrl" label="文件" width="600">
<!-- <el-table-column prop="fileUrl" label="文件" width="200">
<template #default="scope">
<el-link :href="$ImgUrl(scope.row.fileUrl)" target="_blank">
{{scope.row.fileUrl}}
</el-link>
</template>
</el-table-column>
</el-table-column> -->
<el-table-column prop="creatAt" label="创建时间"></el-table-column>
<el-table-column prop="action" label="操作" fixed="right" width="240">
<el-table-column prop="action" label="操作" fixed="right" width="360">
<template #default="scope">
<el-link type="primary" @click="handlerEdit(scope.row.id)"></el-link>
<el-link :href="$ImgUrl(scope.row.fileUrl)" type="primary" target="_blank">
查看
</el-link>
<el-link type="primary" @click="handlerEdit(scope.row.id)" style="margin-left: 8px">编辑</el-link>
<el-link type="danger" @click="singleDel(scope.row.id)" style="margin-left: 8px">删除</el-link>
</template>
</el-table-column>

@ -0,0 +1,156 @@
<template>
<div class="main-content">
<div class="form-area">
<el-form size="default" :model="form" label-width="120px">
<el-form-item label="分组" style="width: 80%">
<el-select v-model="form.groupId" placeholder="请选择">
<el-option :value="0" label="不分组"></el-option>
<el-option v-for="(item) in groupData" :key="item.id" :value="item.id" :label="item.name"></el-option>
</el-select>
</el-form-item>
<el-form-item label="车系" style="width: 80%">
<div>
<el-checkbox-group v-model="form.brandList">
<el-checkbox v-for="(item,index) in brandData" :key="index" :label="item.id">
{{item.name}}
</el-checkbox>
</el-checkbox-group>
</div>
</el-form-item>
<el-form-item label="类型" style="width: 80%">
<el-select v-model="form.type" placeholder="请选择">
<el-option :value="1" label="视频"></el-option>
<el-option :value="2" label="图片"></el-option>
<el-option :value="3" label="文字"></el-option>
</el-select>
</el-form-item>
<el-form-item label="视频封面" style="width: 80%" v-if="form.type == 1">
<uploadFile @change="coverUpload" :config="{ limit: 1, accept: '.jpg, .jpeg, .png, .gif,'}">
<el-icon v-if="form.coverUrl == ''" class="img-upload"><Plus /></el-icon>
<img v-else class="img-upload" :src="$ImgUrl(form.coverUrl)" />
</uploadFile>
</el-form-item>
<el-form-item label="标签" style="width: 80%">
<el-checkbox-group v-model="form.tagList">
<el-checkbox v-for="(item,index) in tagData" :key="index" :label="item.id">
{{item.title}}
</el-checkbox>
</el-checkbox-group>
</el-form-item>
<el-form-item label="素材描述" style="width: 80%">
<el-input type="textarea" v-model="form.title" />
</el-form-item>
<el-form-item label="素材内容" style="width: 100%">
<uploadFile @change="handlerUpload" :config="{ limit: 1, accept: '.jpg, .jpeg, .png, .gif, .mp4'}">
<el-button>上传文件</el-button>
</uploadFile>
<el-link :href="$ImgUrl(form.fileUrl)" target="_blank">
{{form.fileUrl}}
</el-link>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="confirm"></el-button>
</el-form-item>
</el-form>
</div>
</div>
</template>
<script>
import {defineComponent,reactive,ref,getCurrentInstance} from 'vue'
export default defineComponent({
name: 'v-matUpload',
setup() {
const activeId = reactive({
value: 0
});
const form = reactive({
groupId: 0,
title: '',
type: undefined,
tagList: [],
brandList: [],
coverUrl: '',
fileUrl: '',
duration: undefined,
});
const tagData = ref([]);
const brandData = ref([]);
const groupData = ref([]);
const { proxy } = getCurrentInstance();
return {
form,proxy,
tagData,brandData,groupData,
activeId
}
},
mounted() {
this.getApi()
},
methods: {
getApi() {
this.proxy.$post("/tag/list", {}).then(res => {
this.tagData = res.data.records;
}).catch(() => {});
this.proxy.$post("/brand/list", {}).then(res => {
this.brandData = res.data.records;
}).catch(() => {});
this.proxy.$post("/referenceGroup/list", {}).then(res => {
this.groupData = res.data.records;
}).catch(() => {});
if(this.$route.params.id) {
this.proxy.$post("/reference/detail", {id: this.$route.params.id}).then(res => {
this.form.groupId = res.data.groupId;
this.form.type = res.data.type;
this.form.title = res.data.title;
res.data.brandList.forEach(ele => {this.form.brandList.push(ele.id)});
res.data.tagList.forEach(ele => {this.form.tagList.push(ele.id)});
this.form.fileUrl = res.data.fileUrl;
this.form.coverUrl = res.data.coverUrl;
this.form.duration = res.data.duration;
}).catch(() => {});
}
},
confirm() {
if(this.$route.params.id) {
let obj = Object.assign(this.form, {id: this.$route.params.id})
this.proxy.$post("/reference/upd", obj).then(res => {
this.$message.success(res.data)
this.$router.go(-1);
}).catch(() => {});
} else {
this.proxy.$post("/reference/add", this.form).then(res => {
this.$message.success(res.data)
this.$router.go(-1);
}).catch(() => {});
}
},
//
handlerUpload(data) {
if(data.fileUrl != null) {
this.form.fileUrl = data.fileUrl
};
if(data.duration) {
this.form.duration = data.duration;
}
},
coverUpload(data) {
this.form.coverUrl = data.fileUrl
}
}
})
</script>
<style lang="less">
.form-area {
width: 600px
}
.img-upload {
font-size: 28px;
color: #8c939d;
width: 135px;
height: 135px;
text-align: center;
border: 1px solid;
}
</style>

@ -161,7 +161,7 @@ export default defineComponent({
this.$router.push({ name: "MatUpload" })
},
goEdit(value) {
this.$router.push({ name: "MatUpload",params:{id:value}})
this.$router.push({ name: "MatEdit",params:{id:value}})
},
//
singleDel(id) {

@ -126,7 +126,11 @@ export default defineComponent({
//
handlerUpload(data) {
if(data.fileUrl != null) {
this.form.fileUrlList.push(data.fileUrl)
let obj = {
duration: data.duration,
url: data.fileUrl
}
this.form.fileUrlList.push(obj)
}
},
coverUpload(data) {

@ -0,0 +1,8 @@
export function statusFormatter(row) {
switch(row.type) {
case 1: return '视频';
case 2: return '图片';
case 3: return '图文';
default: return '';
}
};

@ -0,0 +1,124 @@
<template>
<div class="main-content">
<div class="area-form">
<el-form :inline="true" size="default">
<el-form-item label="员工名">
<el-input v-model="form.name" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item label="部门">
<el-input v-model="form.department" placeholder="请输入"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="confirm"> </el-button>
<el-button @click="reset"> </el-button>
</el-form-item>
</el-form>
</div>
<div class="area-table">
<el-table :data="tableData.data" size="default" border :header-cell-style="{background: '#EEE'}">
<el-table-column prop="name" label="员工" width="360"></el-table-column>
<el-table-column prop="main_departmentName" label="部门"></el-table-column>
<el-table-column prop="sub_departmentName" label="上级部门"></el-table-column>
<el-table-column prop="point" label="积分"></el-table-column>
<el-table-column prop="action" label="操作" fixed="right" width="240">
<template #default="scope">
<el-link type="primary" @click="changePoint(scope.row.id)"></el-link>
</template>
</el-table-column>
</el-table>
<el-pagination
v-model:currentPage="pagination.current"
v-model:page-size="pagination.pageSize"
:page-sizes="[10, 20, 30, 40]"
background
layout="total, sizes, prev, pager, next, jumper"
:total="pagination.total"
/>
</div>
</div>
</template>
<script>
import {defineComponent, reactive, watch, getCurrentInstance} from 'vue'
import {statusFormatter} from './config.js'
export default defineComponent({
name: 'v-questList',
setup() {
const form = reactive({
name: undefined,
department: undefined,
});
const tableData = reactive({
data: [],
});
const pagination = reactive({
total: 0,
current: 1,
pageSize: 10
})
const { proxy } = getCurrentInstance();
return {
form,proxy,
tableData,pagination,
statusFormatter
}
},
mounted() {
// this.getApi()
// this.getData()
watch(() => (this.pagination.pageSize), () => {
this.getData()
});
watch(() => (this.pagination.current), () => {
this.getData()
})
},
methods: {
getApi() {
let obj = Object.assign(this.form,{pageNum: this.pagination.current,pageSize: this.pagination.pageSize})
this.proxy.$post("/user/department", obj).then(res => {
const data = res.data
}).catch(() => {});
},
getData() {
let obj = Object.assign(this.form,{pageNum: this.pagination.current,pageSize: this.pagination.pageSize})
this.proxy.$post("/user/list", obj).then(res => {
if(res.code == 200) {
const data = res.data
this.tableData.data = data.records;
this.pagination.total = data.total
} else {
this.$message.error(res.msg)
}
}).catch(() => {});
},
confirm() {
this.getData()
},
reset() {
this.form.name = undefined;
this.form.department = undefined;
this.getData();
},
changePoint(value) {
},
//
singleDel(id) {
this.$alert(
'是否删除'+id+'?', //
'删除', //
{type: 'warning'}
).then(() => {
this.$message.success('删除成功')
}).catch(() => {})
}
}
})
</script>
<style lang="less" scoped>
.area-table {
margin-top: 16px
}
</style>

@ -19,6 +19,27 @@
<el-form-item label="简介" style="width: 60%">
<el-input placeholder="请输入" :rows="4" type="textarea" v-model="form.subtitle" />
</el-form-item>
<el-form-item label="图文介绍">
<el-radio-group v-model="textareaShow">
<el-radio :label="false">不显示图文介绍</el-radio>
<el-radio :label="true">显示图文介绍</el-radio>
</el-radio-group>
<div style="border: 1px solid #ccc" v-if="textareaShow">
<Toolbar
style="border-bottom: 1px solid #ccc;width: 700px"
:editor="editorRef"
:defaultConfig="toolbarConfig"
:mode="mode"
/>
<Editor
style="height: 301px; overflow-y: hidden;"
v-model="form.imgText"
:defaultConfig="editorConfig"
:mode="mode"
@onCreated="handleCreated"
/>
</div>
</el-form-item>
<el-form-item label="时间" style="width: 60%">
<el-date-picker value-format="YYYY-MM-DD HH:mm:ss" @change="timeChange" v-model="selTime" type="daterange"></el-date-picker>
</el-form-item>
@ -89,10 +110,14 @@
</template>
<script>
import '@wangeditor/editor/dist/css/style.css'
import { onBeforeUnmount, shallowRef, onMounted } from 'vue'
import { Editor, Toolbar } from '@wangeditor/editor-for-vue'
import {defineComponent, reactive, ref, getCurrentInstance} from 'vue'
import {valueFormatter} from './config.js'
export default defineComponent({
name: 'v-questRelease',
components: { Editor, Toolbar },
setup() {
const activeId = reactive({
value: 0
@ -111,6 +136,7 @@ export default defineComponent({
teachRefeList: [],
teachRefeUrlList: [],
departmentList: [],
imgText: undefined,
});
const toRelease = ref(1); //
const selTime = ref([]);
@ -120,14 +146,44 @@ export default defineComponent({
const refData = ref([]);
const teachData = ref([]);
const departmentData = ref([]);
const textareaShow = ref(false);
const { proxy } = getCurrentInstance();
const ruleTable = reactive({
data: []
});
/////////////
const editorRef = shallowRef()
// onMounted(() => { // ajax
// setTimeout(() => {
// valueHtml.value = '<p> Ajax </p>'
// }, 1500)
// })
//
const toolbarConfig = {}
const editorConfig = { MENU_CONF: {} }
editorConfig.MENU_CONF['uploadImage'] = {
server: process.env.VUE_APP_URL + "util/upload2",
fieldName: 'file',
};
editorConfig.MENU_CONF['uploadVideo'] = {
server: process.env.VUE_APP_URL + "util/upload2",
fieldName: 'file',
}
//
onBeforeUnmount(() => {
const editor = editorRef.value
if (editor == null) return
editor.destroy()
})
const handleCreated = (editor) => {
editorRef.value = editor // editor
}
/////////////
return {
form,proxy,selTime,valueFormatter,toRelease,
tagData,brandData,ruleData,refData,teachData,departmentData,
ruleTable,
ruleTable,textareaShow,
editorRef, mode: 'simple', toolbarConfig, editorConfig, handleCreated,
activeId
}
},
@ -206,7 +262,11 @@ export default defineComponent({
},
handlerRefUpload(data) {
if(data.fileUrl != null) {
this.form.referenceUrlList.push(data.fileUrl)
let obj = {
duration: data.duration,
url: data.fileUrl
}
this.form.referenceUrlList.push(obj)
}
},
handlerTeachUpload(data) {

@ -62,7 +62,7 @@ import { onBeforeUnmount, shallowRef, onMounted } from 'vue'
import { Editor, Toolbar } from '@wangeditor/editor-for-vue'
import {defineComponent, reactive, getCurrentInstance} from 'vue'
export default defineComponent({
name: 'v-questRelease',
name: 'v-actRelease',
components: { Editor, Toolbar },
setup() {
const form = reactive({

Loading…
Cancel
Save