update 增加视频管理

dev_xd
haha 2024-09-01 20:35:00 +08:00
parent b1e743282f
commit 10063c973d
5 changed files with 62 additions and 42 deletions

View File

@ -22,6 +22,16 @@ public class BusTrainingVideo extends BaseEntity
@Excel(name = "部门主键") @Excel(name = "部门主键")
private Long deptId; private Long deptId;
public String getDeptName() {
return deptName;
}
public void setDeptName(String deptName) {
this.deptName = deptName;
}
private String deptName;
/** 项目主键 */ /** 项目主键 */
@Excel(name = "项目主键") @Excel(name = "项目主键")
private Long projectId; private Long projectId;

View File

@ -7,6 +7,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<resultMap type="BusTrainingVideo" id="BusTrainingVideoResult"> <resultMap type="BusTrainingVideo" id="BusTrainingVideoResult">
<result property="id" column="id" /> <result property="id" column="id" />
<result property="deptId" column="dept_id" /> <result property="deptId" column="dept_id" />
<result property="deptName" column="dept_name"/>
<result property="projectId" column="project_id" /> <result property="projectId" column="project_id" />
<result property="trainTitle" column="train_title" /> <result property="trainTitle" column="train_title" />
<result property="trainType" column="train_type" /> <result property="trainType" column="train_type" />
@ -27,7 +28,9 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap> </resultMap>
<sql id="selectBusTrainingVideoVo"> <sql id="selectBusTrainingVideoVo">
select id, dept_id, project_id, train_title, train_type, train_level, craft_type, craft_post, train_file_type,ord, train_file_path, train_file_image, train_file_times, is_del, create_by, create_time, update_by, update_time, remark from bus_training_video select bus_training_video.*,sys_dept.dept_name
from bus_training_video
left join sys_dept on bus_training_video.dept_id=sys_dept.dept_id
</sql> </sql>
<select id="selectBusTrainingVideoList" parameterType="BusTrainingVideo" resultMap="BusTrainingVideoResult"> <select id="selectBusTrainingVideoList" parameterType="BusTrainingVideo" resultMap="BusTrainingVideoResult">

View File

