Parcourir la source

教育培训任务 页面代码提交

jingyuanchao il y a 2 ans
Parent
commit
2299b9138c

+ 44 - 0
src/api/core/edu/eduTask.js

@@ -0,0 +1,44 @@
+import request from '@/utils/request'
+
+// 查询列表教育任务
+export function listEduTask(query) {
+  return request({
+    url: '/core/eduTask/list',
+    method: 'get',
+    params: query
+  })
+}
+
+// 查询详细教育任务
+export function getEduTask(id) {
+  return request({
+    url: '/core/eduTask/' + id,
+    method: 'get'
+  })
+}
+
+// 新增教育任务
+export function addEduTask(data) {
+  return request({
+    url: '/core/eduTask',
+    method: 'post',
+    data: data
+  })
+}
+
+// 修改教育任务
+export function updateEduTask(data) {
+  return request({
+    url: '/core/eduTask',
+    method: 'put',
+    data: data
+  })
+}
+
+// 删除教育任务
+export function delEduTask(id) {
+  return request({
+    url: '/core/eduTask/' + id,
+    method: 'delete'
+  })
+}

+ 0 - 0
src/api/core/knowledge.js → src/api/core/edu/knowledge.js


+ 0 - 0
src/api/core/materials.js → src/api/core/edu/materials.js


+ 0 - 0
src/api/core/plan.js → src/api/core/edu/plan.js


+ 27 - 4
src/views/core/plan/index.vue → src/views/core/edu/plan/index.vue

@@ -41,7 +41,8 @@
         </el-form-item>
         <el-form-item label="培训角色" prop="planRoleId">
           <el-select v-model="form.planRoleId" placeholder="请选择" clearable>
-            <el-option v-for="item in planRoleList" :key="item.roleId" :label="item.roleName" :value="item.roleId"></el-option>
+            <el-option v-for="item in planRoleList" :key="item.roleId" :label="item.roleName"
+                       :value="item.roleId"></el-option>
           </el-select>
         </el-form-item>
         <el-form-item label="计划名称" prop="planName">
@@ -125,6 +126,19 @@
             <dict-tag :options="dict.type.plan_cycle" :value="scope.row.planCycle"/>
           </template>
         </el-table-column>
+        <el-table-column prop="planRoleNameList" label="培训角色">
+          <template slot-scope="scope">
+            <template v-if="scope.row.planRoleNameList">
+              <el-tag size="mini" type="success" v-for="(item, index) in (scope.row.planRoleNameList || '').split(',')"
+                      :key="index">
+                {{ item }}
+              </el-tag>
+            </template>
+            <template v-else>
+              <el-tag size="mini">{{ scope.row.checkOrgTypeText }}</el-tag>
+            </template>
+          </template>
+        </el-table-column>
         <el-table-column label="培训次数" align="center" prop="execTimes"/>
         <el-table-column label="备注" align="center" prop="remark"/>
         <el-table-column label="修改人" align="center" prop="updateBy"/>
@@ -136,7 +150,7 @@
         <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
           <template slot-scope="scope">
             <el-button
-              v-if="checkCanEdit(scope.row)"
+              v-if="checkCanPublish(scope.row)"
               size="mini"
               type="text"
               icon="el-icon-edit"
@@ -277,9 +291,11 @@
           </el-col>
         </el-row>
         <el-row>
+          <el-col :span="12">
           <el-form-item label="备注" prop="remark">
             <el-input v-model="form.remark" placeholder="请输入备注"/>
           </el-form-item>
+          </el-col>
         </el-row>
         <el-col :span="14">
           <el-form-item label="上传文件" prop="fileList">
@@ -297,8 +313,8 @@
 </template>
 
 <script>
-import {listPlan, getPlan, delPlan, addPlan, updatePlan, listPlanRole, roleList, publishPlan} from "@/api/core/plan";
-import OrgTree from "@/components/orgTree/index.vue";
+import {listPlan, getPlan, delPlan, addPlan, updatePlan, listPlanRole, roleList, publishPlan} from "@/api/core/edu/plan";
+import OrgTree from "@/components/orgTree";
 import {deptTreeSelect} from "@/api/system/public";
 import {formatTime} from "@/utils/ruoyi";
 
