20200702-zlp-1

主题整合管理
This commit is contained in:
paidaxing444 2020-07-02 18:03:35 +08:00
parent 1aa7a40859
commit bea86efad9
4 changed files with 202 additions and 133 deletions

View File

@ -151,6 +151,18 @@ export const constantRoutes = [{
meta: { title: '培训视频详情', icon: '' }
}]
},
{
path: '/benyi_course/theme',
component: Layout,
hidden: true,
children: [{
path: 'activity/:id(\\d+)',
component: () =>
import ('@/views/benyi/theme/activity'),
name: 'Theme1',
meta: { title: '主题整合内容', icon: '' }
}]
},
{
path: '/job',
component: Layout,

View File

@ -1,14 +1,15 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryForm" :inline="true" label-width="68px">
<el-form-item label="所属主题" prop="themeid">
<el-input
v-model="queryParams.themeid"
placeholder="请输入所属主题"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
<el-form-item label="主题名称" prop="themeid">
<el-select v-model="queryParams.themeid" size="small">
<el-option
v-for="item in themeOptions"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="活动名称" prop="name">
<el-input
@ -21,80 +22,23 @@
</el-form-item>
<el-form-item label="活动形式" prop="type">
<el-select v-model="queryParams.type" placeholder="请选择活动形式" clearable size="small">
<el-option label="请选择字典生成" value />
<el-option
v-for="dict in typeOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item label="活动领域" prop="field">
<el-input
v-model="queryParams.field"
placeholder="请输入活动领域"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="活动目标" prop="target">
<el-input
v-model="queryParams.target"
placeholder="请输入活动目标"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="活动材料" prop="data">
<el-input
v-model="queryParams.data"
placeholder="请输入活动材料"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="活动过程" prop="process">
<el-input
v-model="queryParams.process"
placeholder="请输入活动过程"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="活动建议" prop="proposal">
<el-input
v-model="queryParams.proposal"
placeholder="请输入活动建议"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="活动反思" prop="reflect">
<el-input
v-model="queryParams.reflect"
placeholder="请输入活动反思"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="活动附录" prop="appendix">
<el-input
v-model="queryParams.appendix"
placeholder="请输入活动附录"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
</el-form-item>
<el-form-item label="序号" prop="sort">
<el-input
v-model="queryParams.sort"
placeholder="请输入序号"
clearable
size="small"
@keyup.enter.native="handleQuery"
/>
<el-select v-model="queryParams.field" placeholder="请选择活动领域" clearable size="small">
<el-option
v-for="dict in fieldOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
@ -132,30 +76,14 @@
v-hasPermi="['system:activity:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
icon="el-icon-download"
size="mini"
@click="handleExport"
v-hasPermi="['system:activity:export']"
>导出</el-button>
</el-col>
</el-row>
<el-table v-loading="loading" :data="activityList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="编号" align="center" prop="id" />
<el-table-column label="所属主题" align="center" prop="themeid" />
<el-table-column label="活动名称" align="center" prop="name" />
<el-table-column label="活动形式" align="center" prop="type" />
<el-table-column label="活动领域" align="center" prop="field" />
<el-table-column label="活动目标" align="center" prop="target" />
<el-table-column label="活动材料" align="center" prop="data" />
<el-table-column label="活动过程" align="center" prop="process" />
<el-table-column label="活动建议" align="center" prop="proposal" />
<el-table-column label="活动反思" align="center" prop="reflect" />
<el-table-column label="活动附录" align="center" prop="appendix" />
<el-table-column label="活动形式" align="center" :formatter="typeFormat" prop="type" />
<el-table-column label="活动领域" align="center" :formatter="fieldFormat" prop="field" />
<el-table-column label="序号" align="center" prop="sort" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template slot-scope="scope">
@ -186,42 +114,61 @@
/>
<!-- 添加或修改主题整合活动对话框 -->
<el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
<el-dialog :title="title" :visible.sync="open" width="1024px" append-to-body>
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
<el-form-item label="所属主题" prop="themeid">
<el-input v-model="form.themeid" placeholder="请输入所属主题" />
<el-select v-model="form.themeid" size="small" :disabled="true">
<el-option
v-for="item in themeOptions"
:key="item.id"
:label="item.name"
:value="item.id"
/>
</el-select>
</el-form-item>
<el-form-item label="活动名称" prop="name">
<el-input v-model="form.name" placeholder="请输入活动名称" />
</el-form-item>
<el-form-item label="活动形式">
<el-select v-model="form.type" placeholder="请选择活动形式">
<el-option label="请选择字典生成" value />
<el-form-item label="活动形式" prop="type">
<el-select v-model="form.type" multiple placeholder="请选择活动形式" clearable size="small">
<el-option
v-for="dict in typeOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item label="活动领域" prop="field">
<el-input v-model="form.field" placeholder="请输入活动领域" />
<el-select v-model="form.field" multiple placeholder="请选择活动领域" clearable size="small">
<el-option
v-for="dict in fieldOptions"
:key="dict.dictValue"
:label="dict.dictLabel"
:value="dict.dictValue"
/>
</el-select>
</el-form-item>
<el-form-item label="活动目标" prop="target">
<el-input v-model="form.target" placeholder="请输入活动目标" />
<Editor v-model="form.target" />
</el-form-item>
<el-form-item label="活动材料" prop="data">
<el-input v-model="form.data" placeholder="请输入活动材料" />
<Editor v-model="form.data" />
</el-form-item>
<el-form-item label="活动过程" prop="process">
<el-input v-model="form.process" placeholder="请输入活动过程" />
<Editor v-model="form.process" />
</el-form-item>
<el-form-item label="活动建议" prop="proposal">
<el-input v-model="form.proposal" placeholder="请输入活动建议" />
<Editor v-model="form.proposal" />
</el-form-item>
<el-form-item label="活动反思" prop="reflect">
<el-input v-model="form.reflect" placeholder="请输入活动反思" />
<Editor v-model="form.reflect" />
</el-form-item>
<el-form-item label="活动附录" prop="appendix">
<el-input v-model="form.appendix" placeholder="请输入活动附录" />
<Editor v-model="form.appendix" />
</el-form-item>
<el-form-item label="序号" prop="sort">
<el-input v-model="form.sort" placeholder="请输入序号" />
<el-input-number v-model="form.sort" controls-position="right" :min="0" />
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
@ -238,12 +185,16 @@ import {
getActivity,
delActivity,
addActivity,
updateActivity,
exportActivity
updateActivity
} from "@/api/benyi/activity";
import { listTheme, getTheme } from "@/api/benyi/theme";
import Editor from "@/components/Editor";
export default {
name: "Activity",
components: {
Editor
},
data() {
return {
//
@ -262,6 +213,13 @@ export default {
title: "",
//
open: false,
//
themeOptions: [],
defaultTheme: "",
//
typeOptions: [],
//
fieldOptions: [],
//
queryParams: {
pageNum: 1,
@ -281,13 +239,87 @@ export default {
//
form: {},
//
rules: {}
rules: {
name: [{ required: true, message: "名称不能为空", trigger: "blur" }],
type: [
{ required: true, message: "活动形式不能为空", trigger: "blur" }
],
field: [
{ required: true, message: "活动领域不能为空", trigger: "blur" }
],
target: [
{ required: true, message: "活动目标不能为空", trigger: "blur" }
],
data: [
{ required: true, message: "活动材料不能为空", trigger: "blur" }
],
process: [
{ required: true, message: "活动过程不能为空", trigger: "blur" }
],
proposal: [
{ required: true, message: "活动建议不能为空", trigger: "blur" }
],
reflect: [
{ required: true, message: "活动反思不能为空", trigger: "blur" }
],
sort: [{ required: true, message: "排序序号", trigger: "blur" }]
}
};
},
created() {
this.getList();
const themeId = this.$route.params && this.$route.params.id;
this.getTheme(themeId);
this.getThemes();
this.getDicts("sys_theme_type").then(response => {
this.typeOptions = response.data;
});
this.getDicts("sys_theme_field").then(response => {
this.fieldOptions = response.data;
});
},
methods: {
// --
fieldFormat(row, column) {
//alert(row.scope.split(';').length);
var ilength = row.field.split(";").length;
var names = "";
for (var i = 0; i < ilength; i++) {
names =
names +
this.selectDictLabel(this.fieldOptions, row.field.split(";")[i]) +
";";
}
//this.selectDictLabel(this.scopeOptions, row.xnxq);
return names;
},
// --
typeFormat(row, column) {
//alert(row.scope.split(';').length);
var ilength = row.type.split(";").length;
var names = "";
for (var i = 0; i < ilength; i++) {
names =
names +
this.selectDictLabel(this.typeOptions, row.type.split(";")[i]) +
";";
}
//this.selectDictLabel(this.scopeOptions, row.xnxq);
return names;
},
/** 查询主题详细 */
getTheme(themeId) {
getTheme(themeId).then(response => {
this.queryParams.themeid = response.data.id;
this.defaultTheme = response.data.id;
this.getList();
});
},
//
getThemes() {
listTheme().then(response => {
this.themeOptions = response.rows;
});
},
/** 查询主题整合活动列表 */
getList() {
this.loading = true;
@ -316,7 +348,7 @@ export default {
proposal: undefined,
reflect: undefined,
appendix: undefined,
sort: undefined,
sort: 0,
createTime: undefined
};
this.resetForm("form");
@ -329,6 +361,7 @@ export default {
/** 重置按钮操作 */
resetQuery() {
this.resetForm("queryForm");
this.queryParams.themeid = this.defaultTheme;
this.handleQuery();
},
//
@ -342,6 +375,7 @@ export default {
this.reset();
this.open = true;
this.title = "添加主题整合活动";
this.form.themeid = this.queryParams.themeid;
},
/** 修改按钮操作 */
handleUpdate(row) {
@ -349,6 +383,13 @@ export default {
const id = row.id || this.ids;
getActivity(id).then(response => {
this.form = response.data;
this.typeOptions = response.types;
this.form.type = response.typeIds;
this.fieldOptions = response.fields;
this.form.field = response.fieldIds;
this.open = true;
this.title = "修改主题整合活动";
});
@ -357,6 +398,12 @@ export default {
submitForm: function() {
this.$refs["form"].validate(valid => {
if (valid) {
var arrtype = this.form.type;
this.form.type = arrtype.join(";");
var arrfield = this.form.field;
this.form.field = arrfield.join(";");
if (this.form.id != undefined) {
updateActivity(this.form).then(response => {
if (response.code === 200) {
@ -397,22 +444,6 @@ export default {
this.msgSuccess("删除成功");
})
.catch(function() {});
},
/** 导出按钮操作 */
handleExport() {
const queryParams = this.queryParams;
this.$confirm("是否确认导出所有主题整合活动数据项?", "警告", {
confirmButtonText: "确定",
cancelButtonText: "取消",
type: "warning"
})
.then(function() {
return exportActivity(queryParams);
})
.then(response => {
this.download(response.msg);
})
.catch(function() {});
}
}
};

View File

@ -61,7 +61,16 @@
<el-table v-loading="loading" :data="themeList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" />
<el-table-column label="编号" align="center" prop="id" />
<el-table-column label="主题名称" align="center" prop="name" />
<el-table-column label="主题名称" align="center" prop="name" >
<template slot-scope="scope">
<router-link
:to="'/benyi_course/theme/activity/' + scope.row.id"
class="link-dayflow"
>
<span>{{ scope.row.name }}</span>
</router-link>
</template>
</el-table-column>
<el-table-column label="适用班级" align="center" prop="classid" :formatter="bjtypeFormat" />
<el-table-column label="序号" align="center" prop="sort" />
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">

View File

@ -2,6 +2,7 @@ package com.ruoyi.project.benyi.controller;
import java.util.List;
import com.ruoyi.project.system.service.ISysDictDataService;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
@ -32,6 +33,8 @@ import com.ruoyi.framework.web.page.TableDataInfo;
public class ByThemeActivityController extends BaseController {
@Autowired
private IByThemeActivityService byThemeActivityService;
@Autowired
private ISysDictDataService dictDataService;
/**
* 查询主题整合活动列表
@ -62,7 +65,21 @@ public class ByThemeActivityController extends BaseController {
@PreAuthorize("@ss.hasPermi('benyi:theme:query')")
@GetMapping(value = "/{id}")
public AjaxResult getInfo(@PathVariable("id") Long id) {
return AjaxResult.success(byThemeActivityService.selectByThemeActivityById(id));
AjaxResult ajax = AjaxResult.success();
ByThemeActivity byThemeActivity=byThemeActivityService.selectByThemeActivityById(id);
String dictType = "sys_theme_type";
ajax.put("types", dictDataService.selectDictDataByType(dictType));
String strType = byThemeActivity.getType();
ajax.put("typeIds", strType.split(";"));
String dictField = "sys_theme_field";
ajax.put("fields", dictDataService.selectDictDataByType(dictField));
String strField = byThemeActivity.getField();
ajax.put("fieldIds", strField.split(";"));
ajax.put(AjaxResult.DATA_TAG, byThemeActivity);
return ajax;
}
/**