@ -9,6 +9,7 @@ const useUserStore = defineStore(
token: getToken(), token: getToken(),
name: '', name: '',
avatar: '', avatar: '',
compInfo:{},
roles: [], roles: [],
permissions: [] permissions: []
}), }),
@ -44,6 +45,7 @@ const useUserStore = defineStore(
this.roles = ['ROLE_DEFAULT'] this.roles = ['ROLE_DEFAULT']
} }
this.name = user.userName this.name = user.userName
this.compInfo=user.comp;
this.avatar = avatar; this.avatar = avatar;
resolve(res) resolve(res)
}).catch(error => { }).catch(error => {

View File

@ -2,7 +2,7 @@
<div class="app-container bus-training-video-index"> <div class="app-container bus-training-video-index">
<el-row :gutter="20"> <el-row :gutter="20">
<!--部门数据--> <!--部门数据-->
<el-col :span="6" :xs="24"> <el-col :span="6" :xs="24" v-if="1==2">
<div class="head-container"> <div class="head-container">
<el-input v-model="deptName" placeholder="请输入部门名称" clearable prefix-icon="Search" <el-input v-model="deptName" placeholder="请输入部门名称" clearable prefix-icon="Search"
style="margin-bottom: 20px" /> style="margin-bottom: 20px" />
@ -13,7 +13,7 @@
:default-expanded-keys="defaultEK" @node-click="handleNodeClick" /> :default-expanded-keys="defaultEK" @node-click="handleNodeClick" />
</div> </div>
</el-col> </el-col>
<el-col :span="18" :xs="24"> <el-col :span="24" :xs="24">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="文件名称" prop="trainTitle"> <el-form-item label="文件名称" prop="trainTitle">
<el-input v-model="queryParams.trainTitle" placeholder="请输入培训名称" clearable @keyup.enter="handleQuery" /> <el-input v-model="queryParams.trainTitle" placeholder="请输入培训名称" clearable @keyup.enter="handleQuery" />
@ -23,12 +23,12 @@
<el-option v-for="dict in edu_train_level" :key="dict.value" :label="dict.label" :value="dict.value" /> <el-option v-for="dict in edu_train_level" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="工种" prop="craftType" className="fitem-craft-type el-form-item el-form-item--default asterisk-left"> <el-form-item label="工种" v-if="queryParams.trainLevel==4" prop="craftType" className="fitem-craft-type el-form-item el-form-item--default asterisk-left">
<el-select v-model="queryParams.craftType" placeholder="请选择工种类型" clearable> <el-select v-model="queryParams.craftType" placeholder="请选择工种类型" clearable @change="getQueryCraftPost">
<el-option v-for="dict in pro_craft_type" :key="dict.value" :label="dict.label" :value="dict.value" /> <el-option v-for="dict in pro_craft_type" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select> </el-select>
<el-select style="margin-left:10px;" v-model="queryParams.craftPost" placeholder="请选择工种岗位" clearable> <el-select style="margin-left:10px;" v-model="queryParams.craftPost" placeholder="请选择工种岗位" clearable>
<el-option v-for="dict in pro_craft_post" :key="dict.value" :label="dict.label" :value="dict.value" /> <el-option v-for="dict in data.queryCraftPostList" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item> <el-form-item>
@ -58,15 +58,14 @@
--> -->
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row> </el-row>
<el-table v-loading="loading" :data="busTrainingVideoList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="busTrainingVideoList" @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="deptName" />
<el-table-column label="部门主键" align="center" prop="deptId" />
<el-table-column label="项目主键" align="center" prop="projectId" /> <el-table-column label="归属模块" align="center" prop="trainType">
<el-table-column label="培训名称" align="center" prop="trainTitle" />
<el-table-column label="培训类型" align="center" prop="trainType">
<template #default="scope"> <template #default="scope">
<dict-tag :options="edu_train_type" :value="scope.row.trainType" /> <dict-tag :options="video_module" :value="scope.row.trainType" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="培训级别" align="center" prop="trainLevel"> <el-table-column label="培训级别" align="center" prop="trainLevel">
@ -74,29 +73,20 @@
<dict-tag :options="edu_train_level" :value="scope.row.trainLevel" /> <dict-tag :options="edu_train_level" :value="scope.row.trainLevel" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="工种类型" align="center" prop="craftType"> <el-table-column label="工种" align="center" width="300">
<template #default="scope"> <template #default="scope">
<dict-tag :options="pro_craft_type" :value="scope.row.craftType" /> <dict-tag :options="pro_craft_type" :value="scope.row.craftType" />
</template>
</el-table-column>
<el-table-column label="工种岗位" align="center" prop="craftPost">
<template #default="scope">
<dict-tag :options="pro_craft_post" :value="scope.row.craftPost" /> <dict-tag :options="pro_craft_post" :value="scope.row.craftPost" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="培训文件类型" align="center" prop="trainFileType" />
<el-table-column label="培训文件地址" align="center" prop="trainFilePath" />
<el-table-column label="培训文件主图" align="center" prop="trainFileImage" width="100"> <el-table-column label="培训文件主图" align="center" prop="trainFileImage" width="100">
<template #default="scope"> <template #default="scope">
<image-preview :src="scope.row.trainFileImage" :width="50" :height="50" /> <image-preview :src="scope.row.trainFileImage" :width="50" :height="50" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="培训文件时长" align="center" prop="trainFileTimes" /> <el-table-column label="培训文件时长" align="center" prop="trainFileTimes">
<el-table-column label="删除标识" align="center" prop="isDel"> <template #default="scope">{{ scope.row.trainFileTimes }}</template>
<template #default="scope"> </el-table-column>
<dict-tag :options="sys_is_del" :value="scope.row.isDel" />
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope"> <template #default="scope">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
@ -114,17 +104,10 @@
<!-- 添加或修改培训视频对话框 --> <!-- 添加或修改培训视频对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body :close-on-click-modal="false" :close-on-press-escape="false" custom-class="bus-training-video-dlg"> <el-dialog :title="title" v-model="open" width="500px" append-to-body :close-on-click-modal="false" :close-on-press-escape="false" class="bus-training-video-dlg">
<el-form ref="busTrainingVideoRef" :model="form" :rules="rules" label-width="80px"> <el-form ref="busTrainingVideoRef" :model="form" :rules="rules" label-width="80px">
<el-form-item label="归属公司" prop="deptId"> <el-form-item label="归属公司" prop="deptId">
<el-tree-select <el-input v-model="form.compName" disabled/>
v-model="form.deptId"
:data="deptOptions"
:props="{ label: 'label', children: 'children' }"
value-key="id"
placeholder="选择公司"
check-strictly
/>
</el-form-item> </el-form-item>
<el-form-item label="归属模块" prop="trainType"> <el-form-item label="归属模块" prop="trainType">
<el-select v-model="form.trainType" placeholder="请选择培训类型"> <el-select v-model="form.trainType" placeholder="请选择培训类型">
@ -141,10 +124,10 @@
:value="dict.value"></el-option> :value="dict.value"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-row> <el-row v-if="form.trainLevel==4">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="归属工种" prop="craftType"> <el-form-item label="归属工种" prop="craftType">
<el-select v-model="form.craftType" placeholder="请选择工种类型"> <el-select v-model="form.craftType" placeholder="请选择工种类型" @change="getCraftPost">
<el-option v-for="dict in pro_craft_type" :key="dict.value" :label="dict.label" <el-option v-for="dict in pro_craft_type" :key="dict.value" :label="dict.label"
:value="dict.value"></el-option> :value="dict.value"></el-option>
</el-select> </el-select>
@ -154,7 +137,7 @@
<el-col :span="12" class="no-form-label" style="padding-left:10px;"> <el-col :span="12" class="no-form-label" style="padding-left:10px;">
<el-form-item label="no" prop="craftPost"> <el-form-item label="no" prop="craftPost">
<el-select v-model="form.craftPost" placeholder="请选择工种岗位"> <el-select v-model="form.craftPost" placeholder="请选择工种岗位">
<el-option v-for="dict in pro_craft_post" :key="dict.value" :label="dict.label" <el-option v-for="dict in data.craftPostList" :key="dict.value" :label="dict.label"
:value="dict.value"></el-option> :value="dict.value"></el-option>
</el-select> </el-select>
</el-form-item> </el-form-item>
@ -191,6 +174,7 @@
<script setup name="BusTrainingVideo"> <script setup name="BusTrainingVideo">
import { listBusTrainingVideo, getBusTrainingVideo, delBusTrainingVideo, addBusTrainingVideo, updateBusTrainingVideo } from "@/api/manage/busTrainingVideo"; import { listBusTrainingVideo, getBusTrainingVideo, delBusTrainingVideo, addBusTrainingVideo, updateBusTrainingVideo } from "@/api/manage/busTrainingVideo";
import { deptTreeSelect } from "@/api/system/user"; import { deptTreeSelect } from "@/api/system/user";
import useUserStore from '@/store/modules/user'
const { proxy } = getCurrentInstance(); const { proxy } = getCurrentInstance();
const { edu_train_level, edu_train_type, pro_craft_type, sys_is_del, pro_craft_post,video_module } = proxy.useDict('edu_train_level', 'edu_train_type', 'pro_craft_type', 'sys_is_del', 'pro_craft_post','video_module'); const { edu_train_level, edu_train_type, pro_craft_type, sys_is_del, pro_craft_post,video_module } = proxy.useDict('edu_train_level', 'edu_train_type', 'pro_craft_type', 'sys_is_del', 'pro_craft_post','video_module');
@ -231,11 +215,14 @@ const data = reactive({
craftPost:[{ required: true, message: "工种岗位不能为空", trigger: "blur" }], craftPost:[{ required: true, message: "工种岗位不能为空", trigger: "blur" }],
ord:[{ required: true, message: "显示排序不能为空", trigger: "blur" }], ord:[{ required: true, message: "显示排序不能为空", trigger: "blur" }],
trainFileTimes:[{ required: true, message: "视频时长不能为空", trigger: "blur" }], trainFileTimes:[{ required: true, message: "视频时长不能为空", trigger: "blur" }],
trainFilePath:[{ required: true, message: "视频不能为空", trigger: "blur" }], //trainFilePath:[{ required: true, message: "", trigger: "blur" }],
} },
craftPostList:[],
queryCraftPostList:[]
}); });
const { queryParams, form, rules } = toRefs(data); const { queryParams, form, rules } = toRefs(data);
const userStore = useUserStore()
/** 查询培训视频列表 */ /** 查询培训视频列表 */
function getList() { function getList() {
@ -257,7 +244,7 @@ function cancel() {
function reset() { function reset() {
form.value = { form.value = {
id: null, id: null,
deptId: null, deptId: userStore.compInfo.deptId||'',
projectId: null, projectId: null,
trainTitle: null, trainTitle: null,
trainType: null, trainType: null,
@ -268,12 +255,31 @@ function reset() {
trainFilePath: null, trainFilePath: null,
trainFileImage: null, trainFileImage: null,
trainFileTimes: null, trainFileTimes: null,
compName:userStore.compInfo.deptName||'',
ord:1, ord:1,
remark: null remark: null
}; };
proxy.resetForm("busTrainingVideoRef"); proxy.resetForm("busTrainingVideoRef");
data.craftPostList=[]
} }
function getQueryCraftPost(){
let datas=pro_craft_post._object.pro_craft_post;
if(queryParams.value.craftType){
data.queryCraftPostList= datas.filter(d=>d.elTagClass==queryParams.value.craftType);
}else{
data.queryCraftPostList= [];
}
}
function getCraftPost(){
let datas=pro_craft_post._object.pro_craft_post;
if(form.value.craftType){
data.craftPostList= datas.filter(d=>d.elTagClass==form.value.craftType);
}else{
data.craftPostList= [];
}
}
/** 搜索按钮操作 */ /** 搜索按钮操作 */
function handleQuery() { function handleQuery() {
queryParams.value.pageNum = 1; queryParams.value.pageNum = 1;

View File

@ -520,7 +520,6 @@ const getCompId=()=>{
let ndData=selTreeDept.value.getCurrentNode(); let ndData=selTreeDept.value.getCurrentNode();
let node=selTreeDept.value.getNode(ndData.id); let node=selTreeDept.value.getNode(ndData.id);
let compId=getCompId(node); let compId=getCompId(node);
debugger
return compId; return compId;
} }