@@ -399,6 +415,13 @@ export default {
       }
       return time.getTime() < new Date(startDate).getTime()
     },
+    //已完成下发的计划不显示下发按钮
+    checkCanPublish(row) {
+      if (row.issue === 0 && row.standard === 1) {
+        return true
+      }
+      return false;
+    },
     //所属机构为当前用户登录机构时才显示 “编辑、删除”按钮
     checkCanEdit(row) {
       return row.belongOrgId === this.$store.getters.orgId

+ 510 - 0
src/views/core/edu/task/index.vue

@@ -0,0 +1,510 @@
+<template>
+  <div class="app-container">
+    <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" v-show="showSearch" label-width="68px">
+      <el-form-item label="教育培训计划Id" prop="planId">
+        <el-input
+          v-model="queryParams.planId"
+          placeholder="请输入教育培训计划Id"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="培训岗位" prop="roleId">
+        <el-input
+          v-model="queryParams.roleId"
+          placeholder="请输入培训岗位"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="开始日期" prop="startDate">
+        <el-date-picker clearable
+          v-model="queryParams.startDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="请选择开始日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="截止日期" prop="endDate">
+        <el-date-picker clearable
+          v-model="queryParams.endDate"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="请选择截止日期">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="实到人数" prop="actualCount">
+        <el-input
+          v-model="queryParams.actualCount"
+          placeholder="请输入实到人数"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="培训岗位名称" prop="roleName">
+        <el-input
+          v-model="queryParams.roleName"
+          placeholder="请输入培训岗位名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="时间" prop="dateTime">
+        <el-date-picker clearable
+          v-model="queryParams.dateTime"
+          type="date"
+          value-format="yyyy-MM-dd"
+          placeholder="请选择时间">
+        </el-date-picker>
+      </el-form-item>
+      <el-form-item label="应到人数" prop="dueCount">
+        <el-input
+          v-model="queryParams.dueCount"
+          placeholder="请输入应到人数"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="主持人" prop="hostId">
+        <el-input
+          v-model="queryParams.hostId"
+          placeholder="请输入主持人"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="机构" prop="orgId">
+        <el-input
+          v-model="queryParams.orgId"
+          placeholder="请输入机构"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="记录人" prop="recorderId">
+        <el-input
+          v-model="queryParams.recorderId"
+          placeholder="请输入记录人"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="机构名称" prop="orgName">
+        <el-input
+          v-model="queryParams.orgName"
+          placeholder="请输入机构名称"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="机构" prop="orgPath">
+        <el-input
+          v-model="queryParams.orgPath"
+          placeholder="请输入机构"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item label="pdf下载地址" prop="pdfUrl">
+        <el-input
+          v-model="queryParams.pdfUrl"
+          placeholder="请输入pdf下载地址"
+          clearable
+          @keyup.enter.native="handleQuery"
+        />
+      </el-form-item>
+      <el-form-item>
+        <el-button type="primary" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
+        <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
+      </el-form-item>
+    </el-form>
+
+    <el-row :gutter="10" class="mb8">
+      <el-col :span="1.5">
+        <el-button
+          type="primary"
+          plain
+          icon="el-icon-plus"
+          size="mini"
+          @click="handleAdd"
+          v-hasPermi="['system:eduTask:add']"
+        >新增</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="success"
+          plain
+          icon="el-icon-edit"
+          size="mini"
+          :disabled="single"
+          @click="handleUpdate"
+          v-hasPermi="['system:eduTask:edit']"
+        >修改</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="danger"
+          plain
+          icon="el-icon-delete"
+          size="mini"
+          :disabled="multiple"
+          @click="handleDelete"
+          v-hasPermi="['system:eduTask:remove']"
+        >删除</el-button>
+      </el-col>
+      <el-col :span="1.5">
+        <el-button
+          type="warning"
+          plain
+          icon="el-icon-download"
+          size="mini"
+          @click="handleExport"
+          v-hasPermi="['system:eduTask:export']"
+        >导出</el-button>
+      </el-col>
+      <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
+    </el-row>
+
+    <el-table v-loading="loading" :data="eduTaskList" @selection-change="handleSelectionChange">
+      <el-table-column type="selection" width="55" align="center" />
+      <el-table-column label="id" align="center" prop="id" />
+      <el-table-column label="教育培训计划Id" align="center" prop="planId" />
+      <el-table-column label="培训岗位" align="center" prop="roleId" />
+      <el-table-column label="开始日期" align="center" prop="startDate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.startDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="截止日期" align="center" prop="endDate" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.endDate, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="实到人数" align="center" prop="actualCount" />
+      <el-table-column label="内容" align="center" prop="content" />
+      <el-table-column label="培训岗位名称" align="center" prop="roleName" />
+      <el-table-column label="岗位id集合" align="center" prop="roleIds" />
+      <el-table-column label="岗位名集合" align="center" prop="roleNames" />
+      <el-table-column label="学习主题" align="center" prop="title" />
+      <el-table-column label="总结" align="center" prop="note" />
+      <el-table-column label="时间" align="center" prop="dateTime" width="180">
+        <template slot-scope="scope">
+          <span>{{ parseTime(scope.row.dateTime, '{y}-{m}-{d}') }}</span>
+        </template>
+      </el-table-column>
+      <el-table-column label="应到人数" align="center" prop="dueCount" />
+      <el-table-column label="主持人" align="center" prop="hostId" />
+      <el-table-column label="附件" align="center" prop="fileList" />
+      <el-table-column label="图片" align="center" prop="imageList" width="100">
+        <template slot-scope="scope">
+          <image-preview :src="scope.row.imageList" :width="50" :height="50"/>
+        </template>
+      </el-table-column>
+      <el-table-column label="机构" align="center" prop="orgId" />
+      <el-table-column label="记录人" align="center" prop="recorderId" />
+      <el-table-column label="类型" align="center" prop="type" />
+      <el-table-column label="机构名称" align="center" prop="orgName" />
+      <el-table-column label="机构" align="center" prop="orgPath" />
+      <el-table-column label="pdf下载地址" align="center" prop="pdfUrl" />
+      <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
+        <template slot-scope="scope">
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-edit"
+            @click="handleUpdate(scope.row)"
+            v-hasPermi="['system:eduTask:edit']"
+          >修改</el-button>
+          <el-button
+            size="mini"
+            type="text"
+            icon="el-icon-delete"
+            @click="handleDelete(scope.row)"
+            v-hasPermi="['system:eduTask:remove']"
+          >删除</el-button>
+        </template>
+      </el-table-column>
+    </el-table>
+
+    <pagination
+      v-show="total>0"
+      :total="total"
+      :page.sync="queryParams.pageNum"
+      :limit.sync="queryParams.pageSize"
+      @pagination="getList"
+    />
+
+    <!-- 添加或修改教育任务对话框 -->
+    <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
+      <el-form ref="form" :model="form" :rules="rules" label-width="80px">
+        <el-form-item label="教育培训计划Id" prop="planId">
+          <el-input v-model="form.planId" placeholder="请输入教育培训计划Id" />
+        </el-form-item>
+        <el-form-item label="培训岗位" prop="roleId">
+          <el-input v-model="form.roleId" placeholder="请输入培训岗位" />
+        </el-form-item>
+        <el-form-item label="开始日期" prop="startDate">
+          <el-date-picker clearable
+            v-model="form.startDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择开始日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="截止日期" prop="endDate">
+          <el-date-picker clearable
+            v-model="form.endDate"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择截止日期">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="实到人数" prop="actualCount">
+          <el-input v-model="form.actualCount" placeholder="请输入实到人数" />
+        </el-form-item>
+        <el-form-item label="内容">
+          <editor v-model="form.content" :min-height="192"/>
+        </el-form-item>
+        <el-form-item label="培训岗位名称" prop="roleName">
+          <el-input v-model="form.roleName" placeholder="请输入培训岗位名称" />
+        </el-form-item>
+        <el-form-item label="岗位id集合" prop="roleIds">
+          <el-input v-model="form.roleIds" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="岗位名集合" prop="roleNames">
+          <el-input v-model="form.roleNames" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="学习主题" prop="title">
+          <el-input v-model="form.title" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="总结" prop="note">
+          <el-input v-model="form.note" type="textarea" placeholder="请输入内容" />
+        </el-form-item>
+        <el-form-item label="时间" prop="dateTime">
+          <el-date-picker clearable
+            v-model="form.dateTime"
+            type="date"
+            value-format="yyyy-MM-dd"
+            placeholder="请选择时间">
+          </el-date-picker>
+        </el-form-item>
+        <el-form-item label="应到人数" prop="dueCount">
+          <el-input v-model="form.dueCount" placeholder="请输入应到人数" />
+        </el-form-item>
+        <el-form-item label="主持人" prop="hostId">
+          <el-input v-model="form.hostId" placeholder="请输入主持人" />
+        </el-form-item>
+        <el-form-item label="附件" prop="fileList">
+          <file-upload v-model="form.fileList"/>
+        </el-form-item>
+        <el-form-item label="图片" prop="imageList">
+          <image-upload v-model="form.imageList"/>
+        </el-form-item>
+        <el-form-item label="机构" prop="orgId">
+          <el-input v-model="form.orgId" placeholder="请输入机构" />
+        </el-form-item>
+        <el-form-item label="记录人" prop="recorderId">
+          <el-input v-model="form.recorderId" placeholder="请输入记录人" />
+        </el-form-item>
+        <el-form-item label="机构名称" prop="orgName">
+          <el-input v-model="form.orgName" placeholder="请输入机构名称" />
+        </el-form-item>
+        <el-form-item label="机构" prop="orgPath">
+          <el-input v-model="form.orgPath" placeholder="请输入机构" />
+        </el-form-item>
+        <el-form-item label="pdf下载地址" prop="pdfUrl">
+          <el-input v-model="form.pdfUrl" placeholder="请输入pdf下载地址" />
+        </el-form-item>
+      </el-form>
+      <div slot="footer" class="dialog-footer">
+        <el-button type="primary" @click="submitForm">确 定</el-button>
+        <el-button @click="cancel">取 消</el-button>
+      </div>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import { listEduTask, getEduTask, delEduTask, addEduTask, updateEduTask } from "@/api/core/edu/eduTask";
+
+export default {
+  name: "EduTask",
+  data() {
+    return {
+      // 遮罩层
+      loading: true,
+      // 选中数组
+      ids: [],
+      // 非单个禁用
+      single: true,
+      // 非多个禁用
+      multiple: true,
+      // 显示搜索条件
+      showSearch: true,
+      // 总条数
+      total: 0,
+      // 教育任务表格数据
+      eduTaskList: [],
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      // 查询参数
+      queryParams: {
+        pageNum: 1,
+        pageSize: 10,
+        planId: null,
+        roleId: null,
+        startDate: null,
+        endDate: null,
+        actualCount: null,
+        content: null,
+        roleName: null,
+        roleIds: null,
+        roleNames: null,
+        title: null,
+        note: null,
+        dateTime: null,
+        dueCount: null,
+        hostId: null,
+        fileList: null,
+        imageList: null,
+        orgId: null,
+        recorderId: null,
+        type: null,
+        orgName: null,
+        orgPath: null,
+        pdfUrl: null,
+      },
+      // 表单参数
+      form: {},
+      // 表单校验
+      rules: {
+        orgId: [
+          { required: true, message: "机构不能为空", trigger: "blur" }
+        ],
+      }
+    };
+  },
+  created() {
+    this.getList();
+  },
+  methods: {
+    /** 查询教育任务列表 */
+    getList() {
+      this.loading = true;
+      listEduTask(this.queryParams).then(response => {
+        this.eduTaskList = response.rows;
+        this.total = response.total;
+        this.loading = false;
+      });
+    },
+    // 取消按钮
+    cancel() {
+      this.open = false;
+      this.reset();
+    },
+    // 表单重置
+    reset() {
+      this.form = {
+        id: null,
+        planId: null,
+        roleId: null,
+        startDate: null,
+        endDate: null,
+        actualCount: null,
+        content: null,
+        roleName: null,
+        roleIds: null,
+        roleNames: null,
+        title: null,
+        note: null,
+        dateTime: null,
+        dueCount: null,
+        hostId: null,
+        fileList: null,
+        imageList: null,
+        orgId: null,
+        recorderId: null,
+        type: null,
+        orgName: null,
+        orgPath: null,
+        pdfUrl: null,
+        createBy: null,
+        createTime: null,
+        updateBy: null,
+        updateTime: null
+      };
+      this.resetForm("form");
+    },
+    /** 搜索按钮操作 */
+    handleQuery() {
+      this.queryParams.pageNum = 1;
+      this.getList();
+    },
+    /** 重置按钮操作 */
+    resetQuery() {
+      this.resetForm("queryForm");
+      this.handleQuery();
+    },
+    // 多选框选中数据
+    handleSelectionChange(selection) {
+      this.ids = selection.map(item => item.id)
+      this.single = selection.length!==1
+      this.multiple = !selection.length
+    },
+    /** 新增按钮操作 */
+    handleAdd() {
+      this.reset();
+      this.open = true;
+      this.title = "添加教育任务";
+    },
+    /** 修改按钮操作 */
+    handleUpdate(row) {
+      this.reset();
+      const id = row.id || this.ids
+      getEduTask(id).then(response => {
+        this.form = response.data;
+        this.open = true;
+        this.title = "修改教育任务";
+      });
+    },
+    /** 提交按钮 */
+    submitForm() {
+      this.$refs["form"].validate(valid => {
+        if (valid) {
+          if (this.form.id != null) {
+            updateEduTask(this.form).then(response => {
+              this.$modal.msgSuccess("修改成功");
+              this.open = false;
+              this.getList();
+            });
+          } else {
+            addEduTask(this.form).then(response => {
+              this.$modal.msgSuccess("新增成功");
+              this.open = false;
+              this.getList();
+            });
+          }
+        }
+      });
+    },
+    /** 删除按钮操作 */
+    handleDelete(row) {
+      const ids = row.id || this.ids;
+      this.$modal.confirm('是否确认删除教育任务编号为"' + ids + '"的数据项?').then(function() {
+        return delEduTask(ids);
+      }).then(() => {
+        this.getList();
+        this.$modal.msgSuccess("删除成功");
+      }).catch(() => {});
+    },
+    /** 导出按钮操作 */
+    handleExport() {
+      this.download('system/eduTask/export', {
+        ...this.queryParams
+      }, `eduTask_${new Date().getTime()}.xlsx`)
+    }
+  }
+};
+</script>

+ 1 - 1
src/views/core/knowledge/index.vue

@@ -108,7 +108,7 @@
 </template>
 
 <script>
-import { listKnowledge, getKnowledge, delKnowledge, addKnowledge, updateKnowledge } from "@/api/core/knowledge";
+import { listKnowledge, getKnowledge, delKnowledge, addKnowledge, updateKnowledge } from "@/api/core/edu/knowledge";
 
 export default {
   name: "Knowledge",

+ 2 - 2
src/views/core/materials/index.vue

@@ -196,10 +196,10 @@ import {
   addMaterials,
   updateMaterials,
   editOpen
-} from "@/api/core/materials";
+} from "@/api/core/edu/materials";
 import {deptTreeSelect} from "@/api/system/public";
 import "@riophae/vue-treeselect/dist/vue-treeselect.css";
-import {queryKnowledgeList} from "@/api/core/knowledge";
+import {queryKnowledgeList} from "@/api/core/edu/knowledge";
 import OrgTree from "@/components/orgTree/index.vue";
 import kOrgTree from "@/components/k-orgTree/index.vue";
 

+ 1 - 1
src/views/core/task/index.vue

@@ -143,7 +143,7 @@
 <script>
 import { listTask, getTask, delTask, addTask, updateTask,roleList } from "@/api/core/task";
 import OrgTree from "@/components/orgTree";
-import {listPlanRole} from "@/api/core/plan";
+import {listPlanRole} from "@/api/core/edu/plan";
 export default {
   components: {OrgTree},
   name: "Task",