diff --git a/ruoyi-ui/src/router/index.js b/ruoyi-ui/src/router/index.js index 24e46140b..8f67dd7c1 100644 --- a/ruoyi-ui/src/router/index.js +++ b/ruoyi-ui/src/router/index.js @@ -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, diff --git a/ruoyi-ui/src/views/benyi/theme/activity.vue b/ruoyi-ui/src/views/benyi/theme/activity.vue index eb52d007c..40f77218f 100644 --- a/ruoyi-ui/src/views/benyi/theme/activity.vue +++ b/ruoyi-ui/src/views/benyi/theme/activity.vue @@ -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() {}); } } }; diff --git a/ruoyi-ui/src/views/benyi/theme/index.vue b/ruoyi-ui/src/views/benyi/theme/index.vue index 029e451bb..d6c975efc 100644 --- a/ruoyi-ui/src/views/benyi/theme/index.vue +++ b/ruoyi-ui/src/views/benyi/theme/index.vue @@ -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"> diff --git a/ruoyi/src/main/java/com/ruoyi/project/benyi/controller/ByThemeActivityController.java b/ruoyi/src/main/java/com/ruoyi/project/benyi/controller/ByThemeActivityController.java index 292b4a879..2b6c78c76 100644 --- a/ruoyi/src/main/java/com/ruoyi/project/benyi/controller/ByThemeActivityController.java +++ b/ruoyi/src/main/java/com/ruoyi/project/benyi/controller/ByThemeActivityController.java @@ -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; } /**